pdf.js/systemjs.config.js
Evadne Wu 50af2284aa
amends Babel cache (#8364) implementation to disable caching on Safari
- the viewer was not loading in development mode on Safari, due to Safari
  having crypto.webkitSubtle instead of crypto.subtle.

- the isCachingPossible check was amended to check for crypro.subtle
  which is currently not in Safari but in Firefox and Chrome. This
  essentially works around the issue by disabling caching for Safari
  in development mode.

- maintainer sentiment: people who develop on Safari can get this speedup
  once Safari drops prefix for SubtleCrypto.

- note: at time of writing Safari Version 10.1 (12603.1.30.0.34) has an
  issue where caching can be enabled for PDF.js but must to be disabled for
  worker, otherwise the two sides do not communicate.

- https://github.com/mozilla/pdf.js/pull/8387#issuecomment-299709961
- https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest
2017-05-07 18:00:30 +01:00

71 lines
2.3 KiB
JavaScript

/* Copyright 2017 Mozilla Foundation
*
* Licensed 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.
*/
'use strict';
(function () {
var baseLocation;
if (typeof document !== 'undefined') {
baseLocation = new URL('./', document.currentScript.src);
} else if (typeof location !== 'undefined') {
// Probably worker -- walking subfolders until we will reach root.
baseLocation = location;
while (baseLocation.href.includes('/src/')) {
baseLocation = new URL('..', baseLocation);
}
} else {
throw new Error('Cannot configure SystemJS');
}
var PluginBabelPath = 'node_modules/systemjs-plugin-babel/plugin-babel.js';
var SystemJSPluginBabelPath =
'node_modules/systemjs-plugin-babel/systemjs-babel-browser.js';
var PluginBabelCachePath = 'external/systemjs/plugin-babel-cached.js';
var isCachingPossible = typeof indexedDB !== 'undefined' &&
typeof TextEncoder !== 'undefined' &&
typeof crypto !== 'undefined' &&
typeof crypto.subtle !== 'undefined';
SystemJS.config({
packages: {
'': {
defaultExtension: 'js',
}
},
paths: {
'pdfjs': new URL('src', baseLocation).href,
'pdfjs-web': new URL('web', baseLocation).href,
'pdfjs-test': new URL('test', baseLocation).href,
},
meta: {
'*': {
scriptLoad: false,
esModule: true,
babelOptions: {
es2015: false,
},
}
},
map: {
'plugin-babel': new URL(PluginBabelPath, baseLocation).href,
'systemjs-babel-build':
new URL(SystemJSPluginBabelPath, baseLocation).href,
'plugin-babel-cached': new URL(PluginBabelCachePath, baseLocation).href,
},
transpiler: isCachingPossible ? 'plugin-babel-cached' : 'plugin-babel'
});
})();