"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getAllNativeModules = getAllNativeModules;
exports.getAllForPlatform = getAllForPlatform;
exports.getAllNativeForExpoClientOnPlatform = getAllNativeForExpoClientOnPlatform;
exports.getVersionableModulesForPlatform = getVersionableModulesForPlatform;
exports.getDetachableModules = getDetachableModules;
exports.getPublishableModules = getPublishableModules;
exports.doesVersionSatisfy = doesVersionSatisfy;
function _semver() {
const data = _interopRequireDefault(require("semver"));
_semver = function () {
return data;
};
return data;
}
function _config() {
const data = require("./config");
_config = function () {
return data;
};
return data;
}
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const HIGHEST_KNOWN_VERSION = '10000.0.0';
function getAllNativeModules() {
return [..._config().expoSdkUniversalModulesConfigs, ..._config().vendoredNativeModules].filter(moduleConfig => moduleConfig.isNativeModule);
}
function getAllForPlatform(platform, sdkVersion) {
return _config().expoSdkUniversalModulesConfigs.filter(moduleConfig => doesVersionSatisfy(sdkVersion, moduleConfig.sdkVersions)).map(moduleConfig => ({ ...moduleConfig,
...moduleConfig.config[platform]
}));
}
function getAllNativeForExpoClientOnPlatform(platform, sdkVersion) {
return getAllForPlatform(platform, sdkVersion).filter(moduleConfig => moduleConfig.includeInExpoClient && moduleConfig.isNativeModule);
}
function getVersionableModulesForPlatform(platform, sdkVersion) {
return getAllNativeForExpoClientOnPlatform(platform, sdkVersion).filter(moduleConfig => {
return moduleConfig.versionable;
});
}
function getDetachableModules(platform, sdkVersion) {
return getAllForPlatform(platform, sdkVersion).filter(moduleConfig => moduleConfig.isNativeModule && moduleConfig.detachable);
}
function getPublishableModules(sdkVersion) {
return _config().expoSdkUniversalModulesConfigs.filter(moduleConfig => !!moduleConfig.libName && doesVersionSatisfy(sdkVersion, moduleConfig.sdkVersions));
}
function doesVersionSatisfy(version, versionRequirement) {
if (version === 'UNVERSIONED') {
return _semver().default.satisfies(HIGHEST_KNOWN_VERSION, versionRequirement);
}
return _semver().default.satisfies(version, versionRequirement);
}
//# sourceMappingURL=../__sourcemaps__/modules/Modules.js.map