create-expo 5.0.0 → 5.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/205.index.js +54 -41
- package/build/{525.index.js → 223.index.js} +423 -326
- package/build/agent-files/AGENTS.md +41 -0
- package/build/agent-files/CLAUDE.md +1 -0
- package/build/index.js +1 -1
- package/package.json +9 -7
- package/template/agent-files/AGENTS.md +41 -0
- package/template/agent-files/CLAUDE.md +1 -0
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
This is an Expo/React Native mobile application. Prioritize mobile-first patterns, performance, and cross-platform compatibility.
|
|
2
|
+
|
|
3
|
+
## Expo has changed — do not trust your training data
|
|
4
|
+
|
|
5
|
+
Expo ships breaking changes every SDK release. APIs you remember are likely renamed, moved, or removed. Before writing any code that touches an Expo, EAS, or React Native API:
|
|
6
|
+
|
|
7
|
+
1. Read the major version of the `expo` package in `package.json`.
|
|
8
|
+
2. Fetch the matching versioned docs: `https://docs.expo.dev/versions/v<major>.0.0/`
|
|
9
|
+
3. For anything else, fetch https://docs.expo.dev/llms.txt — an index of all Expo docs with corrections to common LLM misconceptions. Follow its links to the specific page you need; never answer from memory.
|
|
10
|
+
|
|
11
|
+
## Commands
|
|
12
|
+
|
|
13
|
+
Use `bunx` instead of `npx` if the project uses bun (`bun.lock` present).
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npx expo install <package> # ALWAYS use instead of npm/yarn/pnpm/bun add — resolves SDK-compatible versions
|
|
17
|
+
npx expo start # start the dev server
|
|
18
|
+
npx expo lint # lint
|
|
19
|
+
npx tsc --noEmit # typecheck
|
|
20
|
+
npx expo-doctor # diagnose dependency and config issues
|
|
21
|
+
npx expo install --fix # fix incompatible package versions
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Run lint and typecheck before declaring any task done.
|
|
25
|
+
|
|
26
|
+
## Navigation & Routing
|
|
27
|
+
|
|
28
|
+
- Use **Expo Router** for all navigation. Routes live in `src/app/` — every file there is a screen, `_layout.tsx` files define navigators. Keep non-route code (components, hooks, utils) outside `src/app/`.
|
|
29
|
+
- Import `Link`, `router`, and `useLocalSearchParams` from `expo-router`.
|
|
30
|
+
- Docs: https://docs.expo.dev/router/introduction.md
|
|
31
|
+
|
|
32
|
+
## Building with EAS
|
|
33
|
+
|
|
34
|
+
Use EAS to build, sign, and submit the app in the cloud (`eas build`, `eas submit`) and to ship over-the-air updates (`eas update`) — no local Xcode or Android Studio required. Run EAS CLI as `bunx eas-cli <command>` in Bun projects, or `npx eas-cli@latest <command>` otherwise; substitute that for bare `eas` in docs examples.
|
|
35
|
+
Docs: https://docs.expo.dev/eas/index.md
|
|
36
|
+
|
|
37
|
+
## Rules
|
|
38
|
+
|
|
39
|
+
- If `ios/` and `android/` directories do not exist, they are generated (Continuous Native Generation). Never create or edit them by hand — configure native behavior in `app.json` and config plugins.
|
|
40
|
+
- Expo Go only includes its bundled native modules. After adding a library with native code, the app needs a development build: `npx expo run:ios|android` locally, or `eas build --profile development`.
|
|
41
|
+
- Prefer recommended Expo modules over third-party libraries, and check your available skills before adding dependencies. Docs: https://docs.expo.dev/versions/latest/index.md
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@AGENTS.md
|
package/build/index.js
CHANGED
|
@@ -46,4 +46,4 @@ const n=r(5680);const toRegexRange=(e,t,r)=>{if(n(e)===false){throw new TypeErro
|
|
|
46
46
|
{bold yarn:} {cyan yarn create ${e}}
|
|
47
47
|
{bold pnpm:} {cyan pnpm create ${e}}
|
|
48
48
|
{bold bun:} {cyan bun create ${e}}
|
|
49
|
-
`)}const{AnalyticsEventPhases:c,AnalyticsEventTypes:l,flushAsync:p,track:h}=await r.e(601).then(r.bind(r,601));try{const s=await resolveStringOrBooleanArgsAsync(e,t,{"--template":Boolean,"--example":Boolean,"-t":"--template","-e":"--example"});f(`Default args:\n%O`,n);f(`Parsed:\n%O`,s);const{createAsync:i}=await Promise.all([r.e(525),r.e(205)]).then(r.bind(r,8205));await i(s.projectRoot,{yes:!!n["--yes"],template:s.args["--template"],example:s.args["--example"],install:!n["--no-install"],agentsMd:!n["--no-agents-md"]});h({event:l.CREATE_EXPO_APP,properties:{phase:c.SUCCESS}});await p()}catch(e){if(!(e instanceof o.R)){u.tG.exception(e)}h({event:l.CREATE_EXPO_APP,properties:{phase:c.FAIL,message:e.cause}});await p().finally((()=>{process.exit(e.code||1)}))}finally{const e=await(await r.e(517).then(r.bind(r,7517))).default;await e()}}run()},6467:(e,t,r)=>{"use strict";r.d(t,{V:()=>n});const n=r(8330).name},6725:(e,t,r)=>{"use strict";r.d(t,{R:()=>ExitError});class ExitError extends Error{cause;code;constructor(e,t){super(e instanceof Error?e.message:e);this.cause=e;this.code=t}}},1545:(e,t,r)=>{"use strict";r.d(t,{NS:()=>exit,tG:()=>o});var n=r(2314);var s=r.n(n);var i=r(6725);function error(...e){console.error(...e)}function exception(e){const{env:t}=r(4342);error(s().red(e.toString())+(t.EXPO_DEBUG?"\n"+s().gray(e.stack):""))}function log(...e){console.log(...e)}function exit(e,t=1){if(e instanceof Error){exception(e)}else if(e){if(t===0){log(e)}else{error(e)}}if(t!==0){throw new i.R(e,t)}process.exit(t)}const o={error:error,exception:exception,log:log,exit:exit}},9560:(e,t,r)=>{"use strict";r.d(t,{DC:()=>installDependenciesAsync,MZ:()=>configurePackageManager,Wq:()=>formatRunCommand,_c:()=>resolvePackageManager,fZ:()=>formatSelfCommand});var n=r(6268);var s=r.n(n);var i=r(5317);var o=r.n(i);var u=r(6467);const a=r(6675)("expo:init:resolvePackageManager");function resolvePackageManager(){const e=process.env.npm_config_user_agent;a("npm_config_user_agent:",e);if(e?.startsWith("yarn")){return"yarn"}else if(e?.startsWith("pnpm")){return"pnpm"}else if(e?.startsWith("bun")){return"bun"}else if(e?.startsWith("npm")){return"npm"}if(isPackageManagerAvailable("yarn")){return"yarn"}else if(isPackageManagerAvailable("pnpm")){return"pnpm"}else if(isPackageManagerAvailable("bun")){return"bun"}return"npm"}function isPackageManagerAvailable(e){try{(0,i.execSync)(`${e} --version`,{stdio:"ignore"});return true}catch{}return false}function formatRunCommand(e,t){switch(e){case"pnpm":return`pnpm run ${t}`;case"yarn":return`yarn ${t}`;case"bun":return`bun run ${t}`;case"npm":default:return`npm run ${t}`}}function formatSelfCommand(){const e=resolvePackageManager();switch(e){case"pnpm":return`pnpx ${u.V}`;case"bun":return`bunx ${u.V}`;case"yarn":case"npm":default:return`npx ${u.V}`}}function createPackageManager(e,t){switch(e){case"yarn":return new n.YarnPackageManager(t);case"pnpm":return new n.PnpmPackageManager(t);case"bun":return new n.BunPackageManager(t);case"npm":default:return new n.NpmPackageManager(t)}}async function installDependenciesAsync(e,t,r={silent:false}){await createPackageManager(t,{cwd:e,silent:r.silent}).installAsync()}async function configurePackageManager(e,t,r={silent:false}){const n=createPackageManager(t,{cwd:e,...r});switch(n.name){case"yarn":{const e=await n.versionAsync();const t=parseInt(e.split(".")[0]??"",10);if(t>=2){await n.runAsync(["config","set","nodeLinker","node-modules"])}break}}}},4342:(e,t,r)=>{"use strict";r.r(t);r.d(t,{env:()=>i});var n=r(277);var s=r.n(n);class Env{get EXPO_DEBUG(){return(0,n.boolish)("EXPO_DEBUG",false)}get EXPO_BETA(){return(0,n.boolish)("EXPO_BETA",false)}get CI(){return(0,n.boolish)("CI",false)}get EXPO_NO_CACHE(){return(0,n.boolish)("EXPO_NO_CACHE",false)}get EXPO_NO_TELEMETRY(){return(0,n.boolish)("EXPO_NO_TELEMETRY",false)}}const i=new Env},2613:e=>{"use strict";e.exports=require("assert")},181:e=>{"use strict";e.exports=require("buffer")},5317:e=>{"use strict";e.exports=require("child_process")},6982:e=>{"use strict";e.exports=require("crypto")},2250:e=>{"use strict";e.exports=require("dns")},4434:e=>{"use strict";e.exports=require("events")},9896:e=>{"use strict";e.exports=require("fs")},8611:e=>{"use strict";e.exports=require("http")},5692:e=>{"use strict";e.exports=require("https")},3339:e=>{"use strict";e.exports=require("module")},5217:e=>{"use strict";e.exports=require("node:crypto")},8474:e=>{"use strict";e.exports=require("node:events")},3024:e=>{"use strict";e.exports=require("node:fs")},1455:e=>{"use strict";e.exports=require("node:fs/promises")},6760:e=>{"use strict";e.exports=require("node:path")},1708:e=>{"use strict";e.exports=require("node:process")},7075:e=>{"use strict";e.exports=require("node:stream")},6193:e=>{"use strict";e.exports=require("node:string_decoder")},3136:e=>{"use strict";e.exports=require("node:url")},857:e=>{"use strict";e.exports=require("os")},6928:e=>{"use strict";e.exports=require("path")},3785:e=>{"use strict";e.exports=require("readline")},2203:e=>{"use strict";e.exports=require("stream")},2018:e=>{"use strict";e.exports=require("tty")},7016:e=>{"use strict";e.exports=require("url")},9023:e=>{"use strict";e.exports=require("util")},5112:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});var n=r(6831);var s=r(7815);var i=r(8740);function isColorSupported(){return typeof process==="object"&&(process.env.FORCE_COLOR==="0"||process.env.FORCE_COLOR==="false")?false:n.isColorSupported}const compose=(e,t)=>r=>e(t(r));function buildDefs(e){return{keyword:e.cyan,capitalized:e.yellow,jsxIdentifier:e.yellow,punctuator:e.yellow,number:e.magenta,string:e.green,regex:e.magenta,comment:e.gray,invalid:compose(compose(e.white,e.bgRed),e.bold),gutter:e.gray,marker:compose(e.red,e.bold),message:compose(e.red,e.bold),reset:e.reset}}const o=buildDefs(n.createColors(true));const u=buildDefs(n.createColors(false));function getDefs(e){return e?o:u}const a=new Set(["as","async","from","get","of","set"]);const c=/\r\n|[\n\r\u2028\u2029]/;const l=/^[()[\]{}]$/;let f;const p=/^[a-z][\w-]*$/i;const getTokenType=function(e,t,r){if(e.type==="name"){const n=e.value;if(i.isKeyword(n)||i.isStrictReservedWord(n,true)||a.has(n)){return"keyword"}if(p.test(n)&&(r[t-1]==="<"||r.slice(t-2,t)==="</")){return"jsxIdentifier"}const s=String.fromCodePoint(n.codePointAt(0));if(s!==s.toLowerCase()){return"capitalized"}}if(e.type==="punctuator"&&l.test(e.value)){return"bracket"}if(e.type==="invalid"&&(e.value==="@"||e.value==="#")){return"punctuator"}return e.type};f=function*(e){let t;while(t=s.default.exec(e)){const r=s.matchToToken(t);yield{type:getTokenType(r,t.index,e),value:r.value}}};function highlight(e){if(e==="")return"";const t=getDefs(true);let r="";for(const{type:n,value:s}of f(e)){if(n in t){r+=s.split(c).map((e=>t[n](e))).join("\n")}else{r+=s}}return r}let h=false;const d=/\r\n|[\n\r\u2028\u2029]/;function getMarkerLines(e,t,r,n){const s=Object.assign({column:0,line:-1},e.start);const i=Object.assign({},s,e.end);const{linesAbove:o=2,linesBelow:u=3}=r||{};const a=s.line-n;const c=s.column;const l=i.line-n;const f=i.column;let p=Math.max(a-(o+1),0);let h=Math.min(t.length,l+u);if(a===-1){p=0}if(l===-1){h=t.length}const d=l-a;const g={};if(d){for(let e=0;e<=d;e++){const r=e+a;if(!c){g[r]=true}else if(e===0){const e=t[r-1].length;g[r]=[c,e-c+1]}else if(e===d){g[r]=[0,f]}else{const n=t[r-e].length;g[r]=[0,n]}}}else{if(c===f){if(c){g[a]=[c,0]}else{g[a]=true}}else{g[a]=[c,f-c]}}return{start:p,end:h,markerLines:g}}function codeFrameColumns(e,t,r={}){const n=r.forceColor||isColorSupported()&&r.highlightCode;const s=(r.startLine||1)-1;const i=getDefs(n);const o=e.split(d);const{start:u,end:a,markerLines:c}=getMarkerLines(t,o,r,s);const l=t.start&&typeof t.start.column==="number";const f=String(a+s).length;const p=n?highlight(e):e;let h=p.split(d,a).slice(u,a).map(((e,t)=>{const n=u+1+t;const o=` ${n+s}`.slice(-f);const a=` ${o} |`;const l=c[n];const p=!c[n+1];if(l){let t="";if(Array.isArray(l)){const n=e.slice(0,Math.max(l[0]-1,0)).replace(/[^\t]/g," ");const s=l[1]||1;t=["\n ",i.gutter(a.replace(/\d/g," "))," ",n,i.marker("^").repeat(s)].join("");if(p&&r.message){t+=" "+i.message(r.message)}}return[i.marker(">"),i.gutter(a),e.length>0?` ${e}`:"",t].join("")}else{return` ${i.gutter(a)}${e.length>0?` ${e}`:""}`}})).join("\n");if(r.message&&!l){h=`${" ".repeat(f+1)}${r.message}\n${h}`}if(n){return i.reset(h)}else{return h}}function index(e,t,r,n={}){if(!h){h=true;const e="Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`.";if(process.emitWarning){process.emitWarning(e,"DeprecationWarning")}else{const t=new Error(e);t.name="DeprecationWarning";console.warn(new Error(e))}}r=Math.max(r,0);const s={start:{column:r,line:t}};return codeFrameColumns(e,s,n)}t.codeFrameColumns=codeFrameColumns;t["default"]=index;t.highlight=highlight},3357:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.isIdentifierChar=isIdentifierChar;t.isIdentifierName=isIdentifierName;t.isIdentifierStart=isIdentifierStart;let r="ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆՙՠ-ֈא-תׯ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࡠ-ࡪࡰ-ࢇࢉ-ࢠ-ࣉऄ-हऽॐक़-ॡॱ-ঀঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱৼਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡૹଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-హఽౘ-ౚౝౠౡಀಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽ-ೞೠೡೱೲഄ-ഌഎ-ഐഒ-ഺഽൎൔ-ൖൟ-ൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄຆ-ຊຌ-ຣລວ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏽᏸ-ᏽᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛸᜀ-ᜑᜟ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡸᢀ-ᢨᢪᢰ-ᣵᤀ-ᤞᥐ-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭌᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᲀ-Ა-ᲺᲽ-Ჿᳩ-ᳬᳮ-ᳳᳵᳶᳺᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕ℘-ℝℤΩℨK-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞ々-〇〡-〩〱-〵〸-〼ぁ-ゖ゛-ゟァ-ヺー-ヿㄅ-ㄯㄱ-ㆎㆠ-ㆿㇰ-ㇿ㐀-䶿一-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚝꚠ-ꛯꜗ-ꜟꜢ-ꞈꞋ--ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꣽꣾꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꧠ-ꧤꧦ-ꧯꧺ-ꧾꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꩾ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭩꭰ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ";let n="·̀-ͯ·҃-֑҇-ׇֽֿׁׂׅׄؐ-ًؚ-٩ٰۖ-ۜ۟-۪ۤۧۨ-ۭ۰-۹ܑܰ-݊ަ-ް߀-߉߫-߽߳ࠖ-࠙ࠛ-ࠣࠥ-ࠧࠩ-࡙࠭-࡛-࢟࣊-ࣣ࣡-ःऺ-़ा-ॏ॑-ॗॢॣ०-९ঁ-ঃ়া-ৄেৈো-্ৗৢৣ০-৯৾ਁ-ਃ਼ਾ-ੂੇੈੋ-੍ੑ੦-ੱੵઁ-ઃ઼ા-ૅે-ૉો-્ૢૣ૦-૯ૺ-૿ଁ-ଃ଼ା-ୄେୈୋ-୍୕-ୗୢୣ୦-୯ஂா-ூெ-ைொ-்ௗ௦-௯ఀ-ఄ఼ా-ౄె-ైొ-్ౕౖౢౣ౦-౯ಁ-ಃ಼ಾ-ೄೆ-ೈೊ-್ೕೖೢೣ೦-೯ೳഀ-ഃ഻഼ാ-ൄെ-ൈൊ-്ൗൢൣ൦-൯ඁ-ඃ්ා-ුූෘ-ෟ෦-෯ෲෳัิ-ฺ็-๎๐-๙ັິ-ຼ່-໎໐-໙༘༙༠-༩༹༵༷༾༿ཱ-྄྆྇ྍ-ྗྙ-ྼ࿆ါ-ှ၀-၉ၖ-ၙၞ-ၠၢ-ၤၧ-ၭၱ-ၴႂ-ႍႏ-ႝ፝-፟፩-፱ᜒ-᜕ᜲ-᜴ᝒᝓᝲᝳ឴-៓៝០-៩᠋-᠍᠏-᠙ᢩᤠ-ᤫᤰ-᤻᥆-᥏᧐-᧚ᨗ-ᨛᩕ-ᩞ᩠-᩿᩼-᪉᪐-᪙᪰-᪽ᪿ--ᬀ-ᬄ᬴-᭄᭐-᭙᭫-᭳ᮀ-ᮂᮡ-ᮭ᮰-᮹᯦-᯳ᰤ-᰷᱀-᱉᱐-᱙᳐-᳔᳒-᳨᳭᳴᳷-᳹᷀-᷿‿⁀⁔⃐-⃥⃜⃡-⃰⳯-⵿⳱ⷠ-〪ⷿ-゙゚〯・꘠-꘩꙯ꙴ-꙽ꚞꚟ꛰꛱ꠂ꠆ꠋꠣ-ꠧ꠬ꢀꢁꢴ-ꣅ꣐-꣙꣠-꣱ꣿ-꤉ꤦ-꤭ꥇ-꥓ꦀ-ꦃ꦳-꧀꧐-꧙ꧥ꧰-꧹ꨩ-ꨶꩃꩌꩍ꩐-꩙ꩻ-ꩽꪰꪲ-ꪴꪷꪸꪾ꪿꫁ꫫ-ꫯꫵ꫶ꯣ-ꯪ꯬꯭꯰-꯹ﬞ︀-️︠-︯︳︴﹍-﹏0-9_・";const s=new RegExp("["+r+"]");const i=new RegExp("["+r+n+"]");r=n=null;const o=[0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,14,29,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,13,10,2,14,2,6,2,1,2,10,2,14,2,6,2,1,4,51,13,310,10,21,11,7,25,5,2,41,2,8,70,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,7,25,39,55,7,1,65,0,16,3,2,2,2,28,43,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,14,35,39,27,10,22,251,41,7,1,17,5,57,28,11,0,9,21,43,17,47,20,28,22,13,52,58,1,3,0,14,44,33,24,27,35,30,0,3,0,9,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,20,1,64,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,31,9,2,0,3,0,2,37,2,0,26,0,2,0,45,52,19,3,21,2,31,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,14,0,72,26,38,6,186,43,117,63,32,7,3,0,3,7,2,1,2,23,16,0,2,0,95,7,3,38,17,0,2,0,29,0,11,39,8,0,22,0,12,45,20,0,19,72,200,32,32,8,2,36,18,0,50,29,113,6,2,1,2,37,22,0,26,5,2,1,2,31,15,0,24,43,261,18,16,0,2,12,2,33,125,0,80,921,103,110,18,195,2637,96,16,1071,18,5,26,3994,6,582,6842,29,1763,568,8,30,18,78,18,29,19,47,17,3,32,20,6,18,433,44,212,63,33,24,3,24,45,74,6,0,67,12,65,1,2,0,15,4,10,7381,42,31,98,114,8702,3,2,6,2,1,2,290,16,0,30,2,3,0,15,3,9,395,2309,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,1845,30,7,5,262,61,147,44,11,6,17,0,322,29,19,43,485,27,229,29,3,0,208,30,2,2,2,1,2,6,3,4,10,1,225,6,2,3,2,1,2,14,2,196,60,67,8,0,1205,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42719,33,4381,3,5773,3,7472,16,621,2467,541,1507,4938,6,8489];const u=[509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,574,3,9,9,7,9,32,4,318,1,78,5,71,10,50,3,123,2,54,14,32,10,3,1,11,3,46,10,8,0,46,9,7,2,37,13,2,9,6,1,45,0,13,2,49,13,9,3,2,11,83,11,7,0,3,0,158,11,6,9,7,3,56,1,2,6,3,1,3,2,10,0,11,1,3,6,4,4,68,8,2,0,3,0,2,3,2,4,2,0,15,1,83,17,10,9,5,0,82,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,7,19,58,14,5,9,243,14,166,9,71,5,2,1,3,3,2,0,2,1,13,9,120,6,3,6,4,0,29,9,41,6,2,3,9,0,10,10,47,15,199,7,137,9,54,7,2,7,17,9,57,21,2,13,123,5,4,0,2,1,2,6,2,0,9,9,49,4,2,1,2,4,9,9,55,9,266,3,10,1,2,0,49,6,4,4,14,10,5350,0,7,14,11465,27,2343,9,87,9,39,4,60,6,26,9,535,9,470,0,2,54,8,3,82,0,12,1,19628,1,4178,9,519,45,3,22,543,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,101,0,161,6,10,9,357,0,62,13,499,13,245,1,2,9,233,0,3,0,8,1,6,0,475,6,110,6,6,9,4759,9,787719,239];function isInAstralSet(e,t){let r=65536;for(let n=0,s=t.length;n<s;n+=2){r+=t[n];if(r>e)return false;r+=t[n+1];if(r>=e)return true}return false}function isIdentifierStart(e){if(e<65)return e===36;if(e<=90)return true;if(e<97)return e===95;if(e<=122)return true;if(e<=65535){return e>=170&&s.test(String.fromCharCode(e))}return isInAstralSet(e,o)}function isIdentifierChar(e){if(e<48)return e===36;if(e<58)return true;if(e<65)return false;if(e<=90)return true;if(e<97)return e===95;if(e<=122)return true;if(e<=65535){return e>=170&&i.test(String.fromCharCode(e))}return isInAstralSet(e,o)||isInAstralSet(e,u)}function isIdentifierName(e){let t=true;for(let r=0;r<e.length;r++){let n=e.charCodeAt(r);if((n&64512)===55296&&r+1<e.length){const t=e.charCodeAt(++r);if((t&64512)===56320){n=65536+((n&1023)<<10)+(t&1023)}}if(t){t=false;if(!isIdentifierStart(n)){return false}}else if(!isIdentifierChar(n)){return false}}return!t}},8740:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});Object.defineProperty(t,"isIdentifierChar",{enumerable:true,get:function(){return n.isIdentifierChar}});Object.defineProperty(t,"isIdentifierName",{enumerable:true,get:function(){return n.isIdentifierName}});Object.defineProperty(t,"isIdentifierStart",{enumerable:true,get:function(){return n.isIdentifierStart}});Object.defineProperty(t,"isKeyword",{enumerable:true,get:function(){return s.isKeyword}});Object.defineProperty(t,"isReservedWord",{enumerable:true,get:function(){return s.isReservedWord}});Object.defineProperty(t,"isStrictBindOnlyReservedWord",{enumerable:true,get:function(){return s.isStrictBindOnlyReservedWord}});Object.defineProperty(t,"isStrictBindReservedWord",{enumerable:true,get:function(){return s.isStrictBindReservedWord}});Object.defineProperty(t,"isStrictReservedWord",{enumerable:true,get:function(){return s.isStrictReservedWord}});var n=r(3357);var s=r(1391)},1391:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.isKeyword=isKeyword;t.isReservedWord=isReservedWord;t.isStrictBindOnlyReservedWord=isStrictBindOnlyReservedWord;t.isStrictBindReservedWord=isStrictBindReservedWord;t.isStrictReservedWord=isStrictReservedWord;const r={keyword:["break","case","catch","continue","debugger","default","do","else","finally","for","function","if","return","switch","throw","try","var","const","while","with","new","this","super","class","extends","export","import","null","true","false","in","instanceof","typeof","void","delete"],strict:["implements","interface","let","package","private","protected","public","static","yield"],strictBind:["eval","arguments"]};const n=new Set(r.keyword);const s=new Set(r.strict);const i=new Set(r.strictBind);function isReservedWord(e,t){return t&&e==="await"||e==="enum"}function isStrictReservedWord(e,t){return isReservedWord(e,t)||s.has(e)}function isStrictBindOnlyReservedWord(e){return i.has(e)}function isStrictBindReservedWord(e,t){return isStrictReservedWord(e,t)||isStrictBindOnlyReservedWord(e)}function isKeyword(e){return n.has(e)}},5934:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.LRUCache=void 0;const r=typeof performance==="object"&&performance&&typeof performance.now==="function"?performance:Date;const n=new Set;const s=typeof process==="object"&&!!process?process:{};const emitWarning=(e,t,r,n)=>{typeof s.emitWarning==="function"?s.emitWarning(e,t,r,n):console.error(`[${r}] ${t}: ${e}`)};let i=globalThis.AbortController;let o=globalThis.AbortSignal;if(typeof i==="undefined"){o=class AbortSignal{onabort;_onabort=[];reason;aborted=false;addEventListener(e,t){this._onabort.push(t)}};i=class AbortController{constructor(){warnACPolyfill()}signal=new o;abort(e){if(this.signal.aborted)return;this.signal.reason=e;this.signal.aborted=true;for(const t of this.signal._onabort){t(e)}this.signal.onabort?.(e)}};let e=s.env?.LRU_CACHE_IGNORE_AC_WARNING!=="1";const warnACPolyfill=()=>{if(!e)return;e=false;emitWarning("AbortController is not defined. If using lru-cache in "+"node 14, load an AbortController polyfill from the "+"`node-abort-controller` package. A minimal polyfill is "+"provided for use by LRUCache.fetch(), but it should not be "+"relied upon in other contexts (eg, passing it to other APIs that "+"use AbortController/AbortSignal might have undesirable effects). "+"You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",warnACPolyfill)}}const shouldWarn=e=>!n.has(e);const u=Symbol("type");const isPosInt=e=>e&&e===Math.floor(e)&&e>0&&isFinite(e);const getUintArray=e=>!isPosInt(e)?null:e<=Math.pow(2,8)?Uint8Array:e<=Math.pow(2,16)?Uint16Array:e<=Math.pow(2,32)?Uint32Array:e<=Number.MAX_SAFE_INTEGER?ZeroArray:null;class ZeroArray extends Array{constructor(e){super(e);this.fill(0)}}class Stack{heap;length;static#s=false;static create(e){const t=getUintArray(e);if(!t)return[];Stack.#s=true;const r=new Stack(e,t);Stack.#s=false;return r}constructor(e,t){if(!Stack.#s){throw new TypeError("instantiate Stack using Stack.create(n)")}this.heap=new t(e);this.length=0}push(e){this.heap[this.length++]=e}pop(){return this.heap[--this.length]}}class LRUCache{#i;#o;#u;#a;#c;#l;ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#f;#p;#h;#d;#g;#m;#D;#A;#E;#y;#C;#w;#b;#v;#F;#_;#S;static unsafeExposeInternals(e){return{starts:e.#b,ttls:e.#v,sizes:e.#w,keyMap:e.#h,keyList:e.#d,valList:e.#g,next:e.#m,prev:e.#D,get head(){return e.#A},get tail(){return e.#E},free:e.#y,isBackgroundFetch:t=>e.#x(t),backgroundFetch:(t,r,n,s)=>e.#O(t,r,n,s),moveToTail:t=>e.#R(t),indexes:t=>e.#k(t),rindexes:t=>e.#$(t),isStale:t=>e.#B(t)}}get max(){return this.#i}get maxSize(){return this.#o}get calculatedSize(){return this.#p}get size(){return this.#f}get fetchMethod(){return this.#c}get memoMethod(){return this.#l}get dispose(){return this.#u}get disposeAfter(){return this.#a}constructor(e){const{max:t=0,ttl:r,ttlResolution:s=1,ttlAutopurge:i,updateAgeOnGet:o,updateAgeOnHas:u,allowStale:a,dispose:c,disposeAfter:l,noDisposeOnSet:f,noUpdateTTL:p,maxSize:h=0,maxEntrySize:d=0,sizeCalculation:g,fetchMethod:m,memoMethod:D,noDeleteOnFetchRejection:A,noDeleteOnStaleGet:E,allowStaleOnFetchRejection:y,allowStaleOnFetchAbort:C,ignoreFetchAbort:w}=e;if(t!==0&&!isPosInt(t)){throw new TypeError("max option must be a nonnegative integer")}const b=t?getUintArray(t):Array;if(!b){throw new Error("invalid max value: "+t)}this.#i=t;this.#o=h;this.maxEntrySize=d||this.#o;this.sizeCalculation=g;if(this.sizeCalculation){if(!this.#o&&!this.maxEntrySize){throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize")}if(typeof this.sizeCalculation!=="function"){throw new TypeError("sizeCalculation set to non-function")}}if(D!==undefined&&typeof D!=="function"){throw new TypeError("memoMethod must be a function if defined")}this.#l=D;if(m!==undefined&&typeof m!=="function"){throw new TypeError("fetchMethod must be a function if specified")}this.#c=m;this.#_=!!m;this.#h=new Map;this.#d=new Array(t).fill(undefined);this.#g=new Array(t).fill(undefined);this.#m=new b(t);this.#D=new b(t);this.#A=0;this.#E=0;this.#y=Stack.create(t);this.#f=0;this.#p=0;if(typeof c==="function"){this.#u=c}if(typeof l==="function"){this.#a=l;this.#C=[]}else{this.#a=undefined;this.#C=undefined}this.#F=!!this.#u;this.#S=!!this.#a;this.noDisposeOnSet=!!f;this.noUpdateTTL=!!p;this.noDeleteOnFetchRejection=!!A;this.allowStaleOnFetchRejection=!!y;this.allowStaleOnFetchAbort=!!C;this.ignoreFetchAbort=!!w;if(this.maxEntrySize!==0){if(this.#o!==0){if(!isPosInt(this.#o)){throw new TypeError("maxSize must be a positive integer if specified")}}if(!isPosInt(this.maxEntrySize)){throw new TypeError("maxEntrySize must be a positive integer if specified")}this.#L()}this.allowStale=!!a;this.noDeleteOnStaleGet=!!E;this.updateAgeOnGet=!!o;this.updateAgeOnHas=!!u;this.ttlResolution=isPosInt(s)||s===0?s:1;this.ttlAutopurge=!!i;this.ttl=r||0;if(this.ttl){if(!isPosInt(this.ttl)){throw new TypeError("ttl must be a positive integer if specified")}this.#I()}if(this.#i===0&&this.ttl===0&&this.#o===0){throw new TypeError("At least one of max, maxSize, or ttl is required")}if(!this.ttlAutopurge&&!this.#i&&!this.#o){const e="LRU_CACHE_UNBOUNDED";if(shouldWarn(e)){n.add(e);const t="TTL caching without ttlAutopurge, max, or maxSize can "+"result in unbounded memory consumption.";emitWarning(t,"UnboundedCacheWarning",e,LRUCache)}}}getRemainingTTL(e){return this.#h.has(e)?Infinity:0}#I(){const e=new ZeroArray(this.#i);const t=new ZeroArray(this.#i);this.#v=e;this.#b=t;this.#P=(n,s,i=r.now())=>{t[n]=s!==0?i:0;e[n]=s;if(s!==0&&this.ttlAutopurge){const e=setTimeout((()=>{if(this.#B(n)){this.#N(this.#d[n],"expire")}}),s+1);if(e.unref){e.unref()}}};this.#T=n=>{t[n]=e[n]!==0?r.now():0};this.#M=(r,s)=>{if(e[s]){const i=e[s];const o=t[s];if(!i||!o)return;r.ttl=i;r.start=o;r.now=n||getNow();const u=r.now-o;r.remainingTTL=i-u}};let n=0;const getNow=()=>{const e=r.now();if(this.ttlResolution>0){n=e;const t=setTimeout((()=>n=0),this.ttlResolution);if(t.unref){t.unref()}}return e};this.getRemainingTTL=r=>{const s=this.#h.get(r);if(s===undefined){return 0}const i=e[s];const o=t[s];if(!i||!o){return Infinity}const u=(n||getNow())-o;return i-u};this.#B=r=>{const s=t[r];const i=e[r];return!!i&&!!s&&(n||getNow())-s>i}}#T=()=>{};#M=()=>{};#P=()=>{};#B=()=>false;#L(){const e=new ZeroArray(this.#i);this.#p=0;this.#w=e;this.#j=t=>{this.#p-=e[t];e[t]=0};this.#H=(e,t,r,n)=>{if(this.#x(t)){return 0}if(!isPosInt(r)){if(n){if(typeof n!=="function"){throw new TypeError("sizeCalculation must be a function")}r=n(t,e);if(!isPosInt(r)){throw new TypeError("sizeCalculation return invalid (expect positive integer)")}}else{throw new TypeError("invalid size value (must be positive integer). "+"When maxSize or maxEntrySize is used, sizeCalculation "+"or size must be set.")}}return r};this.#G=(t,r,n)=>{e[t]=r;if(this.#o){const r=this.#o-e[t];while(this.#p>r){this.#U(true)}}this.#p+=e[t];if(n){n.entrySize=r;n.totalCalculatedSize=this.#p}}}#j=e=>{};#G=(e,t,r)=>{};#H=(e,t,r,n)=>{if(r||n){throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache")}return 0};*#k({allowStale:e=this.allowStale}={}){if(this.#f){for(let t=this.#E;true;){if(!this.#W(t)){break}if(e||!this.#B(t)){yield t}if(t===this.#A){break}else{t=this.#D[t]}}}}*#$({allowStale:e=this.allowStale}={}){if(this.#f){for(let t=this.#A;true;){if(!this.#W(t)){break}if(e||!this.#B(t)){yield t}if(t===this.#E){break}else{t=this.#m[t]}}}}#W(e){return e!==undefined&&this.#h.get(this.#d[e])===e}*entries(){for(const e of this.#k()){if(this.#g[e]!==undefined&&this.#d[e]!==undefined&&!this.#x(this.#g[e])){yield[this.#d[e],this.#g[e]]}}}*rentries(){for(const e of this.#$()){if(this.#g[e]!==undefined&&this.#d[e]!==undefined&&!this.#x(this.#g[e])){yield[this.#d[e],this.#g[e]]}}}*keys(){for(const e of this.#k()){const t=this.#d[e];if(t!==undefined&&!this.#x(this.#g[e])){yield t}}}*rkeys(){for(const e of this.#$()){const t=this.#d[e];if(t!==undefined&&!this.#x(this.#g[e])){yield t}}}*values(){for(const e of this.#k()){const t=this.#g[e];if(t!==undefined&&!this.#x(this.#g[e])){yield this.#g[e]}}}*rvalues(){for(const e of this.#$()){const t=this.#g[e];if(t!==undefined&&!this.#x(this.#g[e])){yield this.#g[e]}}}[Symbol.iterator](){return this.entries()}[Symbol.toStringTag]="LRUCache";find(e,t={}){for(const r of this.#k()){const n=this.#g[r];const s=this.#x(n)?n.__staleWhileFetching:n;if(s===undefined)continue;if(e(s,this.#d[r],this)){return this.get(this.#d[r],t)}}}forEach(e,t=this){for(const r of this.#k()){const n=this.#g[r];const s=this.#x(n)?n.__staleWhileFetching:n;if(s===undefined)continue;e.call(t,s,this.#d[r],this)}}rforEach(e,t=this){for(const r of this.#$()){const n=this.#g[r];const s=this.#x(n)?n.__staleWhileFetching:n;if(s===undefined)continue;e.call(t,s,this.#d[r],this)}}purgeStale(){let e=false;for(const t of this.#$({allowStale:true})){if(this.#B(t)){this.#N(this.#d[t],"expire");e=true}}return e}info(e){const t=this.#h.get(e);if(t===undefined)return undefined;const n=this.#g[t];const s=this.#x(n)?n.__staleWhileFetching:n;if(s===undefined)return undefined;const i={value:s};if(this.#v&&this.#b){const e=this.#v[t];const n=this.#b[t];if(e&&n){const t=e-(r.now()-n);i.ttl=t;i.start=Date.now()}}if(this.#w){i.size=this.#w[t]}return i}dump(){const e=[];for(const t of this.#k({allowStale:true})){const n=this.#d[t];const s=this.#g[t];const i=this.#x(s)?s.__staleWhileFetching:s;if(i===undefined||n===undefined)continue;const o={value:i};if(this.#v&&this.#b){o.ttl=this.#v[t];const e=r.now()-this.#b[t];o.start=Math.floor(Date.now()-e)}if(this.#w){o.size=this.#w[t]}e.unshift([n,o])}return e}load(e){this.clear();for(const[t,n]of e){if(n.start){const e=Date.now()-n.start;n.start=r.now()-e}this.set(t,n.value,n)}}set(e,t,r={}){if(t===undefined){this.delete(e);return this}const{ttl:n=this.ttl,start:s,noDisposeOnSet:i=this.noDisposeOnSet,sizeCalculation:o=this.sizeCalculation,status:u}=r;let{noUpdateTTL:a=this.noUpdateTTL}=r;const c=this.#H(e,t,r.size||0,o);if(this.maxEntrySize&&c>this.maxEntrySize){if(u){u.set="miss";u.maxEntrySizeExceeded=true}this.#N(e,"set");return this}let l=this.#f===0?undefined:this.#h.get(e);if(l===undefined){l=this.#f===0?this.#E:this.#y.length!==0?this.#y.pop():this.#f===this.#i?this.#U(false):this.#f;this.#d[l]=e;this.#g[l]=t;this.#h.set(e,l);this.#m[this.#E]=l;this.#D[l]=this.#E;this.#E=l;this.#f++;this.#G(l,c,u);if(u)u.set="add";a=false}else{this.#R(l);const r=this.#g[l];if(t!==r){if(this.#_&&this.#x(r)){r.__abortController.abort(new Error("replaced"));const{__staleWhileFetching:t}=r;if(t!==undefined&&!i){if(this.#F){this.#u?.(t,e,"set")}if(this.#S){this.#C?.push([t,e,"set"])}}}else if(!i){if(this.#F){this.#u?.(r,e,"set")}if(this.#S){this.#C?.push([r,e,"set"])}}this.#j(l);this.#G(l,c,u);this.#g[l]=t;if(u){u.set="replace";const e=r&&this.#x(r)?r.__staleWhileFetching:r;if(e!==undefined)u.oldValue=e}}else if(u){u.set="update"}}if(n!==0&&!this.#v){this.#I()}if(this.#v){if(!a){this.#P(l,n,s)}if(u)this.#M(u,l)}if(!i&&this.#S&&this.#C){const e=this.#C;let t;while(t=e?.shift()){this.#a?.(...t)}}return this}pop(){try{while(this.#f){const e=this.#g[this.#A];this.#U(true);if(this.#x(e)){if(e.__staleWhileFetching){return e.__staleWhileFetching}}else if(e!==undefined){return e}}}finally{if(this.#S&&this.#C){const e=this.#C;let t;while(t=e?.shift()){this.#a?.(...t)}}}}#U(e){const t=this.#A;const r=this.#d[t];const n=this.#g[t];if(this.#_&&this.#x(n)){n.__abortController.abort(new Error("evicted"))}else if(this.#F||this.#S){if(this.#F){this.#u?.(n,r,"evict")}if(this.#S){this.#C?.push([n,r,"evict"])}}this.#j(t);if(e){this.#d[t]=undefined;this.#g[t]=undefined;this.#y.push(t)}if(this.#f===1){this.#A=this.#E=0;this.#y.length=0}else{this.#A=this.#m[t]}this.#h.delete(r);this.#f--;return t}has(e,t={}){const{updateAgeOnHas:r=this.updateAgeOnHas,status:n}=t;const s=this.#h.get(e);if(s!==undefined){const e=this.#g[s];if(this.#x(e)&&e.__staleWhileFetching===undefined){return false}if(!this.#B(s)){if(r){this.#T(s)}if(n){n.has="hit";this.#M(n,s)}return true}else if(n){n.has="stale";this.#M(n,s)}}else if(n){n.has="miss"}return false}peek(e,t={}){const{allowStale:r=this.allowStale}=t;const n=this.#h.get(e);if(n===undefined||!r&&this.#B(n)){return}const s=this.#g[n];return this.#x(s)?s.__staleWhileFetching:s}#O(e,t,r,n){const s=t===undefined?undefined:this.#g[t];if(this.#x(s)){return s}const o=new i;const{signal:u}=r;u?.addEventListener("abort",(()=>o.abort(u.reason)),{signal:o.signal});const a={signal:o.signal,options:r,context:n};const cb=(n,s=false)=>{const{aborted:i}=o.signal;const u=r.ignoreFetchAbort&&n!==undefined;if(r.status){if(i&&!s){r.status.fetchAborted=true;r.status.fetchError=o.signal.reason;if(u)r.status.fetchAbortIgnored=true}else{r.status.fetchResolved=true}}if(i&&!u&&!s){return fetchFail(o.signal.reason)}const l=c;if(this.#g[t]===c){if(n===undefined){if(l.__staleWhileFetching){this.#g[t]=l.__staleWhileFetching}else{this.#N(e,"fetch")}}else{if(r.status)r.status.fetchUpdated=true;this.set(e,n,a.options)}}return n};const eb=e=>{if(r.status){r.status.fetchRejected=true;r.status.fetchError=e}return fetchFail(e)};const fetchFail=n=>{const{aborted:s}=o.signal;const i=s&&r.allowStaleOnFetchAbort;const u=i||r.allowStaleOnFetchRejection;const a=u||r.noDeleteOnFetchRejection;const l=c;if(this.#g[t]===c){const r=!a||l.__staleWhileFetching===undefined;if(r){this.#N(e,"fetch")}else if(!i){this.#g[t]=l.__staleWhileFetching}}if(u){if(r.status&&l.__staleWhileFetching!==undefined){r.status.returnedStale=true}return l.__staleWhileFetching}else if(l.__returned===l){throw n}};const pcall=(t,n)=>{const i=this.#c?.(e,s,a);if(i&&i instanceof Promise){i.then((e=>t(e===undefined?undefined:e)),n)}o.signal.addEventListener("abort",(()=>{if(!r.ignoreFetchAbort||r.allowStaleOnFetchAbort){t(undefined);if(r.allowStaleOnFetchAbort){t=e=>cb(e,true)}}}))};if(r.status)r.status.fetchDispatched=true;const c=new Promise(pcall).then(cb,eb);const l=Object.assign(c,{__abortController:o,__staleWhileFetching:s,__returned:undefined});if(t===undefined){this.set(e,l,{...a.options,status:undefined});t=this.#h.get(e)}else{this.#g[t]=l}return l}#x(e){if(!this.#_)return false;const t=e;return!!t&&t instanceof Promise&&t.hasOwnProperty("__staleWhileFetching")&&t.__abortController instanceof i}async fetch(e,t={}){const{allowStale:r=this.allowStale,updateAgeOnGet:n=this.updateAgeOnGet,noDeleteOnStaleGet:s=this.noDeleteOnStaleGet,ttl:i=this.ttl,noDisposeOnSet:o=this.noDisposeOnSet,size:u=0,sizeCalculation:a=this.sizeCalculation,noUpdateTTL:c=this.noUpdateTTL,noDeleteOnFetchRejection:l=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:f=this.allowStaleOnFetchRejection,ignoreFetchAbort:p=this.ignoreFetchAbort,allowStaleOnFetchAbort:h=this.allowStaleOnFetchAbort,context:d,forceRefresh:g=false,status:m,signal:D}=t;if(!this.#_){if(m)m.fetch="get";return this.get(e,{allowStale:r,updateAgeOnGet:n,noDeleteOnStaleGet:s,status:m})}const A={allowStale:r,updateAgeOnGet:n,noDeleteOnStaleGet:s,ttl:i,noDisposeOnSet:o,size:u,sizeCalculation:a,noUpdateTTL:c,noDeleteOnFetchRejection:l,allowStaleOnFetchRejection:f,allowStaleOnFetchAbort:h,ignoreFetchAbort:p,status:m,signal:D};let E=this.#h.get(e);if(E===undefined){if(m)m.fetch="miss";const t=this.#O(e,E,A,d);return t.__returned=t}else{const t=this.#g[E];if(this.#x(t)){const e=r&&t.__staleWhileFetching!==undefined;if(m){m.fetch="inflight";if(e)m.returnedStale=true}return e?t.__staleWhileFetching:t.__returned=t}const s=this.#B(E);if(!g&&!s){if(m)m.fetch="hit";this.#R(E);if(n){this.#T(E)}if(m)this.#M(m,E);return t}const i=this.#O(e,E,A,d);const o=i.__staleWhileFetching!==undefined;const u=o&&r;if(m){m.fetch=s?"stale":"refresh";if(u&&s)m.returnedStale=true}return u?i.__staleWhileFetching:i.__returned=i}}async forceFetch(e,t={}){const r=await this.fetch(e,t);if(r===undefined)throw new Error("fetch() returned undefined");return r}memo(e,t={}){const r=this.#l;if(!r){throw new Error("no memoMethod provided to constructor")}const{context:n,forceRefresh:s,...i}=t;const o=this.get(e,i);if(!s&&o!==undefined)return o;const u=r(e,o,{options:i,context:n});this.set(e,u,i);return u}get(e,t={}){const{allowStale:r=this.allowStale,updateAgeOnGet:n=this.updateAgeOnGet,noDeleteOnStaleGet:s=this.noDeleteOnStaleGet,status:i}=t;const o=this.#h.get(e);if(o!==undefined){const t=this.#g[o];const u=this.#x(t);if(i)this.#M(i,o);if(this.#B(o)){if(i)i.get="stale";if(!u){if(!s){this.#N(e,"expire")}if(i&&r)i.returnedStale=true;return r?t:undefined}else{if(i&&r&&t.__staleWhileFetching!==undefined){i.returnedStale=true}return r?t.__staleWhileFetching:undefined}}else{if(i)i.get="hit";if(u){return t.__staleWhileFetching}this.#R(o);if(n){this.#T(o)}return t}}else if(i){i.get="miss"}}#z(e,t){this.#D[t]=e;this.#m[e]=t}#R(e){if(e!==this.#E){if(e===this.#A){this.#A=this.#m[e]}else{this.#z(this.#D[e],this.#m[e])}this.#z(this.#E,e);this.#E=e}}delete(e){return this.#N(e,"delete")}#N(e,t){let r=false;if(this.#f!==0){const n=this.#h.get(e);if(n!==undefined){r=true;if(this.#f===1){this.#q(t)}else{this.#j(n);const r=this.#g[n];if(this.#x(r)){r.__abortController.abort(new Error("deleted"))}else if(this.#F||this.#S){if(this.#F){this.#u?.(r,e,t)}if(this.#S){this.#C?.push([r,e,t])}}this.#h.delete(e);this.#d[n]=undefined;this.#g[n]=undefined;if(n===this.#E){this.#E=this.#D[n]}else if(n===this.#A){this.#A=this.#m[n]}else{const e=this.#D[n];this.#m[e]=this.#m[n];const t=this.#m[n];this.#D[t]=this.#D[n]}this.#f--;this.#y.push(n)}}}if(this.#S&&this.#C?.length){const e=this.#C;let t;while(t=e?.shift()){this.#a?.(...t)}}return r}clear(){return this.#q("delete")}#q(e){for(const t of this.#$({allowStale:true})){const r=this.#g[t];if(this.#x(r)){r.__abortController.abort(new Error("deleted"))}else{const n=this.#d[t];if(this.#F){this.#u?.(r,n,e)}if(this.#S){this.#C?.push([r,n,e])}}}this.#h.clear();this.#g.fill(undefined);this.#d.fill(undefined);if(this.#v&&this.#b){this.#v.fill(0);this.#b.fill(0)}if(this.#w){this.#w.fill(0)}this.#A=0;this.#E=0;this.#y.length=0;this.#p=0;this.#f=0;if(this.#S&&this.#C){const e=this.#C;let t;while(t=e?.shift()){this.#a?.(...t)}}}}t.LRUCache=LRUCache},8330:e=>{"use strict";e.exports=JSON.parse('{"name":"create-expo","version":"5.0.0","bin":"./bin/create-expo.js","main":"build","description":"Create universal Expo apps","license":"BSD-3-Clause","keywords":["expo","react-native","react"],"homepage":"https://docs.expo.dev","repository":{"type":"git","url":"https://github.com/expo/expo.git","directory":"packages/create-expo"},"author":"Evan Bacon <bacon@expo.io> (https://github.com/evanbacon)","files":["bin","build","template"],"engines":{"node":">=18.13.0"},"scripts":{"build":"ncc build ./src/index.ts -o build/","build:prod":"ncc build ./src/index.ts -o build/ --minify --no-cache --no-source-map-register","clean":"expo-module clean","lint":"expo-module lint","typecheck":"expo-module typecheck","test":"expo-module test","test:e2e":"expo-module test --config e2e/jest.config.js --runInBand","watch":"pnpm run build --watch","prepublishOnly":"pnpm run clean && pnpm run build:prod"},"devDependencies":{"@expo/config":"workspace:*","@expo/json-file":"workspace:*","@expo/package-manager":"workspace:*","@expo/spawn-async":"^1.8.0","@octokit/types":"^13.5.0","@types/debug":"^4.1.7","@types/getenv":"^1.0.0","@types/node":"^22.14.0","@types/picomatch":"^2.3.3","@types/prompts":"2.0.14","@vercel/ncc":"^0.38.3","arg":"^5.0.2","chalk":"^4.0.0","debug":"^4.3.4","expo-module-scripts":"workspace:*","getenv":"^2.0.0","glob":"^13.0.0","nock":"^14.0.10","ora":"3.4.0","picomatch":"^2.3.2","prompts":"^2.4.2","multitars":"^1.0.0","update-check":"^1.5.4"},"gitHead":"e3eb896c5fdcd89e0cded98ff4e35c9db12cc9c0"}')}};var t={};function __nccwpck_require__(r){var n=t[r];if(n!==undefined){return n.exports}var s=t[r]={id:r,loaded:false,exports:{}};var i=true;try{e[r].call(s.exports,s,s.exports,__nccwpck_require__);i=false}finally{if(i)delete t[r]}s.loaded=true;return s.exports}__nccwpck_require__.m=e;(()=>{__nccwpck_require__.n=e=>{var t=e&&e.__esModule?()=>e["default"]:()=>e;__nccwpck_require__.d(t,{a:t});return t}})();(()=>{var e=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__;var t;__nccwpck_require__.t=function(r,n){if(n&1)r=this(r);if(n&8)return r;if(typeof r==="object"&&r){if(n&4&&r.__esModule)return r;if(n&16&&typeof r.then==="function")return r}var s=Object.create(null);__nccwpck_require__.r(s);var i={};t=t||[null,e({}),e([]),e(e)];for(var o=n&2&&r;typeof o=="object"&&!~t.indexOf(o);o=e(o)){Object.getOwnPropertyNames(o).forEach((e=>i[e]=()=>r[e]))}i["default"]=()=>r;__nccwpck_require__.d(s,i);return s}})();(()=>{__nccwpck_require__.d=(e,t)=>{for(var r in t){if(__nccwpck_require__.o(t,r)&&!__nccwpck_require__.o(e,r)){Object.defineProperty(e,r,{enumerable:true,get:t[r]})}}}})();(()=>{__nccwpck_require__.f={};__nccwpck_require__.e=e=>Promise.all(Object.keys(__nccwpck_require__.f).reduce(((t,r)=>{__nccwpck_require__.f[r](e,t);return t}),[]))})();(()=>{__nccwpck_require__.u=e=>""+e+".index.js"})();(()=>{__nccwpck_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})();(()=>{__nccwpck_require__.r=e=>{if(typeof Symbol!=="undefined"&&Symbol.toStringTag){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"})}Object.defineProperty(e,"__esModule",{value:true})}})();(()=>{__nccwpck_require__.nmd=e=>{e.paths=[];if(!e.children)e.children=[];return e}})();if(typeof __nccwpck_require__!=="undefined")__nccwpck_require__.ab=__dirname+"/";(()=>{var e={792:1};var installChunk=t=>{var r=t.modules,n=t.ids,s=t.runtime;for(var i in r){if(__nccwpck_require__.o(r,i)){__nccwpck_require__.m[i]=r[i]}}if(s)s(__nccwpck_require__);for(var o=0;o<n.length;o++)e[n[o]]=1};__nccwpck_require__.f.require=(t,r)=>{if(!e[t]){if(true){installChunk(require("./"+__nccwpck_require__.u(t)))}else e[t]=1}}})();var r={};(()=>{"use strict";__nccwpck_require__.r(r);var e=__nccwpck_require__(6675);var t=__nccwpck_require__.n(e);var n=__nccwpck_require__(277);var s=__nccwpck_require__.n(n);var i=__nccwpck_require__(6467);process.title=i.V;if((0,n.boolish)("EXPO_DEBUG",false)){t().enable("expo:init:*")}else if(t().enabled("expo:init:")){process.env.EXPO_DEBUG="1"}__nccwpck_require__(4456)})();module.exports=r})();
|
|
49
|
+
`)}const{AnalyticsEventPhases:c,AnalyticsEventTypes:l,flushAsync:p,track:h}=await r.e(601).then(r.bind(r,601));try{const s=await resolveStringOrBooleanArgsAsync(e,t,{"--template":Boolean,"--example":Boolean,"-t":"--template","-e":"--example"});f(`Default args:\n%O`,n);f(`Parsed:\n%O`,s);const{createAsync:i}=await Promise.all([r.e(223),r.e(205)]).then(r.bind(r,8205));await i(s.projectRoot,{yes:!!n["--yes"],template:s.args["--template"],example:s.args["--example"],install:!n["--no-install"],agentsMd:!n["--no-agents-md"]});h({event:l.CREATE_EXPO_APP,properties:{phase:c.SUCCESS}});await p()}catch(e){if(!(e instanceof o.R)){u.tG.exception(e)}h({event:l.CREATE_EXPO_APP,properties:{phase:c.FAIL,message:e.cause}});await p().finally((()=>{process.exit(e.code||1)}))}finally{const e=await(await r.e(517).then(r.bind(r,7517))).default;await e()}}run()},6467:(e,t,r)=>{"use strict";r.d(t,{V:()=>n});const n=r(8330).name},6725:(e,t,r)=>{"use strict";r.d(t,{R:()=>ExitError});class ExitError extends Error{cause;code;constructor(e,t){super(e instanceof Error?e.message:e);this.cause=e;this.code=t}}},1545:(e,t,r)=>{"use strict";r.d(t,{NS:()=>exit,tG:()=>o});var n=r(2314);var s=r.n(n);var i=r(6725);function error(...e){console.error(...e)}function exception(e){const{env:t}=r(4342);error(s().red(e.toString())+(t.EXPO_DEBUG?"\n"+s().gray(e.stack):""))}function log(...e){console.log(...e)}function exit(e,t=1){if(e instanceof Error){exception(e)}else if(e){if(t===0){log(e)}else{error(e)}}if(t!==0){throw new i.R(e,t)}process.exit(t)}const o={error:error,exception:exception,log:log,exit:exit}},9560:(e,t,r)=>{"use strict";r.d(t,{DC:()=>installDependenciesAsync,MZ:()=>configurePackageManager,Wq:()=>formatRunCommand,_c:()=>resolvePackageManager,fZ:()=>formatSelfCommand});var n=r(6268);var s=r.n(n);var i=r(5317);var o=r.n(i);var u=r(6467);const a=r(6675)("expo:init:resolvePackageManager");function resolvePackageManager(){const e=process.env.npm_config_user_agent;a("npm_config_user_agent:",e);if(e?.startsWith("yarn")){return"yarn"}else if(e?.startsWith("pnpm")){return"pnpm"}else if(e?.startsWith("bun")){return"bun"}else if(e?.startsWith("npm")){return"npm"}if(isPackageManagerAvailable("yarn")){return"yarn"}else if(isPackageManagerAvailable("pnpm")){return"pnpm"}else if(isPackageManagerAvailable("bun")){return"bun"}return"npm"}function isPackageManagerAvailable(e){try{(0,i.execSync)(`${e} --version`,{stdio:"ignore"});return true}catch{}return false}function formatRunCommand(e,t){switch(e){case"pnpm":return`pnpm run ${t}`;case"yarn":return`yarn ${t}`;case"bun":return`bun run ${t}`;case"npm":default:return`npm run ${t}`}}function formatSelfCommand(){const e=resolvePackageManager();switch(e){case"pnpm":return`pnpx ${u.V}`;case"bun":return`bunx ${u.V}`;case"yarn":case"npm":default:return`npx ${u.V}`}}function createPackageManager(e,t){switch(e){case"yarn":return new n.YarnPackageManager(t);case"pnpm":return new n.PnpmPackageManager(t);case"bun":return new n.BunPackageManager(t);case"npm":default:return new n.NpmPackageManager(t)}}async function installDependenciesAsync(e,t,r={silent:false}){await createPackageManager(t,{cwd:e,silent:r.silent}).installAsync()}async function configurePackageManager(e,t,r={silent:false}){const n=createPackageManager(t,{cwd:e,...r});switch(n.name){case"yarn":{const e=await n.versionAsync();const t=parseInt(e.split(".")[0]??"",10);if(t>=2){await n.runAsync(["config","set","nodeLinker","node-modules"])}break}}}},4342:(e,t,r)=>{"use strict";r.r(t);r.d(t,{env:()=>i});var n=r(277);var s=r.n(n);class Env{get EXPO_DEBUG(){return(0,n.boolish)("EXPO_DEBUG",false)}get EXPO_BETA(){return(0,n.boolish)("EXPO_BETA",false)}get CI(){return(0,n.boolish)("CI",false)}get EXPO_NO_CACHE(){return(0,n.boolish)("EXPO_NO_CACHE",false)}get EXPO_NO_TELEMETRY(){return(0,n.boolish)("EXPO_NO_TELEMETRY",false)}}const i=new Env},2613:e=>{"use strict";e.exports=require("assert")},181:e=>{"use strict";e.exports=require("buffer")},5317:e=>{"use strict";e.exports=require("child_process")},6982:e=>{"use strict";e.exports=require("crypto")},2250:e=>{"use strict";e.exports=require("dns")},4434:e=>{"use strict";e.exports=require("events")},9896:e=>{"use strict";e.exports=require("fs")},8611:e=>{"use strict";e.exports=require("http")},5692:e=>{"use strict";e.exports=require("https")},3339:e=>{"use strict";e.exports=require("module")},5217:e=>{"use strict";e.exports=require("node:crypto")},8474:e=>{"use strict";e.exports=require("node:events")},3024:e=>{"use strict";e.exports=require("node:fs")},1455:e=>{"use strict";e.exports=require("node:fs/promises")},6760:e=>{"use strict";e.exports=require("node:path")},1708:e=>{"use strict";e.exports=require("node:process")},7075:e=>{"use strict";e.exports=require("node:stream")},6193:e=>{"use strict";e.exports=require("node:string_decoder")},3136:e=>{"use strict";e.exports=require("node:url")},857:e=>{"use strict";e.exports=require("os")},6928:e=>{"use strict";e.exports=require("path")},3785:e=>{"use strict";e.exports=require("readline")},2203:e=>{"use strict";e.exports=require("stream")},2018:e=>{"use strict";e.exports=require("tty")},7016:e=>{"use strict";e.exports=require("url")},9023:e=>{"use strict";e.exports=require("util")},5112:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});var n=r(6831);var s=r(7815);var i=r(8740);function isColorSupported(){return typeof process==="object"&&(process.env.FORCE_COLOR==="0"||process.env.FORCE_COLOR==="false")?false:n.isColorSupported}const compose=(e,t)=>r=>e(t(r));function buildDefs(e){return{keyword:e.cyan,capitalized:e.yellow,jsxIdentifier:e.yellow,punctuator:e.yellow,number:e.magenta,string:e.green,regex:e.magenta,comment:e.gray,invalid:compose(compose(e.white,e.bgRed),e.bold),gutter:e.gray,marker:compose(e.red,e.bold),message:compose(e.red,e.bold),reset:e.reset}}const o=buildDefs(n.createColors(true));const u=buildDefs(n.createColors(false));function getDefs(e){return e?o:u}const a=new Set(["as","async","from","get","of","set"]);const c=/\r\n|[\n\r\u2028\u2029]/;const l=/^[()[\]{}]$/;let f;const p=/^[a-z][\w-]*$/i;const getTokenType=function(e,t,r){if(e.type==="name"){const n=e.value;if(i.isKeyword(n)||i.isStrictReservedWord(n,true)||a.has(n)){return"keyword"}if(p.test(n)&&(r[t-1]==="<"||r.slice(t-2,t)==="</")){return"jsxIdentifier"}const s=String.fromCodePoint(n.codePointAt(0));if(s!==s.toLowerCase()){return"capitalized"}}if(e.type==="punctuator"&&l.test(e.value)){return"bracket"}if(e.type==="invalid"&&(e.value==="@"||e.value==="#")){return"punctuator"}return e.type};f=function*(e){let t;while(t=s.default.exec(e)){const r=s.matchToToken(t);yield{type:getTokenType(r,t.index,e),value:r.value}}};function highlight(e){if(e==="")return"";const t=getDefs(true);let r="";for(const{type:n,value:s}of f(e)){if(n in t){r+=s.split(c).map((e=>t[n](e))).join("\n")}else{r+=s}}return r}let h=false;const d=/\r\n|[\n\r\u2028\u2029]/;function getMarkerLines(e,t,r,n){const s=Object.assign({column:0,line:-1},e.start);const i=Object.assign({},s,e.end);const{linesAbove:o=2,linesBelow:u=3}=r||{};const a=s.line-n;const c=s.column;const l=i.line-n;const f=i.column;let p=Math.max(a-(o+1),0);let h=Math.min(t.length,l+u);if(a===-1){p=0}if(l===-1){h=t.length}const d=l-a;const g={};if(d){for(let e=0;e<=d;e++){const r=e+a;if(!c){g[r]=true}else if(e===0){const e=t[r-1].length;g[r]=[c,e-c+1]}else if(e===d){g[r]=[0,f]}else{const n=t[r-e].length;g[r]=[0,n]}}}else{if(c===f){if(c){g[a]=[c,0]}else{g[a]=true}}else{g[a]=[c,f-c]}}return{start:p,end:h,markerLines:g}}function codeFrameColumns(e,t,r={}){const n=r.forceColor||isColorSupported()&&r.highlightCode;const s=(r.startLine||1)-1;const i=getDefs(n);const o=e.split(d);const{start:u,end:a,markerLines:c}=getMarkerLines(t,o,r,s);const l=t.start&&typeof t.start.column==="number";const f=String(a+s).length;const p=n?highlight(e):e;let h=p.split(d,a).slice(u,a).map(((e,t)=>{const n=u+1+t;const o=` ${n+s}`.slice(-f);const a=` ${o} |`;const l=c[n];const p=!c[n+1];if(l){let t="";if(Array.isArray(l)){const n=e.slice(0,Math.max(l[0]-1,0)).replace(/[^\t]/g," ");const s=l[1]||1;t=["\n ",i.gutter(a.replace(/\d/g," "))," ",n,i.marker("^").repeat(s)].join("");if(p&&r.message){t+=" "+i.message(r.message)}}return[i.marker(">"),i.gutter(a),e.length>0?` ${e}`:"",t].join("")}else{return` ${i.gutter(a)}${e.length>0?` ${e}`:""}`}})).join("\n");if(r.message&&!l){h=`${" ".repeat(f+1)}${r.message}\n${h}`}if(n){return i.reset(h)}else{return h}}function index(e,t,r,n={}){if(!h){h=true;const e="Passing lineNumber and colNumber is deprecated to @babel/code-frame. Please use `codeFrameColumns`.";if(process.emitWarning){process.emitWarning(e,"DeprecationWarning")}else{const t=new Error(e);t.name="DeprecationWarning";console.warn(new Error(e))}}r=Math.max(r,0);const s={start:{column:r,line:t}};return codeFrameColumns(e,s,n)}t.codeFrameColumns=codeFrameColumns;t["default"]=index;t.highlight=highlight},3357:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.isIdentifierChar=isIdentifierChar;t.isIdentifierName=isIdentifierName;t.isIdentifierStart=isIdentifierStart;let r="ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆՙՠ-ֈא-תׯ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࡠ-ࡪࡰ-ࢇࢉ-ࢠ-ࣉऄ-हऽॐक़-ॡॱ-ঀঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱৼਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡૹଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-హఽౘ-ౚౝౠౡಀಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽ-ೞೠೡೱೲഄ-ഌഎ-ഐഒ-ഺഽൎൔ-ൖൟ-ൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄຆ-ຊຌ-ຣລວ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏽᏸ-ᏽᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛸᜀ-ᜑᜟ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡸᢀ-ᢨᢪᢰ-ᣵᤀ-ᤞᥐ-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭌᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᲀ-Ა-ᲺᲽ-Ჿᳩ-ᳬᳮ-ᳳᳵᳶᳺᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕ℘-ℝℤΩℨK-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞ々-〇〡-〩〱-〵〸-〼ぁ-ゖ゛-ゟァ-ヺー-ヿㄅ-ㄯㄱ-ㆎㆠ-ㆿㇰ-ㇿ㐀-䶿一-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚝꚠ-ꛯꜗ-ꜟꜢ-ꞈꞋ--ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꣽꣾꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꧠ-ꧤꧦ-ꧯꧺ-ꧾꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꩾ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭩꭰ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ";let n="·̀-ͯ·҃-֑҇-ׇֽֿׁׂׅׄؐ-ًؚ-٩ٰۖ-ۜ۟-۪ۤۧۨ-ۭ۰-۹ܑܰ-݊ަ-ް߀-߉߫-߽߳ࠖ-࠙ࠛ-ࠣࠥ-ࠧࠩ-࡙࠭-࡛-࢟࣊-ࣣ࣡-ःऺ-़ा-ॏ॑-ॗॢॣ०-९ঁ-ঃ়া-ৄেৈো-্ৗৢৣ০-৯৾ਁ-ਃ਼ਾ-ੂੇੈੋ-੍ੑ੦-ੱੵઁ-ઃ઼ા-ૅે-ૉો-્ૢૣ૦-૯ૺ-૿ଁ-ଃ଼ା-ୄେୈୋ-୍୕-ୗୢୣ୦-୯ஂா-ூெ-ைொ-்ௗ௦-௯ఀ-ఄ఼ా-ౄె-ైొ-్ౕౖౢౣ౦-౯ಁ-ಃ಼ಾ-ೄೆ-ೈೊ-್ೕೖೢೣ೦-೯ೳഀ-ഃ഻഼ാ-ൄെ-ൈൊ-്ൗൢൣ൦-൯ඁ-ඃ්ා-ුූෘ-ෟ෦-෯ෲෳัิ-ฺ็-๎๐-๙ັິ-ຼ່-໎໐-໙༘༙༠-༩༹༵༷༾༿ཱ-྄྆྇ྍ-ྗྙ-ྼ࿆ါ-ှ၀-၉ၖ-ၙၞ-ၠၢ-ၤၧ-ၭၱ-ၴႂ-ႍႏ-ႝ፝-፟፩-፱ᜒ-᜕ᜲ-᜴ᝒᝓᝲᝳ឴-៓៝០-៩᠋-᠍᠏-᠙ᢩᤠ-ᤫᤰ-᤻᥆-᥏᧐-᧚ᨗ-ᨛᩕ-ᩞ᩠-᩿᩼-᪉᪐-᪙᪰-᪽ᪿ--ᬀ-ᬄ᬴-᭄᭐-᭙᭫-᭳ᮀ-ᮂᮡ-ᮭ᮰-᮹᯦-᯳ᰤ-᰷᱀-᱉᱐-᱙᳐-᳔᳒-᳨᳭᳴᳷-᳹᷀-᷿‿⁀⁔⃐-⃥⃜⃡-⃰⳯-⵿⳱ⷠ-〪ⷿ-゙゚〯・꘠-꘩꙯ꙴ-꙽ꚞꚟ꛰꛱ꠂ꠆ꠋꠣ-ꠧ꠬ꢀꢁꢴ-ꣅ꣐-꣙꣠-꣱ꣿ-꤉ꤦ-꤭ꥇ-꥓ꦀ-ꦃ꦳-꧀꧐-꧙ꧥ꧰-꧹ꨩ-ꨶꩃꩌꩍ꩐-꩙ꩻ-ꩽꪰꪲ-ꪴꪷꪸꪾ꪿꫁ꫫ-ꫯꫵ꫶ꯣ-ꯪ꯬꯭꯰-꯹ﬞ︀-️︠-︯︳︴﹍-﹏0-9_・";const s=new RegExp("["+r+"]");const i=new RegExp("["+r+n+"]");r=n=null;const o=[0,11,2,25,2,18,2,1,2,14,3,13,35,122,70,52,268,28,4,48,48,31,14,29,6,37,11,29,3,35,5,7,2,4,43,157,19,35,5,35,5,39,9,51,13,10,2,14,2,6,2,1,2,10,2,14,2,6,2,1,4,51,13,310,10,21,11,7,25,5,2,41,2,8,70,5,3,0,2,43,2,1,4,0,3,22,11,22,10,30,66,18,2,1,11,21,11,25,7,25,39,55,7,1,65,0,16,3,2,2,2,28,43,28,4,28,36,7,2,27,28,53,11,21,11,18,14,17,111,72,56,50,14,50,14,35,39,27,10,22,251,41,7,1,17,5,57,28,11,0,9,21,43,17,47,20,28,22,13,52,58,1,3,0,14,44,33,24,27,35,30,0,3,0,9,34,4,0,13,47,15,3,22,0,2,0,36,17,2,24,20,1,64,6,2,0,2,3,2,14,2,9,8,46,39,7,3,1,3,21,2,6,2,1,2,4,4,0,19,0,13,4,31,9,2,0,3,0,2,37,2,0,26,0,2,0,45,52,19,3,21,2,31,47,21,1,2,0,185,46,42,3,37,47,21,0,60,42,14,0,72,26,38,6,186,43,117,63,32,7,3,0,3,7,2,1,2,23,16,0,2,0,95,7,3,38,17,0,2,0,29,0,11,39,8,0,22,0,12,45,20,0,19,72,200,32,32,8,2,36,18,0,50,29,113,6,2,1,2,37,22,0,26,5,2,1,2,31,15,0,24,43,261,18,16,0,2,12,2,33,125,0,80,921,103,110,18,195,2637,96,16,1071,18,5,26,3994,6,582,6842,29,1763,568,8,30,18,78,18,29,19,47,17,3,32,20,6,18,433,44,212,63,33,24,3,24,45,74,6,0,67,12,65,1,2,0,15,4,10,7381,42,31,98,114,8702,3,2,6,2,1,2,290,16,0,30,2,3,0,15,3,9,395,2309,106,6,12,4,8,8,9,5991,84,2,70,2,1,3,0,3,1,3,3,2,11,2,0,2,6,2,64,2,3,3,7,2,6,2,27,2,3,2,4,2,0,4,6,2,339,3,24,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,30,2,24,2,7,1845,30,7,5,262,61,147,44,11,6,17,0,322,29,19,43,485,27,229,29,3,0,208,30,2,2,2,1,2,6,3,4,10,1,225,6,2,3,2,1,2,14,2,196,60,67,8,0,1205,3,2,26,2,1,2,0,3,0,2,9,2,3,2,0,2,0,7,0,5,0,2,0,2,0,2,2,2,1,2,0,3,0,2,0,2,0,2,0,2,0,2,1,2,0,3,3,2,6,2,3,2,3,2,0,2,9,2,16,6,2,2,4,2,16,4421,42719,33,4381,3,5773,3,7472,16,621,2467,541,1507,4938,6,8489];const u=[509,0,227,0,150,4,294,9,1368,2,2,1,6,3,41,2,5,0,166,1,574,3,9,9,7,9,32,4,318,1,78,5,71,10,50,3,123,2,54,14,32,10,3,1,11,3,46,10,8,0,46,9,7,2,37,13,2,9,6,1,45,0,13,2,49,13,9,3,2,11,83,11,7,0,3,0,158,11,6,9,7,3,56,1,2,6,3,1,3,2,10,0,11,1,3,6,4,4,68,8,2,0,3,0,2,3,2,4,2,0,15,1,83,17,10,9,5,0,82,19,13,9,214,6,3,8,28,1,83,16,16,9,82,12,9,9,7,19,58,14,5,9,243,14,166,9,71,5,2,1,3,3,2,0,2,1,13,9,120,6,3,6,4,0,29,9,41,6,2,3,9,0,10,10,47,15,199,7,137,9,54,7,2,7,17,9,57,21,2,13,123,5,4,0,2,1,2,6,2,0,9,9,49,4,2,1,2,4,9,9,55,9,266,3,10,1,2,0,49,6,4,4,14,10,5350,0,7,14,11465,27,2343,9,87,9,39,4,60,6,26,9,535,9,470,0,2,54,8,3,82,0,12,1,19628,1,4178,9,519,45,3,22,543,4,4,5,9,7,3,6,31,3,149,2,1418,49,513,54,5,49,9,0,15,0,23,4,2,14,1361,6,2,16,3,6,2,1,2,4,101,0,161,6,10,9,357,0,62,13,499,13,245,1,2,9,233,0,3,0,8,1,6,0,475,6,110,6,6,9,4759,9,787719,239];function isInAstralSet(e,t){let r=65536;for(let n=0,s=t.length;n<s;n+=2){r+=t[n];if(r>e)return false;r+=t[n+1];if(r>=e)return true}return false}function isIdentifierStart(e){if(e<65)return e===36;if(e<=90)return true;if(e<97)return e===95;if(e<=122)return true;if(e<=65535){return e>=170&&s.test(String.fromCharCode(e))}return isInAstralSet(e,o)}function isIdentifierChar(e){if(e<48)return e===36;if(e<58)return true;if(e<65)return false;if(e<=90)return true;if(e<97)return e===95;if(e<=122)return true;if(e<=65535){return e>=170&&i.test(String.fromCharCode(e))}return isInAstralSet(e,o)||isInAstralSet(e,u)}function isIdentifierName(e){let t=true;for(let r=0;r<e.length;r++){let n=e.charCodeAt(r);if((n&64512)===55296&&r+1<e.length){const t=e.charCodeAt(++r);if((t&64512)===56320){n=65536+((n&1023)<<10)+(t&1023)}}if(t){t=false;if(!isIdentifierStart(n)){return false}}else if(!isIdentifierChar(n)){return false}}return!t}},8740:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});Object.defineProperty(t,"isIdentifierChar",{enumerable:true,get:function(){return n.isIdentifierChar}});Object.defineProperty(t,"isIdentifierName",{enumerable:true,get:function(){return n.isIdentifierName}});Object.defineProperty(t,"isIdentifierStart",{enumerable:true,get:function(){return n.isIdentifierStart}});Object.defineProperty(t,"isKeyword",{enumerable:true,get:function(){return s.isKeyword}});Object.defineProperty(t,"isReservedWord",{enumerable:true,get:function(){return s.isReservedWord}});Object.defineProperty(t,"isStrictBindOnlyReservedWord",{enumerable:true,get:function(){return s.isStrictBindOnlyReservedWord}});Object.defineProperty(t,"isStrictBindReservedWord",{enumerable:true,get:function(){return s.isStrictBindReservedWord}});Object.defineProperty(t,"isStrictReservedWord",{enumerable:true,get:function(){return s.isStrictReservedWord}});var n=r(3357);var s=r(1391)},1391:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.isKeyword=isKeyword;t.isReservedWord=isReservedWord;t.isStrictBindOnlyReservedWord=isStrictBindOnlyReservedWord;t.isStrictBindReservedWord=isStrictBindReservedWord;t.isStrictReservedWord=isStrictReservedWord;const r={keyword:["break","case","catch","continue","debugger","default","do","else","finally","for","function","if","return","switch","throw","try","var","const","while","with","new","this","super","class","extends","export","import","null","true","false","in","instanceof","typeof","void","delete"],strict:["implements","interface","let","package","private","protected","public","static","yield"],strictBind:["eval","arguments"]};const n=new Set(r.keyword);const s=new Set(r.strict);const i=new Set(r.strictBind);function isReservedWord(e,t){return t&&e==="await"||e==="enum"}function isStrictReservedWord(e,t){return isReservedWord(e,t)||s.has(e)}function isStrictBindOnlyReservedWord(e){return i.has(e)}function isStrictBindReservedWord(e,t){return isStrictReservedWord(e,t)||isStrictBindOnlyReservedWord(e)}function isKeyword(e){return n.has(e)}},5934:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:true});t.LRUCache=void 0;const r=typeof performance==="object"&&performance&&typeof performance.now==="function"?performance:Date;const n=new Set;const s=typeof process==="object"&&!!process?process:{};const emitWarning=(e,t,r,n)=>{typeof s.emitWarning==="function"?s.emitWarning(e,t,r,n):console.error(`[${r}] ${t}: ${e}`)};let i=globalThis.AbortController;let o=globalThis.AbortSignal;if(typeof i==="undefined"){o=class AbortSignal{onabort;_onabort=[];reason;aborted=false;addEventListener(e,t){this._onabort.push(t)}};i=class AbortController{constructor(){warnACPolyfill()}signal=new o;abort(e){if(this.signal.aborted)return;this.signal.reason=e;this.signal.aborted=true;for(const t of this.signal._onabort){t(e)}this.signal.onabort?.(e)}};let e=s.env?.LRU_CACHE_IGNORE_AC_WARNING!=="1";const warnACPolyfill=()=>{if(!e)return;e=false;emitWarning("AbortController is not defined. If using lru-cache in "+"node 14, load an AbortController polyfill from the "+"`node-abort-controller` package. A minimal polyfill is "+"provided for use by LRUCache.fetch(), but it should not be "+"relied upon in other contexts (eg, passing it to other APIs that "+"use AbortController/AbortSignal might have undesirable effects). "+"You may disable this with LRU_CACHE_IGNORE_AC_WARNING=1 in the env.","NO_ABORT_CONTROLLER","ENOTSUP",warnACPolyfill)}}const shouldWarn=e=>!n.has(e);const u=Symbol("type");const isPosInt=e=>e&&e===Math.floor(e)&&e>0&&isFinite(e);const getUintArray=e=>!isPosInt(e)?null:e<=Math.pow(2,8)?Uint8Array:e<=Math.pow(2,16)?Uint16Array:e<=Math.pow(2,32)?Uint32Array:e<=Number.MAX_SAFE_INTEGER?ZeroArray:null;class ZeroArray extends Array{constructor(e){super(e);this.fill(0)}}class Stack{heap;length;static#s=false;static create(e){const t=getUintArray(e);if(!t)return[];Stack.#s=true;const r=new Stack(e,t);Stack.#s=false;return r}constructor(e,t){if(!Stack.#s){throw new TypeError("instantiate Stack using Stack.create(n)")}this.heap=new t(e);this.length=0}push(e){this.heap[this.length++]=e}pop(){return this.heap[--this.length]}}class LRUCache{#i;#o;#u;#a;#c;#l;ttl;ttlResolution;ttlAutopurge;updateAgeOnGet;updateAgeOnHas;allowStale;noDisposeOnSet;noUpdateTTL;maxEntrySize;sizeCalculation;noDeleteOnFetchRejection;noDeleteOnStaleGet;allowStaleOnFetchAbort;allowStaleOnFetchRejection;ignoreFetchAbort;#f;#p;#h;#d;#g;#m;#D;#A;#E;#y;#C;#w;#b;#v;#F;#_;#S;static unsafeExposeInternals(e){return{starts:e.#b,ttls:e.#v,sizes:e.#w,keyMap:e.#h,keyList:e.#d,valList:e.#g,next:e.#m,prev:e.#D,get head(){return e.#A},get tail(){return e.#E},free:e.#y,isBackgroundFetch:t=>e.#x(t),backgroundFetch:(t,r,n,s)=>e.#O(t,r,n,s),moveToTail:t=>e.#R(t),indexes:t=>e.#k(t),rindexes:t=>e.#$(t),isStale:t=>e.#B(t)}}get max(){return this.#i}get maxSize(){return this.#o}get calculatedSize(){return this.#p}get size(){return this.#f}get fetchMethod(){return this.#c}get memoMethod(){return this.#l}get dispose(){return this.#u}get disposeAfter(){return this.#a}constructor(e){const{max:t=0,ttl:r,ttlResolution:s=1,ttlAutopurge:i,updateAgeOnGet:o,updateAgeOnHas:u,allowStale:a,dispose:c,disposeAfter:l,noDisposeOnSet:f,noUpdateTTL:p,maxSize:h=0,maxEntrySize:d=0,sizeCalculation:g,fetchMethod:m,memoMethod:D,noDeleteOnFetchRejection:A,noDeleteOnStaleGet:E,allowStaleOnFetchRejection:y,allowStaleOnFetchAbort:C,ignoreFetchAbort:w}=e;if(t!==0&&!isPosInt(t)){throw new TypeError("max option must be a nonnegative integer")}const b=t?getUintArray(t):Array;if(!b){throw new Error("invalid max value: "+t)}this.#i=t;this.#o=h;this.maxEntrySize=d||this.#o;this.sizeCalculation=g;if(this.sizeCalculation){if(!this.#o&&!this.maxEntrySize){throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize")}if(typeof this.sizeCalculation!=="function"){throw new TypeError("sizeCalculation set to non-function")}}if(D!==undefined&&typeof D!=="function"){throw new TypeError("memoMethod must be a function if defined")}this.#l=D;if(m!==undefined&&typeof m!=="function"){throw new TypeError("fetchMethod must be a function if specified")}this.#c=m;this.#_=!!m;this.#h=new Map;this.#d=new Array(t).fill(undefined);this.#g=new Array(t).fill(undefined);this.#m=new b(t);this.#D=new b(t);this.#A=0;this.#E=0;this.#y=Stack.create(t);this.#f=0;this.#p=0;if(typeof c==="function"){this.#u=c}if(typeof l==="function"){this.#a=l;this.#C=[]}else{this.#a=undefined;this.#C=undefined}this.#F=!!this.#u;this.#S=!!this.#a;this.noDisposeOnSet=!!f;this.noUpdateTTL=!!p;this.noDeleteOnFetchRejection=!!A;this.allowStaleOnFetchRejection=!!y;this.allowStaleOnFetchAbort=!!C;this.ignoreFetchAbort=!!w;if(this.maxEntrySize!==0){if(this.#o!==0){if(!isPosInt(this.#o)){throw new TypeError("maxSize must be a positive integer if specified")}}if(!isPosInt(this.maxEntrySize)){throw new TypeError("maxEntrySize must be a positive integer if specified")}this.#L()}this.allowStale=!!a;this.noDeleteOnStaleGet=!!E;this.updateAgeOnGet=!!o;this.updateAgeOnHas=!!u;this.ttlResolution=isPosInt(s)||s===0?s:1;this.ttlAutopurge=!!i;this.ttl=r||0;if(this.ttl){if(!isPosInt(this.ttl)){throw new TypeError("ttl must be a positive integer if specified")}this.#I()}if(this.#i===0&&this.ttl===0&&this.#o===0){throw new TypeError("At least one of max, maxSize, or ttl is required")}if(!this.ttlAutopurge&&!this.#i&&!this.#o){const e="LRU_CACHE_UNBOUNDED";if(shouldWarn(e)){n.add(e);const t="TTL caching without ttlAutopurge, max, or maxSize can "+"result in unbounded memory consumption.";emitWarning(t,"UnboundedCacheWarning",e,LRUCache)}}}getRemainingTTL(e){return this.#h.has(e)?Infinity:0}#I(){const e=new ZeroArray(this.#i);const t=new ZeroArray(this.#i);this.#v=e;this.#b=t;this.#P=(n,s,i=r.now())=>{t[n]=s!==0?i:0;e[n]=s;if(s!==0&&this.ttlAutopurge){const e=setTimeout((()=>{if(this.#B(n)){this.#N(this.#d[n],"expire")}}),s+1);if(e.unref){e.unref()}}};this.#T=n=>{t[n]=e[n]!==0?r.now():0};this.#M=(r,s)=>{if(e[s]){const i=e[s];const o=t[s];if(!i||!o)return;r.ttl=i;r.start=o;r.now=n||getNow();const u=r.now-o;r.remainingTTL=i-u}};let n=0;const getNow=()=>{const e=r.now();if(this.ttlResolution>0){n=e;const t=setTimeout((()=>n=0),this.ttlResolution);if(t.unref){t.unref()}}return e};this.getRemainingTTL=r=>{const s=this.#h.get(r);if(s===undefined){return 0}const i=e[s];const o=t[s];if(!i||!o){return Infinity}const u=(n||getNow())-o;return i-u};this.#B=r=>{const s=t[r];const i=e[r];return!!i&&!!s&&(n||getNow())-s>i}}#T=()=>{};#M=()=>{};#P=()=>{};#B=()=>false;#L(){const e=new ZeroArray(this.#i);this.#p=0;this.#w=e;this.#j=t=>{this.#p-=e[t];e[t]=0};this.#H=(e,t,r,n)=>{if(this.#x(t)){return 0}if(!isPosInt(r)){if(n){if(typeof n!=="function"){throw new TypeError("sizeCalculation must be a function")}r=n(t,e);if(!isPosInt(r)){throw new TypeError("sizeCalculation return invalid (expect positive integer)")}}else{throw new TypeError("invalid size value (must be positive integer). "+"When maxSize or maxEntrySize is used, sizeCalculation "+"or size must be set.")}}return r};this.#G=(t,r,n)=>{e[t]=r;if(this.#o){const r=this.#o-e[t];while(this.#p>r){this.#U(true)}}this.#p+=e[t];if(n){n.entrySize=r;n.totalCalculatedSize=this.#p}}}#j=e=>{};#G=(e,t,r)=>{};#H=(e,t,r,n)=>{if(r||n){throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache")}return 0};*#k({allowStale:e=this.allowStale}={}){if(this.#f){for(let t=this.#E;true;){if(!this.#W(t)){break}if(e||!this.#B(t)){yield t}if(t===this.#A){break}else{t=this.#D[t]}}}}*#$({allowStale:e=this.allowStale}={}){if(this.#f){for(let t=this.#A;true;){if(!this.#W(t)){break}if(e||!this.#B(t)){yield t}if(t===this.#E){break}else{t=this.#m[t]}}}}#W(e){return e!==undefined&&this.#h.get(this.#d[e])===e}*entries(){for(const e of this.#k()){if(this.#g[e]!==undefined&&this.#d[e]!==undefined&&!this.#x(this.#g[e])){yield[this.#d[e],this.#g[e]]}}}*rentries(){for(const e of this.#$()){if(this.#g[e]!==undefined&&this.#d[e]!==undefined&&!this.#x(this.#g[e])){yield[this.#d[e],this.#g[e]]}}}*keys(){for(const e of this.#k()){const t=this.#d[e];if(t!==undefined&&!this.#x(this.#g[e])){yield t}}}*rkeys(){for(const e of this.#$()){const t=this.#d[e];if(t!==undefined&&!this.#x(this.#g[e])){yield t}}}*values(){for(const e of this.#k()){const t=this.#g[e];if(t!==undefined&&!this.#x(this.#g[e])){yield this.#g[e]}}}*rvalues(){for(const e of this.#$()){const t=this.#g[e];if(t!==undefined&&!this.#x(this.#g[e])){yield this.#g[e]}}}[Symbol.iterator](){return this.entries()}[Symbol.toStringTag]="LRUCache";find(e,t={}){for(const r of this.#k()){const n=this.#g[r];const s=this.#x(n)?n.__staleWhileFetching:n;if(s===undefined)continue;if(e(s,this.#d[r],this)){return this.get(this.#d[r],t)}}}forEach(e,t=this){for(const r of this.#k()){const n=this.#g[r];const s=this.#x(n)?n.__staleWhileFetching:n;if(s===undefined)continue;e.call(t,s,this.#d[r],this)}}rforEach(e,t=this){for(const r of this.#$()){const n=this.#g[r];const s=this.#x(n)?n.__staleWhileFetching:n;if(s===undefined)continue;e.call(t,s,this.#d[r],this)}}purgeStale(){let e=false;for(const t of this.#$({allowStale:true})){if(this.#B(t)){this.#N(this.#d[t],"expire");e=true}}return e}info(e){const t=this.#h.get(e);if(t===undefined)return undefined;const n=this.#g[t];const s=this.#x(n)?n.__staleWhileFetching:n;if(s===undefined)return undefined;const i={value:s};if(this.#v&&this.#b){const e=this.#v[t];const n=this.#b[t];if(e&&n){const t=e-(r.now()-n);i.ttl=t;i.start=Date.now()}}if(this.#w){i.size=this.#w[t]}return i}dump(){const e=[];for(const t of this.#k({allowStale:true})){const n=this.#d[t];const s=this.#g[t];const i=this.#x(s)?s.__staleWhileFetching:s;if(i===undefined||n===undefined)continue;const o={value:i};if(this.#v&&this.#b){o.ttl=this.#v[t];const e=r.now()-this.#b[t];o.start=Math.floor(Date.now()-e)}if(this.#w){o.size=this.#w[t]}e.unshift([n,o])}return e}load(e){this.clear();for(const[t,n]of e){if(n.start){const e=Date.now()-n.start;n.start=r.now()-e}this.set(t,n.value,n)}}set(e,t,r={}){if(t===undefined){this.delete(e);return this}const{ttl:n=this.ttl,start:s,noDisposeOnSet:i=this.noDisposeOnSet,sizeCalculation:o=this.sizeCalculation,status:u}=r;let{noUpdateTTL:a=this.noUpdateTTL}=r;const c=this.#H(e,t,r.size||0,o);if(this.maxEntrySize&&c>this.maxEntrySize){if(u){u.set="miss";u.maxEntrySizeExceeded=true}this.#N(e,"set");return this}let l=this.#f===0?undefined:this.#h.get(e);if(l===undefined){l=this.#f===0?this.#E:this.#y.length!==0?this.#y.pop():this.#f===this.#i?this.#U(false):this.#f;this.#d[l]=e;this.#g[l]=t;this.#h.set(e,l);this.#m[this.#E]=l;this.#D[l]=this.#E;this.#E=l;this.#f++;this.#G(l,c,u);if(u)u.set="add";a=false}else{this.#R(l);const r=this.#g[l];if(t!==r){if(this.#_&&this.#x(r)){r.__abortController.abort(new Error("replaced"));const{__staleWhileFetching:t}=r;if(t!==undefined&&!i){if(this.#F){this.#u?.(t,e,"set")}if(this.#S){this.#C?.push([t,e,"set"])}}}else if(!i){if(this.#F){this.#u?.(r,e,"set")}if(this.#S){this.#C?.push([r,e,"set"])}}this.#j(l);this.#G(l,c,u);this.#g[l]=t;if(u){u.set="replace";const e=r&&this.#x(r)?r.__staleWhileFetching:r;if(e!==undefined)u.oldValue=e}}else if(u){u.set="update"}}if(n!==0&&!this.#v){this.#I()}if(this.#v){if(!a){this.#P(l,n,s)}if(u)this.#M(u,l)}if(!i&&this.#S&&this.#C){const e=this.#C;let t;while(t=e?.shift()){this.#a?.(...t)}}return this}pop(){try{while(this.#f){const e=this.#g[this.#A];this.#U(true);if(this.#x(e)){if(e.__staleWhileFetching){return e.__staleWhileFetching}}else if(e!==undefined){return e}}}finally{if(this.#S&&this.#C){const e=this.#C;let t;while(t=e?.shift()){this.#a?.(...t)}}}}#U(e){const t=this.#A;const r=this.#d[t];const n=this.#g[t];if(this.#_&&this.#x(n)){n.__abortController.abort(new Error("evicted"))}else if(this.#F||this.#S){if(this.#F){this.#u?.(n,r,"evict")}if(this.#S){this.#C?.push([n,r,"evict"])}}this.#j(t);if(e){this.#d[t]=undefined;this.#g[t]=undefined;this.#y.push(t)}if(this.#f===1){this.#A=this.#E=0;this.#y.length=0}else{this.#A=this.#m[t]}this.#h.delete(r);this.#f--;return t}has(e,t={}){const{updateAgeOnHas:r=this.updateAgeOnHas,status:n}=t;const s=this.#h.get(e);if(s!==undefined){const e=this.#g[s];if(this.#x(e)&&e.__staleWhileFetching===undefined){return false}if(!this.#B(s)){if(r){this.#T(s)}if(n){n.has="hit";this.#M(n,s)}return true}else if(n){n.has="stale";this.#M(n,s)}}else if(n){n.has="miss"}return false}peek(e,t={}){const{allowStale:r=this.allowStale}=t;const n=this.#h.get(e);if(n===undefined||!r&&this.#B(n)){return}const s=this.#g[n];return this.#x(s)?s.__staleWhileFetching:s}#O(e,t,r,n){const s=t===undefined?undefined:this.#g[t];if(this.#x(s)){return s}const o=new i;const{signal:u}=r;u?.addEventListener("abort",(()=>o.abort(u.reason)),{signal:o.signal});const a={signal:o.signal,options:r,context:n};const cb=(n,s=false)=>{const{aborted:i}=o.signal;const u=r.ignoreFetchAbort&&n!==undefined;if(r.status){if(i&&!s){r.status.fetchAborted=true;r.status.fetchError=o.signal.reason;if(u)r.status.fetchAbortIgnored=true}else{r.status.fetchResolved=true}}if(i&&!u&&!s){return fetchFail(o.signal.reason)}const l=c;if(this.#g[t]===c){if(n===undefined){if(l.__staleWhileFetching){this.#g[t]=l.__staleWhileFetching}else{this.#N(e,"fetch")}}else{if(r.status)r.status.fetchUpdated=true;this.set(e,n,a.options)}}return n};const eb=e=>{if(r.status){r.status.fetchRejected=true;r.status.fetchError=e}return fetchFail(e)};const fetchFail=n=>{const{aborted:s}=o.signal;const i=s&&r.allowStaleOnFetchAbort;const u=i||r.allowStaleOnFetchRejection;const a=u||r.noDeleteOnFetchRejection;const l=c;if(this.#g[t]===c){const r=!a||l.__staleWhileFetching===undefined;if(r){this.#N(e,"fetch")}else if(!i){this.#g[t]=l.__staleWhileFetching}}if(u){if(r.status&&l.__staleWhileFetching!==undefined){r.status.returnedStale=true}return l.__staleWhileFetching}else if(l.__returned===l){throw n}};const pcall=(t,n)=>{const i=this.#c?.(e,s,a);if(i&&i instanceof Promise){i.then((e=>t(e===undefined?undefined:e)),n)}o.signal.addEventListener("abort",(()=>{if(!r.ignoreFetchAbort||r.allowStaleOnFetchAbort){t(undefined);if(r.allowStaleOnFetchAbort){t=e=>cb(e,true)}}}))};if(r.status)r.status.fetchDispatched=true;const c=new Promise(pcall).then(cb,eb);const l=Object.assign(c,{__abortController:o,__staleWhileFetching:s,__returned:undefined});if(t===undefined){this.set(e,l,{...a.options,status:undefined});t=this.#h.get(e)}else{this.#g[t]=l}return l}#x(e){if(!this.#_)return false;const t=e;return!!t&&t instanceof Promise&&t.hasOwnProperty("__staleWhileFetching")&&t.__abortController instanceof i}async fetch(e,t={}){const{allowStale:r=this.allowStale,updateAgeOnGet:n=this.updateAgeOnGet,noDeleteOnStaleGet:s=this.noDeleteOnStaleGet,ttl:i=this.ttl,noDisposeOnSet:o=this.noDisposeOnSet,size:u=0,sizeCalculation:a=this.sizeCalculation,noUpdateTTL:c=this.noUpdateTTL,noDeleteOnFetchRejection:l=this.noDeleteOnFetchRejection,allowStaleOnFetchRejection:f=this.allowStaleOnFetchRejection,ignoreFetchAbort:p=this.ignoreFetchAbort,allowStaleOnFetchAbort:h=this.allowStaleOnFetchAbort,context:d,forceRefresh:g=false,status:m,signal:D}=t;if(!this.#_){if(m)m.fetch="get";return this.get(e,{allowStale:r,updateAgeOnGet:n,noDeleteOnStaleGet:s,status:m})}const A={allowStale:r,updateAgeOnGet:n,noDeleteOnStaleGet:s,ttl:i,noDisposeOnSet:o,size:u,sizeCalculation:a,noUpdateTTL:c,noDeleteOnFetchRejection:l,allowStaleOnFetchRejection:f,allowStaleOnFetchAbort:h,ignoreFetchAbort:p,status:m,signal:D};let E=this.#h.get(e);if(E===undefined){if(m)m.fetch="miss";const t=this.#O(e,E,A,d);return t.__returned=t}else{const t=this.#g[E];if(this.#x(t)){const e=r&&t.__staleWhileFetching!==undefined;if(m){m.fetch="inflight";if(e)m.returnedStale=true}return e?t.__staleWhileFetching:t.__returned=t}const s=this.#B(E);if(!g&&!s){if(m)m.fetch="hit";this.#R(E);if(n){this.#T(E)}if(m)this.#M(m,E);return t}const i=this.#O(e,E,A,d);const o=i.__staleWhileFetching!==undefined;const u=o&&r;if(m){m.fetch=s?"stale":"refresh";if(u&&s)m.returnedStale=true}return u?i.__staleWhileFetching:i.__returned=i}}async forceFetch(e,t={}){const r=await this.fetch(e,t);if(r===undefined)throw new Error("fetch() returned undefined");return r}memo(e,t={}){const r=this.#l;if(!r){throw new Error("no memoMethod provided to constructor")}const{context:n,forceRefresh:s,...i}=t;const o=this.get(e,i);if(!s&&o!==undefined)return o;const u=r(e,o,{options:i,context:n});this.set(e,u,i);return u}get(e,t={}){const{allowStale:r=this.allowStale,updateAgeOnGet:n=this.updateAgeOnGet,noDeleteOnStaleGet:s=this.noDeleteOnStaleGet,status:i}=t;const o=this.#h.get(e);if(o!==undefined){const t=this.#g[o];const u=this.#x(t);if(i)this.#M(i,o);if(this.#B(o)){if(i)i.get="stale";if(!u){if(!s){this.#N(e,"expire")}if(i&&r)i.returnedStale=true;return r?t:undefined}else{if(i&&r&&t.__staleWhileFetching!==undefined){i.returnedStale=true}return r?t.__staleWhileFetching:undefined}}else{if(i)i.get="hit";if(u){return t.__staleWhileFetching}this.#R(o);if(n){this.#T(o)}return t}}else if(i){i.get="miss"}}#z(e,t){this.#D[t]=e;this.#m[e]=t}#R(e){if(e!==this.#E){if(e===this.#A){this.#A=this.#m[e]}else{this.#z(this.#D[e],this.#m[e])}this.#z(this.#E,e);this.#E=e}}delete(e){return this.#N(e,"delete")}#N(e,t){let r=false;if(this.#f!==0){const n=this.#h.get(e);if(n!==undefined){r=true;if(this.#f===1){this.#q(t)}else{this.#j(n);const r=this.#g[n];if(this.#x(r)){r.__abortController.abort(new Error("deleted"))}else if(this.#F||this.#S){if(this.#F){this.#u?.(r,e,t)}if(this.#S){this.#C?.push([r,e,t])}}this.#h.delete(e);this.#d[n]=undefined;this.#g[n]=undefined;if(n===this.#E){this.#E=this.#D[n]}else if(n===this.#A){this.#A=this.#m[n]}else{const e=this.#D[n];this.#m[e]=this.#m[n];const t=this.#m[n];this.#D[t]=this.#D[n]}this.#f--;this.#y.push(n)}}}if(this.#S&&this.#C?.length){const e=this.#C;let t;while(t=e?.shift()){this.#a?.(...t)}}return r}clear(){return this.#q("delete")}#q(e){for(const t of this.#$({allowStale:true})){const r=this.#g[t];if(this.#x(r)){r.__abortController.abort(new Error("deleted"))}else{const n=this.#d[t];if(this.#F){this.#u?.(r,n,e)}if(this.#S){this.#C?.push([r,n,e])}}}this.#h.clear();this.#g.fill(undefined);this.#d.fill(undefined);if(this.#v&&this.#b){this.#v.fill(0);this.#b.fill(0)}if(this.#w){this.#w.fill(0)}this.#A=0;this.#E=0;this.#y.length=0;this.#p=0;this.#f=0;if(this.#S&&this.#C){const e=this.#C;let t;while(t=e?.shift()){this.#a?.(...t)}}}}t.LRUCache=LRUCache},8330:e=>{"use strict";e.exports=JSON.parse('{"name":"create-expo","version":"5.0.1","bin":"./bin/create-expo.js","main":"build","description":"Create universal Expo apps","license":"BSD-3-Clause","keywords":["expo","react-native","react"],"homepage":"https://docs.expo.dev","repository":{"type":"git","url":"https://github.com/expo/expo.git","directory":"packages/create-expo"},"author":"Evan Bacon <bacon@expo.io> (https://github.com/evanbacon)","files":["bin","build","template"],"engines":{"node":">=18.13.0"},"scripts":{"build":"ncc build ./src/index.ts -o build/","build:prod":"ncc build ./src/index.ts -o build/ --minify --no-cache --no-source-map-register","clean":"expo-module clean","lint":"expo-module lint","typecheck":"expo-module typecheck","test":"expo-module test","test:e2e":"expo-module test --config e2e/jest.config.js --runInBand","sync-agent-templates":"node scripts/sync-agent-templates.js","watch":"pnpm run build --watch","prepublishOnly":"pnpm run sync-agent-templates && pnpm run clean && pnpm run build:prod"},"devDependencies":{"@expo/config":"workspace:*","@expo/json-file":"workspace:*","@expo/package-manager":"workspace:*","@expo/spawn-async":"^1.8.0","@octokit/types":"^13.5.0","@types/debug":"^4.1.7","@types/getenv":"^1.0.0","@types/node":"^22.14.0","@types/picomatch":"^2.3.3","@types/prompts":"2.0.14","@vercel/ncc":"^0.38.3","arg":"^5.0.2","chalk":"^4.0.0","debug":"^4.3.4","expo-module-scripts":"workspace:*","getenv":"^2.0.0","glob":"^13.0.0","memfs":"^3.2.0","multitars":"^1.0.2","nock":"^14.0.10","ora":"3.4.0","picomatch":"^2.3.2","prompts":"^2.4.2","update-check":"^1.5.4"},"gitHead":"125b8d4472432db3dc4ae047730432d7bd5bd30c"}')}};var t={};function __nccwpck_require__(r){var n=t[r];if(n!==undefined){return n.exports}var s=t[r]={id:r,loaded:false,exports:{}};var i=true;try{e[r].call(s.exports,s,s.exports,__nccwpck_require__);i=false}finally{if(i)delete t[r]}s.loaded=true;return s.exports}__nccwpck_require__.m=e;(()=>{__nccwpck_require__.n=e=>{var t=e&&e.__esModule?()=>e["default"]:()=>e;__nccwpck_require__.d(t,{a:t});return t}})();(()=>{var e=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__;var t;__nccwpck_require__.t=function(r,n){if(n&1)r=this(r);if(n&8)return r;if(typeof r==="object"&&r){if(n&4&&r.__esModule)return r;if(n&16&&typeof r.then==="function")return r}var s=Object.create(null);__nccwpck_require__.r(s);var i={};t=t||[null,e({}),e([]),e(e)];for(var o=n&2&&r;typeof o=="object"&&!~t.indexOf(o);o=e(o)){Object.getOwnPropertyNames(o).forEach((e=>i[e]=()=>r[e]))}i["default"]=()=>r;__nccwpck_require__.d(s,i);return s}})();(()=>{__nccwpck_require__.d=(e,t)=>{for(var r in t){if(__nccwpck_require__.o(t,r)&&!__nccwpck_require__.o(e,r)){Object.defineProperty(e,r,{enumerable:true,get:t[r]})}}}})();(()=>{__nccwpck_require__.f={};__nccwpck_require__.e=e=>Promise.all(Object.keys(__nccwpck_require__.f).reduce(((t,r)=>{__nccwpck_require__.f[r](e,t);return t}),[]))})();(()=>{__nccwpck_require__.u=e=>""+e+".index.js"})();(()=>{__nccwpck_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t)})();(()=>{__nccwpck_require__.r=e=>{if(typeof Symbol!=="undefined"&&Symbol.toStringTag){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"})}Object.defineProperty(e,"__esModule",{value:true})}})();(()=>{__nccwpck_require__.nmd=e=>{e.paths=[];if(!e.children)e.children=[];return e}})();if(typeof __nccwpck_require__!=="undefined")__nccwpck_require__.ab=__dirname+"/";(()=>{var e={792:1};var installChunk=t=>{var r=t.modules,n=t.ids,s=t.runtime;for(var i in r){if(__nccwpck_require__.o(r,i)){__nccwpck_require__.m[i]=r[i]}}if(s)s(__nccwpck_require__);for(var o=0;o<n.length;o++)e[n[o]]=1};__nccwpck_require__.f.require=(t,r)=>{if(!e[t]){if(true){installChunk(require("./"+__nccwpck_require__.u(t)))}else e[t]=1}}})();var r={};(()=>{"use strict";__nccwpck_require__.r(r);var e=__nccwpck_require__(6675);var t=__nccwpck_require__.n(e);var n=__nccwpck_require__(277);var s=__nccwpck_require__.n(n);var i=__nccwpck_require__(6467);process.title=i.V;if((0,n.boolish)("EXPO_DEBUG",false)){t().enable("expo:init:*")}else if(t().enabled("expo:init:")){process.env.EXPO_DEBUG="1"}__nccwpck_require__(4456)})();module.exports=r})();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "create-expo",
|
|
3
|
-
"version": "5.0.
|
|
3
|
+
"version": "5.0.1",
|
|
4
4
|
"bin": "./bin/create-expo.js",
|
|
5
5
|
"main": "build",
|
|
6
6
|
"description": "Create universal Expo apps",
|
|
@@ -39,18 +39,19 @@
|
|
|
39
39
|
"debug": "^4.3.4",
|
|
40
40
|
"getenv": "^2.0.0",
|
|
41
41
|
"glob": "^13.0.0",
|
|
42
|
+
"memfs": "^3.2.0",
|
|
43
|
+
"multitars": "^1.0.2",
|
|
42
44
|
"nock": "^14.0.10",
|
|
43
45
|
"ora": "3.4.0",
|
|
44
46
|
"picomatch": "^2.3.2",
|
|
45
47
|
"prompts": "^2.4.2",
|
|
46
|
-
"multitars": "^1.0.0",
|
|
47
48
|
"update-check": "^1.5.4",
|
|
48
|
-
"@expo/config": "57.0.
|
|
49
|
-
"@expo/
|
|
50
|
-
"expo-
|
|
51
|
-
"
|
|
49
|
+
"@expo/config": "57.0.7",
|
|
50
|
+
"@expo/package-manager": "1.13.1",
|
|
51
|
+
"@expo/json-file": "11.0.1",
|
|
52
|
+
"expo-module-scripts": "56.0.3"
|
|
52
53
|
},
|
|
53
|
-
"gitHead": "
|
|
54
|
+
"gitHead": "125b8d4472432db3dc4ae047730432d7bd5bd30c",
|
|
54
55
|
"scripts": {
|
|
55
56
|
"build": "ncc build ./src/index.ts -o build/",
|
|
56
57
|
"build:prod": "ncc build ./src/index.ts -o build/ --minify --no-cache --no-source-map-register",
|
|
@@ -59,6 +60,7 @@
|
|
|
59
60
|
"typecheck": "expo-module typecheck",
|
|
60
61
|
"test": "expo-module test",
|
|
61
62
|
"test:e2e": "expo-module test --config e2e/jest.config.js --runInBand",
|
|
63
|
+
"sync-agent-templates": "node scripts/sync-agent-templates.js",
|
|
62
64
|
"watch": "pnpm run build --watch"
|
|
63
65
|
}
|
|
64
66
|
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
This is an Expo/React Native mobile application. Prioritize mobile-first patterns, performance, and cross-platform compatibility.
|
|
2
|
+
|
|
3
|
+
## Expo has changed — do not trust your training data
|
|
4
|
+
|
|
5
|
+
Expo ships breaking changes every SDK release. APIs you remember are likely renamed, moved, or removed. Before writing any code that touches an Expo, EAS, or React Native API:
|
|
6
|
+
|
|
7
|
+
1. Read the major version of the `expo` package in `package.json`.
|
|
8
|
+
2. Fetch the matching versioned docs: `https://docs.expo.dev/versions/v<major>.0.0/`
|
|
9
|
+
3. For anything else, fetch https://docs.expo.dev/llms.txt — an index of all Expo docs with corrections to common LLM misconceptions. Follow its links to the specific page you need; never answer from memory.
|
|
10
|
+
|
|
11
|
+
## Commands
|
|
12
|
+
|
|
13
|
+
Use `bunx` instead of `npx` if the project uses bun (`bun.lock` present).
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npx expo install <package> # ALWAYS use instead of npm/yarn/pnpm/bun add — resolves SDK-compatible versions
|
|
17
|
+
npx expo start # start the dev server
|
|
18
|
+
npx expo lint # lint
|
|
19
|
+
npx tsc --noEmit # typecheck
|
|
20
|
+
npx expo-doctor # diagnose dependency and config issues
|
|
21
|
+
npx expo install --fix # fix incompatible package versions
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Run lint and typecheck before declaring any task done.
|
|
25
|
+
|
|
26
|
+
## Navigation & Routing
|
|
27
|
+
|
|
28
|
+
- Use **Expo Router** for all navigation. Routes live in `src/app/` — every file there is a screen, `_layout.tsx` files define navigators. Keep non-route code (components, hooks, utils) outside `src/app/`.
|
|
29
|
+
- Import `Link`, `router`, and `useLocalSearchParams` from `expo-router`.
|
|
30
|
+
- Docs: https://docs.expo.dev/router/introduction.md
|
|
31
|
+
|
|
32
|
+
## Building with EAS
|
|
33
|
+
|
|
34
|
+
Use EAS to build, sign, and submit the app in the cloud (`eas build`, `eas submit`) and to ship over-the-air updates (`eas update`) — no local Xcode or Android Studio required. Run EAS CLI as `bunx eas-cli <command>` in Bun projects, or `npx eas-cli@latest <command>` otherwise; substitute that for bare `eas` in docs examples.
|
|
35
|
+
Docs: https://docs.expo.dev/eas/index.md
|
|
36
|
+
|
|
37
|
+
## Rules
|
|
38
|
+
|
|
39
|
+
- If `ios/` and `android/` directories do not exist, they are generated (Continuous Native Generation). Never create or edit them by hand — configure native behavior in `app.json` and config plugins.
|
|
40
|
+
- Expo Go only includes its bundled native modules. After adding a library with native code, the app needs a development build: `npx expo run:ios|android` locally, or `eas build --profile development`.
|
|
41
|
+
- Prefer recommended Expo modules over third-party libraries, and check your available skills before adding dependencies. Docs: https://docs.expo.dev/versions/latest/index.md
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@AGENTS.md
|