| /* |
| * |
| * 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. |
| * |
| */ |
| |
| var modulemapper = require('cordova/modulemapper'); |
| |
| // Handler for the cordova_plugins.js content. |
| // See plugman's plugin_loader.js for the details of this object. |
| function handlePluginsObject (moduleList) { |
| // if moduleList is not defined or empty, we've nothing to do |
| if (!moduleList || !moduleList.length) { |
| return; |
| } |
| |
| // Loop through all the modules and then through their clobbers and merges. |
| for (var i = 0, module; module = moduleList[i]; i++) { // eslint-disable-line no-cond-assign |
| if (module.clobbers && module.clobbers.length) { |
| for (var j = 0; j < module.clobbers.length; j++) { |
| modulemapper.clobbers(module.id, module.clobbers[j]); |
| } |
| } |
| |
| if (module.merges && module.merges.length) { |
| for (var k = 0; k < module.merges.length; k++) { |
| modulemapper.merges(module.id, module.merges[k]); |
| } |
| } |
| |
| // Finally, if runs is truthy we want to simply require() the module. |
| if (module.runs) { |
| modulemapper.runs(module.id); |
| } |
| } |
| } |
| |
| // Loads all plugins' js-modules. Plugin loading is syncronous in browserified bundle |
| // but the method accepts callback to be compatible with non-browserify flow. |
| // onDeviceReady is blocked on onPluginsReady. onPluginsReady is fired when there are |
| // no plugins to load, or they are all done. |
| exports.load = function (callback) { |
| var moduleList = require('cordova/plugin_list'); |
| handlePluginsObject(moduleList); |
| |
| callback(); |
| }; |