1"use strict"; 2 3Object.defineProperty(exports, "__esModule", { 4 value: true 5}); 6exports.getBareExtensions = getBareExtensions; 7exports.getExtensions = getExtensions; 8exports.getLanguageExtensionsInOrder = getLanguageExtensionsInOrder; 9exports.getManagedExtensions = getManagedExtensions; 10 11function _assert() { 12 const data = _interopRequireDefault(require("assert")); 13 14 _assert = function () { 15 return data; 16 }; 17 18 return data; 19} 20 21function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } 22 23function getExtensions(platforms, extensions, workflows) { 24 // In the past we used spread operators to collect the values so now we enforce type safety on them. 25 (0, _assert().default)(Array.isArray(platforms), 'Expected: `platforms: string[]`'); 26 (0, _assert().default)(Array.isArray(extensions), 'Expected: `extensions: string[]`'); 27 (0, _assert().default)(Array.isArray(workflows), 'Expected: `workflows: string[]`'); 28 const fileExtensions = []; // support .expo files 29 30 for (const workflow of [...workflows, '']) { 31 // Ensure order is correct: [platformA.js, platformB.js, js] 32 for (const platform of [...platforms, '']) { 33 // Support both TypeScript and JavaScript 34 for (const extension of extensions) { 35 fileExtensions.push([platform, workflow, extension].filter(Boolean).join('.')); 36 } 37 } 38 } 39 40 return fileExtensions; 41} 42 43function getLanguageExtensionsInOrder({ 44 isTS, 45 isModern, 46 isReact 47}) { 48 // @ts-ignore: filter removes false type 49 const addLanguage = lang => [lang, isReact && `${lang}x`].filter(Boolean); // Support JavaScript 50 51 52 let extensions = addLanguage('js'); 53 54 if (isModern) { 55 extensions.unshift('mjs'); 56 } 57 58 if (isTS) { 59 extensions = [...addLanguage('ts'), ...extensions]; 60 } 61 62 return extensions; 63} 64 65function getManagedExtensions(platforms, languageOptions = { 66 isTS: true, 67 isModern: true, 68 isReact: true 69}) { 70 const fileExtensions = getExtensions(platforms, getLanguageExtensionsInOrder(languageOptions), ['expo']); // Always add these last 71 72 _addMiscellaneousExtensions(platforms, fileExtensions); 73 74 return fileExtensions; 75} 76 77function getBareExtensions(platforms, languageOptions = { 78 isTS: true, 79 isModern: true, 80 isReact: true 81}) { 82 const fileExtensions = getExtensions(platforms, getLanguageExtensionsInOrder(languageOptions), []); // Always add these last 83 84 _addMiscellaneousExtensions(platforms, fileExtensions); 85 86 return fileExtensions; 87} 88 89function _addMiscellaneousExtensions(platforms, fileExtensions) { 90 // Always add these with no platform extension 91 // In the future we may want to add platform and workspace extensions to json. 92 fileExtensions.push('json'); // Native doesn't currently support web assembly. 93 94 if (platforms.includes('web')) { 95 fileExtensions.push('wasm'); 96 } 97 98 return fileExtensions; 99} 100//# sourceMappingURL=extensions.js.map