{"version":3,"file":"vis-dev-utils.mjs","sources":["../src/module/constants.ts","../src/module/header.ts","../src/module/generate-rollup-configuration/index.ts","../src/module/inspect-npm-pack.ts"],"sourcesContent":["export const BABEL_IGNORE_RE = /[\\\\/]node_modules[\\\\/](?!.*[\\\\/]esnext[\\\\/])/;\n","import { readFile } from \"fs/promises\";\n\n/**\n * Take a string and return a doc block comment.\n * @param string - The raw text to be included in the comment.\n * @throws If the string already contains a comment.\n * @returns A block doc comment string that can be for example prepended to a\n * bundled JavaScript file.\n */\nexport function textToComment(string: string): string {\n  if (string.includes(\"*/\")) {\n    throw new Error(\n      \"Don't include comments in the input string. It will be converted automatically.\",\n    );\n  }\n\n  return (\n    \"/**\\n\" +\n    string\n      // Remove empty lines from the start.\n      .replace(/^[\\n\\r]*/, \"\")\n      // Remove empty lines from the end.\n      .replace(/[\\n\\r\\s]*$/, \"\")\n      // Process each line on it's own from now on.\n      .split(\"\\n\")\n      // Prefix each line with an asterisk.\n      .map((line) => \" * \" + line)\n      // Remove trailing white space.\n      .map((line) => line.replace(/[^\\S\\r\\n]*$/, \"\"))\n      // Join back into a string.\n      .join(\"\\n\") +\n    \"\\n */\\n\"\n  );\n}\n\nconst buildHeader = ({\n  customText,\n  date,\n  description,\n  homepage,\n  name,\n  version,\n}: HeaderOptions): string =>\n  textToComment(`\n${name}\n${homepage}\n\n${description}\n\n@version ${version}\n@date    ${date}\n\n@copyright (c) 2011-2017 Almende B.V, http://almende.com\n@copyright (c) 2017-2019 visjs contributors, https://github.com/visjs\n\n@license\nvis.js is dual licensed under both\n\n  1. The Apache 2.0 License\n     http://www.apache.org/licenses/LICENSE-2.0\n\n  and\n\n  2. The MIT License\n     http://opensource.org/licenses/MIT\n\nvis.js may be distributed under either license.\n\n${customText}\n`);\n\n/**\n * Options for {@link generateHeader}.\n */\nexport interface HeaderOptions {\n  /** Any text to be appended to the standard header. */\n  customText: string;\n  /** The build date. */\n  date: string;\n  /** A description of the project. */\n  description: string;\n  /** An URL to the homepage of the project. */\n  homepage: string;\n  /** The name of the project. */\n  name: string;\n  /** The version of the build. */\n  version: string;\n}\n\nconst defaultDate = new Date().toISOString();\n\n/**\n * Generate a dynamic header banner.\n * @param options - Optional information to be included. Otherwise no custom\n * text will be appended, the date will be the time when this module was\n * imported (most likely the start of the build process) and the rest will be\n * read from package.json.\n * @throws If the string already contains a comment.\n * @returns Ready to use banner text.\n */\nexport async function generateHeader(\n  options?: Partial<HeaderOptions>,\n): Promise<string> {\n  const packageJSON = JSON.parse(\n    await readFile(\n      (await import(\"find-up\")).findUpSync(\"package.json\")!,\n      \"utf8\",\n    ),\n  );\n\n  const defaultDescription = packageJSON.description;\n  const defaultHomepage = packageJSON.homepage;\n  const defaultName = packageJSON.name;\n  const defaultVersion = packageJSON.version;\n\n  const {\n    customText = \"\",\n    date = defaultDate,\n    description = defaultDescription,\n    homepage = defaultHomepage,\n    name = defaultName,\n    version = defaultVersion,\n  } = options || {};\n\n  return buildHeader({\n    customText,\n    date,\n    description,\n    homepage,\n    name,\n    version,\n  });\n}\n","import fs from \"node:fs/promises\";\nimport { fileURLToPath, URL } from \"node:url\";\nimport { type RollupOptions, type Plugin } from \"rollup\";\nimport analyzerPlugin from \"rollup-plugin-analyzer\";\nimport babelPlugin from \"@rollup/plugin-babel\";\nimport commonjsPlugin from \"@rollup/plugin-commonjs\";\nimport copyPlugin, { Target as CopyTarget } from \"rollup-plugin-copy\";\nimport jsonPlugin from \"@rollup/plugin-json\";\nimport nodeResolvePlugin from \"@rollup/plugin-node-resolve\";\nimport postcssAssetsPlugin from \"postcss-assets\";\nimport postcssPlugin from \"rollup-plugin-postcss\";\nimport terserPlugin from \"@rollup/plugin-terser\";\nimport typescriptPlugin from \"@rollup/plugin-typescript\";\nimport { generateHeader } from \"../header\";\nimport { join, resolve, sep } from \"path\";\nimport { string as stringPlugin } from \"rollup-plugin-string\";\nimport { config as chaiConfig, expect as validateExpect } from \"chai\";\n\nimport { BABEL_IGNORE_RE } from \"../constants\";\nimport { type HeaderOptions } from \"../header\";\nimport { type OptionalOptions } from \"../util\";\nimport { dirname } from \"node:path\";\n\nconst rawGlobby = import(\"globby\");\n\nchaiConfig.truncateThreshold = Number.MAX_SAFE_INTEGER;\n\nconst VIS_DEBUG = [\"1\", \"true\", \"y\", \"yes\"].includes(\n  process.env[\"VIS_DEBUG\"] || \"false\",\n);\nconst VIS_TEST = [\"1\", \"true\", \"y\", \"yes\"].includes(\n  process.env[\"VIS_TEST\"] || \"false\",\n);\n\n/**\n * Simple glob with workaround for non-posix paths.\n * @param pattern - Single glob pattern.\n * @returns Globbed paths.\n */\nasync function glob(\n  pattern: string,\n): ReturnType<(typeof import(\"globby\"))[\"globby\"]> {\n  return (await rawGlobby).globby(\n    sep === \"\\\\\" ? pattern.replace(/\\\\/g, \"/\") : pattern,\n  );\n}\n\nexport interface GRCOptions {\n  /**\n   * Where to look for files when inlining assets into CSS.\n   */\n  assets: string;\n  /**\n   * Additional files to be copied.\n   */\n  copyTargets: {\n    /**\n     * These will be copied relative to the root of each bundle (esnext,\n     * standalone…).\n     */\n    bundle: CopyTarget[];\n    /**\n     * These will be copied relative to the root of each variant of each bundle\n     * (esnext/esm, esnext/umd, standalone/esm…).\n     */\n    variant: CopyTarget[];\n  };\n  /**\n   * The base dir with entry points for various builds. The extensions\n   * determines whether TypeScript processing will be used.\n   */\n  entryPoints: string;\n  /**\n   * These are the dependencies that would cause interoperability issues if they\n   * were bundled. A notable example here is vis-data.\n   */\n  externalForPeerBuild: string[];\n  /**\n   * Passed straight to Rollup.\n   */\n  globals: Record<string, string>;\n  /**\n   * Options for {@link generateHeader}.\n   */\n  header: Partial<HeaderOptions>;\n  /**\n   * This will be used as a file name with appropriate extensions appended\n   * (like .js, .min.js or .css).\n   */\n  libraryFilename: string;\n  /**\n   * Simply required package.json.\n   */\n  packageJSON: Partial<{\n    browser: string;\n    dependencies: Record<string, string>;\n    devDependencies: Record<string, string>;\n    exports: Record<string, Record<string, string | undefined> | undefined>;\n    files: string[];\n    jsnext: string;\n    main: string;\n    module: string;\n    peerDependencies: Record<string, string>;\n    types: string;\n  }>;\n  /**\n   * The path to tsconfig.json to be used in this build.\n   */\n  tsconfig: string;\n}\n\n/**\n * These are the dependencies that follow standalone/peer/ESNext export\n * structure.\n */\nconst dependenciesWithVisExportStructure = [\n  \"vis-data\",\n  \"vis-graph3d\",\n  \"vis-network\",\n  \"vis-timeline\",\n  \"vis-util\",\n  \"vis-uuid\",\n];\n\n/**\n * This ensures that dependencies on Vis projects point to ESNext builds.\n * @param deps - The original dependencies as listed in package.json.\n * @returns An array of dependencies for Rollup.\n */\nfunction processDependencies(\n  deps: string[] | Record<string, string>,\n): string[] {\n  const depNames = Array.isArray(deps) ? deps : Object.keys(deps);\n\n  return depNames.flatMap((key): string[] =>\n    dependenciesWithVisExportStructure.includes(key)\n      ? [key + \"/esnext\"]\n      : [key],\n  );\n}\n\n/**\n * This ensures that all Vis projects are imported using ESNext builds.\n * Importing standalone versions will not only cause problems in production but\n * will log warnings during build process and won't work at all.\n * @param globals - The original globals.\n * @returns Globals forcing the use of ESNext builds for Vis projects.\n */\nfunction processGlobals(\n  globals: Record<string, string>,\n): Record<string, string> {\n  return Object.entries(globals).reduce<Record<string, string>>(\n    (acc, [key, value]): Record<string, string> => {\n      acc[\n        dependenciesWithVisExportStructure.includes(key) ? key + \"/esnext\" : key\n      ] = value;\n\n      return acc;\n    },\n    Object.create(null),\n  );\n}\n\n/**\n * @param path\n */\nfunction isTS(path: string): boolean {\n  return path.endsWith(\".ts\");\n}\n\n/*\n * Make sure that Chai doesn't throw and therefore stop execution on failed\n * validations during debugging.\n */\nconst validate: (\n  callback: (expect: Chai.ExpectStatic) => Promise<void> | void,\n) => Promise<void> = VIS_DEBUG\n  ? async (\n      callback: (expect: Chai.ExpectStatic) => Promise<void> | void,\n    ): Promise<void> => {\n      try {\n        await callback(validateExpect);\n      } catch (error) {\n        console.error(error);\n      }\n    }\n  : async (\n      callback: (expect: Chai.ExpectStatic) => Promise<void> | void,\n    ): Promise<void> => {\n      await callback(validateExpect);\n    };\n\n/**\n * Transform ESNext import paths to match the build version being constructed.\n * @param buildVariant - ESNext or peer build. This is not available for\n * standalone as only peer and ESNext have imports.\n * @param moduleFormat - What kind of module system to use.\n * @returns Path overrides for Rollup.\n */\nfunction getPaths(\n  buildVariant: \"esnext\" | \"peer\",\n  moduleFormat: \"esm\" | \"umd\",\n): Record<string, string> {\n  /**\n   * @param lib\n   */\n  function getPath(\n    lib:\n      | \"charts\"\n      | \"data\"\n      | \"graph3d\"\n      | \"network\"\n      | \"timeline\"\n      | \"util\"\n      | \"uuid\",\n  ): Record<string, string> {\n    return {\n      [`vis-${lib}/esnext`]: `vis-${lib}/${buildVariant}/${moduleFormat}/vis-${lib}.js`,\n    };\n  }\n\n  return {\n    ...getPath(\"charts\"),\n    ...getPath(\"data\"),\n    ...getPath(\"graph3d\"),\n    ...getPath(\"network\"),\n    ...getPath(\"timeline\"),\n    ...getPath(\"util\"),\n    ...getPath(\"uuid\"),\n  };\n}\n\n/**\n * Change target's dest so that it's relative to given dir(s).\n * @param dirs - The directories there targets should be relative to.\n * @returns A function that can be directly supplied to Array.map().\n */\nfunction scopeCopyTarget(\n  ...dirs: readonly string[]\n): (target: CopyTarget) => CopyTarget {\n  return function (target): CopyTarget {\n    const dest = (\n      Array.isArray(target.dest) ? target.dest : [target.dest]\n    ) as readonly string[];\n\n    const bundleDest = dest.flatMap((path): string[] =>\n      dirs.map((dir): string => join(dir, path)),\n    );\n\n    return {\n      ...target,\n      dest: bundleDest,\n    };\n  };\n}\n\nconst injectCSS = true;\nconst minimize = true;\nconst transpile = true;\nconst generateRollupPluginArray = (\n  libraryFilename: string,\n  assets: string,\n  copyTargetsBundle: readonly CopyTarget[],\n  copyTargetsVariant: readonly CopyTarget[],\n  tsconfig: string,\n  mode: \"production\" | \"development\" | \"test\",\n  bundleType: \"esnext\" | \"standalone\" | \"peer\",\n  {\n    injectCSS = false,\n    minimize = false,\n    transpile = false,\n    typescript = false,\n  } = {},\n): Plugin[] => {\n  const fullLibraryFilename = `${libraryFilename}${minimize ? \".min\" : \"\"}`;\n\n  const bundleDir = bundleType;\n  const bundleVariantDirs = [\"esm\", \"umd\"].map((variant): string =>\n    join(bundleDir, variant),\n  );\n\n  return [\n    analyzerPlugin(VIS_DEBUG ? undefined : { limit: 10, summaryOnly: true }),\n    copyPlugin({\n      verbose: VIS_DEBUG,\n      targets: [\n        // JavaScript\n        {\n          src: resolve(\n            dirname(fileURLToPath(new URL(import.meta.url))),\n            \"assets/bundle-root.js\",\n          ),\n          dest: bundleDir,\n          rename: \"index.js\",\n        },\n        {\n          src: resolve(\n            dirname(fileURLToPath(new URL(import.meta.url))),\n            \"assets/bundle-index.js\",\n          ),\n          dest: bundleVariantDirs,\n          rename: \"index.js\",\n          transform: (content: Buffer): string =>\n            content.toString().replace(\"{{filename}}\", libraryFilename),\n        },\n\n        // TypeScript\n        {\n          src: resolve(\n            dirname(fileURLToPath(new URL(import.meta.url))),\n            \"assets/bundle-root.d.ts\",\n          ),\n          dest: bundleDir,\n          rename: \"index.d.ts\",\n        },\n        {\n          src: resolve(\n            dirname(fileURLToPath(new URL(import.meta.url))),\n            \"assets/bundle-index.d.ts\",\n          ),\n          dest: bundleVariantDirs,\n          rename: \"index.d.ts\",\n          transform: (content: Buffer): string =>\n            content.toString().replace(\"{{filename}}\", libraryFilename),\n        },\n        {\n          src: resolve(\n            dirname(fileURLToPath(new URL(import.meta.url))),\n            \"assets/bundle-file.d.ts\",\n          ),\n          dest: bundleVariantDirs,\n          rename: `${fullLibraryFilename}.d.ts`,\n          transform: (content: Buffer): string =>\n            content.toString().replace(\"{{bundle-type}}\", bundleType),\n        },\n\n        // Custom\n        ...copyTargetsBundle.map(scopeCopyTarget(bundleDir)),\n        ...copyTargetsVariant.map(scopeCopyTarget(...bundleVariantDirs)),\n      ],\n    }),\n    nodeResolvePlugin({\n      browser: true,\n      extensions: [\".js\", \".json\", \".ts\"],\n      mainFields: [\"jsnext\", \"module\", \"main\"],\n      preferBuiltins: false,\n    }),\n    ...(typescript\n      ? [\n          typescriptPlugin({\n            tsconfig,\n          }),\n        ]\n      : []),\n    commonjsPlugin(),\n    postcssPlugin({\n      extract: !injectCSS && `styles/${fullLibraryFilename}.css`,\n      inject: injectCSS,\n      minimize,\n      // Prevent the sourcemaps from being injected into JS files.\n      sourceMap: !injectCSS,\n      plugins: [\n        postcssAssetsPlugin({\n          loadPaths: [assets],\n        }),\n      ],\n    }),\n    jsonPlugin(),\n    stringPlugin({\n      include: \"**/*.txt\",\n    }),\n    ...(transpile\n      ? [\n          babelPlugin({\n            babelHelpers: \"runtime\",\n            babelrc: false,\n            configFile: false,\n            exclude: BABEL_IGNORE_RE,\n            extensions: [\".js\", \".ts\", \".mjs\", \".cjs\"],\n            presets: [[\"vis-dev-utils/babel-preset\", { ts: true }]],\n          }),\n        ]\n      : []),\n    ...(minimize\n      ? [\n          terserPlugin({\n            format: {\n              comments: \"some\",\n            },\n          }),\n        ]\n      : []),\n  ];\n};\n\n/**\n * Prepare ready to use Rollup configuration file.\n * @remarks\n * IMPORTANT: Use `babel.config.js` in the root of the project, `.babelrc` files\n * are ignored.\n *\n * Plugins:\n * - `\\@rollup/plugin-babel` (skipped in ESNext)\n * - `\\@rollup/plugin-commonjs`\n * - `\\@rollup/plugin-json`\n * - `\\@rollup/plugin-node-resolve`\n * - `\\@rollup/plugin-terser` (only in minified)\n * - `postcss-assets`\n * - `rollup-plugin-copy`\n * - `rollup-plugin-postcss`\n * - `rollup-plugin-typescript2` (skipped if the entry is .js)\n * @param options - See {@link GRCOptions}.\n * @param mode - Whether the code should be processed for production,\n * development or testing.\n * @returns Ready to use configuration object that can be just exported from\n * `rollup.config.js` or mutated in any way if necessary.\n */\nexport async function generateRollupConfiguration(\n  options: OptionalOptions<GRCOptions>,\n  mode: \"production\" | \"development\" | \"test\" = VIS_TEST\n    ? \"test\"\n    : VIS_DEBUG\n      ? \"development\"\n      : \"production\",\n): Promise<RollupOptions[]> {\n  const {\n    assets = \".\",\n    copyTargets: {\n      bundle: copyTargetsBundle = [],\n      variant: copyTargetsVariant = [],\n    } = {} as GRCOptions[\"copyTargets\"],\n    externalForPeerBuild = [],\n    globals = {},\n    header = { name: \"Unknown Library\" },\n    libraryFilename = \"unknown-library\",\n    packageJSON: {\n      dependencies = {},\n      devDependencies = {},\n      peerDependencies = {},\n      ...packageJSONRest\n    } = {} as GRCOptions[\"packageJSON\"],\n    entryPoints: entryPoint = \"./src\",\n    tsconfig = \"tsconfig.json\",\n  }: GRCOptions = (options || {}) as GRCOptions;\n\n  validate((expect): void => {\n    // Note: Every array is a superset of empty array.\n    if (Object.keys(peerDependencies).length > 0) {\n      expect(\n        Object.keys(dependencies),\n        \"The dependencies and peer dependencies have to be disjoint sets\",\n      )\n        .to.be.an(\"array\")\n        .that.does.not.include.any.members(Object.keys(peerDependencies));\n    }\n  });\n  validate((expect): void => {\n    expect(\n      Object.keys(devDependencies),\n      \"For convenience all peer dependencies also have to be dev dependencies\",\n    )\n      .to.be.an(\"array\")\n      .that.includes.all.members(Object.keys(peerDependencies));\n  });\n  validate((expect): void => {\n    expect(\n      Object.keys(peerDependencies),\n      \"Peer build externals have to be a subset of peer dependencies\",\n    )\n      .to.be.an(\"array\")\n      .that.includes.all.members(externalForPeerBuild);\n  });\n  validate((expect): void => {\n    expect(\n      [...Object.keys(dependencies), ...Object.keys(peerDependencies)].sort(),\n      \"Globals have to be provided for all runtime and peer dependencies but nothing else\",\n    )\n      .to.be.an(\"array\")\n      .that.deep.equals(Object.keys(globals).sort());\n  });\n\n  validate(async (expect): Promise<void> => {\n    expect(resolve(assets), \"Assets have to be a directory\").to.be.a(\"string\");\n    const stats = await fs.stat(resolve(assets));\n    expect(stats.isDirectory(), \"Assets have to be a directory\").to.be.true;\n  });\n  validate(async (expect): Promise<void> => {\n    expect(entryPoint, \"The entry point has to be directory\").to.be.a(\"string\");\n    const stats = await fs.stat(entryPoint);\n    expect(stats.isDirectory(), \"The entry point has to be directory\").to.be\n      .true;\n  });\n  const [esnextEntry, peerEntry, standaloneEntry] = await Promise.all(\n    [\"ESNext\", \"peer\", \"standalone\"].map(async (name): Promise<string> => {\n      const filenameGlob = `entry-${name.toLowerCase()}.{js,ts}`;\n      const files = await glob(resolve(entryPoint, filenameGlob));\n\n      validate(async (expect): Promise<void> => {\n        expect(\n          files,\n          `There has to be a single entry file (${filenameGlob}) for the ${name} build`,\n        )\n          .to.have.lengthOf(1)\n          .and.to.have.ownProperty(\"0\");\n        const stats = await fs.stat(resolve(files[0]));\n        expect(\n          stats.isFile(),\n          `The entry file (${filenameGlob}) for the ${name} build has to be a file`,\n        ).to.be.true;\n      });\n\n      return files[0];\n    }),\n  );\n  validate(async (expect): Promise<void> => {\n    expect(\n      resolve(\"./declarations\"),\n      \"There has to be a directory with TypeScript declarations\",\n    ).to.be.a(\"string\");\n    const stats = await fs.stat(resolve(\"./declarations\"));\n    expect(\n      stats.isDirectory(),\n      \"There has to be a directory with TypeScript declarations\",\n    ).to.be.true;\n  });\n\n  validate((expect): void => {\n    expect(\n      packageJSONRest,\n      \"The directories with built files have to be included in the package\",\n    )\n      .to.have.ownProperty(\"files\")\n      .that.is.an(\"array\")\n      .and.includes.all.members([\n        \"declarations\",\n        \"esnext\",\n        \"peer\",\n        \"standalone\",\n      ]);\n  });\n\n  const expectedExports = Object.fromEntries([\n    [\n      \".\",\n      {\n        import: `./peer/esm/${libraryFilename}.mjs`,\n        require: `./peer/umd/${libraryFilename}.cjs`,\n        types: \"./declarations/index.d.ts\",\n      },\n    ],\n    [\"./package.json\", \"./package.json\"],\n    [\n      \"./declarations/index.d.ts\",\n      {\n        types: \"./declarations/index.d.ts\",\n      },\n    ],\n    ...[\"standalone\", \"peer\", \"esnext\"].flatMap(\n      (variant): [string, Record<string, string>][] => [\n        [\n          `./${variant}`,\n          {\n            import: `./${variant}/esm/${libraryFilename}.mjs`,\n            require: `./${variant}/umd/${libraryFilename}.cjs`,\n            types: \"./declarations/index.d.ts\",\n          },\n        ],\n        [\n          `./${variant}/esm/${libraryFilename}.js`,\n          {\n            import: `./${variant}/esm/${libraryFilename}.mjs`,\n            types: \"./declarations/index.d.ts\",\n          },\n        ],\n        [\n          `./${variant}/esm/${libraryFilename}.mjs`,\n          {\n            import: `./${variant}/esm/${libraryFilename}.mjs`,\n            types: \"./declarations/index.d.ts\",\n          },\n        ],\n        [\n          `./${variant}/esm/${libraryFilename}.min.js`,\n          {\n            import: `./${variant}/esm/${libraryFilename}.min.mjs`,\n            types: \"./declarations/index.d.ts\",\n          },\n        ],\n        [\n          `./${variant}/esm/${libraryFilename}.min.mjs`,\n          {\n            import: `./${variant}/esm/${libraryFilename}.min.mjs`,\n            types: \"./declarations/index.d.ts\",\n          },\n        ],\n        [\n          `./${variant}/umd/${libraryFilename}.js`,\n          {\n            require: `./${variant}/umd/${libraryFilename}.cjs`,\n            types: \"./declarations/index.d.ts\",\n          },\n        ],\n        [\n          `./${variant}/umd/${libraryFilename}.cjs`,\n          {\n            require: `./${variant}/umd/${libraryFilename}.cjs`,\n            types: \"./declarations/index.d.ts\",\n          },\n        ],\n        [\n          `./${variant}/umd/${libraryFilename}.min.js`,\n          {\n            require: `./${variant}/umd/${libraryFilename}.min.cjs`,\n            types: \"./declarations/index.d.ts\",\n          },\n        ],\n        [\n          `./${variant}/umd/${libraryFilename}.min.cjs`,\n          {\n            require: `./${variant}/umd/${libraryFilename}.min.cjs`,\n            types: \"./declarations/index.d.ts\",\n          },\n        ],\n      ],\n    ),\n  ]);\n\n  validate((expect): void => {\n    expect(\n      packageJSONRest,\n      \"Package JSON's type property has to point to the declarations\",\n    )\n      .to.have.ownProperty(\"types\")\n      .that.is.a(\"string\")\n      .and.equals(\"./declarations/index.d.ts\")\n      .and.is.oneOf(Object.keys(expectedExports));\n  });\n  validate((expect): void => {\n    expect(\n      packageJSONRest,\n      \"Package JSON's browser property has to point to the minifed UMD build\",\n    )\n      .to.have.ownProperty(\"browser\")\n      .that.is.a(\"string\")\n      .and.equals(`./peer/umd/${libraryFilename}.min.cjs`)\n      .and.is.oneOf(Object.keys(expectedExports));\n  });\n  validate((expect): void => {\n    expect(\n      packageJSONRest,\n      \"Package JSON's main property has to point to the UMD build\",\n    )\n      .to.have.ownProperty(\"main\")\n      .that.is.a(\"string\")\n      .and.equals(`./peer/umd/${libraryFilename}.cjs`)\n      .and.is.oneOf(Object.keys(expectedExports));\n  });\n  validate((expect): void => {\n    expect(\n      packageJSONRest,\n      \"Package JSON's modul property has to point to the ESM build\",\n    )\n      .to.have.ownProperty(\"module\")\n      .that.is.a(\"string\")\n      .and.equals(`./peer/esm/${libraryFilename}.mjs`)\n      .and.is.oneOf(Object.keys(expectedExports));\n  });\n  validate((expect): void => {\n    expect(\n      packageJSONRest,\n      \"Package JSON's jsnext has to point to the ESNext build\",\n    )\n      .to.have.ownProperty(\"jsnext\")\n      .that.is.a(\"string\")\n      .and.equals(`./esnext/esm/${libraryFilename}.mjs`)\n      .and.is.oneOf(Object.keys(expectedExports));\n  });\n\n  validate((expect): void => {\n    expect(\n      Object.fromEntries(\n        Object.entries(packageJSONRest.exports ?? {}).filter(([key]): boolean =>\n          Object.keys(expectedExports).includes(key),\n        ),\n      ),\n      \"Package JSON's exports have to contain common entries\",\n    ).to.deep.equal(expectedExports);\n  });\n\n  validate(async (expect): Promise<void> => {\n    const [{ status }] = await Promise.allSettled([\n      fs.access(resolve(\"./.babelrc\")),\n    ]);\n    expect(\n      status,\n      \"Babelrc is ignored. Use babel.config.js config file instead.\",\n    ).to.equal(\"rejected\");\n  });\n  validate(async (expect): Promise<void> => {\n    const [{ status }] = await Promise.allSettled([\n      fs.access(resolve(\"./babel.config.js\")),\n    ]);\n    expect(status, \"There has to be a babel.config.js config file.\").to.equal(\n      \"fulfilled\",\n    );\n  });\n\n  const banner = await generateHeader(header);\n  const external = {\n    // No dependencies are bundled.\n    esnext: processDependencies([\n      ...Object.keys(dependencies),\n      ...Object.keys(peerDependencies),\n\n      // This will show a warning if any of them is used. The idea behind\n      // it is that if someone accidentaly imports a dev dependency they\n      // won't accidentaly add it to globals and Rollup will warn them\n      // about their error.\n      ...Object.keys(devDependencies),\n    ]),\n    // Only dependencies that cause compatibility issues are not bundled.\n    peer: processDependencies(externalForPeerBuild),\n    // No runtime dependencies, everything's bundled.\n    standalone: [],\n  };\n\n  const commonOutput = {\n    banner,\n    dir: \".\",\n    globals: processGlobals(globals),\n    sourcemap: VIS_TEST ? \"inline\" : true,\n  } as const;\n  const commonOutputESM = {\n    ...commonOutput,\n    format: \"esm\",\n  } as const;\n  const commonOutputUMD = {\n    ...commonOutput,\n    exports: \"named\",\n    extend: true,\n    format: \"umd\",\n    name: \"vis\",\n    strict: false, // Regenerator runtime causes issues with CSP in strict mode.\n  } as const;\n\n  // Note: Binding more than 4 at a time is not typesafe in TS.\n  const getPlugins = generateRollupPluginArray\n    .bind(null, libraryFilename)\n    .bind(null, assets)\n    .bind(null, copyTargetsBundle)\n    .bind(null, copyTargetsVariant)\n    .bind(null, tsconfig)\n    .bind(null, mode);\n\n  return [\n    {\n      external: external.standalone,\n      input: standaloneEntry,\n      output: [\n        {\n          ...commonOutputESM,\n          entryFileNames: `standalone/esm/${libraryFilename}.js`,\n        },\n        {\n          ...commonOutputESM,\n          entryFileNames: `standalone/esm/${libraryFilename}.mjs`,\n        },\n        {\n          ...commonOutputUMD,\n          entryFileNames: `standalone/umd/${libraryFilename}.js`,\n        },\n        {\n          ...commonOutputUMD,\n          entryFileNames: `standalone/umd/${libraryFilename}.cjs`,\n        },\n      ],\n      plugins: getPlugins(\"standalone\", {\n        injectCSS,\n        transpile,\n        typescript: isTS(standaloneEntry),\n      }),\n    },\n    {\n      external: external.standalone,\n      input: standaloneEntry,\n      output: [\n        {\n          ...commonOutputESM,\n          entryFileNames: `standalone/esm/${libraryFilename}.min.js`,\n        },\n        {\n          ...commonOutputESM,\n          entryFileNames: `standalone/esm/${libraryFilename}.min.mjs`,\n        },\n        {\n          ...commonOutputUMD,\n          entryFileNames: `standalone/umd/${libraryFilename}.min.js`,\n        },\n        {\n          ...commonOutputUMD,\n          entryFileNames: `standalone/umd/${libraryFilename}.min.cjs`,\n        },\n      ],\n      plugins: getPlugins(\"standalone\", {\n        injectCSS,\n        minimize,\n        transpile,\n        typescript: isTS(standaloneEntry),\n      }),\n    },\n\n    {\n      external: external.peer,\n      input: peerEntry,\n      output: [\n        {\n          ...commonOutputESM,\n          entryFileNames: `peer/esm/${libraryFilename}.js`,\n          paths: getPaths(\"peer\", \"esm\"),\n        },\n        {\n          ...commonOutputESM,\n          entryFileNames: `peer/esm/${libraryFilename}.mjs`,\n          paths: getPaths(\"peer\", \"esm\"),\n        },\n        {\n          ...commonOutputUMD,\n          entryFileNames: `peer/umd/${libraryFilename}.js`,\n          paths: getPaths(\"peer\", \"umd\"),\n        },\n        {\n          ...commonOutputUMD,\n          entryFileNames: `peer/umd/${libraryFilename}.cjs`,\n          paths: getPaths(\"peer\", \"umd\"),\n        },\n      ],\n      plugins: getPlugins(\"peer\", {\n        transpile,\n        typescript: isTS(peerEntry),\n      }),\n    },\n    {\n      external: external.peer,\n      input: peerEntry,\n      output: [\n        {\n          ...commonOutputESM,\n          entryFileNames: `peer/esm/${libraryFilename}.min.js`,\n          paths: getPaths(\"peer\", \"esm\"),\n        },\n        {\n          ...commonOutputESM,\n          entryFileNames: `peer/esm/${libraryFilename}.min.mjs`,\n          paths: getPaths(\"peer\", \"esm\"),\n        },\n        {\n          ...commonOutputUMD,\n          entryFileNames: `peer/umd/${libraryFilename}.min.js`,\n          paths: getPaths(\"peer\", \"umd\"),\n        },\n        {\n          ...commonOutputUMD,\n          entryFileNames: `peer/umd/${libraryFilename}.min.cjs`,\n          paths: getPaths(\"peer\", \"umd\"),\n        },\n      ],\n      plugins: getPlugins(\"peer\", {\n        minimize,\n        transpile,\n        typescript: isTS(peerEntry),\n      }),\n    },\n\n    {\n      external: external.esnext,\n      input: esnextEntry,\n      output: [\n        {\n          ...commonOutputESM,\n          entryFileNames: `esnext/esm/${libraryFilename}.js`,\n          paths: getPaths(\"esnext\", \"esm\"),\n        },\n        {\n          ...commonOutputESM,\n          entryFileNames: `esnext/esm/${libraryFilename}.mjs`,\n          paths: getPaths(\"esnext\", \"esm\"),\n        },\n        {\n          ...commonOutputESM,\n          entryFileNames: `esnext/umd/${libraryFilename}.js`,\n          paths: getPaths(\"esnext\", \"umd\"),\n        },\n        {\n          ...commonOutputESM,\n          entryFileNames: `esnext/umd/${libraryFilename}.cjs`,\n          paths: getPaths(\"esnext\", \"umd\"),\n        },\n      ],\n      plugins: getPlugins(\"esnext\", {\n        typescript: isTS(esnextEntry),\n      }),\n    },\n    {\n      external: external.esnext,\n      input: esnextEntry,\n      output: [\n        {\n          ...commonOutputESM,\n          entryFileNames: `esnext/esm/${libraryFilename}.min.js`,\n          paths: getPaths(\"esnext\", \"esm\"),\n        },\n        {\n          ...commonOutputESM,\n          entryFileNames: `esnext/esm/${libraryFilename}.min.mjs`,\n          paths: getPaths(\"esnext\", \"esm\"),\n        },\n        {\n          ...commonOutputUMD,\n          entryFileNames: `esnext/umd/${libraryFilename}.min.js`,\n          paths: getPaths(\"esnext\", \"umd\"),\n        },\n        {\n          ...commonOutputUMD,\n          entryFileNames: `esnext/umd/${libraryFilename}.min.cjs`,\n          paths: getPaths(\"esnext\", \"umd\"),\n        },\n      ],\n      plugins: getPlugins(\"esnext\", {\n        minimize,\n        typescript: isTS(esnextEntry),\n      }),\n    },\n  ];\n}\n","import { execSync } from \"child_process\";\nimport { readFileSync } from \"fs\";\nimport { fileSync, setGracefulCleanup } from \"tmp-promise\";\n\nsetGracefulCleanup();\n\ninterface PackageInfo {\n  id: string;\n  name: string;\n  version: string;\n  size: number;\n  unpackedSize: number;\n  shasum: string;\n  integrity: string;\n  filename: string;\n  files: FileInfo[];\n  entryCount: number;\n  bundled: string[];\n}\n\ninterface FileInfo {\n  path: string;\n  size: number;\n  mode: number;\n}\n\nconst PACK_CMD = [\n  \"npm\",\n  \"pack\",\n  // Don't create any package, we just need to see what would be packed.\n  \"--dry-run\",\n  // Prevents things like Husky from outputting to stdout, we don't need them\n  // here anyway.\n  \"--ignore-scripts\",\n  // JSON is easier to parse and more stable between npm versions.\n  \"--json\",\n];\n\n/**\n * @param textOrLines\n * @param message\n */\nfunction logStderr(textOrLines: unknown, message: string): never {\n  console.group('\"npm pack\" output');\n  console.error(textOrLines);\n  console.groupEnd();\n\n  throw new Error(message);\n}\n\n/**\n *\n */\nfunction runNpmPack(): PackageInfo[] {\n  const tmpFile = fileSync().name;\n\n  // There are issues with incomplete output when the stderr is read directly\n  // into Node. Saving it into tmp file using shell redirection and reading it\n  // from there doesn't exhibit those issues.\n  execSync(`${PACK_CMD.join(\" \")} > ${tmpFile}`, {\n    encoding: \"utf-8\",\n    env: {\n      ...process.env,\n      LC_ALL: \"C\",\n      NODE_ENV: \"production\",\n    },\n  });\n\n  const stdout = readFileSync(tmpFile, \"utf-8\")\n    // TODO: Why doesn't --ignore-scripts turn Husky off? It works in CLI.\n    .replace(/^([^[]*)\\[\\n/, \"[\");\n\n  try {\n    return JSON.parse(stdout);\n  } catch (error) {\n    logStderr({ error, stdout }, 'Failed to parse \"npm pack\" JSON output.');\n  }\n}\n\n/**\n * @param lines\n * @param packageInfo\n */\nfunction extractFiles(\n  packageInfo: PackageInfo,\n): Record<string, Record<string, unknown>> {\n  const files = packageInfo.files.map(\n    ({ path, size }): [string, Record<string, unknown>] => [\n      path,\n      { empty: size === 0 },\n    ],\n  );\n\n  if (files.length === 0) {\n    logStderr(packageInfo, 'No files found in \"npm pack\" output.');\n  }\n\n  return Object.fromEntries(files);\n}\n\n/**\n * @param lines\n * @param packageInfo\n */\nfunction extractName(packageInfo: PackageInfo): string {\n  const name = packageInfo.name;\n\n  if (name == null) {\n    logStderr(\n      packageInfo,\n      'Can\\'t find the name of the package in \"npm pack\" output.',\n    );\n  }\n\n  return name.replace(/^npm notice name: */, \"\");\n}\n\n/**\n *\n */\nexport function inspectNpmPack(): {\n  name: string;\n  files: Record<string, Record<string, unknown>>;\n} {\n  const [packageInfo, ...unexpectedExtras] = runNpmPack();\n\n  if (packageInfo == null) {\n    logStderr(\n      [packageInfo, ...unexpectedExtras],\n      'There was no output from \"npm pack\".',\n    );\n  }\n\n  if (unexpectedExtras.length !== 0) {\n    logStderr(\n      [packageInfo, ...unexpectedExtras],\n      'Can\\'t process the output of \"npm pack\" if there are multiple packages.',\n    );\n  }\n\n  const files = extractFiles(packageInfo);\n  const name = extractName(packageInfo);\n\n  return {\n    name,\n    files,\n  };\n}\n"],"names":["chaiConfig","validateExpect","injectCSS","minimize","transpile","stringPlugin"],"mappings":"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"}