import resolve from '@rollup/plugin-node-resolve'; import babel from '@rollup/plugin-babel'; import postcss from 'rollup-plugin-postcss'; import sourcemaps from 'rollup-plugin-sourcemaps'; import {terser} from 'rollup-plugin-terser'; import fs from 'fs'; import path from 'path'; import rootpkg from './package.json'; let name = 'ActiveWidgets.Svelte', framework = ['svelte/internal']; let globals = { 'svelte/internal': 'svelte', '@activewidgets/frameworks/svelte': 'ActiveWidgets.Frameworks.Svelte', '@activewidgets/datagrid/js': 'ActiveWidgets.Components', '@activewidgets/datagrid/style': 'ActiveWidgets.Styles', '@activewidgets/datagrid/dist/datagrid.css': '', '@activewidgets/datagrid/css': '' }; let roots = { modules: ['', 'bundle', 'css', 'js'], bundles: ['', 'bundle'] }; let getBanner = name => `/** * ${name} ${rootpkg.version} * Copyright (C) 2022 ActiveWidgets SARL. All Rights Reserved. * This code is licensed under the MIT license found in the * LICENSE file in the root directory of this package. */ `; function keepBanner(node, comment){ if (comment.type == "comment2") { return /\(C\) 2022 ActiveWidgets/.test(comment.value); } } let plugins = [ postcss({ extract: 'ax.css', sourceMap: true }), sourcemaps(), resolve(), babel({ babelrc: false, babelHelpers: 'bundled', exclude: 'node_modules/**', presets: [["@babel/env", {targets: {ie: 11}}]] }), terser({ output: {comments: keepBanner} }) ]; function read(filename){ return String(fs.readFileSync(filename, {encoding:'utf8'})); } let modules = roots.modules.map(dir => { let pkg = JSON.parse(read(path.join(dir, 'package.json'))), input = path.join(dir, 'index.js'), main = path.join(dir, pkg.main), module = path.join(dir, pkg.module), sourcemap = true, banner = getBanner(pkg.name), compact = true; return { input, output: [ {file: main, format: 'umd', sourcemap, banner, globals, name, compact}, {file: module, format: 'esm', sourcemap, banner}, ], external: Object.keys(globals), plugins }; }); let getCommercial = () => `/** * ${rootpkg.name} ${rootpkg.version} * Copyright (C) 2022 ActiveWidgets SARL. All Rights Reserved. * This code is licensed under the COMMERCIAL license. */ `; let bundles = roots.bundles.map(dir => { let input = path.join(dir, 'index.js'), file = path.join('dist', (dir || 'ax') + '.js'), sourcemapPathTransform = s => { return s.replace(/^\.\../, '') .replace(/node_modules/, '..') .replace(/@activewidgets.(\w+)/, '$1@' + rootpkg.version); }, sourcemap = true, banner = getCommercial(), compact = true; return { input, output: [ {file, format: 'umd', sourcemap, sourcemapPathTransform, banner, globals, name, compact} ], external: framework, plugins }; }); export default [].concat(modules, bundles);