123 lines
3.3 KiB
JavaScript
123 lines
3.3 KiB
JavaScript
|
/*
|
||
|
* Copyright (c) Microsoft Corporation.
|
||
|
* Licensed under the MIT License.
|
||
|
*
|
||
|
* Code generated by Microsoft (R) AutoRest Code Generator.
|
||
|
* Changes may cause incorrect behavior and will be lost if the code is regenerated.
|
||
|
*/
|
||
|
|
||
|
import nodeResolve from "@rollup/plugin-node-resolve";
|
||
|
import cjs from "@rollup/plugin-commonjs";
|
||
|
import sourcemaps from "rollup-plugin-sourcemaps";
|
||
|
import multiEntry from "@rollup/plugin-multi-entry";
|
||
|
import json from "@rollup/plugin-json";
|
||
|
|
||
|
import nodeBuiltins from "builtin-modules";
|
||
|
|
||
|
// #region Warning Handler
|
||
|
|
||
|
/**
|
||
|
* A function that can determine whether a rollup warning should be ignored. If
|
||
|
* the function returns `true`, then the warning will not be displayed.
|
||
|
*/
|
||
|
|
||
|
function ignoreNiseSinonEval(warning) {
|
||
|
return (
|
||
|
warning.code === "EVAL" &&
|
||
|
warning.id &&
|
||
|
(warning.id.includes("node_modules/nise") ||
|
||
|
warning.id.includes("node_modules/sinon")) === true
|
||
|
);
|
||
|
}
|
||
|
|
||
|
function ignoreChaiCircularDependency(warning) {
|
||
|
return (
|
||
|
warning.code === "CIRCULAR_DEPENDENCY" &&
|
||
|
warning.importer && warning.importer.includes("node_modules/chai") === true
|
||
|
);
|
||
|
}
|
||
|
|
||
|
const warningInhibitors = [ignoreChaiCircularDependency, ignoreNiseSinonEval];
|
||
|
|
||
|
/**
|
||
|
* Construct a warning handler for the shared rollup configuration
|
||
|
* that ignores certain warnings that are not relevant to testing.
|
||
|
*/
|
||
|
function makeOnWarnForTesting() {
|
||
|
return (warning, warn) => {
|
||
|
// If every inhibitor returns false (i.e. no inhibitors), then show the warning
|
||
|
if (warningInhibitors.every((inhib) => !inhib(warning))) {
|
||
|
warn(warning);
|
||
|
}
|
||
|
};
|
||
|
}
|
||
|
|
||
|
// #endregion
|
||
|
|
||
|
function makeBrowserTestConfig() {
|
||
|
const config = {
|
||
|
input: {
|
||
|
include: ["dist-esm/test/**/*.spec.js"],
|
||
|
exclude: ["dist-esm/test/**/node/**"]
|
||
|
},
|
||
|
output: {
|
||
|
file: `dist-test/index.browser.js`,
|
||
|
format: "umd",
|
||
|
sourcemap: true
|
||
|
},
|
||
|
preserveSymlinks: false,
|
||
|
plugins: [
|
||
|
multiEntry({ exports: false }),
|
||
|
nodeResolve({
|
||
|
mainFields: ["module", "browser"]
|
||
|
}),
|
||
|
cjs(),
|
||
|
json(),
|
||
|
sourcemaps()
|
||
|
//viz({ filename: "dist-test/browser-stats.html", sourcemap: true })
|
||
|
],
|
||
|
onwarn: makeOnWarnForTesting(),
|
||
|
// Disable tree-shaking of test code. In rollup-plugin-node-resolve@5.0.0,
|
||
|
// rollup started respecting the "sideEffects" field in package.json. Since
|
||
|
// our package.json sets "sideEffects=false", this also applies to test
|
||
|
// code, which causes all tests to be removed by tree-shaking.
|
||
|
treeshake: false
|
||
|
};
|
||
|
|
||
|
return config;
|
||
|
}
|
||
|
|
||
|
const defaultConfigurationOptions = {
|
||
|
disableBrowserBundle: false
|
||
|
};
|
||
|
|
||
|
export function makeConfig(pkg, options) {
|
||
|
options = {
|
||
|
...defaultConfigurationOptions,
|
||
|
...(options || {})
|
||
|
};
|
||
|
|
||
|
const baseConfig = {
|
||
|
// Use the package's module field if it has one
|
||
|
input: pkg["module"] || "dist-esm/src/index.js",
|
||
|
external: [
|
||
|
...nodeBuiltins,
|
||
|
...Object.keys(pkg.dependencies),
|
||
|
...Object.keys(pkg.devDependencies)
|
||
|
],
|
||
|
output: { file: "dist/index.js", format: "cjs", sourcemap: true },
|
||
|
preserveSymlinks: false,
|
||
|
plugins: [sourcemaps(), nodeResolve()]
|
||
|
};
|
||
|
|
||
|
const config = [baseConfig];
|
||
|
|
||
|
if (!options.disableBrowserBundle) {
|
||
|
config.push(makeBrowserTestConfig());
|
||
|
}
|
||
|
|
||
|
return config;
|
||
|
}
|
||
|
|
||
|
export default makeConfig(require("./package.json"));
|