I have been giving this some thought, and posted a gist for discussion. https://gist.github.com/1891465
I have not included any of the require/define wrapper api's, as I wanted the API to be the talking point. Ideally this would be implemented on ALL platforms and allow us 100% consistency in APIs calling exec. Dividing responsibilities, we would end up with something like the following: PluginCode ( concrete example compass.js ) - exposes consistent API for ALL platforms - performs parameter checking ProxyCode - performs device specific implementation where native calls are not needed. CordovaJS - de-couples API specific differences across devices, exec is focused on being a device specific bridge ( or a bridge with an on-ramp ). An added benefit to this aproach is that it will provide us a stub point where we can simulate/hook tests, as currently it is difficult to test failing cases ( especially cases that typically should not fail ) Some additional questions that this may bring up: 1. do we need lesser/greater granularity of the APIs we want to proxy? ie should we be able to hook all of Compass with one call, or individually for each method? 2. do we need to provide an un-register method? 3. is there a more descriptive name for this? Thoughts?... Cheers, Jesse
