Fixes #42: Handle cross origin web workers automatically

pull/2748/head
Alexandru Dima 2019-12-19 12:26:26 +01:00
parent f6223d69e6
commit 802217b877
No known key found for this signature in database
GPG Key ID: 6E58D7B045760DA0
3 changed files with 35 additions and 1 deletions

View File

@ -6,6 +6,7 @@
"typings": "./out/index.d.ts",
"scripts": {
"test": "node ./node_modules/webpack/bin/webpack.js --config test/webpack.config.js",
"test-cross-origin": "node ./node_modules/webpack/bin/webpack.js --config test/webpack-cross-origin.config.js",
"watch": "tsc -w -p tsconfig.json",
"prepublishOnly": "tsc -p tsconfig.json"
},

View File

@ -190,7 +190,16 @@ function createLoaderRules(languages: IFeatureDefinition[], features: IFeatureDe
return {
getWorkerUrl: function (moduleId, label) {
var pathPrefix = ${pathPrefix};
return (pathPrefix ? stripTrailingSlash(pathPrefix) + '/' : '') + paths[label];
var result = (pathPrefix ? stripTrailingSlash(pathPrefix) + '/' : '') + paths[label];
if (/^(http:)|(https:)|(file:)/.test(result)) {
var currentUrl = String(window.location);
var currentOrigin = currentUrl.substr(0, currentUrl.length - window.location.hash.length - window.location.search.length - window.location.pathname.length);
if (result.substring(0, currentOrigin.length) !== currentOrigin) {
var js = '/*' + label + '*/importScripts("' + result + '");';
return 'data:text/javascript;charset=utf-8,' + encodeURIComponent(js);
}
}
return result;
}
};
})(${JSON.stringify(workerPaths, null, 2)})`,

View File

@ -0,0 +1,24 @@
const MonacoWebpackPlugin = require('../out/index.js');
const path = require('path');
const ASSET_PATH = 'http://localhost:8088/monaco-editor-webpack-plugin/test/dist/';
module.exports = {
mode: 'development',
entry: './index.js',
context: __dirname,
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'app.js',
publicPath: ASSET_PATH
},
module: {
rules: [{
test: /\.css$/,
use: ['style-loader', 'css-loader']
}]
},
plugins: [
new MonacoWebpackPlugin()
]
};