* create rrdom package * test(rrdom): add unit tests for polyfill.ts * fix(rrweb snapshot): type check errors Errors are caused by the declaration similarity of @types/mocha and @types/jest if we install both of them in the whole project. * Set tagNames to upper case by default This mirrors the `Element.tagName` implementation: ``` For DOM trees which represent HTML documents, the returned tag name is always in the canonical upper-case form. For example, tagName called on a <div> element returns "DIV". ``` https://developer.mozilla.org/en-US/docs/Web/API/Element/tagName * Add workspace file * VSCode settings for rrdom tests * Add basic test for RRDocument * Only setup jest tests for rrdom * mock Node type and Event type for nodejs environment * test(rrdom): add snapshot for document.test.ts * fix issue of nwsapi import and add unit tests for rrdom * fix: querySelectorAll returns nothing when querying elements with ids and classNames * fix: error of unit test for Event polyfill Since Event class is built in nodejs after v15.0.0 * add a dummy implementation of canvas * add style element support * add unit test for style element Co-authored-by: Justin Halsall <Juice10@users.noreply.github.com>
104 lines
2.1 KiB
JavaScript
104 lines
2.1 KiB
JavaScript
import resolve from '@rollup/plugin-node-resolve';
|
|
import commonjs from '@rollup/plugin-commonjs';
|
|
import { terser } from 'rollup-plugin-terser';
|
|
import typescript from 'rollup-plugin-typescript2';
|
|
import pkg from './package.json';
|
|
|
|
function toMinPath(path) {
|
|
return path.replace(/\.js$/, '.min.js');
|
|
}
|
|
|
|
const basePlugins = [
|
|
resolve({ browser: true }),
|
|
commonjs(),
|
|
typescript({
|
|
tsconfigOverride: { compilerOptions: { module: 'ESNext' } },
|
|
}),
|
|
];
|
|
|
|
const baseConfigs = [
|
|
{
|
|
input: './src/index.ts',
|
|
name: pkg.name,
|
|
path: pkg.name,
|
|
},
|
|
{
|
|
input: './src/document-nodejs.ts',
|
|
name: 'RRDocument',
|
|
path: 'document-nodejs',
|
|
},
|
|
];
|
|
|
|
let configs = [];
|
|
let extraConfigs = [];
|
|
for (let config of baseConfigs) {
|
|
configs.push(
|
|
// ES module
|
|
{
|
|
input: config.input,
|
|
plugins: basePlugins,
|
|
output: [
|
|
{
|
|
format: 'esm',
|
|
file: pkg.module.replace(pkg.name, config.path),
|
|
},
|
|
],
|
|
},
|
|
);
|
|
extraConfigs.push(
|
|
// browser
|
|
{
|
|
input: config.input,
|
|
plugins: basePlugins,
|
|
output: [
|
|
{
|
|
name: config.name,
|
|
format: 'iife',
|
|
file: pkg.unpkg.replace(pkg.name, config.path),
|
|
},
|
|
],
|
|
},
|
|
{
|
|
input: config.input,
|
|
plugins: basePlugins.concat(terser()),
|
|
output: [
|
|
{
|
|
name: config.name,
|
|
format: 'iife',
|
|
file: toMinPath(pkg.unpkg).replace(pkg.name, config.path),
|
|
sourcemap: true,
|
|
},
|
|
],
|
|
},
|
|
// CommonJS
|
|
{
|
|
input: config.input,
|
|
plugins: basePlugins,
|
|
output: [
|
|
{
|
|
format: 'cjs',
|
|
file: pkg.main.replace(pkg.name, config.path),
|
|
},
|
|
],
|
|
},
|
|
// ES module (packed)
|
|
{
|
|
input: config.input,
|
|
plugins: basePlugins.concat(terser()),
|
|
output: [
|
|
{
|
|
format: 'esm',
|
|
file: toMinPath(pkg.module).replace(pkg.name, config.path),
|
|
sourcemap: true,
|
|
},
|
|
],
|
|
},
|
|
);
|
|
}
|
|
|
|
if (!process.env.ES_ONLY) {
|
|
configs.push(...extraConfigs);
|
|
}
|
|
|
|
export default configs;
|