From 2d5c2ee2068bb9533a1fdfae37c2abc6be512b3c Mon Sep 17 00:00:00 2001 From: Gregor MacLennan Date: Thu, 12 Feb 2026 14:57:35 +0000 Subject: [PATCH 01/72] Add map sharing integration to backend (WIP) --- ...peo-core-react-7.3.0-pre.1-MAP-SHARING.tgz | Bin 0 -> 60576 bytes comapeo-ipc-6.1.0-pre.0.tgz | Bin 0 -> 6596 bytes package-lock.json | 1296 ++++++++++++++++- package.json | 6 +- scripts/build-backend.mjs | 4 + src/backend/package-lock.json | 1153 ++++++++++++++- src/backend/package.json | 4 +- src/backend/src/app.js | 17 +- src/frontend/App.tsx | 3 + src/frontend/AppNavigator.tsx | 2 - src/frontend/Navigation/Stack/AppScreens.tsx | 2 + src/frontend/contexts/AppProviders.tsx | 39 +- src/frontend/lib/createAppRpc.ts | 14 + src/frontend/screens/MapSharing.tsx | 12 + src/frontend/sharedTypes/navigation.ts | 1 + 15 files changed, 2464 insertions(+), 89 deletions(-) create mode 100644 comapeo-core-react-7.3.0-pre.1-MAP-SHARING.tgz create mode 100644 comapeo-ipc-6.1.0-pre.0.tgz create mode 100644 src/frontend/lib/createAppRpc.ts create mode 100644 src/frontend/screens/MapSharing.tsx diff --git a/comapeo-core-react-7.3.0-pre.1-MAP-SHARING.tgz b/comapeo-core-react-7.3.0-pre.1-MAP-SHARING.tgz new file mode 100644 index 0000000000000000000000000000000000000000..8636bd4b140ec9dad26f95bc5bd216b13a868d8e GIT binary patch literal 60576 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 FzW^vEAS?g? literal 0 HcmV?d00001 diff --git a/comapeo-ipc-6.1.0-pre.0.tgz b/comapeo-ipc-6.1.0-pre.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..8f41f0b7f2461d28547f9cec53e42a38028cab4a GIT binary patch literal 6596 zcmV;#89U}5iwFP!00002|Lr|%ciXm-{mfr6ky;f5l33CfPv)qmeJ07!xl$x3eGq^kZ+QIn)=_vW|H$582Hmf~r%4?bh}VoUj`f5f4u2lsh4D=9YCq!zmMj zaUYm~2@UCJ4mTn3BkI;+98wB=49@i9ab zCP46UbVou8#CL%R!5u~->VnIi*_8Sbi4fkHc~n3(noy`*>K2un1maTSS^-t>1{hy0L_wo|X2UhRw z;GX%4UwWs# z;qP_pb#K_mK3|^?paU13!LWDy_OvsAi?@S|^UE%D`X|so@Avwz2fhBU-Lr0gXhW|L z{d4I4quU?C<(tmwDT1;(Z-;Nr2RJ@BKEL>V(EIhx5Z;`ho^%J7@Jkm?d!1iSy9!kQ zcQ`)n^v>#V(mCt=+Lf)&hi|$A3#+No!EbN6_zK~5`p`KZ_Rjk_jpOtFaL_p()?s)) z7$!}B>s@y1&>8eD5h1S!=Vx^b(RuzFtMvNVuHRL?AgUp=BIg77{q1Ep=@3r3ozq_b z*Gp`SQ;aLy)(=n5U+4+6{6{v{bUa4=$o{8zMESq9wYAsE%m3}x&XfFql!r}`Z^Jz} zAtez#mOB6zFb???Hp9SagmmmtC*oncJvI+4-7YwxV;bt(LBqvwY3V(5E-u~=E{@;# zPU>*h>34qZ4&Eal?srf1yNm95QsZ(qI-U^Ur(Qi7g5C7ks3~TnhNFrU{O0rL7CeVn z(LA6o9mBl>SzS8hnyu#63E0cH?kk5+NkDni;UV3u*=P9WBIGDij}~Bl?F7t%=gof) zF17?XpR!1Q1XwwgGvbpQ8rI{=n>RGl}2kFK`fE#Qg=k$7i;f*;ao z7WxA2vol!81*9M4)*R1#sSfJSjG9$r9Cg5s;SlZ@HN-OjG@t9$m)*ZqSgj{0{o>p3 z=xBk%M$iiVdSO*J8Y~Xcr+2ty)!Knkd8&4hrYc=4C9~{Yiv*hME1-N3IO}$nQnv2K zKwT-C)<=#ej67=M*(xS>nAs@REGpE>{yPJ+n}UY7G}OCUBL~T-Fe;6=CBw>KH8ZYU znT?_CgOC>%!HOTE7Hw?ikT-Vo7@o= z#pG)f&%2~i{*g^6BwcakWT`ZRG5L0HY*eGhq7bd1wfzYi6ibCxbyEpA+ zQI{VVG0`_+cnJ>iHzWAq^E-KHl}tb%U<0I>ItUJT6dWQVU=e5wLn1!ZKrCZS1~Vc4 z9C-m$9dmn1F^NwqiC7l%&b>lSZ61ak=5o}mx<&YG6nZ;X;#J< z6*VOUMRvHb7I{58r{%_CKmI4j?@C)ITo<(6YpayM+;Zj~WfbN-PeG|-YR#I(#aeO` zUPYooKL*r^8Z-=fX!1x^`ATXJ?+`ST#J)(Haj**wA>OH=^yAq<=tTPVLt z5O~Z{=HS7_aeOWj5KTw~XpHrF1OW-9aK~*W4`|fBv88Nq*?3Gt>`e_u$X=%;5X$14 zh>&O&Qdx%e&}cjI_()(K?2qAogevzP3iM+X5(k%29*PlWEk5mh!_!v0ao|3|@TxT9_zdYNMmOoBgM#- zCqW=LmfmyKkWTq672q)uQ6D$VXcmFXsgOI(NgC=2OH+G({f+5l=DdOpnCo#}zHSIQ zvutMH$zm1N%}g~!!jq--PhkILzDqxTar5s3{@>Q#i-P}mYyZXWll}KG9!>H0MLSr% zAmi&Le7s)d5vJ|dG#QtHx|9+!+p&6Qbdt(+X=5zW5$ud!kXML`hRn5lNsm|sbMU(T z7>qgjh;6?^`cDx3nEs#E{?>NU|Fi$%iT=NV|0hR#S>4;D!>{k*Ng!zDS8K4{Tk1zA zBqF)?vxs>j>l?~x#;YvJi`WkNh$^+h_0iR~sZy_WP^cEM&9e>#9r^($#l2$IZEcXn zLmn*h=IYq|qB-5AKEo6o3`=07EBrvmy4DKUMPgA;tHf_&9DKjdj?9oWSsi9p-dM-w zu8Hhumi3e1r4Fn83Cmput9=dWWNqTQk_J!pX{EZUOE>EPMn&mC^N@zz*vPqWgacLiAZb=7d z8r990S@oTDTqDZ>yVRo*Er(q+>n}mkvQDxcWcGUbXxDM}WcT{&I!il>ZT(9v?lT{4 z{{8|2GWR%fSJ}@q`>m=Q6fNd13Z=tk;wovEHH$x!t^W7}v}llDpP}D`%gDY>EPIyj zezYE8om!dc{2(_Xh9>Dv<|eJ+#~)2VHda7big|Cs&&lgH_%qMTjg`4L8r`VKKr@8~ zLtHsh(>IXcyb~gD)2%brPckuQHu5syLXvDf*R#>kqY2nmhI(BkaW!fhuv5QSmaqy| z`S&Ged30W#pPaX0f{rVW&c=YNXi{zP5nS0Tr!<;y7o-VR{9HD&mDKpDeB~24NPaOF zd0V=T_Rl!Rq+aSt{u8wj<6xO8io1?F!FbnRhnNR5D{X zSxeeS!MpVAS%!Np%A7Dt2rVFSpTH~huhTG^r-f4zsO^+1ukt`epckXurX*-6lG?1< zO2<1_l`{cq_uz4dc*wO;AWcVjHa#*R+RA302b}3d`Lc{Qa;KZFpf$ZbYq@x^zcsx) z>$rH5eHPo0!oc}n�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.9.0" } @@ -2623,17 +2633,34 @@ }, "node_modules/@comapeo/core-react": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@comapeo/core-react/-/core-react-7.2.0.tgz", - "integrity": "sha512-XewUU9BuxUK06QA7v2A0jUE5EAwV2L/UYBFgYjV6IZrhce3og6VPEYGzfa5fb23EGpvs4Xzv8NBperU/8uxsTg==", + "resolved": "file:comapeo-core-react-7.3.0-pre.1-MAP-SHARING.tgz", + "integrity": "sha512-98NquL02EtiaVmvdn/1mO2s0mrEvWJMhU5f0TZfINhIoRceT4Fk6AFjFi5LZRzfVS9i/94MFEaLej9wO5GJ9Aw==", "license": "MIT", + "dependencies": { + "ensure-error": "5.0.0", + "eventsource-client": "1.2.0", + "ky": "1.14.3" + }, "peerDependencies": { - "@comapeo/core": "^5.1.1", - "@comapeo/ipc": "^6.0.0", + "@comapeo/core": "^5.2.1", + "@comapeo/ipc": "^6.0.2", "@comapeo/schema": "*", "@tanstack/react-query": "^5", "react": "^18 || ^19" } }, + "node_modules/@comapeo/core-react/node_modules/ensure-error": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ensure-error/-/ensure-error-5.0.0.tgz", + "integrity": "sha512-3q+rE6t5VUdbjmgJCr0EOX4tiX1cIyymG/NrAuXQW88qM8ewoi1sA9/MU3+Yz5ygwVsPuoSKrlkuy+aZNCYncg==", + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@comapeo/core/node_modules/@mapeo/sqlite-indexer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@mapeo/sqlite-indexer/-/sqlite-indexer-1.0.2.tgz", @@ -2817,11 +2844,12 @@ }, "node_modules/@comapeo/ipc": { "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@comapeo/ipc/-/ipc-6.0.2.tgz", - "integrity": "sha512-uWJ1Klrpz9xTJqapcWLZ7f1WH7NHooo51KN8kR+XD+8UwsGJuSln274Mm094h7SyfWkSwUBIngT3zIS8yEw0wQ==", + "resolved": "file:comapeo-ipc-6.1.0-pre.0.tgz", + "integrity": "sha512-J7kH79ZRDZRgzb2sMz71USQFyPC2HJw2hxZSUUu30ET0hXS8kBgn1jr9Nl12KHjmBNSMAbf9U2i5C2Us/lYwjQ==", "license": "MIT", "peer": true, "dependencies": { + "@comapeo/map-server": "^1.0.0-pre.6", "eventemitter3": "^5.0.1", "p-defer": "^4.0.1", "rpc-reflector": "^3.0.1" @@ -2833,6 +2861,997 @@ "@comapeo/core": "^5.0.0" } }, + "node_modules/@comapeo/map-server": { + "version": "1.0.0-pre.6", + "resolved": "https://registry.npmjs.org/@comapeo/map-server/-/map-server-1.0.0-pre.6.tgz", + "integrity": "sha512-4gZNkxT02kZuCW5pbpOkIr4xoNXeyV50iuwJ84ZUZwrDrcPmUafCFvfYWI62NQqGgxjafyWsbSoSvdBjO01pVA==", + "bundleDependencies": [ + "@whatwg-node/server" + ], + "license": "MIT", + "dependencies": { + "@whatwg-node/server": "^0.10.17", + "itty-router": "^5.0.22", + "p-defer": "^4.0.1", + "p-mutex": "^0.1.0", + "secret-stream-http": "^1.0.1", + "styled-map-package": "^4.0.1", + "typebox": "^1.0.61", + "typed-event-target": "^3.4.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/@commander-js/extra-typings": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/@commander-js/extra-typings/-/extra-typings-12.1.0.tgz", + "integrity": "sha512-wf/lwQvWAA0goIghcb91dQYpkLBcyhOhQNqG/VgWhnKzgt+UOMvra7EX/2fv70arm5RW+PUHoQHHDa6/p77Eqg==", + "license": "MIT", + "peerDependencies": { + "commander": "~12.1.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/@envelop/instrumentation": { + "version": "1.0.0", + "extraneous": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@whatwg-node/promise-helpers": "^1.2.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/@fastify/accept-negotiator": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@fastify/accept-negotiator/-/accept-negotiator-2.0.1.tgz", + "integrity": "sha512-/c/TW2bO/v9JeEgoD/g1G5GxGeCF1Hafdf79WPmUlgYiBXummY0oX3VVq4yFkKKVBKDNlaDUYoab7g38RpPqCQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, + "node_modules/@comapeo/map-server/node_modules/@fastify/ajv-compiler": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-4.0.5.tgz", + "integrity": "sha512-KoWKW+MhvfTRWL4qrhUwAAZoaChluo0m0vbiJlGMt2GXvL4LVPQEjt8kSpHI3IBq5Rez8fg+XeH3cneztq+C7A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "ajv": "^8.12.0", + "ajv-formats": "^3.0.1", + "fast-uri": "^3.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/@fastify/busboy": { + "version": "3.2.0", + "extraneous": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/@comapeo/map-server/node_modules/@fastify/error": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@fastify/error/-/error-4.2.0.tgz", + "integrity": "sha512-RSo3sVDXfHskiBZKBPRgnQTtIqpi/7zhJOEmAxCiBcM7d0uwdGdxLlsCaLzGs8v8NnxIRlfG0N51p5yFaOentQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, + "node_modules/@comapeo/map-server/node_modules/@fastify/fast-json-stringify-compiler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-5.0.3.tgz", + "integrity": "sha512-uik7yYHkLr6fxd8hJSZ8c+xF4WafPK+XzneQDPU+D10r5X19GW8lJcom2YijX2+qtFF1ENJlHXKFM9ouXNJYgQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "fast-json-stringify": "^6.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/@fastify/merge-json-schemas": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@fastify/merge-json-schemas/-/merge-json-schemas-0.2.1.tgz", + "integrity": "sha512-OA3KGBCy6KtIvLf8DINC5880o5iBlDX4SxzLQS8HorJAbqluzLRn80UXU0bxZn7UOFhFgpRJDasfwn9nG4FG4A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/@comapeo/map-server/node_modules/@fastify/send": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@fastify/send/-/send-4.1.0.tgz", + "integrity": "sha512-TMYeQLCBSy2TOFmV95hQWkiTYgC/SEx7vMdV+wnZVX4tt8VBLKzmH8vV9OzJehV0+XBfg+WxPMt5wp+JBUKsVw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "@lukeed/ms": "^2.0.2", + "escape-html": "~1.0.3", + "fast-decode-uri-component": "^1.0.1", + "http-errors": "^2.0.0", + "mime": "^3" + } + }, + "node_modules/@comapeo/map-server/node_modules/@fastify/static": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@fastify/static/-/static-8.3.0.tgz", + "integrity": "sha512-yKxviR5PH1OKNnisIzZKmgZSus0r2OZb8qCSbqmw34aolT4g3UlzYfeBRym+HJ1J471CR8e2ldNub4PubD1coA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "@fastify/accept-negotiator": "^2.0.0", + "@fastify/send": "^4.0.0", + "content-disposition": "^0.5.4", + "fastify-plugin": "^5.0.0", + "fastq": "^1.17.1", + "glob": "^11.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/@isaacs/cliui": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-9.0.0.tgz", + "integrity": "sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@comapeo/map-server/node_modules/@turf/bbox": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-7.3.4.tgz", + "integrity": "sha512-D5ErVWtfQbEPh11yzI69uxqrcJmbPU/9Y59f1uTapgwAwQHQztDWgsYpnL3ns8r1GmPWLP8sGJLVTIk2TZSiYA==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "7.3.4", + "@turf/meta": "7.3.4", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@comapeo/map-server/node_modules/@turf/helpers": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-7.3.4.tgz", + "integrity": "sha512-U/S5qyqgx3WTvg4twaH0WxF3EixoTCfDsmk98g1E3/5e2YKp7JKYZdz0vivsS5/UZLJeZDEElOSFH4pUgp+l7g==", + "license": "MIT", + "dependencies": { + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@comapeo/map-server/node_modules/@turf/meta": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-7.3.4.tgz", + "integrity": "sha512-tlmw9/Hs1p2n0uoHVm1w3ugw1I6L8jv9YZrcdQa4SH5FX5UY0ATrKeIvfA55FlL//PGuYppJp+eyg/0eb4goqw==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "7.3.4", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@comapeo/map-server/node_modules/@whatwg-node/disposablestack": { + "version": "0.0.6", + "extraneous": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@whatwg-node/promise-helpers": "^1.0.0", + "tslib": "^2.6.3" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/@whatwg-node/fetch": { + "version": "0.10.13", + "extraneous": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@whatwg-node/node-fetch": "^0.8.3", + "urlpattern-polyfill": "^10.0.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/@whatwg-node/node-fetch": { + "version": "0.8.4", + "extraneous": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@fastify/busboy": "^3.1.1", + "@whatwg-node/disposablestack": "^0.0.6", + "@whatwg-node/promise-helpers": "^1.3.2", + "tslib": "^2.6.3" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/@whatwg-node/promise-helpers": { + "version": "1.3.2", + "extraneous": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.6.3" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/@whatwg-node/server": { + "version": "0.10.17", + "extraneous": true, + "inBundle": true, + "license": "MIT", + "dependencies": { + "@envelop/instrumentation": "^1.0.0", + "@whatwg-node/disposablestack": "^0.0.6", + "@whatwg-node/fetch": "^0.10.13", + "@whatwg-node/promise-helpers": "^1.3.2", + "tslib": "^2.6.3" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@comapeo/map-server/node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/@comapeo/map-server/node_modules/avvio": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/avvio/-/avvio-9.1.0.tgz", + "integrity": "sha512-fYASnYi600CsH/j9EQov7lECAniYiBFiiAtBNuZYLA2leLe9qOvZzqYHFjtIj6gD2VMoMLP14834LFWvr4IfDw==", + "license": "MIT", + "dependencies": { + "@fastify/error": "^4.0.0", + "fastq": "^1.17.1" + } + }, + "node_modules/@comapeo/map-server/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@comapeo/map-server/node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@comapeo/map-server/node_modules/cookie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/@comapeo/map-server/node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@comapeo/map-server/node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "license": "MIT" + }, + "node_modules/@comapeo/map-server/node_modules/fast-json-stringify": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-6.3.0.tgz", + "integrity": "sha512-oRCntNDY/329HJPlmdNLIdogNtt6Vyjb1WuT01Soss3slIdyUp8kAcDU3saQTOquEK8KFVfwIIF7FebxUAu+yA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "@fastify/merge-json-schemas": "^0.2.0", + "ajv": "^8.12.0", + "ajv-formats": "^3.0.1", + "fast-uri": "^3.0.0", + "json-schema-ref-resolver": "^3.0.0", + "rfdc": "^1.2.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/fastify": { + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/fastify/-/fastify-5.7.4.tgz", + "integrity": "sha512-e6l5NsRdaEP8rdD8VR0ErJASeyaRbzXYpmkrpr2SuvuMq6Si3lvsaVy5C+7gLanEkvjpMDzBXWE5HPeb/hgTxA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "@fastify/ajv-compiler": "^4.0.5", + "@fastify/error": "^4.0.0", + "@fastify/fast-json-stringify-compiler": "^5.0.0", + "@fastify/proxy-addr": "^5.0.0", + "abstract-logging": "^2.0.1", + "avvio": "^9.0.0", + "fast-json-stringify": "^6.0.0", + "find-my-way": "^9.0.0", + "light-my-request": "^6.0.0", + "pino": "^10.1.0", + "process-warning": "^5.0.0", + "rfdc": "^1.3.1", + "secure-json-parse": "^4.0.0", + "semver": "^7.6.0", + "toad-cache": "^3.7.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/fastify-plugin": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-5.1.0.tgz", + "integrity": "sha512-FAIDA8eovSt5qcDgcBvDuX/v0Cjz0ohGhENZ/wpc3y+oZCY2afZ9Baqql3g/lC+OHRnciQol4ww7tuthOb9idw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, + "node_modules/@comapeo/map-server/node_modules/find-my-way": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-9.4.0.tgz", + "integrity": "sha512-5Ye4vHsypZRYtS01ob/iwHzGRUDELlsoCftI/OZFhcLs1M0tkGPcXldE80TAZC5yYuJMBPJQQ43UHlqbJWiX2w==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-querystring": "^1.0.0", + "safe-regex2": "^5.0.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@comapeo/map-server/node_modules/glob": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.1.0.tgz", + "integrity": "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "license": "BlueOak-1.0.0", + "dependencies": { + "foreground-child": "^3.3.1", + "jackspeak": "^4.1.1", + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@comapeo/map-server/node_modules/is-interactive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", + "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@comapeo/map-server/node_modules/jackspeak": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.2.3.tgz", + "integrity": "sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^9.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@comapeo/map-server/node_modules/json-schema-ref-resolver": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-schema-ref-resolver/-/json-schema-ref-resolver-3.0.0.tgz", + "integrity": "sha512-hOrZIVL5jyYFjzk7+y7n5JDzGlU8rfWDuYyHwGa2WA8/pcmMHezp2xsVwxrebD/Q9t8Nc5DboieySDpCp4WG4A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/@comapeo/map-server/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/@comapeo/map-server/node_modules/light-my-request": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-6.6.0.tgz", + "integrity": "sha512-CHYbu8RtboSIoVsHZ6Ye4cj4Aw/yg2oAFimlF7mNvfDV192LR7nDiKtSIfCuLT7KokPSTn/9kfVLm5OGN0A28A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause", + "dependencies": { + "cookie": "^1.0.1", + "process-warning": "^4.0.0", + "set-cookie-parser": "^2.6.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/light-my-request/node_modules/process-warning": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-4.0.1.tgz", + "integrity": "sha512-3c2LzQ3rY9d0hc1emcsHhfT9Jwz0cChib/QN89oME2R451w5fy3f0afAhERFZAwrbDU43wk12d0ORBpDVME50Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, + "node_modules/@comapeo/map-server/node_modules/log-symbols": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-7.0.1.tgz", + "integrity": "sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==", + "license": "MIT", + "dependencies": { + "is-unicode-supported": "^2.0.0", + "yoctocolors": "^2.1.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@comapeo/map-server/node_modules/lru-cache": { + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", + "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@comapeo/map-server/node_modules/map-obj": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-5.0.2.tgz", + "integrity": "sha512-K6K2NgKnTXimT3779/4KxSvobxOtMmx1LBZ3NwRxT/MDIR3Br/fQ4Q+WCX5QxjyUR8zg5+RV9Tbf2c5pAWTD2A==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@comapeo/map-server/node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/minimatch": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", + "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.1" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@comapeo/map-server/node_modules/open": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", + "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", + "license": "MIT", + "dependencies": { + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "wsl-utils": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@comapeo/map-server/node_modules/ora": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-8.2.0.tgz", + "integrity": "sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==", + "license": "MIT", + "dependencies": { + "chalk": "^5.3.0", + "cli-cursor": "^5.0.0", + "cli-spinners": "^2.9.2", + "is-interactive": "^2.0.0", + "is-unicode-supported": "^2.0.0", + "log-symbols": "^6.0.0", + "stdin-discarder": "^0.2.2", + "string-width": "^7.2.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@comapeo/map-server/node_modules/ora/node_modules/log-symbols": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz", + "integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==", + "license": "MIT", + "dependencies": { + "chalk": "^5.3.0", + "is-unicode-supported": "^1.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@comapeo/map-server/node_modules/ora/node_modules/log-symbols/node_modules/is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@comapeo/map-server/node_modules/p-limit": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-6.2.0.tgz", + "integrity": "sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.1.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@comapeo/map-server/node_modules/path-scurry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", + "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@comapeo/map-server/node_modules/pino": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/pino/-/pino-10.3.1.tgz", + "integrity": "sha512-r34yH/GlQpKZbU1BvFFqOjhISRo1MNx1tWYsYvmj6KIRHSPMT2+yHOEb1SG6NMvRoHRF0a07kCOox/9yakl1vg==", + "license": "MIT", + "dependencies": { + "@pinojs/redact": "^0.4.0", + "atomic-sleep": "^1.0.0", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "^3.0.0", + "pino-std-serializers": "^7.0.0", + "process-warning": "^5.0.0", + "quick-format-unescaped": "^4.0.3", + "real-require": "^0.2.0", + "safe-stable-stringify": "^2.3.1", + "sonic-boom": "^4.0.1", + "thread-stream": "^4.0.0" + }, + "bin": { + "pino": "bin.js" + } + }, + "node_modules/@comapeo/map-server/node_modules/pino-abstract-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-3.0.0.tgz", + "integrity": "sha512-wlfUczU+n7Hy/Ha5j9a/gZNy7We5+cXp8YL+X+PG8S0KXxw7n/JXA3c46Y0zQznIJ83URJiwy7Lh56WLokNuxg==", + "license": "MIT", + "dependencies": { + "split2": "^4.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/pretty-bytes": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-6.1.1.tgz", + "integrity": "sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==", + "license": "MIT", + "engines": { + "node": "^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@comapeo/map-server/node_modules/process-warning": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-5.0.0.tgz", + "integrity": "sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, + "node_modules/@comapeo/map-server/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/ret": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.5.0.tgz", + "integrity": "sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/@comapeo/map-server/node_modules/safe-regex2": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-5.0.0.tgz", + "integrity": "sha512-YwJwe5a51WlK7KbOJREPdjNrpViQBI3p4T50lfwPuDhZnE3XGVTlGvi+aolc5+RvxDD6bnUmjVsU9n1eboLUYw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "ret": "~0.5.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/secure-json-parse": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-4.1.0.tgz", + "integrity": "sha512-l4KnYfEyqYJxDwlNVyRfO2E4NTHfMKAWdUuA8J0yve2Dz/E/PdBepY03RvyJpssIpRFwJoCD55wA+mEDs6ByWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/@comapeo/map-server/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@comapeo/map-server/node_modules/styled-map-package": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/styled-map-package/-/styled-map-package-4.0.1.tgz", + "integrity": "sha512-AC/WT3CvY2gadH7GB2/w2Z+V2sZ7m+9L0AayTXYYfkjbTq1RILlmyqWj9Z2FcABPoU8l+19x2QR1ND+7E9MBDA==", + "license": "MIT", + "dependencies": { + "@commander-js/extra-typings": "^12.1.0", + "@fastify/static": "^8.3.0", + "@inquirer/prompts": "^6.0.1", + "@mapbox/sphericalmercator": "^1.2.0", + "@maplibre/maplibre-gl-style-spec": "^20.3.1", + "@placemarkio/check-geojson": "^0.1.12", + "@turf/bbox": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@whatwg-node/server": "^0.10.17", + "ansi-diff": "^1.2.0", + "archiver": "^7.0.1", + "buffer-peek-stream": "^1.1.0", + "chalk": "^5.4.1", + "commander": "^12.1.0", + "fastify": "^5.6.2", + "filter-obj": "^6.1.0", + "into-stream": "^8.0.1", + "is-stream": "^4.0.1", + "itty-router": "^5.0.22", + "ky": "^1.7.5", + "log-symbols": "^7.0.0", + "map-obj": "^5.0.2", + "mbtiles-reader": "^1.0.0", + "open": "^10.1.0", + "ora": "^8.2.0", + "p-event": "^6.0.1", + "p-limit": "^6.2.0", + "pretty-bytes": "^6.1.1", + "pretty-ms": "^9.2.0", + "readable-stream": "^4.7.0", + "temp-dir": "^3.0.0", + "yauzl-promise": "^4.0.0", + "yocto-queue": "^1.1.1" + }, + "bin": { + "smp": "bin/smp.js", + "styled-map-package": "bin/smp.js" + } + }, + "node_modules/@comapeo/map-server/node_modules/temp-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", + "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==", + "license": "MIT", + "engines": { + "node": ">=14.16" + } + }, + "node_modules/@comapeo/map-server/node_modules/thread-stream": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-4.0.0.tgz", + "integrity": "sha512-4iMVL6HAINXWf1ZKZjIPcz5wYaOdPhtO8ATvZ+Xqp3BTdaqtAwQkNmKORqcIo5YkQqGXq5cwfswDwMqqQNrpJA==", + "license": "MIT", + "dependencies": { + "real-require": "^0.2.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@comapeo/map-server/node_modules/tslib": { + "version": "2.8.1", + "extraneous": true, + "inBundle": true, + "license": "0BSD" + }, + "node_modules/@comapeo/map-server/node_modules/urlpattern-polyfill": { + "version": "10.1.0", + "extraneous": true, + "inBundle": true, + "license": "MIT" + }, + "node_modules/@comapeo/map-server/node_modules/yocto-queue": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", + "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@comapeo/nodejs-mobile-react-native": { "version": "18.20.4-2", "resolved": "https://registry.npmjs.org/@comapeo/nodejs-mobile-react-native/-/nodejs-mobile-react-native-18.20.4-2.tgz", @@ -4365,6 +5384,22 @@ "fast-json-stringify": "^5.7.0" } }, + "node_modules/@fastify/forwarded": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@fastify/forwarded/-/forwarded-3.0.1.tgz", + "integrity": "sha512-JqDochHFqXs3C3Ml3gOY58zM7OqO9ENqPo0UqAjAjH8L01fRZqwX9iLeX34//kiJubF7r2ZQHtBRU36vONbLlw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, "node_modules/@fastify/merge-json-schemas": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/@fastify/merge-json-schemas/-/merge-json-schemas-0.1.1.tgz", @@ -4374,6 +5409,35 @@ "fast-deep-equal": "^3.1.3" } }, + "node_modules/@fastify/proxy-addr": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@fastify/proxy-addr/-/proxy-addr-5.1.0.tgz", + "integrity": "sha512-INS+6gh91cLUjB+PVHfu1UqcB76Sqtpyp7bnL+FYojhjygvOPA9ctiD/JDKsyD9Xgu4hUhCSJBPig/w7duNajw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "@fastify/forwarded": "^3.0.0", + "ipaddr.js": "^2.1.0" + } + }, + "node_modules/@fastify/proxy-addr/node_modules/ipaddr.js": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.3.0.tgz", + "integrity": "sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, "node_modules/@fastify/send": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@fastify/send/-/send-2.1.0.tgz", @@ -5049,9 +6113,9 @@ } }, "node_modules/@isaacs/brace-expansion": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", - "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.1.tgz", + "integrity": "sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ==", "license": "MIT", "dependencies": { "@isaacs/balanced-match": "^4.0.1" @@ -6203,6 +7267,12 @@ "node": ">=14" } }, + "node_modules/@pinojs/redact": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@pinojs/redact/-/redact-0.4.0.tgz", + "integrity": "sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg==", + "license": "MIT" + }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -11842,10 +12912,18 @@ } }, "node_modules/bare-events": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.4.tgz", - "integrity": "sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==", - "license": "Apache-2.0" + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz", + "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==", + "license": "Apache-2.0", + "peerDependencies": { + "bare-abort-controller": "*" + }, + "peerDependenciesMeta": { + "bare-abort-controller": { + "optional": true + } + } }, "node_modules/bare-fs": { "version": "4.1.2", @@ -12307,6 +13385,12 @@ "node": ">=8" } }, + "node_modules/browser-or-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/browser-or-node/-/browser-or-node-2.1.1.tgz", + "integrity": "sha512-8CVjaLJGuSKMVTxJ2DpBl5XnlNDiT4cQFeuCJJrvJmts9YrTZDizTX7PjC2s6W4x+MBGZeEY6dGMrF04/6Hgqg==", + "license": "MIT" + }, "node_modules/browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", @@ -14620,6 +15704,15 @@ "dev": true, "license": "MIT" }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/dereference-json-schema": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/dereference-json-schema/-/dereference-json-schema-0.2.1.tgz", @@ -16155,6 +17248,36 @@ "node": ">=0.8.x" } }, + "node_modules/events-universal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz", + "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==", + "license": "Apache-2.0", + "dependencies": { + "bare-events": "^2.7.0" + } + }, + "node_modules/eventsource-client": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/eventsource-client/-/eventsource-client-1.2.0.tgz", + "integrity": "sha512-kDI75RSzO3TwyG/K9w1ap8XwqSPcwi6jaMkNulfVeZmSeUM49U8kUzk1s+vKNt0tGrXgK47i+620Yasn1ccFiw==", + "license": "MIT", + "dependencies": { + "eventsource-parser": "^3.0.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/eventsource-parser": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.6.tgz", + "integrity": "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==", + "license": "MIT", + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/exec-async": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/exec-async/-/exec-async-2.2.0.tgz", @@ -16249,6 +17372,12 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/expect-type": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-0.15.0.tgz", + "integrity": "sha512-yWnriYB4e8G54M5/fAFj7rCIBiKs1HAACaY13kCz6Ku0dezjS9aMcfcdVK2X8Tv2tEV1BPz/wKfQ7WA4S/d8aA==", + "license": "Apache-2.0" + }, "node_modules/expect-webdriverio": { "version": "5.3.4", "resolved": "https://registry.npmjs.org/expect-webdriverio/-/expect-webdriverio-5.3.4.tgz", @@ -20410,6 +21539,12 @@ "node": ">=8" } }, + "node_modules/itty-router": { + "version": "5.0.22", + "resolved": "https://registry.npmjs.org/itty-router/-/itty-router-5.0.22.tgz", + "integrity": "sha512-9hmdGErWdYDOurGYxSbqLhy4EFReIwk71hMZTJ5b+zfa2zjMNV1ftFno2b8VjAQvX615gNB8Qxbl9JMRqHnIVA==", + "license": "MIT" + }, "node_modules/jackspeak": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", @@ -21910,9 +23045,9 @@ } }, "node_modules/ky": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/ky/-/ky-1.8.1.tgz", - "integrity": "sha512-7Bp3TpsE+L+TARSnnDpk3xg8Idi8RwSLdj6CMbNWoOARIrGrbuLGusV0dYwbZOm4bB3jHNxSw8Wk/ByDqJEnDw==", + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/ky/-/ky-1.14.3.tgz", + "integrity": "sha512-9zy9lkjac+TR1c2tG+mkNSVlyOpInnWdSMiue4F+kq8TwJSgv6o8jhLRg8Ho6SnZ9wOYUq/yozts9qQCfk7bIw==", "license": "MIT", "engines": { "node": ">=18" @@ -26126,6 +27261,33 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/p-mutex": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/p-mutex/-/p-mutex-0.1.0.tgz", + "integrity": "sha512-JXTGUNjI6eLzbtYGhFqmad8Tp5wDBsaGDwrvXuoRzIZ6EyKZr5jlNO9sFe83T6/K//lhyONS4ejCocvGNYJz7Q==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-mutex/node_modules/yocto-queue": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", + "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/p-queue": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-8.1.1.tgz", @@ -29117,6 +30279,35 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/run-time-assertions": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/run-time-assertions/-/run-time-assertions-1.5.2.tgz", + "integrity": "sha512-ccfwvjGuNU14cSSXLlmPRiqEgMfA7w3J2TViO79zMnzXGvE6FJ0dxnhIQGwe5r/vwySOJ4sqZksexo9wyAlA8g==", + "deprecated": "Use @augment-vir/assert instead.", + "license": "(MIT or CC0 1.0)", + "dependencies": { + "@augment-vir/common": "^29.3.0", + "expect-type": "~0.15.0", + "type-fest": "^4.22.0" + } + }, + "node_modules/run-time-assertions/node_modules/@augment-vir/common": { + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/@augment-vir/common/-/common-29.3.0.tgz", + "integrity": "sha512-k3OX35/576thmGUzQUBcCKGarb7ONBfiu07+iV2vxmjl7VoB1rOB0vu8WqgB1ceJq2EMLDPXY18hHpJ9WeTHXQ==", + "license": "MIT", + "dependencies": { + "browser-or-node": "^3.0.0", + "run-time-assertions": "^1.5.1", + "type-fest": "^4.21.0" + } + }, + "node_modules/run-time-assertions/node_modules/browser-or-node": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/browser-or-node/-/browser-or-node-3.0.0.tgz", + "integrity": "sha512-iczIdVJzGEYhP5DqQxYM9Hh7Ztpqqi+CXZpSmX8ALFs9ecXkQIeqRyM6TfxEfMVpwhl3dSuDvxdzzo9sUOIVBQ==", + "license": "MIT" + }, "node_modules/rw": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", @@ -29224,6 +30415,17 @@ "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", "license": "MIT" }, + "node_modules/secret-stream-http": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/secret-stream-http/-/secret-stream-http-1.0.1.tgz", + "integrity": "sha512-vfbvQ/jL7DxptsDqs2NvKqF5tWZ65oShV5IdmaH1+zRrNeV/vxZTf6Gh1Uml/1bCtou7m3jYmcCHCB+ZnHNrBw==", + "license": "MIT", + "dependencies": { + "@hyperswarm/secret-stream": "^6.8.1", + "streamx": "^2.22.1", + "undici": "^6.21.3" + } + }, "node_modules/secure-json-parse": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz", @@ -30136,16 +31338,14 @@ "license": "MIT" }, "node_modules/streamx": { - "version": "2.22.0", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.0.tgz", - "integrity": "sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw==", + "version": "2.23.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.23.0.tgz", + "integrity": "sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==", "license": "MIT", "dependencies": { + "events-universal": "^1.0.0", "fast-fifo": "^1.3.2", "text-decoder": "^1.1.0" - }, - "optionalDependencies": { - "bare-events": "^2.2.0" } }, "node_modules/strict-event-emitter": { @@ -31508,6 +32708,22 @@ "node": ">= 0.6" } }, + "node_modules/typebox": { + "version": "1.0.81", + "resolved": "https://registry.npmjs.org/typebox/-/typebox-1.0.81.tgz", + "integrity": "sha512-bCslZUmZESHhBn4kHDghzH2oo3qu8m2W89xDLxQHv/aPvY4i81Nd1jvijlBp9wSpsVytDSfSoosbiBAjgsNb2Q==", + "license": "MIT" + }, + "node_modules/typed-event-target": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/typed-event-target/-/typed-event-target-3.4.0.tgz", + "integrity": "sha512-BvSk33Dgo+kubQpbRqiI8A7C5obN0hRydWYya/LTZQoPTCpmB4zScNJSckuKBJDq62A/sCRlZN8ZHgSQxVAKqw==", + "license": "(MIT or CC0 1.0)", + "dependencies": { + "@augment-vir/common": "^26.2.0", + "run-time-assertions": "^1.1.0" + } + }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", @@ -32889,6 +34105,36 @@ } } }, + "node_modules/wsl-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", + "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", + "license": "MIT", + "dependencies": { + "is-wsl": "^3.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wsl-utils/node_modules/is-wsl": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "license": "MIT", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/xache": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/xache/-/xache-1.2.1.tgz", diff --git a/package.json b/package.json index 31083e3492..00adb49558 100644 --- a/package.json +++ b/package.json @@ -34,8 +34,8 @@ }, "dependencies": { "@bam.tech/react-native-image-resizer": "3.0.11", - "@comapeo/core-react": "7.2.0", - "@comapeo/ipc": "6.0.2", + "@comapeo/core-react": "file:comapeo-core-react-7.3.0-pre.1-MAP-SHARING.tgz", + "@comapeo/ipc": "file:comapeo-ipc-6.1.0-pre.0.tgz", "@comapeo/nodejs-mobile-react-native": "18.20.4-2", "@expo-google-fonts/rubik": "0.4.2", "@formatjs/intl-getcanonicallocales": "2.5.6", @@ -129,7 +129,6 @@ "@babel/core": "7.28.5", "@babel/preset-env": "7.28.5", "@babel/runtime": "7.28.4", - "babel-preset-expo": "54.0.9", "@comapeo/cloud": "0.3.0", "@comapeo/core": "5.2.1", "@comapeo/schema": "2.2.0", @@ -168,6 +167,7 @@ "babel-jest": "30.2.0", "babel-plugin-transform-import-meta": "2.3.3", "babel-plugin-transform-inline-environment-variables": "0.4.4", + "babel-preset-expo": "54.0.9", "date-fns": "4.1.0", "dotenv-cli": "11.0.0", "eslint": "9.39.2", diff --git a/scripts/build-backend.mjs b/scripts/build-backend.mjs index 301a9c12a0..c8e9b79a78 100755 --- a/scripts/build-backend.mjs +++ b/scripts/build-backend.mjs @@ -71,6 +71,10 @@ console.group('[BUILD]'); console.log('Installing deps...'); +await $$({ + cwd: nodejsAssetsBackendDirectory, +})`node --version`; + // The install / postinstall scripts for backend dependencies are currently all // for generating / downloading builds of native modules. // We don't need to run these scripts since we pull prebuilds in a later step. diff --git a/src/backend/package-lock.json b/src/backend/package-lock.json index 74a58ed21b..eacea835d8 100644 --- a/src/backend/package-lock.json +++ b/src/backend/package-lock.json @@ -12,7 +12,9 @@ "dependencies": { "@comapeo/core": "5.2.1", "@comapeo/default-categories": "1.0.0", - "@comapeo/ipc": "6.0.2", + "@comapeo/fallback-smp": "1.0.0", + "@comapeo/ipc": "file:../../comapeo-ipc-6.1.0-pre.0.tgz", + "@comapeo/map-server": "1.0.0-pre.6", "@sentry/node": "9.28.0", "@sentry/rollup-plugin": "^3.5.0", "debug": "^4.3.4", @@ -50,6 +52,17 @@ "node": ">=6.0.0" } }, + "node_modules/@augment-vir/common": { + "version": "26.4.0", + "resolved": "https://registry.npmjs.org/@augment-vir/common/-/common-26.4.0.tgz", + "integrity": "sha512-rQoLA+t3bbvs269KvZYKZ76WO7Ofp468mqahsI4RAvPjJaOJ/6lCo49HgvUjnFlv7DoEVbTMfHT3G3+VztNnsA==", + "license": "MIT", + "dependencies": { + "browser-or-node": "^2.1.1", + "run-time-assertions": "^1.0.0", + "type-fest": "^4.12.0" + } + }, "node_modules/@babel/code-frame": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", @@ -414,32 +427,810 @@ "integrity": "sha512-6wLTtBOdlwtYMyrynBq6ZQ7S1aVABXQSwR/1QENkFkc7WyLLs4wLd9ny7WfSUQdHn6E2zfvA7WfKH7R06Zy3gQ==", "license": "MIT" }, - "node_modules/@comapeo/geometry": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@comapeo/geometry/-/geometry-1.1.1.tgz", - "integrity": "sha512-MKnyzqhmpUUV5qCjUUDwUjuBx/ym9aizfOZ0h9+6SjQwCQa2kBRTN+Y9qDqteFSlJd0QMQRKpBmu+2OXJPypCQ==", + "node_modules/@comapeo/geometry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@comapeo/geometry/-/geometry-1.1.1.tgz", + "integrity": "sha512-MKnyzqhmpUUV5qCjUUDwUjuBx/ym9aizfOZ0h9+6SjQwCQa2kBRTN+Y9qDqteFSlJd0QMQRKpBmu+2OXJPypCQ==", + "license": "MIT", + "dependencies": { + "protobufjs": "^7.4.0" + } + }, + "node_modules/@comapeo/ipc": { + "version": "6.0.2", + "resolved": "file:../../comapeo-ipc-6.1.0-pre.0.tgz", + "integrity": "sha512-J7kH79ZRDZRgzb2sMz71USQFyPC2HJw2hxZSUUu30ET0hXS8kBgn1jr9Nl12KHjmBNSMAbf9U2i5C2Us/lYwjQ==", + "license": "MIT", + "dependencies": { + "@comapeo/map-server": "^1.0.0-pre.6", + "eventemitter3": "^5.0.1", + "p-defer": "^4.0.1", + "rpc-reflector": "^3.0.1" + }, + "engines": { + "node": ">=18.17.1" + }, + "peerDependencies": { + "@comapeo/core": "^5.0.0" + } + }, + "node_modules/@comapeo/map-server": { + "version": "1.0.0-pre.6", + "resolved": "https://registry.npmjs.org/@comapeo/map-server/-/map-server-1.0.0-pre.6.tgz", + "integrity": "sha512-4gZNkxT02kZuCW5pbpOkIr4xoNXeyV50iuwJ84ZUZwrDrcPmUafCFvfYWI62NQqGgxjafyWsbSoSvdBjO01pVA==", + "bundleDependencies": [ + "@whatwg-node/server" + ], + "license": "MIT", + "dependencies": { + "@whatwg-node/server": "^0.10.17", + "itty-router": "^5.0.22", + "p-defer": "^4.0.1", + "p-mutex": "^0.1.0", + "secret-stream-http": "^1.0.1", + "styled-map-package": "^4.0.1", + "typebox": "^1.0.61", + "typed-event-target": "^3.4.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/@envelop/instrumentation": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "@whatwg-node/promise-helpers": "^1.2.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/@fastify/accept-negotiator": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@fastify/accept-negotiator/-/accept-negotiator-2.0.1.tgz", + "integrity": "sha512-/c/TW2bO/v9JeEgoD/g1G5GxGeCF1Hafdf79WPmUlgYiBXummY0oX3VVq4yFkKKVBKDNlaDUYoab7g38RpPqCQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, + "node_modules/@comapeo/map-server/node_modules/@fastify/ajv-compiler": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-4.0.5.tgz", + "integrity": "sha512-KoWKW+MhvfTRWL4qrhUwAAZoaChluo0m0vbiJlGMt2GXvL4LVPQEjt8kSpHI3IBq5Rez8fg+XeH3cneztq+C7A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "ajv": "^8.12.0", + "ajv-formats": "^3.0.1", + "fast-uri": "^3.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/@fastify/busboy": { + "version": "3.2.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/@comapeo/map-server/node_modules/@fastify/error": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@fastify/error/-/error-4.2.0.tgz", + "integrity": "sha512-RSo3sVDXfHskiBZKBPRgnQTtIqpi/7zhJOEmAxCiBcM7d0uwdGdxLlsCaLzGs8v8NnxIRlfG0N51p5yFaOentQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, + "node_modules/@comapeo/map-server/node_modules/@fastify/fast-json-stringify-compiler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-5.0.3.tgz", + "integrity": "sha512-uik7yYHkLr6fxd8hJSZ8c+xF4WafPK+XzneQDPU+D10r5X19GW8lJcom2YijX2+qtFF1ENJlHXKFM9ouXNJYgQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "fast-json-stringify": "^6.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/@fastify/merge-json-schemas": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@fastify/merge-json-schemas/-/merge-json-schemas-0.2.1.tgz", + "integrity": "sha512-OA3KGBCy6KtIvLf8DINC5880o5iBlDX4SxzLQS8HorJAbqluzLRn80UXU0bxZn7UOFhFgpRJDasfwn9nG4FG4A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/@comapeo/map-server/node_modules/@fastify/send": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@fastify/send/-/send-4.1.0.tgz", + "integrity": "sha512-TMYeQLCBSy2TOFmV95hQWkiTYgC/SEx7vMdV+wnZVX4tt8VBLKzmH8vV9OzJehV0+XBfg+WxPMt5wp+JBUKsVw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "@lukeed/ms": "^2.0.2", + "escape-html": "~1.0.3", + "fast-decode-uri-component": "^1.0.1", + "http-errors": "^2.0.0", + "mime": "^3" + } + }, + "node_modules/@comapeo/map-server/node_modules/@fastify/static": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@fastify/static/-/static-8.3.0.tgz", + "integrity": "sha512-yKxviR5PH1OKNnisIzZKmgZSus0r2OZb8qCSbqmw34aolT4g3UlzYfeBRym+HJ1J471CR8e2ldNub4PubD1coA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "@fastify/accept-negotiator": "^2.0.0", + "@fastify/send": "^4.0.0", + "content-disposition": "^0.5.4", + "fastify-plugin": "^5.0.0", + "fastq": "^1.17.1", + "glob": "^11.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/@isaacs/cliui": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-9.0.0.tgz", + "integrity": "sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@comapeo/map-server/node_modules/@whatwg-node/disposablestack": { + "version": "0.0.6", + "inBundle": true, + "license": "MIT", + "dependencies": { + "@whatwg-node/promise-helpers": "^1.0.0", + "tslib": "^2.6.3" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/@whatwg-node/fetch": { + "version": "0.10.13", + "inBundle": true, + "license": "MIT", + "dependencies": { + "@whatwg-node/node-fetch": "^0.8.3", + "urlpattern-polyfill": "^10.0.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/@whatwg-node/node-fetch": { + "version": "0.8.4", + "inBundle": true, + "license": "MIT", + "dependencies": { + "@fastify/busboy": "^3.1.1", + "@whatwg-node/disposablestack": "^0.0.6", + "@whatwg-node/promise-helpers": "^1.3.2", + "tslib": "^2.6.3" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/@whatwg-node/promise-helpers": { + "version": "1.3.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.6.3" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/@whatwg-node/server": { + "version": "0.10.17", + "inBundle": true, + "license": "MIT", + "dependencies": { + "@envelop/instrumentation": "^1.0.0", + "@whatwg-node/disposablestack": "^0.0.6", + "@whatwg-node/fetch": "^0.10.13", + "@whatwg-node/promise-helpers": "^1.3.2", + "tslib": "^2.6.3" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/@comapeo/map-server/node_modules/avvio": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/avvio/-/avvio-9.1.0.tgz", + "integrity": "sha512-fYASnYi600CsH/j9EQov7lECAniYiBFiiAtBNuZYLA2leLe9qOvZzqYHFjtIj6gD2VMoMLP14834LFWvr4IfDw==", + "license": "MIT", + "dependencies": { + "@fastify/error": "^4.0.0", + "fastq": "^1.17.1" + } + }, + "node_modules/@comapeo/map-server/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/@comapeo/map-server/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@comapeo/map-server/node_modules/cookie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/@comapeo/map-server/node_modules/fast-json-stringify": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-6.3.0.tgz", + "integrity": "sha512-oRCntNDY/329HJPlmdNLIdogNtt6Vyjb1WuT01Soss3slIdyUp8kAcDU3saQTOquEK8KFVfwIIF7FebxUAu+yA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "@fastify/merge-json-schemas": "^0.2.0", + "ajv": "^8.12.0", + "ajv-formats": "^3.0.1", + "fast-uri": "^3.0.0", + "json-schema-ref-resolver": "^3.0.0", + "rfdc": "^1.2.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/@comapeo/map-server/node_modules/fastify": { + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/fastify/-/fastify-5.7.4.tgz", + "integrity": "sha512-e6l5NsRdaEP8rdD8VR0ErJASeyaRbzXYpmkrpr2SuvuMq6Si3lvsaVy5C+7gLanEkvjpMDzBXWE5HPeb/hgTxA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "@fastify/ajv-compiler": "^4.0.5", + "@fastify/error": "^4.0.0", + "@fastify/fast-json-stringify-compiler": "^5.0.0", + "@fastify/proxy-addr": "^5.0.0", + "abstract-logging": "^2.0.1", + "avvio": "^9.0.0", + "fast-json-stringify": "^6.0.0", + "find-my-way": "^9.0.0", + "light-my-request": "^6.0.0", + "pino": "^10.1.0", + "process-warning": "^5.0.0", + "rfdc": "^1.3.1", + "secure-json-parse": "^4.0.0", + "semver": "^7.6.0", + "toad-cache": "^3.7.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/fastify-plugin": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-5.1.0.tgz", + "integrity": "sha512-FAIDA8eovSt5qcDgcBvDuX/v0Cjz0ohGhENZ/wpc3y+oZCY2afZ9Baqql3g/lC+OHRnciQol4ww7tuthOb9idw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, + "node_modules/@comapeo/map-server/node_modules/find-my-way": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-9.4.0.tgz", + "integrity": "sha512-5Ye4vHsypZRYtS01ob/iwHzGRUDELlsoCftI/OZFhcLs1M0tkGPcXldE80TAZC5yYuJMBPJQQ43UHlqbJWiX2w==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-querystring": "^1.0.0", + "safe-regex2": "^5.0.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@comapeo/map-server/node_modules/glob": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.1.0.tgz", + "integrity": "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "license": "BlueOak-1.0.0", + "dependencies": { + "foreground-child": "^3.3.1", + "jackspeak": "^4.1.1", + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@comapeo/map-server/node_modules/is-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@comapeo/map-server/node_modules/jackspeak": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.2.3.tgz", + "integrity": "sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^9.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@comapeo/map-server/node_modules/json-schema-ref-resolver": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-schema-ref-resolver/-/json-schema-ref-resolver-3.0.0.tgz", + "integrity": "sha512-hOrZIVL5jyYFjzk7+y7n5JDzGlU8rfWDuYyHwGa2WA8/pcmMHezp2xsVwxrebD/Q9t8Nc5DboieySDpCp4WG4A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/@comapeo/map-server/node_modules/light-my-request": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-6.6.0.tgz", + "integrity": "sha512-CHYbu8RtboSIoVsHZ6Ye4cj4Aw/yg2oAFimlF7mNvfDV192LR7nDiKtSIfCuLT7KokPSTn/9kfVLm5OGN0A28A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause", + "dependencies": { + "cookie": "^1.0.1", + "process-warning": "^4.0.0", + "set-cookie-parser": "^2.6.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/light-my-request/node_modules/process-warning": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-4.0.1.tgz", + "integrity": "sha512-3c2LzQ3rY9d0hc1emcsHhfT9Jwz0cChib/QN89oME2R451w5fy3f0afAhERFZAwrbDU43wk12d0ORBpDVME50Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, + "node_modules/@comapeo/map-server/node_modules/lru-cache": { + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", + "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@comapeo/map-server/node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/minimatch": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", + "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.1" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@comapeo/map-server/node_modules/open": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", + "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", + "license": "MIT", + "dependencies": { + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "wsl-utils": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@comapeo/map-server/node_modules/path-scurry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", + "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@comapeo/map-server/node_modules/pino": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/pino/-/pino-10.3.1.tgz", + "integrity": "sha512-r34yH/GlQpKZbU1BvFFqOjhISRo1MNx1tWYsYvmj6KIRHSPMT2+yHOEb1SG6NMvRoHRF0a07kCOox/9yakl1vg==", + "license": "MIT", + "dependencies": { + "@pinojs/redact": "^0.4.0", + "atomic-sleep": "^1.0.0", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "^3.0.0", + "pino-std-serializers": "^7.0.0", + "process-warning": "^5.0.0", + "quick-format-unescaped": "^4.0.3", + "real-require": "^0.2.0", + "safe-stable-stringify": "^2.3.1", + "sonic-boom": "^4.0.1", + "thread-stream": "^4.0.0" + }, + "bin": { + "pino": "bin.js" + } + }, + "node_modules/@comapeo/map-server/node_modules/pino-abstract-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-3.0.0.tgz", + "integrity": "sha512-wlfUczU+n7Hy/Ha5j9a/gZNy7We5+cXp8YL+X+PG8S0KXxw7n/JXA3c46Y0zQznIJ83URJiwy7Lh56WLokNuxg==", + "license": "MIT", + "dependencies": { + "split2": "^4.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/process-warning": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-5.0.0.tgz", + "integrity": "sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, + "node_modules/@comapeo/map-server/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/ret": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.5.0.tgz", + "integrity": "sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/@comapeo/map-server/node_modules/safe-regex2": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-5.0.0.tgz", + "integrity": "sha512-YwJwe5a51WlK7KbOJREPdjNrpViQBI3p4T50lfwPuDhZnE3XGVTlGvi+aolc5+RvxDD6bnUmjVsU9n1eboLUYw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "ret": "~0.5.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/secure-json-parse": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-4.1.0.tgz", + "integrity": "sha512-l4KnYfEyqYJxDwlNVyRfO2E4NTHfMKAWdUuA8J0yve2Dz/E/PdBepY03RvyJpssIpRFwJoCD55wA+mEDs6ByWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/@comapeo/map-server/node_modules/styled-map-package": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/styled-map-package/-/styled-map-package-4.0.1.tgz", + "integrity": "sha512-AC/WT3CvY2gadH7GB2/w2Z+V2sZ7m+9L0AayTXYYfkjbTq1RILlmyqWj9Z2FcABPoU8l+19x2QR1ND+7E9MBDA==", "license": "MIT", "dependencies": { - "protobufjs": "^7.4.0" + "@commander-js/extra-typings": "^12.1.0", + "@fastify/static": "^8.3.0", + "@inquirer/prompts": "^6.0.1", + "@mapbox/sphericalmercator": "^1.2.0", + "@maplibre/maplibre-gl-style-spec": "^20.3.1", + "@placemarkio/check-geojson": "^0.1.12", + "@turf/bbox": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@whatwg-node/server": "^0.10.17", + "ansi-diff": "^1.2.0", + "archiver": "^7.0.1", + "buffer-peek-stream": "^1.1.0", + "chalk": "^5.4.1", + "commander": "^12.1.0", + "fastify": "^5.6.2", + "filter-obj": "^6.1.0", + "into-stream": "^8.0.1", + "is-stream": "^4.0.1", + "itty-router": "^5.0.22", + "ky": "^1.7.5", + "log-symbols": "^7.0.0", + "map-obj": "^5.0.2", + "mbtiles-reader": "^1.0.0", + "open": "^10.1.0", + "ora": "^8.2.0", + "p-event": "^6.0.1", + "p-limit": "^6.2.0", + "pretty-bytes": "^6.1.1", + "pretty-ms": "^9.2.0", + "readable-stream": "^4.7.0", + "temp-dir": "^3.0.0", + "yauzl-promise": "^4.0.0", + "yocto-queue": "^1.1.1" + }, + "bin": { + "smp": "bin/smp.js", + "styled-map-package": "bin/smp.js" } }, - "node_modules/@comapeo/ipc": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@comapeo/ipc/-/ipc-6.0.2.tgz", - "integrity": "sha512-uWJ1Klrpz9xTJqapcWLZ7f1WH7NHooo51KN8kR+XD+8UwsGJuSln274Mm094h7SyfWkSwUBIngT3zIS8yEw0wQ==", + "node_modules/@comapeo/map-server/node_modules/thread-stream": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-4.0.0.tgz", + "integrity": "sha512-4iMVL6HAINXWf1ZKZjIPcz5wYaOdPhtO8ATvZ+Xqp3BTdaqtAwQkNmKORqcIo5YkQqGXq5cwfswDwMqqQNrpJA==", "license": "MIT", "dependencies": { - "eventemitter3": "^5.0.1", - "p-defer": "^4.0.1", - "rpc-reflector": "^3.0.1" + "real-require": "^0.2.0" }, "engines": { - "node": ">=18.17.1" - }, - "peerDependencies": { - "@comapeo/core": "^5.0.0" + "node": ">=20" } }, + "node_modules/@comapeo/map-server/node_modules/tslib": { + "version": "2.8.1", + "inBundle": true, + "license": "0BSD" + }, + "node_modules/@comapeo/map-server/node_modules/urlpattern-polyfill": { + "version": "10.1.0", + "inBundle": true, + "license": "MIT" + }, "node_modules/@comapeo/schema": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@comapeo/schema/-/schema-2.2.0.tgz", @@ -969,6 +1760,22 @@ "fast-json-stringify": "^5.7.0" } }, + "node_modules/@fastify/forwarded": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@fastify/forwarded/-/forwarded-3.0.1.tgz", + "integrity": "sha512-JqDochHFqXs3C3Ml3gOY58zM7OqO9ENqPo0UqAjAjH8L01fRZqwX9iLeX34//kiJubF7r2ZQHtBRU36vONbLlw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, "node_modules/@fastify/merge-json-schemas": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/@fastify/merge-json-schemas/-/merge-json-schemas-0.1.1.tgz", @@ -978,6 +1785,35 @@ "fast-deep-equal": "^3.1.3" } }, + "node_modules/@fastify/proxy-addr": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@fastify/proxy-addr/-/proxy-addr-5.1.0.tgz", + "integrity": "sha512-INS+6gh91cLUjB+PVHfu1UqcB76Sqtpyp7bnL+FYojhjygvOPA9ctiD/JDKsyD9Xgu4hUhCSJBPig/w7duNajw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "@fastify/forwarded": "^3.0.0", + "ipaddr.js": "^2.1.0" + } + }, + "node_modules/@fastify/proxy-addr/node_modules/ipaddr.js": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.3.0.tgz", + "integrity": "sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, "node_modules/@fastify/send": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@fastify/send/-/send-2.1.0.tgz", @@ -1062,19 +1898,50 @@ } }, "node_modules/@hyperswarm/secret-stream": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/@hyperswarm/secret-stream/-/secret-stream-6.6.3.tgz", - "integrity": "sha512-F/EF5KLUqjkTNFof1K5dz57CwrwjSzG0XxZe2X9t/2/mG5iQ28yJIwNcVabkWS1Wk2ZB719piVGKk6YbwkJ0aQ==", + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/@hyperswarm/secret-stream/-/secret-stream-6.9.1.tgz", + "integrity": "sha512-xb0S5y3YJwBakD77JOGBHlBxdp63mHClZoXBYoLv+9wH8e054ESKlmQptWqjJK5dv5VMUIVYOJB4MaOpB0JdGw==", "license": "Apache-2.0", "dependencies": { "b4a": "^1.1.0", "hypercore-crypto": "^3.3.1", "noise-curve-ed": "^2.0.1", - "noise-handshake": "^3.0.2", + "noise-handshake": "^4.0.0", "sodium-secretstream": "^1.1.0", - "sodium-universal": "^4.0.0", + "sodium-universal": "^5.0.0", "streamx": "^2.14.0", - "timeout-refresh": "^2.0.0" + "timeout-refresh": "^2.0.0", + "unslab": "^1.3.0" + } + }, + "node_modules/@hyperswarm/secret-stream/node_modules/sodium-native": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/sodium-native/-/sodium-native-5.0.10.tgz", + "integrity": "sha512-UIw+0AbpCQRuTJF88JWrZomP4O+PXhlWvdopiAJOsUivTyHTf3korMyStxkZuPngSbBEtEfDdc4ewEd8/T4/lA==", + "license": "MIT", + "dependencies": { + "require-addon": "^1.1.0", + "which-runtime": "^1.2.1" + }, + "engines": { + "bare": ">=1.16.0" + } + }, + "node_modules/@hyperswarm/secret-stream/node_modules/sodium-universal": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/sodium-universal/-/sodium-universal-5.0.1.tgz", + "integrity": "sha512-rv+aH+tnKB5H0MAc2UadHShLMslpJsc4wjdnHRtiSIEYpOetCgu8MS4ExQRia+GL/MK3uuCyZPeEsi+J3h+Q+Q==", + "license": "MIT", + "dependencies": { + "sodium-native": "^5.0.1" + }, + "peerDependencies": { + "sodium-javascript": "~0.8.0" + }, + "peerDependenciesMeta": { + "sodium-javascript": { + "optional": true + } } }, "node_modules/@inquirer/checkbox": { @@ -1299,6 +2166,27 @@ "node": ">=18" } }, + "node_modules/@isaacs/balanced-match": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", + "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", + "license": "MIT", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@isaacs/brace-expansion": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.1.tgz", + "integrity": "sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ==", + "license": "MIT", + "dependencies": { + "@isaacs/balanced-match": "^4.0.1" + }, + "engines": { + "node": "20 || >=22" + } + }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -2342,6 +3230,12 @@ "@opentelemetry/api": "^1.1.0" } }, + "node_modules/@pinojs/redact": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@pinojs/redact/-/redact-0.4.0.tgz", + "integrity": "sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg==", + "license": "MIT" + }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -3620,10 +4514,18 @@ } }, "node_modules/bare-events": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.4.2.tgz", - "integrity": "sha512-qMKFd2qG/36aA4GwvKq8MxnPgCQAmBWmSyLWsJcbn8v03wvIPQ/hG1Ms8bPzndZxMDoHpxez5VOS+gC9Yi24/Q==", - "license": "Apache-2.0" + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz", + "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==", + "license": "Apache-2.0", + "peerDependencies": { + "bare-abort-controller": "*" + }, + "peerDependenciesMeta": { + "bare-abort-controller": { + "optional": true + } + } }, "node_modules/bare-fs": { "version": "2.3.5", @@ -3887,6 +4789,12 @@ "node": ">=8" } }, + "node_modules/browser-or-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/browser-or-node/-/browser-or-node-2.1.1.tgz", + "integrity": "sha512-8CVjaLJGuSKMVTxJ2DpBl5XnlNDiT4cQFeuCJJrvJmts9YrTZDizTX7PjC2s6W4x+MBGZeEY6dGMrF04/6Hgqg==", + "license": "MIT" + }, "node_modules/browserslist": { "version": "4.25.0", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.0.tgz", @@ -4811,6 +5719,15 @@ "node": ">= 0.8" } }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/detect-libc": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", @@ -5354,6 +6271,15 @@ "node": ">=0.8.x" } }, + "node_modules/events-universal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz", + "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==", + "license": "Apache-2.0", + "dependencies": { + "bare-events": "^2.7.0" + } + }, "node_modules/expand-template": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", @@ -5363,6 +6289,12 @@ "node": ">=6" } }, + "node_modules/expect-type": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-0.15.0.tgz", + "integrity": "sha512-yWnriYB4e8G54M5/fAFj7rCIBiKs1HAACaY13kCz6Ku0dezjS9aMcfcdVK2X8Tv2tEV1BPz/wKfQ7WA4S/d8aA==", + "license": "Apache-2.0" + }, "node_modules/external-editor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", @@ -6816,6 +7748,12 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/itty-router": { + "version": "5.0.22", + "resolved": "https://registry.npmjs.org/itty-router/-/itty-router-5.0.22.tgz", + "integrity": "sha512-9hmdGErWdYDOurGYxSbqLhy4EFReIwk71hMZTJ5b+zfa2zjMNV1ftFno2b8VjAQvX615gNB8Qxbl9JMRqHnIVA==", + "license": "MIT" + }, "node_modules/jackspeak": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", @@ -7388,14 +8326,44 @@ } }, "node_modules/noise-handshake": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/noise-handshake/-/noise-handshake-3.1.0.tgz", - "integrity": "sha512-0S1qkUvMbTvZCfgr/vSkVT84YyvI4Q0OLwSc5BFxVmjaePrxAwVeXeJDY3A7N/7+qj95gZ15LaNoP9ZnBXH5Lw==", - "license": "ISC", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/noise-handshake/-/noise-handshake-4.2.0.tgz", + "integrity": "sha512-9O/VTNX/E2/AToyMTTDU0J/4WhaXMTdqc2DHs9vf+snoZ0cenSBq0dNYTVV1snYYEkmo6QeRrYMxtqtoYnY+LA==", + "license": "Apache-2.0", "dependencies": { "b4a": "^1.1.0", "nanoassert": "^2.0.0", - "sodium-universal": "^4.0.0" + "sodium-universal": "^5.0.0" + } + }, + "node_modules/noise-handshake/node_modules/sodium-native": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/sodium-native/-/sodium-native-5.0.10.tgz", + "integrity": "sha512-UIw+0AbpCQRuTJF88JWrZomP4O+PXhlWvdopiAJOsUivTyHTf3korMyStxkZuPngSbBEtEfDdc4ewEd8/T4/lA==", + "license": "MIT", + "dependencies": { + "require-addon": "^1.1.0", + "which-runtime": "^1.2.1" + }, + "engines": { + "bare": ">=1.16.0" + } + }, + "node_modules/noise-handshake/node_modules/sodium-universal": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/sodium-universal/-/sodium-universal-5.0.1.tgz", + "integrity": "sha512-rv+aH+tnKB5H0MAc2UadHShLMslpJsc4wjdnHRtiSIEYpOetCgu8MS4ExQRia+GL/MK3uuCyZPeEsi+J3h+Q+Q==", + "license": "MIT", + "dependencies": { + "sodium-native": "^5.0.1" + }, + "peerDependencies": { + "sodium-javascript": "~0.8.0" + }, + "peerDependenciesMeta": { + "sodium-javascript": { + "optional": true + } } }, "node_modules/normalize-package-data": { @@ -7903,6 +8871,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/p-mutex": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/p-mutex/-/p-mutex-0.1.0.tgz", + "integrity": "sha512-JXTGUNjI6eLzbtYGhFqmad8Tp5wDBsaGDwrvXuoRzIZ6EyKZr5jlNO9sFe83T6/K//lhyONS4ejCocvGNYJz7Q==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/p-queue": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-8.1.1.tgz", @@ -8930,6 +9913,35 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/run-time-assertions": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/run-time-assertions/-/run-time-assertions-1.5.2.tgz", + "integrity": "sha512-ccfwvjGuNU14cSSXLlmPRiqEgMfA7w3J2TViO79zMnzXGvE6FJ0dxnhIQGwe5r/vwySOJ4sqZksexo9wyAlA8g==", + "deprecated": "Use @augment-vir/assert instead.", + "license": "(MIT or CC0 1.0)", + "dependencies": { + "@augment-vir/common": "^29.3.0", + "expect-type": "~0.15.0", + "type-fest": "^4.22.0" + } + }, + "node_modules/run-time-assertions/node_modules/@augment-vir/common": { + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/@augment-vir/common/-/common-29.3.0.tgz", + "integrity": "sha512-k3OX35/576thmGUzQUBcCKGarb7ONBfiu07+iV2vxmjl7VoB1rOB0vu8WqgB1ceJq2EMLDPXY18hHpJ9WeTHXQ==", + "license": "MIT", + "dependencies": { + "browser-or-node": "^3.0.0", + "run-time-assertions": "^1.5.1", + "type-fest": "^4.21.0" + } + }, + "node_modules/run-time-assertions/node_modules/browser-or-node": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/browser-or-node/-/browser-or-node-3.0.0.tgz", + "integrity": "sha512-iczIdVJzGEYhP5DqQxYM9Hh7Ztpqqi+CXZpSmX8ALFs9ecXkQIeqRyM6TfxEfMVpwhl3dSuDvxdzzo9sUOIVBQ==", + "license": "MIT" + }, "node_modules/rw": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", @@ -9049,6 +10061,17 @@ "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", "license": "ISC" }, + "node_modules/secret-stream-http": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/secret-stream-http/-/secret-stream-http-1.0.1.tgz", + "integrity": "sha512-vfbvQ/jL7DxptsDqs2NvKqF5tWZ65oShV5IdmaH1+zRrNeV/vxZTf6Gh1Uml/1bCtou7m3jYmcCHCB+ZnHNrBw==", + "license": "MIT", + "dependencies": { + "@hyperswarm/secret-stream": "^6.8.1", + "streamx": "^2.22.1", + "undici": "^6.21.3" + } + }, "node_modules/secure-json-parse": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz", @@ -9511,17 +10534,14 @@ } }, "node_modules/streamx": { - "version": "2.20.1", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.20.1.tgz", - "integrity": "sha512-uTa0mU6WUC65iUvzKH4X9hEdvSW7rbPxPtwfWiLMSj3qTdQbAiUboZTxauKfpFuGIGa1C2BYijZ7wgdUXICJhA==", + "version": "2.23.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.23.0.tgz", + "integrity": "sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==", "license": "MIT", "dependencies": { + "events-universal": "^1.0.0", "fast-fifo": "^1.3.2", - "queue-tick": "^1.0.1", "text-decoder": "^1.1.0" - }, - "optionalDependencies": { - "bare-events": "^2.2.0" } }, "node_modules/string_decoder": { @@ -10118,6 +11138,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/typebox": { + "version": "1.0.81", + "resolved": "https://registry.npmjs.org/typebox/-/typebox-1.0.81.tgz", + "integrity": "sha512-bCslZUmZESHhBn4kHDghzH2oo3qu8m2W89xDLxQHv/aPvY4i81Nd1jvijlBp9wSpsVytDSfSoosbiBAjgsNb2Q==", + "license": "MIT" + }, "node_modules/typed-array-buffer": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", @@ -10192,6 +11218,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/typed-event-target": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/typed-event-target/-/typed-event-target-3.4.0.tgz", + "integrity": "sha512-BvSk33Dgo+kubQpbRqiI8A7C5obN0hRydWYya/LTZQoPTCpmB4zScNJSckuKBJDq62A/sCRlZN8ZHgSQxVAKqw==", + "license": "(MIT or CC0 1.0)", + "dependencies": { + "@augment-vir/common": "^26.2.0", + "run-time-assertions": "^1.1.0" + } + }, "node_modules/typescript": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", @@ -10242,9 +11278,9 @@ } }, "node_modules/undici": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.8.tgz", - "integrity": "sha512-U8uCCl2x9TK3WANvmBavymRzxbfFYG+tAu+fgx3zxQy3qdagQqBLwJVrdyO1TBfUXvfKveMKJZhpvUYoOjM+4g==", + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.23.0.tgz", + "integrity": "sha512-VfQPToRA5FZs/qJxLIinmU59u0r7LXqoJkCzinq3ckNJp3vKEh7jTWN589YQ5+aoAC/TGRLyJLCPKcLQbM8r9g==", "license": "MIT", "engines": { "node": ">=18.17" @@ -10507,8 +11543,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/which-runtime/-/which-runtime-1.2.1.tgz", "integrity": "sha512-8feIHccQFH/whiA1fD1b4c5+Q7T4ry1g1oHYc2mHnFh81tTQFsCvy3zhS2geUapkFAVBddUT/AM1a3rbqJweFg==", - "license": "Apache-2.0", - "optional": true + "license": "Apache-2.0" }, "node_modules/which-typed-array": { "version": "1.1.19", @@ -10629,6 +11664,36 @@ } } }, + "node_modules/wsl-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", + "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", + "license": "MIT", + "dependencies": { + "is-wsl": "^3.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wsl-utils/node_modules/is-wsl": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "license": "MIT", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/xache": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/xache/-/xache-1.2.1.tgz", diff --git a/src/backend/package.json b/src/backend/package.json index 1b2e39ebe3..c697d3c8a1 100644 --- a/src/backend/package.json +++ b/src/backend/package.json @@ -15,7 +15,9 @@ "dependencies": { "@comapeo/core": "5.2.1", "@comapeo/default-categories": "1.0.0", - "@comapeo/ipc": "6.0.2", + "@comapeo/fallback-smp": "1.0.0", + "@comapeo/ipc": "file:../../comapeo-ipc-6.1.0-pre.0.tgz", + "@comapeo/map-server": "1.0.0-pre.6", "@sentry/node": "9.28.0", "@sentry/rollup-plugin": "^3.5.0", "debug": "^4.3.4", diff --git a/src/backend/src/app.js b/src/backend/src/app.js index 1e95d99166..2a001e4359 100644 --- a/src/backend/src/app.js +++ b/src/backend/src/app.js @@ -3,7 +3,9 @@ import { join } from 'path' import { mkdirSync } from 'fs' import { createRequire } from 'module' import { MapeoManager } from '@comapeo/core' -import { createMapeoServer } from '@comapeo/ipc/server.js' +import { createMapeoServer, createAppRpcServer } from '@comapeo/ipc/server.js' +import { createServer as createMapServer } from '@comapeo/map-server' +import { KeyManager } from '@mapeo/crypto' import Fastify from 'fastify' import * as Sentry from '@sentry/node' @@ -11,6 +13,8 @@ import MessagePortLike from './message-port-like.js' import { ServerStatus } from './status.js' const require = createRequire(import.meta.url) +export const DEFAULT_FALLBACK_MAP_FILE_PATH = + require.resolve('@comapeo/fallback-smp') /** @type {import('../types/rn-bridge.js')} */ const rnBridge = require('rn-bridge') @@ -89,6 +93,16 @@ export async function init({ defaultOnlineStyleUrl: DEFAULT_ONLINE_MAP_STYLE_URL, customMapPath: join(customMapsDir, DEFAULT_CUSTOM_MAP_FILE_NAME), }) + const { publicKey, secretKey } = new KeyManager(rootKey).getIdentityKeypair() + const mapServer = createMapServer({ + defaultOnlineStyleUrl: DEFAULT_ONLINE_MAP_STYLE_URL, + fallbackMapPath: DEFAULT_FALLBACK_MAP_FILE_PATH, + customMapPath: join(customMapsDir, DEFAULT_CUSTOM_MAP_FILE_NAME), + keyPair: { + publicKey: new Uint8Array(publicKey), + secretKey: new Uint8Array(secretKey), + }, + }) // Don't await, methods that use the server will await this internally // Server is listening on loopback only, so will not be accessible from other devices on the network @@ -142,6 +156,7 @@ export async function init({ ) }, }) + createAppRpcServer({ mapServer }, messagePort) messagePort.start() serverStatus.setState('STARTED') diff --git a/src/frontend/App.tsx b/src/frontend/App.tsx index d705de6726..7f97987c74 100644 --- a/src/frontend/App.tsx +++ b/src/frontend/App.tsx @@ -44,6 +44,7 @@ import {Loading} from './sharedComponents/Loading.tsx'; import {createEarlyAccessStore} from './contexts/EarlyAccessContext.tsx'; import {FatalError} from './screens/FatalError.tsx'; import {FatalErrorUntranslated} from './screens/FatalErrorUntranslated.tsx'; +import {createAppRpc} from './lib/createAppRpc.ts'; type SentryEnvironment = 'development' | 'qa' | 'production'; @@ -108,6 +109,7 @@ const appDiagnosticMetrics = new AppDiagnosticMetrics({ const deviceDiagnosticMetrics = new DeviceDiagnosticMetrics(); const serverStateStore = createServerStateStore(); const mapeoApi = createMapeoApi({serverStateStore}); +const appRpc = createAppRpc({serverStateStore}); const localDiscoveryController = createLocalDiscoveryController(mapeoApi); localDiscoveryController.start(); @@ -233,6 +235,7 @@ const App = () => { queryClient={queryClient} localDiscoveryController={localDiscoveryController} mapeoApi={mapeoApi} + appRpc={appRpc} persistedDrafObservationStore={persistedDraftObservationStore} trackStore={persistedTrackStore} securityStore={persistedSecurityStore} diff --git a/src/frontend/AppNavigator.tsx b/src/frontend/AppNavigator.tsx index 3a1f3288c2..b4f86196fa 100644 --- a/src/frontend/AppNavigator.tsx +++ b/src/frontend/AppNavigator.tsx @@ -6,7 +6,6 @@ import * as React from 'react'; import * as SplashScreen from 'expo-splash-screen'; import {type AppStackParamsList} from './sharedTypes/navigation'; -import {useSetUpInvitesListeners} from '@comapeo/core-react'; import {RootStackNavigator} from './Navigation/Stack'; import type Sentry from '@sentry/react-native'; import {PostHogProvider} from 'posthog-react-native'; @@ -23,7 +22,6 @@ export const AppNavigator = ({ }) => { const containerRef = React.useRef>(null); - useSetUpInvitesListeners(); if (permissionAsked) { SplashScreen.hide(); diff --git a/src/frontend/Navigation/Stack/AppScreens.tsx b/src/frontend/Navigation/Stack/AppScreens.tsx index dec53f8159..30e74d88e6 100644 --- a/src/frontend/Navigation/Stack/AppScreens.tsx +++ b/src/frontend/Navigation/Stack/AppScreens.tsx @@ -141,6 +141,7 @@ import {WhatsIncludedBottomSheet} from '../../screens/RemoteArchive/WhatsInclude import {MapAddedBottomSheet} from '../../screens/BackgroundMaps/MapAddedBottomSheet.tsx'; import {DeleteCustomMapBottomSheet} from '../../screens/BackgroundMaps/DeleteCustomMapBottomSheet.tsx'; import {ConfirmDiscardTrackBottomSheet} from '../../screens/SaveTrack/ConfirmDiscardTrackBottomSheet.tsx'; +import {MapSharing} from '../../screens/MapSharing.tsx'; export const TAB_BAR_HEIGHT = 70; @@ -159,6 +160,7 @@ export const createAppScreens = ({ options={{headerShown: false}} component={HomeTabs} /> + ; mapeoApi: MapeoClientApi; + appRpc: AppRpcApi; persistedDrafObservationStore: DraftObservationStore; trackStore: TrackStore; securityStore: SecurityStore; @@ -70,6 +73,7 @@ export const AppProviders = ({ children, localDiscoveryController, mapeoApi, + appRpc, persistedDrafObservationStore, trackStore, securityStore, @@ -83,6 +87,11 @@ export const AppProviders = ({ earlyAccessStore, appUsageStatsStore, }: AppProvidersProps) => { + const mapServerListenPromise = appRpc.mapServer.listen(); + const getMapServerBaseUrl = async () => { + const {localPort} = await mapServerListenPromise; + return new URL(`http://127.0.0.1:${localPort}/`); + }; return ( @@ -100,18 +109,22 @@ export const AppProviders = ({ - - - - {children} - - - + + + + + {children} + + + + diff --git a/src/frontend/lib/createAppRpc.ts b/src/frontend/lib/createAppRpc.ts new file mode 100644 index 0000000000..1bc810b13d --- /dev/null +++ b/src/frontend/lib/createAppRpc.ts @@ -0,0 +1,14 @@ +import {createAppRpcClient} from '@comapeo/ipc/client.js'; +import {MessagePortLike} from './MessagePortLike.ts'; +import type {ServerStateStore} from './ServerStateStore.ts'; + +export function createAppRpc({ + serverStateStore, +}: { + serverStateStore: ServerStateStore; +}) { + const messagePort = new MessagePortLike({serverStateStore}); + const appRpc = createAppRpcClient(messagePort, {timeout: Infinity}); + messagePort.start(); + return appRpc; +} diff --git a/src/frontend/screens/MapSharing.tsx b/src/frontend/screens/MapSharing.tsx new file mode 100644 index 0000000000..bafda41596 --- /dev/null +++ b/src/frontend/screens/MapSharing.tsx @@ -0,0 +1,12 @@ +import {useManyReceivedMapShares} from '@comapeo/core-react'; +import React from 'react'; +import {Text, View} from 'react-native'; + +export const MapSharing = () => { + const mapShares = useManyReceivedMapShares(); + return ( + + Map Sharing Screen {mapShares.length} + + ); +}; diff --git a/src/frontend/sharedTypes/navigation.ts b/src/frontend/sharedTypes/navigation.ts index 1fdc045d26..92689980cf 100644 --- a/src/frontend/sharedTypes/navigation.ts +++ b/src/frontend/sharedTypes/navigation.ts @@ -50,6 +50,7 @@ export type EarlyOnlyParam = {readonly isEarlyAdopter: true}; export type RootStackParamsList = { Home: NavigatorScreenParams; + MapSharing: undefined; GpsModal: undefined; Settings: undefined; Config: undefined; From 9dcffb0b64935b553207e1e68ce15c0a06400ece Mon Sep 17 00:00:00 2001 From: Cindy Green Date: Thu, 12 Feb 2026 10:05:58 -0500 Subject: [PATCH 02/72] First pass attempt to incorporate map server api. Not working so far. --- comapeo-core-react-7.2.0.tgz | Bin 0 -> 60576 bytes messages/en.json | 9 + package-lock.json | 1291 ++++++++++++++++- package.json | 9 +- src/backend/package-lock.json | 1192 ++++++++++++++- src/backend/package.json | 3 +- src/frontend/AppNavigator.tsx | 2 - src/frontend/Navigation/Stack/AppScreens.tsx | 6 + src/frontend/contexts/AppProviders.tsx | 55 +- .../screens/BackgroundMaps/BackgroundMaps.tsx | 3 +- .../BackgroundMaps/WaitingForMapAccept.tsx | 126 ++ .../sharedComponents/SelectDevice.tsx | 28 +- src/frontend/sharedTypes/navigation.ts | 3 + 13 files changed, 2615 insertions(+), 112 deletions(-) create mode 100644 comapeo-core-react-7.2.0.tgz create mode 100644 src/frontend/screens/BackgroundMaps/WaitingForMapAccept.tsx diff --git a/comapeo-core-react-7.2.0.tgz b/comapeo-core-react-7.2.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..8636bd4b140ec9dad26f95bc5bd216b13a868d8e GIT binary patch literal 60576 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 FzW^vEAS?g? literal 0 HcmV?d00001 diff --git a/messages/en.json b/messages/en.json index c872275c18..8d50a2a2f1 100644 --- a/messages/en.json +++ b/messages/en.json @@ -1953,6 +1953,15 @@ "screens.Settings.MapManagement.BackgroundMaps.sendMap": { "message": "Send Map" }, + "screens.Settings.MapManagement.WaitingForMapToAccept.cancel": { + "message": "Cancel" + }, + "screens.Settings.MapManagement.WaitingForMapToAccept.timerMessage": { + "message": "Map sent {time}s ago" + }, + "screens.Settings.MapManagement.WaitingForMapToAccept.waitingMessage": { + "message": "Waiting for Device to Accept Map" + }, "screens.Settings.NameDefaultProjectIntro.description": { "message": "Invite devices to a new project with all your observations." }, diff --git a/package-lock.json b/package-lock.json index 02ac28b54f..7fdfff1905 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,8 +10,9 @@ "hasInstallScript": true, "dependencies": { "@bam.tech/react-native-image-resizer": "3.0.11", - "@comapeo/core-react": "7.2.0", + "@comapeo/core-react": "file:comapeo-core-react-7.2.0.tgz", "@comapeo/ipc": "6.0.2", + "@comapeo/map-server": "^1.0.0-pre.6", "@comapeo/nodejs-mobile-react-native": "18.20.4-2", "@expo-google-fonts/rubik": "0.4.2", "@formatjs/intl-getcanonicallocales": "2.5.6", @@ -41,6 +42,7 @@ "buffer": "6.0.3", "cheap-ruler": "4.0.0", "eventemitter3": "5.0.1", + "eventsource-client": "1.2.0", "expo": "54.0.31", "expo-application": "7.0.8", "expo-asset": "12.0.12", @@ -66,6 +68,7 @@ "fs-extra": "11.3.2", "geojson": "0.5.0", "geojson-geometries-lookup": "0.5.0", + "ky": "1.14.2", "lodash.isequal": "4.5.0", "map-obj": "6.0.0", "nanoid": "5.1.6", @@ -106,7 +109,7 @@ "@babel/preset-env": "7.28.5", "@babel/runtime": "7.28.4", "@comapeo/cloud": "0.3.0", - "@comapeo/core": "5.2.1", + "@comapeo/core": "5.4.0", "@comapeo/schema": "2.2.0", "@digidem/types": "2.3.0", "@eslint-react/eslint-plugin": "1.52.2", @@ -188,6 +191,17 @@ } } }, + "node_modules/@augment-vir/common": { + "version": "26.4.0", + "resolved": "https://registry.npmjs.org/@augment-vir/common/-/common-26.4.0.tgz", + "integrity": "sha512-rQoLA+t3bbvs269KvZYKZ76WO7Ofp468mqahsI4RAvPjJaOJ/6lCo49HgvUjnFlv7DoEVbTMfHT3G3+VztNnsA==", + "license": "MIT", + "dependencies": { + "browser-or-node": "^2.1.1", + "run-time-assertions": "^1.0.0", + "type-fest": "^4.12.0" + } + }, "node_modules/@babel/code-frame": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.28.6.tgz", @@ -2362,7 +2376,6 @@ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", "license": "MIT", - "peer": true, "engines": { "node": ">=6.9.0" } @@ -2553,9 +2566,9 @@ "license": "MIT" }, "node_modules/@comapeo/core": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@comapeo/core/-/core-5.2.1.tgz", - "integrity": "sha512-W+THNXlKjutzlmtNxQR203YVUd9roHlna4Z3n8E64qxleBaaMSFKPpRPMHPhlYgALCP6J61B9J3rqnJEFnZLtg==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@comapeo/core/-/core-5.4.0.tgz", + "integrity": "sha512-2pu/oDzpxGItvlYKwXpJHdHvltXNMZGHrL5n5v/i5ce3uMciAa9XPhCgJHOGUhjgldl+oB/xTGGw1p+/AbEAGg==", "license": "MIT", "peer": true, "dependencies": { @@ -2581,7 +2594,7 @@ "debug": "^4.3.4", "dot-prop": "^9.0.0", "dot-prop-extra": "^10.2.0", - "drizzle-orm": "^1.0.0-beta.1-ac4ce44", + "drizzle-orm": "1.0.0-beta.1-fd8bfcc", "ensure-error": "^4.0.0", "fastify": "^4.0.0", "fastify-plugin": "^4.5.1", @@ -2623,17 +2636,32 @@ }, "node_modules/@comapeo/core-react": { "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@comapeo/core-react/-/core-react-7.2.0.tgz", - "integrity": "sha512-XewUU9BuxUK06QA7v2A0jUE5EAwV2L/UYBFgYjV6IZrhce3og6VPEYGzfa5fb23EGpvs4Xzv8NBperU/8uxsTg==", + "resolved": "file:comapeo-core-react-7.2.0.tgz", + "integrity": "sha512-NhFLG2DesoOeODmMlfBgaR/mYkUON4ZFSBZwoG9qKQhULXoqNVIONrug5RE2reTlzCZHD6UV0oLB6nphVXkyYA==", "license": "MIT", + "dependencies": { + "ensure-error": "5.0.0" + }, "peerDependencies": { - "@comapeo/core": "^5.1.1", - "@comapeo/ipc": "^6.0.0", + "@comapeo/core": "^5.2.1", + "@comapeo/ipc": "^6.0.2", "@comapeo/schema": "*", "@tanstack/react-query": "^5", "react": "^18 || ^19" } }, + "node_modules/@comapeo/core-react/node_modules/ensure-error": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ensure-error/-/ensure-error-5.0.0.tgz", + "integrity": "sha512-3q+rE6t5VUdbjmgJCr0EOX4tiX1cIyymG/NrAuXQW88qM8ewoi1sA9/MU3+Yz5ygwVsPuoSKrlkuy+aZNCYncg==", + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@comapeo/core/node_modules/@mapeo/sqlite-indexer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@mapeo/sqlite-indexer/-/sqlite-indexer-1.0.2.tgz", @@ -2833,6 +2861,988 @@ "@comapeo/core": "^5.0.0" } }, + "node_modules/@comapeo/map-server": { + "version": "1.0.0-pre.6", + "resolved": "https://registry.npmjs.org/@comapeo/map-server/-/map-server-1.0.0-pre.6.tgz", + "integrity": "sha512-4gZNkxT02kZuCW5pbpOkIr4xoNXeyV50iuwJ84ZUZwrDrcPmUafCFvfYWI62NQqGgxjafyWsbSoSvdBjO01pVA==", + "bundleDependencies": [ + "@whatwg-node/server" + ], + "license": "MIT", + "dependencies": { + "@whatwg-node/server": "^0.10.17", + "itty-router": "^5.0.22", + "p-defer": "^4.0.1", + "p-mutex": "^0.1.0", + "secret-stream-http": "^1.0.1", + "styled-map-package": "^4.0.1", + "typebox": "^1.0.61", + "typed-event-target": "^3.4.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/@commander-js/extra-typings": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/@commander-js/extra-typings/-/extra-typings-12.1.0.tgz", + "integrity": "sha512-wf/lwQvWAA0goIghcb91dQYpkLBcyhOhQNqG/VgWhnKzgt+UOMvra7EX/2fv70arm5RW+PUHoQHHDa6/p77Eqg==", + "license": "MIT", + "peerDependencies": { + "commander": "~12.1.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/@envelop/instrumentation": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "@whatwg-node/promise-helpers": "^1.2.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/@fastify/accept-negotiator": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@fastify/accept-negotiator/-/accept-negotiator-2.0.1.tgz", + "integrity": "sha512-/c/TW2bO/v9JeEgoD/g1G5GxGeCF1Hafdf79WPmUlgYiBXummY0oX3VVq4yFkKKVBKDNlaDUYoab7g38RpPqCQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, + "node_modules/@comapeo/map-server/node_modules/@fastify/ajv-compiler": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-4.0.5.tgz", + "integrity": "sha512-KoWKW+MhvfTRWL4qrhUwAAZoaChluo0m0vbiJlGMt2GXvL4LVPQEjt8kSpHI3IBq5Rez8fg+XeH3cneztq+C7A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "ajv": "^8.12.0", + "ajv-formats": "^3.0.1", + "fast-uri": "^3.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/@fastify/busboy": { + "version": "3.2.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/@comapeo/map-server/node_modules/@fastify/error": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@fastify/error/-/error-4.2.0.tgz", + "integrity": "sha512-RSo3sVDXfHskiBZKBPRgnQTtIqpi/7zhJOEmAxCiBcM7d0uwdGdxLlsCaLzGs8v8NnxIRlfG0N51p5yFaOentQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, + "node_modules/@comapeo/map-server/node_modules/@fastify/fast-json-stringify-compiler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-5.0.3.tgz", + "integrity": "sha512-uik7yYHkLr6fxd8hJSZ8c+xF4WafPK+XzneQDPU+D10r5X19GW8lJcom2YijX2+qtFF1ENJlHXKFM9ouXNJYgQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "fast-json-stringify": "^6.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/@fastify/merge-json-schemas": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@fastify/merge-json-schemas/-/merge-json-schemas-0.2.1.tgz", + "integrity": "sha512-OA3KGBCy6KtIvLf8DINC5880o5iBlDX4SxzLQS8HorJAbqluzLRn80UXU0bxZn7UOFhFgpRJDasfwn9nG4FG4A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/@comapeo/map-server/node_modules/@fastify/send": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@fastify/send/-/send-4.1.0.tgz", + "integrity": "sha512-TMYeQLCBSy2TOFmV95hQWkiTYgC/SEx7vMdV+wnZVX4tt8VBLKzmH8vV9OzJehV0+XBfg+WxPMt5wp+JBUKsVw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "@lukeed/ms": "^2.0.2", + "escape-html": "~1.0.3", + "fast-decode-uri-component": "^1.0.1", + "http-errors": "^2.0.0", + "mime": "^3" + } + }, + "node_modules/@comapeo/map-server/node_modules/@fastify/static": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@fastify/static/-/static-8.3.0.tgz", + "integrity": "sha512-yKxviR5PH1OKNnisIzZKmgZSus0r2OZb8qCSbqmw34aolT4g3UlzYfeBRym+HJ1J471CR8e2ldNub4PubD1coA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "@fastify/accept-negotiator": "^2.0.0", + "@fastify/send": "^4.0.0", + "content-disposition": "^0.5.4", + "fastify-plugin": "^5.0.0", + "fastq": "^1.17.1", + "glob": "^11.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/@isaacs/cliui": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-9.0.0.tgz", + "integrity": "sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@comapeo/map-server/node_modules/@turf/bbox": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-7.3.4.tgz", + "integrity": "sha512-D5ErVWtfQbEPh11yzI69uxqrcJmbPU/9Y59f1uTapgwAwQHQztDWgsYpnL3ns8r1GmPWLP8sGJLVTIk2TZSiYA==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "7.3.4", + "@turf/meta": "7.3.4", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@comapeo/map-server/node_modules/@turf/helpers": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-7.3.4.tgz", + "integrity": "sha512-U/S5qyqgx3WTvg4twaH0WxF3EixoTCfDsmk98g1E3/5e2YKp7JKYZdz0vivsS5/UZLJeZDEElOSFH4pUgp+l7g==", + "license": "MIT", + "dependencies": { + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@comapeo/map-server/node_modules/@turf/meta": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-7.3.4.tgz", + "integrity": "sha512-tlmw9/Hs1p2n0uoHVm1w3ugw1I6L8jv9YZrcdQa4SH5FX5UY0ATrKeIvfA55FlL//PGuYppJp+eyg/0eb4goqw==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "7.3.4", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@comapeo/map-server/node_modules/@whatwg-node/disposablestack": { + "version": "0.0.6", + "inBundle": true, + "license": "MIT", + "dependencies": { + "@whatwg-node/promise-helpers": "^1.0.0", + "tslib": "^2.6.3" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/@whatwg-node/fetch": { + "version": "0.10.13", + "inBundle": true, + "license": "MIT", + "dependencies": { + "@whatwg-node/node-fetch": "^0.8.3", + "urlpattern-polyfill": "^10.0.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/@whatwg-node/node-fetch": { + "version": "0.8.4", + "inBundle": true, + "license": "MIT", + "dependencies": { + "@fastify/busboy": "^3.1.1", + "@whatwg-node/disposablestack": "^0.0.6", + "@whatwg-node/promise-helpers": "^1.3.2", + "tslib": "^2.6.3" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/@whatwg-node/promise-helpers": { + "version": "1.3.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.6.3" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/@whatwg-node/server": { + "version": "0.10.17", + "inBundle": true, + "license": "MIT", + "dependencies": { + "@envelop/instrumentation": "^1.0.0", + "@whatwg-node/disposablestack": "^0.0.6", + "@whatwg-node/fetch": "^0.10.13", + "@whatwg-node/promise-helpers": "^1.3.2", + "tslib": "^2.6.3" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@comapeo/map-server/node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/@comapeo/map-server/node_modules/avvio": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/avvio/-/avvio-9.1.0.tgz", + "integrity": "sha512-fYASnYi600CsH/j9EQov7lECAniYiBFiiAtBNuZYLA2leLe9qOvZzqYHFjtIj6gD2VMoMLP14834LFWvr4IfDw==", + "license": "MIT", + "dependencies": { + "@fastify/error": "^4.0.0", + "fastq": "^1.17.1" + } + }, + "node_modules/@comapeo/map-server/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@comapeo/map-server/node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/@comapeo/map-server/node_modules/cookie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/@comapeo/map-server/node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@comapeo/map-server/node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "license": "MIT" + }, + "node_modules/@comapeo/map-server/node_modules/fast-json-stringify": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-6.3.0.tgz", + "integrity": "sha512-oRCntNDY/329HJPlmdNLIdogNtt6Vyjb1WuT01Soss3slIdyUp8kAcDU3saQTOquEK8KFVfwIIF7FebxUAu+yA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "@fastify/merge-json-schemas": "^0.2.0", + "ajv": "^8.12.0", + "ajv-formats": "^3.0.1", + "fast-uri": "^3.0.0", + "json-schema-ref-resolver": "^3.0.0", + "rfdc": "^1.2.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/fastify": { + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/fastify/-/fastify-5.7.4.tgz", + "integrity": "sha512-e6l5NsRdaEP8rdD8VR0ErJASeyaRbzXYpmkrpr2SuvuMq6Si3lvsaVy5C+7gLanEkvjpMDzBXWE5HPeb/hgTxA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "@fastify/ajv-compiler": "^4.0.5", + "@fastify/error": "^4.0.0", + "@fastify/fast-json-stringify-compiler": "^5.0.0", + "@fastify/proxy-addr": "^5.0.0", + "abstract-logging": "^2.0.1", + "avvio": "^9.0.0", + "fast-json-stringify": "^6.0.0", + "find-my-way": "^9.0.0", + "light-my-request": "^6.0.0", + "pino": "^10.1.0", + "process-warning": "^5.0.0", + "rfdc": "^1.3.1", + "secure-json-parse": "^4.0.0", + "semver": "^7.6.0", + "toad-cache": "^3.7.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/fastify-plugin": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-5.1.0.tgz", + "integrity": "sha512-FAIDA8eovSt5qcDgcBvDuX/v0Cjz0ohGhENZ/wpc3y+oZCY2afZ9Baqql3g/lC+OHRnciQol4ww7tuthOb9idw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, + "node_modules/@comapeo/map-server/node_modules/find-my-way": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-9.4.0.tgz", + "integrity": "sha512-5Ye4vHsypZRYtS01ob/iwHzGRUDELlsoCftI/OZFhcLs1M0tkGPcXldE80TAZC5yYuJMBPJQQ43UHlqbJWiX2w==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-querystring": "^1.0.0", + "safe-regex2": "^5.0.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@comapeo/map-server/node_modules/glob": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.1.0.tgz", + "integrity": "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "license": "BlueOak-1.0.0", + "dependencies": { + "foreground-child": "^3.3.1", + "jackspeak": "^4.1.1", + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@comapeo/map-server/node_modules/is-interactive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", + "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@comapeo/map-server/node_modules/jackspeak": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.2.3.tgz", + "integrity": "sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^9.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@comapeo/map-server/node_modules/json-schema-ref-resolver": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-schema-ref-resolver/-/json-schema-ref-resolver-3.0.0.tgz", + "integrity": "sha512-hOrZIVL5jyYFjzk7+y7n5JDzGlU8rfWDuYyHwGa2WA8/pcmMHezp2xsVwxrebD/Q9t8Nc5DboieySDpCp4WG4A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/@comapeo/map-server/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/@comapeo/map-server/node_modules/light-my-request": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-6.6.0.tgz", + "integrity": "sha512-CHYbu8RtboSIoVsHZ6Ye4cj4Aw/yg2oAFimlF7mNvfDV192LR7nDiKtSIfCuLT7KokPSTn/9kfVLm5OGN0A28A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause", + "dependencies": { + "cookie": "^1.0.1", + "process-warning": "^4.0.0", + "set-cookie-parser": "^2.6.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/light-my-request/node_modules/process-warning": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-4.0.1.tgz", + "integrity": "sha512-3c2LzQ3rY9d0hc1emcsHhfT9Jwz0cChib/QN89oME2R451w5fy3f0afAhERFZAwrbDU43wk12d0ORBpDVME50Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, + "node_modules/@comapeo/map-server/node_modules/log-symbols": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-7.0.1.tgz", + "integrity": "sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==", + "license": "MIT", + "dependencies": { + "is-unicode-supported": "^2.0.0", + "yoctocolors": "^2.1.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@comapeo/map-server/node_modules/lru-cache": { + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", + "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@comapeo/map-server/node_modules/map-obj": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-5.0.2.tgz", + "integrity": "sha512-K6K2NgKnTXimT3779/4KxSvobxOtMmx1LBZ3NwRxT/MDIR3Br/fQ4Q+WCX5QxjyUR8zg5+RV9Tbf2c5pAWTD2A==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@comapeo/map-server/node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/minimatch": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", + "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.1" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@comapeo/map-server/node_modules/open": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", + "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", + "license": "MIT", + "dependencies": { + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "wsl-utils": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@comapeo/map-server/node_modules/ora": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-8.2.0.tgz", + "integrity": "sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==", + "license": "MIT", + "dependencies": { + "chalk": "^5.3.0", + "cli-cursor": "^5.0.0", + "cli-spinners": "^2.9.2", + "is-interactive": "^2.0.0", + "is-unicode-supported": "^2.0.0", + "log-symbols": "^6.0.0", + "stdin-discarder": "^0.2.2", + "string-width": "^7.2.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@comapeo/map-server/node_modules/ora/node_modules/log-symbols": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz", + "integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==", + "license": "MIT", + "dependencies": { + "chalk": "^5.3.0", + "is-unicode-supported": "^1.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@comapeo/map-server/node_modules/ora/node_modules/log-symbols/node_modules/is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@comapeo/map-server/node_modules/p-limit": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-6.2.0.tgz", + "integrity": "sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.1.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@comapeo/map-server/node_modules/path-scurry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", + "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@comapeo/map-server/node_modules/pino": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/pino/-/pino-10.3.1.tgz", + "integrity": "sha512-r34yH/GlQpKZbU1BvFFqOjhISRo1MNx1tWYsYvmj6KIRHSPMT2+yHOEb1SG6NMvRoHRF0a07kCOox/9yakl1vg==", + "license": "MIT", + "dependencies": { + "@pinojs/redact": "^0.4.0", + "atomic-sleep": "^1.0.0", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "^3.0.0", + "pino-std-serializers": "^7.0.0", + "process-warning": "^5.0.0", + "quick-format-unescaped": "^4.0.3", + "real-require": "^0.2.0", + "safe-stable-stringify": "^2.3.1", + "sonic-boom": "^4.0.1", + "thread-stream": "^4.0.0" + }, + "bin": { + "pino": "bin.js" + } + }, + "node_modules/@comapeo/map-server/node_modules/pino-abstract-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-3.0.0.tgz", + "integrity": "sha512-wlfUczU+n7Hy/Ha5j9a/gZNy7We5+cXp8YL+X+PG8S0KXxw7n/JXA3c46Y0zQznIJ83URJiwy7Lh56WLokNuxg==", + "license": "MIT", + "dependencies": { + "split2": "^4.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/pretty-bytes": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-6.1.1.tgz", + "integrity": "sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==", + "license": "MIT", + "engines": { + "node": "^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@comapeo/map-server/node_modules/process-warning": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-5.0.0.tgz", + "integrity": "sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, + "node_modules/@comapeo/map-server/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/ret": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.5.0.tgz", + "integrity": "sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/@comapeo/map-server/node_modules/safe-regex2": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-5.0.0.tgz", + "integrity": "sha512-YwJwe5a51WlK7KbOJREPdjNrpViQBI3p4T50lfwPuDhZnE3XGVTlGvi+aolc5+RvxDD6bnUmjVsU9n1eboLUYw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "ret": "~0.5.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/secure-json-parse": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-4.1.0.tgz", + "integrity": "sha512-l4KnYfEyqYJxDwlNVyRfO2E4NTHfMKAWdUuA8J0yve2Dz/E/PdBepY03RvyJpssIpRFwJoCD55wA+mEDs6ByWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/@comapeo/map-server/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@comapeo/map-server/node_modules/styled-map-package": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/styled-map-package/-/styled-map-package-4.0.1.tgz", + "integrity": "sha512-AC/WT3CvY2gadH7GB2/w2Z+V2sZ7m+9L0AayTXYYfkjbTq1RILlmyqWj9Z2FcABPoU8l+19x2QR1ND+7E9MBDA==", + "license": "MIT", + "dependencies": { + "@commander-js/extra-typings": "^12.1.0", + "@fastify/static": "^8.3.0", + "@inquirer/prompts": "^6.0.1", + "@mapbox/sphericalmercator": "^1.2.0", + "@maplibre/maplibre-gl-style-spec": "^20.3.1", + "@placemarkio/check-geojson": "^0.1.12", + "@turf/bbox": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@whatwg-node/server": "^0.10.17", + "ansi-diff": "^1.2.0", + "archiver": "^7.0.1", + "buffer-peek-stream": "^1.1.0", + "chalk": "^5.4.1", + "commander": "^12.1.0", + "fastify": "^5.6.2", + "filter-obj": "^6.1.0", + "into-stream": "^8.0.1", + "is-stream": "^4.0.1", + "itty-router": "^5.0.22", + "ky": "^1.7.5", + "log-symbols": "^7.0.0", + "map-obj": "^5.0.2", + "mbtiles-reader": "^1.0.0", + "open": "^10.1.0", + "ora": "^8.2.0", + "p-event": "^6.0.1", + "p-limit": "^6.2.0", + "pretty-bytes": "^6.1.1", + "pretty-ms": "^9.2.0", + "readable-stream": "^4.7.0", + "temp-dir": "^3.0.0", + "yauzl-promise": "^4.0.0", + "yocto-queue": "^1.1.1" + }, + "bin": { + "smp": "bin/smp.js", + "styled-map-package": "bin/smp.js" + } + }, + "node_modules/@comapeo/map-server/node_modules/temp-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", + "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==", + "license": "MIT", + "engines": { + "node": ">=14.16" + } + }, + "node_modules/@comapeo/map-server/node_modules/thread-stream": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-4.0.0.tgz", + "integrity": "sha512-4iMVL6HAINXWf1ZKZjIPcz5wYaOdPhtO8ATvZ+Xqp3BTdaqtAwQkNmKORqcIo5YkQqGXq5cwfswDwMqqQNrpJA==", + "license": "MIT", + "dependencies": { + "real-require": "^0.2.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@comapeo/map-server/node_modules/tslib": { + "version": "2.8.1", + "inBundle": true, + "license": "0BSD" + }, + "node_modules/@comapeo/map-server/node_modules/urlpattern-polyfill": { + "version": "10.1.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/@comapeo/map-server/node_modules/yocto-queue": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", + "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@comapeo/nodejs-mobile-react-native": { "version": "18.20.4-2", "resolved": "https://registry.npmjs.org/@comapeo/nodejs-mobile-react-native/-/nodejs-mobile-react-native-18.20.4-2.tgz", @@ -4365,6 +5375,22 @@ "fast-json-stringify": "^5.7.0" } }, + "node_modules/@fastify/forwarded": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@fastify/forwarded/-/forwarded-3.0.1.tgz", + "integrity": "sha512-JqDochHFqXs3C3Ml3gOY58zM7OqO9ENqPo0UqAjAjH8L01fRZqwX9iLeX34//kiJubF7r2ZQHtBRU36vONbLlw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, "node_modules/@fastify/merge-json-schemas": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/@fastify/merge-json-schemas/-/merge-json-schemas-0.1.1.tgz", @@ -4374,6 +5400,35 @@ "fast-deep-equal": "^3.1.3" } }, + "node_modules/@fastify/proxy-addr": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@fastify/proxy-addr/-/proxy-addr-5.1.0.tgz", + "integrity": "sha512-INS+6gh91cLUjB+PVHfu1UqcB76Sqtpyp7bnL+FYojhjygvOPA9ctiD/JDKsyD9Xgu4hUhCSJBPig/w7duNajw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "@fastify/forwarded": "^3.0.0", + "ipaddr.js": "^2.1.0" + } + }, + "node_modules/@fastify/proxy-addr/node_modules/ipaddr.js": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.3.0.tgz", + "integrity": "sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, "node_modules/@fastify/send": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@fastify/send/-/send-2.1.0.tgz", @@ -5049,9 +6104,9 @@ } }, "node_modules/@isaacs/brace-expansion": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", - "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.1.tgz", + "integrity": "sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ==", "license": "MIT", "dependencies": { "@isaacs/balanced-match": "^4.0.1" @@ -6203,6 +7258,12 @@ "node": ">=14" } }, + "node_modules/@pinojs/redact": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@pinojs/redact/-/redact-0.4.0.tgz", + "integrity": "sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg==", + "license": "MIT" + }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -11842,10 +12903,18 @@ } }, "node_modules/bare-events": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.4.tgz", - "integrity": "sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==", - "license": "Apache-2.0" + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz", + "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==", + "license": "Apache-2.0", + "peerDependencies": { + "bare-abort-controller": "*" + }, + "peerDependenciesMeta": { + "bare-abort-controller": { + "optional": true + } + } }, "node_modules/bare-fs": { "version": "4.1.2", @@ -12307,6 +13376,12 @@ "node": ">=8" } }, + "node_modules/browser-or-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/browser-or-node/-/browser-or-node-2.1.1.tgz", + "integrity": "sha512-8CVjaLJGuSKMVTxJ2DpBl5XnlNDiT4cQFeuCJJrvJmts9YrTZDizTX7PjC2s6W4x+MBGZeEY6dGMrF04/6Hgqg==", + "license": "MIT" + }, "node_modules/browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", @@ -14620,6 +15695,15 @@ "dev": true, "license": "MIT" }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/dereference-json-schema": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/dereference-json-schema/-/dereference-json-schema-0.2.1.tgz", @@ -16155,6 +17239,36 @@ "node": ">=0.8.x" } }, + "node_modules/events-universal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz", + "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==", + "license": "Apache-2.0", + "dependencies": { + "bare-events": "^2.7.0" + } + }, + "node_modules/eventsource-client": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/eventsource-client/-/eventsource-client-1.2.0.tgz", + "integrity": "sha512-kDI75RSzO3TwyG/K9w1ap8XwqSPcwi6jaMkNulfVeZmSeUM49U8kUzk1s+vKNt0tGrXgK47i+620Yasn1ccFiw==", + "license": "MIT", + "dependencies": { + "eventsource-parser": "^3.0.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/eventsource-parser": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.6.tgz", + "integrity": "sha512-Vo1ab+QXPzZ4tCa8SwIHJFaSzy4R6SHf7BY79rFBDf0idraZWAkYrDjDj8uWaSm3S2TK+hJ7/t1CEmZ7jXw+pg==", + "license": "MIT", + "engines": { + "node": ">=18.0.0" + } + }, "node_modules/exec-async": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/exec-async/-/exec-async-2.2.0.tgz", @@ -16249,6 +17363,12 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/expect-type": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-0.15.0.tgz", + "integrity": "sha512-yWnriYB4e8G54M5/fAFj7rCIBiKs1HAACaY13kCz6Ku0dezjS9aMcfcdVK2X8Tv2tEV1BPz/wKfQ7WA4S/d8aA==", + "license": "Apache-2.0" + }, "node_modules/expect-webdriverio": { "version": "5.3.4", "resolved": "https://registry.npmjs.org/expect-webdriverio/-/expect-webdriverio-5.3.4.tgz", @@ -20410,6 +21530,12 @@ "node": ">=8" } }, + "node_modules/itty-router": { + "version": "5.0.22", + "resolved": "https://registry.npmjs.org/itty-router/-/itty-router-5.0.22.tgz", + "integrity": "sha512-9hmdGErWdYDOurGYxSbqLhy4EFReIwk71hMZTJ5b+zfa2zjMNV1ftFno2b8VjAQvX615gNB8Qxbl9JMRqHnIVA==", + "license": "MIT" + }, "node_modules/jackspeak": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", @@ -21910,9 +23036,9 @@ } }, "node_modules/ky": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/ky/-/ky-1.8.1.tgz", - "integrity": "sha512-7Bp3TpsE+L+TARSnnDpk3xg8Idi8RwSLdj6CMbNWoOARIrGrbuLGusV0dYwbZOm4bB3jHNxSw8Wk/ByDqJEnDw==", + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/ky/-/ky-1.14.2.tgz", + "integrity": "sha512-q3RBbsO5A5zrPhB6CaCS8ZUv+NWCXv6JJT4Em0i264G9W0fdPB8YRfnnEi7Dm7X7omAkBIPojzYJ2D1oHTHqug==", "license": "MIT", "engines": { "node": ">=18" @@ -26126,6 +27252,33 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/p-mutex": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/p-mutex/-/p-mutex-0.1.0.tgz", + "integrity": "sha512-JXTGUNjI6eLzbtYGhFqmad8Tp5wDBsaGDwrvXuoRzIZ6EyKZr5jlNO9sFe83T6/K//lhyONS4ejCocvGNYJz7Q==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-mutex/node_modules/yocto-queue": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", + "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/p-queue": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-8.1.1.tgz", @@ -29117,6 +30270,35 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/run-time-assertions": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/run-time-assertions/-/run-time-assertions-1.5.2.tgz", + "integrity": "sha512-ccfwvjGuNU14cSSXLlmPRiqEgMfA7w3J2TViO79zMnzXGvE6FJ0dxnhIQGwe5r/vwySOJ4sqZksexo9wyAlA8g==", + "deprecated": "Use @augment-vir/assert instead.", + "license": "(MIT or CC0 1.0)", + "dependencies": { + "@augment-vir/common": "^29.3.0", + "expect-type": "~0.15.0", + "type-fest": "^4.22.0" + } + }, + "node_modules/run-time-assertions/node_modules/@augment-vir/common": { + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/@augment-vir/common/-/common-29.3.0.tgz", + "integrity": "sha512-k3OX35/576thmGUzQUBcCKGarb7ONBfiu07+iV2vxmjl7VoB1rOB0vu8WqgB1ceJq2EMLDPXY18hHpJ9WeTHXQ==", + "license": "MIT", + "dependencies": { + "browser-or-node": "^3.0.0", + "run-time-assertions": "^1.5.1", + "type-fest": "^4.21.0" + } + }, + "node_modules/run-time-assertions/node_modules/browser-or-node": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/browser-or-node/-/browser-or-node-3.0.0.tgz", + "integrity": "sha512-iczIdVJzGEYhP5DqQxYM9Hh7Ztpqqi+CXZpSmX8ALFs9ecXkQIeqRyM6TfxEfMVpwhl3dSuDvxdzzo9sUOIVBQ==", + "license": "MIT" + }, "node_modules/rw": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", @@ -29224,6 +30406,17 @@ "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", "license": "MIT" }, + "node_modules/secret-stream-http": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/secret-stream-http/-/secret-stream-http-1.0.1.tgz", + "integrity": "sha512-vfbvQ/jL7DxptsDqs2NvKqF5tWZ65oShV5IdmaH1+zRrNeV/vxZTf6Gh1Uml/1bCtou7m3jYmcCHCB+ZnHNrBw==", + "license": "MIT", + "dependencies": { + "@hyperswarm/secret-stream": "^6.8.1", + "streamx": "^2.22.1", + "undici": "^6.21.3" + } + }, "node_modules/secure-json-parse": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz", @@ -30136,16 +31329,14 @@ "license": "MIT" }, "node_modules/streamx": { - "version": "2.22.0", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.0.tgz", - "integrity": "sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw==", + "version": "2.23.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.23.0.tgz", + "integrity": "sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==", "license": "MIT", "dependencies": { + "events-universal": "^1.0.0", "fast-fifo": "^1.3.2", "text-decoder": "^1.1.0" - }, - "optionalDependencies": { - "bare-events": "^2.2.0" } }, "node_modules/strict-event-emitter": { @@ -31508,6 +32699,22 @@ "node": ">= 0.6" } }, + "node_modules/typebox": { + "version": "1.0.81", + "resolved": "https://registry.npmjs.org/typebox/-/typebox-1.0.81.tgz", + "integrity": "sha512-bCslZUmZESHhBn4kHDghzH2oo3qu8m2W89xDLxQHv/aPvY4i81Nd1jvijlBp9wSpsVytDSfSoosbiBAjgsNb2Q==", + "license": "MIT" + }, + "node_modules/typed-event-target": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/typed-event-target/-/typed-event-target-3.4.0.tgz", + "integrity": "sha512-BvSk33Dgo+kubQpbRqiI8A7C5obN0hRydWYya/LTZQoPTCpmB4zScNJSckuKBJDq62A/sCRlZN8ZHgSQxVAKqw==", + "license": "(MIT or CC0 1.0)", + "dependencies": { + "@augment-vir/common": "^26.2.0", + "run-time-assertions": "^1.1.0" + } + }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", @@ -32889,6 +34096,36 @@ } } }, + "node_modules/wsl-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", + "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", + "license": "MIT", + "dependencies": { + "is-wsl": "^3.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wsl-utils/node_modules/is-wsl": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "license": "MIT", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/xache": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/xache/-/xache-1.2.1.tgz", diff --git a/package.json b/package.json index 31083e3492..d4e14a960a 100644 --- a/package.json +++ b/package.json @@ -34,8 +34,9 @@ }, "dependencies": { "@bam.tech/react-native-image-resizer": "3.0.11", - "@comapeo/core-react": "7.2.0", + "@comapeo/core-react": "file:comapeo-core-react-7.2.0.tgz", "@comapeo/ipc": "6.0.2", + "@comapeo/map-server": "^1.0.0-pre.6", "@comapeo/nodejs-mobile-react-native": "18.20.4-2", "@expo-google-fonts/rubik": "0.4.2", "@formatjs/intl-getcanonicallocales": "2.5.6", @@ -65,6 +66,7 @@ "buffer": "6.0.3", "cheap-ruler": "4.0.0", "eventemitter3": "5.0.1", + "eventsource-client": "1.2.0", "expo": "54.0.31", "expo-application": "7.0.8", "expo-asset": "12.0.12", @@ -90,6 +92,7 @@ "fs-extra": "11.3.2", "geojson": "0.5.0", "geojson-geometries-lookup": "0.5.0", + "ky": "1.14.2", "lodash.isequal": "4.5.0", "map-obj": "6.0.0", "nanoid": "5.1.6", @@ -129,9 +132,8 @@ "@babel/core": "7.28.5", "@babel/preset-env": "7.28.5", "@babel/runtime": "7.28.4", - "babel-preset-expo": "54.0.9", "@comapeo/cloud": "0.3.0", - "@comapeo/core": "5.2.1", + "@comapeo/core": "5.4.0", "@comapeo/schema": "2.2.0", "@digidem/types": "2.3.0", "@eslint-react/eslint-plugin": "1.52.2", @@ -168,6 +170,7 @@ "babel-jest": "30.2.0", "babel-plugin-transform-import-meta": "2.3.3", "babel-plugin-transform-inline-environment-variables": "0.4.4", + "babel-preset-expo": "54.0.9", "date-fns": "4.1.0", "dotenv-cli": "11.0.0", "eslint": "9.39.2", diff --git a/src/backend/package-lock.json b/src/backend/package-lock.json index 74a58ed21b..b806332d11 100644 --- a/src/backend/package-lock.json +++ b/src/backend/package-lock.json @@ -10,9 +10,10 @@ "hasInstallScript": true, "license": "MIT", "dependencies": { - "@comapeo/core": "5.2.1", + "@comapeo/core": "5.4.0", "@comapeo/default-categories": "1.0.0", "@comapeo/ipc": "6.0.2", + "@comapeo/map-server": "1.0.0-pre.6", "@sentry/node": "9.28.0", "@sentry/rollup-plugin": "^3.5.0", "debug": "^4.3.4", @@ -50,6 +51,17 @@ "node": ">=6.0.0" } }, + "node_modules/@augment-vir/common": { + "version": "26.4.0", + "resolved": "https://registry.npmjs.org/@augment-vir/common/-/common-26.4.0.tgz", + "integrity": "sha512-rQoLA+t3bbvs269KvZYKZ76WO7Ofp468mqahsI4RAvPjJaOJ/6lCo49HgvUjnFlv7DoEVbTMfHT3G3+VztNnsA==", + "license": "MIT", + "dependencies": { + "browser-or-node": "^2.1.1", + "run-time-assertions": "^1.0.0", + "type-fest": "^4.12.0" + } + }, "node_modules/@babel/code-frame": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", @@ -78,7 +90,6 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.27.4.tgz", "integrity": "sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==", "license": "MIT", - "peer": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.27.1", @@ -303,9 +314,9 @@ } }, "node_modules/@comapeo/core": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@comapeo/core/-/core-5.2.1.tgz", - "integrity": "sha512-W+THNXlKjutzlmtNxQR203YVUd9roHlna4Z3n8E64qxleBaaMSFKPpRPMHPhlYgALCP6J61B9J3rqnJEFnZLtg==", + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/@comapeo/core/-/core-5.4.0.tgz", + "integrity": "sha512-2pu/oDzpxGItvlYKwXpJHdHvltXNMZGHrL5n5v/i5ce3uMciAa9XPhCgJHOGUhjgldl+oB/xTGGw1p+/AbEAGg==", "license": "MIT", "dependencies": { "@comapeo/fallback-smp": "^1.0.0", @@ -330,7 +341,7 @@ "debug": "^4.3.4", "dot-prop": "^9.0.0", "dot-prop-extra": "^10.2.0", - "drizzle-orm": "^1.0.0-beta.1-ac4ce44", + "drizzle-orm": "1.0.0-beta.1-fd8bfcc", "ensure-error": "^4.0.0", "fastify": "^4.0.0", "fastify-plugin": "^4.5.1", @@ -423,23 +434,800 @@ "protobufjs": "^7.4.0" } }, - "node_modules/@comapeo/ipc": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@comapeo/ipc/-/ipc-6.0.2.tgz", - "integrity": "sha512-uWJ1Klrpz9xTJqapcWLZ7f1WH7NHooo51KN8kR+XD+8UwsGJuSln274Mm094h7SyfWkSwUBIngT3zIS8yEw0wQ==", + "node_modules/@comapeo/ipc": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@comapeo/ipc/-/ipc-6.0.2.tgz", + "integrity": "sha512-uWJ1Klrpz9xTJqapcWLZ7f1WH7NHooo51KN8kR+XD+8UwsGJuSln274Mm094h7SyfWkSwUBIngT3zIS8yEw0wQ==", + "license": "MIT", + "dependencies": { + "eventemitter3": "^5.0.1", + "p-defer": "^4.0.1", + "rpc-reflector": "^3.0.1" + }, + "engines": { + "node": ">=18.17.1" + }, + "peerDependencies": { + "@comapeo/core": "^5.0.0" + } + }, + "node_modules/@comapeo/map-server": { + "version": "1.0.0-pre.6", + "resolved": "https://registry.npmjs.org/@comapeo/map-server/-/map-server-1.0.0-pre.6.tgz", + "integrity": "sha512-4gZNkxT02kZuCW5pbpOkIr4xoNXeyV50iuwJ84ZUZwrDrcPmUafCFvfYWI62NQqGgxjafyWsbSoSvdBjO01pVA==", + "bundleDependencies": [ + "@whatwg-node/server" + ], + "license": "MIT", + "dependencies": { + "@whatwg-node/server": "^0.10.17", + "itty-router": "^5.0.22", + "p-defer": "^4.0.1", + "p-mutex": "^0.1.0", + "secret-stream-http": "^1.0.1", + "styled-map-package": "^4.0.1", + "typebox": "^1.0.61", + "typed-event-target": "^3.4.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/@envelop/instrumentation": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "@whatwg-node/promise-helpers": "^1.2.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/@fastify/accept-negotiator": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@fastify/accept-negotiator/-/accept-negotiator-2.0.1.tgz", + "integrity": "sha512-/c/TW2bO/v9JeEgoD/g1G5GxGeCF1Hafdf79WPmUlgYiBXummY0oX3VVq4yFkKKVBKDNlaDUYoab7g38RpPqCQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, + "node_modules/@comapeo/map-server/node_modules/@fastify/ajv-compiler": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-4.0.5.tgz", + "integrity": "sha512-KoWKW+MhvfTRWL4qrhUwAAZoaChluo0m0vbiJlGMt2GXvL4LVPQEjt8kSpHI3IBq5Rez8fg+XeH3cneztq+C7A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "ajv": "^8.12.0", + "ajv-formats": "^3.0.1", + "fast-uri": "^3.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/@fastify/busboy": { + "version": "3.2.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/@comapeo/map-server/node_modules/@fastify/error": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@fastify/error/-/error-4.2.0.tgz", + "integrity": "sha512-RSo3sVDXfHskiBZKBPRgnQTtIqpi/7zhJOEmAxCiBcM7d0uwdGdxLlsCaLzGs8v8NnxIRlfG0N51p5yFaOentQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, + "node_modules/@comapeo/map-server/node_modules/@fastify/fast-json-stringify-compiler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-5.0.3.tgz", + "integrity": "sha512-uik7yYHkLr6fxd8hJSZ8c+xF4WafPK+XzneQDPU+D10r5X19GW8lJcom2YijX2+qtFF1ENJlHXKFM9ouXNJYgQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "fast-json-stringify": "^6.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/@fastify/merge-json-schemas": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@fastify/merge-json-schemas/-/merge-json-schemas-0.2.1.tgz", + "integrity": "sha512-OA3KGBCy6KtIvLf8DINC5880o5iBlDX4SxzLQS8HorJAbqluzLRn80UXU0bxZn7UOFhFgpRJDasfwn9nG4FG4A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/@comapeo/map-server/node_modules/@fastify/send": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@fastify/send/-/send-4.1.0.tgz", + "integrity": "sha512-TMYeQLCBSy2TOFmV95hQWkiTYgC/SEx7vMdV+wnZVX4tt8VBLKzmH8vV9OzJehV0+XBfg+WxPMt5wp+JBUKsVw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "@lukeed/ms": "^2.0.2", + "escape-html": "~1.0.3", + "fast-decode-uri-component": "^1.0.1", + "http-errors": "^2.0.0", + "mime": "^3" + } + }, + "node_modules/@comapeo/map-server/node_modules/@fastify/static": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@fastify/static/-/static-8.3.0.tgz", + "integrity": "sha512-yKxviR5PH1OKNnisIzZKmgZSus0r2OZb8qCSbqmw34aolT4g3UlzYfeBRym+HJ1J471CR8e2ldNub4PubD1coA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "@fastify/accept-negotiator": "^2.0.0", + "@fastify/send": "^4.0.0", + "content-disposition": "^0.5.4", + "fastify-plugin": "^5.0.0", + "fastq": "^1.17.1", + "glob": "^11.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/@isaacs/cliui": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-9.0.0.tgz", + "integrity": "sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/@comapeo/map-server/node_modules/@whatwg-node/disposablestack": { + "version": "0.0.6", + "inBundle": true, + "license": "MIT", + "dependencies": { + "@whatwg-node/promise-helpers": "^1.0.0", + "tslib": "^2.6.3" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/@whatwg-node/fetch": { + "version": "0.10.13", + "inBundle": true, + "license": "MIT", + "dependencies": { + "@whatwg-node/node-fetch": "^0.8.3", + "urlpattern-polyfill": "^10.0.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/@whatwg-node/node-fetch": { + "version": "0.8.4", + "inBundle": true, + "license": "MIT", + "dependencies": { + "@fastify/busboy": "^3.1.1", + "@whatwg-node/disposablestack": "^0.0.6", + "@whatwg-node/promise-helpers": "^1.3.2", + "tslib": "^2.6.3" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/@whatwg-node/promise-helpers": { + "version": "1.3.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.6.3" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/@whatwg-node/server": { + "version": "0.10.17", + "inBundle": true, + "license": "MIT", + "dependencies": { + "@envelop/instrumentation": "^1.0.0", + "@whatwg-node/disposablestack": "^0.0.6", + "@whatwg-node/fetch": "^0.10.13", + "@whatwg-node/promise-helpers": "^1.3.2", + "tslib": "^2.6.3" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/@comapeo/map-server/node_modules/avvio": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/avvio/-/avvio-9.1.0.tgz", + "integrity": "sha512-fYASnYi600CsH/j9EQov7lECAniYiBFiiAtBNuZYLA2leLe9qOvZzqYHFjtIj6gD2VMoMLP14834LFWvr4IfDw==", + "license": "MIT", + "dependencies": { + "@fastify/error": "^4.0.0", + "fastq": "^1.17.1" + } + }, + "node_modules/@comapeo/map-server/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/@comapeo/map-server/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@comapeo/map-server/node_modules/cookie": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", + "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/@comapeo/map-server/node_modules/fast-json-stringify": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-6.3.0.tgz", + "integrity": "sha512-oRCntNDY/329HJPlmdNLIdogNtt6Vyjb1WuT01Soss3slIdyUp8kAcDU3saQTOquEK8KFVfwIIF7FebxUAu+yA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "@fastify/merge-json-schemas": "^0.2.0", + "ajv": "^8.12.0", + "ajv-formats": "^3.0.1", + "fast-uri": "^3.0.0", + "json-schema-ref-resolver": "^3.0.0", + "rfdc": "^1.2.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/fast-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", + "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/@comapeo/map-server/node_modules/fastify": { + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/fastify/-/fastify-5.7.4.tgz", + "integrity": "sha512-e6l5NsRdaEP8rdD8VR0ErJASeyaRbzXYpmkrpr2SuvuMq6Si3lvsaVy5C+7gLanEkvjpMDzBXWE5HPeb/hgTxA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "@fastify/ajv-compiler": "^4.0.5", + "@fastify/error": "^4.0.0", + "@fastify/fast-json-stringify-compiler": "^5.0.0", + "@fastify/proxy-addr": "^5.0.0", + "abstract-logging": "^2.0.1", + "avvio": "^9.0.0", + "fast-json-stringify": "^6.0.0", + "find-my-way": "^9.0.0", + "light-my-request": "^6.0.0", + "pino": "^10.1.0", + "process-warning": "^5.0.0", + "rfdc": "^1.3.1", + "secure-json-parse": "^4.0.0", + "semver": "^7.6.0", + "toad-cache": "^3.7.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/fastify-plugin": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-5.1.0.tgz", + "integrity": "sha512-FAIDA8eovSt5qcDgcBvDuX/v0Cjz0ohGhENZ/wpc3y+oZCY2afZ9Baqql3g/lC+OHRnciQol4ww7tuthOb9idw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, + "node_modules/@comapeo/map-server/node_modules/find-my-way": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-9.4.0.tgz", + "integrity": "sha512-5Ye4vHsypZRYtS01ob/iwHzGRUDELlsoCftI/OZFhcLs1M0tkGPcXldE80TAZC5yYuJMBPJQQ43UHlqbJWiX2w==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-querystring": "^1.0.0", + "safe-regex2": "^5.0.0" + }, + "engines": { + "node": ">=20" + } + }, + "node_modules/@comapeo/map-server/node_modules/glob": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.1.0.tgz", + "integrity": "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "license": "BlueOak-1.0.0", + "dependencies": { + "foreground-child": "^3.3.1", + "jackspeak": "^4.1.1", + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@comapeo/map-server/node_modules/is-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@comapeo/map-server/node_modules/jackspeak": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.2.3.tgz", + "integrity": "sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^9.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@comapeo/map-server/node_modules/json-schema-ref-resolver": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-schema-ref-resolver/-/json-schema-ref-resolver-3.0.0.tgz", + "integrity": "sha512-hOrZIVL5jyYFjzk7+y7n5JDzGlU8rfWDuYyHwGa2WA8/pcmMHezp2xsVwxrebD/Q9t8Nc5DboieySDpCp4WG4A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "dequal": "^2.0.3" + } + }, + "node_modules/@comapeo/map-server/node_modules/light-my-request": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-6.6.0.tgz", + "integrity": "sha512-CHYbu8RtboSIoVsHZ6Ye4cj4Aw/yg2oAFimlF7mNvfDV192LR7nDiKtSIfCuLT7KokPSTn/9kfVLm5OGN0A28A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause", + "dependencies": { + "cookie": "^1.0.1", + "process-warning": "^4.0.0", + "set-cookie-parser": "^2.6.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/light-my-request/node_modules/process-warning": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-4.0.1.tgz", + "integrity": "sha512-3c2LzQ3rY9d0hc1emcsHhfT9Jwz0cChib/QN89oME2R451w5fy3f0afAhERFZAwrbDU43wk12d0ORBpDVME50Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, + "node_modules/@comapeo/map-server/node_modules/lru-cache": { + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", + "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@comapeo/map-server/node_modules/mime": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", + "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/minimatch": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", + "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.1" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@comapeo/map-server/node_modules/open": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", + "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", + "license": "MIT", + "dependencies": { + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "wsl-utils": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@comapeo/map-server/node_modules/path-scurry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", + "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@comapeo/map-server/node_modules/pino": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/pino/-/pino-10.3.1.tgz", + "integrity": "sha512-r34yH/GlQpKZbU1BvFFqOjhISRo1MNx1tWYsYvmj6KIRHSPMT2+yHOEb1SG6NMvRoHRF0a07kCOox/9yakl1vg==", + "license": "MIT", + "dependencies": { + "@pinojs/redact": "^0.4.0", + "atomic-sleep": "^1.0.0", + "on-exit-leak-free": "^2.1.0", + "pino-abstract-transport": "^3.0.0", + "pino-std-serializers": "^7.0.0", + "process-warning": "^5.0.0", + "quick-format-unescaped": "^4.0.3", + "real-require": "^0.2.0", + "safe-stable-stringify": "^2.3.1", + "sonic-boom": "^4.0.1", + "thread-stream": "^4.0.0" + }, + "bin": { + "pino": "bin.js" + } + }, + "node_modules/@comapeo/map-server/node_modules/pino-abstract-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-3.0.0.tgz", + "integrity": "sha512-wlfUczU+n7Hy/Ha5j9a/gZNy7We5+cXp8YL+X+PG8S0KXxw7n/JXA3c46Y0zQznIJ83URJiwy7Lh56WLokNuxg==", + "license": "MIT", + "dependencies": { + "split2": "^4.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/process-warning": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-5.0.0.tgz", + "integrity": "sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, + "node_modules/@comapeo/map-server/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/ret": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.5.0.tgz", + "integrity": "sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw==", + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/@comapeo/map-server/node_modules/safe-regex2": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-5.0.0.tgz", + "integrity": "sha512-YwJwe5a51WlK7KbOJREPdjNrpViQBI3p4T50lfwPuDhZnE3XGVTlGvi+aolc5+RvxDD6bnUmjVsU9n1eboLUYw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "ret": "~0.5.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/secure-json-parse": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-4.1.0.tgz", + "integrity": "sha512-l4KnYfEyqYJxDwlNVyRfO2E4NTHfMKAWdUuA8J0yve2Dz/E/PdBepY03RvyJpssIpRFwJoCD55wA+mEDs6ByWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/@comapeo/map-server/node_modules/styled-map-package": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/styled-map-package/-/styled-map-package-4.0.1.tgz", + "integrity": "sha512-AC/WT3CvY2gadH7GB2/w2Z+V2sZ7m+9L0AayTXYYfkjbTq1RILlmyqWj9Z2FcABPoU8l+19x2QR1ND+7E9MBDA==", + "license": "MIT", + "dependencies": { + "@commander-js/extra-typings": "^12.1.0", + "@fastify/static": "^8.3.0", + "@inquirer/prompts": "^6.0.1", + "@mapbox/sphericalmercator": "^1.2.0", + "@maplibre/maplibre-gl-style-spec": "^20.3.1", + "@placemarkio/check-geojson": "^0.1.12", + "@turf/bbox": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@whatwg-node/server": "^0.10.17", + "ansi-diff": "^1.2.0", + "archiver": "^7.0.1", + "buffer-peek-stream": "^1.1.0", + "chalk": "^5.4.1", + "commander": "^12.1.0", + "fastify": "^5.6.2", + "filter-obj": "^6.1.0", + "into-stream": "^8.0.1", + "is-stream": "^4.0.1", + "itty-router": "^5.0.22", + "ky": "^1.7.5", + "log-symbols": "^7.0.0", + "map-obj": "^5.0.2", + "mbtiles-reader": "^1.0.0", + "open": "^10.1.0", + "ora": "^8.2.0", + "p-event": "^6.0.1", + "p-limit": "^6.2.0", + "pretty-bytes": "^6.1.1", + "pretty-ms": "^9.2.0", + "readable-stream": "^4.7.0", + "temp-dir": "^3.0.0", + "yauzl-promise": "^4.0.0", + "yocto-queue": "^1.1.1" + }, + "bin": { + "smp": "bin/smp.js", + "styled-map-package": "bin/smp.js" + } + }, + "node_modules/@comapeo/map-server/node_modules/thread-stream": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-4.0.0.tgz", + "integrity": "sha512-4iMVL6HAINXWf1ZKZjIPcz5wYaOdPhtO8ATvZ+Xqp3BTdaqtAwQkNmKORqcIo5YkQqGXq5cwfswDwMqqQNrpJA==", "license": "MIT", "dependencies": { - "eventemitter3": "^5.0.1", - "p-defer": "^4.0.1", - "rpc-reflector": "^3.0.1" + "real-require": "^0.2.0" }, "engines": { - "node": ">=18.17.1" - }, - "peerDependencies": { - "@comapeo/core": "^5.0.0" + "node": ">=20" } }, + "node_modules/@comapeo/map-server/node_modules/tslib": { + "version": "2.8.1", + "inBundle": true, + "license": "0BSD" + }, + "node_modules/@comapeo/map-server/node_modules/urlpattern-polyfill": { + "version": "10.1.0", + "inBundle": true, + "license": "MIT" + }, "node_modules/@comapeo/schema": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@comapeo/schema/-/schema-2.2.0.tgz", @@ -522,6 +1310,7 @@ "os": [ "aix" ], + "peer": true, "engines": { "node": ">=18" } @@ -539,6 +1328,7 @@ "os": [ "android" ], + "peer": true, "engines": { "node": ">=18" } @@ -556,6 +1346,7 @@ "os": [ "android" ], + "peer": true, "engines": { "node": ">=18" } @@ -573,6 +1364,7 @@ "os": [ "android" ], + "peer": true, "engines": { "node": ">=18" } @@ -590,6 +1382,7 @@ "os": [ "darwin" ], + "peer": true, "engines": { "node": ">=18" } @@ -607,6 +1400,7 @@ "os": [ "darwin" ], + "peer": true, "engines": { "node": ">=18" } @@ -624,6 +1418,7 @@ "os": [ "freebsd" ], + "peer": true, "engines": { "node": ">=18" } @@ -641,6 +1436,7 @@ "os": [ "freebsd" ], + "peer": true, "engines": { "node": ">=18" } @@ -658,6 +1454,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -675,6 +1472,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -692,6 +1490,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -709,6 +1508,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -726,6 +1526,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -743,6 +1544,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -760,6 +1562,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -777,6 +1580,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -794,6 +1598,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -811,6 +1616,7 @@ "os": [ "netbsd" ], + "peer": true, "engines": { "node": ">=18" } @@ -828,6 +1634,7 @@ "os": [ "netbsd" ], + "peer": true, "engines": { "node": ">=18" } @@ -845,6 +1652,7 @@ "os": [ "openbsd" ], + "peer": true, "engines": { "node": ">=18" } @@ -862,6 +1670,7 @@ "os": [ "openbsd" ], + "peer": true, "engines": { "node": ">=18" } @@ -879,6 +1688,7 @@ "os": [ "sunos" ], + "peer": true, "engines": { "node": ">=18" } @@ -896,6 +1706,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">=18" } @@ -913,6 +1724,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">=18" } @@ -930,6 +1742,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">=18" } @@ -969,6 +1782,22 @@ "fast-json-stringify": "^5.7.0" } }, + "node_modules/@fastify/forwarded": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@fastify/forwarded/-/forwarded-3.0.1.tgz", + "integrity": "sha512-JqDochHFqXs3C3Ml3gOY58zM7OqO9ENqPo0UqAjAjH8L01fRZqwX9iLeX34//kiJubF7r2ZQHtBRU36vONbLlw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT" + }, "node_modules/@fastify/merge-json-schemas": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/@fastify/merge-json-schemas/-/merge-json-schemas-0.1.1.tgz", @@ -978,6 +1807,35 @@ "fast-deep-equal": "^3.1.3" } }, + "node_modules/@fastify/proxy-addr": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@fastify/proxy-addr/-/proxy-addr-5.1.0.tgz", + "integrity": "sha512-INS+6gh91cLUjB+PVHfu1UqcB76Sqtpyp7bnL+FYojhjygvOPA9ctiD/JDKsyD9Xgu4hUhCSJBPig/w7duNajw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "@fastify/forwarded": "^3.0.0", + "ipaddr.js": "^2.1.0" + } + }, + "node_modules/@fastify/proxy-addr/node_modules/ipaddr.js": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.3.0.tgz", + "integrity": "sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==", + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, "node_modules/@fastify/send": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@fastify/send/-/send-2.1.0.tgz", @@ -1062,19 +1920,50 @@ } }, "node_modules/@hyperswarm/secret-stream": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/@hyperswarm/secret-stream/-/secret-stream-6.6.3.tgz", - "integrity": "sha512-F/EF5KLUqjkTNFof1K5dz57CwrwjSzG0XxZe2X9t/2/mG5iQ28yJIwNcVabkWS1Wk2ZB719piVGKk6YbwkJ0aQ==", + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/@hyperswarm/secret-stream/-/secret-stream-6.9.1.tgz", + "integrity": "sha512-xb0S5y3YJwBakD77JOGBHlBxdp63mHClZoXBYoLv+9wH8e054ESKlmQptWqjJK5dv5VMUIVYOJB4MaOpB0JdGw==", "license": "Apache-2.0", "dependencies": { "b4a": "^1.1.0", "hypercore-crypto": "^3.3.1", "noise-curve-ed": "^2.0.1", - "noise-handshake": "^3.0.2", + "noise-handshake": "^4.0.0", "sodium-secretstream": "^1.1.0", - "sodium-universal": "^4.0.0", + "sodium-universal": "^5.0.0", "streamx": "^2.14.0", - "timeout-refresh": "^2.0.0" + "timeout-refresh": "^2.0.0", + "unslab": "^1.3.0" + } + }, + "node_modules/@hyperswarm/secret-stream/node_modules/sodium-native": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/sodium-native/-/sodium-native-5.0.10.tgz", + "integrity": "sha512-UIw+0AbpCQRuTJF88JWrZomP4O+PXhlWvdopiAJOsUivTyHTf3korMyStxkZuPngSbBEtEfDdc4ewEd8/T4/lA==", + "license": "MIT", + "dependencies": { + "require-addon": "^1.1.0", + "which-runtime": "^1.2.1" + }, + "engines": { + "bare": ">=1.16.0" + } + }, + "node_modules/@hyperswarm/secret-stream/node_modules/sodium-universal": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/sodium-universal/-/sodium-universal-5.0.1.tgz", + "integrity": "sha512-rv+aH+tnKB5H0MAc2UadHShLMslpJsc4wjdnHRtiSIEYpOetCgu8MS4ExQRia+GL/MK3uuCyZPeEsi+J3h+Q+Q==", + "license": "MIT", + "dependencies": { + "sodium-native": "^5.0.1" + }, + "peerDependencies": { + "sodium-javascript": "~0.8.0" + }, + "peerDependenciesMeta": { + "sodium-javascript": { + "optional": true + } } }, "node_modules/@inquirer/checkbox": { @@ -1299,6 +2188,27 @@ "node": ">=18" } }, + "node_modules/@isaacs/balanced-match": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", + "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", + "license": "MIT", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@isaacs/brace-expansion": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.1.tgz", + "integrity": "sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ==", + "license": "MIT", + "dependencies": { + "@isaacs/balanced-match": "^4.0.1" + }, + "engines": { + "node": "20 || >=22" + } + }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -1806,7 +2716,6 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", "license": "Apache-2.0", - "peer": true, "engines": { "node": ">=8.0.0" } @@ -1828,7 +2737,6 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.30.1.tgz", "integrity": "sha512-s5vvxXPVdjqS3kTLKMeBMvop9hbWkwzBpu+mUO2M7sZtlkyDJGwFe33wRKnbaYDo8ExRVBIIdwIGrqpxHuKttA==", "license": "Apache-2.0", - "peer": true, "engines": { "node": ">=14" }, @@ -1865,7 +2773,6 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.57.2.tgz", "integrity": "sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg==", "license": "Apache-2.0", - "peer": true, "dependencies": { "@opentelemetry/api-logs": "0.57.2", "@types/shimmer": "^1.2.0", @@ -2322,7 +3229,6 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.34.0.tgz", "integrity": "sha512-aKcOkyrorBGlajjRdVoJWHTxfxO1vCNHLJVlSDaRHDIdjU+pX8IYQPvPDkYiujKLbRnWU+1TBwEt0QRgSm4SGA==", "license": "Apache-2.0", - "peer": true, "engines": { "node": ">=14" } @@ -2342,6 +3248,12 @@ "@opentelemetry/api": "^1.1.0" } }, + "node_modules/@pinojs/redact": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@pinojs/redact/-/redact-0.4.0.tgz", + "integrity": "sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg==", + "license": "MIT" + }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -2894,8 +3806,7 @@ "version": "0.33.22", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.33.22.tgz", "integrity": "sha512-auUj4k+f4pyrIVf4GW5UKquSZFHJWri06QgARy9C0t9ZTjJLIuNIrr1yl9bWcJWJ1Gz1vOvYN1D+QPaIlNMVkQ==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@sindresorhus/merge-streams": { "version": "4.0.0", @@ -2981,7 +3892,6 @@ "integrity": "sha512-NMv9ASNARoKksWtsq/SHakpYAYnhBrQgGD8zkLYk/jaK8jUGn08CfEdTRgYhMypUQAfzSP8W6gNLe0q19/t4VA==", "devOptional": true, "license": "MIT", - "peer": true, "dependencies": { "@types/node": "*" } @@ -3073,7 +3983,6 @@ "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.6.1.tgz", "integrity": "sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w==", "license": "MIT", - "peer": true, "dependencies": { "@types/node": "*", "pg-protocol": "*", @@ -3173,7 +4082,6 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -3620,10 +4528,18 @@ } }, "node_modules/bare-events": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.4.2.tgz", - "integrity": "sha512-qMKFd2qG/36aA4GwvKq8MxnPgCQAmBWmSyLWsJcbn8v03wvIPQ/hG1Ms8bPzndZxMDoHpxez5VOS+gC9Yi24/Q==", - "license": "Apache-2.0" + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz", + "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==", + "license": "Apache-2.0", + "peerDependencies": { + "bare-abort-controller": "*" + }, + "peerDependenciesMeta": { + "bare-abort-controller": { + "optional": true + } + } }, "node_modules/bare-fs": { "version": "2.3.5", @@ -3693,7 +4609,6 @@ "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.2.2.tgz", "integrity": "sha512-g+ueNGKkrjMazDG3elZO1pNs3HY5+mMmOet1jtKyhOaCnkLzitxf26z7hoAEkDNgdNmnc1KIlt/dw6Po6xZMpA==", "license": "Apache-2.0", - "peer": true, "dependencies": { "bare-path": "^3.0.0" } @@ -3799,7 +4714,6 @@ "integrity": "sha512-EwhOpyXiOEL/lKzHz9AW1msWFNzGc/z+LzeB3/jnFJpxu+th2yqvzsSWas1v9jgs9+xiXJcD5A8CJxAG2TaghQ==", "hasInstallScript": true, "license": "MIT", - "peer": true, "dependencies": { "bindings": "^1.5.0", "prebuild-install": "^7.1.1" @@ -3887,6 +4801,12 @@ "node": ">=8" } }, + "node_modules/browser-or-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/browser-or-node/-/browser-or-node-2.1.1.tgz", + "integrity": "sha512-8CVjaLJGuSKMVTxJ2DpBl5XnlNDiT4cQFeuCJJrvJmts9YrTZDizTX7PjC2s6W4x+MBGZeEY6dGMrF04/6Hgqg==", + "license": "MIT" + }, "node_modules/browserslist": { "version": "4.25.0", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.0.tgz", @@ -3906,7 +4826,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "caniuse-lite": "^1.0.30001718", "electron-to-chromium": "^1.5.160", @@ -4235,7 +5154,6 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.2.tgz", "integrity": "sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==", "license": "MIT", - "peer": true, "engines": { "node": ">=20" } @@ -4277,7 +5195,6 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", "license": "MIT", - "peer": true, "engines": { "node": ">=18" } @@ -4811,6 +5728,15 @@ "node": ">= 0.8" } }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/detect-libc": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", @@ -5354,6 +6280,15 @@ "node": ">=0.8.x" } }, + "node_modules/events-universal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/events-universal/-/events-universal-1.0.1.tgz", + "integrity": "sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==", + "license": "Apache-2.0", + "dependencies": { + "bare-events": "^2.7.0" + } + }, "node_modules/expand-template": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", @@ -5363,6 +6298,12 @@ "node": ">=6" } }, + "node_modules/expect-type": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-0.15.0.tgz", + "integrity": "sha512-yWnriYB4e8G54M5/fAFj7rCIBiKs1HAACaY13kCz6Ku0dezjS9aMcfcdVK2X8Tv2tEV1BPz/wKfQ7WA4S/d8aA==", + "license": "Apache-2.0" + }, "node_modules/external-editor": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", @@ -6816,6 +7757,12 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/itty-router": { + "version": "5.0.22", + "resolved": "https://registry.npmjs.org/itty-router/-/itty-router-5.0.22.tgz", + "integrity": "sha512-9hmdGErWdYDOurGYxSbqLhy4EFReIwk71hMZTJ5b+zfa2zjMNV1ftFno2b8VjAQvX615gNB8Qxbl9JMRqHnIVA==", + "license": "MIT" + }, "node_modules/jackspeak": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", @@ -7388,14 +8335,44 @@ } }, "node_modules/noise-handshake": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/noise-handshake/-/noise-handshake-3.1.0.tgz", - "integrity": "sha512-0S1qkUvMbTvZCfgr/vSkVT84YyvI4Q0OLwSc5BFxVmjaePrxAwVeXeJDY3A7N/7+qj95gZ15LaNoP9ZnBXH5Lw==", - "license": "ISC", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/noise-handshake/-/noise-handshake-4.2.0.tgz", + "integrity": "sha512-9O/VTNX/E2/AToyMTTDU0J/4WhaXMTdqc2DHs9vf+snoZ0cenSBq0dNYTVV1snYYEkmo6QeRrYMxtqtoYnY+LA==", + "license": "Apache-2.0", "dependencies": { "b4a": "^1.1.0", "nanoassert": "^2.0.0", - "sodium-universal": "^4.0.0" + "sodium-universal": "^5.0.0" + } + }, + "node_modules/noise-handshake/node_modules/sodium-native": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/sodium-native/-/sodium-native-5.0.10.tgz", + "integrity": "sha512-UIw+0AbpCQRuTJF88JWrZomP4O+PXhlWvdopiAJOsUivTyHTf3korMyStxkZuPngSbBEtEfDdc4ewEd8/T4/lA==", + "license": "MIT", + "dependencies": { + "require-addon": "^1.1.0", + "which-runtime": "^1.2.1" + }, + "engines": { + "bare": ">=1.16.0" + } + }, + "node_modules/noise-handshake/node_modules/sodium-universal": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/sodium-universal/-/sodium-universal-5.0.1.tgz", + "integrity": "sha512-rv+aH+tnKB5H0MAc2UadHShLMslpJsc4wjdnHRtiSIEYpOetCgu8MS4ExQRia+GL/MK3uuCyZPeEsi+J3h+Q+Q==", + "license": "MIT", + "dependencies": { + "sodium-native": "^5.0.1" + }, + "peerDependencies": { + "sodium-javascript": "~0.8.0" + }, + "peerDependenciesMeta": { + "sodium-javascript": { + "optional": true + } } }, "node_modules/normalize-package-data": { @@ -7903,6 +8880,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/p-mutex": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/p-mutex/-/p-mutex-0.1.0.tgz", + "integrity": "sha512-JXTGUNjI6eLzbtYGhFqmad8Tp5wDBsaGDwrvXuoRzIZ6EyKZr5jlNO9sFe83T6/K//lhyONS4ejCocvGNYJz7Q==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/p-queue": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-8.1.1.tgz", @@ -8801,7 +9793,6 @@ "version": "3.5.0", "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.5.0.tgz", "integrity": "sha512-TYu2L+TGhmNsXCtByont89u+ATQLcDy6A+++PwLXYunRtOm7XnaD+65s1pvewaOxMYR0eOkMXn9/i0saBxxpnQ==", - "peer": true, "bin": { "rollup": "dist/bin/rollup" }, @@ -8930,6 +9921,35 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/run-time-assertions": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/run-time-assertions/-/run-time-assertions-1.5.2.tgz", + "integrity": "sha512-ccfwvjGuNU14cSSXLlmPRiqEgMfA7w3J2TViO79zMnzXGvE6FJ0dxnhIQGwe5r/vwySOJ4sqZksexo9wyAlA8g==", + "deprecated": "Use @augment-vir/assert instead.", + "license": "(MIT or CC0 1.0)", + "dependencies": { + "@augment-vir/common": "^29.3.0", + "expect-type": "~0.15.0", + "type-fest": "^4.22.0" + } + }, + "node_modules/run-time-assertions/node_modules/@augment-vir/common": { + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/@augment-vir/common/-/common-29.3.0.tgz", + "integrity": "sha512-k3OX35/576thmGUzQUBcCKGarb7ONBfiu07+iV2vxmjl7VoB1rOB0vu8WqgB1ceJq2EMLDPXY18hHpJ9WeTHXQ==", + "license": "MIT", + "dependencies": { + "browser-or-node": "^3.0.0", + "run-time-assertions": "^1.5.1", + "type-fest": "^4.21.0" + } + }, + "node_modules/run-time-assertions/node_modules/browser-or-node": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/browser-or-node/-/browser-or-node-3.0.0.tgz", + "integrity": "sha512-iczIdVJzGEYhP5DqQxYM9Hh7Ztpqqi+CXZpSmX8ALFs9ecXkQIeqRyM6TfxEfMVpwhl3dSuDvxdzzo9sUOIVBQ==", + "license": "MIT" + }, "node_modules/rw": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", @@ -9049,6 +10069,17 @@ "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", "license": "ISC" }, + "node_modules/secret-stream-http": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/secret-stream-http/-/secret-stream-http-1.0.1.tgz", + "integrity": "sha512-vfbvQ/jL7DxptsDqs2NvKqF5tWZ65oShV5IdmaH1+zRrNeV/vxZTf6Gh1Uml/1bCtou7m3jYmcCHCB+ZnHNrBw==", + "license": "MIT", + "dependencies": { + "@hyperswarm/secret-stream": "^6.8.1", + "streamx": "^2.22.1", + "undici": "^6.21.3" + } + }, "node_modules/secure-json-parse": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz", @@ -9511,17 +10542,14 @@ } }, "node_modules/streamx": { - "version": "2.20.1", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.20.1.tgz", - "integrity": "sha512-uTa0mU6WUC65iUvzKH4X9hEdvSW7rbPxPtwfWiLMSj3qTdQbAiUboZTxauKfpFuGIGa1C2BYijZ7wgdUXICJhA==", + "version": "2.23.0", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.23.0.tgz", + "integrity": "sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==", "license": "MIT", "dependencies": { + "events-universal": "^1.0.0", "fast-fifo": "^1.3.2", - "queue-tick": "^1.0.1", "text-decoder": "^1.1.0" - }, - "optionalDependencies": { - "bare-events": "^2.2.0" } }, "node_modules/string_decoder": { @@ -10118,6 +11146,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/typebox": { + "version": "1.0.81", + "resolved": "https://registry.npmjs.org/typebox/-/typebox-1.0.81.tgz", + "integrity": "sha512-bCslZUmZESHhBn4kHDghzH2oo3qu8m2W89xDLxQHv/aPvY4i81Nd1jvijlBp9wSpsVytDSfSoosbiBAjgsNb2Q==", + "license": "MIT" + }, "node_modules/typed-array-buffer": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", @@ -10192,12 +11226,21 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/typed-event-target": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/typed-event-target/-/typed-event-target-3.4.0.tgz", + "integrity": "sha512-BvSk33Dgo+kubQpbRqiI8A7C5obN0hRydWYya/LTZQoPTCpmB4zScNJSckuKBJDq62A/sCRlZN8ZHgSQxVAKqw==", + "license": "(MIT or CC0 1.0)", + "dependencies": { + "@augment-vir/common": "^26.2.0", + "run-time-assertions": "^1.1.0" + } + }, "node_modules/typescript": { "version": "5.2.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", "devOptional": true, - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -10242,9 +11285,9 @@ } }, "node_modules/undici": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.19.8.tgz", - "integrity": "sha512-U8uCCl2x9TK3WANvmBavymRzxbfFYG+tAu+fgx3zxQy3qdagQqBLwJVrdyO1TBfUXvfKveMKJZhpvUYoOjM+4g==", + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.23.0.tgz", + "integrity": "sha512-VfQPToRA5FZs/qJxLIinmU59u0r7LXqoJkCzinq3ckNJp3vKEh7jTWN589YQ5+aoAC/TGRLyJLCPKcLQbM8r9g==", "license": "MIT", "engines": { "node": ">=18.17" @@ -10507,8 +11550,7 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/which-runtime/-/which-runtime-1.2.1.tgz", "integrity": "sha512-8feIHccQFH/whiA1fD1b4c5+Q7T4ry1g1oHYc2mHnFh81tTQFsCvy3zhS2geUapkFAVBddUT/AM1a3rbqJweFg==", - "license": "Apache-2.0", - "optional": true + "license": "Apache-2.0" }, "node_modules/which-typed-array": { "version": "1.1.19", @@ -10629,6 +11671,36 @@ } } }, + "node_modules/wsl-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", + "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", + "license": "MIT", + "dependencies": { + "is-wsl": "^3.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wsl-utils/node_modules/is-wsl": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "license": "MIT", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/xache": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/xache/-/xache-1.2.1.tgz", diff --git a/src/backend/package.json b/src/backend/package.json index 1b2e39ebe3..d0a551dfbb 100644 --- a/src/backend/package.json +++ b/src/backend/package.json @@ -13,9 +13,10 @@ "author": "Digital Democracy", "license": "MIT", "dependencies": { - "@comapeo/core": "5.2.1", + "@comapeo/core": "5.4.0", "@comapeo/default-categories": "1.0.0", "@comapeo/ipc": "6.0.2", + "@comapeo/map-server": "1.0.0-pre.6", "@sentry/node": "9.28.0", "@sentry/rollup-plugin": "^3.5.0", "debug": "^4.3.4", diff --git a/src/frontend/AppNavigator.tsx b/src/frontend/AppNavigator.tsx index 3a1f3288c2..b4f86196fa 100644 --- a/src/frontend/AppNavigator.tsx +++ b/src/frontend/AppNavigator.tsx @@ -6,7 +6,6 @@ import * as React from 'react'; import * as SplashScreen from 'expo-splash-screen'; import {type AppStackParamsList} from './sharedTypes/navigation'; -import {useSetUpInvitesListeners} from '@comapeo/core-react'; import {RootStackNavigator} from './Navigation/Stack'; import type Sentry from '@sentry/react-native'; import {PostHogProvider} from 'posthog-react-native'; @@ -23,7 +22,6 @@ export const AppNavigator = ({ }) => { const containerRef = React.useRef>(null); - useSetUpInvitesListeners(); if (permissionAsked) { SplashScreen.hide(); diff --git a/src/frontend/Navigation/Stack/AppScreens.tsx b/src/frontend/Navigation/Stack/AppScreens.tsx index dec53f8159..1afe34c015 100644 --- a/src/frontend/Navigation/Stack/AppScreens.tsx +++ b/src/frontend/Navigation/Stack/AppScreens.tsx @@ -141,6 +141,7 @@ import {WhatsIncludedBottomSheet} from '../../screens/RemoteArchive/WhatsInclude import {MapAddedBottomSheet} from '../../screens/BackgroundMaps/MapAddedBottomSheet.tsx'; import {DeleteCustomMapBottomSheet} from '../../screens/BackgroundMaps/DeleteCustomMapBottomSheet.tsx'; import {ConfirmDiscardTrackBottomSheet} from '../../screens/SaveTrack/ConfirmDiscardTrackBottomSheet.tsx'; +import {WaitingForMapAccept} from '../../screens/BackgroundMaps/WaitingForMapAccept.tsx'; export const TAB_BAR_HEIGHT = 70; @@ -399,6 +400,11 @@ export const createAppScreens = ({ component={BackgroundMapsScreen} options={createBackgroundMapsNavigationOptions({intl})} /> + {process.env.EXPO_PUBLIC_FEATURE_TEST_DATA_UI && ( { + const [mapServerPort, setMapServerPort] = React.useState(null); + + React.useEffect(() => { + const subscription = nodejs.channel.addListener( + 'map-server:port', + (data: {port: number}) => { + setMapServerPort(data.port); + }, + ); + + return () => { + // @ts-expect-error - nodejs-mobile-react-native types are incorrect + subscription.remove(); + }; + }, []); + return ( @@ -100,18 +117,30 @@ export const AppProviders = ({ - - - - {children} - - - + { + if (mapServerPort === null) { + throw new Error( + 'Map server port not yet available', + ); + } + return new URL( + `http://localhost:${mapServerPort}/`, + ); + }}> + + + + {children} + + + + diff --git a/src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx b/src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx index 1eb5eea9b4..775d34e986 100644 --- a/src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx +++ b/src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx @@ -283,6 +283,7 @@ function MapInfoScreen({ onRemoveMap: () => void; }) { const {formatMessage: t} = useIntl(); + const {navigate} = useNavigationFromRoot(); const calculatedSize = customMapInfo.size ? bytesToMegabytes(customMapInfo.size).toFixed(0) @@ -329,7 +330,7 @@ function MapInfoScreen({ fullSize text={t(m.sendMap)} onPress={() => { - // navigate('SelectMapShareDevice'); + navigate('SelectMapShareDevice'); }} renderIcon={({color, size}) => ( diff --git a/src/frontend/screens/BackgroundMaps/WaitingForMapAccept.tsx b/src/frontend/screens/BackgroundMaps/WaitingForMapAccept.tsx new file mode 100644 index 0000000000..0a3bb77b7a --- /dev/null +++ b/src/frontend/screens/BackgroundMaps/WaitingForMapAccept.tsx @@ -0,0 +1,126 @@ +import * as React from 'react'; +import {AppState, StyleSheet, View} from 'react-native'; +import {defineMessages, useIntl} from 'react-intl'; +import * as Sentry from '@sentry/react-native'; + +import { + useCancelSentMapShare, + useSingleSentMapShare, +} from '@comapeo/core-react'; +import InviteSent from '../../images/InviteSent.svg'; +import {usePreventAndroidBackButton} from '../../hooks/usePreventAndroidBackButton'; +import {HeaderText} from '../../sharedComponents/Text/HeaderText'; +import {BodyText} from '../../sharedComponents/Text/BodyText'; +import {type NativeRootNavigationProps} from '../../sharedTypes/navigation'; +import {TextButton} from '../../sharedComponents/TextButton'; + +const m = defineMessages({ + waitingMessage: { + id: 'screens.Settings.MapManagement.WaitingForMapToAccept.waitingMessage', + defaultMessage: 'Waiting for Device to Accept Map', + }, + timerMessage: { + id: 'screens.Settings.MapManagement.WaitingForMapToAccept.timerMessage', + defaultMessage: 'Map sent {time}s ago', + }, + cancel: { + id: 'screens.Settings.MapManagement.WaitingForMapToAccept.cancel', + defaultMessage: 'Cancel', + }, +}); + +export function WaitingForMapAccept({ + route, + navigation, +}: NativeRootNavigationProps<'WaitingForMapAccept'>) { + const {formatMessage: t} = useIntl(); + const {shareId} = route.params; + + const [time, setTime] = React.useState(0); + const mapShare = useSingleSentMapShare({shareId}); + const {mutate: cancelMapShare} = useCancelSentMapShare(); + + usePreventAndroidBackButton(); + + const cancelShare = React.useCallback(() => { + cancelMapShare( + {shareId}, + { + onSuccess: () => { + navigation.goBack(); + }, + onError: (err: Error) => { + Sentry.captureException(err); + navigation.replace('ErrorBottomSheet'); + }, + }, + ); + }, [navigation, cancelMapShare, shareId]); + + React.useEffect(() => { + const subscription = AppState.addEventListener('change', nextState => { + if (nextState === 'background') { + cancelShare(); + } + }); + + return () => subscription.remove(); + }, [cancelShare]); + + React.useEffect(() => { + if (!mapShare) return; + + // Stay on screen while pending - waiting for recipient to accept + if (mapShare.status === 'pending') return; + + if (mapShare.status === 'downloading' || mapShare.status === 'completed') { + // TODO: Navigate to SendingMap screen once that PR is ready + // navigation.replace('SendingMap', {shareId}); + navigation.popTo('BackgroundMaps'); + } else if (mapShare.status === 'declined') { + // TODO: Navigate to MapDeclineScreen when that PR is ready + // navigation.navigate('MapDeclineScreen', {reason: mapShare.reason}); + navigation.popTo('BackgroundMaps'); + } else if (mapShare.status === 'canceled') { + navigation.popTo('BackgroundMaps'); + } + }, [mapShare, navigation]); + + React.useEffect(() => { + const interval = setInterval(() => setTime(prev => prev + 1), 1000); + + return () => clearInterval(interval); + }, []); + + return ( + + + + {t(m.waitingMessage)} + + + {t(m.timerMessage, {time: formatElapsed(time)})} + + + + + ); +} + +function formatElapsed(totalSeconds: number) { + const minutes = Math.floor(totalSeconds / 60); + const seconds = totalSeconds % 60; + + return `${minutes.toString().padStart(2, '0')}:${seconds + .toString() + .padStart(2, '0')}`; +} + +const styles = StyleSheet.create({ + container: { + alignItems: 'center', + justifyContent: 'center', + gap: 35, + flex: 1, + }, +}); diff --git a/src/frontend/sharedComponents/SelectDevice.tsx b/src/frontend/sharedComponents/SelectDevice.tsx index b9fb288981..187d53a5ec 100644 --- a/src/frontend/sharedComponents/SelectDevice.tsx +++ b/src/frontend/sharedComponents/SelectDevice.tsx @@ -1,8 +1,13 @@ import React from 'react'; import {defineMessages, useIntl} from 'react-intl'; import {ScrollView, StyleSheet, View, TouchableOpacity} from 'react-native'; +import * as Sentry from '@sentry/react-native'; -import {useManyMembers} from '@comapeo/core-react'; +import { + useManyMembers, + useSendMapShare, + type SentMapShareState, +} from '@comapeo/core-react'; import {type MemberInfo} from '@comapeo/core/dist/member-api'; import {type MapeoClientApi} from '@comapeo/ipc'; import {useLocalDiscoveryState} from '../hooks/useLocalDiscoveryState'; @@ -60,8 +65,9 @@ export const SelectDevice = ({ const {formatMessage: t} = useIntl(); const availablePeers = useInitiallyConnectedPeers(); - const projectId = useActiveProject(); - const projectMembersQuery = useManyMembers(projectId); + const {projectId} = useActiveProject(); + const projectMembersQuery = useManyMembers({projectId}); + const {mutate: sendMapShare} = useSendMapShare({projectId}); const selectionMode: SelectionMode = route.name === 'SelectMapShareDevice' ? 'shareMap' : 'invites'; @@ -106,8 +112,20 @@ export const SelectDevice = ({ const handlePress = () => { if (selectionMode === 'shareMap') { - // TODO: Navigate to map sharing in subsequent PR - console.log('Share map with device:', deviceId); + sendMapShare( + {projectId, receiverDeviceId: deviceId, mapId: 'custom'}, + { + onError: (err: Error) => { + Sentry.captureException(err); + navigation.navigate('ErrorBottomSheet'); + }, + onSuccess: (result: SentMapShareState) => { + navigation.navigate('WaitingForMapAccept', { + shareId: result.shareId, + }); + }, + }, + ); } else { navigation.navigate('SelectInviteeRole', { name: name || '', diff --git a/src/frontend/sharedTypes/navigation.ts b/src/frontend/sharedTypes/navigation.ts index 1fdc045d26..f3cf894594 100644 --- a/src/frontend/sharedTypes/navigation.ts +++ b/src/frontend/sharedTypes/navigation.ts @@ -122,6 +122,9 @@ export type RootStackParamsList = { SettingsPrivacyPolicy: undefined; SuccessfullyAddedArchive: {archiveName: string; url: string}; BackgroundMaps: undefined; + WaitingForMapAccept: { + shareId: string; + }; ExchangeSettingsBottomSheet: undefined; AudioAskPermissionBottomSheet: { audioPermission: PermissionResponse; From 160959642262c1f2b5fc2e9ad90ba44b803747ac Mon Sep 17 00:00:00 2001 From: Gregor MacLennan Date: Thu, 12 Feb 2026 18:08:11 +0000 Subject: [PATCH 03/72] patch and fix --- ...peo-core-react-7.3.0-pre.1-MAP-SHARING.tgz | Bin 60576 -> 0 bytes ...peo-core-react-7.3.0-pre.2-MAP-SHARING.tgz | Bin 0 -> 60583 bytes package-lock.json | 15 +- package.json | 2 +- src/backend/package-lock.json | 185 +++++++++--------- src/backend/package.json | 5 +- src/backend/patches/README.md | 6 + src/backend/patches/typebox+1.0.81.patch | 23 +++ 8 files changed, 128 insertions(+), 108 deletions(-) delete mode 100644 comapeo-core-react-7.3.0-pre.1-MAP-SHARING.tgz create mode 100644 comapeo-core-react-7.3.0-pre.2-MAP-SHARING.tgz create mode 100644 src/backend/patches/typebox+1.0.81.patch diff --git a/comapeo-core-react-7.3.0-pre.1-MAP-SHARING.tgz b/comapeo-core-react-7.3.0-pre.1-MAP-SHARING.tgz deleted file mode 100644 index 8636bd4b140ec9dad26f95bc5bd216b13a868d8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60576 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 FzW^vEAS?g? diff --git a/comapeo-core-react-7.3.0-pre.2-MAP-SHARING.tgz b/comapeo-core-react-7.3.0-pre.2-MAP-SHARING.tgz new file mode 100644 index 0000000000000000000000000000000000000000..c92c3d3d06daff864f427b79e1d0604f873b3531 GIT binary patch literal 60583 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�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 aBk1gD7tj)PxtsX@49s_+=mw#K1NmP|y0J+B literal 0 HcmV?d00001 diff --git a/package-lock.json b/package-lock.json index e7fb1d812d..2a83efc4a3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "hasInstallScript": true, "dependencies": { "@bam.tech/react-native-image-resizer": "3.0.11", - "@comapeo/core-react": "file:comapeo-core-react-7.3.0-pre.1-MAP-SHARING.tgz", + "@comapeo/core-react": "file:comapeo-core-react-7.3.0-pre.2-MAP-SHARING.tgz", "@comapeo/ipc": "file:comapeo-ipc-6.1.0-pre.0.tgz", "@comapeo/nodejs-mobile-react-native": "18.20.4-2", "@expo-google-fonts/rubik": "0.4.2", @@ -2633,8 +2633,8 @@ }, "node_modules/@comapeo/core-react": { "version": "7.2.0", - "resolved": "file:comapeo-core-react-7.3.0-pre.1-MAP-SHARING.tgz", - "integrity": "sha512-98NquL02EtiaVmvdn/1mO2s0mrEvWJMhU5f0TZfINhIoRceT4Fk6AFjFi5LZRzfVS9i/94MFEaLej9wO5GJ9Aw==", + "resolved": "file:comapeo-core-react-7.3.0-pre.2-MAP-SHARING.tgz", + "integrity": "sha512-MisheSfZEmfIVSfQKDoS+nExR/5QE2t/FToberoscQxpl7o7LB/gA+xmq7ltm4H4exWQOWhIOldGMxuePsuy/g==", "license": "MIT", "dependencies": { "ensure-error": "5.0.0", @@ -2891,7 +2891,6 @@ }, "node_modules/@comapeo/map-server/node_modules/@envelop/instrumentation": { "version": "1.0.0", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -2941,7 +2940,6 @@ }, "node_modules/@comapeo/map-server/node_modules/@fastify/busboy": { "version": "3.2.0", - "extraneous": true, "inBundle": true, "license": "MIT" }, @@ -3099,7 +3097,6 @@ }, "node_modules/@comapeo/map-server/node_modules/@whatwg-node/disposablestack": { "version": "0.0.6", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -3112,7 +3109,6 @@ }, "node_modules/@comapeo/map-server/node_modules/@whatwg-node/fetch": { "version": "0.10.13", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -3125,7 +3121,6 @@ }, "node_modules/@comapeo/map-server/node_modules/@whatwg-node/node-fetch": { "version": "0.8.4", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -3140,7 +3135,6 @@ }, "node_modules/@comapeo/map-server/node_modules/@whatwg-node/promise-helpers": { "version": "1.3.2", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -3152,7 +3146,6 @@ }, "node_modules/@comapeo/map-server/node_modules/@whatwg-node/server": { "version": "0.10.17", - "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -3830,13 +3823,11 @@ }, "node_modules/@comapeo/map-server/node_modules/tslib": { "version": "2.8.1", - "extraneous": true, "inBundle": true, "license": "0BSD" }, "node_modules/@comapeo/map-server/node_modules/urlpattern-polyfill": { "version": "10.1.0", - "extraneous": true, "inBundle": true, "license": "MIT" }, diff --git a/package.json b/package.json index 00adb49558..e03f49ed99 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ }, "dependencies": { "@bam.tech/react-native-image-resizer": "3.0.11", - "@comapeo/core-react": "file:comapeo-core-react-7.3.0-pre.1-MAP-SHARING.tgz", + "@comapeo/core-react": "file:comapeo-core-react-7.3.0-pre.2-MAP-SHARING.tgz", "@comapeo/ipc": "file:comapeo-ipc-6.1.0-pre.0.tgz", "@comapeo/nodejs-mobile-react-native": "18.20.4-2", "@expo-google-fonts/rubik": "0.4.2", diff --git a/src/backend/package-lock.json b/src/backend/package-lock.json index eacea835d8..c7fa3ffa72 100644 --- a/src/backend/package-lock.json +++ b/src/backend/package-lock.json @@ -10,7 +10,7 @@ "hasInstallScript": true, "license": "MIT", "dependencies": { - "@comapeo/core": "5.2.1", + "@comapeo/core": "5.4.1", "@comapeo/default-categories": "1.0.0", "@comapeo/fallback-smp": "1.0.0", "@comapeo/ipc": "file:../../comapeo-ipc-6.1.0-pre.0.tgz", @@ -316,9 +316,9 @@ } }, "node_modules/@comapeo/core": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@comapeo/core/-/core-5.2.1.tgz", - "integrity": "sha512-W+THNXlKjutzlmtNxQR203YVUd9roHlna4Z3n8E64qxleBaaMSFKPpRPMHPhlYgALCP6J61B9J3rqnJEFnZLtg==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/@comapeo/core/-/core-5.4.1.tgz", + "integrity": "sha512-AJ3XwKIkdHQCQ/EZFjPujQ/a1pFRDqtcifJIhxaq/Sl9qdykxg8gT+CQcJ8/v12Flx/7yQ5cvgGWGMGEdbTXKg==", "license": "MIT", "dependencies": { "@comapeo/fallback-smp": "^1.0.0", @@ -343,7 +343,7 @@ "debug": "^4.3.4", "dot-prop": "^9.0.0", "dot-prop-extra": "^10.2.0", - "drizzle-orm": "^1.0.0-beta.1-ac4ce44", + "drizzle-orm": "1.0.0-beta.1-fd8bfcc", "ensure-error": "^4.0.0", "fastify": "^4.0.0", "fastify-plugin": "^4.5.1", @@ -394,6 +394,23 @@ "tiny-typed-emitter": "^2.1.0" } }, + "node_modules/@comapeo/core/node_modules/@hyperswarm/secret-stream": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/@hyperswarm/secret-stream/-/secret-stream-6.7.1.tgz", + "integrity": "sha512-isb18Pt6lXBpOQMRmpqItw+kYynXilOFyOhto/RMP15WQtTWC0rR5jfZPYXU7ZYV6Kxd2lyQ4ZBevoIcvEJHEQ==", + "license": "Apache-2.0", + "dependencies": { + "b4a": "^1.1.0", + "hypercore-crypto": "^3.3.1", + "noise-curve-ed": "^2.0.1", + "noise-handshake": "^3.0.2", + "sodium-secretstream": "^1.1.0", + "sodium-universal": "^4.0.0", + "streamx": "^2.14.0", + "timeout-refresh": "^2.0.0", + "unslab": "^1.3.0" + } + }, "node_modules/@comapeo/core/node_modules/@types/node": { "version": "18.19.50", "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.50.tgz", @@ -403,6 +420,17 @@ "undici-types": "~5.26.4" } }, + "node_modules/@comapeo/core/node_modules/noise-handshake": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/noise-handshake/-/noise-handshake-3.1.0.tgz", + "integrity": "sha512-0S1qkUvMbTvZCfgr/vSkVT84YyvI4Q0OLwSc5BFxVmjaePrxAwVeXeJDY3A7N/7+qj95gZ15LaNoP9ZnBXH5Lw==", + "license": "ISC", + "dependencies": { + "b4a": "^1.1.0", + "nanoassert": "^2.0.0", + "sodium-universal": "^4.0.0" + } + }, "node_modules/@comapeo/core/node_modules/undici-types": { "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", @@ -1897,53 +1925,6 @@ "@sinclair/typebox": ">=0.26 <=0.33" } }, - "node_modules/@hyperswarm/secret-stream": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/@hyperswarm/secret-stream/-/secret-stream-6.9.1.tgz", - "integrity": "sha512-xb0S5y3YJwBakD77JOGBHlBxdp63mHClZoXBYoLv+9wH8e054ESKlmQptWqjJK5dv5VMUIVYOJB4MaOpB0JdGw==", - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.1.0", - "hypercore-crypto": "^3.3.1", - "noise-curve-ed": "^2.0.1", - "noise-handshake": "^4.0.0", - "sodium-secretstream": "^1.1.0", - "sodium-universal": "^5.0.0", - "streamx": "^2.14.0", - "timeout-refresh": "^2.0.0", - "unslab": "^1.3.0" - } - }, - "node_modules/@hyperswarm/secret-stream/node_modules/sodium-native": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/sodium-native/-/sodium-native-5.0.10.tgz", - "integrity": "sha512-UIw+0AbpCQRuTJF88JWrZomP4O+PXhlWvdopiAJOsUivTyHTf3korMyStxkZuPngSbBEtEfDdc4ewEd8/T4/lA==", - "license": "MIT", - "dependencies": { - "require-addon": "^1.1.0", - "which-runtime": "^1.2.1" - }, - "engines": { - "bare": ">=1.16.0" - } - }, - "node_modules/@hyperswarm/secret-stream/node_modules/sodium-universal": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/sodium-universal/-/sodium-universal-5.0.1.tgz", - "integrity": "sha512-rv+aH+tnKB5H0MAc2UadHShLMslpJsc4wjdnHRtiSIEYpOetCgu8MS4ExQRia+GL/MK3uuCyZPeEsi+J3h+Q+Q==", - "license": "MIT", - "dependencies": { - "sodium-native": "^5.0.1" - }, - "peerDependencies": { - "sodium-javascript": "~0.8.0" - }, - "peerDependenciesMeta": { - "sodium-javascript": { - "optional": true - } - } - }, "node_modules/@inquirer/checkbox": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-3.0.1.tgz", @@ -7007,6 +6988,34 @@ "integrity": "sha512-WsmSu05Ve1hXaT/2Etwz7mgZ1sAXe8EaveahUfaeECllxvYNaP5EbAPw5YaA4OqR3d217litGt4qKch9TBnavA==", "license": "Apache-2.0" }, + "node_modules/hypercore/node_modules/@hyperswarm/secret-stream": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/@hyperswarm/secret-stream/-/secret-stream-6.7.1.tgz", + "integrity": "sha512-isb18Pt6lXBpOQMRmpqItw+kYynXilOFyOhto/RMP15WQtTWC0rR5jfZPYXU7ZYV6Kxd2lyQ4ZBevoIcvEJHEQ==", + "license": "Apache-2.0", + "dependencies": { + "b4a": "^1.1.0", + "hypercore-crypto": "^3.3.1", + "noise-curve-ed": "^2.0.1", + "noise-handshake": "^3.0.2", + "sodium-secretstream": "^1.1.0", + "sodium-universal": "^4.0.0", + "streamx": "^2.14.0", + "timeout-refresh": "^2.0.0", + "unslab": "^1.3.0" + } + }, + "node_modules/hypercore/node_modules/noise-handshake": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/noise-handshake/-/noise-handshake-3.1.0.tgz", + "integrity": "sha512-0S1qkUvMbTvZCfgr/vSkVT84YyvI4Q0OLwSc5BFxVmjaePrxAwVeXeJDY3A7N/7+qj95gZ15LaNoP9ZnBXH5Lw==", + "license": "ISC", + "dependencies": { + "b4a": "^1.1.0", + "nanoassert": "^2.0.0", + "sodium-universal": "^4.0.0" + } + }, "node_modules/hyperdrive": { "version": "11.5.3", "resolved": "https://registry.npmjs.org/hyperdrive/-/hyperdrive-11.5.3.tgz", @@ -8325,47 +8334,6 @@ "sodium-universal": "^4.0.0" } }, - "node_modules/noise-handshake": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/noise-handshake/-/noise-handshake-4.2.0.tgz", - "integrity": "sha512-9O/VTNX/E2/AToyMTTDU0J/4WhaXMTdqc2DHs9vf+snoZ0cenSBq0dNYTVV1snYYEkmo6QeRrYMxtqtoYnY+LA==", - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.1.0", - "nanoassert": "^2.0.0", - "sodium-universal": "^5.0.0" - } - }, - "node_modules/noise-handshake/node_modules/sodium-native": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/sodium-native/-/sodium-native-5.0.10.tgz", - "integrity": "sha512-UIw+0AbpCQRuTJF88JWrZomP4O+PXhlWvdopiAJOsUivTyHTf3korMyStxkZuPngSbBEtEfDdc4ewEd8/T4/lA==", - "license": "MIT", - "dependencies": { - "require-addon": "^1.1.0", - "which-runtime": "^1.2.1" - }, - "engines": { - "bare": ">=1.16.0" - } - }, - "node_modules/noise-handshake/node_modules/sodium-universal": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/sodium-universal/-/sodium-universal-5.0.1.tgz", - "integrity": "sha512-rv+aH+tnKB5H0MAc2UadHShLMslpJsc4wjdnHRtiSIEYpOetCgu8MS4ExQRia+GL/MK3uuCyZPeEsi+J3h+Q+Q==", - "license": "MIT", - "dependencies": { - "sodium-native": "^5.0.1" - }, - "peerDependencies": { - "sodium-javascript": "~0.8.0" - }, - "peerDependenciesMeta": { - "sodium-javascript": { - "optional": true - } - } - }, "node_modules/normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", @@ -10072,6 +10040,34 @@ "undici": "^6.21.3" } }, + "node_modules/secret-stream-http/node_modules/@hyperswarm/secret-stream": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/@hyperswarm/secret-stream/-/secret-stream-6.7.1.tgz", + "integrity": "sha512-isb18Pt6lXBpOQMRmpqItw+kYynXilOFyOhto/RMP15WQtTWC0rR5jfZPYXU7ZYV6Kxd2lyQ4ZBevoIcvEJHEQ==", + "license": "Apache-2.0", + "dependencies": { + "b4a": "^1.1.0", + "hypercore-crypto": "^3.3.1", + "noise-curve-ed": "^2.0.1", + "noise-handshake": "^3.0.2", + "sodium-secretstream": "^1.1.0", + "sodium-universal": "^4.0.0", + "streamx": "^2.14.0", + "timeout-refresh": "^2.0.0", + "unslab": "^1.3.0" + } + }, + "node_modules/secret-stream-http/node_modules/noise-handshake": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/noise-handshake/-/noise-handshake-3.1.0.tgz", + "integrity": "sha512-0S1qkUvMbTvZCfgr/vSkVT84YyvI4Q0OLwSc5BFxVmjaePrxAwVeXeJDY3A7N/7+qj95gZ15LaNoP9ZnBXH5Lw==", + "license": "ISC", + "dependencies": { + "b4a": "^1.1.0", + "nanoassert": "^2.0.0", + "sodium-universal": "^4.0.0" + } + }, "node_modules/secure-json-parse": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz", @@ -11543,7 +11539,8 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/which-runtime/-/which-runtime-1.2.1.tgz", "integrity": "sha512-8feIHccQFH/whiA1fD1b4c5+Q7T4ry1g1oHYc2mHnFh81tTQFsCvy3zhS2geUapkFAVBddUT/AM1a3rbqJweFg==", - "license": "Apache-2.0" + "license": "Apache-2.0", + "optional": true }, "node_modules/which-typed-array": { "version": "1.1.19", diff --git a/src/backend/package.json b/src/backend/package.json index c697d3c8a1..8b1a863500 100644 --- a/src/backend/package.json +++ b/src/backend/package.json @@ -13,7 +13,7 @@ "author": "Digital Democracy", "license": "MIT", "dependencies": { - "@comapeo/core": "5.2.1", + "@comapeo/core": "5.4.1", "@comapeo/default-categories": "1.0.0", "@comapeo/fallback-smp": "1.0.0", "@comapeo/ipc": "file:../../comapeo-ipc-6.1.0-pre.0.tgz", @@ -44,5 +44,8 @@ "prettier": { "semi": false, "singleQuote": true + }, + "overrides": { + "@hyperswarm/secret-stream": "6.7.1" } } diff --git a/src/backend/patches/README.md b/src/backend/patches/README.md index 6559848aa8..6c349dea9f 100644 --- a/src/backend/patches/README.md +++ b/src/backend/patches/README.md @@ -13,3 +13,9 @@ This is a workaround for [file lock errors on certain Android devices](https://g ### [Avoid using `crc-native` module](./crc-universal+1.0.4+001+crc-universal-use-js-only.patch) Using the native module seems to cause certain devices to crash. See https://github.com/digidem/comapeo-mobile/issues/1096 for more details. + +## `typebox` + +### [Don't use unicode property escapes](./typebox+1.0.81.patch) + +Typebox uses [unicode property escapes](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Regular_expressions/Unicode_character_class_escape#unicode_property_escapes_vs._character_classes) in code which is used to build schemas. We don't use this code, but it is loaded when we use typebox. The unicode property escapes depend on full ICU support in node, and currently the nodejs-mobile build that we use has a minimal ICU build, so the unicode property escapes cause a crash. The patch replaces the property escapes with ascii characters, which should cover most use-cases, and I don't think we even use these code paths anyway. diff --git a/src/backend/patches/typebox+1.0.81.patch b/src/backend/patches/typebox+1.0.81.patch new file mode 100644 index 0000000000..fbe16cb5a1 --- /dev/null +++ b/src/backend/patches/typebox+1.0.81.patch @@ -0,0 +1,23 @@ +diff --git a/node_modules/typebox/build/format/idn-email.mjs b/node_modules/typebox/build/format/idn-email.mjs +index a9ce0c0..88f0712 100644 +--- a/node_modules/typebox/build/format/idn-email.mjs ++++ b/node_modules/typebox/build/format/idn-email.mjs +@@ -1,4 +1,4 @@ +-const IdnEmail = /^(?!.*\.\.)[\p{L}\p{N}!#$%&'*+/=?^_`{|}~-]+(?:\.[\p{L}\p{N}!#$%&'*+/=?^_`{|}~-]+)*@[\p{L}\p{N}](?:[\p{L}\p{N}-]{0,61}[\p{L}\p{N}])?(?:\.[\p{L}\p{N}](?:[\p{L}\p{N}-]{0,61}[\p{L}\p{N}])?)*$/iu; ++const IdnEmail = /^(?!.*\.\.)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/i; + /** Returns true if the value is a Idn Email */ + export function IsIdnEmail(value) { + return IdnEmail.test(value); +diff --git a/node_modules/typebox/build/guard/emit.mjs b/node_modules/typebox/build/guard/emit.mjs +index b9b7ece..ab936d3 100644 +--- a/node_modules/typebox/build/guard/emit.mjs ++++ b/node_modules/typebox/build/guard/emit.mjs +@@ -2,7 +2,7 @@ import * as G from './guard.mjs'; + // ------------------------------------------------------------------ + // Identifier + // ------------------------------------------------------------------ +-const identifierRegExp = /^[\p{ID_Start}_$][\p{ID_Continue}_$\u200C\u200D]*$/u; ++const identifierRegExp = /^[a-zA-Z_$][a-zA-Z0-9_$\u200C\u200D]*$/; + /** Returns true if this value is a valid JavaScript identifier */ + function IsIdentifier(value) { + return identifierRegExp.test(value); From a12372ffcebe7e6b590dcac5fdcbddef8b34f45a Mon Sep 17 00:00:00 2001 From: Gregor MacLennan Date: Thu, 12 Feb 2026 18:11:50 +0000 Subject: [PATCH 04/72] roll back changes for testing --- src/frontend/Navigation/Stack/AppScreens.tsx | 2 -- src/frontend/screens/MapSharing.tsx | 12 ------------ src/frontend/sharedTypes/navigation.ts | 1 - 3 files changed, 15 deletions(-) delete mode 100644 src/frontend/screens/MapSharing.tsx diff --git a/src/frontend/Navigation/Stack/AppScreens.tsx b/src/frontend/Navigation/Stack/AppScreens.tsx index 30e74d88e6..dec53f8159 100644 --- a/src/frontend/Navigation/Stack/AppScreens.tsx +++ b/src/frontend/Navigation/Stack/AppScreens.tsx @@ -141,7 +141,6 @@ import {WhatsIncludedBottomSheet} from '../../screens/RemoteArchive/WhatsInclude import {MapAddedBottomSheet} from '../../screens/BackgroundMaps/MapAddedBottomSheet.tsx'; import {DeleteCustomMapBottomSheet} from '../../screens/BackgroundMaps/DeleteCustomMapBottomSheet.tsx'; import {ConfirmDiscardTrackBottomSheet} from '../../screens/SaveTrack/ConfirmDiscardTrackBottomSheet.tsx'; -import {MapSharing} from '../../screens/MapSharing.tsx'; export const TAB_BAR_HEIGHT = 70; @@ -160,7 +159,6 @@ export const createAppScreens = ({ options={{headerShown: false}} component={HomeTabs} /> - { - const mapShares = useManyReceivedMapShares(); - return ( - - Map Sharing Screen {mapShares.length} - - ); -}; diff --git a/src/frontend/sharedTypes/navigation.ts b/src/frontend/sharedTypes/navigation.ts index 92689980cf..1fdc045d26 100644 --- a/src/frontend/sharedTypes/navigation.ts +++ b/src/frontend/sharedTypes/navigation.ts @@ -50,7 +50,6 @@ export type EarlyOnlyParam = {readonly isEarlyAdopter: true}; export type RootStackParamsList = { Home: NavigatorScreenParams; - MapSharing: undefined; GpsModal: undefined; Settings: undefined; Config: undefined; From afd321d40768f9e41f7836b37731b422ab4c6c2b Mon Sep 17 00:00:00 2001 From: Gregor MacLennan Date: Thu, 12 Feb 2026 18:12:26 +0000 Subject: [PATCH 05/72] remove debug statement --- scripts/build-backend.mjs | 4 ---- 1 file changed, 4 deletions(-) diff --git a/scripts/build-backend.mjs b/scripts/build-backend.mjs index c8e9b79a78..301a9c12a0 100755 --- a/scripts/build-backend.mjs +++ b/scripts/build-backend.mjs @@ -71,10 +71,6 @@ console.group('[BUILD]'); console.log('Installing deps...'); -await $$({ - cwd: nodejsAssetsBackendDirectory, -})`node --version`; - // The install / postinstall scripts for backend dependencies are currently all // for generating / downloading builds of native modules. // We don't need to run these scripts since we pull prebuilds in a later step. From bceae52c658c35726eab54d56c5926708d7ede94 Mon Sep 17 00:00:00 2001 From: Cindy Green Date: Thu, 12 Feb 2026 15:41:54 -0500 Subject: [PATCH 06/72] Tweaks to code to get it to load a custom map. --- package-lock.json | 20 ++++++-- package.json | 2 - src/backend/.nvmrc | 1 - src/backend/package-lock.json | 46 ++++++++----------- src/frontend/contexts/AppProviders.tsx | 10 ++-- src/frontend/hooks/server/maps.ts | 14 ++++-- .../sharedComponents/SelectDevice.tsx | 5 +- 7 files changed, 55 insertions(+), 43 deletions(-) delete mode 100644 src/backend/.nvmrc diff --git a/package-lock.json b/package-lock.json index 51b213ff53..bd7a0b7a56 100644 --- a/package-lock.json +++ b/package-lock.json @@ -41,7 +41,6 @@ "buffer": "6.0.3", "cheap-ruler": "4.0.0", "eventemitter3": "5.0.1", - "eventsource-client": "1.2.0", "expo": "54.0.31", "expo-application": "7.0.8", "expo-asset": "12.0.12", @@ -67,7 +66,6 @@ "fs-extra": "11.3.2", "geojson": "0.5.0", "geojson-geometries-lookup": "0.5.0", - "ky": "1.14.2", "lodash.isequal": "4.5.0", "map-obj": "6.0.0", "nanoid": "5.1.6", @@ -2663,6 +2661,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@comapeo/core-react/node_modules/ky": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/ky/-/ky-1.14.3.tgz", + "integrity": "sha512-9zy9lkjac+TR1c2tG+mkNSVlyOpInnWdSMiue4F+kq8TwJSgv6o8jhLRg8Ho6SnZ9wOYUq/yozts9qQCfk7bIw==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sindresorhus/ky?sponsor=1" + } + }, "node_modules/@comapeo/core/node_modules/@mapeo/sqlite-indexer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@mapeo/sqlite-indexer/-/sqlite-indexer-1.0.2.tgz", @@ -23038,9 +23048,9 @@ } }, "node_modules/ky": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/ky/-/ky-1.14.3.tgz", - "integrity": "sha512-9zy9lkjac+TR1c2tG+mkNSVlyOpInnWdSMiue4F+kq8TwJSgv6o8jhLRg8Ho6SnZ9wOYUq/yozts9qQCfk7bIw==", + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/ky/-/ky-1.14.2.tgz", + "integrity": "sha512-q3RBbsO5A5zrPhB6CaCS8ZUv+NWCXv6JJT4Em0i264G9W0fdPB8YRfnnEi7Dm7X7omAkBIPojzYJ2D1oHTHqug==", "license": "MIT", "engines": { "node": ">=18" diff --git a/package.json b/package.json index e2451d7367..bb07a854d8 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,6 @@ "buffer": "6.0.3", "cheap-ruler": "4.0.0", "eventemitter3": "5.0.1", - "eventsource-client": "1.2.0", "expo": "54.0.31", "expo-application": "7.0.8", "expo-asset": "12.0.12", @@ -91,7 +90,6 @@ "fs-extra": "11.3.2", "geojson": "0.5.0", "geojson-geometries-lookup": "0.5.0", - "ky": "1.14.2", "lodash.isequal": "4.5.0", "map-obj": "6.0.0", "nanoid": "5.1.6", diff --git a/src/backend/.nvmrc b/src/backend/.nvmrc deleted file mode 100644 index 209e3ef4b6..0000000000 --- a/src/backend/.nvmrc +++ /dev/null @@ -1 +0,0 @@ -20 diff --git a/src/backend/package-lock.json b/src/backend/package-lock.json index 858045cd5a..c7fa3ffa72 100644 --- a/src/backend/package-lock.json +++ b/src/backend/package-lock.json @@ -91,6 +91,7 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.27.4.tgz", "integrity": "sha512-bXYxrXFubeYdvB0NhD/NBB3Qi6aZeV20GOWVI47t2dkecCEoneR4NPVcb7abpXDEvejgrUfFtG6vG/zxAKmg+g==", "license": "MIT", + "peer": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.27.1", @@ -1340,7 +1341,6 @@ "os": [ "aix" ], - "peer": true, "engines": { "node": ">=18" } @@ -1358,7 +1358,6 @@ "os": [ "android" ], - "peer": true, "engines": { "node": ">=18" } @@ -1376,7 +1375,6 @@ "os": [ "android" ], - "peer": true, "engines": { "node": ">=18" } @@ -1394,7 +1392,6 @@ "os": [ "android" ], - "peer": true, "engines": { "node": ">=18" } @@ -1412,7 +1409,6 @@ "os": [ "darwin" ], - "peer": true, "engines": { "node": ">=18" } @@ -1430,7 +1426,6 @@ "os": [ "darwin" ], - "peer": true, "engines": { "node": ">=18" } @@ -1448,7 +1443,6 @@ "os": [ "freebsd" ], - "peer": true, "engines": { "node": ">=18" } @@ -1466,7 +1460,6 @@ "os": [ "freebsd" ], - "peer": true, "engines": { "node": ">=18" } @@ -1484,7 +1477,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -1502,7 +1494,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -1520,7 +1511,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -1538,7 +1528,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -1556,7 +1545,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -1574,7 +1562,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -1592,7 +1579,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -1610,7 +1596,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -1628,7 +1613,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -1646,7 +1630,6 @@ "os": [ "netbsd" ], - "peer": true, "engines": { "node": ">=18" } @@ -1664,7 +1647,6 @@ "os": [ "netbsd" ], - "peer": true, "engines": { "node": ">=18" } @@ -1682,7 +1664,6 @@ "os": [ "openbsd" ], - "peer": true, "engines": { "node": ">=18" } @@ -1700,7 +1681,6 @@ "os": [ "openbsd" ], - "peer": true, "engines": { "node": ">=18" } @@ -1718,7 +1698,6 @@ "os": [ "sunos" ], - "peer": true, "engines": { "node": ">=18" } @@ -1736,7 +1715,6 @@ "os": [ "win32" ], - "peer": true, "engines": { "node": ">=18" } @@ -1754,7 +1732,6 @@ "os": [ "win32" ], - "peer": true, "engines": { "node": ">=18" } @@ -1772,7 +1749,6 @@ "os": [ "win32" ], - "peer": true, "engines": { "node": ">=18" } @@ -2699,6 +2675,7 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", "license": "Apache-2.0", + "peer": true, "engines": { "node": ">=8.0.0" } @@ -2720,6 +2697,7 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/context-async-hooks/-/context-async-hooks-1.30.1.tgz", "integrity": "sha512-s5vvxXPVdjqS3kTLKMeBMvop9hbWkwzBpu+mUO2M7sZtlkyDJGwFe33wRKnbaYDo8ExRVBIIdwIGrqpxHuKttA==", "license": "Apache-2.0", + "peer": true, "engines": { "node": ">=14" }, @@ -2756,6 +2734,7 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.57.2.tgz", "integrity": "sha512-BdBGhQBh8IjZ2oIIX6F2/Q3LKm/FDDKi6ccYKcBTeilh6SNdNKveDOLk73BkSJjQLJk6qe4Yh+hHw1UPhCDdrg==", "license": "Apache-2.0", + "peer": true, "dependencies": { "@opentelemetry/api-logs": "0.57.2", "@types/shimmer": "^1.2.0", @@ -3212,6 +3191,7 @@ "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.34.0.tgz", "integrity": "sha512-aKcOkyrorBGlajjRdVoJWHTxfxO1vCNHLJVlSDaRHDIdjU+pX8IYQPvPDkYiujKLbRnWU+1TBwEt0QRgSm4SGA==", "license": "Apache-2.0", + "peer": true, "engines": { "node": ">=14" } @@ -3789,7 +3769,8 @@ "version": "0.33.22", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.33.22.tgz", "integrity": "sha512-auUj4k+f4pyrIVf4GW5UKquSZFHJWri06QgARy9C0t9ZTjJLIuNIrr1yl9bWcJWJ1Gz1vOvYN1D+QPaIlNMVkQ==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@sindresorhus/merge-streams": { "version": "4.0.0", @@ -3875,6 +3856,7 @@ "integrity": "sha512-NMv9ASNARoKksWtsq/SHakpYAYnhBrQgGD8zkLYk/jaK8jUGn08CfEdTRgYhMypUQAfzSP8W6gNLe0q19/t4VA==", "devOptional": true, "license": "MIT", + "peer": true, "dependencies": { "@types/node": "*" } @@ -3966,6 +3948,7 @@ "resolved": "https://registry.npmjs.org/@types/pg/-/pg-8.6.1.tgz", "integrity": "sha512-1Kc4oAGzAl7uqUStZCDvaLFqZrW9qWSjXOmBfdgyBP5La7Us6Mg4GBvRlSoaZMhQF/zSj1C8CtKMBkoiT8eL8w==", "license": "MIT", + "peer": true, "dependencies": { "@types/node": "*", "pg-protocol": "*", @@ -4065,6 +4048,7 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -4592,6 +4576,7 @@ "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.2.2.tgz", "integrity": "sha512-g+ueNGKkrjMazDG3elZO1pNs3HY5+mMmOet1jtKyhOaCnkLzitxf26z7hoAEkDNgdNmnc1KIlt/dw6Po6xZMpA==", "license": "Apache-2.0", + "peer": true, "dependencies": { "bare-path": "^3.0.0" } @@ -4697,6 +4682,7 @@ "integrity": "sha512-EwhOpyXiOEL/lKzHz9AW1msWFNzGc/z+LzeB3/jnFJpxu+th2yqvzsSWas1v9jgs9+xiXJcD5A8CJxAG2TaghQ==", "hasInstallScript": true, "license": "MIT", + "peer": true, "dependencies": { "bindings": "^1.5.0", "prebuild-install": "^7.1.1" @@ -4809,6 +4795,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "caniuse-lite": "^1.0.30001718", "electron-to-chromium": "^1.5.160", @@ -5137,6 +5124,7 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.2.tgz", "integrity": "sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==", "license": "MIT", + "peer": true, "engines": { "node": ">=20" } @@ -5178,6 +5166,7 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", "license": "MIT", + "peer": true, "engines": { "node": ">=18" } @@ -9763,6 +9752,7 @@ "version": "3.5.0", "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.5.0.tgz", "integrity": "sha512-TYu2L+TGhmNsXCtByont89u+ATQLcDy6A+++PwLXYunRtOm7XnaD+65s1pvewaOxMYR0eOkMXn9/i0saBxxpnQ==", + "peer": true, "bin": { "rollup": "dist/bin/rollup" }, @@ -11239,6 +11229,7 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", "devOptional": true, + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -11548,7 +11539,8 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/which-runtime/-/which-runtime-1.2.1.tgz", "integrity": "sha512-8feIHccQFH/whiA1fD1b4c5+Q7T4ry1g1oHYc2mHnFh81tTQFsCvy3zhS2geUapkFAVBddUT/AM1a3rbqJweFg==", - "license": "Apache-2.0" + "license": "Apache-2.0", + "optional": true }, "node_modules/which-typed-array": { "version": "1.1.19", diff --git a/src/frontend/contexts/AppProviders.tsx b/src/frontend/contexts/AppProviders.tsx index bf2676b26b..e949e1b0af 100644 --- a/src/frontend/contexts/AppProviders.tsx +++ b/src/frontend/contexts/AppProviders.tsx @@ -87,11 +87,15 @@ export const AppProviders = ({ earlyAccessStore, appUsageStatsStore, }: AppProvidersProps) => { - const mapServerListenPromise = appRpc.mapServer.listen(); - const getMapServerBaseUrl = async () => { + const mapServerListenPromise = React.useMemo( + () => appRpc.mapServer.listen({}), + [appRpc], + ); + const getMapServerBaseUrl = React.useCallback(async () => { const {localPort} = await mapServerListenPromise; return new URL(`http://127.0.0.1:${localPort}/`); - }; + }, [mapServerListenPromise]); + return ( diff --git a/src/frontend/hooks/server/maps.ts b/src/frontend/hooks/server/maps.ts index 3ec8e793ad..6e807bb88d 100644 --- a/src/frontend/hooks/server/maps.ts +++ b/src/frontend/hooks/server/maps.ts @@ -23,8 +23,7 @@ const DEFAULT_CUSTOM_MAP_FILE_PATH = CUSTOM_MAPS_DIRECTORY + '/default.smp'; const CustomMapInfoSchema = v.object({ created: v.pipe( - v.string(), - v.isoTimestamp(), + v.number(), v.transform(input => new Date(input)), ), name: v.string(), @@ -132,7 +131,9 @@ export function useGetCustomMapInfo() { } if (!response.ok) { - throw new Error(`Cannot get custom map info: ${response.statusText}`); + throw new Error( + `Cannot get custom map info: ${response.statusText} (${response.status})`, + ); } return v.parse(CustomMapInfoSchema, await response.json()); @@ -140,7 +141,12 @@ export function useGetCustomMapInfo() { }); } -async function fetchCustomMapInfo(baseUrl: string) { +async function fetchCustomMapInfo(styleUrl: string) { + // styleUrl is like http://localhost:9090/maps/custom/style.json + // We need to extract the base URL (http://localhost:9090) to construct the info endpoint + const url = new URL(styleUrl); + const baseUrl = `${url.protocol}//${url.host}`; const infoUrl = new URL('/maps/custom/info', baseUrl).href; + return fetch(infoUrl); } diff --git a/src/frontend/sharedComponents/SelectDevice.tsx b/src/frontend/sharedComponents/SelectDevice.tsx index 187d53a5ec..11955227fb 100644 --- a/src/frontend/sharedComponents/SelectDevice.tsx +++ b/src/frontend/sharedComponents/SelectDevice.tsx @@ -119,7 +119,10 @@ export const SelectDevice = ({ Sentry.captureException(err); navigation.navigate('ErrorBottomSheet'); }, - onSuccess: (result: SentMapShareState) => { + onSuccess: async ( + resultPromise: Promise, + ) => { + const result = await resultPromise; navigation.navigate('WaitingForMapAccept', { shareId: result.shareId, }); From 79930d4f0f99732522e6c03da58f24b1d1516210 Mon Sep 17 00:00:00 2001 From: Cindy Green Date: Thu, 12 Feb 2026 15:52:49 -0500 Subject: [PATCH 07/72] Deletes extra tarball --- comapeo-core-react-7.2.0.tgz | Bin 60576 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 comapeo-core-react-7.2.0.tgz diff --git a/comapeo-core-react-7.2.0.tgz b/comapeo-core-react-7.2.0.tgz deleted file mode 100644 index 8636bd4b140ec9dad26f95bc5bd216b13a868d8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60576 zcmV)sK$yQDiwFP!00002|LlEhSKCOo=zKl=iaI%S$99imAkTHlFf#;5HzxrzK&DUM ztSk^x8EYa-Zj}u2$?)Ir+VxVsB+CyBB;rGNtg71e+O=!fevbU$i+_dJKOF4tAD!<1 z;V%9*Ha1?pc!6BsH#Rn&ZM=Gh{_y4C@^^S}hCW0AP6%FG+f7H4EV>%xs2z0BvyEpj&|Y*E<$jFz@GuQB zKbWko9ph{m5fY^diU=Cu3|~&rRpuu-4n5S*Fh*$~1p`03!XC;~Fgz3`K|Bs&45B!Wh7s=pn$sm9Yk7*s z1bcLx9vY@$)QA6LI<3+8GLFc=LtzA{l9iR06d9b&?ho0=5qJz^X9{Tm*?3dohGxY1u z$;r;q*>9-#4(%NMhTb0>?RjYbe~wS~PftmlfngF4th1z?B!C%eDw9G&gFJ@{~N_M5l%?%?bQV7}{}pdEC) zb8>dD`|-oh2|E6Ga@;%JM>|J*=%{yeaP;ov;OOW5!~LVPE;=|uM?JLv&;6q_bo$HA zhY!%z+Rn$bUwS7nKD66A{_W)8=U>jyFTD?Y`zNR9?LPW&u=DoAKI`h}H?;d<=ityo zdpn0aKkw64y|Z8TPu8Fs8y))fmwosI{p}o~o!zs8-Vsb=w|8`Qva@^Up|jq}nQZ#& z!Rfw-c1{jXVL{%V^bWl>SkB%%sB&-w?T+>t6j*Ac?MUy0{{DEnF9D*x{hbd7M?arJ zW0<0-++F)a^YOEg zkH>fm<=Ggc+s>OcUa>nSc$ebN&L~3LNd2i*>fI!J_&N&kLDElIMeUPT`GD+X!63TE ztejOhK57k4aqj5A{AxCFc4L2kvlgTY0nWk?^7G%vIGdbrqHUDn-^Wpg+fV+U`w7YY z;LAF#@|0G2($U*#E$FABhFr4qe-XW6x4RysNshnfWL?(k{)-fC*~xV^jH63+K*bq{ z#_K=*w1$2{J3)X60S=88qMhRd6v1SY0C&+rANj@LcG*DCC`+%S5NE&=CTR{}2+q-X zH&Gm;e2}F#$WIW?vNY?iA==sBGn|jJgm92rXQB%J>JLXT{6rTQ7diO~|LTtu z%FywK`>am8gT6s2LJTfyvtJ0UucO@zGcFJKQ;DGIFv@||?57#J%Zn%g}j4;YEGa z{!a-`^a6hjl@fe|_5qjLt)o;$R)X^`I`qF_M8+9LlXT3Hkus*`xI3a0FP^mc0B-4j zIU)rG3A+_1U@gBaqfd?fc<}mOp*Y)BRKaE$^Cpx%6H*#%!Cs51`uO{qNZyTJZ-+_j_@&T zZ*QX(9db(&*}u&;3)yZ=Wr0m3D9iE$@Lv4*NFqw$LHR$fK8pR z#GF`QO!51`gXUF!-|zp@SHc~<|6ja*Y03Xzz20cv|Bv_me}!{KW+(xDk0)pwS>Lqk zdpb8Lo7msAW(N*NM7Av{EC9G!P_&KQ1x3RO{s(QNiqZnalp7pvqbW5sP}SD}16EyU zQF+EFO96F=Epu2GMVf?y4Ezj-j@qn%*OeE#g+1~z=l9nq1z`82*E>7^$H)DX-_GCf z|K_0^Ly14c9!K=E z$q25W8mmAwTya9N76ty&&|#0#I`J_J6L*+ zPy=2Z^ADo?PF4Q`Q%ppuzFh7VRg4o~8&k~lV!&BFrqmz}RohjA|HovwWYu2{{{Q8R z*B1Z({PoLM4gbH2zi0?dB>ILFNrQ)U*$4fti3B}#i~3nQL@g&<*m|?3!WD9M(T3Jk z>sS(bQL{|br8ahRJ6_dI?@cFJ-n8q_QwLf4UT!r?wMMBnMXAQ#acEZET5+)2js9%e z`ZLF#+`Ssjq_XYl54j&wMdsL?RcOkr?Wy^eT%{Jwu{1L&!}N=P6`C)F?`Y5a;{3j~ zTJAlaMY(m?yJ~B)j9s1cdDv*FR;&Mk_uq0=KQ-Qe&tE-%W!Znedhx7z|E=`>_q+B! zs{Ook2#|`0kt+IE8#&}S9x`R59x_GX1zf2lXuYw><8)O)rFy^tu7;Li7R`X8hq?-a z*_8rjXY=R=e%ETM0y=Zg9-Q3Yoc`S6|0S%!{fqX^)wm-GzvFl}0{uG?=sT!yU2(7j z7w$%gKMyuEGW%8Wm~Q(Yr_lAT{C{7*+_3C_HlMw2_`gSM|6@rAx6ySPg=oW3Maq7+ zk@fBFoou4yI?6Gr<0-?da?6y8sj5y70SLznzXy0>7JfEVa*nAdv>`~%2Y!wQX&i#W zU^hMVM>wUDSuUiNiUT2r8~K?(MCm9e-Cz*KVTKcQ0%Jh(XOf24sw*G=rHTT@s@B>c zxDq&c&&fP3WNB+SkL>sRILJF~lSUW3og~f&bgOp#U{J_KYLat9Tdv{<<+RvuMOUuV zZuzhEb;RnTI3hVta7JWVab+>^T|W#z@LKH_`}Q=$0gkS5*z(*HQ+llhZ%l=Wb-)Q7 zkK-=1ddl!Hy~c|SeipFx=Wxpv5FYyEW?DY$f+hRR?#FmYv9au=OSO_h2^E>ICyz$w zAxn!a`Ok8%{yO*nvlq7fXXEuobN{be|NjqF@>*8_q}^~H(hd(b9AI?YE7$(pWVK4Q zUR=Y4?8k7JEv{m1aF6r$HQ#B=xrE&s0l8bNyJYRnZ?4qu<4V;iLHql>J-_exA0qY= zS&##$y#F^}Z@zqP-TyCNY&Q4*V~+oE8YNdT-b;hGlf5)J2)X@)@wKeUKXC?;s2t5? ziPrScPXHj{nrHq?4@g4E(H=)>uI$#nY1NtSg?_a1FEKwh?B#ww2z`B#}Ks6(cmB~s@o7_Ke<95{N!rvUtt;+ zF7p!-OFJUbGD`Bao(-2ge6%4yxV0>~%+ucfCX6)Y5^VvG-)(uKfG@}vYNeM1XV+9U zpcR{KZVSUp7(*K4Zk%4VVH{l&4DirD@`tzs++&ukUF58nOBkRNxS@Oj4m-w(9qAmUvp?Pcjgf}2Ed;N%jlak^`#4;ldA%tx4$Do4bc2&@`-Innb0`dDy>83oND!aGDQp9|BOYsc@k)_IP zj5r=~{MW@SL8|RPHeWrn{6Aj5*lglIJ?i+cdzu`ri05j4)*5kI?rP{Pa`wozweEh6 z!V&>l77doOMggi)&Lk~tOUf0Sm#TL> zT;x^dYQ)}(cM=WUTT#BKInC@LYb}H=k)q$u6bM!@Q7z8_%!)nhJUH`7^Tp^SyHPPr zSw|V}O!D$?&d~_(NIR0R`+(16v$4|o8Kw~5>Q2uhJu@qhS2|6HQnqTUPAXZ&6K;(iiTMBK&>|K_UE*dr?QZtgg@z3ghM zfdQ3AdR5V_%ZSk2TW?T_JKk|&=*HLbTaCTtjv2pVbmJ#f%{P>B1F2;JO)g904N5^- z0G3v?FoEiMFn~~V+?>+*8;(i-7Qcfs#%RuuT24-<24+pAq$|fR#~m;?hB*lIonu*H z_@u0@xE7}FXeG<(&@q@ByW;rM^pWI@V6ncA{+^Sk`0EG<`BP>)cyTH;&v#6qPCW=M+@0M0pdVYXv#4e4#u*tSb)I ziV=`4RNEXtgF@A>(}#yb%-3LLc*9nQ@g6@evfR7>|8iabYRG?IZ9LyJ<-adzPJl-K z`+da!2R&J(`@iK5XZZgYerR^&ff91+Ra0AU>XXx(_Hyvt!V0gNQ>aWEpq@Ho4Gl%9 zhfD*O(x{t_4_)I!w^DBxSG?*wbEPwn!2%ZJcKH3NQmMuvu5pNK9O9NuBJRj9ZZ)K$ zM9SEBw>92vjd$Ba@NRR^o;!4MTLsY}OC~jqt6Hh6nk!e=!X9f?=~iNqi{{N%M|9ID_ z9OrhSnZs?y(fwU|&)kE@OvM5()p2I^&N7uVy91w@`|*>pvU%RAyUY@DUN){UHT@OJ zcJ{73VwRE9wefa&DBdpR*mGx2FH1$BAJU=4+_csCwak-}wQ*y4%x2}5AZTUYEOX&n zoQz_r=S04&tE@( zZJz(E$&_=-r>|bLi zumh@0BkKF~pZ_l!y^CU_M^^MRPXGI~cVrBPQdve5fuy=Nx{_#9QUR95#^*d8L6P~@ z&vM6SEmlG?yK6r~a`ukct^rF|Pu6869_Mx1RcS3Ly)khz9^%ZujQO?cfgo?I5U+x* zsE|17!?O424Z5YbE=)mgZq*cIrJ7T)FlOc{=)Ioau5CueXHKW+;u8FeDS?EW$LV*jjuL9MCLXyA^Ls7>XP4+(V;E!(|VP0-a$M1{W67>}X? zk;Abx5lRPU8DDazP@a{Q2*zn)rCeIhQfp#MY?aaJpUp+!S|)QxRH-E!l`24Fom!$9 z4{1U*i^9 zUX31_@?!JK(jA#k808}yfjIvq%)GL>UhU}Day73TeUTR6J z+0cr>sHK`fLkGy?E&q&jnhJ(@EW#dP6f!&XflpAzZ{coPkY6okZtc`49DUk$oLe)Q zhpeeZuMHHdc*u}iX6V~#&y<(LPXBFY>gcqgj%M9*g*h$~J^A-HWt3KyjjDkt0pRHt ziQHbS*CLNsloKUsm!3-pY953fR z9)3&PWlx>UeEZF)Ao7I)l}LI-Sk5E$H0q10lFxQke0}Hqm5BSsa?ZUAv&GqWj!J}# zacqdMOxMbWtZj)p`$v%Rf!%F$Ab@%){s0J&DbxL~5CC`;o$9l`GW{gY2Q-xiu!{2`X2$zda8v78rs~q^oW-Lzh^kXYYk{U<>|;UG zCd9{_@xR=!%;n2}UcG#6>3?2tZZ`4%AFuq!c-+3n5O%`;=xQL}N@gRqptL7WtL)x* zfuo`MI8)o2WkvIfrv%zY6{Q7;3TBkbVMIkM0eJ&8HuC%DMtG)<| z)n^$a9JOUC38<@P0x;e}<-V7x9A%cZ zY|uknz@55$74)j~Sv)0ruWOAgj&fQ!U-c~2o;{n4-g@P+c`MF?8A^AtzU*fOO&-QR zi0(V>nxT9pMpRrsj}If*WF8MjICrGU>ZF`3M-M)EV*Nqv1 z+YG@)>gKRUs6vPmjjnm2FHwD~BFkbA|Hg!10TTizg;~Io;Nc?KB7%ZO{r|n?|5={u zzsCFjBNuTbf2BP$_D*-v=haNIDYo3{RU4bjL zzlBfUEIQz7y>B_d+Unm~RK8QjUrY15gapm^qtz{){JhHD<*md6QQVpe@PenWV8jXC~e|P|>bz(;u@&*4&3XRm{$n1i8_}&f1s3!px;~wa@3B>0TGXibmDi z{MEAm9{QuFl&2<7NuFj4JOQioKfZkR+{*v@>g9`P&HHcl_TLa2`uv=|$@XyHAIH=I zCLcru{pn8#{@*pqJLup4Rw7gl)6g`n9Ht>O9;RWpupjTBzrhzO*m)8%P*1k#CpfZ8 zGewu-WPCysy_s3f0vaC0ic)h57>~A5Rj~;~4H#npu#2RxKK$2rB?$U^kPiJ3PT4`E zQBT%oZOtH>3dZUIU{&?jG}-exEujF64Q@+-YFg+g9SPuzVeb8f+IFw6g8;DhAJpI3 zJv-$`)#AzgwP!%2N@-BKcPsMFjQ7aV((l z&*$)M3$@grEf0=7R|lK{wTTFdqc0d{79|n-Um(*-$kxA$-eWw1d26F3u)uzT@Yft? zi5~+jS|9mv>IoV{pd?I)pTUHmW;h8U`)JBg0VjC`bw?v~Gr)-o*UzZ>eoW*2gs6?X zS6#rM8;rhyx|v}HBq)p$`h&+j>v#wT9pz#Kqcn$Z*w}LHXE2F~kTE9cCdvoUFc@bU zNY&Z!qU1^_ImEg^2fzXH$pI!@rul%WNT5HVCRL{3fl)(%DYnveq1)@DIL%@Hae5U6 z$j{Po0<9AN%CWitdYC3ro@Tr>%Ger%xZQBNWOPrbdF^iijs=642H{J@;;V4b$1;cQf9wWHLunJV|8ul16WBZ8E z7=vks&TpbPraR3Be9p*~H6IlupIR6FlHTBJhsa7nBq_?RPFMUeY>UQfC#4;DvPkKwqJt}(3#w%ks$r4#S*KNP)`pQP_}3J2MHkOC zkJZzlB3TW~O5<9TfuDpi-iHwsBt7uQ#6isIIJw8W&dPTAv!c^xP2ad$Qr2-BwSqLn zEx>yQ?{DZd2jpzipIs>Jpe@w;c=Z0L_v_L5{>e%2M4>NvHZfM!ype3l2BTVALPzdd z6}ZCNZb>l^7?~@)#cFl=PtREwhQC$J*RFJ1Ax9}z&Ci2@F&f~`dwabt;2=2q7%h#h z+S%1endBADPZNJc2B|(N z$3;e*02s0rzx^=Opcg+B%vU7&j9Mz9Y+-51-nC$E$weA~2aboI^I7JWXX#o)l~j7B zS=+Z_b3ApCJTYN9Q940wVq!wn{;b{;ku57Af93~Yh@|}VwJ&*hDht9BdfF~A@*x&9 z4!dZVJ*MLc6lau`Pf`Ifh_RoHN9?HP{B=D}K<)qyQVJC5SQfjfvZZgT`I=&g>eI_Zmy;Yzb{)h<8VM{UVhth9-!`7w)$(oX&CRb1_P zG=wMWY4pGNEiAnP!Y*_Jx^-}d9rr@R0=7%a@&QiTz#YjgR2LCX zkd)PVk_CX<`oh2QBL{k1aM_y+F7byL+Q+yQK*wC5Tl z?ULPEFGLROyqEi<_6w12wlFhLwJ7rXmF6+gkLM!^_1VKnV znV&4*I*f&?U!u;Jp@QLDDO~fpMiq8)znw2N+i+m{ue7B+(5AgY7_6Nn1m`@}zRnY` z)`HAJ5A?L^#u44!kEdt7!*dWxAMANGt}Oc`thrwdEqSf9Tz3e+KT1bxiBH!`_~rUk zOSr3vNfeLC!i2aj7twKmSTo^#`A4GUK5DO($d*t)`ijOQlut&OFwQfg?`&yG5~R%V z;s%&cCa}8((+iNy=4)lw;@qUA78_u`ux{6xH{Zp4WJOc?=oL-jb+_O!s|V!fGo7js z=cUOeH0Q0!8rQ!zXXCxxYyBvglI4?oY?NB=jCFDvWS!Zek zVWX3$D8XNIA%KqvqUr!p{b%V7K~bL?`sffSNoDo)E5FJ-gZJps{xn1?+vZQa$>(mA z1o1e;q)pqZhp^yW8H!#Ul<70ry#M%(1HFZ*|M43Dlw9ep#Jql?qGB3yTCSiH`(5lm z`z`T=7Z#wJ&Ns+Ry9h*Hjt#yG_NbNT6g;YF3%#wciV?Ev!OInrRZXS&anX*+VwuL5HB`-vRrtz9DLeTB&d80a z@qL>b^G8c#Z`{}$H}=Ml$=Y*(8yn-s#(32>#*fFYSm93_JL1NUxUnN{?1&pX z;>M2n$Fw6hW1KYR#Em&|V@}+d6F26>jX7~+PTZIiH|E5RIdNl7ykv9Y#)P;rA)dvA z*!@WRu`P)k)8WQ+xG^1WOozV<(_zIBsxcUD42Bzn;l^NiZi8WW{AZQ~c<7Iok^#8d z{`dI{+y3{(i`Oq3``^{ae_m41WttUsbed0MkX4AhvhssbF_~Bjq#_lqRirg$snN_j zYT7ijOlvOG32p#or8)><^6G@(F4O?*01Y#1h^`r!$}0MLD6BeP1?7uYl|}SdUxhr~ zrS;vh;&wCp`*NaF)3j6PGzoyw-j$ikY^SxLpNblXf=jiA*6prygIcmKYiXmB*f_N< zQ=Y1AfvUQinTgjp^;H^j`|@)pb*}}3H+jmMaBy0(7zhq(k!wwE^_AV1Q_n$F8(X9uwRj$Mm}Gr&$0Ob>IhJtURVB zn=qDeOrMy8C=4-JSujg&6yn^EVgj>)wH*&>+zXHIIUvqP(&rmap@ z9`j;uAbwG{=5|?g{Tl~+o&(%%7?G8VTThi#uri=>Njthyq|cO6T8Lo-s#WYlP9oTo!ywZ$3mCR+U*pO372fR3v_SktAU0s0|xG|V*n=)gxvdKTd4=h996tpEOu0NMT^wKB2?1LYNaF{O9kmzL zP`eIol-KTuh~y?gA=CIvg%FB#w(Jfc`XeSe0xwNa-KrWrTNeT!_iP(jQ2I^A{KxU7AAIR>BY#p@`Ag&f z3cn-|ed7Q8EU0>^^}i)Cn$5^xv*|3v-4YvjX!=O17nAftby1|08_4w~#)(3+&!pR= zFpU9d!0pD@lsYlzH45n*LBohx&S7RTuJ zuME~-)>)J4b6NKEZ<}gSxvaPKkK|6k`6Z24OGiT1ZgX6;nUU}h*e#|-*iuHJf#lX% zC48QM*J<;vb^eTw!tvtl_MW(mm~%PQ)rM+ZplbkU_fCgMV?0p1C-tS3Qf-a; zWQHdf*f&udZGgueSjL2lS1Es4jF}4p*iGq_;$OI)ZbfqB| z*g}(ZOvgm!5l}~yvZOTf2N6c<)Xts*tw(3LwnI`H#Wt+Se+*Pd76`iYMpmdniRi#@ zZ3T;-H`)`;^_xX+q??+_Uj_ZtY#f(QJGEhW+JGMpPr$D+i|YpFd6ePn zC>;}a_VO;MYINEJygBd#6P(KjA`aDuZ9zSFKq4ucyu|Q7s^3B5B#&ZN?&mokjwrZ- z@)aZqUhbFpDoV6YB00DTi;xt9LDWR8qfuW^f8+|)k}wz%k9BS#5~YcpyJ!R8zyySM zBy34MX2|FZcNXc@>vI?XIp|}a%IAb0{)i1XW;Z}zfn81YxXKnlxG0~-ZaD~FeGZI` zPf)%SH8p(6L9WSCa*8S325iPB(Qu08MWy7r{TCsX z{*V8l|2$PV!7Zd%Ak#0ms^Y;aW#N#dFY%xL#02BND!i|Q@9lQG3@T?_{=*H{48_Do zzUT0IQHLEG!Fz8159_Nlr88k_C?|1h$(+DkKu$-Q!GDx3OkqB40~KZ3O7Nl9&>6V* z+nZToV7P@m7-d1-RHUcc@mox#@P{Ap&u#x%VvBSa_MaOsUcY{3+JC-!{_1sO|M_U` zKd&&*6hf^--s1`L_Eo=_RT=rQ>g%7~jowZU!jgt+k=EEUVUcZJB}LN;>lYqQqNG#@ z;o=e1@M}hqu>aGuVNA27RHO7RZca(5X=s}quCoGRSU9^x?;jucPkux1_kWvRo~OpQ zQ<2Lwb@-$VzI)Q^ot@K8&)@I=<{@z3BdyPxNxcjC<^bxU7P}-Xz^f?gQv1)-n|$$E z-MX;bGDM>iAI~1bnih-1Jr-Gqk4cSXs5-p22#f^$kwz~6N{JGorlZWk)6I|Al6x>;VQSl-|Hrf*eX1K)qcc+Y_G z4pa%$W36oj9df*C9bSR_3@9UL(|!$yJjy7lBeC6M`I@oL-Z+La=Ao26o_r`CzncGJ zm)YMQ!!wV?7HMgQoh^Me+^(48?jXZ`%MtTdeQ68AE+q)?KoXwLX=1!3iO%|$T@O+! zpd-;#B(a1P${q`Og0jumeir$cG3WlR=#3EW7S@}FK?^2~5oZBws56lVe!swLTuAZI z1v7r8uWJlym9%d{g$Fh?_fY0jSoy$Dj5bOHbos*WI`Dw4b8+3aW;|jTUz;zVy)ya#=P#bWYWV+^=6{$kd&4)R2q-;dnvWOY zTmDk#ob*tMNZ2mm^~=U29D&p^m63F>isjI{ zD0!%>ow&rnl^`sip;qHE)VK^aE<-DG88QR-EbcjE5YE}WgiNB|p7%Y}_y9FNK#dR3 zo%sMc$wm!Vpi<_iar;@K+mB;+7V!Ql-!p}gZk&4>=bpy7r|k62=i^iHj4U$}Diz$- zci>ST*={2s*CVg-$!UCYY8mCa4#ym>Id^n4s{L-3but=Pn)`62abVuO9yND^eUQEG#)TNln0FK9k_raOo@780g^YXm&>wl;Kp&Kaa{S499JBKU^f4iJ2?84 z&MC_}=#9Tg<8RXVn>=WLlTu;z>~1GcGl~0>Qa7F?mHr=K|FvA#k2?Mz8?QD^`>&VJ zH=Fq1tF`~qY?3R@z*Nry)zC;aQm$|KbAZUv|u|=5gTYaXF3$-?OuUxoC^~987UC_+5jj8jG8UuW=xF)D8qL z%$nDaz(K4Vw}BtgZJ_!4uKmBA*7SG7|8H(Q-?02YUTwmgpyB^l?f-r4XXyN#@#cHD z@AIfMRFeFsKd~&{MtKMQ``^Xo(jKOv>CHGyLufoq!*1a}-a&tZF9_sMPeKOj$rk+t zWM*lu=n{c<8A_vVM6FvliYi5NQpIB0{^)>toTb+h*u`uk>zkDgsoWe}X3C+d9;xrd zIZN89ds{2zPg!~4p#6pUa~qq}mTkXGo^)nNj>Efmq?lp;VXVAvP8=%}&iXn!j{N`+ z(ioNxyf%b_mS(3zUnVp&DBT3a<@H?K%ayem26e+VhQ>6}=usL%ibFn{;}1K#`@i%) z?CqbNAD`^MJNO^CySYXFsOWpWaBlgSM{$%-3S=%u;3I7ZBl-XisHhk9K#|M#nkRo7 zCsB@aOg&1_Xq=5w$l}ICyIFM2#MY*y_X_84eM0kP?I=S44Oqsd-@dSB6rZ_*oV$qt zb4Hg^wX2nGHd<%Y${y_qF2auy({3VGpsoPW2bNU&3rvUWe`KdhC!m-D5!r~HfRL%S zuHy94kI@B%d?6KFu-!&pJp0JCzoBATJU+N>4iXI3*+eYyqfbv69EmO`E&Pxx51mnl z`_b2rS-j=Im4c;Z9mt;)`_0_%Oh?DDbW3@#>X}&EeC-^Zu+DN`ay$?ZpJEN#j)bM^ zdx^qlO^X)`{n#C6@s!4X>}>fli@PH~A0%Ll@MonH{_63>cuT{MmE8i{St6d%}lzaf@yGK9J2*N;b6=&HTzJ-aXc~DE{~^+T69^tG@Zlvx)cM zS!EQv$H<`92cqBcEvTr z8E-*Dxy3D9RY3kPWFPMsH5Igz+dEN{E9#`9o3m|7-c*wb>aBPztSZ^z()!V~yYf_7zK(zVCL!IfUq}^WF`(fzhFiP+3(az2 z2|F4Uo?Vu`m(8TB9d3V9f2jste>t4&j7DhvuZ2aI1!{VDW2;H~n>;(7&D2;N47*~A zv~LPOPDApEVk0uCBVn8p$nOvj(@vWkuGC|;Zb8v%eg14mAl1p-evF4W$vf>b;@B1I zqP*R-!QXmSV2wD2nu1w{ESJ$+0J>#XT(bwU-<^&s!aWcU<yG8<)(OwvB@x%a1 z_+`@JS;YC`>E<@RX$=Z^F2Hq zlU$nU!rLxN)CZTCMa!jh=XY=;$6K2If4QQ+8v6g&&!1cIA75@hYxMuC)&E;>nL@{I z%bf}Z{+9`_^hML^Yuv7fGy+RQr^q6HFL{+wU*vtK1}-rqQEHP4l3j9F6!rv0u$D$t z)rhKusLE8OE?;8R$f+7R)!cF_3rr)8`az{ps8GomA}Q@+Zlq9+6snOzeRonQlTBHs zFiK^{D`iidufGFvllGWs&m&pVA&lZM^FG-L^m)Jw42?p1= z_sXu%G!o#Uf-Z631DBHa!G#3`BTQfe6|QiCvnYVI3L`Fo$tNQSsGMdQ4)Sz=bXGM`V!Z?GE)Q=j9$-_0OFeM5r?Em=$Q(sxpmec1%Pn3HvIBUeP71IIY71 zCF@Pz9fG9(#9b6?j-KaS1y}FJ3jE0W|An7^b^QOIKi{zQ{~NEH{Ezpc|F6>6b1Ge; zzIT!S3Z;G(tLmXLM#{>4;(BbfDqjTrTCI3+RH;ZRAeKBdW`?$^Cx%Nv>)wy$aIaHD zrb~V#n2ULbZw1#v+NgUMi}>Ah`-*h=yJzs1IoCybdKWRb*?2XG)8paX9a@e>82C!Y zy-r^C+j#l0n6KB!PH93Sky-`_hw{CKtl0hG>9_D?^4ID8AR_qH6BgG z(qi%GM>4Mxl=H*_7hoDh_r_qboDo=u+E1PNU=466_vqU#V+X)esm((R;0cVcVuw_| zM2Gn43!Xp@K79=ItAp*(+csqUKIA{kCH-~i{|1!l@}Ji)pEdHImHai-cVX&lGPey8 zZvMUl{-2(md>L8br_leG8gLl9e1e}w3Bd`8z{Rd(FvI}l?F904wmB#>x@@=G1h+d~YEO=L)8Pn0pkF$wbab7qW7=XYkZ>RbTFWXN zgka$H>9ZIj2>#3p-54iV`GCek-%v@ukWtzbR%txDOh)$ReEMu%IV0XD+&ktl)SlJa zXj=g1G2BOVB}d&b4R{210akI0fr+xu9mBoG9BFqnCIeAdafwl;SO8O+Ew*aB*2u!% z$A33E`TymS{yOyk`GzU~*?j(Lqly2xlE3ek{yL(NH)OaW!_8kE{-1?b;Nhtkz6UDl z|H~Jzo>}z&Xov2EMd`tpC@y}yH9wNF;B z>OSl0>aOQ{?)&=5$l$&MxZVKF0V6=?XeW6H$FZ;@l3V5h$C&%9;px zLksjhT)PDOd*n}_Og&mkYv$lofIM|RsIpG3${{}sbl3Y$Lfc|TO=*3tDEZ>sKpB{^unkV$&feNzEXb!!eYdNE9E-}_T40C1)e+l6ii7!;(#QJ#QmZqMU^#A!Hl1~(RB1aK)(R+3x zlo8`#iya@)#Ai6%3sOPQ{A8mkCT&LeC{`quM_Gl%!W35`iLr{lc@HN=Np5n+z>d{; zo96n7?Zgh@%@h!aUXE_=RaEJLHYx(%{x^U;q+^wfmjW&<*JE5;J3E1HrXnU@XE2>(46z3EVE2&Rhu&qEl;gv@YmYMiLlT1s=gZ?aXAD||&rpy?BOoHYlsn)oA}~j=;EhA;h(`46yT?`R zQk-J>=EVb0V(Bcscr0tJ@Q6PMuD_69cwaI(icri{jHd24&gX*OWVb;f_K1*38Q~r zGJcdbbM^F5WF=i0pR}41q7-%%I^P<3f8I3(!WUudse?4%kA+&m5KQT&>xe|5WWFU6 z9x*!1rCDNEG4YQp$|ERCO(qKnK*??Myt53VYAUc{uBZ{QO`u78qG!$%Kg(uB+$9gU z9j2zsw;~$n_m@P+39K{teY<*ZWLF`qMA+wwCBiaB<(B z1*^L7iTAz&yQt5oNek-5^*~uqw&2RC&-200V|`%@@9xG9I{B>YaJgEq;l0e_iEeRj zUfR6y?59EnClRWa|B*;Zu#bEEx=5x}hUBg%QR*0CO9G42qt~)0rYMx7+<_~@bj0U$ zsQ4{Ht(3Py80CXBa5S1pPt}1W`IXB>iflUf*87@5(V_jEIX{27l4rWC^#r3}{PBVm z$AUL2{vpNG0VNiOSw^_W^}8Nth|N;%S>(IMq}OEfe6Kn5#bSsgpSxb?Mr$_aYP%!YhVTl-tXrX^|O74puQHaw)7g^2|Is?LrEkc<|{`{EYB|rIx9M} zm=KX3$rP~le(vP;BXL+iUYj?MGkJGpvD0P$!#Ej8Zz6!3;h@KAo zH$P$a5?3I@kA5dNF;zNnBThlhCC0(&#VQz@%)XeP|c8#%aqM{vbEJ&gJbaxl}SMR@Ky7iwN}Hz(a2P) zo?@4!S!B_VAM~yqU0N3y2#&TdWT_gjGCT+dz6ga*md4?lf^~mB6HR!z9=LPE)~?pA!OgzOX_=Q>@XTjbP;m8OcJF&{!{_K_1CbwxBh1gxe-&wcM=pvv zt_J$kxi5!8zaryboNEn;34PCoBx_PK)8OyAnj#e!k7d3Z_&x6kIkXI;TzgnOnqRjj z4hSzQ&WpUFlkwan;^;uk(xccie^7|Amw7K_S|og`ExRVWbDWoQtIw082C08{A7i8M ztgI- z!sL+R-q|%lr~sEHDrqajIq56jt|G|5Tdq|Wuou;L5C2OegF;b1q+2HMrYP??3BAJT zi!!36?~J&2t-c}};fJq32PqOMviU+xljp4RCLQrYd>NxF`5FqcZsh@|3v+Ss&Oz8MWrEpHeLqMN!2a`$PK8U0i$#3#1xq92h*NgQykF_Gd4@EeEKW2wl0{$Om*vP0Ab@ z0^+e_(CqMJfk!ynHa^{kImfnh{NV*c$*Ts8wkiko>T7eyz2e-y$yj1c!!x}Y69|$%Yrg=Vc0>2`TE0V zdQ}A6=6BRpS+@=_#4abU^V`{`K zAJ)GDc>$*qTt`&2dK3qn5Fh@Mdi}>nkgaXZ?gFkzpV28pj}-gERKO&Sp#ATq+a~Cl5K^Z=LJRAFl+H?{Ta-;bfJ;~c zfexXnXc+s{-h>Nm)ztNX()ZORLAf-Ssf5(IE%N{8RJr}D@J3ld6Oi(Z38-zMC;9|X zXVn3HUX6?l*&U9?Oy9;*S&5Bk^FPWQ5T3{=c!VH$~j(e~)`>hV}*NPMJbqV!h3Z$1o zArJ>lMjYkb{}JirJy!Wc7O$|XpLwfnOlB1OU*+$Ky)|32xp z98C+gOkha@ui_|Ecj^e1L}M8lxhV^%{nXVR)!BOg8WvA`bY(qEM9dEmV9>u;NyYnu zkLu8%Mna_^l|K(Iq7A5uqXf2;b=UtCnf$;S$j=x z8XobLNxLGK>M?)P21>3^7z;2wrj+NERO%N+PMFq<({@w z=!p$uJjS_7HZ#xODf!w*Y5B}Cbhux-7S5vyrcbun$AaoLxE{IP%V;|AEYvNMhg`3N zIBpfYK*u0v43@Nb9b% zO^P@sa*aZwqZP0J<>kbe|*lYSc$#tGvB6^MV2-7>Tal=Yd>x&+1nO(BNbg#P0oLi?*iT=KX`^q~^T_qa=ymUEW49@}AMY)=FSS~W19R`Lkz>THyKezI=UOO@rq=|IeZJZsjf8;e>3!6gP-5?#L^ch zCa5tl+_en-U`DuS(~X0|Hfi{_SqQOZ60lDFE`h>sa&ft&>h*e`TdL1RY)K>5xa)V~ zFqA{Ah58d&Adf;{Z2`Ks@cf6y`j?_1t7V zb6S}|pHy7K4^WhZ#Hk5wu1GAQL`>H^Fu(&qSDOOymNz+itVzHMmcQ?AwDD0R?{6L5 z6d}sd4Z07+ZPu8rzh0$w(L|FW2mfFe7-IajTZY6WoO-fPw{ zb$>)c4j0er^cjQW!7U6DXY`?@asR4LD+tQXLD=hbN9CznErF6wjdKz?g>{dsCG|ca zPS=w;*_;iTn3ji z@s&wkXKAf$>h{58QO56NJGr=(;Gq(D8Vh}@1wZ$vn%rI&Uht9}X*=gZ4uCkdHL~C40t#?Zj_$@JPbdW#{f=bzSBy$hFFrghv`1#cmi}q1y5L6(^kxFZLpyZ8rXH z&0O(E8H2oEYn@}2I%)*ymF=vfAR^b_uhY##_Si6!9+`7EsWAF`-r* ztp)Eqs&(}pHGH!J4k9Jv>EuP1`X{B;QbmR2>{LYId0Rjs=RsFxo0pHIlJ?g;&|Ztd zp67`xu`Sh!@2=%9!YPRI`SVK)QA-n%x*QO#=l~Lr>GNZYzpq+tcSiXzcO{K2< zNhn^T9K&-zk`JI^i6YhcvEA6B`qM8VR8t$2|N3UKL{H?O@_ zZ^GZCS))|x=b5JBm1cxtWh+=n#Rx2;P@Mh)OWDQRiF~a1D&%3rr~!+GO|G>HZbe7n zV3~;J<9ronMi7fbDiZ_!T*s%97(>0qsMz2B87acmF#_a1d~C_(N8N33#*cT0pq*S2 zmST;Z#Z)k5XFxwIGrfYvDsD7yqG*O-s@wn4=T5BF0URgh-QC+5>j0j}0LZTB`+Py; zjCSk5u_yGemp5ZE1PM1J68Gt~NBK(b=+IXimVwjTUHjY)!0gyrni#gc?J$J}Jo$U% z0e@CJRc@ZiYkRFTq8(6{-RlAkG^W-lmG7_#3 zKwFsFfgV1kX0rmi-z(3&P`c&$>U@U5a8*k@3#oPm!wSZF@{UoU?qsGfpG^vxD~;@m z%m2klebOd}ZHpTb@cp3Qc<(;2*o&U_Y}euUHg|(-2X=Z08N1R0*5gByNXay>;jk(# z=;e`)g_hkI(%~RmA#)C+mX#{~9DgE^>10m4J#H-^h#cN!%CMbulhTDm_{Jd{6B=f# z#=F+2ev?z3XDtG4;#g;A;A8hUZ?72@ZmOt;q}3$vd+jMw%j+*1U#pi3Yx2`J2X3rc zj35l<>fe1@PU^mVs{75W%K>tg!!`MR#^f5#&v?(OnaNYmVZ!D{C4MueA7&tHGmQMT zvn}AX&M^ghP#NnlMV{=1?I)c2cL>Qwsahh_Uj8oTj^cFl%TWJ;P0HlaoJ~r4yFQ3h zF}use%WOBhl*=Ghpw-MgZw0v*gGhfmO-3rc2HY;R$1mF~IyOj79eG*L7^q)`4s)^z zNw~hL#3nsIXZ9a*X#sI^oR??*-L0a1_MI7QBytrHP&gpUK&2qlR1i?*56xbd#J)_8 zopRFv4a~sjR&3?Oae(d%do9E?YoHJ*efh zEzDOTq+EQbU7)e}e9YZ3l=%0O$H? zv!R%Vy*kNU1CN~;hfOi-wWlZ6(_46$vZdxB9BBgLrEQq*si3H@-fL)OiTcMe8%$IW zs;~?7gL3lF!a^etmz;@`;{@{3`I_82?{CF@EMn|F$yQ#8{2$o{nUB_CEV=DrW#uSW7|U7G-HjX+s;Edu+mDVl(WUVXi|8aDWc#kN<24|1HqG*s81vLjmw~6jZtY2XsaqY7RY>L1G+BeW$j0NChGtf5(N&TN6r8V9tn27f%wE?)GGluy+}waAg-uh3X`uP^3fc?@`9k^Mc21m zvER#}jFlZNYsv7X=PVwQZt%hXADa0o`}~Jy*nWi84kTHzH&%YeS)?TVnXR%A&=DZ( z;O^TP2rGW$BjQcGyJwn(+W8r6zF#-2hAC&)~*!}khdWY z;IPHS8Vja@c>g4m--H#rb=p*3WBA#B_^Zt>jr$thZo2;;qcOAmVKkFT_nw>3eXBA5 zm(f6-{4g5(kkcPVQ`7t`x_94|=ZDIx{HN<*Ga{#SS_JpXf(dYO&s+!f85lSKlr6u$OYRqA9;eS943?mTu z52(TV4#x2x_hFI-oZBgFl*uoaaH~r>%X3?|zTw6Z zIZT?Xw#y%9{6}ka-^;zU{8;sToMq^w6~x=3!o2WTBB9?_>D(1Om=eOeE*A!c1X|R0 znn}R;4H=wEuwvtEDWCQBG6=5CCh=4s=H?3T`;wMcevA-h?IeBz1f;@-szg}W>d@lM z$LU8F7}nAAvi5R!+T)CZ&@26Ad=Ej4Vo))frHeb7pr!nqCVISl=LZ7`fEWol!9cbE ze=)VnHn_=rIp(H&Xz8GEk8LRcYvB4Kb>gs8!FND*%3cQ4-}gR;Y6-k`$QWyRwq-~p zKr_j&-RvPhpXd9di&V4E70sC({y+P@HEiD(H#%gK>wEh62^IXmDW;!hrEA@OGC6S{ zl)c%#I{>Z*zkdek{bTU;`}zovSlC&^cCa`R9=pUJD|aI%kU~ z7Y(o83~+R%@*N_hoF`C15o+t!%`#5Y1RmbS)Y%F%`Zx3f!5~^|hBS^TGiiEXNnM69 z%HucV7L@}5O~HQW+-@`cy;)TBGV_Ig8g2as{W}5oZpitYIaaeG=pZ>LF0*0Y^U3JJ zs{(ScKV$+(o~8wJkCqiDno0T(pEGx;-kQ$5RfTx833g{HMWupDvLT)bu@H$c4~jrJ z3wrZx6dDKOgJijh0{vY4S>8xxA)++WTT~AxT)!mnHp=Egog{Z;x@tpQ#|`)LN{B7> z-!7GU-PnAGH}_!64I>#Jk9X3`BUPp$O>If&mAmyN;D$AZ?vt;R57o`!pLFORmm3=C zyns9u^mg$5L@JA=h)6lnb8oPgamaT3qs|}I?LOQqh1I85Q28DNJAs*<4%;izhNpXO zzhsW@4a@?T624R|r_`9?5!xuIi-5R|l4aZBaE_^^?i^(v;|Eg=CZv-XQB-x}p z|CyOa3Fk|-%{y~qDnRKw9X!N%Uw!eV*N}j>R#tK-QoWDnC2NmX5Z1&FS$L|;1B@}T z07}alimWz0PxT@Ahde}qDAZH`kOwV^`?akG+`Q!4oHJ+UXxxQW{qGpUqgb*8?=`h1 zwo7bo2>-3+(Imtx2MjlNy^tJkTg*wR(5l|ru?}H5u{-AvmZ>K{nPA3 zKnVpThBR!y0DpvE;E|$ zvVC47ipZIB8yUlv9gQ4~&tFbp?r=}Do;Y2V^zD2stTYiMv|*Mv{vRBW1^YiZfICSk z72fLU^~ZFT0WNt0eeDPtEQ?CF5^q$V;6ziz9%qVq9xA4NRz3eM0S~eZx71C#`tyZm zhY9~!&(R?nd~2;FgBy!%tsrt|=Zv~Z37;xx2H3e;)l1>ZQaUdtc9|ub>yC}<2W=o4G14aPdYu$rD`NUTGZW{!wPHp- z@XTIxRp;BG1!8Z-+IGvH95;VUkz<&#nE#~!5+L`_#{yAtdT}<)(zuzEXuG>~bbTv& zMLGmrf`_OpT-I#NjQaEf@6`?a>$HMf(B@~b21zMKNz#%oCoGwu!#>k8(aB!Li&;C9 z0wgco;-+cHTR-#2__mfD3VCHgs zBUZO|<{9qrQO_SaZMX1g=JSYC-@N}jWS~B}uQ=iQ{;HRg!$6?%s@I^~b7|GDcK-%? z)k37Gg2?Z`=>n`mZrIjNS;eGTN2u5OB7BdBpLj`wY?(uh<~l(4^Wk1P61Z$=n&{7}+$6Z=-u0 z7?2Fd-{?kV3}m^EQ>v*HJ_f6zYFGl==-TU$3@JPbIHaSzutn#UxQKAQ(J2Hqe?ums z&}qzOC`c3BU&+cY2>VR%mKANUBe`W5Gj+2`^ouVhf#^DwF2A>+Cax~L?g84-k1P3r znH)jZpOlm43@e%7rWS_*8^bj)$cu8KlpN`5Ri$R zIg^|D2pB$Y3?X_i9OKxTT|T)HNyShFT=$>M^{_ zTrxLT9HSvVb+GN;=SKM*#6$2#`-nt_`*j5Y_Kkrdj(Q`pT=|5E{)(&uBFD<1^3Vxx zv+67|l?8u=@XUxVIN&`f28UJA3P2y&;aIH41vy-*ei+dVA@$F^?gl$-i^xZjT8kvpKv(mBZMPWlFL+NHmD=} zLWO;6)~|lbD4Y-T~Qq3%VD9_9>{ zoQVw4@!M`0QNcm@k)oJpavY@RRhpUb71P^EWil|?uv$_uarJTxl`iYJ&USPY@d%sU zejCqm3nap8UiI1)PE98}$X>|#aT!nXHO+0U1_Qo#02^~egIl|g_OE_+kyQ)E3yO^97nm&B}zQ>!?*mHW#qAdE3Eh7NcL5?jq~>msfWL{yu0;dRHwYECbzTy!!hkjSiIKbN` z%K$pXM@><{!}}7fEa1W0sc;TZr2=?R8nPC_Uy@qGq1GiewJx%WNv=+4U{`687+?PX zoa8s8-Z(%lOxf@Q)|CEB0$%YK@G~Gu=bMl*XRuY``(f;|7suiJg&3f}Jy+}W&B;Ok zF>^BW%Z}s3FXVpbPwUi~?R2jzAg(d3s_)zDVAzT4qU4Kn@y|4%;s)^K;=H_ZVVggg z+`ftwT>$oJfYcvvNe{ z4i!a{_%9nBXmO2%kyhK;(t|J+yWM~_L8vHz_Kt$X0skBI8=WjYsa<4NRSJy-4;5+t zuph`1ln9v&=*P)GN6m?;Xn`PKc7y6}o2Sgz6PeaHLkaa~ASh|RHg^M^n2)Qe6v!4| zrv~whN}E!~Y=Gladixh%_BSl+vX=Uak=0fVmv zIzk{@0{UwlC!f;mUjN?roA!-2z;F6FP65$Vl10az76%0QN4;N7zj!_X;BWTVGx&PD zU@8d#;!CvcTu|3(fp>0`+&Ca=Vo&Ps7J^5f$V-tl!9AOf< zh?0z7y#e^@u7CmR51NMLg}%?fIdA*i$US{bsZd6U_haG?SQ;J85S^$pbnqVlL>}IjJ>t+=fR{ z#=`0fk=w~9QtzlU&Slx*y}fW`+s&OK3k3zhB2MSU{vL|edc$;PPSDqXKFP&CbWCqR zt}w}|n!&W`tr5B?>`_$qIj_cY<@v^Jo-ttv1^%^!a6klVfN(|%F1GU%h?TMgN)s@2 zA7)2#B>WG(Ri*_f2oj1bGep z8)P>6Eg4EeR$Ga-&35VqHpf)fL7XXu?(4U#v<@2__l5*Vd2c}eDEz7+7OAg*zeU~h z?5G-e8y4|${MHaT>7c+$qsjb-(90r`cb(k47v-)I=h+-Ok``Hh#ek^3Y!AAaxMIF?~=B z3q^fkyOZm`tl)@izIUO-oPQ@F-FI7vHu{NB1VRrhT*t5R50SpF!rA@aCaSd;wo*&D zx0?)kHY^0u0gp-B8dK%Ajj1DK1NBNKfWHF&Y_KY(JPW5v0ksN`x#HhDel6x-z1J7H zDX+cU5rBTEP4b=)gVs%b79v_--Mfv*9gWYH{Z{neUi^<<@AFStvAy>jKn~g!Kru(_ z&5sn|f1(!PqK;ctvD|CLdFfUOsCB)VX#x-mGHwF|TYn0wJAk6ujV%EFHGtjb1N&#L zMbKC2+gC5(GJOkxyAFt}Fx>UOG5~qjuGS<_uca1bNAtMmbA7(eA8p>D?;^69&RoTZ zD_Vz&kISnt>DZTBdi9x9c8J(lZtl0EjU%vRSbVBqlUy>w8`}YJ6vjmJTnWLaNV?5V zq7!b3)l*i$KSQ4<7gwf8=I*)dwt7(2t+k${uGTNt(W<5XMm)CCr?^+bKNa^8uK{&o~_1pD;nqLz(%_n@ggSWUc z`K#d=qOOX*rnmIZp6#9KL5u-$Rh3esvcw@Yr^1qe6;lbs5&PV9h(zrC*CIwI<;_fX zPw9%nwf!A3v*-5^2PmQ zoDSh=K-iCxAe7e*sV*D8?GXwD!LP!9I-6=UKQAOZTlg~UpTcfSUGT;gNSVWcTY(V^ zmWYsE8k=vyJ0x@1TjASjOmrA?eNcW|q9Q6o9qo$1C%ECi`}Tq^u_p9?2wX!waPFsf zbyrT^P}&3=hD!k71dc4=enAs=q;41Xl}Ef63-I|6`8ibYgg^MNr9l zq5OndfVa5TYd_%Un)6wO`?7Vbb4lZw=*GZH5}AZ=oca1s^`yNVI`rZJbEEPVsv%8LEkCf#?jXFVWKD5L(d`4`c7*LlXTGV|$~4^ONEjfeDy zhn&V*S%>K1b?8rx%aKBT#`6QH=d99?oI$oLny%abMunB2aXi6 zeD}`89AJJTeXOr@HZyH<;&HbXdydnkxigP3J`Gvj$I6aOO~|at%^S1`#6pAO{k&M$ zaOB7;Z2H13Jz>p55;rPX$UO)NI+YUNw0DPk((Z}ZnUDG8rZ?Hpx^UuyvQhy_ZSs#{ z9`(Rz?R>YrZo%z~{UtyxM+o<&$l3Zs(Gv_%C;jyYaCdOx1^zMf-LnMXc(@rQT&ulTP*kJg zy<8}lN%$6st?`K)&29B11964?782M9O%&~S*_+W7L;znoTKsV1Bo;r*3Cj*27yJ2l z`ffz2ax^_Gy?On%!qS&6^FB}pHW}=HkzXyl&k@M-}Lmn zNiJ5^WL%SD+QRBdPD|e86f^-Lm&4_Qo>)V98RhhwVz_l&3=z9i&=zmRB$`Ujanc1>~*Z zc!&)|CsxOO568VWoT>{C$E~*ZPM{?cgJcz0Oj%U}R{T8QV;#T2tqYrapqxXQ>_Q!) zsO%2t8wvkoB6DwxTBfyU+|MyN7uzYt_9^;{wK6@O zSee>txi&T4wV@faUh0F^tR|E`Vj2YuaeY6FX-ZVRjHB-rLVse~39spb=gK+lMS&N& z?*s9x<*}&s9!-^Z!rxj9Zz3643$^}E+2XcAwgE#K#puH>a-Pa`l%0wVSk3$PFFR!tHO@AdBcqDyk zmv_0Dw9cRsL`f9iqgorc7%WLN5;rcEL&Cx7Su(5pG!mD_&Y%1X(6msIAFfd07Cwl2 zPMh)Gt$RS2ET-|v$aORjBI$-9N`r@VvCr%caCSS?Jq?AE$Bde4U6akQ%A(=K+hg+) zLKI3XoDb;v-VbaQ==#Hv8S$Ff@mIw|TL@%^8d48@JW>oI1UN+g2_!oaHDY)<@~t^H z`Zj3r6O21jVm>a;?kU%8bpFr%E!#O_L44Rh(;0aI7=}YF*Ycsg>($8oKG&lfW4OvL z25zDI9fdH*CIdaoMXBs!AIBH;1wcmO%t0yZ+8*>q98z|QrFp^rDFCUdzh8L7^A{{S_x9@iaKbc=H0EtR7U4Fnm8iFSna z#(xEUvuUOHegZEa3x?)n-L~x9wQGi;mp>Q&*oxnI1BgO{zn|OMWD0=4{3q6XB}w*F zQj1Fo{Q$S`k6Sywf`Hl;^Cis7n(5Fzb*!!6(TWX9qFG#@(H&2q*aN&?Ln;prGAtaj zT`ywRs(~qLoJxZ_UW=Q*+_8mYWcqyrIc-3%J8AHuDKhM>gqw+9b(1m*>#$MP#ktjU zo1_oZcOvMFJ!B^GiLg^QtLqdpvOa_FAq}c~PG}`C4JePji%cC#JF?a~y1kTX=9tBo z4o{{Y-N{eHc@Qw!Ub7CxWMzt`^INuPCLcY!VM1!7eI-hu(!Di}X`Li6^%$Pq%_wRj z4fsM!rk`O$?$;F41nX8B9Bx{;)0^}g>mv(y3n!SDxA*Q*&UU*f!E!VP`(OrkoU6rG zXX{=%X4eLvVpPj1YplO7xS{!#qFe2z%4ExBWSg|22c03Y4AzP0MSM7NS|UQqUbrMj z8L=$q*5pNSUi3PP-23YjwPiHt^}15wTZ;eI{#NtkKC4T0NPLugX?Gu1DfgE91S*(s z(n}X>z;jC1UYxz#3F(&#jgr+j!xE9Bep4;87pqUhQobzWp(KJ@LpMyQU`FG2fhrieeF-=I18ko~*BfgG z`2i~*{9~lXt$S7?Q_c-dO!otN4%EKtJPoC-cJAOW^kpIuA}eab5ejyRV|7$ElDA5} zgrJW#Jc&hnf#tMd)%DAGUoa^5TzcpTMs0KW5>rc#jd#@ugz^7#8Q$y;Y5eX)suyhx zV?qssp(mlpG`x`5$$ z%f7Ekl}$gL0DGk4?C9TW9W1Te+5@;2#76>9GA@~v0g4BcaWygukXfB@24=V?x} z&?6evz>y~Y^0CAId;VHOyd@_}az@@}^Nn$~*2exbhSTZ}^wIATzEC@uP1>hH=5SGZ zq*XTJTOc0b?FN#@>QkvZ?ot@*6HH4`s(|uWj9D&p3<%QZPqr}Q5#W5 zmVcKb9U;FDZ9w>ZJ$fu#)QP^>EaiMI8I;Hg`g*8n#dR2Y1%u8+%!b4p2JppLH5&rX zM<(SChYo+KHLMinW=I1I6JZ)unLWjr^`Q2cN4v)^G&si;SKrmnRBLFTQ~Y@iq;r)!SLChO^o+6Y~}&_)VgNK1nJR| z2Sc4#X9lV~hU5ba#@Ok`n-M-k5slk(GP3O6-;iy|WQa^><# zj^O1A&15|5{Z>!gwqYyu$sZZSrRf=WV8snU%`f^P7&Tdq%_A^8C?H24rgL}i_(zQG z{d9)EHqP)YTxJFfAEB3OIcI+yZ#+BDp30@O6TMOymQL2;yQ$LqO-Wb-Q2)uwr-(4h zhSxyMD#!;+OLGlFRFZca^`dw9=IzX}cPf*rD#fLjx}myF{F{B?WTwMhr^eO@_V>Sz zlzc+mImpC9$C6s+q#5RfQ3mGT2rms$KO~+Hz~l=5v^Ns2oppqkRWeyp_;=7QntuwK z_zml0&5`!0dk@E+NsCMc%gUSZDMO*qOFu6wKvSghmdS=3D8w@o5I!5yEU8dIO7##e zdm_sVQ|l4F?QQ2Tfdi&2HrOJ9Mekq>dRLRjLuc;y5AlIlS^R!5M~I7@Bpe&0sV?47 zg9T8?QbZ^j20eoQ>G< zWMc&^HNi)_YTMJ|GB#9+jah47+f-#lruq`eM{Q71K0Sp$Tn`+4+lJznzVpJgWHx3{ z9N0VS@ym?lK zyn+xoBspM0RFqFvVWC-#9aUiBxnJodE+)p8b1NGJ9o!R)9dFGkf zq`aQF?iKWs5GM5ch~wQhxj9Svdj3`ER41wUBfZ`}$R#A?vuxd@guKe-#7AflZjKKv zKpXt*h-ohyaBqwIF;@i320-xoyj%~iz1>iz-Uxi&?QLbQ_+{lTt!=FQG3e&-?e%=P zer#PaKNk-9H_~eNfce*@+lCxHwXBGO0|cvO7ZVHjv;}ADFI&h;F=G~ARa0a3<09k) z1PEgk_Ue|XW}kXp$(CbK#DvMRzgSG=sef^cX7y3MDoBj;A;mE+6} z4K7`i=Fl7C#xz=H*Fq{3Nl@9GNp-0!Ug=;KKS;SNG1N)2WW-1;T!b``C!qrQxS(X4 zxx_FEULTuWO01Si;>)!d$?+95%blCP(#sL}q{#%(rOP2cp&({1NLfVMSB$uaNClM; zdKFEq{HBCqW;svz=%`#}*TB9zQ_h2OjintMi$tkZWQNDVi&L3j+c-|t6sV8lizhrFo)C8V4Pf%={WkKE60pce z6-MFDi~#3$h2Qk4O+TBm>{!)_&**EOQ z*9hfOGOR7_jQ0|3CWuHz82=x_-Z99sZd=!_%u3sKrERm)wr$(CDs9`gZ5x%gZD-Dt z-&$wKU3;Hqn1h!JB(%%`>XzODNchoT$Vg$+_553sl?6y3R=`q6~Y_)S~c z9}d*msLZb74us$c)7!-m@w|-D&{5oaRtgGx^F6%pw8jnEltgLJQAS#p8vE5t;_}T00IVfWH6(<9%nhLyz2iBc&jY>-NMTa6i`qI3V0> zTMKg2tJ|yvpb!j6h<=YR)c5-%!3UicJIyQdIeOg*3zyKm10Kjsfa^E4!M060H9V^! zEMuJ_Lt%c)w~dH!$61MpBa&Sjoq&-}3Q2Igy}Mk#0hKmKEB027?mH_}&b#WCHsIm! zre4J-i*M(=V`=2LYOZP2LgOlJJheGzS;b-=jj#L)yODkIk=KOObqa z#6K;=35ip@YVQ3bC36rlU*yp6QAvcy>q`XOo7DS&1A20^; zhCS<`EEr2KKm3@HG_03_9Z6S|jpJQE_0!=yehMc;mr0I@5)hjv60RX%0=w)7u4XUeA4y#V5zSV39^>#y=TNw+G8W^F}++@F)x0@Hwx&AIM>hiQ+mhEgh&UIVF7n;UAoY^)MYcv-9_RZ@n zdIDcty!wuJv2p?o1JF0;;*psGN3gE|Hwun4z&8*VGn(v-@6TWNGqehbeX&OG`CA z({>RfGeIP%S*@=CUsDO%`ML!Hbh&{BULwgh7mYuw%%BY~?C0RF*?bR0t2IO<-XmtnmRd?|*7ah)5#q~r0&kM*Wy>^I&Gt_<; zkj1pwljoF;BP>CDu#YvEWpLwp*02J%MQRRVD9*8@6)nW?kp)Z|jA3*Z;|;_XgWBKa zdRUQ|YOsDjst{4l;ZU>uJtAnCM2z}L$-K}n|5gg5C0;g`;?X?%icW(gWZT&MhZ}bY zRFjc!&_0N!a+~O8SwyW;i*P)vib1z?9Lmi;uU~ zSb5G!Zsr;p_&#MG39Unz#R@ET7C}~_ZBl+zqw^RH7tI-m>8w093CV?s7X-z_3$HM) zKivxC3qq)2|-&IU3UKsvNza?GW!PMalwb8PV5izFno(KgTE*fx47D~Jw zDf9S!^o7SH7Xy0N#L1t~FqKl4X66Qih=EN$_&lsrVcB8jEBzV*MKoj_1>-uP$(R8Y z`Z>9qX?lL2Z~voiGy19_&t%AxbV&lluqM={i2$=1Z57w&y7(I%^28QB?DV&r zD9%VQO$JGq^97xB!E{YLa$`yUZv1tqjhQ53G@wzH~O1s6XnMO0lXr~Ow3H>R3S=k=>A9kak6r? z84!H~w|raPlIQ7{L)0Nofk(Y$DkT&_%4z^5r@S19IL)Hg7a_rx=to|~b6+79GVLqm z`AZ(1hgRx!)}KAXu;|pQS#s9CC+X;bkY)w6I1?8E($Io@t7ScNTcp2S<#6<}-YtKk z%tk2HwZRYbiOYBN3JHvs-J;uAKW^4wy=*-p-RAC`8Qm5kQ}|()Bnue$s@_(3f|^dbzA9 z&~)eAK~IzRaFtrZxtb>%f)#sZjChyrPBowT#3RWihJaK?IWsbII}Oa)%FTdQIh8K< zeh{Nm=(!CiwaSB7ccZ|b!$P}6Si>NcwaI_^V{~;nbS))WVzs21#~gS1w-(uGCS?uE z0@c~$e$vQ@H4sI7{98h$RR^nr4TT3lEEtRPWZ9rr@QIre7Z;rwkh)`V#WszLv*eYx309#b3RN(YR?$bwFgQC{!=G9?lp$Dwc@CVw%1DiWv#?tL@gO;S{RH1D7{ky^|X4Ya)mi5Q^kN@4n0P*lEVobdH#1_AS3I zWwwH0N@Me4+C1v~8-o?FbJ0NSM`Q8efqU|p0>O1Ha(KogPnK~4TZ>yvwJgjSbpi3R z`?OMQ5f6q*@l8FJ@#b_6o7?vDDy~$YEhJYaHsc~94jlm*&~Riz2ZS3e(I|I~hEDK8 zb#`N*{WoSicXK1krLf%->yhQMoud4Oq;dO6z*Qk}4|z%!S8DW2^Q!`AoVE1hD*42CoKL3vY&v&J1gIZ+Kh{f_Y}G{q9cADP&3=Melz22R@oDo0A! zP7GVAehrCBXAzPEE~VL3?8-?Pg_kRt_8dP?{&r4dqvqN1MCHb8WeN^(hl)j3=f%p= zcvbpB4S%v3;-%%(X~xGF;qcx$y`ucXNa%#^8E6`b?)b@olN7R_eCxdRTxR}iS?Y3d z{RgyHy)g%~cSVjv_17eJgde`KWp)I*FgrsoHk|Xky^*ublU&&5xa@>2{Khrp$BW5z z-1vN*9405;cMcJ+yLzdqJ{&t`C__?zDx4wZ;OwaG=G;%noJ|&={UZcWpnR-etkbk0s`z}Lu5Z*{x8ZNXOnT3T9M zZyqS9JiA+3o*!--N-jdlX5gNlp5fu1vg`4`FR}$*yYN|WY$4i5;5|L5Fb=l1@D>07 ziLcL5A9GP}*WQ9nm!K~J+SFIxUcibp%#}UJ7MyBeFRq;L+v23x(nlv~wMKqj$NFQ! zR_$S9!B_RMt9Q(^tMM2vc{onYu1IpaN74KsYlidk2Z{Zz^t%N*{^iF^?8q;#JdJ|X zn#o@m{8>m$XQ5xYn?jz5dcD7C^%X4N1^t^TayWmy0Anzocp~ZQ*no$A_Lz;nU5OD* ziCXdRdIR&&H#H=HeEn$CJ|os+5w?4eb%g)GNS`V`QSKMeWf`}#s&uOC;il4rOUCwT zhG7DiCgK_A9kb()gd&7n4D=no^5Y~&wwEkGTX}5Ss8B;J>Ttr8AMpJRuZ|256?Se@ z8hcI)~iw=PI4^kUwxH){ zs})^Kd_S4fS05+@#@)nH-u4%HKdEJ3ZuW3+ssI%B$G~kz%YglCmdv?A>lP+)Zz=pa zk|e5Oo&b)J?&)`SaHdnP1X-pHvt>XV#F_rN$uA_9!9T)=9F}KC%YsV^Fru|ARuE1& zEfbn>_#;C-Bje6Tf@?!j6|h5W=v3-{LEWtKTRb>>QcRo}f3{>u_U%e9G<}g-kZ<+7 z6;WmVnq26?QvB->Una&szf_Hr;UcUJ;*xsbi83b99syTlyFyY1{pzcJ$ODnMdt%du3HrXyJ)V|Yo)cEI<#fB=%LSgBbA!gKXYuHTtLUp2XI{RC55~V9 zc0yOe+K6`WHI%8^e0*HGo_T+%yq)8u!wpR0y`hu|k>Y@lL)7$&EHr)IRA-nbA8NTtV$7iVuqJ;MdU} zYp-)ukz(Au>+9-(_2=|kR$C%S)<%L$Sahn$*V1ep%ua^CW6*2_g|oyg#o=A6NqC{h zj2l>QvX_Xt#OB~s1}XWg4dYZ~l1m(Qfn%Xwvch~N97<9b?I;m#duS>6J-B#e+B@ogHVdDvf%M zhg$#H2C^e3*gfj74O>swr}+{mbes5gay22eb+>1AEVEm9_!Qv3%?Ms!NTOH&1@N-< z<*NbkZTouZJpyWU05dAtct3{zobs#ZUTKzZ)G#nyz)=ti=`TmiEq+9RZeH7%&}OzhEZ*C-eZ+gR`5sq$jF84&p4>lDYb^}7cD#R3Xj*eZsy&)%XoBzTECQHvpeEx9vAy&F`aG z0Q#SNm4J~yi62cCSIde69v0k<=P$PV(Vtw;WwjAzUHFyHfsa0FG0%aYs3Mz-7XbL)U9>F$dQd-g&ra@S+GTpa_V)ne zJy7(a?b^ScDD7n16DPKv*;0YN%%cNrrlXt0Gjrwoa0#z1`7t~5dw-e+FF>3NfCHbl z=4PQS9ukoT8$*n5s$`MXGJi5fa_f*+yt6Kg>vw*3`Gtds23b{QCxAsj#4j8U>|cUW zN8hK%22+oGc3<>V7=J?F0Ze6|tUq!N0m%T(FI&K7;D@YCZ?+I3ie&Z=&NNXMkM}* z^trwc^@==IL{)S)eA9}34HK-_DJs!gK?UH_x)mVAnYrpKlu zPs%DJJU~Lmk2!q7Gp*br_fGXN!b2Y0lwTTrN)e>26dBJkF44>Gs%R*J1-aXE{O+ zbe`VNV`hZ*9l;iS+GQ~chTIZapJ?DC+G(nR2Xaqj>**>c>sGh4pN@VPuRpIlwdO|a z(a{wtGvwq^-nIFh0(~Rth!p3uiHB4frL|Todf{t=Jglbwj1aOEq_FWe^vJZM24w+d zy8MOb`7-wBKft(S$`ZcR^~Q5Ez+QHkeEQ?gC-H(Q%gz{|;5Q<^bkXf)55~VA`&oVQ z)K7lTNu8$XKPEM9(lLX~hOba7uW)%+DqH-n{^Y!BHOC6bs2ou^rYuXq2p5Psd^SBL zvQY;AE{dP{>i6 zc=#<>zwRmX$W)y53e}wE`U`nl9zQ_FycdCNd>=r*JRi(My4-{a>pzq@v~ghk%ea-q z5npIG5y>XL^%AfAx?!$u4wdK$S$iN5(QmO%Wd+rn4X3>in_{4w`Zk>ZReU^>4m}f* z#L>hORx3`c_3wsfPx6^^Nm5%4z01MkPkV>&E)MyxeUX@?w%;#*y^8B4e)&z}_+&)< zCG^^re)+w%FI)9#Luptaf2BIme}hnIf&tRbeF&bK%c~g-_+)@_elkwP>V=8%Mc~R! zg~hvZxs!pycsReL7yA(4kKz6L+I>9j==t>d(yf_coNO2hG`No)n~dt~{X!Z{doayo zGP0P@m&RXP>|u9f2~N5(L^W-&u=R?$v+U?Nv&wJd3< zWx-~svD}`@GXB!^?{oIas3?ANzpQ>6upNFX7i}#4RIa(sXI){~7+ce?!d;dqS%$N` ztWD|5+s3|8?tM%l(ReAU`%d=n9oKX^U_MOObeaoB4Vvesf^n$c!1q3dbk& zn|K`Z6^kj&wBYi$!uJZOHB+k#w5r4a&UZ<*`evPJReZahu+`y@uyp~EA^4R4TC%e> z`HMJ0CzHiWfcmH)bc)NAJq|gSYm5XZ|JEjzdB#D&Ei%Jgc?FinVthu?u<%sds>U5r zeAAgmMRk(%_2Z+?q?3_1}M%=L!>p<#x-ej^*}_ z<}6iHvTqqNT#1@{3hTYaMcU#7>z}j=D-~mxO$S43q_HGB(iQ)tPjsn{JNxf~2ehK1 zkKBkdzDeDNxnq`o{{m}!Cqwn1iR<^QDWbCooFgIUbqbh+n+vxBBei%W!8^j<{j8#6 zfZtxI>5t@$c-u#}s50&gC*H^dS{Gbu^=)|dnapsBqe7-=-qfFbS~m~B^bNNbWLq}( z1W;T+CG*Qf@trsDys=5oZiz~b@wW%1)_*S8fN?EU@S2R}=o^nvpB`tho0RQ8rEXGp zrL2Teqo2Duiv4US&LbQ{QjcThYlS>`viZisIO zs^!2(z@0Er+9`8>0NqHER?XgcE2`M#bw9g};DUue2wIhU9mth*;}FP7r@DuJo`L!6 z(X@DjipG6w*KH!meAZ!&3^i9I2P}-xfl0K5d_W&`d08;UGJ>!bALVG2mZ_eJmcN;+?S{zLVEQBwXt)v9}&cUxIVg* z9gV?qgEn{SR7YaO$e%OCO~ESNi@*9Wfhn$fpg%_Cj6i?c6i4>f6UF+L=5umoWcsPS zJ=d7r^K3Rni4lKm5SPmU&nTMUsa2l|ExA z?&)~^Y5ez?%Cn@jeA3xrdJ7%iKOSn>i+f1kGBRNq1H4M%xH8`mjonzUVH5sBELyD0j*2n>2j1yRl)dwRPEK&*{P2D?p6f01u7%XfO35U^AZ`4bGumL1! zBWiP2B|feFaB4Q9zBWQSNGoxW(u#c1pqM_Q9wCBZ7u7LXB{4*K5=DVQlYK}k4@H-R z=KNixLPo=RzC1xCtMRN*nXHP_d`bMjhmPgR@CyY&KvZ{l&T8~gKitb0UJni*G&MTi zmaYcSCg%b;d{lQ>(H!P})7qr}p{CCV75SL8rznW;7E3>!FM7 zV@c&iV{)A|yX*Dwt!{|by?##2$vfdKi1oXTvw1dHv=#0<4jC&g)-dkI zoS1}JPNOKj@=kGWsI6(gqguu7)))1TxH~_K7Q1YJY~%A ze)Y5w5#SGQsMwe^;Icu_K!6- zw2`5|6>)47$Xke3nKe#q)X#c*ewC0qd45)?6RH9uXbSx#u?is#l6lHFmGDN1LS>>V zB=i3WWeSFG=yd}_!|U%7QgaWU1r$)T2Z4sF{eo3DgMfzB&m%P1qD8~#2NqP*gMfyq za}hDrC#0qxbcKViqih)Z8R)K-?}*mg2h6r|(=-(_ueJgPy?)bcJ{!QQHVX#5cB9u^ z5NuT&3yW6Y_nXzL0cIMQRjn5cdZl(Aw*{;fjOR(YfaRo37u#SUb*ZTomUU+sY-7a_ z8{5wCr;Sx_6l`l95ZiwXQd|zVCCX8x!y0mhV~J=C)E|+9je_t`pvw8mfRlgCBAki#>%mG6* ztMZ>LOv`{svSScAgjN{I=Nnh<`W+3FP9Nc`$f~H%rA9AHlO)~ z_gpkbL{PyMa<0$O{U)#qd1IE`Wvi~D4?(tl_74B;wcz^x*Obz((u=PL#o*6D-W%el zR~A#+U;Y|`5_2iyF-!<98r3^6U;B0Bg(dY`(uFyhIUJ}Vk2=FXEfa?R!s`OWtzsD9 zK;cdK`X_C-VXs+I!j+dH`iZq@rnuxpmT$&8!#4Oqw!3D@1H?=Qf%;T8>lYu?x=Qs- z#l?X~6le5&Qf`yN3U_^NDQI-d5a_-aQP?h_HYp9n2I3bXM0Uv8xFPtYac5kBy(e&> z(4LGb6Qb^3-8ZY&UQE6P3?0+i;J*)J%dB#JvSu65!u>Y(m@Bwk27-N$DR%`l>Z}7v zmj6z7j;>h-s^i?V07o{OaDi_K|A>08&>jZFV^*x2J0=23sp?S&TwNVDP@fjA+{DY+ z(>e4e80C!FL+t5|7vx4IWHOOJ7~NI&E~n1v>~7Q40IuhNFYi||)Ds9T%CJ9rrawwH zAHThdgq-zPcgxyeKnaFO%FUOTwijh?*hvn6H_6-~n9LuyqN^Q*Nq3W|we#7y<5 zYNW?(G8RbLfBDP!K1?DLJ%l2#C`*o%)U?MzENdIVB&kF-0*hGG{%hIP{%*IzCjXD6 zf?f^GzquZg{-RB4-s783FN@pEf93ygKJ{7shfmWUHi8~EET=UxLo2U`RW}T)X6@<{Ff^Lqbk`1s^U#EYo zXI!rElAQcLf>q~Pvv&5$4Dw$USsF{nm?Wbj)_5A44uUZ)zZ#EZsgkO{2!!W`vG}Wi z9{LcnSo}4ROIiG@ZGF{$m9hkA{Il?KPa93;F2h(%<=$JDaB_tkx;n8B;j}mMJfM^W zwS{b(pfIUox{kx-9;!?c$1j{q(Wg=hQmpVF?mrAjp=X*8S1rI0%uth7a}R^9v=^h& z1kXvkSxrxdV+3Dv6oXIrvN;AJNg#p?6WcJNz^Vv)Q~+ze<)}kRv9*)%OZuJv>IH)5 z;k$^x5v=8TX}JdNw7?_7zr|pQLH;3nI{+$+!kKi;Bk#0MgD0e~T1%Ynk?A$*=exRZ zgej2)3p#1@5X$1c{Yhvv_M}O?o)$yf{yj)_PI!EmG`hM0Mk|k}J(*yS5n{mBsb`vT z@%mG&_MjF|r6TL5&=YwrbIqo|L!R5fXjC{fo&3pdl4lvq9FD>*{zYGv+~fo3vplGJ zyyV8LoRL6F0P4dc$J`3)B2^P3d!{!}orQ^R7 zZqOeX2A`#W2p9O9aCg=($uC|u^(RxJWx<#&*)3>`Bnh7yhx&3Ur!uXmkl82lQpDB1l+k6JU2EFJb`G`%wZ9ZjeAZbl$ zW$%rHm)CG#>0#ogpV@gB_sn~hZY5Swvjpfx=mBaB(#Cvshogid9FjbhYVbfHK zKwnCS7kV&r-S>(cLGnJ-{EaU4hwpwtsUv$}ab_CxsU|b)%YFs?M=HVtLk?Z!)5%na zYV}Ohos7J4TFGW+7ablj32Nl4+aKszjOQGNYQ7>HKH-#{`9{TJu8qn#^o4v{Qcz;{kjX#JAe~+R*vfP|!33^{|0?oO0$ueGT@3 z7NOapmB2B3@B~A+WklQB+kslfh@%L?R1%*Zn~RX< z_{l{YTh7N6jtATRw4Om|A3>Q9CXVlu>aJt#H*zM-dlvP5NliajaUM+_<^h!E>bhS4 zKfqhX$q~c(N`Om5-~fCr?+aV8Ln9S6Mn+e%J-;_p;Ud#K>xt%Z-O>NMPR#>N(sn_~ zsPC4VeajUt+H~%UdM!)1qruD-K6***g%eu$*}Ly=Ro`M=YMY@*0{GLrxSe7X7r_@YLYNw?*4vVdN1A6&n%rtv;lDW>v za?YtRoH?3kX_+TSXNqqcDZH$SY_VsyO_G6*njR)CF4Ly=m{!l2#_k;H4%&FBVvG7I zlJjqu^OH0pRgAw!avz!vEf<8N6|&&a?o&%x9-bJ|NHu7rU4&!~A+cnzSg=Mca#kt8 zON?S#7Nu`0H1S$4fl;e4X;vN8X-!#nX-o#N#GqCf9g@*gQ@w6+MNDY+lB)NynnPw7 zNUY@wThUgm5KpWm64DqEW|)y=OenDCG+EI`th%-w>!84JV`Su4af1~f;RYN_3#Pdh z?HUs+j6eaAk?v(vM=>#A)BgcYsh#6r4qcXFw>9+d{;NiS4Qcetznf6i0vp_D-_Hss zHc8(KB{mB9ZJd1dw}jgN6?p%}ipO$9Y^gQ9{eo(45YX^-?K|YqaQc0O%VL6PSpB~R z)y%@uS|UJ0YI_m>g}#+pb82c3(9pM81HUWBt!{hu@RCn5LBHoI!?Jo=H{>y+HTU(i za@%1w=E9;i_64wVr(T*7VpAIh{tJD#sRJAQV9{#(fLSY@Myi0S1!BCH%wRpP{)Vj3 zn>f>01pc3t`#;h58)yH6+W!l9{}sX<{ukT-pOpKb*!m9-8*}}CLh=9H{-5})?_CPZ zObj}BN?>=h>XSjnmYvh9U!Yu_86w0kIkRJvw zatZsCa|-|4Ik)-E0m}!rPeO!?^fJ6I{Kvtr9Q-H#&CLxAce=utDo^r6?NoI1>O1?{ zdjS4?=a{Oz8-rC#8v<-|a8dOy-S}p1#BC8gJ0Z4Kd(r%IoMCyg^H%>I^lVnq7FyS2nwKRhyIqi@E5xPx6nH71)nu zTKFOQBQBh2*bzshIy-DnPfu{!ocj9X7h3@2|0LhQF0z(;^ck>lJo9|{)$+dmwSMyT_qYe&<6{EK<%{|q zFt$Jj{`v_xcx^a#0oXbKnBoIv!Mf{_8n~9j3wSFyIxfjUs4`ZTf-`-?(^aT!1VF$$ zXk*B{E1?g0@t~^Ds|IQu?U7nMzgYP8^(co;uWf$6IpetydHv&94?yQ0OOo!GkI1L0 zTOS^l;EZGN(la*2{Di>oavu10J)^zs^I*jffns6IQGj~*HTN`>enLS7$Rv2b#3(i3 zKz%V3M4)?C@G}e74Uk>3;u9b5Hs#oDvb~9KzW2(5OF(<=0GJMlI6yOu^|*U>@=U)5 zr^~@#@m?2y*YVZ%j*;)+@AJDJ|Fm_S1=`h~i83B3_5a}FIJBluOzw%W=_hdLnol9C zBA2C={ISm5VSJ>D9-fh#oOzkx75S+=Q#h_| zx>(e2$U!x9?BF%z5t}Oedj_Y`CnFkcu&bME1+kT#izs}rzKG|RyRDBS#=QM;Ge_fU zfgHx2s|_RAno`nIn#Ubgh-SY;>94u+=3sEl)`&dYQ9w86y>Le-ZPv@Rv$i-M6qYoECf?bT%e)GnIMGiEZx_jxp z!0~|VbG=h#7W3^TM%K2-R$5lZLTm#5H5ghGC-*g60BCi4?zlbZ`RJ?hk*jx4)HIBq zwu3&+J_u8a>~~Rr4LB|1J>pQ$s=uD4PT7W&6LPuaS_G(2z0r^Zczn8j^$z){0P3$Z ziTy1A1yrq6f1A_*Xz{PR;0jRv(=zAr-#d|8ySEg zo1HvAZRjoWi)h?KkmM?Bau+hHirO5Pk&c=J-bI;jkN&W8p3oon)@+e# zTGnG3vA4LesV2cvR6i4sQ?WIfTfI@B?T94~WMWgQ2;%~8mW;TkZ!jgDPNtYBL9u>1 z7e34EFA3E1M#0&1Zw2dDkS{=j<9sxssQ$^>xVTE+3007BvtsoMGQG=@K5|EO{2EOB9KuSmQ-`qXVQhW_@f96#wZJ7 zo7`q#IjPU2Hd)L1NTuUVv#Ut1Vq7g(wU-hW7XDt-+0XNKe#QJPc{m=+_(#+9rQ2k5 zD3(uspBYu)mt#K{{pk-AL`emtn+yeZj|(Uq2%tc2a=ZRZ{*|?z`rF?ELCaa!#&7;o zX^XF?!BTI`z2Sg6bTGKt^QfM6EsP=?4=(9J4T*cOVF`9kC5c|BYki_lo6L4=jlXH04 zGn2!;-te?7{ZZguYD4!pS5hOycx(m>FW+`;(dO9r{R+#gz_>_M85Z?7?v4$b|4h9G zJ^@#aaS{HirK)O+oLd|Y9d>SOln4VP`dRB`r^2n0wn#kQQ!DpijU}GQeO|E6uX@V= z*rF@Dxt~lRxQ=PDQRmW@*i`+jjMKbwE)m@h8`90;#I~@8lhCy84+>@LRwkl6lOX#= zXmf*P4odj$kzwJZ(5|?&m18{i~$@d_7MLt?^RK46d3VYn87Syh!5FS)|NFe3jv!=Rrj^AZ_vtQKB&8eTxM0v z4Kyl46yz6<-1&Vt;bIf9rj|`*p{77ko(ME|IUM^~xpRXRWnN8OhnDQDN+6o8Y5c{5BX2 z2$s=$`4rf36?yyR*1fPxL~%~nWb(9(2`?X&ll9tbp*axbd92@WC?Gczn&SL)n~GZ( z!zr21+|rQJE*qM1Q6pC_knfE~-HL*qiW_Aur&`X-UY#PnW#60xOu)cJ`EKFxcM#O> zhs$@p$p|C#N0A2vXhF0Ty5?8kw_3KUPVEJQ?&qp4`v`-pFbb5@^$h|JCK6Cb4&fD)q@!cR1I>KD@kMXPuC!(j*CGl4*;yrivx?sm!mn z<~lVoF3orYCgP^gQ>Y8($_w1W$*p+t3c$F{b+cs2B&d;HCPVAm7N(e%m0{=6@6-j= z5DH%BJ11j1XE@Z!hR#;?vKl-K>HQYMCp#os_u`VYi0^6oX@Y1h`frA1-7)eNkx{A3 zIN#dq-U;BYZn2VE^|D6oOwkjhC!^3{`TpP2JXdx4sV_hsyHYUV>_FaW{&?Mp{wKn3yj>6Usz+uV%Bv{- zji=2vOI8Cb!#78lB54kyZv+l0jmhmsGHRL>Ot`w3HeXhu;}{a|psovL#F8Bi2x9UO zFO=a0LR;zlSk?)`>2QLNz=q|>@4b1ldzHiSNs^K6)(1b;vB-@n6T*6rP(H^$`BX~Y z=t=>6o?i#yOMt2`+ehCDfad4+89)Wl^49a;Lr>ct*MKOT5-R>5>EEAO_q=;C2Lc?w zCU{o>Y~=twS-J7cBNXu=U_69TR$w^C`=M+>d<pmmLI$5uf9k+pg zP3(@~2*<GQr&7oD11w7uGeeU)e8X zK_U3%(QP3Fmt|kO;|M(mjpSj|$BOC`@dOSh1n`_b z%tAaR`k?>25bD)2<>IQ2;0%f^pF^f5u%m0Qa!xXqTi1atWX*OWOl1DUM;@-z?Cl5X z<5vPlNe+n@QtX>b6|!*Cr8vLJ>57fIiTRZZ%W_Kn8Xr>WGlT~-zR_|k?egm8M2JhT zY)%gj{GQR7pd_#fsDB=d6d0ai?2oo<((mqQ?_GfTAJC4|TZD4x*QoO0C__Lx69T9F zkUxPcts3?My5;ii(`N^K3R#aXt69oGnWz_VV=M8ufCjH%)qo5v8_`g*th*A$u~hP@ zXnHm*@K8=*Xh&nUTC5GyN+~u20|0!LHmkb%hd?C&Tce2thhDbsXl3J6y0m@*837QO zHF)jF!-FUjUGbuyQ4I21b**ofNptR(gULR$26HIN-`6Q()jcySQnx@zgbamr!);uv zxqAN~X%Y;shYw4aAyLtmLS8Y*$162dJ*n=~j-PgX$s-Ar(TKs%?4sSI)z$C$MkEi6HhS8|iDCf*#-ZWh1#uYM)ih`vd_f44AAV7HXgpy5$zgFRtOGw? zSoeWPq9=h$T%5ollx889I#Oe+m1jfTg}De8^h`ksw_4LELy#yF>s|A~i=u~LhEb?8 zilJIBXFXFaKB}&+k|eho-!61T*<31BXcFyEWpE*E`|G+X;7!B=IgX}e8CDQf--`A< z#Kriv95rrU@-}pG=YjS86M$>}H#Lohh8G59SdoxqIJ_{Rw((_Z-oV2-AbMC4 zH}kmDi~fq=Wd4^)o4Q{#t#_SYf$}p{v24-&he?mlD3`g-x1%RC`w36`Bpt{z3H@?m z%UhbrCvD;ErwRVO)AKGv42LJ+6XH1;iUxJ7Ma|ZHc7Ep*`XL#rN0?G7&|40xL=%Mh zw1e_q=IlgBFJr!E?E1OwxC0ViWb%@jTg5+6E(3A-@99lzw6e%R&}J(y7*+td3#$cu zCdHT|xZoW995yrT5~}71?Qc*NQ^U7aVValahseUpDrc94`*ohun#? z>TjO&Qz0%5jM~Q;& zthE-X_#;Z};QjQXCBcMLrbvLwSk;octNtbNH5yohf_O^cI4=Cr?u;X+yHNVqW!l>~ z;by6<=KF~3D&v-AEGLJKx{Kj@Y)hIDu#TpS<+tUQ$I}we5?w@fz#| zD^)`sKB?w|f3vU|s8N69u8vYCFkCG**y~fW=j@0Q+~n-76X5ag&|iC8oMD$vqqh^P zBTSC*y>dPu9k_8Pe8OO!{0>%V!nplO#m9 zZ_v}9lQkAglR;yOI_=qf}t&QNsOI8BMJuic(Ncl=KS~J$WgppIR*?viRp=a5`;!Uq~D+NlgRG z2BsOEA1yBI0H(Y_y&}{7lwCf{Mc(%;dX>$tbUOyjF<&I5$>qENfA<*M}V)06}YOS#zlno#Mb&@*rbih%CHlh5*rhQjxL)8*|Ar?@63Q|#}^OhV*LaE*$+@g9KZ~)PybUO6_&~|FdRgT zy$Ur>*mrK+_AByigg++QkV6~J8B%KS0~_BzN&Hy%B~jY0C$OMuSsnF>|M9+2qAU=4 zQOi^rtFO|!6D!NJJxl#|^5{xR+lRMJF=&S}|Hcpp!+ShHs#tCbIggZu{40Q`Bt{Qp zw#+x2{KF6fe5u_=dD)P)W+;(wmHxpETxJ~of0cEWL3M0h76}A*4esvl?hxE9xLa@t z?(S}Z;4Z=4-QC??FM99r-pp51Q}eHT*V+A}>r|g!d+oJ$N;_=Ol^nZ*^NiKl4L#$_ zfmM32q~JLFp%QP&nW>M^3nH2t{?u>6^nPA7bUI9k$9n^;qn4@im1)C%>++A0&rH)u(eo7}6(SiN~GB`%`lz~lC)@^{s{rziQL+S&NF2e)J zE zi~d}f_~$&HG zyEEut%0Sn<&xm|oNSi$Q#LG(OIEg+jD?H1j-%JN(f3g>!5DunsQ2)H>Q4E60pi@kZa zWsd%uumeLi?u$DB7T3k{uZ9S`tzKBl;_@_oknHv+IXM<-9 zIS#HypmA^bC+G?$h?+x(2JZiUy~0G0;te^GjFIfoh5BU+?c{Rl9q$VU=Mq$U2wfS$ z!PU47|0R(d9SZl8zuaoJM^vd+HB`>0CIMb{$R^l?($}|zZv-PY;vuu0E9_hio0Pr^ z#BdEEj>ksg0cs2VLfMi@Sv;RhUy_7PI;n4doMyEp8d^~NG;Nvi*@AKJrb!LCkNNk!!-^eJV&?DK|N-GPuWTOZw!7G4X8 zBigd%fS17o{;aTRTeq`r@L0?DeG*TvUz}f$$H*~emUaTbi^zslWmw&uEWMjak`Q$L zHpQ5Pr_q?|2n{aZO`2Z_;v^cHLKy9>E{LPUp#zFMkz_47giZURfI1@F&FDdes#^q@f+CH()#F{xnD3M zGYY$CAVlQ00?c+<>GJ>LJ5MJJjPomCOpPH3jJVlfR|b7FUxB)HX8kB%{H}jnehNJX z{{QRt^SSHBJgdUDJ@lIg8p1%NvJmjG6#SehLzPbj0RV)@`+h{%*8)wq-2h?`-Y#Eo zH><_-bp|q!yvnFg04!qGu>U*<30sDi26XlnB^{FMHAExJ(K}4pDtG|d0Ni*5jXyw_ zyXT;Lk4#zWcU*ptF!RzxV~i^T7$12T;MG5n{^>*JVAr5&VtjuUIoQ&JN{rxK6V)>v^>n6Mx z8cjs{pbF#GJ$GA>Hp97LH0WB$56QjnUoFW?_aW$M+h+vS;+}X|1)6^bZ6$paeE3bj zf;PT_{Nij3{=P-I#Q`?IflnnUm!!5+S8-^?&{p93UYq@3SqN_tt_UFt(M_C7UJTqK zg7nHAHo2O;c1G5_Dhqbe*`D$-;#rP7=w7t@m;36ZQv8?ux&poNfO>;;E@b&W=6?Oy z0}6SxHG?`Ffkga*wQqj+Zys0MjXD<8jaePcK+k0XsDV{CAx(IcBZl_Y6^*6@1UEZM*a^UK*?N_VTo?-B-%WE z+~=P&v$bHFatFPxpa=PA$ICN$`~X>Z$Vs6bCK0Q0G#lu#y;m3a*fYP=CBb_(;ga4dcLyd8`y* zBSOYS)6)7?Z5!DUQZbUCRvbZ5-Uh%hYq3zfU$$#eExAn>$~gAcXVeArP`x_JxH`}3 z$M#o7(=U`i8&O5R@h+n5+qb8gQwI`@0tdN*ur)c>9X1`whbfvUFP=ZiFqID;-X)Bv z=pWUOBb?mFS6A)%>k?s=FKz%ln9F<9hCIO8x(ny` zwdhr`m4U)4$y$kp8dG$Zf1TkGoK*+Xn=~ltD~&rf$E1k~@o_(h@5JENpVnC`1bz#_ zM0!6h+#-J-)mL@hh6Y_+eZ%={LX6uvosi_SB4AQ}Fy6c&G=7nYh&UIzjBVA?q%XQm3rZ$N1c@Xv~#Y33`!*Zo)W>tD^` z{CQm>-yo9InJlgE6+izNG?mHb941e#YkfZOp;vx13Ig7Zy3GqaxtjM{=!usB?5s|9 z(YD2?@}`t+en+F9`;To{1R`X`<(j}Y!Rl+ww;*%AiyB+G^7$#c4I8cLJlSD4#_IMP zQ@-K63EAaAF+GKaDq?G^F~WYD9$v@T2)WlCx~p4}xvV$^kCy_5ax`nspL6sr^Ipnm zli~?fGJ8$lI|>4L`YKGHup&fSI-L0HjJZyHoekI1CbLzo&K%y8ZvOe#Bb)f}`$o2- zK_CYcr#IKOFF&pquz2`dH0y9b&ba$L>}n_!^pC$Ip&<9EgV!^51W%~yNklJW9|(P^J5Hn-GRyE>XXU5@RuAv88-<`O>F z-Gju1Tu7Ad-29}guPBpy5sj#<3mB?17Jpg!)KLB^wSo%bct#$gwfrCjFze9aX)le#asnoxaSBs} zo}1w+R;?z> zw#r%CdQV&kc4jHcBMKG z%DS<~c;oj@qEmojq!<#DUymiap}~SM!&TC7xgoV`av0I34zdA`?eD3!FO zY5$oHLbWye>2I}3ggW`j;AvLhc1{MVqb7@;v?6THy7aXP?cFYtMCN%EFfN zn1-X#xI1+oT`NHwhCXqC+H6@Sc>j>!C-v5DSDD_$XdJVX(%0Tf^Gv~Wm?xagq}*zE z+H3C};&bdk3T$rhsIi^?-c7NmfO31GAqj26&&-=RDnC*U#A= z{b>srZ8wkfd(XM4ZW;=&c$gBX5HEHu|7>ZgHfKi6<CHZHB+S2B&wMUQlA*$=!H^4z--n$)G4R&EEVR6P&p;Vx9k*Ph(X!^ zj!kX|{{UX0CACuQ#1=*gWB#$kX*i)&>ylp`!nZ4CwmZaKALu01VOKX1i+%_wn!-KI zNfxqSxZl)&`u@Gts}SEC3t;?hd9-HlrgyfxLx^p=UjJL_dhz<9C&c$OlCalJkHVkYq;L0pHyrIw{p2Q{0hw;bguh)mU4ITb z%t}LI+E{XZo}mNOSuCwY{YPof3pfwLqdfm@YgvS#imdFE>oS8%8P3$HmXe?o&C*!?+Q!qIu|Jo+EfN))hmT>#EvOnBV_Hc6EwZNt2eY4eYbW$CAl zWnV)=m_2U86HYiM2FZg@fWoi8&EHajvWlnjhDRiatr5A~4f zxduFqGB%Vj$7ze|UOn{*$=qg@a48^7NR%3j4on6)bnK2Hj)gKaZe3t@2k zVc)2VfkRr~uSuRJckr%)vt{77ysYj#0Z!x;IJB;%Ro7v@M53KZE0-?soKeKL&o6JP zO^}QEJrNm2>-HnT>${YRu?P_gUcZOKvJoMgCudbq5z&u~)pCj4K%l4UrdB(AneF2@ zOs(z3(K6!$a<@dLL{j&rO);5Vb659wKv$7s5~lXkU>SXojtY7hfr zoeK2NzLEa8FqNgvAgqt8h_2Ya6pUolpg*le8|T4=)9F(F(BX(9$sw=S((Ccvb^R=^ zw}75Wwxuvc)e6c5r`=!0>zA3S`K{BG^}FKoKeg~D*&$z5Mg>*4D74Wvb>p-AojQVt z9%wH}sPQ{I#%`Xiz#zZ$PR1J#X`$GGe+lBF(p2ijj1E0MXH8sB(uGM9PpJ5iN!tln z>in#*g($J+U*UA&Z1ub68QrZq{}688WO1i#v7VfI{X-Jsn>T8JnUu~oB*sKhT}c9K zg(503$*-2bKXaTfq_XGXOi=%$+OJXkL1Vp-lCbV?9}}6_DgT3%0vq#f@tzT@`W!xo zLnVxc3TH-J5F4dA=tkpGr?EosG8W&yIdj?C;3Lz0s*fu|q9=sS6v%CBIrK%ruwbFp zacnzMvRa-f3kAM-v=8fE^9aO*Z7Q|b0l7gWV-=&+mQV3(bRPPT>A+m?~y;R)?@umqL`1kSBJ*oz**wl zF%+!0m)a{uOat%|EEpOkZDAX?1Rs+qeB) z5nB000;?73oAD^ok#+o74LiqJd4YO^MH=m}P~HjgP9x*2wkbSB05-e4C~#?odK4q6 zLf@*qiFbC&+HSfe*BNE;s5%*0y;JWP0}fF1<+STU@iBHx0GJ1c7Siq(_J?i(ot&9) zlGMjsH340uKNd!;?Z4hKz5I3S^d#5 z%8^Jk;jqvjOKd$F>oVTTO2vryx3tM}_#~cN)ZxI~4?# z)Z9212Zm12le_V>d7(6Ffko#)C57a#S>V3QN$~aRLig5mo$72>gCX{)_FvfYnm$tW z{Q!w3CGqQysvwvgUBMT#Td?2q_hLkqMR8cSE5T4-oq}(}JRG(gtm-Hv5XRo&gNY4h zvhGi7uiFjJk7nkx{Lio&#rT}PM>_NfD6m8%8#ow*Sn0Vf`yiwN?&SSZ$Ur6Et*(>ObjBawap`>E)BTatOk*?!9`fW{&pmp|N~4 z>rz(ykAWO2#7mt0BGbg_Y$R8>@@Q4BzH<%Qr>UX79Fs%R|rBUvAf? z%Q}Idt^-A>;Xa>`zX%Va%nHm-g28wyrq zbP~6j``EC0w_$Hz6Ut^MGjw+86#RHtsePC=ZapxovacVK5b`@Hmc3N9sqpM+UB z?)4O%g&y$ZsQGDL=lfmZh_aWB%WO52E5w|`1Ln)L5SN1XmQi)L&XDUhuDf2v+dOs$ zJ23dbjvy29MT7H9^uCt{s5}r#FEyR3tT~Oaj7=z!m4su06YLU_EG}LkM}RY7GS^={ zqeFG>`ca0yL>LRJF~eA#FTb@zR7&e#?u8}r))E3>U9803`c#d6(LNT0@1VIS;{Ik- zhx0#ursjA}qwM1>%(G3VvWn2Z36gCSE_UV#nk{}aKL)W1Zio~oW1{;;9e}#L>HyYE z8K8E+-Qztc$UWwzo2u!WVFJhypF}sV$Q+*@#YH4fZ)nwMHN>XnsBYgJ^>Xje5B@o_ zXQ!{n2py}xGeWu|%CS(6}qG<&Ti|1Ge z#ks}=a&XBI2{cfx9qtHR3w~r4nrL8GknawrvzazO3g{B%rTZQ#h`d=wiV35=qm1nV zT})bmKIKN9hDpqLtLt}xBwlYJF5#$Piv;yu6 zrpsM-$62zD9*G$%AzR9CENe9vtPpaN5MpAJZG6Hz`_(z1bY~d^Z2i#cmTEQhu7ccT`$g8yij!aZ9_gxQw070s2?kUY zfcGWHebceOzRD2!?5%is_kKA2U}Fqag0_AN(LnIuIckoIV#EDi0R3^d_i*x8Dz-aD zFWvL)J9i=30yyh#u%i9Vt~ z41#Q%$orU9sfqpX+!Pi!p$G?jkLdL=QHcK5F1A|yu)O1R>bscq#?`!2C{M{`*Tv3{ zExE3Mi>1o$L6011A2q` z@~v__Yoo{esDi|gq+0LBb73J0Rs0^g(aJDP0GD$Ft9Vypmz28dlb1WvC0*DYZlc!% zQ+jL7S6d8bypX31wx4Dda5W>1{Tl(?kE)vsCqvkKns{wW3`*KBCay5zGUZMnv3 zY&1 zFVQ~f_{$LkBXZ%`v7*<{P=F)j8t0KN+$N2jKxJz2HBGzg>#eK6PYLakTQYZAf&@FZ+u4N?a!Jy3bmq_gke6o_690Q2yqIJfwMZ*UkakHg@%*8-T?Xf>61cFK>=b1PjgRpeg;j z?6B0^RecJHjCumwt0W~Vzt0lj&a?#SDXJ3ic4uOU1t*yg^c2>aHQ!bSbJk&V8{(s- z2134YA!q+4veZ4xSnm_&%Ynq09{V2OHE*IMh*(T&{Jl-+_?xf7RT=h>+m+JXynm|) zD_7KK-FFX~04`J-U78v5F%lXTx^-P|ASv+n>xB8#7dDN$P{GD)dkDV^Tmth2i9=8G zoKOUOhrR95O0=r)xzlO6Z(?pI$WmRy9WRb8p52f=Xmc`CbMa7@akl#>`CZm^%Y1wXTxW=S#qgV?mEQA>;Zjsnh=hbM zrajfCD~KF{%c~I@$?8ilIh!UTov{>u%~DO8TyWgBX6p*37-Q4ax8Eg3i_(IrXAtm; zsc&gq$l_trCyH#kTtakITIrJdE~^{TkD>YA*E z^VQEEOI@!x4jj7tzBWJ;0a^*TeTr9B)J37A!BX)EtRl4`(U|S^x)t>!f>6FO)6i4f zop?;4{B-a4H!$SmyrrTirm_e-puq@(|E?v8mgN;ZZ&OT`G=e{TgY|SvnDqVt*0CQa z7V+iCgG&j803mzeEFRtZs~|T0qY{~XETOaNEsODZO)Fy4n(;kMx6}?*X>$bBwxaSY ze*os=({{nO!0fVeOJX3a@eN^fvUg7W1MYqJx#|c>UcHhbq7~j9mm7C6BQSSHP}-c+ zHl2U-0(k8@%w(FQi4Uj<{){hzsJNkG^qEr39%Fk7Gs-@i?oIR z07Je*J!3eo(Vl^<$goj08RvzLI#Ml}RitC3B;7`v#p<7pe5|{!|DwXj1{>NoFR?#| zY{Dz&dfbN&5@ediaSGv3s^msdu>P+&l{+n;SWx5(>a2RdMp(`ZW(Yyo86pxASiz(NZGJn}-mRv!?QdZiS>|MXkB^;~uaj*tBUX_28MXJ;!2y%fU zGdH>SOY$hF;m!E^(LND$ytp-v%>bJI_TpDi>2C}Do4y?1m~xLNo25ZhZsI=dJ9(6% zp!a79#rHUx@tv=DWyyRo^WBu{L;5_lY{4nkwbMdXSS>(F=Zg#oZMxATvdCWBR4!v- zX_-HyJ0};R;4Z3i8;*S-QD|b3I3?D?I$2$!!hD)h{p_dUtjMQ3a6!We)<6rRWqL4G zRh@ETIjLs*oSL2MYwY4$uA;#4j?1Jz4UvX>>lDqvjvOrYuhqOWf|T`TA@Db7u0kX! z&C+3@Nok72>qIf>MqVfZs!`A+>aF?>7HlaqvFxl6)YPP%G(TvI^utLSU!GXl5sWt( zU%k5GY!_=+P<+)R8gWOAI$|9t9dK7rLGEr_PC8}2yUVv~&E;6y62vQki|t$}tR&0? zWxrK~Q%EmBbh_m=)M)j8aoybO|Kd8B<*bHoG$NJ1mWFl7q^c{QxUQD%UtCA1^@;21 zN^1cx4b$T`EfV~kM!h2V&CeuTAplz)TgfZI6_{swhjEpuj|mF#qFWVGja$HkgrC6IJ8#~TPM_UK<_N|fpZbRF9}+4*6VW+I2p zwr)S9G9=%THG9v|79mQFNRgtkG*@k&rs8l+>%^DAQGJql=WL#OocUmOXTmX$kl3IX zn(^|634nXl{*lsIy0%adnc7?%BJXato@_Ly$WrmZU`PTfw~fv@aiPJ+TT#hi4=G>s zw`;-7UpWL5$9UD8`aX^5ej#-TH)#<2K7RN;mEI#|zGH2|iJ~B9@l~raBT^@|X_9{Q zAR*QbS1S+~Il3eoo`Gk$%w*TfwYSdHwJEQKRKtOe`zyopJFTtdB4@I;XOk7h^^_*N zfBx;nk}cSaT1WnvHNU<=n&>w?)#5o^x>EJJ(y5Ek1e(}u2A4|ET#cuuTbYiPzz4K; zTsYoXap%34>03MLe*N92!sDA3Zwz*5LpBs}W*6blj#*38bxss<>PtL!TnNC|5im;x zRsi98eVXi0Mx4Q%{xrhj$}^7tmssSak!K&PM0bqim&UL6a$;MZdFC}77iCY4lTi;W$lwE-o{;L>JEx zGhZpT*0fWSRy0Bm9=KPP+yvVPmI>KcDKL#=0(`Rf3mwfc6#Q(4=l6A=Ka~rfsYUV2 zmAEsRn7ieJ6k2>+$-HbW zrJyNY5)m)q6$jf(7otcPL^fp1e-o+EfE7c+E}R%>RK6YmSz|rGGuos5U5$dZLJrnQU7SnEq*A(|410lb<^&`;YZQ2br1Ug{;^mOo$ zC@)UvWB=~sR%m2;z{4u}Dt5=1%#9AmGl?~uAUXHJNlyKS=yH4SeS1;fPv*_<@j^Wd zw7%wN1G32mfnyj`G)!B8rt^ZThA;gb0E-4TpvPlST22C!0*;)}vj5ZehANe5kPky6 zo$_PalwS~pTbJ+YMlFip@=IpQE);Cf&orNtxXzm#CWoVDvO?fVLZ~XJ2y%Fw1f57c zj?b`rWThOYz^B@Jy(oJ;(SKQ3`k-4ffGwW{UGVFN6?2oA&`K&^b?fF5I;?Pk7M_=> z?jM`TSm#@bI~UE-qm4ggzUNXcl(^VT#7OTY1vw0N1YsB_B~57it&3#31(ghU!i2dl z`#ZpTSYnUQs->;W-pp?PW80)5DCPLo`2}QAlLYj02S~I7Z9e?YLFYH1DpiM%Zle!m z$#J<1D69*RVR!mE=(_XQOWPyJ<_;v)#h{D>j9rj+P6BIoSdC}oLw?8QCJ8!03t5J| z%6pfO?e4AfYpGegDIz<2$wAUSu8`neMsog2aEES57X$g zUr&62U-%cwyUkC0r8(Xc(%$|+q(0@D4l04$#x4&3;~@|ED}0-N3nzY>gsTseN41e2 zD8=GcZVhxbeq5vT=5X2lDHpmF;snJ(rY$=G0T+)IJnz$;ofelL+utsP`at}3K1>83 zY@#J^DIvj$PCK$sHspP=-1|B4CJ|IY65NhARnq}@W{2SeeOlxeMDTNa*bfdvf524= zxFld3dIV?LQO|#OrOisBM3lwEGR%24HX-GZc*Co36NK<lt`ApEy0Gl ze3>3GobA8=bPkIEINiP*=AJTHf!f=>FJBaGKvf@__Ml6{w`Jf*iysJ?oE?1}j1~^; FzW^vEAS?g? From a2da778db594715581545023ebabf75481d9e58f Mon Sep 17 00:00:00 2001 From: Cindy Green Date: Thu, 12 Feb 2026 16:22:35 -0500 Subject: [PATCH 08/72] Mock for tests for map server. --- src/frontend/sharedComponents/SelectDevice.tsx | 15 +++++++-------- tests/integration/helpers/react.tsx | 9 +++++++++ 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/src/frontend/sharedComponents/SelectDevice.tsx b/src/frontend/sharedComponents/SelectDevice.tsx index 11955227fb..2d08977688 100644 --- a/src/frontend/sharedComponents/SelectDevice.tsx +++ b/src/frontend/sharedComponents/SelectDevice.tsx @@ -115,18 +115,17 @@ export const SelectDevice = ({ sendMapShare( {projectId, receiverDeviceId: deviceId, mapId: 'custom'}, { + onSuccess: result => { + Promise.resolve(result).then(mapShare => { + navigation.navigate('WaitingForMapAccept', { + shareId: mapShare.shareId, + }); + }); + }, onError: (err: Error) => { Sentry.captureException(err); navigation.navigate('ErrorBottomSheet'); }, - onSuccess: async ( - resultPromise: Promise, - ) => { - const result = await resultPromise; - navigation.navigate('WaitingForMapAccept', { - shareId: result.shareId, - }); - }, }, ); } else { diff --git a/tests/integration/helpers/react.tsx b/tests/integration/helpers/react.tsx index 2fc07d8001..17a7987449 100644 --- a/tests/integration/helpers/react.tsx +++ b/tests/integration/helpers/react.tsx @@ -1,4 +1,5 @@ import {type MapeoClientApi} from '@comapeo/ipc'; +import type {AppRpcApi} from '@comapeo/ipc/client.js'; import {getLocales} from 'expo-localization'; import {Component, type ComponentPropsWithoutRef, type ReactNode} from 'react'; @@ -170,6 +171,13 @@ export function createAppProvidersWrapper({ appUsageMetricsOptOut: () => {}, }); + const mockAppRpc = { + mapServer: { + listen: jest.fn(() => Promise.resolve({localPort: 9999})), + close: jest.fn(() => Promise.resolve()), + }, + } as unknown as AppRpcApi; + if (activeProjectId) { persistedActiveProjectIdStore.instance.setState({ projectId: activeProjectId, @@ -183,6 +191,7 @@ export function createAppProvidersWrapper({ Date: Thu, 12 Feb 2026 16:27:29 -0500 Subject: [PATCH 09/72] Updates core version. Updates package json test. --- package-lock.json | 8 ++++---- package.json | 2 +- src/frontend/packageJson.test.ts | 2 ++ 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6d23313080..56de37d2b4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -106,7 +106,7 @@ "@babel/preset-env": "7.28.5", "@babel/runtime": "7.28.4", "@comapeo/cloud": "0.3.0", - "@comapeo/core": "5.4.0", + "@comapeo/core": "5.4.1", "@comapeo/schema": "2.2.0", "@digidem/types": "2.3.0", "@eslint-react/eslint-plugin": "1.52.2", @@ -2582,9 +2582,9 @@ "license": "MIT" }, "node_modules/@comapeo/core": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/@comapeo/core/-/core-5.4.0.tgz", - "integrity": "sha512-2pu/oDzpxGItvlYKwXpJHdHvltXNMZGHrL5n5v/i5ce3uMciAa9XPhCgJHOGUhjgldl+oB/xTGGw1p+/AbEAGg==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/@comapeo/core/-/core-5.4.1.tgz", + "integrity": "sha512-AJ3XwKIkdHQCQ/EZFjPujQ/a1pFRDqtcifJIhxaq/Sl9qdykxg8gT+CQcJ8/v12Flx/7yQ5cvgGWGMGEdbTXKg==", "license": "MIT", "peer": true, "dependencies": { diff --git a/package.json b/package.json index dd091901ba..71cdac84f0 100644 --- a/package.json +++ b/package.json @@ -130,7 +130,7 @@ "@babel/preset-env": "7.28.5", "@babel/runtime": "7.28.4", "@comapeo/cloud": "0.3.0", - "@comapeo/core": "5.4.0", + "@comapeo/core": "5.4.1", "@comapeo/schema": "2.2.0", "@digidem/types": "2.3.0", "@eslint-react/eslint-plugin": "1.52.2", diff --git a/src/frontend/packageJson.test.ts b/src/frontend/packageJson.test.ts index 6d295290a2..892cd9d19f 100644 --- a/src/frontend/packageJson.test.ts +++ b/src/frontend/packageJson.test.ts @@ -39,6 +39,8 @@ describe('frontend package.json', () => { it('all front end dependencies use exact version', () => { for (const version of Object.values(allFrontendDependencies)) { + // Skip file: dependencies (local tarballs for pre-release versions) + if (version.startsWith('file:')) continue; const isExact = semver.valid(version) !== null; expect(isExact).toBe(true); } From 4ef301b2f299001208b11ad17e9814937c802801 Mon Sep 17 00:00:00 2001 From: Cindy Green Date: Thu, 12 Feb 2026 16:34:37 -0500 Subject: [PATCH 10/72] Uses different fetch for tests. Fixes use of file in backend and frontendfor package json tests. --- src/frontend/contexts/AppProviders.tsx | 13 +++++++++++-- src/frontend/packageJson.test.ts | 16 ++++++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/frontend/contexts/AppProviders.tsx b/src/frontend/contexts/AppProviders.tsx index e949e1b0af..d3e6fa2175 100644 --- a/src/frontend/contexts/AppProviders.tsx +++ b/src/frontend/contexts/AppProviders.tsx @@ -4,8 +4,17 @@ import {GestureHandlerRootView} from 'react-native-gesture-handler'; import {QueryClient, QueryClientProvider} from '@tanstack/react-query'; import {StyleSheet} from 'react-native'; import {SafeAreaProvider} from 'react-native-safe-area-context'; -import {fetch} from 'expo/fetch'; import {AuthProvider} from './AuthContext'; + +// Use expo/fetch in production, global fetch in tests (Jest environment) +// expo/fetch doesn't work in Jest because it uses native modules +let fetchImpl: typeof fetch; +if (process.env.NODE_ENV === 'test') { + fetchImpl = globalThis.fetch; +} else { + const expoFetch = require('expo/fetch'); + fetchImpl = expoFetch.fetch; +} import { LocalDiscoveryProvider, createLocalDiscoveryController, @@ -115,7 +124,7 @@ export const AppProviders = ({ + fetch={fetchImpl}> { )) { const backendVersion = backendMapeoDependencies[dependency]; if (!backendVersion) continue; + // For file: dependencies, compare just the filename (paths may differ) + if ( + frontendVersion.startsWith('file:') || + backendVersion.startsWith('file:') + ) { + const frontendFilename = frontendVersion + .replace('file:', '') + .split('/') + .pop(); + const backendFilename = backendVersion + .replace('file:', '') + .split('/') + .pop(); + expect(frontendFilename).toBe(backendFilename); + continue; + } expect(semver.satisfies(frontendVersion, backendVersion)).toBe(true); } }); From f1b67f29b84e069236e0a9e6017a0b635fab7abf Mon Sep 17 00:00:00 2001 From: Cindy Green Date: Thu, 12 Feb 2026 16:42:01 -0500 Subject: [PATCH 11/72] Eslint fixes --- src/frontend/packageJson.test.ts | 28 ++++++++++--------- .../sharedComponents/SelectDevice.tsx | 6 +--- 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/src/frontend/packageJson.test.ts b/src/frontend/packageJson.test.ts index 52950e2fdc..16d338791a 100644 --- a/src/frontend/packageJson.test.ts +++ b/src/frontend/packageJson.test.ts @@ -34,22 +34,24 @@ describe('frontend package.json', () => { const backendVersion = backendMapeoDependencies[dependency]; if (!backendVersion) continue; // For file: dependencies, compare just the filename (paths may differ) - if ( + const isFileVersion = frontendVersion.startsWith('file:') || - backendVersion.startsWith('file:') - ) { - const frontendFilename = frontendVersion - .replace('file:', '') - .split('/') - .pop(); - const backendFilename = backendVersion - .replace('file:', '') - .split('/') - .pop(); + backendVersion.startsWith('file:'); + + const frontendFilename = isFileVersion + ? frontendVersion.replace('file:', '').split('/').pop() + : frontendVersion; + const backendFilename = isFileVersion + ? backendVersion.replace('file:', '').split('/').pop() + : backendVersion; + + if (isFileVersion) { + // eslint-disable-next-line jest/no-conditional-expect expect(frontendFilename).toBe(backendFilename); - continue; + } else { + // eslint-disable-next-line jest/no-conditional-expect + expect(semver.satisfies(frontendVersion, backendVersion)).toBe(true); } - expect(semver.satisfies(frontendVersion, backendVersion)).toBe(true); } }); diff --git a/src/frontend/sharedComponents/SelectDevice.tsx b/src/frontend/sharedComponents/SelectDevice.tsx index 2d08977688..1d873f0e42 100644 --- a/src/frontend/sharedComponents/SelectDevice.tsx +++ b/src/frontend/sharedComponents/SelectDevice.tsx @@ -3,11 +3,7 @@ import {defineMessages, useIntl} from 'react-intl'; import {ScrollView, StyleSheet, View, TouchableOpacity} from 'react-native'; import * as Sentry from '@sentry/react-native'; -import { - useManyMembers, - useSendMapShare, - type SentMapShareState, -} from '@comapeo/core-react'; +import {useManyMembers, useSendMapShare} from '@comapeo/core-react'; import {type MemberInfo} from '@comapeo/core/dist/member-api'; import {type MapeoClientApi} from '@comapeo/ipc'; import {useLocalDiscoveryState} from '../hooks/useLocalDiscoveryState'; From 8f3c0c51315c217d392e01ea58f6145b08321324 Mon Sep 17 00:00:00 2001 From: Cindy Green Date: Fri, 13 Feb 2026 16:04:51 -0500 Subject: [PATCH 12/72] Attempts to use custom map hooks from core react. --- ...peo-core-react-7.3.0-pre.2-MAP-SHARING.tgz | Bin 60583 -> 0 bytes ...peo-core-react-7.3.0-pre.3-MAP-SHARING.tgz | Bin 0 -> 66133 bytes package-lock.json | 21 +-- package.json | 2 +- src/frontend/contexts/AppProviders.tsx | 13 +- src/frontend/hooks/server/maps.ts | 137 +----------------- .../screens/BackgroundMaps/BackgroundMaps.tsx | 33 +++-- .../DeleteCustomMapBottomSheet.tsx | 4 +- .../sharedComponents/SelectDevice.tsx | 33 ++--- tests/integration/helpers/react.tsx | 4 + 10 files changed, 54 insertions(+), 193 deletions(-) delete mode 100644 comapeo-core-react-7.3.0-pre.2-MAP-SHARING.tgz create mode 100644 comapeo-core-react-7.3.0-pre.3-MAP-SHARING.tgz diff --git a/comapeo-core-react-7.3.0-pre.2-MAP-SHARING.tgz b/comapeo-core-react-7.3.0-pre.2-MAP-SHARING.tgz deleted file mode 100644 index c92c3d3d06daff864f427b79e1d0604f873b3531..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 60583 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�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 aBk1gD7tj)PxtsX@49s_+=mw#K1NmP|y0J+B diff --git a/comapeo-core-react-7.3.0-pre.3-MAP-SHARING.tgz b/comapeo-core-react-7.3.0-pre.3-MAP-SHARING.tgz new file mode 100644 index 0000000000000000000000000000000000000000..bf56bf63f9fb558dc829ae19647864b8461f0fe3 GIT binary patch literal 66133 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

jGdNd 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 literal 0 HcmV?d00001 diff --git a/package-lock.json b/package-lock.json index 56de37d2b4..23604727de 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "hasInstallScript": true, "dependencies": { "@bam.tech/react-native-image-resizer": "3.0.11", - "@comapeo/core-react": "file:comapeo-core-react-7.3.0-pre.2-MAP-SHARING.tgz", + "@comapeo/core-react": "file:comapeo-core-react-7.3.0-pre.3-MAP-SHARING.tgz", "@comapeo/ipc": "file:comapeo-ipc-6.1.0-pre.0.tgz", "@comapeo/nodejs-mobile-react-native": "18.20.4-2", "@expo-google-fonts/rubik": "0.4.2", @@ -2652,13 +2652,12 @@ }, "node_modules/@comapeo/core-react": { "version": "7.2.0", - "resolved": "file:comapeo-core-react-7.3.0-pre.2-MAP-SHARING.tgz", - "integrity": "sha512-MisheSfZEmfIVSfQKDoS+nExR/5QE2t/FToberoscQxpl7o7LB/gA+xmq7ltm4H4exWQOWhIOldGMxuePsuy/g==", + "resolved": "file:comapeo-core-react-7.3.0-pre.3-MAP-SHARING.tgz", + "integrity": "sha512-Y4/rUDchbVkm3wJHBe0cnYKCja84x8lLaO80wfWLSjb8zVSM0ZbTbZgP1OrRTJG9tPRX9hjirBD/lkP2L00zuw==", "license": "MIT", "dependencies": { "ensure-error": "5.0.0", - "eventsource-client": "1.2.0", - "ky": "1.14.3" + "eventsource-client": "1.2.0" }, "peerDependencies": { "@comapeo/core": "^5.2.1", @@ -2680,18 +2679,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@comapeo/core-react/node_modules/ky": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/ky/-/ky-1.14.3.tgz", - "integrity": "sha512-9zy9lkjac+TR1c2tG+mkNSVlyOpInnWdSMiue4F+kq8TwJSgv6o8jhLRg8Ho6SnZ9wOYUq/yozts9qQCfk7bIw==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sindresorhus/ky?sponsor=1" - } - }, "node_modules/@comapeo/core/node_modules/@mapeo/sqlite-indexer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@mapeo/sqlite-indexer/-/sqlite-indexer-1.0.2.tgz", diff --git a/package.json b/package.json index 71cdac84f0..97e4ac948d 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ }, "dependencies": { "@bam.tech/react-native-image-resizer": "3.0.11", - "@comapeo/core-react": "file:comapeo-core-react-7.3.0-pre.2-MAP-SHARING.tgz", + "@comapeo/core-react": "file:comapeo-core-react-7.3.0-pre.3-MAP-SHARING.tgz", "@comapeo/ipc": "file:comapeo-ipc-6.1.0-pre.0.tgz", "@comapeo/nodejs-mobile-react-native": "18.20.4-2", "@expo-google-fonts/rubik": "0.4.2", diff --git a/src/frontend/contexts/AppProviders.tsx b/src/frontend/contexts/AppProviders.tsx index d3e6fa2175..e949e1b0af 100644 --- a/src/frontend/contexts/AppProviders.tsx +++ b/src/frontend/contexts/AppProviders.tsx @@ -4,17 +4,8 @@ import {GestureHandlerRootView} from 'react-native-gesture-handler'; import {QueryClient, QueryClientProvider} from '@tanstack/react-query'; import {StyleSheet} from 'react-native'; import {SafeAreaProvider} from 'react-native-safe-area-context'; +import {fetch} from 'expo/fetch'; import {AuthProvider} from './AuthContext'; - -// Use expo/fetch in production, global fetch in tests (Jest environment) -// expo/fetch doesn't work in Jest because it uses native modules -let fetchImpl: typeof fetch; -if (process.env.NODE_ENV === 'test') { - fetchImpl = globalThis.fetch; -} else { - const expoFetch = require('expo/fetch'); - fetchImpl = expoFetch.fetch; -} import { LocalDiscoveryProvider, createLocalDiscoveryController, @@ -124,7 +115,7 @@ export const AppProviders = ({ + fetch={fetch}> new Date(input)), - ), - name: v.string(), - size: v.pipe(v.number(), v.minValue(0)), -}); - -export type CustomMapInfo = v.InferOutput; - -const {useRefreshToken, useRefreshTokenActions} = createRefreshTokenStore(); +import {useMapStyleUrl} from '@comapeo/core-react'; +import {useQuery} from '@tanstack/react-query'; export function useMapStyleJsonUrl() { - const refreshToken = useRefreshToken(); - - const { - data: baseUrl, - error, - isRefetching, - } = useMapStyleUrl({ - refreshToken: refreshToken?.toString(), - }); + const {data, error, isRefetching} = useMapStyleUrl(); // If we're running E2E tests (e.g. on BrowserStack), fall back to a // public Mapbox style rather than our local style server to avoid 502 errors. @@ -57,96 +16,8 @@ export function useMapStyleJsonUrl() { } return { - data: baseUrl, + data, error, isRefetching, }; } - -export function useImportCustomMapFile() { - const queryClient = useQueryClient(); - const api = useClientApi(); - const {refresh} = useRefreshTokenActions(); - - return useMutation({ - mutationFn: async (opts: {uri: string}) => { - await FileSystem.copyAsync({ - from: opts.uri, - to: DEFAULT_CUSTOM_MAP_FILE_PATH, - }); - - const styleUrl = await api.getMapStyleJsonUrl(); - - const response = await fetchCustomMapInfo(styleUrl); - - if (!response.ok) { - FileSystem.deleteAsync(DEFAULT_CUSTOM_MAP_FILE_PATH, { - idempotent: true, - }).catch(noop); - - throw new Error('Invalid map file'); - } - }, - onSuccess: () => { - refresh(); - queryClient.invalidateQueries({ - queryKey: getMapsQueryKey(), - }); - }, - }); -} - -export function useRemoveCustomMapFile() { - const queryClient = useQueryClient(); - const {refresh} = useRefreshTokenActions(); - - return useMutation({ - mutationFn: () => { - return FileSystem.deleteAsync(DEFAULT_CUSTOM_MAP_FILE_PATH, { - idempotent: true, - }); - }, - onSuccess: () => { - refresh(); - queryClient.invalidateQueries({ - queryKey: getMapsQueryKey(), - }); - }, - }); -} - -/** - * Returns `null` if no viable map is found. Throws an error if a detected map is invalid. - */ -export function useGetCustomMapInfo() { - const {data: styleUrl} = useMapStyleJsonUrl(); - - return useQuery({ - queryKey: [...getMapsQueryKey(), 'custom', 'info', {styleUrl}], - queryFn: async () => { - const response = await fetchCustomMapInfo(styleUrl); - - if (response.status === 404) { - return null; - } - - if (!response.ok) { - throw new Error( - `Cannot get custom map info: ${response.statusText} (${response.status})`, - ); - } - - return v.parse(CustomMapInfoSchema, await response.json()); - }, - }); -} - -async function fetchCustomMapInfo(styleUrl: string) { - // styleUrl is like http://localhost:9090/maps/custom/style.json - // We need to extract the base URL (http://localhost:9090) to construct the info endpoint - const url = new URL(styleUrl); - const baseUrl = `${url.protocol}//${url.host}`; - const infoUrl = new URL('/maps/custom/info', baseUrl).href; - - return fetch(infoUrl); -} diff --git a/src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx b/src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx index 775d34e986..2d056f8251 100644 --- a/src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx +++ b/src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx @@ -6,10 +6,10 @@ import MaterialIcon from '@react-native-vector-icons/material-icons'; import {useSelectFile} from '../../hooks/files'; import { - useGetCustomMapInfo, useImportCustomMapFile, + useGetCustomMapInfo, useRemoveCustomMapFile, -} from '../../hooks/server/maps'; +} from '@comapeo/core-react'; import StackSvg from '../../images/Stack.svg'; import { RED, @@ -147,7 +147,9 @@ export function BackgroundMapsScreen() { const selectFileMutation = useSelectFile(); const importCustomMapMutation = useImportCustomMapFile(); const removeCustomMapMutation = useRemoveCustomMapFile(); - const customMapInfoQuery = useGetCustomMapInfo(); + const {data, isRefetching, error} = useGetCustomMapInfo(); + + const customMapInfo = data as CustomMapInfo | null | undefined; const handleChooseFile = () => { selectFileMutation.mutate( @@ -159,10 +161,13 @@ export function BackgroundMapsScreen() { onSuccess: asset => { if (!asset) return; + const file = { + ...asset, + exists: true, + } as any; + importCustomMapMutation.mutate( - { - uri: asset.uri, - }, + {file}, { onSuccess: () => { navigate('MapAddedBottomSheet'); @@ -195,16 +200,16 @@ export function BackgroundMapsScreen() { return ( <> - {customMapInfoQuery.isPending ? ( + {isRefetching ? ( - ) : customMapInfoQuery.data ? ( + ) : customMapInfo ? ( ) : ( { removeCustomMapMutation.mutate(undefined, { @@ -275,11 +280,17 @@ function NoMapScreen({ ); } +type CustomMapInfo = { + name: string; + size: number; + created: Date; +}; + function MapInfoScreen({ customMapInfo, onRemoveMap, }: { - customMapInfo: NonNullable['data']>; + customMapInfo: CustomMapInfo; onRemoveMap: () => void; }) { const {formatMessage: t} = useIntl(); diff --git a/src/frontend/screens/BackgroundMaps/DeleteCustomMapBottomSheet.tsx b/src/frontend/screens/BackgroundMaps/DeleteCustomMapBottomSheet.tsx index ec7bbced2d..2ae830f0ef 100644 --- a/src/frontend/screens/BackgroundMaps/DeleteCustomMapBottomSheet.tsx +++ b/src/frontend/screens/BackgroundMaps/DeleteCustomMapBottomSheet.tsx @@ -13,7 +13,7 @@ import { SecondaryButton, } from '../../sharedComponents/Buttons'; import {useNavigationFromRoot} from '../../hooks/useNavigationWithTypes'; -import {useRemoveCustomMapFile} from '../../hooks/server/maps'; +import {useRemoveCustomMapFile} from '@comapeo/core-react'; import {UIActivityIndicator} from 'react-native-indicators'; const m = defineMessages({ @@ -62,7 +62,7 @@ export const DeleteCustomMapBottomSheet = () => { {t(m.cannotBeUndone)} - {removeCustomMapMutation.isPending ? ( + {removeCustomMapMutation.status === 'pending' ? ( diff --git a/src/frontend/sharedComponents/SelectDevice.tsx b/src/frontend/sharedComponents/SelectDevice.tsx index 1d873f0e42..52ff60a8a8 100644 --- a/src/frontend/sharedComponents/SelectDevice.tsx +++ b/src/frontend/sharedComponents/SelectDevice.tsx @@ -63,7 +63,7 @@ export const SelectDevice = ({ const availablePeers = useInitiallyConnectedPeers(); const {projectId} = useActiveProject(); const projectMembersQuery = useManyMembers({projectId}); - const {mutate: sendMapShare} = useSendMapShare({projectId}); + const {mutateAsync: sendMapShare} = useSendMapShare({projectId}); const selectionMode: SelectionMode = route.name === 'SelectMapShareDevice' ? 'shareMap' : 'invites'; @@ -106,24 +106,21 @@ export const SelectDevice = ({ throw new ExhaustivenessError(status); } - const handlePress = () => { + const handlePress = async () => { if (selectionMode === 'shareMap') { - sendMapShare( - {projectId, receiverDeviceId: deviceId, mapId: 'custom'}, - { - onSuccess: result => { - Promise.resolve(result).then(mapShare => { - navigation.navigate('WaitingForMapAccept', { - shareId: mapShare.shareId, - }); - }); - }, - onError: (err: Error) => { - Sentry.captureException(err); - navigation.navigate('ErrorBottomSheet'); - }, - }, - ); + try { + const mapShare = await sendMapShare({ + projectId, + receiverDeviceId: deviceId, + mapId: 'custom', + }); + navigation.navigate('WaitingForMapAccept', { + shareId: mapShare.shareId, + }); + } catch (err) { + Sentry.captureException(err); + navigation.navigate('ErrorBottomSheet'); + } } else { navigation.navigate('SelectInviteeRole', { name: name || '', diff --git a/tests/integration/helpers/react.tsx b/tests/integration/helpers/react.tsx index 17a7987449..54b5621c68 100644 --- a/tests/integration/helpers/react.tsx +++ b/tests/integration/helpers/react.tsx @@ -46,6 +46,10 @@ const DISCONNECTED_LOCAL_DISCOVERY_STATE: LocalDiscoveryState = { wifiLinkSpeed: null, }; +jest.mock('expo/fetch', () => ({ + fetch: globalThis.fetch, +})); + export function createMinimalWrapper() { const localeStore = createLocaleStore({persist: false}); From a4cbc2748da11dcb020ba6f9b1213c805b588044 Mon Sep 17 00:00:00 2001 From: Gregor MacLennan Date: Mon, 16 Feb 2026 18:11:15 +0000 Subject: [PATCH 13/72] fix up map sharing hooks --- ...peo-core-react-7.3.0-pre.3-MAP-SHARING.tgz | Bin 66133 -> 0 bytes ...peo-core-react-7.3.0-pre.4-MAP-SHARING.tgz | Bin 0 -> 66465 bytes package-lock.json | 130 +++++++++++++----- package.json | 4 +- src/frontend/hooks/files.ts | 6 +- .../screens/BackgroundMaps/BackgroundMaps.tsx | 75 ++++------ 6 files changed, 133 insertions(+), 82 deletions(-) delete mode 100644 comapeo-core-react-7.3.0-pre.3-MAP-SHARING.tgz create mode 100644 comapeo-core-react-7.3.0-pre.4-MAP-SHARING.tgz diff --git a/comapeo-core-react-7.3.0-pre.3-MAP-SHARING.tgz b/comapeo-core-react-7.3.0-pre.3-MAP-SHARING.tgz deleted file mode 100644 index bf56bf63f9fb558dc829ae19647864b8461f0fe3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66133 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

jGdNd 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 diff --git a/comapeo-core-react-7.3.0-pre.4-MAP-SHARING.tgz b/comapeo-core-react-7.3.0-pre.4-MAP-SHARING.tgz new file mode 100644 index 0000000000000000000000000000000000000000..dad66bc2649dd2eb4b26b01346d55370cba8f1dd GIT binary patch literal 66465 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%0Aram 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 literal 0 HcmV?d00001 diff --git a/package-lock.json b/package-lock.json index 23604727de..cb95158dfe 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "hasInstallScript": true, "dependencies": { "@bam.tech/react-native-image-resizer": "3.0.11", - "@comapeo/core-react": "file:comapeo-core-react-7.3.0-pre.3-MAP-SHARING.tgz", + "@comapeo/core-react": "file:comapeo-core-react-7.3.0-pre.4-MAP-SHARING.tgz", "@comapeo/ipc": "file:comapeo-ipc-6.1.0-pre.0.tgz", "@comapeo/nodejs-mobile-react-native": "18.20.4-2", "@expo-google-fonts/rubik": "0.4.2", @@ -41,7 +41,7 @@ "buffer": "6.0.3", "cheap-ruler": "4.0.0", "eventemitter3": "5.0.1", - "expo": "54.0.31", + "expo": "54.0.33", "expo-application": "7.0.8", "expo-asset": "12.0.12", "expo-audio": "1.1.1", @@ -2652,8 +2652,8 @@ }, "node_modules/@comapeo/core-react": { "version": "7.2.0", - "resolved": "file:comapeo-core-react-7.3.0-pre.3-MAP-SHARING.tgz", - "integrity": "sha512-Y4/rUDchbVkm3wJHBe0cnYKCja84x8lLaO80wfWLSjb8zVSM0ZbTbZgP1OrRTJG9tPRX9hjirBD/lkP2L00zuw==", + "resolved": "file:comapeo-core-react-7.3.0-pre.4-MAP-SHARING.tgz", + "integrity": "sha512-JCRCrdBxA0440ozo2YdzInT0mbQk/AS6CkfH4PpF1wOBWSiiKccArVfbnqiP2G421wv7sBNL5X4eRmW48b38sg==", "license": "MIT", "dependencies": { "ensure-error": "5.0.0", @@ -17761,27 +17761,27 @@ } }, "node_modules/expo": { - "version": "54.0.31", - "resolved": "https://registry.npmjs.org/expo/-/expo-54.0.31.tgz", - "integrity": "sha512-kQ3RDqA/a59I7y+oqQGyrPbbYlgPMUdKBOgvFLpoHbD2bCM+F75i4N0mUijy7dG5F/CUCu2qHmGGUCXBbMDkCg==", + "version": "54.0.33", + "resolved": "https://registry.npmjs.org/expo/-/expo-54.0.33.tgz", + "integrity": "sha512-3yOEfAKqo+gqHcV8vKcnq0uA5zxlohnhA3fu4G43likN8ct5ZZ3LjAh9wDdKteEkoad3tFPvwxmXW711S5OHUw==", "license": "MIT", "peer": true, "dependencies": { "@babel/runtime": "^7.20.0", - "@expo/cli": "54.0.21", + "@expo/cli": "54.0.23", "@expo/config": "~12.0.13", "@expo/config-plugins": "~54.0.4", "@expo/devtools": "0.1.8", "@expo/fingerprint": "0.15.4", "@expo/metro": "~54.2.0", - "@expo/metro-config": "54.0.13", + "@expo/metro-config": "54.0.14", "@expo/vector-icons": "^15.0.3", "@ungap/structured-clone": "^1.3.0", - "babel-preset-expo": "~54.0.9", + "babel-preset-expo": "~54.0.10", "expo-asset": "~12.0.12", "expo-constants": "~18.0.13", "expo-file-system": "~19.0.21", - "expo-font": "~14.0.10", + "expo-font": "~14.0.11", "expo-keep-awake": "~15.0.8", "expo-modules-autolinking": "3.0.24", "expo-modules-core": "3.0.29", @@ -18043,7 +18043,6 @@ "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-14.0.10.tgz", "integrity": "sha512-UqyNaaLKRpj4pKAP4HZSLnuDQqueaO5tB1c/NWu5vh1/LF9ulItyyg2kF/IpeOp0DeOLk0GY0HrIXaKUMrwB+Q==", "license": "MIT", - "peer": true, "dependencies": { "fontfaceobserver": "^2.1.0" }, @@ -18248,9 +18247,9 @@ } }, "node_modules/expo/node_modules/@expo/cli": { - "version": "54.0.21", - "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-54.0.21.tgz", - "integrity": "sha512-L/FdpyZDsg/Nq6xW6kfiyF9DUzKfLZCKFXEVZcDqCNar6bXxQVotQyvgexRvtUF5nLinuT/UafLOdC3FUALUmA==", + "version": "54.0.23", + "resolved": "https://registry.npmjs.org/@expo/cli/-/cli-54.0.23.tgz", + "integrity": "sha512-km0h72SFfQCmVycH/JtPFTVy69w6Lx1cHNDmfLfQqgKFYeeHTjx7LVDP4POHCtNxFP2UeRazrygJhlh4zz498g==", "license": "MIT", "dependencies": { "@0no-co/graphql.web": "^1.0.8", @@ -18262,9 +18261,9 @@ "@expo/image-utils": "^0.8.8", "@expo/json-file": "^10.0.8", "@expo/metro": "~54.2.0", - "@expo/metro-config": "~54.0.13", + "@expo/metro-config": "~54.0.14", "@expo/osascript": "^2.3.8", - "@expo/package-manager": "^1.9.9", + "@expo/package-manager": "^1.9.10", "@expo/plist": "^0.4.8", "@expo/prebuild-config": "^54.0.8", "@expo/schema-utils": "^0.1.8", @@ -18335,9 +18334,9 @@ } }, "node_modules/expo/node_modules/@expo/metro-config": { - "version": "54.0.13", - "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-54.0.13.tgz", - "integrity": "sha512-RRufMCgLR2Za1WGsh02OatIJo5qZFt31yCnIOSfoubNc3Qqe92Z41pVsbrFnmw5CIaisv1NgdBy05DHe7pEyuw==", + "version": "54.0.14", + "resolved": "https://registry.npmjs.org/@expo/metro-config/-/metro-config-54.0.14.tgz", + "integrity": "sha512-hxpLyDfOR4L23tJ9W1IbJJsG7k4lv2sotohBm/kTYyiG+pe1SYCAWsRmgk+H42o/wWf/HQjE5k45S5TomGLxNA==", "license": "MIT", "dependencies": { "@babel/code-frame": "^7.20.0", @@ -18382,6 +18381,15 @@ "react-native": "*" } }, + "node_modules/expo/node_modules/@isaacs/cliui": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-9.0.0.tgz", + "integrity": "sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, "node_modules/expo/node_modules/@react-native/babel-plugin-codegen": { "version": "0.81.5", "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.81.5.tgz", @@ -18615,6 +18623,21 @@ "url": "https://dotenvx.com" } }, + "node_modules/expo/node_modules/expo-font": { + "version": "14.0.11", + "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-14.0.11.tgz", + "integrity": "sha512-ga0q61ny4s/kr4k8JX9hVH69exVSIfcIc19+qZ7gt71Mqtm7xy2c6kwsPTCyhBW2Ro5yXTT8EaZOpuRi35rHbg==", + "license": "MIT", + "peer": true, + "dependencies": { + "fontfaceobserver": "^2.1.0" + }, + "peerDependencies": { + "expo": "*", + "react": "*", + "react-native": "*" + } + }, "node_modules/expo/node_modules/expo-keep-awake": { "version": "15.0.8", "resolved": "https://registry.npmjs.org/expo-keep-awake/-/expo-keep-awake-15.0.8.tgz", @@ -18626,12 +18649,12 @@ } }, "node_modules/expo/node_modules/glob": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", - "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", + "version": "13.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.3.tgz", + "integrity": "sha512-/g3B0mC+4x724v1TgtBlBtt2hPi/EWptsIAmXUx9Z2rvBYleQcsrmaOzd5LyL50jf/Soi83ZDJmw2+XqvH/EeA==", "license": "BlueOak-1.0.0", "dependencies": { - "minimatch": "^10.1.1", + "minimatch": "^10.2.0", "minipass": "^7.1.2", "path-scurry": "^2.0.0" }, @@ -18642,13 +18665,37 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/expo/node_modules/glob/node_modules/balanced-match": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.2.tgz", + "integrity": "sha512-x0K50QvKQ97fdEz2kPehIerj+YTeptKF9hyYkKf6egnwmMWAkADiO0QCzSp0R5xN8FTZgYaBfSaue46Ej62nMg==", + "license": "MIT", + "dependencies": { + "jackspeak": "^4.2.3" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/expo/node_modules/glob/node_modules/brace-expansion": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.2.tgz", + "integrity": "sha512-Pdk8c9poy+YhOgVWw1JNN22/HcivgKWwpxKq04M/jTmHyCZn12WPJebZxdjSa5TmBqISrUSgNYU3eRORljfCCw==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "20 || >=22" + } + }, "node_modules/expo/node_modules/glob/node_modules/minimatch": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", - "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.0.tgz", + "integrity": "sha512-ugkC31VaVg9cF0DFVoADH12k6061zNZkZON+aX8AWsR9GhPcErkcMBceb6znR8wLERM2AkkOxy2nWRLpT9Jq5w==", "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" + "brace-expansion": "^5.0.2" }, "engines": { "node": "20 || >=22" @@ -18672,10 +18719,25 @@ "hermes-estree": "0.29.1" } }, + "node_modules/expo/node_modules/jackspeak": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.2.3.tgz", + "integrity": "sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^9.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/expo/node_modules/lru-cache": { - "version": "11.2.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", - "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==", + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", + "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" @@ -18737,9 +18799,9 @@ } }, "node_modules/expo/node_modules/tar": { - "version": "7.5.7", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.7.tgz", - "integrity": "sha512-fov56fJiRuThVFXD6o6/Q354S7pnWMJIVlDBYijsTNx6jKSE4pvrDTs6lUnmGvNyfJwFQQwWy3owKz1ucIhveQ==", + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.9.tgz", + "integrity": "sha512-BTLcK0xsDh2+PUe9F6c2TlRp4zOOBMTkoQHQIWSIzI0R7KG46uEwq4OPk2W7bZcprBMsuaeFsqwYr7pjh6CuHg==", "license": "BlueOak-1.0.0", "dependencies": { "@isaacs/fs-minipass": "^4.0.0", diff --git a/package.json b/package.json index 97e4ac948d..2cf05f55d4 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ }, "dependencies": { "@bam.tech/react-native-image-resizer": "3.0.11", - "@comapeo/core-react": "file:comapeo-core-react-7.3.0-pre.3-MAP-SHARING.tgz", + "@comapeo/core-react": "file:comapeo-core-react-7.3.0-pre.4-MAP-SHARING.tgz", "@comapeo/ipc": "file:comapeo-ipc-6.1.0-pre.0.tgz", "@comapeo/nodejs-mobile-react-native": "18.20.4-2", "@expo-google-fonts/rubik": "0.4.2", @@ -65,7 +65,7 @@ "buffer": "6.0.3", "cheap-ruler": "4.0.0", "eventemitter3": "5.0.1", - "expo": "54.0.31", + "expo": "54.0.33", "expo-application": "7.0.8", "expo-asset": "12.0.12", "expo-audio": "1.1.1", diff --git a/src/frontend/hooks/files.ts b/src/frontend/hooks/files.ts index 87b15c59d0..3c4d4e8aa8 100644 --- a/src/frontend/hooks/files.ts +++ b/src/frontend/hooks/files.ts @@ -3,7 +3,11 @@ import {useMutation} from '@tanstack/react-query'; import {selectFile} from '../lib/file-system'; // 'background' key prefix prevents passcode prompt during file selection (see AuthContext.tsx) -const FILE_SELECT_MUTATION_KEY = ['background', 'file', 'select'] as const; +export const FILE_SELECT_MUTATION_KEY = [ + 'background', + 'file', + 'select', +] as const; export function useSelectFile() { return useMutation({ diff --git a/src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx b/src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx index 2d056f8251..0df4d3bdf2 100644 --- a/src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx +++ b/src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx @@ -3,8 +3,9 @@ import React from 'react'; import {defineMessages, useIntl, type MessageDescriptor} from 'react-intl'; import {ScrollView, StyleSheet, View} from 'react-native'; import MaterialIcon from '@react-native-vector-icons/material-icons'; +import {File} from 'expo-file-system'; -import {useSelectFile} from '../../hooks/files'; +import {FILE_SELECT_MUTATION_KEY, useSelectFile} from '../../hooks/files'; import { useImportCustomMapFile, useGetCustomMapInfo, @@ -32,6 +33,7 @@ import { import {bytesToMegabytes} from '../../lib/bytesToMegabytes'; import {Button} from '../../sharedComponents/Button'; import {DownloadIcon} from '../../sharedComponents/icons'; +import {useMutation} from '@tanstack/react-query'; const m = defineMessages({ screenTitle: { @@ -144,7 +146,17 @@ export function BackgroundMapsScreen() { const {formatMessage: t} = useIntl(); const {navigate} = useNavigationFromRoot(); - const selectFileMutation = useSelectFile(); + const selectFileMutation = useMutation({ + mutationKey: FILE_SELECT_MUTATION_KEY, + mutationFn: async () => { + const result = await File.pickFileAsync(undefined, 'application/*'); + const file = Array.isArray(result) ? result[0] : result; + if (!file) { + throw new Error('No file selected'); + } + await importCustomMapMutation.mutateAsync({file}); + }, + }); const importCustomMapMutation = useImportCustomMapFile(); const removeCustomMapMutation = useRemoveCustomMapFile(); const {data, isRefetching, error} = useGetCustomMapInfo(); @@ -152,45 +164,18 @@ export function BackgroundMapsScreen() { const customMapInfo = data as CustomMapInfo | null | undefined; const handleChooseFile = () => { - selectFileMutation.mutate( - { - copyToCacheDirectory: false, - allowedExtensions: ['smp'], + selectFileMutation.mutate(undefined, { + onSuccess: () => { + navigate('MapAddedBottomSheet'); }, - { - onSuccess: asset => { - if (!asset) return; - - const file = { - ...asset, - exists: true, - } as any; - - importCustomMapMutation.mutate( - {file}, - { - onSuccess: () => { - navigate('MapAddedBottomSheet'); - }, - onError: err => { - Sentry.captureException(err); - navigate('BackgroundMapErrorBottomSheet', { - title: t(m.importErrorTitle), - description: t(m.importErrorDesciption), - }); - }, - }, - ); - }, - onError: err => { - Sentry.captureException(err); - navigate('BackgroundMapErrorBottomSheet', { - title: t(m.importErrorTitle), - description: t(m.importErrorDesciption), - }); - }, + onError: err => { + Sentry.captureException(err); + navigate('BackgroundMapErrorBottomSheet', { + title: t(m.importErrorTitle), + description: t(m.importErrorDesciption), + }); }, - ); + }); }; const handleRemoveMap = () => { @@ -202,12 +187,7 @@ export function BackgroundMapsScreen() { {isRefetching ? ( - ) : customMapInfo ? ( - - ) : ( + ) : error || !customMapInfo ? ( + ) : ( + )} From 3e2eb580dfbe0f955fc8a8bf4069ff748a2a826a Mon Sep 17 00:00:00 2001 From: Cindy Green Date: Mon, 16 Feb 2026 16:36:47 -0500 Subject: [PATCH 14/72] Prevents showing of errors in unneeded situations. --- src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx b/src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx index 0df4d3bdf2..577b211627 100644 --- a/src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx +++ b/src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx @@ -169,6 +169,12 @@ export function BackgroundMapsScreen() { navigate('MapAddedBottomSheet'); }, onError: err => { + if ( + err instanceof Error && + err.message.includes('cancelled by the user') + ) { + return; + } Sentry.captureException(err); navigate('BackgroundMapErrorBottomSheet', { title: t(m.importErrorTitle), @@ -247,7 +253,7 @@ function NoMapScreen({ {t(m.acceptedFileTypes)} - {error && ( + {error && !error.message?.includes('Map not found') && ( {t(m.customMapInfoLoadError)} From 68dc8e9e6b90d2fc5a02f26d873ff32539fc3722 Mon Sep 17 00:00:00 2001 From: Cindy Green Date: Mon, 16 Feb 2026 16:48:11 -0500 Subject: [PATCH 15/72] Ts expect error for file for now. --- src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx b/src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx index 577b211627..345a5731a3 100644 --- a/src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx +++ b/src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx @@ -154,6 +154,7 @@ export function BackgroundMapsScreen() { if (!file) { throw new Error('No file selected'); } + // @ts-expect-error - TODO: Remove once @comapeo/core-react file type is fixed await importCustomMapMutation.mutateAsync({file}); }, }); From 9835f0036ca1f1cf4c103f958b0f24d7c41f0eb8 Mon Sep 17 00:00:00 2001 From: Cindy Green Date: Mon, 16 Feb 2026 16:55:19 -0500 Subject: [PATCH 16/72] Removes unneeded imports. --- src/frontend/hooks/server/maps.ts | 1 - src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/frontend/hooks/server/maps.ts b/src/frontend/hooks/server/maps.ts index 9f7453469e..3c72040440 100644 --- a/src/frontend/hooks/server/maps.ts +++ b/src/frontend/hooks/server/maps.ts @@ -1,5 +1,4 @@ import {useMapStyleUrl} from '@comapeo/core-react'; -import {useQuery} from '@tanstack/react-query'; export function useMapStyleJsonUrl() { const {data, error, isRefetching} = useMapStyleUrl(); diff --git a/src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx b/src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx index 345a5731a3..ef210a659c 100644 --- a/src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx +++ b/src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx @@ -5,7 +5,7 @@ import {ScrollView, StyleSheet, View} from 'react-native'; import MaterialIcon from '@react-native-vector-icons/material-icons'; import {File} from 'expo-file-system'; -import {FILE_SELECT_MUTATION_KEY, useSelectFile} from '../../hooks/files'; +import {FILE_SELECT_MUTATION_KEY} from '../../hooks/files'; import { useImportCustomMapFile, useGetCustomMapInfo, From 6f94e05326b1931ec4ade806260657d926ecb0b3 Mon Sep 17 00:00:00 2001 From: Gregor MacLennan Date: Tue, 17 Feb 2026 09:42:26 +0000 Subject: [PATCH 17/72] cast return type of File.pickFileAsync() to correct type --- src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx b/src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx index ef210a659c..e0c96d9feb 100644 --- a/src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx +++ b/src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx @@ -150,11 +150,11 @@ export function BackgroundMapsScreen() { mutationKey: FILE_SELECT_MUTATION_KEY, mutationFn: async () => { const result = await File.pickFileAsync(undefined, 'application/*'); - const file = Array.isArray(result) ? result[0] : result; + // The return type of `File.pickFileAsync()` is incorrect. See https://github.com/expo/expo/issues/43201 + const file = (Array.isArray(result) ? result[0] : result) as File; if (!file) { throw new Error('No file selected'); } - // @ts-expect-error - TODO: Remove once @comapeo/core-react file type is fixed await importCustomMapMutation.mutateAsync({file}); }, }); From 14f5aa08c4bf922ecc96633cda4ea9a02957de53 Mon Sep 17 00:00:00 2001 From: Gregor MacLennan Date: Tue, 17 Feb 2026 10:15:26 +0000 Subject: [PATCH 18/72] Refactor mapServer getBaseUrl --- src/frontend/App.tsx | 9 ++++++++- src/frontend/contexts/AppProviders.tsx | 16 +++------------- 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/src/frontend/App.tsx b/src/frontend/App.tsx index 7f97987c74..a3a68f1b41 100644 --- a/src/frontend/App.tsx +++ b/src/frontend/App.tsx @@ -110,6 +110,13 @@ const deviceDiagnosticMetrics = new DeviceDiagnosticMetrics(); const serverStateStore = createServerStateStore(); const mapeoApi = createMapeoApi({serverStateStore}); const appRpc = createAppRpc({serverStateStore}); +const mapServerListenPromise = appRpc.mapServer.listen({}); +const mapServerApi = { + async getBaseUrl() { + const {localPort} = await mapServerListenPromise; + return new URL(`http://127.0.0.1:${localPort}`); + }, +}; const localDiscoveryController = createLocalDiscoveryController(mapeoApi); localDiscoveryController.start(); @@ -235,7 +242,7 @@ const App = () => { queryClient={queryClient} localDiscoveryController={localDiscoveryController} mapeoApi={mapeoApi} - appRpc={appRpc} + mapServerApi={mapServerApi} persistedDrafObservationStore={persistedDraftObservationStore} trackStore={persistedTrackStore} securityStore={persistedSecurityStore} diff --git a/src/frontend/contexts/AppProviders.tsx b/src/frontend/contexts/AppProviders.tsx index e949e1b0af..d47258a3b1 100644 --- a/src/frontend/contexts/AppProviders.tsx +++ b/src/frontend/contexts/AppProviders.tsx @@ -48,13 +48,12 @@ import { EarlyAccessStoreProvider, type EarlyAccessStore, } from './EarlyAccessContext'; -import type {AppRpcApi} from '@comapeo/ipc/client.js'; type AppProvidersProps = { children: React.ReactNode; localDiscoveryController: ReturnType; mapeoApi: MapeoClientApi; - appRpc: AppRpcApi; + mapServerApi: {getBaseUrl: () => Promise}; persistedDrafObservationStore: DraftObservationStore; trackStore: TrackStore; securityStore: SecurityStore; @@ -73,7 +72,7 @@ export const AppProviders = ({ children, localDiscoveryController, mapeoApi, - appRpc, + mapServerApi, persistedDrafObservationStore, trackStore, securityStore, @@ -87,15 +86,6 @@ export const AppProviders = ({ earlyAccessStore, appUsageStatsStore, }: AppProvidersProps) => { - const mapServerListenPromise = React.useMemo( - () => appRpc.mapServer.listen({}), - [appRpc], - ); - const getMapServerBaseUrl = React.useCallback(async () => { - const {localPort} = await mapServerListenPromise; - return new URL(`http://127.0.0.1:${localPort}/`); - }, [mapServerListenPromise]); - return ( @@ -114,7 +104,7 @@ export const AppProviders = ({ value={localDiscoveryController}> From 4e34b5507ee29762443cc7240e10fdb2539b6d8b Mon Sep 17 00:00:00 2001 From: Gregor MacLennan Date: Tue, 17 Feb 2026 14:49:14 +0000 Subject: [PATCH 19/72] update mapServer.listen() types --- comapeo-ipc-6.1.0-pre.0.tgz | Bin 6596 -> 0 bytes comapeo-ipc-6.1.0-pre.1.tgz | Bin 0 -> 6603 bytes package-lock.json | 1191 +-------------------------------- package.json | 2 +- src/backend/package-lock.json | 7 +- src/backend/package.json | 2 +- src/frontend/App.tsx | 2 +- 7 files changed, 9 insertions(+), 1195 deletions(-) delete mode 100644 comapeo-ipc-6.1.0-pre.0.tgz create mode 100644 comapeo-ipc-6.1.0-pre.1.tgz diff --git a/comapeo-ipc-6.1.0-pre.0.tgz b/comapeo-ipc-6.1.0-pre.0.tgz deleted file mode 100644 index 8f41f0b7f2461d28547f9cec53e42a38028cab4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6596 zcmV;#89U}5iwFP!00002|Lr|%ciXm-{mfr6ky;f5l33CfPv)qmeJ07!xl$x3eGq^kZ+QIn)=_vW|H$582Hmf~r%4?bh}VoUj`f5f4u2lsh4D=9YCq!zmMj zaUYm~2@UCJ4mTn3BkI;+98wB=49@i9ab zCP46UbVou8#CL%R!5u~->VnIi*_8Sbi4fkHc~n3(noy`*>K2un1maTSS^-t>1{hy0L_wo|X2UhRw z;GX%4UwWs# z;qP_pb#K_mK3|^?paU13!LWDy_OvsAi?@S|^UE%D`X|so@Avwz2fhBU-Lr0gXhW|L z{d4I4quU?C<(tmwDT1;(Z-;Nr2RJ@BKEL>V(EIhx5Z;`ho^%J7@Jkm?d!1iSy9!kQ zcQ`)n^v>#V(mCt=+Lf)&hi|$A3#+No!EbN6_zK~5`p`KZ_Rjk_jpOtFaL_p()?s)) z7$!}B>s@y1&>8eD5h1S!=Vx^b(RuzFtMvNVuHRL?AgUp=BIg77{q1Ep=@3r3ozq_b z*Gp`SQ;aLy)(=n5U+4+6{6{v{bUa4=$o{8zMESq9wYAsE%m3}x&XfFql!r}`Z^Jz} zAtez#mOB6zFb???Hp9SagmmmtC*oncJvI+4-7YwxV;bt(LBqvwY3V(5E-u~=E{@;# zPU>*h>34qZ4&Eal?srf1yNm95QsZ(qI-U^Ur(Qi7g5C7ks3~TnhNFrU{O0rL7CeVn z(LA6o9mBl>SzS8hnyu#63E0cH?kk5+NkDni;UV3u*=P9WBIGDij}~Bl?F7t%=gof) zF17?XpR!1Q1XwwgGvbpQ8rI{=n>RGl}2kFK`fE#Qg=k$7i;f*;ao z7WxA2vol!81*9M4)*R1#sSfJSjG9$r9Cg5s;SlZ@HN-OjG@t9$m)*ZqSgj{0{o>p3 z=xBk%M$iiVdSO*J8Y~Xcr+2ty)!Knkd8&4hrYc=4C9~{Yiv*hME1-N3IO}$nQnv2K zKwT-C)<=#ej67=M*(xS>nAs@REGpE>{yPJ+n}UY7G}OCUBL~T-Fe;6=CBw>KH8ZYU znT?_CgOC>%!HOTE7Hw?ikT-Vo7@o= z#pG)f&%2~i{*g^6BwcakWT`ZRG5L0HY*eGhq7bd1wfzYi6ibCxbyEpA+ zQI{VVG0`_+cnJ>iHzWAq^E-KHl}tb%U<0I>ItUJT6dWQVU=e5wLn1!ZKrCZS1~Vc4 z9C-m$9dmn1F^NwqiC7l%&b>lSZ61ak=5o}mx<&YG6nZ;X;#J< z6*VOUMRvHb7I{58r{%_CKmI4j?@C)ITo<(6YpayM+;Zj~WfbN-PeG|-YR#I(#aeO` zUPYooKL*r^8Z-=fX!1x^`ATXJ?+`ST#J)(Haj**wA>OH=^yAq<=tTPVLt z5O~Z{=HS7_aeOWj5KTw~XpHrF1OW-9aK~*W4`|fBv88Nq*?3Gt>`e_u$X=%;5X$14 zh>&O&Qdx%e&}cjI_()(K?2qAogevzP3iM+X5(k%29*PlWEk5mh!_!v0ao|3|@TxT9_zdYNMmOoBgM#- zCqW=LmfmyKkWTq672q)uQ6D$VXcmFXsgOI(NgC=2OH+G({f+5l=DdOpnCo#}zHSIQ zvutMH$zm1N%}g~!!jq--PhkILzDqxTar5s3{@>Q#i-P}mYyZXWll}KG9!>H0MLSr% zAmi&Le7s)d5vJ|dG#QtHx|9+!+p&6Qbdt(+X=5zW5$ud!kXML`hRn5lNsm|sbMU(T z7>qgjh;6?^`cDx3nEs#E{?>NU|Fi$%iT=NV|0hR#S>4;D!>{k*Ng!zDS8K4{Tk1zA zBqF)?vxs>j>l?~x#;YvJi`WkNh$^+h_0iR~sZy_WP^cEM&9e>#9r^($#l2$IZEcXn zLmn*h=IYq|qB-5AKEo6o3`=07EBrvmy4DKUMPgA;tHf_&9DKjdj?9oWSsi9p-dM-w zu8Hhumi3e1r4Fn83Cmput9=dWWNqTQk_J!pX{EZUOE>EPMn&mC^N@zz*vPqWgacLiAZb=7d z8r990S@oTDTqDZ>yVRo*Er(q+>n}mkvQDxcWcGUbXxDM}WcT{&I!il>ZT(9v?lT{4 z{{8|2GWR%fSJ}@q`>m=Q6fNd13Z=tk;wovEHH$x!t^W7}v}llDpP}D`%gDY>EPIyj zezYE8om!dc{2(_Xh9>Dv<|eJ+#~)2VHda7big|Cs&&lgH_%qMTjg`4L8r`VKKr@8~ zLtHsh(>IXcyb~gD)2%brPckuQHu5syLXvDf*R#>kqY2nmhI(BkaW!fhuv5QSmaqy| z`S&Ged30W#pPaX0f{rVW&c=YNXi{zP5nS0Tr!<;y7o-VR{9HD&mDKpDeB~24NPaOF zd0V=T_Rl!Rq+aSt{u8wj<6xO8io1?F!FbnRhnNR5D{X zSxeeS!MpVAS%!Np%A7Dt2rVFSpTH~huhTG^r-f4zsO^+1ukt`epckXurX*-6lG?1< zO2<1_l`{cq_uz4dc*wO;AWcVjHa#*R+RA302b}3d`Lc{Qa;KZFpf$ZbYq@x^zcsx) z>$rH5eHPo0!oc}n�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 J!*BqO007!J5mEpE literal 0 HcmV?d00001 diff --git a/package-lock.json b/package-lock.json index cb95158dfe..635593006a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,7 @@ "dependencies": { "@bam.tech/react-native-image-resizer": "3.0.11", "@comapeo/core-react": "file:comapeo-core-react-7.3.0-pre.4-MAP-SHARING.tgz", - "@comapeo/ipc": "file:comapeo-ipc-6.1.0-pre.0.tgz", + "@comapeo/ipc": "file:comapeo-ipc-6.1.0-pre.1.tgz", "@comapeo/nodejs-mobile-react-native": "18.20.4-2", "@expo-google-fonts/rubik": "0.4.2", "@formatjs/intl-getcanonicallocales": "2.5.6", @@ -189,17 +189,6 @@ } } }, - "node_modules/@augment-vir/common": { - "version": "26.4.0", - "resolved": "https://registry.npmjs.org/@augment-vir/common/-/common-26.4.0.tgz", - "integrity": "sha512-rQoLA+t3bbvs269KvZYKZ76WO7Ofp468mqahsI4RAvPjJaOJ/6lCo49HgvUjnFlv7DoEVbTMfHT3G3+VztNnsA==", - "license": "MIT", - "dependencies": { - "browser-or-node": "^2.1.1", - "run-time-assertions": "^1.0.0", - "type-fest": "^4.12.0" - } - }, "node_modules/@babel/code-frame": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.28.6.tgz", @@ -2862,12 +2851,11 @@ }, "node_modules/@comapeo/ipc": { "version": "6.0.2", - "resolved": "file:comapeo-ipc-6.1.0-pre.0.tgz", - "integrity": "sha512-J7kH79ZRDZRgzb2sMz71USQFyPC2HJw2hxZSUUu30ET0hXS8kBgn1jr9Nl12KHjmBNSMAbf9U2i5C2Us/lYwjQ==", + "resolved": "file:comapeo-ipc-6.1.0-pre.1.tgz", + "integrity": "sha512-Eq6cYrWrXXX3IWzrEaG+lTruI9ZzF/7G99BtWrW3Q3BhsfO4b264Gy/ino63KyPPZKEsLOsc7/0UhE7CgmJSWA==", "license": "MIT", "peer": true, "dependencies": { - "@comapeo/map-server": "^1.0.0-pre.6", "eventemitter3": "^5.0.1", "p-defer": "^4.0.1", "rpc-reflector": "^3.0.1" @@ -2879,988 +2867,6 @@ "@comapeo/core": "^5.0.0" } }, - "node_modules/@comapeo/map-server": { - "version": "1.0.0-pre.6", - "resolved": "https://registry.npmjs.org/@comapeo/map-server/-/map-server-1.0.0-pre.6.tgz", - "integrity": "sha512-4gZNkxT02kZuCW5pbpOkIr4xoNXeyV50iuwJ84ZUZwrDrcPmUafCFvfYWI62NQqGgxjafyWsbSoSvdBjO01pVA==", - "bundleDependencies": [ - "@whatwg-node/server" - ], - "license": "MIT", - "dependencies": { - "@whatwg-node/server": "^0.10.17", - "itty-router": "^5.0.22", - "p-defer": "^4.0.1", - "p-mutex": "^0.1.0", - "secret-stream-http": "^1.0.1", - "styled-map-package": "^4.0.1", - "typebox": "^1.0.61", - "typed-event-target": "^3.4.0" - } - }, - "node_modules/@comapeo/map-server/node_modules/@commander-js/extra-typings": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/@commander-js/extra-typings/-/extra-typings-12.1.0.tgz", - "integrity": "sha512-wf/lwQvWAA0goIghcb91dQYpkLBcyhOhQNqG/VgWhnKzgt+UOMvra7EX/2fv70arm5RW+PUHoQHHDa6/p77Eqg==", - "license": "MIT", - "peerDependencies": { - "commander": "~12.1.0" - } - }, - "node_modules/@comapeo/map-server/node_modules/@envelop/instrumentation": { - "version": "1.0.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "@whatwg-node/promise-helpers": "^1.2.1", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@comapeo/map-server/node_modules/@fastify/accept-negotiator": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@fastify/accept-negotiator/-/accept-negotiator-2.0.1.tgz", - "integrity": "sha512-/c/TW2bO/v9JeEgoD/g1G5GxGeCF1Hafdf79WPmUlgYiBXummY0oX3VVq4yFkKKVBKDNlaDUYoab7g38RpPqCQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT" - }, - "node_modules/@comapeo/map-server/node_modules/@fastify/ajv-compiler": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-4.0.5.tgz", - "integrity": "sha512-KoWKW+MhvfTRWL4qrhUwAAZoaChluo0m0vbiJlGMt2GXvL4LVPQEjt8kSpHI3IBq5Rez8fg+XeH3cneztq+C7A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT", - "dependencies": { - "ajv": "^8.12.0", - "ajv-formats": "^3.0.1", - "fast-uri": "^3.0.0" - } - }, - "node_modules/@comapeo/map-server/node_modules/@fastify/busboy": { - "version": "3.2.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/@comapeo/map-server/node_modules/@fastify/error": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@fastify/error/-/error-4.2.0.tgz", - "integrity": "sha512-RSo3sVDXfHskiBZKBPRgnQTtIqpi/7zhJOEmAxCiBcM7d0uwdGdxLlsCaLzGs8v8NnxIRlfG0N51p5yFaOentQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT" - }, - "node_modules/@comapeo/map-server/node_modules/@fastify/fast-json-stringify-compiler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-5.0.3.tgz", - "integrity": "sha512-uik7yYHkLr6fxd8hJSZ8c+xF4WafPK+XzneQDPU+D10r5X19GW8lJcom2YijX2+qtFF1ENJlHXKFM9ouXNJYgQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT", - "dependencies": { - "fast-json-stringify": "^6.0.0" - } - }, - "node_modules/@comapeo/map-server/node_modules/@fastify/merge-json-schemas": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@fastify/merge-json-schemas/-/merge-json-schemas-0.2.1.tgz", - "integrity": "sha512-OA3KGBCy6KtIvLf8DINC5880o5iBlDX4SxzLQS8HorJAbqluzLRn80UXU0bxZn7UOFhFgpRJDasfwn9nG4FG4A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT", - "dependencies": { - "dequal": "^2.0.3" - } - }, - "node_modules/@comapeo/map-server/node_modules/@fastify/send": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@fastify/send/-/send-4.1.0.tgz", - "integrity": "sha512-TMYeQLCBSy2TOFmV95hQWkiTYgC/SEx7vMdV+wnZVX4tt8VBLKzmH8vV9OzJehV0+XBfg+WxPMt5wp+JBUKsVw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT", - "dependencies": { - "@lukeed/ms": "^2.0.2", - "escape-html": "~1.0.3", - "fast-decode-uri-component": "^1.0.1", - "http-errors": "^2.0.0", - "mime": "^3" - } - }, - "node_modules/@comapeo/map-server/node_modules/@fastify/static": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@fastify/static/-/static-8.3.0.tgz", - "integrity": "sha512-yKxviR5PH1OKNnisIzZKmgZSus0r2OZb8qCSbqmw34aolT4g3UlzYfeBRym+HJ1J471CR8e2ldNub4PubD1coA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT", - "dependencies": { - "@fastify/accept-negotiator": "^2.0.0", - "@fastify/send": "^4.0.0", - "content-disposition": "^0.5.4", - "fastify-plugin": "^5.0.0", - "fastq": "^1.17.1", - "glob": "^11.0.0" - } - }, - "node_modules/@comapeo/map-server/node_modules/@isaacs/cliui": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-9.0.0.tgz", - "integrity": "sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==", - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/@comapeo/map-server/node_modules/@turf/bbox": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-7.3.4.tgz", - "integrity": "sha512-D5ErVWtfQbEPh11yzI69uxqrcJmbPU/9Y59f1uTapgwAwQHQztDWgsYpnL3ns8r1GmPWLP8sGJLVTIk2TZSiYA==", - "license": "MIT", - "dependencies": { - "@turf/helpers": "7.3.4", - "@turf/meta": "7.3.4", - "@types/geojson": "^7946.0.10", - "tslib": "^2.8.1" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@comapeo/map-server/node_modules/@turf/helpers": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-7.3.4.tgz", - "integrity": "sha512-U/S5qyqgx3WTvg4twaH0WxF3EixoTCfDsmk98g1E3/5e2YKp7JKYZdz0vivsS5/UZLJeZDEElOSFH4pUgp+l7g==", - "license": "MIT", - "dependencies": { - "@types/geojson": "^7946.0.10", - "tslib": "^2.8.1" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@comapeo/map-server/node_modules/@turf/meta": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-7.3.4.tgz", - "integrity": "sha512-tlmw9/Hs1p2n0uoHVm1w3ugw1I6L8jv9YZrcdQa4SH5FX5UY0ATrKeIvfA55FlL//PGuYppJp+eyg/0eb4goqw==", - "license": "MIT", - "dependencies": { - "@turf/helpers": "7.3.4", - "@types/geojson": "^7946.0.10", - "tslib": "^2.8.1" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@comapeo/map-server/node_modules/@whatwg-node/disposablestack": { - "version": "0.0.6", - "inBundle": true, - "license": "MIT", - "dependencies": { - "@whatwg-node/promise-helpers": "^1.0.0", - "tslib": "^2.6.3" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@comapeo/map-server/node_modules/@whatwg-node/fetch": { - "version": "0.10.13", - "inBundle": true, - "license": "MIT", - "dependencies": { - "@whatwg-node/node-fetch": "^0.8.3", - "urlpattern-polyfill": "^10.0.0" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@comapeo/map-server/node_modules/@whatwg-node/node-fetch": { - "version": "0.8.4", - "inBundle": true, - "license": "MIT", - "dependencies": { - "@fastify/busboy": "^3.1.1", - "@whatwg-node/disposablestack": "^0.0.6", - "@whatwg-node/promise-helpers": "^1.3.2", - "tslib": "^2.6.3" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@comapeo/map-server/node_modules/@whatwg-node/promise-helpers": { - "version": "1.3.2", - "inBundle": true, - "license": "MIT", - "dependencies": { - "tslib": "^2.6.3" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@comapeo/map-server/node_modules/@whatwg-node/server": { - "version": "0.10.17", - "inBundle": true, - "license": "MIT", - "dependencies": { - "@envelop/instrumentation": "^1.0.0", - "@whatwg-node/disposablestack": "^0.0.6", - "@whatwg-node/fetch": "^0.10.13", - "@whatwg-node/promise-helpers": "^1.3.2", - "tslib": "^2.6.3" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@comapeo/map-server/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@comapeo/map-server/node_modules/ajv-formats": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", - "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/@comapeo/map-server/node_modules/avvio": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/avvio/-/avvio-9.1.0.tgz", - "integrity": "sha512-fYASnYi600CsH/j9EQov7lECAniYiBFiiAtBNuZYLA2leLe9qOvZzqYHFjtIj6gD2VMoMLP14834LFWvr4IfDw==", - "license": "MIT", - "dependencies": { - "@fastify/error": "^4.0.0", - "fastq": "^1.17.1" - } - }, - "node_modules/@comapeo/map-server/node_modules/chalk": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", - "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@comapeo/map-server/node_modules/commander": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=18" - } - }, - "node_modules/@comapeo/map-server/node_modules/cookie": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", - "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/@comapeo/map-server/node_modules/define-lazy-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", - "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@comapeo/map-server/node_modules/emoji-regex": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", - "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", - "license": "MIT" - }, - "node_modules/@comapeo/map-server/node_modules/fast-json-stringify": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-6.3.0.tgz", - "integrity": "sha512-oRCntNDY/329HJPlmdNLIdogNtt6Vyjb1WuT01Soss3slIdyUp8kAcDU3saQTOquEK8KFVfwIIF7FebxUAu+yA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT", - "dependencies": { - "@fastify/merge-json-schemas": "^0.2.0", - "ajv": "^8.12.0", - "ajv-formats": "^3.0.1", - "fast-uri": "^3.0.0", - "json-schema-ref-resolver": "^3.0.0", - "rfdc": "^1.2.0" - } - }, - "node_modules/@comapeo/map-server/node_modules/fastify": { - "version": "5.7.4", - "resolved": "https://registry.npmjs.org/fastify/-/fastify-5.7.4.tgz", - "integrity": "sha512-e6l5NsRdaEP8rdD8VR0ErJASeyaRbzXYpmkrpr2SuvuMq6Si3lvsaVy5C+7gLanEkvjpMDzBXWE5HPeb/hgTxA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT", - "dependencies": { - "@fastify/ajv-compiler": "^4.0.5", - "@fastify/error": "^4.0.0", - "@fastify/fast-json-stringify-compiler": "^5.0.0", - "@fastify/proxy-addr": "^5.0.0", - "abstract-logging": "^2.0.1", - "avvio": "^9.0.0", - "fast-json-stringify": "^6.0.0", - "find-my-way": "^9.0.0", - "light-my-request": "^6.0.0", - "pino": "^10.1.0", - "process-warning": "^5.0.0", - "rfdc": "^1.3.1", - "secure-json-parse": "^4.0.0", - "semver": "^7.6.0", - "toad-cache": "^3.7.0" - } - }, - "node_modules/@comapeo/map-server/node_modules/fastify-plugin": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-5.1.0.tgz", - "integrity": "sha512-FAIDA8eovSt5qcDgcBvDuX/v0Cjz0ohGhENZ/wpc3y+oZCY2afZ9Baqql3g/lC+OHRnciQol4ww7tuthOb9idw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT" - }, - "node_modules/@comapeo/map-server/node_modules/find-my-way": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-9.4.0.tgz", - "integrity": "sha512-5Ye4vHsypZRYtS01ob/iwHzGRUDELlsoCftI/OZFhcLs1M0tkGPcXldE80TAZC5yYuJMBPJQQ43UHlqbJWiX2w==", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-querystring": "^1.0.0", - "safe-regex2": "^5.0.0" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/@comapeo/map-server/node_modules/glob": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-11.1.0.tgz", - "integrity": "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "license": "BlueOak-1.0.0", - "dependencies": { - "foreground-child": "^3.3.1", - "jackspeak": "^4.1.1", - "minimatch": "^10.1.1", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^2.0.0" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@comapeo/map-server/node_modules/is-interactive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", - "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@comapeo/map-server/node_modules/jackspeak": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.2.3.tgz", - "integrity": "sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==", - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^9.0.0" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@comapeo/map-server/node_modules/json-schema-ref-resolver": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-schema-ref-resolver/-/json-schema-ref-resolver-3.0.0.tgz", - "integrity": "sha512-hOrZIVL5jyYFjzk7+y7n5JDzGlU8rfWDuYyHwGa2WA8/pcmMHezp2xsVwxrebD/Q9t8Nc5DboieySDpCp4WG4A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT", - "dependencies": { - "dequal": "^2.0.3" - } - }, - "node_modules/@comapeo/map-server/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "license": "MIT" - }, - "node_modules/@comapeo/map-server/node_modules/light-my-request": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-6.6.0.tgz", - "integrity": "sha512-CHYbu8RtboSIoVsHZ6Ye4cj4Aw/yg2oAFimlF7mNvfDV192LR7nDiKtSIfCuLT7KokPSTn/9kfVLm5OGN0A28A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "BSD-3-Clause", - "dependencies": { - "cookie": "^1.0.1", - "process-warning": "^4.0.0", - "set-cookie-parser": "^2.6.0" - } - }, - "node_modules/@comapeo/map-server/node_modules/light-my-request/node_modules/process-warning": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-4.0.1.tgz", - "integrity": "sha512-3c2LzQ3rY9d0hc1emcsHhfT9Jwz0cChib/QN89oME2R451w5fy3f0afAhERFZAwrbDU43wk12d0ORBpDVME50Q==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT" - }, - "node_modules/@comapeo/map-server/node_modules/log-symbols": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-7.0.1.tgz", - "integrity": "sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==", - "license": "MIT", - "dependencies": { - "is-unicode-supported": "^2.0.0", - "yoctocolors": "^2.1.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@comapeo/map-server/node_modules/lru-cache": { - "version": "11.2.6", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", - "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", - "license": "BlueOak-1.0.0", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/@comapeo/map-server/node_modules/map-obj": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-5.0.2.tgz", - "integrity": "sha512-K6K2NgKnTXimT3779/4KxSvobxOtMmx1LBZ3NwRxT/MDIR3Br/fQ4Q+WCX5QxjyUR8zg5+RV9Tbf2c5pAWTD2A==", - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@comapeo/map-server/node_modules/mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", - "license": "MIT", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/@comapeo/map-server/node_modules/minimatch": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", - "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/brace-expansion": "^5.0.1" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@comapeo/map-server/node_modules/open": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", - "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", - "license": "MIT", - "dependencies": { - "default-browser": "^5.2.1", - "define-lazy-prop": "^3.0.0", - "is-inside-container": "^1.0.0", - "wsl-utils": "^0.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@comapeo/map-server/node_modules/ora": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-8.2.0.tgz", - "integrity": "sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==", - "license": "MIT", - "dependencies": { - "chalk": "^5.3.0", - "cli-cursor": "^5.0.0", - "cli-spinners": "^2.9.2", - "is-interactive": "^2.0.0", - "is-unicode-supported": "^2.0.0", - "log-symbols": "^6.0.0", - "stdin-discarder": "^0.2.2", - "string-width": "^7.2.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@comapeo/map-server/node_modules/ora/node_modules/log-symbols": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz", - "integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==", - "license": "MIT", - "dependencies": { - "chalk": "^5.3.0", - "is-unicode-supported": "^1.3.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@comapeo/map-server/node_modules/ora/node_modules/log-symbols/node_modules/is-unicode-supported": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", - "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@comapeo/map-server/node_modules/p-limit": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-6.2.0.tgz", - "integrity": "sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==", - "license": "MIT", - "dependencies": { - "yocto-queue": "^1.1.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@comapeo/map-server/node_modules/path-scurry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", - "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^11.0.0", - "minipass": "^7.1.2" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@comapeo/map-server/node_modules/pino": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/pino/-/pino-10.3.1.tgz", - "integrity": "sha512-r34yH/GlQpKZbU1BvFFqOjhISRo1MNx1tWYsYvmj6KIRHSPMT2+yHOEb1SG6NMvRoHRF0a07kCOox/9yakl1vg==", - "license": "MIT", - "dependencies": { - "@pinojs/redact": "^0.4.0", - "atomic-sleep": "^1.0.0", - "on-exit-leak-free": "^2.1.0", - "pino-abstract-transport": "^3.0.0", - "pino-std-serializers": "^7.0.0", - "process-warning": "^5.0.0", - "quick-format-unescaped": "^4.0.3", - "real-require": "^0.2.0", - "safe-stable-stringify": "^2.3.1", - "sonic-boom": "^4.0.1", - "thread-stream": "^4.0.0" - }, - "bin": { - "pino": "bin.js" - } - }, - "node_modules/@comapeo/map-server/node_modules/pino-abstract-transport": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-3.0.0.tgz", - "integrity": "sha512-wlfUczU+n7Hy/Ha5j9a/gZNy7We5+cXp8YL+X+PG8S0KXxw7n/JXA3c46Y0zQznIJ83URJiwy7Lh56WLokNuxg==", - "license": "MIT", - "dependencies": { - "split2": "^4.0.0" - } - }, - "node_modules/@comapeo/map-server/node_modules/pretty-bytes": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-6.1.1.tgz", - "integrity": "sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==", - "license": "MIT", - "engines": { - "node": "^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@comapeo/map-server/node_modules/process-warning": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-5.0.0.tgz", - "integrity": "sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT" - }, - "node_modules/@comapeo/map-server/node_modules/readable-stream": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", - "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", - "license": "MIT", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@comapeo/map-server/node_modules/ret": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.5.0.tgz", - "integrity": "sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw==", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/@comapeo/map-server/node_modules/safe-regex2": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-5.0.0.tgz", - "integrity": "sha512-YwJwe5a51WlK7KbOJREPdjNrpViQBI3p4T50lfwPuDhZnE3XGVTlGvi+aolc5+RvxDD6bnUmjVsU9n1eboLUYw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT", - "dependencies": { - "ret": "~0.5.0" - } - }, - "node_modules/@comapeo/map-server/node_modules/secure-json-parse": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-4.1.0.tgz", - "integrity": "sha512-l4KnYfEyqYJxDwlNVyRfO2E4NTHfMKAWdUuA8J0yve2Dz/E/PdBepY03RvyJpssIpRFwJoCD55wA+mEDs6ByWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/@comapeo/map-server/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@comapeo/map-server/node_modules/styled-map-package": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/styled-map-package/-/styled-map-package-4.0.1.tgz", - "integrity": "sha512-AC/WT3CvY2gadH7GB2/w2Z+V2sZ7m+9L0AayTXYYfkjbTq1RILlmyqWj9Z2FcABPoU8l+19x2QR1ND+7E9MBDA==", - "license": "MIT", - "dependencies": { - "@commander-js/extra-typings": "^12.1.0", - "@fastify/static": "^8.3.0", - "@inquirer/prompts": "^6.0.1", - "@mapbox/sphericalmercator": "^1.2.0", - "@maplibre/maplibre-gl-style-spec": "^20.3.1", - "@placemarkio/check-geojson": "^0.1.12", - "@turf/bbox": "^7.2.0", - "@turf/helpers": "^7.2.0", - "@whatwg-node/server": "^0.10.17", - "ansi-diff": "^1.2.0", - "archiver": "^7.0.1", - "buffer-peek-stream": "^1.1.0", - "chalk": "^5.4.1", - "commander": "^12.1.0", - "fastify": "^5.6.2", - "filter-obj": "^6.1.0", - "into-stream": "^8.0.1", - "is-stream": "^4.0.1", - "itty-router": "^5.0.22", - "ky": "^1.7.5", - "log-symbols": "^7.0.0", - "map-obj": "^5.0.2", - "mbtiles-reader": "^1.0.0", - "open": "^10.1.0", - "ora": "^8.2.0", - "p-event": "^6.0.1", - "p-limit": "^6.2.0", - "pretty-bytes": "^6.1.1", - "pretty-ms": "^9.2.0", - "readable-stream": "^4.7.0", - "temp-dir": "^3.0.0", - "yauzl-promise": "^4.0.0", - "yocto-queue": "^1.1.1" - }, - "bin": { - "smp": "bin/smp.js", - "styled-map-package": "bin/smp.js" - } - }, - "node_modules/@comapeo/map-server/node_modules/temp-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", - "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==", - "license": "MIT", - "engines": { - "node": ">=14.16" - } - }, - "node_modules/@comapeo/map-server/node_modules/thread-stream": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-4.0.0.tgz", - "integrity": "sha512-4iMVL6HAINXWf1ZKZjIPcz5wYaOdPhtO8ATvZ+Xqp3BTdaqtAwQkNmKORqcIo5YkQqGXq5cwfswDwMqqQNrpJA==", - "license": "MIT", - "dependencies": { - "real-require": "^0.2.0" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/@comapeo/map-server/node_modules/tslib": { - "version": "2.8.1", - "inBundle": true, - "license": "0BSD" - }, - "node_modules/@comapeo/map-server/node_modules/urlpattern-polyfill": { - "version": "10.1.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/@comapeo/map-server/node_modules/yocto-queue": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", - "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", - "license": "MIT", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@comapeo/nodejs-mobile-react-native": { "version": "18.20.4-2", "resolved": "https://registry.npmjs.org/@comapeo/nodejs-mobile-react-native/-/nodejs-mobile-react-native-18.20.4-2.tgz", @@ -5393,22 +4399,6 @@ "fast-json-stringify": "^5.7.0" } }, - "node_modules/@fastify/forwarded": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@fastify/forwarded/-/forwarded-3.0.1.tgz", - "integrity": "sha512-JqDochHFqXs3C3Ml3gOY58zM7OqO9ENqPo0UqAjAjH8L01fRZqwX9iLeX34//kiJubF7r2ZQHtBRU36vONbLlw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT" - }, "node_modules/@fastify/merge-json-schemas": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/@fastify/merge-json-schemas/-/merge-json-schemas-0.1.1.tgz", @@ -5418,35 +4408,6 @@ "fast-deep-equal": "^3.1.3" } }, - "node_modules/@fastify/proxy-addr": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@fastify/proxy-addr/-/proxy-addr-5.1.0.tgz", - "integrity": "sha512-INS+6gh91cLUjB+PVHfu1UqcB76Sqtpyp7bnL+FYojhjygvOPA9ctiD/JDKsyD9Xgu4hUhCSJBPig/w7duNajw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT", - "dependencies": { - "@fastify/forwarded": "^3.0.0", - "ipaddr.js": "^2.1.0" - } - }, - "node_modules/@fastify/proxy-addr/node_modules/ipaddr.js": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.3.0.tgz", - "integrity": "sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==", - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, "node_modules/@fastify/send": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@fastify/send/-/send-2.1.0.tgz", @@ -7276,12 +6237,6 @@ "node": ">=14" } }, - "node_modules/@pinojs/redact": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@pinojs/redact/-/redact-0.4.0.tgz", - "integrity": "sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg==", - "license": "MIT" - }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -13394,12 +12349,6 @@ "node": ">=8" } }, - "node_modules/browser-or-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/browser-or-node/-/browser-or-node-2.1.1.tgz", - "integrity": "sha512-8CVjaLJGuSKMVTxJ2DpBl5XnlNDiT4cQFeuCJJrvJmts9YrTZDizTX7PjC2s6W4x+MBGZeEY6dGMrF04/6Hgqg==", - "license": "MIT" - }, "node_modules/browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", @@ -15713,15 +14662,6 @@ "dev": true, "license": "MIT" }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/dereference-json-schema": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/dereference-json-schema/-/dereference-json-schema-0.2.1.tgz", @@ -17432,12 +16372,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/expect-type": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-0.15.0.tgz", - "integrity": "sha512-yWnriYB4e8G54M5/fAFj7rCIBiKs1HAACaY13kCz6Ku0dezjS9aMcfcdVK2X8Tv2tEV1BPz/wKfQ7WA4S/d8aA==", - "license": "Apache-2.0" - }, "node_modules/expect-webdriverio": { "version": "5.3.4", "resolved": "https://registry.npmjs.org/expect-webdriverio/-/expect-webdriverio-5.3.4.tgz", @@ -21661,12 +20595,6 @@ "node": ">=8" } }, - "node_modules/itty-router": { - "version": "5.0.22", - "resolved": "https://registry.npmjs.org/itty-router/-/itty-router-5.0.22.tgz", - "integrity": "sha512-9hmdGErWdYDOurGYxSbqLhy4EFReIwk71hMZTJ5b+zfa2zjMNV1ftFno2b8VjAQvX615gNB8Qxbl9JMRqHnIVA==", - "license": "MIT" - }, "node_modules/jackspeak": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", @@ -27383,33 +26311,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-mutex": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/p-mutex/-/p-mutex-0.1.0.tgz", - "integrity": "sha512-JXTGUNjI6eLzbtYGhFqmad8Tp5wDBsaGDwrvXuoRzIZ6EyKZr5jlNO9sFe83T6/K//lhyONS4ejCocvGNYJz7Q==", - "license": "MIT", - "dependencies": { - "yocto-queue": "^1.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-mutex/node_modules/yocto-queue": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", - "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", - "license": "MIT", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/p-queue": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-8.1.1.tgz", @@ -30401,35 +29302,6 @@ "queue-microtask": "^1.2.2" } }, - "node_modules/run-time-assertions": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/run-time-assertions/-/run-time-assertions-1.5.2.tgz", - "integrity": "sha512-ccfwvjGuNU14cSSXLlmPRiqEgMfA7w3J2TViO79zMnzXGvE6FJ0dxnhIQGwe5r/vwySOJ4sqZksexo9wyAlA8g==", - "deprecated": "Use @augment-vir/assert instead.", - "license": "(MIT or CC0 1.0)", - "dependencies": { - "@augment-vir/common": "^29.3.0", - "expect-type": "~0.15.0", - "type-fest": "^4.22.0" - } - }, - "node_modules/run-time-assertions/node_modules/@augment-vir/common": { - "version": "29.3.0", - "resolved": "https://registry.npmjs.org/@augment-vir/common/-/common-29.3.0.tgz", - "integrity": "sha512-k3OX35/576thmGUzQUBcCKGarb7ONBfiu07+iV2vxmjl7VoB1rOB0vu8WqgB1ceJq2EMLDPXY18hHpJ9WeTHXQ==", - "license": "MIT", - "dependencies": { - "browser-or-node": "^3.0.0", - "run-time-assertions": "^1.5.1", - "type-fest": "^4.21.0" - } - }, - "node_modules/run-time-assertions/node_modules/browser-or-node": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/browser-or-node/-/browser-or-node-3.0.0.tgz", - "integrity": "sha512-iczIdVJzGEYhP5DqQxYM9Hh7Ztpqqi+CXZpSmX8ALFs9ecXkQIeqRyM6TfxEfMVpwhl3dSuDvxdzzo9sUOIVBQ==", - "license": "MIT" - }, "node_modules/rw": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", @@ -30537,17 +29409,6 @@ "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", "license": "MIT" }, - "node_modules/secret-stream-http": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/secret-stream-http/-/secret-stream-http-1.0.1.tgz", - "integrity": "sha512-vfbvQ/jL7DxptsDqs2NvKqF5tWZ65oShV5IdmaH1+zRrNeV/vxZTf6Gh1Uml/1bCtou7m3jYmcCHCB+ZnHNrBw==", - "license": "MIT", - "dependencies": { - "@hyperswarm/secret-stream": "^6.8.1", - "streamx": "^2.22.1", - "undici": "^6.21.3" - } - }, "node_modules/secure-json-parse": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz", @@ -32830,22 +31691,6 @@ "node": ">= 0.6" } }, - "node_modules/typebox": { - "version": "1.0.81", - "resolved": "https://registry.npmjs.org/typebox/-/typebox-1.0.81.tgz", - "integrity": "sha512-bCslZUmZESHhBn4kHDghzH2oo3qu8m2W89xDLxQHv/aPvY4i81Nd1jvijlBp9wSpsVytDSfSoosbiBAjgsNb2Q==", - "license": "MIT" - }, - "node_modules/typed-event-target": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/typed-event-target/-/typed-event-target-3.4.0.tgz", - "integrity": "sha512-BvSk33Dgo+kubQpbRqiI8A7C5obN0hRydWYya/LTZQoPTCpmB4zScNJSckuKBJDq62A/sCRlZN8ZHgSQxVAKqw==", - "license": "(MIT or CC0 1.0)", - "dependencies": { - "@augment-vir/common": "^26.2.0", - "run-time-assertions": "^1.1.0" - } - }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", @@ -34227,36 +33072,6 @@ } } }, - "node_modules/wsl-utils": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", - "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", - "license": "MIT", - "dependencies": { - "is-wsl": "^3.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/wsl-utils/node_modules/is-wsl": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", - "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", - "license": "MIT", - "dependencies": { - "is-inside-container": "^1.0.0" - }, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/xache": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/xache/-/xache-1.2.1.tgz", diff --git a/package.json b/package.json index 2cf05f55d4..71967aeb60 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "dependencies": { "@bam.tech/react-native-image-resizer": "3.0.11", "@comapeo/core-react": "file:comapeo-core-react-7.3.0-pre.4-MAP-SHARING.tgz", - "@comapeo/ipc": "file:comapeo-ipc-6.1.0-pre.0.tgz", + "@comapeo/ipc": "file:comapeo-ipc-6.1.0-pre.1.tgz", "@comapeo/nodejs-mobile-react-native": "18.20.4-2", "@expo-google-fonts/rubik": "0.4.2", "@formatjs/intl-getcanonicallocales": "2.5.6", diff --git a/src/backend/package-lock.json b/src/backend/package-lock.json index c7fa3ffa72..bf1e9902ba 100644 --- a/src/backend/package-lock.json +++ b/src/backend/package-lock.json @@ -13,7 +13,7 @@ "@comapeo/core": "5.4.1", "@comapeo/default-categories": "1.0.0", "@comapeo/fallback-smp": "1.0.0", - "@comapeo/ipc": "file:../../comapeo-ipc-6.1.0-pre.0.tgz", + "@comapeo/ipc": "file:../../comapeo-ipc-6.1.0-pre.1.tgz", "@comapeo/map-server": "1.0.0-pre.6", "@sentry/node": "9.28.0", "@sentry/rollup-plugin": "^3.5.0", @@ -466,11 +466,10 @@ }, "node_modules/@comapeo/ipc": { "version": "6.0.2", - "resolved": "file:../../comapeo-ipc-6.1.0-pre.0.tgz", - "integrity": "sha512-J7kH79ZRDZRgzb2sMz71USQFyPC2HJw2hxZSUUu30ET0hXS8kBgn1jr9Nl12KHjmBNSMAbf9U2i5C2Us/lYwjQ==", + "resolved": "file:../../comapeo-ipc-6.1.0-pre.1.tgz", + "integrity": "sha512-Eq6cYrWrXXX3IWzrEaG+lTruI9ZzF/7G99BtWrW3Q3BhsfO4b264Gy/ino63KyPPZKEsLOsc7/0UhE7CgmJSWA==", "license": "MIT", "dependencies": { - "@comapeo/map-server": "^1.0.0-pre.6", "eventemitter3": "^5.0.1", "p-defer": "^4.0.1", "rpc-reflector": "^3.0.1" diff --git a/src/backend/package.json b/src/backend/package.json index 8b1a863500..dd9639d270 100644 --- a/src/backend/package.json +++ b/src/backend/package.json @@ -16,7 +16,7 @@ "@comapeo/core": "5.4.1", "@comapeo/default-categories": "1.0.0", "@comapeo/fallback-smp": "1.0.0", - "@comapeo/ipc": "file:../../comapeo-ipc-6.1.0-pre.0.tgz", + "@comapeo/ipc": "file:../../comapeo-ipc-6.1.0-pre.1.tgz", "@comapeo/map-server": "1.0.0-pre.6", "@sentry/node": "9.28.0", "@sentry/rollup-plugin": "^3.5.0", diff --git a/src/frontend/App.tsx b/src/frontend/App.tsx index a3a68f1b41..321667c17f 100644 --- a/src/frontend/App.tsx +++ b/src/frontend/App.tsx @@ -110,7 +110,7 @@ const deviceDiagnosticMetrics = new DeviceDiagnosticMetrics(); const serverStateStore = createServerStateStore(); const mapeoApi = createMapeoApi({serverStateStore}); const appRpc = createAppRpc({serverStateStore}); -const mapServerListenPromise = appRpc.mapServer.listen({}); +const mapServerListenPromise = appRpc.mapServer.listen(); const mapServerApi = { async getBaseUrl() { const {localPort} = await mapServerListenPromise; From ef4a70c9dcb64330151699aa387db34f96298c53 Mon Sep 17 00:00:00 2001 From: Gregor MacLennan Date: Tue, 17 Feb 2026 14:50:17 +0000 Subject: [PATCH 20/72] update map-server@pre7 --- src/backend/package-lock.json | 824 ++++++++-------------------------- src/backend/package.json | 2 +- 2 files changed, 194 insertions(+), 632 deletions(-) diff --git a/src/backend/package-lock.json b/src/backend/package-lock.json index bf1e9902ba..f95a1c2cf7 100644 --- a/src/backend/package-lock.json +++ b/src/backend/package-lock.json @@ -14,7 +14,7 @@ "@comapeo/default-categories": "1.0.0", "@comapeo/fallback-smp": "1.0.0", "@comapeo/ipc": "file:../../comapeo-ipc-6.1.0-pre.1.tgz", - "@comapeo/map-server": "1.0.0-pre.6", + "@comapeo/map-server": "^1.0.0-pre.7", "@sentry/node": "9.28.0", "@sentry/rollup-plugin": "^3.5.0", "debug": "^4.3.4", @@ -482,9 +482,9 @@ } }, "node_modules/@comapeo/map-server": { - "version": "1.0.0-pre.6", - "resolved": "https://registry.npmjs.org/@comapeo/map-server/-/map-server-1.0.0-pre.6.tgz", - "integrity": "sha512-4gZNkxT02kZuCW5pbpOkIr4xoNXeyV50iuwJ84ZUZwrDrcPmUafCFvfYWI62NQqGgxjafyWsbSoSvdBjO01pVA==", + "version": "1.0.0-pre.7", + "resolved": "https://registry.npmjs.org/@comapeo/map-server/-/map-server-1.0.0-pre.7.tgz", + "integrity": "sha512-aLNbQ66es/m7OiQS8ou0R3pb7dW5J4pf7T2OK280nfjRp2Mvre1oqBfkk/Vj/I2U+oubiKinikGjAil3SDpbGA==", "bundleDependencies": [ "@whatwg-node/server" ], @@ -495,7 +495,7 @@ "p-defer": "^4.0.1", "p-mutex": "^0.1.0", "secret-stream-http": "^1.0.1", - "styled-map-package": "^4.0.1", + "styled-map-package": "^4.1.0", "typebox": "^1.0.61", "typed-event-target": "^3.4.0" } @@ -512,158 +512,11 @@ "node": ">=18.0.0" } }, - "node_modules/@comapeo/map-server/node_modules/@fastify/accept-negotiator": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@fastify/accept-negotiator/-/accept-negotiator-2.0.1.tgz", - "integrity": "sha512-/c/TW2bO/v9JeEgoD/g1G5GxGeCF1Hafdf79WPmUlgYiBXummY0oX3VVq4yFkKKVBKDNlaDUYoab7g38RpPqCQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT" - }, - "node_modules/@comapeo/map-server/node_modules/@fastify/ajv-compiler": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@fastify/ajv-compiler/-/ajv-compiler-4.0.5.tgz", - "integrity": "sha512-KoWKW+MhvfTRWL4qrhUwAAZoaChluo0m0vbiJlGMt2GXvL4LVPQEjt8kSpHI3IBq5Rez8fg+XeH3cneztq+C7A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT", - "dependencies": { - "ajv": "^8.12.0", - "ajv-formats": "^3.0.1", - "fast-uri": "^3.0.0" - } - }, "node_modules/@comapeo/map-server/node_modules/@fastify/busboy": { "version": "3.2.0", "inBundle": true, "license": "MIT" }, - "node_modules/@comapeo/map-server/node_modules/@fastify/error": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@fastify/error/-/error-4.2.0.tgz", - "integrity": "sha512-RSo3sVDXfHskiBZKBPRgnQTtIqpi/7zhJOEmAxCiBcM7d0uwdGdxLlsCaLzGs8v8NnxIRlfG0N51p5yFaOentQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT" - }, - "node_modules/@comapeo/map-server/node_modules/@fastify/fast-json-stringify-compiler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/@fastify/fast-json-stringify-compiler/-/fast-json-stringify-compiler-5.0.3.tgz", - "integrity": "sha512-uik7yYHkLr6fxd8hJSZ8c+xF4WafPK+XzneQDPU+D10r5X19GW8lJcom2YijX2+qtFF1ENJlHXKFM9ouXNJYgQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT", - "dependencies": { - "fast-json-stringify": "^6.0.0" - } - }, - "node_modules/@comapeo/map-server/node_modules/@fastify/merge-json-schemas": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@fastify/merge-json-schemas/-/merge-json-schemas-0.2.1.tgz", - "integrity": "sha512-OA3KGBCy6KtIvLf8DINC5880o5iBlDX4SxzLQS8HorJAbqluzLRn80UXU0bxZn7UOFhFgpRJDasfwn9nG4FG4A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT", - "dependencies": { - "dequal": "^2.0.3" - } - }, - "node_modules/@comapeo/map-server/node_modules/@fastify/send": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@fastify/send/-/send-4.1.0.tgz", - "integrity": "sha512-TMYeQLCBSy2TOFmV95hQWkiTYgC/SEx7vMdV+wnZVX4tt8VBLKzmH8vV9OzJehV0+XBfg+WxPMt5wp+JBUKsVw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT", - "dependencies": { - "@lukeed/ms": "^2.0.2", - "escape-html": "~1.0.3", - "fast-decode-uri-component": "^1.0.1", - "http-errors": "^2.0.0", - "mime": "^3" - } - }, - "node_modules/@comapeo/map-server/node_modules/@fastify/static": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@fastify/static/-/static-8.3.0.tgz", - "integrity": "sha512-yKxviR5PH1OKNnisIzZKmgZSus0r2OZb8qCSbqmw34aolT4g3UlzYfeBRym+HJ1J471CR8e2ldNub4PubD1coA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT", - "dependencies": { - "@fastify/accept-negotiator": "^2.0.0", - "@fastify/send": "^4.0.0", - "content-disposition": "^0.5.4", - "fastify-plugin": "^5.0.0", - "fastq": "^1.17.1", - "glob": "^11.0.0" - } - }, - "node_modules/@comapeo/map-server/node_modules/@isaacs/cliui": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-9.0.0.tgz", - "integrity": "sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==", - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, "node_modules/@comapeo/map-server/node_modules/@whatwg-node/disposablestack": { "version": "0.0.6", "inBundle": true, @@ -728,33 +581,6 @@ "node": ">=18.0.0" } }, - "node_modules/@comapeo/map-server/node_modules/ajv-formats": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", - "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/@comapeo/map-server/node_modules/avvio": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/avvio/-/avvio-9.1.0.tgz", - "integrity": "sha512-fYASnYi600CsH/j9EQov7lECAniYiBFiiAtBNuZYLA2leLe9qOvZzqYHFjtIj6gD2VMoMLP14834LFWvr4IfDw==", - "license": "MIT", - "dependencies": { - "@fastify/error": "^4.0.0", - "fastq": "^1.17.1" - } - }, "node_modules/@comapeo/map-server/node_modules/buffer": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", @@ -791,461 +617,278 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@comapeo/map-server/node_modules/cookie": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.1.1.tgz", - "integrity": "sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==", + "node_modules/@comapeo/map-server/node_modules/is-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", "license": "MIT", "engines": { "node": ">=18" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@comapeo/map-server/node_modules/fast-json-stringify": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-6.3.0.tgz", - "integrity": "sha512-oRCntNDY/329HJPlmdNLIdogNtt6Vyjb1WuT01Soss3slIdyUp8kAcDU3saQTOquEK8KFVfwIIF7FebxUAu+yA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], + "node_modules/@comapeo/map-server/node_modules/open": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", + "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", "license": "MIT", "dependencies": { - "@fastify/merge-json-schemas": "^0.2.0", - "ajv": "^8.12.0", - "ajv-formats": "^3.0.1", - "fast-uri": "^3.0.0", - "json-schema-ref-resolver": "^3.0.0", - "rfdc": "^1.2.0" + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "wsl-utils": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@comapeo/map-server/node_modules/fast-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", - "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/@comapeo/map-server/node_modules/fastify": { - "version": "5.7.4", - "resolved": "https://registry.npmjs.org/fastify/-/fastify-5.7.4.tgz", - "integrity": "sha512-e6l5NsRdaEP8rdD8VR0ErJASeyaRbzXYpmkrpr2SuvuMq6Si3lvsaVy5C+7gLanEkvjpMDzBXWE5HPeb/hgTxA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT", - "dependencies": { - "@fastify/ajv-compiler": "^4.0.5", - "@fastify/error": "^4.0.0", - "@fastify/fast-json-stringify-compiler": "^5.0.0", - "@fastify/proxy-addr": "^5.0.0", - "abstract-logging": "^2.0.1", - "avvio": "^9.0.0", - "fast-json-stringify": "^6.0.0", - "find-my-way": "^9.0.0", - "light-my-request": "^6.0.0", - "pino": "^10.1.0", - "process-warning": "^5.0.0", - "rfdc": "^1.3.1", - "secure-json-parse": "^4.0.0", - "semver": "^7.6.0", - "toad-cache": "^3.7.0" - } - }, - "node_modules/@comapeo/map-server/node_modules/fastify-plugin": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-5.1.0.tgz", - "integrity": "sha512-FAIDA8eovSt5qcDgcBvDuX/v0Cjz0ohGhENZ/wpc3y+oZCY2afZ9Baqql3g/lC+OHRnciQol4ww7tuthOb9idw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT" - }, - "node_modules/@comapeo/map-server/node_modules/find-my-way": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-9.4.0.tgz", - "integrity": "sha512-5Ye4vHsypZRYtS01ob/iwHzGRUDELlsoCftI/OZFhcLs1M0tkGPcXldE80TAZC5yYuJMBPJQQ43UHlqbJWiX2w==", + "node_modules/@comapeo/map-server/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-querystring": "^1.0.0", - "safe-regex2": "^5.0.0" + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" }, "engines": { - "node": ">=20" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@comapeo/map-server/node_modules/glob": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-11.1.0.tgz", - "integrity": "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "license": "BlueOak-1.0.0", + "node_modules/@comapeo/map-server/node_modules/styled-map-package": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/styled-map-package/-/styled-map-package-4.1.0.tgz", + "integrity": "sha512-CJCYKb1RRgi64P2zZT4gsmAo2Tu6/eoxA4zJ/cmLMf9T7amjyGnWomRdPA22p0nrTvYwmPJlDkKw1tAPd3AOfw==", + "bundleDependencies": [ + "yauzl-promise" + ], + "license": "MIT", "dependencies": { - "foreground-child": "^3.3.1", - "jackspeak": "^4.1.1", - "minimatch": "^10.1.1", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^2.0.0" + "@inquirer/prompts": "^6.0.1", + "@mapbox/sphericalmercator": "^1.2.0", + "@maplibre/maplibre-gl-style-spec": "^20.3.1", + "@placemarkio/check-geojson": "^0.1.12", + "@turf/bbox": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@whatwg-node/server": "^0.10.17", + "ansi-diff": "^1.2.0", + "archiver": "^7.0.1", + "buffer-peek-stream": "^1.1.0", + "chalk": "^5.4.1", + "commander": "^12.1.0", + "filter-obj": "^6.1.0", + "into-stream": "^8.0.1", + "is-stream": "^4.0.1", + "itty-router": "^5.0.22", + "ky": "^1.7.5", + "log-symbols": "^7.0.0", + "map-obj": "^5.0.2", + "mbtiles-reader": "^1.0.0", + "open": "^10.1.0", + "ora": "^8.2.0", + "p-event": "^6.0.1", + "p-limit": "^6.2.0", + "pretty-bytes": "^6.1.1", + "pretty-ms": "^9.2.0", + "readable-stream": "^4.7.0", + "temp-dir": "^3.0.0", + "yauzl-promise": "^4.0.0", + "yocto-queue": "^1.1.1" }, "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "smp": "bin/smp.js", + "styled-map-package": "bin/smp.js" } }, - "node_modules/@comapeo/map-server/node_modules/is-stream": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", - "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", + "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/@node-rs/crc32": { + "version": "1.10.6", + "inBundle": true, "license": "MIT", "engines": { - "node": ">=18" + "node": ">= 10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@comapeo/map-server/node_modules/jackspeak": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.2.3.tgz", - "integrity": "sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==", - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^9.0.0" - }, - "engines": { - "node": "20 || >=22" + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "optionalDependencies": { + "@node-rs/crc32-android-arm-eabi": "1.10.6", + "@node-rs/crc32-android-arm64": "1.10.6", + "@node-rs/crc32-darwin-arm64": "1.10.6", + "@node-rs/crc32-darwin-x64": "1.10.6", + "@node-rs/crc32-freebsd-x64": "1.10.6", + "@node-rs/crc32-linux-arm-gnueabihf": "1.10.6", + "@node-rs/crc32-linux-arm64-gnu": "1.10.6", + "@node-rs/crc32-linux-arm64-musl": "1.10.6", + "@node-rs/crc32-linux-x64-gnu": "1.10.6", + "@node-rs/crc32-linux-x64-musl": "1.10.6", + "@node-rs/crc32-wasm32-wasi": "1.10.6", + "@node-rs/crc32-win32-arm64-msvc": "1.10.6", + "@node-rs/crc32-win32-ia32-msvc": "1.10.6", + "@node-rs/crc32-win32-x64-msvc": "1.10.6" } }, - "node_modules/@comapeo/map-server/node_modules/json-schema-ref-resolver": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/json-schema-ref-resolver/-/json-schema-ref-resolver-3.0.0.tgz", - "integrity": "sha512-hOrZIVL5jyYFjzk7+y7n5JDzGlU8rfWDuYyHwGa2WA8/pcmMHezp2xsVwxrebD/Q9t8Nc5DboieySDpCp4WG4A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } + "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/@node-rs/crc32-linux-x64-gnu": { + "version": "1.10.6", + "cpu": [ + "x64" ], + "inBundle": true, "license": "MIT", - "dependencies": { - "dequal": "^2.0.3" - } - }, - "node_modules/@comapeo/map-server/node_modules/light-my-request": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/light-my-request/-/light-my-request-6.6.0.tgz", - "integrity": "sha512-CHYbu8RtboSIoVsHZ6Ye4cj4Aw/yg2oAFimlF7mNvfDV192LR7nDiKtSIfCuLT7KokPSTn/9kfVLm5OGN0A28A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } + "optional": true, + "os": [ + "linux" ], - "license": "BSD-3-Clause", - "dependencies": { - "cookie": "^1.0.1", - "process-warning": "^4.0.0", - "set-cookie-parser": "^2.6.0" + "engines": { + "node": ">= 10" } }, - "node_modules/@comapeo/map-server/node_modules/light-my-request/node_modules/process-warning": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-4.0.1.tgz", - "integrity": "sha512-3c2LzQ3rY9d0hc1emcsHhfT9Jwz0cChib/QN89oME2R451w5fy3f0afAhERFZAwrbDU43wk12d0ORBpDVME50Q==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } + "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/@node-rs/crc32-linux-x64-musl": { + "version": "1.10.6", + "cpu": [ + "x64" + ], + "inBundle": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" ], - "license": "MIT" - }, - "node_modules/@comapeo/map-server/node_modules/lru-cache": { - "version": "11.2.6", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", - "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", - "license": "BlueOak-1.0.0", "engines": { - "node": "20 || >=22" + "node": ">= 10" } }, - "node_modules/@comapeo/map-server/node_modules/mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/define-data-property": { + "version": "1.1.4", + "inBundle": true, "license": "MIT", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/@comapeo/map-server/node_modules/minimatch": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.2.tgz", - "integrity": "sha512-fu656aJ0n2kcXwsnwnv9g24tkU5uSmOlTjd6WyyaKm2Z+h1qmY6bAjrcaIxF/BslFqbZ8UBtbJi7KgQOZD2PTw==", - "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/brace-expansion": "^5.0.1" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" }, "engines": { - "node": "20 || >=22" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@comapeo/map-server/node_modules/open": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", - "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", + "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/define-properties": { + "version": "1.2.1", + "inBundle": true, "license": "MIT", "dependencies": { - "default-browser": "^5.2.1", - "define-lazy-prop": "^3.0.0", - "is-inside-container": "^1.0.0", - "wsl-utils": "^0.1.0" + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" }, "engines": { - "node": ">=18" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@comapeo/map-server/node_modules/path-scurry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", - "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", - "license": "BlueOak-1.0.0", + "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/es-define-property": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/es-errors": { + "version": "1.3.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/globalthis": { + "version": "1.0.4", + "inBundle": true, + "license": "MIT", "dependencies": { - "lru-cache": "^11.0.0", - "minipass": "^7.1.2" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { - "node": "20 || >=22" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@comapeo/map-server/node_modules/pino": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/pino/-/pino-10.3.1.tgz", - "integrity": "sha512-r34yH/GlQpKZbU1BvFFqOjhISRo1MNx1tWYsYvmj6KIRHSPMT2+yHOEb1SG6NMvRoHRF0a07kCOox/9yakl1vg==", + "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/gopd": { + "version": "1.2.0", + "inBundle": true, "license": "MIT", - "dependencies": { - "@pinojs/redact": "^0.4.0", - "atomic-sleep": "^1.0.0", - "on-exit-leak-free": "^2.1.0", - "pino-abstract-transport": "^3.0.0", - "pino-std-serializers": "^7.0.0", - "process-warning": "^5.0.0", - "quick-format-unescaped": "^4.0.3", - "real-require": "^0.2.0", - "safe-stable-stringify": "^2.3.1", - "sonic-boom": "^4.0.1", - "thread-stream": "^4.0.0" + "engines": { + "node": ">= 0.4" }, - "bin": { - "pino": "bin.js" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@comapeo/map-server/node_modules/pino-abstract-transport": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-3.0.0.tgz", - "integrity": "sha512-wlfUczU+n7Hy/Ha5j9a/gZNy7We5+cXp8YL+X+PG8S0KXxw7n/JXA3c46Y0zQznIJ83URJiwy7Lh56WLokNuxg==", + "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/has-property-descriptors": { + "version": "1.0.2", + "inBundle": true, "license": "MIT", "dependencies": { - "split2": "^4.0.0" + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@comapeo/map-server/node_modules/process-warning": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-5.0.0.tgz", - "integrity": "sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT" - }, - "node_modules/@comapeo/map-server/node_modules/readable-stream": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", - "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/is-it-type": { + "version": "5.1.3", + "inBundle": true, "license": "MIT", "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" + "globalthis": "^1.0.2" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=12" } }, - "node_modules/@comapeo/map-server/node_modules/ret": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.5.0.tgz", - "integrity": "sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw==", + "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/object-keys": { + "version": "1.1.1", + "inBundle": true, "license": "MIT", "engines": { - "node": ">=10" - } - }, - "node_modules/@comapeo/map-server/node_modules/safe-regex2": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-5.0.0.tgz", - "integrity": "sha512-YwJwe5a51WlK7KbOJREPdjNrpViQBI3p4T50lfwPuDhZnE3XGVTlGvi+aolc5+RvxDD6bnUmjVsU9n1eboLUYw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT", - "dependencies": { - "ret": "~0.5.0" + "node": ">= 0.4" } }, - "node_modules/@comapeo/map-server/node_modules/secure-json-parse": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-4.1.0.tgz", - "integrity": "sha512-l4KnYfEyqYJxDwlNVyRfO2E4NTHfMKAWdUuA8J0yve2Dz/E/PdBepY03RvyJpssIpRFwJoCD55wA+mEDs6ByWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/@comapeo/map-server/node_modules/styled-map-package": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/styled-map-package/-/styled-map-package-4.0.1.tgz", - "integrity": "sha512-AC/WT3CvY2gadH7GB2/w2Z+V2sZ7m+9L0AayTXYYfkjbTq1RILlmyqWj9Z2FcABPoU8l+19x2QR1ND+7E9MBDA==", + "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/simple-invariant": { + "version": "2.0.1", + "inBundle": true, "license": "MIT", - "dependencies": { - "@commander-js/extra-typings": "^12.1.0", - "@fastify/static": "^8.3.0", - "@inquirer/prompts": "^6.0.1", - "@mapbox/sphericalmercator": "^1.2.0", - "@maplibre/maplibre-gl-style-spec": "^20.3.1", - "@placemarkio/check-geojson": "^0.1.12", - "@turf/bbox": "^7.2.0", - "@turf/helpers": "^7.2.0", - "@whatwg-node/server": "^0.10.17", - "ansi-diff": "^1.2.0", - "archiver": "^7.0.1", - "buffer-peek-stream": "^1.1.0", - "chalk": "^5.4.1", - "commander": "^12.1.0", - "fastify": "^5.6.2", - "filter-obj": "^6.1.0", - "into-stream": "^8.0.1", - "is-stream": "^4.0.1", - "itty-router": "^5.0.22", - "ky": "^1.7.5", - "log-symbols": "^7.0.0", - "map-obj": "^5.0.2", - "mbtiles-reader": "^1.0.0", - "open": "^10.1.0", - "ora": "^8.2.0", - "p-event": "^6.0.1", - "p-limit": "^6.2.0", - "pretty-bytes": "^6.1.1", - "pretty-ms": "^9.2.0", - "readable-stream": "^4.7.0", - "temp-dir": "^3.0.0", - "yauzl-promise": "^4.0.0", - "yocto-queue": "^1.1.1" - }, - "bin": { - "smp": "bin/smp.js", - "styled-map-package": "bin/smp.js" + "engines": { + "node": ">=10" } }, - "node_modules/@comapeo/map-server/node_modules/thread-stream": { + "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/yauzl-promise": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-4.0.0.tgz", - "integrity": "sha512-4iMVL6HAINXWf1ZKZjIPcz5wYaOdPhtO8ATvZ+Xqp3BTdaqtAwQkNmKORqcIo5YkQqGXq5cwfswDwMqqQNrpJA==", + "inBundle": true, "license": "MIT", "dependencies": { - "real-require": "^0.2.0" + "@node-rs/crc32": "^1.7.0", + "is-it-type": "^5.1.2", + "simple-invariant": "^2.0.1" }, "engines": { - "node": ">=20" + "node": ">=16" } }, "node_modules/@comapeo/map-server/node_modules/tslib": { @@ -1787,22 +1430,6 @@ "fast-json-stringify": "^5.7.0" } }, - "node_modules/@fastify/forwarded": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@fastify/forwarded/-/forwarded-3.0.1.tgz", - "integrity": "sha512-JqDochHFqXs3C3Ml3gOY58zM7OqO9ENqPo0UqAjAjH8L01fRZqwX9iLeX34//kiJubF7r2ZQHtBRU36vONbLlw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT" - }, "node_modules/@fastify/merge-json-schemas": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/@fastify/merge-json-schemas/-/merge-json-schemas-0.1.1.tgz", @@ -1812,35 +1439,6 @@ "fast-deep-equal": "^3.1.3" } }, - "node_modules/@fastify/proxy-addr": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@fastify/proxy-addr/-/proxy-addr-5.1.0.tgz", - "integrity": "sha512-INS+6gh91cLUjB+PVHfu1UqcB76Sqtpyp7bnL+FYojhjygvOPA9ctiD/JDKsyD9Xgu4hUhCSJBPig/w7duNajw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT", - "dependencies": { - "@fastify/forwarded": "^3.0.0", - "ipaddr.js": "^2.1.0" - } - }, - "node_modules/@fastify/proxy-addr/node_modules/ipaddr.js": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.3.0.tgz", - "integrity": "sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==", - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, "node_modules/@fastify/send": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@fastify/send/-/send-2.1.0.tgz", @@ -2146,27 +1744,6 @@ "node": ">=18" } }, - "node_modules/@isaacs/balanced-match": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", - "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", - "license": "MIT", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/@isaacs/brace-expansion": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.1.tgz", - "integrity": "sha512-WMz71T1JS624nWj2n2fnYAuPovhv7EUhk69R6i9dsVyzxt5eM3bjwvgk9L+APE1TRscGysAVMANkB0jh0LQZrQ==", - "license": "MIT", - "dependencies": { - "@isaacs/balanced-match": "^4.0.1" - }, - "engines": { - "node": "20 || >=22" - } - }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -3210,12 +2787,6 @@ "@opentelemetry/api": "^1.1.0" } }, - "node_modules/@pinojs/redact": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@pinojs/redact/-/redact-0.4.0.tgz", - "integrity": "sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg==", - "license": "MIT" - }, "node_modules/@pkgjs/parseargs": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", @@ -5699,15 +5270,6 @@ "node": ">= 0.8" } }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/detect-libc": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", @@ -11676,9 +11238,9 @@ } }, "node_modules/wsl-utils/node_modules/is-wsl": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", - "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", + "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", "license": "MIT", "dependencies": { "is-inside-container": "^1.0.0" diff --git a/src/backend/package.json b/src/backend/package.json index dd9639d270..a0322dae5d 100644 --- a/src/backend/package.json +++ b/src/backend/package.json @@ -17,7 +17,7 @@ "@comapeo/default-categories": "1.0.0", "@comapeo/fallback-smp": "1.0.0", "@comapeo/ipc": "file:../../comapeo-ipc-6.1.0-pre.1.tgz", - "@comapeo/map-server": "1.0.0-pre.6", + "@comapeo/map-server": "^1.0.0-pre.7", "@sentry/node": "9.28.0", "@sentry/rollup-plugin": "^3.5.0", "debug": "^4.3.4", From 63b28e081c1096a302ed8c19b117495c105aab75 Mon Sep 17 00:00:00 2001 From: Cindy Green Date: Tue, 17 Feb 2026 11:30:12 -0500 Subject: [PATCH 21/72] Updates test to match change in map server usage. --- tests/integration/helpers/react.tsx | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/tests/integration/helpers/react.tsx b/tests/integration/helpers/react.tsx index 54b5621c68..4910cd8587 100644 --- a/tests/integration/helpers/react.tsx +++ b/tests/integration/helpers/react.tsx @@ -1,5 +1,4 @@ import {type MapeoClientApi} from '@comapeo/ipc'; -import type {AppRpcApi} from '@comapeo/ipc/client.js'; import {getLocales} from 'expo-localization'; import {Component, type ComponentPropsWithoutRef, type ReactNode} from 'react'; @@ -175,12 +174,11 @@ export function createAppProvidersWrapper({ appUsageMetricsOptOut: () => {}, }); - const mockAppRpc = { - mapServer: { - listen: jest.fn(() => Promise.resolve({localPort: 9999})), - close: jest.fn(() => Promise.resolve()), - }, - } as unknown as AppRpcApi; + const mockMapServerApi = { + getBaseUrl: jest.fn(() => + Promise.resolve(new URL('http://127.0.0.1:9999')), + ), + }; if (activeProjectId) { persistedActiveProjectIdStore.instance.setState({ @@ -195,7 +193,7 @@ export function createAppProvidersWrapper({ Date: Tue, 17 Feb 2026 17:37:10 +0000 Subject: [PATCH 22/72] fix core-react tarball install --- ...peo-core-react-7.3.0-pre.4-MAP-SHARING.tgz | Bin 66465 -> 0 bytes ...peo-core-react-7.3.0-pre.5-MAP-SHARING.tgz | Bin 0 -> 66465 bytes package-lock.json | 759 +++++++++++++++++- package.json | 2 +- 4 files changed, 756 insertions(+), 5 deletions(-) delete mode 100644 comapeo-core-react-7.3.0-pre.4-MAP-SHARING.tgz create mode 100644 comapeo-core-react-7.3.0-pre.5-MAP-SHARING.tgz diff --git a/comapeo-core-react-7.3.0-pre.4-MAP-SHARING.tgz b/comapeo-core-react-7.3.0-pre.4-MAP-SHARING.tgz deleted file mode 100644 index dad66bc2649dd2eb4b26b01346d55370cba8f1dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66465 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%0Aram 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 diff --git a/comapeo-core-react-7.3.0-pre.5-MAP-SHARING.tgz b/comapeo-core-react-7.3.0-pre.5-MAP-SHARING.tgz new file mode 100644 index 0000000000000000000000000000000000000000..02ee01057d0fd3e43274cb33d2b8553e3f1c0767 GIT binary patch literal 66465 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 K1O0;m`hNg}?yxcd literal 0 HcmV?d00001 diff --git a/package-lock.json b/package-lock.json index 635593006a..58966555d9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "hasInstallScript": true, "dependencies": { "@bam.tech/react-native-image-resizer": "3.0.11", - "@comapeo/core-react": "file:comapeo-core-react-7.3.0-pre.4-MAP-SHARING.tgz", + "@comapeo/core-react": "file:comapeo-core-react-7.3.0-pre.5-MAP-SHARING.tgz", "@comapeo/ipc": "file:comapeo-ipc-6.1.0-pre.1.tgz", "@comapeo/nodejs-mobile-react-native": "18.20.4-2", "@expo-google-fonts/rubik": "0.4.2", @@ -189,6 +189,17 @@ } } }, + "node_modules/@augment-vir/common": { + "version": "26.4.0", + "resolved": "https://registry.npmjs.org/@augment-vir/common/-/common-26.4.0.tgz", + "integrity": "sha512-rQoLA+t3bbvs269KvZYKZ76WO7Ofp468mqahsI4RAvPjJaOJ/6lCo49HgvUjnFlv7DoEVbTMfHT3G3+VztNnsA==", + "license": "MIT", + "dependencies": { + "browser-or-node": "^2.1.1", + "run-time-assertions": "^1.0.0", + "type-fest": "^4.12.0" + } + }, "node_modules/@babel/code-frame": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.28.6.tgz", @@ -2641,10 +2652,11 @@ }, "node_modules/@comapeo/core-react": { "version": "7.2.0", - "resolved": "file:comapeo-core-react-7.3.0-pre.4-MAP-SHARING.tgz", - "integrity": "sha512-JCRCrdBxA0440ozo2YdzInT0mbQk/AS6CkfH4PpF1wOBWSiiKccArVfbnqiP2G421wv7sBNL5X4eRmW48b38sg==", + "resolved": "file:comapeo-core-react-7.3.0-pre.5-MAP-SHARING.tgz", + "integrity": "sha512-i+9uo2A2uGUHTVfM+02o924fyIxRhBEXKo4Hsiu9VHtT/7j5zzDFl8WYUa5uKXLloNmAEIh1Jr44eYdwVIVHOQ==", "license": "MIT", "dependencies": { + "@comapeo/map-server": "^1.0.0-pre.7", "ensure-error": "5.0.0", "eventsource-client": "1.2.0" }, @@ -2867,6 +2879,615 @@ "@comapeo/core": "^5.0.0" } }, + "node_modules/@comapeo/map-server": { + "version": "1.0.0-pre.7", + "resolved": "https://registry.npmjs.org/@comapeo/map-server/-/map-server-1.0.0-pre.7.tgz", + "integrity": "sha512-aLNbQ66es/m7OiQS8ou0R3pb7dW5J4pf7T2OK280nfjRp2Mvre1oqBfkk/Vj/I2U+oubiKinikGjAil3SDpbGA==", + "bundleDependencies": [ + "@whatwg-node/server" + ], + "license": "MIT", + "dependencies": { + "@whatwg-node/server": "^0.10.17", + "itty-router": "^5.0.22", + "p-defer": "^4.0.1", + "p-mutex": "^0.1.0", + "secret-stream-http": "^1.0.1", + "styled-map-package": "^4.1.0", + "typebox": "^1.0.61", + "typed-event-target": "^3.4.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/@envelop/instrumentation": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "@whatwg-node/promise-helpers": "^1.2.1", + "tslib": "^2.5.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/@fastify/busboy": { + "version": "3.2.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/@comapeo/map-server/node_modules/@turf/bbox": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-7.3.4.tgz", + "integrity": "sha512-D5ErVWtfQbEPh11yzI69uxqrcJmbPU/9Y59f1uTapgwAwQHQztDWgsYpnL3ns8r1GmPWLP8sGJLVTIk2TZSiYA==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "7.3.4", + "@turf/meta": "7.3.4", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@comapeo/map-server/node_modules/@turf/helpers": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-7.3.4.tgz", + "integrity": "sha512-U/S5qyqgx3WTvg4twaH0WxF3EixoTCfDsmk98g1E3/5e2YKp7JKYZdz0vivsS5/UZLJeZDEElOSFH4pUgp+l7g==", + "license": "MIT", + "dependencies": { + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@comapeo/map-server/node_modules/@turf/meta": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-7.3.4.tgz", + "integrity": "sha512-tlmw9/Hs1p2n0uoHVm1w3ugw1I6L8jv9YZrcdQa4SH5FX5UY0ATrKeIvfA55FlL//PGuYppJp+eyg/0eb4goqw==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "7.3.4", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@comapeo/map-server/node_modules/@whatwg-node/disposablestack": { + "version": "0.0.6", + "inBundle": true, + "license": "MIT", + "dependencies": { + "@whatwg-node/promise-helpers": "^1.0.0", + "tslib": "^2.6.3" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/@whatwg-node/fetch": { + "version": "0.10.13", + "inBundle": true, + "license": "MIT", + "dependencies": { + "@whatwg-node/node-fetch": "^0.8.3", + "urlpattern-polyfill": "^10.0.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/@whatwg-node/node-fetch": { + "version": "0.8.4", + "inBundle": true, + "license": "MIT", + "dependencies": { + "@fastify/busboy": "^3.1.1", + "@whatwg-node/disposablestack": "^0.0.6", + "@whatwg-node/promise-helpers": "^1.3.2", + "tslib": "^2.6.3" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/@whatwg-node/promise-helpers": { + "version": "1.3.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "tslib": "^2.6.3" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/@whatwg-node/server": { + "version": "0.10.17", + "inBundle": true, + "license": "MIT", + "dependencies": { + "@envelop/instrumentation": "^1.0.0", + "@whatwg-node/disposablestack": "^0.0.6", + "@whatwg-node/fetch": "^0.10.13", + "@whatwg-node/promise-helpers": "^1.3.2", + "tslib": "^2.6.3" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@comapeo/map-server/node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@comapeo/map-server/node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@comapeo/map-server/node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "license": "MIT" + }, + "node_modules/@comapeo/map-server/node_modules/is-interactive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", + "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@comapeo/map-server/node_modules/log-symbols": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-7.0.1.tgz", + "integrity": "sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==", + "license": "MIT", + "dependencies": { + "is-unicode-supported": "^2.0.0", + "yoctocolors": "^2.1.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@comapeo/map-server/node_modules/map-obj": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-5.0.2.tgz", + "integrity": "sha512-K6K2NgKnTXimT3779/4KxSvobxOtMmx1LBZ3NwRxT/MDIR3Br/fQ4Q+WCX5QxjyUR8zg5+RV9Tbf2c5pAWTD2A==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@comapeo/map-server/node_modules/open": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", + "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", + "license": "MIT", + "dependencies": { + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "wsl-utils": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@comapeo/map-server/node_modules/ora": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-8.2.0.tgz", + "integrity": "sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==", + "license": "MIT", + "dependencies": { + "chalk": "^5.3.0", + "cli-cursor": "^5.0.0", + "cli-spinners": "^2.9.2", + "is-interactive": "^2.0.0", + "is-unicode-supported": "^2.0.0", + "log-symbols": "^6.0.0", + "stdin-discarder": "^0.2.2", + "string-width": "^7.2.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@comapeo/map-server/node_modules/ora/node_modules/log-symbols": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz", + "integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==", + "license": "MIT", + "dependencies": { + "chalk": "^5.3.0", + "is-unicode-supported": "^1.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@comapeo/map-server/node_modules/ora/node_modules/log-symbols/node_modules/is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@comapeo/map-server/node_modules/p-limit": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-6.2.0.tgz", + "integrity": "sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.1.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@comapeo/map-server/node_modules/pretty-bytes": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-6.1.1.tgz", + "integrity": "sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==", + "license": "MIT", + "engines": { + "node": "^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@comapeo/map-server/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@comapeo/map-server/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@comapeo/map-server/node_modules/styled-map-package": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/styled-map-package/-/styled-map-package-4.1.0.tgz", + "integrity": "sha512-CJCYKb1RRgi64P2zZT4gsmAo2Tu6/eoxA4zJ/cmLMf9T7amjyGnWomRdPA22p0nrTvYwmPJlDkKw1tAPd3AOfw==", + "bundleDependencies": [ + "yauzl-promise" + ], + "license": "MIT", + "dependencies": { + "@inquirer/prompts": "^6.0.1", + "@mapbox/sphericalmercator": "^1.2.0", + "@maplibre/maplibre-gl-style-spec": "^20.3.1", + "@placemarkio/check-geojson": "^0.1.12", + "@turf/bbox": "^7.2.0", + "@turf/helpers": "^7.2.0", + "@whatwg-node/server": "^0.10.17", + "ansi-diff": "^1.2.0", + "archiver": "^7.0.1", + "buffer-peek-stream": "^1.1.0", + "chalk": "^5.4.1", + "commander": "^12.1.0", + "filter-obj": "^6.1.0", + "into-stream": "^8.0.1", + "is-stream": "^4.0.1", + "itty-router": "^5.0.22", + "ky": "^1.7.5", + "log-symbols": "^7.0.0", + "map-obj": "^5.0.2", + "mbtiles-reader": "^1.0.0", + "open": "^10.1.0", + "ora": "^8.2.0", + "p-event": "^6.0.1", + "p-limit": "^6.2.0", + "pretty-bytes": "^6.1.1", + "pretty-ms": "^9.2.0", + "readable-stream": "^4.7.0", + "temp-dir": "^3.0.0", + "yauzl-promise": "^4.0.0", + "yocto-queue": "^1.1.1" + }, + "bin": { + "smp": "bin/smp.js", + "styled-map-package": "bin/smp.js" + } + }, + "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/@node-rs/crc32": { + "version": "1.10.6", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "optionalDependencies": { + "@node-rs/crc32-android-arm-eabi": "1.10.6", + "@node-rs/crc32-android-arm64": "1.10.6", + "@node-rs/crc32-darwin-arm64": "1.10.6", + "@node-rs/crc32-darwin-x64": "1.10.6", + "@node-rs/crc32-freebsd-x64": "1.10.6", + "@node-rs/crc32-linux-arm-gnueabihf": "1.10.6", + "@node-rs/crc32-linux-arm64-gnu": "1.10.6", + "@node-rs/crc32-linux-arm64-musl": "1.10.6", + "@node-rs/crc32-linux-x64-gnu": "1.10.6", + "@node-rs/crc32-linux-x64-musl": "1.10.6", + "@node-rs/crc32-wasm32-wasi": "1.10.6", + "@node-rs/crc32-win32-arm64-msvc": "1.10.6", + "@node-rs/crc32-win32-ia32-msvc": "1.10.6", + "@node-rs/crc32-win32-x64-msvc": "1.10.6" + } + }, + "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/@node-rs/crc32-linux-x64-gnu": { + "version": "1.10.6", + "cpu": [ + "x64" + ], + "inBundle": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/@node-rs/crc32-linux-x64-musl": { + "version": "1.10.6", + "cpu": [ + "x64" + ], + "inBundle": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/define-data-property": { + "version": "1.1.4", + "inBundle": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/define-properties": { + "version": "1.2.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/es-define-property": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/es-errors": { + "version": "1.3.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/globalthis": { + "version": "1.0.4", + "inBundle": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/gopd": { + "version": "1.2.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/has-property-descriptors": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/is-it-type": { + "version": "5.1.3", + "inBundle": true, + "license": "MIT", + "dependencies": { + "globalthis": "^1.0.2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/object-keys": { + "version": "1.1.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/simple-invariant": { + "version": "2.0.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/yauzl-promise": { + "version": "4.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "@node-rs/crc32": "^1.7.0", + "is-it-type": "^5.1.2", + "simple-invariant": "^2.0.1" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@comapeo/map-server/node_modules/temp-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", + "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==", + "license": "MIT", + "engines": { + "node": ">=14.16" + } + }, + "node_modules/@comapeo/map-server/node_modules/tslib": { + "version": "2.8.1", + "inBundle": true, + "license": "0BSD" + }, + "node_modules/@comapeo/map-server/node_modules/urlpattern-polyfill": { + "version": "10.1.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/@comapeo/map-server/node_modules/yocto-queue": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", + "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@comapeo/nodejs-mobile-react-native": { "version": "18.20.4-2", "resolved": "https://registry.npmjs.org/@comapeo/nodejs-mobile-react-native/-/nodejs-mobile-react-native-18.20.4-2.tgz", @@ -12349,6 +12970,12 @@ "node": ">=8" } }, + "node_modules/browser-or-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/browser-or-node/-/browser-or-node-2.1.1.tgz", + "integrity": "sha512-8CVjaLJGuSKMVTxJ2DpBl5XnlNDiT4cQFeuCJJrvJmts9YrTZDizTX7PjC2s6W4x+MBGZeEY6dGMrF04/6Hgqg==", + "license": "MIT" + }, "node_modules/browser-stdout": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", @@ -16372,6 +16999,12 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, + "node_modules/expect-type": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-0.15.0.tgz", + "integrity": "sha512-yWnriYB4e8G54M5/fAFj7rCIBiKs1HAACaY13kCz6Ku0dezjS9aMcfcdVK2X8Tv2tEV1BPz/wKfQ7WA4S/d8aA==", + "license": "Apache-2.0" + }, "node_modules/expect-webdriverio": { "version": "5.3.4", "resolved": "https://registry.npmjs.org/expect-webdriverio/-/expect-webdriverio-5.3.4.tgz", @@ -20595,6 +21228,12 @@ "node": ">=8" } }, + "node_modules/itty-router": { + "version": "5.0.22", + "resolved": "https://registry.npmjs.org/itty-router/-/itty-router-5.0.22.tgz", + "integrity": "sha512-9hmdGErWdYDOurGYxSbqLhy4EFReIwk71hMZTJ5b+zfa2zjMNV1ftFno2b8VjAQvX615gNB8Qxbl9JMRqHnIVA==", + "license": "MIT" + }, "node_modules/jackspeak": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", @@ -26311,6 +26950,33 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/p-mutex": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/p-mutex/-/p-mutex-0.1.0.tgz", + "integrity": "sha512-JXTGUNjI6eLzbtYGhFqmad8Tp5wDBsaGDwrvXuoRzIZ6EyKZr5jlNO9sFe83T6/K//lhyONS4ejCocvGNYJz7Q==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-mutex/node_modules/yocto-queue": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", + "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/p-queue": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-8.1.1.tgz", @@ -29302,6 +29968,35 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/run-time-assertions": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/run-time-assertions/-/run-time-assertions-1.5.2.tgz", + "integrity": "sha512-ccfwvjGuNU14cSSXLlmPRiqEgMfA7w3J2TViO79zMnzXGvE6FJ0dxnhIQGwe5r/vwySOJ4sqZksexo9wyAlA8g==", + "deprecated": "Use @augment-vir/assert instead.", + "license": "(MIT or CC0 1.0)", + "dependencies": { + "@augment-vir/common": "^29.3.0", + "expect-type": "~0.15.0", + "type-fest": "^4.22.0" + } + }, + "node_modules/run-time-assertions/node_modules/@augment-vir/common": { + "version": "29.3.0", + "resolved": "https://registry.npmjs.org/@augment-vir/common/-/common-29.3.0.tgz", + "integrity": "sha512-k3OX35/576thmGUzQUBcCKGarb7ONBfiu07+iV2vxmjl7VoB1rOB0vu8WqgB1ceJq2EMLDPXY18hHpJ9WeTHXQ==", + "license": "MIT", + "dependencies": { + "browser-or-node": "^3.0.0", + "run-time-assertions": "^1.5.1", + "type-fest": "^4.21.0" + } + }, + "node_modules/run-time-assertions/node_modules/browser-or-node": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/browser-or-node/-/browser-or-node-3.0.0.tgz", + "integrity": "sha512-iczIdVJzGEYhP5DqQxYM9Hh7Ztpqqi+CXZpSmX8ALFs9ecXkQIeqRyM6TfxEfMVpwhl3dSuDvxdzzo9sUOIVBQ==", + "license": "MIT" + }, "node_modules/rw": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", @@ -29409,6 +30104,17 @@ "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", "license": "MIT" }, + "node_modules/secret-stream-http": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/secret-stream-http/-/secret-stream-http-1.0.1.tgz", + "integrity": "sha512-vfbvQ/jL7DxptsDqs2NvKqF5tWZ65oShV5IdmaH1+zRrNeV/vxZTf6Gh1Uml/1bCtou7m3jYmcCHCB+ZnHNrBw==", + "license": "MIT", + "dependencies": { + "@hyperswarm/secret-stream": "^6.8.1", + "streamx": "^2.22.1", + "undici": "^6.21.3" + } + }, "node_modules/secure-json-parse": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz", @@ -31691,6 +32397,22 @@ "node": ">= 0.6" } }, + "node_modules/typebox": { + "version": "1.0.81", + "resolved": "https://registry.npmjs.org/typebox/-/typebox-1.0.81.tgz", + "integrity": "sha512-bCslZUmZESHhBn4kHDghzH2oo3qu8m2W89xDLxQHv/aPvY4i81Nd1jvijlBp9wSpsVytDSfSoosbiBAjgsNb2Q==", + "license": "MIT" + }, + "node_modules/typed-event-target": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/typed-event-target/-/typed-event-target-3.4.0.tgz", + "integrity": "sha512-BvSk33Dgo+kubQpbRqiI8A7C5obN0hRydWYya/LTZQoPTCpmB4zScNJSckuKBJDq62A/sCRlZN8ZHgSQxVAKqw==", + "license": "(MIT or CC0 1.0)", + "dependencies": { + "@augment-vir/common": "^26.2.0", + "run-time-assertions": "^1.1.0" + } + }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", @@ -32028,7 +32750,6 @@ "version": "10.0.0", "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz", "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==", - "dev": true, "license": "MIT" }, "node_modules/use-latest-callback": { @@ -33072,6 +33793,36 @@ } } }, + "node_modules/wsl-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", + "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", + "license": "MIT", + "dependencies": { + "is-wsl": "^3.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/wsl-utils/node_modules/is-wsl": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", + "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", + "license": "MIT", + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/xache": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/xache/-/xache-1.2.1.tgz", diff --git a/package.json b/package.json index 71967aeb60..5378ea9458 100644 --- a/package.json +++ b/package.json @@ -34,7 +34,7 @@ }, "dependencies": { "@bam.tech/react-native-image-resizer": "3.0.11", - "@comapeo/core-react": "file:comapeo-core-react-7.3.0-pre.4-MAP-SHARING.tgz", + "@comapeo/core-react": "file:comapeo-core-react-7.3.0-pre.5-MAP-SHARING.tgz", "@comapeo/ipc": "file:comapeo-ipc-6.1.0-pre.1.tgz", "@comapeo/nodejs-mobile-react-native": "18.20.4-2", "@expo-google-fonts/rubik": "0.4.2", From 1b8dd47181b9565f9d922579c073e1ac58654e8c Mon Sep 17 00:00:00 2001 From: Cindy Green Date: Tue, 17 Feb 2026 13:16:59 -0500 Subject: [PATCH 23/72] Update package lock --- package-lock.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package-lock.json b/package-lock.json index 58966555d9..3769397085 100644 --- a/package-lock.json +++ b/package-lock.json @@ -32750,6 +32750,7 @@ "version": "10.0.0", "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz", "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==", + "dev": true, "license": "MIT" }, "node_modules/use-latest-callback": { From 83477c8d3039d7a33c2d1331164b1e913fdf7f88 Mon Sep 17 00:00:00 2001 From: Gregor MacLennan Date: Mon, 23 Feb 2026 15:17:06 +0000 Subject: [PATCH 24/72] add patch for large map uploads --- patches/expo+54.0.33.patch | 226 +++++++++++++++++++++++++++++++++++++ 1 file changed, 226 insertions(+) create mode 100644 patches/expo+54.0.33.patch diff --git a/patches/expo+54.0.33.patch b/patches/expo+54.0.33.patch new file mode 100644 index 0000000000..e8647eecfb --- /dev/null +++ b/patches/expo+54.0.33.patch @@ -0,0 +1,226 @@ +diff --git a/node_modules/expo/android/build.gradle b/node_modules/expo/android/build.gradle +index e294b59..1dc1afc 100644 +--- a/node_modules/expo/android/build.gradle ++++ b/node_modules/expo/android/build.gradle +@@ -76,6 +76,15 @@ android { + + dependencies { dependencyHandler -> + implementation 'com.facebook.react:react-android' ++ // expo-file-system is always present at runtime (it's a direct dependency of the expo package). ++ // compileOnly gives us type-safe access to FileSystemPath without adding a runtime dependency. ++ // Use findProject for source builds, fall back to Maven publication for prebuilt. ++ def expoFileSystem = rootProject.findProject(':expo-file-system') ++ if (expoFileSystem != null) { ++ compileOnly project(':expo-file-system') ++ } else { ++ compileOnly 'host.exp.exponent:expo.modules.filesystem:19.0.21' ++ } + + testImplementation 'junit:junit:4.13.2' + testImplementation 'androidx.test:core:1.5.0' +diff --git a/node_modules/expo/android/src/main/java/expo/modules/fetch/ExpoFetchModule.kt b/node_modules/expo/android/src/main/java/expo/modules/fetch/ExpoFetchModule.kt +index 7c23ce4..ade8a01 100644 +--- a/node_modules/expo/android/src/main/java/expo/modules/fetch/ExpoFetchModule.kt ++++ b/node_modules/expo/android/src/main/java/expo/modules/fetch/ExpoFetchModule.kt +@@ -8,6 +8,7 @@ import com.facebook.react.modules.network.CookieJarContainer + import com.facebook.react.modules.network.ForwardingCookieHandler + import com.facebook.react.modules.network.OkHttpClientProvider + import expo.modules.core.errors.ModuleDestroyedException ++import expo.modules.filesystem.FileSystemFile + import expo.modules.kotlin.Promise + import expo.modules.kotlin.exception.Exceptions + import expo.modules.kotlin.exception.toCodedException +@@ -123,6 +124,28 @@ class ExpoFetchModule : Module() { + requestBody: ByteArray?, + promise: Promise -> + request.start(client, url, requestInit, requestBody) ++ request.response.waitForStates( ++ listOf( ++ ResponseState.RESPONSE_RECEIVED, ++ ResponseState.ERROR_RECEIVED ++ ) ++ ) { state -> ++ Log.d(TAG, "Request completed with state: $state") ++ if (state == ResponseState.RESPONSE_RECEIVED) { ++ promise.resolve() ++ } else if (state == ResponseState.ERROR_RECEIVED) { ++ promise.reject(request.response.error?.toCodedException() ?: FetchUnknownException()) ++ } ++ } ++ } ++ ++ AsyncFunction("startWithFile") { ++ request: NativeRequest, ++ url: URL, ++ requestInit: NativeRequestInit, ++ file: FileSystemFile, ++ promise: Promise -> ++ request.startWithFile(client, url, requestInit, file) + request.response.waitForStates( + listOf( + ResponseState.RESPONSE_RECEIVED, +diff --git a/node_modules/expo/android/src/main/java/expo/modules/fetch/NativeRequest.kt b/node_modules/expo/android/src/main/java/expo/modules/fetch/NativeRequest.kt +index b2993ed..3fd54ed 100644 +--- a/node_modules/expo/android/src/main/java/expo/modules/fetch/NativeRequest.kt ++++ b/node_modules/expo/android/src/main/java/expo/modules/fetch/NativeRequest.kt +@@ -2,15 +2,21 @@ + + package expo.modules.fetch + ++import expo.modules.filesystem.FileSystemFile + import expo.modules.kotlin.AppContext + import expo.modules.kotlin.sharedobjects.SharedObject + import okhttp3.Call + import okhttp3.CookieJar ++import okhttp3.MediaType + import okhttp3.MediaType.Companion.toMediaTypeOrNull + import okhttp3.OkHttpClient + import okhttp3.Request ++import okhttp3.RequestBody + import okhttp3.RequestBody.Companion.toRequestBody ++import okio.BufferedSink ++import okio.source + import java.net.URL ++import android.util.Log + + private data class RequestHolder(var request: Request?) + +@@ -22,17 +28,7 @@ internal class NativeRequest(appContext: AppContext, internal val response: Nati + private var task: Call? = null + + fun start(client: OkHttpClient, url: URL, requestInit: NativeRequestInit, requestBody: ByteArray?) { +- val clientBuilder = client.newBuilder() +- if (requestInit.credentials != NativeRequestCredentials.INCLUDE) { +- clientBuilder.cookieJar(CookieJar.NO_COOKIES) +- } +- if (requestInit.redirect != NativeRequestRedirect.FOLLOW) { +- clientBuilder.followRedirects(false) +- clientBuilder.followSslRedirects(false) +- } +- +- val newClient = clientBuilder.build() +- response.redirectMode = requestInit.redirect ++ Log.d("ExpoFetchModule", "Starting request to URL: $url with method: ${requestInit.method}") + + val headers = requestInit.headers.toHeaders() + val mediaType = headers["Content-Type"]?.toMediaTypeOrNull() +@@ -47,6 +43,37 @@ internal class NativeRequest(appContext: AppContext, internal val response: Nati + null + } + } ++ enqueueRequest(client, url, requestInit, reqBody) ++ } ++ ++ fun startWithFile(client: OkHttpClient, url: URL, requestInit: NativeRequestInit, file: FileSystemFile) { ++ val headers = requestInit.headers.toHeaders() ++ val mediaType = headers["Content-Type"]?.toMediaTypeOrNull() ++ val unifiedFile = file.file ++ val reqBody = object : RequestBody() { ++ override fun contentType(): MediaType? = mediaType ++ override fun contentLength(): Long = unifiedFile.length().let { if (it > 0) it else -1L } ++ override fun writeTo(sink: BufferedSink) { ++ unifiedFile.inputStream().use { sink.writeAll(it.source()) } ++ } ++ } ++ enqueueRequest(client, url, requestInit, reqBody) ++ } ++ ++ private fun enqueueRequest(client: OkHttpClient, url: URL, requestInit: NativeRequestInit, reqBody: RequestBody?) { ++ val clientBuilder = client.newBuilder() ++ if (requestInit.credentials != NativeRequestCredentials.INCLUDE) { ++ clientBuilder.cookieJar(CookieJar.NO_COOKIES) ++ } ++ if (requestInit.redirect != NativeRequestRedirect.FOLLOW) { ++ clientBuilder.followRedirects(false) ++ clientBuilder.followSslRedirects(false) ++ } ++ ++ val newClient = clientBuilder.build() ++ response.redirectMode = requestInit.redirect ++ ++ val headers = requestInit.headers.toHeaders() + val request = Request.Builder() + .headers(headers) + .method(requestInit.method, reqBody) +diff --git a/node_modules/expo/src/winter/fetch/NativeRequest.ts b/node_modules/expo/src/winter/fetch/NativeRequest.ts +index bb1444c..bfe76a1 100644 +--- a/node_modules/expo/src/winter/fetch/NativeRequest.ts ++++ b/node_modules/expo/src/winter/fetch/NativeRequest.ts +@@ -1,3 +1,4 @@ ++import type { File } from 'expo-file-system'; + import type { SharedObject } from 'expo-modules-core'; + + export type NativeHeadersType = [string, string][]; +@@ -8,6 +9,11 @@ export declare class NativeRequest extends SharedObject { + requestInit: NativeRequestInit, + requestBody: Uint8Array | null + ): Promise; ++ public startWithFile( ++ url: string, ++ requestInit: NativeRequestInit, ++ file: File ++ ): Promise; + public cancel(): void; + } + +diff --git a/node_modules/expo/src/winter/fetch/fetch.ts b/node_modules/expo/src/winter/fetch/fetch.ts +index ebdda43..9e98456 100644 +--- a/node_modules/expo/src/winter/fetch/fetch.ts ++++ b/node_modules/expo/src/winter/fetch/fetch.ts +@@ -1,3 +1,5 @@ ++import { File } from 'expo-file-system'; ++ + import { ExpoFetchModule } from './ExpoFetchModule'; + import { FetchError } from './FetchErrors'; + import { FetchResponse, type AbortSubscriptionCleanupFunction } from './FetchResponse'; +@@ -5,6 +7,13 @@ import { NativeRequest, NativeRequestInit } from './NativeRequest'; + import { normalizeBodyInitAsync, normalizeHeadersInit, overrideHeaders } from './RequestUtils'; + import type { FetchRequestInit } from './fetch.types'; + ++/** Returns if `body` is a expo-file-system File */ ++const isFileSharedObject = (body: any): body is File => ++ body instanceof File && ++ typeof body.uri === 'string' && ++ (body.uri.startsWith('file://') || body.uri.startsWith('content://')) && ++ typeof body.type === 'string'; ++ + // TODO(@kitten): Do we really want to use our own types for web standards? + export async function fetch(url: string, init?: FetchRequestInit): Promise { + let abortSubscription: AbortSubscriptionCleanupFunction | null = null; +@@ -16,9 +25,18 @@ export async function fetch(url: string, init?: FetchRequestInit): Promise { + request.cancel(); + }); ++ console.log('Starting fetch request with URL:', url, 'and init:', nativeRequestInit); + try { +- await request.start(url, nativeRequestInit, requestBody); ++ if (fileObject != null) { ++ await request.startWithFile(`${url}`, nativeRequestInit, fileObject); ++ } else { ++ await request.start(`${url}`, nativeRequestInit, requestBody); ++ } + } catch (e: unknown) { + if (e instanceof Error) { + throw FetchError.createFromError(e); From 24d371e5b3bca789d1bfdb618494223149981bcc Mon Sep 17 00:00:00 2001 From: Cindy Green Date: Mon, 23 Feb 2026 12:53:39 -0500 Subject: [PATCH 25/72] Adds loading indicator to replace button while map uploads. --- .../screens/BackgroundMaps/BackgroundMaps.tsx | 37 +++++++++++++------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx b/src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx index e0c96d9feb..4a9f81cc9d 100644 --- a/src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx +++ b/src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx @@ -189,6 +189,8 @@ export function BackgroundMapsScreen() { navigate('DeleteCustomMapBottomSheet'); }; + const isUploading = selectFileMutation.isPending; + return ( <> @@ -198,6 +200,7 @@ export function BackgroundMapsScreen() { { removeCustomMapMutation.mutate(undefined, { onError: err => { @@ -221,10 +224,12 @@ export function BackgroundMapsScreen() { function NoMapScreen({ error, onChooseFile, + isUploading, onRemoveMapFile, }: { error: Error | null; onChooseFile: () => void; + isUploading: boolean; onRemoveMapFile: () => void; }) { const {formatMessage: t} = useIntl(); @@ -236,20 +241,28 @@ function NoMapScreen({ {t(m.description2)} - + + )} {t(m.acceptedFileTypes)} From c0073c3793463ab49bf1f30c0d6ee5894bb62220 Mon Sep 17 00:00:00 2001 From: Cindy Green Date: Mon, 23 Feb 2026 18:06:36 -0500 Subject: [PATCH 26/72] Fixes linting errors. --- src/frontend/contexts/AppProviders.tsx | 3 ++- src/frontend/screens/BackgroundMaps/WaitingForMapAccept.tsx | 2 +- src/frontend/sharedComponents/SelectDevice.tsx | 5 ++++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/frontend/contexts/AppProviders.tsx b/src/frontend/contexts/AppProviders.tsx index d47258a3b1..a3363567cd 100644 --- a/src/frontend/contexts/AppProviders.tsx +++ b/src/frontend/contexts/AppProviders.tsx @@ -105,7 +105,8 @@ export const AppProviders = ({ + fetch={fetch} + queryClient={queryClient}> { Sentry.captureException(err); - navigation.replace('ErrorBottomSheet'); + navigation.replace('ErrorBottomSheet', {error: err}); }, }, ); diff --git a/src/frontend/sharedComponents/SelectDevice.tsx b/src/frontend/sharedComponents/SelectDevice.tsx index 52ff60a8a8..aa5a71db61 100644 --- a/src/frontend/sharedComponents/SelectDevice.tsx +++ b/src/frontend/sharedComponents/SelectDevice.tsx @@ -4,6 +4,7 @@ import {ScrollView, StyleSheet, View, TouchableOpacity} from 'react-native'; import * as Sentry from '@sentry/react-native'; import {useManyMembers, useSendMapShare} from '@comapeo/core-react'; +import {toError} from '../utils/errors'; import {type MemberInfo} from '@comapeo/core/dist/member-api'; import {type MapeoClientApi} from '@comapeo/ipc'; import {useLocalDiscoveryState} from '../hooks/useLocalDiscoveryState'; @@ -119,7 +120,9 @@ export const SelectDevice = ({ }); } catch (err) { Sentry.captureException(err); - navigation.navigate('ErrorBottomSheet'); + navigation.navigate('ErrorBottomSheet', { + error: toError(err, 'Failed to send map share'), + }); } } else { navigation.navigate('SelectInviteeRole', { From 91d8c25c9b5db63289a7bfebb5390696f36bdd04 Mon Sep 17 00:00:00 2001 From: Cindy Green Date: Mon, 23 Feb 2026 18:50:05 -0500 Subject: [PATCH 27/72] Updates to the core react tarball correctly --- package-lock.json | 175 +++++++++++++++++-------- src/frontend/contexts/AppProviders.tsx | 3 +- 2 files changed, 122 insertions(+), 56 deletions(-) diff --git a/package-lock.json b/package-lock.json index 49d77bd4f3..8c4fbda142 100644 --- a/package-lock.json +++ b/package-lock.json @@ -229,7 +229,6 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", @@ -2587,7 +2586,6 @@ "resolved": "https://registry.npmjs.org/@comapeo/core/-/core-5.4.1.tgz", "integrity": "sha512-AJ3XwKIkdHQCQ/EZFjPujQ/a1pFRDqtcifJIhxaq/Sl9qdykxg8gT+CQcJ8/v12Flx/7yQ5cvgGWGMGEdbTXKg==", "license": "MIT", - "peer": true, "dependencies": { "@comapeo/fallback-smp": "^1.0.0", "@comapeo/schema": "2.2.0", @@ -2700,7 +2698,6 @@ "integrity": "sha512-EwhOpyXiOEL/lKzHz9AW1msWFNzGc/z+LzeB3/jnFJpxu+th2yqvzsSWas1v9jgs9+xiXJcD5A8CJxAG2TaghQ==", "hasInstallScript": true, "license": "MIT", - "peer": true, "dependencies": { "bindings": "^1.5.0", "prebuild-install": "^7.1.1" @@ -2867,7 +2864,6 @@ "resolved": "file:comapeo-ipc-6.1.0-pre.1.tgz", "integrity": "sha512-Eq6cYrWrXXX3IWzrEaG+lTruI9ZzF/7G99BtWrW3Q3BhsfO4b264Gy/ino63KyPPZKEsLOsc7/0UhE7CgmJSWA==", "license": "MIT", - "peer": true, "dependencies": { "eventemitter3": "^5.0.1", "p-defer": "^4.0.1", @@ -2901,6 +2897,7 @@ }, "node_modules/@comapeo/map-server/node_modules/@envelop/instrumentation": { "version": "1.0.0", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -2913,6 +2910,7 @@ }, "node_modules/@comapeo/map-server/node_modules/@fastify/busboy": { "version": "3.2.0", + "extraneous": true, "inBundle": true, "license": "MIT" }, @@ -2960,6 +2958,7 @@ }, "node_modules/@comapeo/map-server/node_modules/@whatwg-node/disposablestack": { "version": "0.0.6", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -2972,6 +2971,7 @@ }, "node_modules/@comapeo/map-server/node_modules/@whatwg-node/fetch": { "version": "0.10.13", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -2984,6 +2984,7 @@ }, "node_modules/@comapeo/map-server/node_modules/@whatwg-node/node-fetch": { "version": "0.8.4", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -2998,6 +2999,7 @@ }, "node_modules/@comapeo/map-server/node_modules/@whatwg-node/promise-helpers": { "version": "1.3.2", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -3009,6 +3011,7 @@ }, "node_modules/@comapeo/map-server/node_modules/@whatwg-node/server": { "version": "0.10.17", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -3277,6 +3280,7 @@ }, "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/@node-rs/crc32": { "version": "1.10.6", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -3308,9 +3312,9 @@ "cpu": [ "x64" ], + "extraneous": true, "inBundle": true, "license": "MIT", - "optional": true, "os": [ "linux" ], @@ -3323,9 +3327,9 @@ "cpu": [ "x64" ], + "extraneous": true, "inBundle": true, "license": "MIT", - "optional": true, "os": [ "linux" ], @@ -3335,6 +3339,7 @@ }, "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/define-data-property": { "version": "1.1.4", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -3351,6 +3356,7 @@ }, "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/define-properties": { "version": "1.2.1", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -3367,6 +3373,7 @@ }, "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/es-define-property": { "version": "1.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -3375,6 +3382,7 @@ }, "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/es-errors": { "version": "1.3.0", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -3383,6 +3391,7 @@ }, "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/globalthis": { "version": "1.0.4", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -3398,6 +3407,7 @@ }, "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/gopd": { "version": "1.2.0", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -3409,6 +3419,7 @@ }, "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/has-property-descriptors": { "version": "1.0.2", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -3420,6 +3431,7 @@ }, "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/is-it-type": { "version": "5.1.3", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -3431,6 +3443,7 @@ }, "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/object-keys": { "version": "1.1.1", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -3439,6 +3452,7 @@ }, "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/simple-invariant": { "version": "2.0.1", + "extraneous": true, "inBundle": true, "license": "MIT", "engines": { @@ -3447,6 +3461,7 @@ }, "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/yauzl-promise": { "version": "4.0.0", + "extraneous": true, "inBundle": true, "license": "MIT", "dependencies": { @@ -3469,11 +3484,13 @@ }, "node_modules/@comapeo/map-server/node_modules/tslib": { "version": "2.8.1", + "extraneous": true, "inBundle": true, "license": "0BSD" }, "node_modules/@comapeo/map-server/node_modules/urlpattern-polyfill": { "version": "10.1.0", + "extraneous": true, "inBundle": true, "license": "MIT" }, @@ -3534,7 +3551,6 @@ "resolved": "https://registry.npmjs.org/@comapeo/schema/-/schema-2.2.0.tgz", "integrity": "sha512-SbD/Q0BsirAFSj2LETqwgyx/Om62lUVT3R05k9vK5Ld+u+VNn1Xsg2nRblf6Xh9mP1U3rBYJvjjuYQ1lPUYmLA==", "license": "MIT", - "peer": true, "dependencies": { "@comapeo/geometry": "^1.1.1", "compact-encoding": "^2.12.0", @@ -3634,6 +3650,7 @@ "os": [ "aix" ], + "peer": true, "engines": { "node": ">=18" } @@ -3651,6 +3668,7 @@ "os": [ "android" ], + "peer": true, "engines": { "node": ">=18" } @@ -3668,6 +3686,7 @@ "os": [ "android" ], + "peer": true, "engines": { "node": ">=18" } @@ -3685,6 +3704,7 @@ "os": [ "android" ], + "peer": true, "engines": { "node": ">=18" } @@ -3702,6 +3722,7 @@ "os": [ "darwin" ], + "peer": true, "engines": { "node": ">=18" } @@ -3719,6 +3740,7 @@ "os": [ "darwin" ], + "peer": true, "engines": { "node": ">=18" } @@ -3736,6 +3758,7 @@ "os": [ "freebsd" ], + "peer": true, "engines": { "node": ">=18" } @@ -3753,6 +3776,7 @@ "os": [ "freebsd" ], + "peer": true, "engines": { "node": ">=18" } @@ -3770,6 +3794,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -3787,6 +3812,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -3804,6 +3830,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -3821,6 +3848,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -3838,6 +3866,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -3855,6 +3884,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -3872,6 +3902,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -3889,6 +3920,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -3906,6 +3938,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -3923,6 +3956,7 @@ "os": [ "netbsd" ], + "peer": true, "engines": { "node": ">=18" } @@ -3940,6 +3974,7 @@ "os": [ "netbsd" ], + "peer": true, "engines": { "node": ">=18" } @@ -3957,6 +3992,7 @@ "os": [ "openbsd" ], + "peer": true, "engines": { "node": ">=18" } @@ -3974,6 +4010,7 @@ "os": [ "openbsd" ], + "peer": true, "engines": { "node": ">=18" } @@ -3991,6 +4028,7 @@ "os": [ "sunos" ], + "peer": true, "engines": { "node": ">=18" } @@ -4008,6 +4046,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">=18" } @@ -4025,6 +4064,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">=18" } @@ -4042,6 +4082,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">=18" } @@ -7806,7 +7847,6 @@ "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-7.1.20.tgz", "integrity": "sha512-15luFq+35M2IOMHgbTJ0XDkPY7gm3YlR3yQKTuOTOHs+EeAUX71DlUuqcWMRqB0tt+OT6HimDQR7OboTB0N30g==", "license": "MIT", - "peer": true, "dependencies": { "@react-navigation/core": "^7.13.1", "escape-string-regexp": "^4.0.0", @@ -8272,8 +8312,7 @@ "version": "0.33.22", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.33.22.tgz", "integrity": "sha512-auUj4k+f4pyrIVf4GW5UKquSZFHJWri06QgARy9C0t9ZTjJLIuNIrr1yl9bWcJWJ1Gz1vOvYN1D+QPaIlNMVkQ==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@sindresorhus/is": { "version": "0.14.0", @@ -8484,7 +8523,6 @@ "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/core": "^7.21.3", "@svgr/babel-preset": "8.1.0", @@ -8675,7 +8713,6 @@ "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.90.10.tgz", "integrity": "sha512-BKLss9Y8PQ9IUjPYQiv3/Zmlx92uxffUOX8ZZNoQlCIZBJPT5M+GOMQj7xislvVQ6l1BstBjcX0XB/aHfFYVNw==", "license": "MIT", - "peer": true, "dependencies": { "@tanstack/query-core": "5.90.10" }, @@ -9780,7 +9817,6 @@ "integrity": "sha512-O7QnmOXYKVtPrfYzMolrCTfkezCJS9+ljLdKW/+DCvRsc3UAz+sbH6Xcsv7p30+0OwUbeWfUDAQE0vpabZ3QLg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/regexpp": "^4.10.0", "@typescript-eslint/scope-manager": "8.50.0", @@ -9820,7 +9856,6 @@ "integrity": "sha512-6/cmF2piao+f6wSxUsJLZjck7OQsYyRtcOZS02k7XINSNlz93v6emM8WutDQSXnroG2xwYlEVHJI+cPA7CPM3Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.50.0", "@typescript-eslint/types": "8.50.0", @@ -10080,6 +10115,7 @@ "integrity": "sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "tinyrainbow": "^1.2.0" }, @@ -10093,6 +10129,7 @@ "integrity": "sha512-oBO82rEjsxLNJincVhLhaxxZdEtV0EFHMK5Kmx5sJ6H9L183dHECjiefOAdnqpIgT5eZwT04PoggUnW88vOBNQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@vitest/pretty-format": "2.1.9", "magic-string": "^0.30.12", @@ -10108,7 +10145,6 @@ "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/parser": "^7.25.3", "@vue/shared": "3.5.13", @@ -10265,6 +10301,7 @@ "integrity": "sha512-X764hL/nHcbMTepvr7zNF/pSvb4r3twoa5lKllkIIraRDI0cg1/AKHreX24htjHpoA5OLzjEJaydQVJpZ3RzmA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/node": "^20.1.1", "@vitest/snapshot": "^2.1.1", @@ -10304,6 +10341,7 @@ "integrity": "sha512-WanmrLXRMmW3hwsXCm+x618gDsdGwkrxhiirgMC9Ny0g78qt7JLSOvAHKx+dCZtk77QwvFuNpLCd+Nxnszon9Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=18.20.0" }, @@ -10318,6 +10356,7 @@ "integrity": "sha512-WzZhaN834du9wjqT/Go9qPyB7VkzV2bjr6pr06DrIzxIpJq/snWOv96C6OjJu8nmYNRjV769mAxyggBUf+sUoQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/node": "^20.1.0" }, @@ -10331,6 +10370,7 @@ "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -10344,6 +10384,7 @@ "integrity": "sha512-2G2y++21dhj2R7iHAdd0FIzjGwuKZld+7Pl/bTU6YIkrC2ZMbVUjm+luj6A6V34Rv9XfKJDKpTWu9W4Gse1D9g==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "type-fest": "^2.12.2" }, @@ -10360,6 +10401,7 @@ "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", "dev": true, "license": "(MIT OR CC0-1.0)", + "peer": true, "engines": { "node": ">=12.20" }, @@ -10373,6 +10415,7 @@ "integrity": "sha512-Alz+JiaVW15b/Qy6zSmJeYXxvmtMIVpEAg7QDfCWqG9miZSKJYWwgWE3xoSrwYn5kTylUszqb17Pb5wyrj7YFw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/node": "^20.1.0", "@types/ws": "^8.5.3", @@ -10395,6 +10438,7 @@ "integrity": "sha512-HxpLQrFuadfE65dqh+Qc2pdvz18FbsdpdiZogy8VUBtxRanijbOsi4cV84ffGXab8Ownzu+bNBJuJjlTBDX00Q==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/node": "^20.11.30", "@types/sinonjs__fake-timers": "^8.1.5", @@ -10440,6 +10484,7 @@ "integrity": "sha512-zlOJixJUHxeoyfIN/KdM797HwJj/oNgBaEdftgJARqbXt5AVZu18vJ3zljb+wzbY2M0pl7Y4+5OFH06WlDgQ+A==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@wdio/logger": "9.4.4", "@wdio/types": "9.12.6", @@ -10458,6 +10503,7 @@ "integrity": "sha512-WzZhaN834du9wjqT/Go9qPyB7VkzV2bjr6pr06DrIzxIpJq/snWOv96C6OjJu8nmYNRjV769mAxyggBUf+sUoQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/node": "^20.1.0" }, @@ -10499,7 +10545,6 @@ "integrity": "sha512-i38o7wlipLllNrk2hzdDfAmk6nrqm3lR2MtAgWgtHbwznZAKkB84KpkNFfmUXw5Kg3iP1zKlSjwZpKqenuLc+Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=18.20.0" }, @@ -10617,6 +10662,7 @@ "integrity": "sha512-BXx8RXFUW2M4dcO6t5Le95Hi2ZkTQBRsvBQqLekT2rZ6Xmw8ZKZBPf0FptnoftFGg6dYmwnDidYv/0+4PiHjpQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "chalk": "^5.1.2", "loglevel": "^1.6.0", @@ -10633,6 +10679,7 @@ "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -10795,7 +10842,8 @@ "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-9.12.5.tgz", "integrity": "sha512-i+yc0EZtZOh5fFuwHxvcnXeTXk2ZjFICRbcAxTNE0F2Jr4uOydvcAOw4EIIRmb9NWUSPf/bGZAA+4SEXmxmjUA==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@wdio/repl": { "version": "9.4.4", @@ -10803,6 +10851,7 @@ "integrity": "sha512-kchPRhoG/pCn4KhHGiL/ocNhdpR8OkD2e6sANlSUZ4TGBVi86YSIEjc2yXUwLacHknC/EnQk/SFnqd4MsNjGGg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/node": "^20.1.0" }, @@ -11120,6 +11169,7 @@ "integrity": "sha512-JfI4CxBRQCOgToJeQNaZLv+wYNIGyJG1gqrpxUOvkrJvBgdOAmIu3dzlcKP/WviXlcxvwLQF2FK8bQVTjHv0fQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@puppeteer/browsers": "^2.2.0", "@wdio/logger": "9.4.4", @@ -11145,6 +11195,7 @@ "integrity": "sha512-WzZhaN834du9wjqT/Go9qPyB7VkzV2bjr6pr06DrIzxIpJq/snWOv96C6OjJu8nmYNRjV769mAxyggBUf+sUoQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/node": "^20.1.0" }, @@ -11306,7 +11357,6 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -11773,6 +11823,7 @@ "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=0.12.0" } @@ -12600,7 +12651,6 @@ "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.1.5.tgz", "integrity": "sha512-lNImB5KLN+ggw+SYDYvqf/yCizXIyq8U/nWBlx7m4pc4TKS24SB/1WWskzGacon5cVVAC6qUzCYzI/aMYCf4Ng==", "license": "Apache-2.0", - "peer": true, "dependencies": { "bare-path": "^3.0.0" } @@ -13003,7 +13053,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "caniuse-lite": "^1.0.30001726", "electron-to-chromium": "^1.5.173", @@ -13561,6 +13610,7 @@ "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "readdirp": "^4.0.1" }, @@ -13944,7 +13994,6 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.2.tgz", "integrity": "sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==", "license": "MIT", - "peer": true, "engines": { "node": ">=20" } @@ -15798,6 +15847,7 @@ "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", "dev": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "jake": "^10.8.5" }, @@ -16093,6 +16143,7 @@ "dev": true, "hasInstallScript": true, "license": "MIT", + "peer": true, "bin": { "esbuild": "bin/esbuild" }, @@ -16192,7 +16243,6 @@ "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -17012,7 +17062,6 @@ "integrity": "sha512-FU+96C0nqeYTXrJcGLUDB6hPKKaSm1/tVHjFDE4EDHGCYvajAHCC2MBQJ5MomjCmp6lGMz36lDHeZj52LHylyA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@vitest/snapshot": "^3.2.4", "expect": "^30.0.0", @@ -17333,7 +17382,6 @@ "resolved": "https://registry.npmjs.org/expo/-/expo-54.0.33.tgz", "integrity": "sha512-3yOEfAKqo+gqHcV8vKcnq0uA5zxlohnhA3fu4G43likN8ct5ZZ3LjAh9wDdKteEkoad3tFPvwxmXW711S5OHUw==", "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.20.0", "@expo/cli": "54.0.23", @@ -17386,7 +17434,6 @@ "resolved": "https://registry.npmjs.org/expo-application/-/expo-application-7.0.8.tgz", "integrity": "sha512-qFGyxk7VJbrNOQWBbE09XUuGuvkOgFS9QfToaK2FdagM2aQ+x3CvGV2DuVgl/l4ZxPgIf3b/MNh9xHpwSwn74Q==", "license": "MIT", - "peer": true, "peerDependencies": { "expo": "*" } @@ -17396,7 +17443,6 @@ "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-12.0.12.tgz", "integrity": "sha512-CsXFCQbx2fElSMn0lyTdRIyKlSXOal6ilLJd+yeZ6xaC7I9AICQgscY5nj0QcwgA+KYYCCEQEBndMsmj7drOWQ==", "license": "MIT", - "peer": true, "dependencies": { "@expo/image-utils": "^0.8.8", "expo-constants": "~18.0.12" @@ -17578,7 +17624,6 @@ "resolved": "https://registry.npmjs.org/expo-device/-/expo-device-8.0.10.tgz", "integrity": "sha512-jd5BxjaF7382JkDMaC+P04aXXknB2UhWaVx5WiQKA05ugm/8GH5uaz9P9ckWdMKZGQVVEOC8MHaUADoT26KmFA==", "license": "MIT", - "peer": true, "dependencies": { "ua-parser-js": "^0.7.33" }, @@ -17600,7 +17645,6 @@ "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-19.0.21.tgz", "integrity": "sha512-s3DlrDdiscBHtab/6W1osrjGL+C2bvoInPJD7sOwmxfJ5Woynv2oc+Fz1/xVXaE/V7HE/+xrHC/H45tu6lZzzg==", "license": "MIT", - "peer": true, "peerDependencies": { "expo": "*", "react-native": "*" @@ -17679,7 +17723,6 @@ "resolved": "https://registry.npmjs.org/expo-localization/-/expo-localization-17.0.8.tgz", "integrity": "sha512-UrdwklZBDJ+t+ZszMMiE0SXZ2eJxcquCuQcl6EvGHM9K+e6YqKVRQ+w8qE+iIB3H75v2RJy6MHAaLK+Mqeo04g==", "license": "MIT", - "peer": true, "dependencies": { "rtl-detect": "^1.0.2" }, @@ -18206,7 +18249,6 @@ "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-14.0.11.tgz", "integrity": "sha512-ga0q61ny4s/kr4k8JX9hVH69exVSIfcIc19+qZ7gt71Mqtm7xy2c6kwsPTCyhBW2Ro5yXTT8EaZOpuRi35rHbg==", "license": "MIT", - "peer": true, "dependencies": { "fontfaceobserver": "^2.1.0" }, @@ -18795,6 +18837,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "node-domexception": "^1.0.0", "web-streams-polyfill": "^3.0.3" @@ -18844,6 +18887,7 @@ "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", "dev": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "minimatch": "^5.0.1" } @@ -18854,6 +18898,7 @@ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "balanced-match": "^1.0.0" } @@ -18864,6 +18909,7 @@ "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "license": "ISC", + "peer": true, "dependencies": { "brace-expansion": "^2.0.1" }, @@ -19259,6 +19305,7 @@ "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "fetch-blob": "^3.1.2" }, @@ -19379,6 +19426,7 @@ "dev": true, "hasInstallScript": true, "license": "MIT", + "peer": true, "dependencies": { "@wdio/logger": "^9.1.3", "@zip.js/zip.js": "^2.7.53", @@ -19402,6 +19450,7 @@ "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">= 14" } @@ -19412,6 +19461,7 @@ "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">= 12" } @@ -19422,6 +19472,7 @@ "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "agent-base": "^7.1.2", "debug": "4" @@ -19436,6 +19487,7 @@ "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", "dev": true, "license": "ISC", + "peer": true, "engines": { "node": ">=16" } @@ -19446,6 +19498,7 @@ "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "data-uri-to-buffer": "^4.0.0", "fetch-blob": "^3.1.4", @@ -19465,6 +19518,7 @@ "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", "dev": true, "license": "ISC", + "peer": true, "dependencies": { "isexe": "^3.1.1" }, @@ -19648,6 +19702,7 @@ "integrity": "sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "resolve-pkg-maps": "^1.0.0" }, @@ -20248,7 +20303,8 @@ "resolved": "https://registry.npmjs.org/htmlfy/-/htmlfy-0.6.7.tgz", "integrity": "sha512-r8hRd+oIM10lufovN+zr3VKPTYEIvIwqXGucidh2XQufmiw6sbUXFUFjWlfjo3AnefIDTyzykVzQ8IUVuT1peQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/htmlparser2": { "version": "9.1.0", @@ -20645,6 +20701,7 @@ "integrity": "sha512-CmLAZT65GG/v30c+D2Fk8+ceP6pxD6RL+hIUOWAltCmeyEqWYwqu9v76q03OvjyZ3AB0C1Ala2stn1z/rMqGEw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@inquirer/core": "^9.2.1", "@inquirer/prompts": "^6.0.1", @@ -21266,6 +21323,7 @@ "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", "dev": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "async": "^3.2.3", "chalk": "^4.0.2", @@ -21285,7 +21343,6 @@ "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/core": "^29.7.0", "@jest/types": "^29.6.3", @@ -22456,7 +22513,6 @@ "integrity": "sha512-B7qPcEVE3NVkmSJbaYxvv4cHkVW7DQsZz13pUMrfS8z8Q/BuShN+gcTXrUlPiGqM2/t/EEaI030bpxMqY8gMlw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 10.16.0" } @@ -23394,7 +23450,8 @@ "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/lodash.isequal": { "version": "4.5.0", @@ -23415,7 +23472,8 @@ "resolved": "https://registry.npmjs.org/lodash.pickby/-/lodash.pickby-4.6.0.tgz", "integrity": "sha512-AZV+GsS/6ckvPOVQPXSiFFacKvKB4kOQu6ynt9wz0F3LO4R9Ij4K1ddYsIytDpSgLz88JHd9P+oaLeej5/Sl7Q==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/lodash.throttle": { "version": "4.1.1", @@ -23428,7 +23486,8 @@ "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/lodash.zip": { "version": "4.2.0", @@ -27381,7 +27440,8 @@ "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/pause-stream": { "version": "0.0.11", @@ -28444,7 +28504,6 @@ "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -28544,7 +28603,6 @@ "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.81.5.tgz", "integrity": "sha512-1w+/oSjEXZjMqsIvmkCRsOc8UBYv163bTWKTI8+1mxztvQPhCRYGTvZ/PL1w16xXHneIj/SLGfxWg2GWN2uexw==", "license": "MIT", - "peer": true, "dependencies": { "@jest/create-cache-key-function": "^29.7.0", "@react-native/assets-registry": "0.81.5", @@ -28620,7 +28678,6 @@ "resolved": "https://registry.npmjs.org/react-native-device-info/-/react-native-device-info-15.0.1.tgz", "integrity": "sha512-U5waZRXtT3l1SgZpZMlIvMKPTkFZPH8W7Ks6GrJhdH723aUIPxjVer7cRSij1mvQdOAAYFJV/9BDzlC8apG89A==", "license": "MIT", - "peer": true, "peerDependencies": { "react-native": "*" } @@ -28646,7 +28703,6 @@ "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.29.1.tgz", "integrity": "sha512-du3qmv0e3Sm7qsd9SfmHps+AggLiylcBBQ8ztz7WUtd8ZjKs5V3kekAbi9R2W9bRLSg47Ntp4GGMYZOhikQdZA==", "license": "MIT", - "peer": true, "dependencies": { "@egjs/hammerjs": "^2.0.17", "hoist-non-react-statics": "^3.3.0", @@ -28697,7 +28753,6 @@ "integrity": "sha512-YpK4qNUrWvpvPp1Yp2yzHIWeUu9mHnZP6DDEQNgj47cmmkzYa89IMZFrWRjSh1muDeYru6lEgh7FOUAMC/SniQ==", "hasInstallScript": true, "license": "MIT", - "peer": true, "peerDependencies": { "react": "*", "react-native": "*" @@ -28720,7 +28775,6 @@ "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-3.19.5.tgz", "integrity": "sha512-bd4AwIkBAaY4BjrgpSoKjEaRG/tXD756F5nGuiH5IMBSKN8tRdUEA8hWZCyIo/R6/kha/tVSoCqodVUACh7ZWw==", "license": "MIT", - "peer": true, "dependencies": { "@babel/plugin-transform-arrow-functions": "^7.0.0-0", "@babel/plugin-transform-class-properties": "^7.0.0-0", @@ -28756,7 +28810,6 @@ "resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-5.6.2.tgz", "integrity": "sha512-4XGqMNj5qjUTYywJqpdWZ9IG8jgkS3h06sfVjfw5yZQZfWnRFXczi0GnYyFyCc2EBps/qFmoCH8fez//WumdVg==", "license": "MIT", - "peer": true, "peerDependencies": { "react": "*", "react-native": "*" @@ -28776,7 +28829,6 @@ "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-4.18.0.tgz", "integrity": "sha512-mRTLWL7Uc1p/RFNveEIIrhP22oxHduC2ZnLr/2iHwBeYpGXR0rJZ7Bgc0ktxQSHRjWTPT70qc/7yd4r9960PBQ==", "license": "MIT", - "peer": true, "dependencies": { "react-freeze": "^1.0.0", "warn-once": "^0.1.0" @@ -28800,7 +28852,6 @@ "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-15.15.0.tgz", "integrity": "sha512-/Wx6F/IZ88B/GcF88bK8K7ZseJDYt+7WGaiggyzLvTowChQ8BM5idmcd4pK+6QJP6a6DmzL2sfOMukFUn/NArg==", "license": "MIT", - "peer": true, "dependencies": { "css-select": "^5.1.0", "css-tree": "^1.1.3", @@ -29038,7 +29089,6 @@ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -29049,7 +29099,6 @@ "integrity": "sha512-jXkSl3CpvPYEF+p/eGDLB4sPoDX8pKkYvRl9+rR8HxLY0X04vW7hCm1/0zHoUSjPZ3bDa+wXWNTDVIw/R8aDVw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "react-is": "^19.1.0", "scheduler": "^0.26.0" @@ -29071,6 +29120,7 @@ "integrity": "sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/normalize-package-data": "^2.4.1", "normalize-package-data": "^6.0.0", @@ -29090,6 +29140,7 @@ "integrity": "sha512-aNtBq4jR8NawpKJQldrQcSW9y/d+KWH4v24HWkHljOZ7H0av+YTGANBzRh9A5pw7v/bLVsLVPpOhJ7gHNVy8lA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "find-up": "^6.3.0", "read-pkg": "^8.1.0", @@ -29108,6 +29159,7 @@ "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "locate-path": "^7.1.0", "path-exists": "^5.0.0" @@ -29125,6 +29177,7 @@ "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "p-locate": "^6.0.0" }, @@ -29141,6 +29194,7 @@ "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "yocto-queue": "^1.0.0" }, @@ -29157,6 +29211,7 @@ "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "p-limit": "^4.0.0" }, @@ -29173,6 +29228,7 @@ "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } @@ -29183,6 +29239,7 @@ "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12.20" }, @@ -29196,6 +29253,7 @@ "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", "dev": true, "license": "ISC", + "peer": true, "dependencies": { "lru-cache": "^10.0.1" }, @@ -29209,6 +29267,7 @@ "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -29219,6 +29278,7 @@ "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } @@ -29228,7 +29288,8 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, - "license": "ISC" + "license": "ISC", + "peer": true }, "node_modules/read-pkg/node_modules/normalize-package-data": { "version": "6.0.2", @@ -29236,6 +29297,7 @@ "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", "dev": true, "license": "BSD-2-Clause", + "peer": true, "dependencies": { "hosted-git-info": "^7.0.0", "semver": "^7.3.5", @@ -29251,6 +29313,7 @@ "integrity": "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "^7.21.4", "error-ex": "^1.3.2", @@ -29271,6 +29334,7 @@ "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", "dev": true, "license": "(MIT OR CC0-1.0)", + "peer": true, "engines": { "node": ">=14.16" }, @@ -29334,6 +29398,7 @@ "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">= 14.18.0" }, @@ -29395,6 +29460,7 @@ "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "minimatch": "^3.0.5" }, @@ -29711,6 +29777,7 @@ "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", "dev": true, "license": "MIT", + "peer": true, "funding": { "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } @@ -29951,6 +30018,7 @@ "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=0.12.0" } @@ -30020,6 +30088,7 @@ "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", "dev": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "tslib": "^2.1.0" } @@ -31391,7 +31460,6 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", "license": "MIT", - "peer": true, "engines": { "node": ">=18" } @@ -32154,6 +32222,7 @@ "integrity": "sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=14.0.0" } @@ -32334,6 +32403,7 @@ "integrity": "sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "esbuild": "~0.25.0", "get-tsconfig": "^4.7.5" @@ -32440,7 +32510,6 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "devOptional": true, "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -32778,7 +32847,6 @@ "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz", "integrity": "sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==", "license": "MIT", - "peer": true, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } @@ -32975,6 +33043,7 @@ "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">= 8" } @@ -33165,7 +33234,6 @@ "integrity": "sha512-7teaXajOuNdn2UyyKlqMLssJjf0vDEih+Lo+tE/gHOt/P+mB8CinZym4PGtsriZLcyt4xV+Cun3hDmXM+pL26A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/node": "^20.11.30", "@types/sinonjs__fake-timers": "^8.1.5", @@ -34299,7 +34367,6 @@ "integrity": "sha512-OhpzAmVzabPOL6C3A3gpAifqr9MqihV/Msx3gor2b2kviCgcb+HM9SEOpMWwwNp9MRunWnhtAKUoo0AHhjyPPg==", "dev": true, "license": "MIT", - "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } diff --git a/src/frontend/contexts/AppProviders.tsx b/src/frontend/contexts/AppProviders.tsx index a3363567cd..d47258a3b1 100644 --- a/src/frontend/contexts/AppProviders.tsx +++ b/src/frontend/contexts/AppProviders.tsx @@ -105,8 +105,7 @@ export const AppProviders = ({ + fetch={fetch}> Date: Tue, 24 Feb 2026 17:35:59 -0500 Subject: [PATCH 28/72] Updates to do comments to reflect lack of navigation. --- src/frontend/screens/BackgroundMaps/WaitingForMapAccept.tsx | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/frontend/screens/BackgroundMaps/WaitingForMapAccept.tsx b/src/frontend/screens/BackgroundMaps/WaitingForMapAccept.tsx index b645ada806..4f6377c1cb 100644 --- a/src/frontend/screens/BackgroundMaps/WaitingForMapAccept.tsx +++ b/src/frontend/screens/BackgroundMaps/WaitingForMapAccept.tsx @@ -74,12 +74,10 @@ export function WaitingForMapAccept({ if (mapShare.status === 'pending') return; if (mapShare.status === 'downloading' || mapShare.status === 'completed') { - // TODO: Navigate to SendingMap screen once that PR is ready - // navigation.replace('SendingMap', {shareId}); + // TODO: Show sending map UI while downloading navigation.popTo('BackgroundMaps'); } else if (mapShare.status === 'declined') { - // TODO: Navigate to MapDeclineScreen when that PR is ready - // navigation.navigate('MapDeclineScreen', {reason: mapShare.reason}); + // TODO: Show the map decline UI with the reason for decline navigation.popTo('BackgroundMaps'); } else if (mapShare.status === 'canceled') { navigation.popTo('BackgroundMaps'); From 5db017851f0fd0a30b051075e554d2c19f619aa6 Mon Sep 17 00:00:00 2001 From: Cindy Green Date: Wed, 25 Feb 2026 16:08:56 -0500 Subject: [PATCH 29/72] Updates the tarball --- ...peo-core-react-7.3.0-pre.5-MAP-SHARING.tgz | Bin 66465 -> 0 bytes ...peo-core-react-7.3.0-pre.7-MAP-SHARING.tgz | Bin 0 -> 67390 bytes package-lock.json | 181 ++++++------------ package.json | 2 +- 4 files changed, 58 insertions(+), 125 deletions(-) delete mode 100644 comapeo-core-react-7.3.0-pre.5-MAP-SHARING.tgz create mode 100644 comapeo-core-react-7.3.0-pre.7-MAP-SHARING.tgz diff --git a/comapeo-core-react-7.3.0-pre.5-MAP-SHARING.tgz b/comapeo-core-react-7.3.0-pre.5-MAP-SHARING.tgz deleted file mode 100644 index 02ee01057d0fd3e43274cb33d2b8553e3f1c0767..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 66465 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 K1O0;m`hNg}?yxcd diff --git a/comapeo-core-react-7.3.0-pre.7-MAP-SHARING.tgz b/comapeo-core-react-7.3.0-pre.7-MAP-SHARING.tgz new file mode 100644 index 0000000000000000000000000000000000000000..094455952b05f7cd66c9071f87585355c200a14e GIT binary patch literal 67390 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" } @@ -3652,7 +3635,6 @@ "os": [ "android" ], - "peer": true, "engines": { "node": ">=18" } @@ -3670,7 +3652,6 @@ "os": [ "android" ], - "peer": true, "engines": { "node": ">=18" } @@ -3688,7 +3669,6 @@ "os": [ "android" ], - "peer": true, "engines": { "node": ">=18" } @@ -3706,7 +3686,6 @@ "os": [ "darwin" ], - "peer": true, "engines": { "node": ">=18" } @@ -3724,7 +3703,6 @@ "os": [ "darwin" ], - "peer": true, "engines": { "node": ">=18" } @@ -3742,7 +3720,6 @@ "os": [ "freebsd" ], - "peer": true, "engines": { "node": ">=18" } @@ -3760,7 +3737,6 @@ "os": [ "freebsd" ], - "peer": true, "engines": { "node": ">=18" } @@ -3778,7 +3754,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -3796,7 +3771,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -3814,7 +3788,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -3832,7 +3805,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -3850,7 +3822,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -3868,7 +3839,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -3886,7 +3856,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -3904,7 +3873,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -3922,7 +3890,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -3940,7 +3907,6 @@ "os": [ "netbsd" ], - "peer": true, "engines": { "node": ">=18" } @@ -3958,7 +3924,6 @@ "os": [ "netbsd" ], - "peer": true, "engines": { "node": ">=18" } @@ -3976,7 +3941,6 @@ "os": [ "openbsd" ], - "peer": true, "engines": { "node": ">=18" } @@ -3994,7 +3958,6 @@ "os": [ "openbsd" ], - "peer": true, "engines": { "node": ">=18" } @@ -4012,7 +3975,6 @@ "os": [ "sunos" ], - "peer": true, "engines": { "node": ">=18" } @@ -4030,7 +3992,6 @@ "os": [ "win32" ], - "peer": true, "engines": { "node": ">=18" } @@ -4048,7 +4009,6 @@ "os": [ "win32" ], - "peer": true, "engines": { "node": ">=18" } @@ -4066,7 +4026,6 @@ "os": [ "win32" ], - "peer": true, "engines": { "node": ">=18" } @@ -7837,6 +7796,7 @@ "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-7.1.28.tgz", "integrity": "sha512-d1QDn+KNHfHGt3UIwOZvupvdsDdiHYZBEj7+wL2yDVo3tMezamYy60H9s3EnNVE1Ae1ty0trc7F2OKqo/RmsdQ==", "license": "MIT", + "peer": true, "dependencies": { "@react-navigation/core": "^7.14.0", "escape-string-regexp": "^4.0.0", @@ -8300,7 +8260,8 @@ "version": "0.33.22", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.33.22.tgz", "integrity": "sha512-auUj4k+f4pyrIVf4GW5UKquSZFHJWri06QgARy9C0t9ZTjJLIuNIrr1yl9bWcJWJ1Gz1vOvYN1D+QPaIlNMVkQ==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@sindresorhus/is": { "version": "0.14.0", @@ -8511,6 +8472,7 @@ "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/core": "^7.21.3", "@svgr/babel-preset": "8.1.0", @@ -8701,6 +8663,7 @@ "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.90.21.tgz", "integrity": "sha512-0Lu6y5t+tvlTJMTO7oh5NSpJfpg/5D41LlThfepTixPYkJ0sE2Jj0m0f6yYqujBwIXlId87e234+MxG3D3g7kg==", "license": "MIT", + "peer": true, "dependencies": { "@tanstack/query-core": "5.90.20" }, @@ -9806,6 +9769,7 @@ "integrity": "sha512-O7QnmOXYKVtPrfYzMolrCTfkezCJS9+ljLdKW/+DCvRsc3UAz+sbH6Xcsv7p30+0OwUbeWfUDAQE0vpabZ3QLg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/regexpp": "^4.10.0", "@typescript-eslint/scope-manager": "8.50.0", @@ -9845,6 +9809,7 @@ "integrity": "sha512-6/cmF2piao+f6wSxUsJLZjck7OQsYyRtcOZS02k7XINSNlz93v6emM8WutDQSXnroG2xwYlEVHJI+cPA7CPM3Q==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.50.0", "@typescript-eslint/types": "8.50.0", @@ -10104,7 +10069,6 @@ "integrity": "sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "tinyrainbow": "^1.2.0" }, @@ -10118,7 +10082,6 @@ "integrity": "sha512-oBO82rEjsxLNJincVhLhaxxZdEtV0EFHMK5Kmx5sJ6H9L183dHECjiefOAdnqpIgT5eZwT04PoggUnW88vOBNQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@vitest/pretty-format": "2.1.9", "magic-string": "^0.30.12", @@ -10134,6 +10097,7 @@ "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/parser": "^7.25.3", "@vue/shared": "3.5.13", @@ -10290,7 +10254,6 @@ "integrity": "sha512-X764hL/nHcbMTepvr7zNF/pSvb4r3twoa5lKllkIIraRDI0cg1/AKHreX24htjHpoA5OLzjEJaydQVJpZ3RzmA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/node": "^20.1.1", "@vitest/snapshot": "^2.1.1", @@ -10330,7 +10293,6 @@ "integrity": "sha512-WanmrLXRMmW3hwsXCm+x618gDsdGwkrxhiirgMC9Ny0g78qt7JLSOvAHKx+dCZtk77QwvFuNpLCd+Nxnszon9Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=18.20.0" }, @@ -10345,7 +10307,6 @@ "integrity": "sha512-WzZhaN834du9wjqT/Go9qPyB7VkzV2bjr6pr06DrIzxIpJq/snWOv96C6OjJu8nmYNRjV769mAxyggBUf+sUoQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/node": "^20.1.0" }, @@ -10359,7 +10320,6 @@ "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -10373,7 +10333,6 @@ "integrity": "sha512-2G2y++21dhj2R7iHAdd0FIzjGwuKZld+7Pl/bTU6YIkrC2ZMbVUjm+luj6A6V34Rv9XfKJDKpTWu9W4Gse1D9g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "type-fest": "^2.12.2" }, @@ -10390,7 +10349,6 @@ "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", "dev": true, "license": "(MIT OR CC0-1.0)", - "peer": true, "engines": { "node": ">=12.20" }, @@ -10404,7 +10362,6 @@ "integrity": "sha512-Alz+JiaVW15b/Qy6zSmJeYXxvmtMIVpEAg7QDfCWqG9miZSKJYWwgWE3xoSrwYn5kTylUszqb17Pb5wyrj7YFw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/node": "^20.1.0", "@types/ws": "^8.5.3", @@ -10427,7 +10384,6 @@ "integrity": "sha512-HxpLQrFuadfE65dqh+Qc2pdvz18FbsdpdiZogy8VUBtxRanijbOsi4cV84ffGXab8Ownzu+bNBJuJjlTBDX00Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/node": "^20.11.30", "@types/sinonjs__fake-timers": "^8.1.5", @@ -10473,7 +10429,6 @@ "integrity": "sha512-zlOJixJUHxeoyfIN/KdM797HwJj/oNgBaEdftgJARqbXt5AVZu18vJ3zljb+wzbY2M0pl7Y4+5OFH06WlDgQ+A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@wdio/logger": "9.4.4", "@wdio/types": "9.12.6", @@ -10492,7 +10447,6 @@ "integrity": "sha512-WzZhaN834du9wjqT/Go9qPyB7VkzV2bjr6pr06DrIzxIpJq/snWOv96C6OjJu8nmYNRjV769mAxyggBUf+sUoQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/node": "^20.1.0" }, @@ -10534,6 +10488,7 @@ "integrity": "sha512-i38o7wlipLllNrk2hzdDfAmk6nrqm3lR2MtAgWgtHbwznZAKkB84KpkNFfmUXw5Kg3iP1zKlSjwZpKqenuLc+Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=18.20.0" }, @@ -10651,7 +10606,6 @@ "integrity": "sha512-BXx8RXFUW2M4dcO6t5Le95Hi2ZkTQBRsvBQqLekT2rZ6Xmw8ZKZBPf0FptnoftFGg6dYmwnDidYv/0+4PiHjpQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "chalk": "^5.1.2", "loglevel": "^1.6.0", @@ -10668,7 +10622,6 @@ "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -10831,8 +10784,7 @@ "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-9.12.5.tgz", "integrity": "sha512-i+yc0EZtZOh5fFuwHxvcnXeTXk2ZjFICRbcAxTNE0F2Jr4uOydvcAOw4EIIRmb9NWUSPf/bGZAA+4SEXmxmjUA==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@wdio/repl": { "version": "9.4.4", @@ -10840,7 +10792,6 @@ "integrity": "sha512-kchPRhoG/pCn4KhHGiL/ocNhdpR8OkD2e6sANlSUZ4TGBVi86YSIEjc2yXUwLacHknC/EnQk/SFnqd4MsNjGGg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/node": "^20.1.0" }, @@ -11158,7 +11109,6 @@ "integrity": "sha512-JfI4CxBRQCOgToJeQNaZLv+wYNIGyJG1gqrpxUOvkrJvBgdOAmIu3dzlcKP/WviXlcxvwLQF2FK8bQVTjHv0fQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@puppeteer/browsers": "^2.2.0", "@wdio/logger": "9.4.4", @@ -11184,7 +11134,6 @@ "integrity": "sha512-WzZhaN834du9wjqT/Go9qPyB7VkzV2bjr6pr06DrIzxIpJq/snWOv96C6OjJu8nmYNRjV769mAxyggBUf+sUoQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/node": "^20.1.0" }, @@ -11346,6 +11295,7 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -11813,7 +11763,6 @@ "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.12.0" } @@ -12641,6 +12590,7 @@ "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.1.5.tgz", "integrity": "sha512-lNImB5KLN+ggw+SYDYvqf/yCizXIyq8U/nWBlx7m4pc4TKS24SB/1WWskzGacon5cVVAC6qUzCYzI/aMYCf4Ng==", "license": "Apache-2.0", + "peer": true, "dependencies": { "bare-path": "^3.0.0" } @@ -13043,6 +12993,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "caniuse-lite": "^1.0.30001726", "electron-to-chromium": "^1.5.173", @@ -13600,7 +13551,6 @@ "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "readdirp": "^4.0.1" }, @@ -13984,6 +13934,7 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.2.tgz", "integrity": "sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==", "license": "MIT", + "peer": true, "engines": { "node": ">=20" } @@ -15837,7 +15788,6 @@ "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", "dev": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "jake": "^10.8.5" }, @@ -16133,7 +16083,6 @@ "dev": true, "hasInstallScript": true, "license": "MIT", - "peer": true, "bin": { "esbuild": "bin/esbuild" }, @@ -16233,6 +16182,7 @@ "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -17052,6 +17002,7 @@ "integrity": "sha512-FU+96C0nqeYTXrJcGLUDB6hPKKaSm1/tVHjFDE4EDHGCYvajAHCC2MBQJ5MomjCmp6lGMz36lDHeZj52LHylyA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@vitest/snapshot": "^3.2.4", "expect": "^30.0.0", @@ -17372,6 +17323,7 @@ "resolved": "https://registry.npmjs.org/expo/-/expo-54.0.33.tgz", "integrity": "sha512-3yOEfAKqo+gqHcV8vKcnq0uA5zxlohnhA3fu4G43likN8ct5ZZ3LjAh9wDdKteEkoad3tFPvwxmXW711S5OHUw==", "license": "MIT", + "peer": true, "dependencies": { "@babel/runtime": "^7.20.0", "@expo/cli": "54.0.23", @@ -17424,6 +17376,7 @@ "resolved": "https://registry.npmjs.org/expo-application/-/expo-application-7.0.8.tgz", "integrity": "sha512-qFGyxk7VJbrNOQWBbE09XUuGuvkOgFS9QfToaK2FdagM2aQ+x3CvGV2DuVgl/l4ZxPgIf3b/MNh9xHpwSwn74Q==", "license": "MIT", + "peer": true, "peerDependencies": { "expo": "*" } @@ -17433,6 +17386,7 @@ "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-12.0.12.tgz", "integrity": "sha512-CsXFCQbx2fElSMn0lyTdRIyKlSXOal6ilLJd+yeZ6xaC7I9AICQgscY5nj0QcwgA+KYYCCEQEBndMsmj7drOWQ==", "license": "MIT", + "peer": true, "dependencies": { "@expo/image-utils": "^0.8.8", "expo-constants": "~18.0.12" @@ -17614,6 +17568,7 @@ "resolved": "https://registry.npmjs.org/expo-device/-/expo-device-8.0.10.tgz", "integrity": "sha512-jd5BxjaF7382JkDMaC+P04aXXknB2UhWaVx5WiQKA05ugm/8GH5uaz9P9ckWdMKZGQVVEOC8MHaUADoT26KmFA==", "license": "MIT", + "peer": true, "dependencies": { "ua-parser-js": "^0.7.33" }, @@ -17635,6 +17590,7 @@ "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-19.0.21.tgz", "integrity": "sha512-s3DlrDdiscBHtab/6W1osrjGL+C2bvoInPJD7sOwmxfJ5Woynv2oc+Fz1/xVXaE/V7HE/+xrHC/H45tu6lZzzg==", "license": "MIT", + "peer": true, "peerDependencies": { "expo": "*", "react-native": "*" @@ -17713,6 +17669,7 @@ "resolved": "https://registry.npmjs.org/expo-localization/-/expo-localization-17.0.8.tgz", "integrity": "sha512-UrdwklZBDJ+t+ZszMMiE0SXZ2eJxcquCuQcl6EvGHM9K+e6YqKVRQ+w8qE+iIB3H75v2RJy6MHAaLK+Mqeo04g==", "license": "MIT", + "peer": true, "dependencies": { "rtl-detect": "^1.0.2" }, @@ -18251,6 +18208,7 @@ "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-14.0.11.tgz", "integrity": "sha512-ga0q61ny4s/kr4k8JX9hVH69exVSIfcIc19+qZ7gt71Mqtm7xy2c6kwsPTCyhBW2Ro5yXTT8EaZOpuRi35rHbg==", "license": "MIT", + "peer": true, "dependencies": { "fontfaceobserver": "^2.1.0" }, @@ -18839,7 +18797,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "node-domexception": "^1.0.0", "web-streams-polyfill": "^3.0.3" @@ -18889,7 +18846,6 @@ "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", "dev": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "minimatch": "^5.0.1" } @@ -18900,7 +18856,6 @@ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "balanced-match": "^1.0.0" } @@ -18911,7 +18866,6 @@ "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "brace-expansion": "^2.0.1" }, @@ -19307,7 +19261,6 @@ "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "fetch-blob": "^3.1.2" }, @@ -19428,7 +19381,6 @@ "dev": true, "hasInstallScript": true, "license": "MIT", - "peer": true, "dependencies": { "@wdio/logger": "^9.1.3", "@zip.js/zip.js": "^2.7.53", @@ -19452,7 +19404,6 @@ "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 14" } @@ -19463,7 +19414,6 @@ "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 12" } @@ -19474,7 +19424,6 @@ "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "agent-base": "^7.1.2", "debug": "4" @@ -19489,7 +19438,6 @@ "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", "dev": true, "license": "ISC", - "peer": true, "engines": { "node": ">=16" } @@ -19500,7 +19448,6 @@ "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "data-uri-to-buffer": "^4.0.0", "fetch-blob": "^3.1.4", @@ -19520,7 +19467,6 @@ "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "isexe": "^3.1.1" }, @@ -19704,7 +19650,6 @@ "integrity": "sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "resolve-pkg-maps": "^1.0.0" }, @@ -20305,8 +20250,7 @@ "resolved": "https://registry.npmjs.org/htmlfy/-/htmlfy-0.6.7.tgz", "integrity": "sha512-r8hRd+oIM10lufovN+zr3VKPTYEIvIwqXGucidh2XQufmiw6sbUXFUFjWlfjo3AnefIDTyzykVzQ8IUVuT1peQ==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/htmlparser2": { "version": "9.1.0", @@ -20704,7 +20648,6 @@ "integrity": "sha512-CmLAZT65GG/v30c+D2Fk8+ceP6pxD6RL+hIUOWAltCmeyEqWYwqu9v76q03OvjyZ3AB0C1Ala2stn1z/rMqGEw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@inquirer/core": "^9.2.1", "@inquirer/prompts": "^6.0.1", @@ -21326,7 +21269,6 @@ "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", "dev": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "async": "^3.2.3", "chalk": "^4.0.2", @@ -21346,6 +21288,7 @@ "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@jest/core": "^29.7.0", "@jest/types": "^29.6.3", @@ -22516,6 +22459,7 @@ "integrity": "sha512-B7qPcEVE3NVkmSJbaYxvv4cHkVW7DQsZz13pUMrfS8z8Q/BuShN+gcTXrUlPiGqM2/t/EEaI030bpxMqY8gMlw==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">= 10.16.0" } @@ -23453,8 +23397,7 @@ "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/lodash.isequal": { "version": "4.5.0", @@ -23475,8 +23418,7 @@ "resolved": "https://registry.npmjs.org/lodash.pickby/-/lodash.pickby-4.6.0.tgz", "integrity": "sha512-AZV+GsS/6ckvPOVQPXSiFFacKvKB4kOQu6ynt9wz0F3LO4R9Ij4K1ddYsIytDpSgLz88JHd9P+oaLeej5/Sl7Q==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/lodash.throttle": { "version": "4.1.1", @@ -23489,8 +23431,7 @@ "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/lodash.zip": { "version": "4.2.0", @@ -27371,8 +27312,7 @@ "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/pause-stream": { "version": "0.0.11", @@ -28435,6 +28375,7 @@ "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", "license": "MIT", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -28534,6 +28475,7 @@ "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.81.5.tgz", "integrity": "sha512-1w+/oSjEXZjMqsIvmkCRsOc8UBYv163bTWKTI8+1mxztvQPhCRYGTvZ/PL1w16xXHneIj/SLGfxWg2GWN2uexw==", "license": "MIT", + "peer": true, "dependencies": { "@jest/create-cache-key-function": "^29.7.0", "@react-native/assets-registry": "0.81.5", @@ -28609,6 +28551,7 @@ "resolved": "https://registry.npmjs.org/react-native-device-info/-/react-native-device-info-15.0.1.tgz", "integrity": "sha512-U5waZRXtT3l1SgZpZMlIvMKPTkFZPH8W7Ks6GrJhdH723aUIPxjVer7cRSij1mvQdOAAYFJV/9BDzlC8apG89A==", "license": "MIT", + "peer": true, "peerDependencies": { "react-native": "*" } @@ -28634,6 +28577,7 @@ "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.30.0.tgz", "integrity": "sha512-5YsnKHGa0X9C8lb5oCnKm0fLUPM6CRduvUUw2Bav4RIj/C3HcFh4RIUnF8wgG6JQWCL1//gRx4v+LVWgcIQdGA==", "license": "MIT", + "peer": true, "dependencies": { "@egjs/hammerjs": "^2.0.17", "hoist-non-react-statics": "^3.3.0", @@ -28683,6 +28627,7 @@ "resolved": "https://registry.npmjs.org/react-native-nitro-modules/-/react-native-nitro-modules-0.32.1.tgz", "integrity": "sha512-V+Vy76e4fxRxgVGu5Uh3cBPvuFQW8fM1OUKk1mqEA/JawjhX+hxHtBhpfuvNjV0BnV/uXCIg8/eK+rTpB6tqFg==", "license": "MIT", + "peer": true, "peerDependencies": { "react": "*", "react-native": "*" @@ -28705,6 +28650,7 @@ "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-3.19.5.tgz", "integrity": "sha512-bd4AwIkBAaY4BjrgpSoKjEaRG/tXD756F5nGuiH5IMBSKN8tRdUEA8hWZCyIo/R6/kha/tVSoCqodVUACh7ZWw==", "license": "MIT", + "peer": true, "dependencies": { "@babel/plugin-transform-arrow-functions": "^7.0.0-0", "@babel/plugin-transform-class-properties": "^7.0.0-0", @@ -28740,6 +28686,7 @@ "resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-5.6.2.tgz", "integrity": "sha512-4XGqMNj5qjUTYywJqpdWZ9IG8jgkS3h06sfVjfw5yZQZfWnRFXczi0GnYyFyCc2EBps/qFmoCH8fez//WumdVg==", "license": "MIT", + "peer": true, "peerDependencies": { "react": "*", "react-native": "*" @@ -28759,6 +28706,7 @@ "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-4.23.0.tgz", "integrity": "sha512-XhO3aK0UeLpBn4kLecd+J+EDeRRJlI/Ro9Fze06vo1q163VeYtzfU9QS09/VyDFMWR1qxDC1iazCArTPSFFiPw==", "license": "MIT", + "peer": true, "dependencies": { "react-freeze": "^1.0.0", "warn-once": "^0.1.0" @@ -28782,6 +28730,7 @@ "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-15.15.3.tgz", "integrity": "sha512-/k4KYwPBLGcx2f5d4FjE+vCScK7QOX14cl2lIASJ28u4slHHtIhL0SZKU7u9qmRBHxTCKPoPBtN6haT1NENJNA==", "license": "MIT", + "peer": true, "dependencies": { "css-select": "^5.1.0", "css-tree": "^1.1.3", @@ -29019,6 +28968,7 @@ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", "license": "MIT", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -29029,6 +28979,7 @@ "integrity": "sha512-jXkSl3CpvPYEF+p/eGDLB4sPoDX8pKkYvRl9+rR8HxLY0X04vW7hCm1/0zHoUSjPZ3bDa+wXWNTDVIw/R8aDVw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "react-is": "^19.1.0", "scheduler": "^0.26.0" @@ -29050,7 +29001,6 @@ "integrity": "sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/normalize-package-data": "^2.4.1", "normalize-package-data": "^6.0.0", @@ -29070,7 +29020,6 @@ "integrity": "sha512-aNtBq4jR8NawpKJQldrQcSW9y/d+KWH4v24HWkHljOZ7H0av+YTGANBzRh9A5pw7v/bLVsLVPpOhJ7gHNVy8lA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "find-up": "^6.3.0", "read-pkg": "^8.1.0", @@ -29089,7 +29038,6 @@ "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "locate-path": "^7.1.0", "path-exists": "^5.0.0" @@ -29107,7 +29055,6 @@ "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "p-locate": "^6.0.0" }, @@ -29124,7 +29071,6 @@ "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "yocto-queue": "^1.0.0" }, @@ -29141,7 +29087,6 @@ "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "p-limit": "^4.0.0" }, @@ -29158,7 +29103,6 @@ "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } @@ -29169,7 +29113,6 @@ "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12.20" }, @@ -29183,7 +29126,6 @@ "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "lru-cache": "^10.0.1" }, @@ -29197,7 +29139,6 @@ "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -29208,7 +29149,6 @@ "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } @@ -29218,8 +29158,7 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, - "license": "ISC", - "peer": true + "license": "ISC" }, "node_modules/read-pkg/node_modules/normalize-package-data": { "version": "6.0.2", @@ -29227,7 +29166,6 @@ "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", "dev": true, "license": "BSD-2-Clause", - "peer": true, "dependencies": { "hosted-git-info": "^7.0.0", "semver": "^7.3.5", @@ -29243,7 +29181,6 @@ "integrity": "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.21.4", "error-ex": "^1.3.2", @@ -29264,7 +29201,6 @@ "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", "dev": true, "license": "(MIT OR CC0-1.0)", - "peer": true, "engines": { "node": ">=14.16" }, @@ -29328,7 +29264,6 @@ "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 14.18.0" }, @@ -29390,7 +29325,6 @@ "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "minimatch": "^3.0.5" }, @@ -29707,7 +29641,6 @@ "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", "dev": true, "license": "MIT", - "peer": true, "funding": { "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } @@ -29948,7 +29881,6 @@ "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.12.0" } @@ -30018,7 +29950,6 @@ "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", "dev": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "tslib": "^2.1.0" } @@ -31390,6 +31321,7 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", "license": "MIT", + "peer": true, "engines": { "node": ">=18" } @@ -32152,7 +32084,6 @@ "integrity": "sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=14.0.0" } @@ -32333,7 +32264,6 @@ "integrity": "sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "esbuild": "~0.25.0", "get-tsconfig": "^4.7.5" @@ -32440,6 +32370,7 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "devOptional": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -32777,6 +32708,7 @@ "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz", "integrity": "sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==", "license": "MIT", + "peer": true, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } @@ -32973,7 +32905,6 @@ "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 8" } @@ -33164,6 +33095,7 @@ "integrity": "sha512-7teaXajOuNdn2UyyKlqMLssJjf0vDEih+Lo+tE/gHOt/P+mB8CinZym4PGtsriZLcyt4xV+Cun3hDmXM+pL26A==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/node": "^20.11.30", "@types/sinonjs__fake-timers": "^8.1.5", @@ -34297,6 +34229,7 @@ "integrity": "sha512-OhpzAmVzabPOL6C3A3gpAifqr9MqihV/Msx3gor2b2kviCgcb+HM9SEOpMWwwNp9MRunWnhtAKUoo0AHhjyPPg==", "dev": true, "license": "MIT", + "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } diff --git a/package.json b/package.json index bd8026c952..f0c42042f0 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "test:e2e:build": "npm run build:android:e2e && npm run test:e2e:nobuild" }, "dependencies": { - "@comapeo/core-react": "file:comapeo-core-react-7.3.0-pre.5-MAP-SHARING.tgz", + "@comapeo/core-react": "file:comapeo-core-react-7.3.0-pre.7-MAP-SHARING.tgz", "@comapeo/ipc": "file:comapeo-ipc-6.1.0-pre.1.tgz", "@comapeo/nodejs-mobile-react-native": "18.20.4-2", "@expo-google-fonts/rubik": "0.4.2", From 5af5a52bded8321283c7bfadde957213636c3b41 Mon Sep 17 00:00:00 2001 From: Cindy Green Date: Wed, 25 Feb 2026 16:17:32 -0500 Subject: [PATCH 30/72] Updates to new provider. --- src/frontend/contexts/AppProviders.tsx | 38 +++++++++---------- tests/integration/helpers/MapeoApiWrapper.tsx | 14 ++++++- 2 files changed, 31 insertions(+), 21 deletions(-) diff --git a/src/frontend/contexts/AppProviders.tsx b/src/frontend/contexts/AppProviders.tsx index d47258a3b1..1f346c4efd 100644 --- a/src/frontend/contexts/AppProviders.tsx +++ b/src/frontend/contexts/AppProviders.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import {ClientApiProvider, MapServerProvider} from '@comapeo/core-react'; +import {ComapeoCoreProvider} from '@comapeo/core-react'; import {GestureHandlerRootView} from 'react-native-gesture-handler'; import {QueryClient, QueryClientProvider} from '@tanstack/react-query'; import {StyleSheet} from 'react-native'; @@ -102,24 +102,24 @@ export const AppProviders = ({ - - - - - - {children} - - - - - + + + + + {children} + + + + diff --git a/tests/integration/helpers/MapeoApiWrapper.tsx b/tests/integration/helpers/MapeoApiWrapper.tsx index dcf7c3f405..42a1d0bc8d 100644 --- a/tests/integration/helpers/MapeoApiWrapper.tsx +++ b/tests/integration/helpers/MapeoApiWrapper.tsx @@ -1,7 +1,7 @@ import {type MapeoClientApi} from '@comapeo/ipc'; import {QueryClient, QueryClientProvider} from '@tanstack/react-query'; -import {ClientApiProvider} from '@comapeo/core-react'; +import {ComapeoCoreProvider} from '@comapeo/core-react'; import {ReactNode} from 'react'; export const MapeoApiWrapper = ({ @@ -24,9 +24,19 @@ export const MapeoApiWrapper = ({ }, }); + // Mock map server API for tests + const getMapServerBaseUrl = async () => new URL('http://localhost:8080'); + const mockFetch = async () => ({}) as Response; + return ( - {children} + + {children} + ); }; From 68b06eba620242bb63b5b8aba2ef7f897fb3bdc3 Mon Sep 17 00:00:00 2001 From: Cindy Green Date: Mon, 2 Mar 2026 15:35:21 -0500 Subject: [PATCH 31/72] Updates comapeo packages --- package-lock.json | 44 ++++++++++++++++++++++++----------- package.json | 6 ++--- src/backend/package-lock.json | 16 ++++++------- src/backend/package.json | 4 ++-- 4 files changed, 43 insertions(+), 27 deletions(-) diff --git a/package-lock.json b/package-lock.json index e3d7009a16..ca8195ca69 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,8 +9,8 @@ "version": "1.10.0-pre", "hasInstallScript": true, "dependencies": { - "@comapeo/core-react": "file:comapeo-core-react-7.3.0-pre.7-MAP-SHARING.tgz", - "@comapeo/ipc": "file:comapeo-ipc-6.1.0-pre.1.tgz", + "@comapeo/core-react": "9.0.0", + "@comapeo/ipc": "6.1.0", "@comapeo/nodejs-mobile-react-native": "18.20.4-2", "@expo-google-fonts/rubik": "0.4.2", "@formatjs/intl-getcanonicallocales": "3.2.1", @@ -104,7 +104,7 @@ "@babel/preset-env": "7.28.5", "@babel/runtime": "7.28.4", "@comapeo/cloud": "0.3.0", - "@comapeo/core": "5.4.1", + "@comapeo/core": "5.5.0", "@comapeo/schema": "2.2.0", "@digidem/types": "2.3.0", "@eslint-react/eslint-plugin": "1.52.2", @@ -2567,9 +2567,9 @@ "license": "MIT" }, "node_modules/@comapeo/core": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/@comapeo/core/-/core-5.4.1.tgz", - "integrity": "sha512-AJ3XwKIkdHQCQ/EZFjPujQ/a1pFRDqtcifJIhxaq/Sl9qdykxg8gT+CQcJ8/v12Flx/7yQ5cvgGWGMGEdbTXKg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@comapeo/core/-/core-5.5.0.tgz", + "integrity": "sha512-B4L5uz116BsUiXQDx8Y/4BmhNDWT+2CjEKhUdDvPjkNWLlTaj7e6DMb0HCd9ANwBvSFLCN5HngNOzaS7l+UkjQ==", "license": "MIT", "peer": true, "dependencies": { @@ -2636,17 +2636,18 @@ } }, "node_modules/@comapeo/core-react": { - "version": "7.2.0", - "resolved": "file:comapeo-core-react-7.3.0-pre.7-MAP-SHARING.tgz", - "integrity": "sha512-i7zkXOyh6/ayUOU05R5mKDEh+R+Esa32xN1rYHuar+lPZfoUuVFZ8zg/U5C0oaQwX789ubP2VlwPEP1iY2JdaA==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@comapeo/core-react/-/core-react-9.0.0.tgz", + "integrity": "sha512-2NcWQ0T9jM3tnZxcWepNc0XxJdPeqDBR1wSCdRQBMcjqcg2ognaYOR465Ot6m+tpGN0ZZvPK6AAS0dWdVuEOCQ==", "license": "MIT", "dependencies": { "@comapeo/map-server": "^1.0.0-pre.7", "ensure-error": "5.0.0", - "eventsource-client": "1.2.0" + "eventsource-client": "1.2.0", + "type-fest": "5.4.4" }, "peerDependencies": { - "@comapeo/core": "^5.2.1", + "@comapeo/core": "^5.5.0", "@comapeo/ipc": "^6.0.2", "@comapeo/schema": "*", "@tanstack/react-query": "^5", @@ -2665,6 +2666,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@comapeo/core-react/node_modules/type-fest": { + "version": "5.4.4", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-5.4.4.tgz", + "integrity": "sha512-JnTrzGu+zPV3aXIUhnyWJj4z/wigMsdYajGLIYakqyOW1nPllzXEJee0QQbHj+CTIQtXGlAjuK0UY+2xTyjVAw==", + "license": "(MIT OR CC0-1.0)", + "dependencies": { + "tagged-tag": "^1.0.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@comapeo/core/node_modules/@mapeo/sqlite-indexer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@mapeo/sqlite-indexer/-/sqlite-indexer-1.0.2.tgz", @@ -2847,9 +2863,9 @@ } }, "node_modules/@comapeo/ipc": { - "version": "6.0.2", - "resolved": "file:comapeo-ipc-6.1.0-pre.1.tgz", - "integrity": "sha512-Eq6cYrWrXXX3IWzrEaG+lTruI9ZzF/7G99BtWrW3Q3BhsfO4b264Gy/ino63KyPPZKEsLOsc7/0UhE7CgmJSWA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@comapeo/ipc/-/ipc-6.1.0.tgz", + "integrity": "sha512-eYgpU4PTWUeMrOyzhqLxzks15Avfd8puBZYZrJPnoka1XobHa259+UMl80TE3HPXyhO4YuLpf9/M7Juu3+2RSA==", "license": "MIT", "peer": true, "dependencies": { diff --git a/package.json b/package.json index f0c42042f0..d0dadacac7 100644 --- a/package.json +++ b/package.json @@ -33,8 +33,8 @@ "test:e2e:build": "npm run build:android:e2e && npm run test:e2e:nobuild" }, "dependencies": { - "@comapeo/core-react": "file:comapeo-core-react-7.3.0-pre.7-MAP-SHARING.tgz", - "@comapeo/ipc": "file:comapeo-ipc-6.1.0-pre.1.tgz", + "@comapeo/core-react": "9.0.0", + "@comapeo/ipc": "6.1.0", "@comapeo/nodejs-mobile-react-native": "18.20.4-2", "@expo-google-fonts/rubik": "0.4.2", "@formatjs/intl-getcanonicallocales": "3.2.1", @@ -128,7 +128,7 @@ "@babel/preset-env": "7.28.5", "@babel/runtime": "7.28.4", "@comapeo/cloud": "0.3.0", - "@comapeo/core": "5.4.1", + "@comapeo/core": "5.5.0", "@comapeo/schema": "2.2.0", "@digidem/types": "2.3.0", "@eslint-react/eslint-plugin": "1.52.2", diff --git a/src/backend/package-lock.json b/src/backend/package-lock.json index f95a1c2cf7..8f1da42c04 100644 --- a/src/backend/package-lock.json +++ b/src/backend/package-lock.json @@ -10,10 +10,10 @@ "hasInstallScript": true, "license": "MIT", "dependencies": { - "@comapeo/core": "5.4.1", + "@comapeo/core": "5.5.0", "@comapeo/default-categories": "1.0.0", "@comapeo/fallback-smp": "1.0.0", - "@comapeo/ipc": "file:../../comapeo-ipc-6.1.0-pre.1.tgz", + "@comapeo/ipc": "6.1.0", "@comapeo/map-server": "^1.0.0-pre.7", "@sentry/node": "9.28.0", "@sentry/rollup-plugin": "^3.5.0", @@ -316,9 +316,9 @@ } }, "node_modules/@comapeo/core": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/@comapeo/core/-/core-5.4.1.tgz", - "integrity": "sha512-AJ3XwKIkdHQCQ/EZFjPujQ/a1pFRDqtcifJIhxaq/Sl9qdykxg8gT+CQcJ8/v12Flx/7yQ5cvgGWGMGEdbTXKg==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@comapeo/core/-/core-5.5.0.tgz", + "integrity": "sha512-B4L5uz116BsUiXQDx8Y/4BmhNDWT+2CjEKhUdDvPjkNWLlTaj7e6DMb0HCd9ANwBvSFLCN5HngNOzaS7l+UkjQ==", "license": "MIT", "dependencies": { "@comapeo/fallback-smp": "^1.0.0", @@ -465,9 +465,9 @@ } }, "node_modules/@comapeo/ipc": { - "version": "6.0.2", - "resolved": "file:../../comapeo-ipc-6.1.0-pre.1.tgz", - "integrity": "sha512-Eq6cYrWrXXX3IWzrEaG+lTruI9ZzF/7G99BtWrW3Q3BhsfO4b264Gy/ino63KyPPZKEsLOsc7/0UhE7CgmJSWA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/@comapeo/ipc/-/ipc-6.1.0.tgz", + "integrity": "sha512-eYgpU4PTWUeMrOyzhqLxzks15Avfd8puBZYZrJPnoka1XobHa259+UMl80TE3HPXyhO4YuLpf9/M7Juu3+2RSA==", "license": "MIT", "dependencies": { "eventemitter3": "^5.0.1", diff --git a/src/backend/package.json b/src/backend/package.json index a0322dae5d..33530591af 100644 --- a/src/backend/package.json +++ b/src/backend/package.json @@ -13,10 +13,10 @@ "author": "Digital Democracy", "license": "MIT", "dependencies": { - "@comapeo/core": "5.4.1", + "@comapeo/core": "5.5.0", "@comapeo/default-categories": "1.0.0", "@comapeo/fallback-smp": "1.0.0", - "@comapeo/ipc": "file:../../comapeo-ipc-6.1.0-pre.1.tgz", + "@comapeo/ipc": "6.1.0", "@comapeo/map-server": "^1.0.0-pre.7", "@sentry/node": "9.28.0", "@sentry/rollup-plugin": "^3.5.0", From 4ebb9864d8c1cc7a1c2dacb4d11f3cd1d04534ac Mon Sep 17 00:00:00 2001 From: Cindy Green Date: Mon, 2 Mar 2026 15:36:17 -0500 Subject: [PATCH 32/72] Removes unneeded tarballs --- comapeo-core-react-7.3.0-pre.7-MAP-SHARING.tgz | Bin 67390 -> 0 bytes comapeo-ipc-6.1.0-pre.1.tgz | Bin 6603 -> 0 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 comapeo-core-react-7.3.0-pre.7-MAP-SHARING.tgz delete mode 100644 comapeo-ipc-6.1.0-pre.1.tgz diff --git a/comapeo-core-react-7.3.0-pre.7-MAP-SHARING.tgz b/comapeo-core-react-7.3.0-pre.7-MAP-SHARING.tgz deleted file mode 100644 index 094455952b05f7cd66c9071f87585355c200a14e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67390 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 J!*BqO007!J5mEpE From 28c7087a9df5521fd33a07fbd64c8809f76e9a8b Mon Sep 17 00:00:00 2001 From: Cindy Green Date: Mon, 2 Mar 2026 17:14:19 -0500 Subject: [PATCH 33/72] Change back test --- src/frontend/packageJson.test.ts | 22 +------------------ .../sharedComponents/SelectDevice.tsx | 1 - 2 files changed, 1 insertion(+), 22 deletions(-) diff --git a/src/frontend/packageJson.test.ts b/src/frontend/packageJson.test.ts index 16d338791a..6d295290a2 100644 --- a/src/frontend/packageJson.test.ts +++ b/src/frontend/packageJson.test.ts @@ -33,32 +33,12 @@ describe('frontend package.json', () => { )) { const backendVersion = backendMapeoDependencies[dependency]; if (!backendVersion) continue; - // For file: dependencies, compare just the filename (paths may differ) - const isFileVersion = - frontendVersion.startsWith('file:') || - backendVersion.startsWith('file:'); - - const frontendFilename = isFileVersion - ? frontendVersion.replace('file:', '').split('/').pop() - : frontendVersion; - const backendFilename = isFileVersion - ? backendVersion.replace('file:', '').split('/').pop() - : backendVersion; - - if (isFileVersion) { - // eslint-disable-next-line jest/no-conditional-expect - expect(frontendFilename).toBe(backendFilename); - } else { - // eslint-disable-next-line jest/no-conditional-expect - expect(semver.satisfies(frontendVersion, backendVersion)).toBe(true); - } + expect(semver.satisfies(frontendVersion, backendVersion)).toBe(true); } }); it('all front end dependencies use exact version', () => { for (const version of Object.values(allFrontendDependencies)) { - // Skip file: dependencies (local tarballs for pre-release versions) - if (version.startsWith('file:')) continue; const isExact = semver.valid(version) !== null; expect(isExact).toBe(true); } diff --git a/src/frontend/sharedComponents/SelectDevice.tsx b/src/frontend/sharedComponents/SelectDevice.tsx index aa5a71db61..0be666a5b5 100644 --- a/src/frontend/sharedComponents/SelectDevice.tsx +++ b/src/frontend/sharedComponents/SelectDevice.tsx @@ -87,7 +87,6 @@ export const SelectDevice = ({ {`\u2022 ${t(m.sameWifi)}`} {`\u2022 ${t(m.sameVersion)}`} - {/* Divider */} From 38f202083c074935b255ebd50ae418d7b848047f Mon Sep 17 00:00:00 2001 From: Cindy Green Date: Tue, 3 Mar 2026 14:09:18 -0500 Subject: [PATCH 34/72] Updates to non prerelease map server. --- src/backend/package-lock.json | 8 ++++---- src/backend/package.json | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/backend/package-lock.json b/src/backend/package-lock.json index 8f1da42c04..8b21994056 100644 --- a/src/backend/package-lock.json +++ b/src/backend/package-lock.json @@ -14,7 +14,7 @@ "@comapeo/default-categories": "1.0.0", "@comapeo/fallback-smp": "1.0.0", "@comapeo/ipc": "6.1.0", - "@comapeo/map-server": "^1.0.0-pre.7", + "@comapeo/map-server": "1.0.0", "@sentry/node": "9.28.0", "@sentry/rollup-plugin": "^3.5.0", "debug": "^4.3.4", @@ -482,9 +482,9 @@ } }, "node_modules/@comapeo/map-server": { - "version": "1.0.0-pre.7", - "resolved": "https://registry.npmjs.org/@comapeo/map-server/-/map-server-1.0.0-pre.7.tgz", - "integrity": "sha512-aLNbQ66es/m7OiQS8ou0R3pb7dW5J4pf7T2OK280nfjRp2Mvre1oqBfkk/Vj/I2U+oubiKinikGjAil3SDpbGA==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@comapeo/map-server/-/map-server-1.0.0.tgz", + "integrity": "sha512-qdbbnmjk6YEwb/vju986JiVtE5Z4+u1B9qrzgarn+1FF5YxDj1y9I7Us0xYd+E89mXejbxRQVzSYHtrhfQyJug==", "bundleDependencies": [ "@whatwg-node/server" ], diff --git a/src/backend/package.json b/src/backend/package.json index 33530591af..6adb451366 100644 --- a/src/backend/package.json +++ b/src/backend/package.json @@ -17,7 +17,7 @@ "@comapeo/default-categories": "1.0.0", "@comapeo/fallback-smp": "1.0.0", "@comapeo/ipc": "6.1.0", - "@comapeo/map-server": "^1.0.0-pre.7", + "@comapeo/map-server": "1.0.0", "@sentry/node": "9.28.0", "@sentry/rollup-plugin": "^3.5.0", "debug": "^4.3.4", From a5b2ca39f7666733178e6c29f20989e5e696c613 Mon Sep 17 00:00:00 2001 From: Cindy Green Date: Wed, 4 Mar 2026 13:39:41 -0500 Subject: [PATCH 35/72] Updates comapeo dependencies. --- package-lock.json | 98 +++++++++++------------------------ package.json | 4 +- src/backend/package-lock.json | 8 +-- src/backend/package.json | 2 +- 4 files changed, 37 insertions(+), 75 deletions(-) diff --git a/package-lock.json b/package-lock.json index ca8195ca69..7b47edc8c5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,8 +9,8 @@ "version": "1.10.0-pre", "hasInstallScript": true, "dependencies": { - "@comapeo/core-react": "9.0.0", - "@comapeo/ipc": "6.1.0", + "@comapeo/core-react": "9.0.1", + "@comapeo/ipc": "6.2.0", "@comapeo/nodejs-mobile-react-native": "18.20.4-2", "@expo-google-fonts/rubik": "0.4.2", "@formatjs/intl-getcanonicallocales": "3.2.1", @@ -2636,12 +2636,12 @@ } }, "node_modules/@comapeo/core-react": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@comapeo/core-react/-/core-react-9.0.0.tgz", - "integrity": "sha512-2NcWQ0T9jM3tnZxcWepNc0XxJdPeqDBR1wSCdRQBMcjqcg2ognaYOR465Ot6m+tpGN0ZZvPK6AAS0dWdVuEOCQ==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@comapeo/core-react/-/core-react-9.0.1.tgz", + "integrity": "sha512-z/yVWXuqGcDGcEc3Y7WDaQCwD9loEjGc2gdZHKjancKCnpVGYHAOpagPMhsxmDe3Og+TjrsEeJPe0qpZbSOUcQ==", "license": "MIT", "dependencies": { - "@comapeo/map-server": "^1.0.0-pre.7", + "@comapeo/map-server": "1.0.0", "ensure-error": "5.0.0", "eventsource-client": "1.2.0", "type-fest": "5.4.4" @@ -2823,18 +2823,6 @@ } } }, - "node_modules/@comapeo/core/node_modules/map-obj": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-5.0.2.tgz", - "integrity": "sha512-K6K2NgKnTXimT3779/4KxSvobxOtMmx1LBZ3NwRxT/MDIR3Br/fQ4Q+WCX5QxjyUR8zg5+RV9Tbf2c5pAWTD2A==", - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@comapeo/core/node_modules/p-timeout": { "version": "6.1.4", "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.4.tgz", @@ -2863,9 +2851,9 @@ } }, "node_modules/@comapeo/ipc": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@comapeo/ipc/-/ipc-6.1.0.tgz", - "integrity": "sha512-eYgpU4PTWUeMrOyzhqLxzks15Avfd8puBZYZrJPnoka1XobHa259+UMl80TE3HPXyhO4YuLpf9/M7Juu3+2RSA==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@comapeo/ipc/-/ipc-6.2.0.tgz", + "integrity": "sha512-HM1+pyY2Cb9IsHPw9sOPU6NMXUzcF49e21328M7x5FN1FyJhhkFTeNzxee+MRoEFyhsaJ/j/zOclPVwPnoW+VA==", "license": "MIT", "peer": true, "dependencies": { @@ -2881,9 +2869,9 @@ } }, "node_modules/@comapeo/map-server": { - "version": "1.0.0-pre.7", - "resolved": "https://registry.npmjs.org/@comapeo/map-server/-/map-server-1.0.0-pre.7.tgz", - "integrity": "sha512-aLNbQ66es/m7OiQS8ou0R3pb7dW5J4pf7T2OK280nfjRp2Mvre1oqBfkk/Vj/I2U+oubiKinikGjAil3SDpbGA==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@comapeo/map-server/-/map-server-1.0.0.tgz", + "integrity": "sha512-qdbbnmjk6YEwb/vju986JiVtE5Z4+u1B9qrzgarn+1FF5YxDj1y9I7Us0xYd+E89mXejbxRQVzSYHtrhfQyJug==", "bundleDependencies": [ "@whatwg-node/server" ], @@ -2931,19 +2919,6 @@ "url": "https://opencollective.com/turf" } }, - "node_modules/@comapeo/map-server/node_modules/@turf/helpers": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-7.3.4.tgz", - "integrity": "sha512-U/S5qyqgx3WTvg4twaH0WxF3EixoTCfDsmk98g1E3/5e2YKp7JKYZdz0vivsS5/UZLJeZDEElOSFH4pUgp+l7g==", - "license": "MIT", - "dependencies": { - "@types/geojson": "^7946.0.10", - "tslib": "^2.8.1" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, "node_modules/@comapeo/map-server/node_modules/@turf/meta": { "version": "7.3.4", "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-7.3.4.tgz", @@ -3089,18 +3064,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@comapeo/map-server/node_modules/map-obj": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-5.0.2.tgz", - "integrity": "sha512-K6K2NgKnTXimT3779/4KxSvobxOtMmx1LBZ3NwRxT/MDIR3Br/fQ4Q+WCX5QxjyUR8zg5+RV9Tbf2c5pAWTD2A==", - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@comapeo/map-server/node_modules/open": { "version": "10.2.0", "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", @@ -21259,9 +21222,9 @@ } }, "node_modules/itty-router": { - "version": "5.0.22", - "resolved": "https://registry.npmjs.org/itty-router/-/itty-router-5.0.22.tgz", - "integrity": "sha512-9hmdGErWdYDOurGYxSbqLhy4EFReIwk71hMZTJ5b+zfa2zjMNV1ftFno2b8VjAQvX615gNB8Qxbl9JMRqHnIVA==", + "version": "5.0.23", + "resolved": "https://registry.npmjs.org/itty-router/-/itty-router-5.0.23.tgz", + "integrity": "sha512-i49WU+SNPrwOZA4Z61En1RYd5h2Lcqa+5IvCpMrNi4dxymzJK15ozUUnRrWIUAv95Zamd4eJPAot2UvHRrQg7w==", "license": "MIT" }, "node_modules/jackspeak": { @@ -23846,6 +23809,18 @@ "tmpl": "1.0.5" } }, + "node_modules/map-obj": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-5.0.2.tgz", + "integrity": "sha512-K6K2NgKnTXimT3779/4KxSvobxOtMmx1LBZ3NwRxT/MDIR3Br/fQ4Q+WCX5QxjyUR8zg5+RV9Tbf2c5pAWTD2A==", + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/map-stream": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", @@ -31403,18 +31378,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/styled-map-package/node_modules/map-obj": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-5.0.2.tgz", - "integrity": "sha512-K6K2NgKnTXimT3779/4KxSvobxOtMmx1LBZ3NwRxT/MDIR3Br/fQ4Q+WCX5QxjyUR8zg5+RV9Tbf2c5pAWTD2A==", - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/styled-map-package/node_modules/open": { "version": "10.1.2", "resolved": "https://registry.npmjs.org/open/-/open-10.1.2.tgz", @@ -32355,9 +32318,9 @@ } }, "node_modules/typebox": { - "version": "1.0.81", - "resolved": "https://registry.npmjs.org/typebox/-/typebox-1.0.81.tgz", - "integrity": "sha512-bCslZUmZESHhBn4kHDghzH2oo3qu8m2W89xDLxQHv/aPvY4i81Nd1jvijlBp9wSpsVytDSfSoosbiBAjgsNb2Q==", + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/typebox/-/typebox-1.1.5.tgz", + "integrity": "sha512-TBdiM4mSppvWdmRDK5PoocxrMOqGIU9TxmS9zdHH+k8S/+2SIaNlPfMlx3f6hISxma14t2yX7SRySg7+TYYT9w==", "license": "MIT" }, "node_modules/typed-event-target": { @@ -32707,7 +32670,6 @@ "version": "10.0.0", "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz", "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==", - "dev": true, "license": "MIT" }, "node_modules/use-latest-callback": { diff --git a/package.json b/package.json index d0dadacac7..71c21b5779 100644 --- a/package.json +++ b/package.json @@ -33,8 +33,8 @@ "test:e2e:build": "npm run build:android:e2e && npm run test:e2e:nobuild" }, "dependencies": { - "@comapeo/core-react": "9.0.0", - "@comapeo/ipc": "6.1.0", + "@comapeo/core-react": "9.0.1", + "@comapeo/ipc": "6.2.0", "@comapeo/nodejs-mobile-react-native": "18.20.4-2", "@expo-google-fonts/rubik": "0.4.2", "@formatjs/intl-getcanonicallocales": "3.2.1", diff --git a/src/backend/package-lock.json b/src/backend/package-lock.json index 8b21994056..01d540078f 100644 --- a/src/backend/package-lock.json +++ b/src/backend/package-lock.json @@ -13,7 +13,7 @@ "@comapeo/core": "5.5.0", "@comapeo/default-categories": "1.0.0", "@comapeo/fallback-smp": "1.0.0", - "@comapeo/ipc": "6.1.0", + "@comapeo/ipc": "6.2.0", "@comapeo/map-server": "1.0.0", "@sentry/node": "9.28.0", "@sentry/rollup-plugin": "^3.5.0", @@ -465,9 +465,9 @@ } }, "node_modules/@comapeo/ipc": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/@comapeo/ipc/-/ipc-6.1.0.tgz", - "integrity": "sha512-eYgpU4PTWUeMrOyzhqLxzks15Avfd8puBZYZrJPnoka1XobHa259+UMl80TE3HPXyhO4YuLpf9/M7Juu3+2RSA==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/@comapeo/ipc/-/ipc-6.2.0.tgz", + "integrity": "sha512-HM1+pyY2Cb9IsHPw9sOPU6NMXUzcF49e21328M7x5FN1FyJhhkFTeNzxee+MRoEFyhsaJ/j/zOclPVwPnoW+VA==", "license": "MIT", "dependencies": { "eventemitter3": "^5.0.1", diff --git a/src/backend/package.json b/src/backend/package.json index 6adb451366..74b8f274ed 100644 --- a/src/backend/package.json +++ b/src/backend/package.json @@ -16,7 +16,7 @@ "@comapeo/core": "5.5.0", "@comapeo/default-categories": "1.0.0", "@comapeo/fallback-smp": "1.0.0", - "@comapeo/ipc": "6.1.0", + "@comapeo/ipc": "6.2.0", "@comapeo/map-server": "1.0.0", "@sentry/node": "9.28.0", "@sentry/rollup-plugin": "^3.5.0", From f227cef572862541e485f80b53aa2b5a028d6489 Mon Sep 17 00:00:00 2001 From: Cindy Green Date: Wed, 4 Mar 2026 16:31:54 -0500 Subject: [PATCH 36/72] Adds logic for only showing devices for map sharing that have the same project open. Adds explanation if not seeing device. --- messages/en.json | 3 ++ .../sharedComponents/SelectDevice.tsx | 32 +++++++++++++------ 2 files changed, 25 insertions(+), 10 deletions(-) diff --git a/messages/en.json b/messages/en.json index 8d50a2a2f1..5449c6b2c7 100644 --- a/messages/en.json +++ b/messages/en.json @@ -454,6 +454,9 @@ "screen.Settings.ProjectSettings.YourTeam.SelectDevice.notSeeingDevice": { "message": "Not seeing a Device?" }, + "screen.Settings.ProjectSettings.YourTeam.SelectDevice.sameProject": { + "message": "Make sure both devices have the same project open" + }, "screen.Settings.ProjectSettings.YourTeam.SelectDevice.sameVersion": { "message": "Make sure both devices are on the same version of CoMapeo" }, diff --git a/src/frontend/sharedComponents/SelectDevice.tsx b/src/frontend/sharedComponents/SelectDevice.tsx index 0be666a5b5..7642c22fdb 100644 --- a/src/frontend/sharedComponents/SelectDevice.tsx +++ b/src/frontend/sharedComponents/SelectDevice.tsx @@ -3,7 +3,11 @@ import {defineMessages, useIntl} from 'react-intl'; import {ScrollView, StyleSheet, View, TouchableOpacity} from 'react-native'; import * as Sentry from '@sentry/react-native'; -import {useManyMembers, useSendMapShare} from '@comapeo/core-react'; +import { + useManyMembers, + useSendMapShare, + useSyncState, +} from '@comapeo/core-react'; import {toError} from '../utils/errors'; import {type MemberInfo} from '@comapeo/core/dist/member-api'; import {type MapeoClientApi} from '@comapeo/ipc'; @@ -18,10 +22,8 @@ import {LIGHT_GREY} from '../lib/styles'; import {ExhaustivenessError} from '../lib/ExhaustivenessError'; import {type NativeRootNavigationProps} from '../sharedTypes/navigation'; import { - BLOCKED_ROLE_ID, COORDINATOR_ROLE_ID, CREATOR_ROLE_ID, - LEFT_ROLE_ID, MEMBER_ROLE_ID, } from '../sharedTypes'; @@ -50,6 +52,10 @@ const m = defineMessages({ id: 'screen.Settings.ProjectSettings.YourTeam.SelectDevice.sameVersion', defaultMessage: 'Make sure both devices are on the same version of CoMapeo', }, + sameProject: { + id: 'screen.Settings.ProjectSettings.YourTeam.SelectDevice.sameProject', + defaultMessage: 'Make sure both devices have the same project open', + }, }); type SelectionMode = 'invites' | 'shareMap'; @@ -63,6 +69,7 @@ export const SelectDevice = ({ const availablePeers = useInitiallyConnectedPeers(); const {projectId} = useActiveProject(); + const syncState = useSyncState({projectId}); const projectMembersQuery = useManyMembers({projectId}); const {mutateAsync: sendMapShare} = useSendMapShare({projectId}); @@ -73,6 +80,7 @@ export const SelectDevice = ({ peers: availablePeers, projectMembers: projectMembersQuery.data, selectionMode, + syncState, }); return ( @@ -87,6 +95,10 @@ export const SelectDevice = ({ {`\u2022 ${t(m.sameWifi)}`} {`\u2022 ${t(m.sameVersion)}`} + {selectionMode === 'shareMap' && ( + {`\u2022 ${t(m.sameProject)}`} + )} @@ -162,22 +174,22 @@ type GetSelectableDevicesParams = { peers: PublicPeerInfo[]; projectMembers: MemberInfo[]; selectionMode: SelectionMode; + syncState: ReturnType; }; export function getSelectableDevices({ peers, projectMembers, selectionMode, + syncState, }: GetSelectableDevicesParams): PublicPeerInfo[] { if (selectionMode === 'shareMap') { + if (!syncState) return []; + + const connectedDeviceIds = Object.keys(syncState.remoteDeviceSyncState); + return peers.filter(device => { - const isActiveProjectMember = projectMembers.some( - member => - member.deviceId === device.deviceId && - member.role.roleId !== BLOCKED_ROLE_ID && - member.role.roleId !== LEFT_ROLE_ID, - ); - return isActiveProjectMember; + return connectedDeviceIds.includes(device.deviceId); }); } From ab1f07499ecaa598bc785e86a8c142019ad3050d Mon Sep 17 00:00:00 2001 From: Cindy Green Date: Wed, 4 Mar 2026 16:50:22 -0500 Subject: [PATCH 37/72] Updates tests for selectable devices. --- .../sharedComponents/SelectDevice.test.ts | 124 ++++++++---------- 1 file changed, 55 insertions(+), 69 deletions(-) diff --git a/src/frontend/sharedComponents/SelectDevice.test.ts b/src/frontend/sharedComponents/SelectDevice.test.ts index 9519d091d0..1e7482fe03 100644 --- a/src/frontend/sharedComponents/SelectDevice.test.ts +++ b/src/frontend/sharedComponents/SelectDevice.test.ts @@ -7,11 +7,14 @@ import { LEFT_ROLE_ID, MEMBER_ROLE_ID, } from '../sharedTypes'; +import {type useSyncState} from '@comapeo/core-react'; type PublicPeerInfo = Awaited< ReturnType >[number]; +type SyncState = ReturnType; + function mockPeer( deviceId: string, name: string, @@ -40,6 +43,22 @@ function mockMember( } as MemberInfo; } +function mockSyncState(connectedDeviceIds: string[]): SyncState { + const remoteDeviceSyncState: Record< + string, + {syncing: boolean; progress: number} + > = {}; + for (const deviceId of connectedDeviceIds) { + remoteDeviceSyncState[deviceId] = { + syncing: false, + progress: 0, + }; + } + return { + remoteDeviceSyncState, + } as unknown as SyncState; +} + describe('getSelectableDevices', () => { describe('invites mode', () => { it('should return all peers when no project members exist', () => { @@ -54,6 +73,7 @@ describe('getSelectableDevices', () => { peers, projectMembers, selectionMode: 'invites', + syncState: null, }); expect(result).toHaveLength(3); @@ -75,6 +95,7 @@ describe('getSelectableDevices', () => { peers, projectMembers, selectionMode: 'invites', + syncState: null, }); expect(result).toHaveLength(1); @@ -95,6 +116,7 @@ describe('getSelectableDevices', () => { peers, projectMembers, selectionMode: 'invites', + syncState: null, }); expect(result).toHaveLength(0); @@ -108,6 +130,7 @@ describe('getSelectableDevices', () => { peers, projectMembers, selectionMode: 'invites', + syncState: null, }); expect(result).toHaveLength(0); @@ -127,6 +150,7 @@ describe('getSelectableDevices', () => { peers, projectMembers, selectionMode: 'invites', + syncState: null, }); expect(result).toHaveLength(2); @@ -148,6 +172,7 @@ describe('getSelectableDevices', () => { peers, projectMembers, selectionMode: 'invites', + syncState: null, }); expect(result).toHaveLength(2); @@ -169,6 +194,7 @@ describe('getSelectableDevices', () => { peers, projectMembers, selectionMode: 'invites', + syncState: null, }); expect(result).toHaveLength(2); @@ -177,7 +203,7 @@ describe('getSelectableDevices', () => { }); describe('shareMap mode', () => { - it('should return only peers that are active project members', () => { + it('should return only peers that are in syncState', () => { const peers = [ mockPeer('peer-1', 'Peer 1'), mockPeer('peer-2', 'Peer 2'), @@ -192,13 +218,14 @@ describe('getSelectableDevices', () => { peers, projectMembers, selectionMode: 'shareMap', + syncState: mockSyncState(['peer-1', 'peer-2']), }); expect(result).toHaveLength(2); expect(result.map(p => p.deviceId)).toEqual(['peer-1', 'peer-2']); }); - it('should return empty array when no project members exist', () => { + it('should return empty array when syncState has no connected devices', () => { const peers = [ mockPeer('peer-1', 'Peer 1'), mockPeer('peer-2', 'Peer 2'), @@ -209,6 +236,7 @@ describe('getSelectableDevices', () => { peers, projectMembers, selectionMode: 'shareMap', + syncState: mockSyncState([]), }); expect(result).toHaveLength(0); @@ -222,34 +250,30 @@ describe('getSelectableDevices', () => { peers, projectMembers, selectionMode: 'shareMap', + syncState: mockSyncState(['member-1']), }); expect(result).toHaveLength(0); }); - it('should include active project member peers with different connection statuses', () => { + it('should return empty array when syncState is null', () => { const peers = [ - mockPeer('peer-1', 'Peer 1', 'mobile', 'connected'), - mockPeer('peer-2', 'Peer 2', 'desktop', 'disconnected'), - mockPeer('peer-3', 'Peer 3', 'mobile', undefined), - ]; - const projectMembers = [ - mockMember('peer-1', COORDINATOR_ROLE_ID), - mockMember('peer-2', COORDINATOR_ROLE_ID), - mockMember('peer-3', MEMBER_ROLE_ID), + mockPeer('peer-1', 'Peer 1'), + mockPeer('peer-2', 'Peer 2'), ]; + const projectMembers = [mockMember('peer-1', COORDINATOR_ROLE_ID)]; const result = getSelectableDevices({ peers, projectMembers, selectionMode: 'shareMap', + syncState: null, }); - expect(result).toHaveLength(3); - expect(result).toEqual(peers); + expect(result).toHaveLength(0); }); - it('should filter out peers that are not project members', () => { + it('should filter peers to only those in syncState', () => { const peers = [ mockPeer('peer-1', 'Peer 1'), mockPeer('peer-2', 'Peer 2'), @@ -257,86 +281,45 @@ describe('getSelectableDevices', () => { mockPeer('peer-4', 'Peer 4'), ]; const projectMembers = [ + mockMember('peer-1', COORDINATOR_ROLE_ID), mockMember('peer-2', COORDINATOR_ROLE_ID), + mockMember('peer-3', MEMBER_ROLE_ID), mockMember('peer-4', MEMBER_ROLE_ID), ]; + // Only peer-2 and peer-4 are in syncState (have project open) const result = getSelectableDevices({ peers, projectMembers, selectionMode: 'shareMap', + syncState: mockSyncState(['peer-2', 'peer-4']), }); expect(result).toHaveLength(2); expect(result.map(p => p.deviceId)).toEqual(['peer-2', 'peer-4']); }); - it('should filter out blocked members', () => { + it('should include all peers that are in syncState regardless of connection status', () => { const peers = [ - mockPeer('peer-1', 'Peer 1'), - mockPeer('peer-2', 'Peer 2'), - mockPeer('peer-3', 'Peer 3'), - ]; - const projectMembers = [ - mockMember('peer-1', 'COORDINATOR_ROLE_ID'), - mockMember('peer-2', BLOCKED_ROLE_ID), - mockMember('peer-3', 'MEMBER_ROLE_ID'), - ]; - - const result = getSelectableDevices({ - peers, - projectMembers, - selectionMode: 'shareMap', - }); - - expect(result).toHaveLength(2); - expect(result.map(p => p.deviceId)).toEqual(['peer-1', 'peer-3']); - }); - - it('should filter out left members', () => { - const peers = [ - mockPeer('peer-1', 'Peer 1'), - mockPeer('peer-2', 'Peer 2'), - mockPeer('peer-3', 'Peer 3'), - ]; - const projectMembers = [ - mockMember('peer-1', 'COORDINATOR_ROLE_ID'), - mockMember('peer-2', LEFT_ROLE_ID), - mockMember('peer-3', 'MEMBER_ROLE_ID'), - ]; - - const result = getSelectableDevices({ - peers, - projectMembers, - selectionMode: 'shareMap', - }); - - expect(result).toHaveLength(2); - expect(result.map(p => p.deviceId)).toEqual(['peer-1', 'peer-3']); - }); - - it('should filter out both blocked and left members', () => { - const peers = [ - mockPeer('peer-1', 'Peer 1'), - mockPeer('peer-2', 'Peer 2'), - mockPeer('peer-3', 'Peer 3'), - mockPeer('peer-4', 'Peer 4'), + mockPeer('peer-1', 'Peer 1', 'mobile', 'connected'), + mockPeer('peer-2', 'Peer 2', 'desktop', 'disconnected'), + mockPeer('peer-3', 'Peer 3', 'mobile', undefined), ]; const projectMembers = [ - mockMember('peer-1', 'COORDINATOR_ROLE_ID'), - mockMember('peer-2', BLOCKED_ROLE_ID), - mockMember('peer-3', LEFT_ROLE_ID), - mockMember('peer-4', 'MEMBER_ROLE_ID'), + mockMember('peer-1', COORDINATOR_ROLE_ID), + mockMember('peer-2', COORDINATOR_ROLE_ID), + mockMember('peer-3', MEMBER_ROLE_ID), ]; const result = getSelectableDevices({ peers, projectMembers, selectionMode: 'shareMap', + syncState: mockSyncState(['peer-1', 'peer-2', 'peer-3']), }); - expect(result).toHaveLength(2); - expect(result.map(p => p.deviceId)).toEqual(['peer-1', 'peer-4']); + expect(result).toHaveLength(3); + expect(result).toEqual(peers); }); }); @@ -349,12 +332,14 @@ describe('getSelectableDevices', () => { peers, projectMembers, selectionMode: 'invites', + syncState: null, }); const shareMapResult = getSelectableDevices({ peers, projectMembers, selectionMode: 'shareMap', + syncState: mockSyncState([]), }); expect(invitesResult).toHaveLength(0); @@ -375,6 +360,7 @@ describe('getSelectableDevices', () => { peers, projectMembers, selectionMode: 'invites', + syncState: null, }); expect(result).toHaveLength(2); From 4b806cbb77e4981d8a68feb02bfe21bfd3c120cd Mon Sep 17 00:00:00 2001 From: Cindy Green Date: Thu, 5 Mar 2026 11:38:30 -0500 Subject: [PATCH 38/72] Updates comapeo-core-react. Uses new type. Uses time ago hook. --- package-lock.json | 9 +++-- package.json | 2 +- .../screens/BackgroundMaps/BackgroundMaps.tsx | 39 ++++++++++--------- .../BackgroundMaps/WaitingForMapAccept.tsx | 15 ++++--- 4 files changed, 34 insertions(+), 31 deletions(-) diff --git a/package-lock.json b/package-lock.json index 7b47edc8c5..9df708a2ab 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "1.10.0-pre", "hasInstallScript": true, "dependencies": { - "@comapeo/core-react": "9.0.1", + "@comapeo/core-react": "9.0.2", "@comapeo/ipc": "6.2.0", "@comapeo/nodejs-mobile-react-native": "18.20.4-2", "@expo-google-fonts/rubik": "0.4.2", @@ -2636,9 +2636,9 @@ } }, "node_modules/@comapeo/core-react": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@comapeo/core-react/-/core-react-9.0.1.tgz", - "integrity": "sha512-z/yVWXuqGcDGcEc3Y7WDaQCwD9loEjGc2gdZHKjancKCnpVGYHAOpagPMhsxmDe3Og+TjrsEeJPe0qpZbSOUcQ==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/@comapeo/core-react/-/core-react-9.0.2.tgz", + "integrity": "sha512-YVgI0cTmqy6FEYX1A3FpVgpjNzxKKhP4fhpuztLQU80NfsOf2PAjeRxBOkOHhytV4jvIVVopcc/23tVtMnRopQ==", "license": "MIT", "dependencies": { "@comapeo/map-server": "1.0.0", @@ -32670,6 +32670,7 @@ "version": "10.0.0", "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz", "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==", + "dev": true, "license": "MIT" }, "node_modules/use-latest-callback": { diff --git a/package.json b/package.json index 71c21b5779..efff39da6a 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "test:e2e:build": "npm run build:android:e2e && npm run test:e2e:nobuild" }, "dependencies": { - "@comapeo/core-react": "9.0.1", + "@comapeo/core-react": "9.0.2", "@comapeo/ipc": "6.2.0", "@comapeo/nodejs-mobile-react-native": "18.20.4-2", "@expo-google-fonts/rubik": "0.4.2", diff --git a/src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx b/src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx index 899d36f1ce..710a8b2d18 100644 --- a/src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx +++ b/src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx @@ -160,9 +160,7 @@ export function BackgroundMapsScreen() { }); const importCustomMapMutation = useImportCustomMapFile(); const removeCustomMapMutation = useRemoveCustomMapFile(); - const {data, isRefetching, error} = useGetCustomMapInfo(); - - const customMapInfo = data as CustomMapInfo | null | undefined; + const {data: customMapInfo, isRefetching, error} = useGetCustomMapInfo(); const handleChooseFile = () => { selectFileMutation.mutate(undefined, { @@ -212,7 +210,7 @@ export function BackgroundMapsScreen() { /> ) : ( )} @@ -267,28 +265,33 @@ function NoMapScreen({ {t(m.acceptedFileTypes)} - {error && !error.message?.includes('Map not found') && ( - - - {t(m.customMapInfoLoadError)} - - - + {error && + /* eslint-disable-next-line @typescript-eslint/no-explicit-any */ + (error as any).code !== 'MAP_NOT_FOUND' && ( + + + {t(m.customMapInfoLoadError)} + + + + - - )} + )} ); } +// Note: The type definition in @comapeo/core-react v9.0.2 doesn't match the actual API response +// API returns: {name, size, created} but types say: {mapName, estimatedSizeBytes, mapCreatedAt} +// Using the actual API response structure here type CustomMapInfo = { name: string; size: number; - created: Date; + created: number; }; function MapInfoScreen({ diff --git a/src/frontend/screens/BackgroundMaps/WaitingForMapAccept.tsx b/src/frontend/screens/BackgroundMaps/WaitingForMapAccept.tsx index 4f6377c1cb..7bdfddcef3 100644 --- a/src/frontend/screens/BackgroundMaps/WaitingForMapAccept.tsx +++ b/src/frontend/screens/BackgroundMaps/WaitingForMapAccept.tsx @@ -9,6 +9,7 @@ import { } from '@comapeo/core-react'; import InviteSent from '../../images/InviteSent.svg'; import {usePreventAndroidBackButton} from '../../hooks/usePreventAndroidBackButton'; +import {useCurrentTime} from '../../hooks/useCurrentTime'; import {HeaderText} from '../../sharedComponents/Text/HeaderText'; import {BodyText} from '../../sharedComponents/Text/BodyText'; import {type NativeRootNavigationProps} from '../../sharedTypes/navigation'; @@ -36,12 +37,16 @@ export function WaitingForMapAccept({ const {formatMessage: t} = useIntl(); const {shareId} = route.params; - const [time, setTime] = React.useState(0); const mapShare = useSingleSentMapShare({shareId}); const {mutate: cancelMapShare} = useCancelSentMapShare(); + const currentTime = useCurrentTime(1000); usePreventAndroidBackButton(); + const elapsedSeconds = mapShare + ? Math.floor((currentTime.getTime() - mapShare.mapShareCreatedAt) / 1000) + : 0; + const cancelShare = React.useCallback(() => { cancelMapShare( {shareId}, @@ -84,12 +89,6 @@ export function WaitingForMapAccept({ } }, [mapShare, navigation]); - React.useEffect(() => { - const interval = setInterval(() => setTime(prev => prev + 1), 1000); - - return () => clearInterval(interval); - }, []); - return ( @@ -97,7 +96,7 @@ export function WaitingForMapAccept({ {t(m.waitingMessage)} - {t(m.timerMessage, {time: formatElapsed(time)})} + {t(m.timerMessage, {time: formatElapsed(elapsedSeconds)})} From 23d474792e1b66fd098ce7f93509b3f85c164f4b Mon Sep 17 00:00:00 2001 From: Cindy Green Date: Thu, 5 Mar 2026 13:59:58 -0500 Subject: [PATCH 39/72] Separates get select device into two screens. --- src/frontend/Navigation/Stack/AppScreens.tsx | 11 +- .../SelectMapShareDevice.test.ts | 123 ++++++ .../BackgroundMaps/SelectMapShareDevice.tsx | 175 +++++++++ .../YourTeam/SelectInviteDevice.test.ts | 166 ++++++++ .../screens/YourTeam/SelectInviteDevice.tsx | 166 ++++++++ .../YourTeam/useInitiallyConnectedPeers.ts | 33 ++ .../sharedComponents/SelectDevice.test.ts | 370 ------------------ .../sharedComponents/SelectDevice.tsx | 264 ------------- 8 files changed, 669 insertions(+), 639 deletions(-) create mode 100644 src/frontend/screens/BackgroundMaps/SelectMapShareDevice.test.ts create mode 100644 src/frontend/screens/BackgroundMaps/SelectMapShareDevice.tsx create mode 100644 src/frontend/screens/YourTeam/SelectInviteDevice.test.ts create mode 100644 src/frontend/screens/YourTeam/SelectInviteDevice.tsx create mode 100644 src/frontend/screens/YourTeam/useInitiallyConnectedPeers.ts delete mode 100644 src/frontend/sharedComponents/SelectDevice.test.ts delete mode 100644 src/frontend/sharedComponents/SelectDevice.tsx diff --git a/src/frontend/Navigation/Stack/AppScreens.tsx b/src/frontend/Navigation/Stack/AppScreens.tsx index eede6a6854..06b31d58c6 100644 --- a/src/frontend/Navigation/Stack/AppScreens.tsx +++ b/src/frontend/Navigation/Stack/AppScreens.tsx @@ -24,7 +24,8 @@ import { } from '../../screens/ProjectCreation/CreateOrNameSoloProject'; import {ProjectCreated} from '../../screens/ProjectCreation/CreateOrNameSoloProject/ProjectCreated'; import {YourTeam} from '../../screens/YourTeam'; -import {SelectDevice} from '../../sharedComponents/SelectDevice'; +import {SelectInviteDevice} from '../../screens/YourTeam/SelectInviteDevice'; +import {SelectMapShareDevice} from '../../screens/BackgroundMaps/SelectMapShareDevice'; import {SelectInviteeRole} from '../../screens/YourTeam/SelectInviteeRole'; import {ReviewInvitation} from '../../screens/YourTeam/ReviewAndInvite/ReviewInvitation'; import {InviteAccepted} from '../../screens/YourTeam/InviteAccepted'; @@ -272,13 +273,13 @@ export const createAppScreens = ({ /> +>[number]; + +type SyncState = ReturnType; + +function mockPeer( + deviceId: string, + name: string, + deviceType: 'mobile' | 'desktop' = 'mobile', + status: 'connected' | 'disconnected' | undefined = 'connected', +): PublicPeerInfo { + return { + deviceId, + name, + deviceType, + status, + } as PublicPeerInfo; +} + +function mockSyncState(connectedDeviceIds: string[]): SyncState { + const remoteDeviceSyncState: Record< + string, + {syncing: boolean; progress: number} + > = {}; + for (const deviceId of connectedDeviceIds) { + remoteDeviceSyncState[deviceId] = { + syncing: false, + progress: 0, + }; + } + return { + remoteDeviceSyncState, + } as unknown as SyncState; +} + +describe('getSelectableDevicesForMapShare', () => { + it('should return only peers that are on the same project', () => { + const peers = [ + mockPeer('peer-1', 'Peer 1'), + mockPeer('peer-2', 'Peer 2'), + mockPeer('peer-3', 'Peer 3'), + ]; + + const result = getSelectableDevicesForMapShare({ + peers, + syncState: mockSyncState(['peer-1', 'peer-2']), + }); + + expect(result).toHaveLength(2); + expect(result.map(p => p.deviceId)).toEqual(['peer-1', 'peer-2']); + }); + + it('should return empty array when there are no devices on same project', () => { + const peers = [mockPeer('peer-1', 'Peer 1'), mockPeer('peer-2', 'Peer 2')]; + + const result = getSelectableDevicesForMapShare({ + peers, + syncState: mockSyncState([]), + }); + + expect(result).toHaveLength(0); + }); + + it('should return empty array when no peers exist', () => { + const peers: PublicPeerInfo[] = []; + + const result = getSelectableDevicesForMapShare({ + peers, + syncState: mockSyncState(['member-1']), + }); + + expect(result).toHaveLength(0); + }); + + it('should return empty array when syncState is null (no devices on same project)', () => { + const peers = [mockPeer('peer-1', 'Peer 1'), mockPeer('peer-2', 'Peer 2')]; + + const result = getSelectableDevicesForMapShare({ + peers, + syncState: null, + }); + + expect(result).toHaveLength(0); + }); + + it('should filter peers to only those on the same project', () => { + const peers = [ + mockPeer('peer-1', 'Peer 1'), + mockPeer('peer-2', 'Peer 2'), + mockPeer('peer-3', 'Peer 3'), + mockPeer('peer-4', 'Peer 4'), + ]; + + const result = getSelectableDevicesForMapShare({ + peers, + syncState: mockSyncState(['peer-2', 'peer-4']), + }); + + expect(result).toHaveLength(2); + expect(result.map(p => p.deviceId)).toEqual(['peer-2', 'peer-4']); + }); + + it('should include all peers that are on the same project regardless of connection status', () => { + const peers = [ + mockPeer('peer-1', 'Peer 1', 'mobile', 'connected'), + mockPeer('peer-2', 'Peer 2', 'desktop', 'disconnected'), + mockPeer('peer-3', 'Peer 3', 'mobile', undefined), + ]; + + const result = getSelectableDevicesForMapShare({ + peers, + syncState: mockSyncState(['peer-1', 'peer-2', 'peer-3']), + }); + + expect(result).toHaveLength(3); + expect(result).toEqual(peers); + }); +}); diff --git a/src/frontend/screens/BackgroundMaps/SelectMapShareDevice.tsx b/src/frontend/screens/BackgroundMaps/SelectMapShareDevice.tsx new file mode 100644 index 0000000000..35745bdd35 --- /dev/null +++ b/src/frontend/screens/BackgroundMaps/SelectMapShareDevice.tsx @@ -0,0 +1,175 @@ +import React from 'react'; +import {defineMessages, useIntl} from 'react-intl'; +import {ScrollView, StyleSheet, View, TouchableOpacity} from 'react-native'; +import * as Sentry from '@sentry/react-native'; + +import {useSendMapShare, useSyncState} from '@comapeo/core-react'; +import {type MapeoClientApi} from '@comapeo/ipc'; +import {toError} from '../../utils/errors'; +import {useLocalDiscoveryState} from '../../hooks/useLocalDiscoveryState'; +import WifiIcon from '../../images/WifiIcon.svg'; +import {DeviceNameWithIcon} from '../../sharedComponents/DeviceNameWithIcon'; +import {BodyText} from '../../sharedComponents/Text/BodyText'; +import {HeaderText} from '../../sharedComponents/Text/HeaderText'; +import {useActiveProject} from '../../contexts/ActiveProjectContext'; +import {LIGHT_GREY} from '../../lib/styles'; +import {ExhaustivenessError} from '../../lib/ExhaustivenessError'; +import {type NativeRootNavigationProps} from '../../sharedTypes/navigation'; +import {useInitiallyConnectedPeers} from '../YourTeam/useInitiallyConnectedPeers'; + +type PublicPeerInfo = Awaited< + ReturnType +>[number]; + +export function getSelectableDevicesForMapShare({ + peers, + syncState, +}: { + peers: PublicPeerInfo[]; + syncState: ReturnType; +}): PublicPeerInfo[] { + if (!syncState) return []; + + const connectedDeviceIds = Object.keys(syncState.remoteDeviceSyncState); + + return peers.filter(device => { + return connectedDeviceIds.includes(device.deviceId); + }); +} + +const m = defineMessages({ + title: { + id: 'screen.Settings.ProjectSettings.YourTeam.SelectDevice.titleMapShare', + defaultMessage: 'Select Device', + }, + notSeeingDevice: { + id: 'screen.Settings.ProjectSettings.YourTeam.SelectDevice.notSeeingDevice', + defaultMessage: 'Not seeing a Device?', + }, + sameWifi: { + id: 'screen.Settings.ProjectSettings.YourTeam.SelectDevice.sameWifi', + defaultMessage: 'Make sure both devices are on the same wifi network ', + }, + sameVersion: { + id: 'screen.Settings.ProjectSettings.YourTeam.SelectDevice.sameVersion', + defaultMessage: 'Make sure both devices are on the same version of CoMapeo', + }, + sameProject: { + id: 'screen.Settings.ProjectSettings.YourTeam.SelectDevice.sameProject', + defaultMessage: 'Make sure both devices have the same project open', + }, +}); + +export const SelectMapShareDevice = ({ + navigation, +}: NativeRootNavigationProps<'SelectMapShareDevice'>) => { + const ssid = useLocalDiscoveryState(state => state.ssid); + const {formatMessage: t} = useIntl(); + + const availablePeers = useInitiallyConnectedPeers(); + const {projectId} = useActiveProject(); + const syncState = useSyncState({projectId}); + const {mutateAsync: sendMapShare} = useSendMapShare({projectId}); + + const selectableDevices = getSelectableDevicesForMapShare({ + peers: availablePeers, + syncState, + }); + + return ( + + + + {ssid} + + + {t(m.notSeeingDevice)} + + {`\u2022 ${t(m.sameWifi)}`} + {`\u2022 ${t(m.sameVersion)}`} + {`\u2022 ${t(m.sameProject)}`} + + + + {selectableDevices.map(device => { + const {deviceId, status, name, deviceType} = device; + + let isDisconnected: boolean; + switch (status) { + case undefined: + case 'connected': + isDisconnected = false; + break; + case 'disconnected': + isDisconnected = true; + break; + default: + throw new ExhaustivenessError(status); + } + + const handlePress = async () => { + try { + const mapShare = await sendMapShare({ + projectId, + receiverDeviceId: deviceId, + mapId: 'custom', + }); + navigation.navigate('WaitingForMapAccept', { + shareId: mapShare.shareId, + }); + } catch (err) { + Sentry.captureException(err); + navigation.navigate('ErrorBottomSheet', { + error: toError(err, 'Failed to send map share'), + }); + } + }; + + return ( + + + + + + ); + })} + + + ); +}; + +SelectMapShareDevice.navTitle = m.title; + +const styles = StyleSheet.create({ + container: { + padding: 20, + paddingTop: 40, + }, + deviceListContainer: { + gap: 10, + }, + deviceCard: { + flex: 1, + flexDirection: 'row', + alignItems: 'center', + padding: 20, + borderWidth: 1, + borderColor: LIGHT_GREY, + borderRadius: 3, + justifyContent: 'space-between', + }, +}); diff --git a/src/frontend/screens/YourTeam/SelectInviteDevice.test.ts b/src/frontend/screens/YourTeam/SelectInviteDevice.test.ts new file mode 100644 index 0000000000..a60fac6488 --- /dev/null +++ b/src/frontend/screens/YourTeam/SelectInviteDevice.test.ts @@ -0,0 +1,166 @@ +import {type MemberInfo} from '@comapeo/core/dist/member-api'; +import {type MapeoClientApi} from '@comapeo/ipc'; +import {getSelectableDevicesForInvite} from './SelectInviteDevice'; +import { + BLOCKED_ROLE_ID, + COORDINATOR_ROLE_ID, + LEFT_ROLE_ID, + MEMBER_ROLE_ID, +} from '../../sharedTypes'; + +type PublicPeerInfo = Awaited< + ReturnType +>[number]; + +function mockPeer( + deviceId: string, + name: string, + deviceType: 'mobile' | 'desktop' = 'mobile', + status: 'connected' | 'disconnected' | undefined = 'connected', +): PublicPeerInfo { + return { + deviceId, + name, + deviceType, + status, + } as PublicPeerInfo; +} + +function mockMember( + deviceId: string, + roleId: string, + deviceType: 'mobile' | 'desktop' = 'mobile', +): MemberInfo { + return { + deviceId, + name: `Device ${deviceId}`, + role: {roleId}, + deviceType, + joinedAt: new Date().toISOString(), + } as MemberInfo; +} + +describe('getSelectableDevicesForInvite', () => { + it('should return all peers when no project members exist', () => { + const peers = [ + mockPeer('peer-1', 'Peer 1'), + mockPeer('peer-2', 'Peer 2'), + mockPeer('peer-3', 'Peer 3'), + ]; + const projectMembers: MemberInfo[] = []; + + const result = getSelectableDevicesForInvite({ + peers, + projectMembers, + }); + + expect(result).toHaveLength(3); + expect(result).toEqual(peers); + }); + + it('should filter out peers that are active project members', () => { + const peers = [ + mockPeer('peer-1', 'Peer 1'), + mockPeer('peer-2', 'Peer 2'), + mockPeer('peer-3', 'Peer 3'), + ]; + const projectMembers = [ + mockMember('peer-1', COORDINATOR_ROLE_ID), + mockMember('peer-2', MEMBER_ROLE_ID), + ]; + + const result = getSelectableDevicesForInvite({ + peers, + projectMembers, + }); + + expect(result).toHaveLength(1); + expect(result[0]?.deviceId).toBe('peer-3'); + }); + + it('should return empty array when all peers are active project members', () => { + const peers = [mockPeer('peer-1', 'Peer 1'), mockPeer('peer-2', 'Peer 2')]; + const projectMembers = [ + mockMember('peer-1', COORDINATOR_ROLE_ID), + mockMember('peer-2', MEMBER_ROLE_ID), + ]; + + const result = getSelectableDevicesForInvite({ + peers, + projectMembers, + }); + + expect(result).toHaveLength(0); + }); + + it('should return empty array when no peers exist', () => { + const peers: PublicPeerInfo[] = []; + const projectMembers = [mockMember('member-1', COORDINATOR_ROLE_ID)]; + + const result = getSelectableDevicesForInvite({ + peers, + projectMembers, + }); + + expect(result).toHaveLength(0); + }); + + it('should handle mixed device types correctly', () => { + const peers = [ + mockPeer('peer-1', 'Peer 1', 'mobile'), + mockPeer('peer-2', 'Peer 2', 'desktop'), + mockPeer('peer-3', 'Peer 3', 'mobile'), + ]; + const projectMembers = [ + mockMember('peer-1', COORDINATOR_ROLE_ID, 'mobile'), + ]; + + const result = getSelectableDevicesForInvite({ + peers, + projectMembers, + }); + + expect(result).toHaveLength(2); + expect(result.map(p => p.deviceId)).toEqual(['peer-2', 'peer-3']); + }); + + it('should allow inviting blocked members', () => { + const peers = [ + mockPeer('peer-1', 'Peer 1'), + mockPeer('peer-2', 'Peer 2'), + mockPeer('peer-3', 'Peer 3'), + ]; + const projectMembers = [ + mockMember('peer-1', COORDINATOR_ROLE_ID), + mockMember('peer-2', BLOCKED_ROLE_ID), + ]; + + const result = getSelectableDevicesForInvite({ + peers, + projectMembers, + }); + + expect(result).toHaveLength(2); + expect(result.map(p => p.deviceId)).toEqual(['peer-2', 'peer-3']); + }); + + it('should allow inviting left members', () => { + const peers = [ + mockPeer('peer-1', 'Peer 1'), + mockPeer('peer-2', 'Peer 2'), + mockPeer('peer-3', 'Peer 3'), + ]; + const projectMembers = [ + mockMember('peer-1', COORDINATOR_ROLE_ID), + mockMember('peer-2', LEFT_ROLE_ID), + ]; + + const result = getSelectableDevicesForInvite({ + peers, + projectMembers, + }); + + expect(result).toHaveLength(2); + expect(result.map(p => p.deviceId)).toEqual(['peer-2', 'peer-3']); + }); +}); diff --git a/src/frontend/screens/YourTeam/SelectInviteDevice.tsx b/src/frontend/screens/YourTeam/SelectInviteDevice.tsx new file mode 100644 index 0000000000..1c3ed886c1 --- /dev/null +++ b/src/frontend/screens/YourTeam/SelectInviteDevice.tsx @@ -0,0 +1,166 @@ +import React from 'react'; +import {defineMessages, useIntl} from 'react-intl'; +import {ScrollView, StyleSheet, View, TouchableOpacity} from 'react-native'; + +import {useManyMembers} from '@comapeo/core-react'; +import {type MemberInfo} from '@comapeo/core/dist/member-api'; +import {type MapeoClientApi} from '@comapeo/ipc'; +import {useLocalDiscoveryState} from '../../hooks/useLocalDiscoveryState'; +import WifiIcon from '../../images/WifiIcon.svg'; +import {DeviceNameWithIcon} from '../../sharedComponents/DeviceNameWithIcon'; +import {BodyText} from '../../sharedComponents/Text/BodyText'; +import {HeaderText} from '../../sharedComponents/Text/HeaderText'; +import {useActiveProject} from '../../contexts/ActiveProjectContext'; +import {LIGHT_GREY} from '../../lib/styles'; +import {ExhaustivenessError} from '../../lib/ExhaustivenessError'; +import {type NativeRootNavigationProps} from '../../sharedTypes/navigation'; +import { + COORDINATOR_ROLE_ID, + CREATOR_ROLE_ID, + MEMBER_ROLE_ID, +} from '../../sharedTypes'; +import {useInitiallyConnectedPeers} from './useInitiallyConnectedPeers'; + +type PublicPeerInfo = Awaited< + ReturnType +>[number]; + +export function getSelectableDevicesForInvite({ + peers, + projectMembers, +}: { + peers: PublicPeerInfo[]; + projectMembers: MemberInfo[]; +}): PublicPeerInfo[] { + return peers.filter(device => { + const existingMember = projectMembers.some( + member => + member.deviceId === device.deviceId && + (member.role.roleId === COORDINATOR_ROLE_ID || + member.role.roleId === CREATOR_ROLE_ID || + member.role.roleId === MEMBER_ROLE_ID), + ); + + return !existingMember; + }); +} + +const m = defineMessages({ + title: { + id: 'screen.Settings.ProjectSettings.YourTeam.SelectDevice.title', + defaultMessage: 'Select Device to Invite', + }, + notSeeingDevice: { + id: 'screen.Settings.ProjectSettings.YourTeam.SelectDevice.notSeeingDevice', + defaultMessage: 'Not seeing a Device?', + }, + sameWifi: { + id: 'screen.Settings.ProjectSettings.YourTeam.SelectDevice.sameWifi', + defaultMessage: 'Make sure both devices are on the same wifi network ', + }, + sameVersion: { + id: 'screen.Settings.ProjectSettings.YourTeam.SelectDevice.sameVersion', + defaultMessage: 'Make sure both devices are on the same version of CoMapeo', + }, +}); + +export const SelectInviteDevice = ({ + navigation, +}: NativeRootNavigationProps<'SelectDevice'>) => { + const ssid = useLocalDiscoveryState(state => state.ssid); + const {formatMessage: t} = useIntl(); + + const availablePeers = useInitiallyConnectedPeers(); + const {projectId} = useActiveProject(); + const projectMembersQuery = useManyMembers({projectId}); + + const selectableDevices = getSelectableDevicesForInvite({ + peers: availablePeers, + projectMembers: projectMembersQuery.data, + }); + + return ( + + + + {ssid} + + + {t(m.notSeeingDevice)} + + {`\u2022 ${t(m.sameWifi)}`} + {`\u2022 ${t(m.sameVersion)}`} + + + + {selectableDevices.map(device => { + const {deviceId, status, name, deviceType} = device; + + let isDisconnected: boolean; + switch (status) { + case undefined: + case 'connected': + isDisconnected = false; + break; + case 'disconnected': + isDisconnected = true; + break; + default: + throw new ExhaustivenessError(status); + } + + const handlePress = () => { + navigation.navigate('SelectInviteeRole', { + name: name || '', + deviceId: deviceId, + deviceType: deviceType, + }); + }; + + return ( + + + + + + ); + })} + + + ); +}; + +SelectInviteDevice.navTitle = m.title; + +const styles = StyleSheet.create({ + container: { + padding: 20, + paddingTop: 40, + }, + deviceListContainer: { + gap: 10, + }, + deviceCard: { + flex: 1, + flexDirection: 'row', + alignItems: 'center', + padding: 20, + borderWidth: 1, + borderColor: LIGHT_GREY, + borderRadius: 3, + justifyContent: 'space-between', + }, +}); diff --git a/src/frontend/screens/YourTeam/useInitiallyConnectedPeers.ts b/src/frontend/screens/YourTeam/useInitiallyConnectedPeers.ts new file mode 100644 index 0000000000..6a7635f131 --- /dev/null +++ b/src/frontend/screens/YourTeam/useInitiallyConnectedPeers.ts @@ -0,0 +1,33 @@ +import React from 'react'; +import {useLocalPeers} from '../../hooks/useLocalPeers'; + +export function useInitiallyConnectedPeers() { + const peers = useLocalPeers(); + const [relevantDeviceIds, setRelevantDeviceIds] = React.useState< + Array + >(() => { + return peers.filter(p => p.status === 'connected').map(p => p.deviceId); + }); + + React.useEffect(() => { + setRelevantDeviceIds(prev => { + const next = []; + + for (const p of peers) { + const included = prev.includes(p.deviceId); + + if (included) { + next.push(p.deviceId); + } else { + if (p.status === 'connected') { + next.push(p.deviceId); + } + } + } + + return next; + }); + }, [peers, setRelevantDeviceIds]); + + return peers.filter(p => relevantDeviceIds.includes(p.deviceId)); +} diff --git a/src/frontend/sharedComponents/SelectDevice.test.ts b/src/frontend/sharedComponents/SelectDevice.test.ts deleted file mode 100644 index 1e7482fe03..0000000000 --- a/src/frontend/sharedComponents/SelectDevice.test.ts +++ /dev/null @@ -1,370 +0,0 @@ -import {getSelectableDevices} from './SelectDevice'; -import {type MemberInfo} from '@comapeo/core/dist/member-api'; -import {type MapeoClientApi} from '@comapeo/ipc'; -import { - BLOCKED_ROLE_ID, - COORDINATOR_ROLE_ID, - LEFT_ROLE_ID, - MEMBER_ROLE_ID, -} from '../sharedTypes'; -import {type useSyncState} from '@comapeo/core-react'; - -type PublicPeerInfo = Awaited< - ReturnType ->[number]; - -type SyncState = ReturnType; - -function mockPeer( - deviceId: string, - name: string, - deviceType: 'mobile' | 'desktop' = 'mobile', - status: 'connected' | 'disconnected' | undefined = 'connected', -): PublicPeerInfo { - return { - deviceId, - name, - deviceType, - status, - } as PublicPeerInfo; -} - -function mockMember( - deviceId: string, - roleId: string, - deviceType: 'mobile' | 'desktop' = 'mobile', -): MemberInfo { - return { - deviceId, - name: `Device ${deviceId}`, - role: {roleId}, - deviceType, - joinedAt: new Date().toISOString(), - } as MemberInfo; -} - -function mockSyncState(connectedDeviceIds: string[]): SyncState { - const remoteDeviceSyncState: Record< - string, - {syncing: boolean; progress: number} - > = {}; - for (const deviceId of connectedDeviceIds) { - remoteDeviceSyncState[deviceId] = { - syncing: false, - progress: 0, - }; - } - return { - remoteDeviceSyncState, - } as unknown as SyncState; -} - -describe('getSelectableDevices', () => { - describe('invites mode', () => { - it('should return all peers when no project members exist', () => { - const peers = [ - mockPeer('peer-1', 'Peer 1'), - mockPeer('peer-2', 'Peer 2'), - mockPeer('peer-3', 'Peer 3'), - ]; - const projectMembers: MemberInfo[] = []; - - const result = getSelectableDevices({ - peers, - projectMembers, - selectionMode: 'invites', - syncState: null, - }); - - expect(result).toHaveLength(3); - expect(result).toEqual(peers); - }); - - it('should filter out peers that are active project members', () => { - const peers = [ - mockPeer('peer-1', 'Peer 1'), - mockPeer('peer-2', 'Peer 2'), - mockPeer('peer-3', 'Peer 3'), - ]; - const projectMembers = [ - mockMember('peer-1', COORDINATOR_ROLE_ID), - mockMember('peer-2', MEMBER_ROLE_ID), - ]; - - const result = getSelectableDevices({ - peers, - projectMembers, - selectionMode: 'invites', - syncState: null, - }); - - expect(result).toHaveLength(1); - expect(result[0]?.deviceId).toBe('peer-3'); - }); - - it('should return empty array when all peers are active project members', () => { - const peers = [ - mockPeer('peer-1', 'Peer 1'), - mockPeer('peer-2', 'Peer 2'), - ]; - const projectMembers = [ - mockMember('peer-1', COORDINATOR_ROLE_ID), - mockMember('peer-2', MEMBER_ROLE_ID), - ]; - - const result = getSelectableDevices({ - peers, - projectMembers, - selectionMode: 'invites', - syncState: null, - }); - - expect(result).toHaveLength(0); - }); - - it('should return empty array when no peers exist', () => { - const peers: PublicPeerInfo[] = []; - const projectMembers = [mockMember('member-1', COORDINATOR_ROLE_ID)]; - - const result = getSelectableDevices({ - peers, - projectMembers, - selectionMode: 'invites', - syncState: null, - }); - - expect(result).toHaveLength(0); - }); - - it('should handle mixed device types correctly', () => { - const peers = [ - mockPeer('peer-1', 'Peer 1', 'mobile'), - mockPeer('peer-2', 'Peer 2', 'desktop'), - mockPeer('peer-3', 'Peer 3', 'mobile'), - ]; - const projectMembers = [ - mockMember('peer-1', COORDINATOR_ROLE_ID, 'mobile'), - ]; - - const result = getSelectableDevices({ - peers, - projectMembers, - selectionMode: 'invites', - syncState: null, - }); - - expect(result).toHaveLength(2); - expect(result.map(p => p.deviceId)).toEqual(['peer-2', 'peer-3']); - }); - - it('should allow inviting blocked members', () => { - const peers = [ - mockPeer('peer-1', 'Peer 1'), - mockPeer('peer-2', 'Peer 2'), - mockPeer('peer-3', 'Peer 3'), - ]; - const projectMembers = [ - mockMember('peer-1', COORDINATOR_ROLE_ID), - mockMember('peer-2', BLOCKED_ROLE_ID), - ]; - - const result = getSelectableDevices({ - peers, - projectMembers, - selectionMode: 'invites', - syncState: null, - }); - - expect(result).toHaveLength(2); - expect(result.map(p => p.deviceId)).toEqual(['peer-2', 'peer-3']); - }); - - it('should allow inviting left members', () => { - const peers = [ - mockPeer('peer-1', 'Peer 1'), - mockPeer('peer-2', 'Peer 2'), - mockPeer('peer-3', 'Peer 3'), - ]; - const projectMembers = [ - mockMember('peer-1', COORDINATOR_ROLE_ID), - mockMember('peer-2', LEFT_ROLE_ID), - ]; - - const result = getSelectableDevices({ - peers, - projectMembers, - selectionMode: 'invites', - syncState: null, - }); - - expect(result).toHaveLength(2); - expect(result.map(p => p.deviceId)).toEqual(['peer-2', 'peer-3']); - }); - }); - - describe('shareMap mode', () => { - it('should return only peers that are in syncState', () => { - const peers = [ - mockPeer('peer-1', 'Peer 1'), - mockPeer('peer-2', 'Peer 2'), - mockPeer('peer-3', 'Peer 3'), - ]; - const projectMembers = [ - mockMember('peer-1', COORDINATOR_ROLE_ID), - mockMember('peer-2', MEMBER_ROLE_ID), - ]; - - const result = getSelectableDevices({ - peers, - projectMembers, - selectionMode: 'shareMap', - syncState: mockSyncState(['peer-1', 'peer-2']), - }); - - expect(result).toHaveLength(2); - expect(result.map(p => p.deviceId)).toEqual(['peer-1', 'peer-2']); - }); - - it('should return empty array when syncState has no connected devices', () => { - const peers = [ - mockPeer('peer-1', 'Peer 1'), - mockPeer('peer-2', 'Peer 2'), - ]; - const projectMembers: MemberInfo[] = []; - - const result = getSelectableDevices({ - peers, - projectMembers, - selectionMode: 'shareMap', - syncState: mockSyncState([]), - }); - - expect(result).toHaveLength(0); - }); - - it('should return empty array when no peers exist', () => { - const peers: PublicPeerInfo[] = []; - const projectMembers = [mockMember('member-1', COORDINATOR_ROLE_ID)]; - - const result = getSelectableDevices({ - peers, - projectMembers, - selectionMode: 'shareMap', - syncState: mockSyncState(['member-1']), - }); - - expect(result).toHaveLength(0); - }); - - it('should return empty array when syncState is null', () => { - const peers = [ - mockPeer('peer-1', 'Peer 1'), - mockPeer('peer-2', 'Peer 2'), - ]; - const projectMembers = [mockMember('peer-1', COORDINATOR_ROLE_ID)]; - - const result = getSelectableDevices({ - peers, - projectMembers, - selectionMode: 'shareMap', - syncState: null, - }); - - expect(result).toHaveLength(0); - }); - - it('should filter peers to only those in syncState', () => { - const peers = [ - mockPeer('peer-1', 'Peer 1'), - mockPeer('peer-2', 'Peer 2'), - mockPeer('peer-3', 'Peer 3'), - mockPeer('peer-4', 'Peer 4'), - ]; - const projectMembers = [ - mockMember('peer-1', COORDINATOR_ROLE_ID), - mockMember('peer-2', COORDINATOR_ROLE_ID), - mockMember('peer-3', MEMBER_ROLE_ID), - mockMember('peer-4', MEMBER_ROLE_ID), - ]; - - // Only peer-2 and peer-4 are in syncState (have project open) - const result = getSelectableDevices({ - peers, - projectMembers, - selectionMode: 'shareMap', - syncState: mockSyncState(['peer-2', 'peer-4']), - }); - - expect(result).toHaveLength(2); - expect(result.map(p => p.deviceId)).toEqual(['peer-2', 'peer-4']); - }); - - it('should include all peers that are in syncState regardless of connection status', () => { - const peers = [ - mockPeer('peer-1', 'Peer 1', 'mobile', 'connected'), - mockPeer('peer-2', 'Peer 2', 'desktop', 'disconnected'), - mockPeer('peer-3', 'Peer 3', 'mobile', undefined), - ]; - const projectMembers = [ - mockMember('peer-1', COORDINATOR_ROLE_ID), - mockMember('peer-2', COORDINATOR_ROLE_ID), - mockMember('peer-3', MEMBER_ROLE_ID), - ]; - - const result = getSelectableDevices({ - peers, - projectMembers, - selectionMode: 'shareMap', - syncState: mockSyncState(['peer-1', 'peer-2', 'peer-3']), - }); - - expect(result).toHaveLength(3); - expect(result).toEqual(peers); - }); - }); - - describe('edge cases', () => { - it('should handle empty peers and members arrays', () => { - const peers: PublicPeerInfo[] = []; - const projectMembers: MemberInfo[] = []; - - const invitesResult = getSelectableDevices({ - peers, - projectMembers, - selectionMode: 'invites', - syncState: null, - }); - - const shareMapResult = getSelectableDevices({ - peers, - projectMembers, - selectionMode: 'shareMap', - syncState: mockSyncState([]), - }); - - expect(invitesResult).toHaveLength(0); - expect(shareMapResult).toHaveLength(0); - }); - - it('should handle case where peer deviceId does not match any project member', () => { - const peers = [ - mockPeer('peer-1', 'Peer 1'), - mockPeer('peer-2', 'Peer 2'), - ]; - const projectMembers = [ - mockMember('member-99', COORDINATOR_ROLE_ID), - mockMember('member-100', MEMBER_ROLE_ID), - ]; - - const result = getSelectableDevices({ - peers, - projectMembers, - selectionMode: 'invites', - syncState: null, - }); - - expect(result).toHaveLength(2); - expect(result).toEqual(peers); - }); - }); -}); diff --git a/src/frontend/sharedComponents/SelectDevice.tsx b/src/frontend/sharedComponents/SelectDevice.tsx deleted file mode 100644 index 7642c22fdb..0000000000 --- a/src/frontend/sharedComponents/SelectDevice.tsx +++ /dev/null @@ -1,264 +0,0 @@ -import React from 'react'; -import {defineMessages, useIntl} from 'react-intl'; -import {ScrollView, StyleSheet, View, TouchableOpacity} from 'react-native'; -import * as Sentry from '@sentry/react-native'; - -import { - useManyMembers, - useSendMapShare, - useSyncState, -} from '@comapeo/core-react'; -import {toError} from '../utils/errors'; -import {type MemberInfo} from '@comapeo/core/dist/member-api'; -import {type MapeoClientApi} from '@comapeo/ipc'; -import {useLocalDiscoveryState} from '../hooks/useLocalDiscoveryState'; -import {useLocalPeers} from '../hooks/useLocalPeers'; -import WifiIcon from '../images/WifiIcon.svg'; -import {DeviceNameWithIcon} from './DeviceNameWithIcon'; -import {BodyText} from './Text/BodyText'; -import {HeaderText} from './Text/HeaderText'; -import {useActiveProject} from '../contexts/ActiveProjectContext'; -import {LIGHT_GREY} from '../lib/styles'; -import {ExhaustivenessError} from '../lib/ExhaustivenessError'; -import {type NativeRootNavigationProps} from '../sharedTypes/navigation'; -import { - COORDINATOR_ROLE_ID, - CREATOR_ROLE_ID, - MEMBER_ROLE_ID, -} from '../sharedTypes'; - -type PublicPeerInfo = Awaited< - ReturnType ->[number]; - -const m = defineMessages({ - title: { - id: 'screen.Settings.ProjectSettings.YourTeam.SelectDevice.title', - defaultMessage: 'Select Device to Invite', - }, - titleMapShare: { - id: 'screen.Settings.ProjectSettings.YourTeam.SelectDevice.titleMapShare', - defaultMessage: 'Select Device', - }, - notSeeingDevice: { - id: 'screen.Settings.ProjectSettings.YourTeam.SelectDevice.notSeeingDevice', - defaultMessage: 'Not seeing a Device?', - }, - sameWifi: { - id: 'screen.Settings.ProjectSettings.YourTeam.SelectDevice.sameWifi', - defaultMessage: 'Make sure both devices are on the same wifi network ', - }, - sameVersion: { - id: 'screen.Settings.ProjectSettings.YourTeam.SelectDevice.sameVersion', - defaultMessage: 'Make sure both devices are on the same version of CoMapeo', - }, - sameProject: { - id: 'screen.Settings.ProjectSettings.YourTeam.SelectDevice.sameProject', - defaultMessage: 'Make sure both devices have the same project open', - }, -}); - -type SelectionMode = 'invites' | 'shareMap'; - -export const SelectDevice = ({ - navigation, - route, -}: NativeRootNavigationProps<'SelectDevice' | 'SelectMapShareDevice'>) => { - const ssid = useLocalDiscoveryState(state => state.ssid); - const {formatMessage: t} = useIntl(); - - const availablePeers = useInitiallyConnectedPeers(); - const {projectId} = useActiveProject(); - const syncState = useSyncState({projectId}); - const projectMembersQuery = useManyMembers({projectId}); - const {mutateAsync: sendMapShare} = useSendMapShare({projectId}); - - const selectionMode: SelectionMode = - route.name === 'SelectMapShareDevice' ? 'shareMap' : 'invites'; - - const selectableDevices = getSelectableDevices({ - peers: availablePeers, - projectMembers: projectMembersQuery.data, - selectionMode, - syncState, - }); - - return ( - - - - {ssid} - - - {t(m.notSeeingDevice)} - - {`\u2022 ${t(m.sameWifi)}`} - {`\u2022 ${t(m.sameVersion)}`} - {selectionMode === 'shareMap' && ( - {`\u2022 ${t(m.sameProject)}`} - )} - - - - {selectableDevices.map(device => { - const {deviceId, status, name, deviceType} = device; - - let isDisconnected: boolean; - switch (status) { - case undefined: - case 'connected': - isDisconnected = false; - break; - case 'disconnected': - isDisconnected = true; - break; - default: - throw new ExhaustivenessError(status); - } - - const handlePress = async () => { - if (selectionMode === 'shareMap') { - try { - const mapShare = await sendMapShare({ - projectId, - receiverDeviceId: deviceId, - mapId: 'custom', - }); - navigation.navigate('WaitingForMapAccept', { - shareId: mapShare.shareId, - }); - } catch (err) { - Sentry.captureException(err); - navigation.navigate('ErrorBottomSheet', { - error: toError(err, 'Failed to send map share'), - }); - } - } else { - navigation.navigate('SelectInviteeRole', { - name: name || '', - deviceId: deviceId, - deviceType: deviceType, - }); - } - }; - - return ( - - - - - - ); - })} - - - ); -}; - -SelectDevice.navTitle = m.title; -SelectDevice.navTitleMapShare = m.titleMapShare; - -type GetSelectableDevicesParams = { - peers: PublicPeerInfo[]; - projectMembers: MemberInfo[]; - selectionMode: SelectionMode; - syncState: ReturnType; -}; - -export function getSelectableDevices({ - peers, - projectMembers, - selectionMode, - syncState, -}: GetSelectableDevicesParams): PublicPeerInfo[] { - if (selectionMode === 'shareMap') { - if (!syncState) return []; - - const connectedDeviceIds = Object.keys(syncState.remoteDeviceSyncState); - - return peers.filter(device => { - return connectedDeviceIds.includes(device.deviceId); - }); - } - - return peers.filter(device => { - const existingMember = projectMembers.some( - member => - member.deviceId === device.deviceId && - (member.role.roleId === COORDINATOR_ROLE_ID || - member.role.roleId === CREATOR_ROLE_ID || - member.role.roleId === MEMBER_ROLE_ID), - ); - - return !existingMember; - }); -} - -const styles = StyleSheet.create({ - container: { - padding: 20, - paddingTop: 40, - }, - deviceListContainer: { - gap: 10, - }, - deviceCard: { - flex: 1, - flexDirection: 'row', - alignItems: 'center', - padding: 20, - borderWidth: 1, - borderColor: LIGHT_GREY, - borderRadius: 3, - justifyContent: 'space-between', - }, -}); - -/** - * Applies specialized, context-specific behavior on top of `useLocalPeers()` - * by only including peers that were *initially* connected from the point of view of the consuming component. - * If these included peers receive subsequent updates (e.g. disconnecting), they are still returned. - * This hook only prevents *initially* returning peers that are disconnected. - */ -function useInitiallyConnectedPeers() { - const peers = useLocalPeers(); - const [relevantDeviceIds, setRelevantDeviceIds] = React.useState< - Array - >(() => { - return peers.filter(p => p.status === 'connected').map(p => p.deviceId); - }); - - React.useEffect(() => { - setRelevantDeviceIds(prev => { - const next = []; - - for (const p of peers) { - const included = prev.includes(p.deviceId); - - if (included) { - next.push(p.deviceId); - } else { - if (p.status === 'connected') { - next.push(p.deviceId); - } - } - } - - return next; - }); - }, [peers, setRelevantDeviceIds]); - - return peers.filter(p => relevantDeviceIds.includes(p.deviceId)); -} From 10a2aba5530ab88ff8ca9b70f6f35c30c285551e Mon Sep 17 00:00:00 2001 From: Cindy Green Date: Thu, 5 Mar 2026 14:05:25 -0500 Subject: [PATCH 40/72] Divides messages between two screens. --- messages/en.json | 21 +++++++++++++------ .../BackgroundMaps/SelectMapShareDevice.tsx | 10 ++++----- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/messages/en.json b/messages/en.json index 5449c6b2c7..bd7dbdb1d5 100644 --- a/messages/en.json +++ b/messages/en.json @@ -442,6 +442,21 @@ "screen.EditProjectDetails.projectName": { "message": "Project Name" }, + "screen.Settings.ProjectSettings.BackgroundMaps.SelectDevice.notSeeingDevice": { + "message": "Not seeing a Device?" + }, + "screen.Settings.ProjectSettings.BackgroundMaps.SelectDevice.sameProject": { + "message": "Make sure both devices have the same project open" + }, + "screen.Settings.ProjectSettings.BackgroundMaps.SelectDevice.sameVersion": { + "message": "Make sure both devices are on the same version of CoMapeo" + }, + "screen.Settings.ProjectSettings.BackgroundMaps.SelectDevice.sameWifi": { + "message": "Make sure both devices are on the same wifi network" + }, + "screen.Settings.ProjectSettings.BackgroundMaps.SelectDevice.titleMapShare": { + "message": "Select Device" + }, "screen.Settings.ProjectSettings.YourTeam.ReviewAndInvite.ReviewInvitation.coordinator": { "message": "Coordinator" }, @@ -454,9 +469,6 @@ "screen.Settings.ProjectSettings.YourTeam.SelectDevice.notSeeingDevice": { "message": "Not seeing a Device?" }, - "screen.Settings.ProjectSettings.YourTeam.SelectDevice.sameProject": { - "message": "Make sure both devices have the same project open" - }, "screen.Settings.ProjectSettings.YourTeam.SelectDevice.sameVersion": { "message": "Make sure both devices are on the same version of CoMapeo" }, @@ -466,9 +478,6 @@ "screen.Settings.ProjectSettings.YourTeam.SelectDevice.title": { "message": "Select Device to Invite" }, - "screen.Settings.ProjectSettings.YourTeam.SelectDevice.titleMapShare": { - "message": "Select Device" - }, "screen.Settings.ProjectSettings.YourTeam.SelectInviteeRole.coordinatorDescription": { "message": "As a Coordinator this device can invite and remove users, and manage project details." }, diff --git a/src/frontend/screens/BackgroundMaps/SelectMapShareDevice.tsx b/src/frontend/screens/BackgroundMaps/SelectMapShareDevice.tsx index 35745bdd35..95db825f4a 100644 --- a/src/frontend/screens/BackgroundMaps/SelectMapShareDevice.tsx +++ b/src/frontend/screens/BackgroundMaps/SelectMapShareDevice.tsx @@ -39,23 +39,23 @@ export function getSelectableDevicesForMapShare({ const m = defineMessages({ title: { - id: 'screen.Settings.ProjectSettings.YourTeam.SelectDevice.titleMapShare', + id: 'screen.Settings.ProjectSettings.BackgroundMaps.SelectDevice.titleMapShare', defaultMessage: 'Select Device', }, notSeeingDevice: { - id: 'screen.Settings.ProjectSettings.YourTeam.SelectDevice.notSeeingDevice', + id: 'screen.Settings.ProjectSettings.BackgroundMaps.SelectDevice.notSeeingDevice', defaultMessage: 'Not seeing a Device?', }, sameWifi: { - id: 'screen.Settings.ProjectSettings.YourTeam.SelectDevice.sameWifi', + id: 'screen.Settings.ProjectSettings.BackgroundMaps.SelectDevice.sameWifi', defaultMessage: 'Make sure both devices are on the same wifi network ', }, sameVersion: { - id: 'screen.Settings.ProjectSettings.YourTeam.SelectDevice.sameVersion', + id: 'screen.Settings.ProjectSettings.BackgroundMaps.SelectDevice.sameVersion', defaultMessage: 'Make sure both devices are on the same version of CoMapeo', }, sameProject: { - id: 'screen.Settings.ProjectSettings.YourTeam.SelectDevice.sameProject', + id: 'screen.Settings.ProjectSettings.BackgroundMaps.SelectDevice.sameProject', defaultMessage: 'Make sure both devices have the same project open', }, }); From a180aea999fa98939620bc18296e38382abcc7b6 Mon Sep 17 00:00:00 2001 From: Cindy Green Date: Thu, 5 Mar 2026 14:28:50 -0500 Subject: [PATCH 41/72] Makes loader for map file bigger --- src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx b/src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx index 710a8b2d18..be7a6ee0b7 100644 --- a/src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx +++ b/src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx @@ -193,7 +193,7 @@ export function BackgroundMapsScreen() { <> {isRefetching ? ( - + ) : error || !customMapInfo ? ( {isUploading ? ( - + ) : ( + renderIcon={({color, size}) => ( + + )} + /> )} {t(m.acceptedFileTypes)} @@ -427,17 +416,6 @@ const styles = StyleSheet.create({ color: NEW_DARK_GREY, flex: 1, }, - buttonContentContainer: { - flexDirection: 'row', - alignItems: 'center', - gap: 12, - }, - buttonTextBase: { - letterSpacing: 0.5, - }, - asteriskText: { - color: RED, - }, fileTypeText: { textAlign: 'center', color: NEW_DARK_GREY, diff --git a/src/frontend/screens/BackgroundMaps/SelectMapShareDevice.tsx b/src/frontend/screens/BackgroundMaps/SelectMapShareDevice.tsx index 95db825f4a..91667a87e3 100644 --- a/src/frontend/screens/BackgroundMaps/SelectMapShareDevice.tsx +++ b/src/frontend/screens/BackgroundMaps/SelectMapShareDevice.tsx @@ -39,23 +39,23 @@ export function getSelectableDevicesForMapShare({ const m = defineMessages({ title: { - id: 'screen.Settings.ProjectSettings.BackgroundMaps.SelectDevice.titleMapShare', + id: 'screen.BackgroundMaps.SelectDevice.titleMapShare', defaultMessage: 'Select Device', }, notSeeingDevice: { - id: 'screen.Settings.ProjectSettings.BackgroundMaps.SelectDevice.notSeeingDevice', + id: 'screen.BackgroundMaps.SelectDevice.notSeeingDevice', defaultMessage: 'Not seeing a Device?', }, sameWifi: { - id: 'screen.Settings.ProjectSettings.BackgroundMaps.SelectDevice.sameWifi', + id: 'screen.BackgroundMaps.SelectDevice.sameWifi', defaultMessage: 'Make sure both devices are on the same wifi network ', }, sameVersion: { - id: 'screen.Settings.ProjectSettings.BackgroundMaps.SelectDevice.sameVersion', + id: 'screen.BackgroundMaps.SelectDevice.sameVersion', defaultMessage: 'Make sure both devices are on the same version of CoMapeo', }, sameProject: { - id: 'screen.Settings.ProjectSettings.BackgroundMaps.SelectDevice.sameProject', + id: 'screen.BackgroundMaps.SelectDevice.sameProject', defaultMessage: 'Make sure both devices have the same project open', }, }); diff --git a/src/frontend/screens/BackgroundMaps/WaitingForMapAccept.tsx b/src/frontend/screens/BackgroundMaps/WaitingForMapAccept.tsx index 7bdfddcef3..b80c51c88e 100644 --- a/src/frontend/screens/BackgroundMaps/WaitingForMapAccept.tsx +++ b/src/frontend/screens/BackgroundMaps/WaitingForMapAccept.tsx @@ -7,7 +7,7 @@ import { useCancelSentMapShare, useSingleSentMapShare, } from '@comapeo/core-react'; -import InviteSent from '../../images/InviteSent.svg'; +import SendingIcon from '../../images/SendingIcon.svg'; import {usePreventAndroidBackButton} from '../../hooks/usePreventAndroidBackButton'; import {useCurrentTime} from '../../hooks/useCurrentTime'; import {HeaderText} from '../../sharedComponents/Text/HeaderText'; @@ -91,7 +91,7 @@ export function WaitingForMapAccept({ return ( - + {t(m.waitingMessage)} diff --git a/src/frontend/screens/YourTeam/ReviewAndInvite/WaitingForInviteAccept.tsx b/src/frontend/screens/YourTeam/ReviewAndInvite/WaitingForInviteAccept.tsx index b6aa30b4a4..2727c63795 100644 --- a/src/frontend/screens/YourTeam/ReviewAndInvite/WaitingForInviteAccept.tsx +++ b/src/frontend/screens/YourTeam/ReviewAndInvite/WaitingForInviteAccept.tsx @@ -1,5 +1,5 @@ import {AppState, StyleSheet, View} from 'react-native'; -import InviteSent from '../../../images/InviteSent.svg'; +import SendingIcon from '../../../images/SendingIcon.svg'; import {defineMessages, useIntl} from 'react-intl'; import React from 'react'; import {TextButton} from '../../../sharedComponents/TextButton'; @@ -57,7 +57,7 @@ export const WaitingForInviteAccept = ({ return ( - + {t(m.waitingMessage)} From 262c6e5ea978cd5a60acdc71f0734c3b379d4914 Mon Sep 17 00:00:00 2001 From: Cindy Green Date: Mon, 16 Mar 2026 12:40:22 +0100 Subject: [PATCH 45/72] Updates messages ids --- messages/en.json | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/messages/en.json b/messages/en.json index bd7dbdb1d5..c1a13d4933 100644 --- a/messages/en.json +++ b/messages/en.json @@ -427,6 +427,21 @@ "projectInfoCard.participant": { "message": "You are a participant on this project." }, + "screen.BackgroundMaps.SelectDevice.notSeeingDevice": { + "message": "Not seeing a Device?" + }, + "screen.BackgroundMaps.SelectDevice.sameProject": { + "message": "Make sure both devices have the same project open" + }, + "screen.BackgroundMaps.SelectDevice.sameVersion": { + "message": "Make sure both devices are on the same version of CoMapeo" + }, + "screen.BackgroundMaps.SelectDevice.sameWifi": { + "message": "Make sure both devices are on the same wifi network" + }, + "screen.BackgroundMaps.SelectDevice.titleMapShare": { + "message": "Select Device" + }, "screen.EditProjectDetails.descriptionPlaceholder": { "message": "Short Description of the Project, less than 60 characters." }, @@ -442,21 +457,6 @@ "screen.EditProjectDetails.projectName": { "message": "Project Name" }, - "screen.Settings.ProjectSettings.BackgroundMaps.SelectDevice.notSeeingDevice": { - "message": "Not seeing a Device?" - }, - "screen.Settings.ProjectSettings.BackgroundMaps.SelectDevice.sameProject": { - "message": "Make sure both devices have the same project open" - }, - "screen.Settings.ProjectSettings.BackgroundMaps.SelectDevice.sameVersion": { - "message": "Make sure both devices are on the same version of CoMapeo" - }, - "screen.Settings.ProjectSettings.BackgroundMaps.SelectDevice.sameWifi": { - "message": "Make sure both devices are on the same wifi network" - }, - "screen.Settings.ProjectSettings.BackgroundMaps.SelectDevice.titleMapShare": { - "message": "Select Device" - }, "screen.Settings.ProjectSettings.YourTeam.ReviewAndInvite.ReviewInvitation.coordinator": { "message": "Coordinator" }, From b7c4d9eccf0bf4c68dd28aa9af9bbad1ab1c7b9e Mon Sep 17 00:00:00 2001 From: cimigree Date: Tue, 17 Mar 2026 10:41:05 +0100 Subject: [PATCH 46/72] feat: decline map (#1697) * Adds test buttons and UI screens for when a map share is declined. * Messages * Merges with develop. Adds error passing. * Deletes unused file. * Updates to naming and UI * Messages * Moves function * Fixes screen name --- messages/en.json | 15 +- src/frontend/Navigation/Stack/AppScreens.tsx | 6 +- .../BackgroundMaps/SelectMapShareDevice.tsx | 2 +- .../BackgroundMaps/SendingBackgroundMap.tsx | 215 ++++++++++++++++++ .../BackgroundMaps/WaitingForMapAccept.tsx | 123 ---------- src/frontend/sharedTypes/navigation.ts | 2 +- 6 files changed, 232 insertions(+), 131 deletions(-) create mode 100644 src/frontend/screens/BackgroundMaps/SendingBackgroundMap.tsx delete mode 100644 src/frontend/screens/BackgroundMaps/WaitingForMapAccept.tsx diff --git a/messages/en.json b/messages/en.json index c1a13d4933..83e4350919 100644 --- a/messages/en.json +++ b/messages/en.json @@ -1965,13 +1965,22 @@ "screens.Settings.MapManagement.BackgroundMaps.sendMap": { "message": "Send Map" }, - "screens.Settings.MapManagement.WaitingForMapToAccept.cancel": { + "screens.Settings.MapManagement.SendingBackgroundMap.cancel": { "message": "Cancel" }, - "screens.Settings.MapManagement.WaitingForMapToAccept.timerMessage": { + "screens.Settings.MapManagement.SendingBackgroundMap.close": { + "message": "Close" + }, + "screens.Settings.MapManagement.SendingBackgroundMap.deviceNoSpace": { + "message": "Device does not have enough space." + }, + "screens.Settings.MapManagement.SendingBackgroundMap.mapDeclined": { + "message": "Map declined." + }, + "screens.Settings.MapManagement.SendingBackgroundMap.timerMessage": { "message": "Map sent {time}s ago" }, - "screens.Settings.MapManagement.WaitingForMapToAccept.waitingMessage": { + "screens.Settings.MapManagement.SendingBackgroundMap.waitingMessage": { "message": "Waiting for Device to Accept Map" }, "screens.Settings.NameDefaultProjectIntro.description": { diff --git a/src/frontend/Navigation/Stack/AppScreens.tsx b/src/frontend/Navigation/Stack/AppScreens.tsx index 06b31d58c6..34e01659c6 100644 --- a/src/frontend/Navigation/Stack/AppScreens.tsx +++ b/src/frontend/Navigation/Stack/AppScreens.tsx @@ -141,7 +141,7 @@ import {WhatsIncludedBottomSheet} from '../../screens/RemoteArchive/WhatsInclude import {MapAddedBottomSheet} from '../../screens/BackgroundMaps/MapAddedBottomSheet.tsx'; import {DeleteCustomMapBottomSheet} from '../../screens/BackgroundMaps/DeleteCustomMapBottomSheet.tsx'; import {ConfirmDiscardTrackBottomSheet} from '../../screens/SaveTrack/ConfirmDiscardTrackBottomSheet.tsx'; -import {WaitingForMapAccept} from '../../screens/BackgroundMaps/WaitingForMapAccept.tsx'; +import {SendingBackgroundMap} from '../../screens/BackgroundMaps/SendingBackgroundMap.tsx'; import {RootStack} from './RootStack.ts'; export const TAB_BAR_HEIGHT = 70; @@ -402,8 +402,8 @@ export const createAppScreens = ({ options={createBackgroundMapsNavigationOptions({intl})} /> diff --git a/src/frontend/screens/BackgroundMaps/SelectMapShareDevice.tsx b/src/frontend/screens/BackgroundMaps/SelectMapShareDevice.tsx index 91667a87e3..94c440eeaa 100644 --- a/src/frontend/screens/BackgroundMaps/SelectMapShareDevice.tsx +++ b/src/frontend/screens/BackgroundMaps/SelectMapShareDevice.tsx @@ -118,7 +118,7 @@ export const SelectMapShareDevice = ({ receiverDeviceId: deviceId, mapId: 'custom', }); - navigation.navigate('WaitingForMapAccept', { + navigation.navigate('SendingBackgroundMap', { shareId: mapShare.shareId, }); } catch (err) { diff --git a/src/frontend/screens/BackgroundMaps/SendingBackgroundMap.tsx b/src/frontend/screens/BackgroundMaps/SendingBackgroundMap.tsx new file mode 100644 index 0000000000..745d01a6c4 --- /dev/null +++ b/src/frontend/screens/BackgroundMaps/SendingBackgroundMap.tsx @@ -0,0 +1,215 @@ +import * as React from 'react'; +import {AppState, StyleSheet, View} from 'react-native'; +import {defineMessages, useIntl} from 'react-intl'; +import * as Sentry from '@sentry/react-native'; +import MaterialIcon from '@react-native-vector-icons/material-icons'; + +import { + useCancelSentMapShare, + useSingleSentMapShare, +} from '@comapeo/core-react'; +import SendingIcon from '../../images/SendingIcon.svg'; +import StackSvg from '../../images/Stack.svg'; +import {usePreventAndroidBackButton} from '../../hooks/usePreventAndroidBackButton'; +import {HeaderText} from '../../sharedComponents/Text/HeaderText'; +import {BodyText} from '../../sharedComponents/Text/BodyText'; +import {type NativeRootNavigationProps} from '../../sharedTypes/navigation'; +import {TextButton} from '../../sharedComponents/TextButton'; +import {SecondaryButton} from '../../sharedComponents/Buttons'; +import {VERY_LIGHT_GREY, RED, NEW_DARK_GREY, BLACK} from '../../lib/styles'; +import {toError} from '../../utils/errors'; +import {useCurrentTime} from '../../hooks/useCurrentTime'; + +const m = defineMessages({ + waitingMessage: { + id: 'screens.Settings.MapManagement.SendingBackgroundMap.waitingMessage', + defaultMessage: 'Waiting for Device to Accept Map', + }, + timerMessage: { + id: 'screens.Settings.MapManagement.SendingBackgroundMap.timerMessage', + defaultMessage: 'Map sent {time}s ago', + }, + cancel: { + id: 'screens.Settings.MapManagement.SendingBackgroundMap.cancel', + defaultMessage: 'Cancel', + }, + mapDeclined: { + id: 'screens.Settings.MapManagement.SendingBackgroundMap.mapDeclined', + defaultMessage: 'Map declined.', + }, + deviceNoSpace: { + id: 'screens.Settings.MapManagement.SendingBackgroundMap.deviceNoSpace', + defaultMessage: 'Device does not have enough space.', + }, + close: { + id: 'screens.Settings.MapManagement.SendingBackgroundMap.close', + defaultMessage: 'Close', + }, +}); + +export function SendingBackgroundMap({ + route, + navigation, +}: NativeRootNavigationProps<'SendingBackgroundMap'>) { + const {formatMessage: t} = useIntl(); + const {shareId} = route.params; + + const mapShare = useSingleSentMapShare({shareId}); + const {mutate: cancelMapShare} = useCancelSentMapShare(); + const currentTime = useCurrentTime(1000); + + usePreventAndroidBackButton(); + + const elapsedSeconds = mapShare + ? Math.floor((currentTime.getTime() - mapShare.mapShareCreatedAt) / 1000) + : 0; + + const cancelShare = React.useCallback(() => { + cancelMapShare( + {shareId}, + { + onSuccess: () => { + navigation.goBack(); + }, + onError: (err: Error) => { + Sentry.captureException(err); + navigation.replace('ErrorBottomSheet', {error: err}); + }, + }, + ); + }, [navigation, cancelMapShare, shareId]); + + React.useEffect(() => { + const subscription = AppState.addEventListener('change', nextState => { + if (nextState === 'background') { + cancelShare(); + } + }); + + return () => subscription.remove(); + }, [cancelShare]); + + React.useEffect(() => { + if (!mapShare) { + navigation.popTo('BackgroundMaps'); + return; + } + if (mapShare.status === 'aborted') { + // TODO: Show map cancelled sheet when that exists + navigation.popTo('BackgroundMaps'); + return; + } + if (mapShare.status === 'error') { + Sentry.captureException(mapShare.error); + navigation.replace('ErrorBottomSheet', { + error: toError(mapShare.error, 'Map share failed'), + }); + } + }, [mapShare, navigation]); + + const handleClose = () => { + navigation.popTo('BackgroundMaps'); + }; + + function formatElapsed(totalSeconds: number) { + const minutes = Math.floor(totalSeconds / 60); + const seconds = totalSeconds % 60; + + return `${minutes.toString().padStart(2, '0')}:${seconds + .toString() + .padStart(2, '0')}`; + } + + if (mapShare?.status === 'declined') { + const reason = (mapShare as {reason?: string}).reason; + return ; + } + + return ( + + + + {t(m.waitingMessage)} + + + {t(m.timerMessage, {time: formatElapsed(elapsedSeconds)})} + + + + + ); +} + +function MapDeclined({ + reason, + onClose, +}: { + reason?: string; + onClose: () => void; +}) { + const {formatMessage: t} = useIntl(); + const isDiskSpaceIssue = reason === 'disk_full'; + const headerText = isDiskSpaceIssue ? t(m.deviceNoSpace) : t(m.mapDeclined); + + return ( + + + + + + + + + + + + + {headerText} + + + + + + + + ); +} + +const styles = StyleSheet.create({ + baseContainer: { + flex: 1, + padding: 20, + }, + container: { + flex: 1, + alignItems: 'center', + justifyContent: 'center', + gap: 35, + }, + centeredContent: { + flex: 1, + alignItems: 'center', + justifyContent: 'center', + gap: 30, + }, + iconBackground: { + width: 80, + height: 80, + borderRadius: 40, + backgroundColor: VERY_LIGHT_GREY, + justifyContent: 'center', + alignItems: 'center', + }, + warningBadge: { + position: 'absolute', + right: -5, + bottom: -5, + }, + declinedHeaderText: { + textAlign: 'center', + color: BLACK, + }, + buttonContainer: { + alignItems: 'center', + }, +}); diff --git a/src/frontend/screens/BackgroundMaps/WaitingForMapAccept.tsx b/src/frontend/screens/BackgroundMaps/WaitingForMapAccept.tsx deleted file mode 100644 index b80c51c88e..0000000000 --- a/src/frontend/screens/BackgroundMaps/WaitingForMapAccept.tsx +++ /dev/null @@ -1,123 +0,0 @@ -import * as React from 'react'; -import {AppState, StyleSheet, View} from 'react-native'; -import {defineMessages, useIntl} from 'react-intl'; -import * as Sentry from '@sentry/react-native'; - -import { - useCancelSentMapShare, - useSingleSentMapShare, -} from '@comapeo/core-react'; -import SendingIcon from '../../images/SendingIcon.svg'; -import {usePreventAndroidBackButton} from '../../hooks/usePreventAndroidBackButton'; -import {useCurrentTime} from '../../hooks/useCurrentTime'; -import {HeaderText} from '../../sharedComponents/Text/HeaderText'; -import {BodyText} from '../../sharedComponents/Text/BodyText'; -import {type NativeRootNavigationProps} from '../../sharedTypes/navigation'; -import {TextButton} from '../../sharedComponents/TextButton'; - -const m = defineMessages({ - waitingMessage: { - id: 'screens.Settings.MapManagement.WaitingForMapToAccept.waitingMessage', - defaultMessage: 'Waiting for Device to Accept Map', - }, - timerMessage: { - id: 'screens.Settings.MapManagement.WaitingForMapToAccept.timerMessage', - defaultMessage: 'Map sent {time}s ago', - }, - cancel: { - id: 'screens.Settings.MapManagement.WaitingForMapToAccept.cancel', - defaultMessage: 'Cancel', - }, -}); - -export function WaitingForMapAccept({ - route, - navigation, -}: NativeRootNavigationProps<'WaitingForMapAccept'>) { - const {formatMessage: t} = useIntl(); - const {shareId} = route.params; - - const mapShare = useSingleSentMapShare({shareId}); - const {mutate: cancelMapShare} = useCancelSentMapShare(); - const currentTime = useCurrentTime(1000); - - usePreventAndroidBackButton(); - - const elapsedSeconds = mapShare - ? Math.floor((currentTime.getTime() - mapShare.mapShareCreatedAt) / 1000) - : 0; - - const cancelShare = React.useCallback(() => { - cancelMapShare( - {shareId}, - { - onSuccess: () => { - navigation.goBack(); - }, - onError: (err: Error) => { - Sentry.captureException(err); - navigation.replace('ErrorBottomSheet', {error: err}); - }, - }, - ); - }, [navigation, cancelMapShare, shareId]); - - React.useEffect(() => { - const subscription = AppState.addEventListener('change', nextState => { - if (nextState === 'background') { - cancelShare(); - } - }); - - return () => subscription.remove(); - }, [cancelShare]); - - React.useEffect(() => { - if (!mapShare) return; - - // Stay on screen while pending - waiting for recipient to accept - if (mapShare.status === 'pending') return; - - if (mapShare.status === 'downloading' || mapShare.status === 'completed') { - // TODO: Show sending map UI while downloading - navigation.popTo('BackgroundMaps'); - } else if (mapShare.status === 'declined') { - // TODO: Show the map decline UI with the reason for decline - navigation.popTo('BackgroundMaps'); - } else if (mapShare.status === 'canceled') { - navigation.popTo('BackgroundMaps'); - } - }, [mapShare, navigation]); - - return ( - - - - {t(m.waitingMessage)} - - - {t(m.timerMessage, {time: formatElapsed(elapsedSeconds)})} - - - - - ); -} - -function formatElapsed(totalSeconds: number) { - const minutes = Math.floor(totalSeconds / 60); - const seconds = totalSeconds % 60; - - return `${minutes.toString().padStart(2, '0')}:${seconds - .toString() - .padStart(2, '0')}`; -} - -const styles = StyleSheet.create({ - container: { - alignItems: 'center', - justifyContent: 'center', - gap: 35, - flex: 1, - }, -}); diff --git a/src/frontend/sharedTypes/navigation.ts b/src/frontend/sharedTypes/navigation.ts index b9059c5f04..23a363190b 100644 --- a/src/frontend/sharedTypes/navigation.ts +++ b/src/frontend/sharedTypes/navigation.ts @@ -123,7 +123,7 @@ export type RootStackParamsList = { SettingsPrivacyPolicy: undefined; SuccessfullyAddedArchive: {archiveName: string; url: string}; BackgroundMaps: undefined; - WaitingForMapAccept: { + SendingBackgroundMap: { shareId: string; }; ExchangeSettingsBottomSheet: undefined; From b435b1e2df0b2cc616f809fe125e189bb50295fa Mon Sep 17 00:00:00 2001 From: cimigree Date: Tue, 17 Mar 2026 11:00:24 +0100 Subject: [PATCH 47/72] feat: sending maps (#1699) * Adds test buttons and UI screens for when a map share is declined. * Messages * Merges with develop. Adds error passing. * Adds screens and test button for sending map and map sent screens. * Messages. * Fixes navigation to decline screen. * Deletes unused file. * Deletes unused files. * Messages * Updates to naming and UI * Messages * Moves function * Fixes screen name --- messages/en.json | 9 ++ .../BackgroundMaps/SendingBackgroundMap.tsx | 108 +++++++++++++++++- .../BackgroundMaps/SendingMapProgressBar.tsx | 39 +++++++ 3 files changed, 154 insertions(+), 2 deletions(-) create mode 100644 src/frontend/screens/BackgroundMaps/SendingMapProgressBar.tsx diff --git a/messages/en.json b/messages/en.json index 83e4350919..37b8e1500e 100644 --- a/messages/en.json +++ b/messages/en.json @@ -1974,9 +1974,18 @@ "screens.Settings.MapManagement.SendingBackgroundMap.deviceNoSpace": { "message": "Device does not have enough space." }, + "screens.Settings.MapManagement.SendingBackgroundMap.done": { + "message": "Done" + }, "screens.Settings.MapManagement.SendingBackgroundMap.mapDeclined": { "message": "Map declined." }, + "screens.Settings.MapManagement.SendingBackgroundMap.mapSent": { + "message": "Map sent!" + }, + "screens.Settings.MapManagement.SendingBackgroundMap.sending": { + "message": "Sending..." + }, "screens.Settings.MapManagement.SendingBackgroundMap.timerMessage": { "message": "Map sent {time}s ago" }, diff --git a/src/frontend/screens/BackgroundMaps/SendingBackgroundMap.tsx b/src/frontend/screens/BackgroundMaps/SendingBackgroundMap.tsx index 745d01a6c4..022d74d709 100644 --- a/src/frontend/screens/BackgroundMaps/SendingBackgroundMap.tsx +++ b/src/frontend/screens/BackgroundMaps/SendingBackgroundMap.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import {AppState, StyleSheet, View} from 'react-native'; +import {AppState, StyleSheet, View, Pressable} from 'react-native'; import {defineMessages, useIntl} from 'react-intl'; import * as Sentry from '@sentry/react-native'; import MaterialIcon from '@react-native-vector-icons/material-icons'; @@ -10,14 +10,23 @@ import { } from '@comapeo/core-react'; import SendingIcon from '../../images/SendingIcon.svg'; import StackSvg from '../../images/Stack.svg'; +import SuccessIcon from '../../images/Success.svg'; import {usePreventAndroidBackButton} from '../../hooks/usePreventAndroidBackButton'; import {HeaderText} from '../../sharedComponents/Text/HeaderText'; import {BodyText} from '../../sharedComponents/Text/BodyText'; import {type NativeRootNavigationProps} from '../../sharedTypes/navigation'; import {TextButton} from '../../sharedComponents/TextButton'; import {SecondaryButton} from '../../sharedComponents/Buttons'; -import {VERY_LIGHT_GREY, RED, NEW_DARK_GREY, BLACK} from '../../lib/styles'; +import {IconTitleDescription} from '../../sharedComponents/IconTitleDescription'; import {toError} from '../../utils/errors'; +import { + VERY_LIGHT_GREY, + RED, + NEW_DARK_GREY, + BLACK, + COMAPEO_BLUE, +} from '../../lib/styles'; +import {SendingMapProgressBar} from './SendingMapProgressBar'; import {useCurrentTime} from '../../hooks/useCurrentTime'; const m = defineMessages({ @@ -45,6 +54,18 @@ const m = defineMessages({ id: 'screens.Settings.MapManagement.SendingBackgroundMap.close', defaultMessage: 'Close', }, + sending: { + id: 'screens.Settings.MapManagement.SendingBackgroundMap.sending', + defaultMessage: 'Sending...', + }, + mapSent: { + id: 'screens.Settings.MapManagement.SendingBackgroundMap.mapSent', + defaultMessage: 'Map sent!', + }, + done: { + id: 'screens.Settings.MapManagement.SendingBackgroundMap.done', + defaultMessage: 'Done', + }, }); export function SendingBackgroundMap({ @@ -125,6 +146,14 @@ export function SendingBackgroundMap({ return ; } + if (mapShare?.status === 'downloading') { + return ; + } + + if (mapShare?.status === 'completed') { + return ; + } + return ( @@ -175,6 +204,61 @@ function MapDeclined({ ); } +function SendingMap({ + shareId, + onCancel, +}: { + shareId: string; + onCancel: () => void; +}) { + const {formatMessage: t} = useIntl(); + + return ( + + + + + + + {t(m.sending)} + + + + + + + + + + {t(m.cancel)} + + + + ); +} + +function MapSent({onDone}: {onDone: () => void}) { + const {formatMessage: t} = useIntl(); + + return ( + + } + title={t(m.mapSent)} + /> + + + + + ); +} + const styles = StyleSheet.create({ baseContainer: { flex: 1, @@ -209,7 +293,27 @@ const styles = StyleSheet.create({ textAlign: 'center', color: BLACK, }, + sendingTopSection: { + alignItems: 'center', + gap: 20, + marginTop: 120, + }, + progressContainer: { + gap: 15, + }, + syncIcon: { + alignSelf: 'flex-start', + }, buttonContainer: { alignItems: 'center', }, + cancelButton: { + marginTop: 80, + }, + cancelText: { + color: COMAPEO_BLUE, + }, + sentContent: { + paddingTop: 180, + }, }); diff --git a/src/frontend/screens/BackgroundMaps/SendingMapProgressBar.tsx b/src/frontend/screens/BackgroundMaps/SendingMapProgressBar.tsx new file mode 100644 index 0000000000..72bc4d97a2 --- /dev/null +++ b/src/frontend/screens/BackgroundMaps/SendingMapProgressBar.tsx @@ -0,0 +1,39 @@ +import {Bar as ProgressBar} from 'react-native-progress'; +import {COMAPEO_BLUE, VERY_LIGHT_GREY, WHITE} from '../../lib/styles'; +import {useSingleSentMapShare} from '@comapeo/core-react'; + +type SendingMapProgressBarProps = { + shareId: string; +}; + +/** + * Progress bar for sending a map share. + * + * Anti pattern note. This component fetches mapShare data internally rather than + * receiving it as a prop. This is intentional to isolate frequent re-renders + * (which occur on every byte uploaded) to only this small component, preventing + * "Maximum update depth exceeded" errors that would occur if the parent component + * re-rendered on every update. + */ +export function SendingMapProgressBar({shareId}: SendingMapProgressBarProps) { + const mapShare = useSingleSentMapShare({shareId}); + const isSending = mapShare.status === 'downloading'; + const progress = isSending + ? Math.min(mapShare.bytesDownloaded / mapShare.estimatedSizeBytes, 1) + : 0; + + return ( + + ); +} From 57b27c581f00322cb7313c5d86b64a516319f617 Mon Sep 17 00:00:00 2001 From: cimigree Date: Wed, 18 Mar 2026 20:39:53 +0100 Subject: [PATCH 48/72] feat: receive map bottom sheet (#1700) * Adds test buttons and UI screens for when a map share is declined. * Messages * Merges with develop. Adds error passing. * Adds screens and test button for sending map and map sent screens. * Messages. * Fixes navigation to decline screen. * Adds received map bottom sheet and listener. * Messages. * Better error handling * Removes test buttons. Handles acceptance of map shared. * New api file. * Adds query client to the provider so map can update. * Navigate away if error on map share * Deletes unused screens. * Deletes unused file. * Deletes unused files. * Updates messages. * Updates package lock * Messages * Updates to naming and UI * Messages * Moves function * Fixes screen name * Fixes screen name * Removes old tarball * Uses navigation replace. * Map share only appears if there is one screen in the stack * Removes unnecessary navigation stack check. Removes unnecessary use effect. --- messages/en.json | 24 ++ package-lock.json | 346 +++++++++++++++++- package.json | 3 + src/frontend/Navigation/Stack/AppScreens.tsx | 5 + src/frontend/Navigation/Stack/index.tsx | 7 + src/frontend/constants.ts | 4 + src/frontend/lib/screenNameChecks.ts | 13 +- src/frontend/lib/styles.ts | 2 + .../BackgroundMaps/MapReceivedBottomSheet.tsx | 291 +++++++++++++++ .../BackgroundMaps/SendingBackgroundMap.tsx | 1 - .../PendingMapSharesListener.tsx | 26 ++ src/frontend/sharedTypes/navigation.ts | 3 + 12 files changed, 714 insertions(+), 11 deletions(-) create mode 100644 src/frontend/screens/BackgroundMaps/MapReceivedBottomSheet.tsx create mode 100644 src/frontend/sharedComponents/PendingMapSharesListener.tsx diff --git a/messages/en.json b/messages/en.json index 37b8e1500e..8fc8e41dcb 100644 --- a/messages/en.json +++ b/messages/en.json @@ -1965,6 +1965,30 @@ "screens.Settings.MapManagement.BackgroundMaps.sendMap": { "message": "Send Map" }, + "screens.Settings.MapManagement.MapReceived.accept": { + "message": "Accept" + }, + "screens.Settings.MapManagement.MapReceived.decline": { + "message": "Decline" + }, + "screens.Settings.MapManagement.MapReceived.kmAway": { + "message": "{distance} km away" + }, + "screens.Settings.MapManagement.MapReceived.locationNotCovered": { + "message": "Current location not covered!" + }, + "screens.Settings.MapManagement.MapReceived.mbNeeded": { + "message": "{size} MB needed" + }, + "screens.Settings.MapManagement.MapReceived.megabytes": { + "message": "{size} MB" + }, + "screens.Settings.MapManagement.MapReceived.notEnoughSpace": { + "message": "Not enough free space!" + }, + "screens.Settings.MapManagement.MapReceived.sharingDevice": { + "message": "{deviceName} wants to share..." + }, "screens.Settings.MapManagement.SendingBackgroundMap.cancel": { "message": "Cancel" }, diff --git a/package-lock.json b/package-lock.json index 70c486984d..90685f7a5e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -35,7 +35,10 @@ "@rnmapbox/maps": "10.1.42", "@sentry/react-native": "8.0.0", "@tanstack/react-query": "5.90.21", + "@turf/bbox-polygon": "7.3.4", + "@turf/boolean-point-in-polygon": "7.3.4", "@turf/helpers": "7.3.4", + "@turf/point-to-polygon-distance": "7.3.4", "@turf/random": "7.3.4", "buffer": "6.0.3", "cheap-ruler": "4.0.0", @@ -8759,6 +8762,20 @@ "url": "https://opencollective.com/turf" } }, + "node_modules/@turf/bbox-polygon": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@turf/bbox-polygon/-/bbox-polygon-7.3.4.tgz", + "integrity": "sha512-XCDYQwCA41Bum3R1xX0Na1nR4ozoe/pCYy5bxqrzyMs87kPJUIfBrD5IWxjnZyLqFpfEpolMHJz5ed1uA2PanQ==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "7.3.4", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, "node_modules/@turf/bbox/node_modules/@turf/helpers": { "version": "6.5.0", "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.5.0.tgz", @@ -8806,6 +8823,19 @@ "url": "https://opencollective.com/turf" } }, + "node_modules/@turf/boolean-contains/node_modules/@turf/boolean-point-in-polygon": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-6.5.0.tgz", + "integrity": "sha512-DtSuVFB26SI+hj0SjrvXowGTUCHlgevPAIsukssW6BG5MlNSBQAo70wpICBNJL6RjukXg8d2eXaAWuD/CqL00A==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, "node_modules/@turf/boolean-contains/node_modules/@turf/helpers": { "version": "6.5.0", "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.5.0.tgz", @@ -8816,23 +8846,31 @@ } }, "node_modules/@turf/boolean-point-in-polygon": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-6.5.0.tgz", - "integrity": "sha512-DtSuVFB26SI+hj0SjrvXowGTUCHlgevPAIsukssW6BG5MlNSBQAo70wpICBNJL6RjukXg8d2eXaAWuD/CqL00A==", + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-7.3.4.tgz", + "integrity": "sha512-v/4hfyY90Vz9cDgs2GwjQf+Lft8o7mNCLJOTz/iv8SHAIgMMX0czEoIaNVOJr7tBqPqwin1CGwsncrkf5C9n8Q==", "license": "MIT", "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" + "@turf/helpers": "7.3.4", + "@turf/invariant": "7.3.4", + "@types/geojson": "^7946.0.10", + "point-in-polygon-hao": "^1.1.0", + "tslib": "^2.8.1" }, "funding": { "url": "https://opencollective.com/turf" } }, - "node_modules/@turf/boolean-point-in-polygon/node_modules/@turf/helpers": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.5.0.tgz", - "integrity": "sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==", + "node_modules/@turf/boolean-point-in-polygon/node_modules/@turf/invariant": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-7.3.4.tgz", + "integrity": "sha512-88Eo4va4rce9sNZs6XiMJowWkikM3cS2TBhaCKlU+GFHdNf8PFEpiU42VDU8q5tOF6/fu21Rvlke5odgOGW4AQ==", "license": "MIT", + "dependencies": { + "@turf/helpers": "7.3.4", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, "funding": { "url": "https://opencollective.com/turf" } @@ -8859,6 +8897,20 @@ "url": "https://opencollective.com/turf" } }, + "node_modules/@turf/clone": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@turf/clone/-/clone-7.3.4.tgz", + "integrity": "sha512-pwQ+RyQw986uu7IulY/18NRAebwZZScb084bvVqVkTrllwLSv4oVBqUxmUMiwtp+PNdiRGRFOvNyZqtRsiD+Jw==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "7.3.4", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, "node_modules/@turf/destination": { "version": "6.5.0", "resolved": "https://registry.npmjs.org/@turf/destination/-/destination-6.5.0.tgz", @@ -9105,6 +9157,209 @@ "url": "https://opencollective.com/turf" } }, + "node_modules/@turf/point-to-line-distance": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@turf/point-to-line-distance/-/point-to-line-distance-7.3.4.tgz", + "integrity": "sha512-IdPAxlAQZj7FCZg+ObyVHlNdqwLL/oxYoQjpxMNJ511gNxokCtEv0aeRZQjYOYIxr9Ss97v3yo3ILJaF9V2kPw==", + "license": "MIT", + "dependencies": { + "@turf/bearing": "7.3.4", + "@turf/distance": "7.3.4", + "@turf/helpers": "7.3.4", + "@turf/invariant": "7.3.4", + "@turf/meta": "7.3.4", + "@turf/nearest-point-on-line": "7.3.4", + "@turf/projection": "7.3.4", + "@turf/rhumb-bearing": "7.3.4", + "@turf/rhumb-distance": "7.3.4", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/point-to-line-distance/node_modules/@turf/bearing": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@turf/bearing/-/bearing-7.3.4.tgz", + "integrity": "sha512-zvFjapyFaOrM8nBtAND7f4yb0BJV0jyj6cyoXyTYqLY+3Hn0eHgL0M8lwxDLbTom5KfqYDHDVDQC3+VSfypoEA==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "7.3.4", + "@turf/invariant": "7.3.4", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/point-to-line-distance/node_modules/@turf/distance": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@turf/distance/-/distance-7.3.4.tgz", + "integrity": "sha512-9drWgd46uHPPyzgrcRQLgSvdS/SjVlQ6ZIBoRQagS5P2kSjUbcOXHIMeOSPwfxwlKhEtobLyr+IiR2ns1TfF8w==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "7.3.4", + "@turf/invariant": "7.3.4", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/point-to-line-distance/node_modules/@turf/invariant": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-7.3.4.tgz", + "integrity": "sha512-88Eo4va4rce9sNZs6XiMJowWkikM3cS2TBhaCKlU+GFHdNf8PFEpiU42VDU8q5tOF6/fu21Rvlke5odgOGW4AQ==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "7.3.4", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/point-to-line-distance/node_modules/@turf/meta": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-7.3.4.tgz", + "integrity": "sha512-tlmw9/Hs1p2n0uoHVm1w3ugw1I6L8jv9YZrcdQa4SH5FX5UY0ATrKeIvfA55FlL//PGuYppJp+eyg/0eb4goqw==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "7.3.4", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/point-to-line-distance/node_modules/@turf/nearest-point-on-line": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@turf/nearest-point-on-line/-/nearest-point-on-line-7.3.4.tgz", + "integrity": "sha512-DQrP3lRju83rIXFN68tUEpc7ki/eRwdwBkK2CTT4RAcyCxbcH2NGJPQv8dYiww/Ar77u1WLVn+aINXZH904dWw==", + "license": "MIT", + "dependencies": { + "@turf/distance": "7.3.4", + "@turf/helpers": "7.3.4", + "@turf/invariant": "7.3.4", + "@turf/meta": "7.3.4", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/point-to-polygon-distance": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@turf/point-to-polygon-distance/-/point-to-polygon-distance-7.3.4.tgz", + "integrity": "sha512-VxbkgHyzCkYWSxirqSUqw+lzbYmTf2qFhVZ/T5dprhwyXWcgalpupvgRzmZmjKkgsoJ017vrvCNKZRaCCn+Z7Q==", + "license": "MIT", + "dependencies": { + "@turf/boolean-point-in-polygon": "7.3.4", + "@turf/helpers": "7.3.4", + "@turf/invariant": "7.3.4", + "@turf/meta": "7.3.4", + "@turf/point-to-line-distance": "7.3.4", + "@turf/polygon-to-line": "7.3.4", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/point-to-polygon-distance/node_modules/@turf/invariant": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-7.3.4.tgz", + "integrity": "sha512-88Eo4va4rce9sNZs6XiMJowWkikM3cS2TBhaCKlU+GFHdNf8PFEpiU42VDU8q5tOF6/fu21Rvlke5odgOGW4AQ==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "7.3.4", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/point-to-polygon-distance/node_modules/@turf/meta": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-7.3.4.tgz", + "integrity": "sha512-tlmw9/Hs1p2n0uoHVm1w3ugw1I6L8jv9YZrcdQa4SH5FX5UY0ATrKeIvfA55FlL//PGuYppJp+eyg/0eb4goqw==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "7.3.4", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/polygon-to-line": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@turf/polygon-to-line/-/polygon-to-line-7.3.4.tgz", + "integrity": "sha512-xhmOZ5rHZAKLUDLeYKWMsX84ip8CCGOcGLBHtPPYOjdIDHddMV6Sxt5kVgkmlZpK6NEWEmOD6lYR4obxHcHlGA==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "7.3.4", + "@turf/invariant": "7.3.4", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/polygon-to-line/node_modules/@turf/invariant": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-7.3.4.tgz", + "integrity": "sha512-88Eo4va4rce9sNZs6XiMJowWkikM3cS2TBhaCKlU+GFHdNf8PFEpiU42VDU8q5tOF6/fu21Rvlke5odgOGW4AQ==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "7.3.4", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/projection": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@turf/projection/-/projection-7.3.4.tgz", + "integrity": "sha512-p91zOaLmzoBHzU/2H6Ot1tOhTmAom85n1P7I4Oo0V9xU8hmJXWfNnomLFf/6rnkKDIFZkncLQIBz4iIecZ61sA==", + "license": "MIT", + "dependencies": { + "@turf/clone": "7.3.4", + "@turf/helpers": "7.3.4", + "@turf/meta": "7.3.4", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/projection/node_modules/@turf/meta": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-7.3.4.tgz", + "integrity": "sha512-tlmw9/Hs1p2n0uoHVm1w3ugw1I6L8jv9YZrcdQa4SH5FX5UY0ATrKeIvfA55FlL//PGuYppJp+eyg/0eb4goqw==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "7.3.4", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, "node_modules/@turf/random": { "version": "7.3.4", "resolved": "https://registry.npmjs.org/@turf/random/-/random-7.3.4.tgz", @@ -9119,6 +9374,64 @@ "url": "https://opencollective.com/turf" } }, + "node_modules/@turf/rhumb-bearing": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@turf/rhumb-bearing/-/rhumb-bearing-7.3.4.tgz", + "integrity": "sha512-tvX1toSo80q0iL0cUMMXpSKsCCfOjRqDGCmOdR6B9shhk6xP1ZM2PLQDr+MFPBFeGyQuyY4CNFkV2+3DF49vYw==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "7.3.4", + "@turf/invariant": "7.3.4", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/rhumb-bearing/node_modules/@turf/invariant": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-7.3.4.tgz", + "integrity": "sha512-88Eo4va4rce9sNZs6XiMJowWkikM3cS2TBhaCKlU+GFHdNf8PFEpiU42VDU8q5tOF6/fu21Rvlke5odgOGW4AQ==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "7.3.4", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/rhumb-distance": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@turf/rhumb-distance/-/rhumb-distance-7.3.4.tgz", + "integrity": "sha512-phwskeijdgYMsR3qDQmytfsg2iZcp3uWK7UFc76wKTEpxozbDGFI4enX5gXvZPpyI1iD7gsktGqHsO33AjnFDA==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "7.3.4", + "@turf/invariant": "7.3.4", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/rhumb-distance/node_modules/@turf/invariant": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-7.3.4.tgz", + "integrity": "sha512-88Eo4va4rce9sNZs6XiMJowWkikM3cS2TBhaCKlU+GFHdNf8PFEpiU42VDU8q5tOF6/fu21Rvlke5odgOGW4AQ==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "7.3.4", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, "node_modules/@tybys/wasm-util": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz", @@ -27497,6 +27810,15 @@ "node": ">=4.0.0" } }, + "node_modules/point-in-polygon-hao": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/point-in-polygon-hao/-/point-in-polygon-hao-1.2.4.tgz", + "integrity": "sha512-x2pcvXeqhRHlNRdhLs/tgFapAbSSe86wa/eqmj1G6pWftbEs5aVRJhRGM6FYSUERKu0PjekJzMq0gsI2XyiclQ==", + "license": "MIT", + "dependencies": { + "robust-predicates": "^3.0.2" + } + }, "node_modules/postcss": { "version": "8.4.49", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", @@ -29772,6 +30094,12 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/robust-predicates": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==", + "license": "Unlicense" + }, "node_modules/rpc-reflector": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/rpc-reflector/-/rpc-reflector-3.0.1.tgz", diff --git a/package.json b/package.json index 9f259c7bb2..2c03d29d52 100644 --- a/package.json +++ b/package.json @@ -61,6 +61,9 @@ "@tanstack/react-query": "5.90.21", "@turf/helpers": "7.3.4", "@turf/random": "7.3.4", + "@turf/bbox-polygon": "7.3.4", + "@turf/boolean-point-in-polygon": "7.3.4", + "@turf/point-to-polygon-distance": "7.3.4", "buffer": "6.0.3", "cheap-ruler": "4.0.0", "eventemitter3": "5.0.4", diff --git a/src/frontend/Navigation/Stack/AppScreens.tsx b/src/frontend/Navigation/Stack/AppScreens.tsx index 34e01659c6..7268c16c76 100644 --- a/src/frontend/Navigation/Stack/AppScreens.tsx +++ b/src/frontend/Navigation/Stack/AppScreens.tsx @@ -141,6 +141,7 @@ import {WhatsIncludedBottomSheet} from '../../screens/RemoteArchive/WhatsInclude import {MapAddedBottomSheet} from '../../screens/BackgroundMaps/MapAddedBottomSheet.tsx'; import {DeleteCustomMapBottomSheet} from '../../screens/BackgroundMaps/DeleteCustomMapBottomSheet.tsx'; import {ConfirmDiscardTrackBottomSheet} from '../../screens/SaveTrack/ConfirmDiscardTrackBottomSheet.tsx'; +import {MapReceivedBottomSheet} from '../../screens/BackgroundMaps/MapReceivedBottomSheet.tsx'; import {SendingBackgroundMap} from '../../screens/BackgroundMaps/SendingBackgroundMap.tsx'; import {RootStack} from './RootStack.ts'; @@ -648,6 +649,10 @@ export const createAppScreens = ({ name="ConfirmDiscardTrackBottomSheet" component={ConfirmDiscardTrackBottomSheet} /> + ); diff --git a/src/frontend/Navigation/Stack/index.tsx b/src/frontend/Navigation/Stack/index.tsx index 9aecb1e81c..96324f978e 100644 --- a/src/frontend/Navigation/Stack/index.tsx +++ b/src/frontend/Navigation/Stack/index.tsx @@ -9,6 +9,7 @@ import {Loading} from '../../sharedComponents/Loading'; import {createOnboardingScreens} from './OnboardingScreens'; import {createAppScreens} from './AppScreens'; import {PendingInvitesListener} from '../../sharedComponents/PendingInvitesListener'; +import {PendingMapSharesListener} from '../../sharedComponents/PendingMapSharesListener'; import {useOwnDeviceInfo} from '@comapeo/core-react'; import {useActiveProjectId} from '../../contexts/ActiveProjectIdStoreContext'; import {AuthScreen} from '../../screens/AuthScreen'; @@ -67,6 +68,12 @@ export const RootStackNavigator = () => { navigation.navigate('InviteReceived', {inviteId}) } /> + + navigation.navigate('MapReceivedBottomSheet', {shareId}) + } + /> {children} diff --git a/src/frontend/constants.ts b/src/frontend/constants.ts index adca74f7c4..58f0895788 100644 --- a/src/frontend/constants.ts +++ b/src/frontend/constants.ts @@ -57,6 +57,10 @@ export const INVITE_SCREEN_NAME: (keyof AppStackParamsList)[] = [ 'TrackRecordingActive', ]; +export const MAP_SHARE_SCREEN_NAMES: (keyof AppStackParamsList)[] = [ + 'MapReceivedBottomSheet', +]; + // Replicates the root query key from comapeo/core-react v3.3.0 // (see https://github.com/digidem/comapeo-core-react/blob/59a80cf0a1b9dad13e5f066233dae2465d2d20b1/src/lib/react-query/shared.ts#L6) // so partial invalidations align with the library’s queries. diff --git a/src/frontend/lib/screenNameChecks.ts b/src/frontend/lib/screenNameChecks.ts index 89b412298c..f0b11170a2 100644 --- a/src/frontend/lib/screenNameChecks.ts +++ b/src/frontend/lib/screenNameChecks.ts @@ -1,4 +1,8 @@ -import {EDITING_SCREEN_NAMES, INVITE_SCREEN_NAME} from '../constants'; +import { + EDITING_SCREEN_NAMES, + INVITE_SCREEN_NAME, + MAP_SHARE_SCREEN_NAMES, +} from '../constants'; export function isEditingScreen(routeName: string) { for (const name of EDITING_SCREEN_NAMES) { @@ -13,3 +17,10 @@ export function isInviteScreen(routeName: string) { } return false; } + +export function isMapShareScreen(routeName: string) { + for (const name of MAP_SHARE_SCREEN_NAMES) { + if (name === routeName) return true; + } + return false; +} diff --git a/src/frontend/lib/styles.ts b/src/frontend/lib/styles.ts index 9aa5c969d6..70a60ceb83 100644 --- a/src/frontend/lib/styles.ts +++ b/src/frontend/lib/styles.ts @@ -25,3 +25,5 @@ export const SYNC_BACKGROUND = '#2348B2'; export const GPS_MODAL_TEXT = 'rgb(40,40,40)'; export const DARK_GREEN = '#59A553'; export const WARNING_RED = '#D92222'; +export const LIGHT_GREEN = '#EEF6EE'; +export const LIGHT_ORANGE = '#FFF5EB'; diff --git a/src/frontend/screens/BackgroundMaps/MapReceivedBottomSheet.tsx b/src/frontend/screens/BackgroundMaps/MapReceivedBottomSheet.tsx new file mode 100644 index 0000000000..40197ed17b --- /dev/null +++ b/src/frontend/screens/BackgroundMaps/MapReceivedBottomSheet.tsx @@ -0,0 +1,291 @@ +import * as React from 'react'; +import {StyleSheet, View} from 'react-native'; +import {defineMessages, useIntl} from 'react-intl'; +import bboxPolygon from '@turf/bbox-polygon'; +import booleanPointInPolygon from '@turf/boolean-point-in-polygon'; +import pointToPolygonDistance from '@turf/point-to-polygon-distance'; + +import StackSvg from '../../images/Stack.svg'; +import CautionSvg from '../../images/caution.svg'; +import {BottomSheetWrapper} from '../../sharedComponents/BottomSheetWrapper'; +import {HeaderText} from '../../sharedComponents/Text/HeaderText'; +import {BodyText} from '../../sharedComponents/Text/BodyText'; +import {PrimaryButton, SecondaryButton} from '../../sharedComponents/Buttons'; +import {type NativeRootNavigationProps} from '../../sharedTypes/navigation'; +import {useStorageReadingQuery} from '../../hooks/useStorageReadingQuery'; +import {useLocationState} from '../../contexts/LocationContext'; +import { + BLACK, + BLUE_GREY, + NEW_DARK_GREY, + VERY_LIGHT_GREY, + LIGHT_GREEN, + LIGHT_ORANGE, +} from '../../lib/styles'; +import { + useDeclineReceivedMapShare, + useDownloadReceivedMapShare, + useSingleReceivedMapShare, +} from '@comapeo/core-react'; +import * as Sentry from '@sentry/react-native'; +import {toError} from '../../utils/errors'; + +const m = defineMessages({ + sharingDevice: { + id: 'screens.Settings.MapManagement.MapReceived.sharingDevice', + defaultMessage: '{deviceName} wants to share...', + }, + accept: { + id: 'screens.Settings.MapManagement.MapReceived.accept', + defaultMessage: 'Accept', + }, + decline: { + id: 'screens.Settings.MapManagement.MapReceived.decline', + defaultMessage: 'Decline', + }, + locationNotCovered: { + id: 'screens.Settings.MapManagement.MapReceived.locationNotCovered', + defaultMessage: 'Current location not covered!', + }, + kmAway: { + id: 'screens.Settings.MapManagement.MapReceived.kmAway', + defaultMessage: '{distance} km away', + }, + notEnoughSpace: { + id: 'screens.Settings.MapManagement.MapReceived.notEnoughSpace', + defaultMessage: 'Not enough free space!', + }, + mbNeeded: { + id: 'screens.Settings.MapManagement.MapReceived.mbNeeded', + defaultMessage: '{size} MB needed', + }, + megabytes: { + id: 'screens.Settings.MapManagement.MapReceived.megabytes', + defaultMessage: '{size} MB', + }, +}); + +export function MapReceivedBottomSheet({ + route, + navigation, +}: NativeRootNavigationProps<'MapReceivedBottomSheet'>) { + const {formatMessage: t} = useIntl(); + const {shareId} = route.params; + const mapShare = useSingleReceivedMapShare({shareId}); + + const {data: storageData} = useStorageReadingQuery(); + const {freeBytes} = storageData; + + const currentLocation = useLocationState(state => state.location); + + const warningInfo = React.useMemo(() => { + if (freeBytes < mapShare.estimatedSizeBytes) { + const mbNeeded = Math.ceil( + (mapShare.estimatedSizeBytes - freeBytes) / (1024 * 1024), + ); + return { + warning: 'space' as const, + distanceKm: null, + mbNeeded, + }; + } + + if (currentLocation?.coords && mapShare.bounds) { + const userPoint = [ + currentLocation.coords.longitude, + currentLocation.coords.latitude, + ]; + const bboxPoly = bboxPolygon([...mapShare.bounds]); + const isInside = booleanPointInPolygon(userPoint, bboxPoly); + if (!isInside) { + const distanceKm = pointToPolygonDistance(userPoint, bboxPoly, { + units: 'kilometers', + }); + + return { + warning: 'location' as const, + distanceKm, + mbNeeded: 0, + }; + } + } + + // per Gregor, if there is no current location, consider the user to be inside the map + + return { + warning: null, + distanceKm: null, + mbNeeded: 0, + }; + }, [ + freeBytes, + mapShare.estimatedSizeBytes, + mapShare.bounds, + currentLocation, + ]); + + const {mutate: declineMapShare} = useDeclineReceivedMapShare(); + const {mutate: downloadMapShare} = useDownloadReceivedMapShare(); + + const handleAccept = () => { + // Add code here to navigate to canceled sheet + downloadMapShare( + {shareId}, + { + onSuccess: () => { + // TODO: show different UI if downloading starts successfully but there is a warning (e.g. location not covered) + navigation.goBack(); + }, + onError: (err: unknown) => { + const error = toError(err, 'Failed to start map download'); + Sentry.captureException(error); + navigation.replace('ErrorBottomSheet', {error}); + }, + }, + ); + }; + + const handleDecline = () => { + // Add code here to navigate to canceled sheet + const reason = + warningInfo.warning === 'space' ? 'disk_full' : 'user_rejected'; + declineMapShare( + {shareId, reason}, + { + onSuccess: () => { + navigation.goBack(); + }, + onError: (err: unknown) => { + Sentry.captureException(err); + navigation.goBack(); + }, + }, + ); + }; + + return ( + + + + {t(m.sharingDevice, {deviceName: mapShare.senderDeviceName})} + + + + + + {mapShare.mapName} + + + + + + + + {t(m.megabytes, { + size: (mapShare.estimatedSizeBytes / (1024 * 1024)).toFixed( + 2, + ), + })} + + + + {warningInfo.warning && ( + + + + + {warningInfo.warning === 'location' + ? t(m.locationNotCovered) + : t(m.notEnoughSpace)} + + + {warningInfo.warning === 'location' + ? t(m.kmAway, { + distance: warningInfo.distanceKm?.toFixed(1), + }) + : t(m.mbNeeded, {size: warningInfo.mbNeeded})} + + + + )} + + + + + {warningInfo.warning !== 'space' && ( + + )} + + + + + ); +} + +const styles = StyleSheet.create({ + container: { + gap: 12, + }, + header: { + textTransform: 'uppercase', + color: BLACK, + fontWeight: '500', + }, + mapCard: { + backgroundColor: LIGHT_GREEN, + borderWidth: 1, + borderColor: VERY_LIGHT_GREY, + borderRadius: 6, + shadowColor: BLACK, + shadowOffset: {width: 0, height: 1}, + shadowOpacity: 0.25, + shadowRadius: 5, + elevation: 5, + }, + mapCardContent: { + padding: 20, + gap: 20, + }, + mapName: { + color: BLACK, + }, + iconRow: { + flexDirection: 'row', + alignItems: 'center', + gap: 10, + }, + iconContainer: { + width: 20, + height: 20, + justifyContent: 'center', + alignItems: 'center', + }, + sizeText: { + color: NEW_DARK_GREY, + }, + warningBox: { + flexDirection: 'row', + alignItems: 'center', + padding: 12, + gap: 10, + backgroundColor: LIGHT_ORANGE, + borderWidth: 1, + borderColor: BLUE_GREY, + borderRadius: 2, + }, + warningTextContainer: { + flex: 1, + }, + warningSubtitle: { + color: NEW_DARK_GREY, + }, + buttonsContainer: { + paddingTop: 8, + gap: 12, + alignItems: 'center', + }, +}); diff --git a/src/frontend/screens/BackgroundMaps/SendingBackgroundMap.tsx b/src/frontend/screens/BackgroundMaps/SendingBackgroundMap.tsx index 022d74d709..85a0980c5c 100644 --- a/src/frontend/screens/BackgroundMaps/SendingBackgroundMap.tsx +++ b/src/frontend/screens/BackgroundMaps/SendingBackgroundMap.tsx @@ -163,7 +163,6 @@ export function SendingBackgroundMap({ {t(m.timerMessage, {time: formatElapsed(elapsedSeconds)})} - ); diff --git a/src/frontend/sharedComponents/PendingMapSharesListener.tsx b/src/frontend/sharedComponents/PendingMapSharesListener.tsx new file mode 100644 index 0000000000..a8b9ba1f9c --- /dev/null +++ b/src/frontend/sharedComponents/PendingMapSharesListener.tsx @@ -0,0 +1,26 @@ +import {useManyReceivedMapShares} from '@comapeo/core-react'; +import {useEffect} from 'react'; +import {isEditingScreen, isMapShareScreen} from '../lib/screenNameChecks'; + +export const PendingMapSharesListener = ({ + currentRouteName, + navigateToMapShareScreen, +}: { + currentRouteName: string | undefined; + navigateToMapShareScreen: (shareId: string) => void; +}) => { + const mapShares = useManyReceivedMapShares(); + + useEffect(() => { + const pendingShare = mapShares.find(share => share.status === 'pending'); + if (!pendingShare || !currentRouteName) return; + + if (isMapShareScreen(currentRouteName)) return; + + if (isEditingScreen(currentRouteName)) return; + + navigateToMapShareScreen(pendingShare.shareId); + }, [mapShares, currentRouteName, navigateToMapShareScreen]); + + return null; +}; diff --git a/src/frontend/sharedTypes/navigation.ts b/src/frontend/sharedTypes/navigation.ts index 23a363190b..ac0ceca6e6 100644 --- a/src/frontend/sharedTypes/navigation.ts +++ b/src/frontend/sharedTypes/navigation.ts @@ -123,6 +123,9 @@ export type RootStackParamsList = { SettingsPrivacyPolicy: undefined; SuccessfullyAddedArchive: {archiveName: string; url: string}; BackgroundMaps: undefined; + MapReceivedBottomSheet: { + shareId: string; + }; SendingBackgroundMap: { shareId: string; }; From c0e998de3c392636e835723151a22b50a7002ee6 Mon Sep 17 00:00:00 2001 From: cimigree Date: Mon, 30 Mar 2026 22:16:19 +0200 Subject: [PATCH 49/72] feat: replace background map (#1704) * Adds test buttons and UI screens for when a map share is declined. * Messages * Merges with develop. Adds error passing. * Adds screens and test button for sending map and map sent screens. * Messages. * Fixes navigation to decline screen. * Adds received map bottom sheet and listener. * Messages. * Better error handling * Removes test buttons. Handles acceptance of map shared. * New api file. * Adds query client to the provider so map can update. * Adds flow for receiving a map and replacing a map * Messages * Trying to handle errors better. Trying to eliminate error about updating maximum depth. Handling cancels. * Reducing interval. Preventing back button. * Navigate away if error on map share * Includes necessary screens and navigation * Deletes unused screens. * Adjusts to use component instead of navigating to separate screen. Isolates progress bars. Renames screens to be more generic since they now contain multiple UI. * Messages and handles aborted received map. * Adjusts navigation for going back to prevent errors * Deletes unused file. * Deletes unused files. * Updates messages. * Updates package lock * Messages * Adds screen for a cancelled or aborted map share * Updates canceled sheet. * Updates to naming and UI * Messages * Moves function * Fixes screen name * Fixes screen name * Removes old tarball * Updates messages * Only shows devices open to the same project * Removes extra import * Check for error when showing map replace sheet. * Uses navigation replace. * Map share only appears if there is one screen in the stack * Handles cancellation of map sending more cleanly * Removes unnecessary navigation stack check. Removes unnecessary use effect. * Goes back instead of to cancelled. Centers button. * Adds use callback for cancel button. * chore: replace with `replace` --------- Co-authored-by: ErikSin <67773827+ErikSin@users.noreply.github.com> --- messages/en.json | 33 ++++ src/frontend/Navigation/Stack/AppScreens.tsx | 24 ++- src/frontend/constants.ts | 4 + .../screens/BackgroundMaps/BackgroundMaps.tsx | 2 +- .../BackgroundMaps/MapReceivedBottomSheet.tsx | 45 +++-- .../MapShareCanceledBottomSheet.tsx | 60 ++++++ .../BackgroundMaps/ReceivingBackgroundMap.tsx | 175 ++++++++++++++++++ .../ReceivingMapProgressBar.tsx | 39 ++++ .../BackgroundMaps/ReplaceBackgroundMap.tsx | 145 +++++++++++++++ .../BackgroundMaps/SendingBackgroundMap.tsx | 5 +- src/frontend/sharedTypes/navigation.ts | 7 + 11 files changed, 517 insertions(+), 22 deletions(-) create mode 100644 src/frontend/screens/BackgroundMaps/MapShareCanceledBottomSheet.tsx create mode 100644 src/frontend/screens/BackgroundMaps/ReceivingBackgroundMap.tsx create mode 100644 src/frontend/screens/BackgroundMaps/ReceivingMapProgressBar.tsx create mode 100644 src/frontend/screens/BackgroundMaps/ReplaceBackgroundMap.tsx diff --git a/messages/en.json b/messages/en.json index 8fc8e41dcb..a1eec72a6a 100644 --- a/messages/en.json +++ b/messages/en.json @@ -1905,6 +1905,12 @@ "screens.Settings.JoinAProject.title": { "message": "Join a Project" }, + "screens.Settings.MapManagement.BackgroundMapUpdated.done": { + "message": "Done" + }, + "screens.Settings.MapManagement.BackgroundMapUpdated.mapUpdated": { + "message": "Background map updated." + }, "screens.Settings.MapManagement.BackgroundMaps.acceptedFileTypes": { "message": "Accepted file types are .smp" }, @@ -1989,6 +1995,27 @@ "screens.Settings.MapManagement.MapReceived.sharingDevice": { "message": "{deviceName} wants to share..." }, + "screens.Settings.MapManagement.MapShareCanceled.close": { + "message": "Close" + }, + "screens.Settings.MapManagement.MapShareCanceled.message": { + "message": "Collaborator canceled sharing before completing." + }, + "screens.Settings.MapManagement.MapShareCanceled.title": { + "message": "Sharing Canceled" + }, + "screens.Settings.MapManagement.ReplaceBackgroundMap.cancel": { + "message": "Cancel" + }, + "screens.Settings.MapManagement.ReplaceBackgroundMap.replaceMapDescription": { + "message": "This device has a background map that will be replaced if you continue." + }, + "screens.Settings.MapManagement.ReplaceBackgroundMap.replaceMapTitle": { + "message": "Replace current background map?" + }, + "screens.Settings.MapManagement.ReplaceBackgroundMap.yesReplace": { + "message": "Yes, Replace" + }, "screens.Settings.MapManagement.SendingBackgroundMap.cancel": { "message": "Cancel" }, @@ -2016,6 +2043,12 @@ "screens.Settings.MapManagement.SendingBackgroundMap.waitingMessage": { "message": "Waiting for Device to Accept Map" }, + "screens.Settings.MapManagement.UpdatingBackgroundMap.cancel": { + "message": "Cancel" + }, + "screens.Settings.MapManagement.UpdatingBackgroundMap.updating": { + "message": "Updating..." + }, "screens.Settings.NameDefaultProjectIntro.description": { "message": "Invite devices to a new project with all your observations." }, diff --git a/src/frontend/Navigation/Stack/AppScreens.tsx b/src/frontend/Navigation/Stack/AppScreens.tsx index 7268c16c76..00bc6bd2d5 100644 --- a/src/frontend/Navigation/Stack/AppScreens.tsx +++ b/src/frontend/Navigation/Stack/AppScreens.tsx @@ -141,8 +141,11 @@ import {WhatsIncludedBottomSheet} from '../../screens/RemoteArchive/WhatsInclude import {MapAddedBottomSheet} from '../../screens/BackgroundMaps/MapAddedBottomSheet.tsx'; import {DeleteCustomMapBottomSheet} from '../../screens/BackgroundMaps/DeleteCustomMapBottomSheet.tsx'; import {ConfirmDiscardTrackBottomSheet} from '../../screens/SaveTrack/ConfirmDiscardTrackBottomSheet.tsx'; -import {MapReceivedBottomSheet} from '../../screens/BackgroundMaps/MapReceivedBottomSheet.tsx'; import {SendingBackgroundMap} from '../../screens/BackgroundMaps/SendingBackgroundMap.tsx'; +import {MapReceivedBottomSheet} from '../../screens/BackgroundMaps/MapReceivedBottomSheet.tsx'; +import {ReplaceBackgroundMap} from '../../screens/BackgroundMaps/ReplaceBackgroundMap.tsx'; +import {ReceivingBackgroundMap} from '../../screens/BackgroundMaps/ReceivingBackgroundMap.tsx'; +import {MapShareCanceledBottomSheet} from '../../screens/BackgroundMaps/MapShareCanceledBottomSheet.tsx'; import {RootStack} from './RootStack.ts'; export const TAB_BAR_HEIGHT = 70; @@ -407,6 +410,25 @@ export const createAppScreens = ({ component={SendingBackgroundMap} options={{headerShown: false}} /> + + + {process.env.EXPO_PUBLIC_FEATURE_TEST_DATA_UI && ( {t(m.description1)} {t(m.description2)} - + {isUploading ? ( ) : ( diff --git a/src/frontend/screens/BackgroundMaps/MapReceivedBottomSheet.tsx b/src/frontend/screens/BackgroundMaps/MapReceivedBottomSheet.tsx index 40197ed17b..030cb428a2 100644 --- a/src/frontend/screens/BackgroundMaps/MapReceivedBottomSheet.tsx +++ b/src/frontend/screens/BackgroundMaps/MapReceivedBottomSheet.tsx @@ -25,6 +25,7 @@ import { import { useDeclineReceivedMapShare, useDownloadReceivedMapShare, + useGetCustomMapInfo, useSingleReceivedMapShare, } from '@comapeo/core-react'; import * as Sentry from '@sentry/react-native'; @@ -124,17 +125,24 @@ export function MapReceivedBottomSheet({ currentLocation, ]); + const {data: customMapInfo, error: customMapError} = useGetCustomMapInfo(); const {mutate: declineMapShare} = useDeclineReceivedMapShare(); const {mutate: downloadMapShare} = useDownloadReceivedMapShare(); const handleAccept = () => { - // Add code here to navigate to canceled sheet + if (!mapShare || mapShare.status === 'canceled') { + navigation.replace('MapShareCanceledBottomSheet'); + return; + } + if (customMapInfo && !customMapError) { + navigation.replace('ReplaceBackgroundMap', {shareId}); + return; + } downloadMapShare( {shareId}, { onSuccess: () => { - // TODO: show different UI if downloading starts successfully but there is a warning (e.g. location not covered) - navigation.goBack(); + navigation.replace('ReceivingBackgroundMap', {shareId}); }, onError: (err: unknown) => { const error = toError(err, 'Failed to start map download'); @@ -146,21 +154,24 @@ export function MapReceivedBottomSheet({ }; const handleDecline = () => { - // Add code here to navigate to canceled sheet - const reason = - warningInfo.warning === 'space' ? 'disk_full' : 'user_rejected'; - declineMapShare( - {shareId, reason}, - { - onSuccess: () => { - navigation.goBack(); - }, - onError: (err: unknown) => { - Sentry.captureException(err); - navigation.goBack(); + if (!mapShare || mapShare.status === 'canceled') { + navigation.goBack(); + } else { + const reason = + warningInfo.warning === 'space' ? 'disk_full' : 'user_rejected'; + declineMapShare( + {shareId, reason}, + { + onSuccess: () => { + navigation.goBack(); + }, + onError: (err: unknown) => { + Sentry.captureException(err); + navigation.goBack(); + }, }, - }, - ); + ); + } }; return ( diff --git a/src/frontend/screens/BackgroundMaps/MapShareCanceledBottomSheet.tsx b/src/frontend/screens/BackgroundMaps/MapShareCanceledBottomSheet.tsx new file mode 100644 index 0000000000..6acebca82d --- /dev/null +++ b/src/frontend/screens/BackgroundMaps/MapShareCanceledBottomSheet.tsx @@ -0,0 +1,60 @@ +import * as React from 'react'; +import {StyleSheet, View} from 'react-native'; +import {defineMessages, useIntl} from 'react-intl'; +import {BottomSheetWrapper} from '../../sharedComponents/BottomSheetWrapper'; +import {SecondaryButton} from '../../sharedComponents/Buttons'; +import {type NativeRootNavigationProps} from '../../sharedTypes/navigation'; +import ErrorIcon from '../../images/Error.svg'; +import {IconTitleDescription} from '../../sharedComponents/IconTitleDescription'; + +const m = defineMessages({ + title: { + id: 'screens.Settings.MapManagement.MapShareCanceled.title', + defaultMessage: 'Sharing Canceled', + }, + message: { + id: 'screens.Settings.MapManagement.MapShareCanceled.message', + defaultMessage: 'Collaborator canceled sharing before completing.', + }, + close: { + id: 'screens.Settings.MapManagement.MapShareCanceled.close', + defaultMessage: 'Close', + }, +}); + +export function MapShareCanceledBottomSheet({ + navigation, +}: NativeRootNavigationProps<'MapShareCanceledBottomSheet'>) { + const {formatMessage: t} = useIntl(); + + const handleClose = () => { + navigation.popTo('BackgroundMaps'); + }; + + return ( + + + + } + title={t(m.title)} + description={t(m.message)} + /> + + + + + ); +} + +const styles = StyleSheet.create({ + container: { + height: '100%', + alignItems: 'center', + }, + contentContainer: { + flex: 1, + alignItems: 'center', + justifyContent: 'center', + }, +}); diff --git a/src/frontend/screens/BackgroundMaps/ReceivingBackgroundMap.tsx b/src/frontend/screens/BackgroundMaps/ReceivingBackgroundMap.tsx new file mode 100644 index 0000000000..317faaa1fa --- /dev/null +++ b/src/frontend/screens/BackgroundMaps/ReceivingBackgroundMap.tsx @@ -0,0 +1,175 @@ +import * as React from 'react'; +import {StyleSheet, View, Pressable} from 'react-native'; +import {defineMessages, useIntl} from 'react-intl'; +import MaterialIcon from '@react-native-vector-icons/material-icons'; +import * as Sentry from '@sentry/react-native'; + +import { + useAbortReceivedMapShareDownload, + useSingleReceivedMapShare, +} from '@comapeo/core-react'; +import StackSvg from '../../images/Stack.svg'; +import SuccessIcon from '../../images/Success.svg'; +import {HeaderText} from '../../sharedComponents/Text/HeaderText'; +import {type NativeRootNavigationProps} from '../../sharedTypes/navigation'; +import {toError} from '../../utils/errors'; +import {usePreventAndroidBackButton} from '../../hooks/usePreventAndroidBackButton'; +import {SecondaryButton} from '../../sharedComponents/Buttons'; +import {IconTitleDescription} from '../../sharedComponents/IconTitleDescription'; +import {ReceivingMapProgressBar} from './ReceivingMapProgressBar'; +import {VERY_LIGHT_GREY, NEW_DARK_GREY, COMAPEO_BLUE} from '../../lib/styles'; + +const m = defineMessages({ + updating: { + id: 'screens.Settings.MapManagement.UpdatingBackgroundMap.updating', + defaultMessage: 'Updating...', + }, + cancel: { + id: 'screens.Settings.MapManagement.UpdatingBackgroundMap.cancel', + defaultMessage: 'Cancel', + }, + mapUpdated: { + id: 'screens.Settings.MapManagement.BackgroundMapUpdated.mapUpdated', + defaultMessage: 'Background map updated.', + }, + done: { + id: 'screens.Settings.MapManagement.BackgroundMapUpdated.done', + defaultMessage: 'Done', + }, +}); + +export function ReceivingBackgroundMap({ + route, + navigation, +}: NativeRootNavigationProps<'ReceivingBackgroundMap'>) { + const {formatMessage: t} = useIntl(); + const {shareId} = route.params; + const {mutate: abortDownload} = useAbortReceivedMapShareDownload(); + const mapShare = useSingleReceivedMapShare({shareId}); + + usePreventAndroidBackButton(); + + React.useEffect(() => { + if (mapShare.status === 'canceled') { + navigation.replace('MapShareCanceledBottomSheet'); + return; + } + if (mapShare.status === 'error') { + const error = toError(mapShare.error, 'Map download failed'); + Sentry.captureException(mapShare.error); + navigation.replace('ErrorBottomSheet', {error}); + } + }, [mapShare, navigation]); + + const handleCancel = React.useCallback(() => { + abortDownload( + {shareId}, + { + onSuccess: () => { + navigation.popTo('BackgroundMaps'); + }, + onError: (err: unknown) => { + const error = toError(err, 'Failed to cancel map download'); + Sentry.captureException(error); + navigation.replace('ErrorBottomSheet', {error}); + }, + }, + ); + }, [abortDownload, shareId, navigation]); + + const handleDone = () => { + navigation.popTo('BackgroundMaps'); + }; + + if (mapShare?.status === 'completed') { + return ; + } + + return ( + + + + + + + {t(m.updating)} + + + + + + + + + + {t(m.cancel)} + + + + ); +} + +function MapUpdated({onDone}: {onDone: () => void}) { + const {formatMessage: t} = useIntl(); + + return ( + + + } title={t(m.mapUpdated)} /> + + + + + + ); +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + padding: 20, + alignItems: 'center', + }, + topSection: { + alignItems: 'center', + gap: 20, + marginTop: 120, + }, + iconBackground: { + width: 80, + height: 80, + borderRadius: 40, + backgroundColor: VERY_LIGHT_GREY, + justifyContent: 'center', + alignItems: 'center', + }, + progressContainer: { + gap: 15, + }, + syncIcon: { + alignSelf: 'flex-start', + }, + cancelButton: { + marginTop: 80, + }, + cancelText: { + color: COMAPEO_BLUE, + }, + successContainer: { + flex: 1, + padding: 20, + justifyContent: 'space-between', + }, + successContent: { + flex: 1, + justifyContent: 'center', + }, + buttonContainer: { + alignItems: 'center', + }, +}); diff --git a/src/frontend/screens/BackgroundMaps/ReceivingMapProgressBar.tsx b/src/frontend/screens/BackgroundMaps/ReceivingMapProgressBar.tsx new file mode 100644 index 0000000000..750234694b --- /dev/null +++ b/src/frontend/screens/BackgroundMaps/ReceivingMapProgressBar.tsx @@ -0,0 +1,39 @@ +import {Bar as ProgressBar} from 'react-native-progress'; +import {COMAPEO_BLUE, VERY_LIGHT_GREY, WHITE} from '../../lib/styles'; +import {useSingleReceivedMapShare} from '@comapeo/core-react'; + +type ReceivingMapProgressBarProps = { + shareId: string; +}; + +/** + * Anti pattern note. This component fetches mapShare data internally rather than + * receiving it as a prop. This is intentional to isolate frequent re-renders + * (which occur on every byte downloaded) to only this small component, preventing + * "Maximum update depth exceeded" errors that would occur if the parent component + * re-rendered on every update. + */ +export function ReceivingMapProgressBar({ + shareId, +}: ReceivingMapProgressBarProps) { + const mapShare = useSingleReceivedMapShare({shareId}); + const isDownloading = mapShare.status === 'downloading'; + const progress = isDownloading + ? Math.min(mapShare.bytesDownloaded / mapShare.estimatedSizeBytes, 1) + : 0; + + return ( + + ); +} diff --git a/src/frontend/screens/BackgroundMaps/ReplaceBackgroundMap.tsx b/src/frontend/screens/BackgroundMaps/ReplaceBackgroundMap.tsx new file mode 100644 index 0000000000..df464c6295 --- /dev/null +++ b/src/frontend/screens/BackgroundMaps/ReplaceBackgroundMap.tsx @@ -0,0 +1,145 @@ +import * as React from 'react'; +import {StyleSheet, View} from 'react-native'; +import {defineMessages, useIntl} from 'react-intl'; +import MaterialIcon from '@react-native-vector-icons/material-icons'; + +import {type NativeRootNavigationProps} from '../../sharedTypes/navigation'; +import StackSvg from '../../images/Stack.svg'; +import { + DestructiveButton, + SecondaryButton, +} from '../../sharedComponents/Buttons'; +import {IconTitleDescription} from '../../sharedComponents/IconTitleDescription'; +import {VERY_LIGHT_GREY, RED, NEW_DARK_GREY} from '../../lib/styles'; +import { + useDeclineReceivedMapShare, + useDownloadReceivedMapShare, +} from '@comapeo/core-react'; +import * as Sentry from '@sentry/react-native'; +import {toError} from '../../utils/errors'; + +const m = defineMessages({ + replaceMapTitle: { + id: 'screens.Settings.MapManagement.ReplaceBackgroundMap.replaceMapTitle', + defaultMessage: 'Replace current background map?', + }, + replaceMapDescription: { + id: 'screens.Settings.MapManagement.ReplaceBackgroundMap.replaceMapDescription', + defaultMessage: + 'This device has a background map that will be replaced if you continue.', + }, + yesReplace: { + id: 'screens.Settings.MapManagement.ReplaceBackgroundMap.yesReplace', + defaultMessage: 'Yes, Replace', + }, + cancel: { + id: 'screens.Settings.MapManagement.ReplaceBackgroundMap.cancel', + defaultMessage: 'Cancel', + }, +}); + +export function ReplaceBackgroundMap({ + route, + navigation, +}: NativeRootNavigationProps<'ReplaceBackgroundMap'>) { + const {formatMessage: t} = useIntl(); + const {shareId} = route.params; + const {mutate: declineMapShare} = useDeclineReceivedMapShare(); + const {mutate: downloadMapShare} = useDownloadReceivedMapShare(); + + const handleReplace = () => { + downloadMapShare( + {shareId}, + { + onSuccess: () => { + navigation.replace('ReceivingBackgroundMap', {shareId}); + }, + onError: (err: unknown) => { + const error = toError(err, 'Failed to start map download'); + Sentry.captureException(error); + navigation.navigate('ErrorBottomSheet', {error}); + }, + }, + ); + }; + + const handleCancel = () => { + declineMapShare( + {shareId, reason: 'user_rejected'}, + { + onSuccess: () => { + navigation.popTo('BackgroundMaps'); + }, + onError: (err: unknown) => { + const error = toError(err, 'Failed to decline map share'); + Sentry.captureException(error); + navigation.navigate('ErrorBottomSheet', {error}); + }, + }, + ); + }; + + const icon = ( + + + + + + + + + ); + + return ( + + + + + + + ( + + )} + /> + + + + ); +} + +const styles = StyleSheet.create({ + container: { + flex: 1, + paddingHorizontal: 40, + paddingVertical: 20, + }, + content: { + flex: 1, + justifyContent: 'center', + }, + iconBackground: { + width: 80, + height: 80, + borderRadius: 40, + backgroundColor: VERY_LIGHT_GREY, + justifyContent: 'center', + alignItems: 'center', + }, + warningBadge: { + position: 'absolute', + right: -5, + bottom: -5, + }, + buttonContainer: { + gap: 12, + alignItems: 'center', + }, +}); diff --git a/src/frontend/screens/BackgroundMaps/SendingBackgroundMap.tsx b/src/frontend/screens/BackgroundMaps/SendingBackgroundMap.tsx index 85a0980c5c..de61d34fef 100644 --- a/src/frontend/screens/BackgroundMaps/SendingBackgroundMap.tsx +++ b/src/frontend/screens/BackgroundMaps/SendingBackgroundMap.tsx @@ -19,6 +19,7 @@ import {TextButton} from '../../sharedComponents/TextButton'; import {SecondaryButton} from '../../sharedComponents/Buttons'; import {IconTitleDescription} from '../../sharedComponents/IconTitleDescription'; import {toError} from '../../utils/errors'; +import {SendingMapProgressBar} from './SendingMapProgressBar'; import { VERY_LIGHT_GREY, RED, @@ -26,7 +27,6 @@ import { BLACK, COMAPEO_BLUE, } from '../../lib/styles'; -import {SendingMapProgressBar} from './SendingMapProgressBar'; import {useCurrentTime} from '../../hooks/useCurrentTime'; const m = defineMessages({ @@ -116,8 +116,7 @@ export function SendingBackgroundMap({ return; } if (mapShare.status === 'aborted') { - // TODO: Show map cancelled sheet when that exists - navigation.popTo('BackgroundMaps'); + navigation.replace('MapShareCanceledBottomSheet'); return; } if (mapShare.status === 'error') { diff --git a/src/frontend/sharedTypes/navigation.ts b/src/frontend/sharedTypes/navigation.ts index ac0ceca6e6..fab5431817 100644 --- a/src/frontend/sharedTypes/navigation.ts +++ b/src/frontend/sharedTypes/navigation.ts @@ -126,9 +126,16 @@ export type RootStackParamsList = { MapReceivedBottomSheet: { shareId: string; }; + ReplaceBackgroundMap: { + shareId: string; + }; + ReceivingBackgroundMap: { + shareId: string; + }; SendingBackgroundMap: { shareId: string; }; + MapShareCanceledBottomSheet: undefined; ExchangeSettingsBottomSheet: undefined; AudioAskPermissionBottomSheet: { audioPermission: PermissionResponse; From b43fc973942564ad7073b8fc66f495afb0402e8c Mon Sep 17 00:00:00 2001 From: cimigree Date: Mon, 30 Mar 2026 22:17:59 +0200 Subject: [PATCH 50/72] feat: replace background map (#1704) * Adds test buttons and UI screens for when a map share is declined. * Messages * Merges with develop. Adds error passing. * Adds screens and test button for sending map and map sent screens. * Messages. * Fixes navigation to decline screen. * Adds received map bottom sheet and listener. * Messages. * Better error handling * Removes test buttons. Handles acceptance of map shared. * New api file. * Adds query client to the provider so map can update. * Adds flow for receiving a map and replacing a map * Messages * Trying to handle errors better. Trying to eliminate error about updating maximum depth. Handling cancels. * Reducing interval. Preventing back button. * Navigate away if error on map share * Includes necessary screens and navigation * Deletes unused screens. * Adjusts to use component instead of navigating to separate screen. Isolates progress bars. Renames screens to be more generic since they now contain multiple UI. * Messages and handles aborted received map. * Adjusts navigation for going back to prevent errors * Deletes unused file. * Deletes unused files. * Updates messages. * Updates package lock * Messages * Adds screen for a cancelled or aborted map share * Updates canceled sheet. * Updates to naming and UI * Messages * Moves function * Fixes screen name * Fixes screen name * Removes old tarball * Updates messages * Only shows devices open to the same project * Removes extra import * Check for error when showing map replace sheet. * Uses navigation replace. * Map share only appears if there is one screen in the stack * Handles cancellation of map sending more cleanly * Removes unnecessary navigation stack check. Removes unnecessary use effect. * Goes back instead of to cancelled. Centers button. * Adds use callback for cancel button. * chore: replace with `replace` --------- Co-authored-by: ErikSin <67773827+ErikSin@users.noreply.github.com> From 028291f7f737ecd0383730d9c747e17147861a86 Mon Sep 17 00:00:00 2001 From: Cindy Green Date: Thu, 2 Apr 2026 18:19:36 -0400 Subject: [PATCH 51/72] Updates no more project id. --- src/frontend/screens/BackgroundMaps/SelectMapShareDevice.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/frontend/screens/BackgroundMaps/SelectMapShareDevice.tsx b/src/frontend/screens/BackgroundMaps/SelectMapShareDevice.tsx index 94c440eeaa..d6d401ce05 100644 --- a/src/frontend/screens/BackgroundMaps/SelectMapShareDevice.tsx +++ b/src/frontend/screens/BackgroundMaps/SelectMapShareDevice.tsx @@ -69,7 +69,7 @@ export const SelectMapShareDevice = ({ const availablePeers = useInitiallyConnectedPeers(); const {projectId} = useActiveProject(); const syncState = useSyncState({projectId}); - const {mutateAsync: sendMapShare} = useSendMapShare({projectId}); + const {mutateAsync: sendMapShare} = useSendMapShare(); const selectableDevices = getSelectableDevicesForMapShare({ peers: availablePeers, From f713afc5b961e5dac382b9167c009f6996612f35 Mon Sep 17 00:00:00 2001 From: Cindy Green Date: Thu, 2 Apr 2026 18:33:18 -0400 Subject: [PATCH 52/72] Upgrades comapeo dependencies. --- package-lock.json | 907 ++++++----------------- package.json | 6 +- patches/@comapeo+core-react+10.0.1.patch | 57 -- patches/README.md | 8 - src/backend/package-lock.json | 523 +++++-------- src/backend/package.json | 8 +- src/backend/patches/typebox+1.1.10.patch | 23 - 7 files changed, 423 insertions(+), 1109 deletions(-) delete mode 100644 patches/@comapeo+core-react+10.0.1.patch delete mode 100644 src/backend/patches/typebox+1.1.10.patch diff --git a/package-lock.json b/package-lock.json index a25f792bd8..4acefd0be2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,8 +9,8 @@ "version": "1.11.0-pre", "hasInstallScript": true, "dependencies": { - "@comapeo/core-react": "10.0.1", - "@comapeo/ipc": "7.0.0", + "@comapeo/core-react": "11.0.2", + "@comapeo/ipc": "8.0.0", "@comapeo/nodejs-mobile-react-native": "18.20.4-2", "@expo-google-fonts/rubik": "0.4.2", "@formatjs/intl-getcanonicallocales": "3.2.1", @@ -108,7 +108,7 @@ "@babel/preset-env": "7.28.5", "@babel/runtime": "7.28.4", "@comapeo/cloud": "0.3.0", - "@comapeo/core": "6.0.2", + "@comapeo/core": "7.0.1", "@comapeo/schema": "2.2.0", "@digidem/types": "2.3.0", "@eslint-react/eslint-plugin": "1.52.2", @@ -2627,9 +2627,9 @@ } }, "node_modules/@comapeo/core": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@comapeo/core/-/core-6.0.2.tgz", - "integrity": "sha512-OEF9Q9umN6/k9p4ZHdzVwdIci9YUZXFv10cda9ATUQjudeILFt7IZQPLX6ZuSwWKYL3YHdH8VfwyawH+hpOYpQ==", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@comapeo/core/-/core-7.0.1.tgz", + "integrity": "sha512-og7ka/bbnHh6CdKFnF0SECZT/Urv/m9bG133owd1t3o8slKP25h6oxPJt9X2HgeBAP3ggybdBluynQDbHqFLQA==", "license": "MIT", "peer": true, "dependencies": { @@ -2677,6 +2677,7 @@ "protobufjs": "^7.2.3", "protomux": "^3.4.1", "quickbit-universal": "^2.2.0", + "ready-resource": "^1.2.0", "sodium-universal": "^4.0.0", "start-stop-state-machine": "^1.2.0", "streamx": "^2.19.0", @@ -2697,19 +2698,19 @@ } }, "node_modules/@comapeo/core-react": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@comapeo/core-react/-/core-react-10.0.1.tgz", - "integrity": "sha512-UqEYaduzM7cb9l48xgnXkMnuw7OK9FWhIDpcilXE+w0g7j19mP76KHYPbfgA8XOS89oGP2lfVQoE+gQ7Csxfgg==", + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/@comapeo/core-react/-/core-react-11.0.2.tgz", + "integrity": "sha512-8ZP3L3vXeMQxWyDWWmRYrXfSa/6dlXszmFQ9U/mR+DIy7JCAcNnRnqQKwF27esF3kQvPAedOM3l3l+fre2SAcA==", "license": "MIT", "dependencies": { - "@comapeo/map-server": "1.0.1", + "@comapeo/map-server": "^1.1.0", "ensure-error": "5.0.0", "eventsource-client": "1.2.0", "type-fest": "5.4.4" }, "peerDependencies": { - "@comapeo/core": "^6.0.2", - "@comapeo/ipc": "^7.0.0", + "@comapeo/core": "^7.0.1", + "@comapeo/ipc": "^8.0.0", "@tanstack/react-query": "^5", "react": "^18 || ^19" } @@ -2769,9 +2770,9 @@ } }, "node_modules/@comapeo/ipc": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@comapeo/ipc/-/ipc-7.0.0.tgz", - "integrity": "sha512-1Rh/pDQaHxfT6P3+Fao0r/ZuYKMt6BG2geIJeZyvonFhtS43LPGb8+JNj7kyhukksw+WDvccJ5nTu99X7a5ujQ==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@comapeo/ipc/-/ipc-8.0.0.tgz", + "integrity": "sha512-kzlcoB0fXj/w1CZxqp9rK86LKqeYSJ3dwh+I7TT1EzjNd9y66iXIviuwjuIb2hcNjT6BWv4pyvUfC9DWc1xIVQ==", "license": "MIT", "peer": true, "dependencies": { @@ -2783,13 +2784,13 @@ "node": ">=18.17.1" }, "peerDependencies": { - "@comapeo/core": "^6.0.1" + "@comapeo/core": "^7.0.1" } }, "node_modules/@comapeo/map-server": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@comapeo/map-server/-/map-server-1.0.1.tgz", - "integrity": "sha512-PzzC8YV9qcAu+6TtpNI0y/bc/hcJdQ2diz5/HZUKmqjSz8Q5DhAmBM832o5HLvGROAQT5vgMSe4qthRZK5XRLA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@comapeo/map-server/-/map-server-1.1.0.tgz", + "integrity": "sha512-1+JQdU7MEJCCV02rD7Rkx00ocR7z19OHjuLM3xGLJR/tzjIWhxFglvarJ8DMa07rgHQZhxvG/zEgcguD9aP7Tg==", "bundleDependencies": [ "@whatwg-node/server" ], @@ -2800,7 +2801,8 @@ "p-defer": "^4.0.1", "p-mutex": "^0.1.0", "secret-stream-http": "^1.0.1", - "styled-map-package": "^4.1.0", + "smp-noto-glyphs": "^1.0.0-pre.0", + "styled-map-package-api": "^5.0.0-pre.4", "typebox": "^1.0.61", "typed-event-target": "^3.4.0" } @@ -2822,254 +2824,6 @@ "inBundle": true, "license": "MIT" }, - "node_modules/@comapeo/map-server/node_modules/@inquirer/checkbox": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-3.0.1.tgz", - "integrity": "sha512-0hm2nrToWUdD6/UHnel/UKGdk1//ke5zGUpHIvk5ZWmaKezlGxZkOJXNSWsdxO/rEqTkbB3lNC2J6nBElV2aAQ==", - "license": "MIT", - "dependencies": { - "@inquirer/core": "^9.2.1", - "@inquirer/figures": "^1.0.6", - "@inquirer/type": "^2.0.0", - "ansi-escapes": "^4.3.2", - "yoctocolors-cjs": "^2.1.2" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@comapeo/map-server/node_modules/@inquirer/confirm": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-4.0.1.tgz", - "integrity": "sha512-46yL28o2NJ9doViqOy0VDcoTzng7rAb6yPQKU7VDLqkmbCaH4JqK4yk4XqlzNWy9PVC5pG1ZUXPBQv+VqnYs2w==", - "license": "MIT", - "dependencies": { - "@inquirer/core": "^9.2.1", - "@inquirer/type": "^2.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@comapeo/map-server/node_modules/@inquirer/core": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-9.2.1.tgz", - "integrity": "sha512-F2VBt7W/mwqEU4bL0RnHNZmC/OxzNx9cOYxHqnXX3MP6ruYvZUZAW9imgN9+h/uBT/oP8Gh888J2OZSbjSeWcg==", - "license": "MIT", - "dependencies": { - "@inquirer/figures": "^1.0.6", - "@inquirer/type": "^2.0.0", - "@types/mute-stream": "^0.0.4", - "@types/node": "^22.5.5", - "@types/wrap-ansi": "^3.0.0", - "ansi-escapes": "^4.3.2", - "cli-width": "^4.1.0", - "mute-stream": "^1.0.0", - "signal-exit": "^4.1.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^6.2.0", - "yoctocolors-cjs": "^2.1.2" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@comapeo/map-server/node_modules/@inquirer/core/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@comapeo/map-server/node_modules/@inquirer/editor": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-3.0.1.tgz", - "integrity": "sha512-VA96GPFaSOVudjKFraokEEmUQg/Lub6OXvbIEZU1SDCmBzRkHGhxoFAVaF30nyiB4m5cEbDgiI2QRacXZ2hw9Q==", - "license": "MIT", - "dependencies": { - "@inquirer/core": "^9.2.1", - "@inquirer/type": "^2.0.0", - "external-editor": "^3.1.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@comapeo/map-server/node_modules/@inquirer/expand": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-3.0.1.tgz", - "integrity": "sha512-ToG8d6RIbnVpbdPdiN7BCxZGiHOTomOX94C2FaT5KOHupV40tKEDozp12res6cMIfRKrXLJyexAZhWVHgbALSQ==", - "license": "MIT", - "dependencies": { - "@inquirer/core": "^9.2.1", - "@inquirer/type": "^2.0.0", - "yoctocolors-cjs": "^2.1.2" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@comapeo/map-server/node_modules/@inquirer/input": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-3.0.1.tgz", - "integrity": "sha512-BDuPBmpvi8eMCxqC5iacloWqv+5tQSJlUafYWUe31ow1BVXjW2a5qe3dh4X/Z25Wp22RwvcaLCc2siHobEOfzg==", - "license": "MIT", - "dependencies": { - "@inquirer/core": "^9.2.1", - "@inquirer/type": "^2.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@comapeo/map-server/node_modules/@inquirer/number": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-2.0.1.tgz", - "integrity": "sha512-QpR8jPhRjSmlr/mD2cw3IR8HRO7lSVOnqUvQa8scv1Lsr3xoAMMworcYW3J13z3ppjBFBD2ef1Ci6AE5Qn8goQ==", - "license": "MIT", - "dependencies": { - "@inquirer/core": "^9.2.1", - "@inquirer/type": "^2.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@comapeo/map-server/node_modules/@inquirer/password": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-3.0.1.tgz", - "integrity": "sha512-haoeEPUisD1NeE2IanLOiFr4wcTXGWrBOyAyPZi1FfLJuXOzNmxCJPgUrGYKVh+Y8hfGJenIfz5Wb/DkE9KkMQ==", - "license": "MIT", - "dependencies": { - "@inquirer/core": "^9.2.1", - "@inquirer/type": "^2.0.0", - "ansi-escapes": "^4.3.2" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@comapeo/map-server/node_modules/@inquirer/prompts": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-6.0.1.tgz", - "integrity": "sha512-yl43JD/86CIj3Mz5mvvLJqAOfIup7ncxfJ0Btnl0/v5TouVUyeEdcpknfgc+yMevS/48oH9WAkkw93m7otLb/A==", - "license": "MIT", - "dependencies": { - "@inquirer/checkbox": "^3.0.1", - "@inquirer/confirm": "^4.0.1", - "@inquirer/editor": "^3.0.1", - "@inquirer/expand": "^3.0.1", - "@inquirer/input": "^3.0.1", - "@inquirer/number": "^2.0.1", - "@inquirer/password": "^3.0.1", - "@inquirer/rawlist": "^3.0.1", - "@inquirer/search": "^2.0.1", - "@inquirer/select": "^3.0.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@comapeo/map-server/node_modules/@inquirer/rawlist": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-3.0.1.tgz", - "integrity": "sha512-VgRtFIwZInUzTiPLSfDXK5jLrnpkuSOh1ctfaoygKAdPqjcjKYmGh6sCY1pb0aGnCGsmhUxoqLDUAU0ud+lGXQ==", - "license": "MIT", - "dependencies": { - "@inquirer/core": "^9.2.1", - "@inquirer/type": "^2.0.0", - "yoctocolors-cjs": "^2.1.2" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@comapeo/map-server/node_modules/@inquirer/search": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-2.0.1.tgz", - "integrity": "sha512-r5hBKZk3g5MkIzLVoSgE4evypGqtOannnB3PKTG9NRZxyFRKcfzrdxXXPcoJQsxJPzvdSU2Rn7pB7lw0GCmGAg==", - "license": "MIT", - "dependencies": { - "@inquirer/core": "^9.2.1", - "@inquirer/figures": "^1.0.6", - "@inquirer/type": "^2.0.0", - "yoctocolors-cjs": "^2.1.2" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@comapeo/map-server/node_modules/@inquirer/select": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-3.0.1.tgz", - "integrity": "sha512-lUDGUxPhdWMkN/fHy1Lk7pF3nK1fh/gqeyWXmctefhxLYxlDsc7vsPBEpxrfVGDsVdyYJsiJoD4bJ1b623cV1Q==", - "license": "MIT", - "dependencies": { - "@inquirer/core": "^9.2.1", - "@inquirer/figures": "^1.0.6", - "@inquirer/type": "^2.0.0", - "ansi-escapes": "^4.3.2", - "yoctocolors-cjs": "^2.1.2" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@comapeo/map-server/node_modules/@inquirer/type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-2.0.0.tgz", - "integrity": "sha512-XvJRx+2KR3YXyYtPUUy+qd9i7p+GO9Ko6VIIpWlBrpWwXDv8WLFeHTxz35CfQFUiBMLXlGHhGzys7lqit9gWag==", - "license": "MIT", - "dependencies": { - "mute-stream": "^1.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@comapeo/map-server/node_modules/@turf/bbox": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-7.3.4.tgz", - "integrity": "sha512-D5ErVWtfQbEPh11yzI69uxqrcJmbPU/9Y59f1uTapgwAwQHQztDWgsYpnL3ns8r1GmPWLP8sGJLVTIk2TZSiYA==", - "license": "MIT", - "dependencies": { - "@turf/helpers": "7.3.4", - "@turf/meta": "7.3.4", - "@types/geojson": "^7946.0.10", - "tslib": "^2.8.1" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@comapeo/map-server/node_modules/@turf/meta": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-7.3.4.tgz", - "integrity": "sha512-tlmw9/Hs1p2n0uoHVm1w3ugw1I6L8jv9YZrcdQa4SH5FX5UY0ATrKeIvfA55FlL//PGuYppJp+eyg/0eb4goqw==", - "license": "MIT", - "dependencies": { - "@turf/helpers": "7.3.4", - "@types/geojson": "^7946.0.10", - "tslib": "^2.8.1" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@comapeo/map-server/node_modules/@types/node": { - "version": "22.19.15", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.15.tgz", - "integrity": "sha512-F0R/h2+dsy5wJAUe3tAU6oqa2qbWY5TpNfL/RGmo1y38hiyO1w3x2jPtt76wmuaJI4DQnOBu21cNXQ2STIUUWg==", - "license": "MIT", - "dependencies": { - "undici-types": "~6.21.0" - } - }, "node_modules/@comapeo/map-server/node_modules/@whatwg-node/disposablestack": { "version": "0.0.6", "inBundle": true, @@ -3134,405 +2888,6 @@ "node": ">=18.0.0" } }, - "node_modules/@comapeo/map-server/node_modules/chalk": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", - "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@comapeo/map-server/node_modules/commander": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/@comapeo/map-server/node_modules/is-interactive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", - "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@comapeo/map-server/node_modules/is-stream": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", - "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@comapeo/map-server/node_modules/log-symbols": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-7.0.1.tgz", - "integrity": "sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==", - "license": "MIT", - "dependencies": { - "is-unicode-supported": "^2.0.0", - "yoctocolors": "^2.1.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@comapeo/map-server/node_modules/mute-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", - "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/@comapeo/map-server/node_modules/open": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", - "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", - "license": "MIT", - "dependencies": { - "default-browser": "^5.2.1", - "define-lazy-prop": "^3.0.0", - "is-inside-container": "^1.0.0", - "wsl-utils": "^0.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@comapeo/map-server/node_modules/ora": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-8.2.0.tgz", - "integrity": "sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==", - "license": "MIT", - "dependencies": { - "chalk": "^5.3.0", - "cli-cursor": "^5.0.0", - "cli-spinners": "^2.9.2", - "is-interactive": "^2.0.0", - "is-unicode-supported": "^2.0.0", - "log-symbols": "^6.0.0", - "stdin-discarder": "^0.2.2", - "string-width": "^7.2.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@comapeo/map-server/node_modules/ora/node_modules/log-symbols": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz", - "integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==", - "license": "MIT", - "dependencies": { - "chalk": "^5.3.0", - "is-unicode-supported": "^1.3.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@comapeo/map-server/node_modules/ora/node_modules/log-symbols/node_modules/is-unicode-supported": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", - "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@comapeo/map-server/node_modules/p-limit": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-6.2.0.tgz", - "integrity": "sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==", - "license": "MIT", - "dependencies": { - "yocto-queue": "^1.1.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@comapeo/map-server/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@comapeo/map-server/node_modules/styled-map-package": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/styled-map-package/-/styled-map-package-4.1.0.tgz", - "integrity": "sha512-CJCYKb1RRgi64P2zZT4gsmAo2Tu6/eoxA4zJ/cmLMf9T7amjyGnWomRdPA22p0nrTvYwmPJlDkKw1tAPd3AOfw==", - "bundleDependencies": [ - "yauzl-promise" - ], - "license": "MIT", - "dependencies": { - "@inquirer/prompts": "^6.0.1", - "@mapbox/sphericalmercator": "^1.2.0", - "@maplibre/maplibre-gl-style-spec": "^20.3.1", - "@placemarkio/check-geojson": "^0.1.12", - "@turf/bbox": "^7.2.0", - "@turf/helpers": "^7.2.0", - "@whatwg-node/server": "^0.10.17", - "ansi-diff": "^1.2.0", - "archiver": "^7.0.1", - "buffer-peek-stream": "^1.1.0", - "chalk": "^5.4.1", - "commander": "^12.1.0", - "filter-obj": "^6.1.0", - "into-stream": "^8.0.1", - "is-stream": "^4.0.1", - "itty-router": "^5.0.22", - "ky": "^1.7.5", - "log-symbols": "^7.0.0", - "map-obj": "^5.0.2", - "mbtiles-reader": "^1.0.0", - "open": "^10.1.0", - "ora": "^8.2.0", - "p-event": "^6.0.1", - "p-limit": "^6.2.0", - "pretty-bytes": "^6.1.1", - "pretty-ms": "^9.2.0", - "readable-stream": "^4.7.0", - "temp-dir": "^3.0.0", - "yauzl-promise": "^4.0.0", - "yocto-queue": "^1.1.1" - }, - "bin": { - "smp": "bin/smp.js", - "styled-map-package": "bin/smp.js" - } - }, - "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/@node-rs/crc32": { - "version": "1.10.6", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" - }, - "optionalDependencies": { - "@node-rs/crc32-android-arm-eabi": "1.10.6", - "@node-rs/crc32-android-arm64": "1.10.6", - "@node-rs/crc32-darwin-arm64": "1.10.6", - "@node-rs/crc32-darwin-x64": "1.10.6", - "@node-rs/crc32-freebsd-x64": "1.10.6", - "@node-rs/crc32-linux-arm-gnueabihf": "1.10.6", - "@node-rs/crc32-linux-arm64-gnu": "1.10.6", - "@node-rs/crc32-linux-arm64-musl": "1.10.6", - "@node-rs/crc32-linux-x64-gnu": "1.10.6", - "@node-rs/crc32-linux-x64-musl": "1.10.6", - "@node-rs/crc32-wasm32-wasi": "1.10.6", - "@node-rs/crc32-win32-arm64-msvc": "1.10.6", - "@node-rs/crc32-win32-ia32-msvc": "1.10.6", - "@node-rs/crc32-win32-x64-msvc": "1.10.6" - } - }, - "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/@node-rs/crc32-linux-x64-gnu": { - "version": "1.10.6", - "cpu": [ - "x64" - ], - "inBundle": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/@node-rs/crc32-linux-x64-musl": { - "version": "1.10.6", - "cpu": [ - "x64" - ], - "inBundle": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/define-data-property": { - "version": "1.1.4", - "inBundle": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/define-properties": { - "version": "1.2.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/es-define-property": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/es-errors": { - "version": "1.3.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/globalthis": { - "version": "1.0.4", - "inBundle": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/gopd": { - "version": "1.2.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/has-property-descriptors": { - "version": "1.0.2", - "inBundle": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/is-it-type": { - "version": "5.1.3", - "inBundle": true, - "license": "MIT", - "dependencies": { - "globalthis": "^1.0.2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/object-keys": { - "version": "1.1.1", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/simple-invariant": { - "version": "2.0.1", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/yauzl-promise": { - "version": "4.0.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "@node-rs/crc32": "^1.7.0", - "is-it-type": "^5.1.2", - "simple-invariant": "^2.0.1" - }, - "engines": { - "node": ">=16" - } - }, "node_modules/@comapeo/map-server/node_modules/tslib": { "version": "2.8.1", "inBundle": true, @@ -3543,18 +2898,6 @@ "inBundle": true, "license": "MIT" }, - "node_modules/@comapeo/map-server/node_modules/yocto-queue": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", - "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", - "license": "MIT", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@comapeo/nodejs-mobile-react-native": { "version": "18.20.4-2", "resolved": "https://registry.npmjs.org/@comapeo/nodejs-mobile-react-native/-/nodejs-mobile-react-native-18.20.4-2.tgz", @@ -5602,6 +4945,42 @@ "tslib": "^2.8.1" } }, + "node_modules/@gmaclennan/zip-reader": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@gmaclennan/zip-reader/-/zip-reader-1.0.0.tgz", + "integrity": "sha512-k7jtpeuIO5WimaeYbNYRJbpTBYtsO/B4oo7hdVpY9Di8eq/LF5tP8+BOE1MqnW0NE1zTy+Mq/sm7GPAl/9Ii5g==", + "license": "MIT", + "dependencies": { + "p-mutex": "^1.0.0" + } + }, + "node_modules/@gmaclennan/zip-reader/node_modules/p-mutex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-mutex/-/p-mutex-1.0.0.tgz", + "integrity": "sha512-UlthGzEMsg2VnZAR58wkzL7muskxtNamoTR1Q6/VYBUKqPaMM+YtSncjWIvyjfUvVECKck1SYC/4XIWWJU3gBw==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.2.1" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@gmaclennan/zip-reader/node_modules/yocto-queue": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", + "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@grpc/grpc-js": { "version": "1.13.3", "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.13.3.tgz", @@ -9985,6 +9364,15 @@ "@sinonjs/commons": "^3.0.0" } }, + "node_modules/@sqlite.org/sqlite-wasm": { + "version": "3.51.2-build8", + "resolved": "https://registry.npmjs.org/@sqlite.org/sqlite-wasm/-/sqlite-wasm-3.51.2-build8.tgz", + "integrity": "sha512-NvWLTgbqGu1XOLKxePE5Jvc5bzy6QACAQLURQnumSFm0hQms09r2rjMp5i1rvh1DXCe5Rx1FEGcEeQ9BnBB2+Q==", + "license": "Apache-2.0", + "engines": { + "node": ">=22" + } + }, "node_modules/@svgr/babel-plugin-add-jsx-attribute": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz", @@ -11941,6 +11329,7 @@ "integrity": "sha512-6/cmF2piao+f6wSxUsJLZjck7OQsYyRtcOZS02k7XINSNlz93v6emM8WutDQSXnroG2xwYlEVHJI+cPA7CPM3Q==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.50.0", "@typescript-eslint/types": "8.50.0", @@ -14460,6 +13849,7 @@ "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.4.0.tgz", "integrity": "sha512-NSTU5WN+fy/L0DDenfE8SXQna4voXuW0FHM7wH8i3/q9khUSchfPbPezO4zSFMnDGIf9YE+mt/RWhZgNRKRIXA==", "license": "Apache-2.0", + "peer": true, "dependencies": { "bare-path": "^3.0.0" } @@ -34677,6 +34067,12 @@ "npm": ">= 3.0.0" } }, + "node_modules/smp-noto-glyphs": { + "version": "1.0.0-pre.0", + "resolved": "https://registry.npmjs.org/smp-noto-glyphs/-/smp-noto-glyphs-1.0.0-pre.0.tgz", + "integrity": "sha512-Nb6oVz+l91t99fwkAJ6WxbgSQEunvzfWkEwpDhPcvXcnn7ac+wD/PCwWz65X564WQ+oHUNxkbw1UQlj9MymUrg==", + "license": "MIT" + }, "node_modules/snake-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", @@ -35363,6 +34759,122 @@ "styled-map-package": "bin/smp.js" } }, + "node_modules/styled-map-package-api": { + "version": "5.0.0-pre.4", + "resolved": "https://registry.npmjs.org/styled-map-package-api/-/styled-map-package-api-5.0.0-pre.4.tgz", + "integrity": "sha512-wh+IrZVoi2w5V0j7twMlxgARC47mow4gyocWshGS7J/Uec0WILEUqyxwxxxSyu5iN049ers7R6bckxItUmEhVQ==", + "license": "MIT", + "dependencies": { + "@gmaclennan/zip-reader": "^1.0.0", + "@mapbox/sphericalmercator": "^1.2.0", + "@maplibre/maplibre-gl-style-spec": "^20.3.1", + "@placemarkio/check-geojson": "^0.1.12", + "@turf/bbox": "^7.2.0", + "@turf/helpers": "^7.2.0", + "filter-obj": "^6.1.0", + "itty-router": "^5.0.22", + "ky": "^1.7.5", + "map-obj": "^5.0.2", + "mbtiles-reader": "^2.0.1", + "p-limit": "^6.2.0", + "readable-stream": "^4.7.0", + "yocto-queue": "^1.1.1", + "zip-writer": "^2.2.0" + }, + "optionalDependencies": { + "better-sqlite3": "^12.8.0" + } + }, + "node_modules/styled-map-package-api/node_modules/@turf/bbox": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-7.3.4.tgz", + "integrity": "sha512-D5ErVWtfQbEPh11yzI69uxqrcJmbPU/9Y59f1uTapgwAwQHQztDWgsYpnL3ns8r1GmPWLP8sGJLVTIk2TZSiYA==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "7.3.4", + "@turf/meta": "7.3.4", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/styled-map-package-api/node_modules/@turf/meta": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-7.3.4.tgz", + "integrity": "sha512-tlmw9/Hs1p2n0uoHVm1w3ugw1I6L8jv9YZrcdQa4SH5FX5UY0ATrKeIvfA55FlL//PGuYppJp+eyg/0eb4goqw==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "7.3.4", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/styled-map-package-api/node_modules/better-sqlite3": { + "version": "12.8.0", + "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-12.8.0.tgz", + "integrity": "sha512-RxD2Vd96sQDjQr20kdP+F+dK/1OUNiVOl200vKBZY8u0vTwysfolF6Hq+3ZK2+h8My9YvZhHsF+RSGZW2VYrPQ==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "bindings": "^1.5.0", + "prebuild-install": "^7.1.1" + }, + "engines": { + "node": "20.x || 22.x || 23.x || 24.x || 25.x" + } + }, + "node_modules/styled-map-package-api/node_modules/mbtiles-reader": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mbtiles-reader/-/mbtiles-reader-2.0.1.tgz", + "integrity": "sha512-YHNIiE/7ag5x8mYd+R9zGkCq16GPpjIDgQTggrhvgtW2sl7tXBIRSfjnr8Xuz4Eh8vmka71IPKN05YOxBYzhuA==", + "license": "MIT", + "dependencies": { + "@mapbox/sphericalmercator": "^2.0.2", + "@mapbox/tiletype": "0.3.x", + "@sqlite.org/sqlite-wasm": "^3.51.2-build7" + }, + "optionalDependencies": { + "better-sqlite3": "^12.8.0" + } + }, + "node_modules/styled-map-package-api/node_modules/mbtiles-reader/node_modules/@mapbox/sphericalmercator": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@mapbox/sphericalmercator/-/sphericalmercator-2.0.2.tgz", + "integrity": "sha512-Ai/S9qXupBzFCM0i4sYDIx1A0pDYMaD3xlhVg05JToYeyORq8aAuHbd6CCPC86HlLSjYmoPeljJ5tMVKtzd4Lg==" + }, + "node_modules/styled-map-package-api/node_modules/p-limit": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-6.2.0.tgz", + "integrity": "sha512-kuUqqHNUqoIWp/c467RI4X6mmyuojY5jGutNU0wVTmEOOfcuwLqyMVoAi9MKi2Ak+5i9+nhmrK4ufZE8069kHA==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.1.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/styled-map-package-api/node_modules/yocto-queue": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", + "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/styled-map-package/node_modules/@commander-js/extra-typings": { "version": "12.1.0", "resolved": "https://registry.npmjs.org/@commander-js/extra-typings/-/extra-typings-12.1.0.tgz", @@ -37114,6 +36626,7 @@ "version": "10.1.0", "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.1.0.tgz", "integrity": "sha512-IGjKp/o0NL3Bso1PymYURCJxMPNAf/ILOpendP9f5B6e1rTJgdgiOvgfoT8VxCAdY+Wisb9uhGaJJf3yZ2V9nw==", + "dev": true, "license": "MIT" }, "node_modules/use-latest-callback": { @@ -38578,6 +38091,42 @@ "node": ">=18" } }, + "node_modules/zip-writer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/zip-writer/-/zip-writer-2.2.0.tgz", + "integrity": "sha512-tGCFswVi/Kwfe6OXw7gRCG+OZxcBuDixWXA8tPbZtp1pRemzk8lr4ign35c8E9n0bxh/ByPXvRiJVJapXuQAxA==", + "license": "MIT", + "dependencies": { + "p-mutex": "^1.0.0" + } + }, + "node_modules/zip-writer/node_modules/p-mutex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-mutex/-/p-mutex-1.0.0.tgz", + "integrity": "sha512-UlthGzEMsg2VnZAR58wkzL7muskxtNamoTR1Q6/VYBUKqPaMM+YtSncjWIvyjfUvVECKck1SYC/4XIWWJU3gBw==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.2.1" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zip-writer/node_modules/yocto-queue": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", + "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/zod": { "version": "3.25.76", "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", diff --git a/package.json b/package.json index a7981074d2..c263cd0ea6 100644 --- a/package.json +++ b/package.json @@ -33,8 +33,8 @@ "test:e2e:build": "npm run build:android:e2e && npm run test:e2e:nobuild" }, "dependencies": { - "@comapeo/core-react": "10.0.1", - "@comapeo/ipc": "7.0.0", + "@comapeo/core-react": "11.0.2", + "@comapeo/ipc": "8.0.0", "@comapeo/nodejs-mobile-react-native": "18.20.4-2", "@expo-google-fonts/rubik": "0.4.2", "@formatjs/intl-getcanonicallocales": "3.2.1", @@ -132,7 +132,7 @@ "@babel/preset-env": "7.28.5", "@babel/runtime": "7.28.4", "@comapeo/cloud": "0.3.0", - "@comapeo/core": "6.0.2", + "@comapeo/core": "7.0.1", "@comapeo/schema": "2.2.0", "@digidem/types": "2.3.0", "@eslint-react/eslint-plugin": "1.52.2", diff --git a/patches/@comapeo+core-react+10.0.1.patch b/patches/@comapeo+core-react+10.0.1.patch deleted file mode 100644 index e9bbff45de..0000000000 --- a/patches/@comapeo+core-react+10.0.1.patch +++ /dev/null @@ -1,57 +0,0 @@ -diff --git a/node_modules/@comapeo/core-react/dist/commonjs/lib/react-query.js b/node_modules/@comapeo/core-react/dist/commonjs/lib/react-query.js -index 50f07be..0b48980 100644 ---- a/node_modules/@comapeo/core-react/dist/commonjs/lib/react-query.js -+++ b/node_modules/@comapeo/core-react/dist/commonjs/lib/react-query.js -@@ -23,7 +23,7 @@ exports.getDocumentsQueryKey = getDocumentsQueryKey; - exports.getManyDocumentsQueryKey = getManyDocumentsQueryKey; - exports.getDocumentByDocIdQueryKey = getDocumentByDocIdQueryKey; - exports.getDocumentByVersionIdQueryKey = getDocumentByVersionIdQueryKey; --const map_server_1 = require("@comapeo/map-server"); -+const map_server_1 = require("@comapeo/map-server/constants.js"); - // #region Shared - const ROOT_QUERY_KEY = '@comapeo/core-react'; - // Since the API is running locally, queries should run regardless of network -@@ -122,13 +122,9 @@ function getProjectRoleQueryKey({ projectId }) { - return [ROOT_QUERY_KEY, 'projects', projectId, 'role']; - } - function getMembersQueryKey({ projectId, includeLeft, }) { -- return [ -- ROOT_QUERY_KEY, -- 'projects', -- projectId, -- 'members', -- { includeLeft }, -- ]; -+ return includeLeft === undefined -+ ? [ROOT_QUERY_KEY, 'projects', projectId, 'members'] -+ : [ROOT_QUERY_KEY, 'projects', projectId, 'members', { includeLeft }] - } - function getMemberByIdQueryKey({ projectId, deviceId, }) { - return [ROOT_QUERY_KEY, 'projects', projectId, 'members', deviceId]; -diff --git a/node_modules/@comapeo/core-react/dist/esm/lib/react-query.js b/node_modules/@comapeo/core-react/dist/esm/lib/react-query.js -index 0c90995..0bc9f14 100644 ---- a/node_modules/@comapeo/core-react/dist/esm/lib/react-query.js -+++ b/node_modules/@comapeo/core-react/dist/esm/lib/react-query.js -@@ -1,4 +1,4 @@ --import { DEFAULT_MAP_ID } from '@comapeo/map-server'; -+import { DEFAULT_MAP_ID } from '@comapeo/map-server/constants.js'; - // #region Shared - const ROOT_QUERY_KEY = '@comapeo/core-react'; - // Since the API is running locally, queries should run regardless of network -@@ -97,13 +97,9 @@ export function getProjectRoleQueryKey({ projectId }) { - return [ROOT_QUERY_KEY, 'projects', projectId, 'role']; - } - export function getMembersQueryKey({ projectId, includeLeft, }) { -- return [ -- ROOT_QUERY_KEY, -- 'projects', -- projectId, -- 'members', -- { includeLeft }, -- ]; -+ return includeLeft === undefined -+ ? [ROOT_QUERY_KEY, 'projects', projectId, 'members'] -+ : [ROOT_QUERY_KEY, 'projects', projectId, 'members', { includeLeft }] - } - export function getMemberByIdQueryKey({ projectId, deviceId, }) { - return [ROOT_QUERY_KEY, 'projects', projectId, 'members', deviceId]; diff --git a/patches/README.md b/patches/README.md index 4bce9aad9f..8141462bed 100644 --- a/patches/README.md +++ b/patches/README.md @@ -80,14 +80,6 @@ Fixes a bug in the `MaskSymbol` component where the mask (`*`) briefly un-hides See: [Reviewer context](https://github.com/digidem/comapeo-mobile/pull/1225). -## @comapeo/core-react - -### [Fix @comapeo/map-server root import and members-related read hooks invalidation](./@comapeo+core-react+10.0.1.patch) - -`@comapeo/core-react` imports from the root of `@comapeo/map-server`, which pulls in Node.js-only server code that cannot be bundled for React Native. This patch redirects both the ESM and CJS builds to import from `@comapeo/map-server/constants.js` instead. - -Fixes an issue where member-related write hooks do not properly invalidate the relevant read hooks. - ## expo ### [Enable streaming file uploads in fetch API](./expo+54.0.33.patch) diff --git a/src/backend/package-lock.json b/src/backend/package-lock.json index 39138f5815..9381a936cf 100644 --- a/src/backend/package-lock.json +++ b/src/backend/package-lock.json @@ -10,11 +10,11 @@ "hasInstallScript": true, "license": "MIT", "dependencies": { - "@comapeo/core": "6.0.2", - "@comapeo/default-categories": "1.0.0", + "@comapeo/core": "7.0.1", + "@comapeo/default-categories": "1.0.1", "@comapeo/fallback-smp": "1.0.0", - "@comapeo/ipc": "7.0.0", - "@comapeo/map-server": "1.0.1", + "@comapeo/ipc": "8.0.0", + "@comapeo/map-server": "1.1.0", "@mapeo/crypto": "1.0.0-alpha.10", "@sentry/node": "9.28.0", "@sentry/rollup-plugin": "^3.5.0", @@ -275,7 +275,9 @@ } }, "node_modules/@comapeo/core": { - "version": "6.0.2", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@comapeo/core/-/core-7.0.1.tgz", + "integrity": "sha512-og7ka/bbnHh6CdKFnF0SECZT/Urv/m9bG133owd1t3o8slKP25h6oxPJt9X2HgeBAP3ggybdBluynQDbHqFLQA==", "license": "MIT", "dependencies": { "@comapeo/fallback-smp": "^1.0.0", @@ -322,6 +324,7 @@ "protobufjs": "^7.2.3", "protomux": "^3.4.1", "quickbit-universal": "^2.2.0", + "ready-resource": "^1.2.0", "sodium-universal": "^4.0.0", "start-stop-state-machine": "^1.2.0", "streamx": "^2.19.0", @@ -366,7 +369,9 @@ "license": "MIT" }, "node_modules/@comapeo/default-categories": { - "version": "1.0.0", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@comapeo/default-categories/-/default-categories-1.0.1.tgz", + "integrity": "sha512-UqHVmmJtDT2cBJ43YmYjlMVuj6N+FafVcfI50FV6jhNZTqJCLUnmiFwd+fS4qjCN28+YKN83RT+nR3nfPZrxqw==", "license": "CC-BY-NC-4.0" }, "node_modules/@comapeo/fallback-smp": { @@ -381,7 +386,9 @@ } }, "node_modules/@comapeo/ipc": { - "version": "7.0.0", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@comapeo/ipc/-/ipc-8.0.0.tgz", + "integrity": "sha512-kzlcoB0fXj/w1CZxqp9rK86LKqeYSJ3dwh+I7TT1EzjNd9y66iXIviuwjuIb2hcNjT6BWv4pyvUfC9DWc1xIVQ==", "license": "MIT", "dependencies": { "eventemitter3": "^5.0.4", @@ -392,11 +399,13 @@ "node": ">=18.17.1" }, "peerDependencies": { - "@comapeo/core": "^6.0.1" + "@comapeo/core": "^7.0.1" } }, "node_modules/@comapeo/map-server": { - "version": "1.0.1", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@comapeo/map-server/-/map-server-1.1.0.tgz", + "integrity": "sha512-1+JQdU7MEJCCV02rD7Rkx00ocR7z19OHjuLM3xGLJR/tzjIWhxFglvarJ8DMa07rgHQZhxvG/zEgcguD9aP7Tg==", "bundleDependencies": [ "@whatwg-node/server" ], @@ -407,7 +416,8 @@ "p-defer": "^4.0.1", "p-mutex": "^0.1.0", "secret-stream-http": "^1.0.1", - "styled-map-package": "^4.1.0", + "smp-noto-glyphs": "^1.0.0-pre.0", + "styled-map-package-api": "^5.0.0-pre.4", "typebox": "^1.0.61", "typed-event-target": "^3.4.0" } @@ -493,304 +503,6 @@ "node": ">=18.0.0" } }, - "node_modules/@comapeo/map-server/node_modules/buffer": { - "version": "6.0.3", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/@comapeo/map-server/node_modules/chalk": { - "version": "5.6.2", - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@comapeo/map-server/node_modules/is-stream": { - "version": "4.0.1", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@comapeo/map-server/node_modules/open": { - "version": "10.2.0", - "license": "MIT", - "dependencies": { - "default-browser": "^5.2.1", - "define-lazy-prop": "^3.0.0", - "is-inside-container": "^1.0.0", - "wsl-utils": "^0.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@comapeo/map-server/node_modules/readable-stream": { - "version": "4.7.0", - "license": "MIT", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@comapeo/map-server/node_modules/styled-map-package": { - "version": "4.1.0", - "bundleDependencies": [ - "yauzl-promise" - ], - "license": "MIT", - "dependencies": { - "@inquirer/prompts": "^6.0.1", - "@mapbox/sphericalmercator": "^1.2.0", - "@maplibre/maplibre-gl-style-spec": "^20.3.1", - "@placemarkio/check-geojson": "^0.1.12", - "@turf/bbox": "^7.2.0", - "@turf/helpers": "^7.2.0", - "@whatwg-node/server": "^0.10.17", - "ansi-diff": "^1.2.0", - "archiver": "^7.0.1", - "buffer-peek-stream": "^1.1.0", - "chalk": "^5.4.1", - "commander": "^12.1.0", - "filter-obj": "^6.1.0", - "into-stream": "^8.0.1", - "is-stream": "^4.0.1", - "itty-router": "^5.0.22", - "ky": "^1.7.5", - "log-symbols": "^7.0.0", - "map-obj": "^5.0.2", - "mbtiles-reader": "^1.0.0", - "open": "^10.1.0", - "ora": "^8.2.0", - "p-event": "^6.0.1", - "p-limit": "^6.2.0", - "pretty-bytes": "^6.1.1", - "pretty-ms": "^9.2.0", - "readable-stream": "^4.7.0", - "temp-dir": "^3.0.0", - "yauzl-promise": "^4.0.0", - "yocto-queue": "^1.1.1" - }, - "bin": { - "smp": "bin/smp.js", - "styled-map-package": "bin/smp.js" - } - }, - "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/@node-rs/crc32": { - "version": "1.10.6", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 10" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" - }, - "optionalDependencies": { - "@node-rs/crc32-android-arm-eabi": "1.10.6", - "@node-rs/crc32-android-arm64": "1.10.6", - "@node-rs/crc32-darwin-arm64": "1.10.6", - "@node-rs/crc32-darwin-x64": "1.10.6", - "@node-rs/crc32-freebsd-x64": "1.10.6", - "@node-rs/crc32-linux-arm-gnueabihf": "1.10.6", - "@node-rs/crc32-linux-arm64-gnu": "1.10.6", - "@node-rs/crc32-linux-arm64-musl": "1.10.6", - "@node-rs/crc32-linux-x64-gnu": "1.10.6", - "@node-rs/crc32-linux-x64-musl": "1.10.6", - "@node-rs/crc32-wasm32-wasi": "1.10.6", - "@node-rs/crc32-win32-arm64-msvc": "1.10.6", - "@node-rs/crc32-win32-ia32-msvc": "1.10.6", - "@node-rs/crc32-win32-x64-msvc": "1.10.6" - } - }, - "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/@node-rs/crc32-linux-x64-gnu": { - "version": "1.10.6", - "cpu": [ - "x64" - ], - "inBundle": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/@node-rs/crc32-linux-x64-musl": { - "version": "1.10.6", - "cpu": [ - "x64" - ], - "inBundle": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/define-data-property": { - "version": "1.1.4", - "inBundle": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/define-properties": { - "version": "1.2.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/es-define-property": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/es-errors": { - "version": "1.3.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/globalthis": { - "version": "1.0.4", - "inBundle": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/gopd": { - "version": "1.2.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/has-property-descriptors": { - "version": "1.0.2", - "inBundle": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/is-it-type": { - "version": "5.1.3", - "inBundle": true, - "license": "MIT", - "dependencies": { - "globalthis": "^1.0.2" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/object-keys": { - "version": "1.1.1", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/simple-invariant": { - "version": "2.0.1", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/@comapeo/map-server/node_modules/styled-map-package/node_modules/yauzl-promise": { - "version": "4.0.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "@node-rs/crc32": "^1.7.0", - "is-it-type": "^5.1.2", - "simple-invariant": "^2.0.1" - }, - "engines": { - "node": ">=16" - } - }, "node_modules/@comapeo/map-server/node_modules/tslib": { "version": "2.8.1", "inBundle": true, @@ -1392,6 +1104,30 @@ "@sinclair/typebox": ">=0.26 <=0.33" } }, + "node_modules/@gmaclennan/zip-reader": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@gmaclennan/zip-reader/-/zip-reader-1.0.0.tgz", + "integrity": "sha512-k7jtpeuIO5WimaeYbNYRJbpTBYtsO/B4oo7hdVpY9Di8eq/LF5tP8+BOE1MqnW0NE1zTy+Mq/sm7GPAl/9Ii5g==", + "license": "MIT", + "dependencies": { + "p-mutex": "^1.0.0" + } + }, + "node_modules/@gmaclennan/zip-reader/node_modules/p-mutex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-mutex/-/p-mutex-1.0.0.tgz", + "integrity": "sha512-UlthGzEMsg2VnZAR58wkzL7muskxtNamoTR1Q6/VYBUKqPaMM+YtSncjWIvyjfUvVECKck1SYC/4XIWWJU3gBw==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.2.1" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@hyperswarm/secret-stream": { "version": "6.7.1", "license": "Apache-2.0", @@ -3031,6 +2767,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@sqlite.org/sqlite-wasm": { + "version": "3.51.2-build8", + "resolved": "https://registry.npmjs.org/@sqlite.org/sqlite-wasm/-/sqlite-wasm-3.51.2-build8.tgz", + "integrity": "sha512-NvWLTgbqGu1XOLKxePE5Jvc5bzy6QACAQLURQnumSFm0hQms09r2rjMp5i1rvh1DXCe5Rx1FEGcEeQ9BnBB2+Q==", + "license": "Apache-2.0", + "engines": { + "node": ">=22" + } + }, "node_modules/@tsconfig/node16": { "version": "16.1.1", "dev": true, @@ -6389,6 +6134,8 @@ }, "node_modules/itty-router": { "version": "5.0.23", + "resolved": "https://registry.npmjs.org/itty-router/-/itty-router-5.0.23.tgz", + "integrity": "sha512-i49WU+SNPrwOZA4Z61En1RYd5h2Lcqa+5IvCpMrNi4dxymzJK15ozUUnRrWIUAv95Zamd4eJPAot2UvHRrQg7w==", "license": "MIT" }, "node_modules/jackspeak": { @@ -7864,7 +7611,9 @@ } }, "node_modules/ready-resource": { - "version": "1.1.1", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ready-resource/-/ready-resource-1.2.0.tgz", + "integrity": "sha512-nfcco/8iAFV0M+2PYnmIc+/xY0iRb35d42HFHQ7AfjulbGEAFa+XWpByfwSyeVeiBoMLLFVMv1HixxNCqzSQ1g==", "license": "MIT", "dependencies": { "bare-events": "^2.2.0" @@ -8585,6 +8334,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/smp-noto-glyphs": { + "version": "1.0.0-pre.0", + "resolved": "https://registry.npmjs.org/smp-noto-glyphs/-/smp-noto-glyphs-1.0.0-pre.0.tgz", + "integrity": "sha512-Nb6oVz+l91t99fwkAJ6WxbgSQEunvzfWkEwpDhPcvXcnn7ac+wD/PCwWz65X564WQ+oHUNxkbw1UQlj9MymUrg==", + "license": "MIT" + }, "node_modules/sodium-native": { "version": "4.3.3", "license": "MIT", @@ -8933,6 +8688,106 @@ "styled-map-package": "bin/smp.js" } }, + "node_modules/styled-map-package-api": { + "version": "5.0.0-pre.4", + "resolved": "https://registry.npmjs.org/styled-map-package-api/-/styled-map-package-api-5.0.0-pre.4.tgz", + "integrity": "sha512-wh+IrZVoi2w5V0j7twMlxgARC47mow4gyocWshGS7J/Uec0WILEUqyxwxxxSyu5iN049ers7R6bckxItUmEhVQ==", + "license": "MIT", + "dependencies": { + "@gmaclennan/zip-reader": "^1.0.0", + "@mapbox/sphericalmercator": "^1.2.0", + "@maplibre/maplibre-gl-style-spec": "^20.3.1", + "@placemarkio/check-geojson": "^0.1.12", + "@turf/bbox": "^7.2.0", + "@turf/helpers": "^7.2.0", + "filter-obj": "^6.1.0", + "itty-router": "^5.0.22", + "ky": "^1.7.5", + "map-obj": "^5.0.2", + "mbtiles-reader": "^2.0.1", + "p-limit": "^6.2.0", + "readable-stream": "^4.7.0", + "yocto-queue": "^1.1.1", + "zip-writer": "^2.2.0" + }, + "optionalDependencies": { + "better-sqlite3": "^12.8.0" + } + }, + "node_modules/styled-map-package-api/node_modules/better-sqlite3": { + "version": "12.8.0", + "resolved": "https://registry.npmjs.org/better-sqlite3/-/better-sqlite3-12.8.0.tgz", + "integrity": "sha512-RxD2Vd96sQDjQr20kdP+F+dK/1OUNiVOl200vKBZY8u0vTwysfolF6Hq+3ZK2+h8My9YvZhHsF+RSGZW2VYrPQ==", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "bindings": "^1.5.0", + "prebuild-install": "^7.1.1" + }, + "engines": { + "node": "20.x || 22.x || 23.x || 24.x || 25.x" + } + }, + "node_modules/styled-map-package-api/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/styled-map-package-api/node_modules/mbtiles-reader": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mbtiles-reader/-/mbtiles-reader-2.0.1.tgz", + "integrity": "sha512-YHNIiE/7ag5x8mYd+R9zGkCq16GPpjIDgQTggrhvgtW2sl7tXBIRSfjnr8Xuz4Eh8vmka71IPKN05YOxBYzhuA==", + "license": "MIT", + "dependencies": { + "@mapbox/sphericalmercator": "^2.0.2", + "@mapbox/tiletype": "0.3.x", + "@sqlite.org/sqlite-wasm": "^3.51.2-build7" + }, + "optionalDependencies": { + "better-sqlite3": "^12.8.0" + } + }, + "node_modules/styled-map-package-api/node_modules/mbtiles-reader/node_modules/@mapbox/sphericalmercator": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@mapbox/sphericalmercator/-/sphericalmercator-2.0.2.tgz", + "integrity": "sha512-Ai/S9qXupBzFCM0i4sYDIx1A0pDYMaD3xlhVg05JToYeyORq8aAuHbd6CCPC86HlLSjYmoPeljJ5tMVKtzd4Lg==" + }, + "node_modules/styled-map-package-api/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/styled-map-package/node_modules/buffer": { "version": "6.0.3", "funding": [ @@ -9663,32 +9518,6 @@ } } }, - "node_modules/wsl-utils": { - "version": "0.1.0", - "license": "MIT", - "dependencies": { - "is-wsl": "^3.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/wsl-utils/node_modules/is-wsl": { - "version": "3.1.1", - "license": "MIT", - "dependencies": { - "is-inside-container": "^1.0.0" - }, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/xache": { "version": "1.2.1", "license": "MIT" @@ -9919,6 +9748,30 @@ "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } + }, + "node_modules/zip-writer": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/zip-writer/-/zip-writer-2.2.0.tgz", + "integrity": "sha512-tGCFswVi/Kwfe6OXw7gRCG+OZxcBuDixWXA8tPbZtp1pRemzk8lr4ign35c8E9n0bxh/ByPXvRiJVJapXuQAxA==", + "license": "MIT", + "dependencies": { + "p-mutex": "^1.0.0" + } + }, + "node_modules/zip-writer/node_modules/p-mutex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-mutex/-/p-mutex-1.0.0.tgz", + "integrity": "sha512-UlthGzEMsg2VnZAR58wkzL7muskxtNamoTR1Q6/VYBUKqPaMM+YtSncjWIvyjfUvVECKck1SYC/4XIWWJU3gBw==", + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.2.1" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } } } } diff --git a/src/backend/package.json b/src/backend/package.json index bf91fd3cd0..df5358884b 100644 --- a/src/backend/package.json +++ b/src/backend/package.json @@ -13,12 +13,12 @@ "author": "Digital Democracy", "license": "MIT", "dependencies": { - "@comapeo/core": "6.0.2", + "@comapeo/core": "7.0.1", "@mapeo/crypto": "1.0.0-alpha.10", - "@comapeo/default-categories": "1.0.0", + "@comapeo/default-categories": "1.0.1", "@comapeo/fallback-smp": "1.0.0", - "@comapeo/ipc": "7.0.0", - "@comapeo/map-server": "1.0.1", + "@comapeo/ipc": "8.0.0", + "@comapeo/map-server": "1.1.0", "@sentry/node": "9.28.0", "@sentry/rollup-plugin": "^3.5.0", "debug": "^4.3.4", diff --git a/src/backend/patches/typebox+1.1.10.patch b/src/backend/patches/typebox+1.1.10.patch deleted file mode 100644 index ccb58dfc7f..0000000000 --- a/src/backend/patches/typebox+1.1.10.patch +++ /dev/null @@ -1,23 +0,0 @@ -diff --git a/node_modules/typebox/build/format/idn-email.mjs b/node_modules/typebox/build/format/idn-email.mjs -index a9ce0c0..88f0712 100644 ---- a/node_modules/typebox/build/format/idn-email.mjs -+++ b/node_modules/typebox/build/format/idn-email.mjs -@@ -1,4 +1,4 @@ --const IdnEmail = /^(?!.*\.\.)[\p{L}\p{N}!#$%&'*+/=?^_`{|}~-]+(?:\.[\p{L}\p{N}!#$%&'*+/=?^_`{|}~-]+)*@[\p{L}\p{N}](?:[\p{L}\p{N}-]{0,61}[\p{L}\p{N}])?(?:\.[\p{L}\p{N}](?:[\p{L}\p{N}-]{0,61}[\p{L}\p{N}])?)*$/iu; -+const IdnEmail = /^(?!.*\.\.)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/i; - /** Returns true if the value is a Idn Email */ - export function IsIdnEmail(value) { - return IdnEmail.test(value); -diff --git a/node_modules/typebox/build/guard/emit.mjs b/node_modules/typebox/build/guard/emit.mjs -index b9b7ece..ab936d3 100644 ---- a/node_modules/typebox/build/guard/emit.mjs -+++ b/node_modules/typebox/build/guard/emit.mjs -@@ -2,7 +2,7 @@ import * as G from './guard.mjs'; - // ------------------------------------------------------------------ - // Identifier - // ------------------------------------------------------------------ --const identifierRegExp = /^[\p{ID_Start}_$][\p{ID_Continue}_$\u200C\u200D]*$/u; -+const identifierRegExp = /^[a-zA-Z_$][a-zA-Z0-9_$\u200C\u200D]*$/; - /** Returns true if this value is a valid JavaScript identifier */ - function IsIdentifier(value) { - return identifierRegExp.test(value); \ No newline at end of file From 946e31a2c0d5a7ef682b25343278dd9211f60bec Mon Sep 17 00:00:00 2001 From: Cindy Green Date: Mon, 6 Apr 2026 11:21:04 -0400 Subject: [PATCH 53/72] Adds needed elements package. Fixes duplicate code from merge from develop. Adds error handling as provided by backend updates. --- package-lock.json | 190 +++++++++++++----- package.json | 5 +- src/backend/src/app.js | 11 - .../BackgroundMaps/MapReceivedBottomSheet.tsx | 24 ++- .../MapShareCanceledBottomSheet.tsx | 2 +- .../BackgroundMaps/ReceivingBackgroundMap.tsx | 8 + .../BackgroundMaps/ReplaceBackgroundMap.tsx | 10 + .../BackgroundMaps/SendingBackgroundMap.tsx | 23 ++- 8 files changed, 193 insertions(+), 80 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4acefd0be2..39fc44749c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -31,6 +31,7 @@ "@react-native-vector-icons/material-icons": "12.4.0", "@react-native-vector-icons/octicons": "20.4.0", "@react-navigation/bottom-tabs": "7.14.0", + "@react-navigation/elements": "2.9.5", "@react-navigation/native": "7.1.28", "@react-navigation/stack": "7.7.2", "@rnmapbox/maps": "10.1.42", @@ -230,7 +231,6 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", @@ -2391,7 +2391,6 @@ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", "license": "MIT", - "peer": true, "engines": { "node": ">=6.9.0" } @@ -2631,7 +2630,6 @@ "resolved": "https://registry.npmjs.org/@comapeo/core/-/core-7.0.1.tgz", "integrity": "sha512-og7ka/bbnHh6CdKFnF0SECZT/Urv/m9bG133owd1t3o8slKP25h6oxPJt9X2HgeBAP3ggybdBluynQDbHqFLQA==", "license": "MIT", - "peer": true, "dependencies": { "@comapeo/fallback-smp": "^1.0.0", "@comapeo/schema": "2.2.0", @@ -2774,7 +2772,6 @@ "resolved": "https://registry.npmjs.org/@comapeo/ipc/-/ipc-8.0.0.tgz", "integrity": "sha512-kzlcoB0fXj/w1CZxqp9rK86LKqeYSJ3dwh+I7TT1EzjNd9y66iXIviuwjuIb2hcNjT6BWv4pyvUfC9DWc1xIVQ==", "license": "MIT", - "peer": true, "dependencies": { "eventemitter3": "^5.0.4", "p-defer": "^4.0.1", @@ -2920,7 +2917,6 @@ "resolved": "https://registry.npmjs.org/@comapeo/schema/-/schema-2.2.0.tgz", "integrity": "sha512-SbD/Q0BsirAFSj2LETqwgyx/Om62lUVT3R05k9vK5Ld+u+VNn1Xsg2nRblf6Xh9mP1U3rBYJvjjuYQ1lPUYmLA==", "license": "MIT", - "peer": true, "dependencies": { "@comapeo/geometry": "^1.1.1", "compact-encoding": "^2.12.0", @@ -3029,6 +3025,7 @@ "os": [ "aix" ], + "peer": true, "engines": { "node": ">=18" } @@ -3046,6 +3043,7 @@ "os": [ "android" ], + "peer": true, "engines": { "node": ">=18" } @@ -3063,6 +3061,7 @@ "os": [ "android" ], + "peer": true, "engines": { "node": ">=18" } @@ -3080,6 +3079,7 @@ "os": [ "android" ], + "peer": true, "engines": { "node": ">=18" } @@ -3097,6 +3097,7 @@ "os": [ "darwin" ], + "peer": true, "engines": { "node": ">=18" } @@ -3114,6 +3115,7 @@ "os": [ "darwin" ], + "peer": true, "engines": { "node": ">=18" } @@ -3131,6 +3133,7 @@ "os": [ "freebsd" ], + "peer": true, "engines": { "node": ">=18" } @@ -3148,6 +3151,7 @@ "os": [ "freebsd" ], + "peer": true, "engines": { "node": ">=18" } @@ -3165,6 +3169,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -3182,6 +3187,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -3199,6 +3205,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -3216,6 +3223,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -3233,6 +3241,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -3250,6 +3259,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -3267,6 +3277,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -3284,6 +3295,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -3301,6 +3313,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -3318,6 +3331,7 @@ "os": [ "netbsd" ], + "peer": true, "engines": { "node": ">=18" } @@ -3335,6 +3349,7 @@ "os": [ "netbsd" ], + "peer": true, "engines": { "node": ">=18" } @@ -3352,6 +3367,7 @@ "os": [ "openbsd" ], + "peer": true, "engines": { "node": ">=18" } @@ -3369,6 +3385,7 @@ "os": [ "openbsd" ], + "peer": true, "engines": { "node": ">=18" } @@ -3386,6 +3403,7 @@ "os": [ "openharmony" ], + "peer": true, "engines": { "node": ">=18" } @@ -3403,6 +3421,7 @@ "os": [ "sunos" ], + "peer": true, "engines": { "node": ">=18" } @@ -3420,6 +3439,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">=18" } @@ -3437,6 +3457,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">=18" } @@ -3454,6 +3475,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">=18" } @@ -5120,6 +5142,7 @@ "integrity": "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=18" } @@ -5130,6 +5153,7 @@ "integrity": "sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@inquirer/ansi": "^1.0.2", "@inquirer/core": "^10.3.2", @@ -5155,6 +5179,7 @@ "integrity": "sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/type": "^3.0.10" @@ -5177,6 +5202,7 @@ "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@inquirer/ansi": "^1.0.2", "@inquirer/figures": "^1.0.15", @@ -5205,6 +5231,7 @@ "integrity": "sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/external-editor": "^1.0.3", @@ -5228,6 +5255,7 @@ "integrity": "sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/type": "^3.0.10", @@ -5251,6 +5279,7 @@ "integrity": "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "chardet": "^2.1.1", "iconv-lite": "^0.7.0" @@ -5282,6 +5311,7 @@ "integrity": "sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/type": "^3.0.10" @@ -5304,6 +5334,7 @@ "integrity": "sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/type": "^3.0.10" @@ -5326,6 +5357,7 @@ "integrity": "sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@inquirer/ansi": "^1.0.2", "@inquirer/core": "^10.3.2", @@ -5349,6 +5381,7 @@ "integrity": "sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@inquirer/checkbox": "^4.3.2", "@inquirer/confirm": "^5.1.21", @@ -5379,6 +5412,7 @@ "integrity": "sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/type": "^3.0.10", @@ -5402,6 +5436,7 @@ "integrity": "sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/figures": "^1.0.15", @@ -5426,6 +5461,7 @@ "integrity": "sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@inquirer/ansi": "^1.0.2", "@inquirer/core": "^10.3.2", @@ -5451,6 +5487,7 @@ "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=18" }, @@ -8841,12 +8878,34 @@ "react": ">= 18.2.0" } }, + "node_modules/@react-navigation/elements": { + "version": "2.9.5", + "resolved": "https://registry.npmjs.org/@react-navigation/elements/-/elements-2.9.5.tgz", + "integrity": "sha512-iHZU8rRN1014Upz73AqNVXDvSMZDh5/ktQ1CMe21rdgnOY79RWtHHBp9qOS3VtqlUVYGkuX5GEw5mDt4tKdl0g==", + "license": "MIT", + "dependencies": { + "color": "^4.2.3", + "use-latest-callback": "^0.2.4", + "use-sync-external-store": "^1.5.0" + }, + "peerDependencies": { + "@react-native-masked-view/masked-view": ">= 0.2.0", + "@react-navigation/native": "^7.1.28", + "react": ">= 18.2.0", + "react-native": "*", + "react-native-safe-area-context": ">= 4.0.0" + }, + "peerDependenciesMeta": { + "@react-native-masked-view/masked-view": { + "optional": true + } + } + }, "node_modules/@react-navigation/native": { "version": "7.1.28", "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-7.1.28.tgz", "integrity": "sha512-d1QDn+KNHfHGt3UIwOZvupvdsDdiHYZBEj7+wL2yDVo3tMezamYy60H9s3EnNVE1Ae1ty0trc7F2OKqo/RmsdQ==", "license": "MIT", - "peer": true, "dependencies": { "@react-navigation/core": "^7.14.0", "escape-string-regexp": "^4.0.0", @@ -9321,8 +9380,7 @@ "version": "0.33.22", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.33.22.tgz", "integrity": "sha512-auUj4k+f4pyrIVf4GW5UKquSZFHJWri06QgARy9C0t9ZTjJLIuNIrr1yl9bWcJWJ1Gz1vOvYN1D+QPaIlNMVkQ==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@sindresorhus/is": { "version": "0.14.0", @@ -9542,7 +9600,6 @@ "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/core": "^7.21.3", "@svgr/babel-preset": "8.1.0", @@ -9841,7 +9898,6 @@ "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.90.21.tgz", "integrity": "sha512-0Lu6y5t+tvlTJMTO7oh5NSpJfpg/5D41LlThfepTixPYkJ0sE2Jj0m0f6yYqujBwIXlId87e234+MxG3D3g7kg==", "license": "MIT", - "peer": true, "dependencies": { "@tanstack/query-core": "5.90.20" }, @@ -10933,7 +10989,6 @@ "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.7.tgz", "integrity": "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==", "license": "MIT", - "peer": true, "dependencies": { "csstype": "^3.2.2" } @@ -11084,7 +11139,6 @@ "integrity": "sha512-O7QnmOXYKVtPrfYzMolrCTfkezCJS9+ljLdKW/+DCvRsc3UAz+sbH6Xcsv7p30+0OwUbeWfUDAQE0vpabZ3QLg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/regexpp": "^4.10.0", "@typescript-eslint/scope-manager": "8.50.0", @@ -11329,7 +11383,6 @@ "integrity": "sha512-6/cmF2piao+f6wSxUsJLZjck7OQsYyRtcOZS02k7XINSNlz93v6emM8WutDQSXnroG2xwYlEVHJI+cPA7CPM3Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.50.0", "@typescript-eslint/types": "8.50.0", @@ -11758,6 +11811,7 @@ "integrity": "sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "tinyrainbow": "^1.2.0" }, @@ -11771,6 +11825,7 @@ "integrity": "sha512-oBO82rEjsxLNJincVhLhaxxZdEtV0EFHMK5Kmx5sJ6H9L183dHECjiefOAdnqpIgT5eZwT04PoggUnW88vOBNQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@vitest/pretty-format": "2.1.9", "magic-string": "^0.30.12", @@ -11824,7 +11879,6 @@ "integrity": "sha512-k/ueL14aNIEy5Onf0OVzR8kiqF/WThgLdFhxwa4e/KF/0qe38IwIdofoSWBTvvxQOesaz6riAFAUaYjoF9fLLQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/parser": "^7.29.2", "@vue/shared": "3.5.31", @@ -11934,6 +11988,7 @@ "integrity": "sha512-k3kSs1sWTnDwdFLdBua7j5O//0N9k3qTj2nkyfMnkCEzOU00UMV2Y0f/yzNrn8BkkvohrJmwdEQPYx7rNhfj9g==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@vitest/snapshot": "^2.1.1", "@wdio/config": "9.27.0", @@ -11969,6 +12024,7 @@ "integrity": "sha512-yT6EAyvEqm+wFD11fg89BMxvFkYLgnIVCihfJx+k73Gm3utL/DfZQpSheQdwrlQzu5p7jHi/JwOD76740F5Peg==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=18.20.0" }, @@ -11991,6 +12047,7 @@ "integrity": "sha512-DQJ+OdRBqUBcQ30DN2Z651hEVh3OoxnlDUSRqlWy9An2AY6v9rYWTj825B6zsj5pLLEToYO1tfwWq0ab183pXg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/node": "^20.1.0" }, @@ -12004,6 +12061,7 @@ "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">= 14" } @@ -12014,6 +12072,7 @@ "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -12027,6 +12086,7 @@ "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "agent-base": "^7.1.2", "debug": "4" @@ -12041,6 +12101,7 @@ "integrity": "sha512-ZYkZLAvKTKQXWuh5XpBw7CdbSzagarX39WyZ2H07CDLC5/KfsRGlIXV8d4+tfqX1M7916mRqR1QfNHSij+c9Pw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "type-fest": "^4.31.0" }, @@ -12057,6 +12118,7 @@ "integrity": "sha512-w07ThZND48SIr0b4S7eFougYUyclmoUwdmju8yXvEJiXYjDjeYUpl8wZrYPEYRBylxpSx+sBHfEUBrPQkcTTRQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/node": "^20.1.0", "@types/ws": "^8.5.3", @@ -12126,6 +12188,7 @@ "integrity": "sha512-9y8z7ugIbU6ycKrA2SqCpKh1/hobut2rDq9CLt/BNVzSlebBBVOTMiAt1XroZzcPnA7/ZqpbkpOsbpPUaAQuNQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@wdio/logger": "9.18.0", "@wdio/types": "9.27.0", @@ -12145,6 +12208,7 @@ "integrity": "sha512-DQJ+OdRBqUBcQ30DN2Z651hEVh3OoxnlDUSRqlWy9An2AY6v9rYWTj825B6zsj5pLLEToYO1tfwWq0ab183pXg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/node": "^20.1.0" }, @@ -12158,6 +12222,7 @@ "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "balanced-match": "^1.0.0" } @@ -12169,6 +12234,7 @@ "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, "license": "ISC", + "peer": true, "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", @@ -12189,7 +12255,8 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, - "license": "ISC" + "license": "ISC", + "peer": true }, "node_modules/@wdio/config/node_modules/minimatch": { "version": "9.0.9", @@ -12197,6 +12264,7 @@ "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "dev": true, "license": "ISC", + "peer": true, "dependencies": { "brace-expansion": "^2.0.2" }, @@ -12213,6 +12281,7 @@ "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, "license": "BlueOak-1.0.0", + "peer": true, "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" @@ -12375,7 +12444,8 @@ "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-9.27.0.tgz", "integrity": "sha512-rIk69BsY1+6uU2PEN5FiRpI6K7HJ86YHzZRFBe4iRzKXQgGNk1zWzbdVJIuNFoOWsnmYUkK42KSSOT4Le6EmiQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@wdio/repl": { "version": "9.16.2", @@ -12606,6 +12676,7 @@ "integrity": "sha512-fUasd5OKJTy2seJfWnYZ9xlxTtY0p/Kyeuh7Tbb8kcofBqmBi2fTvM3sfZlo1tGQX9yCh+IS2N7hlfyFMmuZ+w==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@puppeteer/browsers": "^2.2.0", "@wdio/logger": "9.18.0", @@ -12632,6 +12703,7 @@ "integrity": "sha512-DQJ+OdRBqUBcQ30DN2Z651hEVh3OoxnlDUSRqlWy9An2AY6v9rYWTj825B6zsj5pLLEToYO1tfwWq0ab183pXg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/node": "^20.1.0" }, @@ -12733,7 +12805,6 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -13189,6 +13260,7 @@ "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=0.12.0" } @@ -13721,7 +13793,6 @@ "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz", "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==", "license": "Apache-2.0", - "peer": true, "peerDependencies": { "bare-abort-controller": "*" }, @@ -13849,7 +13920,6 @@ "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.4.0.tgz", "integrity": "sha512-NSTU5WN+fy/L0DDenfE8SXQna4voXuW0FHM7wH8i3/q9khUSchfPbPezO4zSFMnDGIf9YE+mt/RWhZgNRKRIXA==", "license": "Apache-2.0", - "peer": true, "dependencies": { "bare-path": "^3.0.0" } @@ -13997,7 +14067,6 @@ "integrity": "sha512-EwhOpyXiOEL/lKzHz9AW1msWFNzGc/z+LzeB3/jnFJpxu+th2yqvzsSWas1v9jgs9+xiXJcD5A8CJxAG2TaghQ==", "hasInstallScript": true, "license": "MIT", - "peer": true, "dependencies": { "bindings": "^1.5.0", "prebuild-install": "^7.1.1" @@ -14317,7 +14386,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "baseline-browser-mapping": "^2.10.12", "caniuse-lite": "^1.0.30001782", @@ -14869,7 +14937,8 @@ "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz", "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/cheap-ruler": { "version": "4.0.0", @@ -14947,6 +15016,7 @@ "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "readdirp": "^4.0.1" }, @@ -15349,7 +15419,6 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz", "integrity": "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==", "license": "MIT", - "peer": true, "engines": { "node": ">=20" } @@ -15876,6 +15945,7 @@ "integrity": "sha512-6ot1WVks07Otj+5jDsi/NU0L3avsIA9C1mh0MtlXsR6kSvZNxwc56NH6sX3M1p+5e8Ysl777Vs4PqmgHh7LrNg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "chalk": "^5.3.0", "commander": "^14.0.0", @@ -15904,6 +15974,7 @@ "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -17221,6 +17292,7 @@ "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", "dev": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "jake": "^10.8.5" }, @@ -17511,6 +17583,7 @@ "dev": true, "hasInstallScript": true, "license": "MIT", + "peer": true, "bin": { "esbuild": "bin/esbuild" }, @@ -17611,7 +17684,6 @@ "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -18431,7 +18503,6 @@ "integrity": "sha512-5ot+Apo0bEvMD/nqzWymQpgyWnOdu0kVpmahLx5T7NzUc6RyifucZ24Gsfr6F6C8yRGBhmoFh7ZeY+W9kteEBQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@vitest/snapshot": "^4.0.16", "deep-eql": "^5.0.2", @@ -18709,7 +18780,6 @@ "resolved": "https://registry.npmjs.org/expo/-/expo-54.0.33.tgz", "integrity": "sha512-3yOEfAKqo+gqHcV8vKcnq0uA5zxlohnhA3fu4G43likN8ct5ZZ3LjAh9wDdKteEkoad3tFPvwxmXW711S5OHUw==", "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.20.0", "@expo/cli": "54.0.23", @@ -18762,7 +18832,6 @@ "resolved": "https://registry.npmjs.org/expo-application/-/expo-application-7.0.8.tgz", "integrity": "sha512-qFGyxk7VJbrNOQWBbE09XUuGuvkOgFS9QfToaK2FdagM2aQ+x3CvGV2DuVgl/l4ZxPgIf3b/MNh9xHpwSwn74Q==", "license": "MIT", - "peer": true, "peerDependencies": { "expo": "*" } @@ -18772,7 +18841,6 @@ "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-12.0.12.tgz", "integrity": "sha512-CsXFCQbx2fElSMn0lyTdRIyKlSXOal6ilLJd+yeZ6xaC7I9AICQgscY5nj0QcwgA+KYYCCEQEBndMsmj7drOWQ==", "license": "MIT", - "peer": true, "dependencies": { "@expo/image-utils": "^0.8.8", "expo-constants": "~18.0.12" @@ -18890,7 +18958,6 @@ "resolved": "https://registry.npmjs.org/expo-device/-/expo-device-8.0.10.tgz", "integrity": "sha512-jd5BxjaF7382JkDMaC+P04aXXknB2UhWaVx5WiQKA05ugm/8GH5uaz9P9ckWdMKZGQVVEOC8MHaUADoT26KmFA==", "license": "MIT", - "peer": true, "dependencies": { "ua-parser-js": "^0.7.33" }, @@ -18912,7 +18979,6 @@ "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-19.0.21.tgz", "integrity": "sha512-s3DlrDdiscBHtab/6W1osrjGL+C2bvoInPJD7sOwmxfJ5Woynv2oc+Fz1/xVXaE/V7HE/+xrHC/H45tu6lZzzg==", "license": "MIT", - "peer": true, "peerDependencies": { "expo": "*", "react-native": "*" @@ -18923,7 +18989,6 @@ "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-14.0.11.tgz", "integrity": "sha512-ga0q61ny4s/kr4k8JX9hVH69exVSIfcIc19+qZ7gt71Mqtm7xy2c6kwsPTCyhBW2Ro5yXTT8EaZOpuRi35rHbg==", "license": "MIT", - "peer": true, "dependencies": { "fontfaceobserver": "^2.1.0" }, @@ -18992,7 +19057,6 @@ "resolved": "https://registry.npmjs.org/expo-localization/-/expo-localization-17.0.8.tgz", "integrity": "sha512-UrdwklZBDJ+t+ZszMMiE0SXZ2eJxcquCuQcl6EvGHM9K+e6YqKVRQ+w8qE+iIB3H75v2RJy6MHAaLK+Mqeo04g==", "license": "MIT", - "peer": true, "dependencies": { "rtl-detect": "^1.0.2" }, @@ -19828,7 +19892,6 @@ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -20375,6 +20438,7 @@ "integrity": "sha512-5giy2PkLYY1cP39p17Ech+2xlpTRL9HLspOfEgm0L6CwBXBTgsK5ou0JtzYuepxkaQ/tvhCFIJ5uXo0OrM2DxA==", "dev": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "minimatch": "^5.0.1" } @@ -20385,6 +20449,7 @@ "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "balanced-match": "^1.0.0" } @@ -20395,6 +20460,7 @@ "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", "dev": true, "license": "ISC", + "peer": true, "dependencies": { "brace-expansion": "^2.0.1" }, @@ -21137,6 +21203,7 @@ "integrity": "sha512-7tN6rFgBlMgpBML5j8typ92BKFi2sFQvIdpAqLA2beia5avZDrMs0FLZiM5etShWq5irVyGcGMEA1jcDaK7A/Q==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "resolve-pkg-maps": "^1.0.0" }, @@ -21662,6 +21729,7 @@ "integrity": "sha512-Rw/B2DNQaPBICNXEm8balFz9a6WpZrkCGpcWFpy7nCj+NyhSdqXipmfvtmWt9xGfp0wZnBxB+iVpLmQMYt47Tw==", "dev": true, "license": "ISC", + "peer": true, "dependencies": { "lru-cache": "^10.0.1" }, @@ -21674,7 +21742,8 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, - "license": "ISC" + "license": "ISC", + "peer": true }, "node_modules/html-encoding-sniffer": { "version": "3.0.0", @@ -21924,6 +21993,7 @@ "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -22113,6 +22183,7 @@ "integrity": "sha512-9VF7mrY+3OmsAfjH3yKz/pLbJ5z22E23hENKw3/LNSaA/sAt3v49bDRY+Ygct1xwuKT+U+cBfTzjCPySna69Qw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@inquirer/ansi": "^1.0.2", "@inquirer/core": "^10.3.2", @@ -22727,6 +22798,7 @@ "integrity": "sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==", "dev": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "async": "^3.2.6", "filelist": "^1.0.4", @@ -22745,7 +22817,6 @@ "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/core": "^29.7.0", "@jest/types": "^29.6.3", @@ -25623,6 +25694,7 @@ "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", "dev": true, "license": "MIT", + "peer": true, "bin": { "jiti": "lib/jiti-cli.mjs" } @@ -25771,7 +25843,6 @@ "integrity": "sha512-B7qPcEVE3NVkmSJbaYxvv4cHkVW7DQsZz13pUMrfS8z8Q/BuShN+gcTXrUlPiGqM2/t/EEaI030bpxMqY8gMlw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 10.16.0" } @@ -26680,7 +26751,8 @@ "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/lodash.isequal": { "version": "4.5.0", @@ -26701,7 +26773,8 @@ "resolved": "https://registry.npmjs.org/lodash.pickby/-/lodash.pickby-4.6.0.tgz", "integrity": "sha512-AZV+GsS/6ckvPOVQPXSiFFacKvKB4kOQu6ynt9wz0F3LO4R9Ij4K1ddYsIytDpSgLz88JHd9P+oaLeej5/Sl7Q==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/lodash.throttle": { "version": "4.1.1", @@ -26714,7 +26787,8 @@ "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/lodash.zip": { "version": "4.2.0", @@ -28841,6 +28915,7 @@ "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", "dev": true, "license": "ISC", + "peer": true, "engines": { "node": "^18.17.0 || >=20.5.0" } @@ -29288,6 +29363,7 @@ "integrity": "sha512-linxNAT6M0ebEYZOx2tO6vBEFsVgnPpv+AVjk0wJHfaUIbq31Jm3T6vvZaarnOeWDh8ShnwXuaAyM7WT3RzErA==", "dev": true, "license": "BSD-2-Clause", + "peer": true, "dependencies": { "hosted-git-info": "^8.0.0", "semver": "^7.3.5", @@ -30674,7 +30750,8 @@ "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/pend": { "version": "1.2.0", @@ -31833,7 +31910,6 @@ "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -31933,7 +32009,6 @@ "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.81.5.tgz", "integrity": "sha512-1w+/oSjEXZjMqsIvmkCRsOc8UBYv163bTWKTI8+1mxztvQPhCRYGTvZ/PL1w16xXHneIj/SLGfxWg2GWN2uexw==", "license": "MIT", - "peer": true, "dependencies": { "@jest/create-cache-key-function": "^29.7.0", "@react-native/assets-registry": "0.81.5", @@ -32009,7 +32084,6 @@ "resolved": "https://registry.npmjs.org/react-native-device-info/-/react-native-device-info-15.0.1.tgz", "integrity": "sha512-U5waZRXtT3l1SgZpZMlIvMKPTkFZPH8W7Ks6GrJhdH723aUIPxjVer7cRSij1mvQdOAAYFJV/9BDzlC8apG89A==", "license": "MIT", - "peer": true, "peerDependencies": { "react-native": "*" } @@ -32035,7 +32109,6 @@ "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.30.0.tgz", "integrity": "sha512-5YsnKHGa0X9C8lb5oCnKm0fLUPM6CRduvUUw2Bav4RIj/C3HcFh4RIUnF8wgG6JQWCL1//gRx4v+LVWgcIQdGA==", "license": "MIT", - "peer": true, "dependencies": { "@egjs/hammerjs": "^2.0.17", "hoist-non-react-statics": "^3.3.0", @@ -32085,7 +32158,6 @@ "resolved": "https://registry.npmjs.org/react-native-nitro-modules/-/react-native-nitro-modules-0.32.1.tgz", "integrity": "sha512-V+Vy76e4fxRxgVGu5Uh3cBPvuFQW8fM1OUKk1mqEA/JawjhX+hxHtBhpfuvNjV0BnV/uXCIg8/eK+rTpB6tqFg==", "license": "MIT", - "peer": true, "peerDependencies": { "react": "*", "react-native": "*" @@ -32108,7 +32180,6 @@ "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-3.19.5.tgz", "integrity": "sha512-bd4AwIkBAaY4BjrgpSoKjEaRG/tXD756F5nGuiH5IMBSKN8tRdUEA8hWZCyIo/R6/kha/tVSoCqodVUACh7ZWw==", "license": "MIT", - "peer": true, "dependencies": { "@babel/plugin-transform-arrow-functions": "^7.0.0-0", "@babel/plugin-transform-class-properties": "^7.0.0-0", @@ -32144,7 +32215,6 @@ "resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-5.6.2.tgz", "integrity": "sha512-4XGqMNj5qjUTYywJqpdWZ9IG8jgkS3h06sfVjfw5yZQZfWnRFXczi0GnYyFyCc2EBps/qFmoCH8fez//WumdVg==", "license": "MIT", - "peer": true, "peerDependencies": { "react": "*", "react-native": "*" @@ -32164,7 +32234,6 @@ "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-4.23.0.tgz", "integrity": "sha512-XhO3aK0UeLpBn4kLecd+J+EDeRRJlI/Ro9Fze06vo1q163VeYtzfU9QS09/VyDFMWR1qxDC1iazCArTPSFFiPw==", "license": "MIT", - "peer": true, "dependencies": { "react-freeze": "^1.0.0", "warn-once": "^0.1.0" @@ -32188,7 +32257,6 @@ "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-15.15.3.tgz", "integrity": "sha512-/k4KYwPBLGcx2f5d4FjE+vCScK7QOX14cl2lIASJ28u4slHHtIhL0SZKU7u9qmRBHxTCKPoPBtN6haT1NENJNA==", "license": "MIT", - "peer": true, "dependencies": { "css-select": "^5.1.0", "css-tree": "^1.1.3", @@ -32622,7 +32690,6 @@ "integrity": "sha512-jXkSl3CpvPYEF+p/eGDLB4sPoDX8pKkYvRl9+rR8HxLY0X04vW7hCm1/0zHoUSjPZ3bDa+wXWNTDVIw/R8aDVw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "react-is": "^19.1.0", "scheduler": "^0.26.0" @@ -32637,6 +32704,7 @@ "integrity": "sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/normalize-package-data": "^2.4.1", "normalize-package-data": "^6.0.0", @@ -32656,6 +32724,7 @@ "integrity": "sha512-aNtBq4jR8NawpKJQldrQcSW9y/d+KWH4v24HWkHljOZ7H0av+YTGANBzRh9A5pw7v/bLVsLVPpOhJ7gHNVy8lA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "find-up": "^6.3.0", "read-pkg": "^8.1.0", @@ -32674,6 +32743,7 @@ "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "locate-path": "^7.1.0", "path-exists": "^5.0.0" @@ -32691,6 +32761,7 @@ "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", "dev": true, "license": "ISC", + "peer": true, "dependencies": { "lru-cache": "^10.0.1" }, @@ -32704,6 +32775,7 @@ "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -32714,6 +32786,7 @@ "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } @@ -32723,7 +32796,8 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, - "license": "ISC" + "license": "ISC", + "peer": true }, "node_modules/read-pkg/node_modules/normalize-package-data": { "version": "6.0.2", @@ -32731,6 +32805,7 @@ "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", "dev": true, "license": "BSD-2-Clause", + "peer": true, "dependencies": { "hosted-git-info": "^7.0.0", "semver": "^7.3.5", @@ -32746,6 +32821,7 @@ "integrity": "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "^7.21.4", "error-ex": "^1.3.2", @@ -32766,6 +32842,7 @@ "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", "dev": true, "license": "(MIT OR CC0-1.0)", + "peer": true, "engines": { "node": ">=14.16" }, @@ -32831,6 +32908,7 @@ "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">= 14.18.0" }, @@ -32892,6 +32970,7 @@ "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "minimatch": "^3.0.5" }, @@ -33171,6 +33250,7 @@ "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", "dev": true, "license": "MIT", + "peer": true, "funding": { "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } @@ -33399,6 +33479,7 @@ "integrity": "sha512-IoDlSLTs3Yq593mb3ZoKWKXMNu3UpObxhgA/Xuid5p4bbfi2jdY1Hj0m1K+0/tEuQTxIGMhQDqGjKb7RuxGpAQ==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=0.12.0" } @@ -33468,6 +33549,7 @@ "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", "dev": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "tslib": "^2.1.0" } @@ -35149,7 +35231,6 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", "license": "MIT", - "peer": true, "engines": { "node": ">=18" } @@ -35796,7 +35877,6 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -35816,6 +35896,7 @@ "integrity": "sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=14.0.0" } @@ -36019,6 +36100,7 @@ "integrity": "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "esbuild": "~0.27.0", "get-tsconfig": "^4.7.5" @@ -36125,7 +36207,6 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "devOptional": true, "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -38133,7 +38214,6 @@ "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", "dev": true, "license": "MIT", - "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } diff --git a/package.json b/package.json index c263cd0ea6..70e57c5978 100644 --- a/package.json +++ b/package.json @@ -55,16 +55,17 @@ "@react-native-vector-icons/material-icons": "12.4.0", "@react-native-vector-icons/octicons": "20.4.0", "@react-navigation/bottom-tabs": "7.14.0", + "@react-navigation/elements": "2.9.5", "@react-navigation/native": "7.1.28", "@react-navigation/stack": "7.7.2", "@rnmapbox/maps": "10.1.42", "@sentry/react-native": "8.0.0", "@tanstack/react-query": "5.90.21", - "@turf/helpers": "7.3.4", - "@turf/random": "7.3.4", "@turf/bbox-polygon": "7.3.4", "@turf/boolean-point-in-polygon": "7.3.4", + "@turf/helpers": "7.3.4", "@turf/point-to-polygon-distance": "7.3.4", + "@turf/random": "7.3.4", "buffer": "6.0.3", "cheap-ruler": "4.0.0", "eventemitter3": "5.0.4", diff --git a/src/backend/src/app.js b/src/backend/src/app.js index d0da75c470..eed656ca96 100644 --- a/src/backend/src/app.js +++ b/src/backend/src/app.js @@ -104,17 +104,6 @@ export async function init({ }, }) - const { publicKey, secretKey } = new KeyManager(rootKey).getIdentityKeypair() - const mapServer = createMapServer({ - defaultOnlineStyleUrl: DEFAULT_ONLINE_MAP_STYLE_URL, - fallbackMapPath: DEFAULT_FALLBACK_MAP_FILE_PATH, - customMapPath: join(customMapsDir, DEFAULT_CUSTOM_MAP_FILE_NAME), - keyPair: { - publicKey: new Uint8Array(publicKey), - secretKey: new Uint8Array(secretKey), - }, - }) - // Don't await, methods that use the server will await this internally // Server is listening on loopback only, so will not be accessible from other devices on the network fastify.listen({ host: '127.0.0.1', port: 0 }).catch((error) => { diff --git a/src/frontend/screens/BackgroundMaps/MapReceivedBottomSheet.tsx b/src/frontend/screens/BackgroundMaps/MapReceivedBottomSheet.tsx index 030cb428a2..156b0f1cee 100644 --- a/src/frontend/screens/BackgroundMaps/MapReceivedBottomSheet.tsx +++ b/src/frontend/screens/BackgroundMaps/MapReceivedBottomSheet.tsx @@ -27,7 +27,10 @@ import { useDownloadReceivedMapShare, useGetCustomMapInfo, useSingleReceivedMapShare, + getErrorCode, + MapShareErrorCode, } from '@comapeo/core-react'; +import {Loading} from '../../sharedComponents/Loading'; import * as Sentry from '@sentry/react-native'; import {toError} from '../../utils/errors'; @@ -126,7 +129,8 @@ export function MapReceivedBottomSheet({ ]); const {data: customMapInfo, error: customMapError} = useGetCustomMapInfo(); - const {mutate: declineMapShare} = useDeclineReceivedMapShare(); + const {mutate: declineMapShare, status: declineStatus} = + useDeclineReceivedMapShare(); const {mutate: downloadMapShare} = useDownloadReceivedMapShare(); const handleAccept = () => { @@ -166,6 +170,10 @@ export function MapReceivedBottomSheet({ navigation.goBack(); }, onError: (err: unknown) => { + if (getErrorCode(err) === MapShareErrorCode.MAP_SHARE_CANCELED) { + navigation.goBack(); + return; + } Sentry.captureException(err); navigation.goBack(); }, @@ -226,11 +234,15 @@ export function MapReceivedBottomSheet({ {warningInfo.warning !== 'space' && ( )} - + {declineStatus === 'pending' ? ( + + ) : ( + + )} diff --git a/src/frontend/screens/BackgroundMaps/MapShareCanceledBottomSheet.tsx b/src/frontend/screens/BackgroundMaps/MapShareCanceledBottomSheet.tsx index 6acebca82d..cc56ca611a 100644 --- a/src/frontend/screens/BackgroundMaps/MapShareCanceledBottomSheet.tsx +++ b/src/frontend/screens/BackgroundMaps/MapShareCanceledBottomSheet.tsx @@ -28,7 +28,7 @@ export function MapShareCanceledBottomSheet({ const {formatMessage: t} = useIntl(); const handleClose = () => { - navigation.popTo('BackgroundMaps'); + navigation.goBack(); }; return ( diff --git a/src/frontend/screens/BackgroundMaps/ReceivingBackgroundMap.tsx b/src/frontend/screens/BackgroundMaps/ReceivingBackgroundMap.tsx index 317faaa1fa..71070a6436 100644 --- a/src/frontend/screens/BackgroundMaps/ReceivingBackgroundMap.tsx +++ b/src/frontend/screens/BackgroundMaps/ReceivingBackgroundMap.tsx @@ -3,10 +3,13 @@ import {StyleSheet, View, Pressable} from 'react-native'; import {defineMessages, useIntl} from 'react-intl'; import MaterialIcon from '@react-native-vector-icons/material-icons'; import * as Sentry from '@sentry/react-native'; +import {useKeepAwake} from 'expo-keep-awake'; import { useAbortReceivedMapShareDownload, useSingleReceivedMapShare, + getErrorCode, + MapShareErrorCode, } from '@comapeo/core-react'; import StackSvg from '../../images/Stack.svg'; import SuccessIcon from '../../images/Success.svg'; @@ -48,6 +51,7 @@ export function ReceivingBackgroundMap({ const mapShare = useSingleReceivedMapShare({shareId}); usePreventAndroidBackButton(); + useKeepAwake(); React.useEffect(() => { if (mapShare.status === 'canceled') { @@ -69,6 +73,10 @@ export function ReceivingBackgroundMap({ navigation.popTo('BackgroundMaps'); }, onError: (err: unknown) => { + if (getErrorCode(err) === MapShareErrorCode.MAP_SHARE_CANCELED) { + navigation.replace('MapShareCanceledBottomSheet'); + return; + } const error = toError(err, 'Failed to cancel map download'); Sentry.captureException(error); navigation.replace('ErrorBottomSheet', {error}); diff --git a/src/frontend/screens/BackgroundMaps/ReplaceBackgroundMap.tsx b/src/frontend/screens/BackgroundMaps/ReplaceBackgroundMap.tsx index df464c6295..13f6cda887 100644 --- a/src/frontend/screens/BackgroundMaps/ReplaceBackgroundMap.tsx +++ b/src/frontend/screens/BackgroundMaps/ReplaceBackgroundMap.tsx @@ -14,6 +14,8 @@ import {VERY_LIGHT_GREY, RED, NEW_DARK_GREY} from '../../lib/styles'; import { useDeclineReceivedMapShare, useDownloadReceivedMapShare, + getErrorCode, + MapShareErrorCode, } from '@comapeo/core-react'; import * as Sentry from '@sentry/react-native'; import {toError} from '../../utils/errors'; @@ -55,6 +57,10 @@ export function ReplaceBackgroundMap({ navigation.replace('ReceivingBackgroundMap', {shareId}); }, onError: (err: unknown) => { + if (getErrorCode(err) === MapShareErrorCode.MAP_SHARE_CANCELED) { + navigation.navigate('MapShareCanceledBottomSheet'); + return; + } const error = toError(err, 'Failed to start map download'); Sentry.captureException(error); navigation.navigate('ErrorBottomSheet', {error}); @@ -71,6 +77,10 @@ export function ReplaceBackgroundMap({ navigation.popTo('BackgroundMaps'); }, onError: (err: unknown) => { + if (getErrorCode(err) === MapShareErrorCode.MAP_SHARE_CANCELED) { + navigation.goBack(); + return; + } const error = toError(err, 'Failed to decline map share'); Sentry.captureException(error); navigation.navigate('ErrorBottomSheet', {error}); diff --git a/src/frontend/screens/BackgroundMaps/SendingBackgroundMap.tsx b/src/frontend/screens/BackgroundMaps/SendingBackgroundMap.tsx index de61d34fef..0b4b36122e 100644 --- a/src/frontend/screens/BackgroundMaps/SendingBackgroundMap.tsx +++ b/src/frontend/screens/BackgroundMaps/SendingBackgroundMap.tsx @@ -3,10 +3,13 @@ import {AppState, StyleSheet, View, Pressable} from 'react-native'; import {defineMessages, useIntl} from 'react-intl'; import * as Sentry from '@sentry/react-native'; import MaterialIcon from '@react-native-vector-icons/material-icons'; +import {useKeepAwake} from 'expo-keep-awake'; import { useCancelSentMapShare, useSingleSentMapShare, + getErrorCode, + MapShareErrorCode, } from '@comapeo/core-react'; import SendingIcon from '../../images/SendingIcon.svg'; import StackSvg from '../../images/Stack.svg'; @@ -78,6 +81,7 @@ export function SendingBackgroundMap({ const mapShare = useSingleSentMapShare({shareId}); const {mutate: cancelMapShare} = useCancelSentMapShare(); const currentTime = useCurrentTime(1000); + useKeepAwake(); usePreventAndroidBackButton(); @@ -93,8 +97,18 @@ export function SendingBackgroundMap({ navigation.goBack(); }, onError: (err: Error) => { + const code = getErrorCode(err); + if ( + code === MapShareErrorCode.INVALID_STATUS_TRANSITION || + code === MapShareErrorCode.MAP_SHARE_NOT_FOUND + ) { + navigation.goBack(); + return; + } Sentry.captureException(err); - navigation.replace('ErrorBottomSheet', {error: err}); + navigation.replace('ErrorBottomSheet', { + error: toError(err, 'Failed to cancel map share'), + }); }, }, ); @@ -120,10 +134,9 @@ export function SendingBackgroundMap({ return; } if (mapShare.status === 'error') { - Sentry.captureException(mapShare.error); - navigation.replace('ErrorBottomSheet', { - error: toError(mapShare.error, 'Map share failed'), - }); + const error = toError(mapShare.error, 'Map share failed'); + Sentry.captureException(error); + navigation.replace('ErrorBottomSheet', {error}); } }, [mapShare, navigation]); From c44c8646a334f3250e65b514c2bb542d9a7f27ad Mon Sep 17 00:00:00 2001 From: Cindy Green Date: Mon, 6 Apr 2026 11:46:12 -0400 Subject: [PATCH 54/72] Updates pattern for finding devices for map sharing to same project existing not same project open. --- .../SelectMapShareDevice.test.ts | 71 +++++++++---------- .../BackgroundMaps/SelectMapShareDevice.tsx | 32 ++++----- 2 files changed, 48 insertions(+), 55 deletions(-) diff --git a/src/frontend/screens/BackgroundMaps/SelectMapShareDevice.test.ts b/src/frontend/screens/BackgroundMaps/SelectMapShareDevice.test.ts index 0af1ccecba..e574f6e0c1 100644 --- a/src/frontend/screens/BackgroundMaps/SelectMapShareDevice.test.ts +++ b/src/frontend/screens/BackgroundMaps/SelectMapShareDevice.test.ts @@ -1,13 +1,12 @@ import {type MapeoClientApi} from '@comapeo/ipc'; -import {type useSyncState} from '@comapeo/core-react'; +import type {MemberApi} from '@comapeo/core'; import {getSelectableDevicesForMapShare} from './SelectMapShareDevice'; +import {COORDINATOR_ROLE_ID, MEMBER_ROLE_ID} from '../../sharedTypes'; type PublicPeerInfo = Awaited< ReturnType >[number]; -type SyncState = ReturnType; - function mockPeer( deviceId: string, name: string, @@ -22,24 +21,25 @@ function mockPeer( } as PublicPeerInfo; } -function mockSyncState(connectedDeviceIds: string[]): SyncState { - const remoteDeviceSyncState: Record< - string, - {syncing: boolean; progress: number} - > = {}; - for (const deviceId of connectedDeviceIds) { - remoteDeviceSyncState[deviceId] = { - syncing: false, - progress: 0, - }; - } +function mockMember( + deviceId: string, + roleId: MemberApi.RoleId, + deviceType: 'mobile' | 'desktop' = 'mobile', +): MemberApi.ActiveMemberInfo { return { - remoteDeviceSyncState, - } as unknown as SyncState; + deviceId, + name: `Device ${deviceId}`, + role: { + // @ts-expect-error Sufficient for testing purposes + roleId, + }, + deviceType, + joinedAt: new Date().toISOString(), + }; } describe('getSelectableDevicesForMapShare', () => { - it('should return only peers that are on the same project', () => { + it('should return only peers that are project members', () => { const peers = [ mockPeer('peer-1', 'Peer 1'), mockPeer('peer-2', 'Peer 2'), @@ -48,19 +48,22 @@ describe('getSelectableDevicesForMapShare', () => { const result = getSelectableDevicesForMapShare({ peers, - syncState: mockSyncState(['peer-1', 'peer-2']), + projectMembers: [ + mockMember('peer-1', COORDINATOR_ROLE_ID), + mockMember('peer-2', MEMBER_ROLE_ID), + ], }); expect(result).toHaveLength(2); expect(result.map(p => p.deviceId)).toEqual(['peer-1', 'peer-2']); }); - it('should return empty array when there are no devices on same project', () => { + it('should return empty array when there are no project members', () => { const peers = [mockPeer('peer-1', 'Peer 1'), mockPeer('peer-2', 'Peer 2')]; const result = getSelectableDevicesForMapShare({ peers, - syncState: mockSyncState([]), + projectMembers: [], }); expect(result).toHaveLength(0); @@ -71,24 +74,13 @@ describe('getSelectableDevicesForMapShare', () => { const result = getSelectableDevicesForMapShare({ peers, - syncState: mockSyncState(['member-1']), - }); - - expect(result).toHaveLength(0); - }); - - it('should return empty array when syncState is null (no devices on same project)', () => { - const peers = [mockPeer('peer-1', 'Peer 1'), mockPeer('peer-2', 'Peer 2')]; - - const result = getSelectableDevicesForMapShare({ - peers, - syncState: null, + projectMembers: [mockMember('member-1', COORDINATOR_ROLE_ID)], }); expect(result).toHaveLength(0); }); - it('should filter peers to only those on the same project', () => { + it('should filter peers to only those that are project members', () => { const peers = [ mockPeer('peer-1', 'Peer 1'), mockPeer('peer-2', 'Peer 2'), @@ -98,14 +90,17 @@ describe('getSelectableDevicesForMapShare', () => { const result = getSelectableDevicesForMapShare({ peers, - syncState: mockSyncState(['peer-2', 'peer-4']), + projectMembers: [ + mockMember('peer-2', COORDINATOR_ROLE_ID), + mockMember('peer-4', MEMBER_ROLE_ID), + ], }); expect(result).toHaveLength(2); expect(result.map(p => p.deviceId)).toEqual(['peer-2', 'peer-4']); }); - it('should include all peers that are on the same project regardless of connection status', () => { + it('should include project member peers regardless of connection status', () => { const peers = [ mockPeer('peer-1', 'Peer 1', 'mobile', 'connected'), mockPeer('peer-2', 'Peer 2', 'desktop', 'disconnected'), @@ -114,7 +109,11 @@ describe('getSelectableDevicesForMapShare', () => { const result = getSelectableDevicesForMapShare({ peers, - syncState: mockSyncState(['peer-1', 'peer-2', 'peer-3']), + projectMembers: [ + mockMember('peer-1', COORDINATOR_ROLE_ID), + mockMember('peer-2', COORDINATOR_ROLE_ID), + mockMember('peer-3', MEMBER_ROLE_ID), + ], }); expect(result).toHaveLength(3); diff --git a/src/frontend/screens/BackgroundMaps/SelectMapShareDevice.tsx b/src/frontend/screens/BackgroundMaps/SelectMapShareDevice.tsx index d6d401ce05..8a20937564 100644 --- a/src/frontend/screens/BackgroundMaps/SelectMapShareDevice.tsx +++ b/src/frontend/screens/BackgroundMaps/SelectMapShareDevice.tsx @@ -3,7 +3,8 @@ import {defineMessages, useIntl} from 'react-intl'; import {ScrollView, StyleSheet, View, TouchableOpacity} from 'react-native'; import * as Sentry from '@sentry/react-native'; -import {useSendMapShare, useSyncState} from '@comapeo/core-react'; +import {useSendMapShare, useManyMembers} from '@comapeo/core-react'; +import type {MemberApi} from '@comapeo/core'; import {type MapeoClientApi} from '@comapeo/ipc'; import {toError} from '../../utils/errors'; import {useLocalDiscoveryState} from '../../hooks/useLocalDiscoveryState'; @@ -23,18 +24,14 @@ type PublicPeerInfo = Awaited< export function getSelectableDevicesForMapShare({ peers, - syncState, + projectMembers, }: { peers: PublicPeerInfo[]; - syncState: ReturnType; + projectMembers: MemberApi.ActiveMemberInfo[]; }): PublicPeerInfo[] { - if (!syncState) return []; - - const connectedDeviceIds = Object.keys(syncState.remoteDeviceSyncState); - - return peers.filter(device => { - return connectedDeviceIds.includes(device.deviceId); - }); + return peers.filter(device => + projectMembers.some(member => member.deviceId === device.deviceId), + ); } const m = defineMessages({ @@ -54,10 +51,6 @@ const m = defineMessages({ id: 'screen.BackgroundMaps.SelectDevice.sameVersion', defaultMessage: 'Make sure both devices are on the same version of CoMapeo', }, - sameProject: { - id: 'screen.BackgroundMaps.SelectDevice.sameProject', - defaultMessage: 'Make sure both devices have the same project open', - }, }); export const SelectMapShareDevice = ({ @@ -68,12 +61,15 @@ export const SelectMapShareDevice = ({ const availablePeers = useInitiallyConnectedPeers(); const {projectId} = useActiveProject(); - const syncState = useSyncState({projectId}); + const {data: projectMembers} = useManyMembers({ + projectId, + includeLeft: false, + }); const {mutateAsync: sendMapShare} = useSendMapShare(); const selectableDevices = getSelectableDevicesForMapShare({ peers: availablePeers, - syncState, + projectMembers, }); return ( @@ -90,8 +86,7 @@ export const SelectMapShareDevice = ({ {`\u2022 ${t(m.sameWifi)}`} {`\u2022 ${t(m.sameVersion)}`} - {`\u2022 ${t(m.sameProject)}`} + @@ -114,7 +109,6 @@ export const SelectMapShareDevice = ({ const handlePress = async () => { try { const mapShare = await sendMapShare({ - projectId, receiverDeviceId: deviceId, mapId: 'custom', }); From 39e046afa7f9e929a0215bc37a584c65136f86b4 Mon Sep 17 00:00:00 2001 From: Cindy Green Date: Mon, 6 Apr 2026 11:48:19 -0400 Subject: [PATCH 55/72] Updates messages. --- messages/en.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/messages/en.json b/messages/en.json index d3ec6dfbdf..202d64336e 100644 --- a/messages/en.json +++ b/messages/en.json @@ -430,9 +430,6 @@ "screen.BackgroundMaps.SelectDevice.notSeeingDevice": { "message": "Not seeing a Device?" }, - "screen.BackgroundMaps.SelectDevice.sameProject": { - "message": "Make sure both devices have the same project open" - }, "screen.BackgroundMaps.SelectDevice.sameVersion": { "message": "Make sure both devices are on the same version of CoMapeo" }, From d47367c304f59b552fb7de924b432810cc0d3966 Mon Sep 17 00:00:00 2001 From: Cindy Green Date: Mon, 6 Apr 2026 12:15:01 -0400 Subject: [PATCH 56/72] Tries to fix ci error. Updates typebox version to fix patch package warning. --- package-lock.json | 8 ++++---- package.json | 3 +++ .../{typebox+1.0.81.patch => typebox+1.1.10.patch} | 0 3 files changed, 7 insertions(+), 4 deletions(-) rename src/backend/patches/{typebox+1.0.81.patch => typebox+1.1.10.patch} (100%) diff --git a/package-lock.json b/package-lock.json index 39fc44749c..c50a007df5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -38219,16 +38219,16 @@ } }, "node_modules/zod-validation-error": { - "version": "3.5.4", - "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-3.5.4.tgz", - "integrity": "sha512-+hEiRIiPobgyuFlEojnqjJnhFvg4r/i3cqgcm67eehZf/WBaK3g6cD02YU9mtdVxZjv8CzCA9n/Rhrs3yAAvAw==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-4.0.2.tgz", + "integrity": "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==", "dev": true, "license": "MIT", "engines": { "node": ">=18.0.0" }, "peerDependencies": { - "zod": "^3.24.4" + "zod": "^3.25.0 || ^4.0.0" } }, "node_modules/zustand": { diff --git a/package.json b/package.json index 70e57c5978..5d49bc9d7d 100644 --- a/package.json +++ b/package.json @@ -128,6 +128,9 @@ "validate-color": "2.2.4", "zustand": "5.0.11" }, + "overrides": { + "zod-validation-error": "4.0.2" + }, "devDependencies": { "@babel/core": "7.28.5", "@babel/preset-env": "7.28.5", diff --git a/src/backend/patches/typebox+1.0.81.patch b/src/backend/patches/typebox+1.1.10.patch similarity index 100% rename from src/backend/patches/typebox+1.0.81.patch rename to src/backend/patches/typebox+1.1.10.patch From 581b2da099308e93b6638539dc481a39b0ec13f7 Mon Sep 17 00:00:00 2001 From: Cindy Green Date: Mon, 6 Apr 2026 13:19:35 -0400 Subject: [PATCH 57/72] Override for sodium native --- package-lock.json | 399 ++++++++++++++++++++++------------------------ package.json | 8 +- 2 files changed, 194 insertions(+), 213 deletions(-) diff --git a/package-lock.json b/package-lock.json index c50a007df5..2110482e71 100644 --- a/package-lock.json +++ b/package-lock.json @@ -108,7 +108,7 @@ "@babel/core": "7.28.5", "@babel/preset-env": "7.28.5", "@babel/runtime": "7.28.4", - "@comapeo/cloud": "0.3.0", + "@comapeo/cloud": "0.4.0", "@comapeo/core": "7.0.1", "@comapeo/schema": "2.2.0", "@digidem/types": "2.3.0", @@ -231,6 +231,7 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", @@ -2391,6 +2392,7 @@ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", "license": "MIT", + "peer": true, "engines": { "node": ">=6.9.0" } @@ -2523,13 +2525,13 @@ } }, "node_modules/@comapeo/cloud": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@comapeo/cloud/-/cloud-0.3.0.tgz", - "integrity": "sha512-XvZ2cOO72lCXWPSaK4lx1dO2/1wGpaYUQzY1KYmXOdHaKUWAJQxZDQ0ZHQyytYI4cf5uFP/aNUfOtKPum3LGqQ==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@comapeo/cloud/-/cloud-0.4.0.tgz", + "integrity": "sha512-uqoGOYSTsKUjPCkxkb+gCE1f5udY3nv6M/26KUx3ZqL1Jwz8q4E3xslmXtcBjYQRsWfa1gwxjwJxPLdYrU+3QQ==", "dev": true, "license": "MIT", "dependencies": { - "@comapeo/core": "^5.1.1", + "@comapeo/core": "^6.0.0", "@fastify/sensible": "^5.6.0", "@fastify/type-provider-typebox": "^4.1.0", "@fastify/websocket": "^10.0.1", @@ -2544,9 +2546,9 @@ } }, "node_modules/@comapeo/cloud/node_modules/@comapeo/core": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@comapeo/core/-/core-5.5.0.tgz", - "integrity": "sha512-B4L5uz116BsUiXQDx8Y/4BmhNDWT+2CjEKhUdDvPjkNWLlTaj7e6DMb0HCd9ANwBvSFLCN5HngNOzaS7l+UkjQ==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@comapeo/core/-/core-6.0.2.tgz", + "integrity": "sha512-OEF9Q9umN6/k9p4ZHdzVwdIci9YUZXFv10cda9ATUQjudeILFt7IZQPLX6ZuSwWKYL3YHdH8VfwyawH+hpOYpQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2569,6 +2571,7 @@ "comapeocat": "^1.0.0", "compact-encoding": "^2.12.0", "corestore": "6.8.4", + "custom-error-creator": "^1.1.1", "debug": "^4.3.4", "dot-prop": "^9.0.0", "dot-prop-extra": "^10.2.0", @@ -2612,6 +2615,36 @@ "zip-stream-promise": "^1.0.2" } }, + "node_modules/@comapeo/cloud/node_modules/@hyperswarm/secret-stream": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/@hyperswarm/secret-stream/-/secret-stream-6.7.1.tgz", + "integrity": "sha512-isb18Pt6lXBpOQMRmpqItw+kYynXilOFyOhto/RMP15WQtTWC0rR5jfZPYXU7ZYV6Kxd2lyQ4ZBevoIcvEJHEQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "b4a": "^1.1.0", + "hypercore-crypto": "^3.3.1", + "noise-curve-ed": "^2.0.1", + "noise-handshake": "^3.0.2", + "sodium-secretstream": "^1.1.0", + "sodium-universal": "^4.0.0", + "streamx": "^2.14.0", + "timeout-refresh": "^2.0.0", + "unslab": "^1.3.0" + } + }, + "node_modules/@comapeo/cloud/node_modules/noise-handshake": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/noise-handshake/-/noise-handshake-3.1.0.tgz", + "integrity": "sha512-0S1qkUvMbTvZCfgr/vSkVT84YyvI4Q0OLwSc5BFxVmjaePrxAwVeXeJDY3A7N/7+qj95gZ15LaNoP9ZnBXH5Lw==", + "dev": true, + "license": "ISC", + "dependencies": { + "b4a": "^1.1.0", + "nanoassert": "^2.0.0", + "sodium-universal": "^4.0.0" + } + }, "node_modules/@comapeo/cloud/node_modules/p-timeout": { "version": "6.1.4", "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.4.tgz", @@ -2630,6 +2663,7 @@ "resolved": "https://registry.npmjs.org/@comapeo/core/-/core-7.0.1.tgz", "integrity": "sha512-og7ka/bbnHh6CdKFnF0SECZT/Urv/m9bG133owd1t3o8slKP25h6oxPJt9X2HgeBAP3ggybdBluynQDbHqFLQA==", "license": "MIT", + "peer": true, "dependencies": { "@comapeo/fallback-smp": "^1.0.0", "@comapeo/schema": "2.2.0", @@ -2740,6 +2774,34 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/@comapeo/core/node_modules/@hyperswarm/secret-stream": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/@hyperswarm/secret-stream/-/secret-stream-6.7.1.tgz", + "integrity": "sha512-isb18Pt6lXBpOQMRmpqItw+kYynXilOFyOhto/RMP15WQtTWC0rR5jfZPYXU7ZYV6Kxd2lyQ4ZBevoIcvEJHEQ==", + "license": "Apache-2.0", + "dependencies": { + "b4a": "^1.1.0", + "hypercore-crypto": "^3.3.1", + "noise-curve-ed": "^2.0.1", + "noise-handshake": "^3.0.2", + "sodium-secretstream": "^1.1.0", + "sodium-universal": "^4.0.0", + "streamx": "^2.14.0", + "timeout-refresh": "^2.0.0", + "unslab": "^1.3.0" + } + }, + "node_modules/@comapeo/core/node_modules/noise-handshake": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/noise-handshake/-/noise-handshake-3.1.0.tgz", + "integrity": "sha512-0S1qkUvMbTvZCfgr/vSkVT84YyvI4Q0OLwSc5BFxVmjaePrxAwVeXeJDY3A7N/7+qj95gZ15LaNoP9ZnBXH5Lw==", + "license": "ISC", + "dependencies": { + "b4a": "^1.1.0", + "nanoassert": "^2.0.0", + "sodium-universal": "^4.0.0" + } + }, "node_modules/@comapeo/core/node_modules/p-timeout": { "version": "6.1.4", "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.4.tgz", @@ -2772,6 +2834,7 @@ "resolved": "https://registry.npmjs.org/@comapeo/ipc/-/ipc-8.0.0.tgz", "integrity": "sha512-kzlcoB0fXj/w1CZxqp9rK86LKqeYSJ3dwh+I7TT1EzjNd9y66iXIviuwjuIb2hcNjT6BWv4pyvUfC9DWc1xIVQ==", "license": "MIT", + "peer": true, "dependencies": { "eventemitter3": "^5.0.4", "p-defer": "^4.0.1", @@ -2917,6 +2980,7 @@ "resolved": "https://registry.npmjs.org/@comapeo/schema/-/schema-2.2.0.tgz", "integrity": "sha512-SbD/Q0BsirAFSj2LETqwgyx/Om62lUVT3R05k9vK5Ld+u+VNn1Xsg2nRblf6Xh9mP1U3rBYJvjjuYQ1lPUYmLA==", "license": "MIT", + "peer": true, "dependencies": { "@comapeo/geometry": "^1.1.1", "compact-encoding": "^2.12.0", @@ -3025,7 +3089,6 @@ "os": [ "aix" ], - "peer": true, "engines": { "node": ">=18" } @@ -3043,7 +3106,6 @@ "os": [ "android" ], - "peer": true, "engines": { "node": ">=18" } @@ -3061,7 +3123,6 @@ "os": [ "android" ], - "peer": true, "engines": { "node": ">=18" } @@ -3079,7 +3140,6 @@ "os": [ "android" ], - "peer": true, "engines": { "node": ">=18" } @@ -3097,7 +3157,6 @@ "os": [ "darwin" ], - "peer": true, "engines": { "node": ">=18" } @@ -3115,7 +3174,6 @@ "os": [ "darwin" ], - "peer": true, "engines": { "node": ">=18" } @@ -3133,7 +3191,6 @@ "os": [ "freebsd" ], - "peer": true, "engines": { "node": ">=18" } @@ -3151,7 +3208,6 @@ "os": [ "freebsd" ], - "peer": true, "engines": { "node": ">=18" } @@ -3169,7 +3225,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -3187,7 +3242,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -3205,7 +3259,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -3223,7 +3276,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -3241,7 +3293,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -3259,7 +3310,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -3277,7 +3327,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -3295,7 +3344,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -3313,7 +3361,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -3331,7 +3378,6 @@ "os": [ "netbsd" ], - "peer": true, "engines": { "node": ">=18" } @@ -3349,7 +3395,6 @@ "os": [ "netbsd" ], - "peer": true, "engines": { "node": ">=18" } @@ -3367,7 +3412,6 @@ "os": [ "openbsd" ], - "peer": true, "engines": { "node": ">=18" } @@ -3385,7 +3429,6 @@ "os": [ "openbsd" ], - "peer": true, "engines": { "node": ">=18" } @@ -3403,7 +3446,6 @@ "os": [ "openharmony" ], - "peer": true, "engines": { "node": ">=18" } @@ -3421,7 +3463,6 @@ "os": [ "sunos" ], - "peer": true, "engines": { "node": ">=18" } @@ -3439,7 +3480,6 @@ "os": [ "win32" ], - "peer": true, "engines": { "node": ">=18" } @@ -3457,7 +3497,6 @@ "os": [ "win32" ], - "peer": true, "engines": { "node": ">=18" } @@ -3475,7 +3514,6 @@ "os": [ "win32" ], - "peer": true, "engines": { "node": ">=18" } @@ -5088,61 +5126,12 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@hyperswarm/secret-stream": { - "version": "6.9.1", - "resolved": "https://registry.npmjs.org/@hyperswarm/secret-stream/-/secret-stream-6.9.1.tgz", - "integrity": "sha512-xb0S5y3YJwBakD77JOGBHlBxdp63mHClZoXBYoLv+9wH8e054ESKlmQptWqjJK5dv5VMUIVYOJB4MaOpB0JdGw==", - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.1.0", - "hypercore-crypto": "^3.3.1", - "noise-curve-ed": "^2.0.1", - "noise-handshake": "^4.0.0", - "sodium-secretstream": "^1.1.0", - "sodium-universal": "^5.0.0", - "streamx": "^2.14.0", - "timeout-refresh": "^2.0.0", - "unslab": "^1.3.0" - } - }, - "node_modules/@hyperswarm/secret-stream/node_modules/sodium-native": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/sodium-native/-/sodium-native-5.1.0.tgz", - "integrity": "sha512-3RxgyWyJlhTsABPnJVpCI5CoTDANZTqqFrEPqr+kjfnRaBihpVtMUE3yTF40ukdoB1APXeoBNKF3MzZAIHg39g==", - "license": "MIT", - "dependencies": { - "bare-assert": "^1.2.0", - "require-addon": "^1.1.0", - "which-runtime": "^1.2.1" - }, - "engines": { - "bare": ">=1.16.0" - } - }, - "node_modules/@hyperswarm/secret-stream/node_modules/sodium-universal": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/sodium-universal/-/sodium-universal-5.0.1.tgz", - "integrity": "sha512-rv+aH+tnKB5H0MAc2UadHShLMslpJsc4wjdnHRtiSIEYpOetCgu8MS4ExQRia+GL/MK3uuCyZPeEsi+J3h+Q+Q==", - "license": "MIT", - "dependencies": { - "sodium-native": "^5.0.1" - }, - "peerDependencies": { - "sodium-javascript": "~0.8.0" - }, - "peerDependenciesMeta": { - "sodium-javascript": { - "optional": true - } - } - }, "node_modules/@inquirer/ansi": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.2.tgz", "integrity": "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=18" } @@ -5153,7 +5142,6 @@ "integrity": "sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@inquirer/ansi": "^1.0.2", "@inquirer/core": "^10.3.2", @@ -5179,7 +5167,6 @@ "integrity": "sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/type": "^3.0.10" @@ -5202,7 +5189,6 @@ "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@inquirer/ansi": "^1.0.2", "@inquirer/figures": "^1.0.15", @@ -5231,7 +5217,6 @@ "integrity": "sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/external-editor": "^1.0.3", @@ -5255,7 +5240,6 @@ "integrity": "sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/type": "^3.0.10", @@ -5279,7 +5263,6 @@ "integrity": "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "chardet": "^2.1.1", "iconv-lite": "^0.7.0" @@ -5311,7 +5294,6 @@ "integrity": "sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/type": "^3.0.10" @@ -5334,7 +5316,6 @@ "integrity": "sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/type": "^3.0.10" @@ -5357,7 +5338,6 @@ "integrity": "sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@inquirer/ansi": "^1.0.2", "@inquirer/core": "^10.3.2", @@ -5381,7 +5361,6 @@ "integrity": "sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@inquirer/checkbox": "^4.3.2", "@inquirer/confirm": "^5.1.21", @@ -5412,7 +5391,6 @@ "integrity": "sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/type": "^3.0.10", @@ -5436,7 +5414,6 @@ "integrity": "sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@inquirer/core": "^10.3.2", "@inquirer/figures": "^1.0.15", @@ -5461,7 +5438,6 @@ "integrity": "sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@inquirer/ansi": "^1.0.2", "@inquirer/core": "^10.3.2", @@ -5487,7 +5463,6 @@ "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=18" }, @@ -8906,6 +8881,7 @@ "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-7.1.28.tgz", "integrity": "sha512-d1QDn+KNHfHGt3UIwOZvupvdsDdiHYZBEj7+wL2yDVo3tMezamYy60H9s3EnNVE1Ae1ty0trc7F2OKqo/RmsdQ==", "license": "MIT", + "peer": true, "dependencies": { "@react-navigation/core": "^7.14.0", "escape-string-regexp": "^4.0.0", @@ -9380,7 +9356,8 @@ "version": "0.33.22", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.33.22.tgz", "integrity": "sha512-auUj4k+f4pyrIVf4GW5UKquSZFHJWri06QgARy9C0t9ZTjJLIuNIrr1yl9bWcJWJ1Gz1vOvYN1D+QPaIlNMVkQ==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@sindresorhus/is": { "version": "0.14.0", @@ -9600,6 +9577,7 @@ "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/core": "^7.21.3", "@svgr/babel-preset": "8.1.0", @@ -9898,6 +9876,7 @@ "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.90.21.tgz", "integrity": "sha512-0Lu6y5t+tvlTJMTO7oh5NSpJfpg/5D41LlThfepTixPYkJ0sE2Jj0m0f6yYqujBwIXlId87e234+MxG3D3g7kg==", "license": "MIT", + "peer": true, "dependencies": { "@tanstack/query-core": "5.90.20" }, @@ -10989,6 +10968,7 @@ "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.7.tgz", "integrity": "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==", "license": "MIT", + "peer": true, "dependencies": { "csstype": "^3.2.2" } @@ -11139,6 +11119,7 @@ "integrity": "sha512-O7QnmOXYKVtPrfYzMolrCTfkezCJS9+ljLdKW/+DCvRsc3UAz+sbH6Xcsv7p30+0OwUbeWfUDAQE0vpabZ3QLg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/regexpp": "^4.10.0", "@typescript-eslint/scope-manager": "8.50.0", @@ -11383,6 +11364,7 @@ "integrity": "sha512-6/cmF2piao+f6wSxUsJLZjck7OQsYyRtcOZS02k7XINSNlz93v6emM8WutDQSXnroG2xwYlEVHJI+cPA7CPM3Q==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.50.0", "@typescript-eslint/types": "8.50.0", @@ -11811,7 +11793,6 @@ "integrity": "sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "tinyrainbow": "^1.2.0" }, @@ -11825,7 +11806,6 @@ "integrity": "sha512-oBO82rEjsxLNJincVhLhaxxZdEtV0EFHMK5Kmx5sJ6H9L183dHECjiefOAdnqpIgT5eZwT04PoggUnW88vOBNQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@vitest/pretty-format": "2.1.9", "magic-string": "^0.30.12", @@ -11879,6 +11859,7 @@ "integrity": "sha512-k/ueL14aNIEy5Onf0OVzR8kiqF/WThgLdFhxwa4e/KF/0qe38IwIdofoSWBTvvxQOesaz6riAFAUaYjoF9fLLQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/parser": "^7.29.2", "@vue/shared": "3.5.31", @@ -11988,7 +11969,6 @@ "integrity": "sha512-k3kSs1sWTnDwdFLdBua7j5O//0N9k3qTj2nkyfMnkCEzOU00UMV2Y0f/yzNrn8BkkvohrJmwdEQPYx7rNhfj9g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@vitest/snapshot": "^2.1.1", "@wdio/config": "9.27.0", @@ -12024,7 +12004,6 @@ "integrity": "sha512-yT6EAyvEqm+wFD11fg89BMxvFkYLgnIVCihfJx+k73Gm3utL/DfZQpSheQdwrlQzu5p7jHi/JwOD76740F5Peg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=18.20.0" }, @@ -12047,7 +12026,6 @@ "integrity": "sha512-DQJ+OdRBqUBcQ30DN2Z651hEVh3OoxnlDUSRqlWy9An2AY6v9rYWTj825B6zsj5pLLEToYO1tfwWq0ab183pXg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/node": "^20.1.0" }, @@ -12061,7 +12039,6 @@ "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 14" } @@ -12072,7 +12049,6 @@ "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -12086,7 +12062,6 @@ "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "agent-base": "^7.1.2", "debug": "4" @@ -12101,7 +12076,6 @@ "integrity": "sha512-ZYkZLAvKTKQXWuh5XpBw7CdbSzagarX39WyZ2H07CDLC5/KfsRGlIXV8d4+tfqX1M7916mRqR1QfNHSij+c9Pw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "type-fest": "^4.31.0" }, @@ -12118,7 +12092,6 @@ "integrity": "sha512-w07ThZND48SIr0b4S7eFougYUyclmoUwdmju8yXvEJiXYjDjeYUpl8wZrYPEYRBylxpSx+sBHfEUBrPQkcTTRQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/node": "^20.1.0", "@types/ws": "^8.5.3", @@ -12188,7 +12161,6 @@ "integrity": "sha512-9y8z7ugIbU6ycKrA2SqCpKh1/hobut2rDq9CLt/BNVzSlebBBVOTMiAt1XroZzcPnA7/ZqpbkpOsbpPUaAQuNQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@wdio/logger": "9.18.0", "@wdio/types": "9.27.0", @@ -12208,7 +12180,6 @@ "integrity": "sha512-DQJ+OdRBqUBcQ30DN2Z651hEVh3OoxnlDUSRqlWy9An2AY6v9rYWTj825B6zsj5pLLEToYO1tfwWq0ab183pXg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/node": "^20.1.0" }, @@ -12222,7 +12193,6 @@ "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "balanced-match": "^1.0.0" } @@ -12234,7 +12204,6 @@ "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", @@ -12255,8 +12224,7 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, - "license": "ISC", - "peer": true + "license": "ISC" }, "node_modules/@wdio/config/node_modules/minimatch": { "version": "9.0.9", @@ -12264,7 +12232,6 @@ "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "brace-expansion": "^2.0.2" }, @@ -12281,7 +12248,6 @@ "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "dev": true, "license": "BlueOak-1.0.0", - "peer": true, "dependencies": { "lru-cache": "^10.2.0", "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" @@ -12444,8 +12410,7 @@ "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-9.27.0.tgz", "integrity": "sha512-rIk69BsY1+6uU2PEN5FiRpI6K7HJ86YHzZRFBe4iRzKXQgGNk1zWzbdVJIuNFoOWsnmYUkK42KSSOT4Le6EmiQ==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@wdio/repl": { "version": "9.16.2", @@ -12676,7 +12641,6 @@ "integrity": "sha512-fUasd5OKJTy2seJfWnYZ9xlxTtY0p/Kyeuh7Tbb8kcofBqmBi2fTvM3sfZlo1tGQX9yCh+IS2N7hlfyFMmuZ+w==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@puppeteer/browsers": "^2.2.0", "@wdio/logger": "9.18.0", @@ -12703,7 +12667,6 @@ "integrity": "sha512-DQJ+OdRBqUBcQ30DN2Z651hEVh3OoxnlDUSRqlWy9An2AY6v9rYWTj825B6zsj5pLLEToYO1tfwWq0ab183pXg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/node": "^20.1.0" }, @@ -12805,6 +12768,7 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -13260,7 +13224,6 @@ "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.12.0" } @@ -13920,6 +13883,7 @@ "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.4.0.tgz", "integrity": "sha512-NSTU5WN+fy/L0DDenfE8SXQna4voXuW0FHM7wH8i3/q9khUSchfPbPezO4zSFMnDGIf9YE+mt/RWhZgNRKRIXA==", "license": "Apache-2.0", + "peer": true, "dependencies": { "bare-path": "^3.0.0" } @@ -14067,6 +14031,7 @@ "integrity": "sha512-EwhOpyXiOEL/lKzHz9AW1msWFNzGc/z+LzeB3/jnFJpxu+th2yqvzsSWas1v9jgs9+xiXJcD5A8CJxAG2TaghQ==", "hasInstallScript": true, "license": "MIT", + "peer": true, "dependencies": { "bindings": "^1.5.0", "prebuild-install": "^7.1.1" @@ -14386,6 +14351,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "baseline-browser-mapping": "^2.10.12", "caniuse-lite": "^1.0.30001782", @@ -14937,8 +14903,7 @@ "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz", "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/cheap-ruler": { "version": "4.0.0", @@ -15016,7 +14981,6 @@ "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "readdirp": "^4.0.1" }, @@ -15419,6 +15383,7 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz", "integrity": "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==", "license": "MIT", + "peer": true, "engines": { "node": ">=20" } @@ -15945,7 +15910,6 @@ "integrity": "sha512-6ot1WVks07Otj+5jDsi/NU0L3avsIA9C1mh0MtlXsR6kSvZNxwc56NH6sX3M1p+5e8Ysl777Vs4PqmgHh7LrNg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "chalk": "^5.3.0", "commander": "^14.0.0", @@ -15974,7 +15938,6 @@ "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -17292,7 +17255,6 @@ "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", "dev": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "jake": "^10.8.5" }, @@ -17583,7 +17545,6 @@ "dev": true, "hasInstallScript": true, "license": "MIT", - "peer": true, "bin": { "esbuild": "bin/esbuild" }, @@ -17684,6 +17645,7 @@ "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -17802,6 +17764,19 @@ "hermes-estree": "0.25.1" } }, + "node_modules/eslint-plugin-react-compiler/node_modules/zod-validation-error": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-3.5.4.tgz", + "integrity": "sha512-+hEiRIiPobgyuFlEojnqjJnhFvg4r/i3cqgcm67eehZf/WBaK3g6cD02YU9mtdVxZjv8CzCA9n/Rhrs3yAAvAw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "zod": "^3.24.4" + } + }, "node_modules/eslint-plugin-react-debug": { "version": "1.52.2", "resolved": "https://registry.npmjs.org/eslint-plugin-react-debug/-/eslint-plugin-react-debug-1.52.2.tgz", @@ -18503,6 +18478,7 @@ "integrity": "sha512-5ot+Apo0bEvMD/nqzWymQpgyWnOdu0kVpmahLx5T7NzUc6RyifucZ24Gsfr6F6C8yRGBhmoFh7ZeY+W9kteEBQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@vitest/snapshot": "^4.0.16", "deep-eql": "^5.0.2", @@ -18780,6 +18756,7 @@ "resolved": "https://registry.npmjs.org/expo/-/expo-54.0.33.tgz", "integrity": "sha512-3yOEfAKqo+gqHcV8vKcnq0uA5zxlohnhA3fu4G43likN8ct5ZZ3LjAh9wDdKteEkoad3tFPvwxmXW711S5OHUw==", "license": "MIT", + "peer": true, "dependencies": { "@babel/runtime": "^7.20.0", "@expo/cli": "54.0.23", @@ -18832,6 +18809,7 @@ "resolved": "https://registry.npmjs.org/expo-application/-/expo-application-7.0.8.tgz", "integrity": "sha512-qFGyxk7VJbrNOQWBbE09XUuGuvkOgFS9QfToaK2FdagM2aQ+x3CvGV2DuVgl/l4ZxPgIf3b/MNh9xHpwSwn74Q==", "license": "MIT", + "peer": true, "peerDependencies": { "expo": "*" } @@ -18841,6 +18819,7 @@ "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-12.0.12.tgz", "integrity": "sha512-CsXFCQbx2fElSMn0lyTdRIyKlSXOal6ilLJd+yeZ6xaC7I9AICQgscY5nj0QcwgA+KYYCCEQEBndMsmj7drOWQ==", "license": "MIT", + "peer": true, "dependencies": { "@expo/image-utils": "^0.8.8", "expo-constants": "~18.0.12" @@ -18958,6 +18937,7 @@ "resolved": "https://registry.npmjs.org/expo-device/-/expo-device-8.0.10.tgz", "integrity": "sha512-jd5BxjaF7382JkDMaC+P04aXXknB2UhWaVx5WiQKA05ugm/8GH5uaz9P9ckWdMKZGQVVEOC8MHaUADoT26KmFA==", "license": "MIT", + "peer": true, "dependencies": { "ua-parser-js": "^0.7.33" }, @@ -18979,6 +18959,7 @@ "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-19.0.21.tgz", "integrity": "sha512-s3DlrDdiscBHtab/6W1osrjGL+C2bvoInPJD7sOwmxfJ5Woynv2oc+Fz1/xVXaE/V7HE/+xrHC/H45tu6lZzzg==", "license": "MIT", + "peer": true, "peerDependencies": { "expo": "*", "react-native": "*" @@ -18989,6 +18970,7 @@ "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-14.0.11.tgz", "integrity": "sha512-ga0q61ny4s/kr4k8JX9hVH69exVSIfcIc19+qZ7gt71Mqtm7xy2c6kwsPTCyhBW2Ro5yXTT8EaZOpuRi35rHbg==", "license": "MIT", + "peer": true, "dependencies": { "fontfaceobserver": "^2.1.0" }, @@ -19057,6 +19039,7 @@ "resolved": "https://registry.npmjs.org/expo-localization/-/expo-localization-17.0.8.tgz", "integrity": "sha512-UrdwklZBDJ+t+ZszMMiE0SXZ2eJxcquCuQcl6EvGHM9K+e6YqKVRQ+w8qE+iIB3H75v2RJy6MHAaLK+Mqeo04g==", "license": "MIT", + "peer": true, "dependencies": { "rtl-detect": "^1.0.2" }, @@ -19892,6 +19875,7 @@ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", "license": "MIT", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -20438,7 +20422,6 @@ "integrity": "sha512-5giy2PkLYY1cP39p17Ech+2xlpTRL9HLspOfEgm0L6CwBXBTgsK5ou0JtzYuepxkaQ/tvhCFIJ5uXo0OrM2DxA==", "dev": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "minimatch": "^5.0.1" } @@ -20449,7 +20432,6 @@ "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "balanced-match": "^1.0.0" } @@ -20460,7 +20442,6 @@ "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "brace-expansion": "^2.0.1" }, @@ -21203,7 +21184,6 @@ "integrity": "sha512-7tN6rFgBlMgpBML5j8typ92BKFi2sFQvIdpAqLA2beia5avZDrMs0FLZiM5etShWq5irVyGcGMEA1jcDaK7A/Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "resolve-pkg-maps": "^1.0.0" }, @@ -21729,7 +21709,6 @@ "integrity": "sha512-Rw/B2DNQaPBICNXEm8balFz9a6WpZrkCGpcWFpy7nCj+NyhSdqXipmfvtmWt9xGfp0wZnBxB+iVpLmQMYt47Tw==", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "lru-cache": "^10.0.1" }, @@ -21742,8 +21721,7 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, - "license": "ISC", - "peer": true + "license": "ISC" }, "node_modules/html-encoding-sniffer": { "version": "3.0.0", @@ -21969,6 +21947,34 @@ "z32": "^1.0.0" } }, + "node_modules/hypercore/node_modules/@hyperswarm/secret-stream": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/@hyperswarm/secret-stream/-/secret-stream-6.7.1.tgz", + "integrity": "sha512-isb18Pt6lXBpOQMRmpqItw+kYynXilOFyOhto/RMP15WQtTWC0rR5jfZPYXU7ZYV6Kxd2lyQ4ZBevoIcvEJHEQ==", + "license": "Apache-2.0", + "dependencies": { + "b4a": "^1.1.0", + "hypercore-crypto": "^3.3.1", + "noise-curve-ed": "^2.0.1", + "noise-handshake": "^3.0.2", + "sodium-secretstream": "^1.1.0", + "sodium-universal": "^4.0.0", + "streamx": "^2.14.0", + "timeout-refresh": "^2.0.0", + "unslab": "^1.3.0" + } + }, + "node_modules/hypercore/node_modules/noise-handshake": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/noise-handshake/-/noise-handshake-3.1.0.tgz", + "integrity": "sha512-0S1qkUvMbTvZCfgr/vSkVT84YyvI4Q0OLwSc5BFxVmjaePrxAwVeXeJDY3A7N/7+qj95gZ15LaNoP9ZnBXH5Lw==", + "license": "ISC", + "dependencies": { + "b4a": "^1.1.0", + "nanoassert": "^2.0.0", + "sodium-universal": "^4.0.0" + } + }, "node_modules/hyperdrive": { "version": "11.5.3", "resolved": "https://registry.npmjs.org/hyperdrive/-/hyperdrive-11.5.3.tgz", @@ -21993,7 +21999,6 @@ "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -22183,7 +22188,6 @@ "integrity": "sha512-9VF7mrY+3OmsAfjH3yKz/pLbJ5z22E23hENKw3/LNSaA/sAt3v49bDRY+Ygct1xwuKT+U+cBfTzjCPySna69Qw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@inquirer/ansi": "^1.0.2", "@inquirer/core": "^10.3.2", @@ -22798,7 +22802,6 @@ "integrity": "sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==", "dev": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "async": "^3.2.6", "filelist": "^1.0.4", @@ -22817,6 +22820,7 @@ "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@jest/core": "^29.7.0", "@jest/types": "^29.6.3", @@ -25694,7 +25698,6 @@ "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", "dev": true, "license": "MIT", - "peer": true, "bin": { "jiti": "lib/jiti-cli.mjs" } @@ -25843,6 +25846,7 @@ "integrity": "sha512-B7qPcEVE3NVkmSJbaYxvv4cHkVW7DQsZz13pUMrfS8z8Q/BuShN+gcTXrUlPiGqM2/t/EEaI030bpxMqY8gMlw==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">= 10.16.0" } @@ -26751,8 +26755,7 @@ "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/lodash.isequal": { "version": "4.5.0", @@ -26773,8 +26776,7 @@ "resolved": "https://registry.npmjs.org/lodash.pickby/-/lodash.pickby-4.6.0.tgz", "integrity": "sha512-AZV+GsS/6ckvPOVQPXSiFFacKvKB4kOQu6ynt9wz0F3LO4R9Ij4K1ddYsIytDpSgLz88JHd9P+oaLeej5/Sl7Q==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/lodash.throttle": { "version": "4.1.1", @@ -26787,8 +26789,7 @@ "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/lodash.zip": { "version": "4.2.0", @@ -28915,7 +28916,6 @@ "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", "dev": true, "license": "ISC", - "peer": true, "engines": { "node": "^18.17.0 || >=20.5.0" } @@ -29300,48 +29300,6 @@ } } }, - "node_modules/noise-handshake": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/noise-handshake/-/noise-handshake-4.2.0.tgz", - "integrity": "sha512-9O/VTNX/E2/AToyMTTDU0J/4WhaXMTdqc2DHs9vf+snoZ0cenSBq0dNYTVV1snYYEkmo6QeRrYMxtqtoYnY+LA==", - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.1.0", - "nanoassert": "^2.0.0", - "sodium-universal": "^5.0.0" - } - }, - "node_modules/noise-handshake/node_modules/sodium-native": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/sodium-native/-/sodium-native-5.1.0.tgz", - "integrity": "sha512-3RxgyWyJlhTsABPnJVpCI5CoTDANZTqqFrEPqr+kjfnRaBihpVtMUE3yTF40ukdoB1APXeoBNKF3MzZAIHg39g==", - "license": "MIT", - "dependencies": { - "bare-assert": "^1.2.0", - "require-addon": "^1.1.0", - "which-runtime": "^1.2.1" - }, - "engines": { - "bare": ">=1.16.0" - } - }, - "node_modules/noise-handshake/node_modules/sodium-universal": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/sodium-universal/-/sodium-universal-5.0.1.tgz", - "integrity": "sha512-rv+aH+tnKB5H0MAc2UadHShLMslpJsc4wjdnHRtiSIEYpOetCgu8MS4ExQRia+GL/MK3uuCyZPeEsi+J3h+Q+Q==", - "license": "MIT", - "dependencies": { - "sodium-native": "^5.0.1" - }, - "peerDependencies": { - "sodium-javascript": "~0.8.0" - }, - "peerDependenciesMeta": { - "sodium-javascript": { - "optional": true - } - } - }, "node_modules/nopt": { "version": "7.2.1", "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", @@ -29363,7 +29321,6 @@ "integrity": "sha512-linxNAT6M0ebEYZOx2tO6vBEFsVgnPpv+AVjk0wJHfaUIbq31Jm3T6vvZaarnOeWDh8ShnwXuaAyM7WT3RzErA==", "dev": true, "license": "BSD-2-Clause", - "peer": true, "dependencies": { "hosted-git-info": "^8.0.0", "semver": "^7.3.5", @@ -30750,8 +30707,7 @@ "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/pend": { "version": "1.2.0", @@ -31910,6 +31866,7 @@ "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", "license": "MIT", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -32009,6 +31966,7 @@ "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.81.5.tgz", "integrity": "sha512-1w+/oSjEXZjMqsIvmkCRsOc8UBYv163bTWKTI8+1mxztvQPhCRYGTvZ/PL1w16xXHneIj/SLGfxWg2GWN2uexw==", "license": "MIT", + "peer": true, "dependencies": { "@jest/create-cache-key-function": "^29.7.0", "@react-native/assets-registry": "0.81.5", @@ -32084,6 +32042,7 @@ "resolved": "https://registry.npmjs.org/react-native-device-info/-/react-native-device-info-15.0.1.tgz", "integrity": "sha512-U5waZRXtT3l1SgZpZMlIvMKPTkFZPH8W7Ks6GrJhdH723aUIPxjVer7cRSij1mvQdOAAYFJV/9BDzlC8apG89A==", "license": "MIT", + "peer": true, "peerDependencies": { "react-native": "*" } @@ -32109,6 +32068,7 @@ "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.30.0.tgz", "integrity": "sha512-5YsnKHGa0X9C8lb5oCnKm0fLUPM6CRduvUUw2Bav4RIj/C3HcFh4RIUnF8wgG6JQWCL1//gRx4v+LVWgcIQdGA==", "license": "MIT", + "peer": true, "dependencies": { "@egjs/hammerjs": "^2.0.17", "hoist-non-react-statics": "^3.3.0", @@ -32158,6 +32118,7 @@ "resolved": "https://registry.npmjs.org/react-native-nitro-modules/-/react-native-nitro-modules-0.32.1.tgz", "integrity": "sha512-V+Vy76e4fxRxgVGu5Uh3cBPvuFQW8fM1OUKk1mqEA/JawjhX+hxHtBhpfuvNjV0BnV/uXCIg8/eK+rTpB6tqFg==", "license": "MIT", + "peer": true, "peerDependencies": { "react": "*", "react-native": "*" @@ -32180,6 +32141,7 @@ "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-3.19.5.tgz", "integrity": "sha512-bd4AwIkBAaY4BjrgpSoKjEaRG/tXD756F5nGuiH5IMBSKN8tRdUEA8hWZCyIo/R6/kha/tVSoCqodVUACh7ZWw==", "license": "MIT", + "peer": true, "dependencies": { "@babel/plugin-transform-arrow-functions": "^7.0.0-0", "@babel/plugin-transform-class-properties": "^7.0.0-0", @@ -32215,6 +32177,7 @@ "resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-5.6.2.tgz", "integrity": "sha512-4XGqMNj5qjUTYywJqpdWZ9IG8jgkS3h06sfVjfw5yZQZfWnRFXczi0GnYyFyCc2EBps/qFmoCH8fez//WumdVg==", "license": "MIT", + "peer": true, "peerDependencies": { "react": "*", "react-native": "*" @@ -32234,6 +32197,7 @@ "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-4.23.0.tgz", "integrity": "sha512-XhO3aK0UeLpBn4kLecd+J+EDeRRJlI/Ro9Fze06vo1q163VeYtzfU9QS09/VyDFMWR1qxDC1iazCArTPSFFiPw==", "license": "MIT", + "peer": true, "dependencies": { "react-freeze": "^1.0.0", "warn-once": "^0.1.0" @@ -32257,6 +32221,7 @@ "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-15.15.3.tgz", "integrity": "sha512-/k4KYwPBLGcx2f5d4FjE+vCScK7QOX14cl2lIASJ28u4slHHtIhL0SZKU7u9qmRBHxTCKPoPBtN6haT1NENJNA==", "license": "MIT", + "peer": true, "dependencies": { "css-select": "^5.1.0", "css-tree": "^1.1.3", @@ -32690,6 +32655,7 @@ "integrity": "sha512-jXkSl3CpvPYEF+p/eGDLB4sPoDX8pKkYvRl9+rR8HxLY0X04vW7hCm1/0zHoUSjPZ3bDa+wXWNTDVIw/R8aDVw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "react-is": "^19.1.0", "scheduler": "^0.26.0" @@ -32704,7 +32670,6 @@ "integrity": "sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/normalize-package-data": "^2.4.1", "normalize-package-data": "^6.0.0", @@ -32724,7 +32689,6 @@ "integrity": "sha512-aNtBq4jR8NawpKJQldrQcSW9y/d+KWH4v24HWkHljOZ7H0av+YTGANBzRh9A5pw7v/bLVsLVPpOhJ7gHNVy8lA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "find-up": "^6.3.0", "read-pkg": "^8.1.0", @@ -32743,7 +32707,6 @@ "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "locate-path": "^7.1.0", "path-exists": "^5.0.0" @@ -32761,7 +32724,6 @@ "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "lru-cache": "^10.0.1" }, @@ -32775,7 +32737,6 @@ "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -32786,7 +32747,6 @@ "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } @@ -32796,8 +32756,7 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, - "license": "ISC", - "peer": true + "license": "ISC" }, "node_modules/read-pkg/node_modules/normalize-package-data": { "version": "6.0.2", @@ -32805,7 +32764,6 @@ "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", "dev": true, "license": "BSD-2-Clause", - "peer": true, "dependencies": { "hosted-git-info": "^7.0.0", "semver": "^7.3.5", @@ -32821,7 +32779,6 @@ "integrity": "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.21.4", "error-ex": "^1.3.2", @@ -32842,7 +32799,6 @@ "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", "dev": true, "license": "(MIT OR CC0-1.0)", - "peer": true, "engines": { "node": ">=14.16" }, @@ -32908,7 +32864,6 @@ "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 14.18.0" }, @@ -32970,7 +32925,6 @@ "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "minimatch": "^3.0.5" }, @@ -33250,7 +33204,6 @@ "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", "dev": true, "license": "MIT", - "peer": true, "funding": { "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } @@ -33479,7 +33432,6 @@ "integrity": "sha512-IoDlSLTs3Yq593mb3ZoKWKXMNu3UpObxhgA/Xuid5p4bbfi2jdY1Hj0m1K+0/tEuQTxIGMhQDqGjKb7RuxGpAQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.12.0" } @@ -33549,7 +33501,6 @@ "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", "dev": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "tslib": "^2.1.0" } @@ -33673,6 +33624,34 @@ "undici": "^6.21.3" } }, + "node_modules/secret-stream-http/node_modules/@hyperswarm/secret-stream": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/@hyperswarm/secret-stream/-/secret-stream-6.7.1.tgz", + "integrity": "sha512-isb18Pt6lXBpOQMRmpqItw+kYynXilOFyOhto/RMP15WQtTWC0rR5jfZPYXU7ZYV6Kxd2lyQ4ZBevoIcvEJHEQ==", + "license": "Apache-2.0", + "dependencies": { + "b4a": "^1.1.0", + "hypercore-crypto": "^3.3.1", + "noise-curve-ed": "^2.0.1", + "noise-handshake": "^3.0.2", + "sodium-secretstream": "^1.1.0", + "sodium-universal": "^4.0.0", + "streamx": "^2.14.0", + "timeout-refresh": "^2.0.0", + "unslab": "^1.3.0" + } + }, + "node_modules/secret-stream-http/node_modules/noise-handshake": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/noise-handshake/-/noise-handshake-3.1.0.tgz", + "integrity": "sha512-0S1qkUvMbTvZCfgr/vSkVT84YyvI4Q0OLwSc5BFxVmjaePrxAwVeXeJDY3A7N/7+qj95gZ15LaNoP9ZnBXH5Lw==", + "license": "ISC", + "dependencies": { + "b4a": "^1.1.0", + "nanoassert": "^2.0.0", + "sodium-universal": "^4.0.0" + } + }, "node_modules/secure-json-parse": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz", @@ -35231,6 +35210,7 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", "license": "MIT", + "peer": true, "engines": { "node": ">=18" } @@ -35877,6 +35857,7 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "license": "MIT", + "peer": true, "engines": { "node": ">=12" }, @@ -35896,7 +35877,6 @@ "integrity": "sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=14.0.0" } @@ -36100,7 +36080,6 @@ "integrity": "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "esbuild": "~0.27.0", "get-tsconfig": "^4.7.5" @@ -36207,6 +36186,7 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "devOptional": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -38214,6 +38194,7 @@ "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", "dev": true, "license": "MIT", + "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } diff --git a/package.json b/package.json index 5d49bc9d7d..496ed908a8 100644 --- a/package.json +++ b/package.json @@ -128,14 +128,11 @@ "validate-color": "2.2.4", "zustand": "5.0.11" }, - "overrides": { - "zod-validation-error": "4.0.2" - }, "devDependencies": { "@babel/core": "7.28.5", "@babel/preset-env": "7.28.5", "@babel/runtime": "7.28.4", - "@comapeo/cloud": "0.3.0", + "@comapeo/cloud": "0.4.0", "@comapeo/core": "7.0.1", "@comapeo/schema": "2.2.0", "@digidem/types": "2.3.0", @@ -203,5 +200,8 @@ "typescript": "5.9.3", "typescript-eslint": "8.50.0", "webdriverio": "9.21.0" + }, + "overrides": { + "@hyperswarm/secret-stream": "6.7.1" } } From 7af89a61b5f5b69503d910b6e1154c686d79befa Mon Sep 17 00:00:00 2001 From: Cindy Green Date: Mon, 6 Apr 2026 13:34:01 -0400 Subject: [PATCH 58/72] Tries to override problem in tests --- jest.config.js | 1 + jest.sodium-stub.js | 4 ++++ package-lock.json | 1 + 3 files changed, 6 insertions(+) create mode 100644 jest.sodium-stub.js diff --git a/jest.config.js b/jest.config.js index 007963bf4a..e38331f2c1 100644 --- a/jest.config.js +++ b/jest.config.js @@ -64,6 +64,7 @@ const config = { moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], // https://react-native-documents.github.io/docs/sponsor-only/jest-mocks setupFiles: [ + './jest.sodium-stub.js', './node_modules/@react-native-documents/picker/jest/build/jest/setup.js', ], setupFilesAfterEnv: ['@rnmapbox/maps/setup-jest', './jest.setup.js'], diff --git a/jest.sodium-stub.js b/jest.sodium-stub.js new file mode 100644 index 0000000000..12dcdbac67 --- /dev/null +++ b/jest.sodium-stub.js @@ -0,0 +1,4 @@ +// sodium-native@4+ uses require-addon to load its native binary, which is +// only available in the nodejs-mobile runtime. Stub it so Jest can load +// @comapeo/core without crashing. The actual crypto is never called in tests. +require.addon = () => ({}); diff --git a/package-lock.json b/package-lock.json index 2110482e71..050044a471 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13756,6 +13756,7 @@ "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz", "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==", "license": "Apache-2.0", + "peer": true, "peerDependencies": { "bare-abort-controller": "*" }, From fbc98ffc101143eb7feadecdc523f134c42ecaac Mon Sep 17 00:00:00 2001 From: Cindy Green Date: Mon, 6 Apr 2026 13:42:25 -0400 Subject: [PATCH 59/72] Trying to undo messed up package lock. --- package-lock.json | 22476 ++++++++++++++++++-------------------------- package.json | 4 - 2 files changed, 9305 insertions(+), 13175 deletions(-) diff --git a/package-lock.json b/package-lock.json index 050044a471..53f72a996d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -31,7 +31,6 @@ "@react-native-vector-icons/material-icons": "12.4.0", "@react-native-vector-icons/octicons": "20.4.0", "@react-navigation/bottom-tabs": "7.14.0", - "@react-navigation/elements": "2.9.5", "@react-navigation/native": "7.1.28", "@react-navigation/stack": "7.7.2", "@rnmapbox/maps": "10.1.42", @@ -204,9 +203,9 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", - "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.28.6.tgz", + "integrity": "sha512-JYgintcMjRiCvS8mMECzaEn+m3PfoQiyqukOMCCVQtoJGYJw8j/8LBJEiqkHLkfwCcs74E3pbAUFNg7d9VNJ+Q==", "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.28.5", @@ -218,9 +217,9 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz", - "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz", + "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -267,13 +266,13 @@ } }, "node_modules/@babel/generator": { - "version": "7.29.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", - "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.6.tgz", + "integrity": "sha512-lOoVRwADj8hjf7al89tvQ2a1lf53Z+7tiXMgpZJL3maQPDxh0DgLMN62B2MKUOFcoodBHLMbDM6WAbKgNy5Suw==", "license": "MIT", "dependencies": { - "@babel/parser": "^7.29.0", - "@babel/types": "^7.29.0", + "@babel/parser": "^7.28.6", + "@babel/types": "^7.28.6", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" @@ -295,12 +294,12 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", - "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.28.6", + "@babel/compat-data": "^7.27.2", "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", @@ -350,13 +349,13 @@ } }, "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.28.5.tgz", - "integrity": "sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.1.tgz", + "integrity": "sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ==", "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.3", - "regexpu-core": "^6.3.1", + "@babel/helper-annotate-as-pure": "^7.27.1", + "regexpu-core": "^6.2.0", "semver": "^6.3.1" }, "engines": { @@ -376,16 +375,16 @@ } }, "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.8", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.8.tgz", - "integrity": "sha512-47UwBLPpQi1NoWzLuHNjRoHlYXMwIJoBf7MFou6viC/sIHWYygpvr0B6IAyh5sBdA2nr2LPIRww8lfaUVQINBA==", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.5.tgz", + "integrity": "sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==", "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6", - "debug": "^4.4.3", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "debug": "^4.4.1", "lodash.debounce": "^4.0.8", - "resolve": "^1.22.11" + "resolve": "^1.22.10" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -414,27 +413,27 @@ } }, "node_modules/@babel/helper-module-imports": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", - "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", "license": "MIT", "dependencies": { - "@babel/traverse": "^7.28.6", - "@babel/types": "^7.28.6" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", - "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", + "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.28.6", - "@babel/helper-validator-identifier": "^7.28.5", - "@babel/traverse": "^7.28.6" + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.28.3" }, "engines": { "node": ">=6.9.0" @@ -539,27 +538,27 @@ } }, "node_modules/@babel/helper-wrap-function": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.28.6.tgz", - "integrity": "sha512-z+PwLziMNBeSQJonizz2AGnndLsP2DeGHIxDAn+wdHOGuo4Fo1x1HBPPXeE9TAOPHNNWQKCSlA2VZyYyyibDnQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.27.1.tgz", + "integrity": "sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ==", "license": "MIT", "dependencies": { - "@babel/template": "^7.28.6", - "@babel/traverse": "^7.28.6", - "@babel/types": "^7.28.6" + "@babel/template": "^7.27.1", + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.29.2", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", - "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", + "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", "license": "MIT", "dependencies": { - "@babel/template": "^7.28.6", - "@babel/types": "^7.29.0" + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.4" }, "engines": { "node": ">=6.9.0" @@ -652,12 +651,12 @@ } }, "node_modules/@babel/parser": { - "version": "7.29.2", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", - "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.6.tgz", + "integrity": "sha512-TeR9zWR18BvbfPmGbLampPMW+uW1NZnJlRuuHso8i87QZNq2JRF9i6RgxRqtEq+wQGsS19NNTWr2duhnE49mfQ==", "license": "MIT", "dependencies": { - "@babel/types": "^7.29.0" + "@babel/types": "^7.28.6" }, "bin": { "parser": "bin/babel-parser.js" @@ -734,14 +733,14 @@ } }, "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.6.tgz", - "integrity": "sha512-a0aBScVTlNaiUe35UtfxAN7A/tehvvG4/ByO6+46VPKTRSlfnAFsgKy0FUh+qAkQrDTmhDkT+IBOKlOoMUxQ0g==", + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.28.3.tgz", + "integrity": "sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/traverse": "^7.28.6" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/traverse": "^7.28.3" }, "engines": { "node": ">=6.9.0" @@ -769,9 +768,9 @@ } }, "node_modules/@babel/plugin-proposal-decorators": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.29.0.tgz", - "integrity": "sha512-CVBVv3VY/XRMxRYq5dwr2DS7/MvqPm23cOCjbwNnVrfOqcWlnefua1uUs0sjdKOGjvPUG633o07uWzJq4oI6dA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.28.6.tgz", + "integrity": "sha512-RVdFPPyY9fCRAX68haPmOk2iyKW8PKJFthmm8NeSI3paNxKWGZIn99+VbIf0FrtCpFnPgnpF/L48tadi617ULg==", "license": "MIT", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.28.6", @@ -786,12 +785,12 @@ } }, "node_modules/@babel/plugin-proposal-export-default-from": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.27.1.tgz", - "integrity": "sha512-hjlsMBl1aJc5lp8MoCDEZCiYzlgdRAShOjAfRw6X+GlpLpUPU7c3XNLsKFZbQk/1cRzBlJ7CXg3xJAJMrFa1Uw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.25.9.tgz", + "integrity": "sha512-ykqgwNfSnNOB+C8fV5X4mG3AVmvu+WVxcaU9xHHtBb7PCrPeweMmPjGsn8eMaeJg6SJuoUuZENeeSWaarWqonQ==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -947,12 +946,12 @@ } }, "node_modules/@babel/plugin-syntax-export-default-from": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.28.6.tgz", - "integrity": "sha512-Svlx1fjJFnNz0LZeUaybRukSxZI3KkpApUmIRzEdXC5k8ErTOz0OD0kNrICi5Vc3GlpP5ZCeRyRO+mfWTSz+iQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.25.9.tgz", + "integrity": "sha512-9MhJ/SMTsVqsd69GyQg89lYR4o9T+oDGv5F6IsigxxqFVOyR/IflDLYP8WDI1l8fkhNGGktqkvL5qwNCtGEpgQ==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -962,12 +961,12 @@ } }, "node_modules/@babel/plugin-syntax-flow": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.28.6.tgz", - "integrity": "sha512-D+OrJumc9McXNEBI/JmFnc/0uCM2/Y3PEBG3gfV3QIYkKv5pvnpzFrl1kYCrcHJP8nOeFB/SHi1IHz29pNGuew==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.26.0.tgz", + "integrity": "sha512-B+O2DnPc0iG+YXFqOxv2WNuNU97ToWjOomUQ78DouOENWUaM5sVrmet9mcomUGQFwpJd//gvUagXBSdzO1fRKg==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -977,13 +976,13 @@ } }, "node_modules/@babel/plugin-syntax-import-assertions": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.28.6.tgz", - "integrity": "sha512-pSJUpFHdx9z5nqTSirOCMtYVP2wFgoWhP0p3g8ONK/4IHhLIBd0B9NYqAvIUAhq+OkhO4VM1tENCt0cjlsNShw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz", + "integrity": "sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -993,12 +992,12 @@ } }, "node_modules/@babel/plugin-syntax-import-attributes": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz", - "integrity": "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz", + "integrity": "sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1032,12 +1031,12 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz", - "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz", + "integrity": "sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1149,12 +1148,12 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz", - "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz", + "integrity": "sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1196,14 +1195,14 @@ } }, "node_modules/@babel/plugin-transform-async-generator-functions": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.29.0.tgz", - "integrity": "sha512-va0VdWro4zlBr2JsXC+ofCPB2iG12wPtVGTWFx2WLDOM3nYQZZIGP82qku2eW/JR83sD+k2k+CsNtyEbUqhU6w==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.28.0.tgz", + "integrity": "sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-remap-async-to-generator": "^7.27.1", - "@babel/traverse": "^7.29.0" + "@babel/traverse": "^7.28.0" }, "engines": { "node": ">=6.9.0" @@ -1213,13 +1212,13 @@ } }, "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.28.6.tgz", - "integrity": "sha512-ilTRcmbuXjsMmcZ3HASTe4caH5Tpo93PkTxF9oG2VZsSWsahydmcEHhix9Ik122RcTnZnUzPbmux4wh1swfv7g==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz", + "integrity": "sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==", "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-remap-async-to-generator": "^7.27.1" }, "engines": { @@ -1246,12 +1245,12 @@ } }, "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.6.tgz", - "integrity": "sha512-tt/7wOtBmwHPNMPu7ax4pdPz6shjFrmHDghvNC+FG9Qvj7D6mJcoRQIF5dy4njmxR941l6rgtvfSB2zX3VlUIw==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.5.tgz", + "integrity": "sha512-45DmULpySVvmq9Pj3X9B+62Xe+DJGov27QravQJU1LLcapR6/10i+gYVAucGGJpHBp5mYxIMK4nDAT/QDLr47g==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1261,13 +1260,13 @@ } }, "node_modules/@babel/plugin-transform-class-properties": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.28.6.tgz", - "integrity": "sha512-dY2wS3I2G7D697VHndN91TJr8/AAfXQNt5ynCTI/MpxMsSzHp+52uNivYT5wCPax3whc47DR8Ba7cmlQMg24bw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.27.1.tgz", + "integrity": "sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==", "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6" + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1277,13 +1276,13 @@ } }, "node_modules/@babel/plugin-transform-class-static-block": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.6.tgz", - "integrity": "sha512-rfQ++ghVwTWTqQ7w8qyDxL1XGihjBss4CmTgGRCTAC9RIbhVpyp4fOeZtta0Lbf+dTNIVJer6ych2ibHwkZqsQ==", + "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.28.3.tgz", + "integrity": "sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg==", "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6" + "@babel/helper-create-class-features-plugin": "^7.28.3", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1293,17 +1292,17 @@ } }, "node_modules/@babel/plugin-transform-classes": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.6.tgz", - "integrity": "sha512-EF5KONAqC5zAqT783iMGuM2ZtmEBy+mJMOKl2BCvPZ2lVrwvXnB6o+OBWCS+CoeCCpVRF2sA2RBKUxvT8tQT5Q==", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.4.tgz", + "integrity": "sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA==", "license": "MIT", "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.3", - "@babel/helper-compilation-targets": "^7.28.6", + "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-globals": "^7.28.0", - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/helper-replace-supers": "^7.28.6", - "@babel/traverse": "^7.28.6" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/helper-replace-supers": "^7.27.1", + "@babel/traverse": "^7.28.4" }, "engines": { "node": ">=6.9.0" @@ -1313,13 +1312,13 @@ } }, "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.28.6.tgz", - "integrity": "sha512-bcc3k0ijhHbc2lEfpFHgx7eYw9KNXqOerKWfzbxEHUGKnS3sz9C4CNL9OiFN1297bDNfUiSO7DaLzbvHQQQ1BQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz", + "integrity": "sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/template": "^7.28.6" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/template": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1345,14 +1344,14 @@ } }, "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.28.6.tgz", - "integrity": "sha512-SljjowuNKB7q5Oayv4FoPzeB74g3QgLt8IVJw9ADvWy3QnUb/01aw8I4AVv8wYnPvQz2GDDZ/g3GhcNyDBI4Bg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz", + "integrity": "sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.28.5", - "@babel/helper-plugin-utils": "^7.28.6" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1378,14 +1377,14 @@ } }, "node_modules/@babel/plugin-transform-duplicate-named-capturing-groups-regex": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.29.0.tgz", - "integrity": "sha512-zBPcW2lFGxdiD8PUnPwJjag2J9otbcLQzvbiOzDxpYXyCuYX9agOwMPGn1prVH0a4qzhCKu24rlH4c1f7yA8rw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.27.1.tgz", + "integrity": "sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.28.5", - "@babel/helper-plugin-utils": "^7.28.6" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1411,14 +1410,14 @@ } }, "node_modules/@babel/plugin-transform-explicit-resource-management": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.6.tgz", - "integrity": "sha512-Iao5Konzx2b6g7EPqTy40UZbcdXE126tTxVFr/nAIj+WItNxjKSYTEw3RC+A2/ZetmdJsgueL1KhaMCQHkLPIg==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-explicit-resource-management/-/plugin-transform-explicit-resource-management-7.28.0.tgz", + "integrity": "sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/plugin-transform-destructuring": "^7.28.5" + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.28.0" }, "engines": { "node": ">=6.9.0" @@ -1428,13 +1427,13 @@ } }, "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.6.tgz", - "integrity": "sha512-WitabqiGjV/vJ0aPOLSFfNY1u9U3R7W36B03r5I2KoNix+a3sOhJ3pKFB3R5It9/UiK78NiO0KE9P21cMhlPkw==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.28.5.tgz", + "integrity": "sha512-D4WIMaFtwa2NizOp+dnoFjRez/ClKiC2BqqImwKd1X28nqBtZEyCYJ2ozQrrzlxAFrcrjxo39S6khe9RNDlGzw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1459,13 +1458,13 @@ } }, "node_modules/@babel/plugin-transform-flow-strip-types": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.27.1.tgz", - "integrity": "sha512-G5eDKsu50udECw7DL2AcsysXiQyB7Nfg521t2OAJ4tbfTJ27doHLeF/vlI1NZGlLdbb/v+ibvtL1YBQqYOwJGg==", + "version": "7.26.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.26.5.tgz", + "integrity": "sha512-eGK26RsbIkYUns3Y8qKl362juDDYK+wEdPGHGrhzUl6CewZFo55VZ7hg+CyMFU4dd5QQakBN86nBMpRsFpRvbQ==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/plugin-syntax-flow": "^7.27.1" + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/plugin-syntax-flow": "^7.26.0" }, "engines": { "node": ">=6.9.0" @@ -1508,13 +1507,13 @@ } }, "node_modules/@babel/plugin-transform-json-strings": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.28.6.tgz", - "integrity": "sha512-Nr+hEN+0geQkzhbdgQVPoqr47lZbm+5fCUmO70722xJZd0Mvb59+33QLImGj6F+DkK3xgDi1YVysP8whD6FQAw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.27.1.tgz", + "integrity": "sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1539,12 +1538,12 @@ } }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.6.tgz", - "integrity": "sha512-+anKKair6gpi8VsM/95kmomGNMD0eLz1NQ8+Pfw5sAwWH9fGYXT50E55ZpV0pHUHWf6IUTWPM+f/7AAff+wr9A==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.28.5.tgz", + "integrity": "sha512-axUuqnUTBuXyHGcJEVVh9pORaN6wC5bYfE7FGzPiaWa3syib9m7g+/IT/4VgCOe2Upef43PHzeAvcrVek6QuuA==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1587,13 +1586,13 @@ } }, "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.28.6.tgz", - "integrity": "sha512-jppVbf8IV9iWWwWTQIxJMAJCWBuuKx71475wHwYytrRGQ2CWiDvYlADQno3tcYpS/T2UUWFQp3nVtYfK/YBQrA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz", + "integrity": "sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==", "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6" + "@babel/helper-module-transforms": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1603,16 +1602,16 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.0.tgz", - "integrity": "sha512-PrujnVFbOdUpw4UHiVwKvKRLMMic8+eC0CuNlxjsyZUiBjhFdPsewdXCkveh2KqBA9/waD0W1b4hXSOBQJezpQ==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.28.5.tgz", + "integrity": "sha512-vn5Jma98LCOeBy/KpeQhXcV2WZgaRUtjwQmjoBuLNlOmkg0fB5pdvYVeWRYI69wWKwK2cD1QbMiUQnoujWvrew==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-transforms": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-module-transforms": "^7.28.3", + "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-validator-identifier": "^7.28.5", - "@babel/traverse": "^7.29.0" + "@babel/traverse": "^7.28.5" }, "engines": { "node": ">=6.9.0" @@ -1639,13 +1638,13 @@ } }, "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.29.0.tgz", - "integrity": "sha512-1CZQA5KNAD6ZYQLPw7oi5ewtDNxH/2vuCh+6SmvgDfhumForvs8a1o9n0UrEoBD8HU4djO2yWngTQlXl1NDVEQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz", + "integrity": "sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==", "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.28.5", - "@babel/helper-plugin-utils": "^7.28.6" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1671,12 +1670,12 @@ } }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.28.6.tgz", - "integrity": "sha512-3wKbRgmzYbw24mDJXT7N+ADXw8BC/imU9yo9c9X9NKaLF1fW+e5H1U5QjMUBe4Qo4Ox/o++IyUkl1sVCLgevKg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.27.1.tgz", + "integrity": "sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1686,12 +1685,12 @@ } }, "node_modules/@babel/plugin-transform-numeric-separator": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.28.6.tgz", - "integrity": "sha512-SJR8hPynj8outz+SlStQSwvziMN4+Bq99it4tMIf5/Caq+3iOc0JtKyse8puvyXkk3eFRIA5ID/XfunGgO5i6w==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.27.1.tgz", + "integrity": "sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1701,16 +1700,16 @@ } }, "node_modules/@babel/plugin-transform-object-rest-spread": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.6.tgz", - "integrity": "sha512-5rh+JR4JBC4pGkXLAcYdLHZjXudVxWMXbB6u6+E9lRL5TrGVbHt1TjxGbZ8CkmYw9zjkB7jutzOROArsqtncEA==", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.28.4.tgz", + "integrity": "sha512-373KA2HQzKhQCYiRVIRr+3MjpCObqzDlyrM6u4I201wL8Mp2wHf7uB8GhDwis03k2ti8Zr65Zyyqs1xOxUF/Ew==", "license": "MIT", "dependencies": { - "@babel/helper-compilation-targets": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/plugin-transform-destructuring": "^7.28.5", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-transform-destructuring": "^7.28.0", "@babel/plugin-transform-parameters": "^7.27.7", - "@babel/traverse": "^7.28.6" + "@babel/traverse": "^7.28.4" }, "engines": { "node": ">=6.9.0" @@ -1737,12 +1736,12 @@ } }, "node_modules/@babel/plugin-transform-optional-catch-binding": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.28.6.tgz", - "integrity": "sha512-R8ja/Pyrv0OGAvAXQhSTmWyPJPml+0TMqXlO5w+AsMEiwb2fg3WkOvob7UxFSL3OIttFSGSRFKQsOhJ/X6HQdQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.27.1.tgz", + "integrity": "sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1752,12 +1751,12 @@ } }, "node_modules/@babel/plugin-transform-optional-chaining": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.6.tgz", - "integrity": "sha512-A4zobikRGJTsX9uqVFdafzGkqD30t26ck2LmOzAuLL8b2x6k3TIqRiT2xVvA9fNmFeTX484VpsdgmKNA0bS23w==", + "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.28.5.tgz", + "integrity": "sha512-N6fut9IZlPnjPwgiQkXNhb+cT8wQKFlJNqcZkWlcTqkcqx6/kU4ynGmLFoa4LViBSirn05YAwk+sQBbPfxtYzQ==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "engines": { @@ -1783,13 +1782,13 @@ } }, "node_modules/@babel/plugin-transform-private-methods": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.28.6.tgz", - "integrity": "sha512-piiuapX9CRv7+0st8lmuUlRSmX6mBcVeNQ1b4AYzJxfCMuBfB0vBXDiGSmm03pKJw1v6cZ8KSeM+oUnM6yAExg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.27.1.tgz", + "integrity": "sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==", "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6" + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1799,14 +1798,14 @@ } }, "node_modules/@babel/plugin-transform-private-property-in-object": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.28.6.tgz", - "integrity": "sha512-b97jvNSOb5+ehyQmBpmhOCiUC5oVK4PMnpRvO7+ymFBoqYjeDHIU9jnrNUuwHOiL9RpGDoKBpSViarV+BU+eVA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.27.1.tgz", + "integrity": "sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==", "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.3", - "@babel/helper-create-class-features-plugin": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6" + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-create-class-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1847,16 +1846,16 @@ } }, "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.28.6.tgz", - "integrity": "sha512-61bxqhiRfAACulXSLd/GxqmAedUSrRZIu/cbaT18T1CetkTmtDN15it7i80ru4DVqRK1WMxQhXs+Lf9kajm5Ow==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.27.1.tgz", + "integrity": "sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==", "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.3", - "@babel/helper-module-imports": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/plugin-syntax-jsx": "^7.28.6", - "@babel/types": "^7.28.6" + "@babel/helper-annotate-as-pure": "^7.27.1", + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1", + "@babel/plugin-syntax-jsx": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1881,12 +1880,12 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-self": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", - "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz", + "integrity": "sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1896,12 +1895,12 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", - "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz", + "integrity": "sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1927,12 +1926,12 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.0.tgz", - "integrity": "sha512-FijqlqMA7DmRdg/aINBSs04y8XNTYw/lr1gJ2WsmBnnaNw1iS43EPkJW+zK7z65auG3AWRFXWj+NcTQwYptUog==", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.4.tgz", + "integrity": "sha512-+ZEdQlBoRg9m2NnzvEeLgtvBMO4tkFBw5SQIUgLICgTrumLoU7lr+Oghi6km2PFj+dbUt2u1oby2w3BDO9YQnA==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1942,14 +1941,14 @@ } }, "node_modules/@babel/plugin-transform-regexp-modifiers": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.28.6.tgz", - "integrity": "sha512-QGWAepm9qxpaIs7UM9FvUSnCGlb8Ua1RhyM4/veAxLwt3gMat/LSGrZixyuj4I6+Kn9iwvqCyPTtbdxanYoWYg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.27.1.tgz", + "integrity": "sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.28.5", - "@babel/helper-plugin-utils": "^7.28.6" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -1975,16 +1974,16 @@ } }, "node_modules/@babel/plugin-transform-runtime": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.29.0.tgz", - "integrity": "sha512-jlaRT5dJtMaMCV6fAuLbsQMSwz/QkvaHOHOSXRitGGwSpR1blCY4KUKoyP2tYO8vJcqYe8cEj96cqSztv3uF9w==", + "version": "7.26.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.26.10.tgz", + "integrity": "sha512-NWaL2qG6HRpONTnj4JvDU6th4jYeZOJgu3QhmFTCihib0ermtOJqktA5BduGm3suhhVe9EMP9c9+mfJ/I9slqw==", "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6", - "babel-plugin-polyfill-corejs2": "^0.4.14", - "babel-plugin-polyfill-corejs3": "^0.13.0", - "babel-plugin-polyfill-regenerator": "^0.6.5", + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.26.5", + "babel-plugin-polyfill-corejs2": "^0.4.10", + "babel-plugin-polyfill-corejs3": "^0.11.0", + "babel-plugin-polyfill-regenerator": "^0.6.1", "semver": "^6.3.1" }, "engines": { @@ -2019,12 +2018,12 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.28.6.tgz", - "integrity": "sha512-9U4QObUC0FtJl05AsUcodau/RWDytrU6uKgkxu09mLR9HLDAtUMoPuuskm5huQsoktmsYpI+bGmq+iapDcriKA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz", + "integrity": "sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.28.6", + "@babel/helper-plugin-utils": "^7.27.1", "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1" }, "engines": { @@ -2081,16 +2080,16 @@ } }, "node_modules/@babel/plugin-transform-typescript": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.28.6.tgz", - "integrity": "sha512-0YWL2RFxOqEm9Efk5PvreamxPME8OyY0wM5wh5lHjF+VtVhdneCWGzZeSqzOfiobVqQaNCd2z0tQvnI9DaPWPw==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.27.0.tgz", + "integrity": "sha512-fRGGjO2UEGPjvEcyAZXRXAS8AfdaQoq7HnxAbJoAoW10B9xOKesmmndJv+Sym2a+9FHWZ9KbyyLCe9s0Sn5jtg==", "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.27.3", - "@babel/helper-create-class-features-plugin": "^7.28.6", - "@babel/helper-plugin-utils": "^7.28.6", - "@babel/helper-skip-transparent-expression-wrappers": "^7.27.1", - "@babel/plugin-syntax-typescript": "^7.28.6" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-create-class-features-plugin": "^7.27.0", + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.25.9", + "@babel/plugin-syntax-typescript": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2116,14 +2115,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-property-regex": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.28.6.tgz", - "integrity": "sha512-4Wlbdl/sIZjzi/8St0evF0gEZrgOswVO6aOzqxh1kDZOl9WmLrHq2HtGhnOJZmHZYKP8WZ1MDLCt5DAWwRo57A==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.27.1.tgz", + "integrity": "sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.28.5", - "@babel/helper-plugin-utils": "^7.28.6" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2149,14 +2148,14 @@ } }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.28.6.tgz", - "integrity": "sha512-/wHc/paTUmsDYN7SZkpWxogTOBNnlx7nBQYfy6JJlCT7G3mVhltk3e++N7zV0XfgGsrqBxd4rJQt9H16I21Y1Q==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.27.1.tgz", + "integrity": "sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.28.5", - "@babel/helper-plugin-utils": "^7.28.6" + "@babel/helper-create-regexp-features-plugin": "^7.27.1", + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -2250,6 +2249,20 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/preset-env/node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", + "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.6.5", + "core-js-compat": "^3.43.0" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, "node_modules/@babel/preset-env/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", @@ -2261,15 +2274,15 @@ } }, "node_modules/@babel/preset-flow": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.27.1.tgz", - "integrity": "sha512-ez3a2it5Fn6P54W8QkbfIyyIbxlXvcxyWHHvno1Wg0Ej5eiJY5hBb8ExttoIOJJk7V2dZE6prP7iby5q2aQ0Lg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.25.9.tgz", + "integrity": "sha512-EASHsAhE+SSlEzJ4bzfusnXSHiU+JfAYzj+jbw2vgQKgq5HrUr8qs+vgtiEL5dOH6sEweI+PNt2D7AqrDSHyqQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-validator-option": "^7.27.1", - "@babel/plugin-transform-flow-strip-types": "^7.27.1" + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "@babel/plugin-transform-flow-strip-types": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -2314,16 +2327,16 @@ } }, "node_modules/@babel/preset-typescript": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.28.5.tgz", - "integrity": "sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.27.0.tgz", + "integrity": "sha512-vxaPFfJtHhgeOVXRKuHpHPAOgymmy8V8I65T1q53R7GCZlefKeCaTyDs3zOPHTTbmquvNlQYC5klEvWsBAtrBQ==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.27.1", - "@babel/helper-validator-option": "^7.27.1", - "@babel/plugin-syntax-jsx": "^7.27.1", - "@babel/plugin-transform-modules-commonjs": "^7.27.1", - "@babel/plugin-transform-typescript": "^7.28.5" + "@babel/helper-plugin-utils": "^7.26.5", + "@babel/helper-validator-option": "^7.25.9", + "@babel/plugin-syntax-jsx": "^7.25.9", + "@babel/plugin-transform-modules-commonjs": "^7.26.3", + "@babel/plugin-transform-typescript": "^7.27.0" }, "engines": { "node": ">=6.9.0" @@ -2333,9 +2346,9 @@ } }, "node_modules/@babel/register": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.28.6.tgz", - "integrity": "sha512-pgcbbEl/dWQYb6L6Yew6F94rdwygfuv+vJ/tXfwIOYAfPB6TNWpXUMEtEq3YuTeHRdvMIhvz13bkT9CNaS+wqA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.25.9.tgz", + "integrity": "sha512-8D43jXtGsYmEeDvm4MWHYUpWf8iiXgWYx3fW7E7Wb7Oe6FWqJPl5K6TuFW0dOwNZzEE5rjlaSJYH9JjrUKJszA==", "dev": true, "license": "MIT", "dependencies": { @@ -2376,23 +2389,11 @@ "semver": "bin/semver" } }, - "node_modules/@babel/register/node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, "node_modules/@babel/runtime": { "version": "7.28.4", "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", "license": "MIT", - "peer": true, "engines": { "node": ">=6.9.0" } @@ -2412,17 +2413,17 @@ } }, "node_modules/@babel/traverse": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", - "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.6.tgz", + "integrity": "sha512-fgWX62k02qtjqdSNTAGxmKYY/7FSL9WAS1o2Hu5+I5m9T0yxZzr4cnrfXQ/MX0rIifthCSs6FKTlzYbJcPtMNg==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.29.0", - "@babel/generator": "^7.29.0", + "@babel/code-frame": "^7.28.6", + "@babel/generator": "^7.28.6", "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.29.0", + "@babel/parser": "^7.28.6", "@babel/template": "^7.28.6", - "@babel/types": "^7.29.0", + "@babel/types": "^7.28.6", "debug": "^4.3.1" }, "engines": { @@ -2431,17 +2432,17 @@ }, "node_modules/@babel/traverse--for-generate-function-map": { "name": "@babel/traverse", - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", - "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", + "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.4.tgz", + "integrity": "sha512-YEzuboP2qvQavAcjgQNVgsvHIDv6ZpwXvcvjmyySP2DIMuByS/6ioU5G9pYrWHM6T2YDfc7xga9iNzYOs12CFQ==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.29.0", - "@babel/generator": "^7.29.0", + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.3", "@babel/helper-globals": "^7.28.0", - "@babel/parser": "^7.29.0", - "@babel/template": "^7.28.6", - "@babel/types": "^7.29.0", + "@babel/parser": "^7.28.4", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.4", "debug": "^4.3.1" }, "engines": { @@ -2449,9 +2450,9 @@ } }, "node_modules/@babel/types": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz", - "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==", + "version": "7.28.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.6.tgz", + "integrity": "sha512-0ZrskXVEHSWIqZM/sQZ4EV3jZJXRkio/WCxaqKZP1g//CEWEPSfeZFcms4XeKBCHU0ZKnIkdJeU/kF+eRp5lBg==", "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.27.1", @@ -2508,9 +2509,9 @@ } }, "node_modules/@bufbuild/protobuf": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.11.0.tgz", - "integrity": "sha512-sBXGT13cpmPR5BMgHE6UEEfEaShh5Ror6rfN3yEK5si7QVrtZg8LEPQb0VVhiLRUslD2yLnXtnRzG035J/mZXQ==", + "version": "2.10.2", + "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.10.2.tgz", + "integrity": "sha512-uFsRXwIGyu+r6AMdz+XijIIZJYpoWeYzILt5yZ2d3mCjQrWUTVpVD9WL/jZAbvp+Ed04rOhrsk7FiTcEDseB5A==", "dev": true, "license": "(Apache-2.0 AND BSD-3-Clause)" }, @@ -2615,35 +2616,29 @@ "zip-stream-promise": "^1.0.2" } }, - "node_modules/@comapeo/cloud/node_modules/@hyperswarm/secret-stream": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/@hyperswarm/secret-stream/-/secret-stream-6.7.1.tgz", - "integrity": "sha512-isb18Pt6lXBpOQMRmpqItw+kYynXilOFyOhto/RMP15WQtTWC0rR5jfZPYXU7ZYV6Kxd2lyQ4ZBevoIcvEJHEQ==", + "node_modules/@comapeo/cloud/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "b4a": "^1.1.0", - "hypercore-crypto": "^3.3.1", - "noise-curve-ed": "^2.0.1", - "noise-handshake": "^3.0.2", - "sodium-secretstream": "^1.1.0", - "sodium-universal": "^4.0.0", - "streamx": "^2.14.0", - "timeout-refresh": "^2.0.0", - "unslab": "^1.3.0" + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@comapeo/cloud/node_modules/noise-handshake": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/noise-handshake/-/noise-handshake-3.1.0.tgz", - "integrity": "sha512-0S1qkUvMbTvZCfgr/vSkVT84YyvI4Q0OLwSc5BFxVmjaePrxAwVeXeJDY3A7N/7+qj95gZ15LaNoP9ZnBXH5Lw==", + "node_modules/@comapeo/cloud/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true, - "license": "ISC", - "dependencies": { - "b4a": "^1.1.0", - "nanoassert": "^2.0.0", - "sodium-universal": "^4.0.0" - } + "license": "MIT" }, "node_modules/@comapeo/cloud/node_modules/p-timeout": { "version": "6.1.4", @@ -2774,34 +2769,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@comapeo/core/node_modules/@hyperswarm/secret-stream": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/@hyperswarm/secret-stream/-/secret-stream-6.7.1.tgz", - "integrity": "sha512-isb18Pt6lXBpOQMRmpqItw+kYynXilOFyOhto/RMP15WQtTWC0rR5jfZPYXU7ZYV6Kxd2lyQ4ZBevoIcvEJHEQ==", - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.1.0", - "hypercore-crypto": "^3.3.1", - "noise-curve-ed": "^2.0.1", - "noise-handshake": "^3.0.2", - "sodium-secretstream": "^1.1.0", - "sodium-universal": "^4.0.0", - "streamx": "^2.14.0", - "timeout-refresh": "^2.0.0", - "unslab": "^1.3.0" - } - }, - "node_modules/@comapeo/core/node_modules/noise-handshake": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/noise-handshake/-/noise-handshake-3.1.0.tgz", - "integrity": "sha512-0S1qkUvMbTvZCfgr/vSkVT84YyvI4Q0OLwSc5BFxVmjaePrxAwVeXeJDY3A7N/7+qj95gZ15LaNoP9ZnBXH5Lw==", - "license": "ISC", - "dependencies": { - "b4a": "^1.1.0", - "nanoassert": "^2.0.0", - "sodium-universal": "^4.0.0" - } - }, "node_modules/@comapeo/core/node_modules/p-timeout": { "version": "6.1.4", "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.4.tgz", @@ -2975,6 +2942,29 @@ "react-native": ">=0.60.0" } }, + "node_modules/@comapeo/nodejs-mobile-react-native/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "license": "MIT", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/@comapeo/nodejs-mobile-react-native/node_modules/xcode": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/xcode/-/xcode-2.1.0.tgz", + "integrity": "sha512-uCrmPITrqTEzhn0TtT57fJaNaw8YJs1aCzs+P/QqxsDbvPZSv7XMPPwXrKvHtD6pLjBM/NaVwraWJm8q83Y4iQ==", + "license": "Apache-2.0", + "dependencies": { + "simple-plist": "^1.0.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/@comapeo/schema": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@comapeo/schema/-/schema-2.2.0.tgz", @@ -2988,15 +2978,6 @@ "type-fest": "^4.26.0" } }, - "node_modules/@commander-js/extra-typings": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/@commander-js/extra-typings/-/extra-typings-14.0.0.tgz", - "integrity": "sha512-hIn0ncNaJRLkZrxBIp5AsW/eXEHNKYQBh0aPdoUqNgD+Io3NIykQqpKFyKcuasZhicGaEZJX/JBSIkZ4e5x8Dg==", - "license": "MIT", - "peerDependencies": { - "commander": "~14.0.0" - } - }, "node_modules/@devexpress/error-stack-parser": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/@devexpress/error-stack-parser/-/error-stack-parser-2.0.6.tgz", @@ -3019,9 +3000,9 @@ } }, "node_modules/@digidem/types/node_modules/@types/node": { - "version": "18.19.130", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.130.tgz", - "integrity": "sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==", + "version": "18.19.86", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.86.tgz", + "integrity": "sha512-fifKayi175wLyKyc5qUfyENhQ1dCNI1UNjp653d8kuYcPQN5JhX3dGuP/XmvPTg/xRBn1VTLpbmi+H/Mr7tLfQ==", "license": "MIT", "dependencies": { "undici-types": "~5.26.4" @@ -3046,20 +3027,20 @@ } }, "node_modules/@emnapi/core": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.9.2.tgz", - "integrity": "sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.4.3.tgz", + "integrity": "sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g==", "license": "MIT", "optional": true, "dependencies": { - "@emnapi/wasi-threads": "1.2.1", + "@emnapi/wasi-threads": "1.0.2", "tslib": "^2.4.0" } }, "node_modules/@emnapi/runtime": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.9.2.tgz", - "integrity": "sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw==", + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.3.tgz", + "integrity": "sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==", "license": "MIT", "optional": true, "dependencies": { @@ -3067,9 +3048,9 @@ } }, "node_modules/@emnapi/wasi-threads": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz", - "integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.2.tgz", + "integrity": "sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA==", "license": "MIT", "optional": true, "dependencies": { @@ -3077,9 +3058,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.7.tgz", - "integrity": "sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.2.tgz", + "integrity": "sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag==", "cpu": [ "ppc64" ], @@ -3094,9 +3075,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.7.tgz", - "integrity": "sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.2.tgz", + "integrity": "sha512-NQhH7jFstVY5x8CKbcfa166GoV0EFkaPkCKBQkdPJFvo5u+nGXLEH/ooniLb3QI8Fk58YAx7nsPLozUWfCBOJA==", "cpu": [ "arm" ], @@ -3111,9 +3092,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.7.tgz", - "integrity": "sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.2.tgz", + "integrity": "sha512-5ZAX5xOmTligeBaeNEPnPaeEuah53Id2tX4c2CVP3JaROTH+j4fnfHCkr1PjXMd78hMst+TlkfKcW/DlTq0i4w==", "cpu": [ "arm64" ], @@ -3128,9 +3109,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.7.tgz", - "integrity": "sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.2.tgz", + "integrity": "sha512-Ffcx+nnma8Sge4jzddPHCZVRvIfQ0kMsUsCMcJRHkGJ1cDmhe4SsrYIjLUKn1xpHZybmOqCWwB0zQvsjdEHtkg==", "cpu": [ "x64" ], @@ -3145,9 +3126,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.7.tgz", - "integrity": "sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.2.tgz", + "integrity": "sha512-MpM6LUVTXAzOvN4KbjzU/q5smzryuoNjlriAIx+06RpecwCkL9JpenNzpKd2YMzLJFOdPqBpuub6eVRP5IgiSA==", "cpu": [ "arm64" ], @@ -3162,9 +3143,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.7.tgz", - "integrity": "sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.2.tgz", + "integrity": "sha512-5eRPrTX7wFyuWe8FqEFPG2cU0+butQQVNcT4sVipqjLYQjjh8a8+vUTfgBKM88ObB85ahsnTwF7PSIt6PG+QkA==", "cpu": [ "x64" ], @@ -3179,9 +3160,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.7.tgz", - "integrity": "sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.2.tgz", + "integrity": "sha512-mLwm4vXKiQ2UTSX4+ImyiPdiHjiZhIaE9QvC7sw0tZ6HoNMjYAqQpGyui5VRIi5sGd+uWq940gdCbY3VLvsO1w==", "cpu": [ "arm64" ], @@ -3196,9 +3177,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.7.tgz", - "integrity": "sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.2.tgz", + "integrity": "sha512-6qyyn6TjayJSwGpm8J9QYYGQcRgc90nmfdUb0O7pp1s4lTY+9D0H9O02v5JqGApUyiHOtkz6+1hZNvNtEhbwRQ==", "cpu": [ "x64" ], @@ -3213,9 +3194,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.7.tgz", - "integrity": "sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.2.tgz", + "integrity": "sha512-UHBRgJcmjJv5oeQF8EpTRZs/1knq6loLxTsjc3nxO9eXAPDLcWW55flrMVc97qFPbmZP31ta1AZVUKQzKTzb0g==", "cpu": [ "arm" ], @@ -3230,9 +3211,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.7.tgz", - "integrity": "sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.2.tgz", + "integrity": "sha512-gq/sjLsOyMT19I8obBISvhoYiZIAaGF8JpeXu1u8yPv8BE5HlWYobmlsfijFIZ9hIVGYkbdFhEqC0NvM4kNO0g==", "cpu": [ "arm64" ], @@ -3247,9 +3228,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.7.tgz", - "integrity": "sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.2.tgz", + "integrity": "sha512-bBYCv9obgW2cBP+2ZWfjYTU+f5cxRoGGQ5SeDbYdFCAZpYWrfjjfYwvUpP8MlKbP0nwZ5gyOU/0aUzZ5HWPuvQ==", "cpu": [ "ia32" ], @@ -3264,9 +3245,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.7.tgz", - "integrity": "sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.2.tgz", + "integrity": "sha512-SHNGiKtvnU2dBlM5D8CXRFdd+6etgZ9dXfaPCeJtz+37PIUlixvlIhI23L5khKXs3DIzAn9V8v+qb1TRKrgT5w==", "cpu": [ "loong64" ], @@ -3281,9 +3262,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.7.tgz", - "integrity": "sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.2.tgz", + "integrity": "sha512-hDDRlzE6rPeoj+5fsADqdUZl1OzqDYow4TB4Y/3PlKBD0ph1e6uPHzIQcv2Z65u2K0kpeByIyAjCmjn1hJgG0Q==", "cpu": [ "mips64el" ], @@ -3298,9 +3279,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.7.tgz", - "integrity": "sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.2.tgz", + "integrity": "sha512-tsHu2RRSWzipmUi9UBDEzc0nLc4HtpZEI5Ba+Omms5456x5WaNuiG3u7xh5AO6sipnJ9r4cRWQB2tUjPyIkc6g==", "cpu": [ "ppc64" ], @@ -3315,9 +3296,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.7.tgz", - "integrity": "sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.2.tgz", + "integrity": "sha512-k4LtpgV7NJQOml/10uPU0s4SAXGnowi5qBSjaLWMojNCUICNu7TshqHLAEbkBdAszL5TabfvQ48kK84hyFzjnw==", "cpu": [ "riscv64" ], @@ -3332,9 +3313,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.7.tgz", - "integrity": "sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.2.tgz", + "integrity": "sha512-GRa4IshOdvKY7M/rDpRR3gkiTNp34M0eLTaC1a08gNrh4u488aPhuZOCpkF6+2wl3zAN7L7XIpOFBhnaE3/Q8Q==", "cpu": [ "s390x" ], @@ -3349,9 +3330,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.7.tgz", - "integrity": "sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.2.tgz", + "integrity": "sha512-QInHERlqpTTZ4FRB0fROQWXcYRD64lAoiegezDunLpalZMjcUcld3YzZmVJ2H/Cp0wJRZ8Xtjtj0cEHhYc/uUg==", "cpu": [ "x64" ], @@ -3366,9 +3347,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.7.tgz", - "integrity": "sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.2.tgz", + "integrity": "sha512-talAIBoY5M8vHc6EeI2WW9d/CkiO9MQJ0IOWX8hrLhxGbro/vBXJvaQXefW2cP0z0nQVTdQ/eNyGFV1GSKrxfw==", "cpu": [ "arm64" ], @@ -3383,9 +3364,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.7.tgz", - "integrity": "sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.2.tgz", + "integrity": "sha512-voZT9Z+tpOxrvfKFyfDYPc4DO4rk06qamv1a/fkuzHpiVBMOhpjK+vBmWM8J1eiB3OLSMFYNaOaBNLXGChf5tg==", "cpu": [ "x64" ], @@ -3400,9 +3381,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.7.tgz", - "integrity": "sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.2.tgz", + "integrity": "sha512-dcXYOC6NXOqcykeDlwId9kB6OkPUxOEqU+rkrYVqJbK2hagWOMrsTGsMr8+rW02M+d5Op5NNlgMmjzecaRf7Tg==", "cpu": [ "arm64" ], @@ -3417,9 +3398,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.7.tgz", - "integrity": "sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.2.tgz", + "integrity": "sha512-t/TkWwahkH0Tsgoq1Ju7QfgGhArkGLkF1uYz8nQS/PPFlXbP5YgRpqQR3ARRiC2iXoLTWFxc6DJMSK10dVXluw==", "cpu": [ "x64" ], @@ -3433,27 +3414,10 @@ "node": ">=18" } }, - "node_modules/@esbuild/openharmony-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.7.tgz", - "integrity": "sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": ">=18" - } - }, "node_modules/@esbuild/sunos-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.7.tgz", - "integrity": "sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.2.tgz", + "integrity": "sha512-cfZH1co2+imVdWCjd+D1gf9NjkchVhhdpgb1q5y6Hcv9TP6Zi9ZG/beI3ig8TvwT9lH9dlxLq5MQBBgwuj4xvA==", "cpu": [ "x64" ], @@ -3468,9 +3432,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.7.tgz", - "integrity": "sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.2.tgz", + "integrity": "sha512-7Loyjh+D/Nx/sOTzV8vfbB3GJuHdOQyrOryFdZvPHLf42Tk9ivBU5Aedi7iyX+x6rbn2Mh68T4qq1SDqJBQO5Q==", "cpu": [ "arm64" ], @@ -3485,9 +3449,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.7.tgz", - "integrity": "sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.2.tgz", + "integrity": "sha512-WRJgsz9un0nqZJ4MfhabxaD9Ft8KioqU3JMinOTvobbX6MOSUigSBlogP8QB3uxpJDsFS6yN+3FDBdqE5lg9kg==", "cpu": [ "ia32" ], @@ -3502,9 +3466,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.7.tgz", - "integrity": "sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.2.tgz", + "integrity": "sha512-kM3HKb16VIXZyIeVrM1ygYmZBKybX8N4p754bw390wGO3Tf2j4L2/WYL+4suWujpgf6GBYs3jv7TyUivdd05JA==", "cpu": [ "x64" ], @@ -3519,9 +3483,9 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", - "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", + "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", + "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", "dev": true, "license": "MIT", "dependencies": { @@ -3538,9 +3502,9 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", - "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", "dev": true, "license": "MIT", "engines": { @@ -3713,15 +3677,15 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.21.2", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.2.tgz", - "integrity": "sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==", + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", + "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", "dev": true, "license": "Apache-2.0", "dependencies": { "@eslint/object-schema": "^2.1.7", "debug": "^4.3.1", - "minimatch": "^3.1.5" + "minimatch": "^3.1.2" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -3777,23 +3741,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/@eslint/eslintrc/node_modules/ajv": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", - "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, "node_modules/@eslint/eslintrc/node_modules/globals": { "version": "14.0.0", "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", @@ -3807,13 +3754,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, "node_modules/@eslint/js": { "version": "9.39.2", "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.2.tgz", @@ -3909,79 +3849,61 @@ "xml2js": "0.6.0" } }, - "node_modules/@expo/config-plugins/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/@expo/config-plugins/node_modules/brace-expansion": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", - "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, "node_modules/@expo/config-plugins/node_modules/glob": { - "version": "13.0.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", - "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", + "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", "license": "BlueOak-1.0.0", "dependencies": { - "minimatch": "^10.2.2", - "minipass": "^7.1.3", - "path-scurry": "^2.0.2" + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "path-scurry": "^2.0.0" }, "engines": { - "node": "18 || 20 || >=22" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/@expo/config-plugins/node_modules/lru-cache": { + "version": "11.2.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", + "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, "node_modules/@expo/config-plugins/node_modules/minimatch": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", - "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^5.0.5" + "@isaacs/brace-expansion": "^5.0.0" }, "engines": { - "node": "18 || 20 || >=22" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@expo/config-plugins/node_modules/uuid": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz", - "integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@expo/config-plugins/node_modules/xcode": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/xcode/-/xcode-3.0.1.tgz", - "integrity": "sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==", - "license": "Apache-2.0", + "node_modules/@expo/config-plugins/node_modules/path-scurry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", + "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", + "license": "BlueOak-1.0.0", "dependencies": { - "simple-plist": "^1.1.0", - "uuid": "^7.0.3" + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" }, "engines": { - "node": ">=10.0.0" + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/@expo/config-types": { @@ -3999,54 +3921,58 @@ "@babel/highlight": "^7.10.4" } }, - "node_modules/@expo/config/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "license": "MIT", + "node_modules/@expo/config/node_modules/glob": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", + "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "path-scurry": "^2.0.0" + }, "engines": { - "node": "18 || 20 || >=22" + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@expo/config/node_modules/brace-expansion": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", - "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, + "node_modules/@expo/config/node_modules/lru-cache": { + "version": "11.2.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", + "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==", + "license": "BlueOak-1.0.0", "engines": { - "node": "18 || 20 || >=22" + "node": "20 || >=22" } }, - "node_modules/@expo/config/node_modules/glob": { - "version": "13.0.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", - "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", + "node_modules/@expo/config/node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", "license": "BlueOak-1.0.0", "dependencies": { - "minimatch": "^10.2.2", - "minipass": "^7.1.3", - "path-scurry": "^2.0.2" + "@isaacs/brace-expansion": "^5.0.0" }, "engines": { - "node": "18 || 20 || >=22" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@expo/config/node_modules/minimatch": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", - "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "node_modules/@expo/config/node_modules/path-scurry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", + "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^5.0.5" + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" }, "engines": { - "node": "18 || 20 || >=22" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -4093,9 +4019,9 @@ } }, "node_modules/@expo/env": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@expo/env/-/env-2.0.11.tgz", - "integrity": "sha512-xV+ps6YCW7XIPVUwFVCRN2nox09dnRwy8uIjwHWTODu0zFw4kp4omnVkl0OOjuu2XOe7tdgAHxikrkJt9xB/7Q==", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@expo/env/-/env-2.0.8.tgz", + "integrity": "sha512-5VQD6GT8HIMRaSaB5JFtOXuvfDVU80YtZIuUT/GDhUF782usIXY13Tn3IdDz1Tm/lqA9qnRZQ1BF4t7LlvdJPA==", "license": "MIT", "dependencies": { "chalk": "^4.0.0", @@ -4155,86 +4081,90 @@ } }, "node_modules/@expo/fingerprint/node_modules/brace-expansion": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", - "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/@expo/fingerprint/node_modules/glob": { - "version": "13.0.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", - "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.0.tgz", + "integrity": "sha512-tvZgpqk6fz4BaNZ66ZsRaZnbHvP/jG3uKJvAZOwEVUL4RTA5nJeeLYfyN9/VA8NX/V3IBG+hkeuGpKjvELkVhA==", "license": "BlueOak-1.0.0", "dependencies": { - "minimatch": "^10.2.2", - "minipass": "^7.1.3", - "path-scurry": "^2.0.2" + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "path-scurry": "^2.0.0" }, "engines": { - "node": "18 || 20 || >=22" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@expo/fingerprint/node_modules/glob/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/@expo/fingerprint/node_modules/glob/node_modules/brace-expansion": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", - "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", - "license": "MIT", + "node_modules/@expo/fingerprint/node_modules/glob/node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "license": "BlueOak-1.0.0", "dependencies": { - "balanced-match": "^4.0.2" + "@isaacs/brace-expansion": "^5.0.0" }, "engines": { - "node": "18 || 20 || >=22" + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@expo/fingerprint/node_modules/glob/node_modules/minimatch": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", - "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "node_modules/@expo/fingerprint/node_modules/lru-cache": { + "version": "11.2.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.5.tgz", + "integrity": "sha512-vFrFJkWtJvJnD5hg+hJvVE8Lh/TcMzKnTgCWmtBipwI5yLX/iX+5UB2tfuyODF5E7k9xEzMdYgGqaSb1c0c5Yw==", "license": "BlueOak-1.0.0", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@expo/fingerprint/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", "dependencies": { - "brace-expansion": "^5.0.5" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "18 || 20 || >=22" + "node": ">=16 || 14 >=14.17" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@expo/fingerprint/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", - "license": "ISC", + "node_modules/@expo/fingerprint/node_modules/path-scurry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", + "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", + "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^2.0.2" + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/@expo/image-utils": { - "version": "0.8.12", - "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.8.12.tgz", - "integrity": "sha512-3KguH7kyKqq7pNwLb9j6BBdD/bjmNwXZG/HPWT6GWIXbwrvAJt2JNyYTP5agWJ8jbbuys1yuCzmkX+TU6rmI7A==", + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/@expo/image-utils/-/image-utils-0.8.8.tgz", + "integrity": "sha512-HHHaG4J4nKjTtVa1GG9PCh763xlETScfEyNxxOvfTRr8IKPJckjTyqSLEtdJoFNJ1vqiABEjW7tqGhqGibZLeA==", "license": "MIT", "dependencies": { "@expo/spawn-async": "^1.7.2", @@ -4243,19 +4173,31 @@ "jimp-compact": "0.16.1", "parse-png": "^2.1.0", "resolve-from": "^5.0.0", - "semver": "^7.6.0" + "resolve-global": "^1.0.0", + "semver": "^7.6.0", + "temp-dir": "~2.0.0", + "unique-string": "~2.0.0" } }, "node_modules/@expo/json-file": { - "version": "10.0.13", - "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-10.0.13.tgz", - "integrity": "sha512-pX/XjQn7tgNw6zuuV2ikmegmwe/S7uiwhrs2wXrANMkq7ozrA+JcZwgW9Q/8WZgciBzfAhNp5hnackHcrmapQA==", + "version": "10.0.8", + "resolved": "https://registry.npmjs.org/@expo/json-file/-/json-file-10.0.8.tgz", + "integrity": "sha512-9LOTh1PgKizD1VXfGQ88LtDH0lRwq9lsTb4aichWTWSWqy3Ugfkhfm3BhzBIkJJfQQ5iJu3m/BoRlEIjoCGcnQ==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.20.0", + "@babel/code-frame": "~7.10.4", "json5": "^2.2.3" } }, + "node_modules/@expo/json-file/node_modules/@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, "node_modules/@expo/metro": { "version": "54.2.0", "resolved": "https://registry.npmjs.org/@expo/metro/-/metro-54.2.0.tgz", @@ -4311,24 +4253,25 @@ } }, "node_modules/@expo/osascript": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/@expo/osascript/-/osascript-2.4.2.tgz", - "integrity": "sha512-/XP7PSYF2hzOZzqfjgkoWtllyeTN8dW3aM4P6YgKcmmPikKL5FdoyQhti4eh6RK5a5VrUXJTOlTNIpIHsfB5Iw==", + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/@expo/osascript/-/osascript-2.3.8.tgz", + "integrity": "sha512-/TuOZvSG7Nn0I8c+FcEaoHeBO07yu6vwDgk7rZVvAXoeAK5rkA09jRyjYsZo+0tMEFaToBeywA6pj50Mb3ny9w==", "license": "MIT", "dependencies": { - "@expo/spawn-async": "^1.7.2" + "@expo/spawn-async": "^1.7.2", + "exec-async": "^2.2.0" }, "engines": { "node": ">=12" } }, "node_modules/@expo/package-manager": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/@expo/package-manager/-/package-manager-1.10.3.tgz", - "integrity": "sha512-ZuXiK/9fCrIuLjPSe1VYmfp0Sa85kCMwd8QQpgyi5ufppYKRtLBg14QOgUqj8ZMbJTxE0xqzd0XR7kOs3vAK9A==", + "version": "1.9.10", + "resolved": "https://registry.npmjs.org/@expo/package-manager/-/package-manager-1.9.10.tgz", + "integrity": "sha512-axJm+NOj3jVxep49va/+L3KkF3YW/dkV+RwzqUJedZrv4LeTqOG4rhrCaCPXHTvLqCTDKu6j0Xyd28N7mnxsGA==", "license": "MIT", "dependencies": { - "@expo/json-file": "^10.0.12", + "@expo/json-file": "^10.0.8", "@expo/spawn-async": "^1.7.2", "chalk": "^4.0.0", "npm-package-arg": "^11.0.0", @@ -4336,184 +4279,6 @@ "resolve-workspace-root": "^2.0.0" } }, - "node_modules/@expo/package-manager/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/@expo/package-manager/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@expo/package-manager/node_modules/cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", - "license": "MIT", - "dependencies": { - "restore-cursor": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@expo/package-manager/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@expo/package-manager/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "license": "MIT" - }, - "node_modules/@expo/package-manager/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@expo/package-manager/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@expo/package-manager/node_modules/log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", - "license": "MIT", - "dependencies": { - "chalk": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@expo/package-manager/node_modules/log-symbols/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@expo/package-manager/node_modules/onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", - "license": "MIT", - "dependencies": { - "mimic-fn": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@expo/package-manager/node_modules/ora": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", - "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", - "license": "MIT", - "dependencies": { - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-spinners": "^2.0.0", - "log-symbols": "^2.2.0", - "strip-ansi": "^5.2.0", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@expo/package-manager/node_modules/ora/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@expo/package-manager/node_modules/restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", - "license": "MIT", - "dependencies": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@expo/package-manager/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "license": "ISC" - }, - "node_modules/@expo/package-manager/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@expo/package-manager/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@expo/plist": { "version": "0.4.8", "resolved": "https://registry.npmjs.org/@expo/plist/-/plist-0.4.8.tgz", @@ -4597,9 +4362,9 @@ } }, "node_modules/@faker-js/faker": { - "version": "9.9.0", - "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-9.9.0.tgz", - "integrity": "sha512-OEl393iCOoo/z8bMezRlJu+GlRGlsKbUAN7jKB6LhnKoqKve5DXRpalbItIIcwnCjs1k/FOPjFzcA6Qn+H+YbA==", + "version": "9.7.0", + "resolved": "https://registry.npmjs.org/@faker-js/faker/-/faker-9.7.0.tgz", + "integrity": "sha512-aozo5vqjCmDoXLNUJarFZx2IN/GgGaogY4TMJ6so/WLZOWpSV7fvj2dmrV6sEAnUm1O7aCrhTibjpzeDFgNqbg==", "dev": true, "funding": [ { @@ -4633,12 +4398,50 @@ "fast-uri": "^2.0.0" } }, + "node_modules/@fastify/ajv-compiler/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@fastify/ajv-compiler/node_modules/ajv/node_modules/fast-uri": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", + "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, "node_modules/@fastify/ajv-compiler/node_modules/fast-uri": { "version": "2.4.0", "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-2.4.0.tgz", "integrity": "sha512-ypuAmmMKInk5q7XcepxlnUWDLWv4GFtaJqAzWKqn62IpQ3pejtr5dTVbt3vwqVaMKmkNR55sTT+CqUKIaT21BA==", "license": "MIT" }, + "node_modules/@fastify/ajv-compiler/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, "node_modules/@fastify/error": { "version": "3.4.1", "resolved": "https://registry.npmjs.org/@fastify/error/-/error-3.4.1.tgz", @@ -4676,22 +4479,6 @@ "mime": "^3.0.0" } }, - "node_modules/@fastify/send/node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "license": "MIT", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/@fastify/send/node_modules/mime": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", @@ -4704,15 +4491,6 @@ "node": ">=10.0.0" } }, - "node_modules/@fastify/send/node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/@fastify/sensible": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/@fastify/sensible/-/sensible-5.6.0.tgz", @@ -4743,73 +4521,6 @@ "glob": "^10.3.4" } }, - "node_modules/@fastify/static/node_modules/brace-expansion": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", - "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@fastify/static/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@fastify/static/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "license": "ISC" - }, - "node_modules/@fastify/static/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.2" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@fastify/static/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@fastify/type-provider-typebox": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/@fastify/type-provider-typebox/-/type-provider-typebox-4.1.0.tgz", @@ -5085,19 +4796,33 @@ } }, "node_modules/@humanfs/node": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", - "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", "dev": true, "license": "Apache-2.0", "dependencies": { "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.4.0" + "@humanwhocodes/retry": "^0.3.0" }, "engines": { "node": ">=18.18.0" } }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -5113,9 +4838,9 @@ } }, "node_modules/@humanwhocodes/retry": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", - "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz", + "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==", "dev": true, "license": "Apache-2.0", "engines": { @@ -5126,353 +4851,344 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@inquirer/ansi": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.2.tgz", - "integrity": "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" + "node_modules/@hyperswarm/secret-stream": { + "version": "6.9.1", + "resolved": "https://registry.npmjs.org/@hyperswarm/secret-stream/-/secret-stream-6.9.1.tgz", + "integrity": "sha512-xb0S5y3YJwBakD77JOGBHlBxdp63mHClZoXBYoLv+9wH8e054ESKlmQptWqjJK5dv5VMUIVYOJB4MaOpB0JdGw==", + "license": "Apache-2.0", + "dependencies": { + "b4a": "^1.1.0", + "hypercore-crypto": "^3.3.1", + "noise-curve-ed": "^2.0.1", + "noise-handshake": "^4.0.0", + "sodium-secretstream": "^1.1.0", + "sodium-universal": "^5.0.0", + "streamx": "^2.14.0", + "timeout-refresh": "^2.0.0", + "unslab": "^1.3.0" } }, - "node_modules/@inquirer/checkbox": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.3.2.tgz", - "integrity": "sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==", - "dev": true, + "node_modules/@hyperswarm/secret-stream/node_modules/sodium-native": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/sodium-native/-/sodium-native-5.1.0.tgz", + "integrity": "sha512-3RxgyWyJlhTsABPnJVpCI5CoTDANZTqqFrEPqr+kjfnRaBihpVtMUE3yTF40ukdoB1APXeoBNKF3MzZAIHg39g==", "license": "MIT", "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/core": "^10.3.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" + "bare-assert": "^1.2.0", + "require-addon": "^1.1.0", + "which-runtime": "^1.2.1" }, "engines": { - "node": ">=18" + "bare": ">=1.16.0" + } + }, + "node_modules/@hyperswarm/secret-stream/node_modules/sodium-universal": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/sodium-universal/-/sodium-universal-5.0.1.tgz", + "integrity": "sha512-rv+aH+tnKB5H0MAc2UadHShLMslpJsc4wjdnHRtiSIEYpOetCgu8MS4ExQRia+GL/MK3uuCyZPeEsi+J3h+Q+Q==", + "license": "MIT", + "dependencies": { + "sodium-native": "^5.0.1" }, "peerDependencies": { - "@types/node": ">=18" + "sodium-javascript": "~0.8.0" }, "peerDependenciesMeta": { - "@types/node": { + "sodium-javascript": { "optional": true } } }, - "node_modules/@inquirer/confirm": { - "version": "5.1.21", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.21.tgz", - "integrity": "sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==", - "dev": true, + "node_modules/@inquirer/checkbox": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-3.0.1.tgz", + "integrity": "sha512-0hm2nrToWUdD6/UHnel/UKGdk1//ke5zGUpHIvk5ZWmaKezlGxZkOJXNSWsdxO/rEqTkbB3lNC2J6nBElV2aAQ==", "license": "MIT", "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" + "@inquirer/core": "^9.2.1", + "@inquirer/figures": "^1.0.6", + "@inquirer/type": "^2.0.0", + "ansi-escapes": "^4.3.2", + "yoctocolors-cjs": "^2.1.2" }, "engines": { "node": ">=18" + } + }, + "node_modules/@inquirer/confirm": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-4.0.1.tgz", + "integrity": "sha512-46yL28o2NJ9doViqOy0VDcoTzng7rAb6yPQKU7VDLqkmbCaH4JqK4yk4XqlzNWy9PVC5pG1ZUXPBQv+VqnYs2w==", + "license": "MIT", + "dependencies": { + "@inquirer/core": "^9.2.1", + "@inquirer/type": "^2.0.0" }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "engines": { + "node": ">=18" } }, "node_modules/@inquirer/core": { - "version": "10.3.2", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", - "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", - "dev": true, + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-9.2.1.tgz", + "integrity": "sha512-F2VBt7W/mwqEU4bL0RnHNZmC/OxzNx9cOYxHqnXX3MP6ruYvZUZAW9imgN9+h/uBT/oP8Gh888J2OZSbjSeWcg==", "license": "MIT", "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", + "@inquirer/figures": "^1.0.6", + "@inquirer/type": "^2.0.0", + "@types/mute-stream": "^0.0.4", + "@types/node": "^22.5.5", + "@types/wrap-ansi": "^3.0.0", + "ansi-escapes": "^4.3.2", "cli-width": "^4.1.0", - "mute-stream": "^2.0.0", + "mute-stream": "^1.0.0", "signal-exit": "^4.1.0", + "strip-ansi": "^6.0.1", "wrap-ansi": "^6.2.0", - "yoctocolors-cjs": "^2.1.3" + "yoctocolors-cjs": "^2.1.2" }, "engines": { "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } } }, - "node_modules/@inquirer/editor": { - "version": "4.2.23", - "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.23.tgz", - "integrity": "sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==", - "dev": true, + "node_modules/@inquirer/core/node_modules/@types/node": { + "version": "22.14.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.14.1.tgz", + "integrity": "sha512-u0HuPQwe/dHrItgHHpmw3N2fYCR6x4ivMNbPHRkBVP4CvN+kiRrKHWk3i8tXiO/joPwXLMYvF9TTF0eqgHIuOw==", + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@inquirer/core/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, + "node_modules/@inquirer/core/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@inquirer/core/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "license": "MIT", "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/external-editor": "^1.0.3", - "@inquirer/type": "^3.0.10" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=18" + "node": ">=8" + } + }, + "node_modules/@inquirer/core/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" }, - "peerDependencies": { - "@types/node": ">=18" + "engines": { + "node": ">=8" + } + }, + "node_modules/@inquirer/core/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "engines": { + "node": ">=8" } }, - "node_modules/@inquirer/expand": { - "version": "4.0.23", - "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.23.tgz", - "integrity": "sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==", - "dev": true, + "node_modules/@inquirer/editor": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-3.0.1.tgz", + "integrity": "sha512-VA96GPFaSOVudjKFraokEEmUQg/Lub6OXvbIEZU1SDCmBzRkHGhxoFAVaF30nyiB4m5cEbDgiI2QRacXZ2hw9Q==", "license": "MIT", "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" + "@inquirer/core": "^9.2.1", + "@inquirer/type": "^2.0.0", + "external-editor": "^3.1.0" }, "engines": { "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } } }, - "node_modules/@inquirer/external-editor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.3.tgz", - "integrity": "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==", - "dev": true, + "node_modules/@inquirer/expand": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-3.0.1.tgz", + "integrity": "sha512-ToG8d6RIbnVpbdPdiN7BCxZGiHOTomOX94C2FaT5KOHupV40tKEDozp12res6cMIfRKrXLJyexAZhWVHgbALSQ==", "license": "MIT", "dependencies": { - "chardet": "^2.1.1", - "iconv-lite": "^0.7.0" + "@inquirer/core": "^9.2.1", + "@inquirer/type": "^2.0.0", + "yoctocolors-cjs": "^2.1.2" }, "engines": { "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } } }, "node_modules/@inquirer/figures": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.15.tgz", - "integrity": "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.11.tgz", + "integrity": "sha512-eOg92lvrn/aRUqbxRyvpEWnrvRuTYRifixHkYVpJiygTgVSBIHDqLh0SrMQXkafvULg3ck11V7xvR+zcgvpHFw==", "license": "MIT", "engines": { "node": ">=18" } }, "node_modules/@inquirer/input": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.3.1.tgz", - "integrity": "sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==", - "dev": true, + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-3.0.1.tgz", + "integrity": "sha512-BDuPBmpvi8eMCxqC5iacloWqv+5tQSJlUafYWUe31ow1BVXjW2a5qe3dh4X/Z25Wp22RwvcaLCc2siHobEOfzg==", "license": "MIT", "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" + "@inquirer/core": "^9.2.1", + "@inquirer/type": "^2.0.0" }, "engines": { "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } } }, "node_modules/@inquirer/number": { - "version": "3.0.23", - "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.23.tgz", - "integrity": "sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==", - "dev": true, + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-2.0.1.tgz", + "integrity": "sha512-QpR8jPhRjSmlr/mD2cw3IR8HRO7lSVOnqUvQa8scv1Lsr3xoAMMworcYW3J13z3ppjBFBD2ef1Ci6AE5Qn8goQ==", "license": "MIT", "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" + "@inquirer/core": "^9.2.1", + "@inquirer/type": "^2.0.0" }, "engines": { "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } } }, "node_modules/@inquirer/password": { - "version": "4.0.23", - "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.23.tgz", - "integrity": "sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==", - "dev": true, + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-3.0.1.tgz", + "integrity": "sha512-haoeEPUisD1NeE2IanLOiFr4wcTXGWrBOyAyPZi1FfLJuXOzNmxCJPgUrGYKVh+Y8hfGJenIfz5Wb/DkE9KkMQ==", "license": "MIT", "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" + "@inquirer/core": "^9.2.1", + "@inquirer/type": "^2.0.0", + "ansi-escapes": "^4.3.2" }, "engines": { "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } } }, "node_modules/@inquirer/prompts": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.10.1.tgz", - "integrity": "sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==", - "dev": true, + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-6.0.1.tgz", + "integrity": "sha512-yl43JD/86CIj3Mz5mvvLJqAOfIup7ncxfJ0Btnl0/v5TouVUyeEdcpknfgc+yMevS/48oH9WAkkw93m7otLb/A==", "license": "MIT", "dependencies": { - "@inquirer/checkbox": "^4.3.2", - "@inquirer/confirm": "^5.1.21", - "@inquirer/editor": "^4.2.23", - "@inquirer/expand": "^4.0.23", - "@inquirer/input": "^4.3.1", - "@inquirer/number": "^3.0.23", - "@inquirer/password": "^4.0.23", - "@inquirer/rawlist": "^4.1.11", - "@inquirer/search": "^3.2.2", - "@inquirer/select": "^4.4.2" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "@inquirer/checkbox": "^3.0.1", + "@inquirer/confirm": "^4.0.1", + "@inquirer/editor": "^3.0.1", + "@inquirer/expand": "^3.0.1", + "@inquirer/input": "^3.0.1", + "@inquirer/number": "^2.0.1", + "@inquirer/password": "^3.0.1", + "@inquirer/rawlist": "^3.0.1", + "@inquirer/search": "^2.0.1", + "@inquirer/select": "^3.0.1" + }, + "engines": { + "node": ">=18" } }, "node_modules/@inquirer/rawlist": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.11.tgz", - "integrity": "sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==", - "dev": true, + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-3.0.1.tgz", + "integrity": "sha512-VgRtFIwZInUzTiPLSfDXK5jLrnpkuSOh1ctfaoygKAdPqjcjKYmGh6sCY1pb0aGnCGsmhUxoqLDUAU0ud+lGXQ==", "license": "MIT", "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" + "@inquirer/core": "^9.2.1", + "@inquirer/type": "^2.0.0", + "yoctocolors-cjs": "^2.1.2" }, "engines": { "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } } }, "node_modules/@inquirer/search": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.2.2.tgz", - "integrity": "sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==", - "dev": true, + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-2.0.1.tgz", + "integrity": "sha512-r5hBKZk3g5MkIzLVoSgE4evypGqtOannnB3PKTG9NRZxyFRKcfzrdxXXPcoJQsxJPzvdSU2Rn7pB7lw0GCmGAg==", "license": "MIT", "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" + "@inquirer/core": "^9.2.1", + "@inquirer/figures": "^1.0.6", + "@inquirer/type": "^2.0.0", + "yoctocolors-cjs": "^2.1.2" }, "engines": { "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } } }, "node_modules/@inquirer/select": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.4.2.tgz", - "integrity": "sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==", - "dev": true, + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-3.0.1.tgz", + "integrity": "sha512-lUDGUxPhdWMkN/fHy1Lk7pF3nK1fh/gqeyWXmctefhxLYxlDsc7vsPBEpxrfVGDsVdyYJsiJoD4bJ1b623cV1Q==", "license": "MIT", "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/core": "^10.3.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" + "@inquirer/core": "^9.2.1", + "@inquirer/figures": "^1.0.6", + "@inquirer/type": "^2.0.0", + "ansi-escapes": "^4.3.2", + "yoctocolors-cjs": "^2.1.2" }, "engines": { "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } } }, "node_modules/@inquirer/type": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz", - "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", - "dev": true, + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-2.0.0.tgz", + "integrity": "sha512-XvJRx+2KR3YXyYtPUUy+qd9i7p+GO9Ko6VIIpWlBrpWwXDv8WLFeHTxz35CfQFUiBMLXlGHhGzys7lqit9gWag==", "license": "MIT", + "dependencies": { + "mute-stream": "^1.0.0" + }, "engines": { "node": ">=18" + } + }, + "node_modules/@isaacs/balanced-match": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", + "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", + "license": "MIT", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@isaacs/brace-expansion": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", + "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", + "license": "MIT", + "dependencies": { + "@isaacs/balanced-match": "^4.0.1" }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } + "engines": { + "node": "20 || >=22" } }, "node_modules/@isaacs/cliui": { @@ -5493,9 +5209,9 @@ } }, "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "license": "MIT", "engines": { "node": ">=12" @@ -5504,29 +5220,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "license": "MIT" - }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", @@ -5590,23 +5283,10 @@ "sprintf-js": "~1.0.2" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", - "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "license": "MIT", "dependencies": { "argparse": "^1.0.7", @@ -5616,53 +5296,11 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "license": "MIT", - "engines": { - "node": ">=8" - } + "node_modules/@istanbuljs/load-nyc-config/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "license": "BSD-3-Clause" }, "node_modules/@istanbuljs/schema": { "version": "0.1.3", @@ -5691,83 +5329,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/console/node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/console/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/console/node_modules/@sinclair/typebox": { - "version": "0.27.10", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", - "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jest/console/node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/console/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/@jest/core": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", @@ -5816,237 +5377,247 @@ } } }, - "node_modules/@jest/core/node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "node_modules/@jest/core/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.27.8" + "ansi-regex": "^5.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/@jest/core/node_modules/@jest/transform": { + "node_modules/@jest/create-cache-key-function": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", - "dev": true, + "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz", + "integrity": "sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==", "license": "MIT", "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" + "@jest/types": "^29.6.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/core/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "node_modules/@jest/diff-sequences": { + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.0.tgz", + "integrity": "sha512-xMbtoCeKJDto86GW6AiwVv7M4QAuI56R7dVBr1RNGYbOT44M2TIzOiske2RxopBqkumDY+A1H55pGvuribRY9A==", "dev": true, "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" + "jest-mock": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/core/node_modules/@sinclair/typebox": { - "version": "0.27.10", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", - "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jest/core/node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/core/node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" + "jest-get-type": "^29.6.3" }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/core/node_modules/jest-haste-map": { + "node_modules/@jest/fake-timers": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", - "dev": true, + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", - "@types/graceful-fs": "^4.1.3", + "@sinonjs/fake-timers": "^10.0.2", "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" } }, - "node_modules/@jest/core/node_modules/jest-message-util": { + "node_modules/@jest/get-type": { + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.0.0.tgz", + "integrity": "sha512-VZWMjrBzqfDKngQ7sUctKeLxanAbsBFoZnPxNIG6CmxK7Gv6K44yqd0nzveNIBfuhGZMmk1n5PGbvdSTOu0yTg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/globals": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.12.13", + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "jest-mock": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/core/node_modules/jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "node_modules/@jest/pattern": { + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.0.tgz", + "integrity": "sha512-k+TpEThzLVXMkbdxf8KHjZ83Wl+G54ytVJoDIGWwS96Ql4xyASRjc6SU1hs5jHVql+hpyK9G8N7WuFhLpGHRpQ==", "dev": true, "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-regex-util": "30.0.0" + }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@jest/pattern/node_modules/jest-regex-util": { + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.0.tgz", + "integrity": "sha512-rT84010qRu/5OOU7a9TeidC2Tp3Qgt9Sty4pOZ/VSDuEmRupIjKZAb53gU3jr4ooMlhwScrgC9UixJxWzVu9oQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@jest/core/node_modules/jest-util": { + "node_modules/@jest/reporters": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", "dev": true, "license": "MIT", "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", "@types/node": "*", "chalk": "^4.0.0", - "ci-info": "^3.2.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/@jest/core/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/@jest/reporters/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@jest/core/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/@jest/core/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=8" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@jest/core/node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", "dev": true, - "license": "ISC", + "license": "BSD-3-Clause", "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=10" } }, - "node_modules/@jest/create-cache-key-function": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz", - "integrity": "sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==", + "node_modules/@jest/reporters/node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3" + "ansi-regex": "^5.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/@jest/create-cache-key-function/node_modules/@jest/schemas": { + "node_modules/@jest/schemas": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", @@ -6058,67 +5629,86 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/create-cache-key-function/node_modules/@jest/types": { + "node_modules/@jest/schemas/node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "license": "MIT" + }, + "node_modules/@jest/source-map": { "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/create-cache-key-function/node_modules/@sinclair/typebox": { - "version": "0.27.10", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", - "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", - "license": "MIT" - }, - "node_modules/@jest/diff-sequences": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.3.0.tgz", - "integrity": "sha512-cG51MVnLq1ecVUaQ3fr6YuuAOitHK1S4WUJHnsPFE/quQr33ADUx1FfrTCpMCRxvy0Yr9BThKpDjSlcTi91tMA==", + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", "dev": true, "license": "MIT", + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/environment": { + "node_modules/@jest/test-sequencer": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", - "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0" + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/environment/node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.27.8" + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/environment/node_modules/@jest/types": { + "node_modules/@jest/types": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", @@ -6135,992 +5725,812 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/@jest/environment/node_modules/@sinclair/typebox": { - "version": "0.27.10", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", - "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", - "license": "MIT" - }, - "node_modules/@jest/environment/node_modules/jest-mock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.12", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz", + "integrity": "sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==", "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "@jridgewell/sourcemap-codec": "^1.5.0", + "@jridgewell/trace-mapping": "^0.3.24" } }, - "node_modules/@jest/environment/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "node_modules/@jridgewell/remapping": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" } }, - "node_modules/@jest/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", - "dev": true, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "license": "MIT", - "dependencies": { - "expect": "^29.7.0", - "jest-snapshot": "^29.7.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=6.0.0" } }, - "node_modules/@jest/expect-utils": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.3.0.tgz", - "integrity": "sha512-j0+W5iQQ8hBh7tHZkTQv3q2Fh/M7Je72cIsYqC4OaktgtO7v1So9UTjp6uPBHIaB6beoF/RRsCgMJKvti0wADA==", - "dev": true, + "node_modules/@jridgewell/source-map": { + "version": "0.3.11", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", + "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", "license": "MIT", "dependencies": { - "@jest/get-type": "30.1.0" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" } }, - "node_modules/@jest/expect/node_modules/@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", - "dev": true, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.29", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz", + "integrity": "sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==", "license": "MIT", "dependencies": { - "jest-get-type": "^29.6.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@jest/expect/node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "node_modules/@js-sdsl/ordered-map": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz", + "integrity": "sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==", "dev": true, "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" } }, - "node_modules/@jest/expect/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "node_modules/@jsep-plugin/assignment": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@jsep-plugin/assignment/-/assignment-1.3.0.tgz", + "integrity": "sha512-VVgV+CXrhbMI3aSusQyclHkenWSAm95WaiKrMxRFam3JSUiIaQjoMIw2sEs/OX4XifnqeQUN4DYbJjlA8EfktQ==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 10.16.0" + }, + "peerDependencies": { + "jsep": "^0.4.0||^1.0.0" } }, - "node_modules/@jest/expect/node_modules/@sinclair/typebox": { - "version": "0.27.10", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", - "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jest/expect/node_modules/expect": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "node_modules/@jsep-plugin/regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@jsep-plugin/regex/-/regex-1.0.4.tgz", + "integrity": "sha512-q7qL4Mgjs1vByCaTnDFcBnV9HS7GVPJX5vyVoCgZHNSC9rjwIlmbXG5sUuorR5ndfHAIlJ8pVStxvjXHbNvtUg==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/expect-utils": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 10.16.0" + }, + "peerDependencies": { + "jsep": "^0.4.0||^1.0.0" } }, - "node_modules/@jest/expect/node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", - "dev": true, + "node_modules/@lodev09/react-native-exify": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@lodev09/react-native-exify/-/react-native-exify-1.0.3.tgz", + "integrity": "sha512-AlpkAMLCRENOwLnQLOU/HsI4rMakZVH0+gCT1Ja0H5WBd0jJAwLOQyvTCErzTWFte1BSSe2dTByTEOf2eTnmyQ==", "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "workspaces": [ + "example" + ], + "peerDependencies": { + "react": "*", + "react-native": "*" } }, - "node_modules/@jest/expect/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", - "dev": true, + "node_modules/@lukeed/ms": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@lukeed/ms/-/ms-2.0.2.tgz", + "integrity": "sha512-9I2Zn6+NJLfaGoz9jN3lpwDgAYvfGeNYdbAIjJOqzs4Tpc+VU3Jqq4IofSUBKajiDS8k9fZIg18/z13mpk1bsA==", "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/@jest/fake-timers": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", - "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@sinonjs/fake-timers": "^10.0.2", - "@types/node": "*", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, + "node_modules/@mapbox/jsonlint-lines-primitives": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@mapbox/jsonlint-lines-primitives/-/jsonlint-lines-primitives-2.0.2.tgz", + "integrity": "sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ==", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 0.6" } }, - "node_modules/@jest/fake-timers/node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node_modules/@mapbox/sphericalmercator": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@mapbox/sphericalmercator/-/sphericalmercator-1.2.0.tgz", + "integrity": "sha512-ZTOuuwGuMOJN+HEmG/68bSEw15HHaMWmQ5gdTsWdWsjDe56K1kGvLOK6bOSC8gWgIvEO0w6un/2Gvv1q5hJSkQ==", + "bin": { + "bbox": "bin/bbox.js", + "to4326": "bin/to4326.js", + "to900913": "bin/to900913.js", + "xyz": "bin/xyz.js" } }, - "node_modules/@jest/fake-timers/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node_modules/@mapbox/tiletype": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@mapbox/tiletype/-/tiletype-0.3.1.tgz", + "integrity": "sha512-jIMABS+S9wpqmCulD1whea3YJXaLEPJq7f7Dae3TrB4cFImNXsTEvKt91DOdcJWpgsV1mVxorxUiqvcVVWKxTg==", + "bin": { + "tiletype": "bin/tiletype.js" } }, - "node_modules/@jest/fake-timers/node_modules/@sinclair/typebox": { - "version": "0.27.10", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", - "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", - "license": "MIT" + "node_modules/@mapbox/unitbezier": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@mapbox/unitbezier/-/unitbezier-0.0.1.tgz", + "integrity": "sha512-nMkuDXFv60aBr9soUG5q+GvZYL+2KZHVvsqFCzqnkGEf46U2fvmytHaEVc1/YZbiLn8X+eR3QzX1+dwDO1lxlw==", + "license": "BSD-2-Clause" }, - "node_modules/@jest/fake-timers/node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", - "license": "MIT", + "node_modules/@mapeo/crypto": { + "version": "1.0.0-alpha.10", + "resolved": "https://registry.npmjs.org/@mapeo/crypto/-/crypto-1.0.0-alpha.10.tgz", + "integrity": "sha512-TEK8HN1W0XZOOADIMxa4saXtqAZKyBDeVVn3RBCcPaCiOGHeYy43/0rMnBVTbXZCLsLVPnOXwv6vg+vUkasrWQ==", + "license": "ISC", "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "@types/b4a": "^1.6.0", + "b4a": "^1.6.4", + "base-x": "^3.0.9", + "base32.js": "^0.1.0", + "compact-encoding": "^2.5.1", + "compact-encoding-net": "^1.0.1", + "compact-encoding-struct": "^1.2.0", + "crc": "^3.8.0", + "lodash": "^4.17.21", + "sodium-universal": "^4.0.0", + "z32": "^1.0.0" } }, - "node_modules/@jest/fake-timers/node_modules/jest-mock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } + "node_modules/@mapeo/default-config": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@mapeo/default-config/-/default-config-6.0.0.tgz", + "integrity": "sha512-nAnTbcKQRntsExuQAsAHal+EOd2OkDWrsl0ewcic/yVo+WpJ25ZTryKSPMVyFyHLihElX1cUH2r8C3YkZMoClA==", + "dev": true, + "license": "CC-BY-NC-4.0" }, - "node_modules/@jest/fake-timers/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "node_modules/@mapeo/mock-data": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@mapeo/mock-data/-/mock-data-5.0.0.tgz", + "integrity": "sha512-N8+T+SOD8GlLIYmP26ntjtCDmbaXr/XB4PwywrVVD+kva3emnUWaFdA8PPSGp0hKzSkR2cN1jakItHdKRrNYww==", + "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "@faker-js/faker": "^9.7.0", + "dereference-json-schema": "^0.2.1", + "json-schema-faker": "^0.5.9" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "bin": { + "generate-mapeo-data": "bin/generate-mapeo-data.js", + "list-mapeo-schemas": "bin/list-mapeo-schemas.js" + }, + "peerDependencies": { + "@comapeo/schema": "^2.0.0" } }, - "node_modules/@jest/get-type": { - "version": "30.1.0", - "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz", - "integrity": "sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==", - "dev": true, + "node_modules/@mapeo/sqlite-indexer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@mapeo/sqlite-indexer/-/sqlite-indexer-1.0.2.tgz", + "integrity": "sha512-PvQx1SfatNT+PNECtQ3MOOTVVQfZpbFlOT3JOHJDw2I3yQarncFAsYq2d9ahD1RBzTAutiPOTsHHqYW3Y1EdKQ==", "license": "MIT", "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=18.17.1", + "npm": ">=9.6.7" + }, + "peerDependencies": { + "better-sqlite3": "*" } }, - "node_modules/@jest/globals": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", - "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", - "dev": true, - "license": "MIT", + "node_modules/@maplibre/maplibre-gl-style-spec": { + "version": "20.4.0", + "resolved": "https://registry.npmjs.org/@maplibre/maplibre-gl-style-spec/-/maplibre-gl-style-spec-20.4.0.tgz", + "integrity": "sha512-AzBy3095fTFPjDjmWpR2w6HVRAZJ6hQZUCwk5Plz6EyfnfuQW1odeW5i2Ai47Y6TBA2hQnC+azscjBSALpaWgw==", + "license": "ISC", "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/types": "^29.6.3", - "jest-mock": "^29.7.0" + "@mapbox/jsonlint-lines-primitives": "~2.0.2", + "@mapbox/unitbezier": "^0.0.1", + "json-stringify-pretty-compact": "^4.0.0", + "minimist": "^1.2.8", + "quickselect": "^2.0.0", + "rw": "^1.3.3", + "tinyqueue": "^3.0.0" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "bin": { + "gl-style-format": "dist/gl-style-format.mjs", + "gl-style-migrate": "dist/gl-style-migrate.mjs", + "gl-style-validate": "dist/gl-style-validate.mjs" } }, - "node_modules/@jest/globals/node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.11.tgz", + "integrity": "sha512-9DPkXtvHydrcOsopiYpUgPHpmj0HWZKMUnL2dZqpvC42lsratuBG06V5ipyno0fUek5VlFsNQ+AcFATSrJXgMA==", "license": "MIT", + "optional": true, "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.9.0" } }, - "node_modules/@jest/globals/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, + "node_modules/@node-rs/crc32": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@node-rs/crc32/-/crc32-1.10.6.tgz", + "integrity": "sha512-+llXfqt+UzgoDzT9of5vPQPGqTAVCohU74I9zIBkNo5TH6s2P31DFJOGsJQKN207f0GHnYv5pV3wh3BCY/un/A==", "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Brooooooklyn" + }, + "optionalDependencies": { + "@node-rs/crc32-android-arm-eabi": "1.10.6", + "@node-rs/crc32-android-arm64": "1.10.6", + "@node-rs/crc32-darwin-arm64": "1.10.6", + "@node-rs/crc32-darwin-x64": "1.10.6", + "@node-rs/crc32-freebsd-x64": "1.10.6", + "@node-rs/crc32-linux-arm-gnueabihf": "1.10.6", + "@node-rs/crc32-linux-arm64-gnu": "1.10.6", + "@node-rs/crc32-linux-arm64-musl": "1.10.6", + "@node-rs/crc32-linux-x64-gnu": "1.10.6", + "@node-rs/crc32-linux-x64-musl": "1.10.6", + "@node-rs/crc32-wasm32-wasi": "1.10.6", + "@node-rs/crc32-win32-arm64-msvc": "1.10.6", + "@node-rs/crc32-win32-ia32-msvc": "1.10.6", + "@node-rs/crc32-win32-x64-msvc": "1.10.6" } }, - "node_modules/@jest/globals/node_modules/@sinclair/typebox": { - "version": "0.27.10", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", - "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jest/globals/node_modules/jest-mock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", - "dev": true, + "node_modules/@node-rs/crc32-android-arm-eabi": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-android-arm-eabi/-/crc32-android-arm-eabi-1.10.6.tgz", + "integrity": "sha512-vZAMuJXm3TpWPOkkhxdrofWDv+Q+I2oO7ucLRbXyAPmXFNDhHtBxbO1rk9Qzz+M3eep8ieS4/+jCL1Q0zacNMQ==", + "cpu": [ + "arm" + ], "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 10" } }, - "node_modules/@jest/globals/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", - "dev": true, + "node_modules/@node-rs/crc32-android-arm64": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-android-arm64/-/crc32-android-arm64-1.10.6.tgz", + "integrity": "sha512-Vl/JbjCinCw/H9gEpZveWCMjxjcEChDcDBM8S4hKay5yyoRCUHJPuKr4sjVDBeOm+1nwU3oOm6Ca8dyblwp4/w==", + "cpu": [ + "arm64" + ], "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 10" } }, - "node_modules/@jest/pattern": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", - "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", - "dev": true, + "node_modules/@node-rs/crc32-darwin-arm64": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-darwin-arm64/-/crc32-darwin-arm64-1.10.6.tgz", + "integrity": "sha512-kARYANp5GnmsQiViA5Qu74weYQ3phOHSYQf0G+U5wB3NB5JmBHnZcOc46Ig21tTypWtdv7u63TaltJQE41noyg==", + "cpu": [ + "arm64" + ], "license": "MIT", - "dependencies": { - "@types/node": "*", - "jest-regex-util": "30.0.1" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 10" } }, - "node_modules/@jest/reporters": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", - "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", - "dev": true, + "node_modules/@node-rs/crc32-darwin-x64": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-darwin-x64/-/crc32-darwin-x64-1.10.6.tgz", + "integrity": "sha512-Q99bevJVMfLTISpkpKBlXgtPUItrvTWKFyiqoKH5IvscZmLV++NH4V13Pa17GTBmv9n18OwzgQY4/SRq6PQNVA==", + "cpu": [ + "x64" + ], "license": "MIT", - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^6.0.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "slash": "^3.0.0", - "string-length": "^4.0.1", - "strip-ansi": "^6.0.0", - "v8-to-istanbul": "^9.0.1" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "node": ">= 10" } }, - "node_modules/@jest/reporters/node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, + "node_modules/@node-rs/crc32-freebsd-x64": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-freebsd-x64/-/crc32-freebsd-x64-1.10.6.tgz", + "integrity": "sha512-66hpawbNjrgnS9EDMErta/lpaqOMrL6a6ee+nlI2viduVOmRZWm9Rg9XdGTK/+c4bQLdtC6jOd+Kp4EyGRYkAg==", + "cpu": [ + "x64" + ], "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 10" } }, - "node_modules/@jest/reporters/node_modules/@jest/transform": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", - "dev": true, + "node_modules/@node-rs/crc32-linux-arm-gnueabihf": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-arm-gnueabihf/-/crc32-linux-arm-gnueabihf-1.10.6.tgz", + "integrity": "sha512-E8Z0WChH7X6ankbVm8J/Yym19Cq3otx6l4NFPS6JW/cWdjv7iw+Sps2huSug+TBprjbcEA+s4TvEwfDI1KScjg==", + "cpu": [ + "arm" + ], "license": "MIT", - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 10" } }, - "node_modules/@jest/reporters/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, + "node_modules/@node-rs/crc32-linux-arm64-gnu": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-arm64-gnu/-/crc32-linux-arm64-gnu-1.10.6.tgz", + "integrity": "sha512-LmWcfDbqAvypX0bQjQVPmQGazh4dLiVklkgHxpV4P0TcQ1DT86H/SWpMBMs/ncF8DGuCQ05cNyMv1iddUDugoQ==", + "cpu": [ + "arm64" + ], "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 10" } }, - "node_modules/@jest/reporters/node_modules/@sinclair/typebox": { - "version": "0.27.10", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", - "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jest/reporters/node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, + "node_modules/@node-rs/crc32-linux-arm64-musl": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-arm64-musl/-/crc32-linux-arm64-musl-1.10.6.tgz", + "integrity": "sha512-k8ra/bmg0hwRrIEE8JL1p32WfaN9gDlUUpQRWsbxd1WhjqvXea7kKO6K4DwVxyxlPhBS9Gkb5Urq7Y4mXANzaw==", + "cpu": [ + "arm64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">= 10" } }, - "node_modules/@jest/reporters/node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, + "node_modules/@node-rs/crc32-linux-x64-gnu": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-x64-gnu/-/crc32-linux-x64-gnu-1.10.6.tgz", + "integrity": "sha512-IfjtqcuFK7JrSZ9mlAFhb83xgium30PguvRjIMI45C3FJwu18bnLk1oR619IYb/zetQT82MObgmqfKOtgemEKw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">= 10" } }, - "node_modules/@jest/reporters/node_modules/jest-haste-map": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", - "dev": true, + "node_modules/@node-rs/crc32-linux-x64-musl": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-x64-musl/-/crc32-linux-x64-musl-1.10.6.tgz", + "integrity": "sha512-LbFYsA5M9pNunOweSt6uhxenYQF94v3bHDAQRPTQ3rnjn+mK6IC7YTAYoBjvoJP8lVzcvk9hRj8wp4Jyh6Y80g==", + "cpu": [ + "x64" + ], "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" + "node": ">= 10" } }, - "node_modules/@jest/reporters/node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", - "dev": true, + "node_modules/@node-rs/crc32-wasm32-wasi": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-wasm32-wasi/-/crc32-wasm32-wasi-1.10.6.tgz", + "integrity": "sha512-KaejdLgHMPsRaxnM+OG9L9XdWL2TabNx80HLdsCOoX9BVhEkfh39OeahBo8lBmidylKbLGMQoGfIKDjq0YMStw==", + "cpu": [ + "wasm32" + ], "license": "MIT", + "optional": true, "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "@napi-rs/wasm-runtime": "^0.2.5" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=14.0.0" } }, - "node_modules/@jest/reporters/node_modules/jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", - "dev": true, + "node_modules/@node-rs/crc32-win32-arm64-msvc": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-win32-arm64-msvc/-/crc32-win32-arm64-msvc-1.10.6.tgz", + "integrity": "sha512-x50AXiSxn5Ccn+dCjLf1T7ZpdBiV1Sp5aC+H2ijhJO4alwznvXgWbopPRVhbp2nj0i+Gb6kkDUEyU+508KAdGQ==", + "cpu": [ + "arm64" + ], "license": "MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 10" } }, - "node_modules/@jest/reporters/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", - "dev": true, + "node_modules/@node-rs/crc32-win32-ia32-msvc": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-win32-ia32-msvc/-/crc32-win32-ia32-msvc-1.10.6.tgz", + "integrity": "sha512-DpDxQLaErJF9l36aghe1Mx+cOnYLKYo6qVPqPL9ukJ5rAGLtCdU0C+Zoi3gs9ySm8zmbFgazq/LvmsZYU42aBw==", + "cpu": [ + "ia32" + ], "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 10" } }, - "node_modules/@jest/reporters/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "node_modules/@node-rs/crc32-win32-x64-msvc": { + "version": "1.10.6", + "resolved": "https://registry.npmjs.org/@node-rs/crc32-win32-x64-msvc/-/crc32-win32-x64-msvc-1.10.6.tgz", + "integrity": "sha512-5B1vXosIIBw1m2Rcnw62IIfH7W9s9f7H7Ma0rRuhT8HR4Xh8QCgw6NJSI2S2MCngsGktYnAhyUvs81b7efTyQw==", + "cpu": [ + "x64" + ], + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" } }, - "node_modules/@jest/reporters/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/@jest/reporters/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.1" + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" }, "engines": { - "node": ">=8" + "node": ">= 8" } }, - "node_modules/@jest/reporters/node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, + "license": "MIT", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">= 8" } }, - "node_modules/@jest/schemas": { - "version": "30.0.5", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", - "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.34.0" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">= 8" } }, - "node_modules/@jest/schemas/node_modules/@sinclair/typebox": { - "version": "0.34.49", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.49.tgz", - "integrity": "sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jest/source-map": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", - "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", - "dev": true, - "license": "MIT", + "node_modules/@npmcli/agent": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.2.tgz", + "integrity": "sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==", + "license": "ISC", "dependencies": { - "@jridgewell/trace-mapping": "^0.3.18", - "callsites": "^3.0.0", - "graceful-fs": "^4.2.9" + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^10.0.1", + "socks-proxy-agent": "^8.0.3" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/@jest/test-result": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", - "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", - "dev": true, + "node_modules/@npmcli/agent/node_modules/agent-base": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", "license": "MIT", - "dependencies": { - "@jest/console": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 14" } }, - "node_modules/@jest/test-result/node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, + "node_modules/@npmcli/agent/node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.27.8" + "agent-base": "^7.1.2", + "debug": "4" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 14" } }, - "node_modules/@jest/test-result/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, - "license": "MIT", + "node_modules/@npmcli/agent/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" + }, + "node_modules/@npmcli/fs": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", + "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==", + "license": "ISC", "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" + "semver": "^7.3.5" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/@jest/test-result/node_modules/@sinclair/typebox": { - "version": "0.27.10", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", - "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", + "node_modules/@open-draft/until": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@open-draft/until/-/until-1.0.3.tgz", + "integrity": "sha512-Aq58f5HiWdyDlFffbbSjAlv596h/cOnt2DO1w3DOC7OJ5EHs0hd/nycJfiu9RJbT6Yk6F1knnRRXNSpxoIVZ9Q==", "dev": true, "license": "MIT" }, - "node_modules/@jest/test-sequencer": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", - "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "node_modules/@osm_borders/maritime_10000m": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@osm_borders/maritime_10000m/-/maritime_10000m-1.1.0.tgz", + "integrity": "sha512-0gbQoi3ITsqVGMXU5hm6s0TN8MHqA2xQSZ6GeIHZcCuf5f462iP1fMV4JZHNIretwqq9BN9F+4r3hjIHsj7RJw==", + "license": "ODbL" + }, + "node_modules/@percy/appium-app": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@percy/appium-app/-/appium-app-2.1.0.tgz", + "integrity": "sha512-XVigKgAcXEerIch3Ufngac07gOH4KnfTDp/xyPujDyjvAZSWfIyIRnojmfbLEs2HnZEnmFFoEMX6ZB4Tk0SO/Q==", "dev": true, "license": "MIT", "dependencies": { - "@jest/test-result": "^29.7.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "slash": "^3.0.0" + "@percy/sdk-utils": "^1.30.9", + "tmp": "^0.2.3" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=14" } }, - "node_modules/@jest/test-sequencer/node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "node_modules/@percy/sdk-utils": { + "version": "1.30.10", + "resolved": "https://registry.npmjs.org/@percy/sdk-utils/-/sdk-utils-1.30.10.tgz", + "integrity": "sha512-EOFm6XDbXIpo1YjF+JWxNCW5TB0ZaqjQfHLtOCmffhHi2T0MCXSAHdNxeTUyADyySzWjD4bKba/PbZwwTVE8Zw==", "dev": true, "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=14" } }, - "node_modules/@jest/test-sequencer/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "node_modules/@percy/selenium-webdriver": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@percy/selenium-webdriver/-/selenium-webdriver-2.2.2.tgz", + "integrity": "sha512-ksgPO9q/twhZTSVUrw8a96iiMMi2Y+SpGtwIEyOuZtNeEqEeJH3Mta1EvEUSauTH7HjqkP3Qemh/HaWrLUDK5w==", "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" + "@percy/sdk-utils": "^1.30.3", + "node-request-interceptor": "^0.6.3" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=14" } }, - "node_modules/@jest/test-sequencer/node_modules/@sinclair/typebox": { - "version": "0.27.10", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", - "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jest/test-sequencer/node_modules/jest-haste-map": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", - "dev": true, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - }, + "optional": true, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" + "node": ">=14" } }, - "node_modules/@jest/test-sequencer/node_modules/jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", - "dev": true, + "node_modules/@placemarkio/check-geojson": { + "version": "0.1.14", + "resolved": "https://registry.npmjs.org/@placemarkio/check-geojson/-/check-geojson-0.1.14.tgz", + "integrity": "sha512-PZvNKzt6STytUw21TUkqU+TG6dbwTWb1ACosvInBYTBm37zsr8C74J6crBTQ3BWkyd6YeitYd4HibJzBEyk6Aw==", "license": "MIT", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" } }, - "node_modules/@jest/test-sequencer/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", - "dev": true, + "node_modules/@posthog/core": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/@posthog/core/-/core-1.22.0.tgz", + "integrity": "sha512-WkmOnq95aAOu6yk6r5LWr5cfXsQdpVbWDCwOxQwxSne8YV6GuZET1ziO5toSQXgrgbdcjrSz2/GopAfiL6iiAA==", "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "cross-spawn": "^7.0.6" } }, - "node_modules/@jest/transform": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz", - "integrity": "sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==", + "node_modules/@promptbook/utils": { + "version": "0.69.5", + "resolved": "https://registry.npmjs.org/@promptbook/utils/-/utils-0.69.5.tgz", + "integrity": "sha512-xm5Ti/Hp3o4xHrsK9Yy3MS6KbDxYbq485hDsFvxqaNA7equHLPdo8H8faTitTeb14QCDfLW4iwCxdVYu5sn6YQ==", "dev": true, - "license": "MIT", + "funding": [ + { + "type": "individual", + "url": "https://buymeacoffee.com/hejny" + }, + { + "type": "github", + "url": "https://github.com/webgptorg/promptbook/blob/main/README.md#%EF%B8%8F-contributing" + } + ], + "license": "CC-BY-4.0", "dependencies": { - "@babel/core": "^7.27.4", - "@jest/types": "30.2.0", - "@jridgewell/trace-mapping": "^0.3.25", - "babel-plugin-istanbul": "^7.0.1", - "chalk": "^4.1.2", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.11", - "jest-haste-map": "30.2.0", - "jest-regex-util": "30.0.1", - "jest-util": "30.2.0", - "micromatch": "^4.0.8", - "pirates": "^4.0.7", - "slash": "^3.0.0", - "write-file-atomic": "^5.0.1" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "spacetrim": "0.11.59" } }, - "node_modules/@jest/types": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", - "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/pattern": "30.0.1", - "@jest/schemas": "30.0.5", - "@types/istanbul-lib-coverage": "^2.0.6", - "@types/istanbul-reports": "^3.0.4", - "@types/node": "*", - "@types/yargs": "^17.0.33", - "chalk": "^4.1.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", + "license": "BSD-3-Clause" }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" - } + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", + "license": "BSD-3-Clause" }, - "node_modules/@jridgewell/remapping": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", - "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", - "license": "MIT", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - } + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", + "license": "BSD-3-Clause" }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", + "license": "BSD-3-Clause" }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.11", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.11.tgz", - "integrity": "sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==", - "license": "MIT", + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", + "license": "BSD-3-Clause", "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "license": "MIT" + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", + "license": "BSD-3-Clause" }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", - "license": "MIT", + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", + "license": "BSD-3-Clause" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", + "license": "BSD-3-Clause" + }, + "node_modules/@puppeteer/browsers": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.10.1.tgz", + "integrity": "sha512-NgghEvl9fTZdXvxBHMgTlEVrjhDsbOfXgXzoarsV6o/arp2SvOOzZfFlKpxwLHJo7vVULq9Q/Dg76lUddLxgog==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" + "debug": "^4.4.0", + "extract-zip": "^2.0.1", + "progress": "^2.0.3", + "proxy-agent": "^6.5.0", + "semver": "^7.7.1", + "tar-fs": "^3.0.8", + "yargs": "^17.7.2" + }, + "bin": { + "browsers": "lib/cjs/main-cli.js" + }, + "engines": { + "node": ">=18" } }, - "node_modules/@js-sdsl/ordered-map": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz", - "integrity": "sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==", - "dev": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" + "node_modules/@react-native-community/hooks": { + "version": "100.1.0", + "resolved": "https://registry.npmjs.org/@react-native-community/hooks/-/hooks-100.1.0.tgz", + "integrity": "sha512-aXESGr6WcnwyeIl+SiCLNFpbApzTmupyYzm2OkGjMuwHr42+a3G65xxTxN/xHuNdTVWO0dXbOwyLgEkQ0i/qZg==", + "license": "ISC", + "peerDependencies": { + "react": ">=18.0.0", + "react-native": ">=0.70" } }, - "node_modules/@jsep-plugin/assignment": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@jsep-plugin/assignment/-/assignment-1.3.0.tgz", - "integrity": "sha512-VVgV+CXrhbMI3aSusQyclHkenWSAm95WaiKrMxRFam3JSUiIaQjoMIw2sEs/OX4XifnqeQUN4DYbJjlA8EfktQ==", - "dev": true, + "node_modules/@react-native-community/netinfo": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/@react-native-community/netinfo/-/netinfo-12.0.1.tgz", + "integrity": "sha512-P/3caXIvfYSJG8AWJVefukg+ZGRPs+M4Lp3pNJtgcTYoJxCjWrKQGNnCkj/Cz//zWa/avGed0i/wzm0T8vV2IQ==", "license": "MIT", - "engines": { - "node": ">= 10.16.0" - }, "peerDependencies": { - "jsep": "^0.4.0||^1.0.0" + "react": "*", + "react-native": ">=0.59" } }, - "node_modules/@jsep-plugin/regex": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@jsep-plugin/regex/-/regex-1.0.4.tgz", - "integrity": "sha512-q7qL4Mgjs1vByCaTnDFcBnV9HS7GVPJX5vyVoCgZHNSC9rjwIlmbXG5sUuorR5ndfHAIlJ8pVStxvjXHbNvtUg==", - "dev": true, + "node_modules/@react-native-documents/picker": { + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/@react-native-documents/picker/-/picker-12.0.1.tgz", + "integrity": "sha512-vpJKb4t/5bnxe9+gQl+plJfKrrIsmYwANGhNH2B9E1dS1+6FDBzg4Dwmcq4ueaGfkRKEPJ606mJttVEH1ZKZaA==", "license": "MIT", - "engines": { - "node": ">= 10.16.0" + "funding": { + "url": "https://github.com/react-native-documents/document-picker?sponsor=1" }, "peerDependencies": { - "jsep": "^0.4.0||^1.0.0" + "react": "*", + "react-native": ">=0.79.0" } }, - "node_modules/@lodev09/react-native-exify": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@lodev09/react-native-exify/-/react-native-exify-1.0.3.tgz", - "integrity": "sha512-AlpkAMLCRENOwLnQLOU/HsI4rMakZVH0+gCT1Ja0H5WBd0jJAwLOQyvTCErzTWFte1BSSe2dTByTEOf2eTnmyQ==", + "node_modules/@react-native-picker/picker": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/@react-native-picker/picker/-/picker-2.11.4.tgz", + "integrity": "sha512-Kf8h1AMnBo54b1fdiVylP2P/iFcZqzpMYcglC28EEFB1DEnOjsNr6Ucqc+3R9e91vHxEDnhZFbYDmAe79P2gjA==", "license": "MIT", "workspaces": [ "example" @@ -7130,904 +6540,542 @@ "react-native": "*" } }, - "node_modules/@lukeed/ms": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@lukeed/ms/-/ms-2.0.2.tgz", - "integrity": "sha512-9I2Zn6+NJLfaGoz9jN3lpwDgAYvfGeNYdbAIjJOqzs4Tpc+VU3Jqq4IofSUBKajiDS8k9fZIg18/z13mpk1bsA==", + "node_modules/@react-native-vector-icons/ant-design": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/@react-native-vector-icons/ant-design/-/ant-design-12.4.0.tgz", + "integrity": "sha512-MFuJu1TTKU+9TlGA9ZgkRCVkUG2qlkgKc2eldS+lYugWDWTmmYFX/Wuaw7iFROU030S4gBi2Yj6rZeM5tLOEMQ==", "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@mapbox/jsonlint-lines-primitives": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@mapbox/jsonlint-lines-primitives/-/jsonlint-lines-primitives-2.0.2.tgz", - "integrity": "sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@mapbox/sphericalmercator": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@mapbox/sphericalmercator/-/sphericalmercator-1.2.0.tgz", - "integrity": "sha512-ZTOuuwGuMOJN+HEmG/68bSEw15HHaMWmQ5gdTsWdWsjDe56K1kGvLOK6bOSC8gWgIvEO0w6un/2Gvv1q5hJSkQ==", - "bin": { - "bbox": "bin/bbox.js", - "to4326": "bin/to4326.js", - "to900913": "bin/to900913.js", - "xyz": "bin/xyz.js" - } - }, - "node_modules/@mapbox/tiletype": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@mapbox/tiletype/-/tiletype-0.3.1.tgz", - "integrity": "sha512-jIMABS+S9wpqmCulD1whea3YJXaLEPJq7f7Dae3TrB4cFImNXsTEvKt91DOdcJWpgsV1mVxorxUiqvcVVWKxTg==", - "bin": { - "tiletype": "bin/tiletype.js" - } - }, - "node_modules/@mapbox/unitbezier": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/@mapbox/unitbezier/-/unitbezier-0.0.1.tgz", - "integrity": "sha512-nMkuDXFv60aBr9soUG5q+GvZYL+2KZHVvsqFCzqnkGEf46U2fvmytHaEVc1/YZbiLn8X+eR3QzX1+dwDO1lxlw==", - "license": "BSD-2-Clause" - }, - "node_modules/@mapeo/crypto": { - "version": "1.0.0-alpha.10", - "resolved": "https://registry.npmjs.org/@mapeo/crypto/-/crypto-1.0.0-alpha.10.tgz", - "integrity": "sha512-TEK8HN1W0XZOOADIMxa4saXtqAZKyBDeVVn3RBCcPaCiOGHeYy43/0rMnBVTbXZCLsLVPnOXwv6vg+vUkasrWQ==", - "license": "ISC", "dependencies": { - "@types/b4a": "^1.6.0", - "b4a": "^1.6.4", - "base-x": "^3.0.9", - "base32.js": "^0.1.0", - "compact-encoding": "^2.5.1", - "compact-encoding-net": "^1.0.1", - "compact-encoding-struct": "^1.2.0", - "crc": "^3.8.0", - "lodash": "^4.17.21", - "sodium-universal": "^4.0.0", - "z32": "^1.0.0" + "@react-native-vector-icons/common": "^12.4.0" + }, + "engines": { + "node": ">= 18.0.0" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" } }, - "node_modules/@mapeo/default-config": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@mapeo/default-config/-/default-config-6.0.0.tgz", - "integrity": "sha512-nAnTbcKQRntsExuQAsAHal+EOd2OkDWrsl0ewcic/yVo+WpJ25ZTryKSPMVyFyHLihElX1cUH2r8C3YkZMoClA==", - "dev": true, - "license": "CC-BY-NC-4.0" - }, - "node_modules/@mapeo/mock-data": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@mapeo/mock-data/-/mock-data-5.0.0.tgz", - "integrity": "sha512-N8+T+SOD8GlLIYmP26ntjtCDmbaXr/XB4PwywrVVD+kva3emnUWaFdA8PPSGp0hKzSkR2cN1jakItHdKRrNYww==", - "dev": true, + "node_modules/@react-native-vector-icons/common": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/@react-native-vector-icons/common/-/common-12.4.0.tgz", + "integrity": "sha512-t9W0q+AW7WH1Oj5aEg7wGNXDLZJb5sIVkAWo5qtad3PcbBADqoCdikRK/ToLK+xlB0TxjcuL0T74ogudMkYGeA==", "license": "MIT", "dependencies": { - "@faker-js/faker": "^9.7.0", - "dereference-json-schema": "^0.2.1", - "json-schema-faker": "^0.5.9" + "find-up": "^7.0.0", + "picocolors": "^1.1.1", + "plist": "^3.1.0" }, "bin": { - "generate-mapeo-data": "bin/generate-mapeo-data.js", - "list-mapeo-schemas": "bin/list-mapeo-schemas.js" + "rnvi-update-plist": "lib/commonjs/scripts/updatePlist.js" + }, + "engines": { + "node": ">=20.19.0 <21.0.0 || >=22.0.0" }, "peerDependencies": { - "@comapeo/schema": "^2.0.0" + "@react-native-vector-icons/get-image": "^12.3.0", + "react": "*", + "react-native": "*" + }, + "peerDependenciesMeta": { + "@react-native-vector-icons/get-image": { + "optional": true + } } }, - "node_modules/@mapeo/sqlite-indexer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@mapeo/sqlite-indexer/-/sqlite-indexer-1.0.2.tgz", - "integrity": "sha512-PvQx1SfatNT+PNECtQ3MOOTVVQfZpbFlOT3JOHJDw2I3yQarncFAsYq2d9ahD1RBzTAutiPOTsHHqYW3Y1EdKQ==", + "node_modules/@react-native-vector-icons/common/node_modules/find-up": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-7.0.0.tgz", + "integrity": "sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==", "license": "MIT", + "dependencies": { + "locate-path": "^7.2.0", + "path-exists": "^5.0.0", + "unicorn-magic": "^0.1.0" + }, "engines": { - "node": ">=18.17.1", - "npm": ">=9.6.7" + "node": ">=18" }, - "peerDependencies": { - "better-sqlite3": "*" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@maplibre/maplibre-gl-style-spec": { - "version": "20.4.0", - "resolved": "https://registry.npmjs.org/@maplibre/maplibre-gl-style-spec/-/maplibre-gl-style-spec-20.4.0.tgz", - "integrity": "sha512-AzBy3095fTFPjDjmWpR2w6HVRAZJ6hQZUCwk5Plz6EyfnfuQW1odeW5i2Ai47Y6TBA2hQnC+azscjBSALpaWgw==", - "license": "ISC", + "node_modules/@react-native-vector-icons/common/node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "license": "MIT", "dependencies": { - "@mapbox/jsonlint-lines-primitives": "~2.0.2", - "@mapbox/unitbezier": "^0.0.1", - "json-stringify-pretty-compact": "^4.0.0", - "minimist": "^1.2.8", - "quickselect": "^2.0.0", - "rw": "^1.3.3", - "tinyqueue": "^3.0.0" + "p-locate": "^6.0.0" }, - "bin": { - "gl-style-format": "dist/gl-style-format.mjs", - "gl-style-migrate": "dist/gl-style-migrate.mjs", - "gl-style-validate": "dist/gl-style-validate.mjs" + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", - "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", + "node_modules/@react-native-vector-icons/common/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", "license": "MIT", - "optional": true, "dependencies": { - "@emnapi/core": "^1.4.3", - "@emnapi/runtime": "^1.4.3", - "@tybys/wasm-util": "^0.10.0" + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@node-rs/crc32": { - "version": "1.10.6", - "resolved": "https://registry.npmjs.org/@node-rs/crc32/-/crc32-1.10.6.tgz", - "integrity": "sha512-+llXfqt+UzgoDzT9of5vPQPGqTAVCohU74I9zIBkNo5TH6s2P31DFJOGsJQKN207f0GHnYv5pV3wh3BCY/un/A==", + "node_modules/@react-native-vector-icons/common/node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", "license": "MIT", + "dependencies": { + "p-limit": "^4.0.0" + }, "engines": { - "node": ">= 10" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" - }, - "optionalDependencies": { - "@node-rs/crc32-android-arm-eabi": "1.10.6", - "@node-rs/crc32-android-arm64": "1.10.6", - "@node-rs/crc32-darwin-arm64": "1.10.6", - "@node-rs/crc32-darwin-x64": "1.10.6", - "@node-rs/crc32-freebsd-x64": "1.10.6", - "@node-rs/crc32-linux-arm-gnueabihf": "1.10.6", - "@node-rs/crc32-linux-arm64-gnu": "1.10.6", - "@node-rs/crc32-linux-arm64-musl": "1.10.6", - "@node-rs/crc32-linux-x64-gnu": "1.10.6", - "@node-rs/crc32-linux-x64-musl": "1.10.6", - "@node-rs/crc32-wasm32-wasi": "1.10.6", - "@node-rs/crc32-win32-arm64-msvc": "1.10.6", - "@node-rs/crc32-win32-ia32-msvc": "1.10.6", - "@node-rs/crc32-win32-x64-msvc": "1.10.6" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@node-rs/crc32-android-arm-eabi": { - "version": "1.10.6", - "resolved": "https://registry.npmjs.org/@node-rs/crc32-android-arm-eabi/-/crc32-android-arm-eabi-1.10.6.tgz", - "integrity": "sha512-vZAMuJXm3TpWPOkkhxdrofWDv+Q+I2oO7ucLRbXyAPmXFNDhHtBxbO1rk9Qzz+M3eep8ieS4/+jCL1Q0zacNMQ==", - "cpu": [ - "arm" - ], + "node_modules/@react-native-vector-icons/common/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", "license": "MIT", - "optional": true, - "os": [ - "android" - ], "engines": { - "node": ">= 10" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "node_modules/@node-rs/crc32-android-arm64": { - "version": "1.10.6", - "resolved": "https://registry.npmjs.org/@node-rs/crc32-android-arm64/-/crc32-android-arm64-1.10.6.tgz", - "integrity": "sha512-Vl/JbjCinCw/H9gEpZveWCMjxjcEChDcDBM8S4hKay5yyoRCUHJPuKr4sjVDBeOm+1nwU3oOm6Ca8dyblwp4/w==", - "cpu": [ - "arm64" - ], + "node_modules/@react-native-vector-icons/common/node_modules/unicorn-magic": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", + "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", "license": "MIT", - "optional": true, - "os": [ - "android" - ], "engines": { - "node": ">= 10" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@node-rs/crc32-darwin-arm64": { - "version": "1.10.6", - "resolved": "https://registry.npmjs.org/@node-rs/crc32-darwin-arm64/-/crc32-darwin-arm64-1.10.6.tgz", - "integrity": "sha512-kARYANp5GnmsQiViA5Qu74weYQ3phOHSYQf0G+U5wB3NB5JmBHnZcOc46Ig21tTypWtdv7u63TaltJQE41noyg==", - "cpu": [ - "arm64" - ], + "node_modules/@react-native-vector-icons/common/node_modules/yocto-queue": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz", + "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==", "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], "engines": { - "node": ">= 10" + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@node-rs/crc32-darwin-x64": { - "version": "1.10.6", - "resolved": "https://registry.npmjs.org/@node-rs/crc32-darwin-x64/-/crc32-darwin-x64-1.10.6.tgz", - "integrity": "sha512-Q99bevJVMfLTISpkpKBlXgtPUItrvTWKFyiqoKH5IvscZmLV++NH4V13Pa17GTBmv9n18OwzgQY4/SRq6PQNVA==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@node-rs/crc32-freebsd-x64": { - "version": "1.10.6", - "resolved": "https://registry.npmjs.org/@node-rs/crc32-freebsd-x64/-/crc32-freebsd-x64-1.10.6.tgz", - "integrity": "sha512-66hpawbNjrgnS9EDMErta/lpaqOMrL6a6ee+nlI2viduVOmRZWm9Rg9XdGTK/+c4bQLdtC6jOd+Kp4EyGRYkAg==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@node-rs/crc32-linux-arm-gnueabihf": { - "version": "1.10.6", - "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-arm-gnueabihf/-/crc32-linux-arm-gnueabihf-1.10.6.tgz", - "integrity": "sha512-E8Z0WChH7X6ankbVm8J/Yym19Cq3otx6l4NFPS6JW/cWdjv7iw+Sps2huSug+TBprjbcEA+s4TvEwfDI1KScjg==", - "cpu": [ - "arm" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@node-rs/crc32-linux-arm64-gnu": { - "version": "1.10.6", - "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-arm64-gnu/-/crc32-linux-arm64-gnu-1.10.6.tgz", - "integrity": "sha512-LmWcfDbqAvypX0bQjQVPmQGazh4dLiVklkgHxpV4P0TcQ1DT86H/SWpMBMs/ncF8DGuCQ05cNyMv1iddUDugoQ==", - "cpu": [ - "arm64" - ], - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" - } - }, - "node_modules/@node-rs/crc32-linux-arm64-musl": { - "version": "1.10.6", - "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-arm64-musl/-/crc32-linux-arm64-musl-1.10.6.tgz", - "integrity": "sha512-k8ra/bmg0hwRrIEE8JL1p32WfaN9gDlUUpQRWsbxd1WhjqvXea7kKO6K4DwVxyxlPhBS9Gkb5Urq7Y4mXANzaw==", - "cpu": [ - "arm64" - ], + "node_modules/@react-native-vector-icons/fontawesome": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/@react-native-vector-icons/fontawesome/-/fontawesome-12.4.0.tgz", + "integrity": "sha512-hLbVc21GT/1nMgI7GDNLrikRb62o8HPnpccrOsrGaJrHSEiKednz6E8AInsGCcydYWI8cB7dyACt5N0SdzxHQA==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "@react-native-vector-icons/common": "^12.4.0" + }, "engines": { - "node": ">= 10" + "node": ">= 18.0.0" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" } }, - "node_modules/@node-rs/crc32-linux-x64-gnu": { - "version": "1.10.6", - "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-x64-gnu/-/crc32-linux-x64-gnu-1.10.6.tgz", - "integrity": "sha512-IfjtqcuFK7JrSZ9mlAFhb83xgium30PguvRjIMI45C3FJwu18bnLk1oR619IYb/zetQT82MObgmqfKOtgemEKw==", - "cpu": [ - "x64" - ], + "node_modules/@react-native-vector-icons/fontisto": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/@react-native-vector-icons/fontisto/-/fontisto-12.4.0.tgz", + "integrity": "sha512-0XFOXDTV03Lvz7d0LmzNtvt7BgAupmUcv4HzVdtSccQ9Ak4lmLeBnO6kbP1v4iqcrsATR1xPrhQxTWWIJ90oFQ==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "@react-native-vector-icons/common": "^12.4.0" + }, "engines": { - "node": ">= 10" + "node": ">= 18.0.0" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" } }, - "node_modules/@node-rs/crc32-linux-x64-musl": { - "version": "1.10.6", - "resolved": "https://registry.npmjs.org/@node-rs/crc32-linux-x64-musl/-/crc32-linux-x64-musl-1.10.6.tgz", - "integrity": "sha512-LbFYsA5M9pNunOweSt6uhxenYQF94v3bHDAQRPTQ3rnjn+mK6IC7YTAYoBjvoJP8lVzcvk9hRj8wp4Jyh6Y80g==", - "cpu": [ - "x64" - ], + "node_modules/@react-native-vector-icons/ionicons": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@react-native-vector-icons/ionicons/-/ionicons-12.3.0.tgz", + "integrity": "sha512-H/rlYzUEm0hhwwca2k6VMNjy0rLcjan6iwyaYDXMhsJQl7O4+Qkm7uVd/KEreS5gXfGuntUlcSa9GSn+dYqnjA==", "license": "MIT", - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "@react-native-vector-icons/common": "^12.3.0" + }, "engines": { - "node": ">= 10" + "node": ">= 18.0.0" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" } }, - "node_modules/@node-rs/crc32-wasm32-wasi": { - "version": "1.10.6", - "resolved": "https://registry.npmjs.org/@node-rs/crc32-wasm32-wasi/-/crc32-wasm32-wasi-1.10.6.tgz", - "integrity": "sha512-KaejdLgHMPsRaxnM+OG9L9XdWL2TabNx80HLdsCOoX9BVhEkfh39OeahBo8lBmidylKbLGMQoGfIKDjq0YMStw==", - "cpu": [ - "wasm32" - ], + "node_modules/@react-native-vector-icons/material-design-icons": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/@react-native-vector-icons/material-design-icons/-/material-design-icons-12.4.0.tgz", + "integrity": "sha512-4ewAiHdOCujqprUJYFnBcUJduNddAc+w3Plnl1NhJksAyOaHzCNBg01JgVtkysxPho6++OOMge3FhwyBT8Wtcg==", "license": "MIT", - "optional": true, "dependencies": { - "@napi-rs/wasm-runtime": "^0.2.5" + "@react-native-vector-icons/common": "^12.4.0" }, "engines": { - "node": ">=14.0.0" + "node": ">= 18.0.0" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" } }, - "node_modules/@node-rs/crc32-win32-arm64-msvc": { - "version": "1.10.6", - "resolved": "https://registry.npmjs.org/@node-rs/crc32-win32-arm64-msvc/-/crc32-win32-arm64-msvc-1.10.6.tgz", - "integrity": "sha512-x50AXiSxn5Ccn+dCjLf1T7ZpdBiV1Sp5aC+H2ijhJO4alwznvXgWbopPRVhbp2nj0i+Gb6kkDUEyU+508KAdGQ==", - "cpu": [ - "arm64" - ], + "node_modules/@react-native-vector-icons/material-icons": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/@react-native-vector-icons/material-icons/-/material-icons-12.4.0.tgz", + "integrity": "sha512-R0C2BBoZZ5sjZJYLbFx1vfyYwfbOcBHRYzRHDKUlsCdplc34HLa0JyHYGMGx3q5xHAJB6Dl4N2cmZUVALuJ60w==", "license": "MIT", - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "@react-native-vector-icons/common": "^12.4.0" + }, "engines": { - "node": ">= 10" + "node": ">= 18.0.0" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" } }, - "node_modules/@node-rs/crc32-win32-ia32-msvc": { - "version": "1.10.6", - "resolved": "https://registry.npmjs.org/@node-rs/crc32-win32-ia32-msvc/-/crc32-win32-ia32-msvc-1.10.6.tgz", - "integrity": "sha512-DpDxQLaErJF9l36aghe1Mx+cOnYLKYo6qVPqPL9ukJ5rAGLtCdU0C+Zoi3gs9ySm8zmbFgazq/LvmsZYU42aBw==", - "cpu": [ - "ia32" - ], + "node_modules/@react-native-vector-icons/octicons": { + "version": "20.4.0", + "resolved": "https://registry.npmjs.org/@react-native-vector-icons/octicons/-/octicons-20.4.0.tgz", + "integrity": "sha512-4r6LyMbeEhxDTtC0/DKQLRIy7Tf0JzvCoTZjEUgeWnRTA/UKfyjpxdYnr/x/SWXKJTFl+9nZAO7Hx2o5gEUShw==", "license": "MIT", - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "@react-native-vector-icons/common": "^12.4.0" + }, "engines": { - "node": ">= 10" + "node": ">= 18.0.0" + }, + "peerDependencies": { + "react": "*", + "react-native": "*" } }, - "node_modules/@node-rs/crc32-win32-x64-msvc": { - "version": "1.10.6", - "resolved": "https://registry.npmjs.org/@node-rs/crc32-win32-x64-msvc/-/crc32-win32-x64-msvc-1.10.6.tgz", - "integrity": "sha512-5B1vXosIIBw1m2Rcnw62IIfH7W9s9f7H7Ma0rRuhT8HR4Xh8QCgw6NJSI2S2MCngsGktYnAhyUvs81b7efTyQw==", - "cpu": [ - "x64" - ], + "node_modules/@react-native/assets-registry": { + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.81.5.tgz", + "integrity": "sha512-705B6x/5Kxm1RKRvSv0ADYWm5JOnoiQ1ufW7h8uu2E6G9Of/eE6hP/Ivw3U5jI16ERqZxiKQwk34VJbB0niX9w==", "license": "MIT", - "optional": true, - "os": [ - "win32" - ], "engines": { - "node": ">= 10" + "node": ">= 20.19.4" } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "node_modules/@react-native/babel-plugin-codegen": { + "version": "0.76.9", + "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.76.9.tgz", + "integrity": "sha512-vxL/vtDEIYHfWKm5oTaEmwcnNGsua/i9OjIxBDBFiJDu5i5RU3bpmDiXQm/bJxrJNPRp5lW0I0kpGihVhnMAIQ==", "dev": true, "license": "MIT", "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "@react-native/codegen": "0.76.9" }, "engines": { - "node": ">= 8" + "node": ">=18" } }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "node_modules/@react-native/babel-preset": { + "version": "0.76.9", + "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.76.9.tgz", + "integrity": "sha512-TbSeCplCM6WhL3hR2MjC/E1a9cRnMLz7i767T7mP90oWkklEjyPxWl+0GGoVGnJ8FC/jLUupg/HvREKjjif6lw==", "dev": true, "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "@babel/plugin-proposal-export-default-from": "^7.24.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-default-from": "^7.24.7", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-transform-arrow-functions": "^7.24.7", + "@babel/plugin-transform-async-generator-functions": "^7.25.4", + "@babel/plugin-transform-async-to-generator": "^7.24.7", + "@babel/plugin-transform-block-scoping": "^7.25.0", + "@babel/plugin-transform-class-properties": "^7.25.4", + "@babel/plugin-transform-classes": "^7.25.4", + "@babel/plugin-transform-computed-properties": "^7.24.7", + "@babel/plugin-transform-destructuring": "^7.24.8", + "@babel/plugin-transform-flow-strip-types": "^7.25.2", + "@babel/plugin-transform-for-of": "^7.24.7", + "@babel/plugin-transform-function-name": "^7.25.1", + "@babel/plugin-transform-literals": "^7.25.2", + "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", + "@babel/plugin-transform-modules-commonjs": "^7.24.8", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", + "@babel/plugin-transform-numeric-separator": "^7.24.7", + "@babel/plugin-transform-object-rest-spread": "^7.24.7", + "@babel/plugin-transform-optional-catch-binding": "^7.24.7", + "@babel/plugin-transform-optional-chaining": "^7.24.8", + "@babel/plugin-transform-parameters": "^7.24.7", + "@babel/plugin-transform-private-methods": "^7.24.7", + "@babel/plugin-transform-private-property-in-object": "^7.24.7", + "@babel/plugin-transform-react-display-name": "^7.24.7", + "@babel/plugin-transform-react-jsx": "^7.25.2", + "@babel/plugin-transform-react-jsx-self": "^7.24.7", + "@babel/plugin-transform-react-jsx-source": "^7.24.7", + "@babel/plugin-transform-regenerator": "^7.24.7", + "@babel/plugin-transform-runtime": "^7.24.7", + "@babel/plugin-transform-shorthand-properties": "^7.24.7", + "@babel/plugin-transform-spread": "^7.24.7", + "@babel/plugin-transform-sticky-regex": "^7.24.7", + "@babel/plugin-transform-typescript": "^7.25.2", + "@babel/plugin-transform-unicode-regex": "^7.24.7", + "@babel/template": "^7.25.0", + "@react-native/babel-plugin-codegen": "0.76.9", + "babel-plugin-syntax-hermes-parser": "^0.25.1", + "babel-plugin-transform-flow-enums": "^0.0.2", + "react-refresh": "^0.14.0" + }, "engines": { - "node": ">= 8" + "node": ">=18" + }, + "peerDependencies": { + "@babel/core": "*" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "node_modules/@react-native/codegen": { + "version": "0.76.9", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.76.9.tgz", + "integrity": "sha512-AzlCHMTKrAVC2709V4ZGtBXmGVtWTpWm3Ruv5vXcd3/anH4mGucfJ4rjbWKdaYQJMpXa3ytGomQrsIsT/s8kgA==", "dev": true, "license": "MIT", "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "@babel/parser": "^7.25.3", + "glob": "^7.1.1", + "hermes-parser": "0.23.1", + "invariant": "^2.2.4", + "jscodeshift": "^0.14.0", + "mkdirp": "^0.5.1", + "nullthrows": "^1.1.1", + "yargs": "^17.6.2" }, "engines": { - "node": ">= 8" + "node": ">=18" + }, + "peerDependencies": { + "@babel/preset-env": "^7.1.6" } }, - "node_modules/@npmcli/agent": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.2.tgz", - "integrity": "sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==", + "node_modules/@react-native/codegen/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, "license": "ISC", "dependencies": { - "agent-base": "^7.1.0", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.1", - "lru-cache": "^10.0.1", - "socks-proxy-agent": "^8.0.3" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": "^16.14.0 || >=18.0.0" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@npmcli/agent/node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "node_modules/@react-native/community-cli-plugin": { + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.81.5.tgz", + "integrity": "sha512-yWRlmEOtcyvSZ4+OvqPabt+NS36vg0K/WADTQLhrYrm9qdZSuXmq8PmdJWz/68wAqKQ+4KTILiq2kjRQwnyhQw==", "license": "MIT", + "dependencies": { + "@react-native/dev-middleware": "0.81.5", + "debug": "^4.4.0", + "invariant": "^2.2.4", + "metro": "^0.83.1", + "metro-config": "^0.83.1", + "metro-core": "^0.83.1", + "semver": "^7.1.3" + }, "engines": { - "node": ">= 14" + "node": ">= 20.19.4" + }, + "peerDependencies": { + "@react-native-community/cli": "*", + "@react-native/metro-config": "*" + }, + "peerDependenciesMeta": { + "@react-native-community/cli": { + "optional": true + }, + "@react-native/metro-config": { + "optional": true + } } }, - "node_modules/@npmcli/agent/node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "node_modules/@react-native/community-cli-plugin/node_modules/metro-config": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.83.3.tgz", + "integrity": "sha512-mTel7ipT0yNjKILIan04bkJkuCzUUkm2SeEaTads8VfEecCh+ltXchdq6DovXJqzQAXuR2P9cxZB47Lg4klriA==", "license": "MIT", "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" + "connect": "^3.6.5", + "flow-enums-runtime": "^0.0.6", + "jest-validate": "^29.7.0", + "metro": "0.83.3", + "metro-cache": "0.83.3", + "metro-core": "0.83.3", + "metro-runtime": "0.83.3", + "yaml": "^2.6.1" }, "engines": { - "node": ">= 14" + "node": ">=20.19.4" } }, - "node_modules/@npmcli/agent/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "license": "ISC" - }, - "node_modules/@npmcli/fs": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", - "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==", - "license": "ISC", + "node_modules/@react-native/community-cli-plugin/node_modules/metro-runtime": { + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.83.3.tgz", + "integrity": "sha512-JHCJb9ebr9rfJ+LcssFYA2x1qPYuSD/bbePupIGhpMrsla7RCwC/VL3yJ9cSU+nUhU4c9Ixxy8tBta+JbDeZWw==", + "license": "MIT", "dependencies": { - "semver": "^7.3.5" + "@babel/runtime": "^7.25.0", + "flow-enums-runtime": "^0.0.6" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=20.19.4" } }, - "node_modules/@open-draft/until": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@open-draft/until/-/until-1.0.3.tgz", - "integrity": "sha512-Aq58f5HiWdyDlFffbbSjAlv596h/cOnt2DO1w3DOC7OJ5EHs0hd/nycJfiu9RJbT6Yk6F1knnRRXNSpxoIVZ9Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/@osm_borders/maritime_10000m": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@osm_borders/maritime_10000m/-/maritime_10000m-1.1.0.tgz", - "integrity": "sha512-0gbQoi3ITsqVGMXU5hm6s0TN8MHqA2xQSZ6GeIHZcCuf5f462iP1fMV4JZHNIretwqq9BN9F+4r3hjIHsj7RJw==", - "license": "ODbL" - }, - "node_modules/@percy/appium-app": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@percy/appium-app/-/appium-app-2.1.0.tgz", - "integrity": "sha512-XVigKgAcXEerIch3Ufngac07gOH4KnfTDp/xyPujDyjvAZSWfIyIRnojmfbLEs2HnZEnmFFoEMX6ZB4Tk0SO/Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@percy/sdk-utils": "^1.30.9", - "tmp": "^0.2.3" - }, + "node_modules/@react-native/debugger-frontend": { + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.81.5.tgz", + "integrity": "sha512-bnd9FSdWKx2ncklOetCgrlwqSGhMHP2zOxObJbOWXoj7GHEmih4MKarBo5/a8gX8EfA1EwRATdfNBQ81DY+h+w==", + "license": "BSD-3-Clause", "engines": { - "node": ">=14" + "node": ">= 20.19.4" } }, - "node_modules/@percy/sdk-utils": { - "version": "1.31.11", - "resolved": "https://registry.npmjs.org/@percy/sdk-utils/-/sdk-utils-1.31.11.tgz", - "integrity": "sha512-I4/Bx2RqSx/k00qVU0t/wcYudeyVRARQPdMnRZ/JvEZRZmXo0u+mHHpvZ5liHvnlpvWq6dv2WRA5MVy+GZHUhA==", - "dev": true, + "node_modules/@react-native/dev-middleware": { + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.81.5.tgz", + "integrity": "sha512-WfPfZzboYgo/TUtysuD5xyANzzfka8Ebni6RIb2wDxhb56ERi7qDrE4xGhtPsjCL4pQBXSVxyIlCy0d8I6EgGA==", "license": "MIT", "dependencies": { - "pac-proxy-agent": "^7.0.2" + "@isaacs/ttlcache": "^1.4.1", + "@react-native/debugger-frontend": "0.81.5", + "chrome-launcher": "^0.15.2", + "chromium-edge-launcher": "^0.2.0", + "connect": "^3.6.5", + "debug": "^4.4.0", + "invariant": "^2.2.4", + "nullthrows": "^1.1.1", + "open": "^7.0.3", + "serve-static": "^1.16.2", + "ws": "^6.2.3" }, "engines": { - "node": ">=14" + "node": ">= 20.19.4" } }, - "node_modules/@percy/selenium-webdriver": { - "version": "2.2.6", - "resolved": "https://registry.npmjs.org/@percy/selenium-webdriver/-/selenium-webdriver-2.2.6.tgz", - "integrity": "sha512-5aeJh3ncYQl1Ug8/eazae8Ux281cvUX87e5YvHTFnLKtELaqJEb2k0NoNZbnWpPgAdz7yxeZZgTEbDn9HTOSYA==", - "dev": true, + "node_modules/@react-native/dev-middleware/node_modules/ws": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", + "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", "license": "MIT", "dependencies": { - "@percy/sdk-utils": "^1.31.10", - "node-request-interceptor": "^0.6.3" - }, - "engines": { - "node": ">=14" + "async-limiter": "~1.0.0" } }, - "node_modules/@pinojs/redact": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@pinojs/redact/-/redact-0.4.0.tgz", - "integrity": "sha512-k2ENnmBugE/rzQfEcdWHcCY+/FM3VLzH9cYEsbdsoqrvzAKRhUZeRNhAZvB8OitQJ1TBed3yqWtdjzS6wJKBwg==", - "license": "MIT" - }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "node_modules/@react-native/gradle-plugin": { + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.81.5.tgz", + "integrity": "sha512-hORRlNBj+ReNMLo9jme3yQ6JQf4GZpVEBLxmTXGGlIL78MAezDZr5/uq9dwElSbcGmLEgeiax6e174Fie6qPLg==", "license": "MIT", - "optional": true, "engines": { - "node": ">=14" + "node": ">= 20.19.4" } }, - "node_modules/@placemarkio/check-geojson": { - "version": "0.1.14", - "resolved": "https://registry.npmjs.org/@placemarkio/check-geojson/-/check-geojson-0.1.14.tgz", - "integrity": "sha512-PZvNKzt6STytUw21TUkqU+TG6dbwTWb1ACosvInBYTBm37zsr8C74J6crBTQ3BWkyd6YeitYd4HibJzBEyk6Aw==", + "node_modules/@react-native/js-polyfills": { + "version": "0.79.5", + "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.79.5.tgz", + "integrity": "sha512-a2wsFlIhvd9ZqCD5KPRsbCQmbZi6KxhRN++jrqG0FUTEV5vY7MvjjUqDILwJd2ZBZsf7uiDuClCcKqA+EEdbvw==", + "devOptional": true, "license": "MIT", "engines": { - "node": ">=10" + "node": ">=18" } }, - "node_modules/@posthog/core": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/@posthog/core/-/core-1.22.0.tgz", - "integrity": "sha512-WkmOnq95aAOu6yk6r5LWr5cfXsQdpVbWDCwOxQwxSne8YV6GuZET1ziO5toSQXgrgbdcjrSz2/GopAfiL6iiAA==", + "node_modules/@react-native/metro-babel-transformer": { + "version": "0.76.9", + "resolved": "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.76.9.tgz", + "integrity": "sha512-HGq11347UHNiO/NvVbAO35hQCmH8YZRs7in7nVq7SL99pnpZK4WXwLdAXmSuwz5uYqOuwnKYDlpadz8fkE94Mg==", + "dev": true, "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.6" - } - }, - "node_modules/@promptbook/utils": { - "version": "0.69.5", - "resolved": "https://registry.npmjs.org/@promptbook/utils/-/utils-0.69.5.tgz", - "integrity": "sha512-xm5Ti/Hp3o4xHrsK9Yy3MS6KbDxYbq485hDsFvxqaNA7equHLPdo8H8faTitTeb14QCDfLW4iwCxdVYu5sn6YQ==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://buymeacoffee.com/hejny" - }, - { - "type": "github", - "url": "https://github.com/webgptorg/promptbook/blob/main/README.md#%EF%B8%8F-contributing" - } - ], - "license": "CC-BY-4.0", - "dependencies": { - "spacetrim": "0.11.59" - } - }, - "node_modules/@protobufjs/aspromise": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/base64": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", - "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", - "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/eventemitter": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/fetch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", - "license": "BSD-3-Clause", - "dependencies": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "node_modules/@protobufjs/float": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/path": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/pool": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==", - "license": "BSD-3-Clause" - }, - "node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==", - "license": "BSD-3-Clause" - }, - "node_modules/@puppeteer/browsers": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.13.0.tgz", - "integrity": "sha512-46BZJYJjc/WwmKjsvDFykHtXrtomsCIrwYQPOP7VfMJoZY2bsDF9oROBABR3paDjDcmkUye1Pb1BqdcdiipaWA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "debug": "^4.4.3", - "extract-zip": "^2.0.1", - "progress": "^2.0.3", - "proxy-agent": "^6.5.0", - "semver": "^7.7.4", - "tar-fs": "^3.1.1", - "yargs": "^17.7.2" - }, - "bin": { - "browsers": "lib/cjs/main-cli.js" + "@babel/core": "^7.25.2", + "@react-native/babel-preset": "0.76.9", + "hermes-parser": "0.23.1", + "nullthrows": "^1.1.1" }, "engines": { "node": ">=18" - } - }, - "node_modules/@puppeteer/browsers/node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@react-native-community/hooks": { - "version": "100.1.0", - "resolved": "https://registry.npmjs.org/@react-native-community/hooks/-/hooks-100.1.0.tgz", - "integrity": "sha512-aXESGr6WcnwyeIl+SiCLNFpbApzTmupyYzm2OkGjMuwHr42+a3G65xxTxN/xHuNdTVWO0dXbOwyLgEkQ0i/qZg==", - "license": "ISC", - "peerDependencies": { - "react": ">=18.0.0", - "react-native": ">=0.70" - } - }, - "node_modules/@react-native-community/netinfo": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/@react-native-community/netinfo/-/netinfo-12.0.1.tgz", - "integrity": "sha512-P/3caXIvfYSJG8AWJVefukg+ZGRPs+M4Lp3pNJtgcTYoJxCjWrKQGNnCkj/Cz//zWa/avGed0i/wzm0T8vV2IQ==", - "license": "MIT", - "peerDependencies": { - "react": "*", - "react-native": ">=0.59" - } - }, - "node_modules/@react-native-documents/picker": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/@react-native-documents/picker/-/picker-12.0.1.tgz", - "integrity": "sha512-vpJKb4t/5bnxe9+gQl+plJfKrrIsmYwANGhNH2B9E1dS1+6FDBzg4Dwmcq4ueaGfkRKEPJ606mJttVEH1ZKZaA==", - "license": "MIT", - "funding": { - "url": "https://github.com/react-native-documents/document-picker?sponsor=1" - }, - "peerDependencies": { - "react": "*", - "react-native": ">=0.79.0" - } - }, - "node_modules/@react-native-picker/picker": { - "version": "2.11.4", - "resolved": "https://registry.npmjs.org/@react-native-picker/picker/-/picker-2.11.4.tgz", - "integrity": "sha512-Kf8h1AMnBo54b1fdiVylP2P/iFcZqzpMYcglC28EEFB1DEnOjsNr6Ucqc+3R9e91vHxEDnhZFbYDmAe79P2gjA==", - "license": "MIT", - "workspaces": [ - "example" - ], - "peerDependencies": { - "react": "*", - "react-native": "*" - } - }, - "node_modules/@react-native-vector-icons/ant-design": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/@react-native-vector-icons/ant-design/-/ant-design-12.4.0.tgz", - "integrity": "sha512-MFuJu1TTKU+9TlGA9ZgkRCVkUG2qlkgKc2eldS+lYugWDWTmmYFX/Wuaw7iFROU030S4gBi2Yj6rZeM5tLOEMQ==", - "license": "MIT", - "dependencies": { - "@react-native-vector-icons/common": "^12.4.0" - }, - "engines": { - "node": ">= 18.0.0" - }, - "peerDependencies": { - "react": "*", - "react-native": "*" - } - }, - "node_modules/@react-native-vector-icons/common": { - "version": "12.4.2", - "resolved": "https://registry.npmjs.org/@react-native-vector-icons/common/-/common-12.4.2.tgz", - "integrity": "sha512-15ViuwfYdkQ79VE6PiQjsGyQcEvhv4lgguhIeQU4pXLXRAFhl89Q8FdKDrGZh7+a/8WMqT1v2+JtghdoGKDE6Q==", - "license": "MIT", - "dependencies": { - "find-up": "^7.0.0", - "picocolors": "^1.1.1", - "plist": "^3.1.0" - }, - "bin": { - "rnvi-update-plist": "lib/commonjs/scripts/updatePlist.js" - }, - "engines": { - "node": ">=20.19.0 <21.0.0 || >=22.0.0" - }, - "peerDependencies": { - "@react-native-vector-icons/get-image": "^12.3.0", - "react": "*", - "react-native": "*" - }, - "peerDependenciesMeta": { - "@react-native-vector-icons/get-image": { - "optional": true - } - } - }, - "node_modules/@react-native-vector-icons/fontawesome": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/@react-native-vector-icons/fontawesome/-/fontawesome-12.4.0.tgz", - "integrity": "sha512-hLbVc21GT/1nMgI7GDNLrikRb62o8HPnpccrOsrGaJrHSEiKednz6E8AInsGCcydYWI8cB7dyACt5N0SdzxHQA==", - "license": "MIT", - "dependencies": { - "@react-native-vector-icons/common": "^12.4.0" - }, - "engines": { - "node": ">= 18.0.0" - }, - "peerDependencies": { - "react": "*", - "react-native": "*" - } - }, - "node_modules/@react-native-vector-icons/fontisto": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/@react-native-vector-icons/fontisto/-/fontisto-12.4.0.tgz", - "integrity": "sha512-0XFOXDTV03Lvz7d0LmzNtvt7BgAupmUcv4HzVdtSccQ9Ak4lmLeBnO6kbP1v4iqcrsATR1xPrhQxTWWIJ90oFQ==", - "license": "MIT", - "dependencies": { - "@react-native-vector-icons/common": "^12.4.0" - }, - "engines": { - "node": ">= 18.0.0" - }, - "peerDependencies": { - "react": "*", - "react-native": "*" - } - }, - "node_modules/@react-native-vector-icons/ionicons": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@react-native-vector-icons/ionicons/-/ionicons-12.3.0.tgz", - "integrity": "sha512-H/rlYzUEm0hhwwca2k6VMNjy0rLcjan6iwyaYDXMhsJQl7O4+Qkm7uVd/KEreS5gXfGuntUlcSa9GSn+dYqnjA==", - "license": "MIT", - "dependencies": { - "@react-native-vector-icons/common": "^12.3.0" - }, - "engines": { - "node": ">= 18.0.0" - }, - "peerDependencies": { - "react": "*", - "react-native": "*" - } - }, - "node_modules/@react-native-vector-icons/material-design-icons": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/@react-native-vector-icons/material-design-icons/-/material-design-icons-12.4.0.tgz", - "integrity": "sha512-4ewAiHdOCujqprUJYFnBcUJduNddAc+w3Plnl1NhJksAyOaHzCNBg01JgVtkysxPho6++OOMge3FhwyBT8Wtcg==", - "license": "MIT", - "dependencies": { - "@react-native-vector-icons/common": "^12.4.0" - }, - "engines": { - "node": ">= 18.0.0" - }, - "peerDependencies": { - "react": "*", - "react-native": "*" - } - }, - "node_modules/@react-native-vector-icons/material-icons": { - "version": "12.4.0", - "resolved": "https://registry.npmjs.org/@react-native-vector-icons/material-icons/-/material-icons-12.4.0.tgz", - "integrity": "sha512-R0C2BBoZZ5sjZJYLbFx1vfyYwfbOcBHRYzRHDKUlsCdplc34HLa0JyHYGMGx3q5xHAJB6Dl4N2cmZUVALuJ60w==", - "license": "MIT", - "dependencies": { - "@react-native-vector-icons/common": "^12.4.0" - }, - "engines": { - "node": ">= 18.0.0" }, "peerDependencies": { - "react": "*", - "react-native": "*" + "@babel/core": "*" } }, - "node_modules/@react-native-vector-icons/octicons": { - "version": "20.4.0", - "resolved": "https://registry.npmjs.org/@react-native-vector-icons/octicons/-/octicons-20.4.0.tgz", - "integrity": "sha512-4r6LyMbeEhxDTtC0/DKQLRIy7Tf0JzvCoTZjEUgeWnRTA/UKfyjpxdYnr/x/SWXKJTFl+9nZAO7Hx2o5gEUShw==", + "node_modules/@react-native/metro-config": { + "version": "0.79.5", + "resolved": "https://registry.npmjs.org/@react-native/metro-config/-/metro-config-0.79.5.tgz", + "integrity": "sha512-XH4gnyl+UWs1KM6/fmXqTXd4P0CQUI5C203v9iIvsdLm2AGAdv9ju/jo0QMJSbA7FE1Mz4j0r5skmrlN4SbamA==", + "devOptional": true, "license": "MIT", "dependencies": { - "@react-native-vector-icons/common": "^12.4.0" - }, - "engines": { - "node": ">= 18.0.0" + "@react-native/js-polyfills": "0.79.5", + "@react-native/metro-babel-transformer": "0.79.5", + "metro-config": "^0.82.0", + "metro-runtime": "^0.82.0" }, - "peerDependencies": { - "react": "*", - "react-native": "*" - } - }, - "node_modules/@react-native/assets-registry": { - "version": "0.81.5", - "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.81.5.tgz", - "integrity": "sha512-705B6x/5Kxm1RKRvSv0ADYWm5JOnoiQ1ufW7h8uu2E6G9Of/eE6hP/Ivw3U5jI16ERqZxiKQwk34VJbB0niX9w==", - "license": "MIT", "engines": { - "node": ">= 20.19.4" + "node": ">=18" } }, - "node_modules/@react-native/babel-plugin-codegen": { - "version": "0.76.9", - "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.76.9.tgz", - "integrity": "sha512-vxL/vtDEIYHfWKm5oTaEmwcnNGsua/i9OjIxBDBFiJDu5i5RU3bpmDiXQm/bJxrJNPRp5lW0I0kpGihVhnMAIQ==", - "dev": true, + "node_modules/@react-native/metro-config/node_modules/@react-native/babel-plugin-codegen": { + "version": "0.79.5", + "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.79.5.tgz", + "integrity": "sha512-Rt/imdfqXihD/sn0xnV4flxxb1aLLjPtMF1QleQjEhJsTUPpH4TFlfOpoCvsrXoDl4OIcB1k4FVM24Ez92zf5w==", + "devOptional": true, "license": "MIT", "dependencies": { - "@react-native/codegen": "0.76.9" + "@babel/traverse": "^7.25.3", + "@react-native/codegen": "0.79.5" }, "engines": { "node": ">=18" } }, - "node_modules/@react-native/babel-preset": { - "version": "0.76.9", - "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.76.9.tgz", - "integrity": "sha512-TbSeCplCM6WhL3hR2MjC/E1a9cRnMLz7i767T7mP90oWkklEjyPxWl+0GGoVGnJ8FC/jLUupg/HvREKjjif6lw==", - "dev": true, + "node_modules/@react-native/metro-config/node_modules/@react-native/babel-preset": { + "version": "0.79.5", + "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.79.5.tgz", + "integrity": "sha512-GDUYIWslMLbdJHEgKNfrOzXk8EDKxKzbwmBXUugoiSlr6TyepVZsj3GZDLEFarOcTwH1EXXHJsixihk8DCRQDA==", + "devOptional": true, "license": "MIT", "dependencies": { "@babel/core": "^7.25.2", @@ -8071,8 +7119,8 @@ "@babel/plugin-transform-typescript": "^7.25.2", "@babel/plugin-transform-unicode-regex": "^7.24.7", "@babel/template": "^7.25.0", - "@react-native/babel-plugin-codegen": "0.76.9", - "babel-plugin-syntax-hermes-parser": "^0.25.1", + "@react-native/babel-plugin-codegen": "0.79.5", + "babel-plugin-syntax-hermes-parser": "0.25.1", "babel-plugin-transform-flow-enums": "^0.0.2", "react-refresh": "^0.14.0" }, @@ -8083,29 +7131,16 @@ "@babel/core": "*" } }, - "node_modules/@react-native/babel-preset/node_modules/react-refresh": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", - "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@react-native/codegen": { - "version": "0.76.9", - "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.76.9.tgz", - "integrity": "sha512-AzlCHMTKrAVC2709V4ZGtBXmGVtWTpWm3Ruv5vXcd3/anH4mGucfJ4rjbWKdaYQJMpXa3ytGomQrsIsT/s8kgA==", - "dev": true, + "node_modules/@react-native/metro-config/node_modules/@react-native/codegen": { + "version": "0.79.5", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.79.5.tgz", + "integrity": "sha512-FO5U1R525A1IFpJjy+KVznEinAgcs3u7IbnbRJUG9IH/MBXi2lEU2LtN+JarJ81MCfW4V2p0pg6t/3RGHFRrlQ==", + "devOptional": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.25.3", "glob": "^7.1.1", - "hermes-parser": "0.23.1", + "hermes-parser": "0.25.1", "invariant": "^2.2.4", - "jscodeshift": "^0.14.0", - "mkdirp": "^0.5.1", "nullthrows": "^1.1.1", "yargs": "^17.6.2" }, @@ -8113,1842 +7148,1427 @@ "node": ">=18" }, "peerDependencies": { - "@babel/preset-env": "^7.1.6" + "@babel/core": "*" } }, - "node_modules/@react-native/community-cli-plugin": { - "version": "0.81.5", - "resolved": "https://registry.npmjs.org/@react-native/community-cli-plugin/-/community-cli-plugin-0.81.5.tgz", - "integrity": "sha512-yWRlmEOtcyvSZ4+OvqPabt+NS36vg0K/WADTQLhrYrm9qdZSuXmq8PmdJWz/68wAqKQ+4KTILiq2kjRQwnyhQw==", + "node_modules/@react-native/metro-config/node_modules/@react-native/metro-babel-transformer": { + "version": "0.79.5", + "resolved": "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.79.5.tgz", + "integrity": "sha512-83Kmlwyg+XKvXXGH6agxiQdEwXKJuaGco2KPPmHSFp/jxKan+HFYZOKTmmxRM7ysULuafsuDYLcyicYeGAJ2rQ==", + "devOptional": true, "license": "MIT", "dependencies": { - "@react-native/dev-middleware": "0.81.5", - "debug": "^4.4.0", - "invariant": "^2.2.4", - "metro": "^0.83.1", - "metro-config": "^0.83.1", - "metro-core": "^0.83.1", - "semver": "^7.1.3" + "@babel/core": "^7.25.2", + "@react-native/babel-preset": "0.79.5", + "hermes-parser": "0.25.1", + "nullthrows": "^1.1.1" }, "engines": { - "node": ">= 20.19.4" + "node": ">=18" }, "peerDependencies": { - "@react-native-community/cli": "*", - "@react-native/metro-config": "*" - }, - "peerDependenciesMeta": { - "@react-native-community/cli": { - "optional": true - }, - "@react-native/metro-config": { - "optional": true - } + "@babel/core": "*" } }, - "node_modules/@react-native/community-cli-plugin/node_modules/accepts": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", - "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", - "license": "MIT", + "node_modules/@react-native/metro-config/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "devOptional": true, + "license": "ISC", "dependencies": { - "mime-types": "^3.0.0", - "negotiator": "^1.0.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">= 0.6" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@react-native/community-cli-plugin/node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "node_modules/@react-native/metro-config/node_modules/hermes-estree": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", + "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/@react-native/metro-config/node_modules/hermes-parser": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", + "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", + "devOptional": true, "license": "MIT", - "engines": { - "node": ">= 14" + "dependencies": { + "hermes-estree": "0.25.1" } }, - "node_modules/@react-native/community-cli-plugin/node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "node_modules/@react-native/normalize-colors": { + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.81.5.tgz", + "integrity": "sha512-0HuJ8YtqlTVRXGZuGeBejLE04wSQsibpTI+RGOyVqxZvgtlLLC/Ssw0UmbHhT4lYMp2fhdtvKZSs5emWB1zR/g==", "license": "MIT" }, - "node_modules/@react-native/community-cli-plugin/node_modules/hermes-estree": { - "version": "0.33.3", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.33.3.tgz", - "integrity": "sha512-6kzYZHCk8Fy1Uc+t3HGYyJn3OL4aeqKLTyina4UFtWl8I0kSL7OmKThaiX+Uh2f8nGw3mo4Ifxg0M5Zk3/Oeqg==", + "node_modules/@react-native/typescript-config": { + "version": "0.76.9", + "resolved": "https://registry.npmjs.org/@react-native/typescript-config/-/typescript-config-0.76.9.tgz", + "integrity": "sha512-68xGswpZOrCvDd1Wu6H7ZdluIDmNbN0Uq8RVnm+IQMnYx90fVHL+iNW4hClgoY/TIcsWnQQL6shES4n/1kz/fg==", + "dev": true, "license": "MIT" }, - "node_modules/@react-native/community-cli-plugin/node_modules/hermes-parser": { - "version": "0.33.3", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.33.3.tgz", - "integrity": "sha512-Yg3HgaG4CqgyowtYjX/FsnPAuZdHOqSMtnbpylbptsQ9nwwSKsy6uRWcGO5RK0EqiX12q8HvDWKgeAVajRO5DA==", + "node_modules/@react-navigation/bottom-tabs": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@react-navigation/bottom-tabs/-/bottom-tabs-7.14.0.tgz", + "integrity": "sha512-oG2VdoInuIyK0o9o90Yo47hTCS+sPyVE7k8eSB37vt3pq3uQxjh8V3xJpsQfOfNlRUXOPB/ejH93nSBlP7ZHmQ==", "license": "MIT", "dependencies": { - "hermes-estree": "0.33.3" + "@react-navigation/elements": "^2.9.5", + "color": "^4.2.3", + "sf-symbols-typescript": "^2.1.0" + }, + "peerDependencies": { + "@react-navigation/native": "^7.1.28", + "react": ">= 18.2.0", + "react-native": "*", + "react-native-safe-area-context": ">= 4.0.0", + "react-native-screens": ">= 4.0.0" } }, - "node_modules/@react-native/community-cli-plugin/node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "node_modules/@react-navigation/core": { + "version": "7.14.0", + "resolved": "https://registry.npmjs.org/@react-navigation/core/-/core-7.14.0.tgz", + "integrity": "sha512-tMpzskBzVp0E7CRNdNtJIdXjk54Kwe/TF9ViXAef+YFM1kSfGv4e/B2ozfXE+YyYgmh4WavTv8fkdJz1CNyu+g==", "license": "MIT", "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" + "@react-navigation/routers": "^7.5.3", + "escape-string-regexp": "^4.0.0", + "fast-deep-equal": "^3.1.3", + "nanoid": "^3.3.11", + "query-string": "^7.1.3", + "react-is": "^19.1.0", + "use-latest-callback": "^0.2.4", + "use-sync-external-store": "^1.5.0" }, - "engines": { - "node": ">= 14" + "peerDependencies": { + "react": ">= 18.2.0" } }, - "node_modules/@react-native/community-cli-plugin/node_modules/metro": { - "version": "0.83.5", - "resolved": "https://registry.npmjs.org/metro/-/metro-0.83.5.tgz", - "integrity": "sha512-BgsXevY1MBac/3ZYv/RfNFf/4iuW9X7f4H8ZNkiH+r667HD9sVujxcmu4jvEzGCAm4/WyKdZCuyhAcyhTHOucQ==", + "node_modules/@react-navigation/core/node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.29.0", - "@babel/core": "^7.25.2", - "@babel/generator": "^7.29.1", - "@babel/parser": "^7.29.0", - "@babel/template": "^7.28.6", - "@babel/traverse": "^7.29.0", - "@babel/types": "^7.29.0", - "accepts": "^2.0.0", - "chalk": "^4.0.0", - "ci-info": "^2.0.0", - "connect": "^3.6.5", - "debug": "^4.4.0", - "error-stack-parser": "^2.0.6", - "flow-enums-runtime": "^0.0.6", - "graceful-fs": "^4.2.4", - "hermes-parser": "0.33.3", - "image-size": "^1.0.2", - "invariant": "^2.2.4", - "jest-worker": "^29.7.0", - "jsc-safe-url": "^0.2.2", - "lodash.throttle": "^4.1.1", - "metro-babel-transformer": "0.83.5", - "metro-cache": "0.83.5", - "metro-cache-key": "0.83.5", - "metro-config": "0.83.5", - "metro-core": "0.83.5", - "metro-file-map": "0.83.5", - "metro-resolver": "0.83.5", - "metro-runtime": "0.83.5", - "metro-source-map": "0.83.5", - "metro-symbolicate": "0.83.5", - "metro-transform-plugins": "0.83.5", - "metro-transform-worker": "0.83.5", - "mime-types": "^3.0.1", - "nullthrows": "^1.1.1", - "serialize-error": "^2.1.0", - "source-map": "^0.5.6", - "throat": "^5.0.0", - "ws": "^7.5.10", - "yargs": "^17.6.2" - }, "bin": { - "metro": "src/cli.js" + "nanoid": "bin/nanoid.cjs" }, "engines": { - "node": ">=20.19.4" + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/@react-native/community-cli-plugin/node_modules/metro-babel-transformer": { - "version": "0.83.5", - "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.83.5.tgz", - "integrity": "sha512-d9FfmgUEVejTiSb7bkQeLRGl6aeno2UpuPm3bo3rCYwxewj03ymvOn8s8vnS4fBqAPQ+cE9iQM40wh7nGXR+eA==", + "node_modules/@react-navigation/core/node_modules/react-is": { + "version": "19.2.4", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.4.tgz", + "integrity": "sha512-W+EWGn2v0ApPKgKKCy/7s7WHXkboGcsrXE+2joLyVxkbyVQfO3MUEaUQDHoSmb8TFFrSKYa9mw64WZHNHSDzYA==", + "license": "MIT" + }, + "node_modules/@react-navigation/elements": { + "version": "2.9.5", + "resolved": "https://registry.npmjs.org/@react-navigation/elements/-/elements-2.9.5.tgz", + "integrity": "sha512-iHZU8rRN1014Upz73AqNVXDvSMZDh5/ktQ1CMe21rdgnOY79RWtHHBp9qOS3VtqlUVYGkuX5GEw5mDt4tKdl0g==", "license": "MIT", "dependencies": { - "@babel/core": "^7.25.2", - "flow-enums-runtime": "^0.0.6", - "hermes-parser": "0.33.3", - "nullthrows": "^1.1.1" + "color": "^4.2.3", + "use-latest-callback": "^0.2.4", + "use-sync-external-store": "^1.5.0" }, - "engines": { - "node": ">=20.19.4" + "peerDependencies": { + "@react-native-masked-view/masked-view": ">= 0.2.0", + "@react-navigation/native": "^7.1.28", + "react": ">= 18.2.0", + "react-native": "*", + "react-native-safe-area-context": ">= 4.0.0" + }, + "peerDependenciesMeta": { + "@react-native-masked-view/masked-view": { + "optional": true + } } }, - "node_modules/@react-native/community-cli-plugin/node_modules/metro-cache": { - "version": "0.83.5", - "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.83.5.tgz", - "integrity": "sha512-oH+s4U+IfZyg8J42bne2Skc90rcuESIYf86dYittcdWQtPfcaFXWpByPyTuWk3rR1Zz3Eh5HOrcVImfEhhJLng==", + "node_modules/@react-navigation/native": { + "version": "7.1.28", + "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-7.1.28.tgz", + "integrity": "sha512-d1QDn+KNHfHGt3UIwOZvupvdsDdiHYZBEj7+wL2yDVo3tMezamYy60H9s3EnNVE1Ae1ty0trc7F2OKqo/RmsdQ==", "license": "MIT", + "peer": true, "dependencies": { - "exponential-backoff": "^3.1.1", - "flow-enums-runtime": "^0.0.6", - "https-proxy-agent": "^7.0.5", - "metro-core": "0.83.5" + "@react-navigation/core": "^7.14.0", + "escape-string-regexp": "^4.0.0", + "fast-deep-equal": "^3.1.3", + "nanoid": "^3.3.11", + "use-latest-callback": "^0.2.4" }, - "engines": { - "node": ">=20.19.4" + "peerDependencies": { + "react": ">= 18.2.0", + "react-native": "*" } }, - "node_modules/@react-native/community-cli-plugin/node_modules/metro-cache-key": { - "version": "0.83.5", - "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.83.5.tgz", - "integrity": "sha512-Ycl8PBajB7bhbAI7Rt0xEyiF8oJ0RWX8EKkolV1KfCUlC++V/GStMSGpPLwnnBZXZWkCC5edBPzv1Hz1Yi0Euw==", + "node_modules/@react-navigation/native-stack": { + "version": "7.3.21", + "resolved": "https://registry.npmjs.org/@react-navigation/native-stack/-/native-stack-7.3.21.tgz", + "integrity": "sha512-oNNZHzkxILEibesamRKLodfXAaDOUvMBITKXLLeblDxnTAyIB/Kf7CmV+8nwkdAgV04kURTxV0SQI+d8gLUm6g==", + "dev": true, "license": "MIT", "dependencies": { - "flow-enums-runtime": "^0.0.6" + "@react-navigation/elements": "^2.5.2", + "warn-once": "^0.1.1" }, - "engines": { - "node": ">=20.19.4" + "peerDependencies": { + "@react-navigation/native": "^7.1.14", + "react": ">= 18.2.0", + "react-native": "*", + "react-native-safe-area-context": ">= 4.0.0", + "react-native-screens": ">= 4.0.0" } }, - "node_modules/@react-native/community-cli-plugin/node_modules/metro-config": { - "version": "0.83.5", - "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.83.5.tgz", - "integrity": "sha512-JQ/PAASXH7yczgV6OCUSRhZYME+NU8NYjI2RcaG5ga4QfQ3T/XdiLzpSb3awWZYlDCcQb36l4Vl7i0Zw7/Tf9w==", + "node_modules/@react-navigation/native/node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", - "dependencies": { - "connect": "^3.6.5", - "flow-enums-runtime": "^0.0.6", - "jest-validate": "^29.7.0", - "metro": "0.83.5", - "metro-cache": "0.83.5", - "metro-core": "0.83.5", - "metro-runtime": "0.83.5", - "yaml": "^2.6.1" + "bin": { + "nanoid": "bin/nanoid.cjs" }, "engines": { - "node": ">=20.19.4" + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/@react-native/community-cli-plugin/node_modules/metro-core": { - "version": "0.83.5", - "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.83.5.tgz", - "integrity": "sha512-YcVcLCrf0ed4mdLa82Qob0VxYqfhmlRxUS8+TO4gosZo/gLwSvtdeOjc/Vt0pe/lvMNrBap9LlmvZM8FIsMgJQ==", + "node_modules/@react-navigation/routers": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/@react-navigation/routers/-/routers-7.5.3.tgz", + "integrity": "sha512-1tJHg4KKRJuQ1/EvJxatrMef3NZXEPzwUIUZ3n1yJ2t7Q97siwRtbynRpQG9/69ebbtiZ8W3ScOZF/OmhvM4Rg==", "license": "MIT", "dependencies": { - "flow-enums-runtime": "^0.0.6", - "lodash.throttle": "^4.1.1", - "metro-resolver": "0.83.5" - }, - "engines": { - "node": ">=20.19.4" + "nanoid": "^3.3.11" } }, - "node_modules/@react-native/community-cli-plugin/node_modules/metro-file-map": { - "version": "0.83.5", - "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.83.5.tgz", - "integrity": "sha512-ZEt8s3a1cnYbn40nyCD+CsZdYSlwtFh2kFym4lo+uvfM+UMMH+r/BsrC6rbNClSrt+B7rU9T+Te/sh/NL8ZZKQ==", + "node_modules/@react-navigation/routers/node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", - "dependencies": { - "debug": "^4.4.0", - "fb-watchman": "^2.0.0", - "flow-enums-runtime": "^0.0.6", - "graceful-fs": "^4.2.4", - "invariant": "^2.2.4", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "nullthrows": "^1.1.1", - "walker": "^1.0.7" + "bin": { + "nanoid": "bin/nanoid.cjs" }, "engines": { - "node": ">=20.19.4" + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/@react-native/community-cli-plugin/node_modules/metro-minify-terser": { - "version": "0.83.5", - "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.83.5.tgz", - "integrity": "sha512-Toe4Md1wS1PBqbvB0cFxBzKEVyyuYTUb0sgifAZh/mSvLH84qA1NAWik9sISWatzvfWf3rOGoUoO5E3f193a3Q==", + "node_modules/@react-navigation/stack": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@react-navigation/stack/-/stack-7.7.2.tgz", + "integrity": "sha512-dBXj+YEqfLsLQmmNyZ9lgu11N0JfpFCjjP4iEtlC1dPNNau2Rv18LEejXNU/k/fIgcfzYXFdQeiyEFW5O3f5Fw==", "license": "MIT", "dependencies": { - "flow-enums-runtime": "^0.0.6", - "terser": "^5.15.0" + "@react-navigation/elements": "^2.9.5", + "color": "^4.2.3", + "use-latest-callback": "^0.2.4" }, - "engines": { - "node": ">=20.19.4" + "peerDependencies": { + "@react-navigation/native": "^7.1.28", + "react": ">= 18.2.0", + "react-native": "*", + "react-native-gesture-handler": ">= 2.0.0", + "react-native-safe-area-context": ">= 4.0.0", + "react-native-screens": ">= 4.0.0" } }, - "node_modules/@react-native/community-cli-plugin/node_modules/metro-resolver": { - "version": "0.83.5", - "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.83.5.tgz", - "integrity": "sha512-7p3GtzVUpbAweJeCcUJihJeOQl1bDuimO5ueo1K0BUpUtR41q5EilbQ3klt16UTPPMpA+tISWBtsrqU556mY1A==", + "node_modules/@rnmapbox/maps": { + "version": "10.1.42", + "resolved": "https://registry.npmjs.org/@rnmapbox/maps/-/maps-10.1.42.tgz", + "integrity": "sha512-9Xxc42eY+ycpcyK+YaAS+T+mFds96x3p54qGAimXgEU2aY4wRI1KHjNqYCT1hdrhAWnWiIp9Jtaen8VZvNRbeQ==", "license": "MIT", "dependencies": { - "flow-enums-runtime": "^0.0.6" + "@turf/along": "6.5.0", + "@turf/distance": "6.5.0", + "@turf/helpers": "6.5.0", + "@turf/length": "6.5.0", + "@turf/nearest-point-on-line": "6.5.0", + "@types/geojson": "^7946.0.7", + "debounce": "^1.2.0" }, - "engines": { - "node": ">=20.19.4" + "peerDependencies": { + "expo": ">=47.0.0", + "mapbox-gl": "^2.9.0", + "react": ">=16.6.1", + "react-dom": ">= 17.0.0", + "react-native": ">=0.59.9" + }, + "peerDependenciesMeta": { + "expo": { + "optional": true + }, + "mapbox-gl": { + "optional": true + }, + "react-dom": { + "optional": true + } } }, - "node_modules/@react-native/community-cli-plugin/node_modules/metro-runtime": { - "version": "0.83.5", - "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.83.5.tgz", - "integrity": "sha512-f+b3ue9AWTVlZe2Xrki6TAoFtKIqw30jwfk7GQ1rDUBQaE0ZQ+NkiMEtb9uwH7uAjJ87U7Tdx1Jg1OJqUfEVlA==", + "node_modules/@rnmapbox/maps/node_modules/@turf/distance": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/distance/-/distance-6.5.0.tgz", + "integrity": "sha512-xzykSLfoURec5qvQJcfifw/1mJa+5UwByZZ5TZ8iaqjGYN0vomhV9aiSLeYdUGtYRESZ+DYC/OzY+4RclZYgMg==", "license": "MIT", "dependencies": { - "@babel/runtime": "^7.25.0", - "flow-enums-runtime": "^0.0.6" + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0" }, - "engines": { - "node": ">=20.19.4" + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@rnmapbox/maps/node_modules/@turf/helpers": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.5.0.tgz", + "integrity": "sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==", + "license": "MIT", + "funding": { + "url": "https://opencollective.com/turf" } }, - "node_modules/@react-native/community-cli-plugin/node_modules/metro-source-map": { - "version": "0.83.5", - "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.83.5.tgz", - "integrity": "sha512-VT9bb2KO2/4tWY9Z2yeZqTUao7CicKAOps9LUg2aQzsz+04QyuXL3qgf1cLUVRjA/D6G5u1RJAlN1w9VNHtODQ==", + "node_modules/@sec-ant/readable-stream": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", + "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@sentry-internal/browser-utils": { + "version": "10.38.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-10.38.0.tgz", + "integrity": "sha512-UOJtYmdcxHCcV0NPfXFff/a95iXl/E0EhuQ1y0uE0BuZDMupWSF5t2BgC4HaE5Aw3RTjDF3XkSHWoIF6ohy7eA==", "license": "MIT", "dependencies": { - "@babel/traverse": "^7.29.0", - "@babel/types": "^7.29.0", - "flow-enums-runtime": "^0.0.6", - "invariant": "^2.2.4", - "metro-symbolicate": "0.83.5", - "nullthrows": "^1.1.1", - "ob1": "0.83.5", - "source-map": "^0.5.6", - "vlq": "^1.0.0" + "@sentry/core": "10.38.0" }, "engines": { - "node": ">=20.19.4" + "node": ">=18" } }, - "node_modules/@react-native/community-cli-plugin/node_modules/metro-symbolicate": { - "version": "0.83.5", - "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.83.5.tgz", - "integrity": "sha512-EMIkrjNRz/hF+p0RDdxoE60+dkaTLPN3vaaGkFmX5lvFdO6HPfHA/Ywznzkev+za0VhPQ5KSdz49/MALBRteHA==", + "node_modules/@sentry-internal/feedback": { + "version": "10.38.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-10.38.0.tgz", + "integrity": "sha512-JXneg9zRftyfy1Fyfc39bBlF/Qd8g4UDublFFkVvdc1S6JQPlK+P6q22DKz3Pc8w3ySby+xlIq/eTu9Pzqi4KA==", "license": "MIT", "dependencies": { - "flow-enums-runtime": "^0.0.6", - "invariant": "^2.2.4", - "metro-source-map": "0.83.5", - "nullthrows": "^1.1.1", - "source-map": "^0.5.6", - "vlq": "^1.0.0" - }, - "bin": { - "metro-symbolicate": "src/index.js" + "@sentry/core": "10.38.0" }, "engines": { - "node": ">=20.19.4" + "node": ">=18" } }, - "node_modules/@react-native/community-cli-plugin/node_modules/metro-transform-plugins": { - "version": "0.83.5", - "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.83.5.tgz", - "integrity": "sha512-KxYKzZL+lt3Os5H2nx7YkbkWVduLZL5kPrE/Yq+Prm/DE1VLhpfnO6HtPs8vimYFKOa58ncl60GpoX0h7Wm0Vw==", + "node_modules/@sentry-internal/replay": { + "version": "10.38.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-10.38.0.tgz", + "integrity": "sha512-YWIkL6/dnaiQyFiZXJ/nN+NXGv/15z45ia86bE/TMq01CubX/DUOilgsFz0pk2v/pg3tp/U2MskLO9Hz0cnqeg==", "license": "MIT", "dependencies": { - "@babel/core": "^7.25.2", - "@babel/generator": "^7.29.1", - "@babel/template": "^7.28.6", - "@babel/traverse": "^7.29.0", - "flow-enums-runtime": "^0.0.6", - "nullthrows": "^1.1.1" + "@sentry-internal/browser-utils": "10.38.0", + "@sentry/core": "10.38.0" }, "engines": { - "node": ">=20.19.4" + "node": ">=18" } }, - "node_modules/@react-native/community-cli-plugin/node_modules/metro-transform-worker": { - "version": "0.83.5", - "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.83.5.tgz", - "integrity": "sha512-8N4pjkNXc6ytlP9oAM6MwqkvUepNSW39LKYl9NjUMpRDazBQ7oBpQDc8Sz4aI8jnH6AGhF7s1m/ayxkN1t04yA==", + "node_modules/@sentry-internal/replay-canvas": { + "version": "10.38.0", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-10.38.0.tgz", + "integrity": "sha512-OXWM9jEqNYh4VTvrMu7v+z1anz+QKQ/fZXIZdsO7JTT2lGNZe58UUMeoq386M+Saxen8F9SUH7yTORy/8KI5qw==", "license": "MIT", "dependencies": { - "@babel/core": "^7.25.2", - "@babel/generator": "^7.29.1", - "@babel/parser": "^7.29.0", - "@babel/types": "^7.29.0", - "flow-enums-runtime": "^0.0.6", - "metro": "0.83.5", - "metro-babel-transformer": "0.83.5", - "metro-cache": "0.83.5", - "metro-cache-key": "0.83.5", - "metro-minify-terser": "0.83.5", - "metro-source-map": "0.83.5", - "metro-transform-plugins": "0.83.5", - "nullthrows": "^1.1.1" + "@sentry-internal/replay": "10.38.0", + "@sentry/core": "10.38.0" }, "engines": { - "node": ">=20.19.4" + "node": ">=18" } }, - "node_modules/@react-native/community-cli-plugin/node_modules/mime-db": { - "version": "1.54.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", - "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "node_modules/@sentry/babel-plugin-component-annotate": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-4.9.1.tgz", + "integrity": "sha512-0gEoi2Lb54MFYPOmdTfxlNKxI7kCOvNV7gP8lxMXJ7nCazF5OqOOZIVshfWjDLrc0QrSV6XdVvwPV9GDn4wBMg==", "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">= 14" } }, - "node_modules/@react-native/community-cli-plugin/node_modules/mime-types": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", - "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "node_modules/@sentry/browser": { + "version": "10.38.0", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-10.38.0.tgz", + "integrity": "sha512-3phzp1YX4wcQr9mocGWKbjv0jwtuoDBv7+Y6Yfrys/kwyaL84mDLjjQhRf4gL5SX7JdYkhBp4WaiNlR0UC4kTA==", "license": "MIT", "dependencies": { - "mime-db": "^1.54.0" + "@sentry-internal/browser-utils": "10.38.0", + "@sentry-internal/feedback": "10.38.0", + "@sentry-internal/replay": "10.38.0", + "@sentry-internal/replay-canvas": "10.38.0", + "@sentry/core": "10.38.0" }, "engines": { "node": ">=18" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" } }, - "node_modules/@react-native/community-cli-plugin/node_modules/negotiator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", - "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/@react-native/community-cli-plugin/node_modules/ob1": { - "version": "0.83.5", - "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.83.5.tgz", - "integrity": "sha512-vNKPYC8L5ycVANANpF/S+WZHpfnRWKx/F3AYP4QMn6ZJTh+l2HOrId0clNkEmua58NB9vmI9Qh7YOoV/4folYg==", - "license": "MIT", + "node_modules/@sentry/cli": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-3.2.0.tgz", + "integrity": "sha512-YLv/xgttSc8sRhK2xBoxmLS+yQlCW154ey2cXFsFe+yY73lXvQ9nZ7BkHmSc+YUl8y5CKHL+8edQLYV8O8PQMA==", + "hasInstallScript": true, + "license": "FSL-1.1-MIT", "dependencies": { - "flow-enums-runtime": "^0.0.6" + "progress": "^2.0.3", + "proxy-from-env": "^1.1.0", + "undici": "^6.22.0", + "which": "^2.0.2" + }, + "bin": { + "sentry-cli": "bin/sentry-cli" }, "engines": { - "node": ">=20.19.4" + "node": ">= 18" + }, + "optionalDependencies": { + "@sentry/cli-darwin": "3.2.0", + "@sentry/cli-linux-arm": "3.2.0", + "@sentry/cli-linux-arm64": "3.2.0", + "@sentry/cli-linux-i686": "3.2.0", + "@sentry/cli-linux-x64": "3.2.0", + "@sentry/cli-win32-arm64": "3.2.0", + "@sentry/cli-win32-i686": "3.2.0", + "@sentry/cli-win32-x64": "3.2.0" } }, - "node_modules/@react-native/community-cli-plugin/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", - "license": "BSD-3-Clause", + "node_modules/@sentry/cli-darwin": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-3.2.0.tgz", + "integrity": "sha512-2If2h0P/X9K0UrwlpZYKnxBmIFfa957lAHGe5VmN64v8nEHk8dxcrX+NS9nX9H75eccLGzGMcYk0Zt0KQgQJ3g==", + "license": "FSL-1.1-MIT", + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=0.10.0" + "node": ">=18" } }, - "node_modules/@react-native/community-cli-plugin/node_modules/ws": { - "version": "7.5.10", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.10.tgz", - "integrity": "sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==", - "license": "MIT", + "node_modules/@sentry/cli-linux-arm": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-3.2.0.tgz", + "integrity": "sha512-NVcGcS9mceivVhi8W6iEnlcK96OlPMzOdM6xkIm+7+J0uXHgUyMyc+rT6p2QG3j8jI5I7qAl7fTHWluSX2lx3g==", + "cpu": [ + "arm" + ], + "license": "FSL-1.1-MIT", + "optional": true, + "os": [ + "linux", + "freebsd", + "android" + ], "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "node": ">=18" } }, - "node_modules/@react-native/debugger-frontend": { - "version": "0.81.5", - "resolved": "https://registry.npmjs.org/@react-native/debugger-frontend/-/debugger-frontend-0.81.5.tgz", - "integrity": "sha512-bnd9FSdWKx2ncklOetCgrlwqSGhMHP2zOxObJbOWXoj7GHEmih4MKarBo5/a8gX8EfA1EwRATdfNBQ81DY+h+w==", - "license": "BSD-3-Clause", + "node_modules/@sentry/cli-linux-arm64": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-3.2.0.tgz", + "integrity": "sha512-YFpYIfYpXYzpSrIspmPOOPjXbxWp/Ve+F2hSIQb1tSKmcxFgaUm6WfuniYF8EIaLNa8YOLECf0xo78yGXBa+ug==", + "cpu": [ + "arm64" + ], + "license": "FSL-1.1-MIT", + "optional": true, + "os": [ + "linux", + "freebsd", + "android" + ], "engines": { - "node": ">= 20.19.4" + "node": ">=18" } }, - "node_modules/@react-native/dev-middleware": { - "version": "0.81.5", - "resolved": "https://registry.npmjs.org/@react-native/dev-middleware/-/dev-middleware-0.81.5.tgz", - "integrity": "sha512-WfPfZzboYgo/TUtysuD5xyANzzfka8Ebni6RIb2wDxhb56ERi7qDrE4xGhtPsjCL4pQBXSVxyIlCy0d8I6EgGA==", - "license": "MIT", - "dependencies": { - "@isaacs/ttlcache": "^1.4.1", - "@react-native/debugger-frontend": "0.81.5", - "chrome-launcher": "^0.15.2", - "chromium-edge-launcher": "^0.2.0", - "connect": "^3.6.5", - "debug": "^4.4.0", - "invariant": "^2.2.4", - "nullthrows": "^1.1.1", - "open": "^7.0.3", - "serve-static": "^1.16.2", - "ws": "^6.2.3" - }, + "node_modules/@sentry/cli-linux-i686": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-3.2.0.tgz", + "integrity": "sha512-6SOxlF37NqRRKxEuvWryBM7MAgTisq0G6ZQzhI2iuWbcrmlLUDUW2Yssz3gAR01eYJ4jfpqvojSzPRDwqB0K+Q==", + "cpu": [ + "x86", + "ia32" + ], + "license": "FSL-1.1-MIT", + "optional": true, + "os": [ + "linux", + "freebsd", + "android" + ], "engines": { - "node": ">= 20.19.4" + "node": ">=18" } }, - "node_modules/@react-native/dev-middleware/node_modules/ws": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", - "integrity": "sha512-jmTjYU0j60B+vHey6TfR3Z7RD61z/hmxBS3VMSGIrroOWXQEneK1zNuotOUrGyBHQj0yrpsLHPWtigEFd13ndA==", - "license": "MIT", - "dependencies": { - "async-limiter": "~1.0.0" + "node_modules/@sentry/cli-linux-x64": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-3.2.0.tgz", + "integrity": "sha512-7LRd0A74ma/1ejlTRPOoBiFiJr4LWkoE6CnA2XwAoYd0r62WUjGHtg6gIC+yElOCwtxXP7I9fOiV2BJIAq2DHw==", + "cpu": [ + "x64" + ], + "license": "FSL-1.1-MIT", + "optional": true, + "os": [ + "linux", + "freebsd", + "android" + ], + "engines": { + "node": ">=18" } }, - "node_modules/@react-native/gradle-plugin": { - "version": "0.81.5", - "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.81.5.tgz", - "integrity": "sha512-hORRlNBj+ReNMLo9jme3yQ6JQf4GZpVEBLxmTXGGlIL78MAezDZr5/uq9dwElSbcGmLEgeiax6e174Fie6qPLg==", - "license": "MIT", + "node_modules/@sentry/cli-win32-arm64": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-arm64/-/cli-win32-arm64-3.2.0.tgz", + "integrity": "sha512-uKRi/++gnGepsaGi4goIcC13YGNEHgOUcROkz4L3H8vAR7QxWv2SHy7SCN+2S6c+Q2mOd0DfY35cMW5MzTpb7g==", + "cpu": [ + "arm64" + ], + "license": "FSL-1.1-MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">= 20.19.4" + "node": ">=18" } }, - "node_modules/@react-native/js-polyfills": { - "version": "0.79.5", - "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.79.5.tgz", - "integrity": "sha512-a2wsFlIhvd9ZqCD5KPRsbCQmbZi6KxhRN++jrqG0FUTEV5vY7MvjjUqDILwJd2ZBZsf7uiDuClCcKqA+EEdbvw==", - "devOptional": true, - "license": "MIT", + "node_modules/@sentry/cli-win32-i686": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-3.2.0.tgz", + "integrity": "sha512-/84NEPeFQne2bQWfDZ+3EzioxFR8ojSwExCgVsyTfqa/4PzmaerAGUAxiD+VcJLJTyJEHAjWXTmSZGbYjIgdyQ==", + "cpu": [ + "x86", + "ia32" + ], + "license": "FSL-1.1-MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { "node": ">=18" } }, - "node_modules/@react-native/metro-babel-transformer": { - "version": "0.76.9", - "resolved": "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.76.9.tgz", - "integrity": "sha512-HGq11347UHNiO/NvVbAO35hQCmH8YZRs7in7nVq7SL99pnpZK4WXwLdAXmSuwz5uYqOuwnKYDlpadz8fkE94Mg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/core": "^7.25.2", - "@react-native/babel-preset": "0.76.9", - "hermes-parser": "0.23.1", - "nullthrows": "^1.1.1" - }, + "node_modules/@sentry/cli-win32-x64": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-3.2.0.tgz", + "integrity": "sha512-N9qGGT91awsh4IMyXrRHH+qIWmv9MJk9tPPAWPvLMWgdlTHT/40WYwvA4tYj80uZXU0TN8ppBWbd3ebDyOjwxA==", + "cpu": [ + "x64" + ], + "license": "FSL-1.1-MIT", + "optional": true, + "os": [ + "win32" + ], "engines": { "node": ">=18" - }, - "peerDependencies": { - "@babel/core": "*" } }, - "node_modules/@react-native/metro-config": { - "version": "0.79.5", - "resolved": "https://registry.npmjs.org/@react-native/metro-config/-/metro-config-0.79.5.tgz", - "integrity": "sha512-XH4gnyl+UWs1KM6/fmXqTXd4P0CQUI5C203v9iIvsdLm2AGAdv9ju/jo0QMJSbA7FE1Mz4j0r5skmrlN4SbamA==", - "devOptional": true, + "node_modules/@sentry/core": { + "version": "10.38.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.38.0.tgz", + "integrity": "sha512-1pubWDZE5y5HZEPMAZERP4fVl2NH3Ihp1A+vMoVkb3Qc66Diqj1WierAnStlZP7tCx0TBa0dK85GTW/ZFYyB9g==", "license": "MIT", - "dependencies": { - "@react-native/js-polyfills": "0.79.5", - "@react-native/metro-babel-transformer": "0.79.5", - "metro-config": "^0.82.0", - "metro-runtime": "^0.82.0" - }, "engines": { "node": ">=18" } }, - "node_modules/@react-native/metro-config/node_modules/@react-native/babel-plugin-codegen": { - "version": "0.79.5", - "resolved": "https://registry.npmjs.org/@react-native/babel-plugin-codegen/-/babel-plugin-codegen-0.79.5.tgz", - "integrity": "sha512-Rt/imdfqXihD/sn0xnV4flxxb1aLLjPtMF1QleQjEhJsTUPpH4TFlfOpoCvsrXoDl4OIcB1k4FVM24Ez92zf5w==", - "devOptional": true, + "node_modules/@sentry/react": { + "version": "10.38.0", + "resolved": "https://registry.npmjs.org/@sentry/react/-/react-10.38.0.tgz", + "integrity": "sha512-3UiKo6QsqTyPGUt0XWRY9KLaxc/cs6Kz4vlldBSOXEL6qPDL/EfpwNJT61osRo81VFWu8pKu7ZY2bvLPryrnBQ==", "license": "MIT", "dependencies": { - "@babel/traverse": "^7.25.3", - "@react-native/codegen": "0.79.5" + "@sentry/browser": "10.38.0", + "@sentry/core": "10.38.0" }, "engines": { "node": ">=18" + }, + "peerDependencies": { + "react": "^16.14.0 || 17.x || 18.x || 19.x" } }, - "node_modules/@react-native/metro-config/node_modules/@react-native/babel-preset": { - "version": "0.79.5", - "resolved": "https://registry.npmjs.org/@react-native/babel-preset/-/babel-preset-0.79.5.tgz", - "integrity": "sha512-GDUYIWslMLbdJHEgKNfrOzXk8EDKxKzbwmBXUugoiSlr6TyepVZsj3GZDLEFarOcTwH1EXXHJsixihk8DCRQDA==", - "devOptional": true, + "node_modules/@sentry/react-native": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@sentry/react-native/-/react-native-8.0.0.tgz", + "integrity": "sha512-u+aXkL3Vw4gwIldIk5C0UI6ZwED/ct4FwoEU2UuIlrNmtKJffoE7I1oRnHA6AmVuq9ZvvdzOh/AhXb242HfTsg==", "license": "MIT", "dependencies": { - "@babel/core": "^7.25.2", - "@babel/plugin-proposal-export-default-from": "^7.24.7", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-default-from": "^7.24.7", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-transform-arrow-functions": "^7.24.7", - "@babel/plugin-transform-async-generator-functions": "^7.25.4", - "@babel/plugin-transform-async-to-generator": "^7.24.7", - "@babel/plugin-transform-block-scoping": "^7.25.0", - "@babel/plugin-transform-class-properties": "^7.25.4", - "@babel/plugin-transform-classes": "^7.25.4", - "@babel/plugin-transform-computed-properties": "^7.24.7", - "@babel/plugin-transform-destructuring": "^7.24.8", - "@babel/plugin-transform-flow-strip-types": "^7.25.2", - "@babel/plugin-transform-for-of": "^7.24.7", - "@babel/plugin-transform-function-name": "^7.25.1", - "@babel/plugin-transform-literals": "^7.25.2", - "@babel/plugin-transform-logical-assignment-operators": "^7.24.7", - "@babel/plugin-transform-modules-commonjs": "^7.24.8", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.24.7", - "@babel/plugin-transform-nullish-coalescing-operator": "^7.24.7", - "@babel/plugin-transform-numeric-separator": "^7.24.7", - "@babel/plugin-transform-object-rest-spread": "^7.24.7", - "@babel/plugin-transform-optional-catch-binding": "^7.24.7", - "@babel/plugin-transform-optional-chaining": "^7.24.8", - "@babel/plugin-transform-parameters": "^7.24.7", - "@babel/plugin-transform-private-methods": "^7.24.7", - "@babel/plugin-transform-private-property-in-object": "^7.24.7", - "@babel/plugin-transform-react-display-name": "^7.24.7", - "@babel/plugin-transform-react-jsx": "^7.25.2", - "@babel/plugin-transform-react-jsx-self": "^7.24.7", - "@babel/plugin-transform-react-jsx-source": "^7.24.7", - "@babel/plugin-transform-regenerator": "^7.24.7", - "@babel/plugin-transform-runtime": "^7.24.7", - "@babel/plugin-transform-shorthand-properties": "^7.24.7", - "@babel/plugin-transform-spread": "^7.24.7", - "@babel/plugin-transform-sticky-regex": "^7.24.7", - "@babel/plugin-transform-typescript": "^7.25.2", - "@babel/plugin-transform-unicode-regex": "^7.24.7", - "@babel/template": "^7.25.0", - "@react-native/babel-plugin-codegen": "0.79.5", - "babel-plugin-syntax-hermes-parser": "0.25.1", - "babel-plugin-transform-flow-enums": "^0.0.2", - "react-refresh": "^0.14.0" + "@sentry/babel-plugin-component-annotate": "4.9.1", + "@sentry/browser": "10.38.0", + "@sentry/cli": "3.2.0", + "@sentry/core": "10.38.0", + "@sentry/react": "10.38.0", + "@sentry/types": "10.38.0" }, - "engines": { - "node": ">=18" + "bin": { + "sentry-expo-upload-sourcemaps": "scripts/expo-upload-sourcemaps.js" }, "peerDependencies": { - "@babel/core": "*" + "expo": ">=49.0.0", + "react": ">=17.0.0", + "react-native": ">=0.65.0" + }, + "peerDependenciesMeta": { + "expo": { + "optional": true + } } }, - "node_modules/@react-native/metro-config/node_modules/@react-native/codegen": { - "version": "0.79.5", - "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.79.5.tgz", - "integrity": "sha512-FO5U1R525A1IFpJjy+KVznEinAgcs3u7IbnbRJUG9IH/MBXi2lEU2LtN+JarJ81MCfW4V2p0pg6t/3RGHFRrlQ==", - "devOptional": true, + "node_modules/@sentry/types": { + "version": "10.38.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-10.38.0.tgz", + "integrity": "sha512-DoeyTv/TvnoVDhHgdyv/wehieAKdyjLjEMtPOqqq/AjkP02BxeC0JYUrrWKOjV0wdLq5ZP8jKcCX8GN7awZonQ==", "license": "MIT", "dependencies": { - "glob": "^7.1.1", - "hermes-parser": "0.25.1", - "invariant": "^2.2.4", - "nullthrows": "^1.1.1", - "yargs": "^17.6.2" + "@sentry/core": "10.38.0" }, "engines": { "node": ">=18" - }, - "peerDependencies": { - "@babel/core": "*" } }, - "node_modules/@react-native/metro-config/node_modules/@react-native/metro-babel-transformer": { - "version": "0.79.5", - "resolved": "https://registry.npmjs.org/@react-native/metro-babel-transformer/-/metro-babel-transformer-0.79.5.tgz", - "integrity": "sha512-83Kmlwyg+XKvXXGH6agxiQdEwXKJuaGco2KPPmHSFp/jxKan+HFYZOKTmmxRM7ysULuafsuDYLcyicYeGAJ2rQ==", - "devOptional": true, + "node_modules/@sinclair/typebox": { + "version": "0.33.22", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.33.22.tgz", + "integrity": "sha512-auUj4k+f4pyrIVf4GW5UKquSZFHJWri06QgARy9C0t9ZTjJLIuNIrr1yl9bWcJWJ1Gz1vOvYN1D+QPaIlNMVkQ==", + "license": "MIT", + "peer": true + }, + "node_modules/@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/@sindresorhus/merge-streams": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", + "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", "license": "MIT", - "dependencies": { - "@babel/core": "^7.25.2", - "@react-native/babel-preset": "0.79.5", - "hermes-parser": "0.25.1", - "nullthrows": "^1.1.1" - }, "engines": { "node": ">=18" }, - "peerDependencies": { - "@babel/core": "*" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@react-native/metro-config/node_modules/hermes-estree": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", - "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", - "devOptional": true, - "license": "MIT" + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } }, - "node_modules/@react-native/metro-config/node_modules/hermes-parser": { - "version": "0.25.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", - "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", - "devOptional": true, - "license": "MIT", + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "license": "BSD-3-Clause", "dependencies": { - "hermes-estree": "0.25.1" + "@sinonjs/commons": "^3.0.0" } }, - "node_modules/@react-native/metro-config/node_modules/react-refresh": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", - "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", - "devOptional": true, - "license": "MIT", + "node_modules/@sqlite.org/sqlite-wasm": { + "version": "3.51.2-build8", + "resolved": "https://registry.npmjs.org/@sqlite.org/sqlite-wasm/-/sqlite-wasm-3.51.2-build8.tgz", + "integrity": "sha512-NvWLTgbqGu1XOLKxePE5Jvc5bzy6QACAQLURQnumSFm0hQms09r2rjMp5i1rvh1DXCe5Rx1FEGcEeQ9BnBB2+Q==", + "license": "Apache-2.0", "engines": { - "node": ">=0.10.0" + "node": ">=22" } }, - "node_modules/@react-native/normalize-colors": { - "version": "0.81.5", - "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.81.5.tgz", - "integrity": "sha512-0HuJ8YtqlTVRXGZuGeBejLE04wSQsibpTI+RGOyVqxZvgtlLLC/Ssw0UmbHhT4lYMp2fhdtvKZSs5emWB1zR/g==", - "license": "MIT" - }, - "node_modules/@react-native/typescript-config": { - "version": "0.76.9", - "resolved": "https://registry.npmjs.org/@react-native/typescript-config/-/typescript-config-0.76.9.tgz", - "integrity": "sha512-68xGswpZOrCvDd1Wu6H7ZdluIDmNbN0Uq8RVnm+IQMnYx90fVHL+iNW4hClgoY/TIcsWnQQL6shES4n/1kz/fg==", + "node_modules/@svgr/babel-plugin-add-jsx-attribute": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==", "dev": true, - "license": "MIT" - }, - "node_modules/@react-navigation/bottom-tabs": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@react-navigation/bottom-tabs/-/bottom-tabs-7.14.0.tgz", - "integrity": "sha512-oG2VdoInuIyK0o9o90Yo47hTCS+sPyVE7k8eSB37vt3pq3uQxjh8V3xJpsQfOfNlRUXOPB/ejH93nSBlP7ZHmQ==", "license": "MIT", - "dependencies": { - "@react-navigation/elements": "^2.9.5", - "color": "^4.2.3", - "sf-symbols-typescript": "^2.1.0" + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" }, "peerDependencies": { - "@react-navigation/native": "^7.1.28", - "react": ">= 18.2.0", - "react-native": "*", - "react-native-safe-area-context": ">= 4.0.0", - "react-native-screens": ">= 4.0.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@react-navigation/bottom-tabs/node_modules/@react-navigation/elements": { - "version": "2.9.14", - "resolved": "https://registry.npmjs.org/@react-navigation/elements/-/elements-2.9.14.tgz", - "integrity": "sha512-lKqzu+su2pI/YIZmR7L7xdOs4UL+rVXKJAMpRMBrwInEy96SjIFst6QDGpE89Dunnu3VjVpjWfByo9f2GWBHDQ==", + "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==", + "dev": true, "license": "MIT", - "dependencies": { - "color": "^4.2.3", - "use-latest-callback": "^0.2.4", - "use-sync-external-store": "^1.5.0" + "engines": { + "node": ">=14" }, - "peerDependencies": { - "@react-native-masked-view/masked-view": ">= 0.2.0", - "@react-navigation/native": "^7.2.2", - "react": ">= 18.2.0", - "react-native": "*", - "react-native-safe-area-context": ">= 4.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" }, - "peerDependenciesMeta": { - "@react-native-masked-view/masked-view": { - "optional": true - } + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@react-navigation/core": { - "version": "7.17.2", - "resolved": "https://registry.npmjs.org/@react-navigation/core/-/core-7.17.2.tgz", - "integrity": "sha512-Rt2OZwcgOmjv401uLGAKaRM6xo0fiBce/A7LfRHI1oe5FV+KooWcgAoZ2XOtgKj6UzVMuQWt3b2e6rxo/mDJRA==", + "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz", + "integrity": "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==", + "dev": true, "license": "MIT", - "dependencies": { - "@react-navigation/routers": "^7.5.3", - "escape-string-regexp": "^4.0.0", - "fast-deep-equal": "^3.1.3", - "nanoid": "^3.3.11", - "query-string": "^7.1.3", - "react-is": "^19.1.0", - "use-latest-callback": "^0.2.4", - "use-sync-external-store": "^1.5.0" + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" }, "peerDependencies": { - "react": ">= 18.2.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@react-navigation/elements": { - "version": "2.9.5", - "resolved": "https://registry.npmjs.org/@react-navigation/elements/-/elements-2.9.5.tgz", - "integrity": "sha512-iHZU8rRN1014Upz73AqNVXDvSMZDh5/ktQ1CMe21rdgnOY79RWtHHBp9qOS3VtqlUVYGkuX5GEw5mDt4tKdl0g==", + "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz", + "integrity": "sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==", + "dev": true, "license": "MIT", - "dependencies": { - "color": "^4.2.3", - "use-latest-callback": "^0.2.4", - "use-sync-external-store": "^1.5.0" + "engines": { + "node": ">=14" }, - "peerDependencies": { - "@react-native-masked-view/masked-view": ">= 0.2.0", - "@react-navigation/native": "^7.1.28", - "react": ">= 18.2.0", - "react-native": "*", - "react-native-safe-area-context": ">= 4.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" }, - "peerDependenciesMeta": { - "@react-native-masked-view/masked-view": { - "optional": true - } + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@react-navigation/native": { - "version": "7.1.28", - "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-7.1.28.tgz", - "integrity": "sha512-d1QDn+KNHfHGt3UIwOZvupvdsDdiHYZBEj7+wL2yDVo3tMezamYy60H9s3EnNVE1Ae1ty0trc7F2OKqo/RmsdQ==", + "node_modules/@svgr/babel-plugin-svg-dynamic-title": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz", + "integrity": "sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==", + "dev": true, "license": "MIT", - "peer": true, - "dependencies": { - "@react-navigation/core": "^7.14.0", - "escape-string-regexp": "^4.0.0", - "fast-deep-equal": "^3.1.3", - "nanoid": "^3.3.11", - "use-latest-callback": "^0.2.4" + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" }, "peerDependencies": { - "react": ">= 18.2.0", - "react-native": "*" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@react-navigation/native-stack": { - "version": "7.3.21", - "resolved": "https://registry.npmjs.org/@react-navigation/native-stack/-/native-stack-7.3.21.tgz", - "integrity": "sha512-oNNZHzkxILEibesamRKLodfXAaDOUvMBITKXLLeblDxnTAyIB/Kf7CmV+8nwkdAgV04kURTxV0SQI+d8gLUm6g==", + "node_modules/@svgr/babel-plugin-svg-em-dimensions": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz", + "integrity": "sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==", "dev": true, "license": "MIT", - "dependencies": { - "@react-navigation/elements": "^2.5.2", - "warn-once": "^0.1.1" + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" }, "peerDependencies": { - "@react-navigation/native": "^7.1.14", - "react": ">= 18.2.0", - "react-native": "*", - "react-native-safe-area-context": ">= 4.0.0", - "react-native-screens": ">= 4.0.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@react-navigation/native-stack/node_modules/@react-navigation/elements": { - "version": "2.9.14", - "resolved": "https://registry.npmjs.org/@react-navigation/elements/-/elements-2.9.14.tgz", - "integrity": "sha512-lKqzu+su2pI/YIZmR7L7xdOs4UL+rVXKJAMpRMBrwInEy96SjIFst6QDGpE89Dunnu3VjVpjWfByo9f2GWBHDQ==", + "node_modules/@svgr/babel-plugin-transform-react-native-svg": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz", + "integrity": "sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==", "dev": true, "license": "MIT", - "dependencies": { - "color": "^4.2.3", - "use-latest-callback": "^0.2.4", - "use-sync-external-store": "^1.5.0" + "engines": { + "node": ">=14" }, - "peerDependencies": { - "@react-native-masked-view/masked-view": ">= 0.2.0", - "@react-navigation/native": "^7.2.2", - "react": ">= 18.2.0", - "react-native": "*", - "react-native-safe-area-context": ">= 4.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" }, - "peerDependenciesMeta": { - "@react-native-masked-view/masked-view": { - "optional": true - } + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@react-navigation/routers": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@react-navigation/routers/-/routers-7.5.3.tgz", - "integrity": "sha512-1tJHg4KKRJuQ1/EvJxatrMef3NZXEPzwUIUZ3n1yJ2t7Q97siwRtbynRpQG9/69ebbtiZ8W3ScOZF/OmhvM4Rg==", + "node_modules/@svgr/babel-plugin-transform-svg-component": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz", + "integrity": "sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==", + "dev": true, "license": "MIT", - "dependencies": { - "nanoid": "^3.3.11" + "engines": { + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@react-navigation/stack": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/@react-navigation/stack/-/stack-7.7.2.tgz", - "integrity": "sha512-dBXj+YEqfLsLQmmNyZ9lgu11N0JfpFCjjP4iEtlC1dPNNau2Rv18LEejXNU/k/fIgcfzYXFdQeiyEFW5O3f5Fw==", + "node_modules/@svgr/babel-preset": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-8.1.0.tgz", + "integrity": "sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==", + "dev": true, "license": "MIT", "dependencies": { - "@react-navigation/elements": "^2.9.5", - "color": "^4.2.3", - "use-latest-callback": "^0.2.4" + "@svgr/babel-plugin-add-jsx-attribute": "8.0.0", + "@svgr/babel-plugin-remove-jsx-attribute": "8.0.0", + "@svgr/babel-plugin-remove-jsx-empty-expression": "8.0.0", + "@svgr/babel-plugin-replace-jsx-attribute-value": "8.0.0", + "@svgr/babel-plugin-svg-dynamic-title": "8.0.0", + "@svgr/babel-plugin-svg-em-dimensions": "8.0.0", + "@svgr/babel-plugin-transform-react-native-svg": "8.1.0", + "@svgr/babel-plugin-transform-svg-component": "8.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" }, "peerDependencies": { - "@react-navigation/native": "^7.1.28", - "react": ">= 18.2.0", - "react-native": "*", - "react-native-gesture-handler": ">= 2.0.0", - "react-native-safe-area-context": ">= 4.0.0", - "react-native-screens": ">= 4.0.0" + "@babel/core": "^7.0.0-0" } }, - "node_modules/@react-navigation/stack/node_modules/@react-navigation/elements": { - "version": "2.9.14", - "resolved": "https://registry.npmjs.org/@react-navigation/elements/-/elements-2.9.14.tgz", - "integrity": "sha512-lKqzu+su2pI/YIZmR7L7xdOs4UL+rVXKJAMpRMBrwInEy96SjIFst6QDGpE89Dunnu3VjVpjWfByo9f2GWBHDQ==", + "node_modules/@svgr/core": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz", + "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==", + "dev": true, "license": "MIT", + "peer": true, "dependencies": { - "color": "^4.2.3", - "use-latest-callback": "^0.2.4", - "use-sync-external-store": "^1.5.0" + "@babel/core": "^7.21.3", + "@svgr/babel-preset": "8.1.0", + "camelcase": "^6.2.0", + "cosmiconfig": "^8.1.3", + "snake-case": "^3.0.4" }, - "peerDependencies": { - "@react-native-masked-view/masked-view": ">= 0.2.0", - "@react-navigation/native": "^7.2.2", - "react": ">= 18.2.0", - "react-native": "*", - "react-native-safe-area-context": ">= 4.0.0" + "engines": { + "node": ">=14" }, - "peerDependenciesMeta": { - "@react-native-masked-view/masked-view": { - "optional": true - } + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" } }, - "node_modules/@rnmapbox/maps": { - "version": "10.1.42", - "resolved": "https://registry.npmjs.org/@rnmapbox/maps/-/maps-10.1.42.tgz", - "integrity": "sha512-9Xxc42eY+ycpcyK+YaAS+T+mFds96x3p54qGAimXgEU2aY4wRI1KHjNqYCT1hdrhAWnWiIp9Jtaen8VZvNRbeQ==", + "node_modules/@svgr/core/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@svgr/core/node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dev": true, "license": "MIT", "dependencies": { - "@turf/along": "6.5.0", - "@turf/distance": "6.5.0", - "@turf/helpers": "6.5.0", - "@turf/length": "6.5.0", - "@turf/nearest-point-on-line": "6.5.0", - "@types/geojson": "^7946.0.7", - "debounce": "^1.2.0" + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" }, "peerDependencies": { - "expo": ">=47.0.0", - "mapbox-gl": "^2.9.0", - "react": ">=16.6.1", - "react-dom": ">= 17.0.0", - "react-native": ">=0.59.9" + "typescript": ">=4.9.5" }, "peerDependenciesMeta": { - "expo": { - "optional": true - }, - "mapbox-gl": { - "optional": true - }, - "react-dom": { + "typescript": { "optional": true } } }, - "node_modules/@rnmapbox/maps/node_modules/@turf/distance": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/distance/-/distance-6.5.0.tgz", - "integrity": "sha512-xzykSLfoURec5qvQJcfifw/1mJa+5UwByZZ5TZ8iaqjGYN0vomhV9aiSLeYdUGtYRESZ+DYC/OzY+4RclZYgMg==", + "node_modules/@svgr/hast-util-to-babel-ast": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz", + "integrity": "sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==", + "dev": true, "license": "MIT", "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" + "@babel/types": "^7.21.3", + "entities": "^4.4.0" + }, + "engines": { + "node": ">=14" }, "funding": { - "url": "https://opencollective.com/turf" + "type": "github", + "url": "https://github.com/sponsors/gregberge" } }, - "node_modules/@rnmapbox/maps/node_modules/@turf/helpers": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.5.0.tgz", - "integrity": "sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==", - "license": "MIT", - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@sec-ant/readable-stream": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", - "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", + "node_modules/@svgr/plugin-jsx": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz", + "integrity": "sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==", "dev": true, - "license": "MIT" - }, - "node_modules/@sentry-internal/browser-utils": { - "version": "10.38.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/browser-utils/-/browser-utils-10.38.0.tgz", - "integrity": "sha512-UOJtYmdcxHCcV0NPfXFff/a95iXl/E0EhuQ1y0uE0BuZDMupWSF5t2BgC4HaE5Aw3RTjDF3XkSHWoIF6ohy7eA==", "license": "MIT", "dependencies": { - "@sentry/core": "10.38.0" + "@babel/core": "^7.21.3", + "@svgr/babel-preset": "8.1.0", + "@svgr/hast-util-to-babel-ast": "8.0.0", + "svg-parser": "^2.0.4" }, "engines": { - "node": ">=18" - } - }, - "node_modules/@sentry-internal/feedback": { - "version": "10.38.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-10.38.0.tgz", - "integrity": "sha512-JXneg9zRftyfy1Fyfc39bBlF/Qd8g4UDublFFkVvdc1S6JQPlK+P6q22DKz3Pc8w3ySby+xlIq/eTu9Pzqi4KA==", - "license": "MIT", - "dependencies": { - "@sentry/core": "10.38.0" + "node": ">=14" }, - "engines": { - "node": ">=18" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "*" } }, - "node_modules/@sentry-internal/replay": { - "version": "10.38.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay/-/replay-10.38.0.tgz", - "integrity": "sha512-YWIkL6/dnaiQyFiZXJ/nN+NXGv/15z45ia86bE/TMq01CubX/DUOilgsFz0pk2v/pg3tp/U2MskLO9Hz0cnqeg==", + "node_modules/@svgr/plugin-svgo": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz", + "integrity": "sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==", + "dev": true, "license": "MIT", "dependencies": { - "@sentry-internal/browser-utils": "10.38.0", - "@sentry/core": "10.38.0" + "cosmiconfig": "^8.1.3", + "deepmerge": "^4.3.1", + "svgo": "^3.0.2" }, "engines": { - "node": ">=18" + "node": ">=14" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/gregberge" + }, + "peerDependencies": { + "@svgr/core": "*" } }, - "node_modules/@sentry-internal/replay-canvas": { - "version": "10.38.0", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-10.38.0.tgz", - "integrity": "sha512-OXWM9jEqNYh4VTvrMu7v+z1anz+QKQ/fZXIZdsO7JTT2lGNZe58UUMeoq386M+Saxen8F9SUH7yTORy/8KI5qw==", + "node_modules/@svgr/plugin-svgo/node_modules/cosmiconfig": { + "version": "8.3.6", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", + "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", + "dev": true, "license": "MIT", "dependencies": { - "@sentry-internal/replay": "10.38.0", - "@sentry/core": "10.38.0" + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0", + "path-type": "^4.0.0" }, "engines": { - "node": ">=18" - } - }, - "node_modules/@sentry/babel-plugin-component-annotate": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-4.9.1.tgz", - "integrity": "sha512-0gEoi2Lb54MFYPOmdTfxlNKxI7kCOvNV7gP8lxMXJ7nCazF5OqOOZIVshfWjDLrc0QrSV6XdVvwPV9GDn4wBMg==", - "license": "MIT", - "engines": { - "node": ">= 14" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@sentry/browser": { - "version": "10.38.0", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-10.38.0.tgz", - "integrity": "sha512-3phzp1YX4wcQr9mocGWKbjv0jwtuoDBv7+Y6Yfrys/kwyaL84mDLjjQhRf4gL5SX7JdYkhBp4WaiNlR0UC4kTA==", + "node_modules/@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dev": true, "license": "MIT", "dependencies": { - "@sentry-internal/browser-utils": "10.38.0", - "@sentry-internal/feedback": "10.38.0", - "@sentry-internal/replay": "10.38.0", - "@sentry-internal/replay-canvas": "10.38.0", - "@sentry/core": "10.38.0" + "defer-to-connect": "^1.0.1" }, "engines": { - "node": ">=18" + "node": ">=6" } }, - "node_modules/@sentry/cli": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-3.2.0.tgz", - "integrity": "sha512-YLv/xgttSc8sRhK2xBoxmLS+yQlCW154ey2cXFsFe+yY73lXvQ9nZ7BkHmSc+YUl8y5CKHL+8edQLYV8O8PQMA==", - "hasInstallScript": true, - "license": "FSL-1.1-MIT", + "node_modules/@tanstack/eslint-plugin-query": { + "version": "5.91.2", + "resolved": "https://registry.npmjs.org/@tanstack/eslint-plugin-query/-/eslint-plugin-query-5.91.2.tgz", + "integrity": "sha512-UPeWKl/Acu1IuuHJlsN+eITUHqAaa9/04geHHPedY8siVarSaWprY0SVMKrkpKfk5ehRT7+/MZ5QwWuEtkWrFw==", + "dev": true, + "license": "MIT", "dependencies": { - "progress": "^2.0.3", - "proxy-from-env": "^1.1.0", - "undici": "^6.22.0", - "which": "^2.0.2" - }, - "bin": { - "sentry-cli": "bin/sentry-cli" + "@typescript-eslint/utils": "^8.44.1" }, - "engines": { - "node": ">= 18" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" }, - "optionalDependencies": { - "@sentry/cli-darwin": "3.2.0", - "@sentry/cli-linux-arm": "3.2.0", - "@sentry/cli-linux-arm64": "3.2.0", - "@sentry/cli-linux-i686": "3.2.0", - "@sentry/cli-linux-x64": "3.2.0", - "@sentry/cli-win32-arm64": "3.2.0", - "@sentry/cli-win32-i686": "3.2.0", - "@sentry/cli-win32-x64": "3.2.0" - } - }, - "node_modules/@sentry/cli-darwin": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-3.2.0.tgz", - "integrity": "sha512-2If2h0P/X9K0UrwlpZYKnxBmIFfa957lAHGe5VmN64v8nEHk8dxcrX+NS9nX9H75eccLGzGMcYk0Zt0KQgQJ3g==", - "license": "FSL-1.1-MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@sentry/cli-linux-arm": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-3.2.0.tgz", - "integrity": "sha512-NVcGcS9mceivVhi8W6iEnlcK96OlPMzOdM6xkIm+7+J0uXHgUyMyc+rT6p2QG3j8jI5I7qAl7fTHWluSX2lx3g==", - "cpu": [ - "arm" - ], - "license": "FSL-1.1-MIT", - "optional": true, - "os": [ - "linux", - "freebsd", - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@sentry/cli-linux-arm64": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-3.2.0.tgz", - "integrity": "sha512-YFpYIfYpXYzpSrIspmPOOPjXbxWp/Ve+F2hSIQb1tSKmcxFgaUm6WfuniYF8EIaLNa8YOLECf0xo78yGXBa+ug==", - "cpu": [ - "arm64" - ], - "license": "FSL-1.1-MIT", - "optional": true, - "os": [ - "linux", - "freebsd", - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@sentry/cli-linux-i686": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-3.2.0.tgz", - "integrity": "sha512-6SOxlF37NqRRKxEuvWryBM7MAgTisq0G6ZQzhI2iuWbcrmlLUDUW2Yssz3gAR01eYJ4jfpqvojSzPRDwqB0K+Q==", - "cpu": [ - "x86", - "ia32" - ], - "license": "FSL-1.1-MIT", - "optional": true, - "os": [ - "linux", - "freebsd", - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@sentry/cli-linux-x64": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-3.2.0.tgz", - "integrity": "sha512-7LRd0A74ma/1ejlTRPOoBiFiJr4LWkoE6CnA2XwAoYd0r62WUjGHtg6gIC+yElOCwtxXP7I9fOiV2BJIAq2DHw==", - "cpu": [ - "x64" - ], - "license": "FSL-1.1-MIT", - "optional": true, - "os": [ - "linux", - "freebsd", - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@sentry/cli-win32-arm64": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-win32-arm64/-/cli-win32-arm64-3.2.0.tgz", - "integrity": "sha512-uKRi/++gnGepsaGi4goIcC13YGNEHgOUcROkz4L3H8vAR7QxWv2SHy7SCN+2S6c+Q2mOd0DfY35cMW5MzTpb7g==", - "cpu": [ - "arm64" - ], - "license": "FSL-1.1-MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@sentry/cli-win32-i686": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-3.2.0.tgz", - "integrity": "sha512-/84NEPeFQne2bQWfDZ+3EzioxFR8ojSwExCgVsyTfqa/4PzmaerAGUAxiD+VcJLJTyJEHAjWXTmSZGbYjIgdyQ==", - "cpu": [ - "x86", - "ia32" - ], - "license": "FSL-1.1-MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@sentry/cli-win32-x64": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-3.2.0.tgz", - "integrity": "sha512-N9qGGT91awsh4IMyXrRHH+qIWmv9MJk9tPPAWPvLMWgdlTHT/40WYwvA4tYj80uZXU0TN8ppBWbd3ebDyOjwxA==", - "cpu": [ - "x64" - ], - "license": "FSL-1.1-MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0" } }, - "node_modules/@sentry/core": { - "version": "10.38.0", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-10.38.0.tgz", - "integrity": "sha512-1pubWDZE5y5HZEPMAZERP4fVl2NH3Ihp1A+vMoVkb3Qc66Diqj1WierAnStlZP7tCx0TBa0dK85GTW/ZFYyB9g==", + "node_modules/@tanstack/query-core": { + "version": "5.90.20", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.90.20.tgz", + "integrity": "sha512-OMD2HLpNouXEfZJWcKeVKUgQ5n+n3A2JFmBaScpNDUqSrQSjiveC7dKMe53uJUg1nDG16ttFPz2xfilz6i2uVg==", "license": "MIT", - "engines": { - "node": ">=18" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" } }, - "node_modules/@sentry/react": { - "version": "10.38.0", - "resolved": "https://registry.npmjs.org/@sentry/react/-/react-10.38.0.tgz", - "integrity": "sha512-3UiKo6QsqTyPGUt0XWRY9KLaxc/cs6Kz4vlldBSOXEL6qPDL/EfpwNJT61osRo81VFWu8pKu7ZY2bvLPryrnBQ==", + "node_modules/@tanstack/react-query": { + "version": "5.90.21", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.90.21.tgz", + "integrity": "sha512-0Lu6y5t+tvlTJMTO7oh5NSpJfpg/5D41LlThfepTixPYkJ0sE2Jj0m0f6yYqujBwIXlId87e234+MxG3D3g7kg==", "license": "MIT", + "peer": true, "dependencies": { - "@sentry/browser": "10.38.0", - "@sentry/core": "10.38.0" + "@tanstack/query-core": "5.90.20" }, - "engines": { - "node": ">=18" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" }, "peerDependencies": { - "react": "^16.14.0 || 17.x || 18.x || 19.x" + "react": "^18 || ^19" } }, - "node_modules/@sentry/react-native": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@sentry/react-native/-/react-native-8.0.0.tgz", - "integrity": "sha512-u+aXkL3Vw4gwIldIk5C0UI6ZwED/ct4FwoEU2UuIlrNmtKJffoE7I1oRnHA6AmVuq9ZvvdzOh/AhXb242HfTsg==", + "node_modules/@testing-library/react-native": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/@testing-library/react-native/-/react-native-13.2.0.tgz", + "integrity": "sha512-3FX+vW/JScXkoH8VSCRTYF4KCHC56y4AI6TMDISfLna6r+z8kaSEmxH1I6NVaFOxoWX9yaHDyI26xh7BykmqKw==", + "dev": true, "license": "MIT", "dependencies": { - "@sentry/babel-plugin-component-annotate": "4.9.1", - "@sentry/browser": "10.38.0", - "@sentry/cli": "3.2.0", - "@sentry/core": "10.38.0", - "@sentry/react": "10.38.0", - "@sentry/types": "10.38.0" + "chalk": "^4.1.2", + "jest-matcher-utils": "^29.7.0", + "pretty-format": "^29.7.0", + "redent": "^3.0.0" }, - "bin": { - "sentry-expo-upload-sourcemaps": "scripts/expo-upload-sourcemaps.js" + "engines": { + "node": ">=18" }, "peerDependencies": { - "expo": ">=49.0.0", - "react": ">=17.0.0", - "react-native": ">=0.65.0" + "jest": ">=29.0.0", + "react": ">=18.2.0", + "react-native": ">=0.71", + "react-test-renderer": ">=18.2.0" }, "peerDependenciesMeta": { - "expo": { + "jest": { "optional": true } } }, - "node_modules/@sentry/types": { - "version": "10.38.0", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-10.38.0.tgz", - "integrity": "sha512-DoeyTv/TvnoVDhHgdyv/wehieAKdyjLjEMtPOqqq/AjkP02BxeC0JYUrrWKOjV0wdLq5ZP8jKcCX8GN7awZonQ==", + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, "license": "MIT", - "dependencies": { - "@sentry/core": "10.38.0" - }, "engines": { - "node": ">=18" + "node": ">= 10" } }, - "node_modules/@sinclair/typebox": { - "version": "0.33.22", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.33.22.tgz", - "integrity": "sha512-auUj4k+f4pyrIVf4GW5UKquSZFHJWri06QgARy9C0t9ZTjJLIuNIrr1yl9bWcJWJ1Gz1vOvYN1D+QPaIlNMVkQ==", - "license": "MIT", - "peer": true + "node_modules/@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", + "dev": true, + "license": "MIT" }, - "node_modules/@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", "dev": true, - "license": "MIT", + "license": "ISC", "engines": { - "node": ">=6" + "node": ">=10.13.0" } }, - "node_modules/@sindresorhus/merge-streams": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", - "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", + "node_modules/@turf/along": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/along/-/along-6.5.0.tgz", + "integrity": "sha512-LLyWQ0AARqJCmMcIEAXF4GEu8usmd4Kbz3qk1Oy5HoRNpZX47+i5exQtmIWKdqJ1MMhW26fCTXgpsEs5zgJ5gw==", "license": "MIT", - "engines": { - "node": ">=18" + "dependencies": { + "@turf/bearing": "^6.5.0", + "@turf/destination": "^6.5.0", + "@turf/distance": "^6.5.0", + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/turf" } }, - "node_modules/@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", - "license": "BSD-3-Clause", + "node_modules/@turf/along/node_modules/@turf/distance": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/distance/-/distance-6.5.0.tgz", + "integrity": "sha512-xzykSLfoURec5qvQJcfifw/1mJa+5UwByZZ5TZ8iaqjGYN0vomhV9aiSLeYdUGtYRESZ+DYC/OzY+4RclZYgMg==", + "license": "MIT", "dependencies": { - "type-detect": "4.0.8" + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0" + }, + "funding": { + "url": "https://opencollective.com/turf" } }, - "node_modules/@sinonjs/fake-timers": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", - "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.0" + "node_modules/@turf/along/node_modules/@turf/helpers": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.5.0.tgz", + "integrity": "sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==", + "license": "MIT", + "funding": { + "url": "https://opencollective.com/turf" } }, - "node_modules/@sqlite.org/sqlite-wasm": { - "version": "3.51.2-build8", - "resolved": "https://registry.npmjs.org/@sqlite.org/sqlite-wasm/-/sqlite-wasm-3.51.2-build8.tgz", - "integrity": "sha512-NvWLTgbqGu1XOLKxePE5Jvc5bzy6QACAQLURQnumSFm0hQms09r2rjMp5i1rvh1DXCe5Rx1FEGcEeQ9BnBB2+Q==", - "license": "Apache-2.0", - "engines": { - "node": ">=22" + "node_modules/@turf/bbox": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-6.5.0.tgz", + "integrity": "sha512-RBbLaao5hXTYyyg577iuMtDB8ehxMlUqHEJiMs8jT1GHkFhr6sYre3lmLsPeYEi/ZKj5TP5tt7fkzNdJ4GIVyw==", + "license": "MIT", + "dependencies": { + "@turf/helpers": "^6.5.0", + "@turf/meta": "^6.5.0" + }, + "funding": { + "url": "https://opencollective.com/turf" } }, - "node_modules/@svgr/babel-plugin-add-jsx-attribute": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-8.0.0.tgz", - "integrity": "sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==", - "dev": true, + "node_modules/@turf/bbox-polygon": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@turf/bbox-polygon/-/bbox-polygon-7.3.4.tgz", + "integrity": "sha512-XCDYQwCA41Bum3R1xX0Na1nR4ozoe/pCYy5bxqrzyMs87kPJUIfBrD5IWxjnZyLqFpfEpolMHJz5ed1uA2PanQ==", "license": "MIT", - "engines": { - "node": ">=14" + "dependencies": { + "@turf/helpers": "7.3.4", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "url": "https://opencollective.com/turf" } }, - "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz", - "integrity": "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==", - "dev": true, + "node_modules/@turf/bbox/node_modules/@turf/helpers": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.5.0.tgz", + "integrity": "sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==", "license": "MIT", - "engines": { - "node": ">=14" - }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "url": "https://opencollective.com/turf" } }, - "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz", - "integrity": "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==", - "dev": true, + "node_modules/@turf/bearing": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/bearing/-/bearing-6.5.0.tgz", + "integrity": "sha512-dxINYhIEMzgDOztyMZc20I7ssYVNEpSv04VbMo5YPQsqa80KO3TFvbuCahMsCAW5z8Tncc8dwBlEFrmRjJG33A==", "license": "MIT", - "engines": { - "node": ">=14" + "dependencies": { + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "url": "https://opencollective.com/turf" } }, - "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-8.0.0.tgz", - "integrity": "sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@svgr/babel-plugin-svg-dynamic-title": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-8.0.0.tgz", - "integrity": "sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@svgr/babel-plugin-svg-em-dimensions": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-8.0.0.tgz", - "integrity": "sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@svgr/babel-plugin-transform-react-native-svg": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-8.1.0.tgz", - "integrity": "sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@svgr/babel-plugin-transform-svg-component": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-8.0.0.tgz", - "integrity": "sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==", - "dev": true, + "node_modules/@turf/bearing/node_modules/@turf/helpers": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.5.0.tgz", + "integrity": "sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==", "license": "MIT", - "engines": { - "node": ">=12" - }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "url": "https://opencollective.com/turf" } }, - "node_modules/@svgr/babel-preset": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-8.1.0.tgz", - "integrity": "sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==", - "dev": true, + "node_modules/@turf/boolean-contains": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/boolean-contains/-/boolean-contains-6.5.0.tgz", + "integrity": "sha512-4m8cJpbw+YQcKVGi8y0cHhBUnYT+QRfx6wzM4GI1IdtYH3p4oh/DOBJKrepQyiDzFDaNIjxuWXBh0ai1zVwOQQ==", "license": "MIT", "dependencies": { - "@svgr/babel-plugin-add-jsx-attribute": "8.0.0", - "@svgr/babel-plugin-remove-jsx-attribute": "8.0.0", - "@svgr/babel-plugin-remove-jsx-empty-expression": "8.0.0", - "@svgr/babel-plugin-replace-jsx-attribute-value": "8.0.0", - "@svgr/babel-plugin-svg-dynamic-title": "8.0.0", - "@svgr/babel-plugin-svg-em-dimensions": "8.0.0", - "@svgr/babel-plugin-transform-react-native-svg": "8.1.0", - "@svgr/babel-plugin-transform-svg-component": "8.0.0" - }, - "engines": { - "node": ">=14" + "@turf/bbox": "^6.5.0", + "@turf/boolean-point-in-polygon": "^6.5.0", + "@turf/boolean-point-on-line": "^6.5.0", + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "url": "https://opencollective.com/turf" } }, - "node_modules/@svgr/core": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@svgr/core/-/core-8.1.0.tgz", - "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==", - "dev": true, + "node_modules/@turf/boolean-contains/node_modules/@turf/boolean-point-in-polygon": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-6.5.0.tgz", + "integrity": "sha512-DtSuVFB26SI+hj0SjrvXowGTUCHlgevPAIsukssW6BG5MlNSBQAo70wpICBNJL6RjukXg8d2eXaAWuD/CqL00A==", "license": "MIT", - "peer": true, "dependencies": { - "@babel/core": "^7.21.3", - "@svgr/babel-preset": "8.1.0", - "camelcase": "^6.2.0", - "cosmiconfig": "^8.1.3", - "snake-case": "^3.0.4" - }, - "engines": { - "node": ">=14" + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" + "url": "https://opencollective.com/turf" } }, - "node_modules/@svgr/core/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, + "node_modules/@turf/boolean-contains/node_modules/@turf/helpers": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.5.0.tgz", + "integrity": "sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==", "license": "MIT", - "engines": { - "node": ">=10" - }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/turf" } }, - "node_modules/@svgr/core/node_modules/cosmiconfig": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", - "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", - "dev": true, + "node_modules/@turf/boolean-point-in-polygon": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-7.3.4.tgz", + "integrity": "sha512-v/4hfyY90Vz9cDgs2GwjQf+Lft8o7mNCLJOTz/iv8SHAIgMMX0czEoIaNVOJr7tBqPqwin1CGwsncrkf5C9n8Q==", "license": "MIT", "dependencies": { - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0", - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=14" + "@turf/helpers": "7.3.4", + "@turf/invariant": "7.3.4", + "@types/geojson": "^7946.0.10", + "point-in-polygon-hao": "^1.1.0", + "tslib": "^2.8.1" }, "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "url": "https://opencollective.com/turf" } }, - "node_modules/@svgr/core/node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, + "node_modules/@turf/boolean-point-in-polygon/node_modules/@turf/invariant": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-7.3.4.tgz", + "integrity": "sha512-88Eo4va4rce9sNZs6XiMJowWkikM3cS2TBhaCKlU+GFHdNf8PFEpiU42VDU8q5tOF6/fu21Rvlke5odgOGW4AQ==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" + "@turf/helpers": "7.3.4", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/turf" } }, - "node_modules/@svgr/hast-util-to-babel-ast": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-8.0.0.tgz", - "integrity": "sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==", - "dev": true, + "node_modules/@turf/boolean-point-on-line": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/boolean-point-on-line/-/boolean-point-on-line-6.5.0.tgz", + "integrity": "sha512-A1BbuQ0LceLHvq7F/P7w3QvfpmZqbmViIUPHdNLvZimFNLo4e6IQunmzbe+8aSStH9QRZm3VOflyvNeXvvpZEQ==", "license": "MIT", "dependencies": { - "@babel/types": "^7.21.3", - "entities": "^4.4.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - } - }, - "node_modules/@svgr/hast-util-to-babel-ast/node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0" }, "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "url": "https://opencollective.com/turf" } }, - "node_modules/@svgr/plugin-jsx": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-8.1.0.tgz", - "integrity": "sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==", - "dev": true, + "node_modules/@turf/boolean-point-on-line/node_modules/@turf/helpers": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.5.0.tgz", + "integrity": "sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==", "license": "MIT", - "dependencies": { - "@babel/core": "^7.21.3", - "@svgr/babel-preset": "8.1.0", - "@svgr/hast-util-to-babel-ast": "8.0.0", - "svg-parser": "^2.0.4" - }, - "engines": { - "node": ">=14" - }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@svgr/core": "*" + "url": "https://opencollective.com/turf" } }, - "node_modules/@svgr/plugin-svgo": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-8.1.0.tgz", - "integrity": "sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==", - "dev": true, + "node_modules/@turf/clone": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@turf/clone/-/clone-7.3.4.tgz", + "integrity": "sha512-pwQ+RyQw986uu7IulY/18NRAebwZZScb084bvVqVkTrllwLSv4oVBqUxmUMiwtp+PNdiRGRFOvNyZqtRsiD+Jw==", "license": "MIT", "dependencies": { - "cosmiconfig": "^8.1.3", - "deepmerge": "^4.3.1", - "svgo": "^3.0.2" - }, - "engines": { - "node": ">=14" + "@turf/helpers": "7.3.4", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/gregberge" - }, - "peerDependencies": { - "@svgr/core": "*" - } - }, - "node_modules/@svgr/plugin-svgo/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10" + "url": "https://opencollective.com/turf" } }, - "node_modules/@svgr/plugin-svgo/node_modules/cosmiconfig": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", - "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", - "dev": true, + "node_modules/@turf/destination": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/destination/-/destination-6.5.0.tgz", + "integrity": "sha512-4cnWQlNC8d1tItOz9B4pmJdWpXqS0vEvv65bI/Pj/genJnsL7evI0/Xw42RvEGROS481MPiU80xzvwxEvhQiMQ==", "license": "MIT", "dependencies": { - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0", - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=14" + "@turf/helpers": "^6.5.0", + "@turf/invariant": "^6.5.0" }, "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@svgr/plugin-svgo/node_modules/css-tree": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", - "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", - "dev": true, - "license": "MIT", - "dependencies": { - "mdn-data": "2.0.30", - "source-map-js": "^1.0.1" - }, - "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + "url": "https://opencollective.com/turf" } }, - "node_modules/@svgr/plugin-svgo/node_modules/mdn-data": { - "version": "2.0.30", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", - "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/@svgr/plugin-svgo/node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, + "node_modules/@turf/destination/node_modules/@turf/helpers": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.5.0.tgz", + "integrity": "sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==", "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/turf" } }, - "node_modules/@svgr/plugin-svgo/node_modules/svgo": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.3.tgz", - "integrity": "sha512-+wn7I4p7YgJhHs38k2TNjy1vCfPIfLIJWR5MnCStsN8WuuTcBnRKcMHQLMM2ijxGZmDoZwNv8ipl5aTTen62ng==", + "node_modules/@turf/distance": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@turf/distance/-/distance-7.3.1.tgz", + "integrity": "sha512-DK//doTGgYYjBkcWUywAe7wbZYcdP97hdEJ6rXYVYRoULwGGR3lhY96GNjozg6gaW9q2eSNYnZLpcL5iFVHqgw==", "dev": true, "license": "MIT", "dependencies": { - "commander": "^7.2.0", - "css-select": "^5.1.0", - "css-tree": "^2.3.1", - "css-what": "^6.1.0", - "csso": "^5.0.5", - "picocolors": "^1.0.0", - "sax": "^1.5.0" - }, - "bin": { - "svgo": "bin/svgo" - }, - "engines": { - "node": ">=14.0.0" + "@turf/helpers": "7.3.1", + "@turf/invariant": "7.3.1", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/svgo" + "url": "https://opencollective.com/turf" } }, - "node_modules/@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "node_modules/@turf/distance/node_modules/@turf/helpers": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-7.3.1.tgz", + "integrity": "sha512-zkL34JVhi5XhsuMEO0MUTIIFEJ8yiW1InMu4hu/oRqamlY4mMoZql0viEmH6Dafh/p+zOl8OYvMJ3Vm3rFshgg==", "dev": true, "license": "MIT", "dependencies": { - "defer-to-connect": "^1.0.1" + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" }, - "engines": { - "node": ">=6" + "funding": { + "url": "https://opencollective.com/turf" } }, - "node_modules/@tanstack/eslint-plugin-query": { - "version": "5.91.2", - "resolved": "https://registry.npmjs.org/@tanstack/eslint-plugin-query/-/eslint-plugin-query-5.91.2.tgz", - "integrity": "sha512-UPeWKl/Acu1IuuHJlsN+eITUHqAaa9/04geHHPedY8siVarSaWprY0SVMKrkpKfk5ehRT7+/MZ5QwWuEtkWrFw==", + "node_modules/@turf/distance/node_modules/@turf/invariant": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-7.3.1.tgz", + "integrity": "sha512-IdZJfDjIDCLH+Gu2yLFoSM7H23sdetIo5t4ET1/25X8gi3GE2XSqbZwaGjuZgNh02nisBewLqNiJs2bo+hrqZA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/utils": "^8.44.1" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" + "@turf/helpers": "7.3.1", + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0" - } - }, - "node_modules/@tanstack/query-core": { - "version": "5.90.20", - "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.90.20.tgz", - "integrity": "sha512-OMD2HLpNouXEfZJWcKeVKUgQ5n+n3A2JFmBaScpNDUqSrQSjiveC7dKMe53uJUg1nDG16ttFPz2xfilz6i2uVg==", - "license": "MIT", "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" + "url": "https://opencollective.com/turf" } }, - "node_modules/@tanstack/react-query": { - "version": "5.90.21", - "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.90.21.tgz", - "integrity": "sha512-0Lu6y5t+tvlTJMTO7oh5NSpJfpg/5D41LlThfepTixPYkJ0sE2Jj0m0f6yYqujBwIXlId87e234+MxG3D3g7kg==", + "node_modules/@turf/helpers": { + "version": "7.3.4", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-7.3.4.tgz", + "integrity": "sha512-U/S5qyqgx3WTvg4twaH0WxF3EixoTCfDsmk98g1E3/5e2YKp7JKYZdz0vivsS5/UZLJeZDEElOSFH4pUgp+l7g==", "license": "MIT", - "peer": true, "dependencies": { - "@tanstack/query-core": "5.90.20" + "@types/geojson": "^7946.0.10", + "tslib": "^2.8.1" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" - }, - "peerDependencies": { - "react": "^18 || ^19" + "url": "https://opencollective.com/turf" } }, - "node_modules/@testing-library/react-native": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/@testing-library/react-native/-/react-native-13.2.0.tgz", - "integrity": "sha512-3FX+vW/JScXkoH8VSCRTYF4KCHC56y4AI6TMDISfLna6r+z8kaSEmxH1I6NVaFOxoWX9yaHDyI26xh7BykmqKw==", - "dev": true, + "node_modules/@turf/invariant": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.5.0.tgz", + "integrity": "sha512-Wv8PRNCtPD31UVbdJE/KVAWKe7l6US+lJItRR/HOEW3eh+U/JwRCSUl/KZ7bmjM/C+zLNoreM2TU6OoLACs4eg==", "license": "MIT", "dependencies": { - "chalk": "^4.1.2", - "jest-matcher-utils": "^29.7.0", - "pretty-format": "^29.7.0", - "redent": "^3.0.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "jest": ">=29.0.0", - "react": ">=18.2.0", - "react-native": ">=0.71", - "react-test-renderer": ">=18.2.0" + "@turf/helpers": "^6.5.0" }, - "peerDependenciesMeta": { - "jest": { - "optional": true - } + "funding": { + "url": "https://opencollective.com/turf" } }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "dev": true, + "node_modules/@turf/invariant/node_modules/@turf/helpers": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.5.0.tgz", + "integrity": "sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==", "license": "MIT", - "engines": { - "node": ">= 10" + "funding": { + "url": "https://opencollective.com/turf" } }, - "node_modules/@tootallnate/quickjs-emscripten": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", - "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@turf/along": { + "node_modules/@turf/length": { "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/along/-/along-6.5.0.tgz", - "integrity": "sha512-LLyWQ0AARqJCmMcIEAXF4GEu8usmd4Kbz3qk1Oy5HoRNpZX47+i5exQtmIWKdqJ1MMhW26fCTXgpsEs5zgJ5gw==", + "resolved": "https://registry.npmjs.org/@turf/length/-/length-6.5.0.tgz", + "integrity": "sha512-5pL5/pnw52fck3oRsHDcSGrj9HibvtlrZ0QNy2OcW8qBFDNgZ4jtl6U7eATVoyWPKBHszW3dWETW+iLV7UARig==", "license": "MIT", "dependencies": { - "@turf/bearing": "^6.5.0", - "@turf/destination": "^6.5.0", "@turf/distance": "^6.5.0", "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" + "@turf/meta": "^6.5.0" }, "funding": { "url": "https://opencollective.com/turf" } }, - "node_modules/@turf/along/node_modules/@turf/distance": { + "node_modules/@turf/length/node_modules/@turf/distance": { "version": "6.5.0", "resolved": "https://registry.npmjs.org/@turf/distance/-/distance-6.5.0.tgz", "integrity": "sha512-xzykSLfoURec5qvQJcfifw/1mJa+5UwByZZ5TZ8iaqjGYN0vomhV9aiSLeYdUGtYRESZ+DYC/OzY+4RclZYgMg==", @@ -9961,7 +8581,7 @@ "url": "https://opencollective.com/turf" } }, - "node_modules/@turf/along/node_modules/@turf/helpers": { + "node_modules/@turf/length/node_modules/@turf/helpers": { "version": "6.5.0", "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.5.0.tgz", "integrity": "sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==", @@ -9970,309 +8590,10 @@ "url": "https://opencollective.com/turf" } }, - "node_modules/@turf/bbox": { + "node_modules/@turf/line-intersect": { "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-6.5.0.tgz", - "integrity": "sha512-RBbLaao5hXTYyyg577iuMtDB8ehxMlUqHEJiMs8jT1GHkFhr6sYre3lmLsPeYEi/ZKj5TP5tt7fkzNdJ4GIVyw==", - "license": "MIT", - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/bbox-polygon": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/@turf/bbox-polygon/-/bbox-polygon-7.3.4.tgz", - "integrity": "sha512-XCDYQwCA41Bum3R1xX0Na1nR4ozoe/pCYy5bxqrzyMs87kPJUIfBrD5IWxjnZyLqFpfEpolMHJz5ed1uA2PanQ==", - "license": "MIT", - "dependencies": { - "@turf/helpers": "7.3.4", - "@types/geojson": "^7946.0.10", - "tslib": "^2.8.1" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/bbox/node_modules/@turf/helpers": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.5.0.tgz", - "integrity": "sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==", - "license": "MIT", - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/bearing": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/bearing/-/bearing-6.5.0.tgz", - "integrity": "sha512-dxINYhIEMzgDOztyMZc20I7ssYVNEpSv04VbMo5YPQsqa80KO3TFvbuCahMsCAW5z8Tncc8dwBlEFrmRjJG33A==", - "license": "MIT", - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/bearing/node_modules/@turf/helpers": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.5.0.tgz", - "integrity": "sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==", - "license": "MIT", - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/boolean-contains": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-contains/-/boolean-contains-6.5.0.tgz", - "integrity": "sha512-4m8cJpbw+YQcKVGi8y0cHhBUnYT+QRfx6wzM4GI1IdtYH3p4oh/DOBJKrepQyiDzFDaNIjxuWXBh0ai1zVwOQQ==", - "license": "MIT", - "dependencies": { - "@turf/bbox": "^6.5.0", - "@turf/boolean-point-in-polygon": "^6.5.0", - "@turf/boolean-point-on-line": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/boolean-contains/node_modules/@turf/boolean-point-in-polygon": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-6.5.0.tgz", - "integrity": "sha512-DtSuVFB26SI+hj0SjrvXowGTUCHlgevPAIsukssW6BG5MlNSBQAo70wpICBNJL6RjukXg8d2eXaAWuD/CqL00A==", - "license": "MIT", - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/boolean-contains/node_modules/@turf/helpers": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.5.0.tgz", - "integrity": "sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==", - "license": "MIT", - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/boolean-point-in-polygon": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-7.3.4.tgz", - "integrity": "sha512-v/4hfyY90Vz9cDgs2GwjQf+Lft8o7mNCLJOTz/iv8SHAIgMMX0czEoIaNVOJr7tBqPqwin1CGwsncrkf5C9n8Q==", - "license": "MIT", - "dependencies": { - "@turf/helpers": "7.3.4", - "@turf/invariant": "7.3.4", - "@types/geojson": "^7946.0.10", - "point-in-polygon-hao": "^1.1.0", - "tslib": "^2.8.1" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/boolean-point-in-polygon/node_modules/@turf/invariant": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-7.3.4.tgz", - "integrity": "sha512-88Eo4va4rce9sNZs6XiMJowWkikM3cS2TBhaCKlU+GFHdNf8PFEpiU42VDU8q5tOF6/fu21Rvlke5odgOGW4AQ==", - "license": "MIT", - "dependencies": { - "@turf/helpers": "7.3.4", - "@types/geojson": "^7946.0.10", - "tslib": "^2.8.1" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/boolean-point-on-line": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/boolean-point-on-line/-/boolean-point-on-line-6.5.0.tgz", - "integrity": "sha512-A1BbuQ0LceLHvq7F/P7w3QvfpmZqbmViIUPHdNLvZimFNLo4e6IQunmzbe+8aSStH9QRZm3VOflyvNeXvvpZEQ==", - "license": "MIT", - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/boolean-point-on-line/node_modules/@turf/helpers": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.5.0.tgz", - "integrity": "sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==", - "license": "MIT", - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/clone": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/@turf/clone/-/clone-7.3.4.tgz", - "integrity": "sha512-pwQ+RyQw986uu7IulY/18NRAebwZZScb084bvVqVkTrllwLSv4oVBqUxmUMiwtp+PNdiRGRFOvNyZqtRsiD+Jw==", - "license": "MIT", - "dependencies": { - "@turf/helpers": "7.3.4", - "@types/geojson": "^7946.0.10", - "tslib": "^2.8.1" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/destination": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/destination/-/destination-6.5.0.tgz", - "integrity": "sha512-4cnWQlNC8d1tItOz9B4pmJdWpXqS0vEvv65bI/Pj/genJnsL7evI0/Xw42RvEGROS481MPiU80xzvwxEvhQiMQ==", - "license": "MIT", - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/destination/node_modules/@turf/helpers": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.5.0.tgz", - "integrity": "sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==", - "license": "MIT", - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/distance": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@turf/distance/-/distance-7.3.1.tgz", - "integrity": "sha512-DK//doTGgYYjBkcWUywAe7wbZYcdP97hdEJ6rXYVYRoULwGGR3lhY96GNjozg6gaW9q2eSNYnZLpcL5iFVHqgw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@turf/helpers": "7.3.1", - "@turf/invariant": "7.3.1", - "@types/geojson": "^7946.0.10", - "tslib": "^2.8.1" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/distance/node_modules/@turf/helpers": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-7.3.1.tgz", - "integrity": "sha512-zkL34JVhi5XhsuMEO0MUTIIFEJ8yiW1InMu4hu/oRqamlY4mMoZql0viEmH6Dafh/p+zOl8OYvMJ3Vm3rFshgg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/geojson": "^7946.0.10", - "tslib": "^2.8.1" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/distance/node_modules/@turf/invariant": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-7.3.1.tgz", - "integrity": "sha512-IdZJfDjIDCLH+Gu2yLFoSM7H23sdetIo5t4ET1/25X8gi3GE2XSqbZwaGjuZgNh02nisBewLqNiJs2bo+hrqZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@turf/helpers": "7.3.1", - "@types/geojson": "^7946.0.10", - "tslib": "^2.8.1" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/helpers": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-7.3.4.tgz", - "integrity": "sha512-U/S5qyqgx3WTvg4twaH0WxF3EixoTCfDsmk98g1E3/5e2YKp7JKYZdz0vivsS5/UZLJeZDEElOSFH4pUgp+l7g==", - "license": "MIT", - "dependencies": { - "@types/geojson": "^7946.0.10", - "tslib": "^2.8.1" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/invariant": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-6.5.0.tgz", - "integrity": "sha512-Wv8PRNCtPD31UVbdJE/KVAWKe7l6US+lJItRR/HOEW3eh+U/JwRCSUl/KZ7bmjM/C+zLNoreM2TU6OoLACs4eg==", - "license": "MIT", - "dependencies": { - "@turf/helpers": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/invariant/node_modules/@turf/helpers": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.5.0.tgz", - "integrity": "sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==", - "license": "MIT", - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/length": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/length/-/length-6.5.0.tgz", - "integrity": "sha512-5pL5/pnw52fck3oRsHDcSGrj9HibvtlrZ0QNy2OcW8qBFDNgZ4jtl6U7eATVoyWPKBHszW3dWETW+iLV7UARig==", - "license": "MIT", - "dependencies": { - "@turf/distance": "^6.5.0", - "@turf/helpers": "^6.5.0", - "@turf/meta": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/length/node_modules/@turf/distance": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/distance/-/distance-6.5.0.tgz", - "integrity": "sha512-xzykSLfoURec5qvQJcfifw/1mJa+5UwByZZ5TZ8iaqjGYN0vomhV9aiSLeYdUGtYRESZ+DYC/OzY+4RclZYgMg==", - "license": "MIT", - "dependencies": { - "@turf/helpers": "^6.5.0", - "@turf/invariant": "^6.5.0" - }, - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/length/node_modules/@turf/helpers": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.5.0.tgz", - "integrity": "sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==", - "license": "MIT", - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/@turf/line-intersect": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/line-intersect/-/line-intersect-6.5.0.tgz", - "integrity": "sha512-CS6R1tZvVQD390G9Ea4pmpM6mJGPWoL82jD46y0q1KSor9s6HupMIo1kY4Ny+AEYQl9jd21V3Scz20eldpbTVA==", + "resolved": "https://registry.npmjs.org/@turf/line-intersect/-/line-intersect-6.5.0.tgz", + "integrity": "sha512-CS6R1tZvVQD390G9Ea4pmpM6mJGPWoL82jD46y0q1KSor9s6HupMIo1kY4Ny+AEYQl9jd21V3Scz20eldpbTVA==", "license": "MIT", "dependencies": { "@turf/helpers": "^6.5.0", @@ -10654,9 +8975,9 @@ } }, "node_modules/@tybys/wasm-util": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", - "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz", + "integrity": "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==", "license": "MIT", "optional": true, "dependencies": { @@ -10705,12 +9026,12 @@ } }, "node_modules/@types/babel__traverse": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", - "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz", + "integrity": "sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==", "license": "MIT", "dependencies": { - "@babel/types": "^7.28.2" + "@babel/types": "^7.20.7" } }, "node_modules/@types/compress-commons": { @@ -10779,15 +9100,13 @@ "license": "MIT" }, "node_modules/@types/hoist-non-react-statics": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.7.tgz", - "integrity": "sha512-PQTyIulDkIDro8P+IHbKCsw7U2xxBYflVzW/FgWdCAePD9xGSidgA76/GeJ6lBKoblyhf9pBY763gbrN+1dI8g==", + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.6.tgz", + "integrity": "sha512-lPByRJUer/iN/xa4qpyL0qmL11DqNW81iU/IG1S3uvRUq4oKagz8VCxZjiWkumgt66YT3vOdDgZ0o32sGKtCEw==", "license": "MIT", "dependencies": { + "@types/react": "*", "hoist-non-react-statics": "^3.3.0" - }, - "peerDependencies": { - "@types/react": "*" } }, "node_modules/@types/istanbul-lib-coverage": { @@ -10825,6 +9144,58 @@ "pretty-format": "^30.0.0" } }, + "node_modules/@types/jest/node_modules/@jest/expect-utils": { + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.0.0.tgz", + "integrity": "sha512-UiWfsqNi/+d7xepfOv8KDcbbzcYtkWBe3a3kVDtg6M1kuN6CJ7b4HzIp5e1YHrSaQaVS8sdCoyCMCZClTLNKFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@types/jest/node_modules/@jest/schemas": { + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.0.tgz", + "integrity": "sha512-NID2VRyaEkevCRz6badhfqYwri/RvMbiHY81rk3AkK/LaiB0LSxi1RdVZ7MpZdTjNugtZeGfpL0mLs9Kp3MrQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@types/jest/node_modules/@jest/types": { + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.0.0.tgz", + "integrity": "sha512-1Nox8mAL52PKPfEnUQWBvKU/bp8FTT6AiDu76bFDEJj/qsRFSAVSldfCH3XYMqialti2zHXKvD5gN0AaHc0yKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/pattern": "30.0.0", + "@jest/schemas": "30.0.0", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@types/jest/node_modules/@sinclair/typebox": { + "version": "0.34.35", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.35.tgz", + "integrity": "sha512-C6ypdODf2VZkgRT6sFM8E1F8vR+HcffniX0Kp8MsU8PIfrlXbNCBz0jzj17GjdmjTx1OtZzdH8+iALL21UjF5A==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/jest/node_modules/ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", @@ -10838,14 +9209,134 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/@types/jest/node_modules/ci-info": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.2.0.tgz", + "integrity": "sha512-cYY9mypksY8NRqgDB1XD1RiJL338v/551niynFTGkZOO2LHuB2OmOYxDIe/ttN9AHwrqdum1360G3ald0W9kCg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@types/jest/node_modules/expect": { + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-30.0.0.tgz", + "integrity": "sha512-xCdPp6gwiR9q9lsPCHANarIkFTN/IMZso6Kkq03sOm9IIGtzK/UJqml0dkhHibGh8HKOj8BIDIpZ0BZuU7QK6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/expect-utils": "30.0.0", + "@jest/get-type": "30.0.0", + "jest-matcher-utils": "30.0.0", + "jest-message-util": "30.0.0", + "jest-mock": "30.0.0", + "jest-util": "30.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@types/jest/node_modules/jest-diff": { + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.0.0.tgz", + "integrity": "sha512-TgT1+KipV8JTLXXeFX0qSvIJR/UXiNNojjxb/awh3vYlBZyChU/NEmyKmq+wijKjWEztyrGJFL790nqMqNjTHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/diff-sequences": "30.0.0", + "@jest/get-type": "30.0.0", + "chalk": "^4.1.2", + "pretty-format": "30.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@types/jest/node_modules/jest-matcher-utils": { + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.0.0.tgz", + "integrity": "sha512-m5mrunqopkrqwG1mMdJxe1J4uGmS9AHHKYUmoxeQOxBcLjEvirIrIDwuKmUYrecPHVB/PUBpXs2gPoeA2FSSLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/get-type": "30.0.0", + "chalk": "^4.1.2", + "jest-diff": "30.0.0", + "pretty-format": "30.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@types/jest/node_modules/jest-message-util": { + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.0.0.tgz", + "integrity": "sha512-pV3qcrb4utEsa/U7UI2VayNzSDQcmCllBZLSoIucrESRu0geKThFZOjjh0kACDJFJRAQwsK7GVsmS6SpEceD8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.0.0", + "@types/stack-utils": "^2.0.3", + "chalk": "^4.1.2", + "graceful-fs": "^4.2.11", + "micromatch": "^4.0.8", + "pretty-format": "30.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@types/jest/node_modules/jest-mock": { + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.0.0.tgz", + "integrity": "sha512-W2sRA4ALXILrEetEOh2ooZG6fZ01iwVs0OWMKSSWRcUlaLr4ESHuiKXDNTg+ZVgOq8Ei5445i/Yxrv59VT+XkA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.0.0", + "@types/node": "*", + "jest-util": "30.0.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/@types/jest/node_modules/jest-util": { + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.0.0.tgz", + "integrity": "sha512-fhNBBM9uSUbd4Lzsf8l/kcAdaHD/4SgoI48en3HXcBEMwKwoleKFMZ6cYEYs21SB779PRuRCyNLmymApAm8tZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.0.0", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, "node_modules/@types/jest/node_modules/pretty-format": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.3.0.tgz", - "integrity": "sha512-oG4T3wCbfeuvljnyAzhBvpN45E8iOTXCU/TD3zXW80HA3dQ4ahdqMkWGiPWZvjpQwlbyHrPTWUAqUzGzv4l1JQ==", + "version": "30.0.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.0.0.tgz", + "integrity": "sha512-18NAOUr4ZOQiIR+BgI5NhQE7uREdx4ZyV0dyay5izh4yfQ+1T7BSvggxvRGoXocrRyevqW5OhScUjbi9GB8R8Q==", "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "30.0.5", + "@jest/schemas": "30.0.0", "ansi-styles": "^5.2.0", "react-is": "^18.3.1" }, @@ -10853,13 +9344,6 @@ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/@types/jest/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/jsdom": { "version": "20.0.1", "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.1.tgz", @@ -10887,9 +9371,9 @@ "license": "MIT" }, "node_modules/@types/lodash": { - "version": "4.17.24", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.24.tgz", - "integrity": "sha512-gIW7lQLZbue7lRSWEFql49QJJWThrTFFeIMJdp3eH4tKoxm1OvEPg02rm4wCCSHS0cL3/Fizimb35b7k8atwsQ==", + "version": "4.17.16", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.16.tgz", + "integrity": "sha512-HX7Em5NYQAXKW+1T+FiuG27NGwzJfCX3s1GjOa7ujxZa52kjJLOr4FUxT+giF6Tgxv1e+/czV/iTtBw27WTU9g==", "dev": true, "license": "MIT" }, @@ -10995,9 +9479,9 @@ } }, "node_modules/@types/readable-stream": { - "version": "4.0.23", - "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-4.0.23.tgz", - "integrity": "sha512-wwXrtQvbMHxCbBgjHaMGEmImFTQxxpfMOR/ZoQnXxB1woqkUbdLGFDgauo00Py9IudiaqSeiBiulSV9i6XIPig==", + "version": "4.0.19", + "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-4.0.19.tgz", + "integrity": "sha512-6Tgd3lMocKwOul/kwAAgSebkhdMCLhRvcJ6CKHA6wdql2qNIwK6hw3Y4PZQxn9HcJogoC/1ZOmkFM7OZKH/VrA==", "license": "MIT", "dependencies": { "@types/node": "*" @@ -11077,9 +9561,9 @@ } }, "node_modules/@types/yargs": { - "version": "17.0.35", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz", - "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==", + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", "license": "MIT", "dependencies": { "@types/yargs-parser": "*" @@ -11143,195 +9627,6 @@ "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/project-service": { - "version": "8.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.50.0.tgz", - "integrity": "sha512-Cg/nQcL1BcoTijEWyx4mkVC56r8dj44bFDvBdygifuS20f3OZCHmFbjF34DPSi07kwlFvqfv/xOLnJ5DquxSGQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.50.0", - "@typescript-eslint/types": "^8.50.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/scope-manager": { - "version": "8.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.50.0.tgz", - "integrity": "sha512-xCwfuCZjhIqy7+HKxBLrDVT5q/iq7XBVBXLn57RTIIpelLtEIZHXAF/Upa3+gaCpeV1NNS5Z9A+ID6jn50VD4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.50.0", - "@typescript-eslint/visitor-keys": "8.50.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.50.0.tgz", - "integrity": "sha512-vxd3G/ybKTSlm31MOA96gqvrRGv9RJ7LGtZCn2Vrc5htA0zCDvcMqUkifcjrWNNKXHUU3WCkYOzzVSFBd0wa2w==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/type-utils": { - "version": "8.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.50.0.tgz", - "integrity": "sha512-7OciHT2lKCewR0mFoBrvZJ4AXTMe/sYOe87289WAViOocEmDjjv8MvIOT2XESuKj9jp8u3SZYUSh89QA4S1kQw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.50.0", - "@typescript-eslint/typescript-estree": "8.50.0", - "@typescript-eslint/utils": "8.50.0", - "debug": "^4.3.4", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/types": { - "version": "8.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.50.0.tgz", - "integrity": "sha512-iX1mgmGrXdANhhITbpp2QQM2fGehBse9LbTf0sidWK6yg/NE+uhV5dfU1g6EYPlcReYmkE9QLPq/2irKAmtS9w==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.50.0.tgz", - "integrity": "sha512-W7SVAGBR/IX7zm1t70Yujpbk+zdPq/u4soeFSknWFdXIFuWsBGBOUu/Tn/I6KHSKvSh91OiMuaSnYp3mtPt5IQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/project-service": "8.50.0", - "@typescript-eslint/tsconfig-utils": "8.50.0", - "@typescript-eslint/types": "8.50.0", - "@typescript-eslint/visitor-keys": "8.50.0", - "debug": "^4.3.4", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "tinyglobby": "^0.2.15", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/utils": { - "version": "8.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.50.0.tgz", - "integrity": "sha512-87KgUXET09CRjGCi2Ejxy3PULXna63/bMYv72tCAlDJC3Yqwln0HiFJ3VJMst2+mEtNtZu5oFvX4qJGjKsnAgg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.50.0", - "@typescript-eslint/types": "8.50.0", - "@typescript-eslint/typescript-estree": "8.50.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.50.0.tgz", - "integrity": "sha512-Xzmnb58+Db78gT/CCj/PVCvK+zxbnsw6F+O1oheYszJbBSdEjVhQi3C/Xttzxgi/GLmpvOggRs1RFpiJ8+c34Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.50.0", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/brace-expansion": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", - "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { "version": "7.0.5", "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", @@ -11342,22 +9637,6 @@ "node": ">= 4" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.2" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@typescript-eslint/parser": { "version": "8.50.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.50.0.tgz", @@ -11384,7 +9663,7 @@ "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/project-service": { + "node_modules/@typescript-eslint/project-service": { "version": "8.50.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.50.0.tgz", "integrity": "sha512-Cg/nQcL1BcoTijEWyx4mkVC56r8dj44bFDvBdygifuS20f3OZCHmFbjF34DPSi07kwlFvqfv/xOLnJ5DquxSGQ==", @@ -11406,7 +9685,7 @@ "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { + "node_modules/@typescript-eslint/scope-manager": { "version": "8.50.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.50.0.tgz", "integrity": "sha512-xCwfuCZjhIqy7+HKxBLrDVT5q/iq7XBVBXLn57RTIIpelLtEIZHXAF/Upa3+gaCpeV1NNS5Z9A+ID6jn50VD4A==", @@ -11424,7 +9703,7 @@ "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/tsconfig-utils": { + "node_modules/@typescript-eslint/tsconfig-utils": { "version": "8.50.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.50.0.tgz", "integrity": "sha512-vxd3G/ybKTSlm31MOA96gqvrRGv9RJ7LGtZCn2Vrc5htA0zCDvcMqUkifcjrWNNKXHUU3WCkYOzzVSFBd0wa2w==", @@ -11441,35 +9720,17 @@ "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { - "version": "8.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.50.0.tgz", - "integrity": "sha512-iX1mgmGrXdANhhITbpp2QQM2fGehBse9LbTf0sidWK6yg/NE+uhV5dfU1g6EYPlcReYmkE9QLPq/2irKAmtS9w==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { + "node_modules/@typescript-eslint/type-utils": { "version": "8.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.50.0.tgz", - "integrity": "sha512-W7SVAGBR/IX7zm1t70Yujpbk+zdPq/u4soeFSknWFdXIFuWsBGBOUu/Tn/I6KHSKvSh91OiMuaSnYp3mtPt5IQ==", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.50.0.tgz", + "integrity": "sha512-7OciHT2lKCewR0mFoBrvZJ4AXTMe/sYOe87289WAViOocEmDjjv8MvIOT2XESuKj9jp8u3SZYUSh89QA4S1kQw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.50.0", - "@typescript-eslint/tsconfig-utils": "8.50.0", "@typescript-eslint/types": "8.50.0", - "@typescript-eslint/visitor-keys": "8.50.0", + "@typescript-eslint/typescript-estree": "8.50.0", + "@typescript-eslint/utils": "8.50.0", "debug": "^4.3.4", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "tinyglobby": "^0.2.15", "ts-api-utils": "^2.1.0" }, "engines": { @@ -11480,152 +9741,14 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.50.0.tgz", - "integrity": "sha512-Xzmnb58+Db78gT/CCj/PVCvK+zxbnsw6F+O1oheYszJbBSdEjVhQi3C/Xttzxgi/GLmpvOggRs1RFpiJ8+c34Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.50.0", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/brace-expansion": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", - "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@typescript-eslint/parser/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.2" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/project-service": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.58.0.tgz", - "integrity": "sha512-8Q/wBPWLQP1j16NxoPNIKpDZFMaxl7yWIoqXWYeWO+Bbd2mjgvoF0dxP2jKZg5+x49rgKdf7Ck473M8PC3V9lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.58.0", - "@typescript-eslint/types": "^8.58.0", - "debug": "^4.4.3" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.58.0.tgz", - "integrity": "sha512-W1Lur1oF50FxSnNdGp3Vs6P+yBRSmZiw4IIjEeYxd8UQJwhUF0gDgDD/W/Tgmh73mxgEU3qX0Bzdl/NGuSPEpQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.58.0", - "@typescript-eslint/visitor-keys": "8.58.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.58.0.tgz", - "integrity": "sha512-doNSZEVJsWEu4htiVC+PR6NpM+pa+a4ClH9INRWOWCUzMst/VA9c4gXq92F8GUD1rwhNvRLkgjfYtFXegXQF7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.58.0.tgz", - "integrity": "sha512-aGsCQImkDIqMyx1u4PrVlbi/krmDsQUs4zAcCV6M7yPcPev+RqVlndsJy9kJ8TLihW9TZ0kbDAzctpLn5o+lOg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.58.0", - "@typescript-eslint/typescript-estree": "8.58.0", - "@typescript-eslint/utils": "8.58.0", - "debug": "^4.4.3", - "ts-api-utils": "^2.5.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" - } - }, "node_modules/@typescript-eslint/types": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.58.0.tgz", - "integrity": "sha512-O9CjxypDT89fbHxRfETNoAnHj/i6IpRK0CvbVN3qibxlLdo5p5hcLmUuCCrHMpxiWSwKyI8mCP7qRNYuOJ0Uww==", + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.50.0.tgz", + "integrity": "sha512-iX1mgmGrXdANhhITbpp2QQM2fGehBse9LbTf0sidWK6yg/NE+uhV5dfU1g6EYPlcReYmkE9QLPq/2irKAmtS9w==", "dev": true, "license": "MIT", "engines": { @@ -11637,21 +9760,21 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.58.0.tgz", - "integrity": "sha512-7vv5UWbHqew/dvs+D3e1RvLv1v2eeZ9txRHPnEEBUgSNLx5ghdzjHa0sgLWYVKssH+lYmV0JaWdoubo0ncGYLA==", + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.50.0.tgz", + "integrity": "sha512-W7SVAGBR/IX7zm1t70Yujpbk+zdPq/u4soeFSknWFdXIFuWsBGBOUu/Tn/I6KHSKvSh91OiMuaSnYp3mtPt5IQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.58.0", - "@typescript-eslint/tsconfig-utils": "8.58.0", - "@typescript-eslint/types": "8.58.0", - "@typescript-eslint/visitor-keys": "8.58.0", - "debug": "^4.4.3", - "minimatch": "^10.2.2", - "semver": "^7.7.3", + "@typescript-eslint/project-service": "8.50.0", + "@typescript-eslint/tsconfig-utils": "8.50.0", + "@typescript-eslint/types": "8.50.0", + "@typescript-eslint/visitor-keys": "8.50.0", + "debug": "^4.3.4", + "minimatch": "^9.0.4", + "semver": "^7.6.0", "tinyglobby": "^0.2.15", - "ts-api-utils": "^2.5.0" + "ts-api-utils": "^2.1.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -11661,59 +9784,46 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", - "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" + "balanced-match": "^1.0.0" } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", - "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, - "license": "BlueOak-1.0.0", + "license": "ISC", "dependencies": { - "brace-expansion": "^5.0.5" + "brace-expansion": "^2.0.1" }, "engines": { - "node": "18 || 20 || >=22" + "node": ">=16 || 14 >=14.17" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/@typescript-eslint/utils": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.58.0.tgz", - "integrity": "sha512-RfeSqcFeHMHlAWzt4TBjWOAtoW9lnsAGiP3GbaX9uVgTYYrMbVnGONEfUCiSss+xMHFl+eHZiipmA8WkQ7FuNA==", + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.50.0.tgz", + "integrity": "sha512-87KgUXET09CRjGCi2Ejxy3PULXna63/bMYv72tCAlDJC3Yqwln0HiFJ3VJMst2+mEtNtZu5oFvX4qJGjKsnAgg==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.58.0", - "@typescript-eslint/types": "8.58.0", - "@typescript-eslint/typescript-estree": "8.58.0" + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.50.0", + "@typescript-eslint/types": "8.50.0", + "@typescript-eslint/typescript-estree": "8.50.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -11723,19 +9833,19 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.58.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.58.0.tgz", - "integrity": "sha512-XJ9UD9+bbDo4a4epraTwG3TsNPeiB9aShrUneAVXy8q4LuwowN+qu89/6ByLMINqvIMeI9H9hOHQtg/ijrYXzQ==", + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.50.0.tgz", + "integrity": "sha512-Xzmnb58+Db78gT/CCj/PVCvK+zxbnsw6F+O1oheYszJbBSdEjVhQi3C/Xttzxgi/GLmpvOggRs1RFpiJ8+c34Q==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.58.0", - "eslint-visitor-keys": "^5.0.0" + "@typescript-eslint/types": "8.50.0", + "eslint-visitor-keys": "^4.2.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -11746,13 +9856,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", - "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, "license": "Apache-2.0", "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "funding": { "url": "https://opencollective.com/eslint" @@ -11815,103 +9925,65 @@ "url": "https://opencollective.com/vitest" } }, - "node_modules/@vitest/utils": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-4.1.2.tgz", - "integrity": "sha512-xw2/TiX82lQHA06cgbqRKFb5lCAy3axQ4H4SoUFhUsg+wztiet+co86IAMDtF6Vm1hc7J6j09oh/rgDn+JdKIQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/pretty-format": "4.1.2", - "convert-source-map": "^2.0.0", - "tinyrainbow": "^3.1.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/utils/node_modules/@vitest/pretty-format": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.2.tgz", - "integrity": "sha512-dwQga8aejqeuB+TvXCMzSQemvV9hNEtDDpgUKDzOmNQayl2OG241PSWeJwKRH3CiC+sESrmoFd49rfnq7T4RnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "tinyrainbow": "^3.1.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/utils/node_modules/tinyrainbow": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.1.0.tgz", - "integrity": "sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, "node_modules/@vue/compiler-core": { - "version": "3.5.31", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.31.tgz", - "integrity": "sha512-k/ueL14aNIEy5Onf0OVzR8kiqF/WThgLdFhxwa4e/KF/0qe38IwIdofoSWBTvvxQOesaz6riAFAUaYjoF9fLLQ==", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.13.tgz", + "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@babel/parser": "^7.29.2", - "@vue/shared": "3.5.31", - "entities": "^7.0.1", + "@babel/parser": "^7.25.3", + "@vue/shared": "3.5.13", + "entities": "^4.5.0", "estree-walker": "^2.0.2", - "source-map-js": "^1.2.1" + "source-map-js": "^1.2.0" } }, "node_modules/@vue/compiler-dom": { - "version": "3.5.31", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.31.tgz", - "integrity": "sha512-BMY/ozS/xxjYqRFL+tKdRpATJYDTTgWSo0+AJvJNg4ig+Hgb0dOsHPXvloHQ5hmlivUqw1Yt2pPIqp4e0v1GUw==", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.13.tgz", + "integrity": "sha512-ZOJ46sMOKUjO3e94wPdCzQ6P1Lx/vhp2RSvfaab88Ajexs0AHeV0uasYhi99WPaogmBlRHNRuly8xV75cNTMDA==", "dev": true, "license": "MIT", "dependencies": { - "@vue/compiler-core": "3.5.31", - "@vue/shared": "3.5.31" + "@vue/compiler-core": "3.5.13", + "@vue/shared": "3.5.13" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.5.31", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.31.tgz", - "integrity": "sha512-M8wpPgR9UJ8MiRGjppvx9uWJfLV7A/T+/rL8s/y3QG3u0c2/YZgff3d6SuimKRIhcYnWg5fTfDMlz2E6seUW8Q==", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.13.tgz", + "integrity": "sha512-6VdaljMpD82w6c2749Zhf5T9u5uLBWKnVue6XWxprDobftnletJ8+oel7sexFfM3qIxNmVE7LSFGTpv6obNyaQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.29.2", - "@vue/compiler-core": "3.5.31", - "@vue/compiler-dom": "3.5.31", - "@vue/compiler-ssr": "3.5.31", - "@vue/shared": "3.5.31", + "@babel/parser": "^7.25.3", + "@vue/compiler-core": "3.5.13", + "@vue/compiler-dom": "3.5.13", + "@vue/compiler-ssr": "3.5.13", + "@vue/shared": "3.5.13", "estree-walker": "^2.0.2", - "magic-string": "^0.30.21", - "postcss": "^8.5.8", - "source-map-js": "^1.2.1" + "magic-string": "^0.30.11", + "postcss": "^8.4.48", + "source-map-js": "^1.2.0" } }, "node_modules/@vue/compiler-ssr": { - "version": "3.5.31", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.31.tgz", - "integrity": "sha512-h0xIMxrt/LHOvJKMri+vdYT92BrK3HFLtDqq9Pr/lVVfE4IyKZKvWf0vJFW10Yr6nX02OR4MkJwI0c1HDa1hog==", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.13.tgz", + "integrity": "sha512-wMH6vrYHxQl/IybKJagqbquvxpWCuVYpoUJfCqFZwa/JY1GdATAQ+TgVtgrwwMZ0D07QhA99rs/EAAWfvG6KpA==", "dev": true, "license": "MIT", "dependencies": { - "@vue/compiler-dom": "3.5.31", - "@vue/shared": "3.5.31" + "@vue/compiler-dom": "3.5.13", + "@vue/shared": "3.5.13" } }, "node_modules/@vue/shared": { - "version": "3.5.31", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.31.tgz", - "integrity": "sha512-nBxuiuS9Lj5bPkPbWogPUnjxxWpkRniX7e5UBQDWl6Fsf4roq9wwV+cR7ezQ4zXswNvPIlsdj1slcLB7XCsRAw==", + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.13.tgz", + "integrity": "sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==", "dev": true, "license": "MIT" }, @@ -11950,6 +10022,23 @@ "@wdio/cli": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0" } }, + "node_modules/@wdio/browserstack-service/node_modules/@wdio/logger": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.18.0.tgz", + "integrity": "sha512-HdzDrRs+ywAqbXGKqe1i/bLtCv47plz4TvsHFH3j729OooT5VH38ctFn5aLXgECmiAKDkmH/A6kOq2Zh5DIxww==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^5.1.2", + "loglevel": "^1.6.0", + "loglevel-plugin-prefix": "^0.8.4", + "safe-regex2": "^5.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18.20.0" + } + }, "node_modules/@wdio/browserstack-service/node_modules/chalk": { "version": "5.6.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", @@ -11963,32 +10052,66 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/@wdio/browserstack-service/node_modules/ret": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.5.0.tgz", + "integrity": "sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/@wdio/browserstack-service/node_modules/safe-regex2": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-5.0.0.tgz", + "integrity": "sha512-YwJwe5a51WlK7KbOJREPdjNrpViQBI3p4T50lfwPuDhZnE3XGVTlGvi+aolc5+RvxDD6bnUmjVsU9n1eboLUYw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "ret": "~0.5.0" + } + }, "node_modules/@wdio/cli": { - "version": "9.27.0", - "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-9.27.0.tgz", - "integrity": "sha512-k3kSs1sWTnDwdFLdBua7j5O//0N9k3qTj2nkyfMnkCEzOU00UMV2Y0f/yzNrn8BkkvohrJmwdEQPYx7rNhfj9g==", + "version": "9.12.7", + "resolved": "https://registry.npmjs.org/@wdio/cli/-/cli-9.12.7.tgz", + "integrity": "sha512-X764hL/nHcbMTepvr7zNF/pSvb4r3twoa5lKllkIIraRDI0cg1/AKHreX24htjHpoA5OLzjEJaydQVJpZ3RzmA==", "dev": true, "license": "MIT", "dependencies": { + "@types/node": "^20.1.1", "@vitest/snapshot": "^2.1.1", - "@wdio/config": "9.27.0", - "@wdio/globals": "9.27.0", - "@wdio/logger": "9.18.0", - "@wdio/protocols": "9.27.0", - "@wdio/types": "9.27.0", - "@wdio/utils": "9.27.0", + "@wdio/config": "9.12.6", + "@wdio/globals": "9.12.7", + "@wdio/logger": "9.4.4", + "@wdio/protocols": "9.12.5", + "@wdio/types": "9.12.6", + "@wdio/utils": "9.12.6", "async-exit-hook": "^2.0.1", - "chalk": "^5.4.1", + "chalk": "^5.2.0", "chokidar": "^4.0.0", - "create-wdio": "9.27.0", - "dotenv": "^17.2.0", + "dotenv": "^16.3.1", + "ejs": "^3.1.9", + "execa": "^9.2.0", "import-meta-resolve": "^4.0.0", + "inquirer": "^11.0.1", "lodash.flattendeep": "^4.4.0", "lodash.pickby": "^4.6.0", "lodash.union": "^4.6.0", "read-pkg-up": "^10.0.0", + "recursive-readdir": "^2.2.3", "tsx": "^4.7.2", - "webdriverio": "9.27.0", + "webdriverio": "9.12.7", "yargs": "^17.7.2" }, "bin": { @@ -11999,31 +10122,23 @@ } }, "node_modules/@wdio/cli/node_modules/@wdio/globals": { - "version": "9.27.0", - "resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-9.27.0.tgz", - "integrity": "sha512-yT6EAyvEqm+wFD11fg89BMxvFkYLgnIVCihfJx+k73Gm3utL/DfZQpSheQdwrlQzu5p7jHi/JwOD76740F5Peg==", + "version": "9.12.7", + "resolved": "https://registry.npmjs.org/@wdio/globals/-/globals-9.12.7.tgz", + "integrity": "sha512-WanmrLXRMmW3hwsXCm+x618gDsdGwkrxhiirgMC9Ny0g78qt7JLSOvAHKx+dCZtk77QwvFuNpLCd+Nxnszon9Q==", "dev": true, "license": "MIT", "engines": { "node": ">=18.20.0" }, - "peerDependencies": { - "expect-webdriverio": "^5.6.5", - "webdriverio": "^9.0.0" - }, - "peerDependenciesMeta": { - "expect-webdriverio": { - "optional": false - }, - "webdriverio": { - "optional": false - } + "optionalDependencies": { + "expect-webdriverio": "^5.1.0", + "webdriverio": "9.12.7" } }, "node_modules/@wdio/cli/node_modules/@wdio/types": { - "version": "9.27.0", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.27.0.tgz", - "integrity": "sha512-DQJ+OdRBqUBcQ30DN2Z651hEVh3OoxnlDUSRqlWy9An2AY6v9rYWTj825B6zsj5pLLEToYO1tfwWq0ab183pXg==", + "version": "9.12.6", + "resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.12.6.tgz", + "integrity": "sha512-WzZhaN834du9wjqT/Go9qPyB7VkzV2bjr6pr06DrIzxIpJq/snWOv96C6OjJu8nmYNRjV769mAxyggBUf+sUoQ==", "dev": true, "license": "MIT", "dependencies": { @@ -12033,20 +10148,10 @@ "node": ">=18.20.0" } }, - "node_modules/@wdio/cli/node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14" - } - }, "node_modules/@wdio/cli/node_modules/chalk": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", - "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", "dev": true, "license": "MIT", "engines": { @@ -12056,53 +10161,51 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@wdio/cli/node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "node_modules/@wdio/cli/node_modules/serialize-error": { + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-11.0.3.tgz", + "integrity": "sha512-2G2y++21dhj2R7iHAdd0FIzjGwuKZld+7Pl/bTU6YIkrC2ZMbVUjm+luj6A6V34Rv9XfKJDKpTWu9W4Gse1D9g==", "dev": true, "license": "MIT", "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" + "type-fest": "^2.12.2" }, "engines": { - "node": ">= 14" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@wdio/cli/node_modules/serialize-error": { - "version": "12.0.0", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-12.0.0.tgz", - "integrity": "sha512-ZYkZLAvKTKQXWuh5XpBw7CdbSzagarX39WyZ2H07CDLC5/KfsRGlIXV8d4+tfqX1M7916mRqR1QfNHSij+c9Pw==", + "node_modules/@wdio/cli/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^4.31.0" - }, + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=18" + "node": ">=12.20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/@wdio/cli/node_modules/webdriver": { - "version": "9.27.0", - "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-9.27.0.tgz", - "integrity": "sha512-w07ThZND48SIr0b4S7eFougYUyclmoUwdmju8yXvEJiXYjDjeYUpl8wZrYPEYRBylxpSx+sBHfEUBrPQkcTTRQ==", + "version": "9.12.6", + "resolved": "https://registry.npmjs.org/webdriver/-/webdriver-9.12.6.tgz", + "integrity": "sha512-Alz+JiaVW15b/Qy6zSmJeYXxvmtMIVpEAg7QDfCWqG9miZSKJYWwgWE3xoSrwYn5kTylUszqb17Pb5wyrj7YFw==", "dev": true, "license": "MIT", "dependencies": { "@types/node": "^20.1.0", "@types/ws": "^8.5.3", - "@wdio/config": "9.27.0", - "@wdio/logger": "9.18.0", - "@wdio/protocols": "9.27.0", - "@wdio/types": "9.27.0", - "@wdio/utils": "9.27.0", + "@wdio/config": "9.12.6", + "@wdio/logger": "9.4.4", + "@wdio/protocols": "9.12.5", + "@wdio/types": "9.12.6", + "@wdio/utils": "9.12.6", "deepmerge-ts": "^7.0.3", - "https-proxy-agent": "^7.0.6", - "undici": "^6.21.3", + "undici": "^6.20.1", "ws": "^8.8.0" }, "engines": { @@ -12110,28 +10213,27 @@ } }, "node_modules/@wdio/cli/node_modules/webdriverio": { - "version": "9.27.0", - "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-9.27.0.tgz", - "integrity": "sha512-Y4FbMf4bKBXpPB0lYpglzQ2GfDDe6uojmMZl85uPyrDx18NW7mqN84ZawGoIg/FRvcLaVhcOzc98WOPo725Rag==", + "version": "9.12.7", + "resolved": "https://registry.npmjs.org/webdriverio/-/webdriverio-9.12.7.tgz", + "integrity": "sha512-HxpLQrFuadfE65dqh+Qc2pdvz18FbsdpdiZogy8VUBtxRanijbOsi4cV84ffGXab8Ownzu+bNBJuJjlTBDX00Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/node": "^20.11.30", "@types/sinonjs__fake-timers": "^8.1.5", - "@wdio/config": "9.27.0", - "@wdio/logger": "9.18.0", - "@wdio/protocols": "9.27.0", - "@wdio/repl": "9.16.2", - "@wdio/types": "9.27.0", - "@wdio/utils": "9.27.0", + "@wdio/config": "9.12.6", + "@wdio/logger": "9.4.4", + "@wdio/protocols": "9.12.5", + "@wdio/repl": "9.4.4", + "@wdio/types": "9.12.6", + "@wdio/utils": "9.12.6", "archiver": "^7.0.1", "aria-query": "^5.3.0", "cheerio": "^1.0.0-rc.12", "css-shorthand-properties": "^1.1.1", "css-value": "^0.0.1", "grapheme-splitter": "^1.0.4", - "htmlfy": "^0.8.1", + "htmlfy": "^0.6.0", "is-plain-obj": "^4.1.0", "jszip": "^3.10.1", "lodash.clonedeep": "^4.5.0", @@ -12139,9 +10241,9 @@ "query-selector-shadow-dom": "^1.0.1", "resq": "^1.11.0", "rgb2hex": "0.2.5", - "serialize-error": "^12.0.0", + "serialize-error": "^11.0.3", "urlpattern-polyfill": "^10.0.0", - "webdriver": "9.27.0" + "webdriver": "9.12.6" }, "engines": { "node": ">=18.20.0" @@ -12156,28 +10258,27 @@ } }, "node_modules/@wdio/config": { - "version": "9.27.0", - "resolved": "https://registry.npmjs.org/@wdio/config/-/config-9.27.0.tgz", - "integrity": "sha512-9y8z7ugIbU6ycKrA2SqCpKh1/hobut2rDq9CLt/BNVzSlebBBVOTMiAt1XroZzcPnA7/ZqpbkpOsbpPUaAQuNQ==", + "version": "9.12.6", + "resolved": "https://registry.npmjs.org/@wdio/config/-/config-9.12.6.tgz", + "integrity": "sha512-zlOJixJUHxeoyfIN/KdM797HwJj/oNgBaEdftgJARqbXt5AVZu18vJ3zljb+wzbY2M0pl7Y4+5OFH06WlDgQ+A==", "dev": true, "license": "MIT", "dependencies": { - "@wdio/logger": "9.18.0", - "@wdio/types": "9.27.0", - "@wdio/utils": "9.27.0", + "@wdio/logger": "9.4.4", + "@wdio/types": "9.12.6", + "@wdio/utils": "9.12.6", "deepmerge-ts": "^7.0.3", "glob": "^10.2.2", - "import-meta-resolve": "^4.0.0", - "jiti": "^2.6.1" + "import-meta-resolve": "^4.0.0" }, "engines": { "node": ">=18.20.0" } }, "node_modules/@wdio/config/node_modules/@wdio/types": { - "version": "9.27.0", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.27.0.tgz", - "integrity": "sha512-DQJ+OdRBqUBcQ30DN2Z651hEVh3OoxnlDUSRqlWy9An2AY6v9rYWTj825B6zsj5pLLEToYO1tfwWq0ab183pXg==", + "version": "9.12.6", + "resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.12.6.tgz", + "integrity": "sha512-WzZhaN834du9wjqT/Go9qPyB7VkzV2bjr6pr06DrIzxIpJq/snWOv96C6OjJu8nmYNRjV769mAxyggBUf+sUoQ==", "dev": true, "license": "MIT", "dependencies": { @@ -12187,78 +10288,6 @@ "node": ">=18.20.0" } }, - "node_modules/@wdio/config/node_modules/brace-expansion": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", - "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@wdio/config/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@wdio/config/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/@wdio/config/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.2" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@wdio/config/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/@wdio/dot-reporter": { "version": "9.20.0", "resolved": "https://registry.npmjs.org/@wdio/dot-reporter/-/dot-reporter-9.20.0.tgz", @@ -12293,6 +10322,7 @@ "integrity": "sha512-i38o7wlipLllNrk2hzdDfAmk6nrqm3lR2MtAgWgtHbwznZAKkB84KpkNFfmUXw5Kg3iP1zKlSjwZpKqenuLc+Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=18.20.0" }, @@ -12331,7 +10361,7 @@ "node": ">=18.20.0" } }, - "node_modules/@wdio/logger": { + "node_modules/@wdio/local-runner/node_modules/@wdio/logger": { "version": "9.18.0", "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.18.0.tgz", "integrity": "sha512-HdzDrRs+ywAqbXGKqe1i/bLtCv47plz4TvsHFH3j729OooT5VH38ctFn5aLXgECmiAKDkmH/A6kOq2Zh5DIxww==", @@ -12348,7 +10378,20 @@ "node": ">=18.20.0" } }, - "node_modules/@wdio/logger/node_modules/chalk": { + "node_modules/@wdio/local-runner/node_modules/@wdio/repl": { + "version": "9.16.2", + "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-9.16.2.tgz", + "integrity": "sha512-FLTF0VL6+o5BSTCO7yLSXocm3kUnu31zYwzdsz4n9s5YWt83sCtzGZlZpt7TaTzb3jVUfxuHNQDTb8UMkCu0lQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "^20.1.0" + }, + "engines": { + "node": ">=18.20.0" + } + }, + "node_modules/@wdio/local-runner/node_modules/chalk": { "version": "5.6.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", @@ -12361,6 +10404,65 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/@wdio/local-runner/node_modules/ret": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.5.0.tgz", + "integrity": "sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/@wdio/local-runner/node_modules/safe-regex2": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-5.0.0.tgz", + "integrity": "sha512-YwJwe5a51WlK7KbOJREPdjNrpViQBI3p4T50lfwPuDhZnE3XGVTlGvi+aolc5+RvxDD6bnUmjVsU9n1eboLUYw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "ret": "~0.5.0" + } + }, + "node_modules/@wdio/logger": { + "version": "9.4.4", + "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.4.4.tgz", + "integrity": "sha512-BXx8RXFUW2M4dcO6t5Le95Hi2ZkTQBRsvBQqLekT2rZ6Xmw8ZKZBPf0FptnoftFGg6dYmwnDidYv/0+4PiHjpQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^5.1.2", + "loglevel": "^1.6.0", + "loglevel-plugin-prefix": "^0.8.4", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18.20.0" + } + }, + "node_modules/@wdio/logger/node_modules/chalk": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/@wdio/mocha-framework": { "version": "9.21.0", "resolved": "https://registry.npmjs.org/@wdio/mocha-framework/-/mocha-framework-9.21.0.tgz", @@ -12379,6 +10481,23 @@ "node": ">=18.20.0" } }, + "node_modules/@wdio/mocha-framework/node_modules/@wdio/logger": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.18.0.tgz", + "integrity": "sha512-HdzDrRs+ywAqbXGKqe1i/bLtCv47plz4TvsHFH3j729OooT5VH38ctFn5aLXgECmiAKDkmH/A6kOq2Zh5DIxww==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^5.1.2", + "loglevel": "^1.6.0", + "loglevel-plugin-prefix": "^0.8.4", + "safe-regex2": "^5.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18.20.0" + } + }, "node_modules/@wdio/mocha-framework/node_modules/@wdio/utils": { "version": "9.21.0", "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-9.21.0.tgz", @@ -12405,17 +10524,106 @@ "node": ">=18.20.0" } }, + "node_modules/@wdio/mocha-framework/node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/@wdio/mocha-framework/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@wdio/mocha-framework/node_modules/geckodriver": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/geckodriver/-/geckodriver-6.1.0.tgz", + "integrity": "sha512-ZRXLa4ZaYTTgUO4Eefw+RsQCleugU2QLb1ME7qTYxxuRj51yAhfnXaItXNs5/vUzfIaDHuZ+YnSF005hfp07nQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@wdio/logger": "^9.18.0", + "@zip.js/zip.js": "^2.8.11", + "decamelize": "^6.0.1", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.6", + "modern-tar": "^0.7.2" + }, + "bin": { + "geckodriver": "bin/geckodriver.js" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@wdio/mocha-framework/node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/@wdio/mocha-framework/node_modules/ret": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.5.0.tgz", + "integrity": "sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/@wdio/mocha-framework/node_modules/safe-regex2": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-5.0.0.tgz", + "integrity": "sha512-YwJwe5a51WlK7KbOJREPdjNrpViQBI3p4T50lfwPuDhZnE3XGVTlGvi+aolc5+RvxDD6bnUmjVsU9n1eboLUYw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "ret": "~0.5.0" + } + }, "node_modules/@wdio/protocols": { - "version": "9.27.0", - "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-9.27.0.tgz", - "integrity": "sha512-rIk69BsY1+6uU2PEN5FiRpI6K7HJ86YHzZRFBe4iRzKXQgGNk1zWzbdVJIuNFoOWsnmYUkK42KSSOT4Le6EmiQ==", + "version": "9.12.5", + "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-9.12.5.tgz", + "integrity": "sha512-i+yc0EZtZOh5fFuwHxvcnXeTXk2ZjFICRbcAxTNE0F2Jr4uOydvcAOw4EIIRmb9NWUSPf/bGZAA+4SEXmxmjUA==", "dev": true, "license": "MIT" }, "node_modules/@wdio/repl": { - "version": "9.16.2", - "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-9.16.2.tgz", - "integrity": "sha512-FLTF0VL6+o5BSTCO7yLSXocm3kUnu31zYwzdsz4n9s5YWt83sCtzGZlZpt7TaTzb3jVUfxuHNQDTb8UMkCu0lQ==", + "version": "9.4.4", + "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-9.4.4.tgz", + "integrity": "sha512-kchPRhoG/pCn4KhHGiL/ocNhdpR8OkD2e6sANlSUZ4TGBVi86YSIEjc2yXUwLacHknC/EnQk/SFnqd4MsNjGGg==", "dev": true, "license": "MIT", "dependencies": { @@ -12442,6 +10650,66 @@ "node": ">=18.20.0" } }, + "node_modules/@wdio/reporter/node_modules/@wdio/logger": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.18.0.tgz", + "integrity": "sha512-HdzDrRs+ywAqbXGKqe1i/bLtCv47plz4TvsHFH3j729OooT5VH38ctFn5aLXgECmiAKDkmH/A6kOq2Zh5DIxww==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^5.1.2", + "loglevel": "^1.6.0", + "loglevel-plugin-prefix": "^0.8.4", + "safe-regex2": "^5.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18.20.0" + } + }, + "node_modules/@wdio/reporter/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@wdio/reporter/node_modules/ret": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.5.0.tgz", + "integrity": "sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/@wdio/reporter/node_modules/safe-regex2": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-5.0.0.tgz", + "integrity": "sha512-YwJwe5a51WlK7KbOJREPdjNrpViQBI3p4T50lfwPuDhZnE3XGVTlGvi+aolc5+RvxDD6bnUmjVsU9n1eboLUYw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "ret": "~0.5.0" + } + }, "node_modules/@wdio/runner": { "version": "9.21.0", "resolved": "https://registry.npmjs.org/@wdio/runner/-/runner-9.21.0.tgz", @@ -12494,6 +10762,23 @@ "node": ">=18.20.0" } }, + "node_modules/@wdio/runner/node_modules/@wdio/logger": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.18.0.tgz", + "integrity": "sha512-HdzDrRs+ywAqbXGKqe1i/bLtCv47plz4TvsHFH3j729OooT5VH38ctFn5aLXgECmiAKDkmH/A6kOq2Zh5DIxww==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^5.1.2", + "loglevel": "^1.6.0", + "loglevel-plugin-prefix": "^0.8.4", + "safe-regex2": "^5.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18.20.0" + } + }, "node_modules/@wdio/runner/node_modules/@wdio/utils": { "version": "9.21.0", "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-9.21.0.tgz", @@ -12520,76 +10805,93 @@ "node": ">=18.20.0" } }, - "node_modules/@wdio/runner/node_modules/brace-expansion": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", - "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", + "node_modules/@wdio/runner/node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", "dev": true, "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" + "engines": { + "node": ">= 14" } }, - "node_modules/@wdio/runner/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "node_modules/@wdio/runner/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@wdio/runner/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/@wdio/runner/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "node_modules/@wdio/runner/node_modules/geckodriver": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/geckodriver/-/geckodriver-6.1.0.tgz", + "integrity": "sha512-ZRXLa4ZaYTTgUO4Eefw+RsQCleugU2QLb1ME7qTYxxuRj51yAhfnXaItXNs5/vUzfIaDHuZ+YnSF005hfp07nQ==", "dev": true, - "license": "ISC", + "hasInstallScript": true, + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.2" + "@wdio/logger": "^9.18.0", + "@zip.js/zip.js": "^2.8.11", + "decamelize": "^6.0.1", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.6", + "modern-tar": "^0.7.2" }, - "engines": { - "node": ">=16 || 14 >=14.17" + "bin": { + "geckodriver": "bin/geckodriver.js" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": ">=20.0.0" } }, - "node_modules/@wdio/runner/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "node_modules/@wdio/runner/node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "dev": true, - "license": "BlueOak-1.0.0", + "license": "MIT", "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + "agent-base": "^7.1.2", + "debug": "4" }, "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">= 14" + } + }, + "node_modules/@wdio/runner/node_modules/ret": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.5.0.tgz", + "integrity": "sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/@wdio/runner/node_modules/safe-regex2": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-5.0.0.tgz", + "integrity": "sha512-YwJwe5a51WlK7KbOJREPdjNrpViQBI3p4T50lfwPuDhZnE3XGVTlGvi+aolc5+RvxDD6bnUmjVsU9n1eboLUYw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "ret": "~0.5.0" } }, "node_modules/@wdio/spec-reporter": { @@ -12610,9 +10912,9 @@ } }, "node_modules/@wdio/spec-reporter/node_modules/chalk": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", - "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", "dev": true, "license": "MIT", "engines": { @@ -12636,23 +10938,22 @@ } }, "node_modules/@wdio/utils": { - "version": "9.27.0", - "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-9.27.0.tgz", - "integrity": "sha512-fUasd5OKJTy2seJfWnYZ9xlxTtY0p/Kyeuh7Tbb8kcofBqmBi2fTvM3sfZlo1tGQX9yCh+IS2N7hlfyFMmuZ+w==", + "version": "9.12.6", + "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-9.12.6.tgz", + "integrity": "sha512-JfI4CxBRQCOgToJeQNaZLv+wYNIGyJG1gqrpxUOvkrJvBgdOAmIu3dzlcKP/WviXlcxvwLQF2FK8bQVTjHv0fQ==", "dev": true, "license": "MIT", "dependencies": { "@puppeteer/browsers": "^2.2.0", - "@wdio/logger": "9.18.0", - "@wdio/types": "9.27.0", + "@wdio/logger": "9.4.4", + "@wdio/types": "9.12.6", "decamelize": "^6.0.0", "deepmerge-ts": "^7.0.3", - "edgedriver": "^6.1.2", - "geckodriver": "^6.1.0", + "edgedriver": "^6.1.1", + "geckodriver": "^5.0.0", "get-port": "^7.0.0", "import-meta-resolve": "^4.0.0", "locate-app": "^2.2.24", - "mitt": "^3.0.1", "safaridriver": "^1.0.0", "split2": "^4.2.0", "wait-port": "^1.1.0" @@ -12662,9 +10963,9 @@ } }, "node_modules/@wdio/utils/node_modules/@wdio/types": { - "version": "9.27.0", - "resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.27.0.tgz", - "integrity": "sha512-DQJ+OdRBqUBcQ30DN2Z651hEVh3OoxnlDUSRqlWy9An2AY6v9rYWTj825B6zsj5pLLEToYO1tfwWq0ab183pXg==", + "version": "9.12.6", + "resolved": "https://registry.npmjs.org/@wdio/types/-/types-9.12.6.tgz", + "integrity": "sha512-WzZhaN834du9wjqT/Go9qPyB7VkzV2bjr6pr06DrIzxIpJq/snWOv96C6OjJu8nmYNRjV769mAxyggBUf+sUoQ==", "dev": true, "license": "MIT", "dependencies": { @@ -12687,10 +10988,70 @@ "node": ">=18" } }, + "node_modules/@wdio/xvfb/node_modules/@wdio/logger": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.18.0.tgz", + "integrity": "sha512-HdzDrRs+ywAqbXGKqe1i/bLtCv47plz4TvsHFH3j729OooT5VH38ctFn5aLXgECmiAKDkmH/A6kOq2Zh5DIxww==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^5.1.2", + "loglevel": "^1.6.0", + "loglevel-plugin-prefix": "^0.8.4", + "safe-regex2": "^5.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18.20.0" + } + }, + "node_modules/@wdio/xvfb/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/@wdio/xvfb/node_modules/ret": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.5.0.tgz", + "integrity": "sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/@wdio/xvfb/node_modules/safe-regex2": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-5.0.0.tgz", + "integrity": "sha512-YwJwe5a51WlK7KbOJREPdjNrpViQBI3p4T50lfwPuDhZnE3XGVTlGvi+aolc5+RvxDD6bnUmjVsU9n1eboLUYw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "ret": "~0.5.0" + } + }, "node_modules/@xmldom/xmldom": { - "version": "0.8.12", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.12.tgz", - "integrity": "sha512-9k/gHF6n/pAi/9tqr3m3aqkuiNosYTurLLUtc7xQ9sxB/wm7WPygCv8GYa6mS0fLJEHhqMC1ATYhz++U/lRHqg==", + "version": "0.8.11", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.11.tgz", + "integrity": "sha512-cQzWCtO6C8TQiYl1ruKNn2U6Ao4o4WBBcbL61yJl84x+j5sOWWFU9X7DpND8XZG3daDppSsigMdfAIl2upQBRw==", "license": "MIT", "engines": { "node": ">=10.0.0" @@ -12704,9 +11065,9 @@ "license": "BSD-2-Clause" }, "node_modules/@zip.js/zip.js": { - "version": "2.8.26", - "resolved": "https://registry.npmjs.org/@zip.js/zip.js/-/zip.js-2.8.26.tgz", - "integrity": "sha512-RQ4h9F6DOiHxpdocUDrOl6xBM+yOtz+LkUol47AVWcfebGBDpZ7w7Xvz9PS24JgXvLGiXXzSAfdCdVy1tPlaFA==", + "version": "2.8.11", + "resolved": "https://registry.npmjs.org/@zip.js/zip.js/-/zip.js-2.8.11.tgz", + "integrity": "sha512-0fztsk/0ryJ+2PPr9EyXS5/Co7OK8q3zY/xOoozEWaUsL5x+C0cyZ4YyMuUffOO2Dx/rAdq4JMPqW0VUtm+vzA==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -12764,9 +11125,9 @@ } }, "node_modules/acorn": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", - "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "license": "MIT", "peer": true, "bin": { @@ -12798,9 +11159,9 @@ } }, "node_modules/acorn-walk": { - "version": "8.3.5", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz", - "integrity": "sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==", + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz", + "integrity": "sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==", "dev": true, "license": "MIT", "dependencies": { @@ -12837,15 +11198,16 @@ } }, "node_modules/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==", + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, "funding": { "type": "github", @@ -12869,6 +11231,28 @@ } } }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, "node_modules/anser": { "version": "1.4.10", "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz", @@ -13038,6 +11422,18 @@ "node": ">= 8" } }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/archiver": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/archiver/-/archiver-7.0.1.tgz", @@ -13074,71 +11470,48 @@ "node": ">= 14" } }, - "node_modules/archiver-utils/node_modules/brace-expansion": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", - "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", + "node_modules/archiver-utils/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/archiver-utils/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" + "engines": { + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/archiver-utils/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "license": "ISC" - }, - "node_modules/archiver-utils/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", - "license": "ISC", + "node_modules/archiver-utils/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.2" + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/archiver-utils/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "license": "BlueOak-1.0.0", + "node_modules/archiver/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "license": "MIT", "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" }, "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/arg": { @@ -13261,40 +11634,22 @@ } }, "node_modules/axios": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.14.0.tgz", - "integrity": "sha512-3Y8yrqLSwjuzpXuZ0oIYZ/XGgLwUIBU3uLvbcpb0pidD9ctpShJd43KSlEEkVQg6DS0G9NKyzOvBfUtDKEyHvQ==", + "version": "1.8.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.8.4.tgz", + "integrity": "sha512-eBSYY4Y68NNlHbHBMdeDmKNtDgXWhQsJcGqzO3iLUM0GraQFSS9cVgPX5I9b3lbdFKyYoAEGAZF1DwhTaljNAw==", "dev": true, "license": "MIT", "dependencies": { - "follow-redirects": "^1.15.11", - "form-data": "^4.0.5", - "proxy-from-env": "^2.1.0" - } - }, - "node_modules/axios/node_modules/proxy-from-env": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz", - "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, "node_modules/b4a": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.8.0.tgz", - "integrity": "sha512-qRuSmNSkGQaHwNbM7J78Wwy+ghLEYF1zNrSeMxj4Kgw6y33O3mXcQ6Ie9fRvfU/YnxWkOchPXbaLb73TkIsfdg==", - "license": "Apache-2.0", - "peerDependencies": { - "react-native-b4a": "*" - }, - "peerDependenciesMeta": { - "react-native-b4a": { - "optional": true - } - } + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz", + "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==", + "license": "Apache-2.0" }, "node_modules/babel-core": { "version": "7.0.0-bridge.0", @@ -13328,7 +11683,87 @@ "@babel/core": "^7.11.0 || ^8.0.0-0" } }, - "node_modules/babel-plugin-istanbul": { + "node_modules/babel-jest/node_modules/@jest/pattern": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", + "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "jest-regex-util": "30.0.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/babel-jest/node_modules/@jest/schemas": { + "version": "30.0.5", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz", + "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.34.0" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/babel-jest/node_modules/@jest/transform": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz", + "integrity": "sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.27.4", + "@jest/types": "30.2.0", + "@jridgewell/trace-mapping": "^0.3.25", + "babel-plugin-istanbul": "^7.0.1", + "chalk": "^4.1.2", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.11", + "jest-haste-map": "30.2.0", + "jest-regex-util": "30.0.1", + "jest-util": "30.2.0", + "micromatch": "^4.0.8", + "pirates": "^4.0.7", + "slash": "^3.0.0", + "write-file-atomic": "^5.0.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/babel-jest/node_modules/@jest/types": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz", + "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.5", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/babel-jest/node_modules/@sinclair/typebox": { + "version": "0.34.41", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", + "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", + "dev": true, + "license": "MIT" + }, + "node_modules/babel-jest/node_modules/babel-plugin-istanbul": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz", "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==", @@ -13348,6 +11783,155 @@ "node": ">=12" } }, + "node_modules/babel-jest/node_modules/ci-info": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.1.tgz", + "integrity": "sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-jest/node_modules/istanbul-lib-instrument": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/babel-jest/node_modules/jest-haste-map": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", + "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "anymatch": "^3.1.3", + "fb-watchman": "^2.0.2", + "graceful-fs": "^4.2.11", + "jest-regex-util": "30.0.1", + "jest-util": "30.2.0", + "jest-worker": "30.2.0", + "micromatch": "^4.0.8", + "walker": "^1.0.8" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.3" + } + }, + "node_modules/babel-jest/node_modules/jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/babel-jest/node_modules/jest-util": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", + "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.2.0", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/babel-jest/node_modules/jest-worker": { + "version": "30.2.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", + "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@ungap/structured-clone": "^1.3.0", + "jest-util": "30.2.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.1.1" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/babel-jest/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/babel-jest/node_modules/write-file-atomic": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", + "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/babel-plugin-jest-hoist": { "version": "30.2.0", "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.2.0.tgz", @@ -13362,13 +11946,13 @@ } }, "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.17", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.17.tgz", - "integrity": "sha512-aTyf30K/rqAsNwN76zYrdtx8obu0E4KoUME29B1xj+B3WxgvWkp943vYQ+z8Mv3lw9xHXMHpvSPOBxzAkIa94w==", + "version": "0.4.14", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.14.tgz", + "integrity": "sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==", "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.28.6", - "@babel/helper-define-polyfill-provider": "^0.6.8", + "@babel/compat-data": "^7.27.7", + "@babel/helper-define-polyfill-provider": "^0.6.5", "semver": "^6.3.1" }, "peerDependencies": { @@ -13385,25 +11969,25 @@ } }, "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.13.0.tgz", - "integrity": "sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==", + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.11.1.tgz", + "integrity": "sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==", "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.5", - "core-js-compat": "^3.43.0" + "@babel/helper-define-polyfill-provider": "^0.6.3", + "core-js-compat": "^3.40.0" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" } }, "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.8", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.8.tgz", - "integrity": "sha512-M762rNHfSF1EV3SLtnCJXFoQbbIIz0OyRwnCmV0KPC7qosSfCO0QLTSuJX3ayAebubhE6oYBAYPrBA5ljowaZg==", + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.5.tgz", + "integrity": "sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==", "license": "MIT", "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.8" + "@babel/helper-define-polyfill-provider": "^0.6.5" }, "peerDependencies": { "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" @@ -13625,16 +12209,6 @@ "@babel/core": "*" } }, - "node_modules/babel-preset-expo/node_modules/@react-native/babel-preset/node_modules/react-refresh": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", - "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/babel-preset-expo/node_modules/@react-native/codegen": { "version": "0.81.5", "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.81.5.tgz", @@ -13667,6 +12241,28 @@ "hermes-parser": "0.29.1" } }, + "node_modules/babel-preset-expo/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/babel-preset-expo/node_modules/hermes-estree": { "version": "0.29.1", "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.29.1.tgz", @@ -13708,9 +12304,9 @@ "license": "MIT" }, "node_modules/bare-addon-resolve": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/bare-addon-resolve/-/bare-addon-resolve-1.10.0.tgz", - "integrity": "sha512-sSd0jieRJlDaODOzj0oe0RjFVC1QI0ZIjGIdPkbrTXsdVVtENg14c+lHHAhHwmWCZ2nQlMhy8jA3Y5LYPc/isA==", + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/bare-addon-resolve/-/bare-addon-resolve-1.9.4.tgz", + "integrity": "sha512-unn6Vy/Yke6F99vg/7tcrvM2KUvIhTNniaSqDbam4AWkd4NhvDVSrQiRYVlNzUV2P7SPobkCK7JFVxrJk9btCg==", "license": "Apache-2.0", "dependencies": { "bare-module-resolve": "^1.10.0", @@ -13756,7 +12352,6 @@ "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz", "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==", "license": "Apache-2.0", - "peer": true, "peerDependencies": { "bare-abort-controller": "*" }, @@ -13767,16 +12362,14 @@ } }, "node_modules/bare-fs": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.6.0.tgz", - "integrity": "sha512-2YkS7NuiJceSEbyEOdSNLE9tsGd+f4+f7C+Nik/MCk27SYdwIMPT/yRKvg++FZhQXgk0KWJKJyXX9RhVV0RGqA==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.1.2.tgz", + "integrity": "sha512-8wSeOia5B7LwD4+h465y73KOdj5QHsbbuoUfPBi+pXgFJIPuG7SsiOdJuijWMyfid49eD+WivpfY7KT8gbAzBA==", "license": "Apache-2.0", "dependencies": { "bare-events": "^2.5.4", "bare-path": "^3.0.0", - "bare-stream": "^2.6.4", - "bare-url": "^2.2.2", - "fast-fifo": "^1.3.2" + "bare-stream": "^2.6.4" }, "engines": { "bare": ">=1.16.0" @@ -13804,9 +12397,9 @@ } }, "node_modules/bare-module-resolve": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/bare-module-resolve/-/bare-module-resolve-1.12.1.tgz", - "integrity": "sha512-hbmAPyFpEq8FoZMd5sFO3u6MC5feluWoGE8YKlA8fCrl6mNtx68Wjg4DTiDJcqRJaovTvOYKfYngoBUnbaT7eg==", + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/bare-module-resolve/-/bare-module-resolve-1.10.2.tgz", + "integrity": "sha512-C9COe/GhWfVXKytW3DElTkiBU+Gb2OXeaVkdGdRB/lp26TVLESHkTGS876iceAGdvtPgohfp9nX8vXHGvN3++Q==", "license": "Apache-2.0", "dependencies": { "bare-semver": "^1.0.0" @@ -13821,9 +12414,9 @@ } }, "node_modules/bare-os": { - "version": "3.8.7", - "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.8.7.tgz", - "integrity": "sha512-G4Gr1UsGeEy2qtDTZwL7JFLo2wapUarz7iTMcYcMFdS89AIQuBoyjgXZz0Utv7uHs3xA9LckhVbeBi8lEQrC+w==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.1.tgz", + "integrity": "sha512-uaIjxokhFidJP+bmmvKSgiMzj2sV5GPHaZVAIktcxcpCyBFFWO+YlikVAdhmUo2vYFvFhOXIAlldqV29L8126g==", "license": "Apache-2.0", "engines": { "bare": ">=1.14.0" @@ -13839,29 +12432,24 @@ } }, "node_modules/bare-semver": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bare-semver/-/bare-semver-1.0.2.tgz", - "integrity": "sha512-ESVaN2nzWhcI5tf3Zzcq9aqCZ676VWzqw07eEZ0qxAcEOAFYBa0pWq8sK34OQeHLY3JsfKXZS9mDyzyxGjeLzA==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bare-semver/-/bare-semver-1.0.1.tgz", + "integrity": "sha512-UtggzHLiTrmFOC/ogQ+Hy7VfoKoIwrP1UFcYtTxoCUdLtsIErT8+SWtOC2DH/snT9h+xDrcBEPcwKei1mzemgg==", "license": "Apache-2.0" }, "node_modules/bare-stream": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.12.0.tgz", - "integrity": "sha512-w28i8lkBgREV3rPXGbgK+BO66q+ZpKqRWrZLiCdmmUlLPrQ45CzkvRhN+7lnv00Gpi2zy5naRxnUFAxCECDm9g==", + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.6.5.tgz", + "integrity": "sha512-jSmxKJNJmHySi6hC42zlZnq00rga4jjxcgNZjY9N5WlOe/iOoGRtdwGsHzQv2RlH2KOYMwGUXhf2zXd32BA9RA==", "license": "Apache-2.0", "dependencies": { - "streamx": "^2.25.0", - "teex": "^1.0.1" + "streamx": "^2.21.0" }, "peerDependencies": { - "bare-abort-controller": "*", "bare-buffer": "*", "bare-events": "*" }, "peerDependenciesMeta": { - "bare-abort-controller": { - "optional": true - }, "bare-buffer": { "optional": true }, @@ -13880,9 +12468,9 @@ } }, "node_modules/bare-url": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.4.0.tgz", - "integrity": "sha512-NSTU5WN+fy/L0DDenfE8SXQna4voXuW0FHM7wH8i3/q9khUSchfPbPezO4zSFMnDGIf9YE+mt/RWhZgNRKRIXA==", + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.1.5.tgz", + "integrity": "sha512-lNImB5KLN+ggw+SYDYvqf/yCizXIyq8U/nWBlx7m4pc4TKS24SB/1WWskzGacon5cVVAC6qUzCYzI/aMYCf4Ng==", "license": "Apache-2.0", "peer": true, "dependencies": { @@ -13927,22 +12515,10 @@ ], "license": "MIT" }, - "node_modules/baseline-browser-mapping": { - "version": "2.10.13", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.13.tgz", - "integrity": "sha512-BL2sTuHOdy0YT1lYieUxTw/QMtPBC3pmlJC6xk8BBYVv6vcw3SGdKemQ+Xsx9ik2F/lYDO9tqsFQH1r9PFuHKw==", - "license": "Apache-2.0", - "bin": { - "baseline-browser-mapping": "dist/cli.cjs" - }, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/basic-ftp": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.2.0.tgz", - "integrity": "sha512-VoMINM2rqJwJgfdHq6RiUudKt2BV+FY5ZFezP/ypmwayk68+NzzAQy4XXLlqsGD4MCzq3DrmNFD/uUmBJuGoXw==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", + "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", "dev": true, "license": "MIT", "engines": { @@ -14000,15 +12576,6 @@ "node": ">=12.0.0" } }, - "node_modules/better-opn/node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/better-opn/node_modules/open": { "version": "8.4.2", "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", @@ -14126,24 +12693,10 @@ "ieee754": "^1.1.13" } }, - "node_modules/bl/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/bogon": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/bogon/-/bogon-1.2.0.tgz", - "integrity": "sha512-FqOBr/1VMzCOsoJd+fzNUMarUYki2+TKt07A2+xaulsNx4r53iJ7MV5k0jbqg7W2U0CsLqxCZOrFibdG6h6HSg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/bogon/-/bogon-1.1.0.tgz", + "integrity": "sha512-a6SnToksXHuUlgeMvI/txWmTcKz7c7iBa8f0HbXL4toN1Uza/CTQ4F7n9jSDX49TCpxv3KUP100q4sZfwLyLiw==", "license": "MIT", "dependencies": { "compact-encoding": "^2.11.0", @@ -14250,24 +12803,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/boxen/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/bplist-creator": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/bplist-creator/-/bplist-creator-0.1.0.tgz", @@ -14287,9 +12822,9 @@ } }, "node_modules/bplist-parser": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.1.tgz", - "integrity": "sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.2.tgz", + "integrity": "sha512-apC2+fspHGI3mMKj+dGevkGo/tCqVB8jMb6i+OX+E29p0Iposz07fABkRIfVUPNd5A5VbuOz1bZbnmkKLYF+wQ==", "license": "MIT", "dependencies": { "big-integer": "1.6.x" @@ -14299,9 +12834,9 @@ } }, "node_modules/brace-expansion": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", - "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", @@ -14334,9 +12869,9 @@ "license": "ISC" }, "node_modules/browserslist": { - "version": "4.28.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", - "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", + "version": "4.25.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.1.tgz", + "integrity": "sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==", "funding": [ { "type": "opencollective", @@ -14354,11 +12889,10 @@ "license": "MIT", "peer": true, "dependencies": { - "baseline-browser-mapping": "^2.10.12", - "caniuse-lite": "^1.0.30001782", - "electron-to-chromium": "^1.5.328", - "node-releases": "^2.0.36", - "update-browserslist-db": "^1.2.3" + "caniuse-lite": "^1.0.30001726", + "electron-to-chromium": "^1.5.173", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.3" }, "bin": { "browserslist": "cli.js" @@ -14368,16 +12902,17 @@ } }, "node_modules/browserstack-local": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/browserstack-local/-/browserstack-local-1.5.12.tgz", - "integrity": "sha512-xrdpG4rw6Ktxa/gM8x0esnohFlw0V33bQiUX08rrHWKbnJAG57KTHGvJ4mvgc9eRL63pEKal+WuNDg3vEUz4hA==", + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/browserstack-local/-/browserstack-local-1.5.6.tgz", + "integrity": "sha512-s0GadAkyE1XHxnmymb9atogTZbA654bcFpqGkcYEtYPaPvuvVfSXR0gw8ojn0I0Td2HEMJcGtdrkBjb1Fi/HmQ==", "dev": true, "license": "MIT", "dependencies": { "agent-base": "^6.0.2", "https-proxy-agent": "^5.0.1", "is-running": "^2.1.0", - "tree-kill": "^1.2.2" + "ps-tree": "=1.2.0", + "temp-fs": "^0.9.9" } }, "node_modules/bser": { @@ -14481,73 +13016,12 @@ "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/cacache/node_modules/brace-expansion": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", - "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/cacache/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/cacache/node_modules/lru-cache": { "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "license": "ISC" }, - "node_modules/cacache/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.2" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/cacache/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/cacheable-request": { "version": "6.1.0", "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", @@ -14854,9 +13328,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001784", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001784.tgz", - "integrity": "sha512-WU346nBTklUV9YfUl60fqRbU5ZqyXlqvo1SgigE1OAXK5bFL8LL9q1K7aap3N739l4BvNqnkm3YrGHiY9sfUQw==", + "version": "1.0.30001727", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001727.tgz", + "integrity": "sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q==", "funding": [ { "type": "opencollective", @@ -14900,10 +13374,9 @@ } }, "node_modules/chardet": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz", - "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==", - "dev": true, + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", "license": "MIT" }, "node_modules/cheap-ruler": { @@ -14913,26 +13386,26 @@ "license": "ISC" }, "node_modules/cheerio": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.2.0.tgz", - "integrity": "sha512-WDrybc/gKFpTYQutKIK6UvfcuxijIZfMfXaYm8NMsPQxSYvf+13fXUJ4rztGGbJcBQ/GF55gvrZ0Bc0bj/mqvg==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0.tgz", + "integrity": "sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww==", "dev": true, "license": "MIT", "dependencies": { "cheerio-select": "^2.1.0", "dom-serializer": "^2.0.0", "domhandler": "^5.0.3", - "domutils": "^3.2.2", - "encoding-sniffer": "^0.2.1", - "htmlparser2": "^10.1.0", - "parse5": "^7.3.0", - "parse5-htmlparser2-tree-adapter": "^7.1.0", + "domutils": "^3.1.0", + "encoding-sniffer": "^0.2.0", + "htmlparser2": "^9.1.0", + "parse5": "^7.1.2", + "parse5-htmlparser2-tree-adapter": "^7.0.0", "parse5-parser-stream": "^7.1.2", - "undici": "^7.19.0", + "undici": "^6.19.5", "whatwg-mimetype": "^4.0.0" }, "engines": { - "node": ">=20.18.1" + "node": ">=18.17" }, "funding": { "url": "https://github.com/cheeriojs/cheerio?sponsor=1" @@ -14956,16 +13429,6 @@ "url": "https://github.com/sponsors/fb55" } }, - "node_modules/cheerio/node_modules/undici": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.24.7.tgz", - "integrity": "sha512-H/nlJ/h0ggGC+uRL3ovD+G0i4bqhvsDOpbDv7At5eFLlj2b41L8QliGbnl2H7SnDiYhENphh1tQFJZf+MyfLsQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20.18.1" - } - }, "node_modules/cheerio/node_modules/whatwg-mimetype": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz", @@ -15117,14 +13580,31 @@ } }, "node_modules/cli-truncate": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-5.2.0.tgz", - "integrity": "sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-5.1.1.tgz", + "integrity": "sha512-SroPvNHxUnk+vIW/dOSfNqdy1sPEFkrTk6TUtqLCnBlo3N7TNYYkzzN7uSD6+jVjrdO4+p8nH7JzH6cIvUem6A==", "dev": true, "license": "MIT", "dependencies": { - "slice-ansi": "^8.0.0", - "string-width": "^8.2.0" + "slice-ansi": "^7.1.0", + "string-width": "^8.0.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate/node_modules/string-width": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.1.0.tgz", + "integrity": "sha512-Kxl3KJGb/gxkaUMOjRsQ8IrXiGW75O4E3RPjFIINOVH8AMl2SQ/yWdTzWwF3FevIX9LcMAjJW+GRwAlAbTSXdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-east-asian-width": "^1.3.0", + "strip-ansi": "^7.1.0" }, "engines": { "node": ">=20" @@ -15197,23 +13677,6 @@ "node": ">=8" } }, - "node_modules/cliui/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/clone": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", @@ -15272,9 +13735,9 @@ } }, "node_modules/collect-v8-coverage": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz", - "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", "dev": true, "license": "MIT" }, @@ -15327,9 +13790,9 @@ "license": "MIT" }, "node_modules/comapeocat": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/comapeocat/-/comapeocat-1.1.0.tgz", - "integrity": "sha512-PocDRe/HKHlfcvSHpXQnwAG0uHbnCRvuAIvZfsxhYvwxrrnVRY4IOV2LA0+vyVU7wIYLHuQ1YsG4i1cnwd7bZg==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/comapeocat/-/comapeocat-1.0.0.tgz", + "integrity": "sha512-Hhx/CXdJpFklif9AeS+EgNoSPxlOEvnYYzSAbZdqkbJc3c2GpECA8vo2zHCOVM+2a0X/GhR9fjbue1AaLwEkLg==", "license": "MIT", "dependencies": { "@commander-js/extra-typings": "^14.0.0", @@ -15351,13 +13814,51 @@ "comapeocat": "bin/comapeocat.mjs" } }, + "node_modules/comapeocat/node_modules/@commander-js/extra-typings": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@commander-js/extra-typings/-/extra-typings-14.0.0.tgz", + "integrity": "sha512-hIn0ncNaJRLkZrxBIp5AsW/eXEHNKYQBh0aPdoUqNgD+Io3NIykQqpKFyKcuasZhicGaEZJX/JBSIkZ4e5x8Dg==", + "license": "MIT", + "peerDependencies": { + "commander": "~14.0.0" + } + }, + "node_modules/comapeocat/node_modules/commander": { + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.2.tgz", + "integrity": "sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">=20" + } + }, + "node_modules/comapeocat/node_modules/css-tree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", + "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.12.2", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, + "node_modules/comapeocat/node_modules/mdn-data": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", + "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", + "license": "CC0-1.0" + }, "node_modules/comapeocat/node_modules/p-event": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/p-event/-/p-event-7.1.0.tgz", - "integrity": "sha512-/lkPs5W1aC3cp6vqZefpdosOn65J571sWodyfOQiF0+tmDCpU+H8Atwpu0vQROCVUlZuToDN5eyTLsMLLc54mg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-7.0.0.tgz", + "integrity": "sha512-z4Xv/ieHhi6Dx3A5xbZI8WWTn+eSRo6buGTvA8Yv2iLyX+61SUIMKcBszZRHA6e2Apld6QEDSclAuha2iUntyA==", "license": "MIT", "dependencies": { - "p-timeout": "^7.0.1" + "p-timeout": "^6.1.4" }, "engines": { "node": ">=20" @@ -15366,6 +13867,69 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/comapeocat/node_modules/p-timeout": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.4.tgz", + "integrity": "sha512-MyIV3ZA/PmyBN/ud8vV9XzwTrNtR4jFrObymZYnZqMmW0zA8Z17vnT0rBgFE/TlohB+YCHqXMgZzb3Csp49vqg==", + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/comapeocat/node_modules/parse-json": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.3.0.tgz", + "integrity": "sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.26.2", + "index-to-position": "^1.1.0", + "type-fest": "^4.39.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/comapeocat/node_modules/svgo": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-4.0.0.tgz", + "integrity": "sha512-VvrHQ+9uniE+Mvx3+C9IEe/lWasXCU0nXMY2kZeLrHNICuRiC8uMPyM14UEaMOFA5mhyQqEkB02VoQ16n3DLaw==", + "license": "MIT", + "dependencies": { + "commander": "^11.1.0", + "css-select": "^5.1.0", + "css-tree": "^3.0.1", + "css-what": "^6.1.0", + "csso": "^5.0.5", + "picocolors": "^1.1.1", + "sax": "^1.4.1" + }, + "bin": { + "svgo": "bin/svgo.js" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/svgo" + } + }, + "node_modules/comapeocat/node_modules/svgo/node_modules/commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "license": "MIT", + "engines": { + "node": ">=16" + } + }, "node_modules/combined-stream": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", @@ -15380,13 +13944,12 @@ } }, "node_modules/commander": { - "version": "14.0.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz", - "integrity": "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "license": "MIT", - "peer": true, "engines": { - "node": ">=20" + "node": ">= 10" } }, "node_modules/commondir": { @@ -15397,9 +13960,9 @@ "license": "MIT" }, "node_modules/compact-encoding": { - "version": "2.19.2", - "resolved": "https://registry.npmjs.org/compact-encoding/-/compact-encoding-2.19.2.tgz", - "integrity": "sha512-/YjhHQE/5L4F7l5Bht69dRbP9RV6zoJPeowi8bMKQxNKe3Nh6hOY8pBGoVE9fz5GaWfEd8fWJ2aU9sB4KZuMYg==", + "version": "2.16.0", + "resolved": "https://registry.npmjs.org/compact-encoding/-/compact-encoding-2.16.0.tgz", + "integrity": "sha512-zG2ul4Egc8ktfmj2vYiC6s/U3u1OkNyUGj32jrJq6qcJ4atGcEpVr+AI+VDJ3oteNfGIw/uol4oBQyB74OeGvw==", "license": "Apache-2.0", "dependencies": { "b4a": "^1.3.0" @@ -15443,6 +14006,34 @@ "node": ">= 14" } }, + "node_modules/compress-commons/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/compress-commons/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/compressible": { "version": "2.0.18", "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", @@ -15638,12 +14229,12 @@ } }, "node_modules/core-js-compat": { - "version": "3.49.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.49.0.tgz", - "integrity": "sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==", + "version": "3.44.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.44.0.tgz", + "integrity": "sha512-JepmAj2zfl6ogy34qfWtcE7nHKAJnKsQFRn++scjVS2bZFllwptzw61BZcZFYBPpUznLfAvh0LGhxKppk04ClA==", "license": "MIT", "dependencies": { - "browserslist": "^4.28.1" + "browserslist": "^4.25.1" }, "funding": { "type": "opencollective", @@ -15713,9 +14304,9 @@ } }, "node_modules/cosmiconfig/node_modules/js-yaml": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", - "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "devOptional": true, "license": "MIT", "dependencies": { @@ -15750,6 +14341,13 @@ "node": ">=4" } }, + "node_modules/cosmiconfig/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "devOptional": true, + "license": "BSD-3-Clause" + }, "node_modules/crc": { "version": "3.8.0", "resolved": "https://registry.npmjs.org/crc/-/crc-3.8.0.tgz", @@ -15772,9 +14370,9 @@ } }, "node_modules/crc-native": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/crc-native/-/crc-native-1.1.8.tgz", - "integrity": "sha512-R/RYbD8lhG5M1k0iLX49tJdwHM0ipevJPpZw2Wk7b4EShyvx2P0uaq79xyRpcknjiVGiUfjFA8Gyy0mOlhABvw==", + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/crc-native/-/crc-native-1.1.7.tgz", + "integrity": "sha512-LUQBHdOOGZGYWsGSIYbh9oPNkovh/xNr5B6IBAgt2XTU9AskamfrHDSNTUhrYLO6wGv25EHKxjuUlZEZlWVz/A==", "license": "Apache-2.0", "optional": true, "dependencies": { @@ -15827,6 +14425,22 @@ "node": ">= 14" } }, + "node_modules/crc32-stream/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/create-jest": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", @@ -15849,103 +14463,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/create-jest/node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/create-jest/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/create-jest/node_modules/@sinclair/typebox": { - "version": "0.27.10", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", - "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", - "dev": true, - "license": "MIT" - }, - "node_modules/create-jest/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/create-wdio": { - "version": "9.27.0", - "resolved": "https://registry.npmjs.org/create-wdio/-/create-wdio-9.27.0.tgz", - "integrity": "sha512-6ot1WVks07Otj+5jDsi/NU0L3avsIA9C1mh0MtlXsR6kSvZNxwc56NH6sX3M1p+5e8Ysl777Vs4PqmgHh7LrNg==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^5.3.0", - "commander": "^14.0.0", - "cross-spawn": "^7.0.3", - "ejs": "^3.1.10", - "execa": "^9.6.0", - "import-meta-resolve": "^4.1.0", - "inquirer": "^12.7.0", - "normalize-package-data": "^7.0.0", - "read-pkg-up": "^10.1.0", - "recursive-readdir": "^2.2.3", - "semver": "^7.6.3", - "type-fest": "^4.41.0", - "yargs": "^17.7.2" - }, - "bin": { - "create-wdio": "bin/wdio.js" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/create-wdio/node_modules/chalk": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", - "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -15964,16 +14481,15 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/css-select": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.2.2.tgz", - "integrity": "sha512-TizTzUddG/xYLA3NXodFM0fSbNizXjOKhqiQQwvhlspadZokn1KDy0NZFS0wuEubIYAV5/c1/lAr0TaaFXEXzw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", @@ -16013,9 +14529,9 @@ "dev": true }, "node_modules/css-what": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.2.2.tgz", - "integrity": "sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", "license": "BSD-2-Clause", "engines": { "node": ">= 6" @@ -16152,9 +14668,9 @@ "license": "MIT" }, "node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -16247,9 +14763,9 @@ } }, "node_modules/dedent": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.2.tgz", - "integrity": "sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==", + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.1.tgz", + "integrity": "sha512-9JmrhGZpOlEgOLdQgSm0zxFaYoQon408V1v49aqTWuXENVlnCuY9JBZcXZiCsZQWDjTm5Qf/nIvAy77mXDAjEg==", "dev": true, "license": "MIT", "peerDependencies": { @@ -16261,16 +14777,6 @@ } } }, - "node_modules/deep-eql": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", - "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/deep-extend": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", @@ -16307,9 +14813,9 @@ } }, "node_modules/default-browser": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.5.0.tgz", - "integrity": "sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==", + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", + "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", "license": "MIT", "dependencies": { "bundle-name": "^4.1.0", @@ -16323,9 +14829,9 @@ } }, "node_modules/default-browser-id": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.1.tgz", - "integrity": "sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", + "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", "license": "MIT", "engines": { "node": ">=18" @@ -16371,15 +14877,12 @@ } }, "node_modules/define-lazy-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", - "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/define-properties": { @@ -16473,9 +14976,9 @@ } }, "node_modules/depcheck/node_modules/brace-expansion": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", - "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "license": "MIT", "dependencies": { @@ -16542,9 +15045,9 @@ } }, "node_modules/depcheck/node_modules/js-yaml": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", - "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, "license": "MIT", "dependencies": { @@ -16556,13 +15059,13 @@ } }, "node_modules/depcheck/node_modules/minimatch": { - "version": "7.4.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.9.tgz", - "integrity": "sha512-Brg/fp/iAVDOQoHxkuN5bEYhyQlZhxddI78yWsCbeEwTHXQjlNLtiJDUsp1GIptVqMI7/gkJMz4vVAc01mpoBw==", + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", + "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", "dev": true, "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.2" + "brace-expansion": "^2.0.1" }, "engines": { "node": ">=10" @@ -16571,23 +15074,17 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/depcheck/node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "node_modules/depcheck/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, "engines": { - "node": ">=8" + "node": ">=8.6" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/jonschlinkert" } }, "node_modules/depcheck/node_modules/readdirp": { @@ -16603,6 +15100,13 @@ "node": ">=8.10.0" } }, + "node_modules/depcheck/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, "node_modules/depcheck/node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -16631,28 +15135,10 @@ "node": ">=8" } }, - "node_modules/depcheck/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/depcheck/node_modules/yaml": { - "version": "1.10.3", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.3.tgz", - "integrity": "sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==", + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true, "license": "ISC", "engines": { @@ -16695,9 +15181,9 @@ "license": "MIT" }, "node_modules/dereference-json-schema": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dereference-json-schema/-/dereference-json-schema-0.2.2.tgz", - "integrity": "sha512-w8dUsJyrzH4Zsj8W/tKcjLsmcTKXfdNf+n3BBm1SAfnqpaCodgEUWqQGJ+pNb9NOqPwYMGvUnZZ8nQfeFjJlbQ==", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/dereference-json-schema/-/dereference-json-schema-0.2.1.tgz", + "integrity": "sha512-uzJsrg225owJyRQ8FNTPHIuBOdSzIZlHhss9u6W8mp7jJldHqGuLv9cULagP/E26QVJDnjtG8U7Dw139mM1ydA==", "dev": true, "license": "MIT" }, @@ -16741,9 +15227,9 @@ } }, "node_modules/diff": { - "version": "8.0.4", - "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.4.tgz", - "integrity": "sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.2.tgz", + "integrity": "sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -16787,18 +15273,6 @@ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, - "node_modules/dom-serializer/node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/domelementtype": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", @@ -16896,9 +15370,9 @@ } }, "node_modules/dot-prop-extra/node_modules/type-fest": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-5.5.0.tgz", - "integrity": "sha512-PlBfpQwiUvGViBNX84Yxwjsdhd1TUlXr6zjX7eoirtCPIr08NAmxwa+fcYBTeRQxHo9YC9wwF3m9i700sHma8g==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-5.1.0.tgz", + "integrity": "sha512-wQ531tuWvB6oK+pchHIu5lHe5f5wpSCqB8Kf4dWQRbOYc9HTge7JL0G4Qd44bh6QuJCccIzL3bugb8GI0MwHrg==", "license": "(MIT OR CC0-1.0)", "dependencies": { "tagged-tag": "^1.0.0" @@ -16911,9 +15385,9 @@ } }, "node_modules/dotenv": { - "version": "17.4.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.4.0.tgz", - "integrity": "sha512-kCKF62fwtzwYm0IGBNjRUjtJgMfGapII+FslMHIjMR5KTnwEmBmWLDRSnc3XSNP8bNy34tekgQyDT0hr7pERRQ==", + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz", + "integrity": "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -16939,7 +15413,20 @@ "dotenv": "cli.js" } }, - "node_modules/dotenv-expand": { + "node_modules/dotenv-cli/node_modules/dotenv": { + "version": "17.2.3", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.3.tgz", + "integrity": "sha512-JVUnt+DUIzu87TABbhPmNfVdBDt18BLOWjMUFJMSi/Qqg7NTYtabbvSNJGOJ7afbRuv9D/lngizHtP7QyLQ+9w==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dotenv-cli/node_modules/dotenv-expand": { "version": "12.0.3", "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-12.0.3.tgz", "integrity": "sha512-uc47g4b+4k/M/SeaW1y4OApx+mtLWl92l5LMPP0GNXctZqELk+YGgOPIIC5elYmUH4OuoK3JLhuRUYegeySiFA==", @@ -16955,7 +15442,7 @@ "url": "https://dotenvx.com" } }, - "node_modules/dotenv-expand/node_modules/dotenv": { + "node_modules/dotenv-cli/node_modules/dotenv-expand/node_modules/dotenv": { "version": "16.6.1", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", @@ -16968,6 +15455,16 @@ "url": "https://dotenvx.com" } }, + "node_modules/dotenv-expand": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz", + "integrity": "sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, "node_modules/drizzle-orm": { "version": "1.0.0-beta.1-fd8bfcc", "resolved": "https://registry.npmjs.org/drizzle-orm/-/drizzle-orm-1.0.0-beta.1-fd8bfcc.tgz", @@ -17099,6 +15596,13 @@ "node": ">= 0.4" } }, + "node_modules/duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true, + "license": "MIT" + }, "node_modules/duplexer3": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", @@ -17119,21 +15623,6 @@ "stream-shift": "^1.0.2" } }, - "node_modules/duplexify/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -17171,9 +15660,9 @@ } }, "node_modules/edgedriver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/edgedriver/-/edgedriver-6.3.0.tgz", - "integrity": "sha512-ggEQL+oEyIcM4nP2QC3AtCQ04o4kDNefRM3hja0odvlPSnsaxiruMxEZ93v3gDCKWYW6BXUr51PPradb+3nffw==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/edgedriver/-/edgedriver-6.2.0.tgz", + "integrity": "sha512-49G6010o0VYXUMNi5OvxqE9O/kazs0qmJVqHcSHNvp1VfojO21Kb/NaJN40uy11yrlGHRp7y6a372xoCnShzlA==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -17182,7 +15671,7 @@ "@zip.js/zip.js": "^2.8.11", "decamelize": "^6.0.1", "edge-paths": "^3.0.5", - "fast-xml-parser": "^5.3.3", + "fast-xml-parser": "^5.3.2", "http-proxy-agent": "^7.0.2", "https-proxy-agent": "^7.0.6", "which": "^6.0.0" @@ -17194,16 +15683,46 @@ "node": ">=20.0.0" } }, + "node_modules/edgedriver/node_modules/@wdio/logger": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.18.0.tgz", + "integrity": "sha512-HdzDrRs+ywAqbXGKqe1i/bLtCv47plz4TvsHFH3j729OooT5VH38ctFn5aLXgECmiAKDkmH/A6kOq2Zh5DIxww==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^5.1.2", + "loglevel": "^1.6.0", + "loglevel-plugin-prefix": "^0.8.4", + "safe-regex2": "^5.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18.20.0" + } + }, "node_modules/edgedriver/node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", "dev": true, "license": "MIT", "engines": { "node": ">= 14" } }, + "node_modules/edgedriver/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, "node_modules/edgedriver/node_modules/https-proxy-agent": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", @@ -17219,23 +15738,53 @@ } }, "node_modules/edgedriver/node_modules/isexe": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-4.0.0.tgz", - "integrity": "sha512-FFUtZMpoZ8RqHS3XeXEmHWLA4thH+ZxCv2lOiPIn1Xc7CxrqhWzNSDzD+/chS/zbYezmiwWLdQC09JdQKmthOw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", "dev": true, - "license": "BlueOak-1.0.0", + "license": "ISC", "engines": { - "node": ">=20" + "node": ">=16" + } + }, + "node_modules/edgedriver/node_modules/ret": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.5.0.tgz", + "integrity": "sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/edgedriver/node_modules/safe-regex2": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-5.0.0.tgz", + "integrity": "sha512-YwJwe5a51WlK7KbOJREPdjNrpViQBI3p4T50lfwPuDhZnE3XGVTlGvi+aolc5+RvxDD6bnUmjVsU9n1eboLUYw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "ret": "~0.5.0" } }, "node_modules/edgedriver/node_modules/which": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/which/-/which-6.0.1.tgz", - "integrity": "sha512-oGLe46MIrCRqX7ytPUf66EAYvdeMIZYn3WaocqqKZAxrBpkqHfL/qvTyJ/bTk5+AqHCjXmrv3CEWgy368zhRUg==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-6.0.0.tgz", + "integrity": "sha512-f+gEpIKMR9faW/JgAgPK1D7mekkFoqbmiwvNzuhsHetni20QSgzg9Vhn0g2JSJkkfehQnqdUAx7/e15qS1lPxg==", "dev": true, "license": "ISC", "dependencies": { - "isexe": "^4.0.0" + "isexe": "^3.1.1" }, "bin": { "node-which": "bin/which.js" @@ -17267,9 +15816,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.331", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.331.tgz", - "integrity": "sha512-IbxXrsTlD3hRodkLnbxAPP4OuJYdWCeM3IOdT+CpcMoIwIoDfCmRpEtSPfwBXxVkg9xmBeY7Lz2Eo2TDn/HC3Q==", + "version": "1.5.180", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.180.tgz", + "integrity": "sha512-ED+GEyEh3kYMwt2faNmgMB0b8O5qtATGgR4RmRsIp4T6p7B8vdMbIedYndnvZfsaXvSzegtpfqRMDNCjjiSduA==", "license": "ISC" }, "node_modules/emittery": { @@ -17286,9 +15835,9 @@ } }, "node_modules/emoji-regex": { - "version": "10.6.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", - "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "license": "MIT" }, "node_modules/encodeurl": { @@ -17311,9 +15860,9 @@ } }, "node_modules/encoding-sniffer": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.1.tgz", - "integrity": "sha512-5gvq20T6vfpekVtqrYQsSCFZ1wEg5+wW0/QaZMWkFr6BqD3NfKs0rLCx4rrVlSWJeZb5NBJgVLswK/w2MWU+Gw==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.0.tgz", + "integrity": "sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==", "dev": true, "license": "MIT", "dependencies": { @@ -17341,7 +15890,6 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz", "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==", - "deprecated": "Use @exodus/bytes instead for a more spec-conformant and faster implementation", "dev": true, "license": "MIT", "dependencies": { @@ -17365,9 +15913,9 @@ } }, "node_modules/end-of-stream": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.5.tgz", - "integrity": "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==", + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "license": "MIT", "dependencies": { "once": "^1.4.0" @@ -17386,10 +15934,9 @@ } }, "node_modules/entities": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-7.0.1.tgz", - "integrity": "sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==", - "dev": true, + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "license": "BSD-2-Clause", "engines": { "node": ">=0.12" @@ -17417,9 +15964,9 @@ } }, "node_modules/env-schema": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/env-schema/-/env-schema-6.1.0.tgz", - "integrity": "sha512-TWtYV2jKe7bd/19kzvNGa8GRRrSwmIMarhcWBzuZYPbHtdlUdjYhnaFvxrO4+GvcwF10sEeVGzf9b/wqLIyf9A==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/env-schema/-/env-schema-6.0.1.tgz", + "integrity": "sha512-WRD40Q25pP4NUbI3g3CNU5PPzcaiX7YYcPwiCZlfR4qGsKmTlckRixgHww0/fOXiXSNKA87pwshzq0ULTK/48A==", "dev": true, "funding": [ { @@ -17434,20 +15981,34 @@ "license": "MIT", "dependencies": { "ajv": "^8.12.0", - "dotenv": "^17.0.0", + "dotenv": "^16.4.5", "dotenv-expand": "10.0.0" } }, - "node_modules/env-schema/node_modules/dotenv-expand": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-10.0.0.tgz", - "integrity": "sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==", + "node_modules/env-schema/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, + "node_modules/env-schema/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true, + "license": "MIT" + }, "node_modules/environment": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", @@ -17468,22 +16029,15 @@ "license": "MIT" }, "node_modules/error-ex": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz", - "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==", + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "devOptional": true, "license": "MIT", "dependencies": { "is-arrayish": "^0.2.1" } }, - "node_modules/error-ex/node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "devOptional": true, - "license": "MIT" - }, "node_modules/error-stack-parser": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", @@ -17540,9 +16094,9 @@ } }, "node_modules/esbuild": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.7.tgz", - "integrity": "sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==", + "version": "0.25.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.2.tgz", + "integrity": "sha512-16854zccKPnC+toMywC+uKNeYSv+/eXkevRAfwRD/G9Cleq66m8XFIrigkbvauLLlCfDL45Q2cWegSg53gGBnQ==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -17553,32 +16107,31 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.27.7", - "@esbuild/android-arm": "0.27.7", - "@esbuild/android-arm64": "0.27.7", - "@esbuild/android-x64": "0.27.7", - "@esbuild/darwin-arm64": "0.27.7", - "@esbuild/darwin-x64": "0.27.7", - "@esbuild/freebsd-arm64": "0.27.7", - "@esbuild/freebsd-x64": "0.27.7", - "@esbuild/linux-arm": "0.27.7", - "@esbuild/linux-arm64": "0.27.7", - "@esbuild/linux-ia32": "0.27.7", - "@esbuild/linux-loong64": "0.27.7", - "@esbuild/linux-mips64el": "0.27.7", - "@esbuild/linux-ppc64": "0.27.7", - "@esbuild/linux-riscv64": "0.27.7", - "@esbuild/linux-s390x": "0.27.7", - "@esbuild/linux-x64": "0.27.7", - "@esbuild/netbsd-arm64": "0.27.7", - "@esbuild/netbsd-x64": "0.27.7", - "@esbuild/openbsd-arm64": "0.27.7", - "@esbuild/openbsd-x64": "0.27.7", - "@esbuild/openharmony-arm64": "0.27.7", - "@esbuild/sunos-x64": "0.27.7", - "@esbuild/win32-arm64": "0.27.7", - "@esbuild/win32-ia32": "0.27.7", - "@esbuild/win32-x64": "0.27.7" + "@esbuild/aix-ppc64": "0.25.2", + "@esbuild/android-arm": "0.25.2", + "@esbuild/android-arm64": "0.25.2", + "@esbuild/android-x64": "0.25.2", + "@esbuild/darwin-arm64": "0.25.2", + "@esbuild/darwin-x64": "0.25.2", + "@esbuild/freebsd-arm64": "0.25.2", + "@esbuild/freebsd-x64": "0.25.2", + "@esbuild/linux-arm": "0.25.2", + "@esbuild/linux-arm64": "0.25.2", + "@esbuild/linux-ia32": "0.25.2", + "@esbuild/linux-loong64": "0.25.2", + "@esbuild/linux-mips64el": "0.25.2", + "@esbuild/linux-ppc64": "0.25.2", + "@esbuild/linux-riscv64": "0.25.2", + "@esbuild/linux-s390x": "0.25.2", + "@esbuild/linux-x64": "0.25.2", + "@esbuild/netbsd-arm64": "0.25.2", + "@esbuild/netbsd-x64": "0.25.2", + "@esbuild/openbsd-arm64": "0.25.2", + "@esbuild/openbsd-x64": "0.25.2", + "@esbuild/sunos-x64": "0.25.2", + "@esbuild/win32-arm64": "0.25.2", + "@esbuild/win32-ia32": "0.25.2", + "@esbuild/win32-x64": "0.25.2" } }, "node_modules/escalade": { @@ -18109,23 +16662,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/ajv": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", - "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, "node_modules/eslint/node_modules/eslint-visitor-keys": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", @@ -18156,13 +16692,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, "node_modules/eslint/node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -18195,16 +16724,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/espree": { "version": "10.4.0", "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", @@ -18250,9 +16769,9 @@ } }, "node_modules/esquery": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", - "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -18311,6 +16830,35 @@ "node": ">= 0.6" } }, + "node_modules/event-stream": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/event-stream/-/event-stream-3.3.4.tgz", + "integrity": "sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==", + "dev": true, + "license": "MIT", + "dependencies": { + "duplexer": "~0.1.1", + "from": "~0", + "map-stream": "~0.1.0", + "pause-stream": "0.0.11", + "split": "0.3", + "stream-combiner": "~0.0.4", + "through": "~2.3.1" + } + }, + "node_modules/event-stream/node_modules/split": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz", + "integrity": "sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==", + "dev": true, + "license": "MIT", + "dependencies": { + "through": "2" + }, + "engines": { + "node": "*" + } + }, "node_modules/event-target-shim": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", @@ -18365,6 +16913,12 @@ "node": ">=18.0.0" } }, + "node_modules/exec-async": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/exec-async/-/exec-async-2.2.0.tgz", + "integrity": "sha512-87OpwcEiMia/DeiKFzaQNBNFeN3XkkpYIh9FyOqq5mS2oKv3CBE67PXoEKcr6nodWdXNogTiQ0jE2NGuoffXPw==", + "license": "MIT" + }, "node_modules/execa": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.1.tgz", @@ -18392,19 +16946,6 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/execa/node_modules/is-stream": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", - "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", @@ -18450,21 +16991,20 @@ } }, "node_modules/expect": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-30.3.0.tgz", - "integrity": "sha512-1zQrciTiQfRdo7qJM1uG4navm8DayFa2TgCSRlzUyNkhcJ6XUZF3hjnpkyr3VhAqPH7i/9GkG7Tv5abz6fqz0Q==", + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/expect-utils": "30.3.0", - "@jest/get-type": "30.1.0", - "jest-matcher-utils": "30.3.0", - "jest-message-util": "30.3.0", - "jest-mock": "30.3.0", - "jest-util": "30.3.0" + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/expect-type": { @@ -18474,20 +17014,20 @@ "license": "Apache-2.0" }, "node_modules/expect-webdriverio": { - "version": "5.6.5", - "resolved": "https://registry.npmjs.org/expect-webdriverio/-/expect-webdriverio-5.6.5.tgz", - "integrity": "sha512-5ot+Apo0bEvMD/nqzWymQpgyWnOdu0kVpmahLx5T7NzUc6RyifucZ24Gsfr6F6C8yRGBhmoFh7ZeY+W9kteEBQ==", + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/expect-webdriverio/-/expect-webdriverio-5.3.4.tgz", + "integrity": "sha512-FU+96C0nqeYTXrJcGLUDB6hPKKaSm1/tVHjFDE4EDHGCYvajAHCC2MBQJ5MomjCmp6lGMz36lDHeZj52LHylyA==", "dev": true, "license": "MIT", "peer": true, "dependencies": { - "@vitest/snapshot": "^4.0.16", - "deep-eql": "^5.0.2", - "expect": "^30.2.0", - "jest-matcher-utils": "^30.2.0" + "@vitest/snapshot": "^3.2.4", + "expect": "^30.0.0", + "jest-matcher-utils": "^30.0.0", + "lodash.isequal": "^4.5.0" }, "engines": { - "node": ">=20" + "node": ">=18 || >=20 || >=22" }, "peerDependencies": { "@wdio/globals": "^9.0.0", @@ -18506,139 +17046,121 @@ } } }, - "node_modules/expect-webdriverio/node_modules/@vitest/pretty-format": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-4.1.2.tgz", - "integrity": "sha512-dwQga8aejqeuB+TvXCMzSQemvV9hNEtDDpgUKDzOmNQayl2OG241PSWeJwKRH3CiC+sESrmoFd49rfnq7T4RnA==", + "node_modules/expect-webdriverio/node_modules/@jest/diff-sequences": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz", + "integrity": "sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==", "dev": true, "license": "MIT", - "dependencies": { - "tinyrainbow": "^3.1.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/expect-webdriverio/node_modules/@vitest/snapshot": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-4.1.2.tgz", - "integrity": "sha512-g7yfUmxYS4mNxk31qbOYsSt2F4m1E02LFqO53Xpzg3zKMhLAPZAjjfyl9e6z7HrW6LvUdTwAQR3HHfLjpko16A==", + "node_modules/expect-webdriverio/node_modules/@jest/expect-utils": { + "version": "30.0.4", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.0.4.tgz", + "integrity": "sha512-EgXecHDNfANeqOkcak0DxsoVI4qkDUsR7n/Lr2vtmTBjwLPBnnPOF71S11Q8IObWzxm2QgQoY6f9hzrRD3gHRA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "4.1.2", - "@vitest/utils": "4.1.2", - "magic-string": "^0.30.21", - "pathe": "^2.0.3" + "@jest/get-type": "30.0.1" }, - "funding": { - "url": "https://opencollective.com/vitest" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/expect-webdriverio/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/expect-webdriverio/node_modules/@jest/get-type": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.0.1.tgz", + "integrity": "sha512-AyYdemXCptSRFirI5EPazNxyPwAL0jXt3zceFjaj8NFiKP9pOi0bfXonf6qkf82z2t3QWPeLCWWw4stPBzctLw==", "dev": true, "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/expect-webdriverio/node_modules/jest-diff": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.3.0.tgz", - "integrity": "sha512-n3q4PDQjS4LrKxfWB3Z5KNk1XjXtZTBwQp71OP0Jo03Z6V60x++K5L8k6ZrW8MY8pOFylZvHM0zsjS1RqlHJZQ==", + "node_modules/expect-webdriverio/node_modules/@jest/pattern": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz", + "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/diff-sequences": "30.3.0", - "@jest/get-type": "30.1.0", - "chalk": "^4.1.2", - "pretty-format": "30.3.0" + "@types/node": "*", + "jest-regex-util": "30.0.1" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/expect-webdriverio/node_modules/jest-matcher-utils": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.3.0.tgz", - "integrity": "sha512-HEtc9uFQgaUHkC7nLSlQL3Tph4Pjxt/yiPvkIrrDCt9jhoLIgxaubo1G+CFOnmHYMxHwwdaSN7mkIFs6ZK8OhA==", + "node_modules/expect-webdriverio/node_modules/@jest/schemas": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.1.tgz", + "integrity": "sha512-+g/1TKjFuGrf1Hh0QPCv0gISwBxJ+MQSNXmG9zjHy7BmFhtoJ9fdNhWJp3qUKRi93AOZHXtdxZgJ1vAtz6z65w==", "dev": true, "license": "MIT", "dependencies": { - "@jest/get-type": "30.1.0", - "chalk": "^4.1.2", - "jest-diff": "30.3.0", - "pretty-format": "30.3.0" + "@sinclair/typebox": "^0.34.0" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/expect-webdriverio/node_modules/pathe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", - "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "dev": true, - "license": "MIT" - }, - "node_modules/expect-webdriverio/node_modules/pretty-format": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.3.0.tgz", - "integrity": "sha512-oG4T3wCbfeuvljnyAzhBvpN45E8iOTXCU/TD3zXW80HA3dQ4ahdqMkWGiPWZvjpQwlbyHrPTWUAqUzGzv4l1JQ==", + "node_modules/expect-webdriverio/node_modules/@jest/types": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.0.1.tgz", + "integrity": "sha512-HGwoYRVF0QSKJu1ZQX0o5ZrUrrhj0aOOFA8hXrumD7SIzjouevhawbTjmXdwOmURdGluU9DM/XvGm3NyFoiQjw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" + "@jest/pattern": "30.0.1", + "@jest/schemas": "30.0.1", + "@types/istanbul-lib-coverage": "^2.0.6", + "@types/istanbul-reports": "^3.0.4", + "@types/node": "*", + "@types/yargs": "^17.0.33", + "chalk": "^4.1.2" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/expect-webdriverio/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "node_modules/expect-webdriverio/node_modules/@sinclair/typebox": { + "version": "0.34.37", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.37.tgz", + "integrity": "sha512-2TRuQVgQYfy+EzHRTIvkhv2ADEouJ2xNS/Vq+W5EuuewBdOrvATvljZTxHWZSTYr2sTjTHpGvucaGAt67S2akw==", "dev": true, "license": "MIT" }, - "node_modules/expect-webdriverio/node_modules/tinyrainbow": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-3.1.0.tgz", - "integrity": "sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==", + "node_modules/expect-webdriverio/node_modules/@vitest/pretty-format": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz", + "integrity": "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==", "dev": true, "license": "MIT", - "engines": { - "node": ">=14.0.0" + "dependencies": { + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/expect/node_modules/@jest/types": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.3.0.tgz", - "integrity": "sha512-JHm87k7bA33hpBngtU8h6UBub/fqqA9uXfw+21j5Hmk7ooPHlboRNxHq0JcMtC+n8VJGP1mcfnD3Mk+XKe1oSw==", + "node_modules/expect-webdriverio/node_modules/@vitest/snapshot": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz", + "integrity": "sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/pattern": "30.0.1", - "@jest/schemas": "30.0.5", - "@types/istanbul-lib-coverage": "^2.0.6", - "@types/istanbul-reports": "^3.0.4", - "@types/node": "*", - "@types/yargs": "^17.0.33", - "chalk": "^4.1.2" + "@vitest/pretty-format": "3.2.4", + "magic-string": "^0.30.17", + "pathe": "^2.0.3" }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "funding": { + "url": "https://opencollective.com/vitest" } }, - "node_modules/expect/node_modules/ansi-styles": { + "node_modules/expect-webdriverio/node_modules/ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", @@ -18651,10 +17173,10 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/expect/node_modules/ci-info": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", - "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", + "node_modules/expect-webdriverio/node_modules/ci-info": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.3.0.tgz", + "integrity": "sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ==", "dev": true, "funding": [ { @@ -18667,77 +17189,135 @@ "node": ">=8" } }, - "node_modules/expect/node_modules/jest-diff": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.3.0.tgz", - "integrity": "sha512-n3q4PDQjS4LrKxfWB3Z5KNk1XjXtZTBwQp71OP0Jo03Z6V60x++K5L8k6ZrW8MY8pOFylZvHM0zsjS1RqlHJZQ==", + "node_modules/expect-webdriverio/node_modules/expect": { + "version": "30.0.4", + "resolved": "https://registry.npmjs.org/expect/-/expect-30.0.4.tgz", + "integrity": "sha512-dDLGjnP2cKbEppxVICxI/Uf4YemmGMPNy0QytCbfafbpYk9AFQsxb8Uyrxii0RPK7FWgLGlSem+07WirwS3cFQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/diff-sequences": "30.3.0", - "@jest/get-type": "30.1.0", + "@jest/expect-utils": "30.0.4", + "@jest/get-type": "30.0.1", + "jest-matcher-utils": "30.0.4", + "jest-message-util": "30.0.2", + "jest-mock": "30.0.2", + "jest-util": "30.0.2" + }, + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/expect-webdriverio/node_modules/jest-diff": { + "version": "30.0.4", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.0.4.tgz", + "integrity": "sha512-TSjceIf6797jyd+R64NXqicttROD+Qf98fex7CowmlSn7f8+En0da1Dglwr1AXxDtVizoxXYZBlUQwNhoOXkNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/diff-sequences": "30.0.1", + "@jest/get-type": "30.0.1", "chalk": "^4.1.2", - "pretty-format": "30.3.0" + "pretty-format": "30.0.2" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/expect/node_modules/jest-matcher-utils": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.3.0.tgz", - "integrity": "sha512-HEtc9uFQgaUHkC7nLSlQL3Tph4Pjxt/yiPvkIrrDCt9jhoLIgxaubo1G+CFOnmHYMxHwwdaSN7mkIFs6ZK8OhA==", + "node_modules/expect-webdriverio/node_modules/jest-matcher-utils": { + "version": "30.0.4", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.0.4.tgz", + "integrity": "sha512-ubCewJ54YzeAZ2JeHHGVoU+eDIpQFsfPQs0xURPWoNiO42LGJ+QGgfSf+hFIRplkZDkhH5MOvuxHKXRTUU3dUQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/get-type": "30.1.0", + "@jest/get-type": "30.0.1", "chalk": "^4.1.2", - "jest-diff": "30.3.0", - "pretty-format": "30.3.0" + "jest-diff": "30.0.4", + "pretty-format": "30.0.2" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/expect/node_modules/jest-util": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.3.0.tgz", - "integrity": "sha512-/jZDa00a3Sz7rdyu55NLrQCIrbyIkbBxareejQI315f/i8HjYN+ZWsDLLpoQSiUIEIyZF/R8fDg3BmB8AtHttg==", + "node_modules/expect-webdriverio/node_modules/jest-message-util": { + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.0.2.tgz", + "integrity": "sha512-vXywcxmr0SsKXF/bAD7t7nMamRvPuJkras00gqYeB1V0WllxZrbZ0paRr3XqpFU2sYYjD0qAaG2fRyn/CGZ0aw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "30.3.0", - "@types/node": "*", + "@babel/code-frame": "^7.27.1", + "@jest/types": "30.0.1", + "@types/stack-utils": "^2.0.3", "chalk": "^4.1.2", - "ci-info": "^4.2.0", "graceful-fs": "^4.2.11", - "picomatch": "^4.0.3" + "micromatch": "^4.0.8", + "pretty-format": "30.0.2", + "slash": "^3.0.0", + "stack-utils": "^2.0.6" }, "engines": { "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/expect/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "node_modules/expect-webdriverio/node_modules/jest-mock": { + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.0.2.tgz", + "integrity": "sha512-PnZOHmqup/9cT/y+pXIVbbi8ID6U1XHRmbvR7MvUy4SLqhCbwpkmXhLbsWbGewHrV5x/1bF7YDjs+x24/QSvFA==", "dev": true, "license": "MIT", + "dependencies": { + "@jest/types": "30.0.1", + "@types/node": "*", + "jest-util": "30.0.2" + }, "engines": { - "node": ">=12" + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/expect-webdriverio/node_modules/jest-regex-util": { + "version": "30.0.1", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", + "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + } + }, + "node_modules/expect-webdriverio/node_modules/jest-util": { + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.0.2.tgz", + "integrity": "sha512-8IyqfKS4MqprBuUpZNlFB5l+WFehc8bfCe1HSZFHzft2mOuND8Cvi9r1musli+u6F3TqanCZ/Ik4H4pXUolZIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "30.0.1", + "@types/node": "*", + "chalk": "^4.1.2", + "ci-info": "^4.2.0", + "graceful-fs": "^4.2.11", + "picomatch": "^4.0.2" }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "engines": { + "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/expect/node_modules/pretty-format": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.3.0.tgz", - "integrity": "sha512-oG4T3wCbfeuvljnyAzhBvpN45E8iOTXCU/TD3zXW80HA3dQ4ahdqMkWGiPWZvjpQwlbyHrPTWUAqUzGzv4l1JQ==", + "node_modules/expect-webdriverio/node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, + "node_modules/expect-webdriverio/node_modules/pretty-format": { + "version": "30.0.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.0.2.tgz", + "integrity": "sha512-yC5/EBSOrTtqhCKfLHqoUIAXVRZnukHPwWBJWR7h84Q3Be1DRQZLncwcfLoPA5RPQ65qfiCMqgYwdUuQ//eVpg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "30.0.5", + "@jest/schemas": "30.0.1", "ansi-styles": "^5.2.0", "react-is": "^18.3.1" }, @@ -18745,12 +17325,15 @@ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" } }, - "node_modules/expect/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "node_modules/expect-webdriverio/node_modules/tinyrainbow": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", + "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } }, "node_modules/expo": { "version": "54.0.33", @@ -18856,6 +17439,28 @@ "expo": "*" } }, + "node_modules/expo-build-properties/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/expo-build-properties/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, "node_modules/expo-constants": { "version": "18.0.13", "resolved": "https://registry.npmjs.org/expo-constants/-/expo-constants-18.0.13.tgz", @@ -18912,6 +17517,28 @@ "expo": "*" } }, + "node_modules/expo-dev-launcher/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/expo-dev-launcher/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, "node_modules/expo-dev-menu": { "version": "7.0.18", "resolved": "https://registry.npmjs.org/expo-dev-menu/-/expo-dev-menu-7.0.18.tgz", @@ -19087,15 +17714,6 @@ "expo-modules-autolinking": "bin/expo-modules-autolinking.js" } }, - "node_modules/expo-modules-autolinking/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, "node_modules/expo-modules-core": { "version": "3.0.29", "resolved": "https://registry.npmjs.org/expo-modules-core/-/expo-modules-core-3.0.29.tgz", @@ -19319,9 +17937,9 @@ } }, "node_modules/expo/node_modules/@expo/vector-icons": { - "version": "15.1.1", - "resolved": "https://registry.npmjs.org/@expo/vector-icons/-/vector-icons-15.1.1.tgz", - "integrity": "sha512-Iu2VkcoI5vygbtYngm7jb4ifxElNVXQYdDrYkT7UCEIiKLeWnQY0wf2ZhHZ+Wro6Sc5TaumpKUOqDRpLi5rkvw==", + "version": "15.0.3", + "resolved": "https://registry.npmjs.org/@expo/vector-icons/-/vector-icons-15.0.3.tgz", + "integrity": "sha512-SBUyYKphmlfUBqxSfDdJ3jAdEVSALS2VUPOUyqn48oZmb2TL/O7t7/PQm5v4NQujYEPLPMTLn9KVw6H7twwbTA==", "license": "MIT", "peerDependencies": { "expo-font": ">=14.0.4", @@ -19392,1871 +18010,51 @@ "@react-native/babel-plugin-codegen": "0.81.5", "babel-plugin-syntax-hermes-parser": "0.29.1", "babel-plugin-transform-flow-enums": "^0.0.2", - "react-refresh": "^0.14.0" - }, - "engines": { - "node": ">= 20.19.4" - }, - "peerDependencies": { - "@babel/core": "*" - } - }, - "node_modules/expo/node_modules/@react-native/codegen": { - "version": "0.81.5", - "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.81.5.tgz", - "integrity": "sha512-a2TDA03Up8lpSa9sh5VRGCQDXgCTOyDOFH+aqyinxp1HChG8uk89/G+nkJ9FPd0rqgi25eCTR16TWdS3b+fA6g==", - "license": "MIT", - "dependencies": { - "@babel/core": "^7.25.2", - "@babel/parser": "^7.25.3", - "glob": "^7.1.1", - "hermes-parser": "0.29.1", - "invariant": "^2.2.4", - "nullthrows": "^1.1.1", - "yargs": "^17.6.2" - }, - "engines": { - "node": ">= 20.19.4" - }, - "peerDependencies": { - "@babel/core": "*" - } - }, - "node_modules/expo/node_modules/@react-native/codegen/node_modules/brace-expansion": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.13.tgz", - "integrity": "sha512-9ZLprWS6EENmhEOpjCYW2c8VkmOvckIJZfkr7rBW6dObmfgJ/L1GpSYW5Hpo9lDz4D1+n0Ckz8rU7FwHDQiG/w==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/expo/node_modules/@react-native/codegen/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/expo/node_modules/@react-native/codegen/node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/expo/node_modules/ansi-regex": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", - "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/expo/node_modules/babel-plugin-syntax-hermes-parser": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.29.1.tgz", - "integrity": "sha512-2WFYnoWGdmih1I1J5eIqxATOeycOqRwYxAQBu3cUu/rhwInwHUg7k60AFNbuGjSDL8tje5GDrAnxzRLcu2pYcA==", - "license": "MIT", - "dependencies": { - "hermes-parser": "0.29.1" - } - }, - "node_modules/expo/node_modules/babel-preset-expo": { - "version": "54.0.10", - "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-54.0.10.tgz", - "integrity": "sha512-wTt7POavLFypLcPW/uC5v8y+mtQKDJiyGLzYCjqr9tx0Qc3vCXcDKk1iCFIj/++Iy5CWhhTflEa7VvVPNWeCfw==", - "license": "MIT", - "dependencies": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/plugin-proposal-decorators": "^7.12.9", - "@babel/plugin-proposal-export-default-from": "^7.24.7", - "@babel/plugin-syntax-export-default-from": "^7.24.7", - "@babel/plugin-transform-class-static-block": "^7.27.1", - "@babel/plugin-transform-export-namespace-from": "^7.25.9", - "@babel/plugin-transform-flow-strip-types": "^7.25.2", - "@babel/plugin-transform-modules-commonjs": "^7.24.8", - "@babel/plugin-transform-object-rest-spread": "^7.24.7", - "@babel/plugin-transform-parameters": "^7.24.7", - "@babel/plugin-transform-private-methods": "^7.24.7", - "@babel/plugin-transform-private-property-in-object": "^7.24.7", - "@babel/plugin-transform-runtime": "^7.24.7", - "@babel/preset-react": "^7.22.15", - "@babel/preset-typescript": "^7.23.0", - "@react-native/babel-preset": "0.81.5", - "babel-plugin-react-compiler": "^1.0.0", - "babel-plugin-react-native-web": "~0.21.0", - "babel-plugin-syntax-hermes-parser": "^0.29.1", - "babel-plugin-transform-flow-enums": "^0.0.2", - "debug": "^4.3.4", - "resolve-from": "^5.0.0" - }, - "peerDependencies": { - "@babel/runtime": "^7.20.0", - "expo": "*", - "react-refresh": ">=0.14.0 <1.0.0" - }, - "peerDependenciesMeta": { - "@babel/runtime": { - "optional": true - }, - "expo": { - "optional": true - } - } - }, - "node_modules/expo/node_modules/brace-expansion": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", - "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/expo/node_modules/chownr": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", - "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/expo/node_modules/cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", - "license": "MIT", - "dependencies": { - "restore-cursor": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/expo/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/expo/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "license": "MIT" - }, - "node_modules/expo/node_modules/dotenv": { - "version": "16.4.7", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", - "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, - "node_modules/expo/node_modules/dotenv-expand": { - "version": "11.0.7", - "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.7.tgz", - "integrity": "sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==", - "license": "BSD-2-Clause", - "dependencies": { - "dotenv": "^16.4.5" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, - "node_modules/expo/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" - }, - "node_modules/expo/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/expo/node_modules/glob": { - "version": "13.0.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", - "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", - "license": "BlueOak-1.0.0", - "dependencies": { - "minimatch": "^10.2.2", - "minipass": "^7.1.3", - "path-scurry": "^2.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/expo/node_modules/glob/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/expo/node_modules/glob/node_modules/brace-expansion": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", - "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/expo/node_modules/glob/node_modules/minimatch": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", - "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.5" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/expo/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/expo/node_modules/hermes-estree": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.29.1.tgz", - "integrity": "sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ==", - "license": "MIT" - }, - "node_modules/expo/node_modules/hermes-parser": { - "version": "0.29.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.29.1.tgz", - "integrity": "sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA==", - "license": "MIT", - "dependencies": { - "hermes-estree": "0.29.1" - } - }, - "node_modules/expo/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/expo/node_modules/log-symbols": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", - "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", - "license": "MIT", - "dependencies": { - "chalk": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/expo/node_modules/log-symbols/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/expo/node_modules/log-symbols/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/expo/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.2" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/expo/node_modules/minizlib": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", - "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", - "license": "MIT", - "dependencies": { - "minipass": "^7.1.2" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/expo/node_modules/onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", - "license": "MIT", - "dependencies": { - "mimic-fn": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/expo/node_modules/ora": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", - "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", - "license": "MIT", - "dependencies": { - "chalk": "^2.4.2", - "cli-cursor": "^2.1.0", - "cli-spinners": "^2.0.0", - "log-symbols": "^2.2.0", - "strip-ansi": "^5.2.0", - "wcwidth": "^1.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/expo/node_modules/ora/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/expo/node_modules/ora/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/expo/node_modules/picomatch": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-3.0.2.tgz", - "integrity": "sha512-cfDHL6LStTEKlNilboNtobT/kEa30PtAf2Q1OgszfrG/rpVl1xaFWT9ktfkS306GmHgmnad1Sw4wabhlvFtsTw==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/expo/node_modules/postcss": { - "version": "8.4.49", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", - "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/expo/node_modules/pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/expo/node_modules/react-refresh": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", - "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/expo/node_modules/restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", - "license": "MIT", - "dependencies": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/expo/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "license": "ISC" - }, - "node_modules/expo/node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/expo/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/expo/node_modules/string-width/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/expo/node_modules/string-width/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/expo/node_modules/strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/expo/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/expo/node_modules/tar": { - "version": "7.5.13", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.13.tgz", - "integrity": "sha512-tOG/7GyXpFevhXVh8jOPJrmtRpOTsYqUIkVdVooZYJS/z8WhfQUX8RJILmeuJNinGAMSu1veBr4asSHFt5/hng==", - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/fs-minipass": "^4.0.0", - "chownr": "^3.0.0", - "minipass": "^7.1.2", - "minizlib": "^3.1.0", - "yallist": "^5.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/expo/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/expo/node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/expo/node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/expo/node_modules/yallist": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", - "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/exponential-backoff": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.3.tgz", - "integrity": "sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==", - "license": "Apache-2.0" - }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "license": "MIT", - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/external-editor/node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "license": "MIT" - }, - "node_modules/external-editor/node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/external-editor/node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", - "license": "MIT", - "dependencies": { - "os-tmpdir": "~1.0.2" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "node_modules/extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - }, - "bin": { - "extract-zip": "cli.js" - }, - "engines": { - "node": ">= 10.17.0" - }, - "optionalDependencies": { - "@types/yauzl": "^2.9.1" - } - }, - "node_modules/extract-zip/node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/extract-zip/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/extract-zip/node_modules/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - }, - "node_modules/fast-content-type-parse": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-1.1.0.tgz", - "integrity": "sha512-fBHHqSTFLVnR61C+gltJuE5GkVQMV0S2nqUO8TJ+5Z3qAKG8vAx4FKai1s5jq/inV1+sREynIWSuQ6HgoSXpDQ==", - "license": "MIT" - }, - "node_modules/fast-decode-uri-component": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz", - "integrity": "sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==", - "license": "MIT" - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "license": "MIT" - }, - "node_modules/fast-fifo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", - "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", - "license": "MIT" - }, - "node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "license": "MIT" - }, - "node_modules/fast-json-stringify": { - "version": "5.16.1", - "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-5.16.1.tgz", - "integrity": "sha512-KAdnLvy1yu/XrRtP+LJnxbBGrhN+xXu+gt3EUvZhYGKCr3lFHq/7UFJHHFgmJKoqlh6B40bZLEv7w46B0mqn1g==", - "license": "MIT", - "dependencies": { - "@fastify/merge-json-schemas": "^0.1.0", - "ajv": "^8.10.0", - "ajv-formats": "^3.0.1", - "fast-deep-equal": "^3.1.3", - "fast-uri": "^2.1.0", - "json-schema-ref-resolver": "^1.0.1", - "rfdc": "^1.2.0" - } - }, - "node_modules/fast-json-stringify/node_modules/ajv-formats": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", - "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/fast-json-stringify/node_modules/fast-uri": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-2.4.0.tgz", - "integrity": "sha512-ypuAmmMKInk5q7XcepxlnUWDLWv4GFtaJqAzWKqn62IpQ3pejtr5dTVbt3vwqVaMKmkNR55sTT+CqUKIaT21BA==", - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-querystring": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fast-querystring/-/fast-querystring-1.1.2.tgz", - "integrity": "sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==", - "license": "MIT", - "dependencies": { - "fast-decode-uri-component": "^1.0.1" - } - }, - "node_modules/fast-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.0.tgz", - "integrity": "sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/fast-xml-builder": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.1.4.tgz", - "integrity": "sha512-f2jhpN4Eccy0/Uz9csxh3Nu6q4ErKxf0XIsasomfOihuSUa3/xw6w8dnOtCDgEItQFJG8KyXPzQXzcODDrrbOg==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } - ], - "license": "MIT", - "dependencies": { - "path-expression-matcher": "^1.1.3" - } - }, - "node_modules/fast-xml-parser": { - "version": "5.5.9", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.5.9.tgz", - "integrity": "sha512-jldvxr1MC6rtiZKgrFnDSvT8xuH+eJqxqOBThUVjYrxssYTo1avZLGql5l0a0BAERR01CadYzZ83kVEkbyDg+g==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } - ], - "license": "MIT", - "dependencies": { - "fast-xml-builder": "^1.1.4", - "path-expression-matcher": "^1.2.0", - "strnum": "^2.2.2" - }, - "bin": { - "fxparser": "src/cli/cli.js" - } - }, - "node_modules/fastify": { - "version": "4.29.1", - "resolved": "https://registry.npmjs.org/fastify/-/fastify-4.29.1.tgz", - "integrity": "sha512-m2kMNHIG92tSNWv+Z3UeTR9AWLLuo7KctC7mlFPtMEVrfjIhmQhkQnT9v15qA/BfVq3vvj134Y0jl9SBje3jXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "MIT", - "dependencies": { - "@fastify/ajv-compiler": "^3.5.0", - "@fastify/error": "^3.4.0", - "@fastify/fast-json-stringify-compiler": "^4.3.0", - "abstract-logging": "^2.0.1", - "avvio": "^8.3.0", - "fast-content-type-parse": "^1.1.0", - "fast-json-stringify": "^5.8.0", - "find-my-way": "^8.0.0", - "light-my-request": "^5.11.0", - "pino": "^9.0.0", - "process-warning": "^3.0.0", - "proxy-addr": "^2.0.7", - "rfdc": "^1.3.0", - "secure-json-parse": "^2.7.0", - "semver": "^7.5.4", - "toad-cache": "^3.3.0" - } - }, - "node_modules/fastify-plugin": { - "version": "4.5.1", - "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-4.5.1.tgz", - "integrity": "sha512-stRHYGeuqpEZTL1Ef0Ovr2ltazUT9g844X5z/zEBFLG8RYlpDiOCIG+ATvYEp+/zmc7sN29mcIMp8gvYplYPIQ==", - "license": "MIT" - }, - "node_modules/fastq": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", - "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fb-watchman": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", - "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", - "license": "Apache-2.0", - "dependencies": { - "bser": "2.1.1" - } - }, - "node_modules/fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "pend": "~1.2.0" - } - }, - "node_modules/fecha": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", - "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==", - "dev": true, - "license": "MIT" - }, - "node_modules/figures": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", - "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-unicode-supported": "^2.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/file-entry-cache": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^4.0.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "license": "MIT" - }, - "node_modules/filelist": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.6.tgz", - "integrity": "sha512-5giy2PkLYY1cP39p17Ech+2xlpTRL9HLspOfEgm0L6CwBXBTgsK5ou0JtzYuepxkaQ/tvhCFIJ5uXo0OrM2DxA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "minimatch": "^5.0.1" - } - }, - "node_modules/filelist/node_modules/brace-expansion": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", - "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/filelist/node_modules/minimatch": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", - "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/filter-obj": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-6.1.0.tgz", - "integrity": "sha512-xdMtCAODmPloU9qtmPcdBV9Kd27NtMse+4ayThxqIHUES5Z2S6bGpap5PpdmNM56ub7y3i1eyr+vJJIIgWGKmA==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "license": "MIT", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, - "node_modules/finalhandler/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/find-cache-dir/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/find-cache-dir/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/find-cache-dir/node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/find-cache-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-cache-dir/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/find-cache-dir/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/find-cache-dir/node_modules/pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "license": "MIT", - "dependencies": { - "find-up": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/find-cache-dir/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/find-my-way": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-8.2.2.tgz", - "integrity": "sha512-Dobi7gcTEq8yszimcfp/R7+owiT4WncAJ7VTTgFH1jYJ5GaG1FbhjwDG820hptN0QDFvzVY3RfCzdInvGPGzjA==", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-querystring": "^1.0.0", - "safe-regex2": "^3.1.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/find-my-way/node_modules/ret": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.4.3.tgz", - "integrity": "sha512-0f4Memo5QP7WQyUEAYUO3esD/XjOc3Zjjg5CPsAq1p8sIu0XPeMbHJemKA0BO7tV0X7+A0FoEpbmHXWxPyD3wQ==", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/find-my-way/node_modules/safe-regex2": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-3.1.0.tgz", - "integrity": "sha512-RAAZAGbap2kBfbVhvmnTFv73NWLMvDGOITFYTZBAaY8eR+Ir4ef7Up/e7amo+y1+AH+3PtLkrt9mvcTsG9LXug==", - "license": "MIT", - "dependencies": { - "ret": "~0.4.0" - } - }, - "node_modules/find-up": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-7.0.0.tgz", - "integrity": "sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==", - "license": "MIT", - "dependencies": { - "locate-path": "^7.2.0", - "path-exists": "^5.0.0", - "unicorn-magic": "^0.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-yarn-workspace-root": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz", - "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "micromatch": "^4.0.2" - } - }, - "node_modules/find-yarn-workspace-root2": { - "version": "1.2.16", - "resolved": "https://registry.npmjs.org/find-yarn-workspace-root2/-/find-yarn-workspace-root2-1.2.16.tgz", - "integrity": "sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "micromatch": "^4.0.2", - "pkg-dir": "^4.2.0" - } - }, - "node_modules/findup-sync": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-5.0.0.tgz", - "integrity": "sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "detect-file": "^1.0.0", - "is-glob": "^4.0.3", - "micromatch": "^4.0.4", - "resolve-dir": "^1.0.1" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true, - "license": "BSD-3-Clause", - "bin": { - "flat": "cli.js" - } - }, - "node_modules/flat-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.4" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/flat-tree": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/flat-tree/-/flat-tree-1.13.0.tgz", - "integrity": "sha512-fT3HIuCPwHhFgJ20QYzDHgUG0zMmFg5cHvFiFo5h+QMSJ28TihsEVY0f8HGliuO+pOzmvjMx1odToeaEWkTnyQ==", - "license": "MIT" - }, - "node_modules/flatted": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", - "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", - "dev": true, - "license": "ISC" - }, - "node_modules/flow-enums-runtime": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/flow-enums-runtime/-/flow-enums-runtime-0.0.6.tgz", - "integrity": "sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==", - "license": "MIT" - }, - "node_modules/flow-parser": { - "version": "0.307.1", - "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.307.1.tgz", - "integrity": "sha512-MIkG26VVtubK0OKgqY17oaMDgCIPgeEMt+XcdNho+aHldUH0uWkQ1uhf8TGxac99vOPTPpUh5OSK5LAmtXUvZQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.11", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", - "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "license": "MIT", - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/fontfaceobserver": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/fontfaceobserver/-/fontfaceobserver-2.3.0.tgz", - "integrity": "sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==", - "license": "BSD-2-Clause" - }, - "node_modules/foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/form-data": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", - "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", - "dev": true, - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/format-util": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/format-util/-/format-util-1.0.5.tgz", - "integrity": "sha512-varLbTj0e0yVyRpqQhuWV+8hlePAgaoFRhNFj50BNjEIrw1/DphHSObtqwskVCPWNgzwPoQrZAbfa/SBiicNeg==", - "dev": true, - "license": "MIT" - }, - "node_modules/formdata-node": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-5.0.1.tgz", - "integrity": "sha512-8xnIjMYGKPj+rY2BTbAmpqVpi8der/2FT4d9f7J32FlsCpO5EzZPq3C/N56zdv8KweHzVF6TGijsS1JT6r1H2g==", - "dev": true, - "license": "MIT", - "dependencies": { - "node-domexception": "1.0.0", - "web-streams-polyfill": "4.0.0-beta.3" - }, - "engines": { - "node": ">= 14.17" - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/freeport-async": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/freeport-async/-/freeport-async-2.0.0.tgz", - "integrity": "sha512-K7od3Uw45AJg00XUmy15+Hae2hOcgKcmN3/EF6Y7i01O0gaqiRx8sUSpsb9+BRNL8RPBrhzPsVfy8q9ADlJuWQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "license": "MIT" - }, - "node_modules/fs-extra": { - "version": "11.3.3", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.3.tgz", - "integrity": "sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, - "node_modules/fs-minipass": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", - "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", - "license": "ISC", - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/fs-native-extensions": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/fs-native-extensions/-/fs-native-extensions-1.4.5.tgz", - "integrity": "sha512-ekV0T//iDm4AvhOcuPaHpxub4DI7HvY5ucLJVDvi7T2J+NZkQ9S6MuvgP0yeQvoqNUaAGyLjVYb1905BF9bpmg==", - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "require-addon": "^1.1.0", - "which-runtime": "^1.2.0" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "license": "ISC" - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/geckodriver": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/geckodriver/-/geckodriver-6.1.0.tgz", - "integrity": "sha512-ZRXLa4ZaYTTgUO4Eefw+RsQCleugU2QLb1ME7qTYxxuRj51yAhfnXaItXNs5/vUzfIaDHuZ+YnSF005hfp07nQ==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "@wdio/logger": "^9.18.0", - "@zip.js/zip.js": "^2.8.11", - "decamelize": "^6.0.1", - "http-proxy-agent": "^7.0.2", - "https-proxy-agent": "^7.0.6", - "modern-tar": "^0.7.2" - }, - "bin": { - "geckodriver": "bin/geckodriver.js" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/geckodriver/node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14" - } - }, - "node_modules/geckodriver/node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - "dev": true, - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/geojson": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/geojson/-/geojson-0.5.0.tgz", - "integrity": "sha512-/Bx5lEn+qRF4TfQ5aLu6NH+UKtvIv7Lhc487y/c8BdludrCTpiWf9wyI0RTyqg49MFefIAvFDuEi5Dfd/zgNxQ==", - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/geojson-geometries": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/geojson-geometries/-/geojson-geometries-2.0.0.tgz", - "integrity": "sha512-HKljxKnbJrdkr7ijg5/nvcr1b81HP+C/rS48cJwRb3xEqiEynlGkRVkQ/msopw+EE3gf7DjEKdZyEGMck0bOpw==", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/geojson-geometries-lookup": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/geojson-geometries-lookup/-/geojson-geometries-lookup-0.5.0.tgz", - "integrity": "sha512-AfadxaBda6VTwwX4USLiVofFaz0HIjubC7ZC15hGTvc8K0di3pmCNWGFotKJeURSxYPbJLFoet34X3JrIKFX4A==", - "license": "MIT", - "dependencies": { - "@turf/bbox": "^6.0.1", - "@turf/boolean-contains": "^6.0.1", - "geojson-geometries": "^2.0.0", - "rbush": "^3.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/geojson-rbush": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/geojson-rbush/-/geojson-rbush-3.2.0.tgz", - "integrity": "sha512-oVltQTXolxvsz1sZnutlSuLDEcQAKYC/uXt9zDzJJ6bu0W+baTI8LZBaTup5afzibEH4N3jlq2p+a152wlBJ7w==", - "license": "MIT", - "dependencies": { - "@turf/bbox": "*", - "@turf/helpers": "6.x", - "@turf/meta": "6.x", - "@types/geojson": "7946.0.8", - "rbush": "^3.0.1" - } - }, - "node_modules/geojson-rbush/node_modules/@turf/helpers": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.5.0.tgz", - "integrity": "sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==", - "license": "MIT", - "funding": { - "url": "https://opencollective.com/turf" - } - }, - "node_modules/geojson-rbush/node_modules/@types/geojson": { - "version": "7946.0.8", - "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.8.tgz", - "integrity": "sha512-1rkryxURpr6aWP7R786/UQOkJ3PcpQiWkAXBmdWc7ryFWqN6a4xfK7BtjXvFBKO9LjQ+MWQSWxYeZX1OApnArA==", - "license": "MIT" - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-east-asian-width": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.5.0.tgz", - "integrity": "sha512-CQ+bEO+Tva/qlmw24dCejulK5pMzVnUOFOijVogd3KQs07HnRIgp8TGipvCCRT06xeYEbpbgwaCxglFyiuIcmA==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "license": "MIT", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-port": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-7.2.0.tgz", - "integrity": "sha512-afP4W205ONCuMoPBqcR6PSXnzX35KTcJygfJfcp+QY+uwm3p20p1YczWXhlICIzGMCxYBQcySEcOgsJcrkyobg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/get-stream": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", - "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sec-ant/readable-stream": "^0.4.1", - "is-stream": "^4.0.1" - }, - "engines": { - "node": ">=18" + "react-refresh": "^0.14.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-stream/node_modules/is-stream": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", - "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", - "dev": true, - "license": "MIT", "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-tsconfig": { - "version": "4.13.7", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.7.tgz", - "integrity": "sha512-7tN6rFgBlMgpBML5j8typ92BKFi2sFQvIdpAqLA2beia5avZDrMs0FLZiM5etShWq5irVyGcGMEA1jcDaK7A/Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-pkg-maps": "^1.0.0" + "node": ">= 20.19.4" }, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + "peerDependencies": { + "@babel/core": "*" } }, - "node_modules/get-uri": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.5.tgz", - "integrity": "sha512-b1O07XYq8eRuVzBNgJLstU6FYc1tS6wnMtF1I1D9lE8LxZSOGZ7LhxN54yPP6mGw5f2CkXY2BQUL9Fx41qvcIg==", - "dev": true, + "node_modules/expo/node_modules/@react-native/codegen": { + "version": "0.81.5", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.81.5.tgz", + "integrity": "sha512-a2TDA03Up8lpSa9sh5VRGCQDXgCTOyDOFH+aqyinxp1HChG8uk89/G+nkJ9FPd0rqgi25eCTR16TWdS3b+fA6g==", "license": "MIT", "dependencies": { - "basic-ftp": "^5.0.2", - "data-uri-to-buffer": "^6.0.2", - "debug": "^4.3.4" + "@babel/core": "^7.25.2", + "@babel/parser": "^7.25.3", + "glob": "^7.1.1", + "hermes-parser": "0.29.1", + "invariant": "^2.2.4", + "nullthrows": "^1.1.1", + "yargs": "^17.6.2" }, "engines": { - "node": ">= 14" - } - }, - "node_modules/getenv": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/getenv/-/getenv-2.0.0.tgz", - "integrity": "sha512-VilgtJj/ALgGY77fiLam5iD336eSWi96Q15JSAG1zi8NRBysm3LXKdGnHb4m5cuyxvOLQQKWpBZAT6ni4FI2iQ==", - "license": "MIT", - "engines": { - "node": ">=6" + "node": ">= 20.19.4" + }, + "peerDependencies": { + "@babel/core": "*" } }, - "node_modules/git-repo-info": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/git-repo-info/-/git-repo-info-2.1.1.tgz", - "integrity": "sha512-8aCohiDo4jwjOwma4FmYFd3i97urZulL8XL24nIPxuE+GZnfsAyy/g2Shqx6OjUiFKUXZM+Yy+KHnOmmA3FVcg==", - "dev": true, + "node_modules/expo/node_modules/@react-native/codegen/node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "license": "MIT", - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/gitconfiglocal": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-2.1.0.tgz", - "integrity": "sha512-qoerOEliJn3z+Zyn1HW2F6eoYJqKwS6MgC9cztTLUB/xLWX8gD/6T60pKn4+t/d6tP7JlybI7Z3z+I572CR/Vg==", - "dev": true, - "license": "BSD", "dependencies": { - "ini": "^1.3.2" - } - }, - "node_modules/github-from-package": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", - "license": "MIT" - }, - "node_modules/giturl": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/giturl/-/giturl-1.0.3.tgz", - "integrity": "sha512-qVDEXufVtYUzYqI5hoDUONh9GCEPi0n+e35KNDafdsNt9fPxB0nvFW/kFiw7W42wkg8TUyhBqb+t24yyaoc87A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.10.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/glob": { + "node_modules/expo/node_modules/@react-native/codegen/node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "deprecated": "Glob versions prior to v9 are no longer supported", "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", @@ -21273,804 +18071,854 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, + "node_modules/expo/node_modules/@react-native/codegen/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "license": "ISC", "dependencies": { - "is-glob": "^4.0.3" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=10.13.0" + "node": "*" } }, - "node_modules/global-dirs": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", - "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", - "dev": true, + "node_modules/expo/node_modules/babel-plugin-syntax-hermes-parser": { + "version": "0.29.1", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.29.1.tgz", + "integrity": "sha512-2WFYnoWGdmih1I1J5eIqxATOeycOqRwYxAQBu3cUu/rhwInwHUg7k60AFNbuGjSDL8tje5GDrAnxzRLcu2pYcA==", "license": "MIT", "dependencies": { - "ini": "2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/global-dirs/node_modules/ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" + "hermes-parser": "0.29.1" } }, - "node_modules/global-modules": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", - "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", - "dev": true, + "node_modules/expo/node_modules/babel-preset-expo": { + "version": "54.0.10", + "resolved": "https://registry.npmjs.org/babel-preset-expo/-/babel-preset-expo-54.0.10.tgz", + "integrity": "sha512-wTt7POavLFypLcPW/uC5v8y+mtQKDJiyGLzYCjqr9tx0Qc3vCXcDKk1iCFIj/++Iy5CWhhTflEa7VvVPNWeCfw==", "license": "MIT", "dependencies": { - "global-prefix": "^3.0.0" + "@babel/helper-module-imports": "^7.25.9", + "@babel/plugin-proposal-decorators": "^7.12.9", + "@babel/plugin-proposal-export-default-from": "^7.24.7", + "@babel/plugin-syntax-export-default-from": "^7.24.7", + "@babel/plugin-transform-class-static-block": "^7.27.1", + "@babel/plugin-transform-export-namespace-from": "^7.25.9", + "@babel/plugin-transform-flow-strip-types": "^7.25.2", + "@babel/plugin-transform-modules-commonjs": "^7.24.8", + "@babel/plugin-transform-object-rest-spread": "^7.24.7", + "@babel/plugin-transform-parameters": "^7.24.7", + "@babel/plugin-transform-private-methods": "^7.24.7", + "@babel/plugin-transform-private-property-in-object": "^7.24.7", + "@babel/plugin-transform-runtime": "^7.24.7", + "@babel/preset-react": "^7.22.15", + "@babel/preset-typescript": "^7.23.0", + "@react-native/babel-preset": "0.81.5", + "babel-plugin-react-compiler": "^1.0.0", + "babel-plugin-react-native-web": "~0.21.0", + "babel-plugin-syntax-hermes-parser": "^0.29.1", + "babel-plugin-transform-flow-enums": "^0.0.2", + "debug": "^4.3.4", + "resolve-from": "^5.0.0" }, - "engines": { - "node": ">=6" + "peerDependencies": { + "@babel/runtime": "^7.20.0", + "expo": "*", + "react-refresh": ">=0.14.0 <1.0.0" + }, + "peerDependenciesMeta": { + "@babel/runtime": { + "optional": true + }, + "expo": { + "optional": true + } } }, - "node_modules/global-prefix": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", - "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", - "dev": true, + "node_modules/expo/node_modules/brace-expansion": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", + "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", "license": "MIT", "dependencies": { - "ini": "^1.3.5", - "kind-of": "^6.0.2", - "which": "^1.3.1" + "balanced-match": "^4.0.2" }, "engines": { - "node": ">=6" + "node": "18 || 20 || >=22" } }, - "node_modules/global-prefix/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" + "node_modules/expo/node_modules/brace-expansion/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" } }, - "node_modules/globals": { - "version": "16.5.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-16.5.0.tgz", - "integrity": "sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==", - "dev": true, - "license": "MIT", + "node_modules/expo/node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "license": "BlueOak-1.0.0", "engines": { "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "license": "MIT", - "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, + "node_modules/expo/node_modules/dotenv": { + "version": "16.4.7", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", + "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", + "license": "BSD-2-Clause", "engines": { - "node": ">= 0.4" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://dotenvx.com" } }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "license": "MIT", + "node_modules/expo/node_modules/dotenv-expand": { + "version": "11.0.7", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-11.0.7.tgz", + "integrity": "sha512-zIHwmZPRshsCdpMDyVsqGmgyP0yT8GAgXUnkdAoJisxvf33k7yO6OuoKmcTGuXPWSsm8Oh88nZicRLA9Y0rUeA==", + "license": "BSD-2-Clause", "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" + "dotenv": "^16.4.5" }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://dotenvx.com" } }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "license": "MIT", + "node_modules/expo/node_modules/glob": { + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" + }, "engines": { - "node": ">= 0.4" + "node": "18 || 20 || >=22" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", - "dev": true, - "license": "MIT", + "node_modules/expo/node_modules/glob/node_modules/minimatch": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.2.tgz", + "integrity": "sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw==", + "license": "BlueOak-1.0.0", "dependencies": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" + "brace-expansion": "^5.0.2" }, "engines": { - "node": ">=8.6" - } - }, - "node_modules/got/node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "license": "MIT", - "dependencies": { - "pump": "^3.0.0" + "node": "18 || 20 || >=22" }, - "engines": { - "node": ">=6" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "license": "ISC" - }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", - "dev": true, + "node_modules/expo/node_modules/hermes-estree": { + "version": "0.29.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.29.1.tgz", + "integrity": "sha512-jl+x31n4/w+wEqm0I2r4CMimukLbLQEYpisys5oCre611CI5fc9TxhqkBBCJ1edDG4Kza0f7CgNz8xVMLZQOmQ==", "license": "MIT" }, - "node_modules/hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", - "dev": true, + "node_modules/expo/node_modules/hermes-parser": { + "version": "0.29.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.29.1.tgz", + "integrity": "sha512-xBHWmUtRC5e/UL0tI7Ivt2riA/YBq9+SiYFU7C1oBa/j2jYGlIF9043oak1F47ihuDIxQ5nbsKueYJDRY02UgA==", "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "hermes-estree": "0.29.1" } }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "license": "MIT", + "node_modules/expo/node_modules/lru-cache": { + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", + "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", + "license": "BlueOak-1.0.0", "engines": { - "node": ">=8" + "node": "20 || >=22" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "license": "MIT", + "node_modules/expo/node_modules/minimatch": { + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.6.tgz", + "integrity": "sha512-kQAVowdR33euIqeA0+VZTDqU+qo1IeVY+hrKYtZMio3Pg0P0vuh/kwRylLUddJhB6pf3q/botcOvRtx4IN1wqQ==", + "license": "ISC", "dependencies": { - "es-define-property": "^1.0.0" + "brace-expansion": "^5.0.2" + }, + "engines": { + "node": ">=16 || 14 >=14.17" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "node_modules/expo/node_modules/minizlib": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", + "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", "license": "MIT", - "engines": { - "node": ">= 0.4" + "dependencies": { + "minipass": "^7.1.2" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">= 18" } }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, - "license": "MIT", + "node_modules/expo/node_modules/path-scurry": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", + "license": "BlueOak-1.0.0", "dependencies": { - "has-symbols": "^1.0.3" + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" }, "engines": { - "node": ">= 0.4" + "node": "18 || 20 || >=22" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/has-yarn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", - "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", - "dev": true, + "node_modules/expo/node_modules/picomatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-3.0.1.tgz", + "integrity": "sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==", "license": "MIT", "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "license": "MIT", + "node_modules/expo/node_modules/tar": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.9.tgz", + "integrity": "sha512-BTLcK0xsDh2+PUe9F6c2TlRp4zOOBMTkoQHQIWSIzI0R7KG46uEwq4OPk2W7bZcprBMsuaeFsqwYr7pjh6CuHg==", + "license": "BlueOak-1.0.0", "dependencies": { - "function-bind": "^1.1.2" + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.1.0", + "yallist": "^5.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=18" } }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "license": "MIT", - "bin": { - "he": "bin/he" + "node_modules/expo/node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" } }, - "node_modules/headers-utils": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/headers-utils/-/headers-utils-1.2.5.tgz", - "integrity": "sha512-DAzV5P/pk3wTU/8TLZN+zFTDv4Xa1QDTU8pRvovPetcOMbmqq8CwsAvZBLPZHH6usxyy31zMp7I4aCYb6XIf6w==", - "dev": true, - "license": "MIT" - }, - "node_modules/hermes-estree": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.23.1.tgz", - "integrity": "sha512-eT5MU3f5aVhTqsfIReZ6n41X5sYn4IdQL0nvz6yO+MMlPxw49aSARHLg/MSehQftyjnrE8X6bYregzSumqc6cg==", - "dev": true, - "license": "MIT" + "node_modules/exponential-backoff": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.2.tgz", + "integrity": "sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==", + "license": "Apache-2.0" }, - "node_modules/hermes-parser": { - "version": "0.23.1", - "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.23.1.tgz", - "integrity": "sha512-oxl5h2DkFW83hT4DAUJorpah8ou4yvmweUzLJmmr6YV2cezduCdlil1AvU/a/xSsAFo4WUcNA4GoV5Bvq6JffA==", - "dev": true, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "license": "MIT", "dependencies": { - "hermes-estree": "0.23.1" + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" } }, - "node_modules/highlight-es": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/highlight-es/-/highlight-es-1.0.3.tgz", - "integrity": "sha512-s/SIX6yp/5S1p8aC/NRDC1fwEb+myGIfp8/TzZz0rtAv8fzsdX7vGl3Q1TrXCsczFq8DI3CBFBCySPClfBSdbg==", - "dev": true, + "node_modules/external-editor/node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", "license": "MIT", "dependencies": { - "chalk": "^2.4.0", - "is-es2016-keyword": "^1.0.0", - "js-tokens": "^3.0.0" + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" } }, - "node_modules/highlight-es/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/extract-zip/node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true, "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, "engines": { - "node": ">=4" + "node": "*" } }, - "node_modules/highlight-es/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/extract-zip/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "pump": "^3.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/highlight-es/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "node_modules/extract-zip/node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", "dev": true, "license": "MIT", "dependencies": { - "color-name": "1.1.3" + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" } }, - "node_modules/highlight-es/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true, + "node_modules/fast-content-type-parse": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fast-content-type-parse/-/fast-content-type-parse-1.1.0.tgz", + "integrity": "sha512-fBHHqSTFLVnR61C+gltJuE5GkVQMV0S2nqUO8TJ+5Z3qAKG8vAx4FKai1s5jq/inV1+sREynIWSuQ6HgoSXpDQ==", "license": "MIT" }, - "node_modules/highlight-es/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "node_modules/fast-decode-uri-component": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/fast-decode-uri-component/-/fast-decode-uri-component-1.0.1.tgz", + "integrity": "sha512-WKgKWg5eUxvRZGwW8FvfbaH7AXSh2cL+3j5fMGzUMCxWBJ3dV3a7Wz8y2f/uQ0e3B6WmodD3oS54jTQ9HVTIIg==", + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "license": "MIT" + }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "dev": true, "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, "engines": { - "node": ">=0.8.0" + "node": ">=8.6.0" } }, - "node_modules/highlight-es/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, - "license": "MIT", + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, "engines": { - "node": ">=4" + "node": ">= 6" } }, - "node_modules/highlight-es/node_modules/js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==", - "dev": true, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "license": "MIT" }, - "node_modules/highlight-es/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, + "node_modules/fast-json-stringify": { + "version": "5.16.1", + "resolved": "https://registry.npmjs.org/fast-json-stringify/-/fast-json-stringify-5.16.1.tgz", + "integrity": "sha512-KAdnLvy1yu/XrRtP+LJnxbBGrhN+xXu+gt3EUvZhYGKCr3lFHq/7UFJHHFgmJKoqlh6B40bZLEv7w46B0mqn1g==", "license": "MIT", "dependencies": { - "has-flag": "^3.0.0" + "@fastify/merge-json-schemas": "^0.1.0", + "ajv": "^8.10.0", + "ajv-formats": "^3.0.1", + "fast-deep-equal": "^3.1.3", + "fast-uri": "^2.1.0", + "json-schema-ref-resolver": "^1.0.1", + "rfdc": "^1.2.0" + } + }, + "node_modules/fast-json-stringify/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" }, - "engines": { - "node": ">=4" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/hoist-non-react-statics": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", - "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", - "license": "BSD-3-Clause", + "node_modules/fast-json-stringify/node_modules/ajv-formats": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-3.0.1.tgz", + "integrity": "sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==", + "license": "MIT", "dependencies": { - "react-is": "^16.7.0" + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } } }, - "node_modules/hoist-non-react-statics/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "node_modules/fast-json-stringify/node_modules/ajv/node_modules/fast-uri": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", + "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fast-json-stringify/node_modules/fast-uri": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-2.4.0.tgz", + "integrity": "sha512-ypuAmmMKInk5q7XcepxlnUWDLWv4GFtaJqAzWKqn62IpQ3pejtr5dTVbt3vwqVaMKmkNR55sTT+CqUKIaT21BA==", "license": "MIT" }, - "node_modules/homedir-polyfill": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", - "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "node_modules/fast-json-stringify/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true, + "license": "MIT" + }, + "node_modules/fast-querystring": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fast-querystring/-/fast-querystring-1.1.2.tgz", + "integrity": "sha512-g6KuKWmFXc0fID8WWH0jit4g0AGBoJhCkJMb1RmbsSEUNvQ+ZC8D6CUZ+GtF8nMzSPXnhiePyyqqipzNNEnHjg==", "license": "MIT", "dependencies": { - "parse-passwd": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "fast-decode-uri-component": "^1.0.1" } }, - "node_modules/hosted-git-info": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-8.1.0.tgz", - "integrity": "sha512-Rw/B2DNQaPBICNXEm8balFz9a6WpZrkCGpcWFpy7nCj+NyhSdqXipmfvtmWt9xGfp0wZnBxB+iVpLmQMYt47Tw==", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^10.0.1" - }, + "node_modules/fast-redact": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/fast-redact/-/fast-redact-3.5.0.tgz", + "integrity": "sha512-dwsoQlS7h9hMeYUq1W++23NDcBLV4KqONnITDV9DjfS3q1SgDGVrBdvvTLUotWtPSD7asWDV9/CmsZPy8Hf70A==", + "license": "MIT", "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": ">=6" } }, - "node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" + "node_modules/fast-uri": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", + "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" }, - "node_modules/html-encoding-sniffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", - "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", + "node_modules/fast-xml-parser": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.3.3.tgz", + "integrity": "sha512-2O3dkPAAC6JavuMm8+4+pgTk+5hoAs+CjZ+sWcQLkX9+/tHRuTkQh/Oaifr8qDmZ8iEHb771Ea6G8CdwkrgvYA==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], "license": "MIT", "dependencies": { - "whatwg-encoding": "^2.0.0" + "strnum": "^2.1.0" }, - "engines": { - "node": ">=12" + "bin": { + "fxparser": "src/cli/cli.js" } }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true, - "license": "MIT" - }, - "node_modules/htmlfy": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/htmlfy/-/htmlfy-0.8.1.tgz", - "integrity": "sha512-xWROBw9+MEGwxpotll0h672KCaLrKKiCYzsyN8ZgL9cQbVumFnyvsk2JqiB9ELAV1GLj1GG/jxZUjV9OZZi/yQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/htmlparser2": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-10.1.0.tgz", - "integrity": "sha512-VTZkM9GWRAtEpveh7MSF6SjjrpNVNNVJfFup7xTY3UpFtm67foy9HDVXneLtFVt4pMz5kZtgNcvCniNFb1hlEQ==", - "dev": true, + "node_modules/fastify": { + "version": "4.29.1", + "resolved": "https://registry.npmjs.org/fastify/-/fastify-4.29.1.tgz", + "integrity": "sha512-m2kMNHIG92tSNWv+Z3UeTR9AWLLuo7KctC7mlFPtMEVrfjIhmQhkQnT9v15qA/BfVq3vvj134Y0jl9SBje3jXQ==", "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", { "type": "github", - "url": "https://github.com/sponsors/fb55" + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" } ], "license": "MIT", "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.2.2", - "entities": "^7.0.1" + "@fastify/ajv-compiler": "^3.5.0", + "@fastify/error": "^3.4.0", + "@fastify/fast-json-stringify-compiler": "^4.3.0", + "abstract-logging": "^2.0.1", + "avvio": "^8.3.0", + "fast-content-type-parse": "^1.1.0", + "fast-json-stringify": "^5.8.0", + "find-my-way": "^8.0.0", + "light-my-request": "^5.11.0", + "pino": "^9.0.0", + "process-warning": "^3.0.0", + "proxy-addr": "^2.0.7", + "rfdc": "^1.3.0", + "secure-json-parse": "^2.7.0", + "semver": "^7.5.4", + "toad-cache": "^3.3.0" } }, - "node_modules/http-cache-semantics": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz", - "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==", - "license": "BSD-2-Clause" + "node_modules/fastify-plugin": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/fastify-plugin/-/fastify-plugin-4.5.1.tgz", + "integrity": "sha512-stRHYGeuqpEZTL1Ef0Ovr2ltazUT9g844X5z/zEBFLG8RYlpDiOCIG+ATvYEp+/zmc7sN29mcIMp8gvYplYPIQ==", + "license": "MIT" }, - "node_modules/http-errors": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", - "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", - "license": "MIT", + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "license": "ISC", "dependencies": { - "depd": "~2.0.0", - "inherits": "~2.0.4", - "setprototypeof": "~1.2.0", - "statuses": "~2.0.2", - "toidentifier": "~1.0.1" - }, - "engines": { - "node": ">= 0.8" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "reusify": "^1.0.4" } }, - "node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "license": "Apache-2.0", + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, "license": "MIT", "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" + "pend": "~1.2.0" } }, - "node_modules/http-proxy-agent/node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", "license": "MIT", "engines": { - "node": ">= 14" + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } } }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "node_modules/fecha": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], "license": "MIT", "dependencies": { - "agent-base": "6", - "debug": "4" + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" }, "engines": { - "node": ">= 6" - } - }, - "node_modules/human-signals": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz", - "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18.0" + "node": "^12.20 || >= 14.13" } }, - "node_modules/husky": { - "version": "9.1.7", - "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz", - "integrity": "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==", + "node_modules/figures": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", + "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", "dev": true, "license": "MIT", - "bin": { - "husky": "bin.js" + "dependencies": { + "is-unicode-supported": "^2.0.0" }, "engines": { "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/typicode" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/hyperbee": { - "version": "2.27.3", - "resolved": "https://registry.npmjs.org/hyperbee/-/hyperbee-2.27.3.tgz", - "integrity": "sha512-PXURH2U4juUZyJRKHTrY5z1zX851pmI1Q0jfv5F/hCIErDt/ND8jOZuxc3hfOLM9f0W3qJEDTMlV5AJBkVPy8w==", + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, "license": "MIT", "dependencies": { - "b4a": "^1.6.0", - "codecs": "^3.0.0", - "debounceify": "^1.0.0", - "hypercore-errors": "^1.0.0", - "mutexify": "^1.4.0", - "protocol-buffers-encodings": "^1.2.0", - "rache": "^1.0.0", - "ready-resource": "^1.0.0", - "resolve-reject-promise": "^1.1.0", - "safety-catch": "^1.0.2", - "streamx": "^2.12.4", - "unslab": "^1.2.0" + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/hyperblobs": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/hyperblobs/-/hyperblobs-2.3.0.tgz", - "integrity": "sha512-iBCLVEo6FK+Xd7cpLM3DQ6cTfuMmKPfDZNj5/JqKEgziBEuI0ZGGyMM5dqaVvtRX4s71y8BhrgsDi2p0pWdSmg==", - "license": "MIT", + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "license": "MIT" + }, + "node_modules/filelist": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/filelist/-/filelist-1.0.4.tgz", + "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "b4a": "^1.6.1", - "mutexify": "^1.4.0", - "streamx": "^2.13.2" + "minimatch": "^5.0.1" } }, - "node_modules/hypercore": { - "version": "10.19.0", - "resolved": "https://registry.npmjs.org/hypercore/-/hypercore-10.19.0.tgz", - "integrity": "sha512-vdK9QC2BmylhL1gqUYBICgRLHYhPqX6f4iOYfQKqcV+xOkiLIJglBNLHIUVYHqGw5W0YunhRzbpA/9IhPtrJOw==", + "node_modules/filelist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, "license": "MIT", "dependencies": { - "@hyperswarm/secret-stream": "^6.0.0", - "b4a": "^1.1.0", - "big-sparse-array": "^1.0.3", - "compact-encoding": "^2.11.0", - "crc-universal": "^1.0.2", - "events": "^3.3.0", - "fast-fifo": "^1.3.0", - "flat-tree": "^1.9.0", - "hypercore-crypto": "^3.2.1", - "hypercore-errors": "^1.0.0", - "is-options": "^1.0.1", - "protomux": "^3.5.0", - "quickbit-universal": "^2.1.1", - "random-access-file": "^4.0.0", - "random-array-iterator": "^1.0.0", - "safety-catch": "^1.0.1", - "sodium-universal": "^4.0.0", - "streamx": "^2.12.4", - "xache": "^1.1.0", - "z32": "^1.0.0" + "balanced-match": "^1.0.0" } }, - "node_modules/hypercore-crypto": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/hypercore-crypto/-/hypercore-crypto-3.4.2.tgz", - "integrity": "sha512-16ii4M6T1dFfRa41Szv3IR0wXfImJMYJ8ysZEGwHEDH7sMeWVEBck6tg1GCNutYl39E+H7wMY2p3ndCRfj+XdQ==", - "license": "MIT", + "node_modules/filelist/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "license": "ISC", "dependencies": { - "b4a": "^1.6.6", - "compact-encoding": "^2.15.0", - "sodium-universal": "^4.0.1" + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" } }, - "node_modules/hypercore-errors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/hypercore-errors/-/hypercore-errors-1.5.0.tgz", - "integrity": "sha512-5KQ/SuDxsvet+7qWA35Ay6zdD9WyAHQoyWHGcPUTbmJBd300gvNIJoi3oma7kp4TTCSzii6qYumNZe/s0j/saQ==", - "license": "Apache-2.0", + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", "dependencies": { - "hypercore-id-encoding": "^1.3.0" + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/filter-obj": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-6.1.0.tgz", + "integrity": "sha512-xdMtCAODmPloU9qtmPcdBV9Kd27NtMse+4ayThxqIHUES5Z2S6bGpap5PpdmNM56ub7y3i1eyr+vJJIIgWGKmA==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/hypercore-id-encoding": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/hypercore-id-encoding/-/hypercore-id-encoding-1.3.0.tgz", - "integrity": "sha512-W6sHdGo5h7LXEsoWfKf/KfuROZmZRQDlGqJF2EPHW+noCK66Vvr0+zE6cL0vqQi18s0kQPeN7Sq3QyR0Ytc2VQ==", - "license": "Apache-2.0", + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "license": "MIT", "dependencies": { - "b4a": "^1.5.3", - "z32": "^1.0.0" + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" } }, - "node_modules/hypercore/node_modules/@hyperswarm/secret-stream": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/@hyperswarm/secret-stream/-/secret-stream-6.7.1.tgz", - "integrity": "sha512-isb18Pt6lXBpOQMRmpqItw+kYynXilOFyOhto/RMP15WQtTWC0rR5jfZPYXU7ZYV6Kxd2lyQ4ZBevoIcvEJHEQ==", - "license": "Apache-2.0", + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", "dependencies": { - "b4a": "^1.1.0", - "hypercore-crypto": "^3.3.1", - "noise-curve-ed": "^2.0.1", - "noise-handshake": "^3.0.2", - "sodium-secretstream": "^1.1.0", - "sodium-universal": "^4.0.0", - "streamx": "^2.14.0", - "timeout-refresh": "^2.0.0", - "unslab": "^1.3.0" + "ms": "2.0.0" } }, - "node_modules/hypercore/node_modules/noise-handshake": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/noise-handshake/-/noise-handshake-3.1.0.tgz", - "integrity": "sha512-0S1qkUvMbTvZCfgr/vSkVT84YyvI4Q0OLwSc5BFxVmjaePrxAwVeXeJDY3A7N/7+qj95gZ15LaNoP9ZnBXH5Lw==", - "license": "ISC", - "dependencies": { - "b4a": "^1.1.0", - "nanoassert": "^2.0.0", - "sodium-universal": "^4.0.0" - } + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" }, - "node_modules/hyperdrive": { - "version": "11.5.3", - "resolved": "https://registry.npmjs.org/hyperdrive/-/hyperdrive-11.5.3.tgz", - "integrity": "sha512-0542G6n9eAXK/+fl6bs+9rvxCrL/dQo9mZsbY+BFSCD3S6ymBlaVnjOCuQdNflYBOHFVNnbBYdDvZ9meInv+tw==", - "license": "Apache-2.0", + "node_modules/find-cache-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", + "dev": true, + "license": "MIT", "dependencies": { - "hyperbee": "^2.11.1", - "hyperblobs": "^2.3.0", - "hypercore-errors": "^1.0.0", - "is-options": "^1.0.2", - "mirror-drive": "^1.2.0", - "ready-resource": "^1.0.0", - "safety-catch": "^1.0.2", - "streamx": "^2.12.4", - "sub-encoder": "^2.1.1", - "unix-path-resolve": "^1.0.2" + "commondir": "^1.0.1", + "make-dir": "^2.0.0", + "pkg-dir": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "node_modules/iconv-lite": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", - "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", + "node_modules/find-cache-dir/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, "license": "MIT", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "locate-path": "^3.0.0" }, "engines": { - "node": ">=0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" + "node": ">=6" } }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "node_modules/find-cache-dir/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, "license": "MIT", + "dependencies": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + }, "engines": { - "node": ">= 4" + "node": ">=6" } }, - "node_modules/image-size": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.2.1.tgz", - "integrity": "sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==", + "node_modules/find-cache-dir/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, "license": "MIT", "dependencies": { - "queue": "6.0.2" - }, - "bin": { - "image-size": "bin/image-size.js" + "pify": "^4.0.1", + "semver": "^5.6.0" }, "engines": { - "node": ">=16.x" + "node": ">=6" } }, - "node_modules/immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "node_modules/find-cache-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "license": "MIT", "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "p-try": "^2.0.0" }, "engines": { "node": ">=6" @@ -22079,2813 +18927,2894 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/import-fresh/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "node_modules/find-cache-dir/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, "license": "MIT", + "dependencies": { + "p-limit": "^2.0.0" + }, "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==", + "node_modules/find-cache-dir/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true, "license": "MIT", "engines": { "node": ">=4" } }, - "node_modules/import-local": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", - "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "node_modules/find-cache-dir/node_modules/pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", "dev": true, "license": "MIT", "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" + "find-up": "^3.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, - "node_modules/import-meta-resolve": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz", - "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==", + "node_modules/find-cache-dir/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "license": "ISC", + "bin": { + "semver": "bin/semver" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "node_modules/find-my-way": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/find-my-way/-/find-my-way-8.2.2.tgz", + "integrity": "sha512-Dobi7gcTEq8yszimcfp/R7+owiT4WncAJ7VTTgFH1jYJ5GaG1FbhjwDG820hptN0QDFvzVY3RfCzdInvGPGzjA==", "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-querystring": "^1.0.0", + "safe-regex2": "^3.1.0" + }, "engines": { - "node": ">=0.8.19" + "node": ">=14" } }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, "engines": { "node": ">=8" } }, - "node_modules/index-to-position": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-1.2.0.tgz", - "integrity": "sha512-Yg7+ztRkqslMAS2iFaU+Oa4KTSidr63OsFGlOrJoW981kIYO3CGCS3wA95P1mUi/IVSJkn0D479KTJpVpvFNuw==", + "node_modules/find-yarn-workspace-root": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz", + "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "micromatch": "^4.0.2" + } + }, + "node_modules/find-yarn-workspace-root2": { + "version": "1.2.16", + "resolved": "https://registry.npmjs.org/find-yarn-workspace-root2/-/find-yarn-workspace-root2-1.2.16.tgz", + "integrity": "sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "micromatch": "^4.0.2", + "pkg-dir": "^4.2.0" + } + }, + "node_modules/findup-sync": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-5.0.0.tgz", + "integrity": "sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=18" + "dependencies": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.3", + "micromatch": "^4.0.4", + "resolve-dir": "^1.0.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">= 10.13.0" } }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "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.", - "license": "ISC", + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "license": "BSD-3-Clause", + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "license": "ISC" + "node_modules/flat-tree": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/flat-tree/-/flat-tree-1.12.1.tgz", + "integrity": "sha512-GchQ+onbnw5QaqsGbpcV6c8etAd396X/EVdDxutQMkGapB0lRvV9heIXS6ZffQVCse0hm2hBpK7GJz2Zp7qiMg==", + "license": "MIT" }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, "license": "ISC" }, - "node_modules/inquirer": { - "version": "12.11.1", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-12.11.1.tgz", - "integrity": "sha512-9VF7mrY+3OmsAfjH3yKz/pLbJ5z22E23hENKw3/LNSaA/sAt3v49bDRY+Ygct1xwuKT+U+cBfTzjCPySna69Qw==", + "node_modules/flow-enums-runtime": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/flow-enums-runtime/-/flow-enums-runtime-0.0.6.tgz", + "integrity": "sha512-3PYnM29RFXwvAN6Pc/scUfkI7RwhQ/xqyLUyPNlXUp9S40zI8nup9tUSrTLSVnWGBN38FNiGWbwZOB6uR4OGdw==", + "license": "MIT" + }, + "node_modules/flow-parser": { + "version": "0.268.0", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.268.0.tgz", + "integrity": "sha512-URZmPy/jKDDIJUHUfC+5KNwaPcfONTL3R8xltQWVEoCKLWowVebEBg89nbAnYHNo6ev8KzKWFpOROfHZdaCoxA==", "dev": true, "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/core": "^10.3.2", - "@inquirer/prompts": "^7.10.1", - "@inquirer/type": "^3.0.10", - "mute-stream": "^2.0.0", - "run-async": "^4.0.6", - "rxjs": "^7.8.2" - }, "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" + "node": ">=0.4.0" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" }, "peerDependenciesMeta": { - "@types/node": { + "debug": { "optional": true } } }, - "node_modules/intl-messageformat": { - "version": "11.1.2", - "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-11.1.2.tgz", - "integrity": "sha512-ucSrQmZGAxfiBHfBRXW/k7UC8MaGFlEj4Ry1tKiDcmgwQm1y3EDl40u+4VNHYomxJQMJi9NEI3riDRlth96jKg==", - "license": "BSD-3-Clause", + "node_modules/fontfaceobserver": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/fontfaceobserver/-/fontfaceobserver-2.3.0.tgz", + "integrity": "sha512-6FPvD/IVyT4ZlNe7Wcn5Fb/4ChigpucKYSvD6a+0iMoLn2inpo711eyIcKjmDtE5XNcgAkSH9uN/nfAeZzHEfg==", + "license": "BSD-2-Clause" + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "license": "ISC", "dependencies": { - "@formatjs/ecma402-abstract": "3.1.1", - "@formatjs/fast-memoize": "3.1.0", - "@formatjs/icu-messageformat-parser": "3.5.1", - "tslib": "^2.8.1" + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/into-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-8.0.1.tgz", - "integrity": "sha512-Vp2df7Utjs/1/sv0Vlj2X4u2e2yaCrcMd4T9u0D9B36XvxIOBHA2JIZTXCp2TPCa7w/ebwWVkXhbp9At1wJ0zg==", + "node_modules/form-data": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz", + "integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=16" + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "mime-types": "^2.1.12" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">= 6" } }, - "node_modules/invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "node_modules/format-util": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/format-util/-/format-util-1.0.5.tgz", + "integrity": "sha512-varLbTj0e0yVyRpqQhuWV+8hlePAgaoFRhNFj50BNjEIrw1/DphHSObtqwskVCPWNgzwPoQrZAbfa/SBiicNeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/formdata-node": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/formdata-node/-/formdata-node-5.0.1.tgz", + "integrity": "sha512-8xnIjMYGKPj+rY2BTbAmpqVpi8der/2FT4d9f7J32FlsCpO5EzZPq3C/N56zdv8KweHzVF6TGijsS1JT6r1H2g==", + "dev": true, "license": "MIT", "dependencies": { - "loose-envify": "^1.0.0" + "node-domexception": "1.0.0", + "web-streams-polyfill": "4.0.0-beta.3" + }, + "engines": { + "node": ">= 14.17" } }, - "node_modules/ip-address": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.1.0.tgz", - "integrity": "sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==", + "node_modules/formdata-node/node_modules/web-streams-polyfill": { + "version": "4.0.0-beta.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz", + "integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==", + "dev": true, "license": "MIT", "engines": { - "node": ">= 12" + "node": ">= 14" } }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "dev": true, "license": "MIT", + "dependencies": { + "fetch-blob": "^3.1.2" + }, "engines": { - "node": ">= 0.10" + "node": ">=12.20.0" } }, - "node_modules/is-alphabetical": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", - "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "engines": { + "node": ">= 0.6" } }, - "node_modules/is-alphanumerical": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", - "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "node_modules/freeport-async": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/freeport-async/-/freeport-async-2.0.0.tgz", + "integrity": "sha512-K7od3Uw45AJg00XUmy15+Hae2hOcgKcmN3/EF6Y7i01O0gaqiRx8sUSpsb9+BRNL8RPBrhzPsVfy8q9ADlJuWQ==", "license": "MIT", - "dependencies": { - "is-alphabetical": "^2.0.0", - "is-decimal": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "engines": { + "node": ">=8" } }, - "node_modules/is-arrayish": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.4.tgz", - "integrity": "sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA==", - "license": "MIT" + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "node_modules/from": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/from/-/from-0.1.7.tgz", + "integrity": "sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==", "dev": true, + "license": "MIT" + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "license": "MIT" + }, + "node_modules/fs-extra": { + "version": "11.3.3", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.3.tgz", + "integrity": "sha512-VWSRii4t0AFm6ixFFmLLx1t7wS1gh+ckoa84aOeapGum0h+EZd1EhEumSB+ZdDLnEPuucsVB9oB7cxJHap6Afg==", "license": "MIT", "dependencies": { - "binary-extensions": "^2.0.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fs-minipass": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + "license": "ISC", + "dependencies": { + "minipass": "^7.0.3" }, "engines": { - "node": ">=8" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "license": "MIT", + "node_modules/fs-native-extensions": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/fs-native-extensions/-/fs-native-extensions-1.4.2.tgz", + "integrity": "sha512-QoQqYdHJTtfHUUO/ylyKSrt3dtPDyXCAjzveqCxPsV3hpIMNt455ua470+iTKJ8lFZ94pLC6Dv1TBbwOFLiV5w==", + "license": "Apache-2.0", + "optional": true, "dependencies": { - "ci-info": "^2.0.0" - }, - "bin": { - "is-ci": "bin.js" + "require-addon": "^1.1.0", + "which-runtime": "^1.2.0" } }, - "node_modules/is-ci/node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true, - "license": "MIT" + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" }, - "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/is-decimal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", - "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "license": "MIT", "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", - "devOptional": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "node_modules/geckodriver": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/geckodriver/-/geckodriver-5.0.0.tgz", + "integrity": "sha512-vn7TtQ3b9VMJtVXsyWtQQl1fyBVFhQy7UvJF96kPuuJ0or5THH496AD3eUyaDD11+EqCxH9t6V+EP9soZQk4YQ==", + "dev": true, + "hasInstallScript": true, "license": "MIT", + "dependencies": { + "@wdio/logger": "^9.1.3", + "@zip.js/zip.js": "^2.7.53", + "decamelize": "^6.0.0", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.5", + "node-fetch": "^3.3.2", + "tar-fs": "^3.0.6", + "which": "^5.0.0" + }, "bin": { - "is-docker": "cli.js" + "geckodriver": "bin/geckodriver.js" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=18.0.0" } }, - "node_modules/is-es2016-keyword": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-es2016-keyword/-/is-es2016-keyword-1.0.0.tgz", - "integrity": "sha512-JtZWPUwjdbQ1LIo9OSZ8MdkWEve198ors27vH+RzUUvZXXZkzXCxFnlUhzWYxy5IexQSRiXVw9j2q/tHMmkVYQ==", + "node_modules/geckodriver/node_modules/agent-base": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">= 14" + } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "node_modules/geckodriver/node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 12" } }, - "node_modules/is-fullwidth-code-point": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz", - "integrity": "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==", + "node_modules/geckodriver/node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "dev": true, "license": "MIT", "dependencies": { - "get-east-asian-width": "^1.3.1" + "agent-base": "^7.1.2", + "debug": "4" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 14" } }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "node_modules/geckodriver/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", "dev": true, - "license": "MIT", + "license": "ISC", "engines": { - "node": ">=6" + "node": ">=16" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "node_modules/geckodriver/node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", "dev": true, "license": "MIT", "dependencies": { - "is-extglob": "^2.1.1" + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-immutable-type": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/is-immutable-type/-/is-immutable-type-5.0.1.tgz", - "integrity": "sha512-LkHEOGVZZXxGl8vDs+10k3DvP++SEoYEAJLRk6buTFi6kD7QekThV7xHS0j6gpnUCQ0zpud/gMDGiV4dQneLTg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@typescript-eslint/type-utils": "^8.0.0", - "ts-api-utils": "^2.0.0", - "ts-declaration-location": "^1.0.4" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, - "peerDependencies": { - "eslint": "*", - "typescript": ">=4.7.4" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" } }, - "node_modules/is-inside-container": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", - "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", - "license": "MIT", + "node_modules/geckodriver/node_modules/which": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-5.0.0.tgz", + "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", + "dev": true, + "license": "ISC", "dependencies": { - "is-docker": "^3.0.0" + "isexe": "^3.1.1" }, "bin": { - "is-inside-container": "cli.js" + "node-which": "bin/which.js" }, "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^18.17.0 || >=20.5.0" } }, - "node_modules/is-inside-container/node_modules/is-docker": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", - "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "license": "MIT", - "bin": { - "is-docker": "cli.js" - }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6.9.0" } }, - "node_modules/is-installed-globally": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", - "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", - "dev": true, + "node_modules/geojson": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/geojson/-/geojson-0.5.0.tgz", + "integrity": "sha512-/Bx5lEn+qRF4TfQ5aLu6NH+UKtvIv7Lhc487y/c8BdludrCTpiWf9wyI0RTyqg49MFefIAvFDuEi5Dfd/zgNxQ==", "license": "MIT", - "dependencies": { - "global-dirs": "^3.0.0", - "is-path-inside": "^3.0.2" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.10" } }, - "node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "dev": true, + "node_modules/geojson-geometries": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/geojson-geometries/-/geojson-geometries-2.0.0.tgz", + "integrity": "sha512-HKljxKnbJrdkr7ijg5/nvcr1b81HP+C/rS48cJwRb3xEqiEynlGkRVkQ/msopw+EE3gf7DjEKdZyEGMck0bOpw==", "license": "MIT", "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/is-it-type": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/is-it-type/-/is-it-type-5.1.3.tgz", - "integrity": "sha512-AX2uU0HW+TxagTgQXOJY7+2fbFHemC7YFBwN1XqD8qQMKdtfbOC8OC3fUb4s5NU59a3662Dzwto8tWDdZYRXxg==", + "node_modules/geojson-geometries-lookup": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/geojson-geometries-lookup/-/geojson-geometries-lookup-0.5.0.tgz", + "integrity": "sha512-AfadxaBda6VTwwX4USLiVofFaz0HIjubC7ZC15hGTvc8K0di3pmCNWGFotKJeURSxYPbJLFoet34X3JrIKFX4A==", "license": "MIT", "dependencies": { - "globalthis": "^1.0.2" + "@turf/bbox": "^6.0.1", + "@turf/boolean-contains": "^6.0.1", + "geojson-geometries": "^2.0.0", + "rbush": "^3.0.1" }, "engines": { - "node": ">=12" + "node": ">=10" } }, - "node_modules/is-lambda": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", - "license": "MIT" + "node_modules/geojson-rbush": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/geojson-rbush/-/geojson-rbush-3.2.0.tgz", + "integrity": "sha512-oVltQTXolxvsz1sZnutlSuLDEcQAKYC/uXt9zDzJJ6bu0W+baTI8LZBaTup5afzibEH4N3jlq2p+a152wlBJ7w==", + "license": "MIT", + "dependencies": { + "@turf/bbox": "*", + "@turf/helpers": "6.x", + "@turf/meta": "6.x", + "@types/geojson": "7946.0.8", + "rbush": "^3.0.1" + } }, - "node_modules/is-npm": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", - "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", - "dev": true, + "node_modules/geojson-rbush/node_modules/@turf/helpers": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.5.0.tgz", + "integrity": "sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==", "license": "MIT", - "engines": { - "node": ">=10" - }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/turf" } }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "license": "MIT", + "node_modules/geojson-rbush/node_modules/@types/geojson": { + "version": "7946.0.8", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.8.tgz", + "integrity": "sha512-1rkryxURpr6aWP7R786/UQOkJ3PcpQiWkAXBmdWc7ryFWqN6a4xfK7BtjXvFBKO9LjQ+MWQSWxYeZX1OApnArA==", + "license": "MIT" + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "license": "ISC", "engines": { - "node": ">=0.12.0" + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true, + "node_modules/get-east-asian-width": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.4.0.tgz", + "integrity": "sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==", "license": "MIT", "engines": { - "node": ">=8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-options": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-options/-/is-options-1.0.2.tgz", - "integrity": "sha512-u+Ai74c8Q74aS8BuHwPdI1jptGOT1FQXgCq8/zv0xRuE+wRgSMEJLj8lVO8Zp9BeGb29BXY6AsNPinfqjkr7Fg==", + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "license": "MIT", "dependencies": { - "b4a": "^1.1.1" + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "dev": true, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "license": "MIT", "engines": { - "node": ">=8" + "node": ">=8.0.0" } }, - "node_modules/is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "node_modules/get-port": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-7.1.0.tgz", + "integrity": "sha512-QB9NKEeDg3xxVwCCwJQ9+xycaz6pBB6iQ76wiWMl1927n0Kir6alPiP+yuiICLLU4jpMe08dXfpebuQppFA2zw==", + "dev": true, "license": "MIT", "engines": { - "node": ">=12" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", "license": "MIT", "dependencies": { - "isobject": "^3.0.1" + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" } }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-running": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-running/-/is-running-2.1.0.tgz", - "integrity": "sha512-mjJd3PujZMl7j+D395WTIO5tU5RIDBfVSRtRR4VOJou3H66E38UjbjvDGh3slJzPuolsb+yQFqwHNNdyp5jg3w==", + "node_modules/get-stream": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", "dev": true, - "license": "BSD" - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "license": "MIT", + "dependencies": { + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" + }, "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "node_modules/get-tsconfig": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.0.tgz", + "integrity": "sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==", "dev": true, - "license": "MIT" - }, - "node_modules/is-unicode-supported": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", - "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", "license": "MIT", - "engines": { - "node": ">=18" + "dependencies": { + "resolve-pkg-maps": "^1.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" } }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "node_modules/get-uri": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.4.tgz", + "integrity": "sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==", "dev": true, "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "license": "MIT", "dependencies": { - "is-docker": "^2.0.0" + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^6.0.2", + "debug": "^4.3.4" }, "engines": { - "node": ">=8" + "node": ">= 14" } }, - "node_modules/is-yarn-global": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", - "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", - "dev": true, - "license": "MIT" - }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "license": "MIT" - }, - "node_modules/isexe": { + "node_modules/getenv": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "license": "ISC" - }, - "node_modules/iso-3166": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/iso-3166/-/iso-3166-4.4.0.tgz", - "integrity": "sha512-I6ylkNQgxVh7cYADMUJpqBUdremGvyGZkDRSk9Cdic/ITBUemsllQnUeRpz7yDKyfgAXI9oPa5A9dia+7IXLqw==", + "resolved": "https://registry.npmjs.org/getenv/-/getenv-2.0.0.tgz", + "integrity": "sha512-VilgtJj/ALgGY77fiLam5iD336eSWi96Q15JSAG1zi8NRBysm3LXKdGnHb4m5cuyxvOLQQKWpBZAT6ni4FI2iQ==", "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "engines": { + "node": ">=6" } }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "node_modules/git-repo-info": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/git-repo-info/-/git-repo-info-2.1.1.tgz", + "integrity": "sha512-8aCohiDo4jwjOwma4FmYFd3i97urZulL8XL24nIPxuE+GZnfsAyy/g2Shqx6OjUiFKUXZM+Yy+KHnOmmA3FVcg==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 4.0" } }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=8" + "node_modules/gitconfiglocal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-2.1.0.tgz", + "integrity": "sha512-qoerOEliJn3z+Zyn1HW2F6eoYJqKwS6MgC9cztTLUB/xLWX8gD/6T60pKn4+t/d6tP7JlybI7Z3z+I572CR/Vg==", + "dev": true, + "license": "BSD", + "dependencies": { + "ini": "^1.3.2" } }, - "node_modules/istanbul-lib-instrument": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", - "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "license": "MIT" + }, + "node_modules/giturl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/giturl/-/giturl-1.0.3.tgz", + "integrity": "sha512-qVDEXufVtYUzYqI5hoDUONh9GCEPi0n+e35KNDafdsNt9fPxB0nvFW/kFiw7W42wkg8TUyhBqb+t24yyaoc87A==", "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/core": "^7.23.9", - "@babel/parser": "^7.23.9", - "@istanbuljs/schema": "^0.1.3", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^7.5.4" - }, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">= 0.10.0" } }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, - "license": "BSD-3-Clause", + "node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "license": "ISC", "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" }, - "engines": { - "node": ">=10" + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, - "license": "BSD-3-Clause", + "license": "ISC", "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" + "is-glob": "^4.0.3" }, "engines": { - "node": ">=10" + "node": ">=10.13.0" } }, - "node_modules/istanbul-reports": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", - "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", - "dev": true, - "license": "BSD-3-Clause", + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" + "balanced-match": "^1.0.0" } }, - "node_modules/itty-router": { - "version": "5.0.23", - "resolved": "https://registry.npmjs.org/itty-router/-/itty-router-5.0.23.tgz", - "integrity": "sha512-i49WU+SNPrwOZA4Z61En1RYd5h2Lcqa+5IvCpMrNi4dxymzJK15ozUUnRrWIUAv95Zamd4eJPAot2UvHRrQg7w==", - "license": "MIT" - }, - "node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "license": "BlueOak-1.0.0", + "node_modules/glob/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "license": "ISC", "dependencies": { - "@isaacs/cliui": "^8.0.2" + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" }, "funding": { "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/jake": { - "version": "10.9.4", - "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.4.tgz", - "integrity": "sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==", + "node_modules/global-dirs": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", + "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "async": "^3.2.6", - "filelist": "^1.0.4", - "picocolors": "^1.1.1" + "ini": "2.0.0" }, - "bin": { - "jake": "bin/cli.js" + "engines": { + "node": ">=10" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/global-dirs/node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "dev": true, + "license": "ISC", "engines": { "node": ">=10" } }, - "node_modules/jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", - "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "node_modules/global-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz", + "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "@jest/core": "^29.7.0", - "@jest/types": "^29.6.3", - "import-local": "^3.0.2", - "jest-cli": "^29.7.0" - }, - "bin": { - "jest": "bin/jest.js" + "global-prefix": "^3.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "node": ">=6" } }, - "node_modules/jest-changed-files": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", - "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "node_modules/global-prefix": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz", + "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==", "dev": true, "license": "MIT", "dependencies": { - "execa": "^5.0.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0" + "ini": "^1.3.5", + "kind-of": "^6.0.2", + "which": "^1.3.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=6" } }, - "node_modules/jest-changed-files/node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "node_modules/global-prefix/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "@sinclair/typebox": "^0.27.8" + "isexe": "^2.0.0" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "bin": { + "which": "bin/which" } }, - "node_modules/jest-changed-files/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "node_modules/globals": { + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.5.0.tgz", + "integrity": "sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==", "dev": true, "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-changed-files/node_modules/@sinclair/typebox": { - "version": "0.27.10", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", - "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-changed-files/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-changed-files/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "license": "MIT", "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-changed-files/node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "node_modules/got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", + "dependencies": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + }, "engines": { - "node": ">=10.17.0" + "node": ">=8.6" } }, - "node_modules/jest-changed-files/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "node_modules/got/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "pump": "^3.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=6" } }, - "node_modules/jest-changed-files/node_modules/mimic-fn": { + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/hard-rejection": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", "dev": true, "license": "MIT", "engines": { "node": ">=6" } }, - "node_modules/jest-changed-files/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "license": "MIT", - "dependencies": { - "path-key": "^3.0.0" - }, "engines": { "node": ">=8" } }, - "node_modules/jest-changed-files/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "license": "MIT", "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" + "es-define-property": "^1.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-changed-files/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/jest-changed-files/node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "license": "MIT", "engines": { - "node": ">=6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-circus": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", - "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/expect": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^1.0.0", - "is-generator-fn": "^2.0.0", - "jest-each": "^29.7.0", - "jest-matcher-utils": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-runtime": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "p-limit": "^3.1.0", - "pretty-format": "^29.7.0", - "pure-rand": "^6.0.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "has-symbols": "^1.0.3" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-circus/node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "node_modules/has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", "dev": true, "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/jest-circus/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" + "function-bind": "^1.1.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 0.4" } }, - "node_modules/jest-circus/node_modules/@sinclair/typebox": { - "version": "0.27.10", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", - "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "license": "MIT", + "bin": { + "he": "bin/he" + } + }, + "node_modules/headers-utils": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/headers-utils/-/headers-utils-1.2.5.tgz", + "integrity": "sha512-DAzV5P/pk3wTU/8TLZN+zFTDv4Xa1QDTU8pRvovPetcOMbmqq8CwsAvZBLPZHH6usxyy31zMp7I4aCYb6XIf6w==", "dev": true, "license": "MIT" }, - "node_modules/jest-circus/node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "node_modules/hermes-estree": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.23.1.tgz", + "integrity": "sha512-eT5MU3f5aVhTqsfIReZ6n41X5sYn4IdQL0nvz6yO+MMlPxw49aSARHLg/MSehQftyjnrE8X6bYregzSumqc6cg==", + "dev": true, + "license": "MIT" + }, + "node_modules/hermes-parser": { + "version": "0.23.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.23.1.tgz", + "integrity": "sha512-oxl5h2DkFW83hT4DAUJorpah8ou4yvmweUzLJmmr6YV2cezduCdlil1AvU/a/xSsAFo4WUcNA4GoV5Bvq6JffA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "hermes-estree": "0.23.1" } }, - "node_modules/jest-circus/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "node_modules/highlight-es": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/highlight-es/-/highlight-es-1.0.3.tgz", + "integrity": "sha512-s/SIX6yp/5S1p8aC/NRDC1fwEb+myGIfp8/TzZz0rtAv8fzsdX7vGl3Q1TrXCsczFq8DI3CBFBCySPClfBSdbg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "chalk": "^2.4.0", + "is-es2016-keyword": "^1.0.0", + "js-tokens": "^3.0.0" + } + }, + "node_modules/highlight-es/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=4" } }, - "node_modules/jest-cli": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", - "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "node_modules/highlight-es/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/core": "^29.7.0", - "@jest/test-result": "^29.7.0", - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "create-jest": "^29.7.0", - "exit": "^0.1.2", - "import-local": "^3.0.2", - "jest-config": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "yargs": "^17.3.1" - }, - "bin": { - "jest": "bin/jest.js" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "node": ">=4" } }, - "node_modules/jest-cli/node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "node_modules/highlight-es/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, + "color-name": "1.1.3" + } + }, + "node_modules/highlight-es/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/highlight-es/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.8.0" } }, - "node_modules/jest-cli/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "node_modules/highlight-es/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=4" } }, - "node_modules/jest-cli/node_modules/@sinclair/typebox": { - "version": "0.27.10", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", - "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", + "node_modules/highlight-es/node_modules/js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==", "dev": true, "license": "MIT" }, - "node_modules/jest-cli/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "node_modules/highlight-es/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "has-flag": "^3.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=4" } }, - "node_modules/jest-config": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", - "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", - "dev": true, - "license": "MIT", + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "license": "BSD-3-Clause", "dependencies": { - "@babel/core": "^7.11.6", - "@jest/test-sequencer": "^29.7.0", - "@jest/types": "^29.6.3", - "babel-jest": "^29.7.0", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.9", - "jest-circus": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-runner": "^29.7.0", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "micromatch": "^4.0.4", - "parse-json": "^5.2.0", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@types/node": "*", - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "ts-node": { - "optional": true - } + "react-is": "^16.7.0" } }, - "node_modules/jest-config/node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "node_modules/hoist-non-react-statics/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "license": "MIT" + }, + "node_modules/homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", "dev": true, "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.27.8" + "parse-passwd": "^1.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-config/node_modules/@jest/transform": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" + "lru-cache": "^6.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" } }, - "node_modules/jest-config/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" + "yallist": "^4.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" } }, - "node_modules/jest-config/node_modules/@sinclair/typebox": { - "version": "0.27.10", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", - "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", + "node_modules/hosted-git-info/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true, - "license": "MIT" + "license": "ISC" }, - "node_modules/jest-config/node_modules/babel-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", - "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "node_modules/html-encoding-sniffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz", + "integrity": "sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/transform": "^29.7.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.6.3", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" + "whatwg-encoding": "^2.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" + "node": ">=12" } }, - "node_modules/jest-config/node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } + "license": "MIT" }, - "node_modules/jest-config/node_modules/babel-plugin-jest-hoist": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", - "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "node_modules/htmlfy": { + "version": "0.6.7", + "resolved": "https://registry.npmjs.org/htmlfy/-/htmlfy-0.6.7.tgz", + "integrity": "sha512-r8hRd+oIM10lufovN+zr3VKPTYEIvIwqXGucidh2XQufmiw6sbUXFUFjWlfjo3AnefIDTyzykVzQ8IUVuT1peQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/htmlparser2": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.1.0.tgz", + "integrity": "sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==", "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], "license": "MIT", "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.1.0", + "entities": "^4.5.0" } }, - "node_modules/jest-config/node_modules/babel-preset-jest": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", - "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", - "dev": true, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "license": "BSD-2-Clause" + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "license": "MIT", "dependencies": { - "babel-plugin-jest-hoist": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0" + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": ">= 0.8" } }, - "node_modules/jest-config/node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, + "node_modules/http-errors/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 0.8" } }, - "node_modules/jest-config/node_modules/jest-haste-map": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", - "dev": true, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" + "agent-base": "^7.1.0", + "debug": "^4.3.4" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" + "node": ">= 14" } }, - "node_modules/jest-config/node_modules/jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", - "dev": true, + "node_modules/http-proxy-agent/node_modules/agent-base": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", "license": "MIT", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 14" } }, - "node_modules/jest-config/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "agent-base": "6", + "debug": "4" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 6" } }, - "node_modules/jest-config/node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "node_modules/human-signals": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz", + "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/husky": { + "version": "9.1.7", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz", + "integrity": "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==", "dev": true, "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" + "bin": { + "husky": "bin.js" }, "engines": { - "node": ">=8" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/typicode" } }, - "node_modules/jest-config/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "node_modules/hyperbee": { + "version": "2.24.2", + "resolved": "https://registry.npmjs.org/hyperbee/-/hyperbee-2.24.2.tgz", + "integrity": "sha512-RAzptsdDN4oDCQ/MjWavjt720D+jRbzHvVl+YW6OwdcaLJslGpbKjbdWV1yuDiGwBs7iRwTUaFA78GtcRHZFwA==", + "license": "MIT", + "dependencies": { + "b4a": "^1.6.0", + "codecs": "^3.0.0", + "debounceify": "^1.0.0", + "hypercore-errors": "^1.0.0", + "mutexify": "^1.4.0", + "protocol-buffers-encodings": "^1.2.0", + "rache": "^1.0.0", + "ready-resource": "^1.0.0", + "safety-catch": "^1.0.2", + "streamx": "^2.12.4", + "unslab": "^1.2.0" } }, - "node_modules/jest-config/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/jest-config/node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "dev": true, - "license": "ISC", + "node_modules/hyperblobs": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/hyperblobs/-/hyperblobs-2.3.0.tgz", + "integrity": "sha512-iBCLVEo6FK+Xd7cpLM3DQ6cTfuMmKPfDZNj5/JqKEgziBEuI0ZGGyMM5dqaVvtRX4s71y8BhrgsDi2p0pWdSmg==", + "license": "MIT", "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "b4a": "^1.6.1", + "mutexify": "^1.4.0", + "streamx": "^2.13.2" } }, - "node_modules/jest-diff": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", - "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", - "dev": true, + "node_modules/hypercore": { + "version": "10.19.0", + "resolved": "https://registry.npmjs.org/hypercore/-/hypercore-10.19.0.tgz", + "integrity": "sha512-vdK9QC2BmylhL1gqUYBICgRLHYhPqX6f4iOYfQKqcV+xOkiLIJglBNLHIUVYHqGw5W0YunhRzbpA/9IhPtrJOw==", "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^29.6.3", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "@hyperswarm/secret-stream": "^6.0.0", + "b4a": "^1.1.0", + "big-sparse-array": "^1.0.3", + "compact-encoding": "^2.11.0", + "crc-universal": "^1.0.2", + "events": "^3.3.0", + "fast-fifo": "^1.3.0", + "flat-tree": "^1.9.0", + "hypercore-crypto": "^3.2.1", + "hypercore-errors": "^1.0.0", + "is-options": "^1.0.1", + "protomux": "^3.5.0", + "quickbit-universal": "^2.1.1", + "random-access-file": "^4.0.0", + "random-array-iterator": "^1.0.0", + "safety-catch": "^1.0.1", + "sodium-universal": "^4.0.0", + "streamx": "^2.12.4", + "xache": "^1.1.0", + "z32": "^1.0.0" } }, - "node_modules/jest-docblock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", - "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", - "dev": true, + "node_modules/hypercore-crypto": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/hypercore-crypto/-/hypercore-crypto-3.4.2.tgz", + "integrity": "sha512-16ii4M6T1dFfRa41Szv3IR0wXfImJMYJ8ysZEGwHEDH7sMeWVEBck6tg1GCNutYl39E+H7wMY2p3ndCRfj+XdQ==", "license": "MIT", "dependencies": { - "detect-newline": "^3.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "b4a": "^1.6.6", + "compact-encoding": "^2.15.0", + "sodium-universal": "^4.0.1" } }, - "node_modules/jest-each": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", - "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", - "dev": true, + "node_modules/hypercore-errors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/hypercore-errors/-/hypercore-errors-1.4.0.tgz", + "integrity": "sha512-WoaT467lNbDCglxisthpoC1mpBOH/CoM5IADPQm6BvPzZqXca1S6N1uoflLnZOIre9klCr1SdUnLgDWXLalJ7A==", + "license": "Apache-2.0" + }, + "node_modules/hyperdrive": { + "version": "11.5.3", + "resolved": "https://registry.npmjs.org/hyperdrive/-/hyperdrive-11.5.3.tgz", + "integrity": "sha512-0542G6n9eAXK/+fl6bs+9rvxCrL/dQo9mZsbY+BFSCD3S6ymBlaVnjOCuQdNflYBOHFVNnbBYdDvZ9meInv+tw==", + "license": "Apache-2.0", + "dependencies": { + "hyperbee": "^2.11.1", + "hyperblobs": "^2.3.0", + "hypercore-errors": "^1.0.0", + "is-options": "^1.0.2", + "mirror-drive": "^1.2.0", + "ready-resource": "^1.0.0", + "safety-catch": "^1.0.2", + "streamx": "^2.12.4", + "sub-encoder": "^2.1.1", + "unix-path-resolve": "^1.0.2" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "chalk": "^4.0.0", - "jest-get-type": "^29.6.3", - "jest-util": "^29.7.0", - "pretty-format": "^29.7.0" + "safer-buffer": ">= 2.1.2 < 3" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-each/node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 4" } }, - "node_modules/jest-each/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, + "node_modules/image-size": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.2.1.tgz", + "integrity": "sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==", "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" + "queue": "6.0.2" + }, + "bin": { + "image-size": "bin/image-size.js" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=16.x" } }, - "node_modules/jest-each/node_modules/@sinclair/typebox": { - "version": "0.27.10", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", - "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", "dev": true, "license": "MIT" }, - "node_modules/jest-each/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-environment-jsdom": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz", - "integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==", + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/jsdom": "^20.0.0", - "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0", - "jsdom": "^20.0.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } + "node": ">=4" } }, - "node_modules/jest-environment-jsdom/node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "node_modules/import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha512-m7ZEHgtw69qOGw+jwxXkHlrlIPdTGkyh66zXZ1ajZbxkDBNjSY/LGbmjc7h0s2ELsUDTAhFr55TrPSSqJGPG0A==", "dev": true, "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=4" } }, - "node_modules/jest-environment-jsdom/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-environment-jsdom/node_modules/@sinclair/typebox": { - "version": "0.27.10", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", - "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", + "node_modules/import-meta-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", + "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", "dev": true, - "license": "MIT" + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } }, - "node_modules/jest-environment-jsdom/node_modules/jest-mock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", - "dev": true, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.8.19" } }, - "node_modules/jest-environment-jsdom/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", - "dev": true, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/jest-environment-node": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", - "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "node_modules/index-to-position": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/index-to-position/-/index-to-position-1.2.0.tgz", + "integrity": "sha512-Yg7+ztRkqslMAS2iFaU+Oa4KTSidr63OsFGlOrJoW981kIYO3CGCS3wA95P1mUi/IVSJkn0D479KTJpVpvFNuw==", "license": "MIT", - "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-mock": "^29.7.0", - "jest-util": "^29.7.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-environment-node/node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "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.", + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC" + }, + "node_modules/inquirer": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-11.1.0.tgz", + "integrity": "sha512-CmLAZT65GG/v30c+D2Fk8+ceP6pxD6RL+hIUOWAltCmeyEqWYwqu9v76q03OvjyZ3AB0C1Ala2stn1z/rMqGEw==", + "dev": true, "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.27.8" + "@inquirer/core": "^9.2.1", + "@inquirer/prompts": "^6.0.1", + "@inquirer/type": "^2.0.0", + "@types/mute-stream": "^0.0.4", + "ansi-escapes": "^4.3.2", + "mute-stream": "^1.0.0", + "run-async": "^3.0.0", + "rxjs": "^7.8.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" } }, - "node_modules/jest-environment-node/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "license": "MIT", + "node_modules/intl-messageformat": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-11.1.2.tgz", + "integrity": "sha512-ucSrQmZGAxfiBHfBRXW/k7UC8MaGFlEj4Ry1tKiDcmgwQm1y3EDl40u+4VNHYomxJQMJi9NEI3riDRlth96jKg==", + "license": "BSD-3-Clause", "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, + "@formatjs/ecma402-abstract": "3.1.1", + "@formatjs/fast-memoize": "3.1.0", + "@formatjs/icu-messageformat-parser": "3.5.1", + "tslib": "^2.8.1" + } + }, + "node_modules/into-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-8.0.1.tgz", + "integrity": "sha512-Vp2df7Utjs/1/sv0Vlj2X4u2e2yaCrcMd4T9u0D9B36XvxIOBHA2JIZTXCp2TPCa7w/ebwWVkXhbp9At1wJ0zg==", + "license": "MIT", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-environment-node/node_modules/@sinclair/typebox": { - "version": "0.27.10", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", - "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", - "license": "MIT" + "node_modules/invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.0.0" + } }, - "node_modules/jest-environment-node/node_modules/jest-mock": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", - "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "jest-util": "^29.7.0" + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 12" } }, - "node_modules/jest-environment-node/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 0.10" } }, - "node_modules/jest-expo": { - "version": "54.0.16", - "resolved": "https://registry.npmjs.org/jest-expo/-/jest-expo-54.0.16.tgz", - "integrity": "sha512-wPV5dddlNMORNSA7ZjEjePA+ztks3G5iKCOHLIauURnKQPTscnaat5juXPboK1Bv2I+c/RDfkt4uZtAmXdlu/g==", - "dev": true, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", "license": "MIT", - "dependencies": { - "@expo/config": "~12.0.12", - "@expo/json-file": "^10.0.8", - "@jest/create-cache-key-function": "^29.2.1", - "@jest/globals": "^29.2.1", - "babel-jest": "^29.2.1", - "jest-environment-jsdom": "^29.2.1", - "jest-snapshot": "^29.2.1", - "jest-watch-select-projects": "^2.0.0", - "jest-watch-typeahead": "2.2.1", - "json5": "^2.2.3", - "lodash": "^4.17.19", - "react-test-renderer": "19.1.0", - "server-only": "^0.0.1", - "stacktrace-js": "^2.0.2" - }, - "bin": { - "jest": "bin/jest.js" - }, - "peerDependencies": { - "expo": "*", - "react-native": "*", - "react-server-dom-webpack": "~19.0.3 || ~19.1.4 || ~19.2.3" - }, - "peerDependenciesMeta": { - "react-server-dom-webpack": { - "optional": true - } + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/jest-expo/node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.27.8" + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/jest-expo/node_modules/@jest/transform": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" + "binary-extensions": "^2.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/jest-expo/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" + "ci-info": "^2.0.0" }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "bin": { + "is-ci": "bin.js" } }, - "node_modules/jest-expo/node_modules/@sinclair/typebox": { - "version": "0.27.10", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", - "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", + "node_modules/is-ci/node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", "dev": true, "license": "MIT" }, - "node_modules/jest-expo/node_modules/babel-jest": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", - "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", - "dev": true, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", "license": "MIT", "dependencies": { - "@jest/transform": "^29.7.0", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^29.6.3", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "slash": "^3.0.0" + "hasown": "^2.0.2" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">= 0.4" }, - "peerDependencies": { - "@babel/core": "^7.8.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-expo/node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/jest-expo/node_modules/babel-plugin-jest-hoist": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", - "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", - "dev": true, + "node_modules/is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", + "devOptional": true, "license": "MIT", - "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.1.14", - "@types/babel__traverse": "^7.0.6" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-expo/node_modules/babel-preset-jest": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", - "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", - "dev": true, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", "license": "MIT", - "dependencies": { - "babel-plugin-jest-hoist": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0" + "bin": { + "is-docker": "cli.js" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-expo/node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "node_modules/is-es2016-keyword": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-es2016-keyword/-/is-es2016-keyword-1.0.0.tgz", + "integrity": "sha512-JtZWPUwjdbQ1LIo9OSZ8MdkWEve198ors27vH+RzUUvZXXZkzXCxFnlUhzWYxy5IexQSRiXVw9j2q/tHMmkVYQ==", "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, + "license": "MIT" + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/jest-expo/node_modules/jest-haste-map": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "node_modules/is-fullwidth-code-point": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.1.0.tgz", + "integrity": "sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" + "get-east-asian-width": "^1.3.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=18" }, - "optionalDependencies": { - "fsevents": "^2.3.2" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-expo/node_modules/jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "dev": true, "license": "MIT", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=6" } }, - "node_modules/jest-expo/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "is-extglob": "^2.1.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-expo/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/is-immutable-type": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/is-immutable-type/-/is-immutable-type-5.0.1.tgz", + "integrity": "sha512-LkHEOGVZZXxGl8vDs+10k3DvP++SEoYEAJLRk6buTFi6kD7QekThV7xHS0j6gpnUCQ0zpud/gMDGiV4dQneLTg==", "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "license": "BSD-3-Clause", + "dependencies": { + "@typescript-eslint/type-utils": "^8.0.0", + "ts-api-utils": "^2.0.0", + "ts-declaration-location": "^1.0.4" + }, + "peerDependencies": { + "eslint": "*", + "typescript": ">=4.7.4" } }, - "node_modules/jest-expo/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/jest-expo/node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "dev": true, - "license": "ISC", + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "license": "MIT", "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-get-type": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", - "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "node_modules/is-inside-container/node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-haste-map": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz", - "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==", + "node_modules/is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "30.2.0", - "@types/node": "*", - "anymatch": "^3.1.3", - "fb-watchman": "^2.0.2", - "graceful-fs": "^4.2.11", - "jest-regex-util": "30.0.1", - "jest-util": "30.2.0", - "jest-worker": "30.2.0", - "micromatch": "^4.0.8", - "walker": "^1.0.8" + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=10" }, - "optionalDependencies": { - "fsevents": "^2.3.3" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-haste-map/node_modules/jest-worker": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz", - "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==", + "node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", "dev": true, "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-it-type": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/is-it-type/-/is-it-type-5.1.2.tgz", + "integrity": "sha512-q/gOZQTNYABAxaXWnBKZjTFH4yACvWEFtgVOj+LbgxYIgAJG1xVmUZOsECSrZPIemYUQvaQWVilSFVbh4Eyt8A==", + "license": "MIT", "dependencies": { - "@types/node": "*", - "@ungap/structured-clone": "^1.3.0", - "jest-util": "30.2.0", - "merge-stream": "^2.0.0", - "supports-color": "^8.1.1" + "@babel/runtime": "^7.16.7", + "globalthis": "^1.0.2" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=12" } }, - "node_modules/jest-haste-map/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "license": "MIT" + }, + "node_modules/is-npm": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", + "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", "dev": true, "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-leak-detector": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", - "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", - "dev": true, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "license": "MIT", - "dependencies": { - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=0.12.0" } }, - "node_modules/jest-matcher-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", - "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "dev": true, "license": "MIT", - "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "pretty-format": "^29.7.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/jest-message-util": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.3.0.tgz", - "integrity": "sha512-Z/j4Bo+4ySJ+JPJN3b2Qbl9hDq3VrXmnjjGEWD/x0BCXeOXPTV1iZYYzl2X8c1MaCOL+ewMyNBcm88sboE6YWw==", - "dev": true, + "node_modules/is-options": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-options/-/is-options-1.0.2.tgz", + "integrity": "sha512-u+Ai74c8Q74aS8BuHwPdI1jptGOT1FQXgCq8/zv0xRuE+wRgSMEJLj8lVO8Zp9BeGb29BXY6AsNPinfqjkr7Fg==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.27.1", - "@jest/types": "30.3.0", - "@types/stack-utils": "^2.0.3", - "chalk": "^4.1.2", - "graceful-fs": "^4.2.11", - "picomatch": "^4.0.3", - "pretty-format": "30.3.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.6" - }, + "b4a": "^1.1.1" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "license": "MIT", "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-message-util/node_modules/@jest/types": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.3.0.tgz", - "integrity": "sha512-JHm87k7bA33hpBngtU8h6UBub/fqqA9uXfw+21j5Hmk7ooPHlboRNxHq0JcMtC+n8VJGP1mcfnD3Mk+XKe1oSw==", + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, "license": "MIT", "dependencies": { - "@jest/pattern": "30.0.1", - "@jest/schemas": "30.0.5", - "@types/istanbul-lib-coverage": "^2.0.6", - "@types/istanbul-reports": "^3.0.4", - "@types/node": "*", - "@types/yargs": "^17.0.33", - "chalk": "^4.1.2" + "isobject": "^3.0.1" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-message-util/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-running": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-running/-/is-running-2.1.0.tgz", + "integrity": "sha512-mjJd3PujZMl7j+D395WTIO5tU5RIDBfVSRtRR4VOJou3H66E38UjbjvDGh3slJzPuolsb+yQFqwHNNdyp5jg3w==", "dev": true, + "license": "BSD" + }, + "node_modules/is-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", "license": "MIT", "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-message-util/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", "dev": true, + "license": "MIT" + }, + "node_modules/is-unicode-supported": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", "license": "MIT", "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-message-util/node_modules/pretty-format": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.3.0.tgz", - "integrity": "sha512-oG4T3wCbfeuvljnyAzhBvpN45E8iOTXCU/TD3zXW80HA3dQ4ahdqMkWGiPWZvjpQwlbyHrPTWUAqUzGzv4l1JQ==", + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true, "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "license": "MIT", "dependencies": { - "@jest/schemas": "30.0.5", - "ansi-styles": "^5.2.0", - "react-is": "^18.3.1" + "is-docker": "^2.0.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=8" } }, - "node_modules/jest-message-util/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "node_modules/is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", "dev": true, "license": "MIT" }, - "node_modules/jest-mock": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.3.0.tgz", - "integrity": "sha512-OTzICK8CpE+t4ndhKrwlIdbM6Pn8j00lvmSmq5ejiO+KxukbLjgOflKWMn3KE34EZdQm5RqTuKj+5RIEniYhog==", + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/iso-3166": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/iso-3166/-/iso-3166-4.3.0.tgz", + "integrity": "sha512-H4kM/sVbxTjSl9xnQCYOrNWdpN0R8Uz26j1BuXI9E6U+kw5wmd3HyPgr/v4+NCuvV/NcvwTfZxd5XZ4lPKvBNA==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "dev": true, "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "license": "BSD-3-Clause", "dependencies": { - "@jest/types": "30.3.0", - "@types/node": "*", - "jest-util": "30.3.0" + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/jest-mock/node_modules/@jest/types": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.3.0.tgz", - "integrity": "sha512-JHm87k7bA33hpBngtU8h6UBub/fqqA9uXfw+21j5Hmk7ooPHlboRNxHq0JcMtC+n8VJGP1mcfnD3Mk+XKe1oSw==", + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "@jest/pattern": "30.0.1", - "@jest/schemas": "30.0.5", - "@types/istanbul-lib-coverage": "^2.0.6", - "@types/istanbul-reports": "^3.0.4", - "@types/node": "*", - "@types/yargs": "^17.0.33", - "chalk": "^4.1.2" + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=10" } }, - "node_modules/jest-mock/node_modules/ci-info": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", - "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", + "license": "BSD-3-Clause", + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/jest-mock/node_modules/jest-util": { - "version": "30.3.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.3.0.tgz", - "integrity": "sha512-/jZDa00a3Sz7rdyu55NLrQCIrbyIkbBxareejQI315f/i8HjYN+ZWsDLLpoQSiUIEIyZF/R8fDg3BmB8AtHttg==", + "node_modules/istanbul-reports": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz", + "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==", "dev": true, - "license": "MIT", + "license": "BSD-3-Clause", "dependencies": { - "@jest/types": "30.3.0", - "@types/node": "*", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "graceful-fs": "^4.2.11", - "picomatch": "^4.0.3" + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": ">=8" } }, - "node_modules/jest-mock/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" + "node_modules/itty-router": { + "version": "5.0.23", + "resolved": "https://registry.npmjs.org/itty-router/-/itty-router-5.0.23.tgz", + "integrity": "sha512-i49WU+SNPrwOZA4Z61En1RYd5h2Lcqa+5IvCpMrNi4dxymzJK15ozUUnRrWIUAv95Zamd4eJPAot2UvHRrQg7w==", + "license": "MIT" + }, + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", - "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "node_modules/jake": { + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/jake/-/jake-10.9.2.tgz", + "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "async": "^3.2.3", + "chalk": "^4.0.2", + "filelist": "^1.0.4", + "minimatch": "^3.1.2" + }, + "bin": { + "jake": "bin/cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "dev": true, "license": "MIT", + "peer": true, + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" + }, + "bin": { + "jest": "bin/jest.js" + }, "engines": { - "node": ">=6" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" }, "peerDependencies": { - "jest-resolve": "*" + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" }, "peerDependenciesMeta": { - "jest-resolve": { + "node-notifier": { "optional": true } } }, - "node_modules/jest-regex-util": { - "version": "30.0.1", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz", - "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==", + "node_modules/jest-changed-files": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", "dev": true, "license": "MIT", + "dependencies": { + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" + }, "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-resolve": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", - "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "node_modules/jest-changed-files/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^29.7.0", - "jest-validate": "^29.7.0", - "resolve": "^1.20.0", - "resolve.exports": "^2.0.0", - "slash": "^3.0.0" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/jest-resolve-dependencies": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", - "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "node_modules/jest-changed-files/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, "license": "MIT", - "dependencies": { - "jest-regex-util": "^29.6.3", - "jest-snapshot": "^29.7.0" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-resolve-dependencies/node_modules/jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "node_modules/jest-changed-files/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, - "license": "MIT", + "license": "Apache-2.0", "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=10.17.0" } }, - "node_modules/jest-resolve/node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "node_modules/jest-changed-files/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "dev": true, "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-resolve/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "node_modules/jest-changed-files/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" + "path-key": "^3.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=8" } }, - "node_modules/jest-resolve/node_modules/@sinclair/typebox": { - "version": "0.27.10", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", - "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-resolve/node_modules/jest-haste-map": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "node_modules/jest-changed-files/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" + "mimic-fn": "^2.1.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=6" }, - "optionalDependencies": { - "fsevents": "^2.3.2" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-resolve/node_modules/jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "node_modules/jest-changed-files/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "dev": true, - "license": "MIT", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } + "license": "ISC" }, - "node_modules/jest-resolve/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "node_modules/jest-changed-files/node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": ">=6" } }, - "node_modules/jest-runner": { + "node_modules/jest-circus": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", - "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/console": "^29.7.0", "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", "@jest/test-result": "^29.7.0", - "@jest/transform": "^29.7.0", "@jest/types": "^29.6.3", "@types/node": "*", "chalk": "^4.0.0", - "emittery": "^0.13.1", - "graceful-fs": "^4.2.9", - "jest-docblock": "^29.7.0", - "jest-environment-node": "^29.7.0", - "jest-haste-map": "^29.7.0", - "jest-leak-detector": "^29.7.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", "jest-message-util": "^29.7.0", - "jest-resolve": "^29.7.0", "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", "jest-util": "^29.7.0", - "jest-watcher": "^29.7.0", - "jest-worker": "^29.7.0", "p-limit": "^3.1.0", - "source-map-support": "0.5.13" + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runner/node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "node_modules/jest-cli": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", "dev": true, "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.27.8" + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "node_modules/jest-runner/node_modules/@jest/transform": { + "node_modules/jest-config": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", "dev": true, "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", + "babel-jest": "^29.7.0", "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", "micromatch": "^4.0.4", - "pirates": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" + "strip-json-comments": "^3.1.1" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } } }, - "node_modules/jest-runner/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "node_modules/jest-config/node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" } }, - "node_modules/jest-runner/node_modules/@sinclair/typebox": { - "version": "0.27.10", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", - "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", + "node_modules/jest-config/node_modules/babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", "dev": true, - "license": "MIT" + "license": "MIT", + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } }, - "node_modules/jest-runner/node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "node_modules/jest-config/node_modules/babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" }, "engines": { - "node": ">=8" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/jest-runner/node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "node_modules/jest-config/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, - "license": "BSD-3-Clause", + "license": "ISC", "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=8" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jest-runner/node_modules/jest-haste-map": { + "node_modules/jest-diff": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" } }, - "node_modules/jest-runner/node_modules/jest-message-util": { + "node_modules/jest-docblock": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", - "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "detect-newline": "^3.0.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runner/node_modules/jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", "dev": true, "license": "MIT", + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" + }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runner/node_modules/jest-util": { + "node_modules/jest-environment-jsdom": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.7.0.tgz", + "integrity": "sha512-k9iQbsf9OyOfdzWH8HDmrRT0gSIcX+FLNW7IQq94tFX0gynPwqDTW0Ho6iMVNjGz/nb+l/vW3dWM2bbLLpkbXA==", "dev": true, "license": "MIT", "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", "@jest/types": "^29.6.3", + "@types/jsdom": "^20.0.0", "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0", + "jsdom": "^20.0.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } } }, - "node_modules/jest-runner/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "license": "MIT", + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runner/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/jest-runner/node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "node_modules/jest-expo": { + "version": "54.0.16", + "resolved": "https://registry.npmjs.org/jest-expo/-/jest-expo-54.0.16.tgz", + "integrity": "sha512-wPV5dddlNMORNSA7ZjEjePA+ztks3G5iKCOHLIauURnKQPTscnaat5juXPboK1Bv2I+c/RDfkt4uZtAmXdlu/g==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" + "@expo/config": "~12.0.12", + "@expo/json-file": "^10.0.8", + "@jest/create-cache-key-function": "^29.2.1", + "@jest/globals": "^29.2.1", + "babel-jest": "^29.2.1", + "jest-environment-jsdom": "^29.2.1", + "jest-snapshot": "^29.2.1", + "jest-watch-select-projects": "^2.0.0", + "jest-watch-typeahead": "2.2.1", + "json5": "^2.2.3", + "lodash": "^4.17.19", + "react-test-renderer": "19.1.0", + "server-only": "^0.0.1", + "stacktrace-js": "^2.0.2" }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "bin": { + "jest": "bin/jest.js" + }, + "peerDependencies": { + "expo": "*", + "react-native": "*", + "react-server-dom-webpack": "~19.0.3 || ~19.1.4 || ~19.2.3" + }, + "peerDependenciesMeta": { + "react-server-dom-webpack": { + "optional": true + } } }, - "node_modules/jest-runtime": { + "node_modules/jest-expo/node_modules/babel-jest": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", - "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", "dev": true, "license": "MIT", "dependencies": { - "@jest/environment": "^29.7.0", - "@jest/fake-timers": "^29.7.0", - "@jest/globals": "^29.7.0", - "@jest/source-map": "^29.6.3", - "@jest/test-result": "^29.7.0", "@jest/transform": "^29.7.0", - "@jest/types": "^29.6.3", - "@types/node": "*", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "glob": "^7.1.3", "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-message-util": "^29.7.0", - "jest-mock": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-resolve": "^29.7.0", - "jest-snapshot": "^29.7.0", - "jest-util": "^29.7.0", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" + "slash": "^3.0.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" } }, - "node_modules/jest-runtime/node_modules/@jest/schemas": { + "node_modules/jest-expo/node_modules/babel-plugin-jest-hoist": { "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", "dev": true, "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.27.8" + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runtime/node_modules/@jest/transform": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "node_modules/jest-expo/node_modules/babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "node_modules/jest-runtime/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "node_modules/jest-expo/node_modules/char-regex": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-2.0.2.tgz", + "integrity": "sha512-cbGOjAptfM2LVmWhwRFHEKTPkLwNddVmuqYZQt895yXwAsWsXObCG+YN4DGQ/JBtT4GP1a1lPPdio2z413LmTg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.20" + } + }, + "node_modules/jest-expo/node_modules/jest-watch-typeahead": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-2.2.1.tgz", + "integrity": "sha512-jYpYmUnTzysmVnwq49TAxlmtOAwp8QIqvZyoofQFn8fiWhEDZj33ZXzg3JA4nGnzWFm1hbWf3ADpteUokvXgFA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" + "ansi-escapes": "^6.0.0", + "chalk": "^4.0.0", + "jest-regex-util": "^29.0.0", + "jest-watcher": "^29.0.0", + "slash": "^5.0.0", + "string-length": "^5.0.1", + "strip-ansi": "^7.0.1" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "node": "^14.17.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "jest": "^27.0.0 || ^28.0.0 || ^29.0.0" } }, - "node_modules/jest-runtime/node_modules/@sinclair/typebox": { - "version": "0.27.10", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", - "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", + "node_modules/jest-expo/node_modules/jest-watch-typeahead/node_modules/ansi-escapes": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.1.tgz", + "integrity": "sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/jest-runtime/node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "node_modules/jest-expo/node_modules/jest-watch-typeahead/node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-runtime/node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "node_modules/jest-expo/node_modules/jest-watch-typeahead/node_modules/string-length": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-5.0.1.tgz", + "integrity": "sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow==", "dev": true, - "license": "BSD-3-Clause", + "license": "MIT", "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" + "char-regex": "^2.0.0", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=8" + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "license": "MIT", + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runtime/node_modules/jest-haste-map": { + "node_modules/jest-haste-map": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -24907,11 +21836,40 @@ "fsevents": "^2.3.2" } }, - "node_modules/jest-runtime/node_modules/jest-message-util": { + "node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "dev": true, + "license": "MIT", + "dependencies": { + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", - "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.12.13", @@ -24928,11 +21886,10 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runtime/node_modules/jest-mock": { + "node_modules/jest-mock": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -24943,298 +21900,204 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runtime/node_modules/jest-regex-util": { + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", - "dev": true, "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runtime/node_modules/jest-util": { + "node_modules/jest-resolve": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", "dev": true, "license": "MIT", "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", "chalk": "^4.0.0", - "ci-info": "^3.2.0", "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-runtime/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/jest-runtime/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/jest-runtime/node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "node_modules/jest-resolve-dependencies": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-snapshot": { + "node_modules/jest-runner": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", - "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.11.6", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-jsx": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/types": "^7.3.3", - "@jest/expect-utils": "^29.7.0", + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", "@jest/transform": "^29.7.0", "@jest/types": "^29.6.3", - "babel-preset-current-node-syntax": "^1.0.0", + "@types/node": "*", "chalk": "^4.0.0", - "expect": "^29.7.0", + "emittery": "^0.13.1", "graceful-fs": "^4.2.9", - "jest-diff": "^29.7.0", - "jest-get-type": "^29.6.3", - "jest-matcher-utils": "^29.7.0", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", "jest-util": "^29.7.0", - "natural-compare": "^1.4.0", - "pretty-format": "^29.7.0", - "semver": "^7.5.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/@jest/expect-utils": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", - "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", - "dev": true, - "license": "MIT", - "dependencies": { - "jest-get-type": "^29.6.3" + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-snapshot/node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "node_modules/jest-runner/node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", "dev": true, "license": "MIT", "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" } }, - "node_modules/jest-snapshot/node_modules/@jest/transform": { + "node_modules/jest-runtime": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.11.6", + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", + "@types/node": "*", "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", "graceful-fs": "^4.2.9", "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" + "strip-bom": "^4.0.0" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-snapshot/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "node_modules/jest-runtime/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, - "license": "MIT", + "license": "ISC", "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/@sinclair/typebox": { - "version": "0.27.10", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", - "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-snapshot/node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" + "node": "*" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/jest-snapshot/node_modules/expect": { + "node_modules/jest-snapshot": { "version": "29.7.0", - "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", - "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", "dev": true, "license": "MIT", "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", "jest-get-type": "^29.6.3", "jest-matcher-utils": "^29.7.0", "jest-message-util": "^29.7.0", - "jest-util": "^29.7.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jest-snapshot/node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/jest-snapshot/node_modules/jest-haste-map": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.6.3", "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/jest-snapshot/node_modules/jest-message-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", - "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^29.6.3", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.9", - "micromatch": "^4.0.4", + "natural-compare": "^1.4.0", "pretty-format": "^29.7.0", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" + "semver": "^7.5.3" }, "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-snapshot/node_modules/jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-snapshot/node_modules/jest-util": { + "node_modules/jest-util": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", - "dev": true, "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", @@ -25248,69 +22111,13 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-snapshot/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/jest-snapshot/node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "dev": true, - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/jest-util": { - "version": "30.2.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz", - "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "30.2.0", - "@types/node": "*", - "chalk": "^4.1.2", - "ci-info": "^4.2.0", - "graceful-fs": "^4.2.11", - "picomatch": "^4.0.2" - }, - "engines": { - "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0" - } - }, - "node_modules/jest-util/node_modules/ci-info": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", - "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/jest-util/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true, + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "license": "MIT", "engines": { - "node": ">=12" + "node": ">=8.6" }, "funding": { "url": "https://github.com/sponsors/jonschlinkert" @@ -25333,41 +22140,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-validate/node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-validate/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-validate/node_modules/@sinclair/typebox": { - "version": "0.27.10", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", - "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", - "license": "MIT" - }, "node_modules/jest-validate/node_modules/camelcase": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", @@ -25406,91 +22178,6 @@ "node": ">=8" } }, - "node_modules/jest-watch-typeahead": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/jest-watch-typeahead/-/jest-watch-typeahead-2.2.1.tgz", - "integrity": "sha512-jYpYmUnTzysmVnwq49TAxlmtOAwp8QIqvZyoofQFn8fiWhEDZj33ZXzg3JA4nGnzWFm1hbWf3ADpteUokvXgFA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-escapes": "^6.0.0", - "chalk": "^4.0.0", - "jest-regex-util": "^29.0.0", - "jest-watcher": "^29.0.0", - "slash": "^5.0.0", - "string-length": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": "^14.17.0 || ^16.10.0 || >=18.0.0" - }, - "peerDependencies": { - "jest": "^27.0.0 || ^28.0.0 || ^29.0.0" - } - }, - "node_modules/jest-watch-typeahead/node_modules/ansi-escapes": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.1.tgz", - "integrity": "sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-watch-typeahead/node_modules/char-regex": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-2.0.2.tgz", - "integrity": "sha512-cbGOjAptfM2LVmWhwRFHEKTPkLwNddVmuqYZQt895yXwAsWsXObCG+YN4DGQ/JBtT4GP1a1lPPdio2z413LmTg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.20" - } - }, - "node_modules/jest-watch-typeahead/node_modules/jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-watch-typeahead/node_modules/slash": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", - "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-watch-typeahead/node_modules/string-length": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-5.0.1.tgz", - "integrity": "sha512-9Ep08KAMUn0OadnVaBuRdE2l615CQ508kr0XMadjClfYpdCyvrbFp6Taebo8yyxokQ4viUd/xPPUA4FGgUa0ow==", - "dev": true, - "license": "MIT", - "dependencies": { - "char-regex": "^2.0.0", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/jest-watcher": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", @@ -25511,62 +22198,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-watcher/node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-watcher/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-watcher/node_modules/@sinclair/typebox": { - "version": "0.27.10", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", - "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", - "dev": true, - "license": "MIT" - }, - "node_modules/jest-watcher/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/jest-worker": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", @@ -25582,58 +22213,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/jest-worker/node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-worker/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest-worker/node_modules/@sinclair/typebox": { - "version": "0.27.10", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", - "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", - "license": "MIT" - }, - "node_modules/jest-worker/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", @@ -25649,60 +22228,12 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/jest/node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/jest/node_modules/@sinclair/typebox": { - "version": "0.27.10", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", - "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", - "dev": true, - "license": "MIT" - }, "node_modules/jimp-compact": { "version": "0.16.1", "resolved": "https://registry.npmjs.org/jimp-compact/-/jimp-compact-0.16.1.tgz", "integrity": "sha512-dZ6Ra7u1G8c4Letq/B5EzAxj4tLFHL+cGtdpR+PVm4yzPDj+lCk+AbivWt1eOM+ikzkowtyV7qSqX6qr3t71Ww==", "license": "MIT" }, - "node_modules/jiti": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", - "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", - "dev": true, - "license": "MIT", - "bin": { - "jiti": "lib/jiti-cli.mjs" - } - }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -25721,6 +22252,12 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "license": "MIT" + }, "node_modules/jsc-safe-url": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/jsc-safe-url/-/jsc-safe-url-0.2.4.tgz", @@ -25923,9 +22460,9 @@ } }, "node_modules/json-schema-ref-parser/node_modules/js-yaml": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", - "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, "license": "MIT", "dependencies": { @@ -25936,6 +22473,13 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/json-schema-ref-parser/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, "node_modules/json-schema-ref-resolver": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/json-schema-ref-resolver/-/json-schema-ref-resolver-1.0.1.tgz", @@ -25946,9 +22490,10 @@ } }, "node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, "license": "MIT" }, "node_modules/json-stable-stringify": { @@ -26017,9 +22562,9 @@ } }, "node_modules/jsonpath-plus": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-10.4.0.tgz", - "integrity": "sha512-T92WWatJXmhBbKsgH/0hl+jxjdXrifi5IKeMY02DWggRxX0UElcbVzPlmgLTbvsPeW1PasQ6xE2Q75stkhGbsA==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/jsonpath-plus/-/jsonpath-plus-10.3.0.tgz", + "integrity": "sha512-8TNmfeTCk2Le33A3vRRwtuworG/L5RrgMvdjhKZxvyShO+mBu2fP50OWUjRLNtvw344DdDarFh9buFAZs5ujeA==", "dev": true, "license": "MIT", "dependencies": { @@ -26128,9 +22673,9 @@ } }, "node_modules/ky": { - "version": "1.14.3", - "resolved": "https://registry.npmjs.org/ky/-/ky-1.14.3.tgz", - "integrity": "sha512-9zy9lkjac+TR1c2tG+mkNSVlyOpInnWdSMiue4F+kq8TwJSgv6o8jhLRg8Ho6SnZ9wOYUq/yozts9qQCfk7bIw==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/ky/-/ky-1.8.1.tgz", + "integrity": "sha512-7Bp3TpsE+L+TARSnnDpk3xg8Idi8RwSLdj6CMbNWoOARIrGrbuLGusV0dYwbZOm4bB3jHNxSw8Wk/ByDqJEnDw==", "license": "MIT", "engines": { "node": ">=18" @@ -26279,9 +22824,9 @@ "license": "MIT" }, "node_modules/lightningcss": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", - "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.31.1.tgz", + "integrity": "sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ==", "license": "MPL-2.0", "dependencies": { "detect-libc": "^2.0.3" @@ -26294,23 +22839,23 @@ "url": "https://opencollective.com/parcel" }, "optionalDependencies": { - "lightningcss-android-arm64": "1.32.0", - "lightningcss-darwin-arm64": "1.32.0", - "lightningcss-darwin-x64": "1.32.0", - "lightningcss-freebsd-x64": "1.32.0", - "lightningcss-linux-arm-gnueabihf": "1.32.0", - "lightningcss-linux-arm64-gnu": "1.32.0", - "lightningcss-linux-arm64-musl": "1.32.0", - "lightningcss-linux-x64-gnu": "1.32.0", - "lightningcss-linux-x64-musl": "1.32.0", - "lightningcss-win32-arm64-msvc": "1.32.0", - "lightningcss-win32-x64-msvc": "1.32.0" + "lightningcss-android-arm64": "1.31.1", + "lightningcss-darwin-arm64": "1.31.1", + "lightningcss-darwin-x64": "1.31.1", + "lightningcss-freebsd-x64": "1.31.1", + "lightningcss-linux-arm-gnueabihf": "1.31.1", + "lightningcss-linux-arm64-gnu": "1.31.1", + "lightningcss-linux-arm64-musl": "1.31.1", + "lightningcss-linux-x64-gnu": "1.31.1", + "lightningcss-linux-x64-musl": "1.31.1", + "lightningcss-win32-arm64-msvc": "1.31.1", + "lightningcss-win32-x64-msvc": "1.31.1" } }, "node_modules/lightningcss-android-arm64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", - "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.31.1.tgz", + "integrity": "sha512-HXJF3x8w9nQ4jbXRiNppBCqeZPIAfUo8zE/kOEGbW5NZvGc/K7nMxbhIr+YlFlHW5mpbg/YFPdbnCh1wAXCKFg==", "cpu": [ "arm64" ], @@ -26328,9 +22873,9 @@ } }, "node_modules/lightningcss-darwin-arm64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", - "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.31.1.tgz", + "integrity": "sha512-02uTEqf3vIfNMq3h/z2cJfcOXnQ0GRwQrkmPafhueLb2h7mqEidiCzkE4gBMEH65abHRiQvhdcQ+aP0D0g67sg==", "cpu": [ "arm64" ], @@ -26348,9 +22893,9 @@ } }, "node_modules/lightningcss-darwin-x64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", - "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.31.1.tgz", + "integrity": "sha512-1ObhyoCY+tGxtsz1lSx5NXCj3nirk0Y0kB/g8B8DT+sSx4G9djitg9ejFnjb3gJNWo7qXH4DIy2SUHvpoFwfTA==", "cpu": [ "x64" ], @@ -26368,9 +22913,9 @@ } }, "node_modules/lightningcss-freebsd-x64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", - "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.31.1.tgz", + "integrity": "sha512-1RINmQKAItO6ISxYgPwszQE1BrsVU5aB45ho6O42mu96UiZBxEXsuQ7cJW4zs4CEodPUioj/QrXW1r9pLUM74A==", "cpu": [ "x64" ], @@ -26388,9 +22933,9 @@ } }, "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", - "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.31.1.tgz", + "integrity": "sha512-OOCm2//MZJ87CdDK62rZIu+aw9gBv4azMJuA8/KB74wmfS3lnC4yoPHm0uXZ/dvNNHmnZnB8XLAZzObeG0nS1g==", "cpu": [ "arm" ], @@ -26408,9 +22953,9 @@ } }, "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", - "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.31.1.tgz", + "integrity": "sha512-WKyLWztD71rTnou4xAD5kQT+982wvca7E6QoLpoawZ1gP9JM0GJj4Tp5jMUh9B3AitHbRZ2/H3W5xQmdEOUlLg==", "cpu": [ "arm64" ], @@ -26428,9 +22973,9 @@ } }, "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", - "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.31.1.tgz", + "integrity": "sha512-mVZ7Pg2zIbe3XlNbZJdjs86YViQFoJSpc41CbVmKBPiGmC4YrfeOyz65ms2qpAobVd7WQsbW4PdsSJEMymyIMg==", "cpu": [ "arm64" ], @@ -26448,9 +22993,9 @@ } }, "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", - "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.31.1.tgz", + "integrity": "sha512-xGlFWRMl+0KvUhgySdIaReQdB4FNudfUTARn7q0hh/V67PVGCs3ADFjw+6++kG1RNd0zdGRlEKa+T13/tQjPMA==", "cpu": [ "x64" ], @@ -26468,9 +23013,9 @@ } }, "node_modules/lightningcss-linux-x64-musl": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", - "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.31.1.tgz", + "integrity": "sha512-eowF8PrKHw9LpoZii5tdZwnBcYDxRw2rRCyvAXLi34iyeYfqCQNA9rmUM0ce62NlPhCvof1+9ivRaTY6pSKDaA==", "cpu": [ "x64" ], @@ -26488,9 +23033,9 @@ } }, "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", - "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.31.1.tgz", + "integrity": "sha512-aJReEbSEQzx1uBlQizAOBSjcmr9dCdL3XuC/6HLXAxmtErsj2ICo5yYggg1qOODQMtnjNQv2UHb9NpOuFtYe4w==", "cpu": [ "arm64" ], @@ -26508,9 +23053,9 @@ } }, "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", - "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", + "version": "1.31.1", + "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.31.1.tgz", + "integrity": "sha512-I9aiFrbd7oYHwlnQDqr1Roz+fTz61oDDJX7n9tYF9FJymH1cIN1DtKw3iYt6b8WZgEjoNwVSncwF4wx/ZedMhw==", "cpu": [ "x64" ], @@ -26558,6 +23103,16 @@ "url": "https://opencollective.com/lint-staged" } }, + "node_modules/lint-staged/node_modules/commander": { + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.2.tgz", + "integrity": "sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + } + }, "node_modules/listr2": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/listr2/-/listr2-9.0.5.tgz", @@ -26589,6 +23144,13 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/listr2/node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", + "dev": true, + "license": "MIT" + }, "node_modules/listr2/node_modules/string-width": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", @@ -26652,9 +23214,9 @@ } }, "node_modules/load-yaml-file/node_modules/js-yaml": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", - "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, "license": "MIT", "dependencies": { @@ -26665,6 +23227,13 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/load-yaml-file/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, "node_modules/load-yaml-file/node_modules/strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", @@ -26711,24 +23280,21 @@ } }, "node_modules/locate-path": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", - "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "license": "MIT", "dependencies": { - "p-locate": "^6.0.0" + "p-locate": "^4.1.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/lodash": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", - "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "license": "MIT" }, "node_modules/lodash.camelcase": { @@ -26850,9 +23416,9 @@ } }, "node_modules/log-update/node_modules/ansi-escapes": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.3.0.tgz", - "integrity": "sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.2.0.tgz", + "integrity": "sha512-g6LhBsl+GBPRWGWsBtutpzBYuIIdBkLEvad5C/va/74Db018+5TZiyA26cZJAr3Rft5lprVqOIPxf5Vid6tqAw==", "dev": true, "license": "MIT", "dependencies": { @@ -26878,22 +23444,12 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/log-update/node_modules/slice-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.2.tgz", - "integrity": "sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==", + "node_modules/log-update/node_modules/emoji-regex": { + "version": "10.6.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.6.0.tgz", + "integrity": "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==", "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.2.1", - "is-fullwidth-code-point": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } + "license": "MIT" }, "node_modules/log-update/node_modules/string-width": { "version": "7.2.0", @@ -27018,19 +23574,128 @@ } }, "node_modules/magic-bytes.js": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/magic-bytes.js/-/magic-bytes.js-1.13.0.tgz", - "integrity": "sha512-afO2mnxW7GDTXMm5/AoN1WuOcdoKhtgXjIvHmobqTD1grNplhGdv3PFOyjCVmrnOZBIT/gD/koDKpYG+0mvHcg==", - "license": "MIT" + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/magic-bytes.js/-/magic-bytes.js-1.11.0.tgz", + "integrity": "sha512-nVmadqN9gam80tdnn74qjFCKgldwzv1+96XmeCvR3bY7wNn2PjHMnRakOWC6+32g133vgZOjUiYgswIxohffzA==", + "license": "MIT", + "dependencies": { + "rimraf": "^6.0.1" + } + }, + "node_modules/magic-bytes.js/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/magic-bytes.js/node_modules/glob": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.1.tgz", + "integrity": "sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==", + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^4.0.1", + "minimatch": "^10.0.0", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/magic-bytes.js/node_modules/jackspeak": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.0.tgz", + "integrity": "sha512-9DDdhb5j6cpeitCbvLO7n7J4IxnbM6hoF6O1g4HQ5TfhvvKN8ywDM7668ZhMHRqVmxqhps/F6syWK2KcPxYlkw==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/magic-bytes.js/node_modules/lru-cache": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.1.0.tgz", + "integrity": "sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==", + "license": "ISC", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/magic-bytes.js/node_modules/minimatch": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", + "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/magic-bytes.js/node_modules/path-scurry": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", + "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/magic-bytes.js/node_modules/rimraf": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.0.1.tgz", + "integrity": "sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==", + "license": "ISC", + "dependencies": { + "glob": "^11.0.0", + "package-json-from-dist": "^1.0.0" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } }, "node_modules/magic-string": { - "version": "0.30.21", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", - "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.5" + "@jridgewell/sourcemap-codec": "^1.5.0" } }, "node_modules/make-dir": { @@ -27102,6 +23767,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/map-stream": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/map-stream/-/map-stream-0.1.0.tgz", + "integrity": "sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==", + "dev": true + }, "node_modules/marky": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/marky/-/marky-1.3.0.tgz", @@ -27129,9 +23800,9 @@ } }, "node_modules/mbtiles-reader/node_modules/@mapbox/sphericalmercator": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@mapbox/sphericalmercator/-/sphericalmercator-2.0.2.tgz", - "integrity": "sha512-Ai/S9qXupBzFCM0i4sYDIx1A0pDYMaD3xlhVg05JToYeyORq8aAuHbd6CCPC86HlLSjYmoPeljJ5tMVKtzd4Lg==" + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@mapbox/sphericalmercator/-/sphericalmercator-2.0.1.tgz", + "integrity": "sha512-k1vM33y0oGIgip01EqdrWEMZLsYj9fP3jH7PZmeSCsCuubTQGjyrOANGSsqh+JtyqydYfXk9VBUVcyabvNTYXg==" }, "node_modules/mdn-data": { "version": "2.0.14", @@ -27192,132 +23863,12 @@ "node": ">=0.10.0" } }, - "node_modules/meow/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/meow/node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/meow/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/meow/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/meow/node_modules/normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/meow/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/meow/node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } + "license": "ISC" }, "node_modules/meow/node_modules/read-pkg": { "version": "5.2.0", @@ -27363,13 +23914,6 @@ "node": ">=8" } }, - "node_modules/meow/node_modules/read-pkg/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true, - "license": "ISC" - }, "node_modules/meow/node_modules/read-pkg/node_modules/normalize-package-data": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", @@ -27383,16 +23927,6 @@ "validate-npm-package-license": "^3.0.1" } }, - "node_modules/meow/node_modules/read-pkg/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, "node_modules/meow/node_modules/read-pkg/node_modules/type-fest": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", @@ -27403,6 +23937,16 @@ "node": ">=8" } }, + "node_modules/meow/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, "node_modules/meow/node_modules/type-fest": { "version": "0.18.1", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", @@ -27416,13 +23960,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/meow/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true, - "license": "ISC" - }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -28203,10 +24740,22 @@ "node": ">=8.6" } }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/mime": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-4.1.0.tgz", - "integrity": "sha512-X5ju04+cAzsojXKes0B/S4tcYtFAJ6tTMuSPBEn9CPGlrWr8Fiw7qYeLT0XyH80HSoAoqWCaz+MWKh22P7G1cw==", + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/mime/-/mime-4.0.7.tgz", + "integrity": "sha512-2OfDPL+e03E0LrXaGYOtTFIYhiuzep94NSsuhrNULq+stylcJedcHdzHtz0atMUuGwJfFYs0YL5xeC/Ca2x0eQ==", "funding": [ "https://github.com/sponsors/broofa" ], @@ -28219,9 +24768,9 @@ } }, "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", "license": "MIT", "engines": { "node": ">= 0.6" @@ -28239,13 +24788,23 @@ "node": ">= 0.6" } }, + "node_modules/mime-types/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/mimic-function": { @@ -28281,9 +24840,9 @@ } }, "node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -28365,10 +24924,10 @@ } }, "node_modules/minipass-flush": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.7.tgz", - "integrity": "sha512-TbqTz9cUwWyHS2Dy89P3ocAGUGxKjjLuR9z8w4WUTGAVgEj17/4nhgo2Du56i0Fm3Pm30g4iA8Lcqctc76jCzA==", - "license": "BlueOak-1.0.0", + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -28486,17 +25045,13 @@ "license": "ISC" }, "node_modules/mirror-drive": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/mirror-drive/-/mirror-drive-1.14.1.tgz", - "integrity": "sha512-RRFT+rRQybO5dwUQcetErfZb3IZGll529DZWkzHGlSlfzxzkqRl27Tz46QO1sfK/2VYQxmtosDieAWbInHEoSA==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/mirror-drive/-/mirror-drive-1.5.0.tgz", + "integrity": "sha512-NmQLKkhUkFb8u14I3NvEdET98mU3oieBe9HgMryMQH5MZqfah+Rwe2io4z2koNYP42GNJrkalAHTDGQsFK7kBQ==", "license": "Apache-2.0", "dependencies": { - "bare-events": "^2.8.2", "binary-stream-equals": "^1.0.0", - "rabin-stream": "^2.0.0", "same-data": "^1.0.0", - "speedometer": "^1.1.0", - "streamx": "^2.22.1", "unix-path-resolve": "^1.0.2" } }, @@ -28562,9 +25117,9 @@ } }, "node_modules/mocha/node_modules/brace-expansion": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", - "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "license": "MIT", "dependencies": { @@ -28609,9 +25164,9 @@ } }, "node_modules/mocha/node_modules/diff": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.2.tgz", - "integrity": "sha512-vtcDfH3TOjP8UekytvnHH1o1P4FcUdt4eQ1Y+Abap1tk/OB2MWQvcwS2ClCd1zuIhc3JKOx6p3kod8Vfys3E+A==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -28646,7 +25201,7 @@ "version": "8.1.0", "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "license": "ISC", "dependencies": { @@ -28703,9 +25258,9 @@ } }, "node_modules/mocha/node_modules/minimatch": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", - "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "license": "ISC", "dependencies": { @@ -28731,14 +25286,17 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mocha/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "node_modules/mocha/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, "node_modules/mocha/node_modules/readdirp": { @@ -28798,24 +25356,6 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/mocha/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/mocha/node_modules/yargs": { "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", @@ -28836,9 +25376,9 @@ } }, "node_modules/modern-tar": { - "version": "0.7.6", - "resolved": "https://registry.npmjs.org/modern-tar/-/modern-tar-0.7.6.tgz", - "integrity": "sha512-sweCIVXzx1aIGTCdzcMlSZt1h8k5Tmk08VNAuRk3IU28XamGiOH5ypi11g6De2CH7PhYqSSnGy2A/EFhbWnVKg==", + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/modern-tar/-/modern-tar-0.7.3.tgz", + "integrity": "sha512-4W79zekKGyYU4JXVmB78DOscMFaJth2gGhgfTl2alWE4rNe3nf4N2pqenQ0rEtIewrnD79M687Ouba3YGTLOvg==", "dev": true, "license": "MIT", "engines": { @@ -28867,9 +25407,9 @@ } }, "node_modules/multi-core-indexer/node_modules/@types/node": { - "version": "18.19.130", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.130.tgz", - "integrity": "sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==", + "version": "18.19.86", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.86.tgz", + "integrity": "sha512-fifKayi175wLyKyc5qUfyENhQ1dCNI1UNjp653d8kuYcPQN5JhX3dGuP/XmvPTg/xRBn1VTLpbmi+H/Mr7tLfQ==", "license": "MIT", "dependencies": { "undici-types": "~5.26.4" @@ -28912,13 +25452,12 @@ } }, "node_modules/mute-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", - "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", - "dev": true, + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", + "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", "license": "ISC", "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, "node_modules/mutexify": { @@ -28942,9 +25481,9 @@ } }, "node_modules/nano-spawn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/nano-spawn/-/nano-spawn-2.1.0.tgz", - "integrity": "sha512-yTW+2okrElHiH4fsiz/+/zc0EDo9BDDoC3iKk8dpv1GeRc9nUWzUZHx6TofMWErchhUQR8hY9/Eu1Uja9x1nqA==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/nano-spawn/-/nano-spawn-2.0.0.tgz", + "integrity": "sha512-tacvGzUY5o2D8CBh2rrwxyNojUsZNU2zjNTzKQrkgGJQTbGAfArVWXSKMBokBeeg6C7OLRGUEyoFlYbfeWQIqw==", "dev": true, "license": "MIT", "engines": { @@ -28960,24 +25499,6 @@ "integrity": "sha512-7vO7n28+aYO4J+8w96AzhmU8G+Y/xpPDJz/se19ICsqj/momRbb9mh9ZUtkoJ5X3nTnPdhEJyc0qnM6yAsHBaA==", "license": "ISC" }, - "node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, "node_modules/napi-build-utils": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-2.0.0.tgz", @@ -29044,9 +25565,9 @@ } }, "node_modules/node-abi": { - "version": "3.89.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.89.0.tgz", - "integrity": "sha512-6u9UwL0HlAl21+agMN3YAMXcKByMqwGx+pq+P76vii5f7hTPtKDp08/H9py6DY+cfDw7kQNTGEj/rly3IgbNQA==", + "version": "3.74.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.74.0.tgz", + "integrity": "sha512-c5XK0MjkGBrQPGYG24GBADZud0NCbznxNx0ZkS+ebUTrmV1qTDxPxSL8zEAPURXSbLRWVexxmP4986BziahL5w==", "license": "MIT", "dependencies": { "semver": "^7.3.5" @@ -29100,9 +25621,9 @@ } }, "node_modules/node-forge": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.4.0.tgz", - "integrity": "sha512-LarFH0+6VfriEhqMMcLX2F7SwSXeWwnEAJEsYm5QKWchiVYVvJyV9v7UDvUv+w5HO23ZpQTXDv/GxdDdMyOuoQ==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.3.tgz", + "integrity": "sha512-rLvcdSyRCyouf6jcOIPe/BgwG/d7hKjzMKOas33/pHEr6gbq18IK9zV7DiPvzsz0oBJPme6qr6H6kGZuI9/DZg==", "license": "(BSD-3-Clause OR GPL-2.0)", "engines": { "node": ">= 6.13.0" @@ -29126,9 +25647,9 @@ "license": "MIT" }, "node_modules/node-releases": { - "version": "2.0.37", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.37.tgz", - "integrity": "sha512-1h5gKZCF+pO/o3Iqt5Jp7wc9rH3eJJ0+nh/CIoiRwjRxde/hAHyLPXYN4V3CqKAbiZPSeJFSWHmJsbkicta0Eg==", + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", "license": "MIT" }, "node_modules/node-request-interceptor": { @@ -29168,80 +25689,13 @@ "node": "^16.14.0 || >=18.0.0" } }, - "node_modules/nodejs-mobile-gyp/node_modules/brace-expansion": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", - "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/nodejs-mobile-gyp/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/nodejs-mobile-gyp/node_modules/isexe": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.5.tgz", - "integrity": "sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==", - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/nodejs-mobile-gyp/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "license": "ISC" - }, - "node_modules/nodejs-mobile-gyp/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.2" - }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/nodejs-mobile-gyp/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=16" } }, "node_modules/nodejs-mobile-gyp/node_modules/which": { @@ -29301,6 +25755,48 @@ } } }, + "node_modules/noise-handshake": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/noise-handshake/-/noise-handshake-4.2.0.tgz", + "integrity": "sha512-9O/VTNX/E2/AToyMTTDU0J/4WhaXMTdqc2DHs9vf+snoZ0cenSBq0dNYTVV1snYYEkmo6QeRrYMxtqtoYnY+LA==", + "license": "Apache-2.0", + "dependencies": { + "b4a": "^1.1.0", + "nanoassert": "^2.0.0", + "sodium-universal": "^5.0.0" + } + }, + "node_modules/noise-handshake/node_modules/sodium-native": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/sodium-native/-/sodium-native-5.1.0.tgz", + "integrity": "sha512-3RxgyWyJlhTsABPnJVpCI5CoTDANZTqqFrEPqr+kjfnRaBihpVtMUE3yTF40ukdoB1APXeoBNKF3MzZAIHg39g==", + "license": "MIT", + "dependencies": { + "bare-assert": "^1.2.0", + "require-addon": "^1.1.0", + "which-runtime": "^1.2.1" + }, + "engines": { + "bare": ">=1.16.0" + } + }, + "node_modules/noise-handshake/node_modules/sodium-universal": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/sodium-universal/-/sodium-universal-5.0.1.tgz", + "integrity": "sha512-rv+aH+tnKB5H0MAc2UadHShLMslpJsc4wjdnHRtiSIEYpOetCgu8MS4ExQRia+GL/MK3uuCyZPeEsi+J3h+Q+Q==", + "license": "MIT", + "dependencies": { + "sodium-native": "^5.0.1" + }, + "peerDependencies": { + "sodium-javascript": "~0.8.0" + }, + "peerDependenciesMeta": { + "sodium-javascript": { + "optional": true + } + } + }, "node_modules/nopt": { "version": "7.2.1", "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", @@ -29317,18 +25813,19 @@ } }, "node_modules/normalize-package-data": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-7.0.1.tgz", - "integrity": "sha512-linxNAT6M0ebEYZOx2tO6vBEFsVgnPpv+AVjk0wJHfaUIbq31Jm3T6vvZaarnOeWDh8ShnwXuaAyM7WT3RzErA==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "hosted-git-info": "^8.0.0", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" }, "engines": { - "node": "^18.17.0 || >=20.5.0" + "node": ">=10" } }, "node_modules/normalize-path": { @@ -29547,6 +26044,32 @@ "node": ">=8" } }, + "node_modules/npm-check/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-check/node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/npm-check/node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -29563,16 +26086,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm-check/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/npm-check/node_modules/mute-stream": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", @@ -29609,14 +26122,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm-check/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "node_modules/npm-check/node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", "dev": true, "license": "MIT", "dependencies": { - "p-limit": "^3.0.2" + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" }, "engines": { "node": ">=10" @@ -29625,14 +26146,20 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm-check/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "node_modules/npm-check/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/npm-check/node_modules/pkg-dir": { @@ -29816,19 +26343,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm-run-path/node_modules/unicorn-magic": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", - "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/nth-check": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", @@ -29848,9 +26362,9 @@ "license": "MIT" }, "node_modules/nwsapi": { - "version": "2.2.23", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.23.tgz", - "integrity": "sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==", + "version": "2.2.20", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.20.tgz", + "integrity": "sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA==", "dev": true, "license": "MIT" }, @@ -29996,113 +26510,176 @@ } }, "node_modules/ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "dev": true, + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-3.4.0.tgz", + "integrity": "sha512-eNwHudNbO1folBP3JsZ19v9azXWtQZjICdr3Q0TDPIaeBQ3mXLrh54wM+er0+hSp+dWKf+Z8KM58CYzEyIYxYg==", "license": "MIT", "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-spinners": "^2.0.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^5.2.0", "wcwidth": "^1.0.1" }, "engines": { - "node": ">=10" + "node": ">=6" + } + }, + "node_modules/ora/node_modules/ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/ora/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=4" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/ora/node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", "license": "MIT", "dependencies": { - "restore-cursor": "^3.1.0" + "restore-cursor": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/ora/node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, + "node_modules/ora/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/ora/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" + }, + "node_modules/ora/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "license": "MIT", "engines": { - "node": ">=10" + "node": ">=0.8.0" + } + }, + "node_modules/ora/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/ora/node_modules/log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "license": "MIT", + "dependencies": { + "chalk": "^2.0.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=4" } }, "node_modules/ora/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", "license": "MIT", "engines": { - "node": ">=6" + "node": ">=4" } }, "node_modules/ora/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", "license": "MIT", "dependencies": { - "mimic-fn": "^2.1.0" + "mimic-fn": "^1.0.0" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, "node_modules/ora/node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", "license": "MIT", "dependencies": { - "onetime": "^5.1.0", + "onetime": "^2.0.0", "signal-exit": "^3.0.2" }, "engines": { - "node": ">=8" + "node": ">=4" } }, "node_modules/ora/node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, "license": "ISC" }, "node_modules/ora/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.1" + "ansi-regex": "^4.1.0" }, "engines": { - "node": ">=8" + "node": ">=6" + } + }, + "node_modules/ora/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/os-tmpdir": { @@ -30202,42 +26779,27 @@ } }, "node_modules/p-locate": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", - "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "license": "MIT", "dependencies": { - "p-limit": "^4.0.0" + "p-limit": "^2.2.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, "node_modules/p-locate/node_modules/p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "license": "MIT", "dependencies": { - "yocto-queue": "^1.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "p-try": "^2.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate/node_modules/yocto-queue": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", - "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", - "license": "MIT", "engines": { - "node": ">=12.20" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -30355,9 +26917,9 @@ } }, "node_modules/pac-proxy-agent/node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", "dev": true, "license": "MIT", "engines": { @@ -30445,17 +27007,19 @@ } }, "node_modules/parse-json": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-8.3.0.tgz", - "integrity": "sha512-ybiGyvspI+fAoRQbIPRddCcSTV9/LsJbf0e/S85VLowVGzRmokfneg2kwVW/KU5rOXrPSbF1qAKPMgNTqqROQQ==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.26.2", - "index-to-position": "^1.1.0", - "type-fest": "^4.39.1" + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" }, "engines": { - "node": ">=18" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -30496,13 +27060,13 @@ } }, "node_modules/parse5": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", - "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz", + "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==", "dev": true, "license": "MIT", "dependencies": { - "entities": "^6.0.0" + "entities": "^4.5.0" }, "funding": { "url": "https://github.com/inikulin/parse5?sponsor=1" @@ -30535,19 +27099,6 @@ "url": "https://github.com/inikulin/parse5?sponsor=1" } }, - "node_modules/parse5/node_modules/entities": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz", - "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/parseurl": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", @@ -30620,28 +27171,12 @@ "license": "MIT" }, "node_modules/path-exists": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", - "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/path-expression-matcher": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.2.0.tgz", - "integrity": "sha512-DwmPWeFn+tq7TiyJ2CxezCAirXjFxvaiD03npak3cRjlP9+OjTmSy1EpIrEbh+l6JgUundniloMLDQ/6VTdhLQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } - ], + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "license": "MIT", "engines": { - "node": ">=14.0.0" + "node": ">=8" } }, "node_modules/path-is-absolute": { @@ -30669,29 +27204,26 @@ "license": "MIT" }, "node_modules/path-scurry": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", - "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", "license": "BlueOak-1.0.0", "dependencies": { - "lru-cache": "^11.0.0", - "minipass": "^7.1.2" + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": "18 || 20 || >=22" + "node": ">=16 || 14 >=14.18" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "11.2.7", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz", - "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==", - "license": "BlueOak-1.0.0", - "engines": { - "node": "20 || >=22" - } + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "license": "ISC" }, "node_modules/path-type": { "version": "4.0.0", @@ -30710,6 +27242,19 @@ "dev": true, "license": "MIT" }, + "node_modules/pause-stream": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/pause-stream/-/pause-stream-0.0.11.tgz", + "integrity": "sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==", + "dev": true, + "license": [ + "MIT", + "Apache2" + ], + "dependencies": { + "through": "~2.3" + } + }, "node_modules/pend": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", @@ -30724,12 +27269,12 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", - "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "license": "MIT", "engines": { - "node": ">=8.6" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/jonschlinkert" @@ -30782,17 +27327,17 @@ } }, "node_modules/pino": { - "version": "9.14.0", - "resolved": "https://registry.npmjs.org/pino/-/pino-9.14.0.tgz", - "integrity": "sha512-8OEwKp5juEvb/MjpIc4hjqfgCNysrS94RIOMXYvpYCdm/jglrKEiAYmiumbmGhCvs+IcInsphYDFwqrjr7398w==", + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/pino/-/pino-9.6.0.tgz", + "integrity": "sha512-i85pKRCt4qMjZ1+L7sy2Ag4t1atFcdbEt76+7iRJn1g2BvsnRMGu9p8pivl9fs63M2kF/A0OacFZhTub+m/qMg==", "license": "MIT", "dependencies": { - "@pinojs/redact": "^0.4.0", "atomic-sleep": "^1.0.0", + "fast-redact": "^3.1.1", "on-exit-leak-free": "^2.1.0", "pino-abstract-transport": "^2.0.0", "pino-std-serializers": "^7.0.0", - "process-warning": "^5.0.0", + "process-warning": "^4.0.0", "quick-format-unescaped": "^4.0.3", "real-require": "^0.2.0", "safe-stable-stringify": "^2.3.1", @@ -30813,15 +27358,15 @@ } }, "node_modules/pino-std-serializers": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-7.1.0.tgz", - "integrity": "sha512-BndPH67/JxGExRgiX1dX0w1FvZck5Wa4aal9198SrRhZjH3GxKQUKIBnYJTdj2HDN3UQAS06HlfcSbQj2OHmaw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pino-std-serializers/-/pino-std-serializers-7.0.0.tgz", + "integrity": "sha512-e906FRY0+tV27iq4juKzSYPbUj2do2X2JX4EzSca1631EB2QJQUqGbDuERal7LCtOpxl6x3+nvo9NPZcmjkiFA==", "license": "MIT" }, "node_modules/pino/node_modules/process-warning": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-5.0.0.tgz", - "integrity": "sha512-a39t9ApHNx2L4+HBnQKqxxHNs1r7KF+Intd8Q/g1bUh6q0WIp9voPXJ/x0j+ZL45KF1pJd9+q2jLIRMfvEshkA==", + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/process-warning/-/process-warning-4.0.1.tgz", + "integrity": "sha512-3c2LzQ3rY9d0hc1emcsHhfT9Jwz0cChib/QN89oME2R451w5fy3f0afAhERFZAwrbDU43wk12d0ORBpDVME50Q==", "funding": [ { "type": "github", @@ -30856,72 +27401,6 @@ "node": ">=8" } }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-dir/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/please-upgrade-node": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", @@ -30965,10 +27444,9 @@ } }, "node_modules/postcss": { - "version": "8.5.8", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.8.tgz", - "integrity": "sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==", - "dev": true, + "version": "8.4.49", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", + "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", "funding": [ { "type": "opencollective", @@ -30985,7 +27463,7 @@ ], "license": "MIT", "dependencies": { - "nanoid": "^3.3.11", + "nanoid": "^3.3.7", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, @@ -30993,6 +27471,24 @@ "node": "^10 || ^12 || >=14" } }, + "node_modules/postcss/node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, "node_modules/posthog-react-native": { "version": "4.34.0", "resolved": "https://registry.npmjs.org/posthog-react-native/-/posthog-react-native-4.34.0.tgz", @@ -31055,7 +27551,6 @@ "version": "7.1.3", "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.3.tgz", "integrity": "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==", - "deprecated": "No longer maintained. Please contact the author of the relevant native addon; alternatives are available.", "license": "MIT", "dependencies": { "detect-libc": "^2.0.0", @@ -31084,24 +27579,10 @@ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", "license": "ISC" }, - "node_modules/prebuild-install/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/prebuild-install/node_modules/tar-fs": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz", - "integrity": "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.2.tgz", + "integrity": "sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==", "license": "MIT", "dependencies": { "chownr": "^1.1.1", @@ -31191,16 +27672,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/preferred-pm/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/prelude-ls": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", @@ -31238,12 +27709,12 @@ } }, "node_modules/pretty-bytes": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-6.1.1.tgz", - "integrity": "sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==", + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", + "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", "license": "MIT", "engines": { - "node": "^14.13.1 || >=16.0.0" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -31263,24 +27734,6 @@ "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, - "node_modules/pretty-format/node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/pretty-format/node_modules/@sinclair/typebox": { - "version": "0.27.10", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", - "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", - "license": "MIT" - }, "node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", @@ -31293,16 +27746,10 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/pretty-format/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "license": "MIT" - }, "node_modules/pretty-ms": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.3.0.tgz", - "integrity": "sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==", + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.2.0.tgz", + "integrity": "sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==", "license": "MIT", "dependencies": { "parse-ms": "^4.0.0" @@ -31406,9 +27853,9 @@ "license": "MIT" }, "node_modules/protobufjs": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.5.4.tgz", - "integrity": "sha512-CvexbZtbov6jW2eXAvLukXjXUW1TzFaivC46BpWc/3BpcCysb5Vffu+B3XHMm8lVEuy2Mm4XGex8hBSg1yapPg==", + "version": "7.5.0", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.5.0.tgz", + "integrity": "sha512-Z2E/kOY1QjoMlCytmexzYfDm/w5fKAiRwpSzGtdnXW1zC88Z2yXazHHrOtwCzn+7wSxyE8PYM4rvVcMphF9sOA==", "hasInstallScript": true, "license": "BSD-3-Clause", "dependencies": { @@ -31493,9 +27940,9 @@ } }, "node_modules/proxy-agent/node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", "dev": true, "license": "MIT", "engines": { @@ -31532,6 +27979,22 @@ "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "license": "MIT" }, + "node_modules/ps-tree": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.2.0.tgz", + "integrity": "sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "event-stream": "=3.3.4" + }, + "bin": { + "ps-tree": "bin/ps-tree.js" + }, + "engines": { + "node": ">= 0.10" + } + }, "node_modules/psl": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/psl/-/psl-1.15.0.tgz", @@ -31546,9 +28009,9 @@ } }, "node_modules/pump": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.4.tgz", - "integrity": "sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", "license": "MIT", "dependencies": { "end-of-stream": "^1.1.0", @@ -31696,12 +28159,13 @@ } }, "node_modules/quickbit-native": { - "version": "2.4.8", - "resolved": "https://registry.npmjs.org/quickbit-native/-/quickbit-native-2.4.8.tgz", - "integrity": "sha512-FcCcqI+nIAWGknqhtrYT5TSD7t/N+Xd8ctM+2PrIIBuwOi5hx0SxAvuPtzLIEMfT/2h9+fhBakUe2uALOHX6yw==", + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/quickbit-native/-/quickbit-native-2.3.6.tgz", + "integrity": "sha512-Fg4fRVW9lGMbT+QXhWcDvGSkkGCenbjx2EBg4rD3tDg7b2jW2Os+ypILpbXwXFoMKIlACIPvwerRxrPPFOTdVA==", "license": "Apache-2.0", "optional": true, "dependencies": { + "b4a": "^1.6.0", "require-addon": "^1.1.0" } }, @@ -31724,25 +28188,6 @@ "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==", "license": "ISC" }, - "node_modules/rabin-native": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/rabin-native/-/rabin-native-2.0.0.tgz", - "integrity": "sha512-x1BlYdIWh+nk9G0scvxyscrYiDPJ7vQZepqqPlVUSInIko1Zxooi8cm6lzBghEGI9aN3DXiunC8FXLgy6kke3Q==", - "license": "Apache-2.0", - "dependencies": { - "require-addon": "^1.1.0" - } - }, - "node_modules/rabin-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/rabin-stream/-/rabin-stream-2.0.0.tgz", - "integrity": "sha512-EzS2Ig/qsMBSk1PahC0O0IPdRZe3bspHHLWChhqW1feKz+J46tlVL3g4wWr4lrQdXGzABIMsOhvdT6bjXYMuUw==", - "license": "Apache-2.0", - "dependencies": { - "rabin-native": "^2.0.0", - "streamx": "^2.23.0" - } - }, "node_modules/rache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/rache/-/rache-1.0.0.tgz", @@ -31841,15 +28286,15 @@ } }, "node_modules/rc-config-loader": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.1.4.tgz", - "integrity": "sha512-3GiwEzklkbXTDp52UR5nT8iXgYAx1V9ZG/kDZT7p60u2GCv2XTwQq4NzinMoMpNtXhmt3WkhYXcj6HH8HdwCEQ==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.1.3.tgz", + "integrity": "sha512-kD7FqML7l800i6pS6pvLyIE2ncbk9Du8Q0gp/4hMPhJU6ZxApkoLcGD8ZeqgiAlfwZ6BlETq6qqe+12DUL207w==", "dev": true, "license": "MIT", "dependencies": { - "debug": "^4.4.3", - "js-yaml": "^4.1.1", - "json5": "^2.2.3", + "debug": "^4.3.4", + "js-yaml": "^4.1.0", + "json5": "^2.2.2", "require-from-string": "^2.0.2" } }, @@ -31957,9 +28402,9 @@ } }, "node_modules/react-is": { - "version": "19.2.4", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.4.tgz", - "integrity": "sha512-W+EWGn2v0ApPKgKKCy/7s7WHXkboGcsrXE+2joLyVxkbyVQfO3MUEaUQDHoSmb8TFFrSKYa9mw64WZHNHSDzYA==", + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "license": "MIT" }, "node_modules/react-native": { @@ -32298,61 +28743,6 @@ "react-native": ">=0.60" } }, - "node_modules/react-native/node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/react-native/node_modules/@jest/transform": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", - "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", - "license": "MIT", - "dependencies": { - "@babel/core": "^7.11.6", - "@jest/types": "^29.6.3", - "@jridgewell/trace-mapping": "^0.3.18", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^2.0.0", - "fast-json-stable-stringify": "^2.1.0", - "graceful-fs": "^4.2.9", - "jest-haste-map": "^29.7.0", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "write-file-atomic": "^4.0.2" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/react-native/node_modules/@jest/types": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", - "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^17.0.8", - "chalk": "^4.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/react-native/node_modules/@react-native/codegen": { "version": "0.81.5", "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.81.5.tgz", @@ -32406,12 +28796,6 @@ } } }, - "node_modules/react-native/node_modules/@sinclair/typebox": { - "version": "0.27.10", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.10.tgz", - "integrity": "sha512-MTBk/3jGLNB2tVxv6uLlFh1iu64iYOQ2PbdOSK3NW8JZsmlaOh2q6sdtKowBhfw8QFLmYNzTW4/oK4uATIi6ZA==", - "license": "MIT" - }, "node_modules/react-native/node_modules/babel-jest": { "version": "29.7.0", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", @@ -32433,22 +28817,6 @@ "@babel/core": "^7.8.0" } }, - "node_modules/react-native/node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "license": "BSD-3-Clause", - "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/react-native/node_modules/babel-plugin-jest-hoist": { "version": "29.6.3", "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", @@ -32498,6 +28866,27 @@ "node": ">=18" } }, + "node_modules/react-native/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/react-native/node_modules/hermes-estree": { "version": "0.29.1", "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.29.1.tgz", @@ -32513,86 +28902,10 @@ "hermes-estree": "0.29.1" } }, - "node_modules/react-native/node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "license": "BSD-3-Clause", - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/react-native/node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/react-native/node_modules/jest-haste-map": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", - "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/graceful-fs": "^4.1.3", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.9", - "jest-regex-util": "^29.6.3", - "jest-util": "^29.7.0", - "jest-worker": "^29.7.0", - "micromatch": "^4.0.4", - "walker": "^1.0.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - }, - "optionalDependencies": { - "fsevents": "^2.3.2" - } - }, - "node_modules/react-native/node_modules/jest-regex-util": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", - "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", - "license": "MIT", - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/react-native/node_modules/jest-util": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", - "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", - "license": "MIT", - "dependencies": { - "@jest/types": "^29.6.3", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.9", - "picomatch": "^2.2.3" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, "node_modules/react-native/node_modules/metro-runtime": { - "version": "0.83.5", - "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.83.5.tgz", - "integrity": "sha512-f+b3ue9AWTVlZe2Xrki6TAoFtKIqw30jwfk7GQ1rDUBQaE0ZQ+NkiMEtb9uwH7uAjJ87U7Tdx1Jg1OJqUfEVlA==", + "version": "0.83.3", + "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.83.3.tgz", + "integrity": "sha512-JHCJb9ebr9rfJ+LcssFYA2x1qPYuSD/bbePupIGhpMrsla7RCwC/VL3yJ9cSU+nUhU4c9Ixxy8tBta+JbDeZWw==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.25.0", @@ -32602,34 +28915,6 @@ "node": ">=20.19.4" } }, - "node_modules/react-native/node_modules/react-refresh": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", - "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-native/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "license": "ISC" - }, - "node_modules/react-native/node_modules/write-file-atomic": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", - "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, "node_modules/react-native/node_modules/ws": { "version": "6.2.3", "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.3.tgz", @@ -32640,10 +28925,9 @@ } }, "node_modules/react-refresh": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.18.0.tgz", - "integrity": "sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==", - "dev": true, + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", + "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", "license": "MIT", "peer": true, "engines": { @@ -32665,6 +28949,13 @@ "react": "^19.1.0" } }, + "node_modules/react-test-renderer/node_modules/react-is": { + "version": "19.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.0.tgz", + "integrity": "sha512-x3Ax3kNSMIIkyVYhWPyO09bu0uttcAIoecO/um/rKGQ4EltYWVYtyiGkS/3xMynrbVQdS69Jhlv8FXUEZehlzA==", + "dev": true, + "license": "MIT" + }, "node_modules/read-pkg": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-8.1.0.tgz", @@ -32719,6 +29010,77 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/read-pkg-up/node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/read-pkg-up/node_modules/yocto-queue": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz", + "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/read-pkg/node_modules/hosted-git-info": { "version": "7.0.2", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", @@ -32814,19 +29176,17 @@ "license": "MIT" }, "node_modules/readable-stream": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", - "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "license": "MIT", "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">= 6" } }, "node_modules/readdir-glob": { @@ -32839,18 +29199,18 @@ } }, "node_modules/readdir-glob/node_modules/brace-expansion": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", - "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/readdir-glob/node_modules/minimatch": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", - "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" @@ -32954,9 +29314,9 @@ "license": "MIT" }, "node_modules/regenerate-unicode-properties": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.2.tgz", - "integrity": "sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==", + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz", + "integrity": "sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==", "license": "MIT", "dependencies": { "regenerate": "^1.4.2" @@ -32972,17 +29332,17 @@ "license": "MIT" }, "node_modules/regexpu-core": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.4.0.tgz", - "integrity": "sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==", + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz", + "integrity": "sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==", "license": "MIT", "dependencies": { "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.2.2", + "regenerate-unicode-properties": "^10.2.0", "regjsgen": "^0.8.0", - "regjsparser": "^0.13.0", + "regjsparser": "^0.12.0", "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.2.1" + "unicode-match-property-value-ecmascript": "^2.1.0" }, "engines": { "node": ">=4" @@ -33021,24 +29381,37 @@ "license": "MIT" }, "node_modules/regjsparser": { - "version": "0.13.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.0.tgz", - "integrity": "sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==", + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz", + "integrity": "sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==", "license": "BSD-2-Clause", "dependencies": { - "jsesc": "~3.1.0" + "jsesc": "~3.0.2" }, "bin": { "regjsparser": "bin/parser" } }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/require-addon": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/require-addon/-/require-addon-1.2.0.tgz", - "integrity": "sha512-VNPDZlYgIYQwWp9jMTzljx+k0ZtatKlcvOhktZ/anNPI3dQ9NXk7cq2U4iJ1wd9IrytRnYhyEocFWbkdPb+MYA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/require-addon/-/require-addon-1.1.0.tgz", + "integrity": "sha512-KbXAD5q2+v1GJnkzd8zzbOxchTkStSyJZ9QwoCq3QwEXAaIlG3wDYRZGzVD357jmwaGY7hr5VaoEAL0BkF0Kvg==", "license": "Apache-2.0", "dependencies": { - "bare-addon-resolve": "^1.3.0" + "bare-addon-resolve": "^1.3.0", + "bare-url": "^2.1.0" }, "engines": { "bare": ">=1.10.0" @@ -33099,12 +29472,12 @@ "license": "MIT" }, "node_modules/resolve": { - "version": "1.22.11", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", - "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", + "version": "1.22.10", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", + "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", "license": "MIT", "dependencies": { - "is-core-module": "^2.16.1", + "is-core-module": "^2.16.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -33199,6 +29572,30 @@ "node": ">=8" } }, + "node_modules/resolve-global": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-global/-/resolve-global-1.0.0.tgz", + "integrity": "sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==", + "license": "MIT", + "dependencies": { + "global-dirs": "^0.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-global/node_modules/global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==", + "license": "MIT", + "dependencies": { + "ini": "^1.3.4" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/resolve-pkg-maps": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", @@ -33209,16 +29606,10 @@ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } }, - "node_modules/resolve-reject-promise": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve-reject-promise/-/resolve-reject-promise-1.1.0.tgz", - "integrity": "sha512-LWsTOA91AqzBTjSGgX79Tc130pwcBK6xjpJEO+qRT5IKZ6bGnHKcc8QL3upUBcWuU8OTIDzKK2VNSwmmlqvAVg==", - "license": "MIT" - }, "node_modules/resolve-workspace-root": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/resolve-workspace-root/-/resolve-workspace-root-2.0.1.tgz", - "integrity": "sha512-nR23LHAvaI6aHtMg6RWoaHpdR4D881Nydkzi2CixINyg9T00KgaJdJI6Vwty+Ps8WLxZHuxsS0BseWjxSA4C+w==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-workspace-root/-/resolve-workspace-root-2.0.0.tgz", + "integrity": "sha512-IsaBUZETJD5WsI11Wt8PKHwaIe45or6pwNc8yflvLJ4DWtImK9kuLoH5kUva/2Mmx/RdIyr4aONNSa2v9LTJsw==", "license": "MIT" }, "node_modules/resolve.exports": { @@ -33274,10 +29665,9 @@ } }, "node_modules/ret": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.5.0.tgz", - "integrity": "sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw==", - "dev": true, + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.4.3.tgz", + "integrity": "sha512-0f4Memo5QP7WQyUEAYUO3esD/XjOc3Zjjg5CPsAq1p8sIu0XPeMbHJemKA0BO7tV0X7+A0FoEpbmHXWxPyD3wQ==", "license": "MIT", "engines": { "node": ">=10" @@ -33331,6 +29721,27 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/robust-predicates": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.3.tgz", @@ -33364,18 +29775,6 @@ "undici-types": "~5.26.4" } }, - "node_modules/rpc-reflector/node_modules/is-stream": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", - "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/rpc-reflector/node_modules/p-timeout": { "version": "6.1.4", "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.4.tgz", @@ -33388,6 +29787,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/rpc-reflector/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/rpc-reflector/node_modules/serialize-error": { "version": "12.0.0", "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-12.0.0.tgz", @@ -33416,9 +29831,9 @@ "license": "BSD-3-Clause" }, "node_modules/run-applescript": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.1.0.tgz", - "integrity": "sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz", + "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==", "license": "MIT", "engines": { "node": ">=18" @@ -33428,9 +29843,9 @@ } }, "node_modules/run-async": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-4.0.6.tgz", - "integrity": "sha512-IoDlSLTs3Yq593mb3ZoKWKXMNu3UpObxhgA/Xuid5p4bbfi2jdY1Hj0m1K+0/tEuQTxIGMhQDqGjKb7RuxGpAQ==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", + "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", "dev": true, "license": "MIT", "engines": { @@ -33507,9 +29922,9 @@ } }, "node_modules/safaridriver": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/safaridriver/-/safaridriver-1.0.1.tgz", - "integrity": "sha512-jkg4434cYgtrIF2AeY/X0Wmd2W73cK5qIEFE3hDrrQenJH/2SDJIXGvPAigfvQTcE9+H31zkiNHbUqcihEiMRA==", + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safaridriver/-/safaridriver-1.0.0.tgz", + "integrity": "sha512-J92IFbskyo7OYB3Dt4aTdyhag1GlInrfbPCmMteb7aBK7PwlnGz1HI0+oyNN97j7pV9DqUAVoVgkNRMrfY47mQ==", "dev": true, "license": "MIT", "engines": { @@ -33537,26 +29952,12 @@ "license": "MIT" }, "node_modules/safe-regex2": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-5.1.0.tgz", - "integrity": "sha512-pNHAuBW7TrcleFHsxBr5QMi/Iyp0ENjUKz7GCcX1UO7cMh+NmVK6HxQckNL1tJp1XAJVjG6B8OKIPqodqj9rtw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-3.1.0.tgz", + "integrity": "sha512-RAAZAGbap2kBfbVhvmnTFv73NWLMvDGOITFYTZBAaY8eR+Ir4ef7Up/e7amo+y1+AH+3PtLkrt9mvcTsG9LXug==", "license": "MIT", "dependencies": { - "ret": "~0.5.0" - }, - "bin": { - "safe-regex2": "bin/safe-regex2.js" + "ret": "~0.4.0" } }, "node_modules/safe-stable-stringify": { @@ -33575,9 +29976,9 @@ "license": "MIT" }, "node_modules/safety-catch": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/safety-catch/-/safety-catch-1.0.3.tgz", - "integrity": "sha512-Zq+J1TefpoEq/HTUabo0YXX5MNvttjWYODGohgPBO2jfko8Wqx3JYMgE823szDFVamdH5PlpByvfiWScTdSYDA==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/safety-catch/-/safety-catch-1.0.2.tgz", + "integrity": "sha512-C1UYVZ4dtbBxEtvOcpjBaaD27nP8MlvyAQEp2fOTOEe6pfUpk1cDUxij6BR1jZup6rSyUTaBBplK7LanskrULA==", "license": "MIT" }, "node_modules/same-data": { @@ -33587,13 +29988,10 @@ "license": "MIT" }, "node_modules/sax": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.6.0.tgz", - "integrity": "sha512-6R3J5M4AcbtLUdZmRv2SygeVaM7IhrLXu9BmnOGmmACak8fiUtOsYNWUS4uK7upbmHIBbLBeFeI//477BKLBzA==", - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=11.0.0" - } + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", + "license": "ISC" }, "node_modules/saxes": { "version": "6.0.0", @@ -33625,34 +30023,6 @@ "undici": "^6.21.3" } }, - "node_modules/secret-stream-http/node_modules/@hyperswarm/secret-stream": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/@hyperswarm/secret-stream/-/secret-stream-6.7.1.tgz", - "integrity": "sha512-isb18Pt6lXBpOQMRmpqItw+kYynXilOFyOhto/RMP15WQtTWC0rR5jfZPYXU7ZYV6Kxd2lyQ4ZBevoIcvEJHEQ==", - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.1.0", - "hypercore-crypto": "^3.3.1", - "noise-curve-ed": "^2.0.1", - "noise-handshake": "^3.0.2", - "sodium-secretstream": "^1.1.0", - "sodium-universal": "^4.0.0", - "streamx": "^2.14.0", - "timeout-refresh": "^2.0.0", - "unslab": "^1.3.0" - } - }, - "node_modules/secret-stream-http/node_modules/noise-handshake": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/noise-handshake/-/noise-handshake-3.1.0.tgz", - "integrity": "sha512-0S1qkUvMbTvZCfgr/vSkVT84YyvI4Q0OLwSc5BFxVmjaePrxAwVeXeJDY3A7N/7+qj95gZ15LaNoP9ZnBXH5Lw==", - "license": "ISC", - "dependencies": { - "b4a": "^1.1.0", - "nanoassert": "^2.0.0", - "sodium-universal": "^4.0.0" - } - }, "node_modules/secure-json-parse": { "version": "2.7.0", "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz", @@ -33749,6 +30119,26 @@ "node": ">= 0.8" } }, + "node_modules/send/node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, "node_modules/send/node_modules/mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", @@ -33773,6 +30163,15 @@ "node": ">= 0.8" } }, + "node_modules/send/node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, "node_modules/serialize-error": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", @@ -33824,9 +30223,9 @@ "license": "MIT" }, "node_modules/set-cookie-parser": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.2.tgz", - "integrity": "sha512-oeM1lpU/UvhTxw+g3cIfxXHyJRc/uidd3yK1P242gzHds0udQBYzs3y8j4gCCW+ZJ7ad0yctld8RYO+bdurlvw==", + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz", + "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==", "license": "MIT" }, "node_modules/set-function-length": { @@ -33860,9 +30259,9 @@ "license": "ISC" }, "node_modules/sf-symbols-typescript": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/sf-symbols-typescript/-/sf-symbols-typescript-2.2.0.tgz", - "integrity": "sha512-TPbeg0b7ylrswdGCji8FRGFAKuqbpQlLbL8SOle3j1iHSs5Ob5mhvMAxWN2UItOjgALAB5Zp3fmMfj8mbWvXKw==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/sf-symbols-typescript/-/sf-symbols-typescript-2.1.0.tgz", + "integrity": "sha512-ezT7gu/SHTPIOEEoG6TF+O0m5eewl0ZDAO4AtdBi5HjsrUI6JdCG17+Q8+aKp0heM06wZKApRCn5olNbs0Wb/A==", "license": "MIT", "engines": { "node": ">=10" @@ -33942,9 +30341,9 @@ "license": "MIT" }, "node_modules/simdle-native": { - "version": "1.3.9", - "resolved": "https://registry.npmjs.org/simdle-native/-/simdle-native-1.3.9.tgz", - "integrity": "sha512-Isc8sP4OiiIU0mpslD4GHEnR0VQWvR/54WN7YtwEDkNdTJVWtpmvsSvsgRlw5BNGxdYXlVRegdnrSu10H/PhvA==", + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/simdle-native/-/simdle-native-1.3.6.tgz", + "integrity": "sha512-WXb3AUnMVOgfMbrOlz0SVpL8pMpC9K2WX/wJ7k5alqza77tO/4vCF7pUtuiPJdMxEBIsX30joKRY7JWRJ4yHqQ==", "license": "Apache-2.0", "optional": true, "dependencies": { @@ -34056,15 +30455,33 @@ "plist": "^3.0.5" } }, + "node_modules/simple-plist/node_modules/bplist-parser": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/bplist-parser/-/bplist-parser-0.3.1.tgz", + "integrity": "sha512-PyJxiNtA5T2PlLIeBot4lbp7rj4OadzjnMZD/G5zuBNt8ei/yCU7+wW0h2bag9vr8c+/WuRWmSxbqAl9hL1rBA==", + "license": "MIT", + "dependencies": { + "big-integer": "1.6.x" + }, + "engines": { + "node": ">= 5.10.0" + } + }, "node_modules/simple-swizzle": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.4.tgz", - "integrity": "sha512-nAu1WFPQSMNr2Zn9PGSZK9AGn4t/y97lEm+MXTtUDwfP0ksAIX4nO+6ruD9Jwut4C49SB1Ws+fbXsm/yScWOHw==", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", "license": "MIT", "dependencies": { "is-arrayish": "^0.3.1" } }, + "node_modules/simple-swizzle/node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "license": "MIT" + }, "node_modules/sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", @@ -34081,17 +30498,17 @@ } }, "node_modules/slice-ansi": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-8.0.0.tgz", - "integrity": "sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg==", + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.2.tgz", + "integrity": "sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==", "dev": true, "license": "MIT", "dependencies": { - "ansi-styles": "^6.2.3", - "is-fullwidth-code-point": "^5.1.0" + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" }, "engines": { - "node": ">=20" + "node": ">=18" }, "funding": { "url": "https://github.com/chalk/slice-ansi?sponsor=1" @@ -34111,9 +30528,9 @@ } }, "node_modules/slugify": { - "version": "1.6.9", - "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.9.tgz", - "integrity": "sha512-vZ7rfeehZui7wQs438JXBckYLkIIdfHOXsaVEUMyS5fHo1483l1bMdo0EDSWYclY0yZKFOipDy4KHuKs6ssvdg==", + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/slugify/-/slugify-1.6.6.tgz", + "integrity": "sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==", "license": "MIT", "engines": { "node": ">=8.0.0" @@ -34147,12 +30564,12 @@ } }, "node_modules/socks": { - "version": "2.8.7", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz", - "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==", + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.4.tgz", + "integrity": "sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==", "license": "MIT", "dependencies": { - "ip-address": "^10.0.1", + "ip-address": "^9.0.5", "smart-buffer": "^4.2.0" }, "engines": { @@ -34175,9 +30592,9 @@ } }, "node_modules/socks-proxy-agent/node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", "license": "MIT", "engines": { "node": ">= 14" @@ -34251,9 +30668,9 @@ } }, "node_modules/sonic-boom": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.2.1.tgz", - "integrity": "sha512-w6AxtubXa2wTXAUsZMMWERrsIRAdrK0Sc+FUytWvYAhBJLyuI4llrMIC1DtlNSdI99EI86KZum2MMq3EAZlF9Q==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/sonic-boom/-/sonic-boom-4.2.0.tgz", + "integrity": "sha512-INb7TM37/mAcsGmc9hyyI6+QR3rR1zVRu36B0NeGXKnOOLiZOfER5SA+N7X7k3yUYRzLWafduTDvJAfDswwEww==", "license": "MIT", "dependencies": { "atomic-sleep": "^1.0.0" @@ -34278,10 +30695,9 @@ } }, "node_modules/source-map-support": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", - "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", - "dev": true, + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", @@ -34335,18 +30751,12 @@ } }, "node_modules/spdx-license-ids": { - "version": "3.0.23", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.23.tgz", - "integrity": "sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==", + "version": "3.0.21", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.21.tgz", + "integrity": "sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg==", "dev": true, "license": "CC0-1.0" }, - "node_modules/speedometer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/speedometer/-/speedometer-1.1.0.tgz", - "integrity": "sha512-z/wAiTESw2XVPssY2XRcme4niTc4S5FkkJ4gknudtVoc33Zil8TdTxHy5torRcgqMqksJV2Yz8HQcvtbsnw0mQ==", - "license": "MIT" - }, "node_modules/split-on-first": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", @@ -34366,9 +30776,9 @@ } }, "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", "license": "BSD-3-Clause" }, "node_modules/ssri": { @@ -34484,12 +30894,12 @@ } }, "node_modules/statuses": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", - "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "license": "MIT", "engines": { - "node": ">= 0.8" + "node": ">= 0.6" } }, "node_modules/stdin-discarder": { @@ -34514,6 +30924,16 @@ "node": ">= 0.10.0" } }, + "node_modules/stream-combiner": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/stream-combiner/-/stream-combiner-0.0.4.tgz", + "integrity": "sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "duplexer": "~0.1.1" + } + }, "node_modules/stream-shift": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", @@ -34604,24 +31024,24 @@ } }, "node_modules/string-ts": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/string-ts/-/string-ts-2.3.1.tgz", - "integrity": "sha512-xSJq+BS52SaFFAVxuStmx6n5aYZU571uYUnUrPXkPFCfdHyZMMlbP2v2Wx5sNBnAVzq/2+0+mcBLBa3Xa5ubYw==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/string-ts/-/string-ts-2.2.1.tgz", + "integrity": "sha512-Q2u0gko67PLLhbte5HmPfdOjNvUKbKQM+mCNQae6jE91DmoFHY6HH9GcdqCeNx87DZ2KKjiFxmA0R/42OneGWw==", "dev": true, "license": "MIT" }, "node_modules/string-width": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.0.tgz", - "integrity": "sha512-6hJPQ8N0V0P3SNmP6h2J99RLuzrWz2gvT7VnK5tKvrNqJoyS9W4/Fb8mo31UiPvy00z7DQXkP2hnKBVav76thw==", - "dev": true, + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "license": "MIT", "dependencies": { - "get-east-asian-width": "^1.5.0", - "strip-ansi": "^7.1.2" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=20" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -34670,12 +31090,12 @@ } }, "node_modules/strip-ansi": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz", - "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "license": "MIT", "dependencies": { - "ansi-regex": "^6.2.2" + "ansi-regex": "^6.0.1" }, "engines": { "node": ">=12" @@ -34698,9 +31118,9 @@ } }, "node_modules/strip-ansi/node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", "license": "MIT", "engines": { "node": ">=12" @@ -34759,9 +31179,9 @@ } }, "node_modules/strnum": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.2.2.tgz", - "integrity": "sha512-DnR90I+jtXNSTXWdwrEy9FakW7UX+qUZg28gj5fk2vxxl7uS/3bpI4fjFYVmdK9etptYBPNkpahuQnEwhwECqA==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.2.tgz", + "integrity": "sha512-l63NF9y/cLROq/yqKXSLtcMeeyOfnSQlfMSlzFt/K73oIaD8DGaQWd7Z34X9GPiKqP5rbSh84Hl4bOlLcjiSrQ==", "dev": true, "funding": [ { @@ -34925,6 +31345,22 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/styled-map-package-api/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/styled-map-package-api/node_modules/yocto-queue": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", @@ -34946,224 +31382,14 @@ "commander": "~12.1.0" } }, - "node_modules/styled-map-package/node_modules/@inquirer/checkbox": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-3.0.1.tgz", - "integrity": "sha512-0hm2nrToWUdD6/UHnel/UKGdk1//ke5zGUpHIvk5ZWmaKezlGxZkOJXNSWsdxO/rEqTkbB3lNC2J6nBElV2aAQ==", - "license": "MIT", - "dependencies": { - "@inquirer/core": "^9.2.1", - "@inquirer/figures": "^1.0.6", - "@inquirer/type": "^2.0.0", - "ansi-escapes": "^4.3.2", - "yoctocolors-cjs": "^2.1.2" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/styled-map-package/node_modules/@inquirer/confirm": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-4.0.1.tgz", - "integrity": "sha512-46yL28o2NJ9doViqOy0VDcoTzng7rAb6yPQKU7VDLqkmbCaH4JqK4yk4XqlzNWy9PVC5pG1ZUXPBQv+VqnYs2w==", - "license": "MIT", - "dependencies": { - "@inquirer/core": "^9.2.1", - "@inquirer/type": "^2.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/styled-map-package/node_modules/@inquirer/core": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-9.2.1.tgz", - "integrity": "sha512-F2VBt7W/mwqEU4bL0RnHNZmC/OxzNx9cOYxHqnXX3MP6ruYvZUZAW9imgN9+h/uBT/oP8Gh888J2OZSbjSeWcg==", - "license": "MIT", - "dependencies": { - "@inquirer/figures": "^1.0.6", - "@inquirer/type": "^2.0.0", - "@types/mute-stream": "^0.0.4", - "@types/node": "^22.5.5", - "@types/wrap-ansi": "^3.0.0", - "ansi-escapes": "^4.3.2", - "cli-width": "^4.1.0", - "mute-stream": "^1.0.0", - "signal-exit": "^4.1.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^6.2.0", - "yoctocolors-cjs": "^2.1.2" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/styled-map-package/node_modules/@inquirer/core/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/styled-map-package/node_modules/@inquirer/editor": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-3.0.1.tgz", - "integrity": "sha512-VA96GPFaSOVudjKFraokEEmUQg/Lub6OXvbIEZU1SDCmBzRkHGhxoFAVaF30nyiB4m5cEbDgiI2QRacXZ2hw9Q==", - "license": "MIT", - "dependencies": { - "@inquirer/core": "^9.2.1", - "@inquirer/type": "^2.0.0", - "external-editor": "^3.1.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/styled-map-package/node_modules/@inquirer/expand": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-3.0.1.tgz", - "integrity": "sha512-ToG8d6RIbnVpbdPdiN7BCxZGiHOTomOX94C2FaT5KOHupV40tKEDozp12res6cMIfRKrXLJyexAZhWVHgbALSQ==", - "license": "MIT", - "dependencies": { - "@inquirer/core": "^9.2.1", - "@inquirer/type": "^2.0.0", - "yoctocolors-cjs": "^2.1.2" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/styled-map-package/node_modules/@inquirer/input": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-3.0.1.tgz", - "integrity": "sha512-BDuPBmpvi8eMCxqC5iacloWqv+5tQSJlUafYWUe31ow1BVXjW2a5qe3dh4X/Z25Wp22RwvcaLCc2siHobEOfzg==", - "license": "MIT", - "dependencies": { - "@inquirer/core": "^9.2.1", - "@inquirer/type": "^2.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/styled-map-package/node_modules/@inquirer/number": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-2.0.1.tgz", - "integrity": "sha512-QpR8jPhRjSmlr/mD2cw3IR8HRO7lSVOnqUvQa8scv1Lsr3xoAMMworcYW3J13z3ppjBFBD2ef1Ci6AE5Qn8goQ==", - "license": "MIT", - "dependencies": { - "@inquirer/core": "^9.2.1", - "@inquirer/type": "^2.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/styled-map-package/node_modules/@inquirer/password": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-3.0.1.tgz", - "integrity": "sha512-haoeEPUisD1NeE2IanLOiFr4wcTXGWrBOyAyPZi1FfLJuXOzNmxCJPgUrGYKVh+Y8hfGJenIfz5Wb/DkE9KkMQ==", - "license": "MIT", - "dependencies": { - "@inquirer/core": "^9.2.1", - "@inquirer/type": "^2.0.0", - "ansi-escapes": "^4.3.2" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/styled-map-package/node_modules/@inquirer/prompts": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-6.0.1.tgz", - "integrity": "sha512-yl43JD/86CIj3Mz5mvvLJqAOfIup7ncxfJ0Btnl0/v5TouVUyeEdcpknfgc+yMevS/48oH9WAkkw93m7otLb/A==", - "license": "MIT", - "dependencies": { - "@inquirer/checkbox": "^3.0.1", - "@inquirer/confirm": "^4.0.1", - "@inquirer/editor": "^3.0.1", - "@inquirer/expand": "^3.0.1", - "@inquirer/input": "^3.0.1", - "@inquirer/number": "^2.0.1", - "@inquirer/password": "^3.0.1", - "@inquirer/rawlist": "^3.0.1", - "@inquirer/search": "^2.0.1", - "@inquirer/select": "^3.0.1" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/styled-map-package/node_modules/@inquirer/rawlist": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-3.0.1.tgz", - "integrity": "sha512-VgRtFIwZInUzTiPLSfDXK5jLrnpkuSOh1ctfaoygKAdPqjcjKYmGh6sCY1pb0aGnCGsmhUxoqLDUAU0ud+lGXQ==", - "license": "MIT", - "dependencies": { - "@inquirer/core": "^9.2.1", - "@inquirer/type": "^2.0.0", - "yoctocolors-cjs": "^2.1.2" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/styled-map-package/node_modules/@inquirer/search": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-2.0.1.tgz", - "integrity": "sha512-r5hBKZk3g5MkIzLVoSgE4evypGqtOannnB3PKTG9NRZxyFRKcfzrdxXXPcoJQsxJPzvdSU2Rn7pB7lw0GCmGAg==", - "license": "MIT", - "dependencies": { - "@inquirer/core": "^9.2.1", - "@inquirer/figures": "^1.0.6", - "@inquirer/type": "^2.0.0", - "yoctocolors-cjs": "^2.1.2" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/styled-map-package/node_modules/@inquirer/select": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-3.0.1.tgz", - "integrity": "sha512-lUDGUxPhdWMkN/fHy1Lk7pF3nK1fh/gqeyWXmctefhxLYxlDsc7vsPBEpxrfVGDsVdyYJsiJoD4bJ1b623cV1Q==", - "license": "MIT", - "dependencies": { - "@inquirer/core": "^9.2.1", - "@inquirer/figures": "^1.0.6", - "@inquirer/type": "^2.0.0", - "ansi-escapes": "^4.3.2", - "yoctocolors-cjs": "^2.1.2" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/styled-map-package/node_modules/@inquirer/type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-2.0.0.tgz", - "integrity": "sha512-XvJRx+2KR3YXyYtPUUy+qd9i7p+GO9Ko6VIIpWlBrpWwXDv8WLFeHTxz35CfQFUiBMLXlGHhGzys7lqit9gWag==", - "license": "MIT", - "dependencies": { - "mute-stream": "^1.0.0" - }, - "engines": { - "node": ">=18" - } - }, "node_modules/styled-map-package/node_modules/@turf/bbox": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-7.3.4.tgz", - "integrity": "sha512-D5ErVWtfQbEPh11yzI69uxqrcJmbPU/9Y59f1uTapgwAwQHQztDWgsYpnL3ns8r1GmPWLP8sGJLVTIk2TZSiYA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-7.2.0.tgz", + "integrity": "sha512-wzHEjCXlYZiDludDbXkpBSmv8Zu6tPGLmJ1sXQ6qDwpLE1Ew3mcWqt8AaxfTP5QwDNQa3sf2vvgTEzNbPQkCiA==", "license": "MIT", "dependencies": { - "@turf/helpers": "7.3.4", - "@turf/meta": "7.3.4", + "@turf/helpers": "^7.2.0", + "@turf/meta": "^7.2.0", "@types/geojson": "^7946.0.10", "tslib": "^2.8.1" }, @@ -35172,32 +31398,22 @@ } }, "node_modules/styled-map-package/node_modules/@turf/meta": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-7.3.4.tgz", - "integrity": "sha512-tlmw9/Hs1p2n0uoHVm1w3ugw1I6L8jv9YZrcdQa4SH5FX5UY0ATrKeIvfA55FlL//PGuYppJp+eyg/0eb4goqw==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-7.2.0.tgz", + "integrity": "sha512-igzTdHsQc8TV1RhPuOLVo74Px/hyPrVgVOTgjWQZzt3J9BVseCdpfY/0cJBdlSRI4S/yTmmHl7gAqjhpYH5Yaw==", "license": "MIT", "dependencies": { - "@turf/helpers": "7.3.4", - "@types/geojson": "^7946.0.10", - "tslib": "^2.8.1" + "@turf/helpers": "^7.2.0", + "@types/geojson": "^7946.0.10" }, "funding": { "url": "https://opencollective.com/turf" } }, - "node_modules/styled-map-package/node_modules/@types/node": { - "version": "22.19.15", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.15.tgz", - "integrity": "sha512-F0R/h2+dsy5wJAUe3tAU6oqa2qbWY5TpNfL/RGmo1y38hiyO1w3x2jPtt76wmuaJI4DQnOBu21cNXQ2STIUUWg==", - "license": "MIT", - "dependencies": { - "undici-types": "~6.21.0" - } - }, "node_modules/styled-map-package/node_modules/chalk": { - "version": "5.6.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", - "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", "license": "MIT", "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" @@ -35216,6 +31432,24 @@ "node": ">=18" } }, + "node_modules/styled-map-package/node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/styled-map-package/node_modules/emoji-regex": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "license": "MIT" + }, "node_modules/styled-map-package/node_modules/is-interactive": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", @@ -35228,22 +31462,25 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/styled-map-package/node_modules/is-stream": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", - "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", + "node_modules/styled-map-package/node_modules/is-wsl": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", "license": "MIT", + "dependencies": { + "is-inside-container": "^1.0.0" + }, "engines": { - "node": ">=18" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/styled-map-package/node_modules/log-symbols": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-7.0.1.tgz", - "integrity": "sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-7.0.0.tgz", + "integrity": "sha512-zrc91EDk2M+2AXo/9BTvK91pqb7qrPg2nX/Hy+u8a5qQlbaOflCKO+6SqgZ+M+xUFxGdKTgwnGiL96b1W3ikRA==", "license": "MIT", "dependencies": { "is-unicode-supported": "^2.0.0", @@ -35256,25 +31493,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/styled-map-package/node_modules/mute-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", - "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/styled-map-package/node_modules/open": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/open/-/open-10.2.0.tgz", - "integrity": "sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==", + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/open/-/open-10.1.2.tgz", + "integrity": "sha512-cxN6aIDPz6rm8hbebcP7vrQNhvRcveZoJU72Y7vskh4oIm+BZwBECnx5nTmrlres1Qapvx27Qo1Auukpf8PKXw==", "license": "MIT", "dependencies": { "default-browser": "^5.2.1", "define-lazy-prop": "^3.0.0", "is-inside-container": "^1.0.0", - "wsl-utils": "^0.1.0" + "is-wsl": "^3.1.0" }, "engines": { "node": ">=18" @@ -35349,6 +31577,34 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/styled-map-package/node_modules/pretty-bytes": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-6.1.1.tgz", + "integrity": "sha512-mQUvGU6aUFQ+rNvTIAcZuWGRT9a6f6Yrg9bHs4ImKF+HZCEK+plBvnAZYSIQztknZF2qnzNtr6F8s0+IuptdlQ==", + "license": "MIT", + "engines": { + "node": "^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/styled-map-package/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/styled-map-package/node_modules/string-width": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", @@ -35366,10 +31622,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/styled-map-package/node_modules/temp-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", + "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==", + "license": "MIT", + "engines": { + "node": ">=14.16" + } + }, "node_modules/styled-map-package/node_modules/yocto-queue": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.2.tgz", - "integrity": "sha512-4LCcse/U2MHZ63HAJVE+v71o7yOdIe4cZ70Wpf8D/IyjDKYQLV5GD46B+hSTjJsvV5PztjvHoU580EftxjDZFQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz", + "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==", "license": "MIT", "engines": { "node": ">=12.20" @@ -35464,56 +31729,50 @@ "license": "MIT" }, "node_modules/svgo": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-4.0.1.tgz", - "integrity": "sha512-XDpWUOPC6FEibaLzjfe0ucaV0YrOjYotGJO1WpF0Zd+n6ZGEQUsSugaoLq9QkEZtAfQIxT42UChcssDVPP3+/w==", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.3.2.tgz", + "integrity": "sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==", + "dev": true, "license": "MIT", "dependencies": { - "commander": "^11.1.0", + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", "css-select": "^5.1.0", - "css-tree": "^3.0.1", + "css-tree": "^2.3.1", "css-what": "^6.1.0", "csso": "^5.0.5", - "picocolors": "^1.1.1", - "sax": "^1.5.0" + "picocolors": "^1.0.0" }, "bin": { - "svgo": "bin/svgo.js" + "svgo": "bin/svgo" }, "engines": { - "node": ">=16" + "node": ">=14.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/svgo" } }, - "node_modules/svgo/node_modules/commander": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", - "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", - "license": "MIT", - "engines": { - "node": ">=16" - } - }, "node_modules/svgo/node_modules/css-tree": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.2.1.tgz", - "integrity": "sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "dev": true, "license": "MIT", "dependencies": { - "mdn-data": "2.27.1", - "source-map-js": "^1.2.1" + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" }, "engines": { "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" } }, "node_modules/svgo/node_modules/mdn-data": { - "version": "2.27.1", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.27.1.tgz", - "integrity": "sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==", + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "dev": true, "license": "CC0-1.0" }, "node_modules/symbol-tree": { @@ -35539,7 +31798,6 @@ "version": "6.2.1", "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", - "deprecated": "Old versions of tar are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "license": "ISC", "dependencies": { "chownr": "^2.0.0", @@ -35554,9 +31812,9 @@ } }, "node_modules/tar-fs": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.2.tgz", - "integrity": "sha512-QGxxTxxyleAdyM3kpFs14ymbYmNFrfY+pHj7Z8FgtbZ7w2//VAgLMac7sT6nRpIHjppXO2AwwEOg0bPFVRcmXw==", + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.8.tgz", + "integrity": "sha512-ZoROL70jptorGAlgAYiLoBLItEKw/fUxg9BSYK/dF/GAGYFJOJJJMvjPAKDJraCXFwadD456FCuvLWgfhMsPwg==", "dev": true, "license": "MIT", "dependencies": { @@ -35569,13 +31827,12 @@ } }, "node_modules/tar-stream": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.8.tgz", - "integrity": "sha512-U6QpVRyCGHva435KoNWy9PRoi2IFYCgtEhq9nmrPPpbRacPs9IH4aJ3gbrFC8dPcXvdSZ4XXfXT5Fshbp2MtlQ==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", "license": "MIT", "dependencies": { "b4a": "^1.6.4", - "bare-fs": "^4.5.5", "fast-fifo": "^1.2.0", "streamx": "^2.15.0" } @@ -35631,15 +31888,6 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "license": "ISC" }, - "node_modules/teex": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/teex/-/teex-1.0.1.tgz", - "integrity": "sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==", - "license": "MIT", - "dependencies": { - "streamx": "^2.12.5" - } - }, "node_modules/temp": { "version": "0.8.4", "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz", @@ -35654,12 +31902,83 @@ } }, "node_modules/temp-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", - "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", + "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", "license": "MIT", "engines": { - "node": ">=14.16" + "node": ">=8" + } + }, + "node_modules/temp-fs": { + "version": "0.9.9", + "resolved": "https://registry.npmjs.org/temp-fs/-/temp-fs-0.9.9.tgz", + "integrity": "sha512-WfecDCR1xC9b0nsrzSaxPf3ZuWeWLUWblW4vlDQAa1biQaKHiImHnJfeQocQe/hXKMcolRzgkcVX/7kK4zoWbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "rimraf": "~2.5.2" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/temp-fs/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/temp-fs/node_modules/rimraf": { + "version": "2.5.4", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.5.4.tgz", + "integrity": "sha512-Lw7SHMjssciQb/rRz7JyPIy9+bbUshEucPoLRvWqy09vC5zQixl8Uet+Zl+SROBB/JMWHJRdCk1qdxNWHNMvlQ==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.0.5" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/temp/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/temp/node_modules/rimraf": { @@ -35693,9 +32012,9 @@ } }, "node_modules/terser": { - "version": "5.46.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.46.1.tgz", - "integrity": "sha512-vzCjQO/rgUuK9sf8VJZvjqiqiHFaZLnOiimmUuOKODxWL8mm/xua7viT7aqX7dgPY60otQjUotzFMmCB4VdmqQ==", + "version": "5.44.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.44.0.tgz", + "integrity": "sha512-nIVck8DK+GM/0Frwd+nIhZ84pR/BX7rmXMfYwyg+Sri5oGVE99/E3KvXqpC2xHFxyqXyGHTKBSioxxplrO4I4w==", "license": "BSD-2-Clause", "dependencies": { "@jridgewell/source-map": "^0.3.3", @@ -35716,16 +32035,6 @@ "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "license": "MIT" }, - "node_modules/terser/node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", @@ -35740,10 +32049,31 @@ "node": ">=8" } }, + "node_modules/test-exclude/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/text-decoder": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.7.tgz", - "integrity": "sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==", + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz", + "integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==", "license": "Apache-2.0", "dependencies": { "b4a": "^1.6.4" @@ -35836,36 +32166,6 @@ "url": "https://github.com/sponsors/SuperchupuDev" } }, - "node_modules/tinyglobby/node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/tinyqueue": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-3.0.0.tgz", @@ -35977,16 +32277,6 @@ "node": ">=12" } }, - "node_modules/tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true, - "license": "MIT", - "bin": { - "tree-kill": "cli.js" - } - }, "node_modules/trim-newlines": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", @@ -36008,9 +32298,9 @@ } }, "node_modules/ts-api-utils": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", - "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", "dev": true, "license": "MIT", "engines": { @@ -36043,19 +32333,6 @@ "typescript": ">=4.0.0" } }, - "node_modules/ts-declaration-location/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/ts-interface-checker": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", @@ -36063,9 +32340,9 @@ "license": "Apache-2.0" }, "node_modules/ts-pattern": { - "version": "5.9.0", - "resolved": "https://registry.npmjs.org/ts-pattern/-/ts-pattern-5.9.0.tgz", - "integrity": "sha512-6s5V71mX8qBUmlgbrfL33xDUwO0fq48rxAu2LBE11WBeGdpCPOsXksQbZJHvHwhrd3QjUusd3mAOM5Gg0mFBLg==", + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/ts-pattern/-/ts-pattern-5.7.1.tgz", + "integrity": "sha512-EGs8PguQqAAUIcQfK4E9xdXxB6s2GK4sJfT/vcc9V1ELIvC4LH/zXu2t/5fajtv6oiRCxdv7BgtVK3vWgROxag==", "dev": true, "license": "MIT" }, @@ -36076,13 +32353,13 @@ "license": "0BSD" }, "node_modules/tsx": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.21.0.tgz", - "integrity": "sha512-5C1sg4USs1lfG0GFb2RLXsdpXqBSEhAaA/0kPL01wxzpMqLILNxIxIOKiILz+cdg/pLnOUxFYOR5yhHU666wbw==", + "version": "4.19.3", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.3.tgz", + "integrity": "sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ==", "dev": true, "license": "MIT", "dependencies": { - "esbuild": "~0.27.0", + "esbuild": "~0.25.0", "get-tsconfig": "^4.7.5" }, "bin": { @@ -36156,9 +32433,9 @@ } }, "node_modules/typebox": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/typebox/-/typebox-1.1.14.tgz", - "integrity": "sha512-R9qoa9IE8Yevoy06ixre1VkribJwOl1wj5fq60gUK6Qxkd2Cw+omHEaHnJh+uE4ewMjLWweR3RERKvhjEtLWsA==", + "version": "1.1.16", + "resolved": "https://registry.npmjs.org/typebox/-/typebox-1.1.16.tgz", + "integrity": "sha512-czccfm5FNze8MqHI+HWMactX7S8fZNugjXL56b6YeEvIgLnbZMuLdZ/uSwSgAK0vm55OGzVbZGofjEP7nRZYGQ==", "license": "MIT" }, "node_modules/typed-event-target": { @@ -36220,190 +32497,10 @@ "typescript": ">=4.8.4 <6.0.0" } }, - "node_modules/typescript-eslint/node_modules/@typescript-eslint/project-service": { - "version": "8.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.50.0.tgz", - "integrity": "sha512-Cg/nQcL1BcoTijEWyx4mkVC56r8dj44bFDvBdygifuS20f3OZCHmFbjF34DPSi07kwlFvqfv/xOLnJ5DquxSGQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.50.0", - "@typescript-eslint/types": "^8.50.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/typescript-eslint/node_modules/@typescript-eslint/scope-manager": { - "version": "8.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.50.0.tgz", - "integrity": "sha512-xCwfuCZjhIqy7+HKxBLrDVT5q/iq7XBVBXLn57RTIIpelLtEIZHXAF/Upa3+gaCpeV1NNS5Z9A+ID6jn50VD4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.50.0", - "@typescript-eslint/visitor-keys": "8.50.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/typescript-eslint/node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.50.0.tgz", - "integrity": "sha512-vxd3G/ybKTSlm31MOA96gqvrRGv9RJ7LGtZCn2Vrc5htA0zCDvcMqUkifcjrWNNKXHUU3WCkYOzzVSFBd0wa2w==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/typescript-eslint/node_modules/@typescript-eslint/types": { - "version": "8.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.50.0.tgz", - "integrity": "sha512-iX1mgmGrXdANhhITbpp2QQM2fGehBse9LbTf0sidWK6yg/NE+uhV5dfU1g6EYPlcReYmkE9QLPq/2irKAmtS9w==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/typescript-eslint/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.50.0.tgz", - "integrity": "sha512-W7SVAGBR/IX7zm1t70Yujpbk+zdPq/u4soeFSknWFdXIFuWsBGBOUu/Tn/I6KHSKvSh91OiMuaSnYp3mtPt5IQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/project-service": "8.50.0", - "@typescript-eslint/tsconfig-utils": "8.50.0", - "@typescript-eslint/types": "8.50.0", - "@typescript-eslint/visitor-keys": "8.50.0", - "debug": "^4.3.4", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "tinyglobby": "^0.2.15", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/typescript-eslint/node_modules/@typescript-eslint/utils": { - "version": "8.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.50.0.tgz", - "integrity": "sha512-87KgUXET09CRjGCi2Ejxy3PULXna63/bMYv72tCAlDJC3Yqwln0HiFJ3VJMst2+mEtNtZu5oFvX4qJGjKsnAgg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.50.0", - "@typescript-eslint/types": "8.50.0", - "@typescript-eslint/typescript-estree": "8.50.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <6.0.0" - } - }, - "node_modules/typescript-eslint/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.50.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.50.0.tgz", - "integrity": "sha512-Xzmnb58+Db78gT/CCj/PVCvK+zxbnsw6F+O1oheYszJbBSdEjVhQi3C/Xttzxgi/GLmpvOggRs1RFpiJ8+c34Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.50.0", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/typescript-eslint/node_modules/brace-expansion": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", - "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/typescript-eslint/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/typescript-eslint/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.2" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/ua-parser-js": { - "version": "0.7.41", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.41.tgz", - "integrity": "sha512-O3oYyCMPYgNNHuO7Jjk3uacJWZF8loBgwrfd/5LE/HyZ3lUIOdniQ7DNXJcIgZbwioZxk0fLfI4EVnetdiX5jg==", + "version": "0.7.40", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.40.tgz", + "integrity": "sha512-us1E3K+3jJppDBa3Tl0L3MOJiGhe1C6P0+nIvQAFYbxlMAx0h81eOwLmU57xgqToduDDPx3y5QsdjPfDu+FgOQ==", "funding": [ { "type": "opencollective", @@ -36449,9 +32546,9 @@ } }, "node_modules/undici": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.24.1.tgz", - "integrity": "sha512-sC+b0tB1whOCzbtlx20fx3WgCXwkW627p4EA9uM+/tNNPkSS+eSEld6pAs9nDv7WbY1UUljBMYPtu9BCOrCWKA==", + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.22.0.tgz", + "integrity": "sha512-hU/10obOIu62MGYjdskASR3CUAiYaFTtC9Pa6vHyf//mAipSvSQg6od2CnJswq7fvzNS3zJhxoRkgNVaHurWKw==", "license": "MIT", "engines": { "node": ">=18.17" @@ -36486,27 +32583,28 @@ } }, "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.1.tgz", - "integrity": "sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz", + "integrity": "sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==", "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.2.0.tgz", - "integrity": "sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/unicorn-magic": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", - "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "dev": true, "license": "MIT", "engines": { "node": ">=18" @@ -36549,7 +32647,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "dev": true, "license": "MIT", "dependencies": { "crypto-random-string": "^2.0.0" @@ -36592,9 +32689,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", - "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", "funding": [ { "type": "opencollective", @@ -36685,26 +32782,27 @@ } }, "node_modules/urlpattern-polyfill": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.1.0.tgz", - "integrity": "sha512-IGjKp/o0NL3Bso1PymYURCJxMPNAf/ILOpendP9f5B6e1rTJgdgiOvgfoT8VxCAdY+Wisb9uhGaJJf3yZ2V9nw==", + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz", + "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==", "dev": true, "license": "MIT" }, "node_modules/use-latest-callback": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/use-latest-callback/-/use-latest-callback-0.2.6.tgz", - "integrity": "sha512-FvRG9i1HSo0wagmX63Vrm8SnlUU3LMM3WyZkQ76RnslpBrX694AdG4A0zQBx2B3ZifFA0yv/BaEHGBnEax5rZg==", + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/use-latest-callback/-/use-latest-callback-0.2.4.tgz", + "integrity": "sha512-LS2s2n1usUUnDq4oVh1ca6JFX9uSqUncTfAm44WMg0v6TxL7POUTk1B044NH8TeLkFbNajIsgDHcgNpNzZucdg==", "license": "MIT", "peerDependencies": { "react": ">=16.8" } }, "node_modules/use-sync-external-store": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.6.0.tgz", - "integrity": "sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz", + "integrity": "sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==", "license": "MIT", + "peer": true, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } @@ -36896,13 +32994,13 @@ } }, "node_modules/web-streams-polyfill": { - "version": "4.0.0-beta.3", - "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-4.0.0-beta.3.tgz", - "integrity": "sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", "dev": true, "license": "MIT", "engines": { - "node": ">= 14" + "node": ">= 8" } }, "node_modules/webdriver": { @@ -36946,6 +33044,23 @@ "node": ">=18.20.0" } }, + "node_modules/webdriver/node_modules/@wdio/logger": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.18.0.tgz", + "integrity": "sha512-HdzDrRs+ywAqbXGKqe1i/bLtCv47plz4TvsHFH3j729OooT5VH38ctFn5aLXgECmiAKDkmH/A6kOq2Zh5DIxww==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^5.1.2", + "loglevel": "^1.6.0", + "loglevel-plugin-prefix": "^0.8.4", + "safe-regex2": "^5.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18.20.0" + } + }, "node_modules/webdriver/node_modules/@wdio/protocols": { "version": "9.16.2", "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-9.16.2.tgz", @@ -36989,36 +33104,39 @@ "node": ">= 14" } }, - "node_modules/webdriver/node_modules/brace-expansion": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", - "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", + "node_modules/webdriver/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", "dev": true, "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/webdriver/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "node_modules/webdriver/node_modules/geckodriver": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/geckodriver/-/geckodriver-6.1.0.tgz", + "integrity": "sha512-ZRXLa4ZaYTTgUO4Eefw+RsQCleugU2QLb1ME7qTYxxuRj51yAhfnXaItXNs5/vUzfIaDHuZ+YnSF005hfp07nQ==", "dev": true, - "license": "ISC", + "hasInstallScript": true, + "license": "MIT", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" + "@wdio/logger": "^9.18.0", + "@zip.js/zip.js": "^2.8.11", + "decamelize": "^6.0.1", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.6", + "modern-tar": "^0.7.2" }, "bin": { - "glob": "dist/esm/bin.mjs" + "geckodriver": "bin/geckodriver.js" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": ">=20.0.0" } }, "node_modules/webdriver/node_modules/https-proxy-agent": { @@ -37035,44 +33153,34 @@ "node": ">= 14" } }, - "node_modules/webdriver/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/webdriver/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "node_modules/webdriver/node_modules/ret": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.5.0.tgz", + "integrity": "sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw==", "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.2" - }, + "license": "MIT", "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=10" } }, - "node_modules/webdriver/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "node_modules/webdriver/node_modules/safe-regex2": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-5.0.0.tgz", + "integrity": "sha512-YwJwe5a51WlK7KbOJREPdjNrpViQBI3p4T50lfwPuDhZnE3XGVTlGvi+aolc5+RvxDD6bnUmjVsU9n1eboLUYw==", "dev": true, - "license": "BlueOak-1.0.0", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "ret": "~0.5.0" } }, "node_modules/webdriverio": { @@ -37081,6 +33189,7 @@ "integrity": "sha512-7teaXajOuNdn2UyyKlqMLssJjf0vDEih+Lo+tE/gHOt/P+mB8CinZym4PGtsriZLcyt4xV+Cun3hDmXM+pL26A==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/node": "^20.11.30", "@types/sinonjs__fake-timers": "^8.1.5", @@ -37138,6 +33247,23 @@ "node": ">=18.20.0" } }, + "node_modules/webdriverio/node_modules/@wdio/logger": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/@wdio/logger/-/logger-9.18.0.tgz", + "integrity": "sha512-HdzDrRs+ywAqbXGKqe1i/bLtCv47plz4TvsHFH3j729OooT5VH38ctFn5aLXgECmiAKDkmH/A6kOq2Zh5DIxww==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^5.1.2", + "loglevel": "^1.6.0", + "loglevel-plugin-prefix": "^0.8.4", + "safe-regex2": "^5.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18.20.0" + } + }, "node_modules/webdriverio/node_modules/@wdio/protocols": { "version": "9.16.2", "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-9.16.2.tgz", @@ -37145,6 +33271,19 @@ "dev": true, "license": "MIT" }, + "node_modules/webdriverio/node_modules/@wdio/repl": { + "version": "9.16.2", + "resolved": "https://registry.npmjs.org/@wdio/repl/-/repl-9.16.2.tgz", + "integrity": "sha512-FLTF0VL6+o5BSTCO7yLSXocm3kUnu31zYwzdsz4n9s5YWt83sCtzGZlZpt7TaTzb3jVUfxuHNQDTb8UMkCu0lQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "^20.1.0" + }, + "engines": { + "node": ">=18.20.0" + } + }, "node_modules/webdriverio/node_modules/@wdio/utils": { "version": "9.21.0", "resolved": "https://registry.npmjs.org/@wdio/utils/-/utils-9.21.0.tgz", @@ -37171,76 +33310,100 @@ "node": ">=18.20.0" } }, - "node_modules/webdriverio/node_modules/brace-expansion": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", - "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", + "node_modules/webdriverio/node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", "dev": true, "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" + "engines": { + "node": ">= 14" } }, - "node_modules/webdriverio/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "node_modules/webdriverio/node_modules/chalk": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.2.tgz", + "integrity": "sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==", "dev": true, - "license": "ISC", + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/webdriverio/node_modules/geckodriver": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/geckodriver/-/geckodriver-6.1.0.tgz", + "integrity": "sha512-ZRXLa4ZaYTTgUO4Eefw+RsQCleugU2QLb1ME7qTYxxuRj51yAhfnXaItXNs5/vUzfIaDHuZ+YnSF005hfp07nQ==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" + "@wdio/logger": "^9.18.0", + "@zip.js/zip.js": "^2.8.11", + "decamelize": "^6.0.1", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.6", + "modern-tar": "^0.7.2" }, "bin": { - "glob": "dist/esm/bin.mjs" + "geckodriver": "bin/geckodriver.js" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "engines": { + "node": ">=20.0.0" } }, - "node_modules/webdriverio/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "node_modules/webdriverio/node_modules/htmlfy": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/htmlfy/-/htmlfy-0.8.1.tgz", + "integrity": "sha512-xWROBw9+MEGwxpotll0h672KCaLrKKiCYzsyN8ZgL9cQbVumFnyvsk2JqiB9ELAV1GLj1GG/jxZUjV9OZZi/yQ==", "dev": true, - "license": "ISC" + "license": "MIT" }, - "node_modules/webdriverio/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", + "node_modules/webdriverio/node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "dev": true, - "license": "ISC", + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.2" + "agent-base": "^7.1.2", + "debug": "4" }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">= 14" } }, - "node_modules/webdriverio/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "node_modules/webdriverio/node_modules/ret": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.5.0.tgz", + "integrity": "sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw==", "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, + "license": "MIT", "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=10" + } + }, + "node_modules/webdriverio/node_modules/safe-regex2": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/safe-regex2/-/safe-regex2-5.0.0.tgz", + "integrity": "sha512-YwJwe5a51WlK7KbOJREPdjNrpViQBI3p4T50lfwPuDhZnE3XGVTlGvi+aolc5+RvxDD6bnUmjVsU9n1eboLUYw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "MIT", + "dependencies": { + "ret": "~0.5.0" } }, "node_modules/webdriverio/node_modules/serialize-error": { @@ -37273,7 +33436,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz", "integrity": "sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==", - "deprecated": "Use @exodus/bytes instead for a more spec-conformant and faster implementation", "dev": true, "license": "MIT", "dependencies": { @@ -37402,20 +33564,10 @@ "node": ">=8.15" } }, - "node_modules/which-pm/node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/which-runtime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/which-runtime/-/which-runtime-1.3.2.tgz", - "integrity": "sha512-5kwCfWml7+b2NO7KrLMhYihjRx0teKkd3yGp1Xk5Vaf2JGdSh+rgVhEALAD9c/59dP+YwJHXoEO7e8QPy7gOkw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-runtime/-/which-runtime-1.2.1.tgz", + "integrity": "sha512-8feIHccQFH/whiA1fD1b4c5+Q7T4ry1g1oHYc2mHnFh81tTQFsCvy3zhS2geUapkFAVBddUT/AM1a3rbqJweFg==", "license": "Apache-2.0" }, "node_modules/widest-line": { @@ -37491,25 +33643,10 @@ "node": ">= 12.0.0" } }, - "node_modules/winston-transport/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/wonka": { - "version": "6.3.6", - "resolved": "https://registry.npmjs.org/wonka/-/wonka-6.3.6.tgz", - "integrity": "sha512-MXH+6mDHAZ2GuMpgKS055FR6v0xVP3XwquxIMYXgiW+FejHQlMGlvVRZT4qMCxR+bEo/FCtIdKxwej9WV3YQag==", + "version": "6.3.5", + "resolved": "https://registry.npmjs.org/wonka/-/wonka-6.3.5.tgz", + "integrity": "sha512-SSil+ecw6B4/Dm7Pf2sAshKQ5hWFvfyGlfPbEd6A14dOH6VDjrmbY86u6nZvy9omGwwIPFR8V41+of1EezgoUw==", "license": "MIT" }, "node_modules/word-wrap": { @@ -37530,9 +33667,9 @@ "license": "Apache-2.0" }, "node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -37540,7 +33677,10 @@ "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, "node_modules/wrap-ansi-cjs": { @@ -37650,23 +33790,28 @@ "license": "ISC" }, "node_modules/write-file-atomic": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz", - "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==", - "dev": true, + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", - "signal-exit": "^4.0.1" + "signal-exit": "^3.0.7" }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, + "node_modules/write-file-atomic/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "license": "ISC" + }, "node_modules/ws": { - "version": "8.20.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.20.0.tgz", - "integrity": "sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==", + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==", "license": "MIT", "engines": { "node": ">=10.0.0" @@ -37684,36 +33829,6 @@ } } }, - "node_modules/wsl-utils": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/wsl-utils/-/wsl-utils-0.1.0.tgz", - "integrity": "sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==", - "license": "MIT", - "dependencies": { - "is-wsl": "^3.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/wsl-utils/node_modules/is-wsl": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.1.tgz", - "integrity": "sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==", - "license": "MIT", - "dependencies": { - "is-inside-container": "^1.0.0" - }, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/xache": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/xache/-/xache-1.2.1.tgz", @@ -37721,26 +33836,25 @@ "license": "MIT" }, "node_modules/xcode": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/xcode/-/xcode-2.1.0.tgz", - "integrity": "sha512-uCrmPITrqTEzhn0TtT57fJaNaw8YJs1aCzs+P/QqxsDbvPZSv7XMPPwXrKvHtD6pLjBM/NaVwraWJm8q83Y4iQ==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/xcode/-/xcode-3.0.1.tgz", + "integrity": "sha512-kCz5k7J7XbJtjABOvkc5lJmkiDh8VhjVCGNiqdKCscmVpdVUpEAyXv1xmCLkQJ5dsHqx3IPO4XW+NTDhU/fatA==", "license": "Apache-2.0", "dependencies": { - "simple-plist": "^1.0.0", - "uuid": "^3.3.2" + "simple-plist": "^1.1.0", + "uuid": "^7.0.3" }, "engines": { - "node": ">=6.0.0" + "node": ">=10.0.0" } }, "node_modules/xcode/node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-7.0.3.tgz", + "integrity": "sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==", "license": "MIT", "bin": { - "uuid": "bin/uuid" + "uuid": "dist/bin/uuid" } }, "node_modules/xdg-basedir": { @@ -37802,9 +33916,9 @@ "license": "MIT" }, "node_modules/xstate": { - "version": "5.30.0", - "resolved": "https://registry.npmjs.org/xstate/-/xstate-5.30.0.tgz", - "integrity": "sha512-mIzIuMjtYVkqXq9dUzYQoag7b/dF1CBS/yhliuPLfR0FwKPC18HiUivb/crcqY2gknhR8gJEhnppLg6ubQ0gGw==", + "version": "5.19.2", + "resolved": "https://registry.npmjs.org/xstate/-/xstate-5.19.2.tgz", + "integrity": "sha512-B8fL2aP0ogn5aviAXFzI5oZseAMqN00fg/TeDa3ZtatyDcViYLIfuQl4y8qmHCiKZgGEzmnTyNtNQL9oeJE2gw==", "license": "MIT", "funding": { "type": "opencollective", @@ -37837,9 +33951,9 @@ "license": "ISC" }, "node_modules/yaml": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz", - "integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==", + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", + "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", "license": "ISC", "bin": { "yaml": "bin.mjs" @@ -37982,9 +34096,9 @@ } }, "node_modules/yauzl": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-3.3.0.tgz", - "integrity": "sha512-PtGEvEP30p7sbIBJKUBjUnqgTVOyMURc4dLo9iNyAJnNIEz9pm88cCXF21w94Kg3k6RXkeZh5DHOGS0qEONvNQ==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-3.2.0.tgz", + "integrity": "sha512-Ow9nuGZE+qp1u4JIPvg+uCiUr7xGQWdff7JQSk5VGYTAZMDe2q8lxJ10ygv10qmSj031Ty/6FNJpLO4o1Sgc+w==", "dev": true, "license": "MIT", "dependencies": { @@ -38032,9 +34146,9 @@ } }, "node_modules/yoctocolors": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.2.tgz", - "integrity": "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.1.tgz", + "integrity": "sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==", "license": "MIT", "engines": { "node": ">=18" @@ -38044,9 +34158,9 @@ } }, "node_modules/yoctocolors-cjs": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz", - "integrity": "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz", + "integrity": "sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==", "license": "MIT", "engines": { "node": ">=18" @@ -38090,9 +34204,9 @@ } }, "node_modules/zip-stream-promise/node_modules/@types/node": { - "version": "22.19.15", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.15.tgz", - "integrity": "sha512-F0R/h2+dsy5wJAUe3tAU6oqa2qbWY5TpNfL/RGmo1y38hiyO1w3x2jPtt76wmuaJI4DQnOBu21cNXQ2STIUUWg==", + "version": "22.15.20", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.20.tgz", + "integrity": "sha512-A6BohGFRGHAscJsTslDCA9JG7qSJr/DWUvrvY8yi9IgnGtMxCyat7vvQ//MFa0DnLsyuS3wYTpLdw4Hf+Q5JXw==", "license": "MIT", "dependencies": { "undici-types": "~6.21.0" @@ -38127,16 +34241,20 @@ "node": ">=18" } }, - "node_modules/zip-stream-promise/node_modules/is-stream": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", - "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", + "node_modules/zip-stream-promise/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", "license": "MIT", - "engines": { - "node": ">=18" + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, "node_modules/zip-stream-promise/node_modules/zip-stream": { @@ -38153,6 +34271,22 @@ "node": ">=18" } }, + "node_modules/zip-stream/node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", + "license": "MIT", + "dependencies": { + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, "node_modules/zip-writer": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/zip-writer/-/zip-writer-2.2.0.tgz", @@ -38190,9 +34324,9 @@ } }, "node_modules/zod": { - "version": "3.25.76", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", - "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "version": "3.25.75", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.75.tgz", + "integrity": "sha512-OhpzAmVzabPOL6C3A3gpAifqr9MqihV/Msx3gor2b2kviCgcb+HM9SEOpMWwwNp9MRunWnhtAKUoo0AHhjyPPg==", "dev": true, "license": "MIT", "peer": true, diff --git a/package.json b/package.json index 496ed908a8..4f2d401624 100644 --- a/package.json +++ b/package.json @@ -55,7 +55,6 @@ "@react-native-vector-icons/material-icons": "12.4.0", "@react-native-vector-icons/octicons": "20.4.0", "@react-navigation/bottom-tabs": "7.14.0", - "@react-navigation/elements": "2.9.5", "@react-navigation/native": "7.1.28", "@react-navigation/stack": "7.7.2", "@rnmapbox/maps": "10.1.42", @@ -200,8 +199,5 @@ "typescript": "5.9.3", "typescript-eslint": "8.50.0", "webdriverio": "9.21.0" - }, - "overrides": { - "@hyperswarm/secret-stream": "6.7.1" } } From fe7b35d041b89c2ee786bcfdde5edfe4fcd9765c Mon Sep 17 00:00:00 2001 From: Cindy Green Date: Mon, 6 Apr 2026 13:51:10 -0400 Subject: [PATCH 60/72] Removes attempted fix for sodium native. --- jest.config.js | 1 - jest.sodium-stub.js | 4 ---- 2 files changed, 5 deletions(-) delete mode 100644 jest.sodium-stub.js diff --git a/jest.config.js b/jest.config.js index e38331f2c1..007963bf4a 100644 --- a/jest.config.js +++ b/jest.config.js @@ -64,7 +64,6 @@ const config = { moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'], // https://react-native-documents.github.io/docs/sponsor-only/jest-mocks setupFiles: [ - './jest.sodium-stub.js', './node_modules/@react-native-documents/picker/jest/build/jest/setup.js', ], setupFilesAfterEnv: ['@rnmapbox/maps/setup-jest', './jest.setup.js'], diff --git a/jest.sodium-stub.js b/jest.sodium-stub.js deleted file mode 100644 index 12dcdbac67..0000000000 --- a/jest.sodium-stub.js +++ /dev/null @@ -1,4 +0,0 @@ -// sodium-native@4+ uses require-addon to load its native binary, which is -// only available in the nodejs-mobile runtime. Stub it so Jest can load -// @comapeo/core without crashing. The actual crypto is never called in tests. -require.addon = () => ({}); From 99116162eb1676eaa8a55b1c41fa1694e1d51b96 Mon Sep 17 00:00:00 2001 From: Cindy Green Date: Mon, 6 Apr 2026 14:03:10 -0400 Subject: [PATCH 61/72] Updates type for custom map info. --- .../screens/BackgroundMaps/BackgroundMaps.tsx | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) diff --git a/src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx b/src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx index 8232293b83..eb7fc8b562 100644 --- a/src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx +++ b/src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx @@ -274,20 +274,11 @@ function NoMapScreen({ ); } -// Note: The type definition in @comapeo/core-react v9.0.2 doesn't match the actual API response -// API returns: {name, size, created} but types say: {mapName, estimatedSizeBytes, mapCreatedAt} -// Using the actual API response structure here -type CustomMapInfo = { - name: string; - size: number; - created: number; -}; - function MapInfoScreen({ customMapInfo, onRemoveMap, }: { - customMapInfo: CustomMapInfo; + customMapInfo: NonNullable['data']>; onRemoveMap: () => void; }) { const {formatMessage: t} = useIntl(); From 2f5341baf216fa4eaa8b38243d2759cac29b3498 Mon Sep 17 00:00:00 2001 From: Cindy Green Date: Tue, 7 Apr 2026 15:48:08 -0400 Subject: [PATCH 62/72] Combines screens so as not to rely on use effects and keep state changes in the same screens. --- package-lock.json | 1 + .../BackgroundMaps/MapReceivedBottomSheet.tsx | 29 ++++++---- .../MapShareCanceledBottomSheet.tsx | 50 +--------------- .../BackgroundMaps/ReceivingBackgroundMap.tsx | 39 ++++++++----- .../BackgroundMaps/ReplaceBackgroundMap.tsx | 7 +++ .../BackgroundMaps/SendingBackgroundMap.tsx | 46 +++++++++------ .../sharedComponents/MapShareCanceled.tsx | 51 ++++++++++++++++ .../sharedComponents/MapShareError.tsx | 58 +++++++++++++++++++ 8 files changed, 189 insertions(+), 92 deletions(-) create mode 100644 src/frontend/sharedComponents/MapShareCanceled.tsx create mode 100644 src/frontend/sharedComponents/MapShareError.tsx diff --git a/package-lock.json b/package-lock.json index 53f72a996d..ddda457295 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12352,6 +12352,7 @@ "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz", "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==", "license": "Apache-2.0", + "peer": true, "peerDependencies": { "bare-abort-controller": "*" }, diff --git a/src/frontend/screens/BackgroundMaps/MapReceivedBottomSheet.tsx b/src/frontend/screens/BackgroundMaps/MapReceivedBottomSheet.tsx index 156b0f1cee..b776b05265 100644 --- a/src/frontend/screens/BackgroundMaps/MapReceivedBottomSheet.tsx +++ b/src/frontend/screens/BackgroundMaps/MapReceivedBottomSheet.tsx @@ -4,6 +4,7 @@ import {defineMessages, useIntl} from 'react-intl'; import bboxPolygon from '@turf/bbox-polygon'; import booleanPointInPolygon from '@turf/boolean-point-in-polygon'; import pointToPolygonDistance from '@turf/point-to-polygon-distance'; +import {UIActivityIndicator} from 'react-native-indicators'; import StackSvg from '../../images/Stack.svg'; import CautionSvg from '../../images/caution.svg'; @@ -30,7 +31,6 @@ import { getErrorCode, MapShareErrorCode, } from '@comapeo/core-react'; -import {Loading} from '../../sharedComponents/Loading'; import * as Sentry from '@sentry/react-native'; import {toError} from '../../utils/errors'; @@ -231,17 +231,24 @@ export function MapReceivedBottomSheet({ - {warningInfo.warning !== 'space' && ( - - )} {declineStatus === 'pending' ? ( - + ) : ( - + <> + {warningInfo.warning !== 'space' && ( + + )} + + + )} @@ -310,5 +317,7 @@ const styles = StyleSheet.create({ paddingTop: 8, gap: 12, alignItems: 'center', + justifyContent: 'center', + minHeight: 120, }, }); diff --git a/src/frontend/screens/BackgroundMaps/MapShareCanceledBottomSheet.tsx b/src/frontend/screens/BackgroundMaps/MapShareCanceledBottomSheet.tsx index cc56ca611a..61026afaba 100644 --- a/src/frontend/screens/BackgroundMaps/MapShareCanceledBottomSheet.tsx +++ b/src/frontend/screens/BackgroundMaps/MapShareCanceledBottomSheet.tsx @@ -1,60 +1,14 @@ import * as React from 'react'; -import {StyleSheet, View} from 'react-native'; -import {defineMessages, useIntl} from 'react-intl'; import {BottomSheetWrapper} from '../../sharedComponents/BottomSheetWrapper'; -import {SecondaryButton} from '../../sharedComponents/Buttons'; +import {MapShareCanceled} from '../../sharedComponents/MapShareCanceled'; import {type NativeRootNavigationProps} from '../../sharedTypes/navigation'; -import ErrorIcon from '../../images/Error.svg'; -import {IconTitleDescription} from '../../sharedComponents/IconTitleDescription'; - -const m = defineMessages({ - title: { - id: 'screens.Settings.MapManagement.MapShareCanceled.title', - defaultMessage: 'Sharing Canceled', - }, - message: { - id: 'screens.Settings.MapManagement.MapShareCanceled.message', - defaultMessage: 'Collaborator canceled sharing before completing.', - }, - close: { - id: 'screens.Settings.MapManagement.MapShareCanceled.close', - defaultMessage: 'Close', - }, -}); export function MapShareCanceledBottomSheet({ navigation, }: NativeRootNavigationProps<'MapShareCanceledBottomSheet'>) { - const {formatMessage: t} = useIntl(); - - const handleClose = () => { - navigation.goBack(); - }; - return ( - - - } - title={t(m.title)} - description={t(m.message)} - /> - - - + navigation.goBack()} /> ); } - -const styles = StyleSheet.create({ - container: { - height: '100%', - alignItems: 'center', - }, - contentContainer: { - flex: 1, - alignItems: 'center', - justifyContent: 'center', - }, -}); diff --git a/src/frontend/screens/BackgroundMaps/ReceivingBackgroundMap.tsx b/src/frontend/screens/BackgroundMaps/ReceivingBackgroundMap.tsx index 71070a6436..de5caef582 100644 --- a/src/frontend/screens/BackgroundMaps/ReceivingBackgroundMap.tsx +++ b/src/frontend/screens/BackgroundMaps/ReceivingBackgroundMap.tsx @@ -11,6 +11,8 @@ import { getErrorCode, MapShareErrorCode, } from '@comapeo/core-react'; +import {MapShareCanceled} from '../../sharedComponents/MapShareCanceled'; +import {MapShareError} from '../../sharedComponents/MapShareError'; import StackSvg from '../../images/Stack.svg'; import SuccessIcon from '../../images/Success.svg'; import {HeaderText} from '../../sharedComponents/Text/HeaderText'; @@ -53,18 +55,6 @@ export function ReceivingBackgroundMap({ usePreventAndroidBackButton(); useKeepAwake(); - React.useEffect(() => { - if (mapShare.status === 'canceled') { - navigation.replace('MapShareCanceledBottomSheet'); - return; - } - if (mapShare.status === 'error') { - const error = toError(mapShare.error, 'Map download failed'); - Sentry.captureException(mapShare.error); - navigation.replace('ErrorBottomSheet', {error}); - } - }, [mapShare, navigation]); - const handleCancel = React.useCallback(() => { abortDownload( {shareId}, @@ -74,12 +64,15 @@ export function ReceivingBackgroundMap({ }, onError: (err: unknown) => { if (getErrorCode(err) === MapShareErrorCode.MAP_SHARE_CANCELED) { - navigation.replace('MapShareCanceledBottomSheet'); + navigation.popTo('BackgroundMaps'); return; } const error = toError(err, 'Failed to cancel map download'); Sentry.captureException(error); - navigation.replace('ErrorBottomSheet', {error}); + navigation.replace('BackgroundMapErrorBottomSheet', { + title: error.message, + description: error.message, + }); }, }, ); @@ -89,7 +82,23 @@ export function ReceivingBackgroundMap({ navigation.popTo('BackgroundMaps'); }; - if (mapShare?.status === 'completed') { + if (mapShare.status === 'canceled') { + return ; + } + + if (mapShare.status === 'error') { + const error = toError(mapShare.error, 'Map download failed'); + Sentry.captureException(error); + return ( + + ); + } + + if (mapShare.status === 'completed') { return ; } diff --git a/src/frontend/screens/BackgroundMaps/ReplaceBackgroundMap.tsx b/src/frontend/screens/BackgroundMaps/ReplaceBackgroundMap.tsx index 13f6cda887..672a6d183f 100644 --- a/src/frontend/screens/BackgroundMaps/ReplaceBackgroundMap.tsx +++ b/src/frontend/screens/BackgroundMaps/ReplaceBackgroundMap.tsx @@ -14,9 +14,11 @@ import {VERY_LIGHT_GREY, RED, NEW_DARK_GREY} from '../../lib/styles'; import { useDeclineReceivedMapShare, useDownloadReceivedMapShare, + useSingleReceivedMapShare, getErrorCode, MapShareErrorCode, } from '@comapeo/core-react'; +import {MapShareCanceled} from '../../sharedComponents/MapShareCanceled'; import * as Sentry from '@sentry/react-native'; import {toError} from '../../utils/errors'; @@ -46,9 +48,14 @@ export function ReplaceBackgroundMap({ }: NativeRootNavigationProps<'ReplaceBackgroundMap'>) { const {formatMessage: t} = useIntl(); const {shareId} = route.params; + const mapShare = useSingleReceivedMapShare({shareId}); const {mutate: declineMapShare} = useDeclineReceivedMapShare(); const {mutate: downloadMapShare} = useDownloadReceivedMapShare(); + if (mapShare.status === 'canceled') { + return navigation.goBack()} />; + } + const handleReplace = () => { downloadMapShare( {shareId}, diff --git a/src/frontend/screens/BackgroundMaps/SendingBackgroundMap.tsx b/src/frontend/screens/BackgroundMaps/SendingBackgroundMap.tsx index 0b4b36122e..ee75755a7c 100644 --- a/src/frontend/screens/BackgroundMaps/SendingBackgroundMap.tsx +++ b/src/frontend/screens/BackgroundMaps/SendingBackgroundMap.tsx @@ -11,6 +11,8 @@ import { getErrorCode, MapShareErrorCode, } from '@comapeo/core-react'; +import {MapShareCanceled} from '../../sharedComponents/MapShareCanceled'; +import {MapShareError} from '../../sharedComponents/MapShareError'; import SendingIcon from '../../images/SendingIcon.svg'; import StackSvg from '../../images/Stack.svg'; import SuccessIcon from '../../images/Success.svg'; @@ -106,8 +108,10 @@ export function SendingBackgroundMap({ return; } Sentry.captureException(err); - navigation.replace('ErrorBottomSheet', { - error: toError(err, 'Failed to cancel map share'), + const error = toError(err, 'Failed to cancel map share'); + navigation.replace('BackgroundMapErrorBottomSheet', { + title: error.message, + description: error.message, }); }, }, @@ -124,24 +128,8 @@ export function SendingBackgroundMap({ return () => subscription.remove(); }, [cancelShare]); - React.useEffect(() => { - if (!mapShare) { - navigation.popTo('BackgroundMaps'); - return; - } - if (mapShare.status === 'aborted') { - navigation.replace('MapShareCanceledBottomSheet'); - return; - } - if (mapShare.status === 'error') { - const error = toError(mapShare.error, 'Map share failed'); - Sentry.captureException(error); - navigation.replace('ErrorBottomSheet', {error}); - } - }, [mapShare, navigation]); - const handleClose = () => { - navigation.popTo('BackgroundMaps'); + navigation.goBack(); }; function formatElapsed(totalSeconds: number) { @@ -153,6 +141,26 @@ export function SendingBackgroundMap({ .padStart(2, '0')}`; } + if (!mapShare) { + return null; + } + + if (mapShare.status === 'aborted') { + return ; + } + + if (mapShare.status === 'error') { + const error = toError(mapShare.error, 'Map share failed'); + Sentry.captureException(error); + return ( + + ); + } + if (mapShare?.status === 'declined') { const reason = (mapShare as {reason?: string}).reason; return ; diff --git a/src/frontend/sharedComponents/MapShareCanceled.tsx b/src/frontend/sharedComponents/MapShareCanceled.tsx new file mode 100644 index 0000000000..88794d07f1 --- /dev/null +++ b/src/frontend/sharedComponents/MapShareCanceled.tsx @@ -0,0 +1,51 @@ +import * as React from 'react'; +import {StyleSheet, View} from 'react-native'; +import {defineMessages, useIntl} from 'react-intl'; +import ErrorIcon from '../images/Error.svg'; +import {IconTitleDescription} from './IconTitleDescription'; +import {SecondaryButton} from './Buttons'; + +const m = defineMessages({ + title: { + id: 'screens.Settings.MapManagement.MapShareCanceled.title', + defaultMessage: 'Sharing Canceled', + }, + message: { + id: 'screens.Settings.MapManagement.MapShareCanceled.message', + defaultMessage: 'Collaborator canceled sharing before completing.', + }, + close: { + id: 'screens.Settings.MapManagement.MapShareCanceled.close', + defaultMessage: 'Close', + }, +}); + +export function MapShareCanceled({onClose}: {onClose: () => void}) { + const {formatMessage: t} = useIntl(); + + return ( + + + } + title={t(m.title)} + description={t(m.message)} + /> + + + + ); +} + +const styles = StyleSheet.create({ + container: { + height: '100%', + alignItems: 'center', + padding: 20, + }, + contentContainer: { + flex: 1, + alignItems: 'center', + justifyContent: 'center', + }, +}); diff --git a/src/frontend/sharedComponents/MapShareError.tsx b/src/frontend/sharedComponents/MapShareError.tsx new file mode 100644 index 0000000000..1309da4e62 --- /dev/null +++ b/src/frontend/sharedComponents/MapShareError.tsx @@ -0,0 +1,58 @@ +import * as React from 'react'; +import {StyleSheet, View} from 'react-native'; +import {defineMessages, useIntl} from 'react-intl'; +import ErrorIcon from '../images/Error.svg'; +import {HeaderText} from './Text/HeaderText'; +import {BodyText} from './Text/BodyText'; +import {SecondaryButton} from './Buttons'; + +const m = defineMessages({ + goBack: { + id: 'MapManagement.ErrorBottomSheet.goBack', + defaultMessage: 'Go Back', + }, +}); + +export function MapShareError({ + title, + description, + onClose, +}: { + title: string; + description: string; + onClose: () => void; +}) { + const {formatMessage} = useIntl(); + + return ( + + + + {title} + {description} + + + + ); +} + +const styles = StyleSheet.create({ + container: { + height: '100%', + alignItems: 'center', + justifyContent: 'space-between', + }, + icon: { + marginTop: 40, + marginBottom: 30, + }, + header: { + textAlign: 'center', + marginBottom: 20, + }, +}); From 34448bac20492f4fcfbac3d6876bfeda894d763b Mon Sep 17 00:00:00 2001 From: Cindy Green Date: Tue, 7 Apr 2026 16:22:34 -0400 Subject: [PATCH 63/72] Catches additional errors. --- .../BackgroundMaps/ReceivingBackgroundMap.tsx | 15 ++++++++----- .../BackgroundMaps/ReplaceBackgroundMap.tsx | 22 +++++++++++++++---- .../BackgroundMaps/SendingBackgroundMap.tsx | 8 +++++++ 3 files changed, 36 insertions(+), 9 deletions(-) diff --git a/src/frontend/screens/BackgroundMaps/ReceivingBackgroundMap.tsx b/src/frontend/screens/BackgroundMaps/ReceivingBackgroundMap.tsx index de5caef582..9f98801891 100644 --- a/src/frontend/screens/BackgroundMaps/ReceivingBackgroundMap.tsx +++ b/src/frontend/screens/BackgroundMaps/ReceivingBackgroundMap.tsx @@ -63,7 +63,12 @@ export function ReceivingBackgroundMap({ navigation.popTo('BackgroundMaps'); }, onError: (err: unknown) => { - if (getErrorCode(err) === MapShareErrorCode.MAP_SHARE_CANCELED) { + const code = getErrorCode(err); + if ( + code === MapShareErrorCode.MAP_SHARE_CANCELED || + code === MapShareErrorCode.INVALID_STATUS_TRANSITION || + code === MapShareErrorCode.MAP_SHARE_NOT_FOUND + ) { navigation.popTo('BackgroundMaps'); return; } @@ -87,12 +92,12 @@ export function ReceivingBackgroundMap({ } if (mapShare.status === 'error') { - const error = toError(mapShare.error, 'Map download failed'); - Sentry.captureException(error); + const message = mapShare.error.message ?? 'Map download failed'; + Sentry.captureException(new Error(message)); return ( ); diff --git a/src/frontend/screens/BackgroundMaps/ReplaceBackgroundMap.tsx b/src/frontend/screens/BackgroundMaps/ReplaceBackgroundMap.tsx index 672a6d183f..fecb8a9c34 100644 --- a/src/frontend/screens/BackgroundMaps/ReplaceBackgroundMap.tsx +++ b/src/frontend/screens/BackgroundMaps/ReplaceBackgroundMap.tsx @@ -64,13 +64,20 @@ export function ReplaceBackgroundMap({ navigation.replace('ReceivingBackgroundMap', {shareId}); }, onError: (err: unknown) => { - if (getErrorCode(err) === MapShareErrorCode.MAP_SHARE_CANCELED) { + const code = getErrorCode(err); + if ( + code === MapShareErrorCode.MAP_SHARE_CANCELED || + code === MapShareErrorCode.INVALID_STATUS_TRANSITION + ) { navigation.navigate('MapShareCanceledBottomSheet'); return; } const error = toError(err, 'Failed to start map download'); Sentry.captureException(error); - navigation.navigate('ErrorBottomSheet', {error}); + navigation.replace('BackgroundMapErrorBottomSheet', { + title: error.message, + description: error.message, + }); }, }, ); @@ -84,13 +91,20 @@ export function ReplaceBackgroundMap({ navigation.popTo('BackgroundMaps'); }, onError: (err: unknown) => { - if (getErrorCode(err) === MapShareErrorCode.MAP_SHARE_CANCELED) { + const code = getErrorCode(err); + if ( + code === MapShareErrorCode.MAP_SHARE_CANCELED || + code === MapShareErrorCode.INVALID_STATUS_TRANSITION + ) { navigation.goBack(); return; } const error = toError(err, 'Failed to decline map share'); Sentry.captureException(error); - navigation.navigate('ErrorBottomSheet', {error}); + navigation.replace('BackgroundMapErrorBottomSheet', { + title: error.message, + description: error.message, + }); }, }, ); diff --git a/src/frontend/screens/BackgroundMaps/SendingBackgroundMap.tsx b/src/frontend/screens/BackgroundMaps/SendingBackgroundMap.tsx index ee75755a7c..d46a4f5308 100644 --- a/src/frontend/screens/BackgroundMaps/SendingBackgroundMap.tsx +++ b/src/frontend/screens/BackgroundMaps/SendingBackgroundMap.tsx @@ -150,6 +150,14 @@ export function SendingBackgroundMap({ } if (mapShare.status === 'error') { + const code = mapShare.error.code; + if ( + code === MapShareErrorCode.INVALID_STATUS_TRANSITION || + code === MapShareErrorCode.MAP_SHARE_NOT_FOUND || + code === MapShareErrorCode.MAP_SHARE_CANCELED + ) { + return ; + } const error = toError(mapShare.error, 'Map share failed'); Sentry.captureException(error); return ( From 3e903df49301e649af04c658e773fe4f5d7266c4 Mon Sep 17 00:00:00 2001 From: Cindy Green Date: Tue, 7 Apr 2026 18:22:07 -0400 Subject: [PATCH 64/72] Updates to latest comape-core-react. Uses new status. Uses pending status for showing a loading state. Makes sure to navigate back instead of to background maps. --- package-lock.json | 160 +++++++++++------- package.json | 2 +- .../screens/BackgroundMaps/BackgroundMaps.tsx | 18 +- .../BackgroundMaps/MapReceivedBottomSheet.tsx | 4 +- .../MapShareCanceledBottomSheet.tsx | 2 +- .../BackgroundMaps/ReceivingBackgroundMap.tsx | 16 +- .../BackgroundMaps/ReplaceBackgroundMap.tsx | 2 +- .../BackgroundMaps/SendingBackgroundMap.tsx | 8 +- 8 files changed, 138 insertions(+), 74 deletions(-) diff --git a/package-lock.json b/package-lock.json index ddda457295..82925bbabb 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "1.11.0-pre", "hasInstallScript": true, "dependencies": { - "@comapeo/core-react": "11.0.2", + "@comapeo/core-react": "11.0.3", "@comapeo/ipc": "8.0.0", "@comapeo/nodejs-mobile-react-native": "18.20.4-2", "@expo-google-fonts/rubik": "0.4.2", @@ -230,7 +230,6 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", @@ -2658,7 +2657,6 @@ "resolved": "https://registry.npmjs.org/@comapeo/core/-/core-7.0.1.tgz", "integrity": "sha512-og7ka/bbnHh6CdKFnF0SECZT/Urv/m9bG133owd1t3o8slKP25h6oxPJt9X2HgeBAP3ggybdBluynQDbHqFLQA==", "license": "MIT", - "peer": true, "dependencies": { "@comapeo/fallback-smp": "^1.0.0", "@comapeo/schema": "2.2.0", @@ -2725,9 +2723,9 @@ } }, "node_modules/@comapeo/core-react": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/@comapeo/core-react/-/core-react-11.0.2.tgz", - "integrity": "sha512-8ZP3L3vXeMQxWyDWWmRYrXfSa/6dlXszmFQ9U/mR+DIy7JCAcNnRnqQKwF27esF3kQvPAedOM3l3l+fre2SAcA==", + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@comapeo/core-react/-/core-react-11.0.3.tgz", + "integrity": "sha512-vasml3qFLyRTzmULiwOu6XPIQVtOoAjfoQiK3HGL9MTWkhHA996wDtjatll+bsQUCJDOvMrlkxxooxv5IuJZ2A==", "license": "MIT", "dependencies": { "@comapeo/map-server": "^1.1.0", @@ -2801,7 +2799,6 @@ "resolved": "https://registry.npmjs.org/@comapeo/ipc/-/ipc-8.0.0.tgz", "integrity": "sha512-kzlcoB0fXj/w1CZxqp9rK86LKqeYSJ3dwh+I7TT1EzjNd9y66iXIviuwjuIb2hcNjT6BWv4pyvUfC9DWc1xIVQ==", "license": "MIT", - "peer": true, "dependencies": { "eventemitter3": "^5.0.4", "p-defer": "^4.0.1", @@ -2970,7 +2967,6 @@ "resolved": "https://registry.npmjs.org/@comapeo/schema/-/schema-2.2.0.tgz", "integrity": "sha512-SbD/Q0BsirAFSj2LETqwgyx/Om62lUVT3R05k9vK5Ld+u+VNn1Xsg2nRblf6Xh9mP1U3rBYJvjjuYQ1lPUYmLA==", "license": "MIT", - "peer": true, "dependencies": { "@comapeo/geometry": "^1.1.1", "compact-encoding": "^2.12.0", @@ -3070,6 +3066,7 @@ "os": [ "aix" ], + "peer": true, "engines": { "node": ">=18" } @@ -3087,6 +3084,7 @@ "os": [ "android" ], + "peer": true, "engines": { "node": ">=18" } @@ -3104,6 +3102,7 @@ "os": [ "android" ], + "peer": true, "engines": { "node": ">=18" } @@ -3121,6 +3120,7 @@ "os": [ "android" ], + "peer": true, "engines": { "node": ">=18" } @@ -3138,6 +3138,7 @@ "os": [ "darwin" ], + "peer": true, "engines": { "node": ">=18" } @@ -3155,6 +3156,7 @@ "os": [ "darwin" ], + "peer": true, "engines": { "node": ">=18" } @@ -3172,6 +3174,7 @@ "os": [ "freebsd" ], + "peer": true, "engines": { "node": ">=18" } @@ -3189,6 +3192,7 @@ "os": [ "freebsd" ], + "peer": true, "engines": { "node": ">=18" } @@ -3206,6 +3210,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -3223,6 +3228,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -3240,6 +3246,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -3257,6 +3264,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -3274,6 +3282,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -3291,6 +3300,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -3308,6 +3318,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -3325,6 +3336,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -3342,6 +3354,7 @@ "os": [ "linux" ], + "peer": true, "engines": { "node": ">=18" } @@ -3359,6 +3372,7 @@ "os": [ "netbsd" ], + "peer": true, "engines": { "node": ">=18" } @@ -3376,6 +3390,7 @@ "os": [ "netbsd" ], + "peer": true, "engines": { "node": ">=18" } @@ -3393,6 +3408,7 @@ "os": [ "openbsd" ], + "peer": true, "engines": { "node": ">=18" } @@ -3410,6 +3426,7 @@ "os": [ "openbsd" ], + "peer": true, "engines": { "node": ">=18" } @@ -3427,6 +3444,7 @@ "os": [ "sunos" ], + "peer": true, "engines": { "node": ">=18" } @@ -3444,6 +3462,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">=18" } @@ -3461,6 +3480,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">=18" } @@ -3478,6 +3498,7 @@ "os": [ "win32" ], + "peer": true, "engines": { "node": ">=18" } @@ -7311,7 +7332,6 @@ "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-7.1.28.tgz", "integrity": "sha512-d1QDn+KNHfHGt3UIwOZvupvdsDdiHYZBEj7+wL2yDVo3tMezamYy60H9s3EnNVE1Ae1ty0trc7F2OKqo/RmsdQ==", "license": "MIT", - "peer": true, "dependencies": { "@react-navigation/core": "^7.14.0", "escape-string-regexp": "^4.0.0", @@ -7775,8 +7795,7 @@ "version": "0.33.22", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.33.22.tgz", "integrity": "sha512-auUj4k+f4pyrIVf4GW5UKquSZFHJWri06QgARy9C0t9ZTjJLIuNIrr1yl9bWcJWJ1Gz1vOvYN1D+QPaIlNMVkQ==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@sindresorhus/is": { "version": "0.14.0", @@ -7996,7 +8015,6 @@ "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/core": "^7.21.3", "@svgr/babel-preset": "8.1.0", @@ -8187,7 +8205,6 @@ "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.90.21.tgz", "integrity": "sha512-0Lu6y5t+tvlTJMTO7oh5NSpJfpg/5D41LlThfepTixPYkJ0sE2Jj0m0f6yYqujBwIXlId87e234+MxG3D3g7kg==", "license": "MIT", - "peer": true, "dependencies": { "@tanstack/query-core": "5.90.20" }, @@ -9452,7 +9469,6 @@ "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.7.tgz", "integrity": "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==", "license": "MIT", - "peer": true, "dependencies": { "csstype": "^3.2.2" } @@ -9603,7 +9619,6 @@ "integrity": "sha512-O7QnmOXYKVtPrfYzMolrCTfkezCJS9+ljLdKW/+DCvRsc3UAz+sbH6Xcsv7p30+0OwUbeWfUDAQE0vpabZ3QLg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/regexpp": "^4.10.0", "@typescript-eslint/scope-manager": "8.50.0", @@ -9643,7 +9658,6 @@ "integrity": "sha512-6/cmF2piao+f6wSxUsJLZjck7OQsYyRtcOZS02k7XINSNlz93v6emM8WutDQSXnroG2xwYlEVHJI+cPA7CPM3Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.50.0", "@typescript-eslint/types": "8.50.0", @@ -9903,6 +9917,7 @@ "integrity": "sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "tinyrainbow": "^1.2.0" }, @@ -9916,6 +9931,7 @@ "integrity": "sha512-oBO82rEjsxLNJincVhLhaxxZdEtV0EFHMK5Kmx5sJ6H9L183dHECjiefOAdnqpIgT5eZwT04PoggUnW88vOBNQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@vitest/pretty-format": "2.1.9", "magic-string": "^0.30.12", @@ -9931,7 +9947,6 @@ "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/parser": "^7.25.3", "@vue/shared": "3.5.13", @@ -10088,6 +10103,7 @@ "integrity": "sha512-X764hL/nHcbMTepvr7zNF/pSvb4r3twoa5lKllkIIraRDI0cg1/AKHreX24htjHpoA5OLzjEJaydQVJpZ3RzmA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/node": "^20.1.1", "@vitest/snapshot": "^2.1.1", @@ -10127,6 +10143,7 @@ "integrity": "sha512-WanmrLXRMmW3hwsXCm+x618gDsdGwkrxhiirgMC9Ny0g78qt7JLSOvAHKx+dCZtk77QwvFuNpLCd+Nxnszon9Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=18.20.0" }, @@ -10141,6 +10158,7 @@ "integrity": "sha512-WzZhaN834du9wjqT/Go9qPyB7VkzV2bjr6pr06DrIzxIpJq/snWOv96C6OjJu8nmYNRjV769mAxyggBUf+sUoQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/node": "^20.1.0" }, @@ -10154,6 +10172,7 @@ "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -10167,6 +10186,7 @@ "integrity": "sha512-2G2y++21dhj2R7iHAdd0FIzjGwuKZld+7Pl/bTU6YIkrC2ZMbVUjm+luj6A6V34Rv9XfKJDKpTWu9W4Gse1D9g==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "type-fest": "^2.12.2" }, @@ -10183,6 +10203,7 @@ "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", "dev": true, "license": "(MIT OR CC0-1.0)", + "peer": true, "engines": { "node": ">=12.20" }, @@ -10196,6 +10217,7 @@ "integrity": "sha512-Alz+JiaVW15b/Qy6zSmJeYXxvmtMIVpEAg7QDfCWqG9miZSKJYWwgWE3xoSrwYn5kTylUszqb17Pb5wyrj7YFw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/node": "^20.1.0", "@types/ws": "^8.5.3", @@ -10218,6 +10240,7 @@ "integrity": "sha512-HxpLQrFuadfE65dqh+Qc2pdvz18FbsdpdiZogy8VUBtxRanijbOsi4cV84ffGXab8Ownzu+bNBJuJjlTBDX00Q==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/node": "^20.11.30", "@types/sinonjs__fake-timers": "^8.1.5", @@ -10263,6 +10286,7 @@ "integrity": "sha512-zlOJixJUHxeoyfIN/KdM797HwJj/oNgBaEdftgJARqbXt5AVZu18vJ3zljb+wzbY2M0pl7Y4+5OFH06WlDgQ+A==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@wdio/logger": "9.4.4", "@wdio/types": "9.12.6", @@ -10281,6 +10305,7 @@ "integrity": "sha512-WzZhaN834du9wjqT/Go9qPyB7VkzV2bjr6pr06DrIzxIpJq/snWOv96C6OjJu8nmYNRjV769mAxyggBUf+sUoQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/node": "^20.1.0" }, @@ -10322,7 +10347,6 @@ "integrity": "sha512-i38o7wlipLllNrk2hzdDfAmk6nrqm3lR2MtAgWgtHbwznZAKkB84KpkNFfmUXw5Kg3iP1zKlSjwZpKqenuLc+Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=18.20.0" }, @@ -10440,6 +10464,7 @@ "integrity": "sha512-BXx8RXFUW2M4dcO6t5Le95Hi2ZkTQBRsvBQqLekT2rZ6Xmw8ZKZBPf0FptnoftFGg6dYmwnDidYv/0+4PiHjpQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "chalk": "^5.1.2", "loglevel": "^1.6.0", @@ -10456,6 +10481,7 @@ "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -10618,7 +10644,8 @@ "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-9.12.5.tgz", "integrity": "sha512-i+yc0EZtZOh5fFuwHxvcnXeTXk2ZjFICRbcAxTNE0F2Jr4uOydvcAOw4EIIRmb9NWUSPf/bGZAA+4SEXmxmjUA==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@wdio/repl": { "version": "9.4.4", @@ -10626,6 +10653,7 @@ "integrity": "sha512-kchPRhoG/pCn4KhHGiL/ocNhdpR8OkD2e6sANlSUZ4TGBVi86YSIEjc2yXUwLacHknC/EnQk/SFnqd4MsNjGGg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/node": "^20.1.0" }, @@ -10943,6 +10971,7 @@ "integrity": "sha512-JfI4CxBRQCOgToJeQNaZLv+wYNIGyJG1gqrpxUOvkrJvBgdOAmIu3dzlcKP/WviXlcxvwLQF2FK8bQVTjHv0fQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@puppeteer/browsers": "^2.2.0", "@wdio/logger": "9.4.4", @@ -10968,6 +10997,7 @@ "integrity": "sha512-WzZhaN834du9wjqT/Go9qPyB7VkzV2bjr6pr06DrIzxIpJq/snWOv96C6OjJu8nmYNRjV769mAxyggBUf+sUoQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/node": "^20.1.0" }, @@ -11129,7 +11159,6 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -11597,6 +11626,7 @@ "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=0.12.0" } @@ -12352,7 +12382,6 @@ "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz", "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==", "license": "Apache-2.0", - "peer": true, "peerDependencies": { "bare-abort-controller": "*" }, @@ -12473,7 +12502,6 @@ "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.1.5.tgz", "integrity": "sha512-lNImB5KLN+ggw+SYDYvqf/yCizXIyq8U/nWBlx7m4pc4TKS24SB/1WWskzGacon5cVVAC6qUzCYzI/aMYCf4Ng==", "license": "Apache-2.0", - "peer": true, "dependencies": { "bare-path": "^3.0.0" } @@ -12600,7 +12628,6 @@ "integrity": "sha512-EwhOpyXiOEL/lKzHz9AW1msWFNzGc/z+LzeB3/jnFJpxu+th2yqvzsSWas1v9jgs9+xiXJcD5A8CJxAG2TaghQ==", "hasInstallScript": true, "license": "MIT", - "peer": true, "dependencies": { "bindings": "^1.5.0", "prebuild-install": "^7.1.1" @@ -12888,7 +12915,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "caniuse-lite": "^1.0.30001726", "electron-to-chromium": "^1.5.173", @@ -13446,6 +13472,7 @@ "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "readdirp": "^4.0.1" }, @@ -13829,7 +13856,6 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.2.tgz", "integrity": "sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==", "license": "MIT", - "peer": true, "engines": { "node": ">=20" } @@ -15806,6 +15832,7 @@ "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", "dev": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "jake": "^10.8.5" }, @@ -16101,6 +16128,7 @@ "dev": true, "hasInstallScript": true, "license": "MIT", + "peer": true, "bin": { "esbuild": "bin/esbuild" }, @@ -16200,7 +16228,6 @@ "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -17020,7 +17047,6 @@ "integrity": "sha512-FU+96C0nqeYTXrJcGLUDB6hPKKaSm1/tVHjFDE4EDHGCYvajAHCC2MBQJ5MomjCmp6lGMz36lDHeZj52LHylyA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@vitest/snapshot": "^3.2.4", "expect": "^30.0.0", @@ -17341,7 +17367,6 @@ "resolved": "https://registry.npmjs.org/expo/-/expo-54.0.33.tgz", "integrity": "sha512-3yOEfAKqo+gqHcV8vKcnq0uA5zxlohnhA3fu4G43likN8ct5ZZ3LjAh9wDdKteEkoad3tFPvwxmXW711S5OHUw==", "license": "MIT", - "peer": true, "dependencies": { "@babel/runtime": "^7.20.0", "@expo/cli": "54.0.23", @@ -17394,7 +17419,6 @@ "resolved": "https://registry.npmjs.org/expo-application/-/expo-application-7.0.8.tgz", "integrity": "sha512-qFGyxk7VJbrNOQWBbE09XUuGuvkOgFS9QfToaK2FdagM2aQ+x3CvGV2DuVgl/l4ZxPgIf3b/MNh9xHpwSwn74Q==", "license": "MIT", - "peer": true, "peerDependencies": { "expo": "*" } @@ -17404,7 +17428,6 @@ "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-12.0.12.tgz", "integrity": "sha512-CsXFCQbx2fElSMn0lyTdRIyKlSXOal6ilLJd+yeZ6xaC7I9AICQgscY5nj0QcwgA+KYYCCEQEBndMsmj7drOWQ==", "license": "MIT", - "peer": true, "dependencies": { "@expo/image-utils": "^0.8.8", "expo-constants": "~18.0.12" @@ -17566,7 +17589,6 @@ "resolved": "https://registry.npmjs.org/expo-device/-/expo-device-8.0.10.tgz", "integrity": "sha512-jd5BxjaF7382JkDMaC+P04aXXknB2UhWaVx5WiQKA05ugm/8GH5uaz9P9ckWdMKZGQVVEOC8MHaUADoT26KmFA==", "license": "MIT", - "peer": true, "dependencies": { "ua-parser-js": "^0.7.33" }, @@ -17588,7 +17610,6 @@ "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-19.0.21.tgz", "integrity": "sha512-s3DlrDdiscBHtab/6W1osrjGL+C2bvoInPJD7sOwmxfJ5Woynv2oc+Fz1/xVXaE/V7HE/+xrHC/H45tu6lZzzg==", "license": "MIT", - "peer": true, "peerDependencies": { "expo": "*", "react-native": "*" @@ -17599,7 +17620,6 @@ "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-14.0.11.tgz", "integrity": "sha512-ga0q61ny4s/kr4k8JX9hVH69exVSIfcIc19+qZ7gt71Mqtm7xy2c6kwsPTCyhBW2Ro5yXTT8EaZOpuRi35rHbg==", "license": "MIT", - "peer": true, "dependencies": { "fontfaceobserver": "^2.1.0" }, @@ -17668,7 +17688,6 @@ "resolved": "https://registry.npmjs.org/expo-localization/-/expo-localization-17.0.8.tgz", "integrity": "sha512-UrdwklZBDJ+t+ZszMMiE0SXZ2eJxcquCuQcl6EvGHM9K+e6YqKVRQ+w8qE+iIB3H75v2RJy6MHAaLK+Mqeo04g==", "license": "MIT", - "peer": true, "dependencies": { "rtl-detect": "^1.0.2" }, @@ -18723,6 +18742,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "node-domexception": "^1.0.0", "web-streams-polyfill": "^3.0.3" @@ -18772,6 +18792,7 @@ "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", "dev": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "minimatch": "^5.0.1" } @@ -18782,6 +18803,7 @@ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "balanced-match": "^1.0.0" } @@ -18792,6 +18814,7 @@ "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "license": "ISC", + "peer": true, "dependencies": { "brace-expansion": "^2.0.1" }, @@ -19187,6 +19210,7 @@ "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "fetch-blob": "^3.1.2" }, @@ -19307,6 +19331,7 @@ "dev": true, "hasInstallScript": true, "license": "MIT", + "peer": true, "dependencies": { "@wdio/logger": "^9.1.3", "@zip.js/zip.js": "^2.7.53", @@ -19330,6 +19355,7 @@ "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">= 14" } @@ -19340,6 +19366,7 @@ "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">= 12" } @@ -19350,6 +19377,7 @@ "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "agent-base": "^7.1.2", "debug": "4" @@ -19364,6 +19392,7 @@ "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", "dev": true, "license": "ISC", + "peer": true, "engines": { "node": ">=16" } @@ -19374,6 +19403,7 @@ "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "data-uri-to-buffer": "^4.0.0", "fetch-blob": "^3.1.4", @@ -19393,6 +19423,7 @@ "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", "dev": true, "license": "ISC", + "peer": true, "dependencies": { "isexe": "^3.1.1" }, @@ -19576,6 +19607,7 @@ "integrity": "sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "resolve-pkg-maps": "^1.0.0" }, @@ -20176,7 +20208,8 @@ "resolved": "https://registry.npmjs.org/htmlfy/-/htmlfy-0.6.7.tgz", "integrity": "sha512-r8hRd+oIM10lufovN+zr3VKPTYEIvIwqXGucidh2XQufmiw6sbUXFUFjWlfjo3AnefIDTyzykVzQ8IUVuT1peQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/htmlparser2": { "version": "9.1.0", @@ -20574,6 +20607,7 @@ "integrity": "sha512-CmLAZT65GG/v30c+D2Fk8+ceP6pxD6RL+hIUOWAltCmeyEqWYwqu9v76q03OvjyZ3AB0C1Ala2stn1z/rMqGEw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@inquirer/core": "^9.2.1", "@inquirer/prompts": "^6.0.1", @@ -21195,6 +21229,7 @@ "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", "dev": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "async": "^3.2.3", "chalk": "^4.0.2", @@ -21214,7 +21249,6 @@ "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@jest/core": "^29.7.0", "@jest/types": "^29.6.3", @@ -22385,7 +22419,6 @@ "integrity": "sha512-B7qPcEVE3NVkmSJbaYxvv4cHkVW7DQsZz13pUMrfS8z8Q/BuShN+gcTXrUlPiGqM2/t/EEaI030bpxMqY8gMlw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 10.16.0" } @@ -23323,7 +23356,8 @@ "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/lodash.isequal": { "version": "4.5.0", @@ -23344,7 +23378,8 @@ "resolved": "https://registry.npmjs.org/lodash.pickby/-/lodash.pickby-4.6.0.tgz", "integrity": "sha512-AZV+GsS/6ckvPOVQPXSiFFacKvKB4kOQu6ynt9wz0F3LO4R9Ij4K1ddYsIytDpSgLz88JHd9P+oaLeej5/Sl7Q==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/lodash.throttle": { "version": "4.1.1", @@ -23357,7 +23392,8 @@ "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/lodash.zip": { "version": "4.2.0", @@ -27241,7 +27277,8 @@ "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", "dev": true, - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/pause-stream": { "version": "0.0.11", @@ -28313,7 +28350,6 @@ "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -28413,7 +28449,6 @@ "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.81.5.tgz", "integrity": "sha512-1w+/oSjEXZjMqsIvmkCRsOc8UBYv163bTWKTI8+1mxztvQPhCRYGTvZ/PL1w16xXHneIj/SLGfxWg2GWN2uexw==", "license": "MIT", - "peer": true, "dependencies": { "@jest/create-cache-key-function": "^29.7.0", "@react-native/assets-registry": "0.81.5", @@ -28489,7 +28524,6 @@ "resolved": "https://registry.npmjs.org/react-native-device-info/-/react-native-device-info-15.0.1.tgz", "integrity": "sha512-U5waZRXtT3l1SgZpZMlIvMKPTkFZPH8W7Ks6GrJhdH723aUIPxjVer7cRSij1mvQdOAAYFJV/9BDzlC8apG89A==", "license": "MIT", - "peer": true, "peerDependencies": { "react-native": "*" } @@ -28515,7 +28549,6 @@ "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.30.0.tgz", "integrity": "sha512-5YsnKHGa0X9C8lb5oCnKm0fLUPM6CRduvUUw2Bav4RIj/C3HcFh4RIUnF8wgG6JQWCL1//gRx4v+LVWgcIQdGA==", "license": "MIT", - "peer": true, "dependencies": { "@egjs/hammerjs": "^2.0.17", "hoist-non-react-statics": "^3.3.0", @@ -28565,7 +28598,6 @@ "resolved": "https://registry.npmjs.org/react-native-nitro-modules/-/react-native-nitro-modules-0.32.1.tgz", "integrity": "sha512-V+Vy76e4fxRxgVGu5Uh3cBPvuFQW8fM1OUKk1mqEA/JawjhX+hxHtBhpfuvNjV0BnV/uXCIg8/eK+rTpB6tqFg==", "license": "MIT", - "peer": true, "peerDependencies": { "react": "*", "react-native": "*" @@ -28588,7 +28620,6 @@ "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-3.19.5.tgz", "integrity": "sha512-bd4AwIkBAaY4BjrgpSoKjEaRG/tXD756F5nGuiH5IMBSKN8tRdUEA8hWZCyIo/R6/kha/tVSoCqodVUACh7ZWw==", "license": "MIT", - "peer": true, "dependencies": { "@babel/plugin-transform-arrow-functions": "^7.0.0-0", "@babel/plugin-transform-class-properties": "^7.0.0-0", @@ -28624,7 +28655,6 @@ "resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-5.6.2.tgz", "integrity": "sha512-4XGqMNj5qjUTYywJqpdWZ9IG8jgkS3h06sfVjfw5yZQZfWnRFXczi0GnYyFyCc2EBps/qFmoCH8fez//WumdVg==", "license": "MIT", - "peer": true, "peerDependencies": { "react": "*", "react-native": "*" @@ -28644,7 +28674,6 @@ "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-4.23.0.tgz", "integrity": "sha512-XhO3aK0UeLpBn4kLecd+J+EDeRRJlI/Ro9Fze06vo1q163VeYtzfU9QS09/VyDFMWR1qxDC1iazCArTPSFFiPw==", "license": "MIT", - "peer": true, "dependencies": { "react-freeze": "^1.0.0", "warn-once": "^0.1.0" @@ -28668,7 +28697,6 @@ "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-15.15.3.tgz", "integrity": "sha512-/k4KYwPBLGcx2f5d4FjE+vCScK7QOX14cl2lIASJ28u4slHHtIhL0SZKU7u9qmRBHxTCKPoPBtN6haT1NENJNA==", "license": "MIT", - "peer": true, "dependencies": { "css-select": "^5.1.0", "css-tree": "^1.1.3", @@ -28930,7 +28958,6 @@ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -28941,7 +28968,6 @@ "integrity": "sha512-jXkSl3CpvPYEF+p/eGDLB4sPoDX8pKkYvRl9+rR8HxLY0X04vW7hCm1/0zHoUSjPZ3bDa+wXWNTDVIw/R8aDVw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "react-is": "^19.1.0", "scheduler": "^0.26.0" @@ -28963,6 +28989,7 @@ "integrity": "sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/normalize-package-data": "^2.4.1", "normalize-package-data": "^6.0.0", @@ -28982,6 +29009,7 @@ "integrity": "sha512-aNtBq4jR8NawpKJQldrQcSW9y/d+KWH4v24HWkHljOZ7H0av+YTGANBzRh9A5pw7v/bLVsLVPpOhJ7gHNVy8lA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "find-up": "^6.3.0", "read-pkg": "^8.1.0", @@ -29000,6 +29028,7 @@ "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "locate-path": "^7.1.0", "path-exists": "^5.0.0" @@ -29017,6 +29046,7 @@ "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "p-locate": "^6.0.0" }, @@ -29033,6 +29063,7 @@ "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "yocto-queue": "^1.0.0" }, @@ -29049,6 +29080,7 @@ "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "p-limit": "^4.0.0" }, @@ -29065,6 +29097,7 @@ "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } @@ -29075,6 +29108,7 @@ "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=12.20" }, @@ -29088,6 +29122,7 @@ "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", "dev": true, "license": "ISC", + "peer": true, "dependencies": { "lru-cache": "^10.0.1" }, @@ -29101,6 +29136,7 @@ "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -29111,6 +29147,7 @@ "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } @@ -29120,7 +29157,8 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, - "license": "ISC" + "license": "ISC", + "peer": true }, "node_modules/read-pkg/node_modules/normalize-package-data": { "version": "6.0.2", @@ -29128,6 +29166,7 @@ "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", "dev": true, "license": "BSD-2-Clause", + "peer": true, "dependencies": { "hosted-git-info": "^7.0.0", "semver": "^7.3.5", @@ -29143,6 +29182,7 @@ "integrity": "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "^7.21.4", "error-ex": "^1.3.2", @@ -29163,6 +29203,7 @@ "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", "dev": true, "license": "(MIT OR CC0-1.0)", + "peer": true, "engines": { "node": ">=14.16" }, @@ -29226,6 +29267,7 @@ "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">= 14.18.0" }, @@ -29287,6 +29329,7 @@ "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "minimatch": "^3.0.5" }, @@ -29603,6 +29646,7 @@ "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", "dev": true, "license": "MIT", + "peer": true, "funding": { "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } @@ -29849,6 +29893,7 @@ "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=0.12.0" } @@ -29918,6 +29963,7 @@ "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", "dev": true, "license": "Apache-2.0", + "peer": true, "dependencies": { "tslib": "^2.1.0" } @@ -31428,7 +31474,6 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", "license": "MIT", - "peer": true, "engines": { "node": ">=18" } @@ -32179,6 +32224,7 @@ "integrity": "sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=14.0.0" } @@ -32359,6 +32405,7 @@ "integrity": "sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "esbuild": "~0.25.0", "get-tsconfig": "^4.7.5" @@ -32465,7 +32512,6 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "devOptional": true, "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -32803,7 +32849,6 @@ "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz", "integrity": "sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==", "license": "MIT", - "peer": true, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } @@ -33000,6 +33045,7 @@ "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">= 8" } @@ -33190,7 +33236,6 @@ "integrity": "sha512-7teaXajOuNdn2UyyKlqMLssJjf0vDEih+Lo+tE/gHOt/P+mB8CinZym4PGtsriZLcyt4xV+Cun3hDmXM+pL26A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/node": "^20.11.30", "@types/sinonjs__fake-timers": "^8.1.5", @@ -34330,7 +34375,6 @@ "integrity": "sha512-OhpzAmVzabPOL6C3A3gpAifqr9MqihV/Msx3gor2b2kviCgcb+HM9SEOpMWwwNp9MRunWnhtAKUoo0AHhjyPPg==", "dev": true, "license": "MIT", - "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } diff --git a/package.json b/package.json index 4f2d401624..ec0240eba8 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "test:e2e:build": "npm run build:android:e2e && npm run test:e2e:nobuild" }, "dependencies": { - "@comapeo/core-react": "11.0.2", + "@comapeo/core-react": "11.0.3", "@comapeo/ipc": "8.0.0", "@comapeo/nodejs-mobile-react-native": "18.20.4-2", "@expo-google-fonts/rubik": "0.4.2", diff --git a/src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx b/src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx index eb7fc8b562..3eecd54eb6 100644 --- a/src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx +++ b/src/frontend/screens/BackgroundMaps/BackgroundMaps.tsx @@ -4,6 +4,7 @@ import {defineMessages, useIntl, type MessageDescriptor} from 'react-intl'; import {ScrollView, StyleSheet, View} from 'react-native'; import MaterialIcon from '@react-native-vector-icons/material-icons'; import {File} from 'expo-file-system'; +import {UIActivityIndicator} from 'react-native-indicators'; import {FILE_SELECT_MUTATION_KEY} from '../../hooks/files'; import { @@ -160,7 +161,12 @@ export function BackgroundMapsScreen() { }); const importCustomMapMutation = useImportCustomMapFile(); const removeCustomMapMutation = useRemoveCustomMapFile(); - const {data: customMapInfo, isRefetching, error} = useGetCustomMapInfo(); + const { + data: customMapInfo, + isRefetching, + status: mapInfoStatus, + error: mapInfoError, + } = useGetCustomMapInfo(); const handleChooseFile = () => { selectFileMutation.mutate(undefined, { @@ -193,11 +199,11 @@ export function BackgroundMapsScreen() { return ( <> - {isRefetching ? ( - - ) : error || !customMapInfo ? ( + {isRefetching || mapInfoStatus === 'pending' ? ( + + ) : mapInfoStatus !== 'success' || !customMapInfo ? ( { @@ -241,7 +247,7 @@ function NoMapScreen({ {isUploading ? ( - + ) : ( ) { return ( - navigation.goBack()} /> + navigation.replace('BackgroundMaps')} /> ); } diff --git a/src/frontend/screens/BackgroundMaps/ReceivingBackgroundMap.tsx b/src/frontend/screens/BackgroundMaps/ReceivingBackgroundMap.tsx index 9f98801891..b1dcfaa31d 100644 --- a/src/frontend/screens/BackgroundMaps/ReceivingBackgroundMap.tsx +++ b/src/frontend/screens/BackgroundMaps/ReceivingBackgroundMap.tsx @@ -22,6 +22,7 @@ import {usePreventAndroidBackButton} from '../../hooks/usePreventAndroidBackButt import {SecondaryButton} from '../../sharedComponents/Buttons'; import {IconTitleDescription} from '../../sharedComponents/IconTitleDescription'; import {ReceivingMapProgressBar} from './ReceivingMapProgressBar'; +import {Loading} from '../../sharedComponents/Loading'; import {VERY_LIGHT_GREY, NEW_DARK_GREY, COMAPEO_BLUE} from '../../lib/styles'; const m = defineMessages({ @@ -50,26 +51,29 @@ export function ReceivingBackgroundMap({ const {formatMessage: t} = useIntl(); const {shareId} = route.params; const {mutate: abortDownload} = useAbortReceivedMapShareDownload(); + const [abortPending, setAbortPending] = React.useState(false); const mapShare = useSingleReceivedMapShare({shareId}); usePreventAndroidBackButton(); useKeepAwake(); const handleCancel = React.useCallback(() => { + setAbortPending(true); abortDownload( {shareId}, { onSuccess: () => { - navigation.popTo('BackgroundMaps'); + navigation.goBack(); }, onError: (err: unknown) => { + setAbortPending(false); const code = getErrorCode(err); if ( code === MapShareErrorCode.MAP_SHARE_CANCELED || code === MapShareErrorCode.INVALID_STATUS_TRANSITION || code === MapShareErrorCode.MAP_SHARE_NOT_FOUND ) { - navigation.popTo('BackgroundMaps'); + navigation.goBack(); return; } const error = toError(err, 'Failed to cancel map download'); @@ -81,12 +85,16 @@ export function ReceivingBackgroundMap({ }, }, ); - }, [abortDownload, shareId, navigation]); + }, [abortDownload, shareId, navigation, setAbortPending]); const handleDone = () => { - navigation.popTo('BackgroundMaps'); + navigation.goBack(); }; + if (abortPending) { + return ; + } + if (mapShare.status === 'canceled') { return ; } diff --git a/src/frontend/screens/BackgroundMaps/ReplaceBackgroundMap.tsx b/src/frontend/screens/BackgroundMaps/ReplaceBackgroundMap.tsx index fecb8a9c34..6a92313fba 100644 --- a/src/frontend/screens/BackgroundMaps/ReplaceBackgroundMap.tsx +++ b/src/frontend/screens/BackgroundMaps/ReplaceBackgroundMap.tsx @@ -88,7 +88,7 @@ export function ReplaceBackgroundMap({ {shareId, reason: 'user_rejected'}, { onSuccess: () => { - navigation.popTo('BackgroundMaps'); + navigation.goBack(); }, onError: (err: unknown) => { const code = getErrorCode(err); diff --git a/src/frontend/screens/BackgroundMaps/SendingBackgroundMap.tsx b/src/frontend/screens/BackgroundMaps/SendingBackgroundMap.tsx index d46a4f5308..fd8b810961 100644 --- a/src/frontend/screens/BackgroundMaps/SendingBackgroundMap.tsx +++ b/src/frontend/screens/BackgroundMaps/SendingBackgroundMap.tsx @@ -21,6 +21,7 @@ import {HeaderText} from '../../sharedComponents/Text/HeaderText'; import {BodyText} from '../../sharedComponents/Text/BodyText'; import {type NativeRootNavigationProps} from '../../sharedTypes/navigation'; import {TextButton} from '../../sharedComponents/TextButton'; +import {Loading} from '../../sharedComponents/Loading'; import {SecondaryButton} from '../../sharedComponents/Buttons'; import {IconTitleDescription} from '../../sharedComponents/IconTitleDescription'; import {toError} from '../../utils/errors'; @@ -81,7 +82,8 @@ export function SendingBackgroundMap({ const {shareId} = route.params; const mapShare = useSingleSentMapShare({shareId}); - const {mutate: cancelMapShare} = useCancelSentMapShare(); + const {mutate: cancelMapShare, status: cancelStatus} = + useCancelSentMapShare(); const currentTime = useCurrentTime(1000); useKeepAwake(); @@ -182,6 +184,10 @@ export function SendingBackgroundMap({ return ; } + if (cancelStatus === 'pending') { + return ; + } + return ( From 73db938c28b95a200e6c2fd50f70d9fc4737e169 Mon Sep 17 00:00:00 2001 From: Cindy Green Date: Tue, 7 Apr 2026 18:40:49 -0400 Subject: [PATCH 65/72] Uses pending status and idle status correctly. --- .../BackgroundMaps/ReceivingBackgroundMap.tsx | 12 +++++------- .../screens/BackgroundMaps/SendingBackgroundMap.tsx | 2 +- 2 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/frontend/screens/BackgroundMaps/ReceivingBackgroundMap.tsx b/src/frontend/screens/BackgroundMaps/ReceivingBackgroundMap.tsx index b1dcfaa31d..444bffc8f3 100644 --- a/src/frontend/screens/BackgroundMaps/ReceivingBackgroundMap.tsx +++ b/src/frontend/screens/BackgroundMaps/ReceivingBackgroundMap.tsx @@ -50,15 +50,14 @@ export function ReceivingBackgroundMap({ }: NativeRootNavigationProps<'ReceivingBackgroundMap'>) { const {formatMessage: t} = useIntl(); const {shareId} = route.params; - const {mutate: abortDownload} = useAbortReceivedMapShareDownload(); - const [abortPending, setAbortPending] = React.useState(false); + const {mutate: abortDownload, status: abortStatus} = + useAbortReceivedMapShareDownload(); const mapShare = useSingleReceivedMapShare({shareId}); usePreventAndroidBackButton(); useKeepAwake(); const handleCancel = React.useCallback(() => { - setAbortPending(true); abortDownload( {shareId}, { @@ -66,7 +65,6 @@ export function ReceivingBackgroundMap({ navigation.goBack(); }, onError: (err: unknown) => { - setAbortPending(false); const code = getErrorCode(err); if ( code === MapShareErrorCode.MAP_SHARE_CANCELED || @@ -85,13 +83,13 @@ export function ReceivingBackgroundMap({ }, }, ); - }, [abortDownload, shareId, navigation, setAbortPending]); + }, [abortDownload, shareId, navigation]); const handleDone = () => { navigation.goBack(); }; - if (abortPending) { + if (abortStatus === 'idle' || abortStatus === 'pending') { return ; } @@ -112,7 +110,7 @@ export function ReceivingBackgroundMap({ } if (mapShare.status === 'completed') { - return ; + return navigation.replace('BackgroundMaps')} />; } return ( diff --git a/src/frontend/screens/BackgroundMaps/SendingBackgroundMap.tsx b/src/frontend/screens/BackgroundMaps/SendingBackgroundMap.tsx index fd8b810961..a3b376a273 100644 --- a/src/frontend/screens/BackgroundMaps/SendingBackgroundMap.tsx +++ b/src/frontend/screens/BackgroundMaps/SendingBackgroundMap.tsx @@ -184,7 +184,7 @@ export function SendingBackgroundMap({ return ; } - if (cancelStatus === 'pending') { + if (cancelStatus === 'idle' || cancelStatus === 'pending') { return ; } From dd5a6b60353c6754a7bccf4fde5be4e8d53417fa Mon Sep 17 00:00:00 2001 From: Cindy Green Date: Tue, 7 Apr 2026 18:52:08 -0400 Subject: [PATCH 66/72] SHould not have used idle --- src/frontend/screens/BackgroundMaps/ReceivingBackgroundMap.tsx | 2 +- src/frontend/screens/BackgroundMaps/SendingBackgroundMap.tsx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/frontend/screens/BackgroundMaps/ReceivingBackgroundMap.tsx b/src/frontend/screens/BackgroundMaps/ReceivingBackgroundMap.tsx index 444bffc8f3..c6273cafad 100644 --- a/src/frontend/screens/BackgroundMaps/ReceivingBackgroundMap.tsx +++ b/src/frontend/screens/BackgroundMaps/ReceivingBackgroundMap.tsx @@ -89,7 +89,7 @@ export function ReceivingBackgroundMap({ navigation.goBack(); }; - if (abortStatus === 'idle' || abortStatus === 'pending') { + if (abortStatus === 'pending') { return ; } diff --git a/src/frontend/screens/BackgroundMaps/SendingBackgroundMap.tsx b/src/frontend/screens/BackgroundMaps/SendingBackgroundMap.tsx index a3b376a273..fd8b810961 100644 --- a/src/frontend/screens/BackgroundMaps/SendingBackgroundMap.tsx +++ b/src/frontend/screens/BackgroundMaps/SendingBackgroundMap.tsx @@ -184,7 +184,7 @@ export function SendingBackgroundMap({ return ; } - if (cancelStatus === 'idle' || cancelStatus === 'pending') { + if (cancelStatus === 'pending') { return ; } From 19a72dd8fd996f6a0d981271eefedbcdf2228330 Mon Sep 17 00:00:00 2001 From: Cindy Green Date: Wed, 8 Apr 2026 11:01:22 -0400 Subject: [PATCH 67/72] Some cleanup. --- .../BackgroundMaps/MapReceivedBottomSheet.tsx | 5 ++++- .../BackgroundMaps/ReplaceBackgroundMap.tsx | 7 ------- .../BackgroundMaps/SendingBackgroundMap.tsx | 18 ++++-------------- 3 files changed, 8 insertions(+), 22 deletions(-) diff --git a/src/frontend/screens/BackgroundMaps/MapReceivedBottomSheet.tsx b/src/frontend/screens/BackgroundMaps/MapReceivedBottomSheet.tsx index cf243ff990..8bf6295a8a 100644 --- a/src/frontend/screens/BackgroundMaps/MapReceivedBottomSheet.tsx +++ b/src/frontend/screens/BackgroundMaps/MapReceivedBottomSheet.tsx @@ -151,7 +151,10 @@ export function MapReceivedBottomSheet({ onError: (err: unknown) => { const error = toError(err, 'Failed to start map download'); Sentry.captureException(error); - navigation.replace('ErrorBottomSheet', {error}); + navigation.replace('BackgroundMapErrorBottomSheet', { + title: error.message, + description: error.message, + }); }, }, ); diff --git a/src/frontend/screens/BackgroundMaps/ReplaceBackgroundMap.tsx b/src/frontend/screens/BackgroundMaps/ReplaceBackgroundMap.tsx index 6a92313fba..9310464079 100644 --- a/src/frontend/screens/BackgroundMaps/ReplaceBackgroundMap.tsx +++ b/src/frontend/screens/BackgroundMaps/ReplaceBackgroundMap.tsx @@ -14,11 +14,9 @@ import {VERY_LIGHT_GREY, RED, NEW_DARK_GREY} from '../../lib/styles'; import { useDeclineReceivedMapShare, useDownloadReceivedMapShare, - useSingleReceivedMapShare, getErrorCode, MapShareErrorCode, } from '@comapeo/core-react'; -import {MapShareCanceled} from '../../sharedComponents/MapShareCanceled'; import * as Sentry from '@sentry/react-native'; import {toError} from '../../utils/errors'; @@ -48,14 +46,9 @@ export function ReplaceBackgroundMap({ }: NativeRootNavigationProps<'ReplaceBackgroundMap'>) { const {formatMessage: t} = useIntl(); const {shareId} = route.params; - const mapShare = useSingleReceivedMapShare({shareId}); const {mutate: declineMapShare} = useDeclineReceivedMapShare(); const {mutate: downloadMapShare} = useDownloadReceivedMapShare(); - if (mapShare.status === 'canceled') { - return navigation.goBack()} />; - } - const handleReplace = () => { downloadMapShare( {shareId}, diff --git a/src/frontend/screens/BackgroundMaps/SendingBackgroundMap.tsx b/src/frontend/screens/BackgroundMaps/SendingBackgroundMap.tsx index fd8b810961..f18ee22aac 100644 --- a/src/frontend/screens/BackgroundMaps/SendingBackgroundMap.tsx +++ b/src/frontend/screens/BackgroundMaps/SendingBackgroundMap.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import {AppState, StyleSheet, View, Pressable} from 'react-native'; +import {StyleSheet, View, Pressable} from 'react-native'; import {defineMessages, useIntl} from 'react-intl'; import * as Sentry from '@sentry/react-native'; import MaterialIcon from '@react-native-vector-icons/material-icons'; @@ -120,16 +120,6 @@ export function SendingBackgroundMap({ ); }, [navigation, cancelMapShare, shareId]); - React.useEffect(() => { - const subscription = AppState.addEventListener('change', nextState => { - if (nextState === 'background') { - cancelShare(); - } - }); - - return () => subscription.remove(); - }, [cancelShare]); - const handleClose = () => { navigation.goBack(); }; @@ -171,16 +161,16 @@ export function SendingBackgroundMap({ ); } - if (mapShare?.status === 'declined') { + if (mapShare.status === 'declined') { const reason = (mapShare as {reason?: string}).reason; return ; } - if (mapShare?.status === 'downloading') { + if (mapShare.status === 'downloading') { return ; } - if (mapShare?.status === 'completed') { + if (mapShare.status === 'completed') { return ; } From e62e39cafa694bc4b94669fa99ed49544420e26d Mon Sep 17 00:00:00 2001 From: Cindy Green Date: Thu, 9 Apr 2026 17:09:22 -0400 Subject: [PATCH 68/72] Updates comapeo-core-react because of invite bug. --- package-lock.json | 160 +++++++++++++++++----------------------------- package.json | 2 +- 2 files changed, 59 insertions(+), 103 deletions(-) diff --git a/package-lock.json b/package-lock.json index b6796f17c5..4710629b80 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "1.11.0-pre", "hasInstallScript": true, "dependencies": { - "@comapeo/core-react": "11.0.3", + "@comapeo/core-react": "11.0.4", "@comapeo/ipc": "8.0.0", "@comapeo/nodejs-mobile-react-native": "18.20.4-2", "@expo-google-fonts/rubik": "0.4.2", @@ -230,6 +230,7 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", "license": "MIT", + "peer": true, "dependencies": { "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.5", @@ -2657,6 +2658,7 @@ "resolved": "https://registry.npmjs.org/@comapeo/core/-/core-7.0.1.tgz", "integrity": "sha512-og7ka/bbnHh6CdKFnF0SECZT/Urv/m9bG133owd1t3o8slKP25h6oxPJt9X2HgeBAP3ggybdBluynQDbHqFLQA==", "license": "MIT", + "peer": true, "dependencies": { "@comapeo/fallback-smp": "^1.0.0", "@comapeo/schema": "2.2.0", @@ -2723,9 +2725,9 @@ } }, "node_modules/@comapeo/core-react": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@comapeo/core-react/-/core-react-11.0.3.tgz", - "integrity": "sha512-vasml3qFLyRTzmULiwOu6XPIQVtOoAjfoQiK3HGL9MTWkhHA996wDtjatll+bsQUCJDOvMrlkxxooxv5IuJZ2A==", + "version": "11.0.4", + "resolved": "https://registry.npmjs.org/@comapeo/core-react/-/core-react-11.0.4.tgz", + "integrity": "sha512-lw+IbmyD4ESJ80L1h8nMEClKr5tFVz1JqMkgGoW2Q7pXt6RmzDwfzbWZRtha5x55tWtOxO99Ev8QsMUPeJXZJA==", "license": "MIT", "dependencies": { "@comapeo/map-server": "^1.1.0", @@ -2799,6 +2801,7 @@ "resolved": "https://registry.npmjs.org/@comapeo/ipc/-/ipc-8.0.0.tgz", "integrity": "sha512-kzlcoB0fXj/w1CZxqp9rK86LKqeYSJ3dwh+I7TT1EzjNd9y66iXIviuwjuIb2hcNjT6BWv4pyvUfC9DWc1xIVQ==", "license": "MIT", + "peer": true, "dependencies": { "eventemitter3": "^5.0.4", "p-defer": "^4.0.1", @@ -2967,6 +2970,7 @@ "resolved": "https://registry.npmjs.org/@comapeo/schema/-/schema-2.2.0.tgz", "integrity": "sha512-SbD/Q0BsirAFSj2LETqwgyx/Om62lUVT3R05k9vK5Ld+u+VNn1Xsg2nRblf6Xh9mP1U3rBYJvjjuYQ1lPUYmLA==", "license": "MIT", + "peer": true, "dependencies": { "@comapeo/geometry": "^1.1.1", "compact-encoding": "^2.12.0", @@ -3066,7 +3070,6 @@ "os": [ "aix" ], - "peer": true, "engines": { "node": ">=18" } @@ -3084,7 +3087,6 @@ "os": [ "android" ], - "peer": true, "engines": { "node": ">=18" } @@ -3102,7 +3104,6 @@ "os": [ "android" ], - "peer": true, "engines": { "node": ">=18" } @@ -3120,7 +3121,6 @@ "os": [ "android" ], - "peer": true, "engines": { "node": ">=18" } @@ -3138,7 +3138,6 @@ "os": [ "darwin" ], - "peer": true, "engines": { "node": ">=18" } @@ -3156,7 +3155,6 @@ "os": [ "darwin" ], - "peer": true, "engines": { "node": ">=18" } @@ -3174,7 +3172,6 @@ "os": [ "freebsd" ], - "peer": true, "engines": { "node": ">=18" } @@ -3192,7 +3189,6 @@ "os": [ "freebsd" ], - "peer": true, "engines": { "node": ">=18" } @@ -3210,7 +3206,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -3228,7 +3223,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -3246,7 +3240,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -3264,7 +3257,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -3282,7 +3274,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -3300,7 +3291,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -3318,7 +3308,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -3336,7 +3325,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -3354,7 +3342,6 @@ "os": [ "linux" ], - "peer": true, "engines": { "node": ">=18" } @@ -3372,7 +3359,6 @@ "os": [ "netbsd" ], - "peer": true, "engines": { "node": ">=18" } @@ -3390,7 +3376,6 @@ "os": [ "netbsd" ], - "peer": true, "engines": { "node": ">=18" } @@ -3408,7 +3393,6 @@ "os": [ "openbsd" ], - "peer": true, "engines": { "node": ">=18" } @@ -3426,7 +3410,6 @@ "os": [ "openbsd" ], - "peer": true, "engines": { "node": ">=18" } @@ -3444,7 +3427,6 @@ "os": [ "sunos" ], - "peer": true, "engines": { "node": ">=18" } @@ -3462,7 +3444,6 @@ "os": [ "win32" ], - "peer": true, "engines": { "node": ">=18" } @@ -3480,7 +3461,6 @@ "os": [ "win32" ], - "peer": true, "engines": { "node": ">=18" } @@ -3498,7 +3478,6 @@ "os": [ "win32" ], - "peer": true, "engines": { "node": ">=18" } @@ -7332,6 +7311,7 @@ "resolved": "https://registry.npmjs.org/@react-navigation/native/-/native-7.1.28.tgz", "integrity": "sha512-d1QDn+KNHfHGt3UIwOZvupvdsDdiHYZBEj7+wL2yDVo3tMezamYy60H9s3EnNVE1Ae1ty0trc7F2OKqo/RmsdQ==", "license": "MIT", + "peer": true, "dependencies": { "@react-navigation/core": "^7.14.0", "escape-string-regexp": "^4.0.0", @@ -7795,7 +7775,8 @@ "version": "0.33.22", "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.33.22.tgz", "integrity": "sha512-auUj4k+f4pyrIVf4GW5UKquSZFHJWri06QgARy9C0t9ZTjJLIuNIrr1yl9bWcJWJ1Gz1vOvYN1D+QPaIlNMVkQ==", - "license": "MIT" + "license": "MIT", + "peer": true }, "node_modules/@sindresorhus/is": { "version": "0.14.0", @@ -8015,6 +7996,7 @@ "integrity": "sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/core": "^7.21.3", "@svgr/babel-preset": "8.1.0", @@ -8205,6 +8187,7 @@ "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.90.21.tgz", "integrity": "sha512-0Lu6y5t+tvlTJMTO7oh5NSpJfpg/5D41LlThfepTixPYkJ0sE2Jj0m0f6yYqujBwIXlId87e234+MxG3D3g7kg==", "license": "MIT", + "peer": true, "dependencies": { "@tanstack/query-core": "5.90.20" }, @@ -9469,6 +9452,7 @@ "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.7.tgz", "integrity": "sha512-MWtvHrGZLFttgeEj28VXHxpmwYbor/ATPYbBfSFZEIRK0ecCFLl2Qo55z52Hss+UV9CRN7trSeq1zbgx7YDWWg==", "license": "MIT", + "peer": true, "dependencies": { "csstype": "^3.2.2" } @@ -9619,6 +9603,7 @@ "integrity": "sha512-O7QnmOXYKVtPrfYzMolrCTfkezCJS9+ljLdKW/+DCvRsc3UAz+sbH6Xcsv7p30+0OwUbeWfUDAQE0vpabZ3QLg==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/regexpp": "^4.10.0", "@typescript-eslint/scope-manager": "8.50.0", @@ -9658,6 +9643,7 @@ "integrity": "sha512-6/cmF2piao+f6wSxUsJLZjck7OQsYyRtcOZS02k7XINSNlz93v6emM8WutDQSXnroG2xwYlEVHJI+cPA7CPM3Q==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.50.0", "@typescript-eslint/types": "8.50.0", @@ -9917,7 +9903,6 @@ "integrity": "sha512-KhRIdGV2U9HOUzxfiHmY8IFHTdqtOhIzCpd8WRdJiE7D/HUcZVD0EgQCVjm+Q9gkUXWgBvMmTtZgIG48wq7sOQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "tinyrainbow": "^1.2.0" }, @@ -9931,7 +9916,6 @@ "integrity": "sha512-oBO82rEjsxLNJincVhLhaxxZdEtV0EFHMK5Kmx5sJ6H9L183dHECjiefOAdnqpIgT5eZwT04PoggUnW88vOBNQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@vitest/pretty-format": "2.1.9", "magic-string": "^0.30.12", @@ -9947,6 +9931,7 @@ "integrity": "sha512-oOdAkwqUfW1WqpwSYJce06wvt6HljgY3fGeM9NcVA1HaYOij3mZG9Rkysn0OHuyUAGMbEbARIpsG+LPVlBJ5/Q==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@babel/parser": "^7.25.3", "@vue/shared": "3.5.13", @@ -10103,7 +10088,6 @@ "integrity": "sha512-X764hL/nHcbMTepvr7zNF/pSvb4r3twoa5lKllkIIraRDI0cg1/AKHreX24htjHpoA5OLzjEJaydQVJpZ3RzmA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/node": "^20.1.1", "@vitest/snapshot": "^2.1.1", @@ -10143,7 +10127,6 @@ "integrity": "sha512-WanmrLXRMmW3hwsXCm+x618gDsdGwkrxhiirgMC9Ny0g78qt7JLSOvAHKx+dCZtk77QwvFuNpLCd+Nxnszon9Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=18.20.0" }, @@ -10158,7 +10141,6 @@ "integrity": "sha512-WzZhaN834du9wjqT/Go9qPyB7VkzV2bjr6pr06DrIzxIpJq/snWOv96C6OjJu8nmYNRjV769mAxyggBUf+sUoQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/node": "^20.1.0" }, @@ -10172,7 +10154,6 @@ "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -10186,7 +10167,6 @@ "integrity": "sha512-2G2y++21dhj2R7iHAdd0FIzjGwuKZld+7Pl/bTU6YIkrC2ZMbVUjm+luj6A6V34Rv9XfKJDKpTWu9W4Gse1D9g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "type-fest": "^2.12.2" }, @@ -10203,7 +10183,6 @@ "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", "dev": true, "license": "(MIT OR CC0-1.0)", - "peer": true, "engines": { "node": ">=12.20" }, @@ -10217,7 +10196,6 @@ "integrity": "sha512-Alz+JiaVW15b/Qy6zSmJeYXxvmtMIVpEAg7QDfCWqG9miZSKJYWwgWE3xoSrwYn5kTylUszqb17Pb5wyrj7YFw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/node": "^20.1.0", "@types/ws": "^8.5.3", @@ -10240,7 +10218,6 @@ "integrity": "sha512-HxpLQrFuadfE65dqh+Qc2pdvz18FbsdpdiZogy8VUBtxRanijbOsi4cV84ffGXab8Ownzu+bNBJuJjlTBDX00Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/node": "^20.11.30", "@types/sinonjs__fake-timers": "^8.1.5", @@ -10286,7 +10263,6 @@ "integrity": "sha512-zlOJixJUHxeoyfIN/KdM797HwJj/oNgBaEdftgJARqbXt5AVZu18vJ3zljb+wzbY2M0pl7Y4+5OFH06WlDgQ+A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@wdio/logger": "9.4.4", "@wdio/types": "9.12.6", @@ -10305,7 +10281,6 @@ "integrity": "sha512-WzZhaN834du9wjqT/Go9qPyB7VkzV2bjr6pr06DrIzxIpJq/snWOv96C6OjJu8nmYNRjV769mAxyggBUf+sUoQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/node": "^20.1.0" }, @@ -10347,6 +10322,7 @@ "integrity": "sha512-i38o7wlipLllNrk2hzdDfAmk6nrqm3lR2MtAgWgtHbwznZAKkB84KpkNFfmUXw5Kg3iP1zKlSjwZpKqenuLc+Q==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">=18.20.0" }, @@ -10464,7 +10440,6 @@ "integrity": "sha512-BXx8RXFUW2M4dcO6t5Le95Hi2ZkTQBRsvBQqLekT2rZ6Xmw8ZKZBPf0FptnoftFGg6dYmwnDidYv/0+4PiHjpQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "chalk": "^5.1.2", "loglevel": "^1.6.0", @@ -10481,7 +10456,6 @@ "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": "^12.17.0 || ^14.13 || >=16.0.0" }, @@ -10644,8 +10618,7 @@ "resolved": "https://registry.npmjs.org/@wdio/protocols/-/protocols-9.12.5.tgz", "integrity": "sha512-i+yc0EZtZOh5fFuwHxvcnXeTXk2ZjFICRbcAxTNE0F2Jr4uOydvcAOw4EIIRmb9NWUSPf/bGZAA+4SEXmxmjUA==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/@wdio/repl": { "version": "9.4.4", @@ -10653,7 +10626,6 @@ "integrity": "sha512-kchPRhoG/pCn4KhHGiL/ocNhdpR8OkD2e6sANlSUZ4TGBVi86YSIEjc2yXUwLacHknC/EnQk/SFnqd4MsNjGGg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/node": "^20.1.0" }, @@ -10971,7 +10943,6 @@ "integrity": "sha512-JfI4CxBRQCOgToJeQNaZLv+wYNIGyJG1gqrpxUOvkrJvBgdOAmIu3dzlcKP/WviXlcxvwLQF2FK8bQVTjHv0fQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@puppeteer/browsers": "^2.2.0", "@wdio/logger": "9.4.4", @@ -10997,7 +10968,6 @@ "integrity": "sha512-WzZhaN834du9wjqT/Go9qPyB7VkzV2bjr6pr06DrIzxIpJq/snWOv96C6OjJu8nmYNRjV769mAxyggBUf+sUoQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/node": "^20.1.0" }, @@ -11159,6 +11129,7 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "license": "MIT", + "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -11626,7 +11597,6 @@ "integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.12.0" } @@ -12382,6 +12352,7 @@ "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.8.2.tgz", "integrity": "sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==", "license": "Apache-2.0", + "peer": true, "peerDependencies": { "bare-abort-controller": "*" }, @@ -12502,6 +12473,7 @@ "resolved": "https://registry.npmjs.org/bare-url/-/bare-url-2.1.5.tgz", "integrity": "sha512-lNImB5KLN+ggw+SYDYvqf/yCizXIyq8U/nWBlx7m4pc4TKS24SB/1WWskzGacon5cVVAC6qUzCYzI/aMYCf4Ng==", "license": "Apache-2.0", + "peer": true, "dependencies": { "bare-path": "^3.0.0" } @@ -12628,6 +12600,7 @@ "integrity": "sha512-EwhOpyXiOEL/lKzHz9AW1msWFNzGc/z+LzeB3/jnFJpxu+th2yqvzsSWas1v9jgs9+xiXJcD5A8CJxAG2TaghQ==", "hasInstallScript": true, "license": "MIT", + "peer": true, "dependencies": { "bindings": "^1.5.0", "prebuild-install": "^7.1.1" @@ -12915,6 +12888,7 @@ } ], "license": "MIT", + "peer": true, "dependencies": { "caniuse-lite": "^1.0.30001726", "electron-to-chromium": "^1.5.173", @@ -13472,7 +13446,6 @@ "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "readdirp": "^4.0.1" }, @@ -13856,6 +13829,7 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.2.tgz", "integrity": "sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==", "license": "MIT", + "peer": true, "engines": { "node": ">=20" } @@ -15832,7 +15806,6 @@ "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", "dev": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "jake": "^10.8.5" }, @@ -16128,7 +16101,6 @@ "dev": true, "hasInstallScript": true, "license": "MIT", - "peer": true, "bin": { "esbuild": "bin/esbuild" }, @@ -16228,6 +16200,7 @@ "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -17047,6 +17020,7 @@ "integrity": "sha512-FU+96C0nqeYTXrJcGLUDB6hPKKaSm1/tVHjFDE4EDHGCYvajAHCC2MBQJ5MomjCmp6lGMz36lDHeZj52LHylyA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@vitest/snapshot": "^3.2.4", "expect": "^30.0.0", @@ -17367,6 +17341,7 @@ "resolved": "https://registry.npmjs.org/expo/-/expo-54.0.33.tgz", "integrity": "sha512-3yOEfAKqo+gqHcV8vKcnq0uA5zxlohnhA3fu4G43likN8ct5ZZ3LjAh9wDdKteEkoad3tFPvwxmXW711S5OHUw==", "license": "MIT", + "peer": true, "dependencies": { "@babel/runtime": "^7.20.0", "@expo/cli": "54.0.23", @@ -17419,6 +17394,7 @@ "resolved": "https://registry.npmjs.org/expo-application/-/expo-application-7.0.8.tgz", "integrity": "sha512-qFGyxk7VJbrNOQWBbE09XUuGuvkOgFS9QfToaK2FdagM2aQ+x3CvGV2DuVgl/l4ZxPgIf3b/MNh9xHpwSwn74Q==", "license": "MIT", + "peer": true, "peerDependencies": { "expo": "*" } @@ -17428,6 +17404,7 @@ "resolved": "https://registry.npmjs.org/expo-asset/-/expo-asset-12.0.12.tgz", "integrity": "sha512-CsXFCQbx2fElSMn0lyTdRIyKlSXOal6ilLJd+yeZ6xaC7I9AICQgscY5nj0QcwgA+KYYCCEQEBndMsmj7drOWQ==", "license": "MIT", + "peer": true, "dependencies": { "@expo/image-utils": "^0.8.8", "expo-constants": "~18.0.12" @@ -17589,6 +17566,7 @@ "resolved": "https://registry.npmjs.org/expo-device/-/expo-device-8.0.10.tgz", "integrity": "sha512-jd5BxjaF7382JkDMaC+P04aXXknB2UhWaVx5WiQKA05ugm/8GH5uaz9P9ckWdMKZGQVVEOC8MHaUADoT26KmFA==", "license": "MIT", + "peer": true, "dependencies": { "ua-parser-js": "^0.7.33" }, @@ -17610,6 +17588,7 @@ "resolved": "https://registry.npmjs.org/expo-file-system/-/expo-file-system-19.0.21.tgz", "integrity": "sha512-s3DlrDdiscBHtab/6W1osrjGL+C2bvoInPJD7sOwmxfJ5Woynv2oc+Fz1/xVXaE/V7HE/+xrHC/H45tu6lZzzg==", "license": "MIT", + "peer": true, "peerDependencies": { "expo": "*", "react-native": "*" @@ -17620,6 +17599,7 @@ "resolved": "https://registry.npmjs.org/expo-font/-/expo-font-14.0.11.tgz", "integrity": "sha512-ga0q61ny4s/kr4k8JX9hVH69exVSIfcIc19+qZ7gt71Mqtm7xy2c6kwsPTCyhBW2Ro5yXTT8EaZOpuRi35rHbg==", "license": "MIT", + "peer": true, "dependencies": { "fontfaceobserver": "^2.1.0" }, @@ -17688,6 +17668,7 @@ "resolved": "https://registry.npmjs.org/expo-localization/-/expo-localization-17.0.8.tgz", "integrity": "sha512-UrdwklZBDJ+t+ZszMMiE0SXZ2eJxcquCuQcl6EvGHM9K+e6YqKVRQ+w8qE+iIB3H75v2RJy6MHAaLK+Mqeo04g==", "license": "MIT", + "peer": true, "dependencies": { "rtl-detect": "^1.0.2" }, @@ -18742,7 +18723,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "node-domexception": "^1.0.0", "web-streams-polyfill": "^3.0.3" @@ -18792,7 +18772,6 @@ "integrity": "sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==", "dev": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "minimatch": "^5.0.1" } @@ -18803,7 +18782,6 @@ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "balanced-match": "^1.0.0" } @@ -18814,7 +18792,6 @@ "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "brace-expansion": "^2.0.1" }, @@ -19210,7 +19187,6 @@ "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "fetch-blob": "^3.1.2" }, @@ -19331,7 +19307,6 @@ "dev": true, "hasInstallScript": true, "license": "MIT", - "peer": true, "dependencies": { "@wdio/logger": "^9.1.3", "@zip.js/zip.js": "^2.7.53", @@ -19355,7 +19330,6 @@ "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 14" } @@ -19366,7 +19340,6 @@ "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 12" } @@ -19377,7 +19350,6 @@ "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "agent-base": "^7.1.2", "debug": "4" @@ -19392,7 +19364,6 @@ "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", "dev": true, "license": "ISC", - "peer": true, "engines": { "node": ">=16" } @@ -19403,7 +19374,6 @@ "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "data-uri-to-buffer": "^4.0.0", "fetch-blob": "^3.1.4", @@ -19423,7 +19393,6 @@ "integrity": "sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "isexe": "^3.1.1" }, @@ -19607,7 +19576,6 @@ "integrity": "sha512-kGzZ3LWWQcGIAmg6iWvXn0ei6WDtV26wzHRMwDSzmAbcXrTEXxHy6IehI6/4eT6VRKyMP1eF1VqwrVUmE/LR7A==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "resolve-pkg-maps": "^1.0.0" }, @@ -20208,8 +20176,7 @@ "resolved": "https://registry.npmjs.org/htmlfy/-/htmlfy-0.6.7.tgz", "integrity": "sha512-r8hRd+oIM10lufovN+zr3VKPTYEIvIwqXGucidh2XQufmiw6sbUXFUFjWlfjo3AnefIDTyzykVzQ8IUVuT1peQ==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/htmlparser2": { "version": "9.1.0", @@ -20607,7 +20574,6 @@ "integrity": "sha512-CmLAZT65GG/v30c+D2Fk8+ceP6pxD6RL+hIUOWAltCmeyEqWYwqu9v76q03OvjyZ3AB0C1Ala2stn1z/rMqGEw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@inquirer/core": "^9.2.1", "@inquirer/prompts": "^6.0.1", @@ -21229,7 +21195,6 @@ "integrity": "sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==", "dev": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "async": "^3.2.3", "chalk": "^4.0.2", @@ -21249,6 +21214,7 @@ "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@jest/core": "^29.7.0", "@jest/types": "^29.6.3", @@ -22419,6 +22385,7 @@ "integrity": "sha512-B7qPcEVE3NVkmSJbaYxvv4cHkVW7DQsZz13pUMrfS8z8Q/BuShN+gcTXrUlPiGqM2/t/EEaI030bpxMqY8gMlw==", "dev": true, "license": "MIT", + "peer": true, "engines": { "node": ">= 10.16.0" } @@ -23356,8 +23323,7 @@ "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/lodash.isequal": { "version": "4.5.0", @@ -23378,8 +23344,7 @@ "resolved": "https://registry.npmjs.org/lodash.pickby/-/lodash.pickby-4.6.0.tgz", "integrity": "sha512-AZV+GsS/6ckvPOVQPXSiFFacKvKB4kOQu6ynt9wz0F3LO4R9Ij4K1ddYsIytDpSgLz88JHd9P+oaLeej5/Sl7Q==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/lodash.throttle": { "version": "4.1.1", @@ -23392,8 +23357,7 @@ "resolved": "https://registry.npmjs.org/lodash.union/-/lodash.union-4.6.0.tgz", "integrity": "sha512-c4pB2CdGrGdjMKYLA+XiRDO7Y0PRQbm/Gzg8qMj+QH+pFVAoTp5sBpO0odL3FjoPCGjK96p6qsP+yQoiLoOBcw==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/lodash.zip": { "version": "4.2.0", @@ -27277,8 +27241,7 @@ "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", "dev": true, - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/pause-stream": { "version": "0.0.11", @@ -28350,6 +28313,7 @@ "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", "license": "MIT", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -28449,6 +28413,7 @@ "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.81.5.tgz", "integrity": "sha512-1w+/oSjEXZjMqsIvmkCRsOc8UBYv163bTWKTI8+1mxztvQPhCRYGTvZ/PL1w16xXHneIj/SLGfxWg2GWN2uexw==", "license": "MIT", + "peer": true, "dependencies": { "@jest/create-cache-key-function": "^29.7.0", "@react-native/assets-registry": "0.81.5", @@ -28524,6 +28489,7 @@ "resolved": "https://registry.npmjs.org/react-native-device-info/-/react-native-device-info-15.0.1.tgz", "integrity": "sha512-U5waZRXtT3l1SgZpZMlIvMKPTkFZPH8W7Ks6GrJhdH723aUIPxjVer7cRSij1mvQdOAAYFJV/9BDzlC8apG89A==", "license": "MIT", + "peer": true, "peerDependencies": { "react-native": "*" } @@ -28549,6 +28515,7 @@ "resolved": "https://registry.npmjs.org/react-native-gesture-handler/-/react-native-gesture-handler-2.30.0.tgz", "integrity": "sha512-5YsnKHGa0X9C8lb5oCnKm0fLUPM6CRduvUUw2Bav4RIj/C3HcFh4RIUnF8wgG6JQWCL1//gRx4v+LVWgcIQdGA==", "license": "MIT", + "peer": true, "dependencies": { "@egjs/hammerjs": "^2.0.17", "hoist-non-react-statics": "^3.3.0", @@ -28598,6 +28565,7 @@ "resolved": "https://registry.npmjs.org/react-native-nitro-modules/-/react-native-nitro-modules-0.32.1.tgz", "integrity": "sha512-V+Vy76e4fxRxgVGu5Uh3cBPvuFQW8fM1OUKk1mqEA/JawjhX+hxHtBhpfuvNjV0BnV/uXCIg8/eK+rTpB6tqFg==", "license": "MIT", + "peer": true, "peerDependencies": { "react": "*", "react-native": "*" @@ -28620,6 +28588,7 @@ "resolved": "https://registry.npmjs.org/react-native-reanimated/-/react-native-reanimated-3.19.5.tgz", "integrity": "sha512-bd4AwIkBAaY4BjrgpSoKjEaRG/tXD756F5nGuiH5IMBSKN8tRdUEA8hWZCyIo/R6/kha/tVSoCqodVUACh7ZWw==", "license": "MIT", + "peer": true, "dependencies": { "@babel/plugin-transform-arrow-functions": "^7.0.0-0", "@babel/plugin-transform-class-properties": "^7.0.0-0", @@ -28655,6 +28624,7 @@ "resolved": "https://registry.npmjs.org/react-native-safe-area-context/-/react-native-safe-area-context-5.6.2.tgz", "integrity": "sha512-4XGqMNj5qjUTYywJqpdWZ9IG8jgkS3h06sfVjfw5yZQZfWnRFXczi0GnYyFyCc2EBps/qFmoCH8fez//WumdVg==", "license": "MIT", + "peer": true, "peerDependencies": { "react": "*", "react-native": "*" @@ -28674,6 +28644,7 @@ "resolved": "https://registry.npmjs.org/react-native-screens/-/react-native-screens-4.23.0.tgz", "integrity": "sha512-XhO3aK0UeLpBn4kLecd+J+EDeRRJlI/Ro9Fze06vo1q163VeYtzfU9QS09/VyDFMWR1qxDC1iazCArTPSFFiPw==", "license": "MIT", + "peer": true, "dependencies": { "react-freeze": "^1.0.0", "warn-once": "^0.1.0" @@ -28697,6 +28668,7 @@ "resolved": "https://registry.npmjs.org/react-native-svg/-/react-native-svg-15.15.3.tgz", "integrity": "sha512-/k4KYwPBLGcx2f5d4FjE+vCScK7QOX14cl2lIASJ28u4slHHtIhL0SZKU7u9qmRBHxTCKPoPBtN6haT1NENJNA==", "license": "MIT", + "peer": true, "dependencies": { "css-select": "^5.1.0", "css-tree": "^1.1.3", @@ -28958,6 +28930,7 @@ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", "license": "MIT", + "peer": true, "engines": { "node": ">=0.10.0" } @@ -28968,6 +28941,7 @@ "integrity": "sha512-jXkSl3CpvPYEF+p/eGDLB4sPoDX8pKkYvRl9+rR8HxLY0X04vW7hCm1/0zHoUSjPZ3bDa+wXWNTDVIw/R8aDVw==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "react-is": "^19.1.0", "scheduler": "^0.26.0" @@ -28989,7 +28963,6 @@ "integrity": "sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@types/normalize-package-data": "^2.4.1", "normalize-package-data": "^6.0.0", @@ -29009,7 +28982,6 @@ "integrity": "sha512-aNtBq4jR8NawpKJQldrQcSW9y/d+KWH4v24HWkHljOZ7H0av+YTGANBzRh9A5pw7v/bLVsLVPpOhJ7gHNVy8lA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "find-up": "^6.3.0", "read-pkg": "^8.1.0", @@ -29028,7 +29000,6 @@ "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "locate-path": "^7.1.0", "path-exists": "^5.0.0" @@ -29046,7 +29017,6 @@ "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "p-locate": "^6.0.0" }, @@ -29063,7 +29033,6 @@ "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "yocto-queue": "^1.0.0" }, @@ -29080,7 +29049,6 @@ "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "p-limit": "^4.0.0" }, @@ -29097,7 +29065,6 @@ "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } @@ -29108,7 +29075,6 @@ "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12.20" }, @@ -29122,7 +29088,6 @@ "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", "dev": true, "license": "ISC", - "peer": true, "dependencies": { "lru-cache": "^10.0.1" }, @@ -29136,7 +29101,6 @@ "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } @@ -29147,7 +29111,6 @@ "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } @@ -29157,8 +29120,7 @@ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", "dev": true, - "license": "ISC", - "peer": true + "license": "ISC" }, "node_modules/read-pkg/node_modules/normalize-package-data": { "version": "6.0.2", @@ -29166,7 +29128,6 @@ "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", "dev": true, "license": "BSD-2-Clause", - "peer": true, "dependencies": { "hosted-git-info": "^7.0.0", "semver": "^7.3.5", @@ -29182,7 +29143,6 @@ "integrity": "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.21.4", "error-ex": "^1.3.2", @@ -29203,7 +29163,6 @@ "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", "dev": true, "license": "(MIT OR CC0-1.0)", - "peer": true, "engines": { "node": ">=14.16" }, @@ -29267,7 +29226,6 @@ "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 14.18.0" }, @@ -29329,7 +29287,6 @@ "integrity": "sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "minimatch": "^3.0.5" }, @@ -29646,7 +29603,6 @@ "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", "dev": true, "license": "MIT", - "peer": true, "funding": { "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } @@ -29893,7 +29849,6 @@ "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=0.12.0" } @@ -29963,7 +29918,6 @@ "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", "dev": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "tslib": "^2.1.0" } @@ -31474,6 +31428,7 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", "license": "MIT", + "peer": true, "engines": { "node": ">=18" } @@ -32224,7 +32179,6 @@ "integrity": "sha512-weEDEq7Z5eTHPDh4xjX789+fHfF+P8boiFB+0vbWzpbnbsEr/GRaohi/uMKxg8RZMXnl1ItAi/IUHWMsjDV7kQ==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=14.0.0" } @@ -32405,7 +32359,6 @@ "integrity": "sha512-4H8vUNGNjQ4V2EOoGw005+c+dGuPSnhpPBPHBtsZdGZBk/iJb4kguGlPWaZTZ3q5nMtFOEsY0nRDlh9PJyd6SQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "esbuild": "~0.25.0", "get-tsconfig": "^4.7.5" @@ -32512,6 +32465,7 @@ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "devOptional": true, "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -32849,6 +32803,7 @@ "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz", "integrity": "sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==", "license": "MIT", + "peer": true, "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" } @@ -33045,7 +33000,6 @@ "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">= 8" } @@ -33236,6 +33190,7 @@ "integrity": "sha512-7teaXajOuNdn2UyyKlqMLssJjf0vDEih+Lo+tE/gHOt/P+mB8CinZym4PGtsriZLcyt4xV+Cun3hDmXM+pL26A==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@types/node": "^20.11.30", "@types/sinonjs__fake-timers": "^8.1.5", @@ -34375,6 +34330,7 @@ "integrity": "sha512-OhpzAmVzabPOL6C3A3gpAifqr9MqihV/Msx3gor2b2kviCgcb+HM9SEOpMWwwNp9MRunWnhtAKUoo0AHhjyPPg==", "dev": true, "license": "MIT", + "peer": true, "funding": { "url": "https://github.com/sponsors/colinhacks" } diff --git a/package.json b/package.json index db40dae737..5a8f6191d8 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "test:e2e:build": "npm run build:android:e2e && npm run test:e2e:nobuild" }, "dependencies": { - "@comapeo/core-react": "11.0.3", + "@comapeo/core-react": "11.0.4", "@comapeo/ipc": "8.0.0", "@comapeo/nodejs-mobile-react-native": "18.20.4-2", "@expo-google-fonts/rubik": "0.4.2", From 9c9209372e709850a9179193cea96524747d14fc Mon Sep 17 00:00:00 2001 From: Gregor MacLennan Date: Wed, 15 Apr 2026 17:18:04 +0100 Subject: [PATCH 69/72] fix: update to map-server@1.1.3 Should fix issues with delays on some actions on certain phones. --- package-lock.json | 76 +++++++++++++++++++++++++++++-- src/backend/package-lock.json | 84 +++++++++++++++++++++++++++++++++-- src/backend/package.json | 4 +- 3 files changed, 155 insertions(+), 9 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4710629b80..2877e495a5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2815,14 +2815,16 @@ } }, "node_modules/@comapeo/map-server": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@comapeo/map-server/-/map-server-1.1.0.tgz", - "integrity": "sha512-1+JQdU7MEJCCV02rD7Rkx00ocR7z19OHjuLM3xGLJR/tzjIWhxFglvarJ8DMa07rgHQZhxvG/zEgcguD9aP7Tg==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@comapeo/map-server/-/map-server-1.1.3.tgz", + "integrity": "sha512-14SDJTcq/rbYtSm9DFAxO0wqxMl6AoBb49bN4TexsVKyAFh4XHFMB6otDymuGlYbDjz5Up/dauSUnHSn7dP5Dw==", "bundleDependencies": [ "@whatwg-node/server" ], "license": "MIT", "dependencies": { + "@mapbox/mapbox-gl-style-spec": "^14.21.0", + "@maplibre/maplibre-gl-style-spec": "^24.7.0", "@whatwg-node/server": "^0.10.17", "itty-router": "^5.0.22", "p-defer": "^4.0.1", @@ -2851,6 +2853,26 @@ "inBundle": true, "license": "MIT" }, + "node_modules/@comapeo/map-server/node_modules/@maplibre/maplibre-gl-style-spec": { + "version": "24.8.1", + "resolved": "https://registry.npmjs.org/@maplibre/maplibre-gl-style-spec/-/maplibre-gl-style-spec-24.8.1.tgz", + "integrity": "sha512-zxa92qF96ZNojLxeAjnaRpjVCy+swoUNJvDhtpC90k7u5F0TMr4GmvNqMKvYrMoPB8d7gRSXbMG1hBbmgESIsw==", + "license": "ISC", + "dependencies": { + "@mapbox/jsonlint-lines-primitives": "~2.0.2", + "@mapbox/unitbezier": "^0.0.1", + "json-stringify-pretty-compact": "^4.0.0", + "minimist": "^1.2.8", + "quickselect": "^3.0.0", + "rw": "^1.3.3", + "tinyqueue": "^3.0.0" + }, + "bin": { + "gl-style-format": "dist/gl-style-format.mjs", + "gl-style-migrate": "dist/gl-style-migrate.mjs", + "gl-style-validate": "dist/gl-style-validate.mjs" + } + }, "node_modules/@comapeo/map-server/node_modules/@whatwg-node/disposablestack": { "version": "0.0.6", "inBundle": true, @@ -2915,6 +2937,12 @@ "node": ">=18.0.0" } }, + "node_modules/@comapeo/map-server/node_modules/quickselect": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-3.0.0.tgz", + "integrity": "sha512-XdjUArbK4Bm5fLLvlm5KpTFOiOThgfWWI4axAZDWg4E/0mKdZyI9tNEfds27qCi1ze/vwTR16kvmmGhRra3c2g==", + "license": "ISC" + }, "node_modules/@comapeo/map-server/node_modules/tslib": { "version": "2.8.1", "inBundle": true, @@ -5847,6 +5875,42 @@ "node": ">= 0.6" } }, + "node_modules/@mapbox/mapbox-gl-style-spec": { + "version": "14.21.0", + "resolved": "https://registry.npmjs.org/@mapbox/mapbox-gl-style-spec/-/mapbox-gl-style-spec-14.21.0.tgz", + "integrity": "sha512-laUTSTSjPxJNeaV4hMntrktEXga0ni/6N6JTQ4Ae39nObpbq2KlkU/4LelYeJvX9ZxU9USs3KDLmAbyjfEkvNg==", + "license": "SEE LICENSE IN LICENSE.txt", + "dependencies": { + "@mapbox/jsonlint-lines-primitives": "~2.0.2", + "@mapbox/point-geometry": "^1.1.0", + "@mapbox/unitbezier": "^0.0.1", + "cheap-ruler": "^4.0.0", + "csscolorparser": "~1.0.2", + "json-stringify-pretty-compact": "^4.0.0", + "minimist": "^1.2.6", + "quickselect": "^3.0.0", + "rw": "^1.3.3", + "tinyqueue": "^3.0.0" + }, + "bin": { + "gl-style-composite": "bin/gl-style-composite.js", + "gl-style-format": "bin/gl-style-format.js", + "gl-style-migrate": "bin/gl-style-migrate.js", + "gl-style-validate": "bin/gl-style-validate.js" + } + }, + "node_modules/@mapbox/mapbox-gl-style-spec/node_modules/quickselect": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-3.0.0.tgz", + "integrity": "sha512-XdjUArbK4Bm5fLLvlm5KpTFOiOThgfWWI4axAZDWg4E/0mKdZyI9tNEfds27qCi1ze/vwTR16kvmmGhRra3c2g==", + "license": "ISC" + }, + "node_modules/@mapbox/point-geometry": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@mapbox/point-geometry/-/point-geometry-1.1.0.tgz", + "integrity": "sha512-YGcBz1cg4ATXDCM/71L9xveh4dynfGmcLDqufR+nQQy3fKwsAZsWd/x4621/6uJaeB9mwOHE6hPeDgXz9uViUQ==", + "license": "ISC" + }, "node_modules/@mapbox/sphericalmercator": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@mapbox/sphericalmercator/-/sphericalmercator-1.2.0.tgz", @@ -14541,6 +14605,12 @@ "url": "https://github.com/sponsors/fb55" } }, + "node_modules/csscolorparser": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/csscolorparser/-/csscolorparser-1.0.3.tgz", + "integrity": "sha512-umPSgYwZkdFoUrH5hIq5kf0wPSXiro51nPw0j2K/c83KflkPSTBGMz6NJvMB+07VlL0y7VPo6QJcDjcgKTTm3w==", + "license": "MIT" + }, "node_modules/csso": { "version": "5.0.5", "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", diff --git a/src/backend/package-lock.json b/src/backend/package-lock.json index 9381a936cf..7193a86b65 100644 --- a/src/backend/package-lock.json +++ b/src/backend/package-lock.json @@ -14,7 +14,7 @@ "@comapeo/default-categories": "1.0.1", "@comapeo/fallback-smp": "1.0.0", "@comapeo/ipc": "8.0.0", - "@comapeo/map-server": "1.1.0", + "@comapeo/map-server": "^1.1.3", "@mapeo/crypto": "1.0.0-alpha.10", "@sentry/node": "9.28.0", "@sentry/rollup-plugin": "^3.5.0", @@ -403,14 +403,16 @@ } }, "node_modules/@comapeo/map-server": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@comapeo/map-server/-/map-server-1.1.0.tgz", - "integrity": "sha512-1+JQdU7MEJCCV02rD7Rkx00ocR7z19OHjuLM3xGLJR/tzjIWhxFglvarJ8DMa07rgHQZhxvG/zEgcguD9aP7Tg==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@comapeo/map-server/-/map-server-1.1.3.tgz", + "integrity": "sha512-14SDJTcq/rbYtSm9DFAxO0wqxMl6AoBb49bN4TexsVKyAFh4XHFMB6otDymuGlYbDjz5Up/dauSUnHSn7dP5Dw==", "bundleDependencies": [ "@whatwg-node/server" ], "license": "MIT", "dependencies": { + "@mapbox/mapbox-gl-style-spec": "^14.21.0", + "@maplibre/maplibre-gl-style-spec": "^24.7.0", "@whatwg-node/server": "^0.10.17", "itty-router": "^5.0.22", "p-defer": "^4.0.1", @@ -439,6 +441,26 @@ "inBundle": true, "license": "MIT" }, + "node_modules/@comapeo/map-server/node_modules/@maplibre/maplibre-gl-style-spec": { + "version": "24.8.1", + "resolved": "https://registry.npmjs.org/@maplibre/maplibre-gl-style-spec/-/maplibre-gl-style-spec-24.8.1.tgz", + "integrity": "sha512-zxa92qF96ZNojLxeAjnaRpjVCy+swoUNJvDhtpC90k7u5F0TMr4GmvNqMKvYrMoPB8d7gRSXbMG1hBbmgESIsw==", + "license": "ISC", + "dependencies": { + "@mapbox/jsonlint-lines-primitives": "~2.0.2", + "@mapbox/unitbezier": "^0.0.1", + "json-stringify-pretty-compact": "^4.0.0", + "minimist": "^1.2.8", + "quickselect": "^3.0.0", + "rw": "^1.3.3", + "tinyqueue": "^3.0.0" + }, + "bin": { + "gl-style-format": "dist/gl-style-format.mjs", + "gl-style-migrate": "dist/gl-style-migrate.mjs", + "gl-style-validate": "dist/gl-style-validate.mjs" + } + }, "node_modules/@comapeo/map-server/node_modules/@whatwg-node/disposablestack": { "version": "0.0.6", "inBundle": true, @@ -503,6 +525,12 @@ "node": ">=18.0.0" } }, + "node_modules/@comapeo/map-server/node_modules/quickselect": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-3.0.0.tgz", + "integrity": "sha512-XdjUArbK4Bm5fLLvlm5KpTFOiOThgfWWI4axAZDWg4E/0mKdZyI9tNEfds27qCi1ze/vwTR16kvmmGhRra3c2g==", + "license": "ISC" + }, "node_modules/@comapeo/map-server/node_modules/tslib": { "version": "2.8.1", "inBundle": true, @@ -1466,6 +1494,42 @@ "node": ">= 0.6" } }, + "node_modules/@mapbox/mapbox-gl-style-spec": { + "version": "14.21.0", + "resolved": "https://registry.npmjs.org/@mapbox/mapbox-gl-style-spec/-/mapbox-gl-style-spec-14.21.0.tgz", + "integrity": "sha512-laUTSTSjPxJNeaV4hMntrktEXga0ni/6N6JTQ4Ae39nObpbq2KlkU/4LelYeJvX9ZxU9USs3KDLmAbyjfEkvNg==", + "license": "SEE LICENSE IN LICENSE.txt", + "dependencies": { + "@mapbox/jsonlint-lines-primitives": "~2.0.2", + "@mapbox/point-geometry": "^1.1.0", + "@mapbox/unitbezier": "^0.0.1", + "cheap-ruler": "^4.0.0", + "csscolorparser": "~1.0.2", + "json-stringify-pretty-compact": "^4.0.0", + "minimist": "^1.2.6", + "quickselect": "^3.0.0", + "rw": "^1.3.3", + "tinyqueue": "^3.0.0" + }, + "bin": { + "gl-style-composite": "bin/gl-style-composite.js", + "gl-style-format": "bin/gl-style-format.js", + "gl-style-migrate": "bin/gl-style-migrate.js", + "gl-style-validate": "bin/gl-style-validate.js" + } + }, + "node_modules/@mapbox/mapbox-gl-style-spec/node_modules/quickselect": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-3.0.0.tgz", + "integrity": "sha512-XdjUArbK4Bm5fLLvlm5KpTFOiOThgfWWI4axAZDWg4E/0mKdZyI9tNEfds27qCi1ze/vwTR16kvmmGhRra3c2g==", + "license": "ISC" + }, + "node_modules/@mapbox/point-geometry": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@mapbox/point-geometry/-/point-geometry-1.1.0.tgz", + "integrity": "sha512-YGcBz1cg4ATXDCM/71L9xveh4dynfGmcLDqufR+nQQy3fKwsAZsWd/x4621/6uJaeB9mwOHE6hPeDgXz9uViUQ==", + "license": "ISC" + }, "node_modules/@mapbox/sphericalmercator": { "version": "1.2.0", "bin": { @@ -3771,6 +3835,12 @@ "version": "0.7.0", "license": "MIT" }, + "node_modules/cheap-ruler": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cheap-ruler/-/cheap-ruler-4.0.0.tgz", + "integrity": "sha512-0BJa8f4t141BYKQyn9NSQt1PguFQXMXwZiA5shfoaBYHAb2fFk2RAX+tiWMoQU+Agtzt3mdt0JtuyshAXqZ+Vw==", + "license": "ISC" + }, "node_modules/chokidar": { "version": "3.6.0", "license": "MIT", @@ -4194,6 +4264,12 @@ "url": "https://github.com/sponsors/fb55" } }, + "node_modules/csscolorparser": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/csscolorparser/-/csscolorparser-1.0.3.tgz", + "integrity": "sha512-umPSgYwZkdFoUrH5hIq5kf0wPSXiro51nPw0j2K/c83KflkPSTBGMz6NJvMB+07VlL0y7VPo6QJcDjcgKTTm3w==", + "license": "MIT" + }, "node_modules/csso": { "version": "5.0.5", "license": "MIT", diff --git a/src/backend/package.json b/src/backend/package.json index df5358884b..419d41d61a 100644 --- a/src/backend/package.json +++ b/src/backend/package.json @@ -14,11 +14,11 @@ "license": "MIT", "dependencies": { "@comapeo/core": "7.0.1", - "@mapeo/crypto": "1.0.0-alpha.10", "@comapeo/default-categories": "1.0.1", "@comapeo/fallback-smp": "1.0.0", "@comapeo/ipc": "8.0.0", - "@comapeo/map-server": "1.1.0", + "@comapeo/map-server": "^1.1.3", + "@mapeo/crypto": "1.0.0-alpha.10", "@sentry/node": "9.28.0", "@sentry/rollup-plugin": "^3.5.0", "debug": "^4.3.4", From 35e80a3b76e04e8e741c192a973e8056be8f18f8 Mon Sep 17 00:00:00 2001 From: Gregor MacLennan Date: Thu, 16 Apr 2026 16:55:04 +0100 Subject: [PATCH 70/72] chore: pin @comapeo/map-server version --- src/backend/package-lock.json | 2 +- src/backend/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/backend/package-lock.json b/src/backend/package-lock.json index 7193a86b65..5fe7b60468 100644 --- a/src/backend/package-lock.json +++ b/src/backend/package-lock.json @@ -14,7 +14,7 @@ "@comapeo/default-categories": "1.0.1", "@comapeo/fallback-smp": "1.0.0", "@comapeo/ipc": "8.0.0", - "@comapeo/map-server": "^1.1.3", + "@comapeo/map-server": "1.1.3", "@mapeo/crypto": "1.0.0-alpha.10", "@sentry/node": "9.28.0", "@sentry/rollup-plugin": "^3.5.0", diff --git a/src/backend/package.json b/src/backend/package.json index 419d41d61a..3f2d9323c1 100644 --- a/src/backend/package.json +++ b/src/backend/package.json @@ -17,7 +17,7 @@ "@comapeo/default-categories": "1.0.1", "@comapeo/fallback-smp": "1.0.0", "@comapeo/ipc": "8.0.0", - "@comapeo/map-server": "^1.1.3", + "@comapeo/map-server": "1.1.3", "@mapeo/crypto": "1.0.0-alpha.10", "@sentry/node": "9.28.0", "@sentry/rollup-plugin": "^3.5.0", From b9cc6287d2fc5feed6ce9f588d95a6475693a2ae Mon Sep 17 00:00:00 2001 From: Cindy Green Date: Thu, 16 Apr 2026 16:29:52 -0400 Subject: [PATCH 71/72] Limits selectable devices for map sharing to just mobile. --- .../screens/BackgroundMaps/SelectMapShareDevice.tsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/frontend/screens/BackgroundMaps/SelectMapShareDevice.tsx b/src/frontend/screens/BackgroundMaps/SelectMapShareDevice.tsx index 8a20937564..acfa4cb19f 100644 --- a/src/frontend/screens/BackgroundMaps/SelectMapShareDevice.tsx +++ b/src/frontend/screens/BackgroundMaps/SelectMapShareDevice.tsx @@ -29,8 +29,10 @@ export function getSelectableDevicesForMapShare({ peers: PublicPeerInfo[]; projectMembers: MemberApi.ActiveMemberInfo[]; }): PublicPeerInfo[] { - return peers.filter(device => - projectMembers.some(member => member.deviceId === device.deviceId), + return peers.filter( + device => + device.deviceType === 'mobile' && + projectMembers.some(member => member.deviceId === device.deviceId), ); } From 2bc3beb49636c2bfbf360c582954604b8f53742c Mon Sep 17 00:00:00 2001 From: Cindy Green Date: Thu, 16 Apr 2026 17:16:18 -0400 Subject: [PATCH 72/72] Updates test --- .../SelectMapShareDevice.test.ts | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/frontend/screens/BackgroundMaps/SelectMapShareDevice.test.ts b/src/frontend/screens/BackgroundMaps/SelectMapShareDevice.test.ts index e574f6e0c1..e7cf05d3ca 100644 --- a/src/frontend/screens/BackgroundMaps/SelectMapShareDevice.test.ts +++ b/src/frontend/screens/BackgroundMaps/SelectMapShareDevice.test.ts @@ -103,7 +103,7 @@ describe('getSelectableDevicesForMapShare', () => { it('should include project member peers regardless of connection status', () => { const peers = [ mockPeer('peer-1', 'Peer 1', 'mobile', 'connected'), - mockPeer('peer-2', 'Peer 2', 'desktop', 'disconnected'), + mockPeer('peer-2', 'Peer 2', 'mobile', 'disconnected'), mockPeer('peer-3', 'Peer 3', 'mobile', undefined), ]; @@ -119,4 +119,22 @@ describe('getSelectableDevicesForMapShare', () => { expect(result).toHaveLength(3); expect(result).toEqual(peers); }); + + it('should exclude desktop and server peers even if they are project members', () => { + const peers = [ + mockPeer('peer-1', 'Peer 1', 'mobile', 'connected'), + mockPeer('peer-2', 'Peer 2', 'desktop', 'connected'), + ]; + + const result = getSelectableDevicesForMapShare({ + peers, + projectMembers: [ + mockMember('peer-1', COORDINATOR_ROLE_ID), + mockMember('peer-2', COORDINATOR_ROLE_ID), + ], + }); + + expect(result).toHaveLength(1); + expect(result[0]?.deviceId).toBe('peer-1'); + }); });