{"version":3,"sources":["../src/index.ts","../package.json"],"sourcesContent":["import { resolve } from 'path'\nimport { copyFileSync, mkdirSync, readFileSync, writeFileSync } from 'fs'\nimport type { IApi } from 'umi'\nimport type { Options } from '@plugin-web-update-notification/core'\nimport {\n  DIRECTORY_NAME,\n  INJECT_SCRIPT_FILE_NAME,\n  INJECT_STYLE_FILE_NAME,\n  JSON_FILE_NAME,\n  NOTIFICATION_ANCHOR_CLASS_NAME,\n  generateJSONFileContent,\n  generateJsFileContent,\n  getFileHash,\n  getVersion,\n} from '@plugin-web-update-notification/core'\nimport { name as pkgName } from '../package.json'\n\nexport type { Options } from '@plugin-web-update-notification/core'\n\nconst injectVersionTpl = (version: string) => {\n  return `window.pluginWebUpdateNotice_version = '${version}';`\n}\n\nexport default (api: IApi) => {\n  api.describe({\n    key: 'webUpdateNotification',\n    config: {\n      schema(Joi) {\n        return Joi.object({\n          versionType: Joi.string(),\n          customVersion: Joi.string(),\n          /** polling interval（ms）, default 10*60*1000 */\n          checkInterval: Joi.number(),\n          /** whether to output version in console */\n          logVersion: Joi.boolean(),\n          checkOnWindowFocus: Joi.boolean(),\n          checkImmediately: Joi.boolean(),\n          checkOnLoadFileError: Joi.boolean(),\n          injectFileBase: Joi.string(),\n          customNotificationHTML: Joi.string(),\n          notificationProps: {\n            title: Joi.string(),\n            description: Joi.string(),\n            buttonText: Joi.string(),\n            dismissButtonText: Joi.string(),\n          },\n          notificationConfig: {\n            primaryColor: Joi.string(),\n            secondaryColor: Joi.string(),\n            placement: Joi.string(),\n          },\n          silence: Joi.boolean(),\n          locale: Joi.string(),\n          localeData: Joi.object(),\n          hiddenDefaultNotification: Joi.boolean(),\n          hiddenDismissButton: Joi.boolean(),\n        })\n      },\n    },\n    enableBy() {\n      return api.env === 'production' && api?.userConfig.webUpdateNotification\n    },\n  })\n\n  const webUpdateNotificationOptions = (api.userConfig?.webUpdateNotification || {}) as Options\n  if (webUpdateNotificationOptions.injectFileBase === undefined)\n    webUpdateNotificationOptions.injectFileBase = api.userConfig.publicPath || '/'\n\n  const { versionType, customNotificationHTML, hiddenDefaultNotification, injectFileBase = '/', customVersion, silence } = webUpdateNotificationOptions\n\n  let version = ''\n  if (versionType === 'custom')\n    version = getVersion(versionType, customVersion!)\n  else\n    version = getVersion(versionType!)\n\n  // 插件只在生产环境时生效\n  if (!version || api.env !== 'production')\n    return\n\n  const jsFlePath = resolve('node_modules', pkgName, 'dist', `${INJECT_SCRIPT_FILE_NAME}.js`)\n  const jsFileContent = generateJsFileContent(\n    readFileSync(jsFlePath, 'utf8').toString(),\n    version,\n    webUpdateNotificationOptions,\n  )\n  /** inject script file hash */\n  const jsFileHash = getFileHash(jsFileContent)\n\n  const cssFilePath = resolve('node_modules', pkgName, 'dist', `${INJECT_STYLE_FILE_NAME}.css`)\n  /** inject css file hash */\n  const cssFileHash = getFileHash(readFileSync(cssFilePath, 'utf8').toString())\n\n  api.addHTMLLinks(() => {\n    if (customNotificationHTML || hiddenDefaultNotification)\n      return []\n\n    return [\n      {\n        rel: 'stylesheet',\n        href: `${injectFileBase}${DIRECTORY_NAME}/${INJECT_STYLE_FILE_NAME}.${cssFileHash}.css`,\n      },\n    ]\n  })\n\n  api.addHTMLHeadScripts(() => {\n    const scriptList = []\n    scriptList.push({\n      content: injectVersionTpl(version),\n    })\n    scriptList.push({\n      src: `${injectFileBase}${DIRECTORY_NAME}/${INJECT_SCRIPT_FILE_NAME}.${jsFileHash}.js`,\n    })\n    return scriptList\n  })\n\n  api.onBuildComplete(() => {\n    const outputPath = resolve(api.userConfig.outputPath || 'dist')\n    mkdirSync(`${outputPath}/${DIRECTORY_NAME}`)\n\n    // copy file from @plugin-web-update-notification/core/dist/??.css */ to dist/\n    copyFileSync(cssFilePath, `${outputPath}/${DIRECTORY_NAME}/${INJECT_STYLE_FILE_NAME}.${cssFileHash}.css`)\n\n    // write js file to dist/\n    writeFileSync(`${outputPath}/${DIRECTORY_NAME}/${INJECT_SCRIPT_FILE_NAME}.${jsFileHash}.js`, jsFileContent)\n\n    // write version json file to dist/\n    writeFileSync(`${outputPath}/${DIRECTORY_NAME}/${JSON_FILE_NAME}.json`, generateJSONFileContent(version, silence))\n  })\n\n  api.modifyHTML(($) => {\n    if (!hiddenDefaultNotification)\n      $('body').append(`<div class=\"${NOTIFICATION_ANCHOR_CLASS_NAME}\"></div>`)\n    return $\n  })\n}\n","{\n  \"name\": \"umi-plugin-goldjetjsupdate\",\n  \"version\": \"1.7.1\",\n  \"description\": \"Umi plugin for detect web page updates and notify.\",\n  \"author\": \"Utopia\",\n  \"license\": \"MIT\",\n  \"homepage\": \"https://github.com/GreatAuk/plugin-web-update-notification\",\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"https://github.com/GreatAuk/plugin-web-update-notification\",\n    \"directory\": \"packages/umi-plugin\"\n  },\n  \"bugs\": {\n    \"url\": \"https://github.com/GreatAuk/plugin-web-update-notification/issues\"\n  },\n  \"keywords\": [\n    \"umi\",\n    \"umi-plugin\",\n    \"@plugin-web-update-notification/core\",\n    \"web-update-notification\"\n  ],\n  \"sideEffects\": false,\n  \"exports\": {\n    \".\": {\n      \"types\": \"./dist/index.d.ts\",\n      \"require\": \"./dist/index.js\",\n      \"import\": \"./dist/index.mjs\"\n    }\n  },\n  \"main\": \"dist/index.js\",\n  \"module\": \"dist/index.mjs\",\n  \"types\": \"dist/index.d.ts\",\n  \"files\": [\n    \"dist\"\n  ],\n  \"scripts\": {\n    \"start\": \"tsx src/index.ts\",\n    \"build\": \"tsup\",\n    \"dev\": \"tsup --watch\"\n  },\n  \"peerDependencies\": {\n    \"umi\": \"*\"\n  },\n  \"dependencies\": {\n    \"@plugin-web-update-notification/core\": \"workspace:*\"\n  },\n  \"devDependencies\": {\n    \"umi\": \"^4.0.2\"\n  }\n}\n"],"mappings":"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","names":["resolve","copyFileSync","mkdirSync","readFileSync","writeFileSync","DIRECTORY_NAME","INJECT_SCRIPT_FILE_NAME","INJECT_STYLE_FILE_NAME","JSON_FILE_NAME","NOTIFICATION_ANCHOR_CLASS_NAME","generateJSONFileContent","generateJsFileContent","getFileHash","getVersion","name","injectVersionTpl","version","src_default","api","Joi","webUpdateNotificationOptions","versionType","customNotificationHTML","hiddenDefaultNotification","injectFileBase","customVersion","silence","getVersion","jsFlePath","resolve","name","INJECT_SCRIPT_FILE_NAME","jsFileContent","generateJsFileContent","readFileSync","jsFileHash","getFileHash","cssFilePath","INJECT_STYLE_FILE_NAME","cssFileHash","DIRECTORY_NAME","scriptList","outputPath","mkdirSync","copyFileSync","writeFileSync","JSON_FILE_NAME","generateJSONFileContent","$","NOTIFICATION_ANCHOR_CLASS_NAME"]}