/* * @copyright Copyright (c) 2022 Grigorii Shartsev * * @author Grigorii Shartsev * * @license AGPL-3.0-or-later * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . */ const BabelLoaderExcludeNodeModulesExcept = require('babel-loader-exclude-node-modules-except') const { mergeWithRules } = require('webpack-merge') const nextcloudWebpackRules = require('@nextcloud/webpack-vue-config/rules') // Replace rules with the same modules module.exports = mergeWithRules({ module: { rules: { test: 'match', loader: 'replace', options: 'replace', }, }, })({ module: { // Reuse @nextcloud/webpack-vue-config/rules rules: Object.values(nextcloudWebpackRules), }, }, { module: { rules: [ { test: /\.js$/, loader: 'esbuild-loader', options: { // Implicitly set as JS loader for only JS parts of Vue SFCs will be transpiled loader: 'js', target: 'es2020', }, exclude: BabelLoaderExcludeNodeModulesExcept([ '@nextcloud/event-bus', 'ansi-regex', 'fast-xml-parser', 'hot-patcher', 'nextcloud-vue-collections', 'semver', 'strip-ansi', 'tributejs', 'webdav', ]), }, { test: /\.wasm$/i, type: 'asset/resource', }, { test: /\.tflite$/i, type: 'asset/resource', }, { test: /\.worker\.js$/, use: { loader: 'worker-loader' }, }, { resourceQuery: /raw/, type: 'asset/source', } ], }, })