"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.prependPublicPath = prependPublicPath; exports.default = generateWebManifest; exports.DEFAULT_MANIFEST_FILENAME = exports.PWACOMPAT_PATH = void 0; function _react() { const data = _interopRequireDefault(require("react")); _react = function _react() { return data; }; return data; } function _fs() { const data = require("fs"); _fs = function _fs() { return data; }; return data; } function _path() { const data = require("path"); _path = function _path() { return data; }; return data; } function _url() { const data = require("url"); _url = function _url() { return data; }; return data; } function _umiUtils() { const data = require("umi-utils"); _umiUtils = function _umiUtils() { return data; }; return data; } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } const PWACOMPAT_PATH = 'pwacompat.min.js'; exports.PWACOMPAT_PATH = PWACOMPAT_PATH; const DEFAULT_MANIFEST_FILENAME = 'manifest.json'; exports.DEFAULT_MANIFEST_FILENAME = DEFAULT_MANIFEST_FILENAME; function prependPublicPath(publicPath = '/', src) { return (0, _url().resolve)(publicPath, src); } function generateWebManifest(api, options) { const publicPath = api.config.publicPath, log = api.log, absSrcPath = api.paths.absSrcPath, addHTMLLink = api.addHTMLLink, addHTMLHeadScript = api.addHTMLHeadScript, addPageWatcher = api.addPageWatcher, onGenerateFiles = api.onGenerateFiles; const defaultWebManifestOptions = { srcPath: (0, _path().join)((0, _umiUtils().winPath)(absSrcPath), DEFAULT_MANIFEST_FILENAME) }; let _defaultWebManifestOp = _objectSpread({}, defaultWebManifestOptions, {}, options), srcPath = _defaultWebManifestOp.srcPath; let manifestFilename = (0, _path().basename)(srcPath); const urlObj = (0, _url().parse)(srcPath); // remove search srcPath = srcPath.replace(urlObj.search, ''); if ((0, _fs().existsSync)(srcPath)) { // watch manifest on DEV mode if (process.env.NODE_ENV === 'development') { addPageWatcher([srcPath]); } } else { onGenerateFiles(() => { log.warn(`You'd better provide a WebManifest. Try to: 1. Create one under: \`${srcPath}\`, 2. Or override its path with \`pwa.manifestOptions.srcPath\` in umi config`); }); srcPath = null; manifestFilename = DEFAULT_MANIFEST_FILENAME; } // add addHTMLLink({ rel: 'manifest', href: prependPublicPath(publicPath, manifestFilename) }); // use PWACompat(https://github.com/GoogleChromeLabs/pwacompat) for non-compliant browsers addHTMLHeadScript({ async: '', src: prependPublicPath(publicPath, PWACOMPAT_PATH) }); return { srcPath, outputPath: manifestFilename }; }