Browse Source
Merge pull request #9050 from nextcloud/feat/noid/prepare-for-desktop
Merge pull request #9050 from nextcloud/feat/noid/prepare-for-desktop
Prepare for desktop buildpull/9118/head
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 214 additions and 105 deletions
-
7.eslintrc.js
-
8src/App.vue
-
33src/env.d.ts
-
22src/main.js
-
22src/mixins/sessionIssueHandler.js
-
30src/router/router.js
-
1src/test-setup.js
-
14src/utils/signaling.js
-
82webpack.common.config.js
-
100webpack.config.js
@ -0,0 +1,33 @@ |
|||
/* |
|||
* @copyright Copyright (c) 2023 Grigorii Shartsev <grigorii.shartsev@nextcloud.com> |
|||
* |
|||
* @author Grigorii Shartsev <grigorii.shartsev@nextcloud.com> |
|||
* |
|||
* @license GNU AGPL version 3 or any later version |
|||
* |
|||
* 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 <http://www.gnu.org/licenses/>. |
|||
*/ |
|||
|
|||
declare global { |
|||
// @nextcloud/webpack-vue-config build globals
|
|||
const appName: string |
|||
const appVersion: string |
|||
|
|||
/** |
|||
* Build constant to divide build for web app and desktop client |
|||
*/ |
|||
const IS_DESKTOP: false |
|||
} |
|||
|
|||
export {} |
@ -0,0 +1,82 @@ |
|||
/* |
|||
* @copyright Copyright (c) 2022 Grigorii Shartsev <grigorii.shartsev@nextcloud.com> |
|||
* |
|||
* @author Grigorii Shartsev <grigorii.shartsev@nextcloud.com> |
|||
* |
|||
* @license GNU AGPL version 3 or any later version |
|||
* |
|||
* 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 <http://www.gnu.org/licenses/>.
|
|||
*/ |
|||
|
|||
const BabelLoaderExcludeNodeModulesExcept = require('babel-loader-exclude-node-modules-except') |
|||
|
|||
const nextcloudWebpackRules = require('@nextcloud/webpack-vue-config/rules') |
|||
|
|||
// Edit JS rule
|
|||
nextcloudWebpackRules.RULE_JS.exclude = BabelLoaderExcludeNodeModulesExcept([ |
|||
'@nextcloud/event-bus', |
|||
'ansi-regex', |
|||
'color.js', |
|||
'fast-xml-parser', |
|||
'hot-patcher', |
|||
'nextcloud-vue-collections', |
|||
'semver', |
|||
'strip-ansi', |
|||
'tributejs', |
|||
'vue-resize', |
|||
'webdav', |
|||
]) |
|||
|
|||
module.exports = { |
|||
module: { |
|||
rules: [ |
|||
// Reuse @nextcloud/webpack-vue-config/rules
|
|||
...Object.values(nextcloudWebpackRules), |
|||
|
|||
{ |
|||
/** |
|||
* webrtc-adapter main module does no longer provide |
|||
* "module.exports", which is expected by some elements using it |
|||
* (like "attachmediastream"), so it needs to be added back with |
|||
* a plugin. |
|||
*/ |
|||
test: /node_modules[\\/]webrtc-adapter[\\/].*\.js$/, |
|||
loader: 'babel-loader', |
|||
options: { |
|||
plugins: ['add-module-exports'], |
|||
presets: [ |
|||
/** |
|||
* From "add-module-exports" documentation: |
|||
* "webpack doesn't perform commonjs transformation for |
|||
* codesplitting. Need to set commonjs conversion." |
|||
*/ |
|||
['@babel/env', { modules: 'commonjs' }], |
|||
], |
|||
}, |
|||
}, |
|||
{ |
|||
test: /\.wasm$/i, |
|||
type: 'asset/resource', |
|||
}, |
|||
{ |
|||
test: /\.tflite$/i, |
|||
type: 'asset/resource', |
|||
}, |
|||
{ |
|||
test: /\.worker\.js$/, |
|||
use: { loader: 'worker-loader' }, |
|||
}, |
|||
], |
|||
}, |
|||
} |
@ -1,82 +1,40 @@ |
|||
const path = require('path') |
|||
const webpackConfig = require('@nextcloud/webpack-vue-config') |
|||
const webpackRules = require('@nextcloud/webpack-vue-config/rules') |
|||
const BabelLoaderExcludeNodeModulesExcept = require('babel-loader-exclude-node-modules-except') |
|||
const path = require('node:path') |
|||
|
|||
webpackConfig.entry = { |
|||
'admin-settings': path.join(__dirname, 'src', 'mainAdminSettings.js'), |
|||
collections: path.join(__dirname, 'src', 'collections.js'), |
|||
main: path.join(__dirname, 'src', 'main.js'), |
|||
recording: path.join(__dirname, 'src', 'mainRecording.js'), |
|||
'files-sidebar': [ |
|||
path.join(__dirname, 'src', 'mainFilesSidebar.js'), |
|||
path.join(__dirname, 'src', 'mainFilesSidebarLoader.js'), |
|||
], |
|||
'public-share-auth-sidebar': path.join(__dirname, 'src', 'mainPublicShareAuthSidebar.js'), |
|||
'public-share-sidebar': path.join(__dirname, 'src', 'mainPublicShareSidebar.js'), |
|||
flow: path.join(__dirname, 'src', 'flow.js'), |
|||
dashboard: path.join(__dirname, 'src', 'dashboard.js'), |
|||
deck: path.join(__dirname, 'src', 'deck.js'), |
|||
maps: path.join(__dirname, 'src', 'maps.js'), |
|||
} |
|||
const webpack = require('webpack') |
|||
const { merge } = require('webpack-merge') |
|||
|
|||
webpackConfig.output.assetModuleFilename = '[name][ext]?v=[contenthash]' |
|||
const nextcloudWebpackConfig = require('@nextcloud/webpack-vue-config') |
|||
|
|||
// Edit JS rule
|
|||
webpackRules.RULE_JS.exclude = BabelLoaderExcludeNodeModulesExcept([ |
|||
'@nextcloud/event-bus', |
|||
'ansi-regex', |
|||
'color.js', |
|||
'fast-xml-parser', |
|||
'hot-patcher', |
|||
'nextcloud-vue-collections', |
|||
'semver', |
|||
'strip-ansi', |
|||
'tributejs', |
|||
'vue-resize', |
|||
'webdav', |
|||
]) |
|||
const commonWebpackConfig = require('./webpack.common.config.js') |
|||
|
|||
// Replaces rules array
|
|||
webpackConfig.module.rules = Object.values(webpackRules) |
|||
// Rules from @nextcloud/webpack-vue-config/rules already added by commonWebpackConfig
|
|||
nextcloudWebpackConfig.module.rules = [] |
|||
|
|||
webpackConfig.module.rules.push({ |
|||
/** |
|||
* webrtc-adapter main module does no longer provide |
|||
* "module.exports", which is expected by some elements using it |
|||
* (like "attachmediastream"), so it needs to be added back with |
|||
* a plugin. |
|||
*/ |
|||
test: /node_modules\/webrtc-adapter\/.*\.js$/, |
|||
loader: 'babel-loader', |
|||
options: { |
|||
plugins: ['add-module-exports'], |
|||
presets: [ |
|||
/** |
|||
* From "add-module-exports" documentation: |
|||
* "webpack doesn't perform commonjs transformation for |
|||
* codesplitting. Need to set commonjs conversion." |
|||
*/ |
|||
['@babel/env', { modules: 'commonjs' }], |
|||
module.exports = merge(nextcloudWebpackConfig, commonWebpackConfig, { |
|||
entry: { |
|||
'admin-settings': path.join(__dirname, 'src', 'mainAdminSettings.js'), |
|||
collections: path.join(__dirname, 'src', 'collections.js'), |
|||
main: path.join(__dirname, 'src', 'main.js'), |
|||
recording: path.join(__dirname, 'src', 'mainRecording.js'), |
|||
'files-sidebar': [ |
|||
path.join(__dirname, 'src', 'mainFilesSidebar.js'), |
|||
path.join(__dirname, 'src', 'mainFilesSidebarLoader.js'), |
|||
], |
|||
'public-share-auth-sidebar': path.join(__dirname, 'src', 'mainPublicShareAuthSidebar.js'), |
|||
'public-share-sidebar': path.join(__dirname, 'src', 'mainPublicShareSidebar.js'), |
|||
flow: path.join(__dirname, 'src', 'flow.js'), |
|||
dashboard: path.join(__dirname, 'src', 'dashboard.js'), |
|||
deck: path.join(__dirname, 'src', 'deck.js'), |
|||
maps: path.join(__dirname, 'src', 'maps.js'), |
|||
}, |
|||
}) |
|||
|
|||
webpackConfig.module.rules.push({ |
|||
test: /\.wasm$/i, |
|||
type: 'asset/resource', |
|||
}) |
|||
output: { |
|||
assetModuleFilename: '[name][ext]?v=[contenthash]', |
|||
}, |
|||
|
|||
webpackConfig.module.rules.push({ |
|||
test: /\.tflite$/i, |
|||
type: 'asset/resource', |
|||
}) |
|||
plugins: [ |
|||
new webpack.DefinePlugin({ IS_DESKTOP: false }), |
|||
], |
|||
|
|||
webpackConfig.module.rules.push({ |
|||
test: /\.worker\.js$/, |
|||
use: { loader: 'worker-loader' }, |
|||
cache: true, |
|||
}) |
|||
|
|||
webpackConfig.cache = true |
|||
|
|||
module.exports = webpackConfig |
Write
Preview
Loading…
Cancel
Save
Reference in new issue