@expo/webpack-pwa-manifest-plugin
Version:
Generates a progressive web app (PWA) manifest.json from a React Native app.json
144 lines (118 loc) • 4.48 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends2;
function _load_extends() {
return _extends2 = _interopRequireDefault(require('babel-runtime/helpers/extends'));
}
var _getIterator2;
function _load_getIterator() {
return _getIterator2 = _interopRequireDefault(require('babel-runtime/core-js/get-iterator'));
}
exports.default = createMetatagsFromConfig;
var _Metatags;
function _load_Metatags() {
return _Metatags = _interopRequireDefault(require('./Metatags'));
}
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function possibleProperty(input, possiblePropertyNames, fallback) {
var _iteratorNormalCompletion = true;
var _didIteratorError = false;
var _iteratorError = undefined;
try {
for (var _iterator = (0, (_getIterator2 || _load_getIterator()).default)(possiblePropertyNames), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
var propertyName = _step.value;
if (input[propertyName] !== undefined) {
return input[propertyName];
}
}
} catch (err) {
_didIteratorError = true;
_iteratorError = err;
} finally {
try {
if (!_iteratorNormalCompletion && _iterator.return) {
_iterator.return();
}
} finally {
if (_didIteratorError) {
throw _iteratorError;
}
}
}
return fallback;
}
function populateMetatagObject(schema, input) {
var output = {};
var _iteratorNormalCompletion2 = true;
var _didIteratorError2 = false;
var _iteratorError2 = undefined;
try {
for (var _iterator2 = (0, (_getIterator2 || _load_getIterator()).default)(schema), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
var item = _step2.value;
// Check the list of propNames and the tag name
var value = possibleProperty(input, item.propNames.concat([item.name]), item.fallback);
if (value !== undefined) {
output[item.name] = value;
}
}
} catch (err) {
_didIteratorError2 = true;
_iteratorError2 = err;
} finally {
try {
if (!_iteratorNormalCompletion2 && _iterator2.return) {
_iterator2.return();
}
} finally {
if (_didIteratorError2) {
throw _iteratorError2;
}
}
}
return output;
}
function createMetatagsFromConfig(config) {
var _ref = config || config.expo || {},
_ref$web = _ref.web,
web = _ref$web === undefined ? {} : _ref$web;
var themeColor = web.themeColor,
_web$meta = web.meta,
meta = _web$meta === undefined ? {} : _web$meta;
var viewport = meta.viewport,
googleSiteVerification = meta.googleSiteVerification,
_meta$apple = meta.apple,
apple = _meta$apple === undefined ? {} : _meta$apple,
_meta$twitter = meta.twitter,
twitter = _meta$twitter === undefined ? {} : _meta$twitter,
_meta$openGraph = meta.openGraph,
openGraph = _meta$openGraph === undefined ? {} : _meta$openGraph,
_meta$microsoft = meta.microsoft,
microsoft = _meta$microsoft === undefined ? {} : _meta$microsoft;
var openGraphMetatags = populateMetatagObject((_Metatags || _load_Metatags()).default.openGraph, openGraph);
var twitterMetatags = populateMetatagObject((_Metatags || _load_Metatags()).default.twitter, twitter);
var microsoftMetatags = populateMetatagObject((_Metatags || _load_Metatags()).default.microsoft, microsoft);
var appleMetatags = {
// Disable automatic phone number detection.
'format-detection': apple.formatDetection,
'apple-touch-fullscreen': apple.touchFullscreen,
'mobile-web-app-capable': apple.mobileWebAppCapable,
'apple-mobile-web-app-capable': apple.mobileWebAppCapable,
'apple-mobile-web-app-status-bar-style': apple.barStyle,
'apple-mobile-web-app-title': web.shortName
};
var metaTags = (0, (_extends2 || _load_extends()).default)({
viewport: viewport,
description: config.description
}, openGraphMetatags, microsoftMetatags, twitterMetatags, appleMetatags);
if (googleSiteVerification !== undefined) {
metaTags['google-site-verification'] = googleSiteVerification;
}
if (themeColor !== undefined) {
metaTags['theme-color'] = themeColor;
}
return metaTags;
}
module.exports = exports['default'];
//# sourceMappingURL=__sourcemaps__/createMetatagsFromConfig.js.map