feat: ✨ add husky, lint-staged, commitlint

by Sivritkin Dmitriy

1@@ -0,0 +1,2 @@
2+#!/bin/sh
3+cd "$(dirname "$0")/.." && npx --no -- commitlint --edit $1@@ -0,0 +1,5 @@
4+#!/usr/bin/env sh
5+. "$(dirname -- "$0")/_/husky.sh"
6+
7+npx lint-staged
8+yarn typecheck@@ -0,0 +1,4 @@
9+{
10+  "*/**/*.{js,jsx,ts,tsx}": ["prettier --write", "eslint --fix", "eslint"],
11+  "*/**/*.{json,css,md}": ["prettier --write"]
12+}@@ -0,0 +1,7 @@
13+import type { UserConfig } from "@commitlint/types";
14+
15+const Configuration: UserConfig = {
16+  extends: ["@commitlint/config-conventional"],
17+};
18+
19+export default Configuration;@@ -16,7 +16,8 @@
20     "lint:ts:fix": "npx eslint \"**/*.{ts,tsx}\" --fix",
21     "format:check": "prettier --check .",
22     "format:fix": "prettier --write .",
23-    "typecheck": "tsc --noEmit --pretty"
24+    "typecheck": "tsc --noEmit --pretty",
25+    "prepare": "husky"
26   },
27   "dependencies": {
28     "@radix-ui/react-avatar": "^1.0.4",
29@@ -39,12 +40,16 @@
30     "tailwindcss-animate": "^1.0.7"
31   },
32   "devDependencies": {
33+    "@commitlint/cli": "^19.3.0",
34+    "@commitlint/config-conventional": "^19.2.2",
35     "@types/node": "^20",
36     "@types/react": "^18",
37     "@types/react-dom": "^18",
38     "@types/react-syntax-highlighter": "^15.5.13",
39     "eslint": "^8",
40     "eslint-config-next": "14.2.4",
41+    "husky": "^9.0.11",
42+    "lint-staged": "^15.2.7",
43     "postcss": "^8",
44     "prettier": "^3.3.2",
45     "prettier-plugin-tailwindcss": "^0.6.4",@@ -12,6 +12,35 @@ __metadata:
46   languageName: node
47   linkType: hard
48 
49+"@babel/code-frame@npm:^7.0.0":
50+  version: 7.24.7
51+  resolution: "@babel/code-frame@npm:7.24.7"
52+  dependencies:
53+    "@babel/highlight": "npm:^7.24.7"
54+    picocolors: "npm:^1.0.0"
55+  checksum: 10c0/ab0af539473a9f5aeaac7047e377cb4f4edd255a81d84a76058595f8540784cc3fbe8acf73f1e073981104562490aabfb23008cd66dc677a456a4ed5390fdde6
56+  languageName: node
57+  linkType: hard
58+
59+"@babel/helper-validator-identifier@npm:^7.24.7":
60+  version: 7.24.7
61+  resolution: "@babel/helper-validator-identifier@npm:7.24.7"
62+  checksum: 10c0/87ad608694c9477814093ed5b5c080c2e06d44cb1924ae8320474a74415241223cc2a725eea2640dd783ff1e3390e5f95eede978bc540e870053152e58f1d651
63+  languageName: node
64+  linkType: hard
65+
66+"@babel/highlight@npm:^7.24.7":
67+  version: 7.24.7
68+  resolution: "@babel/highlight@npm:7.24.7"
69+  dependencies:
70+    "@babel/helper-validator-identifier": "npm:^7.24.7"
71+    chalk: "npm:^2.4.2"
72+    js-tokens: "npm:^4.0.0"
73+    picocolors: "npm:^1.0.0"
74+  checksum: 10c0/674334c571d2bb9d1c89bdd87566383f59231e16bcdcf5bb7835babdf03c9ae585ca0887a7b25bdf78f303984af028df52831c7989fecebb5101cc132da9393a
75+  languageName: node
76+  linkType: hard
77+
78 "@babel/runtime@npm:^7.13.10, @babel/runtime@npm:^7.23.2, @babel/runtime@npm:^7.24.1, @babel/runtime@npm:^7.3.1":
79   version: 7.24.7
80   resolution: "@babel/runtime@npm:7.24.7"
81@@ -21,6 +50,198 @@ __metadata:
82   languageName: node
83   linkType: hard
84 
85+"@commitlint/cli@npm:^19.3.0":
86+  version: 19.3.0
87+  resolution: "@commitlint/cli@npm:19.3.0"
88+  dependencies:
89+    "@commitlint/format": "npm:^19.3.0"
90+    "@commitlint/lint": "npm:^19.2.2"
91+    "@commitlint/load": "npm:^19.2.0"
92+    "@commitlint/read": "npm:^19.2.1"
93+    "@commitlint/types": "npm:^19.0.3"
94+    execa: "npm:^8.0.1"
95+    yargs: "npm:^17.0.0"
96+  bin:
97+    commitlint: cli.js
98+  checksum: 10c0/12049b6ccb1fd3939c5713fdc9b2aa9054985f3ced465e9494ce7c23b3c69a9e9ea25c84fffa5ba147b6bb5cd086a29000dfac2218a7592494b007bab592e057
99+  languageName: node
100+  linkType: hard
101+
102+"@commitlint/config-conventional@npm:^19.2.2":
103+  version: 19.2.2
104+  resolution: "@commitlint/config-conventional@npm:19.2.2"
105+  dependencies:
106+    "@commitlint/types": "npm:^19.0.3"
107+    conventional-changelog-conventionalcommits: "npm:^7.0.2"
108+  checksum: 10c0/2f2a07ee318ac42ffda488521bd84f28268a6d2ea10b332abcad6106559d8a64a765cc58ddea106fd67fce376228cb24059000a584f4986e0e8f972cedd85442
109+  languageName: node
110+  linkType: hard
111+
112+"@commitlint/config-validator@npm:^19.0.3":
113+  version: 19.0.3
114+  resolution: "@commitlint/config-validator@npm:19.0.3"
115+  dependencies:
116+    "@commitlint/types": "npm:^19.0.3"
117+    ajv: "npm:^8.11.0"
118+  checksum: 10c0/7a0d55837fb88b1f05892fed67a9582669331a452de96e4caec0c9a397cd6083701265b066e6e32a259b43737187cd31b15ab02b0459c817ea9e7b75602db3c7
119+  languageName: node
120+  linkType: hard
121+
122+"@commitlint/ensure@npm:^19.0.3":
123+  version: 19.0.3
124+  resolution: "@commitlint/ensure@npm:19.0.3"
125+  dependencies:
126+    "@commitlint/types": "npm:^19.0.3"
127+    lodash.camelcase: "npm:^4.3.0"
128+    lodash.kebabcase: "npm:^4.1.1"
129+    lodash.snakecase: "npm:^4.1.1"
130+    lodash.startcase: "npm:^4.4.0"
131+    lodash.upperfirst: "npm:^4.3.1"
132+  checksum: 10c0/66785aeddec70e26766f6bb11b1f78892cabdb97b0b77fb97ca6457578e663188903933d5f64559205dd54754e8c2c4a902e73e1749e34cbe07a4b296e374d72
133+  languageName: node
134+  linkType: hard
135+
136+"@commitlint/execute-rule@npm:^19.0.0":
137+  version: 19.0.0
138+  resolution: "@commitlint/execute-rule@npm:19.0.0"
139+  checksum: 10c0/70d37f25a9af0a6adcd9ae7cadd4a917e8d219d316798469e2957608288d7cab8a3b03f7b132f1229a5ee545bbba139dc801d0006a7df3b756354b3890b9c1bb
140+  languageName: node
141+  linkType: hard
142+
143+"@commitlint/format@npm:^19.3.0":
144+  version: 19.3.0
145+  resolution: "@commitlint/format@npm:19.3.0"
146+  dependencies:
147+    "@commitlint/types": "npm:^19.0.3"
148+    chalk: "npm:^5.3.0"
149+  checksum: 10c0/857a1784481edad9013514cbcc9ec93af33acc8bd491f5d23625c53fb93841566ce110e3004ecaab7f4f89c9331940fe63b83922a4a81f419e67b70e0dc90e41
150+  languageName: node
151+  linkType: hard
152+
153+"@commitlint/is-ignored@npm:^19.2.2":
154+  version: 19.2.2
155+  resolution: "@commitlint/is-ignored@npm:19.2.2"
156+  dependencies:
157+    "@commitlint/types": "npm:^19.0.3"
158+    semver: "npm:^7.6.0"
159+  checksum: 10c0/8e416edbf24ec386f6211d4879c002cf82fdebfd1f69556ae2ad62f6ae9b705aa20ea3108529fd44e7d246526c6133851905ee826a83efc81b2f11443a7d03c3
160+  languageName: node
161+  linkType: hard
162+
163+"@commitlint/lint@npm:^19.2.2":
164+  version: 19.2.2
165+  resolution: "@commitlint/lint@npm:19.2.2"
166+  dependencies:
167+    "@commitlint/is-ignored": "npm:^19.2.2"
168+    "@commitlint/parse": "npm:^19.0.3"
169+    "@commitlint/rules": "npm:^19.0.3"
170+    "@commitlint/types": "npm:^19.0.3"
171+  checksum: 10c0/e7b3ca6027fecc1a3eda0ee8c21ecef0071ddddc7711a922cc6eb53a590c7e4f00d550b01134a5ebaaae603a0afbeaf65809b12f8099e08cace9d594cb69ff4b
172+  languageName: node
173+  linkType: hard
174+
175+"@commitlint/load@npm:^19.2.0":
176+  version: 19.2.0
177+  resolution: "@commitlint/load@npm:19.2.0"
178+  dependencies:
179+    "@commitlint/config-validator": "npm:^19.0.3"
180+    "@commitlint/execute-rule": "npm:^19.0.0"
181+    "@commitlint/resolve-extends": "npm:^19.1.0"
182+    "@commitlint/types": "npm:^19.0.3"
183+    chalk: "npm:^5.3.0"
184+    cosmiconfig: "npm:^9.0.0"
185+    cosmiconfig-typescript-loader: "npm:^5.0.0"
186+    lodash.isplainobject: "npm:^4.0.6"
187+    lodash.merge: "npm:^4.6.2"
188+    lodash.uniq: "npm:^4.5.0"
189+  checksum: 10c0/100ad63e99f59cdad7f48748b77a9a55710a2487971dd2ee503ba003aaf407ab49acf844a45c87a8b5e0a4de3a037cadaed9460ecd6d2e886bbdf943eb344bb2
190+  languageName: node
191+  linkType: hard
192+
193+"@commitlint/message@npm:^19.0.0":
194+  version: 19.0.0
195+  resolution: "@commitlint/message@npm:19.0.0"
196+  checksum: 10c0/753bf18838ebde4464e8f4b346d04d3367fbb90b542db6a54da08aa241497b4050a6ecd09dba4f37f6348855fa86e6625350d596fe5dea7a8dd4faee49ab76a7
197+  languageName: node
198+  linkType: hard
199+
200+"@commitlint/parse@npm:^19.0.3":
201+  version: 19.0.3
202+  resolution: "@commitlint/parse@npm:19.0.3"
203+  dependencies:
204+    "@commitlint/types": "npm:^19.0.3"
205+    conventional-changelog-angular: "npm:^7.0.0"
206+    conventional-commits-parser: "npm:^5.0.0"
207+  checksum: 10c0/ede8d5bfb37520337ea7836a68f280cdb4b9788d0586b8be676394b3dd8a7a9626391178c4f94d334c5b8d95ea75c73939c40c8c9d81c372cf7743f5bff3d0e1
208+  languageName: node
209+  linkType: hard
210+
211+"@commitlint/read@npm:^19.2.1":
212+  version: 19.2.1
213+  resolution: "@commitlint/read@npm:19.2.1"
214+  dependencies:
215+    "@commitlint/top-level": "npm:^19.0.0"
216+    "@commitlint/types": "npm:^19.0.3"
217+    execa: "npm:^8.0.1"
218+    git-raw-commits: "npm:^4.0.0"
219+    minimist: "npm:^1.2.8"
220+  checksum: 10c0/9aef7e24164fe502c59b8acb867a9193bff2aab9bcdd74b9c18e2fada27d631360a1e3ce74898104bc8eae45129216d4227d22fa20ca65b59d6ad45b26d71b66
221+  languageName: node
222+  linkType: hard
223+
224+"@commitlint/resolve-extends@npm:^19.1.0":
225+  version: 19.1.0
226+  resolution: "@commitlint/resolve-extends@npm:19.1.0"
227+  dependencies:
228+    "@commitlint/config-validator": "npm:^19.0.3"
229+    "@commitlint/types": "npm:^19.0.3"
230+    global-directory: "npm:^4.0.1"
231+    import-meta-resolve: "npm:^4.0.0"
232+    lodash.mergewith: "npm:^4.6.2"
233+    resolve-from: "npm:^5.0.0"
234+  checksum: 10c0/5b4c69694ddf63f15499a940f99a39bdf0ae1943eb4731c7ea10572e416e44d6d57280faa8011801f4dc64aa70e55eb3b510c86c8e2b76820dcfe88b421afd4a
235+  languageName: node
236+  linkType: hard
237+
238+"@commitlint/rules@npm:^19.0.3":
239+  version: 19.0.3
240+  resolution: "@commitlint/rules@npm:19.0.3"
241+  dependencies:
242+    "@commitlint/ensure": "npm:^19.0.3"
243+    "@commitlint/message": "npm:^19.0.0"
244+    "@commitlint/to-lines": "npm:^19.0.0"
245+    "@commitlint/types": "npm:^19.0.3"
246+    execa: "npm:^8.0.1"
247+  checksum: 10c0/4a9a3f2fb838949707650a6bf2a016ec2b0ec570cb151d1005d01bdeb2e27adff5e5eab3c06a302c6834a88e2ec39090a5482bb57f2da51e6609c2b89e33d948
248+  languageName: node
249+  linkType: hard
250+
251+"@commitlint/to-lines@npm:^19.0.0":
252+  version: 19.0.0
253+  resolution: "@commitlint/to-lines@npm:19.0.0"
254+  checksum: 10c0/9e8836668d176f4ddfa30bd6619cba9764223c5e0a76473c470b373069785ae2eb7af17db67e0e11ff30d8db997d0dd06a148bd8053c71fea1d03fc2278f0e8b
255+  languageName: node
256+  linkType: hard
257+
258+"@commitlint/top-level@npm:^19.0.0":
259+  version: 19.0.0
260+  resolution: "@commitlint/top-level@npm:19.0.0"
261+  dependencies:
262+    find-up: "npm:^7.0.0"
263+  checksum: 10c0/27ee2797f8d3d75aec3e9bf151b48fdbe4c362effbc2e7a11e6326342af06a29983fea5ad8756587e285c035b5ec45d4c4bc28cd698b62db31ca326db46efb64
264+  languageName: node
265+  linkType: hard
266+
267+"@commitlint/types@npm:^19.0.3":
268+  version: 19.0.3
269+  resolution: "@commitlint/types@npm:19.0.3"
270+  dependencies:
271+    "@types/conventional-commits-parser": "npm:^5.0.0"
272+    chalk: "npm:^5.3.0"
273+  checksum: 10c0/279454409771097432cb3ecd4930b8f10e99e150b9306e931b69e4e80011a4251f326523bfaba59fcf9a9db7978c76073b7c7c07fbad6b90e045cb0fa2b70047
274+  languageName: node
275+  linkType: hard
276+
277 "@eslint-community/eslint-utils@npm:^4.2.0":
278   version: 4.4.0
279   resolution: "@eslint-community/eslint-utils@npm:4.4.0"
280@@ -1163,6 +1384,15 @@ __metadata:
281   languageName: node
282   linkType: hard
283 
284+"@types/conventional-commits-parser@npm:^5.0.0":
285+  version: 5.0.0
286+  resolution: "@types/conventional-commits-parser@npm:5.0.0"
287+  dependencies:
288+    "@types/node": "npm:*"
289+  checksum: 10c0/16c748ce01cb3b3ea5947950acd695569c0daa8da62cc7e0eb98b15c4d7f812f95c079fe2c853325509f8aa73cfd388390319ae4621c8dfb21eeacb63accdb25
290+  languageName: node
291+  linkType: hard
292+
293 "@types/hast@npm:^2.0.0":
294   version: 2.3.10
295   resolution: "@types/hast@npm:2.3.10"
296@@ -1179,7 +1409,7 @@ __metadata:
297   languageName: node
298   linkType: hard
299 
300-"@types/node@npm:^20":
301+"@types/node@npm:*, @types/node@npm:^20":
302   version: 20.14.2
303   resolution: "@types/node@npm:20.14.2"
304   dependencies:
305@@ -1301,6 +1531,18 @@ __metadata:
306   languageName: node
307   linkType: hard
308 
309+"JSONStream@npm:^1.3.5":
310+  version: 1.3.5
311+  resolution: "JSONStream@npm:1.3.5"
312+  dependencies:
313+    jsonparse: "npm:^1.2.0"
314+    through: "npm:>=2.2.7 <3"
315+  bin:
316+    JSONStream: ./bin.js
317+  checksum: 10c0/0f54694da32224d57b715385d4a6b668d2117379d1f3223dc758459246cca58fdc4c628b83e8a8883334e454a0a30aa198ede77c788b55537c1844f686a751f2
318+  languageName: node
319+  linkType: hard
320+
321 "abbrev@npm:^2.0.0":
322   version: 2.0.0
323   resolution: "abbrev@npm:2.0.0"
324@@ -1367,6 +1609,25 @@ __metadata:
325   languageName: node
326   linkType: hard
327 
328+"ajv@npm:^8.11.0":
329+  version: 8.16.0
330+  resolution: "ajv@npm:8.16.0"
331+  dependencies:
332+    fast-deep-equal: "npm:^3.1.3"
333+    json-schema-traverse: "npm:^1.0.0"
334+    require-from-string: "npm:^2.0.2"
335+    uri-js: "npm:^4.4.1"
336+  checksum: 10c0/6fc38aa8fd4fbfaa7096ac049e48c0cb440db36b76fef2d7d5b7d92b102735670d055d412d19176c08c9d48eaa9d06661b67e59f04943dc71ab1551e0484f88c
337+  languageName: node
338+  linkType: hard
339+
340+"ansi-escapes@npm:^6.2.0":
341+  version: 6.2.1
342+  resolution: "ansi-escapes@npm:6.2.1"
343+  checksum: 10c0/a2c6f58b044be5f69662ee17073229b492daa2425a7fd99a665db6c22eab6e4ab42752807def7281c1c7acfed48f87f2362dda892f08c2c437f1b39c6b033103
344+  languageName: node
345+  linkType: hard
346+
347 "ansi-regex@npm:^5.0.1":
348   version: 5.0.1
349   resolution: "ansi-regex@npm:5.0.1"
350@@ -1381,6 +1642,15 @@ __metadata:
351   languageName: node
352   linkType: hard
353 
354+"ansi-styles@npm:^3.2.1":
355+  version: 3.2.1
356+  resolution: "ansi-styles@npm:3.2.1"
357+  dependencies:
358+    color-convert: "npm:^1.9.0"
359+  checksum: 10c0/ece5a8ef069fcc5298f67e3f4771a663129abd174ea2dfa87923a2be2abf6cd367ef72ac87942da00ce85bd1d651d4cd8595aebdb1b385889b89b205860e977b
360+  languageName: node
361+  linkType: hard
362+
363 "ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0":
364   version: 4.3.0
365   resolution: "ansi-styles@npm:4.3.0"
366@@ -1390,7 +1660,7 @@ __metadata:
367   languageName: node
368   linkType: hard
369 
370-"ansi-styles@npm:^6.1.0":
371+"ansi-styles@npm:^6.0.0, ansi-styles@npm:^6.1.0, ansi-styles@npm:^6.2.1":
372   version: 6.2.1
373   resolution: "ansi-styles@npm:6.2.1"
374   checksum: 10c0/5d1ec38c123984bcedd996eac680d548f31828bd679a66db2bdf11844634dde55fec3efa9c6bb1d89056a5e79c1ac540c4c784d592ea1d25028a92227d2f2d5c
375@@ -1456,6 +1726,13 @@ __metadata:
376   languageName: node
377   linkType: hard
378 
379+"array-ify@npm:^1.0.0":
380+  version: 1.0.0
381+  resolution: "array-ify@npm:1.0.0"
382+  checksum: 10c0/75c9c072faac47bd61779c0c595e912fe660d338504ac70d10e39e1b8a4a0c9c87658703d619b9d1b70d324177ae29dc8d07dda0d0a15d005597bc4c5a59c70c
383+  languageName: node
384+  linkType: hard
385+
386 "array-includes@npm:^3.1.6, array-includes@npm:^3.1.7, array-includes@npm:^3.1.8":
387   version: 3.1.8
388   resolution: "array-includes@npm:3.1.8"
389@@ -1721,6 +1998,17 @@ __metadata:
390   languageName: node
391   linkType: hard
392 
393+"chalk@npm:^2.4.2":
394+  version: 2.4.2
395+  resolution: "chalk@npm:2.4.2"
396+  dependencies:
397+    ansi-styles: "npm:^3.2.1"
398+    escape-string-regexp: "npm:^1.0.5"
399+    supports-color: "npm:^5.3.0"
400+  checksum: 10c0/e6543f02ec877732e3a2d1c3c3323ddb4d39fbab687c23f526e25bd4c6a9bf3b83a696e8c769d078e04e5754921648f7821b2a2acfd16c550435fd630026e073
401+  languageName: node
402+  linkType: hard
403+
404 "chalk@npm:^4.0.0":
405   version: 4.1.2
406   resolution: "chalk@npm:4.1.2"
407@@ -1731,6 +2019,13 @@ __metadata:
408   languageName: node
409   linkType: hard
410 
411+"chalk@npm:^5.3.0, chalk@npm:~5.3.0":
412+  version: 5.3.0
413+  resolution: "chalk@npm:5.3.0"
414+  checksum: 10c0/8297d436b2c0f95801103ff2ef67268d362021b8210daf8ddbe349695333eb3610a71122172ff3b0272f1ef2cf7cc2c41fdaa4715f52e49ffe04c56340feed09
415+  languageName: node
416+  linkType: hard
417+
418 "character-entities-legacy@npm:^1.0.0":
419   version: 1.1.4
420   resolution: "character-entities-legacy@npm:1.1.4"
421@@ -1803,13 +2098,43 @@ __metadata:
422   languageName: node
423   linkType: hard
424 
425+"cli-cursor@npm:^4.0.0":
426+  version: 4.0.0
427+  resolution: "cli-cursor@npm:4.0.0"
428+  dependencies:
429+    restore-cursor: "npm:^4.0.0"
430+  checksum: 10c0/e776e8c3c6727300d0539b0d25160b2bb56aed1a63942753ba1826b012f337a6f4b7ace3548402e4f2f13b5e16bfd751be672c44b203205e7eca8be94afec42c
431+  languageName: node
432+  linkType: hard
433+
434+"cli-truncate@npm:^4.0.0":
435+  version: 4.0.0
436+  resolution: "cli-truncate@npm:4.0.0"
437+  dependencies:
438+    slice-ansi: "npm:^5.0.0"
439+    string-width: "npm:^7.0.0"
440+  checksum: 10c0/d7f0b73e3d9b88cb496e6c086df7410b541b56a43d18ade6a573c9c18bd001b1c3fba1ad578f741a4218fdc794d042385f8ac02c25e1c295a2d8b9f3cb86eb4c
441+  languageName: node
442+  linkType: hard
443+
444 "client-only@npm:0.0.1":
445   version: 0.0.1
446   resolution: "client-only@npm:0.0.1"
447   checksum: 10c0/9d6cfd0c19e1c96a434605added99dff48482152af791ec4172fb912a71cff9027ff174efd8cdb2160cc7f377543e0537ffc462d4f279bc4701de3f2a3c4b358
448   languageName: node
449   linkType: hard
450 
451+"cliui@npm:^8.0.1":
452+  version: 8.0.1
453+  resolution: "cliui@npm:8.0.1"
454+  dependencies:
455+    string-width: "npm:^4.2.0"
456+    strip-ansi: "npm:^6.0.1"
457+    wrap-ansi: "npm:^7.0.0"
458+  checksum: 10c0/4bda0f09c340cbb6dfdc1ed508b3ca080f12992c18d68c6be4d9cf51756033d5266e61ec57529e610dacbf4da1c634423b0c1b11037709cc6b09045cbd815df5
459+  languageName: node
460+  linkType: hard
461+
462 "clsx@npm:2.0.0":
463   version: 2.0.0
464   resolution: "clsx@npm:2.0.0"
465@@ -1824,6 +2149,15 @@ __metadata:
466   languageName: node
467   linkType: hard
468 
469+"color-convert@npm:^1.9.0":
470+  version: 1.9.3
471+  resolution: "color-convert@npm:1.9.3"
472+  dependencies:
473+    color-name: "npm:1.1.3"
474+  checksum: 10c0/5ad3c534949a8c68fca8fbc6f09068f435f0ad290ab8b2f76841b9e6af7e0bb57b98cb05b0e19fe33f5d91e5a8611ad457e5f69e0a484caad1f7487fd0e8253c
475+  languageName: node
476+  linkType: hard
477+
478 "color-convert@npm:^2.0.1":
479   version: 2.0.1
480   resolution: "color-convert@npm:2.0.1"
481@@ -1833,13 +2167,27 @@ __metadata:
482   languageName: node
483   linkType: hard
484 
485+"color-name@npm:1.1.3":
486+  version: 1.1.3
487+  resolution: "color-name@npm:1.1.3"
488+  checksum: 10c0/566a3d42cca25b9b3cd5528cd7754b8e89c0eb646b7f214e8e2eaddb69994ac5f0557d9c175eb5d8f0ad73531140d9c47525085ee752a91a2ab15ab459caf6d6
489+  languageName: node
490+  linkType: hard
491+
492 "color-name@npm:~1.1.4":
493   version: 1.1.4
494   resolution: "color-name@npm:1.1.4"
495   checksum: 10c0/a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95
496   languageName: node
497   linkType: hard
498 
499+"colorette@npm:^2.0.20":
500+  version: 2.0.20
501+  resolution: "colorette@npm:2.0.20"
502+  checksum: 10c0/e94116ff33b0ff56f3b83b9ace895e5bf87c2a7a47b3401b8c3f3226e050d5ef76cf4072fb3325f9dc24d1698f9b730baf4e05eeaf861d74a1883073f4c98a40
503+  languageName: node
504+  linkType: hard
505+
506 "comma-separated-tokens@npm:^1.0.0":
507   version: 1.0.8
508   resolution: "comma-separated-tokens@npm:1.0.8"
509@@ -1854,14 +2202,93 @@ __metadata:
510   languageName: node
511   linkType: hard
512 
513+"commander@npm:~12.1.0":
514+  version: 12.1.0
515+  resolution: "commander@npm:12.1.0"
516+  checksum: 10c0/6e1996680c083b3b897bfc1cfe1c58dfbcd9842fd43e1aaf8a795fbc237f65efcc860a3ef457b318e73f29a4f4a28f6403c3d653d021d960e4632dd45bde54a9
517+  languageName: node
518+  linkType: hard
519+
520+"compare-func@npm:^2.0.0":
521+  version: 2.0.0
522+  resolution: "compare-func@npm:2.0.0"
523+  dependencies:
524+    array-ify: "npm:^1.0.0"
525+    dot-prop: "npm:^5.1.0"
526+  checksum: 10c0/78bd4dd4ed311a79bd264c9e13c36ed564cde657f1390e699e0f04b8eee1fc06ffb8698ce2dfb5fbe7342d509579c82d4e248f08915b708f77f7b72234086cc3
527+  languageName: node
528+  linkType: hard
529+
530 "concat-map@npm:0.0.1":
531   version: 0.0.1
532   resolution: "concat-map@npm:0.0.1"
533   checksum: 10c0/c996b1cfdf95b6c90fee4dae37e332c8b6eb7d106430c17d538034c0ad9a1630cb194d2ab37293b1bdd4d779494beee7786d586a50bd9376fd6f7bcc2bd4c98f
534   languageName: node
535   linkType: hard
536 
537-"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2":
538+"conventional-changelog-angular@npm:^7.0.0":
539+  version: 7.0.0
540+  resolution: "conventional-changelog-angular@npm:7.0.0"
541+  dependencies:
542+    compare-func: "npm:^2.0.0"
543+  checksum: 10c0/90e73e25e224059b02951b6703b5f8742dc2a82c1fea62163978e6735fd3ab04350897a8fc6f443ec6b672d6b66e28a0820e833e544a0101f38879e5e6289b7e
544+  languageName: node
545+  linkType: hard
546+
547+"conventional-changelog-conventionalcommits@npm:^7.0.2":
548+  version: 7.0.2
549+  resolution: "conventional-changelog-conventionalcommits@npm:7.0.2"
550+  dependencies:
551+    compare-func: "npm:^2.0.0"
552+  checksum: 10c0/3cb1eab35e37fc973cfb3aed0e159f54414e49b222988da1c2aa86cc8a87fe7531491bbb7657fe5fc4dc0e25f5b50e2065ba8ac71cc4c08eed9189102a2b81bd
553+  languageName: node
554+  linkType: hard
555+
556+"conventional-commits-parser@npm:^5.0.0":
557+  version: 5.0.0
558+  resolution: "conventional-commits-parser@npm:5.0.0"
559+  dependencies:
560+    JSONStream: "npm:^1.3.5"
561+    is-text-path: "npm:^2.0.0"
562+    meow: "npm:^12.0.1"
563+    split2: "npm:^4.0.0"
564+  bin:
565+    conventional-commits-parser: cli.mjs
566+  checksum: 10c0/c9e542f4884119a96a6bf3311ff62cdee55762d8547f4c745ae3ebdc50afe4ba7691e165e34827d5cf63283cbd93ab69917afd7922423075b123d5d9a7a82ed2
567+  languageName: node
568+  linkType: hard
569+
570+"cosmiconfig-typescript-loader@npm:^5.0.0":
571+  version: 5.0.0
572+  resolution: "cosmiconfig-typescript-loader@npm:5.0.0"
573+  dependencies:
574+    jiti: "npm:^1.19.1"
575+  peerDependencies:
576+    "@types/node": "*"
577+    cosmiconfig: ">=8.2"
578+    typescript: ">=4"
579+  checksum: 10c0/0eb1a767a589cf092e68729e184d5917ae0b167b6f5d908bc58cee221d66b937430fc58df64029795ef98bb8e85c575da6e3819c5f9679c721de7bdbb4bde719
580+  languageName: node
581+  linkType: hard
582+
583+"cosmiconfig@npm:^9.0.0":
584+  version: 9.0.0
585+  resolution: "cosmiconfig@npm:9.0.0"
586+  dependencies:
587+    env-paths: "npm:^2.2.1"
588+    import-fresh: "npm:^3.3.0"
589+    js-yaml: "npm:^4.1.0"
590+    parse-json: "npm:^5.2.0"
591+  peerDependencies:
592+    typescript: ">=4.9.5"
593+  peerDependenciesMeta:
594+    typescript:
595+      optional: true
596+  checksum: 10c0/1c1703be4f02a250b1d6ca3267e408ce16abfe8364193891afc94c2d5c060b69611fdc8d97af74b7e6d5d1aac0ab2fb94d6b079573146bc2d756c2484ce5f0ee
597+  languageName: node
598+  linkType: hard
599+
600+"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3":
601   version: 7.0.3
602   resolution: "cross-spawn@npm:7.0.3"
603   dependencies:
604@@ -1895,6 +2322,13 @@ __metadata:
605   languageName: node
606   linkType: hard
607 
608+"dargs@npm:^8.0.0":
609+  version: 8.1.0
610+  resolution: "dargs@npm:8.1.0"
611+  checksum: 10c0/08cbd1ee4ac1a16fb7700e761af2e3e22d1bdc04ac4f851926f552dde8f9e57714c0d04013c2cca1cda0cba8fb637e0f93ad15d5285547a939dd1989ee06a82d
612+  languageName: node
613+  linkType: hard
614+
615 "data-view-buffer@npm:^1.0.1":
616   version: 1.0.1
617   resolution: "data-view-buffer@npm:1.0.1"
618@@ -1935,7 +2369,7 @@ __metadata:
619   languageName: node
620   linkType: hard
621 
622-"debug@npm:4, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4":
623+"debug@npm:4, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:~4.3.4":
624   version: 4.3.5
625   resolution: "debug@npm:4.3.5"
626   dependencies:
627@@ -2040,13 +2474,29 @@ __metadata:
628   languageName: node
629   linkType: hard
630 
631+"dot-prop@npm:^5.1.0":
632+  version: 5.3.0
633+  resolution: "dot-prop@npm:5.3.0"
634+  dependencies:
635+    is-obj: "npm:^2.0.0"
636+  checksum: 10c0/93f0d343ef87fe8869320e62f2459f7e70f49c6098d948cc47e060f4a3f827d0ad61e83cb82f2bd90cd5b9571b8d334289978a43c0f98fea4f0e99ee8faa0599
637+  languageName: node
638+  linkType: hard
639+
640 "eastasianwidth@npm:^0.2.0":
641   version: 0.2.0
642   resolution: "eastasianwidth@npm:0.2.0"
643   checksum: 10c0/26f364ebcdb6395f95124fda411f63137a4bfb5d3a06453f7f23dfe52502905bd84e0488172e0f9ec295fdc45f05c23d5d91baf16bd26f0fe9acd777a188dc39
644   languageName: node
645   linkType: hard
646 
647+"emoji-regex@npm:^10.3.0":
648+  version: 10.3.0
649+  resolution: "emoji-regex@npm:10.3.0"
650+  checksum: 10c0/b4838e8dcdceb44cf47f59abe352c25ff4fe7857acaf5fb51097c427f6f75b44d052eb907a7a3b86f86bc4eae3a93f5c2b7460abe79c407307e6212d65c91163
651+  languageName: node
652+  linkType: hard
653+
654 "emoji-regex@npm:^8.0.0":
655   version: 8.0.0
656   resolution: "emoji-regex@npm:8.0.0"
657@@ -2087,7 +2537,7 @@ __metadata:
658   languageName: node
659   linkType: hard
660 
661-"env-paths@npm:^2.2.0":
662+"env-paths@npm:^2.2.0, env-paths@npm:^2.2.1":
663   version: 2.2.1
664   resolution: "env-paths@npm:2.2.1"
665   checksum: 10c0/285325677bf00e30845e330eec32894f5105529db97496ee3f598478e50f008c5352a41a30e5e72ec9de8a542b5a570b85699cd63bd2bc646dbcb9f311d83bc4
666@@ -2101,6 +2551,15 @@ __metadata:
667   languageName: node
668   linkType: hard
669 
670+"error-ex@npm:^1.3.1":
671+  version: 1.3.2
672+  resolution: "error-ex@npm:1.3.2"
673+  dependencies:
674+    is-arrayish: "npm:^0.2.1"
675+  checksum: 10c0/ba827f89369b4c93382cfca5a264d059dfefdaa56ecc5e338ffa58a6471f5ed93b71a20add1d52290a4873d92381174382658c885ac1a2305f7baca363ce9cce
676+  languageName: node
677+  linkType: hard
678+
679 "es-abstract@npm:^1.22.1, es-abstract@npm:^1.22.3, es-abstract@npm:^1.23.0, es-abstract@npm:^1.23.1, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3":
680   version: 1.23.3
681   resolution: "es-abstract@npm:1.23.3"
682@@ -2233,13 +2692,27 @@ __metadata:
683   languageName: node
684   linkType: hard
685 
686+"escalade@npm:^3.1.1":
687+  version: 3.1.2
688+  resolution: "escalade@npm:3.1.2"
689+  checksum: 10c0/6b4adafecd0682f3aa1cd1106b8fff30e492c7015b178bc81b2d2f75106dabea6c6d6e8508fc491bd58e597c74abb0e8e2368f943ecb9393d4162e3c2f3cf287
690+  languageName: node
691+  linkType: hard
692+
693 "escape-string-regexp@npm:5.0.0":
694   version: 5.0.0
695   resolution: "escape-string-regexp@npm:5.0.0"
696   checksum: 10c0/6366f474c6f37a802800a435232395e04e9885919873e382b157ab7e8f0feb8fed71497f84a6f6a81a49aab41815522f5839112bd38026d203aea0c91622df95
697   languageName: node
698   linkType: hard
699 
700+"escape-string-regexp@npm:^1.0.5":
701+  version: 1.0.5
702+  resolution: "escape-string-regexp@npm:1.0.5"
703+  checksum: 10c0/a968ad453dd0c2724e14a4f20e177aaf32bb384ab41b674a8454afe9a41c5e6fe8903323e0a1052f56289d04bd600f81278edf140b0fcc02f5cac98d0f5b5371
704+  languageName: node
705+  linkType: hard
706+
707 "escape-string-regexp@npm:^4.0.0":
708   version: 4.0.0
709   resolution: "escape-string-regexp@npm:4.0.0"
710@@ -2509,6 +2982,30 @@ __metadata:
711   languageName: node
712   linkType: hard
713 
714+"eventemitter3@npm:^5.0.1":
715+  version: 5.0.1
716+  resolution: "eventemitter3@npm:5.0.1"
717+  checksum: 10c0/4ba5c00c506e6c786b4d6262cfbce90ddc14c10d4667e5c83ae993c9de88aa856033994dd2b35b83e8dc1170e224e66a319fa80adc4c32adcd2379bbc75da814
718+  languageName: node
719+  linkType: hard
720+
721+"execa@npm:^8.0.1, execa@npm:~8.0.1":
722+  version: 8.0.1
723+  resolution: "execa@npm:8.0.1"
724+  dependencies:
725+    cross-spawn: "npm:^7.0.3"
726+    get-stream: "npm:^8.0.1"
727+    human-signals: "npm:^5.0.0"
728+    is-stream: "npm:^3.0.0"
729+    merge-stream: "npm:^2.0.0"
730+    npm-run-path: "npm:^5.1.0"
731+    onetime: "npm:^6.0.0"
732+    signal-exit: "npm:^4.1.0"
733+    strip-final-newline: "npm:^3.0.0"
734+  checksum: 10c0/2c52d8775f5bf103ce8eec9c7ab3059909ba350a5164744e9947ed14a53f51687c040a250bda833f906d1283aa8803975b84e6c8f7a7c42f99dc8ef80250d1af
735+  languageName: node
736+  linkType: hard
737+
738 "exponential-backoff@npm:^3.1.1":
739   version: 3.1.1
740   resolution: "exponential-backoff@npm:3.1.1"
741@@ -2596,6 +3093,17 @@ __metadata:
742   languageName: node
743   linkType: hard
744 
745+"find-up@npm:^7.0.0":
746+  version: 7.0.0
747+  resolution: "find-up@npm:7.0.0"
748+  dependencies:
749+    locate-path: "npm:^7.2.0"
750+    path-exists: "npm:^5.0.0"
751+    unicorn-magic: "npm:^0.1.0"
752+  checksum: 10c0/e6ee3e6154560bc0ab3bc3b7d1348b31513f9bdf49a5dd2e952495427d559fa48cdf33953e85a309a323898b43fa1bfbc8b80c880dfc16068384783034030008
753+  languageName: node
754+  linkType: hard
755+
756 "flat-cache@npm:^3.0.4":
757   version: 3.2.0
758   resolution: "flat-cache@npm:3.2.0"
759@@ -2710,6 +3218,20 @@ __metadata:
760   languageName: node
761   linkType: hard
762 
763+"get-caller-file@npm:^2.0.5":
764+  version: 2.0.5
765+  resolution: "get-caller-file@npm:2.0.5"
766+  checksum: 10c0/c6c7b60271931fa752aeb92f2b47e355eac1af3a2673f47c9589e8f8a41adc74d45551c1bc57b5e66a80609f10ffb72b6f575e4370d61cc3f7f3aaff01757cde
767+  languageName: node
768+  linkType: hard
769+
770+"get-east-asian-width@npm:^1.0.0":
771+  version: 1.2.0
772+  resolution: "get-east-asian-width@npm:1.2.0"
773+  checksum: 10c0/914b1e217cf38436c24b4c60b4c45289e39a45bf9e65ef9fd343c2815a1a02b8a0215aeec8bf9c07c516089004b6e3826332481f40a09529fcadbf6e579f286b
774+  languageName: node
775+  linkType: hard
776+
777 "get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4":
778   version: 1.2.4
779   resolution: "get-intrinsic@npm:1.2.4"
780@@ -2730,6 +3252,13 @@ __metadata:
781   languageName: node
782   linkType: hard
783 
784+"get-stream@npm:^8.0.1":
785+  version: 8.0.1
786+  resolution: "get-stream@npm:8.0.1"
787+  checksum: 10c0/5c2181e98202b9dae0bb4a849979291043e5892eb40312b47f0c22b9414fc9b28a3b6063d2375705eb24abc41ecf97894d9a51f64ff021511b504477b27b4290
788+  languageName: node
789+  linkType: hard
790+
791 "get-symbol-description@npm:^1.0.2":
792   version: 1.0.2
793   resolution: "get-symbol-description@npm:1.0.2"
794@@ -2750,10 +3279,25 @@ __metadata:
795   languageName: node
796   linkType: hard
797 
798+"git-raw-commits@npm:^4.0.0":
799+  version: 4.0.0
800+  resolution: "git-raw-commits@npm:4.0.0"
801+  dependencies:
802+    dargs: "npm:^8.0.0"
803+    meow: "npm:^12.0.1"
804+    split2: "npm:^4.0.0"
805+  bin:
806+    git-raw-commits: cli.mjs
807+  checksum: 10c0/ab51335d9e55692fce8e42788013dba7a7e7bf9f5bf0622c8cd7ddc9206489e66bb939563fca4edb3aa87477e2118f052702aad1933b13c6fa738af7f29884f0
808+  languageName: node
809+  linkType: hard
810+
811 "github-commit-explorer@workspace:.":
812   version: 0.0.0-use.local
813   resolution: "github-commit-explorer@workspace:."
814   dependencies:
815+    "@commitlint/cli": "npm:^19.3.0"
816+    "@commitlint/config-conventional": "npm:^19.2.2"
817     "@radix-ui/react-avatar": "npm:^1.0.4"
818     "@radix-ui/react-dialog": "npm:^1.0.5"
819     "@radix-ui/react-dropdown-menu": "npm:^2.0.6"
820@@ -2769,6 +3313,8 @@ __metadata:
821     emoji-toolkit: "npm:^8.0.0"
822     eslint: "npm:^8"
823     eslint-config-next: "npm:14.2.4"
824+    husky: "npm:^9.0.11"
825+    lint-staged: "npm:^15.2.7"
826     lucide-react: "npm:^0.395.0"
827     next: "npm:14.2.4"
828     next-themes: "npm:^0.3.0"
829@@ -2848,6 +3394,15 @@ __metadata:
830   languageName: node
831   linkType: hard
832 
833+"global-directory@npm:^4.0.1":
834+  version: 4.0.1
835+  resolution: "global-directory@npm:4.0.1"
836+  dependencies:
837+    ini: "npm:4.1.1"
838+  checksum: 10c0/f9cbeef41db4876f94dd0bac1c1b4282a7de9c16350ecaaf83e7b2dd777b32704cc25beeb1170b5a63c42a2c9abfade74d46357fe0133e933218bc89e613d4b2
839+  languageName: node
840+  linkType: hard
841+
842 "globals@npm:^13.19.0":
843   version: 13.24.0
844   resolution: "globals@npm:13.24.0"
845@@ -2911,6 +3466,13 @@ __metadata:
846   languageName: node
847   linkType: hard
848 
849+"has-flag@npm:^3.0.0":
850+  version: 3.0.0
851+  resolution: "has-flag@npm:3.0.0"
852+  checksum: 10c0/1c6c83b14b8b1b3c25b0727b8ba3e3b647f99e9e6e13eb7322107261de07a4c1be56fc0d45678fc376e09772a3a1642ccdaf8fc69bdf123b6c086598397ce473
853+  languageName: node
854+  linkType: hard
855+
856 "has-flag@npm:^4.0.0":
857   version: 4.0.0
858   resolution: "has-flag@npm:4.0.0"
859@@ -3013,6 +3575,22 @@ __metadata:
860   languageName: node
861   linkType: hard
862 
863+"human-signals@npm:^5.0.0":
864+  version: 5.0.0
865+  resolution: "human-signals@npm:5.0.0"
866+  checksum: 10c0/5a9359073fe17a8b58e5a085e9a39a950366d9f00217c4ff5878bd312e09d80f460536ea6a3f260b5943a01fe55c158d1cea3fc7bee3d0520aeef04f6d915c82
867+  languageName: node
868+  linkType: hard
869+
870+"husky@npm:^9.0.11":
871+  version: 9.0.11
872+  resolution: "husky@npm:9.0.11"
873+  bin:
874+    husky: bin.mjs
875+  checksum: 10c0/2c787dcf74a837fc9a4fea7da907509d4bd9a289f4ea10ecc9d86279e4d4542b0f5f6443a619bccae19e265f2677172cc2b86aae5c932a35a330cc227d914605
876+  languageName: node
877+  linkType: hard
878+
879 "iconv-lite@npm:^0.6.2":
880   version: 0.6.3
881   resolution: "iconv-lite@npm:0.6.3"
882@@ -3029,7 +3607,7 @@ __metadata:
883   languageName: node
884   linkType: hard
885 
886-"import-fresh@npm:^3.2.1":
887+"import-fresh@npm:^3.2.1, import-fresh@npm:^3.3.0":
888   version: 3.3.0
889   resolution: "import-fresh@npm:3.3.0"
890   dependencies:
891@@ -3039,6 +3617,13 @@ __metadata:
892   languageName: node
893   linkType: hard
894 
895+"import-meta-resolve@npm:^4.0.0":
896+  version: 4.1.0
897+  resolution: "import-meta-resolve@npm:4.1.0"
898+  checksum: 10c0/42f3284b0460635ddf105c4ad99c6716099c3ce76702602290ad5cbbcd295700cbc04e4bdf47bacf9e3f1a4cec2e1ff887dabc20458bef398f9de22ddff45ef5
899+  languageName: node
900+  linkType: hard
901+
902 "imurmurhash@npm:^0.1.4":
903   version: 0.1.4
904   resolution: "imurmurhash@npm:0.1.4"
905@@ -3077,6 +3662,13 @@ __metadata:
906   languageName: node
907   linkType: hard
908 
909+"ini@npm:4.1.1":
910+  version: 4.1.1
911+  resolution: "ini@npm:4.1.1"
912+  checksum: 10c0/7fddc8dfd3e63567d4fdd5d999d1bf8a8487f1479d0b34a1d01f28d391a9228d261e19abc38e1a6a1ceb3400c727204fce05725d5eb598dfcf2077a1e3afe211
913+  languageName: node
914+  linkType: hard
915+
916 "internal-slot@npm:^1.0.7":
917   version: 1.0.7
918   resolution: "internal-slot@npm:1.0.7"
919@@ -3134,6 +3726,13 @@ __metadata:
920   languageName: node
921   linkType: hard
922 
923+"is-arrayish@npm:^0.2.1":
924+  version: 0.2.1
925+  resolution: "is-arrayish@npm:0.2.1"
926+  checksum: 10c0/e7fb686a739068bb70f860b39b67afc62acc62e36bb61c5f965768abce1873b379c563e61dd2adad96ebb7edf6651111b385e490cf508378959b0ed4cac4e729
927+  languageName: node
928+  linkType: hard
929+
930 "is-async-function@npm:^2.0.0":
931   version: 2.0.0
932   resolution: "is-async-function@npm:2.0.0"
933@@ -3235,6 +3834,22 @@ __metadata:
934   languageName: node
935   linkType: hard
936 
937+"is-fullwidth-code-point@npm:^4.0.0":
938+  version: 4.0.0
939+  resolution: "is-fullwidth-code-point@npm:4.0.0"
940+  checksum: 10c0/df2a717e813567db0f659c306d61f2f804d480752526886954a2a3e2246c7745fd07a52b5fecf2b68caf0a6c79dcdace6166fdf29cc76ed9975cc334f0a018b8
941+  languageName: node
942+  linkType: hard
943+
944+"is-fullwidth-code-point@npm:^5.0.0":
945+  version: 5.0.0
946+  resolution: "is-fullwidth-code-point@npm:5.0.0"
947+  dependencies:
948+    get-east-asian-width: "npm:^1.0.0"
949+  checksum: 10c0/cd591b27d43d76b05fa65ed03eddce57a16e1eca0b7797ff7255de97019bcaf0219acfc0c4f7af13319e13541f2a53c0ace476f442b13267b9a6a7568f2b65c8
950+  languageName: node
951+  linkType: hard
952+
953 "is-generator-function@npm:^1.0.10":
954   version: 1.0.10
955   resolution: "is-generator-function@npm:1.0.10"
956@@ -3297,6 +3912,13 @@ __metadata:
957   languageName: node
958   linkType: hard
959 
960+"is-obj@npm:^2.0.0":
961+  version: 2.0.0
962+  resolution: "is-obj@npm:2.0.0"
963+  checksum: 10c0/85044ed7ba8bd169e2c2af3a178cacb92a97aa75de9569d02efef7f443a824b5e153eba72b9ae3aca6f8ce81955271aa2dc7da67a8b720575d3e38104208cb4e
964+  languageName: node
965+  linkType: hard
966+
967 "is-path-inside@npm:^3.0.3":
968   version: 3.0.3
969   resolution: "is-path-inside@npm:3.0.3"
970@@ -3330,6 +3952,13 @@ __metadata:
971   languageName: node
972   linkType: hard
973 
974+"is-stream@npm:^3.0.0":
975+  version: 3.0.0
976+  resolution: "is-stream@npm:3.0.0"
977+  checksum: 10c0/eb2f7127af02ee9aa2a0237b730e47ac2de0d4e76a4a905a50a11557f2339df5765eaea4ceb8029f1efa978586abe776908720bfcb1900c20c6ec5145f6f29d8
978+  languageName: node
979+  linkType: hard
980+
981 "is-string@npm:^1.0.5, is-string@npm:^1.0.7":
982   version: 1.0.7
983   resolution: "is-string@npm:1.0.7"
984@@ -3348,6 +3977,15 @@ __metadata:
985   languageName: node
986   linkType: hard
987 
988+"is-text-path@npm:^2.0.0":
989+  version: 2.0.0
990+  resolution: "is-text-path@npm:2.0.0"
991+  dependencies:
992+    text-extensions: "npm:^2.0.0"
993+  checksum: 10c0/e3c470e1262a3a54aa0fca1c0300b2659a7aed155714be6b643f88822c03bcfa6659b491f7a05c5acd3c1a3d6d42bab47e1bdd35bcc3a25973c4f26b2928bc1a
994+  languageName: node
995+  linkType: hard
996+
997 "is-typed-array@npm:^1.1.13":
998   version: 1.1.13
999   resolution: "is-typed-array@npm:1.1.13"
1000@@ -3443,7 +4081,7 @@ __metadata:
1001   languageName: node
1002   linkType: hard
1003 
1004-"jiti@npm:^1.21.0":
1005+"jiti@npm:^1.19.1, jiti@npm:^1.21.0":
1006   version: 1.21.6
1007   resolution: "jiti@npm:1.21.6"
1008   bin:
1009@@ -3452,7 +4090,7 @@ __metadata:
1010   languageName: node
1011   linkType: hard
1012 
1013-"js-tokens@npm:^3.0.0 || ^4.0.0":
1014+"js-tokens@npm:^3.0.0 || ^4.0.0, js-tokens@npm:^4.0.0":
1015   version: 4.0.0
1016   resolution: "js-tokens@npm:4.0.0"
1017   checksum: 10c0/e248708d377aa058eacf2037b07ded847790e6de892bbad3dac0abba2e759cb9f121b00099a65195616badcb6eca8d14d975cb3e89eb1cfda644756402c8aeed
1018@@ -3484,13 +4122,27 @@ __metadata:
1019   languageName: node
1020   linkType: hard
1021 
1022+"json-parse-even-better-errors@npm:^2.3.0":
1023+  version: 2.3.1
1024+  resolution: "json-parse-even-better-errors@npm:2.3.1"
1025+  checksum: 10c0/140932564c8f0b88455432e0f33c4cb4086b8868e37524e07e723f4eaedb9425bdc2bafd71bd1d9765bd15fd1e2d126972bc83990f55c467168c228c24d665f3
1026+  languageName: node
1027+  linkType: hard
1028+
1029 "json-schema-traverse@npm:^0.4.1":
1030   version: 0.4.1
1031   resolution: "json-schema-traverse@npm:0.4.1"
1032   checksum: 10c0/108fa90d4cc6f08243aedc6da16c408daf81793bf903e9fd5ab21983cda433d5d2da49e40711da016289465ec2e62e0324dcdfbc06275a607fe3233fde4942ce
1033   languageName: node
1034   linkType: hard
1035 
1036+"json-schema-traverse@npm:^1.0.0":
1037+  version: 1.0.0
1038+  resolution: "json-schema-traverse@npm:1.0.0"
1039+  checksum: 10c0/71e30015d7f3d6dc1c316d6298047c8ef98a06d31ad064919976583eb61e1018a60a0067338f0f79cabc00d84af3fcc489bd48ce8a46ea165d9541ba17fb30c6
1040+  languageName: node
1041+  linkType: hard
1042+
1043 "json-stable-stringify-without-jsonify@npm:^1.0.1":
1044   version: 1.0.1
1045   resolution: "json-stable-stringify-without-jsonify@npm:1.0.1"
1046@@ -3509,6 +4161,13 @@ __metadata:
1047   languageName: node
1048   linkType: hard
1049 
1050+"jsonparse@npm:^1.2.0":
1051+  version: 1.3.1
1052+  resolution: "jsonparse@npm:1.3.1"
1053+  checksum: 10c0/89bc68080cd0a0e276d4b5ab1b79cacd68f562467008d176dc23e16e97d4efec9e21741d92ba5087a8433526a45a7e6a9d5ef25408696c402ca1cfbc01a90bf0
1054+  languageName: node
1055+  linkType: hard
1056+
1057 "jsx-ast-utils@npm:^2.4.1 || ^3.0.0, jsx-ast-utils@npm:^3.3.5":
1058   version: 3.3.5
1059   resolution: "jsx-ast-utils@npm:3.3.5"
1060@@ -3563,7 +4222,7 @@ __metadata:
1061   languageName: node
1062   linkType: hard
1063 
1064-"lilconfig@npm:^3.0.0":
1065+"lilconfig@npm:^3.0.0, lilconfig@npm:~3.1.1":
1066   version: 3.1.2
1067   resolution: "lilconfig@npm:3.1.2"
1068   checksum: 10c0/f059630b1a9bddaeba83059db00c672b64dc14074e9f232adce32b38ca1b5686ab737eb665c5ba3c32f147f0002b4bee7311ad0386a9b98547b5623e87071fbe
1069@@ -3577,6 +4236,40 @@ __metadata:
1070   languageName: node
1071   linkType: hard
1072 
1073+"lint-staged@npm:^15.2.7":
1074+  version: 15.2.7
1075+  resolution: "lint-staged@npm:15.2.7"
1076+  dependencies:
1077+    chalk: "npm:~5.3.0"
1078+    commander: "npm:~12.1.0"
1079+    debug: "npm:~4.3.4"
1080+    execa: "npm:~8.0.1"
1081+    lilconfig: "npm:~3.1.1"
1082+    listr2: "npm:~8.2.1"
1083+    micromatch: "npm:~4.0.7"
1084+    pidtree: "npm:~0.6.0"
1085+    string-argv: "npm:~0.3.2"
1086+    yaml: "npm:~2.4.2"
1087+  bin:
1088+    lint-staged: bin/lint-staged.js
1089+  checksum: 10c0/c14399f9782ae222a1748144254f24b5b9afc816dc8840bd02d50f523c6582796ff18410767eb1a73cf1a83bc6e492dea7b1c4f0912bf3e434c068221f13c878
1090+  languageName: node
1091+  linkType: hard
1092+
1093+"listr2@npm:~8.2.1":
1094+  version: 8.2.1
1095+  resolution: "listr2@npm:8.2.1"
1096+  dependencies:
1097+    cli-truncate: "npm:^4.0.0"
1098+    colorette: "npm:^2.0.20"
1099+    eventemitter3: "npm:^5.0.1"
1100+    log-update: "npm:^6.0.0"
1101+    rfdc: "npm:^1.3.1"
1102+    wrap-ansi: "npm:^9.0.0"
1103+  checksum: 10c0/ac32cba8e5c79bcf0dbbb43c2fcc73e47902320c1fa1891074fefb3aa3dfaeef9c76348da22909f65334ba9bee1140bfc903e2f0c64427dd08ef4ba8f6b1dbd0
1104+  languageName: node
1105+  linkType: hard
1106+
1107 "locate-path@npm:^6.0.0":
1108   version: 6.0.0
1109   resolution: "locate-path@npm:6.0.0"
1110@@ -3586,13 +4279,91 @@ __metadata:
1111   languageName: node
1112   linkType: hard
1113 
1114+"locate-path@npm:^7.2.0":
1115+  version: 7.2.0
1116+  resolution: "locate-path@npm:7.2.0"
1117+  dependencies:
1118+    p-locate: "npm:^6.0.0"
1119+  checksum: 10c0/139e8a7fe11cfbd7f20db03923cacfa5db9e14fa14887ea121345597472b4a63c1a42a8a5187defeeff6acf98fd568da7382aa39682d38f0af27433953a97751
1120+  languageName: node
1121+  linkType: hard
1122+
1123+"lodash.camelcase@npm:^4.3.0":
1124+  version: 4.3.0
1125+  resolution: "lodash.camelcase@npm:4.3.0"
1126+  checksum: 10c0/fcba15d21a458076dd309fce6b1b4bf611d84a0ec252cb92447c948c533ac250b95d2e00955801ebc367e5af5ed288b996d75d37d2035260a937008e14eaf432
1127+  languageName: node
1128+  linkType: hard
1129+
1130+"lodash.isplainobject@npm:^4.0.6":
1131+  version: 4.0.6
1132+  resolution: "lodash.isplainobject@npm:4.0.6"
1133+  checksum: 10c0/afd70b5c450d1e09f32a737bed06ff85b873ecd3d3d3400458725283e3f2e0bb6bf48e67dbe7a309eb371a822b16a26cca4a63c8c52db3fc7dc9d5f9dd324cbb
1134+  languageName: node
1135+  linkType: hard
1136+
1137+"lodash.kebabcase@npm:^4.1.1":
1138+  version: 4.1.1
1139+  resolution: "lodash.kebabcase@npm:4.1.1"
1140+  checksum: 10c0/da5d8f41dbb5bc723d4bf9203d5096ca8da804d6aec3d2b56457156ba6c8d999ff448d347ebd97490da853cb36696ea4da09a431499f1ee8deb17b094ecf4e33
1141+  languageName: node
1142+  linkType: hard
1143+
1144 "lodash.merge@npm:^4.6.2":
1145   version: 4.6.2
1146   resolution: "lodash.merge@npm:4.6.2"
1147   checksum: 10c0/402fa16a1edd7538de5b5903a90228aa48eb5533986ba7fa26606a49db2572bf414ff73a2c9f5d5fd36b31c46a5d5c7e1527749c07cbcf965ccff5fbdf32c506
1148   languageName: node
1149   linkType: hard
1150 
1151+"lodash.mergewith@npm:^4.6.2":
1152+  version: 4.6.2
1153+  resolution: "lodash.mergewith@npm:4.6.2"
1154+  checksum: 10c0/4adbed65ff96fd65b0b3861f6899f98304f90fd71e7f1eb36c1270e05d500ee7f5ec44c02ef979b5ddbf75c0a0b9b99c35f0ad58f4011934c4d4e99e5200b3b5
1155+  languageName: node
1156+  linkType: hard
1157+
1158+"lodash.snakecase@npm:^4.1.1":
1159+  version: 4.1.1
1160+  resolution: "lodash.snakecase@npm:4.1.1"
1161+  checksum: 10c0/f0b3f2497eb20eea1a1cfc22d645ecaeb78ac14593eb0a40057977606d2f35f7aaff0913a06553c783b535aafc55b718f523f9eb78f8d5293f492af41002eaf9
1162+  languageName: node
1163+  linkType: hard
1164+
1165+"lodash.startcase@npm:^4.4.0":
1166+  version: 4.4.0
1167+  resolution: "lodash.startcase@npm:4.4.0"
1168+  checksum: 10c0/bd82aa87a45de8080e1c5ee61128c7aee77bf7f1d86f4ff94f4a6d7438fc9e15e5f03374b947be577a93804c8ad6241f0251beaf1452bf716064eeb657b3a9f0
1169+  languageName: node
1170+  linkType: hard
1171+
1172+"lodash.uniq@npm:^4.5.0":
1173+  version: 4.5.0
1174+  resolution: "lodash.uniq@npm:4.5.0"
1175+  checksum: 10c0/262d400bb0952f112162a320cc4a75dea4f66078b9e7e3075ffbc9c6aa30b3e9df3cf20e7da7d566105e1ccf7804e4fbd7d804eee0b53de05d83f16ffbf41c5e
1176+  languageName: node
1177+  linkType: hard
1178+
1179+"lodash.upperfirst@npm:^4.3.1":
1180+  version: 4.3.1
1181+  resolution: "lodash.upperfirst@npm:4.3.1"
1182+  checksum: 10c0/435625da4b3ee74e7a1367a780d9107ab0b13ef4359fc074b2a1a40458eb8d91b655af62f6795b7138d493303a98c0285340160341561d6896e4947e077fa975
1183+  languageName: node
1184+  linkType: hard
1185+
1186+"log-update@npm:^6.0.0":
1187+  version: 6.0.0
1188+  resolution: "log-update@npm:6.0.0"
1189+  dependencies:
1190+    ansi-escapes: "npm:^6.2.0"
1191+    cli-cursor: "npm:^4.0.0"
1192+    slice-ansi: "npm:^7.0.0"
1193+    strip-ansi: "npm:^7.1.0"
1194+    wrap-ansi: "npm:^9.0.0"
1195+  checksum: 10c0/e0b3c3401ef49ce3eb17e2f83d644765e4f7988498fc1344eaa4f31ab30e510dcc469a7fb64dc01bd1c8d9237d917598fa677a9818705fb3774c10f6e9d4b27c
1196+  languageName: node
1197+  linkType: hard
1198+
1199 "loose-envify@npm:^1.0.0, loose-envify@npm:^1.1.0, loose-envify@npm:^1.4.0":
1200   version: 1.4.0
1201   resolution: "loose-envify@npm:1.4.0"
1202@@ -3650,14 +4421,28 @@ __metadata:
1203   languageName: node
1204   linkType: hard
1205 
1206+"meow@npm:^12.0.1":
1207+  version: 12.1.1
1208+  resolution: "meow@npm:12.1.1"
1209+  checksum: 10c0/a125ca99a32e2306e2f4cbe651a0d27f6eb67918d43a075f6e80b35e9bf372ebf0fc3a9fbc201cbbc9516444b6265fb3c9f80c5b7ebd32f548aa93eb7c28e088
1210+  languageName: node
1211+  linkType: hard
1212+
1213+"merge-stream@npm:^2.0.0":
1214+  version: 2.0.0
1215+  resolution: "merge-stream@npm:2.0.0"
1216+  checksum: 10c0/867fdbb30a6d58b011449b8885601ec1690c3e41c759ecd5a9d609094f7aed0096c37823ff4a7190ef0b8f22cc86beb7049196ff68c016e3b3c671d0dac91ce5
1217+  languageName: node
1218+  linkType: hard
1219+
1220 "merge2@npm:^1.3.0, merge2@npm:^1.4.1":
1221   version: 1.4.1
1222   resolution: "merge2@npm:1.4.1"
1223   checksum: 10c0/254a8a4605b58f450308fc474c82ac9a094848081bf4c06778200207820e5193726dc563a0d2c16468810516a5c97d9d3ea0ca6585d23c58ccfff2403e8dbbeb
1224   languageName: node
1225   linkType: hard
1226 
1227-"micromatch@npm:^4.0.4, micromatch@npm:^4.0.5":
1228+"micromatch@npm:^4.0.4, micromatch@npm:^4.0.5, micromatch@npm:~4.0.7":
1229   version: 4.0.7
1230   resolution: "micromatch@npm:4.0.7"
1231   dependencies:
1232@@ -3667,6 +4452,20 @@ __metadata:
1233   languageName: node
1234   linkType: hard
1235 
1236+"mimic-fn@npm:^2.1.0":
1237+  version: 2.1.0
1238+  resolution: "mimic-fn@npm:2.1.0"
1239+  checksum: 10c0/b26f5479d7ec6cc2bce275a08f146cf78f5e7b661b18114e2506dd91ec7ec47e7a25bf4360e5438094db0560bcc868079fb3b1fb3892b833c1ecbf63f80c95a4
1240+  languageName: node
1241+  linkType: hard
1242+
1243+"mimic-fn@npm:^4.0.0":
1244+  version: 4.0.0
1245+  resolution: "mimic-fn@npm:4.0.0"
1246+  checksum: 10c0/de9cc32be9996fd941e512248338e43407f63f6d497abe8441fa33447d922e927de54d4cc3c1a3c6d652857acd770389d5a3823f311a744132760ce2be15ccbf
1247+  languageName: node
1248+  linkType: hard
1249+
1250 "minimatch@npm:9.0.3":
1251   version: 9.0.3
1252   resolution: "minimatch@npm:9.0.3"
1253@@ -3694,7 +4493,7 @@ __metadata:
1254   languageName: node
1255   linkType: hard
1256 
1257-"minimist@npm:^1.2.0, minimist@npm:^1.2.6":
1258+"minimist@npm:^1.2.0, minimist@npm:^1.2.6, minimist@npm:^1.2.8":
1259   version: 1.2.8
1260   resolution: "minimist@npm:1.2.8"
1261   checksum: 10c0/19d3fcdca050087b84c2029841a093691a91259a47def2f18222f41e7645a0b7c44ef4b40e88a1e58a40c84d2ef0ee6047c55594d298146d0eb3f6b737c20ce6
1262@@ -3948,6 +4747,15 @@ __metadata:
1263   languageName: node
1264   linkType: hard
1265 
1266+"npm-run-path@npm:^5.1.0":
1267+  version: 5.3.0
1268+  resolution: "npm-run-path@npm:5.3.0"
1269+  dependencies:
1270+    path-key: "npm:^4.0.0"
1271+  checksum: 10c0/124df74820c40c2eb9a8612a254ea1d557ddfab1581c3e751f825e3e366d9f00b0d76a3c94ecd8398e7f3eee193018622677e95816e8491f0797b21e30b2deba
1272+  languageName: node
1273+  linkType: hard
1274+
1275 "object-assign@npm:^4.0.1, object-assign@npm:^4.1.1":
1276   version: 4.1.1
1277   resolution: "object-assign@npm:4.1.1"
1278@@ -4071,6 +4879,24 @@ __metadata:
1279   languageName: node
1280   linkType: hard
1281 
1282+"onetime@npm:^5.1.0":
1283+  version: 5.1.2
1284+  resolution: "onetime@npm:5.1.2"
1285+  dependencies:
1286+    mimic-fn: "npm:^2.1.0"
1287+  checksum: 10c0/ffcef6fbb2692c3c40749f31ea2e22677a876daea92959b8a80b521d95cca7a668c884d8b2045d1d8ee7d56796aa405c405462af112a1477594cc63531baeb8f
1288+  languageName: node
1289+  linkType: hard
1290+
1291+"onetime@npm:^6.0.0":
1292+  version: 6.0.0
1293+  resolution: "onetime@npm:6.0.0"
1294+  dependencies:
1295+    mimic-fn: "npm:^4.0.0"
1296+  checksum: 10c0/4eef7c6abfef697dd4479345a4100c382d73c149d2d56170a54a07418c50816937ad09500e1ed1e79d235989d073a9bade8557122aee24f0576ecde0f392bb6c
1297+  languageName: node
1298+  linkType: hard
1299+
1300 "optionator@npm:^0.9.3":
1301   version: 0.9.4
1302   resolution: "optionator@npm:0.9.4"
1303@@ -4094,6 +4920,15 @@ __metadata:
1304   languageName: node
1305   linkType: hard
1306 
1307+"p-limit@npm:^4.0.0":
1308+  version: 4.0.0
1309+  resolution: "p-limit@npm:4.0.0"
1310+  dependencies:
1311+    yocto-queue: "npm:^1.0.0"
1312+  checksum: 10c0/a56af34a77f8df2ff61ddfb29431044557fcbcb7642d5a3233143ebba805fc7306ac1d448de724352861cb99de934bc9ab74f0d16fe6a5460bdbdf938de875ad
1313+  languageName: node
1314+  linkType: hard
1315+
1316 "p-locate@npm:^5.0.0":
1317   version: 5.0.0
1318   resolution: "p-locate@npm:5.0.0"
1319@@ -4103,6 +4938,15 @@ __metadata:
1320   languageName: node
1321   linkType: hard
1322 
1323+"p-locate@npm:^6.0.0":
1324+  version: 6.0.0
1325+  resolution: "p-locate@npm:6.0.0"
1326+  dependencies:
1327+    p-limit: "npm:^4.0.0"
1328+  checksum: 10c0/d72fa2f41adce59c198270aa4d3c832536c87a1806e0f69dffb7c1a7ca998fb053915ca833d90f166a8c082d3859eabfed95f01698a3214c20df6bb8de046312
1329+  languageName: node
1330+  linkType: hard
1331+
1332 "p-map@npm:^4.0.0":
1333   version: 4.0.0
1334   resolution: "p-map@npm:4.0.0"
1335@@ -4135,13 +4979,32 @@ __metadata:
1336   languageName: node
1337   linkType: hard
1338 
1339+"parse-json@npm:^5.2.0":
1340+  version: 5.2.0
1341+  resolution: "parse-json@npm:5.2.0"
1342+  dependencies:
1343+    "@babel/code-frame": "npm:^7.0.0"
1344+    error-ex: "npm:^1.3.1"
1345+    json-parse-even-better-errors: "npm:^2.3.0"
1346+    lines-and-columns: "npm:^1.1.6"
1347+  checksum: 10c0/77947f2253005be7a12d858aedbafa09c9ae39eb4863adf330f7b416ca4f4a08132e453e08de2db46459256fb66afaac5ee758b44fe6541b7cdaf9d252e59585
1348+  languageName: node
1349+  linkType: hard
1350+
1351 "path-exists@npm:^4.0.0":
1352   version: 4.0.0
1353   resolution: "path-exists@npm:4.0.0"
1354   checksum: 10c0/8c0bd3f5238188197dc78dced15207a4716c51cc4e3624c44fc97acf69558f5ebb9a2afff486fe1b4ee148e0c133e96c5e11a9aa5c48a3006e3467da070e5e1b
1355   languageName: node
1356   linkType: hard
1357 
1358+"path-exists@npm:^5.0.0":
1359+  version: 5.0.0
1360+  resolution: "path-exists@npm:5.0.0"
1361+  checksum: 10c0/b170f3060b31604cde93eefdb7392b89d832dfbc1bed717c9718cbe0f230c1669b7e75f87e19901da2250b84d092989a0f9e44d2ef41deb09aa3ad28e691a40a
1362+  languageName: node
1363+  linkType: hard
1364+
1365 "path-is-absolute@npm:^1.0.0":
1366   version: 1.0.1
1367   resolution: "path-is-absolute@npm:1.0.1"
1368@@ -4156,6 +5019,13 @@ __metadata:
1369   languageName: node
1370   linkType: hard
1371 
1372+"path-key@npm:^4.0.0":
1373+  version: 4.0.0
1374+  resolution: "path-key@npm:4.0.0"
1375+  checksum: 10c0/794efeef32863a65ac312f3c0b0a99f921f3e827ff63afa5cb09a377e202c262b671f7b3832a4e64731003fa94af0263713962d317b9887bd1e0c48a342efba3
1376+  languageName: node
1377+  linkType: hard
1378+
1379 "path-parse@npm:^1.0.7":
1380   version: 1.0.7
1381   resolution: "path-parse@npm:1.0.7"
1382@@ -4194,6 +5064,15 @@ __metadata:
1383   languageName: node
1384   linkType: hard
1385 
1386+"pidtree@npm:~0.6.0":
1387+  version: 0.6.0
1388+  resolution: "pidtree@npm:0.6.0"
1389+  bin:
1390+    pidtree: bin/pidtree.js
1391+  checksum: 10c0/0829ec4e9209e230f74ebf4265f5ccc9ebfb488334b525cb13f86ff801dca44b362c41252cd43ae4d7653a10a5c6ab3be39d2c79064d6895e0d78dc50a5ed6e9
1392+  languageName: node
1393+  linkType: hard
1394+
1395 "pify@npm:^2.3.0":
1396   version: 2.3.0
1397   resolution: "pify@npm:2.3.0"
1398@@ -4608,13 +5487,34 @@ __metadata:
1399   languageName: node
1400   linkType: hard
1401 
1402+"require-directory@npm:^2.1.1":
1403+  version: 2.1.1
1404+  resolution: "require-directory@npm:2.1.1"
1405+  checksum: 10c0/83aa76a7bc1531f68d92c75a2ca2f54f1b01463cb566cf3fbc787d0de8be30c9dbc211d1d46be3497dac5785fe296f2dd11d531945ac29730643357978966e99
1406+  languageName: node
1407+  linkType: hard
1408+
1409+"require-from-string@npm:^2.0.2":
1410+  version: 2.0.2
1411+  resolution: "require-from-string@npm:2.0.2"
1412+  checksum: 10c0/aaa267e0c5b022fc5fd4eef49d8285086b15f2a1c54b28240fdf03599cbd9c26049fee3eab894f2e1f6ca65e513b030a7c264201e3f005601e80c49fb2937ce2
1413+  languageName: node
1414+  linkType: hard
1415+
1416 "resolve-from@npm:^4.0.0":
1417   version: 4.0.0
1418   resolution: "resolve-from@npm:4.0.0"
1419   checksum: 10c0/8408eec31a3112ef96e3746c37be7d64020cda07c03a920f5024e77290a218ea758b26ca9529fd7b1ad283947f34b2291c1c0f6aa0ed34acfdda9c6014c8d190
1420   languageName: node
1421   linkType: hard
1422 
1423+"resolve-from@npm:^5.0.0":
1424+  version: 5.0.0
1425+  resolution: "resolve-from@npm:5.0.0"
1426+  checksum: 10c0/b21cb7f1fb746de8107b9febab60095187781137fd803e6a59a76d421444b1531b641bba5857f5dc011974d8a5c635d61cec49e6bd3b7fc20e01f0fafc4efbf2
1427+  languageName: node
1428+  linkType: hard
1429+
1430 "resolve-pkg-maps@npm:^1.0.0":
1431   version: 1.0.0
1432   resolution: "resolve-pkg-maps@npm:1.0.0"
1433@@ -4674,6 +5574,16 @@ __metadata:
1434   languageName: node
1435   linkType: hard
1436 
1437+"restore-cursor@npm:^4.0.0":
1438+  version: 4.0.0
1439+  resolution: "restore-cursor@npm:4.0.0"
1440+  dependencies:
1441+    onetime: "npm:^5.1.0"
1442+    signal-exit: "npm:^3.0.2"
1443+  checksum: 10c0/6f7da8c5e422ac26aa38354870b1afac09963572cf2879443540449068cb43476e9cbccf6f8de3e0171e0d6f7f533c2bc1a0a008003c9a525bbc098e89041318
1444+  languageName: node
1445+  linkType: hard
1446+
1447 "retry@npm:^0.12.0":
1448   version: 0.12.0
1449   resolution: "retry@npm:0.12.0"
1450@@ -4688,6 +5598,13 @@ __metadata:
1451   languageName: node
1452   linkType: hard
1453 
1454+"rfdc@npm:^1.3.1":
1455+  version: 1.4.1
1456+  resolution: "rfdc@npm:1.4.1"
1457+  checksum: 10c0/4614e4292356cafade0b6031527eea9bc90f2372a22c012313be1dcc69a3b90c7338158b414539be863fa95bfcb2ddcd0587be696841af4e6679d85e62c060c7
1458+  languageName: node
1459+  linkType: hard
1460+
1461 "rimraf@npm:^3.0.2":
1462   version: 3.0.2
1463   resolution: "rimraf@npm:3.0.2"
1464@@ -4756,7 +5673,7 @@ __metadata:
1465   languageName: node
1466   linkType: hard
1467 
1468-"semver@npm:^7.3.5, semver@npm:^7.5.4":
1469+"semver@npm:^7.3.5, semver@npm:^7.5.4, semver@npm:^7.6.0":
1470   version: 7.6.2
1471   resolution: "semver@npm:7.6.2"
1472   bin:
1473@@ -4819,7 +5736,14 @@ __metadata:
1474   languageName: node
1475   linkType: hard
1476 
1477-"signal-exit@npm:^4.0.1":
1478+"signal-exit@npm:^3.0.2":
1479+  version: 3.0.7
1480+  resolution: "signal-exit@npm:3.0.7"
1481+  checksum: 10c0/25d272fa73e146048565e08f3309d5b942c1979a6f4a58a8c59d5fa299728e9c2fcd1a759ec870863b1fd38653670240cd420dad2ad9330c71f36608a6a1c912
1482+  languageName: node
1483+  linkType: hard
1484+
1485+"signal-exit@npm:^4.0.1, signal-exit@npm:^4.1.0":
1486   version: 4.1.0
1487   resolution: "signal-exit@npm:4.1.0"
1488   checksum: 10c0/41602dce540e46d599edba9d9860193398d135f7ff72cab629db5171516cfae628d21e7bfccde1bbfdf11c48726bc2a6d1a8fb8701125852fbfda7cf19c6aa83
1489@@ -4833,6 +5757,26 @@ __metadata:
1490   languageName: node
1491   linkType: hard
1492 
1493+"slice-ansi@npm:^5.0.0":
1494+  version: 5.0.0
1495+  resolution: "slice-ansi@npm:5.0.0"
1496+  dependencies:
1497+    ansi-styles: "npm:^6.0.0"
1498+    is-fullwidth-code-point: "npm:^4.0.0"
1499+  checksum: 10c0/2d4d40b2a9d5cf4e8caae3f698fe24ae31a4d778701724f578e984dcb485ec8c49f0c04dab59c401821e80fcdfe89cace9c66693b0244e40ec485d72e543914f
1500+  languageName: node
1501+  linkType: hard
1502+
1503+"slice-ansi@npm:^7.0.0":
1504+  version: 7.1.0
1505+  resolution: "slice-ansi@npm:7.1.0"
1506+  dependencies:
1507+    ansi-styles: "npm:^6.2.1"
1508+    is-fullwidth-code-point: "npm:^5.0.0"
1509+  checksum: 10c0/631c971d4abf56cf880f034d43fcc44ff883624867bf11ecbd538c47343911d734a4656d7bc02362b40b89d765652a7f935595441e519b59e2ad3f4d5d6fe7ca
1510+  languageName: node
1511+  linkType: hard
1512+
1513 "smart-buffer@npm:^4.2.0":
1514   version: 4.2.0
1515   resolution: "smart-buffer@npm:4.2.0"
1516@@ -4875,6 +5819,13 @@ __metadata:
1517   languageName: node
1518   linkType: hard
1519 
1520+"split2@npm:^4.0.0":
1521+  version: 4.2.0
1522+  resolution: "split2@npm:4.2.0"
1523+  checksum: 10c0/b292beb8ce9215f8c642bb68be6249c5a4c7f332fc8ecadae7be5cbdf1ea95addc95f0459ef2e7ad9d45fd1064698a097e4eb211c83e772b49bc0ee423e91534
1524+  languageName: node
1525+  linkType: hard
1526+
1527 "sprintf-js@npm:^1.1.3":
1528   version: 1.1.3
1529   resolution: "sprintf-js@npm:1.1.3"
1530@@ -4898,7 +5849,14 @@ __metadata:
1531   languageName: node
1532   linkType: hard
1533 
1534-"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0":
1535+"string-argv@npm:~0.3.2":
1536+  version: 0.3.2
1537+  resolution: "string-argv@npm:0.3.2"
1538+  checksum: 10c0/75c02a83759ad1722e040b86823909d9a2fc75d15dd71ec4b537c3560746e33b5f5a07f7332d1e3f88319909f82190843aa2f0a0d8c8d591ec08e93d5b8dec82
1539+  languageName: node
1540+  linkType: hard
1541+
1542+"string-width-cjs@npm:string-width@^4.2.0, string-width@npm:^4.1.0, string-width@npm:^4.2.0, string-width@npm:^4.2.3":
1543   version: 4.2.3
1544   resolution: "string-width@npm:4.2.3"
1545   dependencies:
1546@@ -4920,6 +5878,17 @@ __metadata:
1547   languageName: node
1548   linkType: hard
1549 
1550+"string-width@npm:^7.0.0":
1551+  version: 7.1.0
1552+  resolution: "string-width@npm:7.1.0"
1553+  dependencies:
1554+    emoji-regex: "npm:^10.3.0"
1555+    get-east-asian-width: "npm:^1.0.0"
1556+    strip-ansi: "npm:^7.1.0"
1557+  checksum: 10c0/68a99fbc3bd3d8eb42886ff38dce819767dee55f606f74dfa4687a07dfd21262745d9683df0aa53bf81a5dd47c13da921a501925b974bec66a7ddd634fef0634
1558+  languageName: node
1559+  linkType: hard
1560+
1561 "string.prototype.matchall@npm:^4.0.11":
1562   version: 4.0.11
1563   resolution: "string.prototype.matchall@npm:4.0.11"
1564@@ -4983,7 +5952,7 @@ __metadata:
1565   languageName: node
1566   linkType: hard
1567 
1568-"strip-ansi@npm:^7.0.1":
1569+"strip-ansi@npm:^7.0.1, strip-ansi@npm:^7.1.0":
1570   version: 7.1.0
1571   resolution: "strip-ansi@npm:7.1.0"
1572   dependencies:
1573@@ -4999,6 +5968,13 @@ __metadata:
1574   languageName: node
1575   linkType: hard
1576 
1577+"strip-final-newline@npm:^3.0.0":
1578+  version: 3.0.0
1579+  resolution: "strip-final-newline@npm:3.0.0"
1580+  checksum: 10c0/a771a17901427bac6293fd416db7577e2bc1c34a19d38351e9d5478c3c415f523f391003b42ed475f27e33a78233035df183525395f731d3bfb8cdcbd4da08ce
1581+  languageName: node
1582+  linkType: hard
1583+
1584 "strip-json-comments@npm:^3.1.1":
1585   version: 3.1.1
1586   resolution: "strip-json-comments@npm:3.1.1"
1587@@ -5040,6 +6016,15 @@ __metadata:
1588   languageName: node
1589   linkType: hard
1590 
1591+"supports-color@npm:^5.3.0":
1592+  version: 5.5.0
1593+  resolution: "supports-color@npm:5.5.0"
1594+  dependencies:
1595+    has-flag: "npm:^3.0.0"
1596+  checksum: 10c0/6ae5ff319bfbb021f8a86da8ea1f8db52fac8bd4d499492e30ec17095b58af11f0c55f8577390a749b1c4dde691b6a0315dab78f5f54c9b3d83f8fb5905c1c05
1597+  languageName: node
1598+  linkType: hard
1599+
1600 "supports-color@npm:^7.1.0":
1601   version: 7.2.0
1602   resolution: "supports-color@npm:7.2.0"
1603@@ -5128,6 +6113,13 @@ __metadata:
1604   languageName: node
1605   linkType: hard
1606 
1607+"text-extensions@npm:^2.0.0":
1608+  version: 2.4.0
1609+  resolution: "text-extensions@npm:2.4.0"
1610+  checksum: 10c0/6790e7ee72ad4d54f2e96c50a13e158bb57ce840dddc770e80960ed1550115c57bdc2cee45d5354d7b4f269636f5ca06aab4d6e0281556c841389aa837b23fcb
1611+  languageName: node
1612+  linkType: hard
1613+
1614 "text-table@npm:^0.2.0":
1615   version: 0.2.0
1616   resolution: "text-table@npm:0.2.0"
1617@@ -5153,6 +6145,13 @@ __metadata:
1618   languageName: node
1619   linkType: hard
1620 
1621+"through@npm:>=2.2.7 <3":
1622+  version: 2.3.8
1623+  resolution: "through@npm:2.3.8"
1624+  checksum: 10c0/4b09f3774099de0d4df26d95c5821a62faee32c7e96fb1f4ebd54a2d7c11c57fe88b0a0d49cf375de5fee5ae6bf4eb56dbbf29d07366864e2ee805349970d3cc
1625+  languageName: node
1626+  linkType: hard
1627+
1628 "to-regex-range@npm:^5.0.1":
1629   version: 5.0.1
1630   resolution: "to-regex-range@npm:5.0.1"
1631@@ -5304,6 +6303,13 @@ __metadata:
1632   languageName: node
1633   linkType: hard
1634 
1635+"unicorn-magic@npm:^0.1.0":
1636+  version: 0.1.0
1637+  resolution: "unicorn-magic@npm:0.1.0"
1638+  checksum: 10c0/e4ed0de05b0a05e735c7d8a2930881e5efcfc3ec897204d5d33e7e6247f4c31eac92e383a15d9a6bccb7319b4271ee4bea946e211bf14951fec6ff2cbbb66a92
1639+  languageName: node
1640+  linkType: hard
1641+
1642 "unique-filename@npm:^3.0.0":
1643   version: 3.0.0
1644   resolution: "unique-filename@npm:3.0.0"
1645@@ -5336,7 +6342,7 @@ __metadata:
1646   languageName: node
1647   linkType: hard
1648 
1649-"uri-js@npm:^4.2.2":
1650+"uri-js@npm:^4.2.2, uri-js@npm:^4.4.1":
1651   version: 4.4.1
1652   resolution: "uri-js@npm:4.4.1"
1653   dependencies:
1654@@ -5470,7 +6476,7 @@ __metadata:
1655   languageName: node
1656   linkType: hard
1657 
1658-"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
1659+"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0":
1660   version: 7.0.0
1661   resolution: "wrap-ansi@npm:7.0.0"
1662   dependencies:
1663@@ -5492,6 +6498,17 @@ __metadata:
1664   languageName: node
1665   linkType: hard
1666 
1667+"wrap-ansi@npm:^9.0.0":
1668+  version: 9.0.0
1669+  resolution: "wrap-ansi@npm:9.0.0"
1670+  dependencies:
1671+    ansi-styles: "npm:^6.2.1"
1672+    string-width: "npm:^7.0.0"
1673+    strip-ansi: "npm:^7.1.0"
1674+  checksum: 10c0/a139b818da9573677548dd463bd626a5a5286271211eb6e4e82f34a4f643191d74e6d4a9bb0a3c26ec90e6f904f679e0569674ac099ea12378a8b98e20706066
1675+  languageName: node
1676+  linkType: hard
1677+
1678 "wrappy@npm:1":
1679   version: 1.0.2
1680   resolution: "wrappy@npm:1.0.2"
1681@@ -5506,14 +6523,21 @@ __metadata:
1682   languageName: node
1683   linkType: hard
1684 
1685+"y18n@npm:^5.0.5":
1686+  version: 5.0.8
1687+  resolution: "y18n@npm:5.0.8"
1688+  checksum: 10c0/4df2842c36e468590c3691c894bc9cdbac41f520566e76e24f59401ba7d8b4811eb1e34524d57e54bc6d864bcb66baab7ffd9ca42bf1eda596618f9162b91249
1689+  languageName: node
1690+  linkType: hard
1691+
1692 "yallist@npm:^4.0.0":
1693   version: 4.0.0
1694   resolution: "yallist@npm:4.0.0"
1695   checksum: 10c0/2286b5e8dbfe22204ab66e2ef5cc9bbb1e55dfc873bbe0d568aa943eb255d131890dfd5bf243637273d31119b870f49c18fcde2c6ffbb7a7a092b870dc90625a
1696   languageName: node
1697   linkType: hard
1698 
1699-"yaml@npm:^2.3.4":
1700+"yaml@npm:^2.3.4, yaml@npm:~2.4.2":
1701   version: 2.4.5
1702   resolution: "yaml@npm:2.4.5"
1703   bin:
1704@@ -5522,9 +6546,38 @@ __metadata:
1705   languageName: node
1706   linkType: hard
1707 
1708+"yargs-parser@npm:^21.1.1":
1709+  version: 21.1.1
1710+  resolution: "yargs-parser@npm:21.1.1"
1711+  checksum: 10c0/f84b5e48169479d2f402239c59f084cfd1c3acc197a05c59b98bab067452e6b3ea46d4dd8ba2985ba7b3d32a343d77df0debd6b343e5dae3da2aab2cdf5886b2
1712+  languageName: node
1713+  linkType: hard
1714+
1715+"yargs@npm:^17.0.0":
1716+  version: 17.7.2
1717+  resolution: "yargs@npm:17.7.2"
1718+  dependencies:
1719+    cliui: "npm:^8.0.1"
1720+    escalade: "npm:^3.1.1"
1721+    get-caller-file: "npm:^2.0.5"
1722+    require-directory: "npm:^2.1.1"
1723+    string-width: "npm:^4.2.3"
1724+    y18n: "npm:^5.0.5"
1725+    yargs-parser: "npm:^21.1.1"
1726+  checksum: 10c0/ccd7e723e61ad5965fffbb791366db689572b80cca80e0f96aad968dfff4156cd7cd1ad18607afe1046d8241e6fb2d6c08bf7fa7bfb5eaec818735d8feac8f05
1727+  languageName: node
1728+  linkType: hard
1729+
1730 "yocto-queue@npm:^0.1.0":
1731   version: 0.1.0
1732   resolution: "yocto-queue@npm:0.1.0"
1733   checksum: 10c0/dceb44c28578b31641e13695d200d34ec4ab3966a5729814d5445b194933c096b7ced71494ce53a0e8820685d1d010df8b2422e5bf2cdea7e469d97ffbea306f
1734   languageName: node
1735   linkType: hard
1736+
1737+"yocto-queue@npm:^1.0.0":
1738+  version: 1.0.0
1739+  resolution: "yocto-queue@npm:1.0.0"
1740+  checksum: 10c0/856117aa15cf5103d2a2fb173f0ab4acb12b4b4d0ed3ab249fdbbf612e55d1cadfd27a6110940e24746fb0a78cf640b522cc8bca76f30a3b00b66e90cf82abe0
1741+  languageName: node
1742+  linkType: hard