{"version":3,"sources":["../../src/node/_logger.ts","../../src/node/_util.ts","../../src/node/gm_api.ts","../../src/node/cdn.ts","../../src/node/inject_template.ts","../../src/node/option.ts","../../src/node/plugins/server.ts","../../src/node/open_browser.ts","../../src/node/userscript/index.ts","../../src/node/plugins/virtualHtml.ts","../../src/node/plugins/fixViteAsset.ts","../../src/node/plugins/fixViteClient.ts","../../src/node/plugins/externalGlobals.ts","../../src/node/plugins/externalLoader.ts","../../src/node/plugins/externalResource.ts","../../src/node/plugins/finalBundle.ts","../../src/node/_lazy.ts","../../src/node/systemjs.ts","../../src/node/util.ts","../../src/node/unimport.ts","../../src/node/topLevelAwait.ts","../../src/node/plugins/perview.ts","../../src/node/plugins/redirectClient.ts","../../src/node/plugins/index.ts","../../src/node/index.ts"],"sourcesContent":["import pc from 'picocolors';\n\nexport type Message = string | number | null | undefined;\ninterface OutputOptions {\n  /**\n   * @default false\n   */\n  time?: boolean;\n}\n\nconst log = (tag: string, message: Message, options?: OutputOptions) => {\n  console.log(\n    [\n      (options?.time ?? false) === true\n        ? pc.dim(new Date().toLocaleTimeString())\n        : '',\n      pc.bold(pc.blue(`[${tag}]`)),\n      message,\n    ]\n      .filter((s) => s)\n      .join('\\x20'),\n  );\n};\nconst info = (tag: string, message: Message, options?: OutputOptions) => {\n  log(tag, pc.white(message), options);\n};\nconst warn = (tag: string, message: Message, options?: OutputOptions) => {\n  log(tag, pc.yellow(message), options);\n};\nconst error = (tag: string, message: Message, options?: OutputOptions) => {\n  log(tag, pc.red(message), options);\n};\nexport const createLogger = (tag: string) => ({\n  info: async (message: Message, options?: OutputOptions) => {\n    info(tag, message, options);\n  },\n  warn: async (message: Message, options?: OutputOptions) => {\n    warn(tag, message, options);\n  },\n  error: async (message: Message, options?: OutputOptions) => {\n    error(tag, message, options);\n  },\n});\n\n/**\n * default logger\n */\nexport const logger = createLogger('plugin-monkey');\n\nexport type Logger = ReturnType<typeof createLogger>;\n","import * as acornWalk from 'acorn-walk';\nimport { resolve } from 'import-meta-resolve';\nimport { readFileSync } from 'node:fs';\nimport fs from 'node:fs/promises';\nimport path from 'node:path';\nimport { pathToFileURL } from 'node:url';\nimport type { OutputBundle, PluginContext, OutputChunk } from 'rollup';\nimport { normalizePath, transformWithEsbuild } from 'vite';\nimport { logger } from './_logger';\nimport { FinalMonkeyOption } from './types';\nimport { grantNames } from './gm_api';\n\nexport const delay = async (n = 0) => {\n  await new Promise<void>((res) => {\n    setTimeout(res, n);\n  });\n};\n\nconst get_vite_start_time = () => {\n  // @see https://github.com/vitejs/vite/blob/c703a3348adeaad9dc92d805a381866917f2a03b/packages/vite/src/node/server/index.ts#L741\n  const n: unknown = Reflect.get(globalThis, '__vite_start_time') ?? 0;\n  if (typeof n != 'number') {\n    return 0;\n  } else {\n    return n;\n  }\n};\n\nexport const isFirstBoot = (n = 1000) => get_vite_start_time() < n;\n\ninterface RawPackageJson {\n  name?: string;\n  version?: string;\n  description?: string;\n  license?: string;\n  author?: string | { name: string };\n  homepage?: string;\n  repository?: string | { url?: string };\n  bugs?: string | { url?: string };\n}\ninterface PackageJson {\n  name: string;\n  version?: string;\n  description?: string;\n  license?: string;\n  author?: string;\n  homepage?: string;\n  repository?: string;\n  bugs?: string;\n}\n\nexport const projectPkg = (() => {\n  let rawTarget: RawPackageJson = {};\n  try {\n    rawTarget = JSON.parse(\n      readFileSync(path.resolve(process.cwd(), 'package.json'), 'utf-8'),\n    );\n  } catch {\n    rawTarget = {};\n  }\n\n  const target: PackageJson = {\n    name: 'monkey',\n  };\n  Object.entries(rawTarget).forEach(([k, v]) => {\n    if (typeof v == 'string') {\n      Reflect.set(target, k, v);\n    }\n  });\n  if (\n    rawTarget.author instanceof Object &&\n    typeof rawTarget.author?.name == 'string'\n  ) {\n    target.author = rawTarget.author?.name;\n  }\n  if (\n    rawTarget.bugs instanceof Object &&\n    typeof rawTarget.bugs?.url == 'string'\n  ) {\n    target.bugs = rawTarget.bugs?.url;\n  }\n  if (\n    rawTarget.repository instanceof Object &&\n    typeof rawTarget.repository?.url == 'string'\n  ) {\n    const { url } = rawTarget.repository;\n    if (url.startsWith('http')) {\n      target.repository = url;\n    } else if (url.startsWith('git+http')) {\n      target.repository = url.slice(4);\n    }\n  }\n  return target;\n})();\n\nexport const compatResolve = (id: string) => {\n  return resolve(id, pathToFileURL(process.cwd() + '/any.js').href);\n};\n\nexport const existFile = async (path: string) => {\n  try {\n    return (await fs.stat(path)).isFile();\n  } catch {\n    return false;\n  }\n};\n\nconst resolveModuleFromPath = async (subpath: string) => {\n  const p = normalizePath(process.cwd()).split('/');\n  for (let i = p.length; i > 0; i--) {\n    const p2 = `${p.slice(0, i).join('/')}/node_modules/${subpath}`;\n    if (await existFile(p2)) {\n      return p2;\n    }\n  }\n};\n\nconst compatResolveModulePath = async (id: string): Promise<string> => {\n  try {\n    return compatResolve(id);\n  } catch (e) {\n    // not defined in pkg/package.json but exist in pkg/subpath\n    // https://github.com/lisonge/vite-plugin-monkey/issues/169\n    const r = await resolveModuleFromPath(id);\n    if (!r) {\n      throw e;\n    }\n    return r;\n  }\n};\n\nconst isScopePkg = (name: string) => name.startsWith('@');\n\nexport const getModuleRealInfo = async (importName: string) => {\n  const nameNoQuery = normalizePath(importName.split('?')[0]);\n  const resolveName = await (async () => {\n    const n = normalizePath(await compatResolveModulePath(nameNoQuery)).replace(\n      /.*\\/node_modules\\/[^/]+\\//,\n      '',\n    );\n    if (isScopePkg(importName)) {\n      return n.split('/').slice(1).join('/');\n    }\n    return n;\n  })();\n  let version: string | undefined = undefined;\n  const nameList = nameNoQuery.split('/');\n  let pkgName = nameNoQuery;\n  while (nameList.length > 0) {\n    pkgName = nameList.join('/');\n    const filePath = await (async () => {\n      const p = await resolveModuleFromPath(`${pkgName}/package.json`);\n      if (p) {\n        return p;\n      }\n      try {\n        return compatResolve(`${pkgName}/package.json`);\n      } catch {\n        return undefined;\n      }\n    })();\n    if (filePath === undefined || !(await existFile(filePath))) {\n      nameList.pop();\n      continue;\n    }\n    const modulePack: PackageJson = JSON.parse(\n      await fs.readFile(filePath, 'utf-8'),\n    );\n    version = modulePack.version;\n    break;\n  }\n  if (version === undefined) {\n    logger.warn(\n      `not found module ${nameNoQuery} version, use ${nameNoQuery}@latest`,\n    );\n    pkgName = nameNoQuery;\n    version = 'latest';\n  }\n  return { version, name: pkgName, resolveName };\n};\n\nexport const mergeObj = <T, S>(target: T | undefined, source: S) => {\n  if (target === undefined) return { ...source } as T & S;\n  const obj = { ...target };\n  for (const k in source) {\n    // @ts-ignore\n    if (obj[k] === undefined) {\n      // @ts-ignore\n      obj[k] = source[k];\n    }\n  }\n  return obj as T & S;\n};\n\nexport const miniCode = async (code: string, type: 'css' | 'js' = 'js') => {\n  return (\n    await transformWithEsbuild(code, 'any_name.' + type, {\n      minify: true,\n      sourcemap: false,\n      legalComments: 'none',\n    })\n  ).code.trimEnd();\n};\n\nexport const toValidURL = (url: unknown) => {\n  if (typeof url != 'string') return;\n  try {\n    return new URL(url);\n  } catch {}\n};\n\nexport const isTopLevelAwaitAvailableTarget = async (\n  target?: string | string[],\n) => {\n  target = getFinalTarget(target);\n  return transformWithEsbuild(`await 1`, 'any.js', {\n    target,\n    logLevel: 'silent',\n  })\n    .then(() => true)\n    .catch(() => false);\n};\n\n// https://github.com/vitejs/vite/blob/b9511f1ed8e36a618214944c69e2de6504ebcb3c/packages/vite/src/node/constants.ts#L20\nexport const ESBUILD_MODULES_TARGET = [\n  'es2020',\n  'edge88',\n  'firefox78',\n  'chrome87',\n  'safari14',\n];\n\nexport const getFinalTarget = (target?: string | string[]) => {\n  if (target === 'modules') {\n    target = ESBUILD_MODULES_TARGET;\n  }\n  return target;\n};\n\nexport const moduleExportExpressionWrapper = (expression: string) => {\n  let n = 0;\n  let identifier = ``;\n  while (expression.includes(identifier)) {\n    identifier = `_${(n || ``).toString(16)}`;\n    n++;\n  }\n  // https://github.com/lisonge/vite-plugin-monkey/issues/70\n  return `(()=>{const ${identifier}=${expression};('default' in ${identifier})||(${identifier}.default=${identifier});return ${identifier}})()`;\n};\n\n// https://stackoverflow.com/questions/7616461\nexport const cyrb53hash = (str = ``, seed = 0) => {\n  let h1 = 0xdeadbeef ^ seed,\n    h2 = 0x41c6ce57 ^ seed;\n  for (let i = 0, ch; i < str.length; i++) {\n    ch = str.charCodeAt(i);\n    h1 = Math.imul(h1 ^ ch, 2654435761);\n    h2 = Math.imul(h2 ^ ch, 1597334677);\n  }\n  h1 = Math.imul(h1 ^ (h1 >>> 16), 2246822507);\n  h1 ^= Math.imul(h2 ^ (h2 >>> 13), 3266489909);\n  h2 = Math.imul(h2 ^ (h2 >>> 16), 2246822507);\n  h2 ^= Math.imul(h1 ^ (h1 >>> 13), 3266489909);\n\n  return (4294967296 * (2097151 & h2) + (h1 >>> 0))\n    .toString(36)\n    .substring(0, 8);\n};\n\nexport async function* walk(dirPath: string) {\n  const pathnames = (await fs.readdir(dirPath)).map((s) =>\n    path.join(dirPath, s),\n  );\n  while (pathnames.length > 0) {\n    const pathname = pathnames.pop()!;\n    const state = await fs.lstat(pathname);\n    if (state.isFile()) {\n      yield pathname;\n    } else if (state.isDirectory()) {\n      pathnames.push(\n        ...(await fs.readdir(pathname)).map((s) => path.join(pathname, s)),\n      );\n    }\n  }\n}\n\nexport const collectGrant = (\n  context: PluginContext,\n  chunks: OutputChunk[],\n  injectCssCode: string | undefined,\n  minify: boolean,\n): Set<string> => {\n  const codes = new Set<string>();\n  if (injectCssCode) {\n    codes.add(injectCssCode);\n  }\n  for (const chunk of chunks) {\n    if (minify) {\n      // https://github.com/lisonge/vite-plugin-monkey/issues/166\n      const modules = Object.values(chunk.modules);\n      modules.forEach((m) => {\n        const code = m.code;\n        if (code) {\n          codes.add(code);\n        }\n      });\n    }\n    codes.add(chunk.code);\n  }\n  const unusedMembers = new Set<string>(\n    grantNames.filter((s) => s.includes(`.`)),\n  );\n  const endsWithWin = (a: string, b: string): boolean => {\n    if (a.endsWith(b)) {\n      return a === 'monkeyWindow.' + b || a === '_monkeyWindow.' + b;\n    }\n    return false;\n  };\n  const memberHandleMap = Object.fromEntries(\n    grantNames\n      .filter((s) => s.startsWith('window.'))\n      .map((name) => [name, (v: string) => endsWithWin(v, name.split('.')[1])]),\n  );\n  const unusedIdentifiers = new Set<string>(\n    grantNames.filter((s) => !s.includes(`.`)),\n  );\n  const usedGm = new Set<string>();\n  const matchIdentifier = (name: string): boolean => {\n    if (unusedIdentifiers.has(name)) {\n      usedGm.add(name);\n      unusedIdentifiers.delete(name);\n      return true;\n    }\n    return false;\n  };\n  const matchMember = (name: string): boolean => {\n    for (const unusedName of unusedMembers.values()) {\n      if (name.endsWith(unusedName) || memberHandleMap[unusedName]?.(name)) {\n        usedGm.add(unusedName);\n        unusedMembers.delete(unusedName);\n        return true;\n      }\n    }\n    return false;\n  };\n  for (const code of codes) {\n    if (!code.trim()) continue;\n    const ast = context.parse(code);\n    acornWalk.simple(\n      ast,\n      {\n        MemberExpression(node) {\n          if (unusedMembers.size === 0) return;\n          if (\n            node.computed ||\n            node.object.type !== 'Identifier' ||\n            node.property.type !== 'Identifier'\n          ) {\n            return;\n          }\n          if (\n            node.object.name === 'monkeyWindow' ||\n            node.object.name === '_monkeyWindow'\n          ) {\n            if (matchIdentifier(node.property.name)) {\n              return;\n            }\n          }\n          const name = node.object.name + '.' + node.property.name;\n          matchMember(name);\n        },\n        Identifier(node) {\n          // only one layer\n          matchIdentifier(node.name);\n        },\n      },\n      { ...acornWalk.base },\n    );\n    if (unusedMembers.size == 0 && unusedIdentifiers.size == 0) {\n      break;\n    }\n  }\n  return usedGm;\n};\n\nexport const getInjectCssCode = async (\n  finalOption: FinalMonkeyOption,\n  rawBundle: OutputBundle,\n) => {\n  const cssTexts: string[] = [];\n  Object.entries(rawBundle).forEach(([k, v]) => {\n    if (v.type == 'asset' && k.endsWith('.css')) {\n      cssTexts.push(v.source.toString());\n      delete rawBundle[k];\n    }\n  });\n  const css = cssTexts.join('').trim();\n  if (css) {\n    // use \\x20 to compat unocss, see https://github.com/lisonge/vite-plugin-monkey/issues/45\n    return await finalOption.cssSideEffects(`\\x20` + css + `\\x20`);\n  }\n};\n","export const gmIdentifiers = [\n  'GM_addElement',\n  'GM_addStyle',\n  'GM_addValueChangeListener',\n  'GM_cookie',\n  'GM_deleteValue',\n  'GM_deleteValues',\n  'GM_download',\n  'GM_getResourceText',\n  'GM_getResourceURL',\n  'GM_getTab',\n  'GM_getTabs',\n  'GM_getValue',\n  'GM_getValues',\n  'GM_info',\n  'GM_listValues',\n  'GM_log',\n  'GM_notification',\n  'GM_openInTab',\n  'GM_registerMenuCommand',\n  'GM_removeValueChangeListener',\n  'GM_saveTab',\n  'GM_setClipboard',\n  'GM_setValue',\n  'GM_setValues',\n  'GM_unregisterMenuCommand',\n  'GM_webRequest',\n  'GM_xmlhttpRequest',\n] as const;\n\nconst gmMembers = [\n  'GM.addElement',\n  'GM.addStyle',\n  'GM.addValueChangeListener',\n  'GM.cookie',\n  'GM.deleteValue',\n  'GM.deleteValues',\n  'GM.download',\n  'GM.getResourceText',\n  // https://www.tampermonkey.net/documentation.php#api:GM_getResourceURL\n  'GM.getResourceUrl',\n  'GM.getTab',\n  'GM.getTabs',\n  'GM.getValue',\n  'GM.getValues',\n  'GM.info',\n  'GM.listValues',\n  'GM.log',\n  'GM.notification',\n  'GM.openInTab',\n  'GM.registerMenuCommand',\n  'GM.removeValueChangeListener',\n  'GM.saveTab',\n  'GM.setClipboard',\n  'GM.setValue',\n  'GM.setValues',\n  'GM.unregisterMenuCommand',\n  'GM.webRequest',\n  'GM.xmlHttpRequest',\n] as const;\n\nconst othersGrantNames = [\n  'unsafeWindow',\n  'window.close',\n  'window.focus',\n  'window.onurlchange',\n] as const;\n\nexport type GrantType =\n  | (typeof gmIdentifiers)[number]\n  | (typeof gmMembers)[number]\n  | (typeof othersGrantNames)[number];\n\nexport const grantNames = [...gmMembers, ...gmIdentifiers, ...othersGrantNames];\n","import type { ModuleToUrlFc } from './types';\n\n/**\n * `https://cdn.jsdelivr.net/npm/${name}@${version}/${pathname}`\n * @param exportVarName cdn-exportVarName or resourceName\n * @param pathname jsdelivr support file combine, normally you don't need set pathname\n * @see https://www.jsdelivr.com/features\n */\nexport const jsdelivr = (\n  exportVarName = '',\n  pathname = '',\n): [string, ModuleToUrlFc] => {\n  return [\n    exportVarName,\n    (version, name, _importName = '', resolveName = '') => {\n      const p = pathname || resolveName;\n      if (p) {\n        return `https://cdn.jsdelivr.net/npm/${name}@${version}/${p}`;\n      } else {\n        return `https://cdn.jsdelivr.net/npm/${name}@${version}`;\n      }\n    },\n  ];\n};\n\n/**\n * `https://fastly.jsdelivr.net/npm/${name}@${version}/${pathname}`\n * @param exportVarName cdn-exportVarName or resourceName\n * @param pathname jsdelivr support file combine, normally you don't need set pathname\n * @see https://www.jsdelivr.com/features\n */\nexport const jsdelivrFastly = (\n  exportVarName = '',\n  pathname = '',\n): [string, ModuleToUrlFc] => {\n  return [\n    exportVarName,\n    (version, name, _importName = '', resolveName = '') => {\n      const p = pathname || resolveName;\n      if (p) {\n        return `https://fastly.jsdelivr.net/npm/${name}@${version}/${p}`;\n      } else {\n        return `https://fastly.jsdelivr.net/npm/${name}@${version}`;\n      }\n    },\n  ];\n};\n\n/**\n * `https://unpkg.com/${name}@${version}/${pathname}`\n * @param exportVarName cdn-exportVarName or resourceName\n * @see https://unpkg.com/\n */\nexport const unpkg = (\n  exportVarName = '',\n  pathname = '',\n): [string, ModuleToUrlFc] => {\n  return [\n    exportVarName,\n    (version, name, _importName = '', resolveName = '') => {\n      const p = pathname || resolveName;\n      if (p) {\n        return `https://unpkg.com/${name}@${version}/${p}`;\n      } else {\n        return `https://unpkg.com/${name}@${version}`;\n      }\n    },\n  ];\n};\n\n/**\n * `https://lf9-cdn-tos.bytecdntp.com/cdn/expire-10-y/${name}/${version}/${pathname}`\n * @param exportVarName cdn-exportVarName or resourceName\n * @see https://cdn.bytedance.com/\n */\nexport const bytecdntp = (\n  exportVarName = '',\n  pathname = '',\n): [string, ModuleToUrlFc] => {\n  return [\n    exportVarName,\n    (version, name, _importName = '', resolveName = '') => {\n      const p = pathname || resolveName;\n      return `https://lf9-cdn-tos.bytecdntp.com/cdn/expire-10-y/${name}/${version}/${p}`;\n    },\n  ];\n};\n\n/**\n * `https://fastly.jsdelivr.net/npm/${name}@${version}/${pathname}`\n * @deprecated bootcdn will return virus-infected code. Please stop using it and switch to other sources\n */\nexport const bootcdn = (\n  exportVarName = '',\n  pathname = '',\n): [string, ModuleToUrlFc] => {\n  console.warn(\n    'bootcdn will return virus-infected code. Please stop using it and switch to other sources. now it will return jsdelivr url.',\n  );\n  return [\n    exportVarName,\n    (version, name, _importName = '', resolveName = '') => {\n      const p = pathname || resolveName;\n      return `https://fastly.jsdelivr.net/npm/${name}@${version}/${p}`;\n    },\n  ];\n};\n\n/**\n * `https://lib.baomitu.com/${name}/${version}/${pathname}`\n * @param exportVarName cdn-exportVarName or resourceName\n * @see https://cdn.baomitu.com/\n */\nexport const baomitu = (\n  exportVarName = '',\n  pathname = '',\n): [string, ModuleToUrlFc] => {\n  return [\n    exportVarName,\n    (version, name, _importName = '', resolveName = '') => {\n      const p = pathname || resolveName;\n      return `https://lib.baomitu.com/${name}/${version}/${p}`;\n    },\n  ];\n};\n\n/**\n * `https://fastly.jsdelivr.net/npm/${name}@${version}/${pathname}`\n * @deprecated staticfile will return virus-infected code. Please stop using it and switch to other sources\n */\nexport const staticfile = (\n  exportVarName = '',\n  pathname = '',\n): [string, ModuleToUrlFc] => {\n  console.warn(\n    'staticfile will return virus-infected code. Please stop using it and switch to other sources. now it will return jsdelivr url.',\n  );\n  return [\n    exportVarName,\n    (version, name, _importName = '', resolveName = '') => {\n      const p = pathname || resolveName;\n      return `https://fastly.jsdelivr.net/npm/${name}@${version}/${p}`;\n    },\n  ];\n};\n/**\n * `https://cdnjs.cloudflare.com/ajax/libs/${name}/${version}/${pathname}`\n * @param exportVarName cdn-exportVarName or resourceName\n * @see https://cdnjs.com/libraries\n */\nexport const cdnjs = (\n  exportVarName = '',\n  pathname = '',\n): [string, ModuleToUrlFc] => {\n  return [\n    exportVarName,\n    (version, name, _importName = '', resolveName = '') => {\n      const p = pathname || resolveName;\n      return `https://cdnjs.cloudflare.com/ajax/libs/${name}/${version}/${p}`;\n    },\n  ];\n};\n\n/**\n * `https://unpkg.zhimg.com/${name}/${version}/${pathname}`\n * @param exportVarName cdn-exportVarName or resourceName\n * @link https://unpkg.zhimg.com/\n */\nexport const zhimg = (\n  exportVarName = '',\n  pathname = '',\n): [string, ModuleToUrlFc] => {\n  return [\n    exportVarName,\n    (version, name, _importName = '', resolveName = '') => {\n      const p = pathname || resolveName;\n      return `https://unpkg.zhimg.com/${name}@${version}/${p}`;\n    },\n  ];\n};\n\n/**\n * `https://npm.elemecdn.com/${name}@${version}/${pathname}`\n * @param exportVarName cdn-exportVarName or resourceName\n */\nexport const elemecdn = (\n  exportVarName = '',\n  pathname = '',\n): [string, ModuleToUrlFc] => {\n  return [\n    exportVarName,\n    (version, name, _importName = '', resolveName = '') => {\n      const p = pathname || resolveName;\n      return `https://npm.elemecdn.com/${name}@${version}/${p}`;\n    },\n  ];\n};\n\n/**\n * `https://code.bdstatic.com/npm/${name}@${version}/${pathname}`\n * @param exportVarName cdn-exportVarName or resourceName\n */\nexport const bdstatic = (\n  exportVarName = '',\n  pathname = '',\n): [string, ModuleToUrlFc] => {\n  return [\n    exportVarName,\n    (version, name, _importName = '', resolveName = '') => {\n      const p = pathname || resolveName;\n      return `https://code.bdstatic.com/npm/${name}@${version}/${p}`;\n    },\n  ];\n};\n\n/**\n * `https://registry.npmmirror.com/${name}/${version}/files/${pathname}`\n * @param exportVarName cdn-exportVarName or resourceName\n */\nexport const npmmirror = (\n  exportVarName = '',\n  pathname = '',\n): [string, ModuleToUrlFc] => {\n  return [\n    exportVarName,\n    (version, name, _importName = '', resolveName = '') => {\n      const p = pathname || resolveName;\n      if (p) {\n        return `https://registry.npmmirror.com/${name}/${version}/files/${p}`;\n      } else {\n        return `https://registry.npmmirror.com/${name}/${version}/files`;\n      }\n    },\n  ];\n};\n","export const fn2string = <T extends (...args: any[]) => any>(\n  fn: T,\n  ...args: Parameters<T>\n) => {\n  return `;(${fn})(...${JSON.stringify(args, undefined, 2)});`;\n};\n\nconst htmlText = /* html */ `\n<!DOCTYPE html>\n<html>\n  <head>\n    <meta charset=\"UTF-8\" />\n    <link rel=\"icon\" type=\"image/svg+xml\" href=\"https://vitejs.dev/logo.svg\" />\n    <title>Vite</title>\n  </head>\n  <script type=\"module\" data-source=\"vite-plugin-monkey\">\n  __CODE__\n  </script>\n</html>\n`.trimStart();\n\nexport const fcToHtml = <T extends (...args: any[]) => any>(\n  fn: T,\n  ...args: Parameters<T>\n) => {\n  return htmlText.replace(\n    `__CODE__`,\n    `;(${fn})(...${JSON.stringify(args, void 0, 2)});`,\n  );\n};\n\nexport interface ScriptOptions {\n  entrySrc: string;\n}\nexport const serverInjectFn = ({ entrySrc }: ScriptOptions) => {\n  /// https://github.com/Tampermonkey/tampermonkey/issues/1567\n  // @ts-ignore\n  // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n  window.GM; // must exist, see https://github.com/Tampermonkey/tampermonkey/issues/1567\n\n  const key = `__monkeyWindow-` + new URL(entrySrc).origin;\n  // @ts-ignore\n  document[key] = window;\n  console.log(`[vite-plugin-monkey] mount monkeyWindow to document`);\n  // @ts-ignore\n  if (typeof GM_addElement === 'function') {\n    // @ts-ignore\n    GM_addElement(document.head, 'script', {\n      type: 'module',\n      src: entrySrc,\n    });\n  } else {\n    const script = document.createElement('script');\n    script.type = 'module';\n    // @ts-ignore\n    if (window.trustedTypes) {\n      // https://github.com/lisonge/vite-plugin-monkey/issues/205\n      // @ts-ignore\n      const policy = window.trustedTypes.createPolicy(key, {\n        createScriptURL: (input: unknown) => input,\n      });\n      const trustedScriptURL = policy.createScriptURL(entrySrc);\n      script.src = trustedScriptURL;\n    } else {\n      script.src = entrySrc;\n    }\n    document.head.append(script);\n  }\n  console.log(`[vite-plugin-monkey] mount entry module to document.head`);\n};\n\nexport const mountGmApiFn = (meta: ImportMeta, apiNames: string[] = []) => {\n  const key = `__monkeyWindow-` + new URL(meta.url).origin;\n  // @ts-ignore\n  const monkeyWindow: Window = document[key];\n  if (!monkeyWindow) {\n    console.log(`[vite-plugin-monkey] not found monkeyWindow`);\n    return;\n  }\n\n  // @ts-ignore\n  window.unsafeWindow = window;\n  console.log(`[vite-plugin-monkey] mount unsafeWindow to unsafeWindow`);\n\n  apiNames.push('GM');\n  let mountedApiSize = 0;\n  apiNames.forEach((apiName) => {\n    // @ts-ignore\n    const fn = monkeyWindow[apiName];\n    if (fn) {\n      // @ts-ignore\n      window[apiName] = monkeyWindow[apiName];\n      mountedApiSize++;\n    }\n  });\n  console.log(\n    `[vite-plugin-monkey] mount ${mountedApiSize}/${apiNames.length} GM api to unsafeWindow`,\n  );\n};\n\nexport const virtualHtmlTemplate = async (url: string) => {\n  const delay = (n = 0) => new Promise<void>((res) => setTimeout(res, n));\n  await delay();\n  const u = new URL(url, location.origin);\n  u.searchParams.set('origin', u.origin);\n  if (window == window.parent) {\n    location.href = u.href;\n    await delay(500);\n    window.close();\n    return;\n  }\n  // if in iframe, like codesandbox\n  const style = document.createElement('style');\n  document.head.append(style);\n  style.innerText = /* css */ `\n  body {\n    font-family: Arial, sans-serif;\n    margin: 0;\n  }\n  .App {\n    margin: 25px;\n  }\n  p {\n    font-size: 1.5em;\n  }\n  a {\n    color: blue;\n    text-decoration: none;\n    font-size: 1.5em;\n  }\n  a:hover {\n    text-decoration: underline;\n  }\n`.trim();\n  document.body.innerHTML = /* html */ `\n  <div class=\"App\">\n    <h1>PREVIEW PAGE</h1>\n    <p>Click the links below to install userscripts:</p>\n    <a target=\"_blank\"></a></th>\n  </div>\n  `.trim();\n  await delay();\n  const a = document.querySelector('a')!;\n  a.href = location.href;\n  a.text = location.href;\n};\n\nexport const previewTemplate = async (urls: string[]) => {\n  const delay = (n = 0) => new Promise<void>((res) => setTimeout(res, n));\n  await delay();\n  const style = document.createElement('style');\n  document.head.append(style);\n  style.innerText = /* css */ `\n  body {\n    font-family: Arial, sans-serif;\n    margin: 0;\n  }\n  .App {\n    margin: 25px;\n  }\n  p {\n    font-size: 1.5em;\n  }\n  table {\n    width: 100%;\n    border-collapse: collapse;\n    font-size: 1.5em;\n  }\n  th, td {\n    border: 1px solid black;\n    padding: 8px;\n    text-align: left;\n  }\n  th {\n    background-color: #f2f2f2;\n  }\n  a {\n    color: blue;\n    text-decoration: none;\n  }\n  a:hover {\n    text-decoration: underline;\n  }\n`.trim();\n  if (window == window.parent && urls.length == 1) {\n    const u = new URL(urls[0], location.origin);\n    location.href = u.href;\n    await delay(500);\n    window.close();\n    return;\n  } else if (urls.length == 0) {\n    document.body.innerHTML = /* html */ `\n    <div class=\"App\">\n      <h1> There is no script to install </h1>\n    </div>\n    `.trim();\n    return;\n  } else {\n    document.body.innerHTML = /* html */ `\n    <div class=\"App\">\n      <h1>PREVIEW PAGE</h1>\n      <p>Click the links below to install userscripts:</p>\n      <table>\n        <tr>\n          <th>No.</th>\n          <th>Install Link</th>\n        </tr>\n      </table>\n    </div>\n    `.trim();\n    await delay();\n    const table = document.querySelector<HTMLElement>(`table`)!;\n    urls.sort().forEach((u, index) => {\n      const tr = document.createElement('tr');\n      const td1 = document.createElement('td');\n      const td2 = document.createElement('td');\n      const a = document.createElement('a');\n      td1.innerText = `${index + 1}`;\n      if (window != window.parent) {\n        a.target = '_blank';\n      }\n      a.href = u;\n      a.textContent = new URL(u, location.origin).href;\n      td2.append(a);\n      tr.append(td1);\n      tr.append(td2);\n      table.append(tr);\n    });\n  }\n};\n","import { logger } from './_logger';\nimport { miniCode, projectPkg } from './_util';\nimport { jsdelivr } from './cdn';\nimport { fn2string } from './inject_template';\nimport type {\n  FinalMonkeyOption,\n  IArray,\n  IPromise,\n  Mod2UrlFn,\n  MonkeyOption,\n  Pkg2UrlFn,\n  PkgOptions,\n} from './types';\n\nexport const resolvedOption = (\n  pluginOption: MonkeyOption,\n): FinalMonkeyOption => {\n  const build = pluginOption.build ?? {};\n\n  if (build.minifyCss !== undefined) {\n    logger.warn(\n      `monkeyConfig.build.minifyCss is deprecated, use viteConfig.build.cssMinify in vite>=4.2.0`,\n      { time: false },\n    );\n  }\n\n  const { externalResource = {} } = build;\n  const externalResource2: Record<\n    string,\n    {\n      resourceUrl: Pkg2UrlFn;\n      resourceName: Pkg2UrlFn;\n      loader?: (pkgOptions: PkgOptions) => unknown;\n      nodeLoader?: (pkgOptions: PkgOptions) => IPromise<string>;\n    }\n  > = {};\n\n  for (const [k, v] of Object.entries(externalResource)) {\n    if (typeof v == 'string') {\n      externalResource2[k] = {\n        resourceName: () => k,\n        resourceUrl: () => v,\n      };\n    } else if (typeof v == 'function') {\n      externalResource2[k] = {\n        resourceName: () => k,\n        resourceUrl: v,\n      };\n    } else if (v instanceof Array) {\n      let resourceUrl2: Pkg2UrlFn;\n      let resourceName2: Pkg2UrlFn = () => k;\n      const [resourceName, resourceUrl] = v;\n      if (typeof resourceName == 'string') {\n        resourceName2 = (pkg) => resourceName || pkg.importName;\n      } else {\n        resourceName2 = (pkg) =>\n          resourceName(pkg.version, pkg.name, pkg.importName, pkg.resolveName);\n      }\n      if (typeof resourceUrl == 'string') {\n        resourceUrl2 = () => resourceUrl;\n      } else {\n        resourceUrl2 = (pkg) =>\n          resourceUrl(pkg.version, pkg.name, pkg.importName, pkg.resolveName);\n      }\n      externalResource2[k] = {\n        resourceName: resourceName2,\n        resourceUrl: resourceUrl2,\n      };\n    } else {\n      const { resourceUrl, loader, nodeLoader, resourceName } = v;\n      let resourceUrl2: Pkg2UrlFn;\n      let resourceName2: Pkg2UrlFn = () => k;\n      let nodeLoader2:\n        | undefined\n        | ((pkgOptions: PkgOptions) => IPromise<string>) = undefined;\n      if (typeof resourceUrl == 'string') {\n        resourceUrl2 = () => resourceUrl;\n      } else {\n        resourceUrl2 = resourceUrl;\n      }\n      if (typeof resourceName == 'string') {\n        resourceName2 = () => resourceName;\n      } else if (typeof resourceName == 'function') {\n        resourceName2 = resourceName;\n      }\n      if (typeof nodeLoader == 'function') {\n        nodeLoader2 = nodeLoader;\n      } else if (typeof nodeLoader == 'string') {\n        nodeLoader2 = () => nodeLoader;\n      }\n      externalResource2[k] = {\n        resourceName: resourceName2,\n        resourceUrl: resourceUrl2,\n        loader,\n        nodeLoader: nodeLoader2,\n      };\n    }\n  }\n\n  const server = pluginOption.server ?? {};\n\n  const { prefix } = server;\n  let prefix2: (name: string) => string = (s) => 'server:' + s;\n  if (typeof prefix == 'function') {\n    prefix2 = prefix;\n  } else if (typeof prefix == 'string') {\n    prefix2 = () => prefix;\n  } else if (prefix === false) {\n    prefix2 = (name: string) => name;\n  }\n  const externalGlobals2 = build?.externalGlobals ?? {};\n  const externalGlobals: [string, IArray<string | Mod2UrlFn>][] = [];\n  if (externalGlobals2 instanceof Array) {\n    externalGlobals2.forEach((s) => externalGlobals.push(s));\n  } else {\n    Object.entries(externalGlobals2).forEach((s) => externalGlobals.push(s));\n  }\n\n  const { grant = [], $extra = [] } = pluginOption.userscript ?? {};\n  let {\n    name = {},\n    description = {},\n    'exclude-match': excludeMatch = [],\n    match = [],\n    exclude = [],\n    include = [],\n    antifeature = [],\n    require = [],\n    connect = [],\n    webRequest = [],\n  } = pluginOption.userscript ?? {};\n  if (typeof name == 'string') {\n    name = { '': name };\n  } else if (!('' in name)) {\n    name = { '': projectPkg.name, ...name };\n  }\n  if (typeof description == 'string') {\n    description = {\n      '': description,\n    };\n  } else if (!('' in description) && projectPkg.description) {\n    description = { '': projectPkg.description, ...description };\n  }\n  if (!(excludeMatch instanceof Array)) {\n    excludeMatch = [excludeMatch];\n  }\n  if (!(match instanceof Array)) {\n    match = [match];\n  }\n  if (!(exclude instanceof Array)) {\n    exclude = [exclude];\n  }\n  if (!(include instanceof Array)) {\n    include = [include];\n  }\n  if (!(antifeature instanceof Array)) {\n    antifeature = [antifeature];\n  }\n  if (!(require instanceof Array)) {\n    require = [require];\n  }\n  if (!(connect instanceof Array)) {\n    connect = [connect];\n  }\n  if (!(webRequest instanceof Array)) {\n    webRequest = [webRequest];\n  }\n\n  const grantSet = new Set<string>();\n  if (typeof grant == 'string') {\n    grantSet.add(grant);\n  } else if (grant instanceof Array) {\n    grant.forEach((s) => grantSet.add(s));\n  }\n\n  const extra: [string, ...string[]][] = [];\n  ($extra instanceof Array ? $extra : Object.entries($extra)).forEach(\n    ([k, v]) => {\n      extra.push([k, ...(v instanceof Array ? v : [v])]);\n    },\n  );\n\n  const {\n    icon64,\n    icon64URL,\n    icon,\n    iconURL,\n    namespace,\n    version = projectPkg.version,\n    author = projectPkg.author,\n    copyright,\n    downloadURL,\n    defaulticon,\n    contributionURL,\n    updateURL,\n    supportURL = projectPkg.bugs,\n    homepageURL = projectPkg.homepage,\n    homepage = projectPkg.homepage,\n    website,\n    license = projectPkg.license,\n    incompatible,\n    source = projectPkg.repository,\n    resource = {},\n    noframes = false,\n    'run-at': runAt,\n    'inject-into': injectInto,\n    contributionAmount,\n    compatible,\n    sandbox,\n    tag,\n    unwrap = false,\n  } = pluginOption.userscript ?? {};\n\n  const { fileName = projectPkg.name + '.user.js' } = build;\n  let { metaFileName } = build;\n  if (typeof metaFileName == 'string') {\n    const t = metaFileName;\n    metaFileName = () => t;\n  } else if (metaFileName === true) {\n    metaFileName = () => fileName.replace(/\\.user\\.js$/, '.meta.js');\n  } else if (metaFileName === false) {\n    metaFileName = undefined;\n  }\n\n  const metaFileFc = metaFileName;\n\n  const cssSideEffects =\n    build.cssSideEffects ||\n    (() => {\n      return (e: string) => {\n        // @ts-ignore\n        if (typeof GM_addStyle == 'function') {\n          // @ts-ignore\n          GM_addStyle(e);\n          return;\n        }\n        const o = document.createElement('style');\n        o.textContent = e;\n        document.head.append(o);\n      };\n    });\n\n  const config: FinalMonkeyOption = {\n    userscript: {\n      name,\n      namespace,\n      version,\n      icon64,\n      icon64URL,\n      icon,\n      iconURL,\n      author,\n      copyright,\n      downloadURL,\n      defaulticon,\n      contributionURL,\n      updateURL,\n      supportURL,\n      homepageURL,\n      homepage,\n      website,\n      license,\n      incompatible,\n      source,\n      resource,\n      noframes,\n      'run-at': runAt,\n      'inject-into': injectInto,\n      contributionAmount,\n      compatible,\n      'exclude-match': excludeMatch.map((s) => String(s)),\n      match: match.map((s) => String(s)),\n      include: include.map((s) => String(s)),\n      exclude: exclude.map((s) => String(s)),\n      antifeature,\n      require,\n      connect,\n      description,\n      $extra: extra,\n      grant: grantSet,\n      sandbox,\n      tag: tag ? (tag instanceof Array ? tag : [tag]) : [],\n      unwrap,\n      webRequest: webRequest.map((w) => JSON.stringify(w)),\n    },\n    clientAlias: pluginOption.clientAlias ?? '$',\n    entry: pluginOption.entry,\n    format: {\n      align: pluginOption.format?.align ?? 2,\n      generate: pluginOption.format?.generate ?? ((o) => o.userscript),\n    },\n    server: {\n      mountGmApi: server.mountGmApi ?? false,\n      open:\n        server.open ??\n        (process.platform == 'win32' || process.platform == 'darwin'),\n      prefix: prefix2,\n    },\n    build: {\n      fileName,\n      metaFileName: metaFileFc ? () => metaFileFc(fileName) : undefined,\n      autoGrant: build.autoGrant ?? true,\n      externalGlobals: externalGlobals,\n      externalResource: externalResource2,\n    },\n    collectRequireUrls: [],\n    collectResource: {},\n    globalsPkg2VarName: {},\n    requirePkgList: [],\n    systemjs: build.systemjs ?? jsdelivr()[1],\n    cssSideEffects: async (css) => {\n      const codeOrFc = await cssSideEffects(css);\n      if (typeof codeOrFc == 'string') {\n        return codeOrFc;\n      }\n      return miniCode(fn2string(codeOrFc, css), 'js');\n    },\n  };\n\n  return config;\n};\n","import { DomUtils, ElementType, parseDocument } from 'htmlparser2';\nimport fs from 'node:fs/promises';\nimport path from 'node:path';\nimport { Plugin, ResolvedConfig, normalizePath } from 'vite';\nimport { logger } from '../_logger';\nimport { cyrb53hash, existFile, isFirstBoot, toValidURL } from '../_util';\nimport { fn2string, mountGmApiFn, serverInjectFn } from '../inject_template';\nimport { openBrowser } from '../open_browser';\nimport type { FinalMonkeyOption } from '../types';\nimport { gmIdentifiers } from '../gm_api';\nimport { finalMonkeyOptionToComment } from '../userscript';\n\nexport const installUserPath = '/__vite-plugin-monkey.install.user.js';\nconst gmApiPath = '/__vite-plugin-monkey.gm.api.js';\nconst entryPath = '/__vite-plugin-monkey.entry.js';\nconst pullPath = '/__vite-plugin-monkey.pull.js';\nconst restartStoreKey = '__vite_plugin_monkey_install_url';\n\nexport const serverPlugin = (finalOption: FinalMonkeyOption): Plugin => {\n  let viteConfig: ResolvedConfig;\n  return {\n    name: 'monkey:server',\n    apply: 'serve',\n    async config(userConfig) {\n      return {\n        preview: {\n          host: userConfig.preview?.host ?? '127.0.0.1',\n          cors: true,\n        },\n        server: {\n          host: userConfig.server?.host ?? '127.0.0.1',\n          open: userConfig.server?.open ?? finalOption.server.open,\n          cors: true,\n        },\n      };\n    },\n    async configResolved(resolvedConfig) {\n      viteConfig = resolvedConfig;\n    },\n    async configureServer(server) {\n      for (const [k, v] of Object.entries(finalOption.userscript.name)) {\n        Reflect.set(\n          finalOption.userscript.name,\n          k,\n          finalOption.server.prefix(v),\n        );\n      }\n\n      // support dev env\n      finalOption.userscript.grant.add('*');\n\n      // https://github.com/lisonge/vite-plugin-monkey/issues/205\n      server.middlewares.use((_, res, next) => {\n        if (\n          res.getHeader('Access-Control-Allow-Private-Network') === undefined\n        ) {\n          res.setHeader('Access-Control-Allow-Private-Network', 'true');\n        }\n        next();\n      });\n\n      server.middlewares.use(async (req, res, next) => {\n        const reqUrl = req.url;\n        if (\n          req.method === 'GET' &&\n          reqUrl &&\n          [installUserPath, entryPath, pullPath, gmApiPath].some((u) =>\n            reqUrl.startsWith(u),\n          )\n        ) {\n          Object.entries({\n            'access-control-allow-origin': '*',\n            'content-type': 'application/javascript',\n          }).forEach(([k, v]) => {\n            res.setHeader(k, v);\n          });\n          const usp = new URLSearchParams(reqUrl.split('?', 2)[1]);\n\n          if (reqUrl.startsWith(installUserPath)) {\n            let origin = toValidURL(usp.get(`origin`))?.origin;\n            if (!origin) {\n              const { https, port } = viteConfig.server;\n              let { host } = viteConfig.server;\n              if (host == '0.0.0.0') {\n                host = '127.0.0.1';\n              }\n              origin = `${https ? 'https' : 'http'}://${host}:${port}`;\n              logger.warn(\n                `can not get origin from install url query parameter, use ${origin}`,\n                {\n                  time: true,\n                },\n              );\n            }\n            Reflect.set(globalThis, restartStoreKey, origin);\n            const u = new URL(entryPath, origin);\n            res.end(\n              [\n                await finalMonkeyOptionToComment(\n                  finalOption,\n                  new Set(),\n                  'serve',\n                ),\n                fn2string(serverInjectFn, {\n                  entrySrc: u.href,\n                }),\n                '',\n              ].join('\\n\\n'),\n            );\n          } else if (reqUrl.startsWith(entryPath)) {\n            const htmlText = await server.transformIndexHtml(\n              '/',\n              `<html><head></head></html>`,\n              req.originalUrl,\n            );\n\n            const doc = parseDocument(htmlText);\n            type Element =\n              ReturnType<typeof DomUtils.findAll> extends Array<infer T>\n                ? T\n                : never;\n            const scriptList = DomUtils.getElementsByTagType(\n              ElementType.Script,\n              doc,\n            ) as Element[];\n\n            const entryList: string[] = finalOption.server.mountGmApi\n              ? [gmApiPath]\n              : [];\n            scriptList.forEach((p) => {\n              const src = p.attribs.src ?? '';\n              const textNode = p.firstChild;\n              let text = '';\n              if (textNode?.type == ElementType.Text) {\n                text = textNode.data ?? '';\n              }\n              if (src) {\n                entryList.push(src);\n              } else {\n                const usp = new URLSearchParams({\n                  text: Buffer.from(text, 'utf-8').toString('base64url'),\n                });\n                entryList.push(pullPath + `?` + usp.toString());\n              }\n            });\n\n            let realEntry = finalOption.entry;\n            if (path.isAbsolute(realEntry)) {\n              realEntry = normalizePath(\n                path.relative(viteConfig.root, realEntry),\n              );\n            }\n            const entryUrl = new URL(realEntry, 'http://127.0.0.1');\n            entryList.push(entryUrl.pathname + entryUrl.search);\n            res.end(\n              entryList.map((s) => `import ${JSON.stringify(s)};`).join('\\n'),\n            );\n          } else if (reqUrl.startsWith(pullPath)) {\n            res.end(\n              Buffer.from(usp.get('text') ?? '', 'base64url').toString('utf-8'),\n            );\n          } else if (reqUrl.startsWith(gmApiPath)) {\n            if (finalOption.server.mountGmApi) {\n              res.end(\n                `;(${mountGmApiFn})(import.meta, ${JSON.stringify(gmIdentifiers)});`,\n              );\n            } else {\n              res.end('');\n            }\n          }\n          return;\n        }\n\n        next();\n      });\n\n      if (finalOption.server.open) {\n        const cacheUserPath = `node_modules/.vite/__vite-plugin-monkey.cache.${cyrb53hash(\n          viteConfig.configFile,\n        )}.user.js`;\n        let cacheComment = '';\n        if (await existFile(cacheUserPath)) {\n          cacheComment = (await fs.readFile(cacheUserPath)).toString('utf-8');\n        } else {\n          await fs.mkdir(path.dirname(cacheUserPath)).catch(() => {});\n        }\n        const newComment = await finalMonkeyOptionToComment(\n          finalOption,\n          new Set(),\n          'serve',\n        );\n        const installUrl = Reflect.get(globalThis, restartStoreKey);\n        if (!isFirstBoot() && cacheComment != newComment && installUrl) {\n          openBrowser(installUrl, true, logger);\n          logger.info('reopen, config comment has changed', { time: true });\n        }\n        await fs.writeFile(cacheUserPath, newComment).catch(() => {});\n      }\n    },\n  };\n};\n","import spawn from 'cross-spawn';\nimport { execSync } from 'node:child_process';\nimport path from 'node:path';\nimport type { Options } from 'open';\nimport colors from 'picocolors';\nimport type { Logger } from './_logger';\nimport { compatResolve } from './_util';\n\n// https://github.com/sindresorhus/open#app\nconst OSX_CHROME = 'google chrome';\n\n/**\n * Reads the BROWSER environment variable and decides what to do with it.\n * Returns true if it opened a browser or ran a node.js script, otherwise false.\n */\nexport function openBrowser(\n  url: string,\n  opt: string | true,\n  logger: Logger,\n): boolean {\n  // The browser executable to open.\n  // See https://github.com/sindresorhus/open#app for documentation.\n  const browser = typeof opt === 'string' ? opt : process.env.BROWSER || '';\n  if (browser.toLowerCase().endsWith('.js')) {\n    return executeNodeScript(browser, url, logger);\n  } else if (browser.toLowerCase() !== 'none') {\n    return startBrowserProcess(browser, url);\n  }\n  return false;\n}\n\nfunction executeNodeScript(scriptPath: string, url: string, logger: Logger) {\n  const extraArgs = process.argv.slice(2);\n  const child = spawn(process.execPath, [scriptPath, ...extraArgs, url], {\n    stdio: 'inherit',\n  });\n  child.on('close', (code: unknown) => {\n    if (code !== 0) {\n      logger.error(\n        colors.red(\n          `\\nThe script specified as BROWSER environment variable failed.\\n\\n${colors.cyan(\n            scriptPath,\n          )} exited with code ${code}.`,\n        ),\n        { time: true },\n      );\n    }\n  });\n  return true;\n}\n\nfunction startBrowserProcess(browser: string | undefined, url: string) {\n  // If we're on OS X, the user hasn't specifically\n  // requested a different browser, we can try opening\n  // Chrome with AppleScript. This lets us reuse an\n  // existing tab when possible instead of creating a new one.\n  const shouldTryOpenChromeWithAppleScript =\n    process.platform === 'darwin' && (browser === '' || browser === OSX_CHROME);\n\n  if (shouldTryOpenChromeWithAppleScript) {\n    try {\n      // Try our best to reuse existing tab\n      // on OS X Google Chrome with AppleScript\n      execSync('ps cax | grep \"Google Chrome\"');\n      execSync('osascript openChrome.applescript \"' + encodeURI(url) + '\"', {\n        cwd: path.dirname(compatResolve('vite/bin/openChrome.applescript')),\n        stdio: 'ignore',\n      });\n      return true;\n    } catch {\n      // Ignore errors\n    }\n  }\n\n  // Another special case: on OS X, check if BROWSER has been set to \"open\".\n  // In this case, instead of passing the string `open` to `open` function (which won't work),\n  // just ignore it (thus ensuring the intended behavior, i.e. opening the system browser):\n  // https://github.com/facebook/create-react-app/pull/1690#issuecomment-283518768\n  if (process.platform === 'darwin' && browser === 'open') {\n    browser = undefined;\n  }\n\n  // Fallback to open\n  // (It will always open new tab)\n  try {\n    const options: Options = browser ? { app: { name: browser } } : {};\n    // open is esm only, cjs need\n    import('open').then(({ default: open }) => {\n      open(url, options).catch(() => {}); // Prevent `unhandledRejection` error.\n    });\n    return true;\n  } catch {\n    return false;\n  }\n}\n","import { grantNames, type GrantType } from '../gm_api';\nimport type { FinalMonkeyOption, IArray, LocaleType } from '../types';\nimport type { Format } from './common';\nimport type { GreasemonkeyUserScript, GreaseRunAt } from './greasemonkey';\nimport type {\n  AntifeatureType,\n  TampermonkeyUserScript,\n  TamperRunAt,\n} from './tampermonkey';\nimport type { ViolentmonkeyUserScript, ViolentRunAt } from './violentmonkey';\nimport { ViolentInjectInto } from './violentmonkey';\n\nexport type {\n  Format,\n  GreasemonkeyUserScript,\n  TampermonkeyUserScript,\n  ViolentmonkeyUserScript,\n};\n\n/**\n * @see https://greasyfork.org/help/meta-keys\n */\ninterface GreasyforkUserScript {\n  /**\n   * @see https://greasyfork.org/help/meta-keys\n   * @default package.json.license\n   */\n  license?: string;\n\n  /**\n   * @see https://greasyfork.org/help/meta-keys\n   */\n  contributionURL?: string;\n\n  /**\n   * @see https://greasyfork.org/help/meta-keys\n   */\n  contributionAmount?: string;\n\n  /**\n   * @see https://greasyfork.org/help/meta-keys\n   */\n  compatible?: string;\n\n  /**\n   * @see https://greasyfork.org/help/meta-keys\n   */\n  incompatible?: string;\n}\n\ninterface MergemonkeyUserScript {\n  /**\n   * @default package.json.name??'monkey'\n   * @default {...{'':package.json.name??'monkey'},...name} // if name is object\n   */\n  name?: string | LocaleType<string>;\n\n  namespace?: string;\n\n  /**\n   * @default package.json.version\n   */\n  version?: string;\n\n  /**\n   * @default package.json.description\n   * @default {...{'':package.json.description},...description} // if description is object\n   */\n  description?: string | LocaleType<string>;\n\n  /**\n   * @default package.json.author\n   */\n  author?: string;\n\n  /**\n   * @default package.json.homepage\n   */\n  homepage?: string;\n\n  /**\n   * @default package.json.homepage\n   */\n  homepageURL?: string;\n\n  /**\n   * @default package.json.repository\n   */\n  source?: string;\n\n  /**\n   * @default package.json.bugs\n   */\n  supportURL?: string;\n\n  /**\n   * @see https://wiki.greasespot.net/Metadata_Block#.40run-at\n   *\n   * @see https://www.tampermonkey.net/documentation.php#meta:run_at\n   *\n   * @see https://violentmonkey.github.io/api/metadata-block/#run-at\n   *\n   */\n  'run-at'?: GreaseRunAt | TamperRunAt | ViolentRunAt;\n\n  /**\n   * @see https://wiki.greasespot.net/Metadata_Block#.40grant\n   *\n   * @see https://www.tampermonkey.net/documentation.php#meta:grant\n   *\n   * @see https://violentmonkey.github.io/api/metadata-block/#grant\n   *\n   * if set '\\*', will add all GM_* to UserScript\n   */\n  grant?: IArray<GrantType> | 'none' | '*';\n\n  /**\n   * custom extra meta\n   * @example\n   * [['antifeature', ['miner', 'hello233']]]\n   * // -->\n   * // \\@antifeature  miner     hello233\n   */\n  $extra?: [string, IArray<string>][] | Record<string, IArray<string>>;\n}\n\n/**\n * UserScript, merge metadata from Greasemonkey, Tampermonkey, Violentmonkey, Greasyfork\n */\nexport type MonkeyUserScript = GreasemonkeyUserScript &\n  TampermonkeyUserScript &\n  ViolentmonkeyUserScript &\n  GreasyforkUserScript &\n  MergemonkeyUserScript;\n\nexport interface FinalUserScript extends GreasyforkUserScript {\n  name: LocaleType<string>;\n  namespace?: string;\n  version?: string;\n  description: LocaleType<string>;\n  icon?: string;\n  include: string[];\n  match: string[];\n  exclude: string[];\n  require: string[];\n  resource: Record<string, string>;\n  noframes: boolean;\n  unwrap: boolean;\n  webRequest: string[];\n\n  author?: string;\n  copyright?: string;\n  homepage?: string;\n  homepageURL?: string;\n  website?: string;\n  source?: string;\n  iconURL?: string;\n  defaulticon?: string;\n  icon64?: string;\n  icon64URL?: string;\n  updateURL?: string;\n  downloadURL?: string;\n  supportURL?: string;\n  connect: string[];\n  sandbox?: string;\n  tag: string[];\n  antifeature: AntifeatureType[];\n\n  'exclude-match': string[];\n  'inject-into'?: ViolentInjectInto;\n  'run-at'?: GreaseRunAt | TamperRunAt | ViolentRunAt;\n  grant: Set<string>;\n  $extra: [string, ...string[]][];\n}\n\nexport const finalMonkeyOptionToComment = async (\n  {\n    userscript,\n    format,\n    collectRequireUrls,\n    collectResource,\n  }: FinalMonkeyOption,\n  collectGrantSet: Set<string>,\n  mode: `serve` | `build` | `meta`,\n): Promise<string> => {\n  let attrList: [string, ...string[]][] = [];\n  const {\n    name,\n    namespace,\n    version,\n    author,\n    description,\n    license,\n    copyright,\n\n    icon,\n    iconURL,\n    icon64,\n    icon64URL,\n    defaulticon,\n\n    homepage,\n    homepageURL,\n    website,\n    source,\n\n    supportURL,\n    downloadURL,\n    updateURL,\n\n    include,\n    match,\n    exclude,\n    require,\n    'exclude-match': excludeMatch,\n\n    'inject-into': injectInto,\n    'run-at': runAt,\n\n    compatible,\n    incompatible,\n\n    antifeature,\n    contributionAmount,\n    contributionURL,\n\n    connect,\n    sandbox,\n    tag,\n    resource,\n    grant,\n    noframes,\n    unwrap,\n    webRequest,\n    $extra,\n  } = userscript;\n  Object.entries({\n    namespace,\n    version,\n    author,\n    license,\n    copyright,\n    icon,\n    iconURL,\n    icon64,\n    icon64URL,\n    defaulticon,\n    homepage,\n    homepageURL,\n    website,\n    source,\n    supportURL,\n    downloadURL,\n    updateURL,\n    'inject-into': injectInto,\n    'run-at': runAt,\n    compatible,\n    incompatible,\n    contributionAmount,\n    contributionURL,\n    sandbox,\n  }).forEach(([k, v]) => {\n    if (typeof v == 'string') {\n      attrList.push([k, v]);\n    }\n  });\n  Object.entries(name).forEach(([k, v]) => {\n    if (k == '') {\n      attrList.push(['name', v]);\n    } else {\n      attrList.push(['name:' + k, v]);\n    }\n  });\n  Object.entries(description).forEach(([k, v]) => {\n    if (k == '') {\n      attrList.push(['description', v]);\n    } else {\n      attrList.push(['description:' + k, v]);\n    }\n  });\n\n  Object.entries({\n    include,\n    match,\n    exclude,\n    'exclude-match': excludeMatch,\n  }).forEach(([k, v]) => {\n    v.forEach((v2) => {\n      attrList.push([k, v2]);\n    });\n  });\n\n  [...require, ...collectRequireUrls].forEach((s) => {\n    attrList.push(['require', s]);\n  });\n\n  Object.entries({ ...resource, ...collectResource }).forEach(([k, v]) => {\n    attrList.push(['resource', k, v]);\n  });\n\n  connect.forEach((s) => {\n    attrList.push(['connect', s]);\n  });\n  tag.forEach((s) => {\n    attrList.push(['tag', s]);\n  });\n\n  webRequest.forEach((s) => {\n    attrList.push(['webRequest', s]);\n  });\n\n  if (grant.has('none')) {\n    attrList.push(['grant', 'none']);\n  } else if (grant.has('*')) {\n    grantNames.forEach((s) => {\n      attrList.push(['grant', s]);\n    });\n  } else {\n    new Set([...Array.from(collectGrantSet.values()).flat(), ...grant]).forEach(\n      (s) => {\n        if (!s.trim()) return;\n        attrList.push(['grant', s]);\n      },\n    );\n  }\n  antifeature.forEach(({ description, type, tag }) => {\n    attrList.push([\n      tag ? `antifeature:${tag}` : 'antifeature',\n      type,\n      description,\n    ]);\n  });\n  if (noframes) {\n    attrList.push(['noframes']);\n  }\n  if (unwrap) {\n    attrList.push(['unwrap']);\n  }\n  attrList.push(...$extra);\n\n  attrList = defaultSortFormat(attrList);\n\n  let { align = 2 } = format;\n\n  if (align === true) {\n    align = 2;\n  }\n\n  // format\n  if (typeof align == 'number' && Number.isInteger(align) && align >= 1) {\n    const alignN = align;\n\n    const formatKey = (subAttrList: [string, ...string[]][]) => {\n      if (subAttrList.length == 0) return;\n      const maxLen = Math.max(...subAttrList.map((s) => s[1].length));\n      subAttrList.forEach((s) => {\n        s[1] = s[1].padEnd(alignN + maxLen);\n      });\n    };\n\n    formatKey(attrList.filter((s) => s[0] == 'resource'));\n    formatKey(\n      attrList.filter(\n        (s) => s[0] == 'antifeature' || s[0].startsWith('antifeature:'),\n      ),\n    );\n\n    // format all\n    const maxLen = Math.max(...attrList.map((s) => s[0].length));\n    attrList.forEach((s) => {\n      s[0] = s[0].padEnd(alignN + maxLen);\n    });\n  } else if (typeof align == 'function') {\n    attrList = await align(attrList);\n  }\n\n  const uString = [\n    '==UserScript==',\n    ...attrList.map(\n      (attr) =>\n        '@' +\n        attr\n          .map((v) => {\n            return v.endsWith('\\x20') ? v : v + '\\x20';\n          })\n          .join('')\n          .trimEnd(),\n    ),\n    '==/UserScript==',\n  ]\n    .map((s) => '//\\x20' + s)\n    .join('\\n');\n\n  return format.generate({ userscript: uString, mode });\n};\n\nconst stringSort = (a: [string, ...string[]], b: [string, ...string[]]) => {\n  const minLen = Math.min(a.length, b.length);\n  for (let i = 0; i < minLen; i++) {\n    if (a[i] > b[i]) {\n      return 1;\n    } else if (a[i] < b[i]) {\n      return -1;\n    }\n  }\n  if (a.length > b.length) {\n    return 1;\n  } else if (a.length < b.length) {\n    return -1;\n  }\n  return 0;\n};\n\nconst defaultSortFormat = (p0: [string, ...string[]][]) => {\n  const filter = (\n    predicate: (value: [string, ...string[]], index: number) => boolean,\n  ): [string, ...string[]][] => {\n    const notMatchList: [string, ...string[]][] = [];\n    const matchList: [string, ...string[]][] = [];\n    p0.forEach((value, index) => {\n      if (!predicate(value, index)) {\n        notMatchList.push(value);\n      } else {\n        matchList.push(value);\n      }\n    });\n    p0 = notMatchList;\n    return matchList;\n  };\n  return [\n    filter(([k]) => k == 'name'),\n    filter(([k]) => k.startsWith('name:')),\n    filter(([k]) => k == 'namespace'),\n    filter(([k]) => k == 'version'),\n    filter(([k]) => k == 'author'),\n    filter(([k]) => k == 'description'),\n    filter(([k]) => k.startsWith('description:')),\n    filter(([k]) => k == 'license'),\n    filter(([k]) => k == 'copyright'),\n\n    filter(([k]) => k == 'icon'),\n    filter(([k]) => k == 'iconURL'),\n    filter(([k]) => k == 'icon64'),\n    filter(([k]) => k == 'icon64URL'),\n    filter(([k]) => k == 'defaulticon'),\n\n    filter(([k]) => k == 'homepage'),\n    filter(([k]) => k == 'homepageURL'),\n    filter(([k]) => k == 'website'),\n    filter(([k]) => k == 'source'),\n\n    filter(([k]) => k == 'supportURL'),\n    filter(([k]) => k == 'downloadURL'),\n    filter(([k]) => k == 'updateURL'),\n\n    filter(([k]) => k == 'include'),\n    filter(([k]) => k == 'match'),\n    filter(([k]) => k == 'exclude'),\n    filter(([k]) => k == 'exclude-match'),\n    filter(([k]) => k == 'webRequest'),\n\n    filter(([k]) => k == 'require'),\n\n    filter(([k]) => k == 'resource').sort(stringSort),\n\n    filter(([k]) => k == 'sandbox'),\n    filter(([k]) => k == 'tag'),\n\n    filter(([k]) => k == 'connect'),\n\n    filter(([k]) => k == 'grant').sort(stringSort),\n\n    filter(([k]) => k == 'inject-into'),\n    filter(([k]) => k == 'run-at'),\n\n    filter(([k]) => k == 'compatible'),\n    filter(([k]) => k == 'incompatible'),\n    filter(([k]) => k == 'antifeature').sort(stringSort),\n    filter(([k]) => k.startsWith('antifeature:')).sort(stringSort),\n    filter(([k]) => k == 'contributionAmount'),\n    filter(([k]) => k == 'contributionURL'),\n    filter(([k]) => k == 'noframes'),\n    filter(([k]) => k == 'unwrap'),\n    p0,\n  ].flat(1);\n};\n","import type { Plugin } from 'vite';\nimport { virtualHtmlTemplate, fcToHtml } from '../inject_template';\nimport type { FinalMonkeyOption } from '../types';\nimport { installUserPath } from './server';\n\n// https://github.com/vitejs/vite/blob/2401253b9aa487c50edb5ec571d5ba7adc949e27/packages/vite/src/node/server/middlewares/indexHtml.ts#L275\n\nexport const virtualHtmlPlugin = (_: FinalMonkeyOption): Plugin => {\n  return {\n    name: 'monkey:virtualHtml',\n    apply: 'serve',\n    configureServer(server) {\n      server.middlewares.use(async (req, res, next) => {\n        const url = req.url || '/';\n        if (['/', '/index.html'].includes(url)) {\n          res.setHeader('content-type', 'text/html');\n          res.setHeader('cache-control', 'no-cache');\n          res.setHeader('access-control-allow-origin', '*');\n          return res.end(fcToHtml(virtualHtmlTemplate, installUserPath));\n        }\n        next();\n      });\n    },\n  };\n};\n","import { Plugin, ResolvedConfig } from 'vite';\nimport type { FinalMonkeyOption } from '../types';\n\n// should use import.meta['url'], becase vite will replace import.meta.url to self.location\nconst template = `\nexport default ((()=>{\n  try{\n    return new URL(__VALUE__, import.meta['url']).href\n  }catch(_){\n    return __VALUE__\n  }\n})())\n`.trimStart();\n// https://github.com/vitejs/vite/blob/9c114c5c72a6af87e3330d5573362554b4511265/packages/vite/src/node/plugins/asset.ts#L172\n\n// TODO the relative path of the *.vue file template does not work\n\nexport const fixViteAssetPlugin = (_: FinalMonkeyOption): Plugin => {\n  let viteConfig: ResolvedConfig;\n  return {\n    name: 'monkey:fixViteAsset',\n    apply: 'serve',\n    async configResolved(resolvedConfig) {\n      viteConfig = resolvedConfig;\n    },\n    async transform(code, id) {\n      const [_, query = 'url'] = id.split('?', 2);\n      if (\n        (query.split('&').includes('url') || viteConfig.assetsInclude(id)) &&\n        code.match(/^\\s*export\\s+default/)\n      ) {\n        const ast: any = this.parse(code);\n        if (ast.type == 'Program') {\n          const defaultNode = ast.body?.[0];\n          if (defaultNode?.type == 'ExportDefaultDeclaration') {\n            const declarationNode = defaultNode?.declaration;\n            const value = declarationNode?.value;\n            if (\n              declarationNode?.type == 'Literal' &&\n              typeof value == 'string'\n            ) {\n              return template.replace(/__VALUE__/g, JSON.stringify(value));\n            }\n          }\n        }\n      }\n    },\n  };\n};\n","import type { Plugin } from 'vite';\nimport type { FinalMonkeyOption } from '../types';\n\nexport const fixViteClientPlugin = (_: FinalMonkeyOption): Plugin => {\n  return {\n    name: 'monkey:fixViteClient',\n    apply: 'serve',\n    async transform(code, id) {\n      if (id.endsWith('node_modules/vite/dist/client/client.mjs')) {\n        // use import.meta['url'] instead of import.meta.url, because vite will replace import.meta.url to file system path\n\n        // https://github.com/vitejs/vite/blob/v6.0.0/packages/vite/src/client/client.ts\n        code = code.replace(\n          /__BASE__/g,\n          `((()=>{const b = __BASE__; const u = new URL(import.meta['url'], location.origin); return b !== '/' ? b : (u.origin+'/');})())`,\n        );\n        return code;\n      }\n    },\n  };\n};\n","import { normalizePath, Plugin } from 'vite';\nimport type { FinalMonkeyOption } from '../types';\nimport { getModuleRealInfo } from '../_util';\n\n// const dynamicImportPrefix = '\\0monkey-dynamic-import:';\n\nexport const externalGlobalsPlugin = (\n  finalOption: FinalMonkeyOption,\n): Plugin => {\n  const { globalsPkg2VarName, requirePkgList } = finalOption;\n  return {\n    name: 'monkey:externalGlobals',\n    enforce: 'pre',\n    apply: 'build',\n    async config() {\n      for (const [moduleName, varName2LibUrl] of finalOption.build\n        .externalGlobals) {\n        const { name, version } = await getModuleRealInfo(moduleName);\n\n        if (typeof varName2LibUrl == 'string') {\n          globalsPkg2VarName[moduleName] = varName2LibUrl;\n        } else if (typeof varName2LibUrl == 'function') {\n          globalsPkg2VarName[moduleName] = await varName2LibUrl(\n            version,\n            name,\n            moduleName,\n          );\n        } else if (varName2LibUrl instanceof Array) {\n          const [varName, ...libUrlList] = varName2LibUrl;\n          if (typeof varName == 'string') {\n            globalsPkg2VarName[moduleName] = varName;\n          } else if (typeof varName == 'function') {\n            globalsPkg2VarName[moduleName] = await varName(\n              version,\n              name,\n              moduleName,\n            );\n          }\n          for (const libUrl of libUrlList) {\n            // keep add order\n            if (typeof libUrl == 'string') {\n              requirePkgList.push({ url: libUrl, moduleName });\n            } else if (typeof libUrl == 'function') {\n              requirePkgList.push({\n                url: await libUrl(version, name, moduleName),\n                moduleName,\n              });\n            }\n          }\n        }\n      }\n      return {\n        build: {\n          rollupOptions: {\n            external(source, _importer, _isResolved) {\n              return source in globalsPkg2VarName;\n            },\n            // output: {\n            //   globals: globalsPkg2VarName,\n            //   inlineDynamicImports: true, // see https://rollupjs.org/guide/en/#outputinlinedynamicimports\n            // },\n          },\n        },\n      };\n    },\n\n    // async resolveDynamicImport(specifier, _importer) {\n    //   if (typeof specifier == 'string' && specifier in globalsPkg2VarName) {\n    //     return dynamicImportPrefix + specifier + '\\0';\n    //   }\n    // },\n\n    // async load(id) {\n    //   if (id.startsWith(dynamicImportPrefix) && id.endsWith('\\0')) {\n    //     const rawId = id.slice(dynamicImportPrefix.length, id.length - 1);\n    //     if (rawId in globalsPkg2VarName) {\n    //       return `export {default} from '${rawId}';export * from '${rawId}';`;\n    //     }\n    //   }\n    // },\n\n    async generateBundle() {\n      const usedModIdSet = new Set(\n        Array.from(this.getModuleIds()).map((s) => normalizePath(s)),\n      );\n      // Array.from(usedModIdSet).forEach((id) => {\n      //   if (id.startsWith(dynamicImportPrefix) && id.endsWith('\\0')) {\n      //     usedModIdSet.add(id.slice(dynamicImportPrefix.length, id.length - 1));\n      //   }\n      // });\n      finalOption.collectRequireUrls = requirePkgList\n        .filter((p) => usedModIdSet.has(p.moduleName))\n        .map((p) => p.url);\n    },\n  };\n};\n","import { Plugin, transformWithEsbuild } from 'vite';\nimport type { FinalMonkeyOption } from '../types';\n\nconst cssLoader = (resourceName: string) => {\n  // @ts-ignore\n  const css = GM_getResourceText(resourceName);\n  // @ts-ignore\n  GM_addStyle(css);\n  return css;\n};\n\nconst jsonLoader = (resourceName: string): unknown =>\n  // @ts-ignore\n  JSON.parse(GM_getResourceText(resourceName));\n\nconst urlLoader = (resourceName: string, mediaType: string) =>\n  // @ts-ignore\n  GM_getResourceURL(resourceName, false).replace(\n    /^data:application;base64,/,\n    `data:${mediaType};base64,`,\n  );\n\nconst rawLoader = (resourceName: string) =>\n  // @ts-ignore\n  GM_getResourceText(resourceName);\n\nconst moduleSourceCode = [\n  `export const cssLoader = ${cssLoader}`,\n  `export const jsonLoader = ${jsonLoader}`,\n  `export const urlLoader = ${urlLoader}`,\n  `export const rawLoader = ${rawLoader}`,\n].join(';');\n\nexport const externalLoaderPlugin = (_: FinalMonkeyOption): Plugin => {\n  return {\n    name: 'monkey:externalLoader',\n    enforce: 'pre',\n    apply: 'build',\n    async resolveId(id) {\n      if (id == 'virtual:plugin-monkey-loader') {\n        return '\\0' + id;\n      }\n    },\n    async load(id) {\n      if (id == '\\0virtual:plugin-monkey-loader') {\n        return transformWithEsbuild(\n          moduleSourceCode,\n          '/virtual/plugin-monkey-loader/index.js',\n          {\n            minify: true,\n            sourcemap: true,\n            legalComments: 'none',\n          },\n        );\n      }\n    },\n  };\n};\n","import { normalizePath, Plugin, ResolvedConfig } from 'vite';\nimport type { FinalMonkeyOption, PkgOptions } from '../types';\nimport { getModuleRealInfo, miniCode } from '../_util';\nimport { lookup, mimes } from 'mrmime';\nimport { URLSearchParams } from 'node:url';\n\nconst resourceImportPrefix = '\\0monkey-resource-import:';\n\nexport const externalResourcePlugin = (\n  finalOption: FinalMonkeyOption,\n): Plugin => {\n  const resourceRecord: Record<\n    string,\n    { resourceName: string; resourceUrl: string }\n  > = {};\n  let viteConfig: ResolvedConfig;\n  return {\n    name: 'monkey:externalResource',\n    enforce: 'pre',\n    apply: 'build',\n    configResolved(config) {\n      viteConfig = config;\n    },\n    async resolveId(id) {\n      const { externalResource } = finalOption.build;\n      if (id in externalResource) {\n        return resourceImportPrefix + id + '\\0';\n      }\n      // see https://github.com/vitejs/vite/blob/5d56e421625b408879672a1dd4e774bae3df674f/packages/vite/src/node/plugins/css.ts#L431-L434\n      const [resource, query] = id.split('?', 2);\n      if (resource.endsWith('.css') && query) {\n        const id2 = [\n          resource,\n          '?',\n          query\n            .split('&')\n            .filter((e) => e != 'used')\n            .join(`&`),\n        ].join('');\n        if (id2 in externalResource) {\n          return resourceImportPrefix + id2 + '\\0';\n        }\n      }\n    },\n    async load(id) {\n      if (id.startsWith(resourceImportPrefix) && id.endsWith('\\0')) {\n        const { externalResource } = finalOption.build;\n        const importName = id.substring(\n          resourceImportPrefix.length,\n          id.length - 1,\n        );\n        if (!(importName in externalResource)) {\n          return;\n        }\n        const pkg = await getModuleRealInfo(importName);\n        const {\n          resourceName: resourceNameFn,\n          resourceUrl: resourceUrlFn,\n          loader,\n          nodeLoader,\n        } = externalResource[importName];\n        const resourceName = await resourceNameFn({ ...pkg, importName });\n        const resourceUrl = await resourceUrlFn({ ...pkg, importName });\n        resourceRecord[importName] = {\n          resourceName,\n          resourceUrl,\n        };\n\n        if (nodeLoader) {\n          return miniCode(\n            await nodeLoader({\n              ...pkg,\n              resourceName,\n              resourceUrl,\n              importName,\n            }),\n          );\n        } else if (loader) {\n          let fnText: string;\n          if (\n            loader.prototype && // not arrow function\n            loader.name.length > 0 &&\n            loader.name != 'function' // not anonymous function\n          ) {\n            if (Reflect.get(loader, Symbol.toStringTag) == 'AsyncFunction') {\n              fnText = loader\n                .toString()\n                .replace(/^[\\s\\S]+?\\(/, 'async function(');\n            } else {\n              fnText = loader.toString().replace(/^[\\s\\S]+?\\(/, 'function(');\n            }\n          } else {\n            fnText = loader.toString();\n          }\n          return miniCode(\n            `export default (${fnText})(${JSON.stringify({\n              resourceUrl,\n              importName,\n              ...pkg,\n            } as PkgOptions)})`,\n          );\n        }\n\n        let moduleCode: string | undefined = undefined;\n        const [resource, query] = importName.split('?', 2);\n        const ext = resource.split('.').pop()!;\n        const mimeType = lookup(ext) ?? 'application/octet-stream';\n        const suffixSet = new URLSearchParams(query);\n        if (suffixSet.has('url') || suffixSet.has('inline')) {\n          moduleCode = [\n            `import {urlLoader as loader} from 'virtual:plugin-monkey-loader'`,\n            `export default loader(...${JSON.stringify([\n              resourceName,\n              mimeType,\n            ])})`,\n          ].join(';');\n        } else if (suffixSet.has('raw')) {\n          moduleCode = [\n            `import {rawLoader as loader} from 'virtual:plugin-monkey-loader'`,\n            `export default loader(...${JSON.stringify([resourceName])})`,\n          ].join(';');\n        } else if (ext == 'json') {\n          // export name will bring side effect\n          moduleCode = [\n            `import {jsonLoader as loader} from 'virtual:plugin-monkey-loader'`,\n            `export default loader(...${JSON.stringify([resourceName])})`,\n          ].join(';');\n        } else if (ext == 'css') {\n          moduleCode = [\n            `import {cssLoader as loader} from 'virtual:plugin-monkey-loader'`,\n            `export default loader(...${JSON.stringify([resourceName])})`,\n          ].join(';');\n        } else if (viteConfig.assetsInclude(importName.split('?', 1)[0])) {\n          const mediaType = mimes[ext];\n          moduleCode = [\n            `import {urlLoader as loader} from 'virtual:plugin-monkey-loader'`,\n            `export default loader(...${JSON.stringify([\n              resourceName,\n              mediaType,\n            ])})`,\n          ].join(';');\n        }\n        if (moduleCode) {\n          if (\n            moduleCode.includes('rawLoader') ||\n            moduleCode.includes('jsonLoader') ||\n            moduleCode.includes('cssLoader')\n          ) {\n            finalOption.userscript.grant.add('GM_getResourceText');\n          } else if (moduleCode.includes('urlLoader')) {\n            finalOption.userscript.grant.add('GM_getResourceURL');\n          }\n          return miniCode(moduleCode);\n        }\n\n        throw new Error(`module: ${importName} not found loader`);\n      }\n    },\n    generateBundle() {\n      const usedModIdSet = new Set(\n        Array.from(this.getModuleIds()).map((s) => normalizePath(s)),\n      );\n      Array.from(usedModIdSet).forEach((id) => {\n        if (id.startsWith(resourceImportPrefix) && id.endsWith('\\0')) {\n          usedModIdSet.add(\n            id.substring(resourceImportPrefix.length, id.length - 1),\n          );\n        }\n      });\n      const collectResource: Record<string, string> = {};\n      Object.entries(resourceRecord).forEach(\n        ([importName, { resourceName, resourceUrl }]) => {\n          if (usedModIdSet.has(importName)) {\n            collectResource[resourceName] = resourceUrl;\n          }\n        },\n      );\n      finalOption.collectResource = collectResource;\n    },\n  };\n};\n","import type { OutputChunk, RollupOutput } from 'rollup';\nimport { Plugin, ResolvedConfig, build } from 'vite';\nimport { lazyValue } from '../_lazy';\nimport {\n  collectGrant,\n  getInjectCssCode,\n  moduleExportExpressionWrapper,\n} from '../_util';\nimport { getSystemjsRequireUrls, systemjsTexts } from '../systemjs';\nimport {\n  findSafeTlaIdentifier,\n  transformIdentifierToTla,\n  transformTlaToIdentifier,\n} from '../topLevelAwait';\nimport type { FinalMonkeyOption } from '../types';\nimport { finalMonkeyOptionToComment } from '../userscript';\n\nconst __entry_name = `__monkey.entry.js`;\n\n// https://github.com/vitejs/vite/blob/1df2cfcbebd95a139da7dc30aad487c81b153b45/packages/plugin-legacy/src/index.ts#L718\nconst polyfillId = '\\0vite/legacy-polyfills';\n\nconst systemJsImportMapPrefix = `user`;\n\nexport const finalBundlePlugin = (finalOption: FinalMonkeyOption): Plugin => {\n  let viteConfig: ResolvedConfig;\n  return {\n    name: 'monkey:finalBundle',\n    apply: 'build',\n    enforce: 'post',\n    async configResolved(resolvedConfig) {\n      viteConfig = resolvedConfig;\n    },\n    async generateBundle(_, rawBundle) {\n      const entryChunks: OutputChunk[] = [];\n      const chunks: OutputChunk[] = [];\n      Object.values(rawBundle).forEach((chunk) => {\n        if (chunk.type == 'chunk') {\n          if (chunk.facadeModuleId != polyfillId) {\n            chunks.push(chunk);\n          }\n          if (chunk.isEntry) {\n            if (chunk.facadeModuleId == polyfillId) {\n              entryChunks.unshift(chunk);\n            } else {\n              entryChunks.push(chunk);\n            }\n          }\n        }\n      });\n\n      const fristEntryChunk = entryChunks.find(\n        (s) => s.facadeModuleId != polyfillId,\n      );\n\n      const hasDynamicImport = entryChunks.some(\n        (e) => e.dynamicImports.length > 0,\n      );\n\n      const usedModules = new Set<string>();\n\n      const tlaIdentifier = lazyValue(() => findSafeTlaIdentifier(rawBundle));\n\n      const buildResult = (await build({\n        logLevel: 'error',\n        configFile: false,\n        esbuild: false,\n        plugins: [\n          {\n            name: 'mokey:mock',\n            enforce: 'pre',\n            resolveId(source, importer, options) {\n              if (!importer && options.isEntry) {\n                return '\\0' + source;\n              }\n              const chunk = Object.values(rawBundle).find(\n                (chunk) =>\n                  chunk.type == 'chunk' && source.endsWith(chunk.fileName),\n              ) as OutputChunk | undefined;\n              if (chunk) {\n                return '\\0' + source;\n              }\n            },\n            async load(id) {\n              if (!id.startsWith('\\0')) return;\n\n              if (id.endsWith(__entry_name)) {\n                return entryChunks\n                  .map((a) => `import ${JSON.stringify(`./${a.fileName}`)};`)\n                  .join('\\n');\n              }\n              const [k, chunk] =\n                Object.entries(rawBundle).find(([_, chunk]) =>\n                  id.endsWith(chunk.fileName),\n                ) ?? [];\n              if (chunk && chunk.type == 'chunk' && k) {\n                usedModules.add(k);\n                if (!hasDynamicImport) {\n                  const ch = transformTlaToIdentifier(\n                    this,\n                    chunk,\n                    tlaIdentifier.value,\n                  );\n                  if (ch) return ch;\n                }\n                return {\n                  code: chunk.code,\n                  map: chunk.map,\n                };\n              }\n            },\n            generateBundle(_, iifeBundle) {\n              if (hasDynamicImport) {\n                return;\n              }\n              Object.entries(iifeBundle).forEach(([_, chunk]) => {\n                transformIdentifierToTla(this, chunk, tlaIdentifier.value);\n              });\n            },\n          },\n        ],\n        build: {\n          write: false,\n          minify: false,\n          target: 'esnext',\n          rollupOptions: {\n            external(source) {\n              return source in finalOption.globalsPkg2VarName;\n            },\n            output: {\n              globals: finalOption.globalsPkg2VarName,\n            },\n          },\n          lib: {\n            entry: __entry_name,\n            formats: [hasDynamicImport ? 'system' : 'iife'] as any,\n            name: hasDynamicImport ? undefined : '__expose__',\n            fileName: () => `__entry.js`,\n          },\n        },\n      })) as RollupOutput[];\n      usedModules.forEach((k) => {\n        if (fristEntryChunk != rawBundle[k]) {\n          delete rawBundle[k];\n        }\n      });\n\n      const buildBundle = buildResult[0].output.flat();\n      let finalJsCode = ``;\n      if (hasDynamicImport) {\n        const systemJsModules: string[] = [];\n        let entryName = '';\n        Object.entries(buildBundle).forEach(([_, chunk]) => {\n          if (chunk.type == 'chunk') {\n            const name = JSON.stringify(`./` + chunk.fileName);\n            systemJsModules.push(\n              chunk.code\n                .trimStart()\n                .replace(/^System\\.register\\(/, `System.register(${name}, `),\n            );\n            if (chunk.isEntry) {\n              entryName = name;\n            }\n          }\n        });\n        systemJsModules.push(`System.import(${entryName}, \"./\");`);\n        finalJsCode = systemJsModules.join('\\n');\n        const usedModuleIds = Array.from(this.getModuleIds()).filter(\n          (d) => d in finalOption.globalsPkg2VarName,\n        );\n        // {vue:'xxx:vue'}\n        const importsMap = usedModuleIds.reduce(\n          (p: Record<string, string>, c) => {\n            p[c] = `${systemJsImportMapPrefix}:${c}`;\n            return p;\n          },\n          {},\n        );\n        // inject SystemJs external globals\n        finalJsCode = [\n          Object.keys(importsMap).length > 0\n            ? `System.addImportMap({ imports: ${JSON.stringify(importsMap)} });`\n            : ``,\n          ...usedModuleIds.map(\n            (id) =>\n              `System.set(${JSON.stringify(\n                `${systemJsImportMapPrefix}:${id}`,\n              )}, ${moduleExportExpressionWrapper(\n                finalOption.globalsPkg2VarName[id],\n              )});`,\n          ),\n          '\\n' + finalJsCode,\n        ]\n          .filter((s) => s)\n          .join('\\n');\n\n        if (typeof finalOption.systemjs == 'function') {\n          finalOption.collectRequireUrls.push(\n            ...getSystemjsRequireUrls(finalOption.systemjs),\n          );\n        } else {\n          finalJsCode =\n            (await systemjsTexts.value).join('\\n') + '\\n' + finalJsCode;\n        }\n      } else {\n        // use iife\n        Object.entries(buildBundle).forEach(([_, chunk]) => {\n          if (chunk.type == 'chunk' && chunk.isEntry) {\n            finalJsCode = chunk.code;\n          }\n        });\n      }\n\n      const injectCssCode = await getInjectCssCode(finalOption, rawBundle);\n\n      let collectGrantSet: Set<string>;\n      if (finalOption.build.autoGrant) {\n        collectGrantSet = collectGrant(\n          this,\n          chunks,\n          injectCssCode,\n          viteConfig.build.minify !== false,\n        );\n      } else {\n        collectGrantSet = new Set<string>();\n      }\n\n      const comment = await finalMonkeyOptionToComment(\n        finalOption,\n        collectGrantSet,\n        'build',\n      );\n\n      const mergedCode = [comment, injectCssCode, finalJsCode]\n        .filter((s) => s)\n        .join(`\\n\\n`)\n        .trimEnd();\n      if (fristEntryChunk) {\n        fristEntryChunk.fileName = finalOption.build.fileName;\n        fristEntryChunk.code = mergedCode;\n      } else {\n        this.emitFile({\n          type: 'asset',\n          fileName: finalOption.build.fileName,\n          source: mergedCode,\n        });\n      }\n\n      if (finalOption.build.metaFileName) {\n        this.emitFile({\n          type: 'asset',\n          fileName: finalOption.build.metaFileName(),\n          source: await finalMonkeyOptionToComment(\n            finalOption,\n            collectGrantSet,\n            'meta',\n          ),\n        });\n      }\n    },\n  };\n};\n","type AnyFunction = (...args: any[]) => any;\n\nconst lazyValuePlaceholder = {};\n\n/**\n * lazy side effect by `__PURE__` comment\n */\nexport const lazy = <T extends object>(fn: () => T) => {\n  let temp: T | undefined = undefined;\n  const o = {\n    get k() {\n      if (temp === undefined) {\n        temp = fn();\n      }\n      return temp;\n    },\n  };\n  const wm = lazyValue(() => new WeakMap<AnyFunction, AnyFunction>());\n  return new Proxy(lazyValuePlaceholder as T, {\n    get(_, p, receiver) {\n      const v: unknown = Reflect.get(o.k, p, receiver);\n      if (typeof v == 'function') {\n        const f = v as AnyFunction;\n        let fBind = wm.value.get(f);\n        if (fBind === undefined) {\n          fBind = f.bind(o.k);\n          wm.value.set(f, fBind);\n        }\n        return fBind;\n      }\n      return v;\n    },\n    set(_, p, newValue, receiver) {\n      return Reflect.set(o.k, p, newValue, receiver);\n    },\n    has(_, p) {\n      return Reflect.has(o.k, p);\n    },\n    ownKeys() {\n      return Reflect.ownKeys(o.k);\n    },\n    isExtensible() {\n      return Reflect.isExtensible(o.k);\n    },\n    deleteProperty(_, p) {\n      return Reflect.deleteProperty(o.k, p);\n    },\n    setPrototypeOf(_, v) {\n      return Reflect.setPrototypeOf(o.k, v);\n    },\n    getOwnPropertyDescriptor(_, p) {\n      return Reflect.getOwnPropertyDescriptor(o.k, p);\n    },\n    defineProperty(_, property, attributes) {\n      return Reflect.defineProperty(o.k, property, attributes);\n    },\n    getPrototypeOf() {\n      return Reflect.getPrototypeOf(o.k);\n    },\n    preventExtensions() {\n      return Reflect.preventExtensions(o.k);\n    },\n    apply(_, thisArg, argArray) {\n      // @ts-ignore\n      return Reflect.apply(o.k, thisArg, argArray);\n    },\n    construct(_, argArray, newTarget) {\n      // @ts-ignore\n      return Reflect.construct(o.k, argArray, newTarget);\n    },\n  });\n};\n\nexport const lazyValue = <T>(fn: () => T) => {\n  let temp: T | typeof lazyValuePlaceholder = lazyValuePlaceholder;\n  return {\n    get value() {\n      if (temp === lazyValuePlaceholder) {\n        temp = fn();\n      }\n      return temp as T;\n    },\n  };\n};\n","import module from 'node:module';\nimport type systemjsPkgT from 'systemjs/package.json';\nimport { ModuleToUrlFc } from './types';\nimport fs from 'node:fs/promises';\nimport { lazyValue } from './_lazy';\nimport { dataUrl } from './util';\n\nconst _require = module.createRequire(import.meta.url);\n\nconst systemjsPkg: typeof systemjsPkgT = _require(`systemjs/package.json`);\n\nconst systemjsSubPaths = [\n  'dist/system.min.js',\n  'dist/extras/named-register.min.js',\n];\n\n// https://github.com/systemjs/systemjs/blob/main/docs/api.md#systemconstructor\nconst customSystemInstanceCode = `;(typeof System!='undefined')&&(System=new System.constructor());`;\n\nconst systemjsAbsolutePaths = systemjsSubPaths.map((s) => {\n  return _require.resolve(`systemjs/` + s);\n});\n\nexport const systemjsTexts = lazyValue(() => {\n  return Promise.all(\n    systemjsAbsolutePaths\n      .map((s) =>\n        fs.readFile(s, 'utf-8').then((s) =>\n          s\n            .trim()\n            .replace(/^\\/\\*[\\s\\S]*?\\*\\//, '')\n            .replace(/\\/\\/.*map$/, '')\n            .trim(),\n        ),\n      )\n      .concat([Promise.resolve(customSystemInstanceCode)]),\n  );\n});\n\nexport const getSystemjsRequireUrls = (fn: ModuleToUrlFc) => {\n  return systemjsSubPaths\n    .map((p) => {\n      return fn(systemjsPkg.version, systemjsPkg.name, p, p);\n    })\n    .concat([dataUrl(customSystemInstanceCode)]);\n};\n","import type { InlinePreset } from 'unimport';\nimport { transformWithEsbuild } from 'vite';\nimport { preset } from './unimport';\n\n/**\n * transform function and parameter to iife code then mini code then transform code to data url string\n *\n * this tool function is used to make umd-cdn and iife-cdn work normally, such as element-plus and vue\n *\n * @example\n * // this example comes form https://github.com/lisonge/vite-plugin-monkey/blob/main/playground/ex-vue-demi/vite.config.ts\n * const externalGlobals = [\n *   [\n *     'vue',\n *     cdn\n *       .jsdelivr('Vue', 'dist/vue.global.prod.js')\n *       .concat('https://unpkg.com/vue-demi@latest/lib/index.iife.js')\n *       .concat(\n *         await util.fn2dataUrl(() => {\n *           // \\@ts-ignore\n *           window.Vue = Vue; // work with element-plus\n *         }),\n *       ),\n *   ],\n *   ['pinia', cdn.jsdelivr('Pinia', 'dist/pinia.iife.prod.js')],\n *   ['element-plus', cdn.jsdelivr('ElementPlus', 'dist/index.full.min.js')],\n * ];\n */\nexport const fn2dataUrl = async <T extends (...args: any[]) => any>(\n  fn: T,\n  ...args: Parameters<T>\n) => {\n  return (\n    'data:application/javascript,' +\n    encodeURIComponent(\n      (\n        await transformWithEsbuild(\n          `;(${fn})(...${JSON.stringify(args)})`,\n          'any_name.js',\n          {\n            minify: true,\n            sourcemap: false,\n            legalComments: 'none',\n          },\n        )\n      ).code.trimEnd(),\n    )\n  );\n};\n\n/**\n * string -> javascript data url\n */\nexport function dataUrl(code: string): string;\n/**\n * function and it parameters -> iife -> mini_iife -> javascript data url\n */\nexport function dataUrl<T extends (...args: any[]) => any>(\n  fn: T,\n  ...args: Parameters<T>\n): Promise<string>;\nexport function dataUrl(p0: any, ...args: any[]): string | Promise<string> {\n  if (typeof p0 == 'string') {\n    return `data:application/javascript,` + encodeURIComponent(p0);\n  }\n  return fn2dataUrl(p0, ...args);\n}\n\n/**\n * GM api preset when you use unimport/unplugin-auto-import\n *\n * Note, there is not comment in unimport.d.ts/auto-imports.d.ts file\n */\nexport const unimportPreset: InlinePreset = preset;\n","import { gmIdentifiers } from './gm_api';\n\nexport const preset = {\n  from: 'vite-plugin-monkey/dist/client',\n  imports: ['GM', ...gmIdentifiers, 'unsafeWindow', 'monkeyWindow'],\n};\n","import * as acorn from 'acorn';\nimport * as acornWalk from 'acorn-walk';\nimport MagicString from 'magic-string';\nimport type {\n  OutputAsset,\n  OutputBundle,\n  OutputChunk,\n  PluginContext,\n} from 'rollup';\n\ninterface AwaitCallExpression extends acorn.CallExpression {\n  callee: acorn.Identifier;\n}\n\nconst awaitOffset = `await`.length;\nconst initTlaIdentifier = `_TLA_`;\n\nexport const findSafeTlaIdentifier = (rawBundle: OutputBundle) => {\n  const codes: string[] = [];\n  for (const chunk of Object.values(rawBundle)) {\n    if (chunk.type == 'chunk') {\n      codes.push(chunk.code);\n    }\n  }\n  let x = 0;\n  let identifier = initTlaIdentifier;\n  while (codes.some((code) => code.includes(identifier))) {\n    x++;\n    identifier = initTlaIdentifier + x.toString(36);\n  }\n  return identifier;\n};\n\nconst startWith = (\n  text: string,\n  searchString: string,\n  position = 0,\n  ignoreString: string,\n) => {\n  for (let i = position; i < text.length; i++) {\n    if (ignoreString.includes(text[i])) {\n      continue;\n    }\n    return text.startsWith(searchString, i);\n  }\n  return false;\n};\n\nconst includes = (\n  str: string,\n  start: number,\n  end: number,\n  substr: string,\n): boolean => {\n  const i = str.indexOf(substr, start);\n  return i >= 0 && i + substr.length < end;\n};\n\nexport const transformTlaToIdentifier = (\n  context: PluginContext,\n  chunk: OutputAsset | OutputChunk,\n  identifier: string,\n) => {\n  if (chunk.type == 'chunk') {\n    const code = chunk.code;\n    if (!code.includes(`await`)) {\n      return;\n    }\n    const ast = context.parse(code);\n    const tlaNodes: acorn.AwaitExpression[] = [];\n    const tlaForOfNodes: acorn.ForOfStatement[] = [];\n    acornWalk.simple(\n      ast,\n      {\n        AwaitExpression(node) {\n          // top level await\n          tlaNodes.push(node);\n        },\n        ForOfStatement(node) {\n          if (node.await === true) {\n            tlaForOfNodes.push(node);\n          }\n        },\n      },\n      { ...acornWalk.base, Function: () => {} },\n    );\n    if (tlaNodes.length > 0 || tlaForOfNodes.length > 0) {\n      const ms = new MagicString(code);\n      tlaNodes.forEach((node) => {\n        if (\n          !startWith(chunk.code, '(', node.start + awaitOffset, '\\x20\\t\\r\\n')\n        ) {\n          // await xxx -> await (xxx)\n          ms.appendLeft(node.start + awaitOffset, `(`);\n          ms.appendRight(node.end, `)`);\n        }\n\n        // await (xxx) -> __topLevelAwait__ (xxx)\n        ms.update(node.start, node.start + awaitOffset, identifier);\n      });\n      tlaForOfNodes.forEach((node) => {\n        // for await(const x of xxx){} -> __topLevelAwait_FOR ((async()=>{ /*start*/for await(const x of xxx){}/*end*/  })());\n        ms.appendLeft(node.start, `${identifier + `FOR`}((async()=>{`);\n        ms.appendRight(node.end, `})());`);\n      });\n      return {\n        code: ms.toString(),\n        map: ms.generateMap(),\n      };\n    }\n  }\n};\n\nexport const transformIdentifierToTla = (\n  context: PluginContext,\n  chunk: OutputAsset | OutputChunk,\n  identifier: string,\n) => {\n  if (chunk.type == 'chunk') {\n    if (!chunk.code.includes(identifier)) {\n      return;\n    }\n\n    const forIdentifier = identifier + `FOR`;\n\n    const ast = context.parse(chunk.code);\n    const tlaCallNodes: AwaitCallExpression[] = [];\n    const forTlaCallNodes: AwaitCallExpression[] = [];\n    const topFnNodes: acorn.Function[] = [];\n    acornWalk.simple(\n      ast,\n      {\n        CallExpression(node) {\n          if ('name' in node.callee) {\n            const { name, type } = node.callee;\n            if (type === `Identifier`) {\n              if (name === identifier) {\n                // top level await\n                tlaCallNodes.push({ ...node, callee: node.callee });\n              } else if (name === forIdentifier) {\n                // top level for await\n                forTlaCallNodes.push({ ...node, callee: node.callee });\n              }\n            }\n          }\n        },\n      },\n      {\n        ...acornWalk.base,\n        Function: (node, state, callback) => {\n          if (topFnNodes.length == 0) {\n            topFnNodes.push(node);\n          }\n          if (includes(chunk.code, node.start, node.end, identifier)) {\n            return acornWalk.base.Function?.(node, state, callback);\n          }\n        },\n      },\n    );\n    if (tlaCallNodes.length > 0 || forTlaCallNodes.length > 0) {\n      const ms = new MagicString(chunk.code, {});\n      tlaCallNodes.forEach((node) => {\n        const callee = node.callee;\n        // __topLevelAwait__ (xxx) -> await (xxx)\n        ms.update(callee.start, callee.end, 'await');\n      });\n      forTlaCallNodes.forEach((node) => {\n        // __topLevelAwait_FOR ((async()=>{ /*start*/for await(const x of xxx){}/*end*/  })()); -> for await(const x of xxx){}\n        // @ts-ignore\n        const forOfNode = node.arguments?.[0]?.callee?.body\n          ?.body?.[0] as acorn.ForOfStatement;\n        ms.update(node.start, forOfNode.start, '');\n        ms.update(forOfNode.end, node.end, '');\n      });\n      topFnNodes.forEach((node) => {\n        ms.appendLeft(node.start, `async\\x20`);\n      });\n      chunk.code = ms.toString();\n    }\n  }\n};\n","import path from 'node:path';\nimport type { Plugin, ResolvedConfig } from 'vite';\nimport { normalizePath } from 'vite';\nimport { walk } from '../_util';\nimport { fcToHtml, previewTemplate } from '../inject_template';\nimport type { FinalMonkeyOption } from '../types';\n\nexport const perviewPlugin = (_: FinalMonkeyOption): Plugin => {\n  let viteConfig: ResolvedConfig;\n  return {\n    name: 'monkey:perview',\n    apply: 'serve',\n    configResolved(config) {\n      viteConfig = config;\n    },\n    async configurePreviewServer(server) {\n      server.middlewares.use(async (req, res, next) => {\n        if (['/', '/index.html'].includes((req.url ?? '').split('?')[0])) {\n          const distDirPath = path.join(process.cwd(), viteConfig.build.outDir);\n          const urls: string[] = [];\n          for await (const pathname of walk(distDirPath)) {\n            if (pathname.endsWith('.user.js')) {\n              const fileName = normalizePath(\n                path.relative(distDirPath, pathname),\n              );\n              urls.push(`/` + fileName);\n            }\n          }\n          res.setHeader('content-type', 'text/html; charset=utf-8');\n          res.end(fcToHtml(previewTemplate, urls));\n          return;\n        }\n        next();\n      });\n    },\n  };\n};\n","import type { Plugin } from 'vite';\nimport type { FinalMonkeyOption } from '../types';\nimport { gmIdentifiers } from '../gm_api';\n\n// https://github.com/Tampermonkey/tampermonkey/issues/1567\nconst clientSourceId = 'vite-plugin-monkey/dist/client';\nconst clientId = '\\0vite-plugin-monkey/dist/client';\nexport const redirectClientPlugin = (_: FinalMonkeyOption): Plugin => {\n  return {\n    name: 'monkey:redirectClient',\n    enforce: 'pre',\n    apply: 'build',\n    resolveId(source) {\n      if (source === clientSourceId) {\n        return clientId;\n      }\n    },\n    load(id) {\n      if (id == clientId) {\n        const identifiers = ['GM', ...gmIdentifiers, 'unsafeWindow'];\n        // https://github.com/evanw/esbuild/issues/2267#issuecomment-1138445856\n        const declarations = identifiers\n          .map((v) => {\n            return `var _${v} = /* @__PURE__ */ (() => typeof ${v} != \"undefined\" ? ${v} : void 0)();`;\n          })\n          .concat('var _monkeyWindow = /* @__PURE__ */ (() => window)();');\n        const exportIdentifiers = identifiers.concat('monkeyWindow');\n        return (\n          declarations.join('\\n') +\n          `\\nexport {${exportIdentifiers\n            .map((v) => `  _${v} as ${v},`)\n            .join('\\n')}};`\n        );\n      }\n    },\n  };\n};\n","import { virtualHtmlPlugin } from './virtualHtml';\nimport { fixViteAssetPlugin } from './fixViteAsset';\nimport { fixViteClientPlugin } from './fixViteClient';\nimport { serverPlugin } from './server';\nimport { externalGlobalsPlugin } from './externalGlobals';\nimport { externalLoaderPlugin } from './externalLoader';\nimport { externalResourcePlugin } from './externalResource';\nimport { finalBundlePlugin } from './finalBundle';\nimport { perviewPlugin } from './perview';\nimport { redirectClientPlugin } from './redirectClient';\n\nconst monkeyPluginList = [\n  // only serve\n  virtualHtmlPlugin,\n  fixViteAssetPlugin,\n  fixViteClientPlugin,\n  serverPlugin,\n\n  // only build pre\n  redirectClientPlugin,\n  externalLoaderPlugin,\n  externalResourcePlugin,\n  externalGlobalsPlugin,\n\n  // only build, final build\n  finalBundlePlugin,\n\n  // only preview\n  perviewPlugin,\n];\nexport default monkeyPluginList;\n","import type { Plugin } from 'vite';\nimport { resolvedOption } from './option';\nimport monkeyPluginList from './plugins';\nimport type { MonkeyOption } from './types';\nimport type {\n  Format,\n  GreasemonkeyUserScript,\n  MonkeyUserScript,\n  TampermonkeyUserScript,\n  ViolentmonkeyUserScript,\n} from './userscript';\n\nexport * as cdn from './cdn';\nexport * as util from './util';\nexport type {\n  MonkeyUserScript,\n  TampermonkeyUserScript,\n  ViolentmonkeyUserScript,\n  GreasemonkeyUserScript,\n  Format,\n  MonkeyOption,\n};\n\nexport default (pluginOption: MonkeyOption): Plugin[] => {\n  const finalPluginOption = resolvedOption(pluginOption);\n\n  const monkeyPlugin: Plugin = {\n    name: 'monkey:entry',\n    enforce: 'post',\n    async config(userConfig, { command }) {\n      const isServe = command == 'serve';\n\n      return {\n        resolve: {\n          alias: {\n            [finalPluginOption.clientAlias]: 'vite-plugin-monkey/dist/client',\n          },\n        },\n        define: {\n          'process.env.NODE_ENV':\n            userConfig.define?.['process.env.NODE_ENV'] ??\n            JSON.stringify(\n              userConfig.mode ?? (isServe ? 'development' : 'production'),\n            ),\n        },\n        esbuild: {\n          supported: {\n            'top-level-await': true,\n          },\n        },\n        build: {\n          assetsInlineLimit: Number.MAX_SAFE_INTEGER,\n          chunkSizeWarningLimit: Number.MAX_SAFE_INTEGER,\n          modulePreload: false,\n          assetsDir: './',\n          cssCodeSplit: false,\n          minify: userConfig.build?.minify ?? false,\n          cssMinify: userConfig.build?.cssMinify ?? true,\n          rollupOptions: {\n            // serve pre-bundling need\n            input: finalPluginOption.entry,\n          },\n          sourcemap: false,\n\n          // TODO\n          // sourcemap: sourcemap,\n        },\n      };\n    },\n  };\n\n  return [monkeyPlugin, ...monkeyPluginList.map((m) => m(finalPluginOption))];\n};\n"],"mappings":"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","names":["path","build","name","require","fs","path","normalizePath","path","logger","path","require","description","tag","maxLen","htmlText","usp","path","normalizePath","fs","_","normalizePath","normalizePath","transformWithEsbuild","normalizePath","URLSearchParams","normalizePath","fs","transformWithEsbuild","transformWithEsbuild","fs","s","acornWalk","chunk","_","path","normalizePath","path","normalizePath"]}