diff --git a/package.json b/package.json index 3f6e9199e0..4b85cb5cb8 100644 --- a/package.json +++ b/package.json @@ -111,11 +111,13 @@ }, { "module": "pixelworks", + "import": "Processor", "browserify": true }, { "module": "vector-tile", "name": "vectortile", + "import": "VectorTile", "browserify": true } ] diff --git a/src/ol/format/mvt.js b/src/ol/format/mvt.js index ca0a7c4f2b..9745c59bf4 100644 --- a/src/ol/format/mvt.js +++ b/src/ol/format/mvt.js @@ -4,7 +4,7 @@ goog.provide('ol.format.MVT'); goog.require('ol'); goog.require('ol.ext.PBF'); -goog.require('ol.ext.vectortile'); +goog.require('ol.ext.vectortile.VectorTile'); goog.require('ol.format.Feature'); goog.require('ol.format.FormatType'); goog.require('ol.geom.GeometryLayout'); diff --git a/src/ol/source/raster.js b/src/ol/source/raster.js index 0ef94c8625..bacf4fee27 100644 --- a/src/ol/source/raster.js +++ b/src/ol/source/raster.js @@ -7,7 +7,7 @@ goog.require('ol.dom'); goog.require('ol.events'); goog.require('ol.events.Event'); goog.require('ol.events.EventType'); -goog.require('ol.ext.pixelworks'); +goog.require('ol.ext.pixelworks.Processor'); goog.require('ol.extent'); goog.require('ol.layer.Image'); goog.require('ol.layer.Tile'); diff --git a/tasks/build-ext.js b/tasks/build-ext.js index 72b58ea039..907f2f354a 100644 --- a/tasks/build-ext.js +++ b/tasks/build-ext.js @@ -29,6 +29,7 @@ function getExternalModules() { module: item.module, name: item.name !== undefined ? item.name : item.module, main: require.resolve(item.module), + import: item.import, browserify: item.browserify !== undefined ? item.browserify : false }; } @@ -43,10 +44,16 @@ function getExternalModules() { * wrapped module. */ function wrapModule(mod, callback) { + var name = 'ol.ext.' + mod.name; + var member = 'module.exports'; + if (mod.import) { + name += '.' + mod.import; + member += '.' + mod.import; + } var wrap = function(code) { - return 'goog.provide(\'ol.ext.' + mod.name + '\');\n' + + return 'goog.provide(\'' + name + '\');\n' + '/** @typedef {function(*)} */\n' + - 'ol.ext.' + mod.name + ';\n' + + name + ';\n' + '(function() {\n' + 'var exports = {};\n' + 'var module = {exports: exports};\n' + @@ -60,7 +67,7 @@ function wrapModule(mod, callback) { 'strictModuleDepCheck, suspiciousCode, undefinedNames, ' + 'undefinedVars, unknownDefines, unusedLocalVariables, uselessCode, visibility}\n' + ' */\n' + code + '\n' + - 'ol.ext.' + mod.name + ' = module.exports;\n' + + name + ' = ' + member + ';\n' + '})();\n'; }; diff --git a/test/spec/ol/format/mvt.test.js b/test/spec/ol/format/mvt.test.js index 8277dbbf50..ded61e1efe 100644 --- a/test/spec/ol/format/mvt.test.js +++ b/test/spec/ol/format/mvt.test.js @@ -2,7 +2,7 @@ goog.provide('ol.test.format.MVT'); goog.require('ol.Feature'); goog.require('ol.ext.PBF'); -goog.require('ol.ext.vectortile'); +goog.require('ol.ext.vectortile.VectorTile'); goog.require('ol.format.MVT'); goog.require('ol.geom.Point'); goog.require('ol.render.Feature'); diff --git a/transforms/module.js b/transforms/module.js index e3c276ad41..8a81705f1b 100644 --- a/transforms/module.js +++ b/transforms/module.js @@ -16,8 +16,10 @@ function resolve(fromName, toName) { if (toParts[0] === 'ol' && toParts[1] === 'ext') { let name = toParts[2]; let packageName; + let imported; for (let i = 0, ii = pkg.ext.length; i < ii; ++i) { const dependency = pkg.ext[i]; + imported = dependency.import; if (dependency.module === name) { packageName = name; break; @@ -29,7 +31,11 @@ function resolve(fromName, toName) { if (!packageName) { throw new Error(`Can't find package name for ${toName}`); } - return packageName; + if (imported) { + return [packageName, imported]; + } else { + return packageName; + } } const fromLength = fromParts.length; let commonDepth = 1; @@ -186,12 +192,18 @@ module.exports = function(info, api) { } const renamed = rename(name); replacements[name] = renamed; - imports.push( - j.importDeclaration( - [j.importDefaultSpecifier(j.identifier(renamed))], - j.literal(resolve(provide, name)) - ) - ); + const resolved = resolve(provide, name); + let specifier, source; + if (Array.isArray(resolved)) { + // import {imported as renamed} from 'source'; + specifier = j.importSpecifier(j.identifier(resolved[1]), j.identifier(renamed)); + source = resolved[0]; + } else { + // import renamed from 'source'; + specifier = j.importDefaultSpecifier(j.identifier(renamed)); + source = resolved; + } + imports.push(j.importDeclaration([specifier], j.literal(source))); }) .remove();