diff --git a/.gitignore b/.gitignore index 07389397b..777a4ce87 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ .DS_Store dist node_modules +coverage packages/openapi-typescript/test/fixtures/cli-outputs/out diff --git a/docs/.vitepress/en.ts b/docs/.vitepress/en.ts index 2e7af7aca..8282e4ea0 100644 --- a/docs/.vitepress/en.ts +++ b/docs/.vitepress/en.ts @@ -78,6 +78,19 @@ export const en = defineConfig({ { text: "About", link: "/openapi-react-query/about" }, ], }, + { + text: "openapi-adonis", + items: [ + { text: "Getting Started", link: "/openapi-adonis/" }, + ], + }, + { + text: "openapi-decorators", + items: [ + { text: "Getting Started", link: "/openapi-decorators/" }, + { text: "Decorators", link: "/openapi-decorators/decorators" }, + ], + }, ], }, search: { diff --git a/docs/data/contributors.json b/docs/data/contributors.json index 644326ad7..ccaeada93 100644 --- a/docs/data/contributors.json +++ b/docs/data/contributors.json @@ -1 +1 @@ -{"openapi-typescript":[{"username":"drwpow","name":"Drew Powers","avatar":"https://avatars.githubusercontent.com/u/1369770?v=4","links":[{"icon":"github","link":"https://github.com/drwpow"}],"lastFetch":1722573008213},{"username":"psmyrdek","name":"Przemek Smyrdek","avatar":"https://avatars.githubusercontent.com/u/6187417?v=4","links":[{"icon":"github","link":"https://github.com/psmyrdek"}],"lastFetch":1722573008422},{"username":"enmand","name":"Dan Enman","avatar":"https://avatars.githubusercontent.com/u/432487?v=4","links":[{"icon":"github","link":"https://github.com/enmand"}],"lastFetch":1722573008545},{"username":"atlefren","name":"Atle Frenvik Sveen","avatar":"https://avatars.githubusercontent.com/u/1829927?v=4","links":[{"icon":"github","link":"https://github.com/atlefren"}],"lastFetch":1722573008666},{"username":"tpdewolf","name":"Tim de Wolf","avatar":"https://avatars.githubusercontent.com/u/4455209?v=4","links":[{"icon":"github","link":"https://github.com/tpdewolf"}],"lastFetch":1722573008782},{"username":"tombarton","name":"Tom Barton","avatar":"https://avatars.githubusercontent.com/u/6222711?v=4","links":[{"icon":"github","link":"https://github.com/tombarton"}],"lastFetch":1722573008907},{"username":"svnv","name":"Sven Nicolai Viig","avatar":"https://avatars.githubusercontent.com/u/1080888?v=4","links":[{"icon":"github","link":"https://github.com/svnv"}],"lastFetch":1722573009052},{"username":"sorin-davidoi","name":"Sorin Davidoi","avatar":"https://avatars.githubusercontent.com/u/2109702?v=4","links":[{"icon":"github","link":"https://github.com/sorin-davidoi"}],"lastFetch":1722573009219},{"username":"scvnathan","name":"Nathan Schneirov","avatar":"https://avatars.githubusercontent.com/u/73474?v=4","links":[{"icon":"github","link":"https://github.com/scvnathan"}],"lastFetch":1722573009321},{"username":"lbenie","name":"Lucien Bénié","avatar":"https://avatars.githubusercontent.com/u/7316046?v=4","links":[{"icon":"github","link":"https://github.com/lbenie"}],"lastFetch":1722573009455},{"username":"bokub","name":"Boris K","avatar":"https://avatars.githubusercontent.com/u/17952318?v=4","links":[{"icon":"github","link":"https://github.com/bokub"}],"lastFetch":1722573009559},{"username":"antonk52","name":"Anton Kastritskii","avatar":"https://avatars.githubusercontent.com/u/5817809?v=4","links":[{"icon":"github","link":"https://github.com/antonk52"}],"lastFetch":1722573009695},{"username":"tshelburne","name":"Tim Shelburne","avatar":"https://avatars.githubusercontent.com/u/1202267?v=4","links":[{"icon":"github","link":"https://github.com/tshelburne"}],"lastFetch":1722573009847},{"username":"typeofweb","name":"Michał Miszczyszyn","avatar":"https://avatars.githubusercontent.com/u/1338731?v=4","links":[{"icon":"github","link":"https://github.com/typeofweb"}],"lastFetch":1722573009953},{"username":"skh-","name":"Sam K Hall","avatar":"https://avatars.githubusercontent.com/u/1292598?v=4","links":[{"icon":"github","link":"https://github.com/skh-"}],"lastFetch":1722573010075},{"username":"BlooJeans","name":"Matt Jeanes","avatar":"https://avatars.githubusercontent.com/u/1751182?v=4","links":[{"icon":"github","link":"https://github.com/BlooJeans"}],"lastFetch":1722573010207},{"username":"selbekk","name":"Kristofer Giltvedt Selbekk","avatar":"https://avatars.githubusercontent.com/u/1307267?v=4","links":[{"icon":"github","link":"https://github.com/selbekk"}],"lastFetch":1722573010317},{"username":"Mause","name":"Elliana May","avatar":"https://avatars.githubusercontent.com/u/1405026?v=4","links":[{"icon":"github","link":"https://github.com/Mause"}],"lastFetch":1722573010571},{"username":"henhal","name":"Henrik Hall","avatar":"https://avatars.githubusercontent.com/u/9608258?v=4","links":[{"icon":"github","link":"https://github.com/henhal"}],"lastFetch":1722573010673},{"username":"gr2m","name":"Gregor Martynus","avatar":"https://avatars.githubusercontent.com/u/39992?v=4","links":[{"icon":"github","link":"https://github.com/gr2m"}],"lastFetch":1722573010774},{"username":"samdbmg","name":"Sam Mesterton-Gibbons","avatar":"https://avatars.githubusercontent.com/u/408983?v=4","links":[{"icon":"github","link":"https://github.com/samdbmg"}],"lastFetch":1722573010906},{"username":"rendall","name":"Rendall","avatar":"https://avatars.githubusercontent.com/u/293263?v=4","links":[{"icon":"github","link":"https://github.com/rendall"}],"lastFetch":1722573011062},{"username":"robertmassaioli","name":"Robert Massaioli","avatar":"https://avatars.githubusercontent.com/u/149178?v=4","links":[{"icon":"github","link":"https://github.com/robertmassaioli"}],"lastFetch":1722573011201},{"username":"jankuca","name":"Jan Kuča","avatar":"https://avatars.githubusercontent.com/u/367262?v=4","links":[{"icon":"github","link":"https://github.com/jankuca"}],"lastFetch":1722573011322},{"username":"th-m","name":"Thomas Valadez","avatar":"https://avatars.githubusercontent.com/u/13792029?v=4","links":[{"icon":"github","link":"https://github.com/th-m"}],"lastFetch":1722573011437},{"username":"asithade","name":"Asitha de Silva","avatar":"https://avatars.githubusercontent.com/u/3814354?v=4","links":[{"icon":"github","link":"https://github.com/asithade"}],"lastFetch":1722573011553},{"username":"misha-erm","name":"Misha","avatar":"https://avatars.githubusercontent.com/u/8783498?v=4","links":[{"icon":"github","link":"https://github.com/misha-erm"}],"lastFetch":1722573011734},{"username":"radist2s","name":"Alex Batalov","avatar":"https://avatars.githubusercontent.com/u/725645?v=4","links":[{"icon":"github","link":"https://github.com/radist2s"}],"lastFetch":1722573011853},{"username":"FedeBev","name":"Federico Bevione","avatar":"https://avatars.githubusercontent.com/u/22151395?v=4","links":[{"icon":"github","link":"https://github.com/FedeBev"}],"lastFetch":1722573011979},{"username":"yamacent","name":"Daisuke Yamamoto","avatar":"https://avatars.githubusercontent.com/u/8544439?v=4","links":[{"icon":"github","link":"https://github.com/yamacent"}],"lastFetch":1722573012203},{"username":"dnalborczyk","name":null,"avatar":"https://avatars.githubusercontent.com/u/2903325?v=4","links":[{"icon":"github","link":"https://github.com/dnalborczyk"}],"lastFetch":1722573012319},{"username":"FabioWanner","name":null,"avatar":"https://avatars.githubusercontent.com/u/46821078?v=4","links":[{"icon":"github","link":"https://github.com/FabioWanner"}],"lastFetch":1722573012431},{"username":"ashsmith","name":"Ash Smith","avatar":"https://avatars.githubusercontent.com/u/1086841?v=4","links":[{"icon":"github","link":"https://github.com/ashsmith"}],"lastFetch":1722573012543},{"username":"mehalter","name":"Micah Halter","avatar":"https://avatars.githubusercontent.com/u/1591837?v=4","links":[{"icon":"github","link":"https://github.com/mehalter"}],"lastFetch":1722573012671},{"username":"Chrg1001","name":"chrg1001","avatar":"https://avatars.githubusercontent.com/u/40189653?v=4","links":[{"icon":"github","link":"https://github.com/Chrg1001"}],"lastFetch":1722573012939},{"username":"sharmarajdaksh","name":"Dakshraj Sharma","avatar":"https://avatars.githubusercontent.com/u/33689528?v=4","links":[{"icon":"github","link":"https://github.com/sharmarajdaksh"}],"lastFetch":1722573013061},{"username":"shuluster","name":"Shaosu Liu","avatar":"https://avatars.githubusercontent.com/u/1707910?v=4","links":[{"icon":"github","link":"https://github.com/shuluster"}],"lastFetch":1722573013177},{"username":"FDiskas","name":"Vytenis","avatar":"https://avatars.githubusercontent.com/u/468006?v=4","links":[{"icon":"github","link":"https://github.com/FDiskas"}],"lastFetch":1722573013322},{"username":"ericzorn93","name":"Eric Zorn","avatar":"https://avatars.githubusercontent.com/u/22532542?v=4","links":[{"icon":"github","link":"https://github.com/ericzorn93"}],"lastFetch":1722573013501},{"username":"mbelsky","name":"Max Belsky","avatar":"https://avatars.githubusercontent.com/u/3923527?v=4","links":[{"icon":"github","link":"https://github.com/mbelsky"}],"lastFetch":1722573013608},{"username":"techbech","name":"Peter Bech","avatar":"https://avatars.githubusercontent.com/u/1520592?v=4","links":[{"icon":"github","link":"https://github.com/techbech"}],"lastFetch":1722573013722},{"username":"rustyconover","name":"Rusty Conover","avatar":"https://avatars.githubusercontent.com/u/731941?v=4","links":[{"icon":"github","link":"https://github.com/rustyconover"}],"lastFetch":1722573013837},{"username":"bunkscene","name":"Dave Carlson","avatar":"https://avatars.githubusercontent.com/u/2693678?v=4","links":[{"icon":"github","link":"https://github.com/bunkscene"}],"lastFetch":1722573013944},{"username":"ottomated","name":null,"avatar":"https://avatars.githubusercontent.com/u/31470743?v=4","links":[{"icon":"github","link":"https://github.com/ottomated"}],"lastFetch":1722573014062},{"username":"sadfsdfdsa","name":"Artem Shuvaev","avatar":"https://avatars.githubusercontent.com/u/28733669?v=4","links":[{"icon":"github","link":"https://github.com/sadfsdfdsa"}],"lastFetch":1722573014174},{"username":"ajaishankar","name":null,"avatar":"https://avatars.githubusercontent.com/u/328008?v=4","links":[{"icon":"github","link":"https://github.com/ajaishankar"}],"lastFetch":1722573014285},{"username":"dominikdosoudil","name":"Dominik Dosoudil","avatar":"https://avatars.githubusercontent.com/u/15929942?v=4","links":[{"icon":"github","link":"https://github.com/dominikdosoudil"}],"lastFetch":1722573014398},{"username":"kgtkr","name":"kgtkr","avatar":"https://avatars.githubusercontent.com/u/17868838?v=4","links":[{"icon":"github","link":"https://github.com/kgtkr"}],"lastFetch":1722573014504},{"username":"berzi","name":null,"avatar":"https://avatars.githubusercontent.com/u/32619123?v=4","links":[{"icon":"github","link":"https://github.com/berzi"}],"lastFetch":1722573014630},{"username":"PhilipTrauner","name":"Philip Trauner","avatar":"https://avatars.githubusercontent.com/u/9287847?v=4","links":[{"icon":"github","link":"https://github.com/PhilipTrauner"}],"lastFetch":1722573014734},{"username":"Powell-v2","name":"Pavel Yermolin","avatar":"https://avatars.githubusercontent.com/u/25308326?v=4","links":[{"icon":"github","link":"https://github.com/Powell-v2"}],"lastFetch":1722573014887},{"username":"duncanbeevers","name":"Duncan Beevers","avatar":"https://avatars.githubusercontent.com/u/7367?v=4","links":[{"icon":"github","link":"https://github.com/duncanbeevers"}],"lastFetch":1722573015007},{"username":"tkukushkin","name":"Timofei Kukushkin","avatar":"https://avatars.githubusercontent.com/u/1482516?v=4","links":[{"icon":"github","link":"https://github.com/tkukushkin"}],"lastFetch":1722573015128},{"username":"Semigradsky","name":"Dmitry Semigradsky","avatar":"https://avatars.githubusercontent.com/u/1198848?v=4","links":[{"icon":"github","link":"https://github.com/Semigradsky"}],"lastFetch":1722573015261},{"username":"MrLeebo","name":"Jeremy Liberman","avatar":"https://avatars.githubusercontent.com/u/2754163?v=4","links":[{"icon":"github","link":"https://github.com/MrLeebo"}],"lastFetch":1722573015371},{"username":"axelhzf","name":"Axel Hernández Ferrera","avatar":"https://avatars.githubusercontent.com/u/175627?v=4","links":[{"icon":"github","link":"https://github.com/axelhzf"}],"lastFetch":1722573015482},{"username":"imagoiq","name":"Loïc Fürhoff","avatar":"https://avatars.githubusercontent.com/u/12294151?v=4","links":[{"icon":"github","link":"https://github.com/imagoiq"}],"lastFetch":1722573015595},{"username":"BTMPL","name":"Bartosz Szczeciński","avatar":"https://avatars.githubusercontent.com/u/247153?v=4","links":[{"icon":"github","link":"https://github.com/BTMPL"}],"lastFetch":1722573015745},{"username":"HiiiiD","name":"Marco Salomone","avatar":"https://avatars.githubusercontent.com/u/61231210?v=4","links":[{"icon":"github","link":"https://github.com/HiiiiD"}],"lastFetch":1722573015860},{"username":"yacinehmito","name":"Yacine Hmito","avatar":"https://avatars.githubusercontent.com/u/6893840?v=4","links":[{"icon":"github","link":"https://github.com/yacinehmito"}],"lastFetch":1722573015982},{"username":"sajadtorkamani","name":"Sajad Torkamani","avatar":"https://avatars.githubusercontent.com/u/9380313?v=4","links":[{"icon":"github","link":"https://github.com/sajadtorkamani"}],"lastFetch":1722573016109},{"username":"mvdbeek","name":"Marius van den Beek","avatar":"https://avatars.githubusercontent.com/u/6804901?v=4","links":[{"icon":"github","link":"https://github.com/mvdbeek"}],"lastFetch":1722573016223},{"username":"sgrimm","name":"Steven Grimm","avatar":"https://avatars.githubusercontent.com/u/1248649?v=4","links":[{"icon":"github","link":"https://github.com/sgrimm"}],"lastFetch":1722573016333},{"username":"Swiftwork","name":"Erik Hughes","avatar":"https://avatars.githubusercontent.com/u/455178?v=4","links":[{"icon":"github","link":"https://github.com/Swiftwork"}],"lastFetch":1722573016449},{"username":"mtth","name":"Matthieu Monsch","avatar":"https://avatars.githubusercontent.com/u/1216372?v=4","links":[{"icon":"github","link":"https://github.com/mtth"}],"lastFetch":1722573016566},{"username":"mitchell-merry","name":"Mitchell Merry","avatar":"https://avatars.githubusercontent.com/u/8567231?v=4","links":[{"icon":"github","link":"https://github.com/mitchell-merry"}],"lastFetch":1722573016684},{"username":"qnp","name":"François Risoud","avatar":"https://avatars.githubusercontent.com/u/6012554?v=4","links":[{"icon":"github","link":"https://github.com/qnp"}],"lastFetch":1722573016852},{"username":"shoffmeister","name":null,"avatar":"https://avatars.githubusercontent.com/u/3868036?v=4","links":[{"icon":"github","link":"https://github.com/shoffmeister"}],"lastFetch":1722573016959},{"username":"liangskyli","name":"liangsky","avatar":"https://avatars.githubusercontent.com/u/31531283?v=4","links":[{"icon":"github","link":"https://github.com/liangskyli"}],"lastFetch":1722573017096},{"username":"happycollision","name":"Don Denton","avatar":"https://avatars.githubusercontent.com/u/3663628?v=4","links":[{"icon":"github","link":"https://github.com/happycollision"}],"lastFetch":1722573017211},{"username":"ysmood","name":"Yad Smood","avatar":"https://avatars.githubusercontent.com/u/1415488?v=4","links":[{"icon":"github","link":"https://github.com/ysmood"}],"lastFetch":1722573017390},{"username":"barakalon","name":"barak","avatar":"https://avatars.githubusercontent.com/u/12398927?v=4","links":[{"icon":"github","link":"https://github.com/barakalon"}],"lastFetch":1722573017515},{"username":"horaklukas","name":"Lukáš Horák","avatar":"https://avatars.githubusercontent.com/u/996088?v=4","links":[{"icon":"github","link":"https://github.com/horaklukas"}],"lastFetch":1722573017667},{"username":"pvanagtmaal","name":null,"avatar":"https://avatars.githubusercontent.com/u/5946464?v=4","links":[{"icon":"github","link":"https://github.com/pvanagtmaal"}],"lastFetch":1722573017785},{"username":"toomuchdesign","name":"Andrea Carraro","avatar":"https://avatars.githubusercontent.com/u/4573549?v=4","links":[{"icon":"github","link":"https://github.com/toomuchdesign"}],"lastFetch":1722573017892},{"username":"psychedelicious","name":"psychedelicious","avatar":"https://avatars.githubusercontent.com/u/4822129?v=4","links":[{"icon":"github","link":"https://github.com/psychedelicious"}],"lastFetch":1722573018006},{"username":"tkrotoff","name":"Tanguy Krotoff","avatar":"https://avatars.githubusercontent.com/u/643434?v=4","links":[{"icon":"github","link":"https://github.com/tkrotoff"}],"lastFetch":1722573018138},{"username":"pimveldhuisen","name":"Pim Veldhuisen","avatar":"https://avatars.githubusercontent.com/u/3043834?v=4","links":[{"icon":"github","link":"https://github.com/pimveldhuisen"}],"lastFetch":1722573018252},{"username":"asvishnyakov","name":"Aleksandr Vishniakov","avatar":"https://avatars.githubusercontent.com/u/6369252?v=4","links":[{"icon":"github","link":"https://github.com/asvishnyakov"}],"lastFetch":1722573018360},{"username":"SchabaJo","name":null,"avatar":"https://avatars.githubusercontent.com/u/138689813?v=4","links":[{"icon":"github","link":"https://github.com/SchabaJo"}],"lastFetch":1722573018465},{"username":"AhsanFazal","name":"Ahsan Fazal","avatar":"https://avatars.githubusercontent.com/u/7458046?v=4","links":[{"icon":"github","link":"https://github.com/AhsanFazal"}],"lastFetch":1722573018591},{"username":"ElForastero","name":"Eugene Dzhumak","avatar":"https://avatars.githubusercontent.com/u/5102818?v=4","links":[{"icon":"github","link":"https://github.com/ElForastero"}],"lastFetch":1722573018720},{"username":"msgadi","name":"Mohammed Gadi","avatar":"https://avatars.githubusercontent.com/u/9037086?v=4","links":[{"icon":"github","link":"https://github.com/msgadi"}],"lastFetch":1722573018835},{"username":"muttonchop","name":"Adam K","avatar":"https://avatars.githubusercontent.com/u/1037657?v=4","links":[{"icon":"github","link":"https://github.com/muttonchop"}],"lastFetch":1722573018956},{"username":"christoph-fricke","name":"Christoph Fricke","avatar":"https://avatars.githubusercontent.com/u/23103835?v=4","links":[{"icon":"github","link":"https://github.com/christoph-fricke"}],"lastFetch":1722573019078},{"username":"JorrinKievit","name":"Jorrin","avatar":"https://avatars.githubusercontent.com/u/43169049?v=4","links":[{"icon":"github","link":"https://github.com/JorrinKievit"}],"lastFetch":1722573019208},{"username":"WickyNilliams","name":"Nick Williams","avatar":"https://avatars.githubusercontent.com/u/1091390?v=4","links":[{"icon":"github","link":"https://github.com/WickyNilliams"}],"lastFetch":1722573019317},{"username":"hrsh7th","name":"hrsh7th","avatar":"https://avatars.githubusercontent.com/u/629908?v=4","links":[{"icon":"github","link":"https://github.com/hrsh7th"}],"lastFetch":1722573019435},{"username":"davidleger95","name":"David Leger","avatar":"https://avatars.githubusercontent.com/u/10498708?v=4","links":[{"icon":"github","link":"https://github.com/davidleger95"}],"lastFetch":1722573019584},{"username":"phk422","name":"Hongkun Peng","avatar":"https://avatars.githubusercontent.com/u/59734322?v=4","links":[{"icon":"github","link":"https://github.com/phk422"}],"lastFetch":1722573019690},{"username":"mzronek","name":"Matthias Zronek","avatar":"https://avatars.githubusercontent.com/u/3847700?v=4","links":[{"icon":"github","link":"https://github.com/mzronek"}],"lastFetch":1722573019933},{"username":"raurfang","name":"Łukasz Wiśniewski","avatar":"https://avatars.githubusercontent.com/u/867241?v=4","links":[{"icon":"github","link":"https://github.com/raurfang"}],"lastFetch":1722573020050},{"username":"JeanRemiDelteil","name":"Jean-Rémi Delteil","avatar":"https://avatars.githubusercontent.com/u/9743907?v=4","links":[{"icon":"github","link":"https://github.com/JeanRemiDelteil"}],"lastFetch":1722573020163},{"username":"TzviPM","name":"Tzvi Melamed","avatar":"https://avatars.githubusercontent.com/u/1950680?v=4","links":[{"icon":"github","link":"https://github.com/TzviPM"}],"lastFetch":1722573020279},{"username":"LucaSchwan","name":"ehrenschwan","avatar":"https://avatars.githubusercontent.com/u/25820532?v=4","links":[{"icon":"github","link":"https://github.com/LucaSchwan"}],"lastFetch":1722573020485},{"username":"nzapponi","name":"Niccolo Zapponi","avatar":"https://avatars.githubusercontent.com/u/20582065?v=4","links":[{"icon":"github","link":"https://github.com/nzapponi"}],"lastFetch":1722573020631},{"username":"luchsamapparat","name":"Marvin Luchs","avatar":"https://avatars.githubusercontent.com/u/875017?v=4","links":[{"icon":"github","link":"https://github.com/luchsamapparat"}],"lastFetch":1722573020758},{"username":"nmacmunn","name":"Neil MacMunn","avatar":"https://avatars.githubusercontent.com/u/849964?v=4","links":[{"icon":"github","link":"https://github.com/nmacmunn"}],"lastFetch":1722573020904}],"openapi-fetch":[{"username":"drwpow","name":"Drew Powers","avatar":"https://avatars.githubusercontent.com/u/1369770?v=4","links":[{"icon":"github","link":"https://github.com/drwpow"}],"lastFetch":1722573008218},{"username":"fergusean","name":null,"avatar":"https://avatars.githubusercontent.com/u/1029297?v=4","links":[{"icon":"github","link":"https://github.com/fergusean"}],"lastFetch":1722573008418},{"username":"shinzui","name":"Nadeem Bitar","avatar":"https://avatars.githubusercontent.com/u/519?v=4","links":[{"icon":"github","link":"https://github.com/shinzui"}],"lastFetch":1722573008602},{"username":"ezpuzz","name":"Emory Petermann","avatar":"https://avatars.githubusercontent.com/u/672182?v=4","links":[{"icon":"github","link":"https://github.com/ezpuzz"}],"lastFetch":1722573008711},{"username":"KotoriK","name":null,"avatar":"https://avatars.githubusercontent.com/u/52659125?v=4","links":[{"icon":"github","link":"https://github.com/KotoriK"}],"lastFetch":1722573008823},{"username":"fletchertyler914","name":"Tyler Fletcher","avatar":"https://avatars.githubusercontent.com/u/3344498?v=4","links":[{"icon":"github","link":"https://github.com/fletchertyler914"}],"lastFetch":1722573008932},{"username":"nholik","name":"Nicklos Holik","avatar":"https://avatars.githubusercontent.com/u/2022214?v=4","links":[{"icon":"github","link":"https://github.com/nholik"}],"lastFetch":1722573009034},{"username":"roj1512","name":null,"avatar":"https://avatars.githubusercontent.com/u/175297870?v=4","links":[{"icon":"github","link":"https://github.com/roj1512"}],"lastFetch":1722573009217},{"username":"nickcaballero","name":"Nick Caballero","avatar":"https://avatars.githubusercontent.com/u/355976?v=4","links":[{"icon":"github","link":"https://github.com/nickcaballero"}],"lastFetch":1722573009336},{"username":"hd-o","name":"Hadrian de Oliveira","avatar":"https://avatars.githubusercontent.com/u/58871222?v=4","links":[{"icon":"github","link":"https://github.com/hd-o"}],"lastFetch":1722573009453},{"username":"kecrily","name":"Percy Ma","avatar":"https://avatars.githubusercontent.com/u/45708948?v=4","links":[{"icon":"github","link":"https://github.com/kecrily"}],"lastFetch":1722573009572},{"username":"psychedelicious","name":"psychedelicious","avatar":"https://avatars.githubusercontent.com/u/4822129?v=4","links":[{"icon":"github","link":"https://github.com/psychedelicious"}],"lastFetch":1722573009700},{"username":"muttonchop","name":"Adam K","avatar":"https://avatars.githubusercontent.com/u/1037657?v=4","links":[{"icon":"github","link":"https://github.com/muttonchop"}],"lastFetch":1722573009855},{"username":"marcomuser","name":"Marco Muser","avatar":"https://avatars.githubusercontent.com/u/64737396?v=4","links":[{"icon":"github","link":"https://github.com/marcomuser"}],"lastFetch":1722573009985},{"username":"HugeLetters","name":"Evgenii Perminov","avatar":"https://avatars.githubusercontent.com/u/119697239?v=4","links":[{"icon":"github","link":"https://github.com/HugeLetters"}],"lastFetch":1722573010093},{"username":"Fumaz","name":"alex","avatar":"https://avatars.githubusercontent.com/u/45318608?v=4","links":[{"icon":"github","link":"https://github.com/Fumaz"}],"lastFetch":1722573010200},{"username":"darwish","name":"Mike Darwish","avatar":"https://avatars.githubusercontent.com/u/292570?v=4","links":[{"icon":"github","link":"https://github.com/darwish"}],"lastFetch":1722573010319},{"username":"kaechele","name":"Felix Kaechele","avatar":"https://avatars.githubusercontent.com/u/454490?v=4","links":[{"icon":"github","link":"https://github.com/kaechele"}],"lastFetch":1722573010569},{"username":"phk422","name":"Hongkun Peng","avatar":"https://avatars.githubusercontent.com/u/59734322?v=4","links":[{"icon":"github","link":"https://github.com/phk422"}],"lastFetch":1722573010687},{"username":"mikestopcontinues","name":"Mike Stop Continues","avatar":"https://avatars.githubusercontent.com/u/150434?v=4","links":[{"icon":"github","link":"https://github.com/mikestopcontinues"}],"lastFetch":1722573010799},{"username":"JE-Lee","name":"maurice","avatar":"https://avatars.githubusercontent.com/u/19794813?v=4","links":[{"icon":"github","link":"https://github.com/JE-Lee"}],"lastFetch":1722573010909},{"username":"vipentti","name":"Ville Penttinen","avatar":"https://avatars.githubusercontent.com/u/4726680?v=4","links":[{"icon":"github","link":"https://github.com/vipentti"}],"lastFetch":1722573011066},{"username":"armandabric","name":"Armand Abric","avatar":"https://avatars.githubusercontent.com/u/95120?v=4","links":[{"icon":"github","link":"https://github.com/armandabric"}],"lastFetch":1722573011174},{"username":"illright","name":"Lev Chelyadinov","avatar":"https://avatars.githubusercontent.com/u/15035286?v=4","links":[{"icon":"github","link":"https://github.com/illright"}],"lastFetch":1722573011279}],"openapi-react-query":[{"username":"drwpow","name":"Drew Powers","avatar":"https://avatars.githubusercontent.com/u/1369770?v=4","links":[{"icon":"github","link":"https://github.com/drwpow"}],"lastFetch":1722573008219},{"username":"kerwanp","name":"Martin Paucot","avatar":"https://avatars.githubusercontent.com/u/36955373?v=4","links":[{"icon":"github","link":"https://github.com/kerwanp"}],"lastFetch":1722573008420}]} \ No newline at end of file +{"openapi-typescript":[{"username":"drwpow","name":"Drew Powers","avatar":"https://avatars.githubusercontent.com/u/1369770?v=4","links":[{"icon":"github","link":"https://github.com/drwpow"}],"lastFetch":1724015541414},{"username":"psmyrdek","name":"Przemek Smyrdek","avatar":"https://avatars.githubusercontent.com/u/6187417?v=4","links":[{"icon":"github","link":"https://github.com/psmyrdek"}],"lastFetch":1724015541567},{"username":"enmand","name":"Dan Enman","avatar":"https://avatars.githubusercontent.com/u/432487?v=4","links":[{"icon":"github","link":"https://github.com/enmand"}],"lastFetch":1724015541749},{"username":"atlefren","name":"Atle Frenvik Sveen","avatar":"https://avatars.githubusercontent.com/u/1829927?v=4","links":[{"icon":"github","link":"https://github.com/atlefren"}],"lastFetch":1724015541906},{"username":"tpdewolf","name":"Tim de Wolf","avatar":"https://avatars.githubusercontent.com/u/4455209?v=4","links":[{"icon":"github","link":"https://github.com/tpdewolf"}],"lastFetch":1724015542067},{"username":"tombarton","name":"Tom Barton","avatar":"https://avatars.githubusercontent.com/u/6222711?v=4","links":[{"icon":"github","link":"https://github.com/tombarton"}],"lastFetch":1724015542214},{"username":"svnv","name":"Sven Nicolai Viig","avatar":"https://avatars.githubusercontent.com/u/1080888?v=4","links":[{"icon":"github","link":"https://github.com/svnv"}],"lastFetch":1724015542374},{"username":"sorin-davidoi","name":"Sorin Davidoi","avatar":"https://avatars.githubusercontent.com/u/2109702?v=4","links":[{"icon":"github","link":"https://github.com/sorin-davidoi"}],"lastFetch":1724015542542},{"username":"scvnathan","name":"Nathan Schneirov","avatar":"https://avatars.githubusercontent.com/u/73474?v=4","links":[{"icon":"github","link":"https://github.com/scvnathan"}],"lastFetch":1724015542688},{"username":"lbenie","name":"Lucien Bénié","avatar":"https://avatars.githubusercontent.com/u/7316046?v=4","links":[{"icon":"github","link":"https://github.com/lbenie"}],"lastFetch":1724015542870},{"username":"bokub","name":"Boris K","avatar":"https://avatars.githubusercontent.com/u/17952318?v=4","links":[{"icon":"github","link":"https://github.com/bokub"}],"lastFetch":1724015543036},{"username":"antonk52","name":"Anton Kastritskii","avatar":"https://avatars.githubusercontent.com/u/5817809?v=4","links":[{"icon":"github","link":"https://github.com/antonk52"}],"lastFetch":1724015543208},{"username":"tshelburne","name":"Tim Shelburne","avatar":"https://avatars.githubusercontent.com/u/1202267?v=4","links":[{"icon":"github","link":"https://github.com/tshelburne"}],"lastFetch":1724015543367},{"username":"typeofweb","name":"Michał Miszczyszyn","avatar":"https://avatars.githubusercontent.com/u/1338731?v=4","links":[{"icon":"github","link":"https://github.com/typeofweb"}],"lastFetch":1724015543507},{"username":"skh-","name":"Sam K Hall","avatar":"https://avatars.githubusercontent.com/u/1292598?v=4","links":[{"icon":"github","link":"https://github.com/skh-"}],"lastFetch":1724015543665},{"username":"BlooJeans","name":"Matt Jeanes","avatar":"https://avatars.githubusercontent.com/u/1751182?v=4","links":[{"icon":"github","link":"https://github.com/BlooJeans"}],"lastFetch":1724015543819},{"username":"selbekk","name":"Kristofer Giltvedt Selbekk","avatar":"https://avatars.githubusercontent.com/u/1307267?v=4","links":[{"icon":"github","link":"https://github.com/selbekk"}],"lastFetch":1724015543967},{"username":"Mause","name":"Elliana May","avatar":"https://avatars.githubusercontent.com/u/1405026?v=4","links":[{"icon":"github","link":"https://github.com/Mause"}],"lastFetch":1724015544147},{"username":"henhal","name":"Henrik Hall","avatar":"https://avatars.githubusercontent.com/u/9608258?v=4","links":[{"icon":"github","link":"https://github.com/henhal"}],"lastFetch":1724015544295},{"username":"gr2m","name":"Gregor Martynus","avatar":"https://avatars.githubusercontent.com/u/39992?v=4","links":[{"icon":"github","link":"https://github.com/gr2m"}],"lastFetch":1724015544441},{"username":"samdbmg","name":"Sam Mesterton-Gibbons","avatar":"https://avatars.githubusercontent.com/u/408983?v=4","links":[{"icon":"github","link":"https://github.com/samdbmg"}],"lastFetch":1724015544589},{"username":"rendall","name":"Rendall","avatar":"https://avatars.githubusercontent.com/u/293263?v=4","links":[{"icon":"github","link":"https://github.com/rendall"}],"lastFetch":1724015544754},{"username":"robertmassaioli","name":"Robert Massaioli","avatar":"https://avatars.githubusercontent.com/u/149178?v=4","links":[{"icon":"github","link":"https://github.com/robertmassaioli"}],"lastFetch":1724015544910},{"username":"jankuca","name":"Jan Kuča","avatar":"https://avatars.githubusercontent.com/u/367262?v=4","links":[{"icon":"github","link":"https://github.com/jankuca"}],"lastFetch":1724015545048},{"username":"th-m","name":"Thomas Valadez","avatar":"https://avatars.githubusercontent.com/u/13792029?v=4","links":[{"icon":"github","link":"https://github.com/th-m"}],"lastFetch":1724015545202},{"username":"asithade","name":"Asitha de Silva","avatar":"https://avatars.githubusercontent.com/u/3814354?v=4","links":[{"icon":"github","link":"https://github.com/asithade"}],"lastFetch":1724015545354},{"username":"misha-erm","name":"Misha","avatar":"https://avatars.githubusercontent.com/u/8783498?v=4","links":[{"icon":"github","link":"https://github.com/misha-erm"}],"lastFetch":1724015545507},{"username":"radist2s","name":"Alex Batalov","avatar":"https://avatars.githubusercontent.com/u/725645?v=4","links":[{"icon":"github","link":"https://github.com/radist2s"}],"lastFetch":1724015545665},{"username":"FedeBev","name":"Federico Bevione","avatar":"https://avatars.githubusercontent.com/u/22151395?v=4","links":[{"icon":"github","link":"https://github.com/FedeBev"}],"lastFetch":1724015545820},{"username":"yamacent","name":"Daisuke Yamamoto","avatar":"https://avatars.githubusercontent.com/u/8544439?v=4","links":[{"icon":"github","link":"https://github.com/yamacent"}],"lastFetch":1724015545982},{"username":"dnalborczyk","name":null,"avatar":"https://avatars.githubusercontent.com/u/2903325?v=4","links":[{"icon":"github","link":"https://github.com/dnalborczyk"}],"lastFetch":1724015546184},{"username":"FabioWanner","name":null,"avatar":"https://avatars.githubusercontent.com/u/46821078?v=4","links":[{"icon":"github","link":"https://github.com/FabioWanner"}],"lastFetch":1724015546326},{"username":"ashsmith","name":"Ash Smith","avatar":"https://avatars.githubusercontent.com/u/1086841?v=4","links":[{"icon":"github","link":"https://github.com/ashsmith"}],"lastFetch":1724015546493},{"username":"mehalter","name":"Micah Halter","avatar":"https://avatars.githubusercontent.com/u/1591837?v=4","links":[{"icon":"github","link":"https://github.com/mehalter"}],"lastFetch":1724015546652},{"username":"Chrg1001","name":"chrg1001","avatar":"https://avatars.githubusercontent.com/u/40189653?v=4","links":[{"icon":"github","link":"https://github.com/Chrg1001"}],"lastFetch":1724015546808},{"username":"sharmarajdaksh","name":"Dakshraj Sharma","avatar":"https://avatars.githubusercontent.com/u/33689528?v=4","links":[{"icon":"github","link":"https://github.com/sharmarajdaksh"}],"lastFetch":1724015546965},{"username":"shuluster","name":"Shaosu Liu","avatar":"https://avatars.githubusercontent.com/u/1707910?v=4","links":[{"icon":"github","link":"https://github.com/shuluster"}],"lastFetch":1724015547111},{"username":"FDiskas","name":"Vytenis","avatar":"https://avatars.githubusercontent.com/u/468006?v=4","links":[{"icon":"github","link":"https://github.com/FDiskas"}],"lastFetch":1724015547261},{"username":"ericzorn93","name":"Eric Zorn","avatar":"https://avatars.githubusercontent.com/u/22532542?v=4","links":[{"icon":"github","link":"https://github.com/ericzorn93"}],"lastFetch":1724015547422},{"username":"mbelsky","name":"Max Belsky","avatar":"https://avatars.githubusercontent.com/u/3923527?v=4","links":[{"icon":"github","link":"https://github.com/mbelsky"}],"lastFetch":1724015547595},{"username":"techbech","name":"Peter Bech","avatar":"https://avatars.githubusercontent.com/u/1520592?v=4","links":[{"icon":"github","link":"https://github.com/techbech"}],"lastFetch":1724015547765},{"username":"rustyconover","name":"Rusty Conover","avatar":"https://avatars.githubusercontent.com/u/731941?v=4","links":[{"icon":"github","link":"https://github.com/rustyconover"}],"lastFetch":1724015547916},{"username":"bunkscene","name":"Dave Carlson","avatar":"https://avatars.githubusercontent.com/u/2693678?v=4","links":[{"icon":"github","link":"https://github.com/bunkscene"}],"lastFetch":1724015548071},{"username":"ottomated","name":null,"avatar":"https://avatars.githubusercontent.com/u/31470743?v=4","links":[{"icon":"github","link":"https://github.com/ottomated"}],"lastFetch":1724015548223},{"username":"sadfsdfdsa","name":"Artem Shuvaev","avatar":"https://avatars.githubusercontent.com/u/28733669?v=4","links":[{"icon":"github","link":"https://github.com/sadfsdfdsa"}],"lastFetch":1724015548379},{"username":"ajaishankar","name":null,"avatar":"https://avatars.githubusercontent.com/u/328008?v=4","links":[{"icon":"github","link":"https://github.com/ajaishankar"}],"lastFetch":1724015548547},{"username":"dominikdosoudil","name":"Dominik Dosoudil","avatar":"https://avatars.githubusercontent.com/u/15929942?v=4","links":[{"icon":"github","link":"https://github.com/dominikdosoudil"}],"lastFetch":1724015548738},{"username":"kgtkr","name":"kgtkr","avatar":"https://avatars.githubusercontent.com/u/17868838?v=4","links":[{"icon":"github","link":"https://github.com/kgtkr"}],"lastFetch":1724015548891},{"username":"berzi","name":null,"avatar":"https://avatars.githubusercontent.com/u/32619123?v=4","links":[{"icon":"github","link":"https://github.com/berzi"}],"lastFetch":1724015549041},{"username":"PhilipTrauner","name":"Philip Trauner","avatar":"https://avatars.githubusercontent.com/u/9287847?v=4","links":[{"icon":"github","link":"https://github.com/PhilipTrauner"}],"lastFetch":1724015549194},{"username":"Powell-v2","name":"Pavel Yermolin","avatar":"https://avatars.githubusercontent.com/u/25308326?v=4","links":[{"icon":"github","link":"https://github.com/Powell-v2"}],"lastFetch":1724015549370},{"username":"duncanbeevers","name":"Duncan Beevers","avatar":"https://avatars.githubusercontent.com/u/7367?v=4","links":[{"icon":"github","link":"https://github.com/duncanbeevers"}],"lastFetch":1724015549514},{"username":"tkukushkin","name":"Timofei Kukushkin","avatar":"https://avatars.githubusercontent.com/u/1482516?v=4","links":[{"icon":"github","link":"https://github.com/tkukushkin"}],"lastFetch":1724015549670},{"username":"Semigradsky","name":"Dmitry Semigradsky","avatar":"https://avatars.githubusercontent.com/u/1198848?v=4","links":[{"icon":"github","link":"https://github.com/Semigradsky"}],"lastFetch":1724015549837},{"username":"MrLeebo","name":"Jeremy Liberman","avatar":"https://avatars.githubusercontent.com/u/2754163?v=4","links":[{"icon":"github","link":"https://github.com/MrLeebo"}],"lastFetch":1724015550005},{"username":"axelhzf","name":"Axel Hernández Ferrera","avatar":"https://avatars.githubusercontent.com/u/175627?v=4","links":[{"icon":"github","link":"https://github.com/axelhzf"}],"lastFetch":1724015550195},{"username":"imagoiq","name":"Loïc Fürhoff","avatar":"https://avatars.githubusercontent.com/u/12294151?v=4","links":[{"icon":"github","link":"https://github.com/imagoiq"}],"lastFetch":1724015550371},{"username":"BTMPL","name":"Bartosz Szczeciński","avatar":"https://avatars.githubusercontent.com/u/247153?v=4","links":[{"icon":"github","link":"https://github.com/BTMPL"}],"lastFetch":1724015550520},{"username":"HiiiiD","name":"Marco Salomone","avatar":"https://avatars.githubusercontent.com/u/61231210?v=4","links":[{"icon":"github","link":"https://github.com/HiiiiD"}],"lastFetch":1724015550724},{"username":"yacinehmito","name":"Yacine Hmito","avatar":"https://avatars.githubusercontent.com/u/6893840?v=4","links":[{"icon":"github","link":"https://github.com/yacinehmito"}],"lastFetch":1724015550891},{"username":"sajadtorkamani","name":"Sajad Torkamani","avatar":"https://avatars.githubusercontent.com/u/9380313?v=4","links":[{"icon":"github","link":"https://github.com/sajadtorkamani"}],"lastFetch":1724015551075},{"username":"mvdbeek","name":"Marius van den Beek","avatar":"https://avatars.githubusercontent.com/u/6804901?v=4","links":[{"icon":"github","link":"https://github.com/mvdbeek"}],"lastFetch":1724015551249},{"username":"sgrimm","name":"Steven Grimm","avatar":"https://avatars.githubusercontent.com/u/1248649?v=4","links":[{"icon":"github","link":"https://github.com/sgrimm"}],"lastFetch":1724015551430},{"username":"Swiftwork","name":"Erik Hughes","avatar":"https://avatars.githubusercontent.com/u/455178?v=4","links":[{"icon":"github","link":"https://github.com/Swiftwork"}],"lastFetch":1724015551580},{"username":"mtth","name":"Matthieu Monsch","avatar":"https://avatars.githubusercontent.com/u/1216372?v=4","links":[{"icon":"github","link":"https://github.com/mtth"}],"lastFetch":1724015551772},{"username":"mitchell-merry","name":"Mitchell Merry","avatar":"https://avatars.githubusercontent.com/u/8567231?v=4","links":[{"icon":"github","link":"https://github.com/mitchell-merry"}],"lastFetch":1724015551927},{"username":"qnp","name":"François Risoud","avatar":"https://avatars.githubusercontent.com/u/6012554?v=4","links":[{"icon":"github","link":"https://github.com/qnp"}],"lastFetch":1724015552082},{"username":"shoffmeister","name":null,"avatar":"https://avatars.githubusercontent.com/u/3868036?v=4","links":[{"icon":"github","link":"https://github.com/shoffmeister"}],"lastFetch":1724015552233},{"username":"liangskyli","name":"liangsky","avatar":"https://avatars.githubusercontent.com/u/31531283?v=4","links":[{"icon":"github","link":"https://github.com/liangskyli"}],"lastFetch":1724015552386},{"username":"happycollision","name":"Don Denton","avatar":"https://avatars.githubusercontent.com/u/3663628?v=4","links":[{"icon":"github","link":"https://github.com/happycollision"}],"lastFetch":1724015552527},{"username":"ysmood","name":"Yad Smood","avatar":"https://avatars.githubusercontent.com/u/1415488?v=4","links":[{"icon":"github","link":"https://github.com/ysmood"}],"lastFetch":1724015552688},{"username":"barakalon","name":"barak","avatar":"https://avatars.githubusercontent.com/u/12398927?v=4","links":[{"icon":"github","link":"https://github.com/barakalon"}],"lastFetch":1724015552859},{"username":"horaklukas","name":"Lukáš Horák","avatar":"https://avatars.githubusercontent.com/u/996088?v=4","links":[{"icon":"github","link":"https://github.com/horaklukas"}],"lastFetch":1724015553015},{"username":"pvanagtmaal","name":null,"avatar":"https://avatars.githubusercontent.com/u/5946464?v=4","links":[{"icon":"github","link":"https://github.com/pvanagtmaal"}],"lastFetch":1724015553174},{"username":"toomuchdesign","name":"Andrea Carraro","avatar":"https://avatars.githubusercontent.com/u/4573549?v=4","links":[{"icon":"github","link":"https://github.com/toomuchdesign"}],"lastFetch":1724015553359},{"username":"psychedelicious","name":"psychedelicious","avatar":"https://avatars.githubusercontent.com/u/4822129?v=4","links":[{"icon":"github","link":"https://github.com/psychedelicious"}],"lastFetch":1724015553522},{"username":"tkrotoff","name":"Tanguy Krotoff","avatar":"https://avatars.githubusercontent.com/u/643434?v=4","links":[{"icon":"github","link":"https://github.com/tkrotoff"}],"lastFetch":1724015553683},{"username":"pimveldhuisen","name":"Pim Veldhuisen","avatar":"https://avatars.githubusercontent.com/u/3043834?v=4","links":[{"icon":"github","link":"https://github.com/pimveldhuisen"}],"lastFetch":1724015553831},{"username":"asvishnyakov","name":"Aleksandr Vishniakov","avatar":"https://avatars.githubusercontent.com/u/6369252?v=4","links":[{"icon":"github","link":"https://github.com/asvishnyakov"}],"lastFetch":1724015554068},{"username":"SchabaJo","name":null,"avatar":"https://avatars.githubusercontent.com/u/138689813?v=4","links":[{"icon":"github","link":"https://github.com/SchabaJo"}],"lastFetch":1724015554248},{"username":"AhsanFazal","name":"Ahsan Fazal","avatar":"https://avatars.githubusercontent.com/u/7458046?v=4","links":[{"icon":"github","link":"https://github.com/AhsanFazal"}],"lastFetch":1724015554388},{"username":"ElForastero","name":"Eugene Dzhumak","avatar":"https://avatars.githubusercontent.com/u/5102818?v=4","links":[{"icon":"github","link":"https://github.com/ElForastero"}],"lastFetch":1724015554556},{"username":"msgadi","name":"Mohammed Gadi","avatar":"https://avatars.githubusercontent.com/u/9037086?v=4","links":[{"icon":"github","link":"https://github.com/msgadi"}],"lastFetch":1724015554739},{"username":"muttonchop","name":"Adam K","avatar":"https://avatars.githubusercontent.com/u/1037657?v=4","links":[{"icon":"github","link":"https://github.com/muttonchop"}],"lastFetch":1724015554895},{"username":"christoph-fricke","name":"Christoph Fricke","avatar":"https://avatars.githubusercontent.com/u/23103835?v=4","links":[{"icon":"github","link":"https://github.com/christoph-fricke"}],"lastFetch":1724015555040},{"username":"JorrinKievit","name":"Jorrin","avatar":"https://avatars.githubusercontent.com/u/43169049?v=4","links":[{"icon":"github","link":"https://github.com/JorrinKievit"}],"lastFetch":1724015555220},{"username":"WickyNilliams","name":"Nick Williams","avatar":"https://avatars.githubusercontent.com/u/1091390?v=4","links":[{"icon":"github","link":"https://github.com/WickyNilliams"}],"lastFetch":1724015555377},{"username":"hrsh7th","name":"hrsh7th","avatar":"https://avatars.githubusercontent.com/u/629908?v=4","links":[{"icon":"github","link":"https://github.com/hrsh7th"}],"lastFetch":1724015555526},{"username":"davidleger95","name":"David Leger","avatar":"https://avatars.githubusercontent.com/u/10498708?v=4","links":[{"icon":"github","link":"https://github.com/davidleger95"}],"lastFetch":1724015555689},{"username":"phk422","name":"Hongkun Peng","avatar":"https://avatars.githubusercontent.com/u/59734322?v=4","links":[{"icon":"github","link":"https://github.com/phk422"}],"lastFetch":1724015555856},{"username":"mzronek","name":"Matthias Zronek","avatar":"https://avatars.githubusercontent.com/u/3847700?v=4","links":[{"icon":"github","link":"https://github.com/mzronek"}],"lastFetch":1724015556006},{"username":"raurfang","name":"Łukasz Wiśniewski","avatar":"https://avatars.githubusercontent.com/u/867241?v=4","links":[{"icon":"github","link":"https://github.com/raurfang"}],"lastFetch":1724015556267},{"username":"JeanRemiDelteil","name":"Jean-Rémi Delteil","avatar":"https://avatars.githubusercontent.com/u/9743907?v=4","links":[{"icon":"github","link":"https://github.com/JeanRemiDelteil"}],"lastFetch":1724015556416},{"username":"TzviPM","name":"Tzvi Melamed","avatar":"https://avatars.githubusercontent.com/u/1950680?v=4","links":[{"icon":"github","link":"https://github.com/TzviPM"}],"lastFetch":1724015556559},{"username":"LucaSchwan","name":"ehrenschwan","avatar":"https://avatars.githubusercontent.com/u/25820532?v=4","links":[{"icon":"github","link":"https://github.com/LucaSchwan"}],"lastFetch":1724015556716},{"username":"nzapponi","name":"Niccolo Zapponi","avatar":"https://avatars.githubusercontent.com/u/20582065?v=4","links":[{"icon":"github","link":"https://github.com/nzapponi"}],"lastFetch":1724015556862},{"username":"luchsamapparat","name":"Marvin Luchs","avatar":"https://avatars.githubusercontent.com/u/875017?v=4","links":[{"icon":"github","link":"https://github.com/luchsamapparat"}],"lastFetch":1724015557019},{"username":"nmacmunn","name":"Neil MacMunn","avatar":"https://avatars.githubusercontent.com/u/849964?v=4","links":[{"icon":"github","link":"https://github.com/nmacmunn"}],"lastFetch":1724015557181}],"openapi-fetch":[{"username":"drwpow","name":"Drew Powers","avatar":"https://avatars.githubusercontent.com/u/1369770?v=4","links":[{"icon":"github","link":"https://github.com/drwpow"}],"lastFetch":1724015541412},{"username":"fergusean","name":null,"avatar":"https://avatars.githubusercontent.com/u/1029297?v=4","links":[{"icon":"github","link":"https://github.com/fergusean"}],"lastFetch":1724015541578},{"username":"shinzui","name":"Nadeem Bitar","avatar":"https://avatars.githubusercontent.com/u/519?v=4","links":[{"icon":"github","link":"https://github.com/shinzui"}],"lastFetch":1724015541740},{"username":"ezpuzz","name":"Emory Petermann","avatar":"https://avatars.githubusercontent.com/u/672182?v=4","links":[{"icon":"github","link":"https://github.com/ezpuzz"}],"lastFetch":1724015541907},{"username":"KotoriK","name":null,"avatar":"https://avatars.githubusercontent.com/u/52659125?v=4","links":[{"icon":"github","link":"https://github.com/KotoriK"}],"lastFetch":1724015542077},{"username":"fletchertyler914","name":"Tyler Fletcher","avatar":"https://avatars.githubusercontent.com/u/3344498?v=4","links":[{"icon":"github","link":"https://github.com/fletchertyler914"}],"lastFetch":1724015542234},{"username":"nholik","name":"Nicklos Holik","avatar":"https://avatars.githubusercontent.com/u/2022214?v=4","links":[{"icon":"github","link":"https://github.com/nholik"}],"lastFetch":1724015542383},{"username":"roj1512","name":null,"avatar":"https://avatars.githubusercontent.com/u/175297870?v=4","links":[{"icon":"github","link":"https://github.com/roj1512"}],"lastFetch":1724015542534},{"username":"nickcaballero","name":"Nick Caballero","avatar":"https://avatars.githubusercontent.com/u/355976?v=4","links":[{"icon":"github","link":"https://github.com/nickcaballero"}],"lastFetch":1724015542696},{"username":"hd-o","name":"Hadrian de Oliveira","avatar":"https://avatars.githubusercontent.com/u/58871222?v=4","links":[{"icon":"github","link":"https://github.com/hd-o"}],"lastFetch":1724015542850},{"username":"kecrily","name":"Percy Ma","avatar":"https://avatars.githubusercontent.com/u/45708948?v=4","links":[{"icon":"github","link":"https://github.com/kecrily"}],"lastFetch":1724015543016},{"username":"psychedelicious","name":"psychedelicious","avatar":"https://avatars.githubusercontent.com/u/4822129?v=4","links":[{"icon":"github","link":"https://github.com/psychedelicious"}],"lastFetch":1724015543213},{"username":"muttonchop","name":"Adam K","avatar":"https://avatars.githubusercontent.com/u/1037657?v=4","links":[{"icon":"github","link":"https://github.com/muttonchop"}],"lastFetch":1724015543357},{"username":"marcomuser","name":"Marco Muser","avatar":"https://avatars.githubusercontent.com/u/64737396?v=4","links":[{"icon":"github","link":"https://github.com/marcomuser"}],"lastFetch":1724015543516},{"username":"HugeLetters","name":"Evgenii Perminov","avatar":"https://avatars.githubusercontent.com/u/119697239?v=4","links":[{"icon":"github","link":"https://github.com/HugeLetters"}],"lastFetch":1724015543687},{"username":"Fumaz","name":"alex","avatar":"https://avatars.githubusercontent.com/u/45318608?v=4","links":[{"icon":"github","link":"https://github.com/Fumaz"}],"lastFetch":1724015543845},{"username":"darwish","name":"Mike Darwish","avatar":"https://avatars.githubusercontent.com/u/292570?v=4","links":[{"icon":"github","link":"https://github.com/darwish"}],"lastFetch":1724015543987},{"username":"kaechele","name":"Felix Kaechele","avatar":"https://avatars.githubusercontent.com/u/454490?v=4","links":[{"icon":"github","link":"https://github.com/kaechele"}],"lastFetch":1724015544146},{"username":"phk422","name":"Hongkun Peng","avatar":"https://avatars.githubusercontent.com/u/59734322?v=4","links":[{"icon":"github","link":"https://github.com/phk422"}],"lastFetch":1724015544300},{"username":"mikestopcontinues","name":"Mike Stop Continues","avatar":"https://avatars.githubusercontent.com/u/150434?v=4","links":[{"icon":"github","link":"https://github.com/mikestopcontinues"}],"lastFetch":1724015544483},{"username":"JE-Lee","name":"maurice","avatar":"https://avatars.githubusercontent.com/u/19794813?v=4","links":[{"icon":"github","link":"https://github.com/JE-Lee"}],"lastFetch":1724015544670},{"username":"vipentti","name":"Ville Penttinen","avatar":"https://avatars.githubusercontent.com/u/4726680?v=4","links":[{"icon":"github","link":"https://github.com/vipentti"}],"lastFetch":1724015544851},{"username":"armandabric","name":"Armand Abric","avatar":"https://avatars.githubusercontent.com/u/95120?v=4","links":[{"icon":"github","link":"https://github.com/armandabric"}],"lastFetch":1724015545014},{"username":"illright","name":"Lev Chelyadinov","avatar":"https://avatars.githubusercontent.com/u/15035286?v=4","links":[{"icon":"github","link":"https://github.com/illright"}],"lastFetch":1724015545162}],"openapi-react-query":[{"username":"drwpow","name":"Drew Powers","avatar":"https://avatars.githubusercontent.com/u/1369770?v=4","links":[{"icon":"github","link":"https://github.com/drwpow"}],"lastFetch":1724015541410},{"username":"kerwanp","name":"Martin Paucot","avatar":"https://avatars.githubusercontent.com/u/36955373?v=4","links":[{"icon":"github","link":"https://github.com/kerwanp"}],"lastFetch":1724015541627}]} \ No newline at end of file diff --git a/docs/openapi-adonis/decorators.md b/docs/openapi-adonis/decorators.md new file mode 100644 index 000000000..b45d46601 --- /dev/null +++ b/docs/openapi-adonis/decorators.md @@ -0,0 +1,7 @@ +--- +title: openapi-adonis +--- + +## `@apiProperty` + + diff --git a/docs/openapi-adonis/index.md b/docs/openapi-adonis/index.md new file mode 100644 index 000000000..f754283f6 --- /dev/null +++ b/docs/openapi-adonis/index.md @@ -0,0 +1,70 @@ +--- +title: openapi-adonis +--- + +# Introduction + +openapi-adonis is an [Adonis.js] library to automatically generate OpenAPI schemas and documentation. + +- ✅ Creates operations from the Adonis Router +- ✅ Automatically adds your models to the schemas +- ✅ Automatically adds your `@vinejs/vine` validators to the schemas +- ✅ Extended type-inference using Typescript metadata +- ✅ Extensible using Typescript decorators +- ✅ Generates documentation for **Swagger, Scalar, Rapidoc** + +The library is inspired by the popular library [@nestjs/swagger](https://www.npmjs.com/package/@nestjs/swagger) and is built on top of [openapi-decorators](https://github.com/openapi-ts/openapi-typescript/tree/main/packages/openapi-decorators). + +::: code-group + +```tsx [app/controllers/users_controller.ts] +import { apiOperation, apiResponse } from "openapi-adonis/decorators"; +import User from "#models/user"; + +class UsersController { + @apiOperation({ summary: "List users" }) + @apiResponse({ type: [User] }) + async list() { + return User.findManyBy({}); + } +} +``` + +```tsx [app/models/user.ts] +import { apiProperty } from "openapi-adonis/decorators"; + +class User { + @apiProperty() + declare id: number; + + @apiProperty() + declare name: string; + + @apiProperty({ required: false }) + declare mobile?: string; +} +``` + +```tsx [start/routes.ts] +import router from "@adonisjs/core/services/router"; +import AdonisOpenAPI from "openapi-adonis"; + +const UsersController = () => import("#controllers/users_controller"); + +router.post("/users", [UsersController, "create"]); + +const builder = AdonisOpenAPI.document().setTitle("OpenAPI Adonis Example"); +AdonisOpenAPI.setup("/docs", router, builder); +``` + +::: + +## Setup + +Install this library by using `ace`: + +```bash +node ace add openapi-adonis +``` + +## Basic usage diff --git a/docs/openapi-decorators/decorators.md b/docs/openapi-decorators/decorators.md new file mode 100644 index 000000000..ee1a4c7ff --- /dev/null +++ b/docs/openapi-decorators/decorators.md @@ -0,0 +1,20 @@ +--- +title: Decorators +--- + +# Decorators + +Decorators are used to enrich your OpenAPI specifications. They can be applied on a Controller, a Method or a Model. They are all prefixed with `api`. + +> For more information about the decorators, you can directly refer to the [source code](https://github.com/openapi-ts/openapi-typescript/packages/openapi-decorators/src/decorators). + +| Decorator | Usage | Description | +|-|-|-| +| `@apiProperty` | Model | Configures a schema property. | +| `@apiTags` | Controller / Method | Adds tags to the operation. When applied on a controller, the tags are applied to all of its operations. | +| `@apiOperation` | Method | Configures an operation. | +| `@apiQuery` | Method | Adds a query parameter to the operation. | +| `@apiParam` | Method | Adds a path parameter to the operation. | +| `@apiResponse` | Method | Adds a response to the operation. | +| `@apiBody` | Method | Sets the requestBody of the operation. | + diff --git a/docs/openapi-decorators/index.md b/docs/openapi-decorators/index.md new file mode 100644 index 000000000..8ac17c9fb --- /dev/null +++ b/docs/openapi-decorators/index.md @@ -0,0 +1,194 @@ +--- +title: 'Getting started' +--- + +# Introduction + +`openapi-decorators` is a framework agnostic library to automatically generate OpenAPI schemas and documentation by using Typescript decorators and metadata. + +::: code-group + +```ts [users_controller.ts] +import { apiOperation, apiResponse } from "openapi-adonis/decorators"; +import User from "./user"; + +class UsersController { + @apiOperation({ + method: "get", + pattern: "/users", + summary: "List users" + }) + @apiResponse({ type: [User] }) + async list() { + ... + } +} +``` + +```ts [user.ts] +import { apiProperty } from "openapi-adonis/decorators"; + +class User { + @apiProperty() + declare id: number; + + @apiProperty() + declare name: string; + + @apiProperty({ required: false }) + declare mobile?: string; +} +``` + +```ts [index.ts] +import "reflect-metadata"; +import { DocumentBuilder } from "openapi-decorators/builders"; +import { loadController } from "openapi-decorators/loaders"; +import UsersController from "./users_controller"; + +const builder = new DocumentBuilder() + .setTitle("My API") + .setVersion("1.0.0"); + +await loadController(builder, UsersController); + +console.log(document.build()); // <- Your generated OpenAPI specifications +``` + +::: + +## Getting started + +### Setup + +Install `openapi-decorators` and `reflect-metadata` using your favorite package manager. + +```bash +npm install openapi-decorators reflect-metadata +``` + +Import `reflect-metadata` in your main file. + +::: code-group + +```ts [index.ts] +import "reflect-metadata"; + +// Rest of your app +``` + +::: + +Enable `experimentalDecorators` and `experimentalDecorators`. + + +::: code-group + +```json [tsconfig.json] +{ + "compilerOptions": { + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + } +} +``` + +::: + +### Create your OpenAPI document + +To get started, create a new DocumentBuilder. It will hold all the informations required to generate your OpenAPI specifications. +By using the method `build()` you can already have an (almost) empty documentation. + +::: code-group + +```ts [index.ts] +import "reflect-metadata"; +import { DocumentBuilder } from "openapi-decorators/builders"; + +const builder = new DocumentBuilder() + .setTitle("My API") + .setVersion("1.0.0"); + +console.log(document.build()); // <- Your generated OpenAPI specifications +``` + +::: + +### Create your first model + +Using the `apiProperty` decorator on class properties will allow your operations to use the class as a schema. + +> Unlike other libraries like `@nestjs/swagger`, every element of your OpenAPI schema is lazy-loaded. Your models will only be part of your documentation if it is used. + +::: code-group + +```ts [user.ts] +import { apiProperty } from "openapi-decorators/decorators"; + +class User { + @apiProperty() + declare id: string; + + @apiProperty({ example: "John Doe" }) + declare name: string; + + @apiProperty() + declare email: string; + + @apiProperty({ required: false }) + declare mobile?: string; +} +``` + +::: + +### Create your first controller + +Next we need to define our first operation. We can do this by using a controller. + +In the following example we create an operation `GET /users` that returns a list of `User`. + +::: code-group + +```ts [users_controller.ts] +import { apiOperation, apiResponse } from "openapi-decorators/decorators"; +import User from "./user"; + +class UsersController { + @apiOperation({ + method: "get", + pattern: "/users", + summary: "List users" + }) + @apiResponse({ type: [User] }) + async list() { + ... + } +} +``` + +::: + +### Load the controller into your DocumentBuilder + +You now simply have to load the controller into your DocumentBuilder and tada 🎉. + +::: code-group + +```ts [index.ts] +import "reflect-metadata"; +import { DocumentBuilder } from "openapi-decorators/builders"; +import { loadController } from "openapi-decorators/loaders"; +import UsersController from "./users_controller"; + +const builder = new DocumentBuilder() + .setTitle("My API") + .setVersion("1.0.0"); + +await loadController(builder, UsersController); + +console.log(document.build()); // <- Your generated OpenAPI specifications +``` + +::: diff --git a/package.json b/package.json index 56ab7896f..940221adc 100644 --- a/package.json +++ b/package.json @@ -8,8 +8,9 @@ "email": "drew@pow.rs" }, "scripts": { - "build": "pnpm run -r --parallel --filter \"!*docs\" --aggregate-output build", + "build": "pnpm run -r --filter \"!*docs\" --aggregate-output build", "lint": "pnpm run -r --parallel --aggregate-output lint", + "dev": "pnpm run -r --parallel --filter \"{packages/*}\" --aggregate-output dev", "format": "pnpm run -r --parallel --aggregate-output format", "test": "pnpm run -r --parallel --aggregate-output test", "test-e2e": "pnpm run -r --parallel --aggregate-output test-e2e", diff --git a/packages/openapi-adonis/.npmignore b/packages/openapi-adonis/.npmignore new file mode 100644 index 000000000..a673d1305 --- /dev/null +++ b/packages/openapi-adonis/.npmignore @@ -0,0 +1,5 @@ +example +test +tsconfig*.json +vitest.config.ts +biome.json diff --git a/packages/openapi-adonis/biome.json b/packages/openapi-adonis/biome.json new file mode 100644 index 000000000..acf999617 --- /dev/null +++ b/packages/openapi-adonis/biome.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://biomejs.dev/schemas/1.8.1/schema.json", + "extends": ["../../biome.json"], + "files": { + "ignore": ["./example/", "./coverage/"] + }, + "linter": { + "rules": { + "complexity": { + "noBannedTypes": "off" + }, + "suspicious": { + "noConfusingVoidType": "off" + } + } + } +} diff --git a/packages/openapi-adonis/example/.editorconfig b/packages/openapi-adonis/example/.editorconfig new file mode 100644 index 000000000..f830f4041 --- /dev/null +++ b/packages/openapi-adonis/example/.editorconfig @@ -0,0 +1,22 @@ +# http://editorconfig.org + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.json] +insert_final_newline = unset + +[**.min.js] +indent_style = unset +insert_final_newline = unset + +[MakeFile] +indent_style = space + +[*.md] +trim_trailing_whitespace = false diff --git a/packages/openapi-adonis/example/.env.example b/packages/openapi-adonis/example/.env.example new file mode 100644 index 000000000..2aa8f14b7 --- /dev/null +++ b/packages/openapi-adonis/example/.env.example @@ -0,0 +1,6 @@ +TZ=UTC +PORT=3333 +HOST=localhost +LOG_LEVEL=info +APP_KEY=30kuDPpn6wxNER9r0phf-cfQTMT2h_n_ +NODE_ENV=development \ No newline at end of file diff --git a/packages/openapi-adonis/example/.gitignore b/packages/openapi-adonis/example/.gitignore new file mode 100644 index 000000000..4e9b44526 --- /dev/null +++ b/packages/openapi-adonis/example/.gitignore @@ -0,0 +1,25 @@ +# Dependencies and AdonisJS build +node_modules +build +tmp + +# Secrets +.env +.env.local +.env.production.local +.env.development.local + +# Frontend assets compiled code +public/assets + +# Build tools specific +npm-debug.log +yarn-error.log + +# Editors specific +.fleet +.idea +.vscode + +# Platform specific +.DS_Store diff --git a/packages/openapi-adonis/example/ace.js b/packages/openapi-adonis/example/ace.js new file mode 100644 index 000000000..d47f53aaf --- /dev/null +++ b/packages/openapi-adonis/example/ace.js @@ -0,0 +1,28 @@ +/* +|-------------------------------------------------------------------------- +| JavaScript entrypoint for running ace commands +|-------------------------------------------------------------------------- +| +| DO NOT MODIFY THIS FILE AS IT WILL BE OVERRIDDEN DURING THE BUILD +| PROCESS. +| +| See docs.adonisjs.com/guides/typescript-build-process#creating-production-build +| +| Since, we cannot run TypeScript source code using "node" binary, we need +| a JavaScript entrypoint to run ace commands. +| +| This file registers the "ts-node/esm" hook with the Node.js module system +| and then imports the "bin/console.ts" file. +| +*/ + +/** + * Register hook to process TypeScript files using ts-node + */ +import { register } from 'node:module' +register('ts-node/esm', import.meta.url) + +/** + * Import ace console entrypoint + */ +await import('./bin/console.js') diff --git a/packages/openapi-adonis/example/adonisrc.ts b/packages/openapi-adonis/example/adonisrc.ts new file mode 100644 index 000000000..a17f48b24 --- /dev/null +++ b/packages/openapi-adonis/example/adonisrc.ts @@ -0,0 +1,69 @@ +import { defineConfig } from '@adonisjs/core/app' + +export default defineConfig({ + /* + |-------------------------------------------------------------------------- + | Commands + |-------------------------------------------------------------------------- + | + | List of ace commands to register from packages. The application commands + | will be scanned automatically from the "./commands" directory. + | + */ + commands: [() => import('@adonisjs/core/commands')], + + /* + |-------------------------------------------------------------------------- + | Service providers + |-------------------------------------------------------------------------- + | + | List of service providers to import and register when booting the + | application + | + */ + providers: [ + () => import('@adonisjs/core/providers/app_provider'), + () => import('@adonisjs/core/providers/hash_provider'), + { + file: () => import('@adonisjs/core/providers/repl_provider'), + environment: ['repl', 'test'], + }, + () => import('@adonisjs/core/providers/vinejs_provider'), + () => import('@adonisjs/cors/cors_provider'), + ], + + /* + |-------------------------------------------------------------------------- + | Preloads + |-------------------------------------------------------------------------- + | + | List of modules to import before starting the application. + | + */ + preloads: [() => import('#start/routes'), () => import('#start/kernel')], + + /* + |-------------------------------------------------------------------------- + | Tests + |-------------------------------------------------------------------------- + | + | List of test suites to organize tests by their type. Feel free to remove + | and add additional suites. + | + */ + tests: { + suites: [ + { + files: ['tests/unit/**/*.spec(.ts|.js)'], + name: 'unit', + timeout: 2000, + }, + { + files: ['tests/functional/**/*.spec(.ts|.js)'], + name: 'functional', + timeout: 30000, + }, + ], + forceExit: false, + }, +}) diff --git a/packages/openapi-adonis/example/app/controllers/users_controller.ts b/packages/openapi-adonis/example/app/controllers/users_controller.ts new file mode 100644 index 000000000..b4e06ebed --- /dev/null +++ b/packages/openapi-adonis/example/app/controllers/users_controller.ts @@ -0,0 +1,21 @@ +import User from "#models/user"; +import { listUserValidator } from "#validators/user"; +import { apiBody, apiOperation, apiParam, apiQuery, apiResponse } from "openapi-adonis/decorators"; +import { VineType, ModelType } from "openapi-adonis"; + +export default class UsersController { + @apiOperation({ summary: "Get users" }) + @apiResponse({ type: ModelType(User) }) + @apiParam({ name: "id" }) + @apiQuery({ name: "query" }) + @apiBody({ type: VineType(listUserValidator, "listUserValidator") }) + async index(): Promise { + return new User(); + } + + @apiOperation({ summary: "Create new user" }) + // @apiBody({ type: User }) + async create(): Promise { + return new User(); + } +} diff --git a/packages/openapi-adonis/example/app/exceptions/handler.ts b/packages/openapi-adonis/example/app/exceptions/handler.ts new file mode 100644 index 000000000..367898fc4 --- /dev/null +++ b/packages/openapi-adonis/example/app/exceptions/handler.ts @@ -0,0 +1,28 @@ +import app from '@adonisjs/core/services/app' +import { HttpContext, ExceptionHandler } from '@adonisjs/core/http' + +export default class HttpExceptionHandler extends ExceptionHandler { + /** + * In debug mode, the exception handler will display verbose errors + * with pretty printed stack traces. + */ + protected debug = !app.inProduction + + /** + * The method is used for handling errors and returning + * response to the client + */ + async handle(error: unknown, ctx: HttpContext) { + return super.handle(error, ctx) + } + + /** + * The method is used to report error to the logging service or + * the third party error monitoring service. + * + * @note You should not attempt to send a response from this method. + */ + async report(error: unknown, ctx: HttpContext) { + return super.report(error, ctx) + } +} diff --git a/packages/openapi-adonis/example/app/middleware/container_bindings_middleware.ts b/packages/openapi-adonis/example/app/middleware/container_bindings_middleware.ts new file mode 100644 index 000000000..97abc835b --- /dev/null +++ b/packages/openapi-adonis/example/app/middleware/container_bindings_middleware.ts @@ -0,0 +1,19 @@ +import { Logger } from '@adonisjs/core/logger' +import { HttpContext } from '@adonisjs/core/http' +import type { NextFn } from '@adonisjs/core/types/http' + +/** + * The container bindings middleware binds classes to their request + * specific value using the container resolver. + * + * - We bind "HttpContext" class to the "ctx" object + * - And bind "Logger" class to the "ctx.logger" object + */ +export default class ContainerBindingsMiddleware { + handle(ctx: HttpContext, next: NextFn) { + ctx.containerResolver.bindValue(HttpContext, ctx) + ctx.containerResolver.bindValue(Logger, ctx.logger) + + return next() + } +} diff --git a/packages/openapi-adonis/example/app/middleware/force_json_response_middleware.ts b/packages/openapi-adonis/example/app/middleware/force_json_response_middleware.ts new file mode 100644 index 000000000..58022e7a8 --- /dev/null +++ b/packages/openapi-adonis/example/app/middleware/force_json_response_middleware.ts @@ -0,0 +1,16 @@ +import type { HttpContext } from '@adonisjs/core/http' +import type { NextFn } from '@adonisjs/core/types/http' + +/** + * Updating the "Accept" header to always accept "application/json" response + * from the server. This will force the internals of the framework like + * validator errors or auth errors to return a JSON response. + */ +export default class ForceJsonResponseMiddleware { + async handle({ request }: HttpContext, next: NextFn) { + const headers = request.headers() + headers.accept = 'application/json' + + return next() + } +} diff --git a/packages/openapi-adonis/example/app/models/user.ts b/packages/openapi-adonis/example/app/models/user.ts new file mode 100644 index 000000000..0b46a5c7b --- /dev/null +++ b/packages/openapi-adonis/example/app/models/user.ts @@ -0,0 +1,16 @@ +import { BaseModel } from '@adonisjs/lucid/orm' +import { apiProperty } from 'openapi-adonis/decorators' + +export default class User extends BaseModel { + @apiProperty({ example: '5' }) + declare id: string + + @apiProperty() + declare name: number + + @apiProperty() + declare hey: string + + @apiProperty({ type: User }) + declare user: User +} diff --git a/packages/openapi-adonis/example/app/validators/user.ts b/packages/openapi-adonis/example/app/validators/user.ts new file mode 100644 index 000000000..98174fdad --- /dev/null +++ b/packages/openapi-adonis/example/app/validators/user.ts @@ -0,0 +1,12 @@ +import vine from "@vinejs/vine"; + +export const listUserValidator = vine.compile( + vine.object({ + one: vine.string(), + two: vine.number(), + nested: vine.object({ + test: vine.number(), + }), + array: vine.array(vine.number()).maxLength(5), + }), +); diff --git a/packages/openapi-adonis/example/bin/console.ts b/packages/openapi-adonis/example/bin/console.ts new file mode 100644 index 000000000..4b102ee86 --- /dev/null +++ b/packages/openapi-adonis/example/bin/console.ts @@ -0,0 +1,47 @@ +/* +|-------------------------------------------------------------------------- +| Ace entry point +|-------------------------------------------------------------------------- +| +| The "console.ts" file is the entrypoint for booting the AdonisJS +| command-line framework and executing commands. +| +| Commands do not boot the application, unless the currently running command +| has "options.startApp" flag set to true. +| +*/ + +import 'reflect-metadata' +import { Ignitor, prettyPrintError } from '@adonisjs/core' + +/** + * URL to the application root. AdonisJS need it to resolve + * paths to file and directories for scaffolding commands + */ +const APP_ROOT = new URL('../', import.meta.url) + +/** + * The importer is used to import files in context of the + * application. + */ +const IMPORTER = (filePath: string) => { + if (filePath.startsWith('./') || filePath.startsWith('../')) { + return import(new URL(filePath, APP_ROOT).href) + } + return import(filePath) +} + +new Ignitor(APP_ROOT, { importer: IMPORTER }) + .tap((app) => { + app.booting(async () => { + await import('#start/env') + }) + app.listen('SIGTERM', () => app.terminate()) + app.listenIf(app.managedByPm2, 'SIGINT', () => app.terminate()) + }) + .ace() + .handle(process.argv.splice(2)) + .catch((error) => { + process.exitCode = 1 + prettyPrintError(error) + }) diff --git a/packages/openapi-adonis/example/bin/server.ts b/packages/openapi-adonis/example/bin/server.ts new file mode 100644 index 000000000..fe0fefbaf --- /dev/null +++ b/packages/openapi-adonis/example/bin/server.ts @@ -0,0 +1,45 @@ +/* +|-------------------------------------------------------------------------- +| HTTP server entrypoint +|-------------------------------------------------------------------------- +| +| The "server.ts" file is the entrypoint for starting the AdonisJS HTTP +| server. Either you can run this file directly or use the "serve" +| command to run this file and monitor file changes +| +*/ + +import 'reflect-metadata' +import { Ignitor, prettyPrintError } from '@adonisjs/core' + +/** + * URL to the application root. AdonisJS need it to resolve + * paths to file and directories for scaffolding commands + */ +const APP_ROOT = new URL('../', import.meta.url) + +/** + * The importer is used to import files in context of the + * application. + */ +const IMPORTER = (filePath: string) => { + if (filePath.startsWith('./') || filePath.startsWith('../')) { + return import(new URL(filePath, APP_ROOT).href) + } + return import(filePath) +} + +new Ignitor(APP_ROOT, { importer: IMPORTER }) + .tap((app) => { + app.booting(async () => { + await import('#start/env') + }) + app.listen('SIGTERM', () => app.terminate()) + app.listenIf(app.managedByPm2, 'SIGINT', () => app.terminate()) + }) + .httpServer() + .start() + .catch((error) => { + process.exitCode = 1 + prettyPrintError(error) + }) diff --git a/packages/openapi-adonis/example/config/app.ts b/packages/openapi-adonis/example/config/app.ts new file mode 100644 index 000000000..1292af792 --- /dev/null +++ b/packages/openapi-adonis/example/config/app.ts @@ -0,0 +1,40 @@ +import env from '#start/env' +import app from '@adonisjs/core/services/app' +import { Secret } from '@adonisjs/core/helpers' +import { defineConfig } from '@adonisjs/core/http' + +/** + * The app key is used for encrypting cookies, generating signed URLs, + * and by the "encryption" module. + * + * The encryption module will fail to decrypt data if the key is lost or + * changed. Therefore it is recommended to keep the app key secure. + */ +export const appKey = new Secret(env.get('APP_KEY')) + +/** + * The configuration settings used by the HTTP server + */ +export const http = defineConfig({ + generateRequestId: true, + allowMethodSpoofing: false, + + /** + * Enabling async local storage will let you access HTTP context + * from anywhere inside your application. + */ + useAsyncLocalStorage: false, + + /** + * Manage cookies configuration. The settings for the session id cookie are + * defined inside the "config/session.ts" file. + */ + cookie: { + domain: '', + path: '/', + maxAge: '2h', + httpOnly: true, + secure: app.inProduction, + sameSite: 'lax', + }, +}) diff --git a/packages/openapi-adonis/example/config/bodyparser.ts b/packages/openapi-adonis/example/config/bodyparser.ts new file mode 100644 index 000000000..f3d1ead9d --- /dev/null +++ b/packages/openapi-adonis/example/config/bodyparser.ts @@ -0,0 +1,55 @@ +import { defineConfig } from '@adonisjs/core/bodyparser' + +const bodyParserConfig = defineConfig({ + /** + * The bodyparser middleware will parse the request body + * for the following HTTP methods. + */ + allowedMethods: ['POST', 'PUT', 'PATCH', 'DELETE'], + + /** + * Config for the "application/x-www-form-urlencoded" + * content-type parser + */ + form: { + convertEmptyStringsToNull: true, + types: ['application/x-www-form-urlencoded'], + }, + + /** + * Config for the JSON parser + */ + json: { + convertEmptyStringsToNull: true, + types: [ + 'application/json', + 'application/json-patch+json', + 'application/vnd.api+json', + 'application/csp-report', + ], + }, + + /** + * Config for the "multipart/form-data" content-type parser. + * File uploads are handled by the multipart parser. + */ + multipart: { + /** + * Enabling auto process allows bodyparser middleware to + * move all uploaded files inside the tmp folder of your + * operating system + */ + autoProcess: true, + convertEmptyStringsToNull: true, + processManually: [], + + /** + * Maximum limit of data to parse including all files + * and fields + */ + limit: '20mb', + types: ['multipart/form-data'], + }, +}) + +export default bodyParserConfig diff --git a/packages/openapi-adonis/example/config/cors.ts b/packages/openapi-adonis/example/config/cors.ts new file mode 100644 index 000000000..328934b3d --- /dev/null +++ b/packages/openapi-adonis/example/config/cors.ts @@ -0,0 +1,19 @@ +import { defineConfig } from '@adonisjs/cors' + +/** + * Configuration options to tweak the CORS policy. The following + * options are documented on the official documentation website. + * + * https://docs.adonisjs.com/guides/security/cors + */ +const corsConfig = defineConfig({ + enabled: true, + origin: true, + methods: ['GET', 'HEAD', 'POST', 'PUT', 'DELETE'], + headers: true, + exposeHeaders: [], + credentials: true, + maxAge: 90, +}) + +export default corsConfig diff --git a/packages/openapi-adonis/example/config/hash.ts b/packages/openapi-adonis/example/config/hash.ts new file mode 100644 index 000000000..ab1030084 --- /dev/null +++ b/packages/openapi-adonis/example/config/hash.ts @@ -0,0 +1,24 @@ +import { defineConfig, drivers } from '@adonisjs/core/hash' + +const hashConfig = defineConfig({ + default: 'scrypt', + + list: { + scrypt: drivers.scrypt({ + cost: 16384, + blockSize: 8, + parallelization: 1, + maxMemory: 33554432, + }), + }, +}) + +export default hashConfig + +/** + * Inferring types for the list of hashers you have configured + * in your application. + */ +declare module '@adonisjs/core/types' { + export interface HashersList extends InferHashers {} +} diff --git a/packages/openapi-adonis/example/config/logger.ts b/packages/openapi-adonis/example/config/logger.ts new file mode 100644 index 000000000..b96130040 --- /dev/null +++ b/packages/openapi-adonis/example/config/logger.ts @@ -0,0 +1,35 @@ +import env from '#start/env' +import app from '@adonisjs/core/services/app' +import { defineConfig, targets } from '@adonisjs/core/logger' + +const loggerConfig = defineConfig({ + default: 'app', + + /** + * The loggers object can be used to define multiple loggers. + * By default, we configure only one logger (named "app"). + */ + loggers: { + app: { + enabled: true, + name: env.get('APP_NAME'), + level: env.get('LOG_LEVEL'), + transport: { + targets: targets() + .pushIf(!app.inProduction, targets.pretty()) + .pushIf(app.inProduction, targets.file({ destination: 1 })) + .toArray(), + }, + }, + }, +}) + +export default loggerConfig + +/** + * Inferring types for the list of loggers you have configured + * in your application. + */ +declare module '@adonisjs/core/types' { + export interface LoggersList extends InferLoggers {} +} diff --git a/packages/openapi-adonis/example/package.json b/packages/openapi-adonis/example/package.json new file mode 100644 index 000000000..af4aa0bac --- /dev/null +++ b/packages/openapi-adonis/example/package.json @@ -0,0 +1,57 @@ +{ + "name": "@example/openapi-adonis", + "version": "0.0.0", + "private": true, + "type": "module", + "license": "UNLICENSED", + "scripts": { + "start": "node bin/server.js", + "dev": "node ace serve --watch", + "typecheck": "tsc --noEmit" + }, + "imports": { + "#controllers/*": "./app/controllers/*.js", + "#exceptions/*": "./app/exceptions/*.js", + "#models/*": "./app/models/*.js", + "#mails/*": "./app/mails/*.js", + "#services/*": "./app/services/*.js", + "#listeners/*": "./app/listeners/*.js", + "#events/*": "./app/events/*.js", + "#middleware/*": "./app/middleware/*.js", + "#validators/*": "./app/validators/*.js", + "#providers/*": "./providers/*.js", + "#policies/*": "./app/policies/*.js", + "#abilities/*": "./app/abilities/*.js", + "#database/*": "./database/*.js", + "#start/*": "./start/*.js", + "#tests/*": "./tests/*.js", + "#config/*": "./config/*.js" + }, + "devDependencies": { + "@adonisjs/assembler": "^7.7.0", + "@adonisjs/http-server": "^7.2.3", + "@adonisjs/tsconfig": "^1.3.0", + "@swc/core": "^1.6.5", + "@types/node": "^20.14.9", + "hot-hook": "^0.2.6", + "pino-pretty": "^11.2.1", + "ts-node": "^10.9.2", + "typescript": "~5.4" + }, + "dependencies": { + "@adonisjs/auth": "^9.2.3", + "@adonisjs/core": "^6.12.1", + "@adonisjs/cors": "^2.2.1", + "@adonisjs/lucid": "^21.1.0", + "@vinejs/vine": "^2.1.0", + "luxon": "^3.5.0", + "openapi-adonis": "workspace:^", + "reflect-metadata": "^0.2.2" + }, + "hotHook": { + "boundaries": [ + "./app/controllers/**/*.ts", + "./app/middleware/*.ts" + ] + } +} diff --git a/packages/openapi-adonis/example/start/env.ts b/packages/openapi-adonis/example/start/env.ts new file mode 100644 index 000000000..3676c3525 --- /dev/null +++ b/packages/openapi-adonis/example/start/env.ts @@ -0,0 +1,20 @@ +/* +|-------------------------------------------------------------------------- +| Environment variables service +|-------------------------------------------------------------------------- +| +| The `Env.create` method creates an instance of the Env service. The +| service validates the environment variables and also cast values +| to JavaScript data types. +| +*/ + +import { Env } from '@adonisjs/core/env' + +export default await Env.create(new URL('../', import.meta.url), { + NODE_ENV: Env.schema.enum(['development', 'production', 'test'] as const), + PORT: Env.schema.number(), + APP_KEY: Env.schema.string(), + HOST: Env.schema.string({ format: 'host' }), + LOG_LEVEL: Env.schema.enum(['fatal', 'error', 'warn', 'info', 'debug', 'trace']), +}) diff --git a/packages/openapi-adonis/example/start/kernel.ts b/packages/openapi-adonis/example/start/kernel.ts new file mode 100644 index 000000000..865831760 --- /dev/null +++ b/packages/openapi-adonis/example/start/kernel.ts @@ -0,0 +1,41 @@ +/* +|-------------------------------------------------------------------------- +| HTTP kernel file +|-------------------------------------------------------------------------- +| +| The HTTP kernel file is used to register the middleware with the server +| or the router. +| +*/ + +import router from '@adonisjs/core/services/router' +import server from '@adonisjs/core/services/server' + +/** + * The error handler is used to convert an exception + * to a HTTP response. + */ +server.errorHandler(() => import('#exceptions/handler')) + +/** + * The server middleware stack runs middleware on all the HTTP + * requests, even if there is no route registered for + * the request URL. + */ +server.use([ + () => import('#middleware/container_bindings_middleware'), + () => import('#middleware/force_json_response_middleware'), + () => import('@adonisjs/cors/cors_middleware'), +]) + +/** + * The router middleware stack runs middleware on all the HTTP + * requests with a registered route. + */ +router.use([() => import('@adonisjs/core/bodyparser_middleware')]) + +/** + * Named middleware collection must be explicitly assigned to + * the routes or the routes group. + */ +export const middleware = router.named({}) diff --git a/packages/openapi-adonis/example/start/routes.ts b/packages/openapi-adonis/example/start/routes.ts new file mode 100644 index 000000000..4e645d0d2 --- /dev/null +++ b/packages/openapi-adonis/example/start/routes.ts @@ -0,0 +1,26 @@ +/* +|-------------------------------------------------------------------------- +| Routes file +|-------------------------------------------------------------------------- +| +| The routes file is used for defining the HTTP routes. +| +*/ + +import router from "@adonisjs/core/services/router"; +import AdonisOpenAPI from "openapi-adonis"; + +const UsersController = () => import("#controllers/users_controller"); + +router.get("/", async () => { + return { + hello: "world", + }; +}); + +// router.get("/users/:id", [UsersController, "index"]); +// router.post("/users", [UsersController, "create"]); +router.resource("users", UsersController).apiOnly(); + +const builder = AdonisOpenAPI.document().setTitle("OpenAPI Adonis Example"); +AdonisOpenAPI.setup("/docs", router, builder); diff --git a/packages/openapi-adonis/example/tsconfig.json b/packages/openapi-adonis/example/tsconfig.json new file mode 100644 index 000000000..86b69e8be --- /dev/null +++ b/packages/openapi-adonis/example/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "@adonisjs/tsconfig/tsconfig.app.json", + "compilerOptions": { + "rootDir": "./", + "outDir": "./build" + } +} diff --git a/packages/openapi-adonis/package.json b/packages/openapi-adonis/package.json new file mode 100644 index 000000000..6f442eeb4 --- /dev/null +++ b/packages/openapi-adonis/package.json @@ -0,0 +1,69 @@ +{ + "name": "openapi-adonis", + "description": "Auto-Generate OpenAPI specifications for AdonisJS", + "version": "0.0.1", + "author": { + "name": "Martin PAUCOT", + "email": "contact@martin-paucot.Fr" + }, + "type": "module", + "main": "./dist/index.js", + "module": "./dist/index.js", + "types": "./dist/index.d.ts", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + }, + "./decorators": { + "types": "./dist/decorators/index.d.ts", + "default": "./dist/decorators/index.js" + } + }, + "homepage": "https://openapi-ts.dev", + "repository": { + "type": "git", + "url": "https://github.com/openapi-ts/openapi-typescript", + "directory": "packages/openapi-adonis" + }, + "bugs": { + "url": "https://github.com/openapi-ts/openapi-typescript/issues" + }, + "keywords": [ + "openapi", + "swagger", + "rest", + "api", + "oapi_3", + "oapi_3_1", + "typescript", + "adonis" + ], + "scripts": { + "build": "tsup", + "dev": "tsup --watch", + "format": "biome format . --write", + "lint": "biome check .", + "test": "vitest run", + "coverage": "vitest run --coverage", + "version": "pnpm run prepare && pnpm run build" + }, + "dependencies": { + "@fastify/deepmerge": "^2.0.0", + "@vinejs/vine": "^2.1.0", + "lodash": "^4.17.21", + "openapi-decorators": "workspace:^", + "openapi-types": "^12.1.3", + "reflect-metadata": "^0.2.2" + }, + "devDependencies": { + "@adonisjs/core": "^6.12.1", + "@adonisjs/http-server": "^7.2.3", + "@types/lodash": "^4.17.7", + "@types/node": "^22.1.0", + "@vitest/coverage-v8": "^2.0.5", + "tsup": "^8.2.4", + "typescript": "^5.4.5", + "unplugin-swc": "^1.5.1" + } +} diff --git a/packages/openapi-adonis/src/decorators/index.ts b/packages/openapi-adonis/src/decorators/index.ts new file mode 100644 index 000000000..49ccd8402 --- /dev/null +++ b/packages/openapi-adonis/src/decorators/index.ts @@ -0,0 +1 @@ +export * from "openapi-decorators"; diff --git a/packages/openapi-adonis/src/index.ts b/packages/openapi-adonis/src/index.ts new file mode 100644 index 000000000..7867519c4 --- /dev/null +++ b/packages/openapi-adonis/src/index.ts @@ -0,0 +1,33 @@ +import type { OpenAPIV3 } from "openapi-types"; + +import type { Router } from "@adonisjs/http-server"; +import { DocumentBuilder } from "openapi-decorators/builders"; +import { generateScalarUI } from "openapi-decorators/ui"; +import { loadRouter } from "./loaders/loadRouter"; +import { VineTypeResolver } from "./resolvers/vine-type.resolver"; + +export { VineType } from "./resolvers/vine-type.resolver"; +export { ModelType } from "openapi-decorators/resolvers"; + +// biome-ignore lint/complexity/noStaticOnlyClass: TODO: move out of class +export default class AdonisOpenAPI { + public static document() { + return new DocumentBuilder().addResolver(VineTypeResolver); + } + + public static async load(builder: DocumentBuilder, router: Router): Promise { + await loadRouter(builder, router); + return builder.build(); + } + + public static setup(pattern: string, router: Router, builder: DocumentBuilder) { + router.get(pattern, () => { + return generateScalarUI("/docs.json"); + }); + + router.get(`${pattern}.json`, async () => { + await AdonisOpenAPI.load(builder, router); + return builder.build(); + }); + } +} diff --git a/packages/openapi-adonis/src/loaders/loadRoute.ts b/packages/openapi-adonis/src/loaders/loadRoute.ts new file mode 100644 index 000000000..c098a03f4 --- /dev/null +++ b/packages/openapi-adonis/src/loaders/loadRoute.ts @@ -0,0 +1,33 @@ +import type { OpenAPIV3 } from "openapi-types"; +import { OperationBuilder, type DocumentBuilder } from "openapi-decorators/builders"; +import type { AdonisRoute } from "../types"; +import { loadApiOperation, loadController } from "openapi-decorators/loaders"; +import { normalizeRoutePattern } from "../utils/normalizeRoutePattern"; + +export async function loadRoute(document: DocumentBuilder, route: AdonisRoute) { + if (typeof route.handler !== "object" || !Array.isArray(route.handler.reference)) { + return; + } + + const importer = route.handler.reference[0] as () => Promise<{ default: any }>; + const propertyKey = route.handler.reference[1] as string; + + const target = (await importer().then((t: any) => t.default)) as any; + + for (const method of route.methods) { + if (method === "HEAD") { + continue; + } + + const operation = new OperationBuilder(); + + loadApiOperation(operation, { + method: method.toLowerCase() as `${OpenAPIV3.HttpMethods}`, + pattern: normalizeRoutePattern(route.pattern), + }); + + loadController(document, operation, target.prototype, propertyKey); + + document.addOperation(operation); + } +} diff --git a/packages/openapi-adonis/src/loaders/loadRouter.ts b/packages/openapi-adonis/src/loaders/loadRouter.ts new file mode 100644 index 000000000..251be6212 --- /dev/null +++ b/packages/openapi-adonis/src/loaders/loadRouter.ts @@ -0,0 +1,16 @@ +import type { Router } from "@adonisjs/http-server"; +import type { DocumentBuilder } from "openapi-decorators/builders"; +import { loadRoute } from "./loadRoute"; + +/** + * Enrich document from Adonis Router. + */ +export async function loadRouter(document: DocumentBuilder, router: Router) { + const routerJson = router.toJSON(); + + for (const [_, routes] of Object.entries(routerJson)) { + for (const route of routes) { + await loadRoute(document, route); + } + } +} diff --git a/packages/openapi-adonis/src/resolvers/vine-type.resolver.ts b/packages/openapi-adonis/src/resolvers/vine-type.resolver.ts new file mode 100644 index 000000000..aaac95064 --- /dev/null +++ b/packages/openapi-adonis/src/resolvers/vine-type.resolver.ts @@ -0,0 +1,202 @@ +import { SimpleMessagesProvider, type VineValidator } from "@vinejs/vine"; +import type { SchemaTypes } from "@vinejs/vine/types"; +import { TypeResolver } from "openapi-decorators/resolvers"; +import type { OpenAPIV3 } from "openapi-types"; +import _ from "lodash"; + +type Validator = ReturnType["toJSON"]>; +type Refs = Validator["refs"]; +type CompilerNode = Validator["schema"]["schema"]; +type ObjectNode = CompilerNode & { type: "object" }; +type LiteralNode = CompilerNode & { type: "literal" }; +type ArrayNode = CompilerNode & { type: "array" }; +type ValidationNode = ObjectNode["validations"][number]; + +// TODO: We might want to autoload validators and import theme dynamically to discover constant name + +export class VineTypeResolver< + Schema extends SchemaTypes, + Metadata extends Record | undefined, +> extends TypeResolver { + #name: string; + + constructor( + private readonly validator: VineValidator, + name: string, + ) { + super(); + this.#name = name; + } + + name(): string { + return this.#name; + } + + async schema(): Promise { + const validator = this.validator.toJSON(); + const node = validator.schema.schema; + + if (node.type !== "object") { + // TODO: Better errors + throw new Error("Only object top-level schemas are currently supported"); + } + + const schema = parseCompilerNode(node, validator.refs); + + await enrichType(this.validator, schema); + + return schema; + } +} + +export function parseValidations(validations: ValidationNode[], refs: Refs): Partial { + const schema: Partial = {}; + + for (const validation of validations) { + const rule = refs[validation.ruleFnId]; + + if (!rule || !("options" in rule) || !rule.options) { + continue; + } + + if (rule.options.min) { + schema.minimum = rule.options.min; + } + + if (rule.options.max) { + schema.maximum = rule.options.max; + } + + // TODO: Surely a cleaner way to identify regex + if (rule.options.toString().includes("/")) { + schema.pattern = rule.options.toString(); + } + + // TODO: Choices + } + + return schema; +} + +export function parseCompilerNode(node: CompilerNode, refs: Refs): OpenAPIV3.SchemaObject { + let schema: OpenAPIV3.SchemaObject; + + switch (node.type) { + case "object": + schema = parseObjectNode(node, refs); + break; + case "literal": + schema = parseLiteralNode(node, refs); + break; + case "array": + schema = parseArrayNode(node, refs); + break; + default: + throw new Error(`No parser found for type ${node.type}`); + } + + // TODO: FIX TYPE + return { + ...parseValidations(node.validations, refs), + ...schema, + } as OpenAPIV3.SchemaObject; +} + +export function parseObjectNode(node: ObjectNode, refs: Refs): OpenAPIV3.SchemaObject { + const schema: OpenAPIV3.SchemaObject = { + type: "object", + }; + + for (const property of node.properties) { + schema.properties = { + ...schema.properties, + [property.fieldName]: parseCompilerNode(property, refs), + }; + + if ("isOptional" in property && property.isOptional === false) { + schema.required = [...(schema.required ?? []), property.fieldName]; + } + } + + return schema; +} + +export function parseArrayNode(node: ArrayNode, refs: Refs): OpenAPIV3.SchemaObject { + return { + type: "array", + items: parseCompilerNode(node.each, refs), + }; +} + +// A literal is always marked as string and is then specified properly depending on validator +export function parseLiteralNode(node: LiteralNode, refs: Refs): OpenAPIV3.SchemaObject { + return { + type: "string", + }; +} + +export async function enrichType(validator: VineValidator, schema: OpenAPIV3.SchemaObject) { + if (!schema.properties) { + return; + } + + const obj = nodeToTestObject(schema); + + const [error] = await validator.tryValidate(obj, { + messagesProvider: new SimpleMessagesProvider({ + required: "REQUIRED", + string: "TYPE", + object: "TYPE", + number: "TYPE", + boolean: "TYPE", + }), + }); + + if (!error) { + return schema; + } + + for (const message of error.messages) { + // TODO: This should break if property name starts with 0 + const fieldPath = message.field.replaceAll(/\.(?!0)/g, ".properties.").replaceAll(".0", ".items"); + + if (message.message === "TYPE") { + _.set(schema.properties, `${fieldPath}.type`, message.rule); + } + } +} + +function nodeToTestObject(schema: OpenAPIV3.SchemaObject) { + const res: any = {}; + + for (const [name, property] of Object.entries(schema.properties ?? {})) { + if (!("type" in property)) { + continue; + } + + if (property.type === "object") { + res[name] = nodeToTestObject(property); + } else if (property.type === "array") { + if (!("type" in property.items)) { + continue; + } + + if (property.items.type === "object") { + res[name] = [nodeToTestObject(property.items)]; + } else { + res[name] = ["example"]; + } + } else { + res[name] = "example"; + } + } + + return res; +} + +export function VineType | undefined>( + validator: VineValidator, + name: string, +): TypeResolver { + return new VineTypeResolver(validator, name); +} diff --git a/packages/openapi-adonis/src/types.ts b/packages/openapi-adonis/src/types.ts new file mode 100644 index 000000000..b1b24181f --- /dev/null +++ b/packages/openapi-adonis/src/types.ts @@ -0,0 +1,4 @@ +import type { Router } from "@adonisjs/http-server"; + +export type AdonisRoutes = ReturnType[string]; +export type AdonisRoute = AdonisRoutes[number]; diff --git a/packages/openapi-adonis/src/utils/normalizeRoutePattern.ts b/packages/openapi-adonis/src/utils/normalizeRoutePattern.ts new file mode 100644 index 000000000..dd1687a28 --- /dev/null +++ b/packages/openapi-adonis/src/utils/normalizeRoutePattern.ts @@ -0,0 +1,13 @@ +export const normalizeRoutePattern = (pattern: string) => { + const segments = pattern.split("/"); + + return segments + .map((s) => { + if (s.startsWith(":")) { + return `{${s.replace(":", "")}}`; + } + + return s; + }) + .join("/"); +}; diff --git a/packages/openapi-adonis/test/index.test.ts b/packages/openapi-adonis/test/index.test.ts new file mode 100644 index 000000000..4cc4fd7ba --- /dev/null +++ b/packages/openapi-adonis/test/index.test.ts @@ -0,0 +1,3 @@ +it("placeholder", () => { + expect(true).toBe(true); +}); diff --git a/packages/openapi-adonis/test/vine.test.ts b/packages/openapi-adonis/test/vine.test.ts new file mode 100644 index 000000000..ef93b9931 --- /dev/null +++ b/packages/openapi-adonis/test/vine.test.ts @@ -0,0 +1,114 @@ +import vine from "@vinejs/vine"; +import { enrichType, parseArrayNode, parseLiteralNode, parseObjectNode } from "../src/resolvers/vine-type.resolver"; + +describe("parseLiteralNode", () => { + // INFO: This test is not really necessary + it("should always returns string", () => { + const validator = vine.compile(vine.string()); + const json = validator.toJSON(); + const result = parseLiteralNode(json.schema.schema as any, json.refs); + + expect(result.type).toBe("string"); + }); +}); + +describe("parseArrayNode", () => { + it("should parse array of string", () => { + const validator = vine.compile(vine.array(vine.string())); + const json = validator.toJSON(); + const result: any = parseArrayNode(json.schema.schema as any, json.refs); + + expect(result.type).toBe("array"); + expect(result.items.type).toBe("string"); + }); +}); + +describe("parseObjectNode", () => { + it("should parse object", () => { + const validator = vine.compile( + vine.object({ + example: vine.string(), + }), + ); + const json = validator.toJSON(); + const result: any = parseObjectNode(json.schema.schema as any, json.refs); + + expect(result.properties.example).toBeDefined(); + }); + + it("should parse nested object", () => { + const validator = vine.compile( + vine.object({ + nested: vine.object({ + again: vine.object({ + example: vine.string(), + }), + }), + }), + ); + const json = validator.toJSON(); + + const result: any = parseObjectNode(json.schema.schema as any, json.refs); + + expect(result.properties.nested.properties.again.properties.example).toBeDefined(); + }); + + it("should mark properties as required by default", () => { + const validator = vine.compile( + vine.object({ + example: vine.string(), + }), + ); + const json = validator.toJSON(); + const result: any = parseObjectNode(json.schema.schema as any, json.refs); + + expect(result.required).toContain("example"); + }); + + it("should handle optional properties", () => { + const validator = vine.compile( + vine.object({ + required: vine.string(), + notRequired: vine.string().optional(), + }), + ); + const json = validator.toJSON(); + const result: any = parseObjectNode(json.schema.schema as any, json.refs); + + expect(result.required).toContain("required"); + expect(result.required).not.toContain("notRequired"); + }); +}); + +describe("enrichType", () => { + it("should properly find types using validators", async () => { + const validator = vine.compile( + vine.object({ + boolean: vine.boolean(), + number: vine.number(), + string: vine.string(), + }), + ); + + const schema: any = { + type: "object", + properties: { + boolean: { + type: "string", + }, + number: { + type: "string", + }, + string: { + type: "string", + }, + }, + }; + + await enrichType(validator, schema); + + expect(schema.properties.string.type).toBe("string"); + expect(schema.properties.boolean.type).toBe("boolean"); + expect(schema.properties.number.type).toBe("number"); + }); +}); diff --git a/packages/openapi-adonis/tsconfig.json b/packages/openapi-adonis/tsconfig.json new file mode 100644 index 000000000..856c8f0d6 --- /dev/null +++ b/packages/openapi-adonis/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "allowSyntheticDefaultImports": true, + "declaration": true, + "downlevelIteration": false, + "esModuleInterop": true, + "lib": ["ESNext", "DOM"], + "module": "ESNext", + "moduleResolution": "Bundler", + "noUncheckedIndexedAccess": true, + "outDir": "dist", + "skipLibCheck": false, + "strict": true, + "target": "ESNext", + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "types": ["vitest/globals", "reflect-metadata"] + }, + "include": ["src", "test"], + "exclude": ["example", "node_modules"] +} diff --git a/packages/openapi-adonis/tsup.config.ts b/packages/openapi-adonis/tsup.config.ts new file mode 100644 index 000000000..dc745a36c --- /dev/null +++ b/packages/openapi-adonis/tsup.config.ts @@ -0,0 +1,8 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: ["src/index.ts", "src/decorators/index.ts"], + format: ["esm"], + dts: true, + sourcemap: true, +}); diff --git a/packages/openapi-adonis/vitest.config.ts b/packages/openapi-adonis/vitest.config.ts new file mode 100644 index 000000000..8debcd30d --- /dev/null +++ b/packages/openapi-adonis/vitest.config.ts @@ -0,0 +1,12 @@ +import { defineConfig } from "vitest/config"; +import swc from "unplugin-swc"; + +export default defineConfig({ + plugins: [ + // Required to have typescript metadata working. See https://github.com/vitest-dev/vitest/discussions/3320 + swc.vite(), + ], + test: { + globals: true, + }, +}); diff --git a/packages/openapi-decorators/.npmignore b/packages/openapi-decorators/.npmignore new file mode 100644 index 000000000..215f90603 --- /dev/null +++ b/packages/openapi-decorators/.npmignore @@ -0,0 +1,4 @@ +test +tsconfig*.json +vitest.config.ts +biome.json diff --git a/packages/openapi-decorators/biome.json b/packages/openapi-decorators/biome.json new file mode 100644 index 000000000..3ef072e57 --- /dev/null +++ b/packages/openapi-decorators/biome.json @@ -0,0 +1,20 @@ +{ + "$schema": "https://biomejs.dev/schemas/1.8.1/schema.json", + "extends": ["../../biome.json"], + "files": { + "ignore": ["./example/", "./coverage/"] + }, + "linter": { + "rules": { + "performance": { + "noAccumulatingSpread": "off" + }, + "complexity": { + "noBannedTypes": "off" + }, + "suspicious": { + "noConfusingVoidType": "off" + } + } + } +} diff --git a/packages/openapi-decorators/package.json b/packages/openapi-decorators/package.json new file mode 100644 index 000000000..9c1d41921 --- /dev/null +++ b/packages/openapi-decorators/package.json @@ -0,0 +1,76 @@ +{ + "name": "openapi-decorators", + "description": "Auto-Generate OpenAPI specifications from Typescript decorators", + "version": "0.0.1", + "author": { + "name": "Martin PAUCOT", + "email": "contact@martin-paucot.Fr" + }, + "type": "module", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.js" + }, + "./builders": { + "types": "./dist/builders/index.d.ts", + "import": "./dist/builders/index.js" + }, + "./loaders": { + "types": "./dist/loaders/index.d.ts", + "import": "./dist/loaders/index.js" + }, + "./resolvers": { + "types": "./dist/resolvers/index.d.ts", + "import": "./dist/resolvers/index.js" + }, + "./ui": { + "types": "./dist/ui/index.d.ts", + "import": "./dist/ui/index.js" + } + }, + "homepage": "https://openapi-ts.dev", + "repository": { + "type": "git", + "url": "https://github.com/openapi-ts/openapi-typescript", + "directory": "packages/openapi-decorators" + }, + "bugs": { + "url": "https://github.com/openapi-ts/openapi-typescript/issues" + }, + "keywords": [ + "openapi", + "swagger", + "rest", + "api", + "oapi_3", + "oapi_3_1", + "typescript" + ], + "scripts": { + "build": "tsup", + "dev": "tsup --watch", + "format": "biome format . --write", + "lint": "biome check .", + "test": "vitest run", + "coverage": "vitest run --coverage", + "version": "pnpm run prepare && pnpm run build" + }, + "dependencies": { + "@fastify/deepmerge": "^2.0.0", + "lodash": "^4.17.21", + "openapi-types": "^12.1.3", + "reflect-metadata": "^0.2.2" + }, + "devDependencies": { + "@types/lodash": "^4.17.7", + "@types/node": "^22.1.0", + "@vitest/coverage-v8": "^2.0.5", + "del-cli": "^5.1.0", + "esbuild": "^0.20.2", + "execa": "^8.0.1", + "tsup": "^8.2.4", + "typescript": "^5.4.5", + "unplugin-swc": "^1.5.1" + } +} diff --git a/packages/openapi-decorators/src/builders/base-builder.ts b/packages/openapi-decorators/src/builders/base-builder.ts new file mode 100644 index 000000000..42feac807 --- /dev/null +++ b/packages/openapi-decorators/src/builders/base-builder.ts @@ -0,0 +1,3 @@ +export abstract class BaseBuilder { + public abstract build(): T; +} diff --git a/packages/openapi-decorators/src/builders/document-builder.ts b/packages/openapi-decorators/src/builders/document-builder.ts new file mode 100644 index 000000000..f72fa4808 --- /dev/null +++ b/packages/openapi-decorators/src/builders/document-builder.ts @@ -0,0 +1,129 @@ +import type { OpenAPIV3 } from "openapi-types"; +import { buildDocumentBase } from "../fixtures/document-base"; +import { BaseBuilder } from "./base-builder"; +import { generateScalarUI } from "../ui/scalar"; +import type { Type } from "../types"; +import { TypeResolver } from "../resolvers/type-resolver"; +import { ModelTypeResolver } from "../resolvers/model-resolver"; +import type { OperationBuilder } from "./operation-builder"; + +export class DocumentBuilder extends BaseBuilder { + private readonly document: OpenAPIV3.Document = buildDocumentBase(); + private readonly operations: OperationBuilder[] = []; + private readonly resolvers: Type[] = [ModelTypeResolver]; + + public setTitle(title: string): this { + this.document.info.title = title; + return this; + } + + public setDescription(description: string): this { + this.document.info.description = description; + return this; + } + + public schemaRef(name: string): OpenAPIV3.ReferenceObject | false { + const schema = this.document.components?.schemas?.[name]; + if (!schema) { + return false; + } + + return { + $ref: `#/components/schemas/${name}`, + }; + } + + public addOperation(operation: OperationBuilder) { + this.operations.push(operation); + } + + // public setOperation(method: OpenAPIV3.HttpMethods, pattern: string, operation: OpenAPIV3.OperationObject) { + // if (!this.document.paths[pattern]) { + // this.document.paths[pattern] = {}; + // } + // + // // biome-ignore lint/style/noNonNullAssertion: Defined two lines above + // this.document.paths[pattern]![method] = operation; + // } + + public scalar(url: string): string { + return generateScalarUI(url); + } + + public addResolver(resolver: Type): this { + this.resolvers.push(resolver); + return this; + } + + public async resolve(type: any): Promise { + if (type instanceof TypeResolver) { + return this.resolveFromTypeResolver(type); + } + + for (const typeResolver of this.resolvers) { + // TODO: Fix type + if (!(typeResolver as any).supports(type)) { + continue; + } + + const resolver = new typeResolver(type); + return this.resolveFromTypeResolver(resolver); + } + + throw new Error("Cannot resolve type"); + } + + private async resolveFromTypeResolver(typeResolver: TypeResolver): Promise { + const name = typeResolver.name(); + const existing = this.schemaRef(name); + if (existing) { + return existing; + } + + // TODO: Do this properly + this.document.components = { + ...this.document.components, + schemas: { + ...this.document.components?.schemas, + [name]: {}, + }, + }; + + const schema = await typeResolver.schema(this); + + this.document.components = { + ...this.document.components, + schemas: { + ...this.document.components?.schemas, + [name]: schema, + }, + }; + + return { + $ref: `#/components/schemas/${name}`, + }; + } + + // TODO: Add proper errors + public build(): OpenAPIV3.Document { + for (const operation of this.operations) { + if (!operation.pattern) { + throw new Error("Operation does not have a pattern"); + } + + if (!operation.method) { + throw new Error("Operation does not have a method"); + } + + this.document.paths = { + ...this.document.paths, + [operation.pattern]: { + ...this.document.paths[operation.pattern], + [operation.method]: operation.build(), + }, + }; + } + + return this.document; + } +} diff --git a/packages/openapi-decorators/src/builders/index.ts b/packages/openapi-decorators/src/builders/index.ts new file mode 100644 index 000000000..7155e5a4b --- /dev/null +++ b/packages/openapi-decorators/src/builders/index.ts @@ -0,0 +1,3 @@ +export * from "./base-builder"; +export * from "./document-builder"; +export * from "./operation-builder"; diff --git a/packages/openapi-decorators/src/builders/operation-builder.ts b/packages/openapi-decorators/src/builders/operation-builder.ts new file mode 100644 index 000000000..c26b9c8eb --- /dev/null +++ b/packages/openapi-decorators/src/builders/operation-builder.ts @@ -0,0 +1,40 @@ +import type { OpenAPIV3 } from "openapi-types"; +import { BaseBuilder } from "./base-builder"; +import { deepmerge } from "../utils/deepmerge"; + +export class OperationBuilder extends BaseBuilder { + method: `${OpenAPIV3.HttpMethods}` | undefined; + pattern: string | undefined; + + #operation: OpenAPIV3.OperationObject = { + responses: {}, + }; + + setRequestBody(body: OpenAPIV3.ReferenceObject | OpenAPIV3.RequestBodyObject) { + this.#operation.requestBody = body; + return this; + } + + addTags(...tags: string[]) { + this.#operation.tags = [...(this.#operation.tags ?? []), ...tags]; + return this; + } + + setResponse(code: string, response: OpenAPIV3.ResponseObject) { + this.#operation.responses[code] = response; + return this; + } + + addParameter(parameter: OpenAPIV3.ParameterObject) { + this.#operation.parameters = [...(this.#operation.parameters ?? []), parameter]; + } + + merge(operation: Partial) { + this.#operation = deepmerge(this.#operation, operation); + return this; + } + + build(): OpenAPIV3.OperationObject { + return this.#operation; + } +} diff --git a/packages/openapi-decorators/src/decorators/api-body.ts b/packages/openapi-decorators/src/decorators/api-body.ts new file mode 100644 index 000000000..581a4ad91 --- /dev/null +++ b/packages/openapi-decorators/src/decorators/api-body.ts @@ -0,0 +1,19 @@ +import type { OpenAPIV3 } from "openapi-types"; +import type { SchemaType } from "../types"; + +export const ApiBodyMetadataKey = Symbol("apiBodyKey"); + +export type ApiBodyMetadata = Omit & { + type?: SchemaType; + isArray?: boolean; +}; + +export type ApiBodyOptions = ApiBodyMetadata; + +export function apiBody(options: ApiBodyMetadata): MethodDecorator { + return Reflect.metadata(ApiBodyMetadataKey, options); +} + +export function getApiBody(target: any, propertyKey: string): ApiBodyMetadata | undefined { + return Reflect.getMetadata(ApiBodyMetadataKey, target, propertyKey); +} diff --git a/packages/openapi-decorators/src/decorators/api-operation.ts b/packages/openapi-decorators/src/decorators/api-operation.ts new file mode 100644 index 000000000..85afdd7cd --- /dev/null +++ b/packages/openapi-decorators/src/decorators/api-operation.ts @@ -0,0 +1,18 @@ +import type { OpenAPIV3 } from "openapi-types"; + +export const ApiOperationMetadataKey = Symbol("ApiOperation"); + +export type ApiOperationOptions = Partial< + OpenAPIV3.OperationObject & { + method: `${OpenAPIV3.HttpMethods}`; + pattern: string; + } +>; + +export function apiOperation(options: ApiOperationOptions): MethodDecorator { + return Reflect.metadata(ApiOperationMetadataKey, options); +} + +export function getApiOperation(target: any, propertyKey: string) { + return Reflect.getMetadata(ApiOperationMetadataKey, target, propertyKey) as ApiOperationOptions | undefined; +} diff --git a/packages/openapi-decorators/src/decorators/api-param.ts b/packages/openapi-decorators/src/decorators/api-param.ts new file mode 100644 index 000000000..17da18b04 --- /dev/null +++ b/packages/openapi-decorators/src/decorators/api-param.ts @@ -0,0 +1,22 @@ +import type { OpenAPIV3 } from "openapi-types"; +import type { MetadataKey, SchemaType } from "../types"; + +export const ApiParamMetadataKeyPrefix = "__api_param"; + +export type ApiParamOptions = Omit & { + type?: SchemaType; +}; + +export function apiParam(options: ApiParamOptions): MethodDecorator { + return Reflect.metadata(`${ApiParamMetadataKeyPrefix}${options.name}`, options); +} + +export function getApiParams(target: any, propertyKey: string): ApiParamOptions[] { + const keys = Reflect.getMetadataKeys(target, propertyKey) as MetadataKey[]; + + return keys + .filter((k) => typeof k === "string" && k.startsWith(ApiParamMetadataKeyPrefix)) + .map((key) => { + return Reflect.getMetadata(key.toString(), target, propertyKey); + }); +} diff --git a/packages/openapi-decorators/src/decorators/api-property.ts b/packages/openapi-decorators/src/decorators/api-property.ts new file mode 100644 index 000000000..70523d7bc --- /dev/null +++ b/packages/openapi-decorators/src/decorators/api-property.ts @@ -0,0 +1,35 @@ +import type { MetadataKey, SchemaType } from "../types"; +import type { OpenAPIV3 } from "openapi-types"; +import { getMetadataPropertyType } from "../utils/metadata"; + +export type ApiPropertyOptions = Omit & { + type?: SchemaType; + required?: boolean; +}; + +const ApiPropertyMetadataKeyPrefix = "__api_property_"; + +export function apiProperty(options: ApiPropertyOptions = {}): PropertyDecorator { + return (target: any, propertyKey: string | symbol, descriptor?: PropertyDescriptor) => { + if (!options.type) { + options.type = getMetadataPropertyType(target, propertyKey, descriptor); + } + + Reflect.defineMetadata(`${ApiPropertyMetadataKeyPrefix}${propertyKey.toString()}`, options, target); + return target; + }; +} + +export function getApiProperties(target: any) { + const keys = Reflect.getMetadataKeys(target) as MetadataKey[]; + const properties: Record = {}; + + for (const key of keys.filter( + (k) => typeof k === "string" && k.startsWith(ApiPropertyMetadataKeyPrefix), + ) as string[]) { + const propertyKey = key.replace(ApiPropertyMetadataKeyPrefix, ""); + properties[propertyKey] = Reflect.getMetadata(key, target); + } + + return properties; +} diff --git a/packages/openapi-decorators/src/decorators/api-query.ts b/packages/openapi-decorators/src/decorators/api-query.ts new file mode 100644 index 000000000..18a09449d --- /dev/null +++ b/packages/openapi-decorators/src/decorators/api-query.ts @@ -0,0 +1,22 @@ +import type { OpenAPIV3 } from "openapi-types"; +import type { MetadataKey, SchemaType } from "../types"; + +export const ApiQueryMetadataKeyPrefix = "__api_query"; + +export type ApiQueryOptions = Omit & { + type?: SchemaType; +}; + +export function apiQuery(options: ApiQueryOptions): MethodDecorator { + return Reflect.metadata(`${ApiQueryMetadataKeyPrefix}${options.name}`, options); +} + +export function getApiQueries(target: any, propertyKey: string): ApiQueryOptions[] { + const keys = Reflect.getMetadataKeys(target, propertyKey) as MetadataKey[]; + + return keys + .filter((k) => typeof k === "string" && k.startsWith(ApiQueryMetadataKeyPrefix)) + .map((key) => { + return Reflect.getMetadata(key.toString(), target, propertyKey); + }); +} diff --git a/packages/openapi-decorators/src/decorators/api-response.ts b/packages/openapi-decorators/src/decorators/api-response.ts new file mode 100644 index 000000000..7f6cbfd92 --- /dev/null +++ b/packages/openapi-decorators/src/decorators/api-response.ts @@ -0,0 +1,26 @@ +import type { OpenAPIV3 } from "openapi-types"; +import type { MetadataKey, SchemaType } from "../types"; + +const ApiResponseMetadataKeyPrefix = "__api_response_"; + +export type ApiResponseMetadata = { + status?: number; + type?: SchemaType; +} & Omit; + +export type ApiResponseOptions = ApiResponseMetadata; + +export function apiResponse(options: ApiResponseOptions): MethodDecorator { + const status = options.status ?? "default"; + return Reflect.metadata(`${ApiResponseMetadataKeyPrefix}${status}`, options); +} + +export function getApiResponses(target: any, propertyKey: string): ApiResponseOptions[] { + const keys = Reflect.getMetadataKeys(target, propertyKey) as MetadataKey[]; + + return keys + .filter((k) => typeof k === "string" && k.startsWith(ApiResponseMetadataKeyPrefix)) + .map((key) => { + return Reflect.getMetadata(key.toString(), target, propertyKey); + }); +} diff --git a/packages/openapi-decorators/src/decorators/api-tags.ts b/packages/openapi-decorators/src/decorators/api-tags.ts new file mode 100644 index 000000000..e22e3d993 --- /dev/null +++ b/packages/openapi-decorators/src/decorators/api-tags.ts @@ -0,0 +1,12 @@ +export const ApiTagsMetadataKey = Symbol("ApiTags"); + +export function apiTags(...tags: string[]): ClassDecorator & MethodDecorator { + return Reflect.metadata(ApiTagsMetadataKey, tags); +} + +export function getApiTags(target: any, propertyKey?: string): string[] | undefined { + if (propertyKey) { + return Reflect.getMetadata(ApiTagsMetadataKey, target, propertyKey); + } + return Reflect.getMetadata(ApiTagsMetadataKey, target); +} diff --git a/packages/openapi-decorators/src/decorators/index.ts b/packages/openapi-decorators/src/decorators/index.ts new file mode 100644 index 000000000..97a6fb419 --- /dev/null +++ b/packages/openapi-decorators/src/decorators/index.ts @@ -0,0 +1,7 @@ +export * from "./api-body"; +export * from "./api-operation"; +export * from "./api-property"; +export * from "./api-response"; +export * from "./api-tags"; +export * from "./api-param"; +export * from "./api-query"; diff --git a/packages/openapi-decorators/src/fixtures/document-base.ts b/packages/openapi-decorators/src/fixtures/document-base.ts new file mode 100644 index 000000000..1445f73c0 --- /dev/null +++ b/packages/openapi-decorators/src/fixtures/document-base.ts @@ -0,0 +1,17 @@ +import type { OpenAPIV3 } from "openapi-types"; + +export const buildDocumentBase = (): OpenAPIV3.Document => ({ + openapi: "3.0.0", + info: { + title: "", + description: "", + version: "1.0.0", + contact: {}, + }, + tags: [], + servers: [], + paths: {}, + components: { + schemas: {}, + }, +}); diff --git a/packages/openapi-decorators/src/index.ts b/packages/openapi-decorators/src/index.ts new file mode 100644 index 000000000..37b909e72 --- /dev/null +++ b/packages/openapi-decorators/src/index.ts @@ -0,0 +1 @@ +export * from "./decorators"; diff --git a/packages/openapi-decorators/src/loaders/index.ts b/packages/openapi-decorators/src/loaders/index.ts new file mode 100644 index 000000000..72202569f --- /dev/null +++ b/packages/openapi-decorators/src/loaders/index.ts @@ -0,0 +1,9 @@ +export * from "./loadApiBody"; +export * from "./loadApiOperation"; +export * from "./loadApiParam"; +export * from "./loadApiProperty"; +export * from "./loadApiQuery"; +export * from "./loadApiResponse"; +export * from "./loadApiTags"; +export * from "./loadController"; +export * from "./loadType"; diff --git a/packages/openapi-decorators/src/loaders/loadApiBody.ts b/packages/openapi-decorators/src/loaders/loadApiBody.ts new file mode 100644 index 000000000..2310e3187 --- /dev/null +++ b/packages/openapi-decorators/src/loaders/loadApiBody.ts @@ -0,0 +1,19 @@ +import type { DocumentBuilder } from "../builders/document-builder"; +import type { OperationBuilder } from "../builders/operation-builder"; +import type { ApiBodyOptions } from "../decorators"; +import { resolveType } from "./loadType"; + +export async function loadApiBody(document: DocumentBuilder, operation: OperationBuilder, apiBody: ApiBodyOptions) { + const { type, isArray, ...rest } = apiBody; + + const schema = type ? await resolveType(document, type) : undefined; + + operation.setRequestBody({ + ...rest, + content: { + "application/json": { + schema, + }, + }, + }); +} diff --git a/packages/openapi-decorators/src/loaders/loadApiOperation.ts b/packages/openapi-decorators/src/loaders/loadApiOperation.ts new file mode 100644 index 000000000..5fbab8944 --- /dev/null +++ b/packages/openapi-decorators/src/loaders/loadApiOperation.ts @@ -0,0 +1,16 @@ +import type { OperationBuilder } from "../builders/operation-builder"; +import type { ApiOperationOptions } from "../decorators/api-operation"; + +export function loadApiOperation(operation: OperationBuilder, apiOperation: ApiOperationOptions) { + const { pattern, method, ...rest } = apiOperation; + + if (pattern) { + operation.pattern = pattern; + } + + if (method) { + operation.method = method; + } + + operation.merge(rest); +} diff --git a/packages/openapi-decorators/src/loaders/loadApiParam.ts b/packages/openapi-decorators/src/loaders/loadApiParam.ts new file mode 100644 index 000000000..1cfec7fe0 --- /dev/null +++ b/packages/openapi-decorators/src/loaders/loadApiParam.ts @@ -0,0 +1,16 @@ +import type { DocumentBuilder } from "../builders/document-builder"; +import type { OperationBuilder } from "../builders/operation-builder"; +import type { ApiParamOptions } from "../decorators/api-param"; +import { resolveType } from "./loadType"; + +export async function loadApiParam(document: DocumentBuilder, operation: OperationBuilder, apiParam: ApiParamOptions) { + const { type, ...rest } = apiParam; + + const schema = await resolveType(document, type ?? "string"); + + operation.addParameter({ + in: "path", + schema, + ...rest, + }); +} diff --git a/packages/openapi-decorators/src/loaders/loadApiProperty.ts b/packages/openapi-decorators/src/loaders/loadApiProperty.ts new file mode 100644 index 000000000..832f8c013 --- /dev/null +++ b/packages/openapi-decorators/src/loaders/loadApiProperty.ts @@ -0,0 +1,27 @@ +import type { OpenAPIV3 } from "openapi-types"; +import type { DocumentBuilder } from "../builders/document-builder"; +import type { ApiPropertyOptions } from "../decorators/api-property"; +import { resolveType } from "./loadType"; + +export async function loadApiProperty( + document: DocumentBuilder, + schema: OpenAPIV3.SchemaObject, + name: string, + apiProperty: ApiPropertyOptions, +) { + const { type, required, ...rest } = apiProperty; + + const resolved = type ? await resolveType(document, type) : undefined; + + schema.properties = { + ...schema.properties, + [name]: { + ...resolved, + ...rest, + }, + }; + + if (required !== false) { + schema.required = [...(schema.required ?? []), name]; + } +} diff --git a/packages/openapi-decorators/src/loaders/loadApiQuery.ts b/packages/openapi-decorators/src/loaders/loadApiQuery.ts new file mode 100644 index 000000000..7c5e9f919 --- /dev/null +++ b/packages/openapi-decorators/src/loaders/loadApiQuery.ts @@ -0,0 +1,16 @@ +import type { DocumentBuilder } from "../builders/document-builder"; +import type { OperationBuilder } from "../builders/operation-builder"; +import type { ApiQueryOptions } from "../decorators/api-query"; +import { resolveType } from "./loadType"; + +export async function loadApiQuery(document: DocumentBuilder, operation: OperationBuilder, apiQuery: ApiQueryOptions) { + const { type, ...rest } = apiQuery; + + const schema = await resolveType(document, type ?? "string"); + + operation.addParameter({ + in: "query", + schema, + ...rest, + }); +} diff --git a/packages/openapi-decorators/src/loaders/loadApiResponse.ts b/packages/openapi-decorators/src/loaders/loadApiResponse.ts new file mode 100644 index 000000000..f921c8a76 --- /dev/null +++ b/packages/openapi-decorators/src/loaders/loadApiResponse.ts @@ -0,0 +1,23 @@ +import type { DocumentBuilder } from "../builders/document-builder"; +import type { OperationBuilder } from "../builders/operation-builder"; +import type { ApiResponseOptions } from "../decorators/api-response"; +import { resolveType } from "./loadType"; + +export async function loadApiResponse( + document: DocumentBuilder, + operation: OperationBuilder, + apiResponse: ApiResponseOptions, +) { + const { type, status, ...rest } = apiResponse; + const schema = type ? await resolveType(document, type) : undefined; + + operation.setResponse(status?.toString() ?? "200", { + description: "OK", // TODO: Depends on status, + content: { + "application/json": { + schema, + }, + }, + ...rest, + }); +} diff --git a/packages/openapi-decorators/src/loaders/loadApiTags.ts b/packages/openapi-decorators/src/loaders/loadApiTags.ts new file mode 100644 index 000000000..16e889aa0 --- /dev/null +++ b/packages/openapi-decorators/src/loaders/loadApiTags.ts @@ -0,0 +1,5 @@ +import type { OperationBuilder } from "../builders/operation-builder"; + +export function loadApiTags(operation: OperationBuilder, apiTags: string[]) { + return operation.addTags(...apiTags); +} diff --git a/packages/openapi-decorators/src/loaders/loadController.ts b/packages/openapi-decorators/src/loaders/loadController.ts new file mode 100644 index 000000000..6f4d80642 --- /dev/null +++ b/packages/openapi-decorators/src/loaders/loadController.ts @@ -0,0 +1,59 @@ +import type { DocumentBuilder } from "../builders/document-builder"; +import type { OperationBuilder } from "../builders/operation-builder"; +import { getApiBody } from "../decorators/api-body"; +import { getApiOperation } from "../decorators/api-operation"; +import { getApiParams } from "../decorators/api-param"; +import { getApiQueries } from "../decorators/api-query"; +import { getApiResponses } from "../decorators/api-response"; +import { getApiTags } from "../decorators/api-tags"; +import { loadApiBody } from "./loadApiBody"; +import { loadApiOperation } from "./loadApiOperation"; +import { loadApiParam } from "./loadApiParam"; +import { loadApiQuery } from "./loadApiQuery"; +import { loadApiResponse } from "./loadApiResponse"; +import { loadApiTags } from "./loadApiTags"; + +export async function loadController( + document: DocumentBuilder, + operation: OperationBuilder, + target: any, + propertyKey: string, +) { + const globalApiTags = getApiTags(target.constructor); + if (globalApiTags) { + loadApiTags(operation, globalApiTags); + } + + const apiOperation = getApiOperation(target, propertyKey); + if (apiOperation) { + loadApiOperation(operation, apiOperation); + } + + const apiTags = getApiTags(target, propertyKey); + if (apiTags) { + loadApiTags(operation, apiTags); + } + + const apiBody = getApiBody(target, propertyKey); + if (apiBody) { + await loadApiBody(document, operation, apiBody); + } + + const apiResponses = getApiResponses(target, propertyKey); + for (const apiResponse of apiResponses) { + await loadApiResponse(document, operation, apiResponse); + } + + const apiParams = getApiParams(target, propertyKey); + for (const apiParam of apiParams) { + await loadApiParam(document, operation, apiParam); + } + + const apiQueries = getApiQueries(target, propertyKey); + for (const apiQuery of apiQueries) { + await loadApiQuery(document, operation, apiQuery); + } + + const name = target.constructor.name.replace("Controller", ""); + loadApiTags(operation, [name]); +} diff --git a/packages/openapi-decorators/src/loaders/loadType.ts b/packages/openapi-decorators/src/loaders/loadType.ts new file mode 100644 index 000000000..a1bdb5249 --- /dev/null +++ b/packages/openapi-decorators/src/loaders/loadType.ts @@ -0,0 +1,38 @@ +import type { OpenAPIV3 } from "openapi-types"; +import type { DocumentBuilder } from "../builders/document-builder"; +import type { SchemaType } from "../types"; + +export async function resolveType( + document: DocumentBuilder, + type: SchemaType, +): Promise { + if (typeof type === "string") { + return { + type: type as OpenAPIV3.NonArraySchemaObjectType, // TODO: Fix that + }; + } + + if (type === String) { + return { + type: "string", + }; + } + + if (type === Number) { + return { + type: "number", + }; + } + + if (type === Boolean) { + return { + type: "boolean", + }; + } + + if (typeof type === "object" && "$ref" in type) { + return type; + } + + return document.resolve(type); +} diff --git a/packages/openapi-decorators/src/resolvers/index.ts b/packages/openapi-decorators/src/resolvers/index.ts new file mode 100644 index 000000000..a510488ea --- /dev/null +++ b/packages/openapi-decorators/src/resolvers/index.ts @@ -0,0 +1,2 @@ +export * from "./type-resolver"; +export { ModelType } from "./model-resolver"; diff --git a/packages/openapi-decorators/src/resolvers/model-resolver.ts b/packages/openapi-decorators/src/resolvers/model-resolver.ts new file mode 100644 index 000000000..ae25152be --- /dev/null +++ b/packages/openapi-decorators/src/resolvers/model-resolver.ts @@ -0,0 +1,37 @@ +import type { OpenAPIV3 } from "openapi-types"; +import { TypeResolver } from "./type-resolver"; +import { getApiProperties } from "../decorators/api-property"; +import { loadApiProperty } from "../loaders"; +import type { DocumentBuilder } from "../builders"; + +export class ModelTypeResolver extends TypeResolver { + constructor(private readonly type: any) { + super(); + } + + public name(): string { + return this.type.name; + } + + public async schema(document: DocumentBuilder): Promise { + const schema: OpenAPIV3.SchemaObject = { + type: "object", + }; + + const properties = getApiProperties(this.type.prototype); + + for (const [name, apiProperty] of Object.entries(properties)) { + loadApiProperty(document, schema, name, apiProperty); + } + + return schema; + } + + public static supports(type: any): boolean { + return true; + } +} + +export function ModelType(type: any) { + return new ModelTypeResolver(type); +} diff --git a/packages/openapi-decorators/src/resolvers/type-resolver.ts b/packages/openapi-decorators/src/resolvers/type-resolver.ts new file mode 100644 index 000000000..f37b17833 --- /dev/null +++ b/packages/openapi-decorators/src/resolvers/type-resolver.ts @@ -0,0 +1,11 @@ +import type { OpenAPIV3 } from "openapi-types"; +import type { DocumentBuilder } from "../builders"; + +export abstract class TypeResolver { + public abstract name(): string; + public abstract schema(document: DocumentBuilder): Promise; + + public static supports(type: any): boolean { + return false; + } +} diff --git a/packages/openapi-decorators/src/types.ts b/packages/openapi-decorators/src/types.ts new file mode 100644 index 000000000..752a95ffb --- /dev/null +++ b/packages/openapi-decorators/src/types.ts @@ -0,0 +1,18 @@ +import type { OpenAPIV3 } from "openapi-types"; +import type { TypeResolver } from "./resolvers"; + +export interface Type extends Function { + new (...args: any[]): T; +} + +export type MetadataKey = string | Symbol; + +export type SchemaType = + | Type + | TypeResolver + | OpenAPIV3.NonArraySchemaObjectType + | OpenAPIV3.ReferenceObject + | any + | {}; + +export type Resolver = (target: any) => OpenAPIV3.SchemaObject | false; diff --git a/packages/openapi-decorators/src/ui/index.ts b/packages/openapi-decorators/src/ui/index.ts new file mode 100644 index 000000000..c9b39ccbf --- /dev/null +++ b/packages/openapi-decorators/src/ui/index.ts @@ -0,0 +1 @@ +export * from "./scalar"; diff --git a/packages/openapi-decorators/src/ui/scalar.ts b/packages/openapi-decorators/src/ui/scalar.ts new file mode 100644 index 000000000..240fdad14 --- /dev/null +++ b/packages/openapi-decorators/src/ui/scalar.ts @@ -0,0 +1,21 @@ +export function generateScalarUI(url: string) { + return ` + + + + API Reference + + + + + + + + + `; +} diff --git a/packages/openapi-decorators/src/utils/deepmerge.ts b/packages/openapi-decorators/src/utils/deepmerge.ts new file mode 100644 index 000000000..c6cf0b8c2 --- /dev/null +++ b/packages/openapi-decorators/src/utils/deepmerge.ts @@ -0,0 +1,6 @@ +import deepmergeBase from "@fastify/deepmerge"; + +export function deepmerge(target: T, source: Partial): T { + const dm = deepmergeBase(); + return dm(target, source) as T; +} diff --git a/packages/openapi-decorators/src/utils/metadata.ts b/packages/openapi-decorators/src/utils/metadata.ts new file mode 100644 index 000000000..ee4513578 --- /dev/null +++ b/packages/openapi-decorators/src/utils/metadata.ts @@ -0,0 +1,13 @@ +import type { Type } from "../types"; + +export function getMetadataPropertyType( + target: any, + propertyKey: string | symbol, + descriptor?: PropertyDescriptor, +): Type | undefined { + if (descriptor?.get || descriptor?.value) { + return Reflect.getMetadata("design:returntype", target, propertyKey); + } + + return Reflect.getMetadata("design:type", target, propertyKey); +} diff --git a/packages/openapi-decorators/test/decorators.test.ts b/packages/openapi-decorators/test/decorators.test.ts new file mode 100644 index 000000000..491b4402d --- /dev/null +++ b/packages/openapi-decorators/test/decorators.test.ts @@ -0,0 +1,132 @@ +import "reflect-metadata"; +import { + apiBody, + apiOperation, + apiParam, + apiProperty, + apiQuery, + apiResponse, + apiTags, + getApiBody, + getApiOperation, + getApiParams, + getApiProperties, + getApiQueries, + getApiResponses, + getApiTags, +} from "../src/decorators"; + +describe("decorators", () => { + describe("apiBody", () => { + it("should apply decorator properly", () => { + class TestController { + @apiBody({ type: "string" }) + public index() {} + } + + expect(getApiBody(TestController.prototype, "index")).toEqual({ type: "string" }); + }); + }); + + describe("apiOperation", () => { + it("should apply decorator properly", () => { + class TestController { + @apiOperation({ summary: "TEST", tags: ["Test"] }) + public index() {} + } + + expect(getApiOperation(TestController.prototype, "index")).toEqual({ summary: "TEST", tags: ["Test"] }); + }); + }); + + describe("apiParam", () => { + it("should apply decorator properly", () => { + class TestController { + @apiParam({ name: "test", type: "string" }) + @apiParam({ name: "hello" }) + public index() {} + } + + const apiParams = getApiParams(TestController.prototype, "index"); + expect(apiParams).toContainEqual({ name: "test", type: "string" }); + expect(apiParams).toContainEqual({ name: "hello" }); + }); + }); + + describe("apiProperty", () => { + it("should apply decorator properly", () => { + class User { + @apiProperty({ type: String }) + exampleProperty = "test"; + + @apiProperty() + declare exampleDeclared: number; + + @apiProperty() + public exampleMethod(): string { + return this.exampleProperty; + } + + @apiProperty() + public get exampleGetter(): number { + return this.exampleDeclared; + } + } + + expect(getApiProperties(User.prototype)).toEqual({ + exampleProperty: { type: String }, + exampleDeclared: { type: Number }, + exampleMethod: { type: String }, + exampleGetter: { type: Number }, + }); + }); + }); + + describe("apiQuery", () => { + it("should apply decorator properly", () => { + class TestController { + @apiQuery({ name: "query" }) + @apiQuery({ name: "filter" }) + public index() {} + } + + const apiQueries = getApiQueries(TestController.prototype, "index"); + expect(apiQueries).toContainEqual({ name: "query" }); + expect(apiQueries).toContainEqual({ name: "filter" }); + }); + }); + + describe("apiResponse", () => { + it("should apply decorator properly", () => { + class TestController { + @apiResponse({ status: 200, type: String }) + @apiResponse({ status: 400 }) + public index() {} + } + + const apiResponses = getApiResponses(TestController.prototype, "index"); + expect(apiResponses).toContainEqual({ status: 200, type: String }); + expect(apiResponses).toContainEqual({ status: 400 }); + }); + }); + + describe("apiTags", () => { + it("should apply decorator on methods", () => { + class TestController { + @apiTags("test") + public index() {} + } + + expect(getApiTags(TestController.prototype, "index")).toContainEqual("test"); + }); + + it("should apply decorator on classes", () => { + @apiTags("test") + class TestController { + public index() {} + } + + expect(getApiTags(TestController)).toContainEqual("test"); + }); + }); +}); diff --git a/packages/openapi-decorators/test/loaders.test.ts b/packages/openapi-decorators/test/loaders.test.ts new file mode 100644 index 000000000..fa826c17d --- /dev/null +++ b/packages/openapi-decorators/test/loaders.test.ts @@ -0,0 +1,337 @@ +import "reflect-metadata"; +import { DocumentBuilder } from "../src/builders/document-builder"; +import { OperationBuilder } from "../src/builders/operation-builder"; +import { loadApiBody } from "../src/loaders/loadApiBody"; +import { loadApiOperation } from "../src/loaders/loadApiOperation"; +import { loadApiParam } from "../src/loaders/loadApiParam"; +import { loadApiProperty } from "../src/loaders/loadApiProperty"; +import { loadApiQuery } from "../src/loaders/loadApiQuery"; +import { loadApiResponse } from "../src/loaders/loadApiResponse"; +import { loadApiTags } from "../src/loaders/loadApiTags"; +import { resolveType } from "../src/loaders/loadType"; +import type { OpenAPIV3 } from "openapi-types"; +import { apiBody, apiOperation, apiParam, apiQuery, apiResponse, apiTags } from "../src"; +import { loadController } from "../src/loaders"; + +describe("loaders", () => { + describe("loadApiBody", () => { + it("should properly enrich operation", async () => { + const document = new DocumentBuilder(); + const operation = new OperationBuilder(); + + await loadApiBody(document, operation, { + type: "string", + }); + + expect(operation.build().requestBody).toEqual({ + content: { + "application/json": { + schema: { + type: "string", + }, + }, + }, + }); + }); + }); + + describe("loadApiOperation", () => { + it("should properly enrich operation", () => { + const operation = new OperationBuilder(); + + loadApiOperation(operation, { + summary: "Test summary", + }); + + expect(operation.build()).toEqual({ + summary: "Test summary", + responses: {}, + }); + }); + + it("should properly merge tags", () => { + const operation = new OperationBuilder().addTags("Hello"); + + loadApiOperation(operation, { + tags: ["World"], + }); + + expect(operation.build()).toEqual({ + tags: ["Hello", "World"], + responses: {}, + }); + }); + + it("should override method and pattern", () => { + const operation = new OperationBuilder(); + operation.pattern = "/nop"; + operation.method = "post"; + + loadApiOperation(operation, { + method: "get", + pattern: "/users", + }); + + expect(operation.method).toBe("get"); + expect(operation.pattern).toBe("/users"); + }); + }); + + describe("loadApiParam", () => { + it("should properly enrich operation", async () => { + const document = new DocumentBuilder(); + const operation = new OperationBuilder(); + + await loadApiParam(document, operation, { + name: "userId", + }); + + await loadApiParam(document, operation, { + name: "collectionId", + type: "number", + }); + + const parameters = operation.build().parameters; + expect(parameters).toContainEqual({ name: "userId", in: "path", schema: { type: "string" } }); + expect(parameters).toContainEqual({ name: "collectionId", in: "path", schema: { type: "number" } }); + }); + }); + + describe("loadApiProperty", () => { + it("should properly enrich schema", async () => { + const document = new DocumentBuilder(); + const schema: OpenAPIV3.SchemaObject = {}; + + await loadApiProperty(document, schema, "id", {}); + await loadApiProperty(document, schema, "name", { type: "string" }); + await loadApiProperty(document, schema, "notRequired", { type: "number", required: false }); + + expect(schema.required).toContainEqual("id"); + expect(schema.required).toContainEqual("name"); + expect(schema.required).not.toContainEqual("notRequired"); + + expect(schema.properties?.id).toEqual({}); + expect(schema.properties?.name).toEqual({ type: "string" }); + expect(schema.properties?.notRequired).toEqual({ type: "number" }); + }); + }); + + describe("loadApiQuery", () => { + it("should properly enrich operation", async () => { + const document = new DocumentBuilder(); + const operation = new OperationBuilder(); + + await loadApiQuery(document, operation, { + name: "userId", + }); + + await loadApiQuery(document, operation, { + name: "collectionId", + type: "number", + }); + + const parameters = operation.build().parameters; + expect(parameters).toContainEqual({ name: "userId", in: "query", schema: { type: "string" } }); + expect(parameters).toContainEqual({ name: "collectionId", in: "query", schema: { type: "number" } }); + }); + }); + + describe("loadApiResponse", () => { + it("should properly enrich operation", async () => { + const document = new DocumentBuilder(); + const operation = new OperationBuilder(); + + await loadApiResponse(document, operation, { + status: 200, + type: "string", + }); + + await loadApiResponse(document, operation, { + status: 500, + type: "number", + }); + + const responses = operation.build().responses; + expect(responses[200]).toEqual({ + description: "OK", + content: { + "application/json": { + schema: { + type: "string", + }, + }, + }, + }); + + expect(responses[500]).toEqual({ + description: "OK", // TODO: Wrong description + content: { + "application/json": { + schema: { + type: "number", + }, + }, + }, + }); + }); + }); + + describe("loadApiTags", () => { + it("should properly enrich operation", () => { + const operation = new OperationBuilder(); + + loadApiTags(operation, ["hello"]); + + const tags = operation.build().tags; + + expect(tags).toContain("hello"); + }); + }); + + describe("loadType", () => { + it("should accept string types", async () => { + const document = new DocumentBuilder(); + expect(await resolveType(document, "boolean")).toEqual({ type: "boolean" }); + expect(await resolveType(document, "integer")).toEqual({ type: "integer" }); + expect(await resolveType(document, "number")).toEqual({ type: "number" }); + expect(await resolveType(document, "string")).toEqual({ type: "string" }); + }); + + it("should accept schema reference", async () => { + const document = new DocumentBuilder(); + expect(await resolveType(document, { $ref: "#/components/schemas/User" })).toEqual({ + $ref: "#/components/schemas/User", + }); + }); + + it("should accept function types", async () => { + const document = new DocumentBuilder(); + expect(await resolveType(document, Boolean)).toEqual({ type: "boolean" }); + expect(await resolveType(document, Number)).toEqual({ type: "number" }); + expect(await resolveType(document, String)).toEqual({ type: "string" }); + }); + }); +}); + +// TODO: Move (and maybe rename) this elsewhere as it is different of other loaders +describe("loadController", () => { + it("should load apiOperation", async () => { + class UsersController { + @apiOperation({ + method: "post", + pattern: "/users", + }) + public create() {} + } + + const document = new DocumentBuilder(); + const operation = new OperationBuilder(); + + await loadController(document, operation, UsersController.prototype, "create"); + + expect(operation.pattern).toBe("/users"); + expect(operation.method).toBe("post"); + }); + + it("should load tags", async () => { + @apiTags("Hello") + class UsersController { + @apiOperation({ + method: "post", + pattern: "/users", + }) + @apiTags("World") + public create() {} + } + + const document = new DocumentBuilder(); + const operation = new OperationBuilder(); + + await loadController(document, operation, UsersController.prototype, "create"); + const res = operation.build(); + + expect(res.tags).toContain("Hello"); + expect(res.tags).toContain("World"); + }); + + it("should load apiBody", async () => { + class UsersController { + @apiOperation({ + method: "post", + pattern: "/users", + }) + @apiBody({ type: String }) + public create() {} + } + + const document = new DocumentBuilder(); + const operation = new OperationBuilder(); + + await loadController(document, operation, UsersController.prototype, "create"); + + const res: any = operation.build(); + + expect(res.requestBody.content["application/json"].schema).toBeDefined(); + }); + + it("should load apiResponse", async () => { + class UsersController { + @apiOperation({ + method: "post", + pattern: "/users", + }) + @apiResponse({ type: String }) + public create() {} + } + + const document = new DocumentBuilder(); + const operation = new OperationBuilder(); + + await loadController(document, operation, UsersController.prototype, "create"); + + const res: any = operation.build(); + + expect(res.responses[200].content["application/json"].schema).toBeDefined(); + }); + + it("should load apiParam", async () => { + class UsersController { + @apiOperation({ + method: "post", + pattern: "/users", + }) + @apiParam({ name: "userId", type: String }) + @apiParam({ name: "testId", type: String }) + public create() {} + } + + const document = new DocumentBuilder(); + const operation = new OperationBuilder(); + + await loadController(document, operation, UsersController.prototype, "create"); + + const res: any = operation.build(); + + expect(res.parameters).toHaveLength(2); + }); + + it("should load apiQuery", async () => { + class UsersController { + @apiOperation({ + method: "post", + pattern: "/users", + }) + @apiQuery({ name: "filter", type: String }) + public create() {} + } + + const document = new DocumentBuilder(); + const operation = new OperationBuilder(); + + await loadController(document, operation, UsersController.prototype, "create"); + + const res: any = operation.build(); + + expect(res.parameters).toHaveLength(1); + }); +}); diff --git a/packages/openapi-decorators/tsconfig.json b/packages/openapi-decorators/tsconfig.json new file mode 100644 index 000000000..856c8f0d6 --- /dev/null +++ b/packages/openapi-decorators/tsconfig.json @@ -0,0 +1,21 @@ +{ + "compilerOptions": { + "allowSyntheticDefaultImports": true, + "declaration": true, + "downlevelIteration": false, + "esModuleInterop": true, + "lib": ["ESNext", "DOM"], + "module": "ESNext", + "moduleResolution": "Bundler", + "noUncheckedIndexedAccess": true, + "outDir": "dist", + "skipLibCheck": false, + "strict": true, + "target": "ESNext", + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "types": ["vitest/globals", "reflect-metadata"] + }, + "include": ["src", "test"], + "exclude": ["example", "node_modules"] +} diff --git a/packages/openapi-decorators/tsup.config.ts b/packages/openapi-decorators/tsup.config.ts new file mode 100644 index 000000000..30c8b1761 --- /dev/null +++ b/packages/openapi-decorators/tsup.config.ts @@ -0,0 +1,8 @@ +import { defineConfig } from "tsup"; + +export default defineConfig({ + entry: ["src/index.ts", "src/builders/index.ts", "src/loaders/index.ts", "src/resolvers/index.ts", "src/ui/index.ts"], + format: ["esm"], + dts: true, + sourcemap: true, +}); diff --git a/packages/openapi-decorators/vitest.config.ts b/packages/openapi-decorators/vitest.config.ts new file mode 100644 index 000000000..8debcd30d --- /dev/null +++ b/packages/openapi-decorators/vitest.config.ts @@ -0,0 +1,12 @@ +import { defineConfig } from "vitest/config"; +import swc from "unplugin-swc"; + +export default defineConfig({ + plugins: [ + // Required to have typescript metadata working. See https://github.com/vitest-dev/vitest/discussions/3320 + swc.vite(), + ], + test: { + globals: true, + }, +}); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2fa72a6f5..f04d16b34 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -40,7 +40,151 @@ importers: devDependencies: vitepress: specifier: 1.1.4 - version: 1.1.4(@algolia/client-search@4.23.3)(@types/node@20.14.7)(@types/react@18.3.3)(axios@1.7.2)(postcss@8.4.40)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.13.0)(typescript@5.5.4) + version: 1.1.4(@algolia/client-search@4.23.3)(@types/node@22.1.0)(@types/react@18.3.3)(axios@1.7.2)(postcss@8.4.40)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.13.0)(typescript@5.5.4) + + packages/openapi-adonis: + dependencies: + '@fastify/deepmerge': + specifier: ^2.0.0 + version: 2.0.0 + '@vinejs/vine': + specifier: ^2.1.0 + version: 2.1.0 + lodash: + specifier: ^4.17.21 + version: 4.17.21 + openapi-decorators: + specifier: workspace:^ + version: link:../openapi-decorators + openapi-types: + specifier: ^12.1.3 + version: 12.1.3 + reflect-metadata: + specifier: ^0.2.2 + version: 0.2.2 + devDependencies: + '@adonisjs/core': + specifier: ^6.12.1 + version: 6.12.1(@adonisjs/assembler@7.7.0(typescript@5.4.5))(@vinejs/vine@2.1.0) + '@adonisjs/http-server': + specifier: ^7.2.3 + version: 7.2.3(@adonisjs/application@8.3.1(@adonisjs/config@5.0.2)(@adonisjs/fold@10.1.2))(@adonisjs/encryption@6.0.2)(@adonisjs/events@9.0.2(@adonisjs/application@8.3.1(@adonisjs/config@5.0.2)(@adonisjs/fold@10.1.2))(@adonisjs/fold@10.1.2))(@adonisjs/fold@10.1.2)(@adonisjs/logger@6.0.3) + '@types/lodash': + specifier: ^4.17.7 + version: 4.17.7 + '@types/node': + specifier: ^22.1.0 + version: 22.1.0 + '@vitest/coverage-v8': + specifier: ^2.0.5 + version: 2.0.5(vitest@2.0.5(@types/node@22.1.0)(jsdom@20.0.3)) + tsup: + specifier: ^8.2.4 + version: 8.2.4(@swc/core@1.7.4(@swc/helpers@0.5.5))(postcss@8.4.40)(typescript@5.4.5) + typescript: + specifier: ^5.4.5 + version: 5.4.5 + unplugin-swc: + specifier: ^1.5.1 + version: 1.5.1(@swc/core@1.7.4(@swc/helpers@0.5.5))(rollup@4.20.0) + + packages/openapi-adonis/example: + dependencies: + '@adonisjs/auth': + specifier: ^9.2.3 + version: 9.2.3(@adonisjs/assembler@7.7.0(typescript@5.4.5))(@adonisjs/core@6.12.1(@adonisjs/assembler@7.7.0(typescript@5.4.5))(@vinejs/vine@2.1.0))(@adonisjs/lucid@21.1.1(@adonisjs/assembler@7.7.0(typescript@5.4.5))(@adonisjs/core@6.12.1(@adonisjs/assembler@7.7.0(typescript@5.4.5))(@vinejs/vine@2.1.0))(luxon@3.5.0))(@japa/api-client@2.0.3)(@japa/plugin-adonisjs@3.0.1(@adonisjs/core@6.12.1(@adonisjs/assembler@7.7.0(typescript@5.4.5))(@vinejs/vine@2.1.0))(@japa/api-client@2.0.3)) + '@adonisjs/core': + specifier: ^6.12.1 + version: 6.12.1(@adonisjs/assembler@7.7.0(typescript@5.4.5))(@vinejs/vine@2.1.0) + '@adonisjs/cors': + specifier: ^2.2.1 + version: 2.2.1(@adonisjs/core@6.12.1(@adonisjs/assembler@7.7.0(typescript@5.4.5))(@vinejs/vine@2.1.0)) + '@adonisjs/lucid': + specifier: ^21.1.0 + version: 21.1.1(@adonisjs/assembler@7.7.0(typescript@5.4.5))(@adonisjs/core@6.12.1(@adonisjs/assembler@7.7.0(typescript@5.4.5))(@vinejs/vine@2.1.0))(luxon@3.5.0) + '@vinejs/vine': + specifier: ^2.1.0 + version: 2.1.0 + luxon: + specifier: ^3.5.0 + version: 3.5.0 + openapi-adonis: + specifier: workspace:^ + version: link:.. + reflect-metadata: + specifier: ^0.2.2 + version: 0.2.2 + devDependencies: + '@adonisjs/assembler': + specifier: ^7.7.0 + version: 7.7.0(typescript@5.4.5) + '@adonisjs/http-server': + specifier: ^7.2.3 + version: 7.2.3(@adonisjs/application@8.3.1(@adonisjs/config@5.0.2)(@adonisjs/fold@10.1.2))(@adonisjs/encryption@6.0.2)(@adonisjs/events@9.0.2(@adonisjs/application@8.3.1(@adonisjs/config@5.0.2)(@adonisjs/fold@10.1.2))(@adonisjs/fold@10.1.2))(@adonisjs/fold@10.1.2)(@adonisjs/logger@6.0.3) + '@adonisjs/tsconfig': + specifier: ^1.3.0 + version: 1.3.0 + '@swc/core': + specifier: ^1.6.5 + version: 1.7.4(@swc/helpers@0.5.5) + '@types/node': + specifier: ^20.14.9 + version: 20.14.14 + hot-hook: + specifier: ^0.2.6 + version: 0.2.6 + pino-pretty: + specifier: ^11.2.1 + version: 11.2.2 + ts-node: + specifier: ^10.9.2 + version: 10.9.2(@swc/core@1.7.4(@swc/helpers@0.5.5))(@types/node@20.14.14)(typescript@5.4.5) + typescript: + specifier: ~5.4 + version: 5.4.5 + + packages/openapi-decorators: + dependencies: + '@fastify/deepmerge': + specifier: ^2.0.0 + version: 2.0.0 + lodash: + specifier: ^4.17.21 + version: 4.17.21 + openapi-types: + specifier: ^12.1.3 + version: 12.1.3 + reflect-metadata: + specifier: ^0.2.2 + version: 0.2.2 + devDependencies: + '@types/lodash': + specifier: ^4.17.7 + version: 4.17.7 + '@types/node': + specifier: ^22.1.0 + version: 22.1.0 + '@vitest/coverage-v8': + specifier: ^2.0.5 + version: 2.0.5(vitest@2.0.5(@types/node@22.1.0)(jsdom@20.0.3)) + del-cli: + specifier: ^5.1.0 + version: 5.1.0 + esbuild: + specifier: ^0.20.2 + version: 0.20.2 + execa: + specifier: ^8.0.1 + version: 8.0.1 + tsup: + specifier: ^8.2.4 + version: 8.2.4(@swc/core@1.7.4(@swc/helpers@0.5.5))(postcss@8.4.40)(typescript@5.4.5) + typescript: + specifier: ^5.4.5 + version: 5.4.5 + unplugin-swc: + specifier: ^1.5.1 + version: 1.5.1(@swc/core@1.7.4(@swc/helpers@0.5.5))(rollup@4.20.0) packages/openapi-fetch: dependencies: @@ -80,7 +224,7 @@ importers: version: 5.4.5 vite: specifier: ^5.3.5 - version: 5.3.5(@types/node@20.14.7) + version: 5.3.5(@types/node@22.1.0) packages/openapi-fetch/examples/nextjs: dependencies: @@ -136,13 +280,13 @@ importers: version: 18.3.0 '@vitejs/plugin-react-swc': specifier: ^3.7.0 - version: 3.7.0(@swc/helpers@0.5.5)(vite@5.3.5(@types/node@20.14.7)) + version: 3.7.0(@swc/helpers@0.5.5)(vite@5.3.5(@types/node@22.1.0)) typescript: specifier: ^5.4.5 version: 5.4.5 vite: specifier: ^5.3.5 - version: 5.3.5(@types/node@20.14.7) + version: 5.3.5(@types/node@22.1.0) packages/openapi-fetch/examples/sveltekit: dependencies: @@ -152,13 +296,13 @@ importers: devDependencies: '@sveltejs/adapter-auto': specifier: ^3.2.2 - version: 3.2.2(@sveltejs/kit@2.5.19(@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.3.5(@types/node@20.14.7)))(svelte@4.2.18)(vite@5.3.5(@types/node@20.14.7))) + version: 3.2.2(@sveltejs/kit@2.5.19(@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.3.5(@types/node@22.1.0)))(svelte@4.2.18)(vite@5.3.5(@types/node@22.1.0))) '@sveltejs/kit': specifier: ^2.5.19 - version: 2.5.19(@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.3.5(@types/node@20.14.7)))(svelte@4.2.18)(vite@5.3.5(@types/node@20.14.7)) + version: 2.5.19(@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.3.5(@types/node@22.1.0)))(svelte@4.2.18)(vite@5.3.5(@types/node@22.1.0)) '@sveltejs/vite-plugin-svelte': specifier: ^3.1.1 - version: 3.1.1(svelte@4.2.18)(vite@5.3.5(@types/node@20.14.7)) + version: 3.1.1(svelte@4.2.18)(vite@5.3.5(@types/node@22.1.0)) openapi-typescript: specifier: workspace:^ version: link:../../../openapi-typescript @@ -176,7 +320,7 @@ importers: version: 5.4.5 vite: specifier: ^5.3.5 - version: 5.3.5(@types/node@20.14.7) + version: 5.3.5(@types/node@22.1.0) packages/openapi-fetch/examples/vue-3: dependencies: @@ -192,7 +336,7 @@ importers: version: 20.1.4 '@vitejs/plugin-vue': specifier: ^5.1.2 - version: 5.1.2(vite@5.3.5(@types/node@20.14.7))(vue@3.4.35(typescript@5.4.5)) + version: 5.1.2(vite@5.3.5(@types/node@22.1.0))(vue@3.4.35(typescript@5.4.5)) '@vue/tsconfig': specifier: ^0.5.1 version: 0.5.1 @@ -204,7 +348,7 @@ importers: version: 5.4.5 vite: specifier: ^5.3.5 - version: 5.3.5(@types/node@20.14.7) + version: 5.3.5(@types/node@22.1.0) vue-tsc: specifier: ^2.0.29 version: 2.0.29(typescript@5.4.5) @@ -229,7 +373,7 @@ importers: version: 18.3.1 '@vitejs/plugin-react': specifier: ^4.3.1 - version: 4.3.1(vite@5.3.5(@types/node@20.14.7)) + version: 4.3.1(vite@5.3.5(@types/node@22.1.0)) del-cli: specifier: ^5.1.0 version: 5.1.0 @@ -296,7 +440,7 @@ importers: version: 5.4.5 vite-node: specifier: ^2.0.5 - version: 2.0.5(@types/node@20.14.7)(supports-color@9.4.0) + version: 2.0.5(@types/node@22.1.0)(supports-color@9.4.0) packages/openapi-typescript-helpers: devDependencies: @@ -306,6 +450,161 @@ importers: packages: + '@adonisjs/ace@13.1.0': + resolution: {integrity: sha512-TMFtJJYLq2eBNaXOcbrssxKWwto98U6fxeIJ1Yx/McB47tBns7Q1V30U4URwYN6DxAAuOaOQkbDOrGYbCy2B2A==} + engines: {node: '>=18.16.0'} + + '@adonisjs/application@8.3.1': + resolution: {integrity: sha512-hfZBgZ23BQAXvoSHDkc/I0hTSXyFVxypNqHPQ/WCk4VoWlBVWVgGaGnHLvIGhrZ3RMvyoC5NBgC0PR5G+/fGSw==} + engines: {node: '>=18.16.0'} + peerDependencies: + '@adonisjs/config': ^5.0.0 + '@adonisjs/fold': ^10.0.0 + + '@adonisjs/assembler@7.7.0': + resolution: {integrity: sha512-YigVvixtdFq87yyBQiuASgaSH9xc1DM+aAO8iPuzsa4N4qnGFRiRl6OQYlw73b+cjdrabnOgM3SG1nR/LLdkUw==} + engines: {node: '>=20.6.0'} + peerDependencies: + typescript: ^4.0.0 || ^5.0.0 + + '@adonisjs/auth@9.2.3': + resolution: {integrity: sha512-my/dqQJo1LQRhT3bW0RuK/1BhDTWcY3tVrGZmVMedCRBfYGt91OAreMy0muukJcWr8AkXBtbBsju2D+myaDa4Q==} + engines: {node: '>=18.16.0'} + peerDependencies: + '@adonisjs/core': ^6.11.0 + '@adonisjs/lucid': ^20.0.0 || ^21.0.1 + '@adonisjs/session': ^7.4.1 + '@japa/api-client': ^2.0.3 + '@japa/browser-client': ^2.0.3 + '@japa/plugin-adonisjs': ^3.0.1 + peerDependenciesMeta: + '@adonisjs/lucid': + optional: true + '@adonisjs/session': + optional: true + '@japa/api-client': + optional: true + '@japa/browser-client': + optional: true + '@japa/plugin-adonisjs': + optional: true + + '@adonisjs/bodyparser@10.0.2': + resolution: {integrity: sha512-dkbn+DK5B1dODTwk5367gHPhaD4ZIoGon/jvq47iX2cnHjk3a0SyQrBEjoFhnrNkVOJZ76I3OJ3oixqgMcE+yA==} + engines: {node: '>=18.16.0'} + peerDependencies: + '@adonisjs/http-server': ^7.0.2 + + '@adonisjs/config@5.0.2': + resolution: {integrity: sha512-NXjFqDHNGRTZ1EnA4zr20GFEt7qw/JvZ4ZV8/PzFyVc7dPoFprpoyE3bw7kmlKHhcQdBbF7YXCGB4q+HQUnqiQ==} + engines: {node: '>=18.16.0'} + + '@adonisjs/core@6.12.1': + resolution: {integrity: sha512-SO3RoLw5KWZH2zVOFFAt9IRsbWiis5fycu1LaYCqau6YhiLWu14wgT+TAnWdr/WbsFm7eS1ojrC5kD/muu5S6Q==} + engines: {node: '>=20.6.0'} + hasBin: true + peerDependencies: + '@adonisjs/assembler': ^7.5.0 + '@vinejs/vine': ^2.0.0 + argon2: ^0.31.2 || ^0.40.0 + bcrypt: ^5.1.1 + edge.js: ^6.0.1 + peerDependenciesMeta: + '@adonisjs/assembler': + optional: true + '@vinejs/vine': + optional: true + argon2: + optional: true + bcrypt: + optional: true + edge.js: + optional: true + + '@adonisjs/cors@2.2.1': + resolution: {integrity: sha512-qnrSG8ylpgTeZBOYEN3yXxY0PBUEg1KGDhgn9VKVFGxLKT+o9GGVOSZxUK3wG341B1zB9w5vuZN1z4M0Jitb6g==} + engines: {node: '>=18.16.0'} + peerDependencies: + '@adonisjs/core': ^6.2.0 + + '@adonisjs/encryption@6.0.2': + resolution: {integrity: sha512-37XqVPsZi6zXMbC0Me1/qlcTP0uE+KAtYOFx7D7Tvtz377NL/6gqxqgpW/BopgOSD+CVDXjzO/Wx3M2UrbkJRQ==} + engines: {node: '>=18.16.0'} + + '@adonisjs/env@6.1.0': + resolution: {integrity: sha512-CzK+njXTH3EK+d/UJPqckyqWocOItmLgHIUbvhpd6WvveBnfv1Dz5j9H3k+ogHqThDSJCXu1RkaRAC+HNym9gA==} + engines: {node: '>=18.16.0'} + + '@adonisjs/events@9.0.2': + resolution: {integrity: sha512-qZn2e9V9C8tF4MNqEWv5JGxMG7gcHSJM8RncGpjuJ4cwFwd2jF4xrN6wkCprTVwoyZSxNS0Cp9NkAonySjG5vg==} + engines: {node: '>=18.16.0'} + peerDependencies: + '@adonisjs/application': ^8.0.2 + '@adonisjs/fold': ^10.0.1 + + '@adonisjs/fold@10.1.2': + resolution: {integrity: sha512-zNlPUpX0HdNLP9lateEqQ+frO+u0Ecs1OW3eS+8CbPTKgfPP1fFP9cZeuYFJK0FwQIFdP1rLVkpUBZAR//5Bfw==} + engines: {node: '>=18.16.0'} + + '@adonisjs/hash@9.0.3': + resolution: {integrity: sha512-03TWe0moQ+bSA3YNzL0kSXxaMGlT5owLgOtPy1UgPN3TN2mDnThI0futh2xSUZZxnLqIy7ghlvn4VfuSWDhqPQ==} + engines: {node: '>=20.6.0'} + peerDependencies: + argon2: ^0.31.2 || ^0.40.0 + bcrypt: ^5.1.1 + peerDependenciesMeta: + argon2: + optional: true + bcrypt: + optional: true + + '@adonisjs/health@2.0.0': + resolution: {integrity: sha512-dEAABiAJew1imzwi+OvV/SAnjkMp8TbD5ZIzx1dMRnPynJAlRf37//bHLwZ5Cw44ke5kPzZ/l1n9cx/VeBCicA==} + engines: {node: '>=20.6.0'} + + '@adonisjs/http-server@7.2.3': + resolution: {integrity: sha512-qN4hbrIIDkP7pzzUm+lhcuCUK8zID+ZAss1Hosjjg1fq6H3pA1kloJIpc6FjlOZXkO6LjkhflAEh9jf1v/G49Q==} + engines: {node: '>=18.16.0'} + peerDependencies: + '@adonisjs/application': ^8.0.2 + '@adonisjs/encryption': ^6.0.0 + '@adonisjs/events': ^9.0.0 + '@adonisjs/fold': ^10.0.1 + '@adonisjs/logger': ^6.0.1 + + '@adonisjs/logger@6.0.3': + resolution: {integrity: sha512-CKxIpWBEX/e6duRE6qq8GJ90NQC8q26Q0aSuj+bUO6X4mgcgawxhciJTfpxmJNj9KEUmNAeHOn0hSpTITdk8Lg==} + engines: {node: '>=18.16.0'} + + '@adonisjs/lucid@21.1.1': + resolution: {integrity: sha512-2b9bu82xC+g+zKcbWib2+jyjs41W5IAwqrfowdi6monue7rsnqqxJOXd98GLLFCTqK/jITg/BKQyI4Ixc5OHzw==} + engines: {node: '>=18.16.0'} + peerDependencies: + '@adonisjs/assembler': ^7.7.0 + '@adonisjs/core': ^6.10.1 + luxon: ^3.4.4 + peerDependenciesMeta: + '@adonisjs/assembler': + optional: true + luxon: + optional: true + + '@adonisjs/presets@2.6.1': + resolution: {integrity: sha512-OIk5FYrbtymu1tGLv5yyZfirnXQSjrJYNyBstrTKvu7dW/jsAi9Mlm8wpXMpNhrEzo6sHGEkQKmDIz0m7TP9Pw==} + peerDependencies: + '@adonisjs/assembler': ^7.4.0 + '@adonisjs/core': ^6.5.0 + peerDependenciesMeta: + '@adonisjs/assembler': + optional: true + + '@adonisjs/repl@4.0.1': + resolution: {integrity: sha512-fgDRC5I8RBKHzsJPM4rRQF/OWI0K9cNihCIf4yHdqQt3mhFqWSOUjSi4sXWykdICLiddmyBO86au7i0d0dj5vQ==} + engines: {node: '>=18.16.0'} + + '@adonisjs/tsconfig@1.3.0': + resolution: {integrity: sha512-+nOykDG44b4JSAdsrTdh5HuZqJpr6F+dHpfNYgHfYsFJIEtZo8plHilZAM7iabCRN5R49SPv5p8Ixcp47Rr50g==} + '@algolia/autocomplete-core@1.9.3': resolution: {integrity: sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==} @@ -375,9 +674,16 @@ packages: resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} engines: {node: '>=6.0.0'} + '@antfu/install-pkg@0.3.3': + resolution: {integrity: sha512-nHHsk3NXQ6xkCfiRRC8Nfrg8pU5kkr3P3Y9s9dKqiuRmBD0Yap7fymNDjGFKeWhZQHqqbCS5CfeMy9wtExM24w==} + '@apidevtools/json-schema-ref-parser@9.0.9': resolution: {integrity: sha512-GBD2Le9w2+lVFoc4vswGI/TjkNIZSVp7+9xPf+X3uidBfWnAeUWmquteSyt0+VCrhNMWj/FTABISQrD3Z/YA+w==} + '@arr/every@1.0.1': + resolution: {integrity: sha512-UQFQ6SgyJ6LX42W8rHCs8KVc0JS0tzVL9ct4XYedJukskYVWTo49tNiMEK9C2HTyarbNiT/RVIRSY82vH+6sTg==} + engines: {node: '>=4'} + '@babel/code-frame@7.24.2': resolution: {integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==} engines: {node: '>=6.9.0'} @@ -444,10 +750,6 @@ packages: resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.24.5': - resolution: {integrity: sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==} - engines: {node: '>=6.9.0'} - '@babel/helper-validator-identifier@7.24.7': resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} engines: {node: '>=6.9.0'} @@ -514,6 +816,9 @@ packages: resolution: {integrity: sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==} engines: {node: '>=6.9.0'} + '@bcoe/v8-coverage@0.2.3': + resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} + '@biomejs/biome@1.8.1': resolution: {integrity: sha512-fQXGfvq6DIXem12dGQCM2tNF+vsNHH1qs3C7WeOu75Pd0trduoTmoO7G4ntLJ2qDs5wuw981H+cxQhi1uHnAtA==} engines: {node: '>=14.21.3'} @@ -634,6 +939,14 @@ packages: '@changesets/write@0.3.1': resolution: {integrity: sha512-SyGtMXzH3qFqlHKcvFY2eX+6b0NGiFcNav8AFsYwy5l8hejOeoeTDemu5Yjmke2V5jpzY+pBvM0vCCQ3gdZpfw==} + '@colors/colors@1.5.0': + resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} + engines: {node: '>=0.1.90'} + + '@cspotcode/source-map-support@0.8.1': + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + '@docsearch/css@3.6.0': resolution: {integrity: sha512-+sbxb71sWre+PwDK7X2T8+bhS6clcVMLwBPznX45Qu6opJcgRjAp7gYSDzVFp187J+feSj5dNBN1mJoi6ckkUQ==} @@ -669,6 +982,12 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/aix-ppc64@0.23.0': + resolution: {integrity: sha512-3sG8Zwa5fMcA9bgqB8AfWPQ+HFke6uD3h1s3RIwUNK8EG7a4buxvuFTs3j1IMs2NXAk9F30C/FF4vxRgQCcmoQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + '@esbuild/android-arm64@0.20.2': resolution: {integrity: sha512-mRzjLacRtl/tWU0SvD8lUEwb61yP9cqQo6noDZP/O8VkwafSYwZ4yWy24kan8jE/IMERpYncRt2dw438LP3Xmg==} engines: {node: '>=12'} @@ -681,6 +1000,12 @@ packages: cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.23.0': + resolution: {integrity: sha512-EuHFUYkAVfU4qBdyivULuu03FhJO4IJN9PGuABGrFy4vUuzk91P2d+npxHcFdpUnfYKy0PuV+n6bKIpHOB3prQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm@0.20.2': resolution: {integrity: sha512-t98Ra6pw2VaDhqNWO2Oph2LXbz/EJcnLmKLGBJwEwXX/JAN83Fym1rU8l0JUWK6HkIbWONCSSatf4sf2NBRx/w==} engines: {node: '>=12'} @@ -693,6 +1018,12 @@ packages: cpu: [arm] os: [android] + '@esbuild/android-arm@0.23.0': + resolution: {integrity: sha512-+KuOHTKKyIKgEEqKbGTK8W7mPp+hKinbMBeEnNzjJGyFcWsfrXjSTNluJHCY1RqhxFurdD8uNXQDei7qDlR6+g==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + '@esbuild/android-x64@0.20.2': resolution: {integrity: sha512-btzExgV+/lMGDDa194CcUQm53ncxzeBrWJcncOBxuC6ndBkKxnHdFJn86mCIgTELsooUmwUm9FkhSp5HYu00Rg==} engines: {node: '>=12'} @@ -705,6 +1036,12 @@ packages: cpu: [x64] os: [android] + '@esbuild/android-x64@0.23.0': + resolution: {integrity: sha512-WRrmKidLoKDl56LsbBMhzTTBxrsVwTKdNbKDalbEZr0tcsBgCLbEtoNthOW6PX942YiYq8HzEnb4yWQMLQuipQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + '@esbuild/darwin-arm64@0.20.2': resolution: {integrity: sha512-4J6IRT+10J3aJH3l1yzEg9y3wkTDgDk7TSDFX+wKFiWjqWp/iCfLIYzGyasx9l0SAFPT1HwSCR+0w/h1ES/MjA==} engines: {node: '>=12'} @@ -717,6 +1054,12 @@ packages: cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.23.0': + resolution: {integrity: sha512-YLntie/IdS31H54Ogdn+v50NuoWF5BDkEUFpiOChVa9UnKpftgwzZRrI4J132ETIi+D8n6xh9IviFV3eXdxfow==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-x64@0.20.2': resolution: {integrity: sha512-tBcXp9KNphnNH0dfhv8KYkZhjc+H3XBkF5DKtswJblV7KlT9EI2+jeA8DgBjp908WEuYll6pF+UStUCfEpdysA==} engines: {node: '>=12'} @@ -729,6 +1072,12 @@ packages: cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.23.0': + resolution: {integrity: sha512-IMQ6eme4AfznElesHUPDZ+teuGwoRmVuuixu7sv92ZkdQcPbsNHzutd+rAfaBKo8YK3IrBEi9SLLKWJdEvJniQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + '@esbuild/freebsd-arm64@0.20.2': resolution: {integrity: sha512-d3qI41G4SuLiCGCFGUrKsSeTXyWG6yem1KcGZVS+3FYlYhtNoNgYrWcvkOoaqMhwXSMrZRl69ArHsGJ9mYdbbw==} engines: {node: '>=12'} @@ -741,6 +1090,12 @@ packages: cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-arm64@0.23.0': + resolution: {integrity: sha512-0muYWCng5vqaxobq6LB3YNtevDFSAZGlgtLoAc81PjUfiFz36n4KMpwhtAd4he8ToSI3TGyuhyx5xmiWNYZFyw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-x64@0.20.2': resolution: {integrity: sha512-d+DipyvHRuqEeM5zDivKV1KuXn9WeRX6vqSqIDgwIfPQtwMP4jaDsQsDncjTDDsExT4lR/91OLjRo8bmC1e+Cw==} engines: {node: '>=12'} @@ -753,6 +1108,12 @@ packages: cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.23.0': + resolution: {integrity: sha512-XKDVu8IsD0/q3foBzsXGt/KjD/yTKBCIwOHE1XwiXmrRwrX6Hbnd5Eqn/WvDekddK21tfszBSrE/WMaZh+1buQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + '@esbuild/linux-arm64@0.20.2': resolution: {integrity: sha512-9pb6rBjGvTFNira2FLIWqDk/uaf42sSyLE8j1rnUpuzsODBq7FvpwHYZxQ/It/8b+QOS1RYfqgGFNLRI+qlq2A==} engines: {node: '>=12'} @@ -765,6 +1126,12 @@ packages: cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.23.0': + resolution: {integrity: sha512-j1t5iG8jE7BhonbsEg5d9qOYcVZv/Rv6tghaXM/Ug9xahM0nX/H2gfu6X6z11QRTMT6+aywOMA8TDkhPo8aCGw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm@0.20.2': resolution: {integrity: sha512-VhLPeR8HTMPccbuWWcEUD1Az68TqaTYyj6nfE4QByZIQEQVWBB8vup8PpR7y1QHL3CpcF6xd5WVBU/+SBEvGTg==} engines: {node: '>=12'} @@ -777,6 +1144,12 @@ packages: cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.23.0': + resolution: {integrity: sha512-SEELSTEtOFu5LPykzA395Mc+54RMg1EUgXP+iw2SJ72+ooMwVsgfuwXo5Fn0wXNgWZsTVHwY2cg4Vi/bOD88qw==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + '@esbuild/linux-ia32@0.20.2': resolution: {integrity: sha512-o10utieEkNPFDZFQm9CoP7Tvb33UutoJqg3qKf1PWVeeJhJw0Q347PxMvBgVVFgouYLGIhFYG0UGdBumROyiig==} engines: {node: '>=12'} @@ -789,6 +1162,12 @@ packages: cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.23.0': + resolution: {integrity: sha512-P7O5Tkh2NbgIm2R6x1zGJJsnacDzTFcRWZyTTMgFdVit6E98LTxO+v8LCCLWRvPrjdzXHx9FEOA8oAZPyApWUA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-loong64@0.20.2': resolution: {integrity: sha512-PR7sp6R/UC4CFVomVINKJ80pMFlfDfMQMYynX7t1tNTeivQ6XdX5r2XovMmha/VjR1YN/HgHWsVcTRIMkymrgQ==} engines: {node: '>=12'} @@ -801,6 +1180,12 @@ packages: cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.23.0': + resolution: {integrity: sha512-InQwepswq6urikQiIC/kkx412fqUZudBO4SYKu0N+tGhXRWUqAx+Q+341tFV6QdBifpjYgUndV1hhMq3WeJi7A==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-mips64el@0.20.2': resolution: {integrity: sha512-4BlTqeutE/KnOiTG5Y6Sb/Hw6hsBOZapOVF6njAESHInhlQAghVVZL1ZpIctBOoTFbQyGW+LsVYZ8lSSB3wkjA==} engines: {node: '>=12'} @@ -813,6 +1198,12 @@ packages: cpu: [mips64el] os: [linux] + '@esbuild/linux-mips64el@0.23.0': + resolution: {integrity: sha512-J9rflLtqdYrxHv2FqXE2i1ELgNjT+JFURt/uDMoPQLcjWQA5wDKgQA4t/dTqGa88ZVECKaD0TctwsUfHbVoi4w==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-ppc64@0.20.2': resolution: {integrity: sha512-rD3KsaDprDcfajSKdn25ooz5J5/fWBylaaXkuotBDGnMnDP1Uv5DLAN/45qfnf3JDYyJv/ytGHQaziHUdyzaAg==} engines: {node: '>=12'} @@ -825,6 +1216,12 @@ packages: cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.23.0': + resolution: {integrity: sha512-cShCXtEOVc5GxU0fM+dsFD10qZ5UpcQ8AM22bYj0u/yaAykWnqXJDpd77ublcX6vdDsWLuweeuSNZk4yUxZwtw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-riscv64@0.20.2': resolution: {integrity: sha512-snwmBKacKmwTMmhLlz/3aH1Q9T8v45bKYGE3j26TsaOVtjIag4wLfWSiZykXzXuE1kbCE+zJRmwp+ZbIHinnVg==} engines: {node: '>=12'} @@ -837,6 +1234,12 @@ packages: cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.23.0': + resolution: {integrity: sha512-HEtaN7Y5UB4tZPeQmgz/UhzoEyYftbMXrBCUjINGjh3uil+rB/QzzpMshz3cNUxqXN7Vr93zzVtpIDL99t9aRw==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-s390x@0.20.2': resolution: {integrity: sha512-wcWISOobRWNm3cezm5HOZcYz1sKoHLd8VL1dl309DiixxVFoFe/o8HnwuIwn6sXre88Nwj+VwZUvJf4AFxkyrQ==} engines: {node: '>=12'} @@ -849,6 +1252,12 @@ packages: cpu: [s390x] os: [linux] + '@esbuild/linux-s390x@0.23.0': + resolution: {integrity: sha512-WDi3+NVAuyjg/Wxi+o5KPqRbZY0QhI9TjrEEm+8dmpY9Xir8+HE/HNx2JoLckhKbFopW0RdO2D72w8trZOV+Wg==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-x64@0.20.2': resolution: {integrity: sha512-1MdwI6OOTsfQfek8sLwgyjOXAu+wKhLEoaOLTjbijk6E2WONYpH9ZU2mNtR+lZ2B4uwr+usqGuVfFT9tMtGvGw==} engines: {node: '>=12'} @@ -861,6 +1270,12 @@ packages: cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.23.0': + resolution: {integrity: sha512-a3pMQhUEJkITgAw6e0bWA+F+vFtCciMjW/LPtoj99MhVt+Mfb6bbL9hu2wmTZgNd994qTAEw+U/r6k3qHWWaOQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + '@esbuild/netbsd-x64@0.20.2': resolution: {integrity: sha512-K8/DhBxcVQkzYc43yJXDSyjlFeHQJBiowJ0uVL6Tor3jGQfSGHNNJcWxNbOI8v5k82prYqzPuwkzHt3J1T1iZQ==} engines: {node: '>=12'} @@ -873,6 +1288,18 @@ packages: cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.23.0': + resolution: {integrity: sha512-cRK+YDem7lFTs2Q5nEv/HHc4LnrfBCbH5+JHu6wm2eP+d8OZNoSMYgPZJq78vqQ9g+9+nMuIsAO7skzphRXHyw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.23.0': + resolution: {integrity: sha512-suXjq53gERueVWu0OKxzWqk7NxiUWSUlrxoZK7usiF50C6ipColGR5qie2496iKGYNLhDZkPxBI3erbnYkU0rQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + '@esbuild/openbsd-x64@0.20.2': resolution: {integrity: sha512-eMpKlV0SThJmmJgiVyN9jTPJ2VBPquf6Kt/nAoo6DgHAoN57K15ZghiHaMvqjCye/uU4X5u3YSMgVBI1h3vKrQ==} engines: {node: '>=12'} @@ -885,6 +1312,12 @@ packages: cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.23.0': + resolution: {integrity: sha512-6p3nHpby0DM/v15IFKMjAaayFhqnXV52aEmv1whZHX56pdkK+MEaLoQWj+H42ssFarP1PcomVhbsR4pkz09qBg==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + '@esbuild/sunos-x64@0.20.2': resolution: {integrity: sha512-2UyFtRC6cXLyejf/YEld4Hajo7UHILetzE1vsRcGL3earZEW77JxrFjH4Ez2qaTiEfMgAXxfAZCm1fvM/G/o8w==} engines: {node: '>=12'} @@ -897,6 +1330,12 @@ packages: cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.23.0': + resolution: {integrity: sha512-BFelBGfrBwk6LVrmFzCq1u1dZbG4zy/Kp93w2+y83Q5UGYF1d8sCzeLI9NXjKyujjBBniQa8R8PzLFAUrSM9OA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + '@esbuild/win32-arm64@0.20.2': resolution: {integrity: sha512-GRibxoawM9ZCnDxnP3usoUDO9vUkpAxIIZ6GQI+IlVmr5kP3zUq+l17xELTHMWTWzjxa2guPNyrpq1GWmPvcGQ==} engines: {node: '>=12'} @@ -909,6 +1348,12 @@ packages: cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.23.0': + resolution: {integrity: sha512-lY6AC8p4Cnb7xYHuIxQ6iYPe6MfO2CC43XXKo9nBXDb35krYt7KGhQnOkRGar5psxYkircpCqfbNDB4uJbS2jQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-ia32@0.20.2': resolution: {integrity: sha512-HfLOfn9YWmkSKRQqovpnITazdtquEW8/SoHW7pWpuEeguaZI4QnCRW6b+oZTztdBnZOS2hqJ6im/D5cPzBTTlQ==} engines: {node: '>=12'} @@ -921,6 +1366,12 @@ packages: cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.23.0': + resolution: {integrity: sha512-7L1bHlOTcO4ByvI7OXVI5pNN6HSu6pUQq9yodga8izeuB1KcT2UkHaH6118QJwopExPn0rMHIseCTx1CRo/uNA==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-x64@0.20.2': resolution: {integrity: sha512-N49X4lJX27+l9jbLKSqZ6bKNjzQvHaT8IIFUy+YIqmXQdjYCToGWwOItDrfby14c78aDd5NHQl29xingXfCdLQ==} engines: {node: '>=12'} @@ -933,6 +1384,19 @@ packages: cpu: [x64] os: [win32] + '@esbuild/win32-x64@0.23.0': + resolution: {integrity: sha512-Arm+WgUFLUATuoxCJcahGuk6Yj9Pzxd6l11Zb/2aAuv5kWWvvfhLFo2fni4uSK5vzlUdCGZ/BdV5tH8klj8p8g==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@faker-js/faker@8.4.1': + resolution: {integrity: sha512-XQ3cU+Q8Uqmrbf2e0cIC/QN43sTBSC8KF12u29Mb47tWrt2hAgBXSgpZMj4Ao8Uk0iJcU99QsOCaIL8934obCg==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0, npm: '>=6.14.13'} + + '@fastify/deepmerge@2.0.0': + resolution: {integrity: sha512-fsaybTGDyQ5KpPsplQqb9yKdCf2x/pbNpMNk8Tvp3rRz7lVcupKysH4b2ELMN2P4Hak1+UqTYdTj/u4FNV2p0g==} + '@inquirer/confirm@3.1.10': resolution: {integrity: sha512-/aAHu83Njy6yf44T+ZrRPUkMcUqprrOiIKsyMvf9jOV+vF5BNb2ja1aLP33MK36W8eaf91MTL/mU/e6METuENg==} engines: {node: '>=18'} @@ -949,6 +1413,41 @@ packages: resolution: {integrity: sha512-xTUt0NulylX27/zMx04ZYar/kr1raaiFTVvQ5feljQsiAgdm0WPj4S73/ye0fbslh+15QrIuDvfCXTek7pMY5A==} engines: {node: '>=18'} + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@istanbuljs/schema@0.1.3': + resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} + engines: {node: '>=8'} + + '@japa/api-client@2.0.3': + resolution: {integrity: sha512-2Eh68Kg1+7glMo+mLSPfBGN21wUEA61niTMwdmhEXyw5VrS4IctZxQWhn5fzwj5KnQJfPpxrRnt9432Zs0uN/g==} + engines: {node: '>=18.16.0'} + peerDependencies: + '@japa/assert': ^2.0.0 || ^3.0.0 + '@japa/runner': ^3.1.2 + peerDependenciesMeta: + '@japa/assert': + optional: true + + '@japa/plugin-adonisjs@3.0.1': + resolution: {integrity: sha512-xUZOzfBXSz2sWRoQT+qs+6LZBtWWE+cCBZ3j9ckz6+nPw3VI0nV6yLaX+oud3AY8Zb+BH+pErABBhaovZYv9dA==} + engines: {node: '>=18.16.0'} + peerDependencies: + '@adonisjs/core': ^6.5.0 + '@japa/api-client': ^2.0.3 + '@japa/browser-client': ^2.0.3 + '@japa/runner': ^3.1.2 + playwright: ^1.42.1 + peerDependenciesMeta: + '@japa/api-client': + optional: true + '@japa/browser-client': + optional: true + playwright: + optional: true + '@jridgewell/gen-mapping@0.3.5': resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} engines: {node: '>=6.0.0'} @@ -961,18 +1460,26 @@ packages: resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} engines: {node: '>=6.0.0'} - '@jridgewell/sourcemap-codec@1.4.15': - resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} - '@jridgewell/sourcemap-codec@1.5.0': resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@jridgewell/trace-mapping@0.3.9': + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + + '@jsdevtools/ez-spawn@3.0.4': + resolution: {integrity: sha512-f5DRIOZf7wxogefH03RjMPMdBF7ADTWUMoOs9kaJo06EfwF+aFhMZMDZxHg/Xe12hptN9xoZjGso2fdjapBRIA==} + engines: {node: '>=10'} + '@jsdevtools/ono@7.1.3': resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==} + '@lukeed/ms@2.0.2': + resolution: {integrity: sha512-9I2Zn6+NJLfaGoz9jN3lpwDgAYvfGeNYdbAIjJOqzs4Tpc+VU3Jqq4IofSUBKajiDS8k9fZIg18/z13mpk1bsA==} + engines: {node: '>=8'} + '@manypkg/find-root@1.1.0': resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} @@ -1044,6 +1551,10 @@ packages: cpu: [x64] os: [win32] + '@noble/hashes@1.4.0': + resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} + engines: {node: '>= 16'} + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -1065,6 +1576,17 @@ packages: '@open-draft/until@2.1.0': resolution: {integrity: sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==} + '@paralleldrive/cuid2@2.2.2': + resolution: {integrity: sha512-ZOBkgDwEdoYVlSeRbYYXs0S9MejQofiVYoTbKzy/6GQa39/q5tQU2IX46+shYnUkpEl3wc+J6wRlar7r2EK2xA==} + + '@phc/format@1.0.0': + resolution: {integrity: sha512-m7X9U6BG2+J+R1lSOdCiITLLrxm+cWlNI3HUFA92oLO77ObGNzaKdh8pMLqdZcshtkKuV84olNNXDfMc4FezBQ==} + engines: {node: '>=10'} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + '@playwright/test@1.44.1': resolution: {integrity: sha512-1hZ4TNvD5z9VuhNJ/walIjvMVvYkZKf71axoF/uiAqpntQJXpG64dlXhoDXE3OczPuTuvjf/M5KWFg5VAVUS3Q==} engines: {node: '>=16'} @@ -1073,6 +1595,49 @@ packages: '@polka/url@1.0.0-next.25': resolution: {integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==} + '@poppinss/chokidar-ts@4.1.4': + resolution: {integrity: sha512-iX+QSNOo2PAvkv+8ggBkCyv2gZHskJemtsl1PcEbjM7dJOf+n4LSPHAqj4+B0raqZHznXFhKKoQfN1a9j/YuUg==} + engines: {node: '>=18.16.0'} + peerDependencies: + typescript: ^4.0.0 || ^5.0.0 + + '@poppinss/cliui@6.4.1': + resolution: {integrity: sha512-tdV3QpAfrPFRLPOh98F8QxWBvwYF3ziWGGtpVqfZtFNTFkC7nQnVQlUW55UtQ7rkeMmFohxfDI+2JNWScGJ1jQ==} + engines: {node: '>=18.16.0'} + + '@poppinss/colors@4.1.3': + resolution: {integrity: sha512-A0FjJ6x14donWDN3bHAFFjJaPWTwM2PgWT834+bPKVK6Xukf25CscoRqCPYI939a8yuJFX9PYWWnVbUVI0E2Cg==} + engines: {node: '>=18.16.0'} + + '@poppinss/hooks@7.2.3': + resolution: {integrity: sha512-+B7YSazGaCMcoUubwEkCTnpAvJ+Fv7tqgtpu7cm9qt1adEjmXDmaiG76loEnmxAkyHrbZJ5xHGNSD0NwMhLcnA==} + engines: {node: '>=18.16.0'} + + '@poppinss/macroable@1.0.2': + resolution: {integrity: sha512-xhhEcEvhQC8mP5oOr5hbE4CmUgmw/IPV1jhpGg2xSkzoFrt9i8YVqBQt9744EFesi5F7pBheWozg63RUBM/5JA==} + engines: {node: '>=18.16.0'} + + '@poppinss/matchit@3.1.2': + resolution: {integrity: sha512-Bx+jY+vmdQFmwYiHliiPjr+oVBaGnh79B1h1FSAm3jME1QylLFt8PPYC0ymO8Q5PzJj/KuE3jeTnZhRHOWqq8g==} + + '@poppinss/middleware@3.2.3': + resolution: {integrity: sha512-orhgQQ99xB4WS0Ln0X89UTlSkFIVT9zfkyvuWsaCb/9wTa0leDf+2GlFi1nVVT0Xdd2i51CXYYAMQkWM4yAp3Q==} + engines: {node: '>=18.16.0'} + + '@poppinss/multiparty@2.0.1': + resolution: {integrity: sha512-Pf3V9PFyZDIkDBBiAOT2hdmA+1l/+hverHbUnMzNzwtwgO50s2ZPt5KxUydVA0hceg9gryo5unQ0WUF1SO9tkQ==} + + '@poppinss/prompts@3.1.3': + resolution: {integrity: sha512-lNAcOcvB7YhfaWYIsu8tatF9V61A0SEu8PGpGx9RqTVmImKhLT0AAcRPr/5z4UQMl7SIf5REQKMJhHK50xakYQ==} + engines: {node: '>=18.16.0'} + + '@poppinss/utils@6.7.3': + resolution: {integrity: sha512-zQnhVG4Q+n6+V1vrL/TF1Oy8ZcVVGUs49Sj5OBgoari/q42UiG/rht1DRvoeWd9bT1BBDwxO2vcfxj6C0u/Dgg==} + engines: {node: '>=18.16.0'} + + '@poppinss/validator-lite@1.0.3': + resolution: {integrity: sha512-u4dmT7PDHwNtxY3q1jHVp/u+hMEEcBlkzd37QwwM4tVt/0mLlEDttSfPQ+TT7sqPG4VEtWKwVSlMInwPUYyJpA==} + '@redocly/ajv@8.11.0': resolution: {integrity: sha512-9GWx27t7xWhDIR02PA18nzBdLcKQRgc46xNQvjFkrYk4UOmvKhJ/dawwiX0cCOeetN5LcaaiqQbVOWYK62SGHw==} @@ -1083,43 +1648,92 @@ packages: resolution: {integrity: sha512-z06h+svyqbUcdAaePq8LPSwTPlm6Ig7j2VlL8skPBYnJvyaQ2IN7x/JkOvRL4ta+wcOCBdAex5JWnZbKaNktJg==} engines: {node: '>=14.19.0', npm: '>=7.0.0'} + '@rollup/pluginutils@5.1.0': + resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + '@rollup/rollup-android-arm-eabi@4.18.0': resolution: {integrity: sha512-Tya6xypR10giZV1XzxmH5wr25VcZSncG0pZIjfePT0OVBvqNEurzValetGNarVrGiq66EBVAFn15iYX4w6FKgQ==} cpu: [arm] os: [android] + '@rollup/rollup-android-arm-eabi@4.20.0': + resolution: {integrity: sha512-TSpWzflCc4VGAUJZlPpgAJE1+V60MePDQnBd7PPkpuEmOy8i87aL6tinFGKBFKuEDikYpig72QzdT3QPYIi+oA==} + cpu: [arm] + os: [android] + '@rollup/rollup-android-arm64@4.18.0': resolution: {integrity: sha512-avCea0RAP03lTsDhEyfy+hpfr85KfyTctMADqHVhLAF3MlIkq83CP8UfAHUssgXTYd+6er6PaAhx/QGv4L1EiA==} cpu: [arm64] os: [android] + '@rollup/rollup-android-arm64@4.20.0': + resolution: {integrity: sha512-u00Ro/nok7oGzVuh/FMYfNoGqxU5CPWz1mxV85S2w9LxHR8OoMQBuSk+3BKVIDYgkpeOET5yXkx90OYFc+ytpQ==} + cpu: [arm64] + os: [android] + '@rollup/rollup-darwin-arm64@4.18.0': resolution: {integrity: sha512-IWfdwU7KDSm07Ty0PuA/W2JYoZ4iTj3TUQjkVsO/6U+4I1jN5lcR71ZEvRh52sDOERdnNhhHU57UITXz5jC1/w==} cpu: [arm64] os: [darwin] + '@rollup/rollup-darwin-arm64@4.20.0': + resolution: {integrity: sha512-uFVfvzvsdGtlSLuL0ZlvPJvl6ZmrH4CBwLGEFPe7hUmf7htGAN+aXo43R/V6LATyxlKVC/m6UsLb7jbG+LG39Q==} + cpu: [arm64] + os: [darwin] + '@rollup/rollup-darwin-x64@4.18.0': resolution: {integrity: sha512-n2LMsUz7Ynu7DoQrSQkBf8iNrjOGyPLrdSg802vk6XT3FtsgX6JbE8IHRvposskFm9SNxzkLYGSq9QdpLYpRNA==} cpu: [x64] os: [darwin] + '@rollup/rollup-darwin-x64@4.20.0': + resolution: {integrity: sha512-xbrMDdlev53vNXexEa6l0LffojxhqDTBeL+VUxuuIXys4x6xyvbKq5XqTXBCEUA8ty8iEJblHvFaWRJTk/icAQ==} + cpu: [x64] + os: [darwin] + '@rollup/rollup-linux-arm-gnueabihf@4.18.0': resolution: {integrity: sha512-C/zbRYRXFjWvz9Z4haRxcTdnkPt1BtCkz+7RtBSuNmKzMzp3ZxdM28Mpccn6pt28/UWUCTXa+b0Mx1k3g6NOMA==} cpu: [arm] os: [linux] + '@rollup/rollup-linux-arm-gnueabihf@4.20.0': + resolution: {integrity: sha512-jMYvxZwGmoHFBTbr12Xc6wOdc2xA5tF5F2q6t7Rcfab68TT0n+r7dgawD4qhPEvasDsVpQi+MgDzj2faOLsZjA==} + cpu: [arm] + os: [linux] + '@rollup/rollup-linux-arm-musleabihf@4.18.0': resolution: {integrity: sha512-l3m9ewPgjQSXrUMHg93vt0hYCGnrMOcUpTz6FLtbwljo2HluS4zTXFy2571YQbisTnfTKPZ01u/ukJdQTLGh9A==} cpu: [arm] os: [linux] + '@rollup/rollup-linux-arm-musleabihf@4.20.0': + resolution: {integrity: sha512-1asSTl4HKuIHIB1GcdFHNNZhxAYEdqML/MW4QmPS4G0ivbEcBr1JKlFLKsIRqjSwOBkdItn3/ZDlyvZ/N6KPlw==} + cpu: [arm] + os: [linux] + '@rollup/rollup-linux-arm64-gnu@4.18.0': resolution: {integrity: sha512-rJ5D47d8WD7J+7STKdCUAgmQk49xuFrRi9pZkWoRD1UeSMakbcepWXPF8ycChBoAqs1pb2wzvbY6Q33WmN2ftw==} cpu: [arm64] os: [linux] - '@rollup/rollup-linux-arm64-musl@4.18.0': - resolution: {integrity: sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==} + '@rollup/rollup-linux-arm64-gnu@4.20.0': + resolution: {integrity: sha512-COBb8Bkx56KldOYJfMf6wKeYJrtJ9vEgBRAOkfw6Ens0tnmzPqvlpjZiLgkhg6cA3DGzCmLmmd319pmHvKWWlQ==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.18.0': + resolution: {integrity: sha512-be6Yx37b24ZwxQ+wOQXXLZqpq4jTckJhtGlWGZs68TgdKXJgw54lUUoFYrg6Zs/kjzAQwEwYbp8JxZVzZLRepQ==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.20.0': + resolution: {integrity: sha512-+it+mBSyMslVQa8wSPvBx53fYuZK/oLTu5RJoXogjk6x7Q7sz1GNRsXWjn6SwyJm8E/oMjNVwPhmNdIjwP135Q==} cpu: [arm64] os: [linux] @@ -1128,47 +1742,98 @@ packages: cpu: [ppc64] os: [linux] + '@rollup/rollup-linux-powerpc64le-gnu@4.20.0': + resolution: {integrity: sha512-yAMvqhPfGKsAxHN8I4+jE0CpLWD8cv4z7CK7BMmhjDuz606Q2tFKkWRY8bHR9JQXYcoLfopo5TTqzxgPUjUMfw==} + cpu: [ppc64] + os: [linux] + '@rollup/rollup-linux-riscv64-gnu@4.18.0': resolution: {integrity: sha512-ROCM7i+m1NfdrsmvwSzoxp9HFtmKGHEqu5NNDiZWQtXLA8S5HBCkVvKAxJ8U+CVctHwV2Gb5VUaK7UAkzhDjlg==} cpu: [riscv64] os: [linux] + '@rollup/rollup-linux-riscv64-gnu@4.20.0': + resolution: {integrity: sha512-qmuxFpfmi/2SUkAw95TtNq/w/I7Gpjurx609OOOV7U4vhvUhBcftcmXwl3rqAek+ADBwSjIC4IVNLiszoj3dPA==} + cpu: [riscv64] + os: [linux] + '@rollup/rollup-linux-s390x-gnu@4.18.0': resolution: {integrity: sha512-0UyyRHyDN42QL+NbqevXIIUnKA47A+45WyasO+y2bGJ1mhQrfrtXUpTxCOrfxCR4esV3/RLYyucGVPiUsO8xjg==} cpu: [s390x] os: [linux] + '@rollup/rollup-linux-s390x-gnu@4.20.0': + resolution: {integrity: sha512-I0BtGXddHSHjV1mqTNkgUZLnS3WtsqebAXv11D5BZE/gfw5KoyXSAXVqyJximQXNvNzUo4GKlCK/dIwXlz+jlg==} + cpu: [s390x] + os: [linux] + '@rollup/rollup-linux-x64-gnu@4.18.0': resolution: {integrity: sha512-xuglR2rBVHA5UsI8h8UbX4VJ470PtGCf5Vpswh7p2ukaqBGFTnsfzxUBetoWBWymHMxbIG0Cmx7Y9qDZzr648w==} cpu: [x64] os: [linux] + '@rollup/rollup-linux-x64-gnu@4.20.0': + resolution: {integrity: sha512-y+eoL2I3iphUg9tN9GB6ku1FA8kOfmF4oUEWhztDJ4KXJy1agk/9+pejOuZkNFhRwHAOxMsBPLbXPd6mJiCwew==} + cpu: [x64] + os: [linux] + '@rollup/rollup-linux-x64-musl@4.18.0': resolution: {integrity: sha512-LKaqQL9osY/ir2geuLVvRRs+utWUNilzdE90TpyoX0eNqPzWjRm14oMEE+YLve4k/NAqCdPkGYDaDF5Sw+xBfg==} cpu: [x64] os: [linux] + '@rollup/rollup-linux-x64-musl@4.20.0': + resolution: {integrity: sha512-hM3nhW40kBNYUkZb/r9k2FKK+/MnKglX7UYd4ZUy5DJs8/sMsIbqWK2piZtVGE3kcXVNj3B2IrUYROJMMCikNg==} + cpu: [x64] + os: [linux] + '@rollup/rollup-win32-arm64-msvc@4.18.0': resolution: {integrity: sha512-7J6TkZQFGo9qBKH0pk2cEVSRhJbL6MtfWxth7Y5YmZs57Pi+4x6c2dStAUvaQkHQLnEQv1jzBUW43GvZW8OFqA==} cpu: [arm64] os: [win32] + '@rollup/rollup-win32-arm64-msvc@4.20.0': + resolution: {integrity: sha512-psegMvP+Ik/Bg7QRJbv8w8PAytPA7Uo8fpFjXyCRHWm6Nt42L+JtoqH8eDQ5hRP7/XW2UiIriy1Z46jf0Oa1kA==} + cpu: [arm64] + os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.18.0': resolution: {integrity: sha512-Txjh+IxBPbkUB9+SXZMpv+b/vnTEtFyfWZgJ6iyCmt2tdx0OF5WhFowLmnh8ENGNpfUlUZkdI//4IEmhwPieNg==} cpu: [ia32] os: [win32] + '@rollup/rollup-win32-ia32-msvc@4.20.0': + resolution: {integrity: sha512-GabekH3w4lgAJpVxkk7hUzUf2hICSQO0a/BLFA11/RMxQT92MabKAqyubzDZmMOC/hcJNlc+rrypzNzYl4Dx7A==} + cpu: [ia32] + os: [win32] + '@rollup/rollup-win32-x64-msvc@4.18.0': resolution: {integrity: sha512-UOo5FdvOL0+eIVTgS4tIdbW+TtnBLWg1YBCcU2KWM7nuNwRz9bksDX1bekJJCpu25N1DVWaCwnT39dVQxzqS8g==} cpu: [x64] os: [win32] + '@rollup/rollup-win32-x64-msvc@4.20.0': + resolution: {integrity: sha512-aJ1EJSuTdGnM6qbVC4B5DSmozPTqIag9fSzXRNNo+humQLG89XpPgdt16Ia56ORD7s+H8Pmyx44uczDQ0yDzpg==} + cpu: [x64] + os: [win32] + + '@sec-ant/readable-stream@0.4.1': + resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} + '@shikijs/core@1.6.4': resolution: {integrity: sha512-WTU9rzZae1p2v6LOxMf6LhtmZOkIHYYW160IuahUyJy7YXPPjyWZLR1ag+SgD22ZMxZtz1gfU6Tccc8t0Il/XA==} '@shikijs/transformers@1.6.4': resolution: {integrity: sha512-NqDt7gUg3ayVBnsipT/KoL1pqsVbsvT/2cB0pb5SG2q72qjAv9Lb5OP99pL//BMmI+sMTo+TeARntklyBu4mZQ==} + '@sindresorhus/is@6.3.1': + resolution: {integrity: sha512-FX4MfcifwJyFOI2lPoX7PQxCqx8BG1HCho7WdiXwpEQx1Ycij0JxkfYtGK7yqNScrZGSlt6RE6sw8QYoH7eKnQ==} + engines: {node: '>=16'} + + '@sindresorhus/merge-streams@2.3.0': + resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} + engines: {node: '>=18'} + '@sveltejs/adapter-auto@3.2.2': resolution: {integrity: sha512-Mso5xPCA8zgcKrv+QioVlqMZkyUQ5MjDJiEPuG/Z7cV/5tmwV7LmcVWk5tZ+H0NCOV1x12AsoSpt/CwFwuVXMA==} peerDependencies: @@ -1311,10 +1976,28 @@ packages: '@types/react-dom': optional: true + '@tokenizer/token@0.3.0': + resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} + '@tootallnate/once@2.0.0': resolution: {integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==} engines: {node: '>= 10'} + '@ts-morph/common@0.23.0': + resolution: {integrity: sha512-m7Lllj9n/S6sOkCkRftpM7L24uvmfXQFedlW/4hENcuJH1HHm9u5EgxZb9uVjQSCGrbBWBkOGgcTxNg36r6ywA==} + + '@tsconfig/node10@1.0.11': + resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} + + '@tsconfig/node12@1.0.11': + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + + '@tsconfig/node14@1.0.3': + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + + '@tsconfig/node16@1.0.4': + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + '@tsconfig/node20@20.1.4': resolution: {integrity: sha512-sqgsT69YFeLWf5NtJ4Xq/xAF8p4ZQHlmGW74Nu2tD4+g5fAsposc4ZfaaPixVu4y01BEiDCWLRDCvDM5JOsRxg==} @@ -1333,15 +2016,24 @@ packages: '@types/babel__traverse@7.20.6': resolution: {integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==} + '@types/bytes@3.1.4': + resolution: {integrity: sha512-A0uYgOj3zNc4hNjHc5lYUfJQ/HVyBXiUMKdXd7ysclaE6k9oJdavQzODHuwjpUu2/boCP8afjQYi8z/GtvNCWA==} + '@types/cookie@0.6.0': resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==} + '@types/cookiejar@2.1.5': + resolution: {integrity: sha512-he+DHOWReW0nghN24E1WUqM0efK4kI9oTqDm6XmK8ZPe2djZ90BSNdGnIyCLzCPw7/pogPlGbzI2wHGGmi4O/Q==} + '@types/degit@2.8.6': resolution: {integrity: sha512-y0M7sqzsnHB6cvAeTCBPrCQNQiZe8U4qdzf8uBVmOWYap5MMTN/gB2iEqrIqFiYcsyvP74GnGD5tgsHttielFw==} '@types/estree@1.0.5': resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + '@types/he@1.2.3': + resolution: {integrity: sha512-q67/qwlxblDzEDvzHhVkwc1gzVWxaNxeyHUBF4xElrvjL11O+Ytze+1fGpBHlr/H9myiBUaUXNnNPmBHxxfAcA==} + '@types/js-yaml@4.0.9': resolution: {integrity: sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==} @@ -1351,12 +2043,18 @@ packages: '@types/linkify-it@5.0.0': resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==} + '@types/lodash@4.17.7': + resolution: {integrity: sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==} + '@types/markdown-it@14.1.1': resolution: {integrity: sha512-4NpsnpYl2Gt1ljyBGrKMxFYAYvpqbnnkgP/i/g+NLpjEUa3obn1XJCur9YbEXKDAkaXqsR1LbDnGEJ0MmKFxfg==} '@types/mdurl@2.0.0': resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==} + '@types/methods@1.1.4': + resolution: {integrity: sha512-ymXWVrDiCxTBE3+RIrrP533E70eA+9qu7zdWoHuOmGujkYtzf4HQF96b8nwHLqhuf4ykX61IGRIB38CC6/sImQ==} + '@types/minimist@1.2.5': resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} @@ -1366,18 +2064,30 @@ packages: '@types/node@12.20.55': resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + '@types/node@20.14.14': + resolution: {integrity: sha512-d64f00982fS9YoOgJkAMolK7MN8Iq3TDdVjchbYHdEmjth/DHowx82GnoA+tVUAN+7vxfYUgAzi+JXbKNd2SDQ==} + '@types/node@20.14.7': resolution: {integrity: sha512-uTr2m2IbJJucF3KUxgnGOZvYbN0QgkGyWxG6973HCpMYFy2KfcgYuIwkJQMQkt1VbBMlvWRbpshFTLxnxCZjKQ==} + '@types/node@22.1.0': + resolution: {integrity: sha512-AOmuRF0R2/5j1knA3c6G3HOk523Ga+l+ZXltX8SF1+5oqcXijjfTd8fY3XRZqSihEu9XhtQnKYLmkFaoxgsJHw==} + '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + '@types/pluralize@0.0.33': + resolution: {integrity: sha512-JOqsl+ZoCpP4e8TDke9W79FDcSgPAR0l6pixx2JHkhnRjvShyYiAYw2LVsnA7K08Y6DeOnaU6ujmENO4os/cYg==} + '@types/prop-types@15.7.12': resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==} '@types/pug@2.0.10': resolution: {integrity: sha512-Sk/uYFOBAB7mb74XcpizmH0KOR2Pv3D2Hmrh1Dmy5BmK3MpdSa5kqZcg6EKBdklU0bFXX9gCfzvpnyUehrPIuA==} + '@types/qs@6.9.15': + resolution: {integrity: sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==} + '@types/react-dom@18.3.0': resolution: {integrity: sha512-EhwApuTmMBmXuFOikhQLIBUn6uFg81SwLMOAUgodJF14SOBOCMdU04gDoYi0WOJJHD144TL32z4yDqCW3dnkQg==} @@ -1393,12 +2103,26 @@ packages: '@types/statuses@2.0.5': resolution: {integrity: sha512-jmIUGWrAiwu3dZpxntxieC+1n/5c3mjrImkmOSQ2NC5uP6cYO4aAZDdSmRcI5C1oiTmqlZGHC+/NmJrKogbP5A==} + '@types/superagent@8.1.8': + resolution: {integrity: sha512-nTqHJ2OTa7PFEpLahzSEEeFeqbMpmcN7OeayiOc7v+xk+/vyTKljRe+o4MPqSnPeRCMvtxuLG+5QqluUVQJOnA==} + + '@types/validator@13.12.0': + resolution: {integrity: sha512-nH45Lk7oPIJ1RVOF6JgFI6Dy0QpHEzq4QecZhvguxYPDwT8c93prCMqAtiIttm39voZ+DDR+qkNnMpJmMBRqag==} + '@types/web-bluetooth@0.0.20': resolution: {integrity: sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==} '@types/wrap-ansi@3.0.0': resolution: {integrity: sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==} + '@vinejs/compiler@2.5.0': + resolution: {integrity: sha512-hg4ekaB5Y2zh+IWzBiC/WCDWrIfpVnKu/ubUvelKlidc/VbulsexoFRw5kJGHZenPVI5YzNnDeTdYSALkTV7jQ==} + engines: {node: '>=18.0.0'} + + '@vinejs/vine@2.1.0': + resolution: {integrity: sha512-09aJ2OauxpblqiNqd8qC9RAzzm5SV6fTqZhE4e25j4cM7fmNoXRTjM7Oo8llFADMO4eSA44HqYEO3mkRRYdbYw==} + engines: {node: '>=18.16.0'} + '@vitejs/plugin-react-swc@3.7.0': resolution: {integrity: sha512-yrknSb3Dci6svCd/qhHqhFPDSw0QtjumcqdKMoNNzmOl5lMXTTiqzjWtG4Qask2HdvvzaNgSunbQGet8/GrKdA==} peerDependencies: @@ -1417,6 +2141,11 @@ packages: vite: ^5.0.0 vue: ^3.2.25 + '@vitest/coverage-v8@2.0.5': + resolution: {integrity: sha512-qeFcySCg5FLO2bHHSa0tAZAOnAUbp4L6/A5JDuj9+bt53JREl8hpLjLHEWF0e/gWc8INVpJaqA7+Ene2rclpZg==} + peerDependencies: + vitest: 2.0.5 + '@vitest/expect@2.0.5': resolution: {integrity: sha512-yHZtwuP7JZivj65Gxoi8upUN2OzHTi3zVfjwdpu2WrvCZPLwsJ2Ey5ILIPccoW23dd/zQBlJ4/dhi7DWNyXCpA==} @@ -1552,6 +2281,17 @@ packages: resolution: {integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==} deprecated: Use your platform's native atob() and btoa() methods instead + abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + + abstract-logging@2.0.1: + resolution: {integrity: sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==} + + accepts@1.3.8: + resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} + engines: {node: '>= 0.6'} + acorn-globals@7.0.1: resolution: {integrity: sha512-umOSDSDrfHbTNPuNpC2NSnnA3LUrqpevPb4T9jRx4MagXNS0rs+gwiTcAvqCRmsD6utzsrzNt+ebm00SNWiC3Q==} @@ -1587,6 +2327,10 @@ packages: resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} engines: {node: '>=8'} + ansi-escapes@7.0.0: + resolution: {integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==} + engines: {node: '>=18'} + ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} engines: {node: '>=8'} @@ -1607,10 +2351,20 @@ packages: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} + arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + argparse@1.0.10: resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} @@ -1640,6 +2394,9 @@ packages: resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} engines: {node: '>=0.10.0'} + as-table@1.0.55: + resolution: {integrity: sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==} + asap@2.0.6: resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} @@ -1650,6 +2407,10 @@ packages: asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + atomic-sleep@1.0.0: + resolution: {integrity: sha512-kNOjDqAh7px0XWNI+4QbzoiR/nTkHAWNud2uvnJquD1/x5a7EQZMJT0AczqK0Qn67oY/TTQ1LbUKajZpp3I9tQ==} + engines: {node: '>=8.0.0'} + available-typed-arrays@1.0.7: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} @@ -1664,6 +2425,13 @@ packages: balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + basic-auth@2.0.1: + resolution: {integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==} + engines: {node: '>= 0.8'} + better-path-resolve@1.0.0: resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} engines: {node: '>=4'} @@ -1698,10 +2466,23 @@ packages: resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==} engines: {node: '>=8.0.0'} + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + + bundle-require@5.0.0: + resolution: {integrity: sha512-GuziW3fSSmopcx4KRymQEJVbZUfqlCqcq7dvs6TYwKRZiegK/2buMxQTPs6MGlNv50wms1699qYO54R8XfRX4w==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + peerDependencies: + esbuild: '>=0.18' + busboy@1.6.0: resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} engines: {node: '>=10.16.0'} + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + cac@6.7.14: resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} engines: {node: '>=8'} @@ -1729,9 +2510,17 @@ packages: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} + camelcase@8.0.0: + resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==} + engines: {node: '>=16'} + caniuse-lite@1.0.30001646: resolution: {integrity: sha512-dRg00gudiBDDTmUhClSdv3hqRfpbOnU28IpI1T6PBTLWa+kOj0681C8uML3PifYfREuBrVjDGhL3adYpBT6spw==} + case-anything@2.1.13: + resolution: {integrity: sha512-zlOQ80VrQ2Ue+ymH5OuM/DlDq64mEm+B9UTdHULv5osUMD6HalNTblf2b1u/m6QecjsnOkBpqVZ+XPwIVsy7Ng==} + engines: {node: '>=12.13'} + chai@5.1.1: resolution: {integrity: sha512-pT1ZgP8rPNqUgieVaEY+ryQr6Q4HXNg8Ei9UnLUrjN4IA7dvQC5JB+/kxVcPNDHyBcc/26CXPkbNzq3qwrOEKA==} engines: {node: '>=12'} @@ -1747,6 +2536,10 @@ packages: chardet@0.7.0: resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + check-disk-space@3.4.0: + resolution: {integrity: sha512-drVkSqfwA+TvuEhFipiR1OC9boEGZL5RrWvVsOthdcvQNXyCCuKkEiTOTXZ7qxSf/GLwq4GvzfrQD/Wz325hgw==} + engines: {node: '>=16'} + check-error@2.1.1: resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} engines: {node: '>= 16'} @@ -1763,10 +2556,26 @@ packages: resolution: {integrity: sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==} engines: {node: '>=12'} + cli-boxes@3.0.0: + resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==} + engines: {node: '>=10'} + + cli-cursor@5.0.0: + resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} + engines: {node: '>=18'} + cli-spinners@2.9.2: resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} engines: {node: '>=6'} + cli-table3@0.6.5: + resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} + engines: {node: 10.* || >= 12.*} + + cli-truncate@4.0.0: + resolution: {integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==} + engines: {node: '>=18'} + cli-width@4.1.0: resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} engines: {node: '>= 12'} @@ -1785,6 +2594,9 @@ packages: resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} engines: {node: '>=0.8'} + code-block-writer@13.0.2: + resolution: {integrity: sha512-XfXzAGiStXSmCIwrkdfvc7FS5Dtj8yelCtyOf2p2skCAfvLd6zu0rGzuS9NSCO3bq1JKpFZ7tbKdKlcd5occQA==} + code-red@1.0.4: resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==} @@ -1804,14 +2616,28 @@ packages: colorette@1.4.0: resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} + colorette@2.0.19: + resolution: {integrity: sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==} + + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + combined-stream@1.0.8: resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} engines: {node: '>= 0.8'} + commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + commander@11.1.0: resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} engines: {node: '>=16'} + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + component-emitter@1.3.1: resolution: {integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==} @@ -1821,6 +2647,14 @@ packages: concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + consola@3.2.3: + resolution: {integrity: sha512-I5qxpzLv+sJhTVEoLYNcTW+bThDCPsit0vLNKShZx6rLtpilNpmmeTPaeqJb9ZE9dV3DGaeby6Vuhrw38WjeyQ==} + engines: {node: ^14.18.0 || >=16.10.0} + + content-disposition@0.5.4: + resolution: {integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==} + engines: {node: '>= 0.6'} + convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} @@ -1835,6 +2669,17 @@ packages: cookiejar@2.1.4: resolution: {integrity: sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==} + copy-file@11.0.0: + resolution: {integrity: sha512-mFsNh/DIANLqFt5VHZoGirdg7bK5+oTWlhnGu6tgRhzBlnEKWaPX2xrFaLltii/6rmhqFMJqffUgknuRdpYlHw==} + engines: {node: '>=18'} + + cpy@11.1.0: + resolution: {integrity: sha512-QGHetPSSuprVs+lJmMDcivvrBwTKASzXQ5qxFvRC2RFESjjod71bDvFvhxTjDgkNjrrb72AI6JPjfYwxrIy33A==} + engines: {node: '>=18'} + + create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + cross-spawn@5.1.0: resolution: {integrity: sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==} @@ -1872,6 +2717,9 @@ packages: resolution: {integrity: sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==} engines: {node: '>= 0.1.90'} + data-uri-to-buffer@2.0.2: + resolution: {integrity: sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==} + data-urls@3.0.2: resolution: {integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==} engines: {node: '>=12'} @@ -1891,9 +2739,24 @@ packages: dataloader@1.4.0: resolution: {integrity: sha512-68s5jYdlvasItOJnCuI2Q9s4q98g0pCyL3HrcKJu8KNugUl8ahgmZYg38ysLTgQjjXX3H8CJLkAvWrclWfcalw==} + dateformat@4.6.3: + resolution: {integrity: sha512-2P0p0pFGzHS5EMnhdxQi7aJN+iMheud0UhG4dlE1DLAlvL8JHjJJTX/CSm4JXwV0Ka5nGk3zC5mcb5bUQUxxMA==} + + dayjs@1.11.12: + resolution: {integrity: sha512-Rt2g+nTbLlDWZTwwrIXjy9MeiZmSDI375FvZs72ngxx8PDC6YXOeR3q5LAuPzjZQxhiWdRKac7RKV+YyQYfYIg==} + de-indent@1.0.2: resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} + debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + debug@4.3.5: resolution: {integrity: sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==} engines: {node: '>=6.0'} @@ -1927,6 +2790,14 @@ packages: decimal.js@10.4.3: resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + dedent@1.5.3: + resolution: {integrity: sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==} + peerDependencies: + babel-plugin-macros: ^3.1.0 + peerDependenciesMeta: + babel-plugin-macros: + optional: true + deep-eql@5.0.2: resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} engines: {node: '>=6'} @@ -1964,10 +2835,18 @@ packages: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} + destroy@1.2.0: + resolution: {integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==} + engines: {node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16} + detect-indent@6.1.0: resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} engines: {node: '>=8'} @@ -1978,10 +2857,17 @@ packages: dezalgo@1.0.4: resolution: {integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==} + diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} + dlv@1.1.3: + resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} + dom-accessibility-api@0.5.16: resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} @@ -1990,16 +2876,43 @@ packages: engines: {node: '>=12'} deprecated: Use your platform's native DOMException instead + dotenv@16.4.5: + resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} + engines: {node: '>=12'} + dotenv@8.6.0: resolution: {integrity: sha512-IrPdXQsk2BbzvCBGBOTmmSH5SodmqZNt4ERAZDmW4CT+tL8VtvinqywuANaFu4bOMWki16nqf0e4oC0QIaDr/g==} engines: {node: '>=10'} + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + ee-first@1.1.1: + resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + electron-to-chromium@1.4.807: resolution: {integrity: sha512-kSmJl2ZwhNf/bcIuCH/imtNOKlpkLDn2jqT5FJ+/0CXjhnFaOa9cOe9gHKKy71eM49izwuQjZhKk+lWQ1JxB7A==} + emittery@1.0.3: + resolution: {integrity: sha512-tJdCJitoy2lrC2ldJcqN4vkqJ00lT+tOWNT1hBJjO/3FDMJa5TTIiYGCKGkn/WfCyOzUMObeohbVTj00fhiLiA==} + engines: {node: '>=14.16'} + + emoji-regex@10.3.0: + resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==} + emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + encodeurl@2.0.0: + resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} + engines: {node: '>= 0.8'} + + end-of-stream@1.4.4: + resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==} + enquirer@2.4.1: resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} engines: {node: '>=8.6'} @@ -2008,6 +2921,10 @@ packages: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} + environment@1.1.0: + resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} + engines: {node: '>=18'} + error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} @@ -2023,6 +2940,9 @@ packages: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} engines: {node: '>= 0.4'} + es-module-lexer@1.5.4: + resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} + es-object-atoms@1.0.0: resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} engines: {node: '>= 0.4'} @@ -2051,6 +2971,11 @@ packages: engines: {node: '>=12'} hasBin: true + esbuild@0.23.0: + resolution: {integrity: sha512-1lvV17H2bMYda/WaFb2jLPeHU3zml2k4/yagNMG8Q/YtfMjCwEUZa2eXXMgZTVSL5q1n4H7sQ0X6CdJDqqeCFA==} + engines: {node: '>=18'} + hasBin: true + escalade@3.1.2: resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} @@ -2071,6 +2996,10 @@ packages: esm-env@1.0.0: resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==} + esm@3.2.25: + resolution: {integrity: sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==} + engines: {node: '>=6'} + esprima@4.0.1: resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} engines: {node: '>=4'} @@ -2090,6 +3019,22 @@ packages: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} + etag@1.8.1: + resolution: {integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==} + engines: {node: '>= 0.6'} + + event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + execa@8.0.1: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} engines: {node: '>=16.17'} @@ -2101,6 +3046,9 @@ packages: resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} engines: {node: '>=4'} + fast-copy@3.0.2: + resolution: {integrity: sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==} + fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} @@ -2108,12 +3056,24 @@ packages: resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} engines: {node: '>=8.6.0'} + fast-redact@3.5.0: + resolution: {integrity: sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==} + engines: {node: '>=6'} + fast-safe-stringify@2.1.1: resolution: {integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==} + fastest-levenshtein@1.0.16: + resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} + engines: {node: '>= 4.9.1'} + fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + file-type@19.4.0: + resolution: {integrity: sha512-7N7Pu0UzVYV8YP6WXhN+kcvtp/P00eWKVo76nMAK+RasRO/ICzuJzjoG+aSLqbY6khDAFQuqsyImGaSdkm49Iw==} + engines: {node: '>=18'} + fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} @@ -2122,6 +3082,10 @@ packages: resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} engines: {node: '>=8'} + find-up-simple@1.0.0: + resolution: {integrity: sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==} + engines: {node: '>=18'} + find-up@4.1.0: resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} engines: {node: '>=8'} @@ -2133,6 +3097,10 @@ packages: find-yarn-workspace-root2@1.2.16: resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==} + flattie@1.1.1: + resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==} + engines: {node: '>=8'} + focus-trap@7.5.4: resolution: {integrity: sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==} @@ -2148,13 +3116,28 @@ packages: for-each@0.3.3: resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} + foreground-child@3.3.0: + resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} + engines: {node: '>=14'} + form-data@4.0.0: resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} engines: {node: '>= 6'} + formidable@2.1.2: + resolution: {integrity: sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==} + formidable@3.5.1: resolution: {integrity: sha512-WJWKelbRHN41m5dumb0/k8TeAx7Id/y3a+Z7QfhxP/htI9Js5zYaEDtG8uMgG0vM0lOlqnmjE99/kfpOYi/0Og==} + forwarded@0.2.0: + resolution: {integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==} + engines: {node: '>= 0.6'} + + fresh@0.5.2: + resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} + engines: {node: '>= 0.6'} + fs-extra@11.2.0: resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} engines: {node: '>=14.14'} @@ -2198,6 +3181,10 @@ packages: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} + get-east-asian-width@1.2.0: + resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==} + engines: {node: '>=18'} + get-func-name@2.0.2: resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} @@ -2205,18 +3192,48 @@ packages: resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} engines: {node: '>= 0.4'} + get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + + get-port@7.1.0: + resolution: {integrity: sha512-QB9NKEeDg3xxVwCCwJQ9+xycaz6pBB6iQ76wiWMl1927n0Kir6alPiP+yuiICLLU4jpMe08dXfpebuQppFA2zw==} + engines: {node: '>=16'} + + get-source@2.0.12: + resolution: {integrity: sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + get-stream@8.0.1: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} engines: {node: '>=16'} + get-stream@9.0.1: + resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} + engines: {node: '>=18'} + get-symbol-description@1.0.2: resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} engines: {node: '>= 0.4'} + getopts@2.3.0: + resolution: {integrity: sha512-5eDf9fuSXwxBL6q5HX+dhDj+dslFGWzU5thZ9kNKUkcPtaPdatmUFKwHFrLb/uf/WpA4BHET+AX3Scl56cAjpA==} + glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} deprecated: Glob versions prior to v9 are no longer supported @@ -2240,6 +3257,10 @@ packages: resolution: {integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + globby@14.0.2: + resolution: {integrity: sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==} + engines: {node: '>=18'} + globrex@0.1.2: resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} @@ -2302,6 +3323,9 @@ packages: headers-polyfill@4.0.3: resolution: {integrity: sha512-IScLbePpkvO846sIwOtOTDjutRMWdXdJmXdMvk6gCBHxFO8d+QKOQedyZSxFTTFYRSmlgSTDtXqqq4pcenBXLQ==} + help-me@5.0.0: + resolution: {integrity: sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==} + hexoid@1.0.0: resolution: {integrity: sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==} engines: {node: '>=8'} @@ -2316,10 +3340,24 @@ packages: resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} engines: {node: '>=10'} + hosted-git-info@7.0.2: + resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} + engines: {node: ^16.14.0 || >=18.0.0} + + hot-hook@0.2.6: + resolution: {integrity: sha512-sMqK0sejkw+gUh/WiyqYBk8AKB2qM1a1wsC4v0JlnK/1x8CUFF60oPawZy/EOtLmN1Om1GTGVJLIwShxOnuI9Q==} + html-encoding-sniffer@3.0.0: resolution: {integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==} engines: {node: '>=12'} + html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + + http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + http-proxy-agent@5.0.0: resolution: {integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==} engines: {node: '>= 6'} @@ -2335,6 +3373,10 @@ packages: human-id@1.0.2: resolution: {integrity: sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==} + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + human-signals@5.0.0: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} @@ -2347,6 +3389,13 @@ packages: resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} engines: {node: '>=0.10.0'} + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + igniculus@1.5.0: + resolution: {integrity: sha512-vhj2J/cSzNg2G5tcK4Z1KZdeYmQa5keoxFULUYAxctK/zHJb1oraO7noCqnJxKe1b2eZdiiaSL1IHPOFAI8UYQ==} + engines: {node: '>=4.0.0'} + ignore@5.3.1: resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} engines: {node: '>= 4'} @@ -2366,6 +3415,10 @@ packages: resolution: {integrity: sha512-MWDKS3AS1bGCHLBA2VLImJz42f7bJh8wQsTGCzI3j519/CASStoDONUBVz2I/VID0MpiX3SGSnbOD2xUalbE5g==} engines: {node: '>=18'} + inflation@2.1.0: + resolution: {integrity: sha512-t54PPJHG1Pp7VQvxyVCJ9mBbjG3Hqryges9bXoOO6GExCPa+//i/d5GSuFtpx3ALLd7lgIAur6zrIlBQyJuMlQ==} + engines: {node: '>= 0.8.0'} + inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. @@ -2377,6 +3430,14 @@ packages: resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} engines: {node: '>= 0.4'} + interpret@2.2.0: + resolution: {integrity: sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==} + engines: {node: '>= 0.10'} + + ipaddr.js@1.9.1: + resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} + engines: {node: '>= 0.10'} + is-array-buffer@3.0.4: resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} engines: {node: '>= 0.4'} @@ -2418,6 +3479,14 @@ packages: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} + is-fullwidth-code-point@4.0.0: + resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} + engines: {node: '>=12'} + + is-fullwidth-code-point@5.0.0: + resolution: {integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==} + engines: {node: '>=18'} + is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} @@ -2463,10 +3532,18 @@ packages: resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} engines: {node: '>= 0.4'} + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + is-stream@3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + is-stream@4.0.1: + resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} + engines: {node: '>=18'} + is-string@1.0.7: resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} engines: {node: '>= 0.4'} @@ -2496,6 +3573,29 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + + istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + + istanbul-lib-source-maps@5.0.6: + resolution: {integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==} + engines: {node: '>=10'} + + istanbul-reports@3.1.7: + resolution: {integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==} + engines: {node: '>=8'} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + joycon@3.1.1: + resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==} + engines: {node: '>=10'} + js-levenshtein@1.1.6: resolution: {integrity: sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==} engines: {node: '>=0.10.0'} @@ -2547,6 +3647,13 @@ packages: jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + jsonschema@1.4.1: + resolution: {integrity: sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==} + + junk@4.0.1: + resolution: {integrity: sha512-Qush0uP+G8ZScpGMZvHUiRfI0YBWuB3gVBYlI0v0vvOJt5FLicco+IkP0a50LqTTQhmts/m6tP5SWE+USyIvcQ==} + engines: {node: '>=12.20'} + kind-of@6.0.3: resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} engines: {node: '>=0.10.0'} @@ -2555,9 +3662,49 @@ packages: resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} engines: {node: '>=6'} + knex-dynamic-connection@3.2.0: + resolution: {integrity: sha512-+j6KeUSim0FR8EobOqA1a/TZbN9mahjzHzJgOfQVkv6PUnSqJp70c/5n63M2YVNgNHETyBIUhV8stuQ0T/mG3g==} + engines: {node: '>=14.0.0'} + + knex@3.1.0: + resolution: {integrity: sha512-GLoII6hR0c4ti243gMs5/1Rb3B+AjwMOfjYm97pu0FOQa7JH56hgBxYf5WK2525ceSbBY1cjeZ9yk99GPMB6Kw==} + engines: {node: '>=16'} + hasBin: true + peerDependencies: + better-sqlite3: '*' + mysql: '*' + mysql2: '*' + pg: '*' + pg-native: '*' + sqlite3: '*' + tedious: '*' + peerDependenciesMeta: + better-sqlite3: + optional: true + mysql: + optional: true + mysql2: + optional: true + pg: + optional: true + pg-native: + optional: true + sqlite3: + optional: true + tedious: + optional: true + + lilconfig@3.1.2: + resolution: {integrity: sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==} + engines: {node: '>=14'} + lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + load-tsconfig@0.2.5: + resolution: {integrity: sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + load-yaml-file@0.2.0: resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==} engines: {node: '>=6'} @@ -2576,9 +3723,19 @@ packages: lodash.isequal@4.5.0: resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + lodash.sortby@4.7.0: + resolution: {integrity: sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==} + lodash.startcase@4.4.0: resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + log-update@6.1.0: + resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} + engines: {node: '>=18'} + loose-envify@1.4.0: resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} hasBin: true @@ -2586,6 +3743,9 @@ packages: loupe@3.1.1: resolution: {integrity: sha512-edNu/8D5MKVfGVFRhFf8aAxiTM6Wumfz5XsaatSxlD3w4R1d/WEKUTydCdPGbl9K7QG/Ca3GnDV2sIKIpXRQcw==} + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + lru-cache@4.1.5: resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} @@ -2596,6 +3756,10 @@ packages: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} engines: {node: '>=10'} + luxon@3.5.0: + resolution: {integrity: sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==} + engines: {node: '>=12'} + lz-string@1.5.0: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true @@ -2606,6 +3770,16 @@ packages: magic-string@0.30.11: resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} + magicast@0.3.4: + resolution: {integrity: sha512-TyDF/Pn36bBji9rWKHlZe+PZb6Mx5V8IHCSxk7X4aljM4e/vyDvZZYwHewdVaqiA0nb3ghfHU/6AUpDxWoER2Q==} + + make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + + make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + map-obj@1.0.1: resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} engines: {node: '>=0.10.0'} @@ -2620,11 +3794,23 @@ packages: mdn-data@2.0.30: resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} - meow@10.1.5: - resolution: {integrity: sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + media-typer@0.3.0: + resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} + engines: {node: '>= 0.6'} - meow@6.1.1: + media-typer@1.1.0: + resolution: {integrity: sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==} + engines: {node: '>= 0.8'} + + memoize@10.0.0: + resolution: {integrity: sha512-H6cBLgsi6vMWOcCpvVCdFFnl3kerEXbrYh9q+lY6VXvQSmM6CkmV08VOwT+WE2tzIEqRPFfAq3fm4v/UIW6mSA==} + engines: {node: '>=18'} + + meow@10.1.5: + resolution: {integrity: sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + meow@6.1.1: resolution: {integrity: sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==} engines: {node: '>=8'} @@ -2660,10 +3846,18 @@ packages: engines: {node: '>=4.0.0'} hasBin: true + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} engines: {node: '>=12'} + mimic-function@5.0.1: + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} + engines: {node: '>=18'} + min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} @@ -2686,6 +3880,10 @@ packages: minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + minisearch@6.3.0: resolution: {integrity: sha512-ihFnidEeU8iXzcVHy74dhkxh/dn8Dc08ERl0xwoMMGqp4+LvRSCgicb+zGqWthVokQKvCSxITlh3P08OzdTYCQ==} @@ -2700,6 +3898,11 @@ packages: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true + mkdirp@3.0.1: + resolution: {integrity: sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==} + engines: {node: '>=10'} + hasBin: true + mri@1.2.0: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} @@ -2724,15 +3927,26 @@ packages: muggle-string@0.4.1: resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} + mustache@4.2.0: + resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} + hasBin: true + mute-stream@1.0.0: resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + nanoid@3.3.7: resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} hasBin: true + negotiator@0.6.3: + resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} + engines: {node: '>= 0.6'} + neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} @@ -2773,10 +3987,22 @@ packages: resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} engines: {node: '>=10'} + normalize-package-data@6.0.2: + resolution: {integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==} + engines: {node: ^16.14.0 || >=18.0.0} + normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} + normalize-url@8.0.1: + resolution: {integrity: sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==} + engines: {node: '>=14.16'} + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + npm-run-path@5.3.0: resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} @@ -2784,6 +4010,10 @@ packages: nwsapi@2.2.12: resolution: {integrity: sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w==} + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + object-inspect@1.13.1: resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} @@ -2795,13 +4025,32 @@ packages: resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} engines: {node: '>= 0.4'} + on-exit-leak-free@2.1.2: + resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} + engines: {node: '>=14.0.0'} + + on-finished@2.4.1: + resolution: {integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==} + engines: {node: '>= 0.8'} + once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + onetime@6.0.0: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} engines: {node: '>=12'} + onetime@7.0.0: + resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} + engines: {node: '>=18'} + + openapi-types@12.1.3: + resolution: {integrity: sha512-N4YtSYJqghVu4iek2ZUvcN/0aqH1kRDuNqzcycDxhOUpg7GdvLa2F3DgS6yBNhInhv2r/6I0Flkn7CqL8+nIcw==} + openapi-typescript-codegen@0.25.0: resolution: {integrity: sha512-nN/TnIcGbP58qYgwEEy5FrAAjePcYgfMaCe3tsmYyTgI3v4RR9v8os14L+LEWDvV50+CmqiyTzRkKKtJeb6Ybg==} hasBin: true @@ -2820,10 +4069,18 @@ packages: outvariant@1.4.2: resolution: {integrity: sha512-Ou3dJ6bA/UJ5GVHxah4LnqDwZRwAmWxrG3wtrHrbGnP4RnLCtA64A4F+ae7Y8ww660JaddSoArUR5HjipWSHAQ==} + p-event@6.0.1: + resolution: {integrity: sha512-Q6Bekk5wpzW5qIyUP4gdMEujObYstZl6DMMOSenwBvV0BlE5LkDwkjs5yHbZmdCEq2o4RJx4tE1vwxFVf2FG1w==} + engines: {node: '>=16.17'} + p-filter@2.1.0: resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} engines: {node: '>=8'} + p-filter@4.1.0: + resolution: {integrity: sha512-37/tPdZ3oJwHaS3gNJdenCDB3Tz26i9sjhnguBtvN0vYlRIiDNnvTWkuh+0hETV9rLPdJ3rlL3yVOYPIAnM8rw==} + engines: {node: '>=18'} + p-limit@2.3.0: resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} engines: {node: '>=6'} @@ -2848,10 +4105,25 @@ packages: resolution: {integrity: sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==} engines: {node: '>=12'} + p-map@7.0.2: + resolution: {integrity: sha512-z4cYYMMdKHzw4O5UkWJImbZynVIo0lSGTXc7bzB1e/rrDqkgGUNysK/o4bTr+0+xKvvLoTyGqYC4Fgljy9qe1Q==} + engines: {node: '>=18'} + + p-timeout@6.1.2: + resolution: {integrity: sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ==} + engines: {node: '>=14.16'} + p-try@2.2.0: resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} engines: {node: '>=6'} + package-json-from-dist@1.0.0: + resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + + parse-imports@1.2.0: + resolution: {integrity: sha512-K5aG9cextqjAlyevwuSMjWPbBr+X8xGgfHS4VopbKC1u3jLndRGl2CoUHMTvuD6LIg4di5TzH/Pw9+XZyTjI/w==} + engines: {node: '>= 12.17'} + parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} engines: {node: '>=8'} @@ -2885,6 +4157,10 @@ packages: path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + path-to-regexp@6.2.2: resolution: {integrity: sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==} @@ -2892,6 +4168,10 @@ packages: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} + path-type@5.0.0: + resolution: {integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==} + engines: {node: '>=12'} + pathe@1.1.2: resolution: {integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==} @@ -2899,14 +4179,18 @@ packages: resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} engines: {node: '>= 14.16'} + peek-readable@5.1.3: + resolution: {integrity: sha512-kCsc9HwH5RgVA3H3VqkWFyGQwsxUxLdiSX1d5nqAm7hnMFjNFX1VhBLmJoUY0hZNc8gmDNgBkLjfhiWPsziXWA==} + engines: {node: '>=14.16'} + perfect-debounce@1.0.0: resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} periscopic@3.1.0: resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==} - picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} + pg-connection-string@2.6.2: + resolution: {integrity: sha512-ch6OwaeaPYcova4kKZ15sbJ2hKb/VP48ZD2gE7i1J+L4MspCtBMAx8nMgz7bksc7IojCIIWuEhHibSMFH8m8oA==} picocolors@1.0.1: resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==} @@ -2915,10 +4199,32 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} + picomatch@4.0.2: + resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==} + engines: {node: '>=12'} + pify@4.0.1: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} + pino-abstract-transport@1.2.0: + resolution: {integrity: sha512-Guhh8EZfPCfH+PMXAb6rKOjGQEoy0xlAIn+irODG5kgfYV+BQ0rGYYWTIel3P5mmyXqkYkPmdIkywsn6QKUR1Q==} + + pino-pretty@11.2.2: + resolution: {integrity: sha512-2FnyGir8nAJAqD3srROdrF1J5BIcMT4nwj7hHSc60El6Uxlym00UbCCd8pYIterstVBFlMyF1yFV8XdGIPbj4A==} + hasBin: true + + pino-std-serializers@6.2.2: + resolution: {integrity: sha512-cHjPPsE+vhj/tnhCy/wiMh3M3z3h/j15zHQX+S9GkTBgqJuTuJzYJ4gUyACLhDaJ7kk9ba9iRDmbH2tJU03OiA==} + + pino@8.21.0: + resolution: {integrity: sha512-ip4qdzjkAyDDZklUaZkcRFb2iA118H9SgRh8yzTkSQK8HilsOJF7rSY8HoW5+I0M46AZgX/pxbprf2vvzQCE0Q==} + hasBin: true + + pirates@4.0.6: + resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} + engines: {node: '>= 6'} + pkg-dir@4.2.0: resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} engines: {node: '>=8'} @@ -2941,6 +4247,24 @@ packages: resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} engines: {node: '>= 0.4'} + postcss-load-config@6.0.1: + resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==} + engines: {node: '>= 18'} + peerDependencies: + jiti: '>=1.21.0' + postcss: '>=8.0.9' + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + jiti: + optional: true + postcss: + optional: true + tsx: + optional: true + yaml: + optional: true + postcss@8.4.31: resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} engines: {node: ^10 || ^12 || >=14} @@ -2970,6 +4294,24 @@ packages: resolution: {integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==} engines: {node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0} + pretty-hrtime@1.0.3: + resolution: {integrity: sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==} + engines: {node: '>= 0.8'} + + printable-characters@1.0.42: + resolution: {integrity: sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==} + + process-warning@3.0.0: + resolution: {integrity: sha512-mqn0kFRl0EoqhnL0GQ0veqFHyIN1yig9RHh/InzORTUiZHFRAur+aMtRkELNwGs9aNwKS6tg/An4NYBPGwvtzQ==} + + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + + proxy-addr@2.0.7: + resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} + engines: {node: '>= 0.10'} + proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} @@ -2979,6 +4321,9 @@ packages: psl@1.9.0: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + pump@3.0.0: + resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==} + punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} @@ -2987,12 +4332,19 @@ packages: resolution: {integrity: sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==} engines: {node: '>=0.6'} + qs@6.13.0: + resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} + engines: {node: '>=0.6'} + querystringify@2.2.0: resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + quick-format-unescaped@4.0.4: + resolution: {integrity: sha512-tYC1Q1hgyRuHgloV/YXs2w15unPVh8qfu/qCTfhTYamaw7fyhumKa2yGpdSo87vY32rIclj+4fWYQXUMs9EHvg==} + quick-lru@4.0.1: resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} engines: {node: '>=8'} @@ -3001,6 +4353,14 @@ packages: resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} engines: {node: '>=10'} + random-bytes@1.0.0: + resolution: {integrity: sha512-iv7LhNVO047HzYR3InF6pUcUsPQiHTM1Qal51DcGSuZFBil1aBBWG5eHPNek7bvILMaYJ/8RU1e8w1AMdHmLQQ==} + engines: {node: '>= 0.8'} + + raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} + react-dom@18.3.1: resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} peerDependencies: @@ -3022,6 +4382,10 @@ packages: resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} engines: {node: '>=0.10.0'} + read-package-up@11.0.0: + resolution: {integrity: sha512-MbgfoNPANMdb4oRBNg5eqLbB2t2r+o5Ua1pNt8BqGp4I0FJZhuVSOj3PaBPni4azWuSzEdNn2evevzVmEk1ohQ==} + engines: {node: '>=18'} + read-pkg-up@7.0.1: resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} engines: {node: '>=8'} @@ -3038,14 +4402,30 @@ packages: resolution: {integrity: sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==} engines: {node: '>=12'} + read-pkg@9.0.1: + resolution: {integrity: sha512-9viLL4/n1BJUCT1NXVTdS1jtm80yDEgR5T4yCelII49Mbj0v1rZdKqj7zCiYdbB0CuCgdrvHcNogAKTFPBocFA==} + engines: {node: '>=18'} + read-yaml-file@1.1.0: resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} engines: {node: '>=6'} + readable-stream@4.5.2: + resolution: {integrity: sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} + real-require@0.2.0: + resolution: {integrity: sha512-57frrGM/OCTLqLOAh0mhVA9VBMHd+9U7Zb2THMGdBUoZVOtGbJzjxsYGDJ3A9AYYCP4hn6y1TVbaOfzWtm5GFg==} + engines: {node: '>= 12.13.0'} + + rechoir@0.8.0: + resolution: {integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==} + engines: {node: '>= 10.13.0'} + redent@3.0.0: resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} engines: {node: '>=8'} @@ -3054,6 +4434,9 @@ packages: resolution: {integrity: sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==} engines: {node: '>=12'} + reflect-metadata@0.2.2: + resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} + regenerator-runtime@0.14.1: resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} @@ -3083,6 +4466,10 @@ packages: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} hasBin: true + restore-cursor@5.1.0: + resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} + engines: {node: '>=18'} + reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} @@ -3105,6 +4492,11 @@ packages: engines: {node: '>=18.0.0', npm: '>=8.0.0'} hasBin: true + rollup@4.20.0: + resolution: {integrity: sha512-6rbWBChcnSGzIlXeIdNIZTopKYad8ZG8ajhl78lGRLsI2rX8IkaotQhVas2Ma+GPxJav19wrSzvRvuiv0YKzWw==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -3116,10 +4508,20 @@ packages: resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} engines: {node: '>=0.4'} + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + safe-regex-test@1.0.3: resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} engines: {node: '>= 0.4'} + safe-stable-stringify@2.4.3: + resolution: {integrity: sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==} + engines: {node: '>=10'} + safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} @@ -3136,6 +4538,9 @@ packages: search-insights@2.13.0: resolution: {integrity: sha512-Orrsjf9trHHxFRuo9/rzm0KIWmgzE8RMlZMzuhZOJ01Rnz3D0YBAe+V6473t6/H6c7irs6Lt48brULAiRWb3Vw==} + secure-json-parse@2.7.0: + resolution: {integrity: sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==} + semver@5.7.2: resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} hasBin: true @@ -3173,6 +4578,9 @@ packages: resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} engines: {node: '>= 0.4'} + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + shebang-command@1.2.0: resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} engines: {node: '>=0.10.0'} @@ -3218,11 +4626,36 @@ packages: resolution: {integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==} engines: {node: '>=12'} + slash@5.1.0: + resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} + engines: {node: '>=14.16'} + + slashes@3.0.12: + resolution: {integrity: sha512-Q9VME8WyGkc7pJf6QEkj3wE+2CnvZMI+XJhwdTPR8Z/kWQRXi7boAWLDibRPyHRTUTPx5FaU7MsyrjI3yLB4HA==} + + slice-ansi@5.0.0: + resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} + engines: {node: '>=12'} + + slice-ansi@7.1.0: + resolution: {integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==} + engines: {node: '>=18'} + + slugify@1.6.6: + resolution: {integrity: sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==} + engines: {node: '>=8.0.0'} + smartwrap@2.0.2: resolution: {integrity: sha512-vCsKNQxb7PnCNd2wY1WClWifAc2lwqsG8OaswpJkVJsvMGcnEntdTCDajZCkk93Ay1U3t/9puJmb525Rg5MZBA==} engines: {node: '>=6'} hasBin: true + sonic-boom@3.8.1: + resolution: {integrity: sha512-y4Z8LCDBuum+PBP3lSV7RHrXscqksve/bi0as7mhwVnBW+/wUqKT/2Kb7um8yqcFy0duYbbPxzt89Zy2nOCaxg==} + + sonic-boom@4.0.1: + resolution: {integrity: sha512-hTSD/6JMLyT4r9zeof6UtuBDpjJ9sO08/nmS5djaA9eozT9oOlNdpXSnzcgj4FTqpk3nkLrs61l4gip9r1HCrQ==} + sorcery@0.11.1: resolution: {integrity: sha512-o7npfeJE6wi6J9l0/5LKshFzZ2rMatRiCDwYeDQaOzqdzRJwALhX7mk/A/ecg6wjMu7wdZbmXfD2S/vpOg0bdQ==} hasBin: true @@ -3235,6 +4668,10 @@ packages: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} + source-map@0.8.0-beta.0: + resolution: {integrity: sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==} + engines: {node: '>= 8'} + spawndamnit@2.0.0: resolution: {integrity: sha512-j4JKEcncSjFlqIwU5L/rp2N5SIPsdxaRsIv678+TZxZ0SRDJTm8JrxJMjE/XuiEZNEir3S8l0Fa3Ke339WI4qA==} @@ -3254,12 +4691,23 @@ packages: resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} engines: {node: '>=0.10.0'} + split-lines@3.0.0: + resolution: {integrity: sha512-d0TpRBL/VfKDXsk8JxPF7zgF5pCUDdBMSlEL36xBgVeaX448t+yGXcJaikUyzkoKOJ0l6KpMfygzJU9naIuivw==} + engines: {node: '>=12'} + + split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + stacktracey@2.1.8: + resolution: {integrity: sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==} + statuses@2.0.1: resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} engines: {node: '>= 0.8'} @@ -3277,10 +4725,22 @@ packages: strict-event-emitter@0.5.1: resolution: {integrity: sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==} + string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + string-width@4.2.3: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + string.prototype.trim@1.2.9: resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} engines: {node: '>= 0.4'} @@ -3292,6 +4752,9 @@ packages: resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} engines: {node: '>= 0.4'} + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -3304,6 +4767,10 @@ packages: resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} engines: {node: '>=4'} + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + strip-final-newline@3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} engines: {node: '>=12'} @@ -3316,6 +4783,14 @@ packages: resolution: {integrity: sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==} engines: {node: '>=12'} + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + strtok3@8.0.1: + resolution: {integrity: sha512-HNkTAnNWQj2YBzfTtoC5OQyu1QwPsMwiB7VyQmNvQKCrmEDSvFB857Vh97UY9InGLNRAB91sdS1ztifRo/3hdA==} + engines: {node: '>=16'} + styled-jsx@5.1.1: resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} engines: {node: '>= 12.0.0'} @@ -3329,6 +4804,16 @@ packages: babel-plugin-macros: optional: true + sucrase@3.35.0: + resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + + superagent@8.1.2: + resolution: {integrity: sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==} + engines: {node: '>=6.4.0 <13 || >=14'} + deprecated: Please upgrade to v9.0.0+ as we have fixed a public vulnerability with formidable dependency. Note that v9.0.0+ requires Node.js v14.18.0+. See https://github.com/ladjs/superagent/pull/1800 for insight. This project is supported and maintained by the team at Forward Email @ https://forwardemail.net + superagent@9.0.2: resolution: {integrity: sha512-xuW7dzkUpcJq7QnhOsnNUgtYp3xRwpt2F7abdRYIpCsAt0hhUqia0EdxyXZQQpNmGtsCzYHryaKSV3q3GJnq7w==} engines: {node: '>=14.18.0'} @@ -3408,10 +4893,40 @@ packages: tabbable@6.2.0: resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==} + tarn@3.0.2: + resolution: {integrity: sha512-51LAVKUSZSVfI05vjPESNc5vwqqZpbXCsU+/+wxlOrUjk2SnFTt97v9ZgQrD4YmxYW1Px6w2KjaDitCfkvgxMQ==} + engines: {node: '>=8.0.0'} + + tempura@0.4.1: + resolution: {integrity: sha512-NQ4Cs23jM6UUp3CcS5vjmyjTC6dtA5EsflBG2cyG0wZvP65AV26tJ920MGvTRYIImCY13RBpOhc7q4/pu+FG5A==} + engines: {node: '>=10'} + term-size@2.2.1: resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} engines: {node: '>=8'} + terminal-size@4.0.0: + resolution: {integrity: sha512-rcdty1xZ2/BkWa4ANjWRp4JGpda2quksXIHgn5TMjNBPZfwzJIgR68DKfSYiTL+CZWowDX/sbOo5ME/FRURvYQ==} + engines: {node: '>=18'} + + test-exclude@7.0.1: + resolution: {integrity: sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==} + engines: {node: '>=18'} + + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + + thread-stream@2.7.0: + resolution: {integrity: sha512-qQiRWsU/wvNolI6tbbCKd9iKaTnCXsTwVxhhKM6nctPdujTyztjlbUkUTUymidWcMnZ5pWR0ej4a0tjsW021vw==} + + tildify@2.0.0: + resolution: {integrity: sha512-Cc+OraorugtXNfs50hU9KS369rFXCfgGLpfCfvlc+Ud5u6VWmUQsOAa9HbTvheQdYnrdJqqv1e5oIqXppMYnSw==} + engines: {node: '>=8'} + tiny-glob@0.2.9: resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} @@ -3430,6 +4945,10 @@ packages: resolution: {integrity: sha512-q5nmENpTHgiPVd1cJDDc9cVoYN5x4vCvwT3FMilvKPKneCBZAxn2YWQjDF0UMcE9k0Cay1gBiDfTMU0g+mPMQA==} engines: {node: '>=14.0.0'} + tmp-cache@1.1.0: + resolution: {integrity: sha512-j040fkL/x+XAZQ9K3bKGEPwgYhOZNBQLa3NXEADUiuno9C+3N2JJA4bVPDREixp604G3/vTXWA3DIPpA9lu1RQ==} + engines: {node: '>=6'} + tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} engines: {node: '>=0.6.0'} @@ -3442,6 +4961,14 @@ packages: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + token-types@6.0.0: + resolution: {integrity: sha512-lbDrTLVsHhOMljPscd0yitpozq7Ga2M5Cvez5AjGg8GASBjtt6iERCAJ93yommPmz62fb45oFIXHEZ3u9bfJEA==} + engines: {node: '>=14.16'} + totalist@3.0.1: resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} engines: {node: '>=6'} @@ -3453,10 +4980,17 @@ packages: tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + tr46@1.0.1: + resolution: {integrity: sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==} + tr46@3.0.0: resolution: {integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==} engines: {node: '>=12'} + tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + trim-newlines@3.0.1: resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} engines: {node: '>=8'} @@ -3465,14 +4999,60 @@ packages: resolution: {integrity: sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==} engines: {node: '>=12'} + truncatise@0.0.8: + resolution: {integrity: sha512-cXzueh9pzBCsLzhToB4X4gZCb3KYkrsAcBAX97JnazE74HOl3cpBJYEV7nabHeG/6/WXCU5Yujlde/WPBUwnsg==} + + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + + ts-morph@22.0.0: + resolution: {integrity: sha512-M9MqFGZREyeb5fTl6gNHKZLqBQA0TjA1lea+CR48R8EBTDuWrNqW6ccC5QvjNR4s6wDumD3LTCjOFSp9iwlzaw==} + + ts-node@10.9.2: + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + tslib@2.6.3: resolution: {integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==} + tsup@8.2.4: + resolution: {integrity: sha512-akpCPePnBnC/CXgRrcy72ZSntgIEUa1jN0oJbbvpALWKNOz1B7aM+UVDWGRGIO/T/PZugAESWDJUAb5FD48o8Q==} + engines: {node: '>=18'} + hasBin: true + peerDependencies: + '@microsoft/api-extractor': ^7.36.0 + '@swc/core': ^1 + postcss: ^8.4.12 + typescript: '>=4.5.0' + peerDependenciesMeta: + '@microsoft/api-extractor': + optional: true + '@swc/core': + optional: true + postcss: + optional: true + typescript: + optional: true + tty-table@4.2.3: resolution: {integrity: sha512-Fs15mu0vGzCrj8fmJNP7Ynxt5J7praPXqFN0leZeZBXJwkMxv9cb2D454k1ltrtUSJbZ4yH4e0CynsHLxmUfFA==} engines: {node: '>=8.0.0'} hasBin: true + type-detect@4.1.0: + resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} + engines: {node: '>=4'} + type-fest@0.13.1: resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} engines: {node: '>=10'} @@ -3497,6 +5077,10 @@ packages: resolution: {integrity: sha512-R6wDsVsoS9xYOpy8vgeBlqpdOyzJ12HNfQhC/aAKWM3YoCV9TtunJzh/QpkMgeDhkoynDcw5f1y+qF9yc/HHyg==} engines: {node: '>=16'} + type-is@1.6.18: + resolution: {integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==} + engines: {node: '>= 0.6'} + typed-array-buffer@1.0.2: resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} engines: {node: '>= 0.4'} @@ -3528,12 +5112,27 @@ packages: engines: {node: '>=0.8.0'} hasBin: true + uid-safe@2.1.5: + resolution: {integrity: sha512-KPHm4VL5dDXKz01UuEd88Df+KzynaohSL9fBh096KWAxSKZQDI2uBrVqtvRM4rwrIrRRKsdLNML/lnaaVSRioA==} + engines: {node: '>= 0.8'} + + uint8array-extras@1.4.0: + resolution: {integrity: sha512-ZPtzy0hu4cZjv3z5NW9gfKnNLjoz4y6uv4HlelAjDK7sY/xOkKZv9xK/WQpcsBB3jEybChz9DPC2U/+cusjJVQ==} + engines: {node: '>=18'} + unbox-primitive@1.0.2: resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + undici-types@6.13.0: + resolution: {integrity: sha512-xtFJHudx8S2DSoujjMd1WeWvn7KKWFRESZTMeL1RptAYERu29D6jphMjjY+vn96jvN3kVPDNxU/E13VTaXj6jg==} + + unicorn-magic@0.1.0: + resolution: {integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==} + engines: {node: '>=18'} + universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} @@ -3546,6 +5145,19 @@ packages: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} engines: {node: '>= 10.0.0'} + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + unplugin-swc@1.5.1: + resolution: {integrity: sha512-/ZLrPNjChhGx3Z95pxJ4tQgfI6rWqukgYHKflrNB4zAV1izOQuDhkTn55JWeivpBxDCoK7M/TStb2aS/14PS/g==} + peerDependencies: + '@swc/core': ^1.2.108 + + unplugin@1.12.1: + resolution: {integrity: sha512-aXEH9c5qi3uYZHo0niUtxDlT9ylG/luMW/dZslSCkbtC31wCyFkmM0kyoBBh+Grhn7CL+/kvKLfN61/EdxPxMQ==} + engines: {node: '>=14.0.0'} + update-browserslist-db@1.0.16: resolution: {integrity: sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==} hasBin: true @@ -3558,9 +5170,20 @@ packages: url-parse@1.5.10: resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + validate-npm-package-license@3.0.4: resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + validator@13.12.0: + resolution: {integrity: sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==} + engines: {node: '>= 0.10'} + + vary@1.1.2: + resolution: {integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==} + engines: {node: '>= 0.8'} + vite-node@2.0.5: resolution: {integrity: sha512-LdsW4pxj0Ot69FAoXZ1yTnA9bjGohr2yNBU7QKRxpz8ITSkhuDl6h3zS/tvgz4qrNjeRnvrWeXQ8ZF7Um4W00Q==} engines: {node: ^18.0.0 || >=20.0.0} @@ -3677,10 +5300,20 @@ packages: webidl-conversions@3.0.1: resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + webidl-conversions@4.0.2: + resolution: {integrity: sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==} + webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} + webpack-sources@3.2.3: + resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} + engines: {node: '>=10.13.0'} + + webpack-virtual-modules@0.6.2: + resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==} + whatwg-encoding@2.0.0: resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} engines: {node: '>=12'} @@ -3696,6 +5329,9 @@ packages: whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + whatwg-url@7.1.0: + resolution: {integrity: sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==} + which-boxed-primitive@1.0.2: resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} @@ -3735,6 +5371,14 @@ packages: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrap-ansi@9.0.0: + resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==} + engines: {node: '>=18'} + wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} @@ -3796,61 +5440,295 @@ packages: resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} engines: {node: '>=12'} + yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} + youch-terminal@2.2.3: + resolution: {integrity: sha512-/PE77ZwG072tXBvF47S9RL9/G80u86icZ5QwyjblyM67L4n/T5qQeM3Xrecbu8kkDDr/9T/PTj/X+6G/OSRQug==} + + youch@3.3.3: + resolution: {integrity: sha512-qSFXUk3UZBLfggAW3dJKg0BMblG5biqSF8M34E06o5CSsZtH92u9Hqmj2RzGiHDi64fhe83+4tENFP2DB6t6ZA==} + snapshots: - '@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3)(search-insights@2.13.0)': + '@adonisjs/ace@13.1.0': dependencies: - '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3)(search-insights@2.13.0) - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3) + '@poppinss/cliui': 6.4.1 + '@poppinss/hooks': 7.2.3 + '@poppinss/macroable': 1.0.2 + '@poppinss/prompts': 3.1.3 + '@poppinss/utils': 6.7.3 + fastest-levenshtein: 1.0.16 + jsonschema: 1.4.1 + string-width: 7.2.0 + yargs-parser: 21.1.1 + youch: 3.3.3 + youch-terminal: 2.2.3 + + '@adonisjs/application@8.3.1(@adonisjs/config@5.0.2)(@adonisjs/fold@10.1.2)': + dependencies: + '@adonisjs/config': 5.0.2 + '@adonisjs/fold': 10.1.2 + '@poppinss/hooks': 7.2.3 + '@poppinss/macroable': 1.0.2 + '@poppinss/utils': 6.7.3 + glob-parent: 6.0.2 + tempura: 0.4.1 + + '@adonisjs/assembler@7.7.0(typescript@5.4.5)': + dependencies: + '@adonisjs/env': 6.1.0 + '@antfu/install-pkg': 0.3.3 + '@poppinss/chokidar-ts': 4.1.4(typescript@5.4.5) + '@poppinss/cliui': 6.4.1 + '@poppinss/hooks': 7.2.3 + '@poppinss/utils': 6.7.3 + cpy: 11.1.0 + dedent: 1.5.3 + execa: 8.0.1 + fast-glob: 3.3.2 + get-port: 7.1.0 + junk: 4.0.1 + picomatch: 4.0.2 + pretty-hrtime: 1.0.3 + slash: 5.1.0 + ts-morph: 22.0.0 + typescript: 5.4.5 transitivePeerDependencies: - - '@algolia/client-search' - - algoliasearch - - search-insights + - babel-plugin-macros - '@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3)(search-insights@2.13.0)': + '@adonisjs/auth@9.2.3(@adonisjs/assembler@7.7.0(typescript@5.4.5))(@adonisjs/core@6.12.1(@adonisjs/assembler@7.7.0(typescript@5.4.5))(@vinejs/vine@2.1.0))(@adonisjs/lucid@21.1.1(@adonisjs/assembler@7.7.0(typescript@5.4.5))(@adonisjs/core@6.12.1(@adonisjs/assembler@7.7.0(typescript@5.4.5))(@vinejs/vine@2.1.0))(luxon@3.5.0))(@japa/api-client@2.0.3)(@japa/plugin-adonisjs@3.0.1(@adonisjs/core@6.12.1(@adonisjs/assembler@7.7.0(typescript@5.4.5))(@vinejs/vine@2.1.0))(@japa/api-client@2.0.3))': dependencies: - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3) - search-insights: 2.13.0 + '@adonisjs/core': 6.12.1(@adonisjs/assembler@7.7.0(typescript@5.4.5))(@vinejs/vine@2.1.0) + '@adonisjs/presets': 2.6.1(@adonisjs/assembler@7.7.0(typescript@5.4.5))(@adonisjs/core@6.12.1(@adonisjs/assembler@7.7.0(typescript@5.4.5))(@vinejs/vine@2.1.0)) + basic-auth: 2.0.1 + optionalDependencies: + '@adonisjs/lucid': 21.1.1(@adonisjs/assembler@7.7.0(typescript@5.4.5))(@adonisjs/core@6.12.1(@adonisjs/assembler@7.7.0(typescript@5.4.5))(@vinejs/vine@2.1.0))(luxon@3.5.0) + '@japa/api-client': 2.0.3 + '@japa/plugin-adonisjs': 3.0.1(@adonisjs/core@6.12.1(@adonisjs/assembler@7.7.0(typescript@5.4.5))(@vinejs/vine@2.1.0))(@japa/api-client@2.0.3) transitivePeerDependencies: - - '@algolia/client-search' - - algoliasearch + - '@adonisjs/assembler' + + '@adonisjs/bodyparser@10.0.2(@adonisjs/http-server@7.2.3(@adonisjs/application@8.3.1(@adonisjs/config@5.0.2)(@adonisjs/fold@10.1.2))(@adonisjs/encryption@6.0.2)(@adonisjs/events@9.0.2(@adonisjs/application@8.3.1(@adonisjs/config@5.0.2)(@adonisjs/fold@10.1.2))(@adonisjs/fold@10.1.2))(@adonisjs/fold@10.1.2)(@adonisjs/logger@6.0.3))': + dependencies: + '@adonisjs/http-server': 7.2.3(@adonisjs/application@8.3.1(@adonisjs/config@5.0.2)(@adonisjs/fold@10.1.2))(@adonisjs/encryption@6.0.2)(@adonisjs/events@9.0.2(@adonisjs/application@8.3.1(@adonisjs/config@5.0.2)(@adonisjs/fold@10.1.2))(@adonisjs/fold@10.1.2))(@adonisjs/fold@10.1.2)(@adonisjs/logger@6.0.3) + '@paralleldrive/cuid2': 2.2.2 + '@poppinss/macroable': 1.0.2 + '@poppinss/multiparty': 2.0.1 + '@poppinss/utils': 6.7.3 + '@types/qs': 6.9.15 + bytes: 3.1.2 + file-type: 19.4.0 + inflation: 2.1.0 + media-typer: 1.1.0 + qs: 6.12.1 + raw-body: 2.5.2 + + '@adonisjs/config@5.0.2': + dependencies: + '@poppinss/utils': 6.7.3 + + '@adonisjs/core@6.12.1(@adonisjs/assembler@7.7.0(typescript@5.4.5))(@vinejs/vine@2.1.0)': + dependencies: + '@adonisjs/ace': 13.1.0 + '@adonisjs/application': 8.3.1(@adonisjs/config@5.0.2)(@adonisjs/fold@10.1.2) + '@adonisjs/bodyparser': 10.0.2(@adonisjs/http-server@7.2.3(@adonisjs/application@8.3.1(@adonisjs/config@5.0.2)(@adonisjs/fold@10.1.2))(@adonisjs/encryption@6.0.2)(@adonisjs/events@9.0.2(@adonisjs/application@8.3.1(@adonisjs/config@5.0.2)(@adonisjs/fold@10.1.2))(@adonisjs/fold@10.1.2))(@adonisjs/fold@10.1.2)(@adonisjs/logger@6.0.3)) + '@adonisjs/config': 5.0.2 + '@adonisjs/encryption': 6.0.2 + '@adonisjs/env': 6.1.0 + '@adonisjs/events': 9.0.2(@adonisjs/application@8.3.1(@adonisjs/config@5.0.2)(@adonisjs/fold@10.1.2))(@adonisjs/fold@10.1.2) + '@adonisjs/fold': 10.1.2 + '@adonisjs/hash': 9.0.3 + '@adonisjs/health': 2.0.0 + '@adonisjs/http-server': 7.2.3(@adonisjs/application@8.3.1(@adonisjs/config@5.0.2)(@adonisjs/fold@10.1.2))(@adonisjs/encryption@6.0.2)(@adonisjs/events@9.0.2(@adonisjs/application@8.3.1(@adonisjs/config@5.0.2)(@adonisjs/fold@10.1.2))(@adonisjs/fold@10.1.2))(@adonisjs/fold@10.1.2)(@adonisjs/logger@6.0.3) + '@adonisjs/logger': 6.0.3 + '@adonisjs/repl': 4.0.1 + '@antfu/install-pkg': 0.3.3 + '@paralleldrive/cuid2': 2.2.2 + '@poppinss/macroable': 1.0.2 + '@poppinss/utils': 6.7.3 + '@sindresorhus/is': 6.3.1 + '@types/he': 1.2.3 + he: 1.2.0 + parse-imports: 1.2.0 + pretty-hrtime: 1.0.3 + string-width: 7.2.0 + youch: 3.3.3 + youch-terminal: 2.2.3 + optionalDependencies: + '@adonisjs/assembler': 7.7.0(typescript@5.4.5) + '@vinejs/vine': 2.1.0 - '@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3)': + '@adonisjs/cors@2.2.1(@adonisjs/core@6.12.1(@adonisjs/assembler@7.7.0(typescript@5.4.5))(@vinejs/vine@2.1.0))': dependencies: - '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3) - '@algolia/client-search': 4.23.3 - algoliasearch: 4.23.3 + '@adonisjs/core': 6.12.1(@adonisjs/assembler@7.7.0(typescript@5.4.5))(@vinejs/vine@2.1.0) - '@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3)': + '@adonisjs/encryption@6.0.2': dependencies: - '@algolia/client-search': 4.23.3 - algoliasearch: 4.23.3 + '@poppinss/utils': 6.7.3 - '@algolia/cache-browser-local-storage@4.23.3': + '@adonisjs/env@6.1.0': dependencies: - '@algolia/cache-common': 4.23.3 + '@poppinss/utils': 6.7.3 + '@poppinss/validator-lite': 1.0.3 + dotenv: 16.4.5 + split-lines: 3.0.0 - '@algolia/cache-common@4.23.3': {} + '@adonisjs/events@9.0.2(@adonisjs/application@8.3.1(@adonisjs/config@5.0.2)(@adonisjs/fold@10.1.2))(@adonisjs/fold@10.1.2)': + dependencies: + '@adonisjs/application': 8.3.1(@adonisjs/config@5.0.2)(@adonisjs/fold@10.1.2) + '@adonisjs/fold': 10.1.2 + '@poppinss/utils': 6.7.3 + '@sindresorhus/is': 6.3.1 + emittery: 1.0.3 - '@algolia/cache-in-memory@4.23.3': + '@adonisjs/fold@10.1.2': dependencies: - '@algolia/cache-common': 4.23.3 + '@poppinss/utils': 6.7.3 - '@algolia/client-account@4.23.3': + '@adonisjs/hash@9.0.3': dependencies: - '@algolia/client-common': 4.23.3 - '@algolia/client-search': 4.23.3 - '@algolia/transporter': 4.23.3 + '@phc/format': 1.0.0 + '@poppinss/utils': 6.7.3 - '@algolia/client-analytics@4.23.3': + '@adonisjs/health@2.0.0': dependencies: - '@algolia/client-common': 4.23.3 - '@algolia/client-search': 4.23.3 - '@algolia/requester-common': 4.23.3 + '@poppinss/utils': 6.7.3 + check-disk-space: 3.4.0 + + '@adonisjs/http-server@7.2.3(@adonisjs/application@8.3.1(@adonisjs/config@5.0.2)(@adonisjs/fold@10.1.2))(@adonisjs/encryption@6.0.2)(@adonisjs/events@9.0.2(@adonisjs/application@8.3.1(@adonisjs/config@5.0.2)(@adonisjs/fold@10.1.2))(@adonisjs/fold@10.1.2))(@adonisjs/fold@10.1.2)(@adonisjs/logger@6.0.3)': + dependencies: + '@adonisjs/application': 8.3.1(@adonisjs/config@5.0.2)(@adonisjs/fold@10.1.2) + '@adonisjs/encryption': 6.0.2 + '@adonisjs/events': 9.0.2(@adonisjs/application@8.3.1(@adonisjs/config@5.0.2)(@adonisjs/fold@10.1.2))(@adonisjs/fold@10.1.2) + '@adonisjs/fold': 10.1.2 + '@adonisjs/logger': 6.0.3 + '@paralleldrive/cuid2': 2.2.2 + '@poppinss/macroable': 1.0.2 + '@poppinss/matchit': 3.1.2 + '@poppinss/middleware': 3.2.3 + '@poppinss/utils': 6.7.3 + '@sindresorhus/is': 6.3.1 + accepts: 1.3.8 + content-disposition: 0.5.4 + cookie: 0.6.0 + destroy: 1.2.0 + encodeurl: 2.0.0 + etag: 1.8.1 + fresh: 0.5.2 + mime-types: 2.1.35 + on-finished: 2.4.1 + proxy-addr: 2.0.7 + qs: 6.13.0 + tmp-cache: 1.1.0 + type-is: 1.6.18 + vary: 1.1.2 + youch: 3.3.3 + + '@adonisjs/logger@6.0.3': + dependencies: + '@poppinss/utils': 6.7.3 + abstract-logging: 2.0.1 + pino: 8.21.0 + + '@adonisjs/lucid@21.1.1(@adonisjs/assembler@7.7.0(typescript@5.4.5))(@adonisjs/core@6.12.1(@adonisjs/assembler@7.7.0(typescript@5.4.5))(@vinejs/vine@2.1.0))(luxon@3.5.0)': + dependencies: + '@adonisjs/core': 6.12.1(@adonisjs/assembler@7.7.0(typescript@5.4.5))(@vinejs/vine@2.1.0) + '@adonisjs/presets': 2.6.1(@adonisjs/assembler@7.7.0(typescript@5.4.5))(@adonisjs/core@6.12.1(@adonisjs/assembler@7.7.0(typescript@5.4.5))(@vinejs/vine@2.1.0)) + '@faker-js/faker': 8.4.1 + '@poppinss/hooks': 7.2.3 + '@poppinss/macroable': 1.0.2 + '@poppinss/utils': 6.7.3 + fast-deep-equal: 3.1.3 + igniculus: 1.5.0 + kleur: 4.1.5 + knex: 3.1.0 + knex-dynamic-connection: 3.2.0 + pretty-hrtime: 1.0.3 + qs: 6.13.0 + slash: 5.1.0 + tarn: 3.0.2 + optionalDependencies: + '@adonisjs/assembler': 7.7.0(typescript@5.4.5) + luxon: 3.5.0 + transitivePeerDependencies: + - better-sqlite3 + - mysql + - mysql2 + - pg + - pg-native + - sqlite3 + - supports-color + - tedious + + '@adonisjs/presets@2.6.1(@adonisjs/assembler@7.7.0(typescript@5.4.5))(@adonisjs/core@6.12.1(@adonisjs/assembler@7.7.0(typescript@5.4.5))(@vinejs/vine@2.1.0))': + dependencies: + '@adonisjs/core': 6.12.1(@adonisjs/assembler@7.7.0(typescript@5.4.5))(@vinejs/vine@2.1.0) + '@poppinss/utils': 6.7.3 + optionalDependencies: + '@adonisjs/assembler': 7.7.0(typescript@5.4.5) + + '@adonisjs/repl@4.0.1': + dependencies: + '@poppinss/colors': 4.1.3 + string-width: 7.2.0 + + '@adonisjs/tsconfig@1.3.0': {} + + '@algolia/autocomplete-core@1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3)(search-insights@2.13.0)': + dependencies: + '@algolia/autocomplete-plugin-algolia-insights': 1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3)(search-insights@2.13.0) + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3) + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + - search-insights + + '@algolia/autocomplete-plugin-algolia-insights@1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3)(search-insights@2.13.0)': + dependencies: + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3) + search-insights: 2.13.0 + transitivePeerDependencies: + - '@algolia/client-search' + - algoliasearch + + '@algolia/autocomplete-preset-algolia@1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3)': + dependencies: + '@algolia/autocomplete-shared': 1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3) + '@algolia/client-search': 4.23.3 + algoliasearch: 4.23.3 + + '@algolia/autocomplete-shared@1.9.3(@algolia/client-search@4.23.3)(algoliasearch@4.23.3)': + dependencies: + '@algolia/client-search': 4.23.3 + algoliasearch: 4.23.3 + + '@algolia/cache-browser-local-storage@4.23.3': + dependencies: + '@algolia/cache-common': 4.23.3 + + '@algolia/cache-common@4.23.3': {} + + '@algolia/cache-in-memory@4.23.3': + dependencies: + '@algolia/cache-common': 4.23.3 + + '@algolia/client-account@4.23.3': + dependencies: + '@algolia/client-common': 4.23.3 + '@algolia/client-search': 4.23.3 + '@algolia/transporter': 4.23.3 + + '@algolia/client-analytics@4.23.3': + dependencies: + '@algolia/client-common': 4.23.3 + '@algolia/client-search': 4.23.3 + '@algolia/requester-common': 4.23.3 '@algolia/transporter': 4.23.3 '@algolia/client-common@4.23.3': @@ -3911,6 +5789,10 @@ snapshots: '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 + '@antfu/install-pkg@0.3.3': + dependencies: + '@jsdevtools/ez-spawn': 3.0.4 + '@apidevtools/json-schema-ref-parser@9.0.9': dependencies: '@jsdevtools/ono': 7.1.3 @@ -3918,10 +5800,12 @@ snapshots: call-me-maybe: 1.0.2 js-yaml: 4.1.0 + '@arr/every@1.0.1': {} + '@babel/code-frame@7.24.2': dependencies: '@babel/highlight': 7.24.5 - picocolors: 1.0.0 + picocolors: 1.0.1 '@babel/code-frame@7.24.7': dependencies: @@ -3943,7 +5827,7 @@ snapshots: '@babel/traverse': 7.24.7 '@babel/types': 7.24.7 convert-source-map: 2.0.0 - debug: 4.3.5(supports-color@9.4.0) + debug: 4.3.6(supports-color@9.4.0) gensync: 1.0.0-beta.2 json5: 2.2.3 semver: 6.3.1 @@ -3952,7 +5836,7 @@ snapshots: '@babel/generator@7.24.7': dependencies: - '@babel/types': 7.24.7 + '@babel/types': 7.25.2 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 2.5.2 @@ -3967,21 +5851,21 @@ snapshots: '@babel/helper-environment-visitor@7.24.7': dependencies: - '@babel/types': 7.24.7 + '@babel/types': 7.25.2 '@babel/helper-function-name@7.24.7': dependencies: '@babel/template': 7.24.7 - '@babel/types': 7.24.7 + '@babel/types': 7.25.2 '@babel/helper-hoist-variables@7.24.7': dependencies: - '@babel/types': 7.24.7 + '@babel/types': 7.25.2 '@babel/helper-module-imports@7.24.7': dependencies: '@babel/traverse': 7.24.7 - '@babel/types': 7.24.7 + '@babel/types': 7.25.2 transitivePeerDependencies: - supports-color @@ -4001,20 +5885,18 @@ snapshots: '@babel/helper-simple-access@7.24.7': dependencies: '@babel/traverse': 7.24.7 - '@babel/types': 7.24.7 + '@babel/types': 7.25.2 transitivePeerDependencies: - supports-color '@babel/helper-split-export-declaration@7.24.7': dependencies: - '@babel/types': 7.24.7 + '@babel/types': 7.25.2 '@babel/helper-string-parser@7.24.7': {} '@babel/helper-string-parser@7.24.8': {} - '@babel/helper-validator-identifier@7.24.5': {} - '@babel/helper-validator-identifier@7.24.7': {} '@babel/helper-validator-option@7.24.7': {} @@ -4022,11 +5904,11 @@ snapshots: '@babel/helpers@7.24.7': dependencies: '@babel/template': 7.24.7 - '@babel/types': 7.24.7 + '@babel/types': 7.25.2 '@babel/highlight@7.24.5': dependencies: - '@babel/helper-validator-identifier': 7.24.5 + '@babel/helper-validator-identifier': 7.24.7 chalk: 2.4.2 js-tokens: 4.0.0 picocolors: 1.0.1 @@ -4040,7 +5922,7 @@ snapshots: '@babel/parser@7.24.7': dependencies: - '@babel/types': 7.24.7 + '@babel/types': 7.25.2 '@babel/parser@7.25.3': dependencies: @@ -4067,8 +5949,8 @@ snapshots: '@babel/template@7.24.7': dependencies: '@babel/code-frame': 7.24.7 - '@babel/parser': 7.24.7 - '@babel/types': 7.24.7 + '@babel/parser': 7.25.3 + '@babel/types': 7.25.2 '@babel/traverse@7.24.7': dependencies: @@ -4078,8 +5960,8 @@ snapshots: '@babel/helper-function-name': 7.24.7 '@babel/helper-hoist-variables': 7.24.7 '@babel/helper-split-export-declaration': 7.24.7 - '@babel/parser': 7.24.7 - '@babel/types': 7.24.7 + '@babel/parser': 7.25.3 + '@babel/types': 7.25.2 debug: 4.3.6(supports-color@9.4.0) globals: 11.12.0 transitivePeerDependencies: @@ -4097,6 +5979,8 @@ snapshots: '@babel/helper-validator-identifier': 7.24.7 to-fast-properties: 2.0.0 + '@bcoe/v8-coverage@0.2.3': {} + '@biomejs/biome@1.8.1': optionalDependencies: '@biomejs/cli-darwin-arm64': 1.8.1 @@ -4312,6 +6196,13 @@ snapshots: human-id: 1.0.2 prettier: 2.8.8 + '@colors/colors@1.5.0': + optional: true + + '@cspotcode/source-map-support@0.8.1': + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + '@docsearch/css@3.6.0': {} '@docsearch/js@3.6.0(@algolia/client-search@4.23.3)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.13.0)': @@ -4345,138 +6236,214 @@ snapshots: '@esbuild/aix-ppc64@0.21.5': optional: true + '@esbuild/aix-ppc64@0.23.0': + optional: true + '@esbuild/android-arm64@0.20.2': optional: true '@esbuild/android-arm64@0.21.5': optional: true + '@esbuild/android-arm64@0.23.0': + optional: true + '@esbuild/android-arm@0.20.2': optional: true '@esbuild/android-arm@0.21.5': optional: true + '@esbuild/android-arm@0.23.0': + optional: true + '@esbuild/android-x64@0.20.2': optional: true '@esbuild/android-x64@0.21.5': optional: true + '@esbuild/android-x64@0.23.0': + optional: true + '@esbuild/darwin-arm64@0.20.2': optional: true '@esbuild/darwin-arm64@0.21.5': optional: true + '@esbuild/darwin-arm64@0.23.0': + optional: true + '@esbuild/darwin-x64@0.20.2': optional: true '@esbuild/darwin-x64@0.21.5': optional: true + '@esbuild/darwin-x64@0.23.0': + optional: true + '@esbuild/freebsd-arm64@0.20.2': optional: true '@esbuild/freebsd-arm64@0.21.5': optional: true + '@esbuild/freebsd-arm64@0.23.0': + optional: true + '@esbuild/freebsd-x64@0.20.2': optional: true '@esbuild/freebsd-x64@0.21.5': optional: true + '@esbuild/freebsd-x64@0.23.0': + optional: true + '@esbuild/linux-arm64@0.20.2': optional: true '@esbuild/linux-arm64@0.21.5': optional: true + '@esbuild/linux-arm64@0.23.0': + optional: true + '@esbuild/linux-arm@0.20.2': optional: true '@esbuild/linux-arm@0.21.5': optional: true + '@esbuild/linux-arm@0.23.0': + optional: true + '@esbuild/linux-ia32@0.20.2': optional: true '@esbuild/linux-ia32@0.21.5': optional: true + '@esbuild/linux-ia32@0.23.0': + optional: true + '@esbuild/linux-loong64@0.20.2': optional: true '@esbuild/linux-loong64@0.21.5': optional: true + '@esbuild/linux-loong64@0.23.0': + optional: true + '@esbuild/linux-mips64el@0.20.2': optional: true '@esbuild/linux-mips64el@0.21.5': optional: true + '@esbuild/linux-mips64el@0.23.0': + optional: true + '@esbuild/linux-ppc64@0.20.2': optional: true '@esbuild/linux-ppc64@0.21.5': optional: true + '@esbuild/linux-ppc64@0.23.0': + optional: true + '@esbuild/linux-riscv64@0.20.2': optional: true '@esbuild/linux-riscv64@0.21.5': optional: true + '@esbuild/linux-riscv64@0.23.0': + optional: true + '@esbuild/linux-s390x@0.20.2': optional: true '@esbuild/linux-s390x@0.21.5': optional: true + '@esbuild/linux-s390x@0.23.0': + optional: true + '@esbuild/linux-x64@0.20.2': optional: true '@esbuild/linux-x64@0.21.5': optional: true + '@esbuild/linux-x64@0.23.0': + optional: true + '@esbuild/netbsd-x64@0.20.2': optional: true '@esbuild/netbsd-x64@0.21.5': optional: true + '@esbuild/netbsd-x64@0.23.0': + optional: true + + '@esbuild/openbsd-arm64@0.23.0': + optional: true + '@esbuild/openbsd-x64@0.20.2': optional: true '@esbuild/openbsd-x64@0.21.5': optional: true + '@esbuild/openbsd-x64@0.23.0': + optional: true + '@esbuild/sunos-x64@0.20.2': optional: true '@esbuild/sunos-x64@0.21.5': optional: true + '@esbuild/sunos-x64@0.23.0': + optional: true + '@esbuild/win32-arm64@0.20.2': optional: true '@esbuild/win32-arm64@0.21.5': optional: true + '@esbuild/win32-arm64@0.23.0': + optional: true + '@esbuild/win32-ia32@0.20.2': optional: true '@esbuild/win32-ia32@0.21.5': optional: true + '@esbuild/win32-ia32@0.23.0': + optional: true + '@esbuild/win32-x64@0.20.2': optional: true '@esbuild/win32-x64@0.21.5': optional: true + '@esbuild/win32-x64@0.23.0': + optional: true + + '@faker-js/faker@8.4.1': {} + + '@fastify/deepmerge@2.0.0': {} + '@inquirer/confirm@3.1.10': dependencies: '@inquirer/core': 8.2.3 @@ -4487,7 +6454,7 @@ snapshots: '@inquirer/figures': 1.0.3 '@inquirer/type': 1.3.3 '@types/mute-stream': 0.0.4 - '@types/node': 20.14.7 + '@types/node': 20.14.14 '@types/wrap-ansi': 3.0.0 ansi-escapes: 4.3.2 chalk: 4.1.2 @@ -4502,6 +6469,36 @@ snapshots: '@inquirer/type@1.3.3': {} + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@istanbuljs/schema@0.1.3': {} + + '@japa/api-client@2.0.3': + dependencies: + '@poppinss/hooks': 7.2.3 + '@poppinss/macroable': 1.0.2 + '@types/superagent': 8.1.8 + cookie: 0.6.0 + set-cookie-parser: 2.7.0 + superagent: 8.1.2 + transitivePeerDependencies: + - supports-color + optional: true + + '@japa/plugin-adonisjs@3.0.1(@adonisjs/core@6.12.1(@adonisjs/assembler@7.7.0(typescript@5.4.5))(@vinejs/vine@2.1.0))(@japa/api-client@2.0.3)': + dependencies: + '@adonisjs/core': 6.12.1(@adonisjs/assembler@7.7.0(typescript@5.4.5))(@vinejs/vine@2.1.0) + optionalDependencies: + '@japa/api-client': 2.0.3 + optional: true + '@jridgewell/gen-mapping@0.3.5': dependencies: '@jridgewell/set-array': 1.2.1 @@ -4512,8 +6509,6 @@ snapshots: '@jridgewell/set-array@1.2.1': {} - '@jridgewell/sourcemap-codec@1.4.15': {} - '@jridgewell/sourcemap-codec@1.5.0': {} '@jridgewell/trace-mapping@0.3.25': @@ -4521,8 +6516,22 @@ snapshots: '@jridgewell/resolve-uri': 3.1.2 '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping@0.3.9': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@jsdevtools/ez-spawn@3.0.4': + dependencies: + call-me-maybe: 1.0.2 + cross-spawn: 7.0.3 + string-argv: 0.3.2 + type-detect: 4.1.0 + '@jsdevtools/ono@7.1.3': {} + '@lukeed/ms@2.0.2': {} + '@manypkg/find-root@1.1.0': dependencies: '@babel/runtime': 7.24.7 @@ -4579,6 +6588,8 @@ snapshots: '@next/swc-win32-x64-msvc@14.2.3': optional: true + '@noble/hashes@1.4.0': {} + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -4600,12 +6611,88 @@ snapshots: '@open-draft/until@2.1.0': {} + '@paralleldrive/cuid2@2.2.2': + dependencies: + '@noble/hashes': 1.4.0 + + '@phc/format@1.0.0': {} + + '@pkgjs/parseargs@0.11.0': + optional: true + '@playwright/test@1.44.1': dependencies: playwright: 1.44.1 '@polka/url@1.0.0-next.25': {} + '@poppinss/chokidar-ts@4.1.4(typescript@5.4.5)': + dependencies: + chokidar: 3.6.0 + emittery: 1.0.3 + memoize: 10.0.0 + picomatch: 4.0.2 + slash: 5.1.0 + typescript: 5.4.5 + + '@poppinss/cliui@6.4.1': + dependencies: + '@poppinss/colors': 4.1.3 + cli-boxes: 3.0.0 + cli-table3: 0.6.5 + cli-truncate: 4.0.0 + log-update: 6.1.0 + pretty-hrtime: 1.0.3 + string-width: 7.2.0 + supports-color: 9.4.0 + terminal-size: 4.0.0 + wordwrap: 1.0.0 + + '@poppinss/colors@4.1.3': + dependencies: + kleur: 4.1.5 + + '@poppinss/hooks@7.2.3': {} + + '@poppinss/macroable@1.0.2': {} + + '@poppinss/matchit@3.1.2': + dependencies: + '@arr/every': 1.0.1 + + '@poppinss/middleware@3.2.3': {} + + '@poppinss/multiparty@2.0.1': + dependencies: + http-errors: 2.0.0 + safe-buffer: 5.2.1 + uid-safe: 2.1.5 + + '@poppinss/prompts@3.1.3': + dependencies: + '@poppinss/colors': 4.1.3 + '@poppinss/utils': 6.7.3 + enquirer: 2.4.1 + + '@poppinss/utils@6.7.3': + dependencies: + '@lukeed/ms': 2.0.2 + '@types/bytes': 3.1.4 + '@types/pluralize': 0.0.33 + bytes: 3.1.2 + case-anything: 2.1.13 + flattie: 1.1.1 + pluralize: 8.0.0 + safe-stable-stringify: 2.4.3 + secure-json-parse: 2.7.0 + slash: 5.1.0 + slugify: 1.6.6 + truncatise: 0.0.8 + + '@poppinss/validator-lite@1.0.3': + dependencies: + validator: 13.12.0 + '@redocly/ajv@8.11.0': dependencies: fast-deep-equal: 3.1.3 @@ -4632,68 +6719,130 @@ snapshots: - encoding - supports-color + '@rollup/pluginutils@5.1.0(rollup@4.20.0)': + dependencies: + '@types/estree': 1.0.5 + estree-walker: 2.0.2 + picomatch: 2.3.1 + optionalDependencies: + rollup: 4.20.0 + '@rollup/rollup-android-arm-eabi@4.18.0': optional: true + '@rollup/rollup-android-arm-eabi@4.20.0': + optional: true + '@rollup/rollup-android-arm64@4.18.0': optional: true + '@rollup/rollup-android-arm64@4.20.0': + optional: true + '@rollup/rollup-darwin-arm64@4.18.0': optional: true + '@rollup/rollup-darwin-arm64@4.20.0': + optional: true + '@rollup/rollup-darwin-x64@4.18.0': optional: true + '@rollup/rollup-darwin-x64@4.20.0': + optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.18.0': optional: true + '@rollup/rollup-linux-arm-gnueabihf@4.20.0': + optional: true + '@rollup/rollup-linux-arm-musleabihf@4.18.0': optional: true + '@rollup/rollup-linux-arm-musleabihf@4.20.0': + optional: true + '@rollup/rollup-linux-arm64-gnu@4.18.0': optional: true + '@rollup/rollup-linux-arm64-gnu@4.20.0': + optional: true + '@rollup/rollup-linux-arm64-musl@4.18.0': optional: true + '@rollup/rollup-linux-arm64-musl@4.20.0': + optional: true + '@rollup/rollup-linux-powerpc64le-gnu@4.18.0': optional: true + '@rollup/rollup-linux-powerpc64le-gnu@4.20.0': + optional: true + '@rollup/rollup-linux-riscv64-gnu@4.18.0': optional: true + '@rollup/rollup-linux-riscv64-gnu@4.20.0': + optional: true + '@rollup/rollup-linux-s390x-gnu@4.18.0': optional: true + '@rollup/rollup-linux-s390x-gnu@4.20.0': + optional: true + '@rollup/rollup-linux-x64-gnu@4.18.0': optional: true + '@rollup/rollup-linux-x64-gnu@4.20.0': + optional: true + '@rollup/rollup-linux-x64-musl@4.18.0': optional: true + '@rollup/rollup-linux-x64-musl@4.20.0': + optional: true + '@rollup/rollup-win32-arm64-msvc@4.18.0': optional: true + '@rollup/rollup-win32-arm64-msvc@4.20.0': + optional: true + '@rollup/rollup-win32-ia32-msvc@4.18.0': optional: true + '@rollup/rollup-win32-ia32-msvc@4.20.0': + optional: true + '@rollup/rollup-win32-x64-msvc@4.18.0': optional: true + '@rollup/rollup-win32-x64-msvc@4.20.0': + optional: true + + '@sec-ant/readable-stream@0.4.1': {} + '@shikijs/core@1.6.4': {} '@shikijs/transformers@1.6.4': dependencies: shiki: 1.6.4 - '@sveltejs/adapter-auto@3.2.2(@sveltejs/kit@2.5.19(@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.3.5(@types/node@20.14.7)))(svelte@4.2.18)(vite@5.3.5(@types/node@20.14.7)))': + '@sindresorhus/is@6.3.1': {} + + '@sindresorhus/merge-streams@2.3.0': {} + + '@sveltejs/adapter-auto@3.2.2(@sveltejs/kit@2.5.19(@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.3.5(@types/node@22.1.0)))(svelte@4.2.18)(vite@5.3.5(@types/node@22.1.0)))': dependencies: - '@sveltejs/kit': 2.5.19(@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.3.5(@types/node@20.14.7)))(svelte@4.2.18)(vite@5.3.5(@types/node@20.14.7)) + '@sveltejs/kit': 2.5.19(@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.3.5(@types/node@22.1.0)))(svelte@4.2.18)(vite@5.3.5(@types/node@22.1.0)) import-meta-resolve: 4.1.0 - '@sveltejs/kit@2.5.19(@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.3.5(@types/node@20.14.7)))(svelte@4.2.18)(vite@5.3.5(@types/node@20.14.7))': + '@sveltejs/kit@2.5.19(@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.3.5(@types/node@22.1.0)))(svelte@4.2.18)(vite@5.3.5(@types/node@22.1.0))': dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.1(svelte@4.2.18)(vite@5.3.5(@types/node@20.14.7)) + '@sveltejs/vite-plugin-svelte': 3.1.1(svelte@4.2.18)(vite@5.3.5(@types/node@22.1.0)) '@types/cookie': 0.6.0 cookie: 0.6.0 devalue: 5.0.0 @@ -4707,28 +6856,28 @@ snapshots: sirv: 2.0.4 svelte: 4.2.18 tiny-glob: 0.2.9 - vite: 5.3.5(@types/node@20.14.7) + vite: 5.3.5(@types/node@22.1.0) - '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.3.5(@types/node@20.14.7)))(svelte@4.2.18)(vite@5.3.5(@types/node@20.14.7))': + '@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.3.5(@types/node@22.1.0)))(svelte@4.2.18)(vite@5.3.5(@types/node@22.1.0))': dependencies: - '@sveltejs/vite-plugin-svelte': 3.1.1(svelte@4.2.18)(vite@5.3.5(@types/node@20.14.7)) + '@sveltejs/vite-plugin-svelte': 3.1.1(svelte@4.2.18)(vite@5.3.5(@types/node@22.1.0)) debug: 4.3.6(supports-color@9.4.0) svelte: 4.2.18 - vite: 5.3.5(@types/node@20.14.7) + vite: 5.3.5(@types/node@22.1.0) transitivePeerDependencies: - supports-color - '@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.3.5(@types/node@20.14.7))': + '@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.3.5(@types/node@22.1.0))': dependencies: - '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.3.5(@types/node@20.14.7)))(svelte@4.2.18)(vite@5.3.5(@types/node@20.14.7)) + '@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.3.5(@types/node@22.1.0)))(svelte@4.2.18)(vite@5.3.5(@types/node@22.1.0)) debug: 4.3.6(supports-color@9.4.0) deepmerge: 4.3.1 kleur: 4.1.5 magic-string: 0.30.11 svelte: 4.2.18 svelte-hmr: 0.16.0(svelte@4.2.18) - vite: 5.3.5(@types/node@20.14.7) - vitefu: 0.2.5(vite@5.3.5(@types/node@20.14.7)) + vite: 5.3.5(@types/node@22.1.0) + vitefu: 0.2.5(vite@5.3.5(@types/node@22.1.0)) transitivePeerDependencies: - supports-color @@ -4825,9 +6974,26 @@ snapshots: '@types/react': 18.3.1 '@types/react-dom': 18.3.0 + '@tokenizer/token@0.3.0': {} + '@tootallnate/once@2.0.0': optional: true + '@ts-morph/common@0.23.0': + dependencies: + fast-glob: 3.3.2 + minimatch: 9.0.5 + mkdirp: 3.0.1 + path-browserify: 1.0.1 + + '@tsconfig/node10@1.0.11': {} + + '@tsconfig/node12@1.0.11': {} + + '@tsconfig/node14@1.0.3': {} + + '@tsconfig/node16@1.0.4': {} + '@tsconfig/node20@20.1.4': {} '@types/aria-query@5.0.4': {} @@ -4842,29 +7008,38 @@ snapshots: '@types/babel__generator@7.6.8': dependencies: - '@babel/types': 7.24.7 + '@babel/types': 7.25.2 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.24.7 - '@babel/types': 7.24.7 + '@babel/parser': 7.25.3 + '@babel/types': 7.25.2 '@types/babel__traverse@7.20.6': dependencies: - '@babel/types': 7.24.7 + '@babel/types': 7.25.2 + + '@types/bytes@3.1.4': {} '@types/cookie@0.6.0': {} + '@types/cookiejar@2.1.5': + optional: true + '@types/degit@2.8.6': {} '@types/estree@1.0.5': {} + '@types/he@1.2.3': {} + '@types/js-yaml@4.0.9': {} '@types/json-schema@7.0.15': {} '@types/linkify-it@5.0.0': {} + '@types/lodash@4.17.7': {} + '@types/markdown-it@14.1.1': dependencies: '@types/linkify-it': 5.0.0 @@ -4872,24 +7047,39 @@ snapshots: '@types/mdurl@2.0.0': {} + '@types/methods@1.1.4': + optional: true + '@types/minimist@1.2.5': {} '@types/mute-stream@0.0.4': dependencies: - '@types/node': 20.14.7 + '@types/node': 20.14.14 '@types/node@12.20.55': {} + '@types/node@20.14.14': + dependencies: + undici-types: 5.26.5 + '@types/node@20.14.7': dependencies: undici-types: 5.26.5 + '@types/node@22.1.0': + dependencies: + undici-types: 6.13.0 + '@types/normalize-package-data@2.4.4': {} + '@types/pluralize@0.0.33': {} + '@types/prop-types@15.7.12': {} '@types/pug@2.0.10': {} + '@types/qs@6.9.15': {} + '@types/react-dom@18.3.0': dependencies: '@types/react': 18.3.1 @@ -4906,40 +7096,81 @@ snapshots: '@types/semver@7.5.8': {} - '@types/statuses@2.0.5': {} + '@types/statuses@2.0.5': {} + + '@types/superagent@8.1.8': + dependencies: + '@types/cookiejar': 2.1.5 + '@types/methods': 1.1.4 + '@types/node': 20.14.14 + form-data: 4.0.0 + optional: true + + '@types/validator@13.12.0': {} '@types/web-bluetooth@0.0.20': {} '@types/wrap-ansi@3.0.0': {} - '@vitejs/plugin-react-swc@3.7.0(@swc/helpers@0.5.5)(vite@5.3.5(@types/node@20.14.7))': + '@vinejs/compiler@2.5.0': {} + + '@vinejs/vine@2.1.0': + dependencies: + '@poppinss/macroable': 1.0.2 + '@types/validator': 13.12.0 + '@vinejs/compiler': 2.5.0 + camelcase: 8.0.0 + dayjs: 1.11.12 + dlv: 1.1.3 + normalize-url: 8.0.1 + validator: 13.12.0 + + '@vitejs/plugin-react-swc@3.7.0(@swc/helpers@0.5.5)(vite@5.3.5(@types/node@22.1.0))': dependencies: '@swc/core': 1.7.4(@swc/helpers@0.5.5) - vite: 5.3.5(@types/node@20.14.7) + vite: 5.3.5(@types/node@22.1.0) transitivePeerDependencies: - '@swc/helpers' - '@vitejs/plugin-react@4.3.1(vite@5.3.5(@types/node@20.14.7))': + '@vitejs/plugin-react@4.3.1(vite@5.3.5(@types/node@22.1.0))': dependencies: '@babel/core': 7.24.7 '@babel/plugin-transform-react-jsx-self': 7.24.7(@babel/core@7.24.7) '@babel/plugin-transform-react-jsx-source': 7.24.7(@babel/core@7.24.7) '@types/babel__core': 7.20.5 react-refresh: 0.14.2 - vite: 5.3.5(@types/node@20.14.7) + vite: 5.3.5(@types/node@22.1.0) transitivePeerDependencies: - supports-color - '@vitejs/plugin-vue@5.1.2(vite@5.3.5(@types/node@20.14.7))(vue@3.4.35(typescript@5.4.5))': + '@vitejs/plugin-vue@5.1.2(vite@5.3.5(@types/node@22.1.0))(vue@3.4.35(typescript@5.4.5))': dependencies: - vite: 5.3.5(@types/node@20.14.7) + vite: 5.3.5(@types/node@22.1.0) vue: 3.4.35(typescript@5.4.5) - '@vitejs/plugin-vue@5.1.2(vite@5.3.5(@types/node@20.14.7))(vue@3.4.35(typescript@5.5.4))': + '@vitejs/plugin-vue@5.1.2(vite@5.3.5(@types/node@22.1.0))(vue@3.4.35(typescript@5.5.4))': dependencies: - vite: 5.3.5(@types/node@20.14.7) + vite: 5.3.5(@types/node@22.1.0) vue: 3.4.35(typescript@5.5.4) + '@vitest/coverage-v8@2.0.5(vitest@2.0.5(@types/node@22.1.0)(jsdom@20.0.3))': + dependencies: + '@ampproject/remapping': 2.3.0 + '@bcoe/v8-coverage': 0.2.3 + debug: 4.3.6(supports-color@9.4.0) + istanbul-lib-coverage: 3.2.2 + istanbul-lib-report: 3.0.1 + istanbul-lib-source-maps: 5.0.6 + istanbul-reports: 3.1.7 + magic-string: 0.30.11 + magicast: 0.3.4 + std-env: 3.7.0 + test-exclude: 7.0.1 + tinyrainbow: 1.2.0 + vitest: 2.0.5(@types/node@22.1.0)(jsdom@20.0.3) + transitivePeerDependencies: + - supports-color + '@vitest/expect@2.0.5': dependencies: '@vitest/spy': 2.0.5 @@ -4959,7 +7190,7 @@ snapshots: '@vitest/snapshot@2.0.5': dependencies: '@vitest/pretty-format': 2.0.5 - magic-string: 0.30.10 + magic-string: 0.30.11 pathe: 1.1.2 '@vitest/spy@2.0.5': @@ -5118,6 +7349,17 @@ snapshots: abab@2.0.6: optional: true + abort-controller@3.0.0: + dependencies: + event-target-shim: 5.0.1 + + abstract-logging@2.0.1: {} + + accepts@1.3.8: + dependencies: + mime-types: 2.1.35 + negotiator: 0.6.3 + acorn-globals@7.0.1: dependencies: acorn: 8.12.1 @@ -5127,7 +7369,6 @@ snapshots: acorn-walk@8.3.3: dependencies: acorn: 8.12.1 - optional: true acorn@8.12.1: {} @@ -5173,6 +7414,10 @@ snapshots: dependencies: type-fest: 0.21.3 + ansi-escapes@7.0.0: + dependencies: + environment: 1.1.0 + ansi-regex@5.0.1: {} ansi-regex@6.0.1: {} @@ -5187,11 +7432,17 @@ snapshots: ansi-styles@5.2.0: {} + ansi-styles@6.2.1: {} + + any-promise@1.3.0: {} + anymatch@3.1.3: dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 + arg@4.1.3: {} + argparse@1.0.10: dependencies: sprintf-js: 1.0.3 @@ -5229,12 +7480,18 @@ snapshots: arrify@1.0.1: {} + as-table@1.0.55: + dependencies: + printable-characters: 1.0.42 + asap@2.0.6: {} assertion-error@2.0.1: {} asynckit@0.4.0: {} + atomic-sleep@1.0.0: {} + available-typed-arrays@1.0.7: dependencies: possible-typed-array-names: 1.0.0 @@ -5251,6 +7508,12 @@ snapshots: balanced-match@1.0.2: {} + base64-js@1.5.1: {} + + basic-auth@2.0.1: + dependencies: + safe-buffer: 5.1.2 + better-path-resolve@1.0.0: dependencies: is-windows: 1.0.2 @@ -5287,10 +7550,22 @@ snapshots: buffer-crc32@1.0.0: {} + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + bundle-require@5.0.0(esbuild@0.23.0): + dependencies: + esbuild: 0.23.0 + load-tsconfig: 0.2.5 + busboy@1.6.0: dependencies: streamsearch: 1.1.0 + bytes@3.1.2: {} + cac@6.7.14: {} call-bind@1.0.7: @@ -5320,8 +7595,12 @@ snapshots: camelcase@6.3.0: {} + camelcase@8.0.0: {} + caniuse-lite@1.0.30001646: {} + case-anything@2.1.13: {} + chai@5.1.1: dependencies: assertion-error: 2.0.1 @@ -5343,6 +7622,8 @@ snapshots: chardet@0.7.0: {} + check-disk-space@3.4.0: {} + check-error@2.1.1: {} chokidar@3.6.0: @@ -5363,8 +7644,25 @@ snapshots: dependencies: escape-string-regexp: 5.0.0 + cli-boxes@3.0.0: {} + + cli-cursor@5.0.0: + dependencies: + restore-cursor: 5.1.0 + cli-spinners@2.9.2: {} + cli-table3@0.6.5: + dependencies: + string-width: 4.2.3 + optionalDependencies: + '@colors/colors': 1.5.0 + + cli-truncate@4.0.0: + dependencies: + slice-ansi: 5.0.0 + string-width: 7.2.0 + cli-width@4.1.0: {} client-only@0.0.1: {} @@ -5383,6 +7681,8 @@ snapshots: clone@1.0.4: {} + code-block-writer@13.0.2: {} + code-red@1.0.4: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 @@ -5405,18 +7705,32 @@ snapshots: colorette@1.4.0: {} + colorette@2.0.19: {} + + colorette@2.0.20: {} + combined-stream@1.0.8: dependencies: delayed-stream: 1.0.0 + commander@10.0.1: {} + commander@11.1.0: {} + commander@4.1.1: {} + component-emitter@1.3.1: {} computeds@0.0.1: {} concat-map@0.0.1: {} + consola@3.2.3: {} + + content-disposition@0.5.4: + dependencies: + safe-buffer: 5.2.1 + convert-source-map@2.0.0: {} cookie@0.5.0: {} @@ -5425,6 +7739,22 @@ snapshots: cookiejar@2.1.4: {} + copy-file@11.0.0: + dependencies: + graceful-fs: 4.2.11 + p-event: 6.0.1 + + cpy@11.1.0: + dependencies: + copy-file: 11.0.0 + globby: 14.0.2 + junk: 4.0.1 + micromatch: 4.0.7 + p-filter: 4.1.0 + p-map: 7.0.2 + + create-require@1.1.1: {} + cross-spawn@5.1.0: dependencies: lru-cache: 4.1.5 @@ -5468,6 +7798,8 @@ snapshots: csv-stringify: 5.6.5 stream-transform: 2.1.3 + data-uri-to-buffer@2.0.2: {} + data-urls@3.0.2: dependencies: abab: 2.0.6 @@ -5495,8 +7827,16 @@ snapshots: dataloader@1.4.0: {} + dateformat@4.6.3: {} + + dayjs@1.11.12: {} + de-indent@1.0.2: {} + debug@4.3.4: + dependencies: + ms: 2.1.2 + debug@4.3.5(supports-color@9.4.0): dependencies: ms: 2.1.2 @@ -5521,6 +7861,8 @@ snapshots: decimal.js@10.4.3: optional: true + dedent@1.5.3: {} + deep-eql@5.0.2: {} deepmerge@4.3.1: {} @@ -5561,8 +7903,12 @@ snapshots: delayed-stream@1.0.0: {} + depd@2.0.0: {} + dequal@2.0.3: {} + destroy@1.2.0: {} + detect-indent@6.1.0: {} devalue@5.0.0: {} @@ -5572,10 +7918,14 @@ snapshots: asap: 2.0.6 wrappy: 1.0.2 + diff@4.0.2: {} + dir-glob@3.0.1: dependencies: path-type: 4.0.0 + dlv@1.1.3: {} + dom-accessibility-api@0.5.16: {} domexception@4.0.0: @@ -5583,12 +7933,30 @@ snapshots: webidl-conversions: 7.0.0 optional: true + dotenv@16.4.5: {} + dotenv@8.6.0: {} + eastasianwidth@0.2.0: {} + + ee-first@1.1.1: {} + electron-to-chromium@1.4.807: {} + emittery@1.0.3: {} + + emoji-regex@10.3.0: {} + emoji-regex@8.0.0: {} + emoji-regex@9.2.2: {} + + encodeurl@2.0.0: {} + + end-of-stream@1.4.4: + dependencies: + once: 1.4.0 + enquirer@2.4.1: dependencies: ansi-colors: 4.1.3 @@ -5596,6 +7964,8 @@ snapshots: entities@4.5.0: {} + environment@1.1.0: {} + error-ex@1.3.2: dependencies: is-arrayish: 0.2.1 @@ -5655,6 +8025,8 @@ snapshots: es-errors@1.3.0: {} + es-module-lexer@1.5.4: {} + es-object-atoms@1.0.0: dependencies: es-errors: 1.3.0 @@ -5729,6 +8101,33 @@ snapshots: '@esbuild/win32-ia32': 0.21.5 '@esbuild/win32-x64': 0.21.5 + esbuild@0.23.0: + optionalDependencies: + '@esbuild/aix-ppc64': 0.23.0 + '@esbuild/android-arm': 0.23.0 + '@esbuild/android-arm64': 0.23.0 + '@esbuild/android-x64': 0.23.0 + '@esbuild/darwin-arm64': 0.23.0 + '@esbuild/darwin-x64': 0.23.0 + '@esbuild/freebsd-arm64': 0.23.0 + '@esbuild/freebsd-x64': 0.23.0 + '@esbuild/linux-arm': 0.23.0 + '@esbuild/linux-arm64': 0.23.0 + '@esbuild/linux-ia32': 0.23.0 + '@esbuild/linux-loong64': 0.23.0 + '@esbuild/linux-mips64el': 0.23.0 + '@esbuild/linux-ppc64': 0.23.0 + '@esbuild/linux-riscv64': 0.23.0 + '@esbuild/linux-s390x': 0.23.0 + '@esbuild/linux-x64': 0.23.0 + '@esbuild/netbsd-x64': 0.23.0 + '@esbuild/openbsd-arm64': 0.23.0 + '@esbuild/openbsd-x64': 0.23.0 + '@esbuild/sunos-x64': 0.23.0 + '@esbuild/win32-arm64': 0.23.0 + '@esbuild/win32-ia32': 0.23.0 + '@esbuild/win32-x64': 0.23.0 + escalade@3.1.2: {} escape-string-regexp@1.0.5: {} @@ -5746,6 +8145,8 @@ snapshots: esm-env@1.0.0: {} + esm@3.2.25: {} + esprima@4.0.1: {} estraverse@5.3.0: @@ -5760,6 +8161,24 @@ snapshots: esutils@2.0.3: optional: true + etag@1.8.1: {} + + event-target-shim@5.0.1: {} + + events@3.3.0: {} + + execa@5.1.1: + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + execa@8.0.1: dependencies: cross-spawn: 7.0.3 @@ -5780,6 +8199,8 @@ snapshots: iconv-lite: 0.4.24 tmp: 0.0.33 + fast-copy@3.0.2: {} + fast-deep-equal@3.1.3: {} fast-glob@3.3.2: @@ -5790,12 +8211,23 @@ snapshots: merge2: 1.4.1 micromatch: 4.0.5 + fast-redact@3.5.0: {} + fast-safe-stringify@2.1.1: {} + fastest-levenshtein@1.0.16: {} + fastq@1.17.1: dependencies: reusify: 1.0.4 + file-type@19.4.0: + dependencies: + get-stream: 9.0.1 + strtok3: 8.0.1 + token-types: 6.0.0 + uint8array-extras: 1.4.0 + fill-range@7.0.1: dependencies: to-regex-range: 5.0.1 @@ -5804,6 +8236,8 @@ snapshots: dependencies: to-regex-range: 5.0.1 + find-up-simple@1.0.0: {} + find-up@4.1.0: dependencies: locate-path: 5.0.0 @@ -5819,6 +8253,8 @@ snapshots: micromatch: 4.0.7 pkg-dir: 4.2.0 + flattie@1.1.1: {} + focus-trap@7.5.4: dependencies: tabbable: 6.2.0 @@ -5829,18 +8265,35 @@ snapshots: dependencies: is-callable: 1.2.7 + foreground-child@3.3.0: + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + form-data@4.0.0: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 + formidable@2.1.2: + dependencies: + dezalgo: 1.0.4 + hexoid: 1.0.0 + once: 1.4.0 + qs: 6.13.0 + optional: true + formidable@3.5.1: dependencies: dezalgo: 1.0.4 hexoid: 1.0.0 once: 1.4.0 + forwarded@0.2.0: {} + + fresh@0.5.2: {} + fs-extra@11.2.0: dependencies: graceful-fs: 4.2.11 @@ -5882,6 +8335,8 @@ snapshots: get-caller-file@2.0.5: {} + get-east-asian-width@1.2.0: {} + get-func-name@2.0.2: {} get-intrinsic@1.2.4: @@ -5892,18 +8347,49 @@ snapshots: has-symbols: 1.0.3 hasown: 2.0.2 + get-package-type@0.1.0: {} + + get-port@7.1.0: {} + + get-source@2.0.12: + dependencies: + data-uri-to-buffer: 2.0.2 + source-map: 0.6.1 + + get-stream@6.0.1: {} + get-stream@8.0.1: {} + get-stream@9.0.1: + dependencies: + '@sec-ant/readable-stream': 0.4.1 + is-stream: 4.0.1 + get-symbol-description@1.0.2: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 get-intrinsic: 1.2.4 + getopts@2.3.0: {} + glob-parent@5.1.2: dependencies: is-glob: 4.0.3 + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob@10.4.5: + dependencies: + foreground-child: 3.3.0 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.0 + path-scurry: 1.11.1 + glob@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -5939,6 +8425,15 @@ snapshots: merge2: 1.4.1 slash: 4.0.0 + globby@14.0.2: + dependencies: + '@sindresorhus/merge-streams': 2.3.0 + fast-glob: 3.3.2 + ignore: 5.3.1 + path-type: 5.0.0 + slash: 5.1.0 + unicorn-magic: 0.1.0 + globrex@0.1.2: {} gopd@1.0.1: @@ -5988,6 +8483,8 @@ snapshots: headers-polyfill@4.0.3: {} + help-me@5.0.0: {} + hexoid@1.0.0: {} hookable@5.5.3: {} @@ -5998,11 +8495,32 @@ snapshots: dependencies: lru-cache: 6.0.0 + hosted-git-info@7.0.2: + dependencies: + lru-cache: 10.4.3 + + hot-hook@0.2.6: + dependencies: + chokidar: 3.6.0 + fast-glob: 3.3.2 + picomatch: 4.0.2 + read-package-up: 11.0.0 + html-encoding-sniffer@3.0.0: dependencies: whatwg-encoding: 2.0.0 optional: true + html-escaper@2.0.2: {} + + http-errors@2.0.0: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + http-proxy-agent@5.0.0: dependencies: '@tootallnate/once': 2.0.0 @@ -6023,12 +8541,14 @@ snapshots: https-proxy-agent@7.0.4(supports-color@9.4.0): dependencies: agent-base: 7.1.1(supports-color@9.4.0) - debug: 4.3.5(supports-color@9.4.0) + debug: 4.3.6(supports-color@9.4.0) transitivePeerDependencies: - supports-color human-id@1.0.2: {} + human-signals@2.1.0: {} + human-signals@5.0.0: {} iconv-lite@0.4.24: @@ -6040,6 +8560,10 @@ snapshots: safer-buffer: 2.1.2 optional: true + ieee754@1.2.1: {} + + igniculus@1.5.0: {} + ignore@5.3.1: {} import-meta-resolve@4.1.0: {} @@ -6050,6 +8574,8 @@ snapshots: index-to-position@0.1.2: {} + inflation@2.1.0: {} + inflight@1.0.6: dependencies: once: 1.4.0 @@ -6063,6 +8589,10 @@ snapshots: hasown: 2.0.2 side-channel: 1.0.6 + interpret@2.2.0: {} + + ipaddr.js@1.9.1: {} + is-array-buffer@3.0.4: dependencies: call-bind: 1.0.7 @@ -6101,6 +8631,12 @@ snapshots: is-fullwidth-code-point@3.0.0: {} + is-fullwidth-code-point@4.0.0: {} + + is-fullwidth-code-point@5.0.0: + dependencies: + get-east-asian-width: 1.2.0 + is-glob@4.0.3: dependencies: is-extglob: 2.1.1 @@ -6137,8 +8673,12 @@ snapshots: dependencies: call-bind: 1.0.7 + is-stream@2.0.1: {} + is-stream@3.0.0: {} + is-stream@4.0.1: {} + is-string@1.0.7: dependencies: has-tostringtag: 1.0.2 @@ -6165,6 +8705,35 @@ snapshots: isexe@2.0.0: {} + istanbul-lib-coverage@3.2.2: {} + + istanbul-lib-report@3.0.1: + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 + + istanbul-lib-source-maps@5.0.6: + dependencies: + '@jridgewell/trace-mapping': 0.3.25 + debug: 4.3.6(supports-color@9.4.0) + istanbul-lib-coverage: 3.2.2 + transitivePeerDependencies: + - supports-color + + istanbul-reports@3.1.7: + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + joycon@3.1.1: {} + js-levenshtein@1.1.6: {} js-tokens@4.0.0: {} @@ -6234,12 +8803,53 @@ snapshots: optionalDependencies: graceful-fs: 4.2.11 + jsonschema@1.4.1: {} + + junk@4.0.1: {} + kind-of@6.0.3: {} kleur@4.1.5: {} + knex-dynamic-connection@3.2.0: + dependencies: + debug: 4.3.6(supports-color@9.4.0) + knex: 3.1.0 + transitivePeerDependencies: + - better-sqlite3 + - mysql + - mysql2 + - pg + - pg-native + - sqlite3 + - supports-color + - tedious + + knex@3.1.0: + dependencies: + colorette: 2.0.19 + commander: 10.0.1 + debug: 4.3.4 + escalade: 3.1.2 + esm: 3.2.25 + get-package-type: 0.1.0 + getopts: 2.3.0 + interpret: 2.2.0 + lodash: 4.17.21 + pg-connection-string: 2.6.2 + rechoir: 0.8.0 + resolve-from: 5.0.0 + tarn: 3.0.2 + tildify: 2.0.0 + transitivePeerDependencies: + - supports-color + + lilconfig@3.1.2: {} + lines-and-columns@1.2.4: {} + load-tsconfig@0.2.5: {} + load-yaml-file@0.2.0: dependencies: graceful-fs: 4.2.11 @@ -6259,8 +8869,20 @@ snapshots: lodash.isequal@4.5.0: {} + lodash.sortby@4.7.0: {} + lodash.startcase@4.4.0: {} + lodash@4.17.21: {} + + log-update@6.1.0: + dependencies: + ansi-escapes: 7.0.0 + cli-cursor: 5.0.0 + slice-ansi: 7.1.0 + strip-ansi: 7.1.0 + wrap-ansi: 9.0.0 + loose-envify@1.4.0: dependencies: js-tokens: 4.0.0 @@ -6269,6 +8891,8 @@ snapshots: dependencies: get-func-name: 2.0.2 + lru-cache@10.4.3: {} + lru-cache@4.1.5: dependencies: pseudomap: 1.0.2 @@ -6282,16 +8906,30 @@ snapshots: dependencies: yallist: 4.0.0 + luxon@3.5.0: {} + lz-string@1.5.0: {} magic-string@0.30.10: dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/sourcemap-codec': 1.5.0 magic-string@0.30.11: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 + magicast@0.3.4: + dependencies: + '@babel/parser': 7.25.3 + '@babel/types': 7.25.2 + source-map-js: 1.2.0 + + make-dir@4.0.0: + dependencies: + semver: 7.6.3 + + make-error@1.3.6: {} + map-obj@1.0.1: {} map-obj@4.3.0: {} @@ -6300,6 +8938,14 @@ snapshots: mdn-data@2.0.30: {} + media-typer@0.3.0: {} + + media-typer@1.1.0: {} + + memoize@10.0.0: + dependencies: + mimic-function: 5.0.1 + meow@10.1.5: dependencies: '@types/minimist': 1.2.5 @@ -6353,8 +8999,12 @@ snapshots: mime@2.6.0: {} + mimic-fn@2.1.0: {} + mimic-fn@4.0.0: {} + mimic-function@5.0.1: {} + min-indent@1.0.1: {} minimatch@3.1.2: @@ -6377,6 +9027,8 @@ snapshots: minimist@1.2.8: {} + minipass@7.1.2: {} + minisearch@6.3.0: {} mitt@3.0.1: {} @@ -6387,6 +9039,8 @@ snapshots: dependencies: minimist: 1.2.8 + mkdirp@3.0.1: {} + mri@1.2.0: {} mrmime@2.0.0: {} @@ -6439,10 +9093,20 @@ snapshots: muggle-string@0.4.1: {} + mustache@4.2.0: {} + mute-stream@1.0.0: {} + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + nanoid@3.3.7: {} + negotiator@0.6.3: {} + neo-async@2.6.2: {} next@14.2.3(@playwright/test@1.44.1)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): @@ -6491,8 +9155,20 @@ snapshots: semver: 7.6.0 validate-npm-package-license: 3.0.4 + normalize-package-data@6.0.2: + dependencies: + hosted-git-info: 7.0.2 + semver: 7.6.3 + validate-npm-package-license: 3.0.4 + normalize-path@3.0.0: {} + normalize-url@8.0.1: {} + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + npm-run-path@5.3.0: dependencies: path-key: 4.0.0 @@ -6500,6 +9176,8 @@ snapshots: nwsapi@2.2.12: optional: true + object-assign@4.1.1: {} + object-inspect@1.13.1: {} object-keys@1.1.1: {} @@ -6511,14 +9189,30 @@ snapshots: has-symbols: 1.0.3 object-keys: 1.1.1 + on-exit-leak-free@2.1.2: {} + + on-finished@2.4.1: + dependencies: + ee-first: 1.1.1 + once@1.4.0: dependencies: wrappy: 1.0.2 + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + onetime@6.0.0: dependencies: mimic-fn: 4.0.0 + onetime@7.0.0: + dependencies: + mimic-function: 5.0.1 + + openapi-types@12.1.3: {} + openapi-typescript-codegen@0.25.0: dependencies: camelcase: 6.3.0 @@ -6535,10 +9229,18 @@ snapshots: outvariant@1.4.2: {} + p-event@6.0.1: + dependencies: + p-timeout: 6.1.2 + p-filter@2.1.0: dependencies: p-map: 2.1.0 + p-filter@4.1.0: + dependencies: + p-map: 7.0.2 + p-limit@2.3.0: dependencies: p-try: 2.2.0 @@ -6561,8 +9263,19 @@ snapshots: dependencies: aggregate-error: 4.0.1 + p-map@7.0.2: {} + + p-timeout@6.1.2: {} + p-try@2.2.0: {} + package-json-from-dist@1.0.0: {} + + parse-imports@1.2.0: + dependencies: + es-module-lexer: 1.5.4 + slashes: 3.0.12 + parse-json@5.2.0: dependencies: '@babel/code-frame': 7.24.2 @@ -6593,14 +9306,23 @@ snapshots: path-parse@1.0.7: {} + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + path-to-regexp@6.2.2: {} path-type@4.0.0: {} + path-type@5.0.0: {} + pathe@1.1.2: {} pathval@2.0.0: {} + peek-readable@5.1.3: {} + perfect-debounce@1.0.0: {} periscopic@3.1.0: @@ -6609,14 +9331,56 @@ snapshots: estree-walker: 3.0.3 is-reference: 3.0.2 - picocolors@1.0.0: {} + pg-connection-string@2.6.2: {} picocolors@1.0.1: {} picomatch@2.3.1: {} + picomatch@4.0.2: {} + pify@4.0.1: {} + pino-abstract-transport@1.2.0: + dependencies: + readable-stream: 4.5.2 + split2: 4.2.0 + + pino-pretty@11.2.2: + dependencies: + colorette: 2.0.20 + dateformat: 4.6.3 + fast-copy: 3.0.2 + fast-safe-stringify: 2.1.1 + help-me: 5.0.0 + joycon: 3.1.1 + minimist: 1.2.8 + on-exit-leak-free: 2.1.2 + pino-abstract-transport: 1.2.0 + pump: 3.0.0 + readable-stream: 4.5.2 + secure-json-parse: 2.7.0 + sonic-boom: 4.0.1 + strip-json-comments: 3.1.1 + + pino-std-serializers@6.2.2: {} + + pino@8.21.0: + dependencies: + atomic-sleep: 1.0.0 + fast-redact: 3.5.0 + on-exit-leak-free: 2.1.2 + pino-abstract-transport: 1.2.0 + pino-std-serializers: 6.2.2 + process-warning: 3.0.0 + quick-format-unescaped: 4.0.4 + real-require: 0.2.0 + safe-stable-stringify: 2.4.3 + sonic-boom: 3.8.1 + thread-stream: 2.7.0 + + pirates@4.0.6: {} + pkg-dir@4.2.0: dependencies: find-up: 4.1.0 @@ -6633,6 +9397,12 @@ snapshots: possible-typed-array-names@1.0.0: {} + postcss-load-config@6.0.1(postcss@8.4.40): + dependencies: + lilconfig: 3.1.2 + optionalDependencies: + postcss: 8.4.40 + postcss@8.4.31: dependencies: nanoid: 3.3.7 @@ -6664,6 +9434,19 @@ snapshots: ansi-styles: 5.2.0 react-is: 17.0.2 + pretty-hrtime@1.0.3: {} + + printable-characters@1.0.42: {} + + process-warning@3.0.0: {} + + process@0.11.10: {} + + proxy-addr@2.0.7: + dependencies: + forwarded: 0.2.0 + ipaddr.js: 1.9.1 + proxy-from-env@1.1.0: {} pseudomap@1.0.2: {} @@ -6671,21 +9454,41 @@ snapshots: psl@1.9.0: optional: true + pump@3.0.0: + dependencies: + end-of-stream: 1.4.4 + once: 1.4.0 + punycode@2.3.1: {} qs@6.12.1: dependencies: side-channel: 1.0.6 + qs@6.13.0: + dependencies: + side-channel: 1.0.6 + querystringify@2.2.0: optional: true queue-microtask@1.2.3: {} + quick-format-unescaped@4.0.4: {} + quick-lru@4.0.1: {} quick-lru@5.1.1: {} + random-bytes@1.0.0: {} + + raw-body@2.5.2: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + react-dom@18.3.1(react@18.3.1): dependencies: loose-envify: 1.4.0 @@ -6705,6 +9508,12 @@ snapshots: dependencies: loose-envify: 1.4.0 + read-package-up@11.0.0: + dependencies: + find-up-simple: 1.0.0 + read-pkg: 9.0.1 + type-fest: 4.20.1 + read-pkg-up@7.0.1: dependencies: find-up: 4.1.0 @@ -6731,6 +9540,14 @@ snapshots: parse-json: 5.2.0 type-fest: 1.4.0 + read-pkg@9.0.1: + dependencies: + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 6.0.2 + parse-json: 8.1.0 + type-fest: 4.20.1 + unicorn-magic: 0.1.0 + read-yaml-file@1.1.0: dependencies: graceful-fs: 4.2.11 @@ -6738,10 +9555,24 @@ snapshots: pify: 4.0.1 strip-bom: 3.0.0 + readable-stream@4.5.2: + dependencies: + abort-controller: 3.0.0 + buffer: 6.0.3 + events: 3.3.0 + process: 0.11.10 + string_decoder: 1.3.0 + readdirp@3.6.0: dependencies: picomatch: 2.3.1 + real-require@0.2.0: {} + + rechoir@0.8.0: + dependencies: + resolve: 1.22.8 + redent@3.0.0: dependencies: indent-string: 4.0.0 @@ -6752,6 +9583,8 @@ snapshots: indent-string: 5.0.0 strip-indent: 4.0.0 + reflect-metadata@0.2.2: {} + regenerator-runtime@0.14.1: {} regexp.prototype.flags@1.5.2: @@ -6778,6 +9611,11 @@ snapshots: path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 + restore-cursor@5.1.0: + dependencies: + onetime: 7.0.0 + signal-exit: 4.1.0 + reusify@1.0.4: {} rfdc@1.4.1: {} @@ -6812,6 +9650,28 @@ snapshots: '@rollup/rollup-win32-x64-msvc': 4.18.0 fsevents: 2.3.3 + rollup@4.20.0: + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.20.0 + '@rollup/rollup-android-arm64': 4.20.0 + '@rollup/rollup-darwin-arm64': 4.20.0 + '@rollup/rollup-darwin-x64': 4.20.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.20.0 + '@rollup/rollup-linux-arm-musleabihf': 4.20.0 + '@rollup/rollup-linux-arm64-gnu': 4.20.0 + '@rollup/rollup-linux-arm64-musl': 4.20.0 + '@rollup/rollup-linux-powerpc64le-gnu': 4.20.0 + '@rollup/rollup-linux-riscv64-gnu': 4.20.0 + '@rollup/rollup-linux-s390x-gnu': 4.20.0 + '@rollup/rollup-linux-x64-gnu': 4.20.0 + '@rollup/rollup-linux-x64-musl': 4.20.0 + '@rollup/rollup-win32-arm64-msvc': 4.20.0 + '@rollup/rollup-win32-ia32-msvc': 4.20.0 + '@rollup/rollup-win32-x64-msvc': 4.20.0 + fsevents: 2.3.3 + run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 @@ -6827,12 +9687,18 @@ snapshots: has-symbols: 1.0.3 isarray: 2.0.5 + safe-buffer@5.1.2: {} + + safe-buffer@5.2.1: {} + safe-regex-test@1.0.3: dependencies: call-bind: 1.0.7 es-errors: 1.3.0 is-regex: 1.1.4 + safe-stable-stringify@2.4.3: {} + safer-buffer@2.1.2: {} sander@0.5.1: @@ -6853,6 +9719,8 @@ snapshots: search-insights@2.13.0: {} + secure-json-parse@2.7.0: {} + semver@5.7.2: {} semver@6.3.1: {} @@ -6885,6 +9753,8 @@ snapshots: functions-have-names: 1.2.3 has-property-descriptors: 1.0.2 + setprototypeof@1.2.0: {} + shebang-command@1.2.0: dependencies: shebang-regex: 1.0.0 @@ -6924,6 +9794,22 @@ snapshots: slash@4.0.0: {} + slash@5.1.0: {} + + slashes@3.0.12: {} + + slice-ansi@5.0.0: + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 4.0.0 + + slice-ansi@7.1.0: + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 5.0.0 + + slugify@1.6.6: {} + smartwrap@2.0.2: dependencies: array.prototype.flat: 1.3.2 @@ -6933,6 +9819,14 @@ snapshots: wcwidth: 1.0.1 yargs: 15.4.1 + sonic-boom@3.8.1: + dependencies: + atomic-sleep: 1.0.0 + + sonic-boom@4.0.1: + dependencies: + atomic-sleep: 1.0.0 + sorcery@0.11.1: dependencies: '@jridgewell/sourcemap-codec': 1.5.0 @@ -6944,6 +9838,10 @@ snapshots: source-map@0.6.1: {} + source-map@0.8.0-beta.0: + dependencies: + whatwg-url: 7.1.0 + spawndamnit@2.0.0: dependencies: cross-spawn: 5.1.0 @@ -6965,10 +9863,19 @@ snapshots: speakingurl@14.0.1: {} + split-lines@3.0.0: {} + + split2@4.2.0: {} + sprintf-js@1.0.3: {} stackback@0.0.2: {} + stacktracey@2.1.8: + dependencies: + as-table: 1.0.55 + get-source: 2.0.12 + statuses@2.0.1: {} std-env@3.7.0: {} @@ -6981,12 +9888,26 @@ snapshots: strict-event-emitter@0.5.1: {} + string-argv@0.3.2: {} + string-width@4.2.3: dependencies: emoji-regex: 8.0.0 is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + string-width@7.2.0: + dependencies: + emoji-regex: 10.3.0 + get-east-asian-width: 1.2.0 + strip-ansi: 7.1.0 + string.prototype.trim@1.2.9: dependencies: call-bind: 1.0.7 @@ -7006,6 +9927,10 @@ snapshots: define-properties: 1.2.1 es-object-atoms: 1.0.0 + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + strip-ansi@6.0.1: dependencies: ansi-regex: 5.0.1 @@ -7016,6 +9941,8 @@ snapshots: strip-bom@3.0.0: {} + strip-final-newline@2.0.0: {} + strip-final-newline@3.0.0: {} strip-indent@3.0.0: @@ -7026,11 +9953,44 @@ snapshots: dependencies: min-indent: 1.0.1 + strip-json-comments@3.1.1: {} + + strtok3@8.0.1: + dependencies: + '@tokenizer/token': 0.3.0 + peek-readable: 5.1.3 + styled-jsx@5.1.1(react@18.3.1): dependencies: client-only: 0.0.1 react: 18.3.1 + sucrase@3.35.0: + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + commander: 4.1.1 + glob: 10.4.5 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.6 + ts-interface-checker: 0.1.13 + + superagent@8.1.2: + dependencies: + component-emitter: 1.3.1 + cookiejar: 2.1.4 + debug: 4.3.6(supports-color@9.4.0) + fast-safe-stringify: 2.1.1 + form-data: 4.0.0 + formidable: 2.1.2 + methods: 1.1.2 + mime: 2.6.0 + qs: 6.13.0 + semver: 7.6.3 + transitivePeerDependencies: + - supports-color + optional: true + superagent@9.0.2: dependencies: component-emitter: 1.3.1 @@ -7116,8 +10076,34 @@ snapshots: tabbable@6.2.0: {} + tarn@3.0.2: {} + + tempura@0.4.1: {} + term-size@2.2.1: {} + terminal-size@4.0.0: {} + + test-exclude@7.0.1: + dependencies: + '@istanbuljs/schema': 0.1.3 + glob: 10.4.5 + minimatch: 9.0.5 + + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + + thread-stream@2.7.0: + dependencies: + real-require: 0.2.0 + + tildify@2.0.0: {} + tiny-glob@0.2.9: dependencies: globalyzer: 0.1.0 @@ -7131,6 +10117,8 @@ snapshots: tinyspy@3.0.0: {} + tmp-cache@1.1.0: {} + tmp@0.0.33: dependencies: os-tmpdir: 1.0.2 @@ -7141,6 +10129,13 @@ snapshots: dependencies: is-number: 7.0.0 + toidentifier@1.0.1: {} + + token-types@6.0.0: + dependencies: + '@tokenizer/token': 0.3.0 + ieee754: 1.2.1 + totalist@3.0.1: {} tough-cookie@4.1.4: @@ -7153,17 +10148,80 @@ snapshots: tr46@0.0.3: {} + tr46@1.0.1: + dependencies: + punycode: 2.3.1 + tr46@3.0.0: dependencies: punycode: 2.3.1 optional: true + tree-kill@1.2.2: {} + trim-newlines@3.0.1: {} trim-newlines@4.1.1: {} + truncatise@0.0.8: {} + + ts-interface-checker@0.1.13: {} + + ts-morph@22.0.0: + dependencies: + '@ts-morph/common': 0.23.0 + code-block-writer: 13.0.2 + + ts-node@10.9.2(@swc/core@1.7.4(@swc/helpers@0.5.5))(@types/node@20.14.14)(typescript@5.4.5): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.11 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 20.14.14 + acorn: 8.12.1 + acorn-walk: 8.3.3 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.4.5 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optionalDependencies: + '@swc/core': 1.7.4(@swc/helpers@0.5.5) + tslib@2.6.3: {} + tsup@8.2.4(@swc/core@1.7.4(@swc/helpers@0.5.5))(postcss@8.4.40)(typescript@5.4.5): + dependencies: + bundle-require: 5.0.0(esbuild@0.23.0) + cac: 6.7.14 + chokidar: 3.6.0 + consola: 3.2.3 + debug: 4.3.6(supports-color@9.4.0) + esbuild: 0.23.0 + execa: 5.1.1 + globby: 11.1.0 + joycon: 3.1.1 + picocolors: 1.0.1 + postcss-load-config: 6.0.1(postcss@8.4.40) + resolve-from: 5.0.0 + rollup: 4.20.0 + source-map: 0.8.0-beta.0 + sucrase: 3.35.0 + tree-kill: 1.2.2 + optionalDependencies: + '@swc/core': 1.7.4(@swc/helpers@0.5.5) + postcss: 8.4.40 + typescript: 5.4.5 + transitivePeerDependencies: + - jiti + - supports-color + - tsx + - yaml + tty-table@4.2.3: dependencies: chalk: 4.1.2 @@ -7174,6 +10232,8 @@ snapshots: wcwidth: 1.0.1 yargs: 17.7.2 + type-detect@4.1.0: {} + type-fest@0.13.1: {} type-fest@0.21.3: {} @@ -7186,6 +10246,11 @@ snapshots: type-fest@4.20.1: {} + type-is@1.6.18: + dependencies: + media-typer: 0.3.0 + mime-types: 2.1.35 + typed-array-buffer@1.0.2: dependencies: call-bind: 1.0.7 @@ -7226,6 +10291,12 @@ snapshots: uglify-js@3.18.0: optional: true + uid-safe@2.1.5: + dependencies: + random-bytes: 1.0.0 + + uint8array-extras@1.4.0: {} + unbox-primitive@1.0.2: dependencies: call-bind: 1.0.7 @@ -7235,6 +10306,10 @@ snapshots: undici-types@5.26.5: {} + undici-types@6.13.0: {} + + unicorn-magic@0.1.0: {} + universalify@0.1.2: {} universalify@0.2.0: @@ -7242,6 +10317,24 @@ snapshots: universalify@2.0.1: {} + unpipe@1.0.0: {} + + unplugin-swc@1.5.1(@swc/core@1.7.4(@swc/helpers@0.5.5))(rollup@4.20.0): + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@4.20.0) + '@swc/core': 1.7.4(@swc/helpers@0.5.5) + load-tsconfig: 0.2.5 + unplugin: 1.12.1 + transitivePeerDependencies: + - rollup + + unplugin@1.12.1: + dependencies: + acorn: 8.12.1 + chokidar: 3.6.0 + webpack-sources: 3.2.3 + webpack-virtual-modules: 0.6.2 + update-browserslist-db@1.0.16(browserslist@4.23.1): dependencies: browserslist: 4.23.1 @@ -7258,12 +10351,18 @@ snapshots: requires-port: 1.0.0 optional: true + v8-compile-cache-lib@3.0.1: {} + validate-npm-package-license@3.0.4: dependencies: spdx-correct: 3.2.0 spdx-expression-parse: 3.0.1 - vite-node@2.0.5(@types/node@20.14.7)(supports-color@9.4.0): + validator@13.12.0: {} + + vary@1.1.2: {} + + vite-node@2.0.5(@types/node@20.14.7): dependencies: cac: 6.7.14 debug: 4.3.5(supports-color@9.4.0) @@ -7280,6 +10379,40 @@ snapshots: - supports-color - terser + vite-node@2.0.5(@types/node@22.1.0): + dependencies: + cac: 6.7.14 + debug: 4.3.5(supports-color@9.4.0) + pathe: 1.1.2 + tinyrainbow: 1.2.0 + vite: 5.3.5(@types/node@22.1.0) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + + vite-node@2.0.5(@types/node@22.1.0)(supports-color@9.4.0): + dependencies: + cac: 6.7.14 + debug: 4.3.5(supports-color@9.4.0) + pathe: 1.1.2 + tinyrainbow: 1.2.0 + vite: 5.3.5(@types/node@22.1.0) + transitivePeerDependencies: + - '@types/node' + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + vite@5.3.5(@types/node@20.14.7): dependencies: esbuild: 0.21.5 @@ -7289,18 +10422,27 @@ snapshots: '@types/node': 20.14.7 fsevents: 2.3.3 - vitefu@0.2.5(vite@5.3.5(@types/node@20.14.7)): + vite@5.3.5(@types/node@22.1.0): + dependencies: + esbuild: 0.21.5 + postcss: 8.4.40 + rollup: 4.18.0 optionalDependencies: - vite: 5.3.5(@types/node@20.14.7) + '@types/node': 22.1.0 + fsevents: 2.3.3 + + vitefu@0.2.5(vite@5.3.5(@types/node@22.1.0)): + optionalDependencies: + vite: 5.3.5(@types/node@22.1.0) - vitepress@1.1.4(@algolia/client-search@4.23.3)(@types/node@20.14.7)(@types/react@18.3.3)(axios@1.7.2)(postcss@8.4.40)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.13.0)(typescript@5.5.4): + vitepress@1.1.4(@algolia/client-search@4.23.3)(@types/node@22.1.0)(@types/react@18.3.3)(axios@1.7.2)(postcss@8.4.40)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.13.0)(typescript@5.5.4): dependencies: '@docsearch/css': 3.6.0 '@docsearch/js': 3.6.0(@algolia/client-search@4.23.3)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(search-insights@2.13.0) '@shikijs/core': 1.6.4 '@shikijs/transformers': 1.6.4 '@types/markdown-it': 14.1.1 - '@vitejs/plugin-vue': 5.1.2(vite@5.3.5(@types/node@20.14.7))(vue@3.4.35(typescript@5.5.4)) + '@vitejs/plugin-vue': 5.1.2(vite@5.3.5(@types/node@22.1.0))(vue@3.4.35(typescript@5.5.4)) '@vue/devtools-api': 7.2.1(vue@3.4.35(typescript@5.5.4)) '@vueuse/core': 10.11.0(vue@3.4.35(typescript@5.5.4)) '@vueuse/integrations': 10.11.0(axios@1.7.2)(focus-trap@7.5.4)(vue@3.4.35(typescript@5.5.4)) @@ -7308,7 +10450,7 @@ snapshots: mark.js: 8.11.1 minisearch: 6.3.0 shiki: 1.6.4 - vite: 5.3.5(@types/node@20.14.7) + vite: 5.3.5(@types/node@22.1.0) vue: 3.4.35(typescript@5.5.4) optionalDependencies: postcss: 8.4.40 @@ -7358,7 +10500,7 @@ snapshots: tinypool: 1.0.0 tinyrainbow: 1.2.0 vite: 5.3.5(@types/node@20.14.7) - vite-node: 2.0.5(@types/node@20.14.7)(supports-color@9.4.0) + vite-node: 2.0.5(@types/node@20.14.7) why-is-node-running: 2.3.0 optionalDependencies: '@types/node': 20.14.7 @@ -7372,6 +10514,39 @@ snapshots: - supports-color - terser + vitest@2.0.5(@types/node@22.1.0)(jsdom@20.0.3): + dependencies: + '@ampproject/remapping': 2.3.0 + '@vitest/expect': 2.0.5 + '@vitest/pretty-format': 2.0.5 + '@vitest/runner': 2.0.5 + '@vitest/snapshot': 2.0.5 + '@vitest/spy': 2.0.5 + '@vitest/utils': 2.0.5 + chai: 5.1.1 + debug: 4.3.5(supports-color@9.4.0) + execa: 8.0.1 + magic-string: 0.30.10 + pathe: 1.1.2 + std-env: 3.7.0 + tinybench: 2.8.0 + tinypool: 1.0.0 + tinyrainbow: 1.2.0 + vite: 5.3.5(@types/node@22.1.0) + vite-node: 2.0.5(@types/node@22.1.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 22.1.0 + jsdom: 20.0.3 + transitivePeerDependencies: + - less + - lightningcss + - sass + - stylus + - sugarss + - supports-color + - terser + vscode-uri@3.0.8: {} vue-demi@0.14.8(vue@3.4.35(typescript@5.5.4)): @@ -7416,9 +10591,15 @@ snapshots: webidl-conversions@3.0.1: {} + webidl-conversions@4.0.2: {} + webidl-conversions@7.0.0: optional: true + webpack-sources@3.2.3: {} + + webpack-virtual-modules@0.6.2: {} + whatwg-encoding@2.0.0: dependencies: iconv-lite: 0.6.3 @@ -7438,6 +10619,12 @@ snapshots: tr46: 0.0.3 webidl-conversions: 3.0.1 + whatwg-url@7.1.0: + dependencies: + lodash.sortby: 4.7.0 + tr46: 1.0.1 + webidl-conversions: 4.0.2 + which-boxed-primitive@1.0.2: dependencies: is-bigint: 1.0.4 @@ -7488,6 +10675,18 @@ snapshots: string-width: 4.2.3 strip-ansi: 6.0.1 + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + wrap-ansi@9.0.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 7.2.0 + strip-ansi: 7.1.0 + wrappy@1.0.2: {} ws@8.18.0: @@ -7544,4 +10743,18 @@ snapshots: y18n: 5.0.8 yargs-parser: 21.1.1 + yn@3.1.1: {} + yocto-queue@0.1.0: {} + + youch-terminal@2.2.3: + dependencies: + kleur: 4.1.5 + string-width: 4.2.3 + wordwrap: 1.0.0 + + youch@3.3.3: + dependencies: + cookie: 0.5.0 + mustache: 4.2.0 + stacktracey: 2.1.8