blob: 3581f92f91cb70333b74bae6fa336c5599e06a65 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import jsdom from 'jsdom';
import fs from 'fs';
import { version } from '../package.json';
let scriptContent = null;
export function resourceLoader(res, callback) {
if (scriptContent === null) {
scriptContent = fs.readFileSync(`build/userale-${version}.min.js`).toString();
}
const timeout = setTimeout(function() {
callback(null, scriptContent);
}, 0);
return {
abort : function() {
clearTimeout(timeout);
callback(new Error('Request canceled by user.'));
},
}
}
export function createEnv(html, doneCallback, extraConfig) {
let extra = (typeof extraConfig === 'undefined') ? {} : extraConfig;
return jsdom.env(Object.assign({}, {
html : html,
url : 'http://localhost:8080',
features : {
FetchExternalResources : ['script'],
ProcessExternalResources : ['script']
},
resourceLoader,
done : doneCallback,
}, extraConfig));
}