Remove __pdfjsdev_webpack__, use webpack options
`__pdfjsdev_webpack__` was used to skip evaluating part of an AST, in order to not mangle some `require` symbols. This commit removes `__pdfjsdev_webpack__`, and: - Uses `__non_webpack_require__` when one wants the output to contain `require` instead of `__webpack_require__`. - Adds options to the webpack config to prevent "polyfills" for some Node.js-specific APIs to be added. - Use `// eslint-disable-next-line no-undef` instead of `/* globals ... */` for variables that are not meant to be used globally.
This commit is contained in:
		
							parent
							
								
									7b4887dd21
								
							
						
					
					
						commit
						742ed3d1c9
					
				
							
								
								
									
										50
									
								
								external/webpack/block-require.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										50
									
								
								external/webpack/block-require.js
									
									
									
									
										vendored
									
									
								
							@ -1,50 +0,0 @@
 | 
				
			|||||||
/* 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.
 | 
					 | 
				
			||||||
 */
 | 
					 | 
				
			||||||
/* eslint-env node */
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
'use strict';
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function isPDFJSDevCheck(test) {
 | 
					 | 
				
			||||||
  // Is it something like `typeof __pdfjsdev_webpack__ === 'undefined'`?
 | 
					 | 
				
			||||||
  return test.type === 'BinaryExpression' &&
 | 
					 | 
				
			||||||
         (test.operator === '===' || test.operator === '!==' ||
 | 
					 | 
				
			||||||
          test.operator === '==' || test.operator === '!=') &&
 | 
					 | 
				
			||||||
         test.left.type === 'UnaryExpression' &&
 | 
					 | 
				
			||||||
         test.left.operator === 'typeof' &&
 | 
					 | 
				
			||||||
         test.left.argument.type === 'Identifier' &&
 | 
					 | 
				
			||||||
         test.left.argument.name === '__pdfjsdev_webpack__' &&
 | 
					 | 
				
			||||||
         test.right.type === 'Literal' && test.right.value === 'undefined';
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function isPDFJSDevEnabled(test) {
 | 
					 | 
				
			||||||
  return test.operator[0] === '!';
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
function BlockRequirePlugin() {}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
BlockRequirePlugin.prototype.apply = function(compiler) {
 | 
					 | 
				
			||||||
  compiler.plugin('compilation', function(compilation, data) {
 | 
					 | 
				
			||||||
    data.normalModuleFactory.plugin('parser', function (parser, options) {
 | 
					 | 
				
			||||||
      parser.plugin('statement if', function (ifNode) {
 | 
					 | 
				
			||||||
        if (isPDFJSDevCheck(ifNode.test)) {
 | 
					 | 
				
			||||||
          return isPDFJSDevEnabled(ifNode.test);
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        return undefined;
 | 
					 | 
				
			||||||
      });
 | 
					 | 
				
			||||||
    });
 | 
					 | 
				
			||||||
  });
 | 
					 | 
				
			||||||
};
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
module.exports = BlockRequirePlugin;
 | 
					 | 
				
			||||||
							
								
								
									
										36
									
								
								gulpfile.js
									
									
									
									
									
								
							
							
						
						
									
										36
									
								
								gulpfile.js
									
									
									
									
									
								
							@ -121,7 +121,6 @@ function createStringSource(filename, content) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
function createWebpackConfig(defines, output) {
 | 
					function createWebpackConfig(defines, output) {
 | 
				
			||||||
  var path = require('path');
 | 
					  var path = require('path');
 | 
				
			||||||
  var BlockRequirePlugin = require('./external/webpack/block-require.js');
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
  var versionInfo = getVersionJSON();
 | 
					  var versionInfo = getVersionJSON();
 | 
				
			||||||
  var bundleDefines = builder.merge(defines, {
 | 
					  var bundleDefines = builder.merge(defines, {
 | 
				
			||||||
@ -138,7 +137,6 @@ function createWebpackConfig(defines, output) {
 | 
				
			|||||||
    output: output,
 | 
					    output: output,
 | 
				
			||||||
    plugins: [
 | 
					    plugins: [
 | 
				
			||||||
      new webpack2.BannerPlugin({ banner: licenseHeader, raw: true, }),
 | 
					      new webpack2.BannerPlugin({ banner: licenseHeader, raw: true, }),
 | 
				
			||||||
      new BlockRequirePlugin()
 | 
					 | 
				
			||||||
    ],
 | 
					    ],
 | 
				
			||||||
    resolve: {
 | 
					    resolve: {
 | 
				
			||||||
      alias: {
 | 
					      alias: {
 | 
				
			||||||
@ -168,6 +166,19 @@ function createWebpackConfig(defines, output) {
 | 
				
			|||||||
        },
 | 
					        },
 | 
				
			||||||
      ],
 | 
					      ],
 | 
				
			||||||
    },
 | 
					    },
 | 
				
			||||||
 | 
					    // Avoid shadowing actual Node.js variables with polyfills, by disabling
 | 
				
			||||||
 | 
					    // polyfills/mocks - https://webpack.js.org/configuration/node/
 | 
				
			||||||
 | 
					    node: {
 | 
				
			||||||
 | 
					      console: false,
 | 
				
			||||||
 | 
					      global: false,
 | 
				
			||||||
 | 
					      process: false,
 | 
				
			||||||
 | 
					      __filename: false,
 | 
				
			||||||
 | 
					      __dirname: false,
 | 
				
			||||||
 | 
					      Buffer: false,
 | 
				
			||||||
 | 
					      setImmediate: false,
 | 
				
			||||||
 | 
					    },
 | 
				
			||||||
 | 
					    // If we upgrade to Webpack 3.0+, the above can be replaced with:
 | 
				
			||||||
 | 
					    // node: false,
 | 
				
			||||||
  };
 | 
					  };
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -975,13 +986,32 @@ gulp.task('jsdoc', function (done) {
 | 
				
			|||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
gulp.task('lib', ['buildnumber'], function () {
 | 
					gulp.task('lib', ['buildnumber'], function () {
 | 
				
			||||||
 | 
					  // When we create a bundle, webpack is run on the source and it will replace
 | 
				
			||||||
 | 
					  // require with __webpack_require__. When we want to use the real require,
 | 
				
			||||||
 | 
					  // __non_webpack_require__ has to be used.
 | 
				
			||||||
 | 
					  // In this target, we don't create a bundle, so we have to replace the
 | 
				
			||||||
 | 
					  // occurences of __non_webpack_require__ ourselves.
 | 
				
			||||||
 | 
					  function babelPluginReplaceNonWebPackRequire(babel) {
 | 
				
			||||||
 | 
					    return {
 | 
				
			||||||
 | 
					      visitor: {
 | 
				
			||||||
 | 
					        Identifier(path, state) {
 | 
				
			||||||
 | 
					          if (path.node.name === '__non_webpack_require__') {
 | 
				
			||||||
 | 
					            path.replaceWith(babel.types.identifier('require'));
 | 
				
			||||||
 | 
					          }
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					      },
 | 
				
			||||||
 | 
					    };
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
  function preprocess(content) {
 | 
					  function preprocess(content) {
 | 
				
			||||||
    var noPreset = /\/\*\s*no-babel-preset\s*\*\//.test(content);
 | 
					    var noPreset = /\/\*\s*no-babel-preset\s*\*\//.test(content);
 | 
				
			||||||
    content = preprocessor2.preprocessPDFJSCode(ctx, content);
 | 
					    content = preprocessor2.preprocessPDFJSCode(ctx, content);
 | 
				
			||||||
    content = babel.transform(content, {
 | 
					    content = babel.transform(content, {
 | 
				
			||||||
      sourceType: 'module',
 | 
					      sourceType: 'module',
 | 
				
			||||||
      presets: noPreset ? undefined : ['es2015'],
 | 
					      presets: noPreset ? undefined : ['es2015'],
 | 
				
			||||||
      plugins: ['transform-es2015-modules-commonjs'],
 | 
					      plugins: [
 | 
				
			||||||
 | 
					        'transform-es2015-modules-commonjs',
 | 
				
			||||||
 | 
					        babelPluginReplaceNonWebPackRequire,
 | 
				
			||||||
 | 
					      ],
 | 
				
			||||||
    }).code;
 | 
					    }).code;
 | 
				
			||||||
    var removeCjsSrc =
 | 
					    var removeCjsSrc =
 | 
				
			||||||
      /^(var\s+\w+\s*=\s*require\('.*?)(?:\/src)(\/[^']*'\);)$/gm;
 | 
					      /^(var\s+\w+\s*=\s*require\('.*?)(?:\/src)(\/[^']*'\);)$/gm;
 | 
				
			||||||
 | 
				
			|||||||
@ -12,7 +12,7 @@
 | 
				
			|||||||
 * See the License for the specific language governing permissions and
 | 
					 * See the License for the specific language governing permissions and
 | 
				
			||||||
 * limitations under the License.
 | 
					 * limitations under the License.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
/* globals requirejs, __pdfjsdev_webpack__ */
 | 
					/* globals requirejs, __non_webpack_require__ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import {
 | 
					import {
 | 
				
			||||||
  createPromiseCapability, deprecated, getVerbosityLevel, globalScope,
 | 
					  createPromiseCapability, deprecated, getVerbosityLevel, globalScope,
 | 
				
			||||||
@ -43,21 +43,19 @@ var pdfjsFilePath =
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
var fakeWorkerFilesLoader = null;
 | 
					var fakeWorkerFilesLoader = null;
 | 
				
			||||||
var useRequireEnsure = false;
 | 
					var useRequireEnsure = false;
 | 
				
			||||||
// The if below protected by __pdfjsdev_webpack__ check from webpack parsing.
 | 
					 | 
				
			||||||
if (typeof PDFJSDev !== 'undefined' &&
 | 
					if (typeof PDFJSDev !== 'undefined' &&
 | 
				
			||||||
    PDFJSDev.test('GENERIC && !SINGLE_FILE') &&
 | 
					    PDFJSDev.test('GENERIC && !SINGLE_FILE')) {
 | 
				
			||||||
    typeof __pdfjsdev_webpack__ === 'undefined') {
 | 
					 | 
				
			||||||
  // For GENERIC build we need add support of different fake file loaders
 | 
					  // For GENERIC build we need add support of different fake file loaders
 | 
				
			||||||
  // for different  frameworks.
 | 
					  // for different  frameworks.
 | 
				
			||||||
  if (typeof window === 'undefined') {
 | 
					  if (typeof window === 'undefined') {
 | 
				
			||||||
    // node.js - disable worker and set require.ensure.
 | 
					    // node.js - disable worker and set require.ensure.
 | 
				
			||||||
    isWorkerDisabled = true;
 | 
					    isWorkerDisabled = true;
 | 
				
			||||||
    if (typeof require.ensure === 'undefined') {
 | 
					    if (typeof __non_webpack_require__.ensure === 'undefined') {
 | 
				
			||||||
      require.ensure = require('node-ensure');
 | 
					      __non_webpack_require__.ensure = __non_webpack_require__('node-ensure');
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    useRequireEnsure = true;
 | 
					    useRequireEnsure = true;
 | 
				
			||||||
  } else if (typeof require !== 'undefined' &&
 | 
					  } else if (typeof __non_webpack_require__ !== 'undefined' &&
 | 
				
			||||||
             typeof require.ensure === 'function') {
 | 
					             typeof __non_webpack_require__.ensure === 'function') {
 | 
				
			||||||
    useRequireEnsure = true;
 | 
					    useRequireEnsure = true;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  if (typeof requirejs !== 'undefined' && requirejs.toUrl) {
 | 
					  if (typeof requirejs !== 'undefined' && requirejs.toUrl) {
 | 
				
			||||||
@ -66,12 +64,12 @@ if (typeof PDFJSDev !== 'undefined' &&
 | 
				
			|||||||
  var dynamicLoaderSupported =
 | 
					  var dynamicLoaderSupported =
 | 
				
			||||||
    typeof requirejs !== 'undefined' && requirejs.load;
 | 
					    typeof requirejs !== 'undefined' && requirejs.load;
 | 
				
			||||||
  fakeWorkerFilesLoader = useRequireEnsure ? (function (callback) {
 | 
					  fakeWorkerFilesLoader = useRequireEnsure ? (function (callback) {
 | 
				
			||||||
    require.ensure([], function () {
 | 
					    __non_webpack_require__.ensure([], function () {
 | 
				
			||||||
      var worker;
 | 
					      var worker;
 | 
				
			||||||
      if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('LIB')) {
 | 
					      if (typeof PDFJSDev !== 'undefined' && PDFJSDev.test('LIB')) {
 | 
				
			||||||
        worker = require('../pdf.worker.js');
 | 
					        worker = __non_webpack_require__('../pdf.worker.js');
 | 
				
			||||||
      } else {
 | 
					      } else {
 | 
				
			||||||
        worker = require('./pdf.worker.js');
 | 
					        worker = __non_webpack_require__('./pdf.worker.js');
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      callback(worker.WorkerMessageHandler);
 | 
					      callback(worker.WorkerMessageHandler);
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
 | 
				
			|||||||
@ -12,13 +12,13 @@
 | 
				
			|||||||
 * See the License for the specific language governing permissions and
 | 
					 * See the License for the specific language governing permissions and
 | 
				
			||||||
 * limitations under the License.
 | 
					 * limitations under the License.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
/* globals global, process, __pdfjsdev_webpack__ */
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
import './compatibility';
 | 
					import './compatibility';
 | 
				
			||||||
import { ReadableStream } from '../../external/streams/streams-lib';
 | 
					import { ReadableStream } from '../../external/streams/streams-lib';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var globalScope =
 | 
					var globalScope =
 | 
				
			||||||
  (typeof window !== 'undefined' && window.Math === Math) ? window :
 | 
					  (typeof window !== 'undefined' && window.Math === Math) ? window :
 | 
				
			||||||
 | 
					  // eslint-disable-next-line no-undef
 | 
				
			||||||
  (typeof global !== 'undefined' && global.Math === Math) ? global :
 | 
					  (typeof global !== 'undefined' && global.Math === Math) ? global :
 | 
				
			||||||
  (typeof self !== 'undefined' && self.Math === Math) ? self : this;
 | 
					  (typeof self !== 'undefined' && self.Math === Math) ? self : this;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -1092,11 +1092,8 @@ function isSpace(ch) {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
function isNodeJS() {
 | 
					function isNodeJS() {
 | 
				
			||||||
  // The if below protected by __pdfjsdev_webpack__ check from webpack parsing.
 | 
					  // eslint-disable-next-line no-undef
 | 
				
			||||||
  if (typeof __pdfjsdev_webpack__ === 'undefined') {
 | 
					 | 
				
			||||||
  return typeof process === 'object' && process + '' === '[object process]';
 | 
					  return typeof process === 'object' && process + '' === '[object process]';
 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
  return false;
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										13
									
								
								web/pdfjs.js
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								web/pdfjs.js
									
									
									
									
									
								
							@ -12,19 +12,16 @@
 | 
				
			|||||||
 * See the License for the specific language governing permissions and
 | 
					 * See the License for the specific language governing permissions and
 | 
				
			||||||
 * limitations under the License.
 | 
					 * limitations under the License.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
/* globals module, __pdfjsdev_webpack__ */
 | 
					/* globals module, __non_webpack_require__ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
'use strict';
 | 
					'use strict';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
var pdfjsLib;
 | 
					var pdfjsLib;
 | 
				
			||||||
// The if below protected by __pdfjsdev_webpack__ check from webpack parsing.
 | 
					if (typeof window !== 'undefined' && window['pdfjs-dist/build/pdf']) {
 | 
				
			||||||
if (typeof __pdfjsdev_webpack__ === 'undefined') {
 | 
					 | 
				
			||||||
  if (typeof window !== 'undefined' && window['pdfjs-dist/build/pdf']) {
 | 
					 | 
				
			||||||
  pdfjsLib = window['pdfjs-dist/build/pdf'];
 | 
					  pdfjsLib = window['pdfjs-dist/build/pdf'];
 | 
				
			||||||
  } else if (typeof require === 'function') {
 | 
					} else if (typeof __non_webpack_require__ === 'function') {
 | 
				
			||||||
    pdfjsLib = require('../build/pdf.js');
 | 
					  pdfjsLib = __non_webpack_require__('../build/pdf.js');
 | 
				
			||||||
  } else {
 | 
					} else {
 | 
				
			||||||
  throw new Error('Neither `require` nor `window` found');
 | 
					  throw new Error('Neither `require` nor `window` found');
 | 
				
			||||||
  }
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
module.exports = pdfjsLib;
 | 
					module.exports = pdfjsLib;
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user