You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cordova.apache.org by "Andrew Grieve (JIRA)" <ji...@apache.org> on 2013/01/16 16:48:13 UTC
[jira] [Created] (CB-2227) Move mapping of module->symbol into
individual plugins
Andrew Grieve created CB-2227:
---------------------------------
Summary: Move mapping of module->symbol into individual plugins
Key: CB-2227
URL: https://issues.apache.org/jira/browse/CB-2227
Project: Apache Cordova
Issue Type: Bug
Components: CordovaJS
Reporter: Andrew Grieve
Assignee: Andrew Grieve
Priority: Minor
Fix For: 2.4.0
Goals:
- Change from listing module->symbol mapping within common.js & platform.js, to listing this within the plugins themselves.
- Support apps that don't want us to clobber global symbols.
aka, allow module->symbol mapping to be turned off
- Allow retrieval of clobbered globals
- Currently modules save it themselves when they are loaded
- This won't work (reliably) for saving references to globals overridden by other modules
- This gets in the way of the idea of lazy-loading modules via getters
- Support the use of other module loaders
- So... don't do crazy things at require() time.
Requirements:
Plugins must be able to declare dependencies
Plugins must be able to delay onDeviceReady()
Plugins must be able to run code to initialize
Implementation
modulemapper.js:
clobbers(...)
merges(...)
defaults(...)
mapModules(wnd)
getOriginalSymbol('FileSystem')
Start-up flow:
Parse all modules
common-bootstrap:
Loads list of modules named "cordova.*/symbols"
Run modulemapper.mapModules(window);
Loads list of modules named "cordova.*/main"
symbols.js files:
Will make calls to modulemapper instead of exporting {clobbers:}
This make dependencies work by require()ing dependent symbols
We want the to be an evaluated .js file instead of something listed in plugin.xml
So that it can export based on browser version
Implementation Steps
1. - Expose list of registered modules in scripts/require.js so that we can loop over them
2. - Write modulemapper.js (and have unit tests, of course)
3. - Add logic to bootstrap.js that calls into modulemapper
create $PLUGIN_NAME/symbols.js files for each plugin within cordova.
4. - Add logic to bootstrap.js that calls into modulemapper
5. - Create main.js files for those that currently have logic in their platform.js files
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira