1{"version":3,"file":"extensions.js","names":["getExtensions","platforms","extensions","workflows","assert","Array","isArray","fileExtensions","workflow","platform","extension","push","filter","Boolean","join","getLanguageExtensionsInOrder","isTS","isModern","isReact","addLanguage","lang","unshift","getManagedExtensions","languageOptions","_addMiscellaneousExtensions","getBareExtensions","includes"],"sources":["../../src/paths/extensions.ts"],"sourcesContent":["import assert from 'assert';\n\nexport type LanguageOptions = {\n isTS: boolean;\n isModern: boolean;\n isReact: boolean;\n};\n\nexport function getExtensions(\n platforms: string[],\n extensions: string[],\n workflows: string[]\n): string[] {\n // In the past we used spread operators to collect the values so now we enforce type safety on them.\n assert(Array.isArray(platforms), 'Expected: `platforms: string[]`');\n assert(Array.isArray(extensions), 'Expected: `extensions: string[]`');\n assert(Array.isArray(workflows), 'Expected: `workflows: string[]`');\n\n const fileExtensions = [];\n // support .expo files\n for (const workflow of [...workflows, '']) {\n // Ensure order is correct: [platformA.js, platformB.js, js]\n for (const platform of [...platforms, '']) {\n // Support both TypeScript and JavaScript\n for (const extension of extensions) {\n fileExtensions.push([platform, workflow, extension].filter(Boolean).join('.'));\n }\n }\n }\n return fileExtensions;\n}\n\nexport function getLanguageExtensionsInOrder({\n isTS,\n isModern,\n isReact,\n}: LanguageOptions): string[] {\n // @ts-ignore: filter removes false type\n const addLanguage = (lang: string): string[] => [lang, isReact && `${lang}x`].filter(Boolean);\n\n // Support JavaScript\n let extensions = addLanguage('js');\n\n if (isModern) {\n extensions.unshift('mjs');\n }\n if (isTS) {\n extensions = [...addLanguage('ts'), ...extensions];\n }\n\n return extensions;\n}\n\nexport function getManagedExtensions(\n platforms: string[],\n languageOptions: LanguageOptions = { isTS: true, isModern: true, isReact: true }\n): string[] {\n const fileExtensions = getExtensions(platforms, getLanguageExtensionsInOrder(languageOptions), [\n 'expo',\n ]);\n // Always add these last\n _addMiscellaneousExtensions(platforms, fileExtensions);\n return fileExtensions;\n}\n\nexport function getBareExtensions(\n platforms: string[],\n languageOptions: LanguageOptions = { isTS: true, isModern: true, isReact: true }\n): string[] {\n const fileExtensions = getExtensions(\n platforms,\n getLanguageExtensionsInOrder(languageOptions),\n []\n );\n // Always add these last\n _addMiscellaneousExtensions(platforms, fileExtensions);\n return fileExtensions;\n}\n\nfunction _addMiscellaneousExtensions(platforms: string[], fileExtensions: string[]): string[] {\n // Always add these with no platform extension\n // In the future we may want to add platform and workspace extensions to json.\n fileExtensions.push('json');\n // Native doesn't currently support web assembly.\n if (platforms.includes('web')) {\n fileExtensions.push('wasm');\n }\n return fileExtensions;\n}\n"],"mappings":";;;;;;;;;;AAAA;EAAA;;EAAA;IAAA;EAAA;;EAAA;AAAA;;;;AAQO,SAASA,aAAT,CACLC,SADK,EAELC,UAFK,EAGLC,SAHK,EAIK;EACV;EACA,IAAAC,iBAAA,EAAOC,KAAK,CAACC,OAAN,CAAcL,SAAd,CAAP,EAAiC,iCAAjC;EACA,IAAAG,iBAAA,EAAOC,KAAK,CAACC,OAAN,CAAcJ,UAAd,CAAP,EAAkC,kCAAlC;EACA,IAAAE,iBAAA,EAAOC,KAAK,CAACC,OAAN,CAAcH,SAAd,CAAP,EAAiC,iCAAjC;EAEA,MAAMI,cAAc,GAAG,EAAvB,CANU,CAOV;;EACA,KAAK,MAAMC,QAAX,IAAuB,CAAC,GAAGL,SAAJ,EAAe,EAAf,CAAvB,EAA2C;IACzC;IACA,KAAK,MAAMM,QAAX,IAAuB,CAAC,GAAGR,SAAJ,EAAe,EAAf,CAAvB,EAA2C;MACzC;MACA,KAAK,MAAMS,SAAX,IAAwBR,UAAxB,EAAoC;QAClCK,cAAc,CAACI,IAAf,CAAoB,CAACF,QAAD,EAAWD,QAAX,EAAqBE,SAArB,EAAgCE,MAAhC,CAAuCC,OAAvC,EAAgDC,IAAhD,CAAqD,GAArD,CAApB;MACD;IACF;EACF;;EACD,OAAOP,cAAP;AACD;;AAEM,SAASQ,4BAAT,CAAsC;EAC3CC,IAD2C;EAE3CC,QAF2C;EAG3CC;AAH2C,CAAtC,EAIuB;EAC5B;EACA,MAAMC,WAAW,GAAIC,IAAD,IAA4B,CAACA,IAAD,EAAOF,OAAO,IAAK,GAAEE,IAAK,GAA1B,EAA8BR,MAA9B,CAAqCC,OAArC,CAAhD,CAF4B,CAI5B;;;EACA,IAAIX,UAAU,GAAGiB,WAAW,CAAC,IAAD,CAA5B;;EAEA,IAAIF,QAAJ,EAAc;IACZf,UAAU,CAACmB,OAAX,CAAmB,KAAnB;EACD;;EACD,IAAIL,IAAJ,EAAU;IACRd,UAAU,GAAG,CAAC,GAAGiB,WAAW,CAAC,IAAD,CAAf,EAAuB,GAAGjB,UAA1B,CAAb;EACD;;EAED,OAAOA,UAAP;AACD;;AAEM,SAASoB,oBAAT,CACLrB,SADK,EAELsB,eAAgC,GAAG;EAAEP,IAAI,EAAE,IAAR;EAAcC,QAAQ,EAAE,IAAxB;EAA8BC,OAAO,EAAE;AAAvC,CAF9B,EAGK;EACV,MAAMX,cAAc,GAAGP,aAAa,CAACC,SAAD,EAAYc,4BAA4B,CAACQ,eAAD,CAAxC,EAA2D,CAC7F,MAD6F,CAA3D,CAApC,CADU,CAIV;;EACAC,2BAA2B,CAACvB,SAAD,EAAYM,cAAZ,CAA3B;;EACA,OAAOA,cAAP;AACD;;AAEM,SAASkB,iBAAT,CACLxB,SADK,EAELsB,eAAgC,GAAG;EAAEP,IAAI,EAAE,IAAR;EAAcC,QAAQ,EAAE,IAAxB;EAA8BC,OAAO,EAAE;AAAvC,CAF9B,EAGK;EACV,MAAMX,cAAc,GAAGP,aAAa,CAClCC,SADkC,EAElCc,4BAA4B,CAACQ,eAAD,CAFM,EAGlC,EAHkC,CAApC,CADU,CAMV;;EACAC,2BAA2B,CAACvB,SAAD,EAAYM,cAAZ,CAA3B;;EACA,OAAOA,cAAP;AACD;;AAED,SAASiB,2BAAT,CAAqCvB,SAArC,EAA0DM,cAA1D,EAA8F;EAC5F;EACA;EACAA,cAAc,CAACI,IAAf,CAAoB,MAApB,EAH4F,CAI5F;;EACA,IAAIV,SAAS,CAACyB,QAAV,CAAmB,KAAnB,CAAJ,EAA+B;IAC7BnB,cAAc,CAACI,IAAf,CAAoB,MAApB;EACD;;EACD,OAAOJ,cAAP;AACD"}