Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

devs to add webworks.js files from /SDK

  • Loading branch information...
commit 8e154487e3d6cd94ff51254588d95c0cc6fb7c62 1 parent 6547950
Adam Stanley authored
View
1,387 fileTransfer/app/webworks-1.0.1.5.js
@@ -1,1387 +0,0 @@
-/*
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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.
-
--------------------------------------------------------
-Copyright 2011 Research In Motion Limited.
-
-Contributors:
- Brent Lintner (blintner@rim.com)
- Dan Silivestru (dsilivestru@rim.com)
- Gord Tanner (gtanner@rim.com)
- Nino D'Aversa (ndaversa@rim.com)
- Nukul Bhasin (nbhasin@rim.com)
-
--------------------------------------------------------
---> Kudos to third party awesomeness:
-
-* jWorkflow *
-
-http://github.com/tinyhippos/jWorkflow/
-
-The MIT License
-http://www.opensource.org/licenses/mit-license.php
-Copyright (c) 2010 all contributors:
-Gord Tanner
-
--------------------------------------------------------
-* Math.uuid.js (v1.4) *
-
-http://www.broofa.com
-mailto:robert@broofa.com
-
-Copyright (c) 2010 Robert Kieffer
-Dual licensed under the MIT and GPL licenses.
-
--------------------------------------------------------
-
-
-*/
-(function () {
-var define,
- require;
-
-(function () {
- var unpreparedModules = {},
- readyModules = {};
-
-
- function normalizeName(originalName, baseName) {
- var nameParts,
- name = originalName.slice(0);
- //remove ^local:// (if it exists) and .js$
- //This will not work for local:// without a trailing js
- name = name.replace(/(?:^local:\/\/)?(.+?)(?:\.js$)/, "$1");
- if (name.charAt(0) === '.' && baseName) {
- //Split the baseName and remove the final part (the module name)
- nameParts = baseName.split('/');
- nameParts.pop();
- nameParts = nameParts.concat(name.split('/'));
-
- name = nameParts.reduce(function (previous, current, index, array) {
- var returnValue,
- slashIndex;
-
- //If previous is a dot, ignore it
- //If previous is ever just .. we're screwed anyway
- if (previous !== '.') {
- returnValue = previous;
- }
-
- //If we have a .. then remove a chunk of previous
- if (current === "..") {
- slashIndex = previous.lastIndexOf('/');
- //If there's no slash we're either screwed or we remove the final token
- if (slashIndex !== -1) {
- returnValue = previous.slice(0, previous.lastIndexOf('/'));
- } else {
- returnValue = "";
- }
- } else if (current !== '.') {
- //Otherwise simply append anything not a .
- //Only append a slash if we're not empty
- if (returnValue.length) {
- returnValue += "/";
- }
- returnValue += current;
- }
-
- return returnValue;
- });
-
- }
- return name;
- }
-
- function buildModule(name, dependencies, factory) {
- var module = {exports: {}},
- localRequire = function (moduleName) {
- return require(moduleName, name);
- },
- args = [];
-
- dependencies.forEach(function (dependency) {
- if (dependency === 'require') {
- args.push(localRequire);
- } else if (dependency === 'exports') {
- args.push(module.exports);
- } else if (dependency === 'module') {
- args.push(module);
- } else {
- //This is because jshint cannot handle out of order functions
- /*global loadModule:false */
- args.push(loadModule(dependency));
- /*global loadModule:true */
- }
- });
-
- //No need to process dependencies, webworks only has require, exports, module
- factory.apply(this, args);
-
- //For full AMD we would need logic to also check the return value
- return module.exports;
-
- }
-
- function loadModule(name, baseName) {
- var normalizedName = normalizeName(name, baseName),
- url,
- xhr,
- evalString;
- //Always check undefined first, this allows the user to redefine modules
- //(Not used in WebWorks, although it is used in our unit tests)
- if (unpreparedModules[normalizedName]) {
- readyModules[normalizedName] = buildModule(normalizedName, unpreparedModules[normalizedName].dependencies, unpreparedModules[normalizedName].factory);
- delete unpreparedModules[normalizedName];
- }
-
- //If the module does not exist, load the module from external source
- //Webworks currently only loads APIs from across bridge
- if (!readyModules[normalizedName]) {
- //If the module to be loaded ends in .js then we will define it
- //Also if baseName exists than we have a local require situation
- if (/\.js$/.test(name) || baseName) {
- xhr = new XMLHttpRequest();
- url = name;
- //If the module to be loaded starts with local:// go over the bridge
- //Else If the module to be loaded is a relative load it may not have .js extension which is needed
- if (/^local:\/\//.test(name)) {
- url = "http://localhost:8472/blackberry/extensions/load/" + normalizedName.replace(/(?:^ext\/)(.+)(?:\/client$)/, "$1");
- } else if (baseName) {
- url = normalizedName;
- if (!/\.js$/.test(url)) {
- url += ".js";
- }
- }
- xhr.open("GET", url, false);
- xhr.send(null);
- try {
- //Trimming responseText to remove EOF chars
- evalString = 'define("' + normalizedName + '", function (require, exports, module) {' + xhr.responseText.replace(/^\s+|\s+$/g, '') + '});';
- /*jshint evil:true */
- eval(evalString);
- /*jshint evil:false */
- } catch (err) {
- err.message += ' in ' + url;
- throw err;
- }
-
- if (unpreparedModules[normalizedName]) {
- readyModules[normalizedName] = buildModule(normalizedName, unpreparedModules[normalizedName].dependencies, unpreparedModules[normalizedName].factory);
- delete unpreparedModules[normalizedName];
- }
- } else {
- throw "module " + name + " cannot be found";
- }
-
- }
-
- return readyModules[normalizedName];
-
- }
-
- //Use the AMD signature incase we ever want to change.
- //For now we will only be using (name, baseName)
- require = function (dependencies, callback) {
- if (typeof dependencies === "string") {
- //dependencies is the module name and callback is the relName
- //relName is not part of the AMDJS spec, but we use it from localRequire
- return loadModule(dependencies, callback);
- } else if (Array.isArray(dependencies) && typeof callback === 'function') {
- //Call it Asynchronously
- setTimeout(function () {
- buildModule(undefined, dependencies, callback);
- }, 0);
- }
- };
-
-
- //Use the AMD signature incase we ever want to change.
- //For now webworks will only be using (name, factory) signature.
- define = function (name, dependencies, factory) {
- if (typeof name === "string" && typeof dependencies === 'function') {
- factory = dependencies;
- dependencies = ['require', 'exports', 'module'];
- }
-
- //According to the AMDJS spec we should parse out the require statments
- //from factory.toString and add those to the list of dependencies
-
- //Normalize the name. Remove local:// and .js
- name = normalizeName(name);
- unpreparedModules[name] = {
- dependencies: dependencies,
- factory: factory
- };
- };
-}());
-
-//Export for use in node for unit tests
-if (typeof module === "object" && typeof require === "function") {
- module.exports = {
- require: require,
- define: define
- };
-}
-
-define('builder', function (require, exports, module) {
-/*
- * Copyright 2010-2011 Research In Motion Limited.
- *
- * 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.
- */
-
-function requireLocal(id) {
- return require(!!require.resolve ? "../../" + id.replace(/local:\/\//, "").replace(/\.js$/, "") : id);
-}
-
-function buildNamespace(currentNamespace, namespaceParts, featureProperties) {
- var featureId,
- nextPart,
- utils = requireLocal("local://lib/utils.js");
-
- if (namespaceParts.length === 1) {
- //base case, feature properties go here
- featureId = namespaceParts[0];
- if (currentNamespace[featureId] === undefined) {
- currentNamespace[featureId] = {};
- }
-
- currentNamespace = utils.mixin(featureProperties, currentNamespace[featureId]);
- return currentNamespace;
- }
- else {
- nextPart = namespaceParts.shift();
- if (currentNamespace[nextPart] === undefined) {
- currentNamespace[nextPart] = {};
- }
-
- return buildNamespace(currentNamespace[nextPart], namespaceParts, featureProperties);
- }
-}
-
-function include(parent, featureIdList) {
- var featureId,
- featureProperties,
- localUrl,
- i;
-
- for (i = 0; i < featureIdList.length; i++) {
- featureId = featureIdList[i];
-
- localUrl = "local://ext/" + featureId + "/client.js";
- featureProperties = requireLocal(localUrl);
-
- buildNamespace(parent, featureId.split("."), featureProperties);
- }
-}
-
-var _self = {
- build: function (featureIdList) {
- return {
- into: function (target) {
- include(target, featureIdList);
- }
- };
- }
-};
-
-module.exports = _self;
-
-});
-
-define('window', function (require, exports, module) {
-/*
- * Copyright 2010-2011 Research In Motion Limited.
- *
- * 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.
- */
-
-// HACK have to live with differentiating node from browser for now
-module.exports = {
- "window": function () {
- return !!require.resolve ? null : window;
- }
-};
-});
-
-define('event', function (require, exports, module) {
-/*
-* Copyright 2010-2011 Research In Motion Limited.
-*
-* 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.
-*/
-
-var _handlers = {};
-
-function _add(featureId, name, cb, success, fail, once) {
- var handler;
- if (featureId && name && typeof cb === "function") {
- handler = {
- func: cb,
- once: !!once
- };
- //If this is the first time we are adding a cb
- if (!_handlers.hasOwnProperty(name)) {
- _handlers[name] = [handler];
- //Do not call exec for once because its not necessary
- if (!once) {
- window.webworks.exec(success, fail, featureId, "add", {"eventName": name});
- }
- } else if (_handlers[name].some(function (element, index, array) {
- return element.func !== cb;
- })) {
- //Only add unique callbacks
- _handlers[name].push(handler);
- }
- }
-}
-
-module.exports = {
- add: function (featureId, name, cb, success, fail) {
- _add(featureId, name, cb, success, fail, false);
- },
-
- once: function (featureId, name, cb, success, fail) {
- _add(featureId, name, cb, success, fail, true);
- },
-
- isOn: function (name) {
- return !!_handlers[name];
- },
-
- remove: function (featureId, name, cb, success, fail) {
- if (featureId && name && typeof cb === "function") {
- if (_handlers.hasOwnProperty(name)) {
- _handlers[name] = _handlers[name].filter(function (element, index, array) {
- return element.func !== cb || element.once;
- });
-
- if (_handlers[name].length === 0) {
- delete _handlers[name];
- window.webworks.exec(success, fail, featureId, "remove", {"eventName": name});
- }
- }
- }
- },
-
- trigger: function (name, args) {
- var parsedArgs;
- if (_handlers.hasOwnProperty(name)) {
- if (args && args !== "undefined") {
- parsedArgs = JSON.parse(args);
- }
- //Call the handlers
- _handlers[name].forEach(function (handler) {
- if (handler) {
- handler.func(parsedArgs);
- }
- });
- //Remove the once listeners
- _handlers[name] = _handlers[name].filter(function (handler) {
- return !handler.once;
- });
- //Clean up the array if it is empty
- if (_handlers[name].length === 0) {
- delete _handlers[name];
- //No need to call remove since this would only be for callbacks
- }
- }
- }
-};
-
-});
-
-define('lib/utils', function (require, exports, module) {
-/*
- * Copyright 2012 Research In Motion Limited.
- *
- * 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.
- */
-
-var self,
- exception = require('./exception');
-
-self = module.exports = {
- validateNumberOfArguments: function (lowerBound, upperBound, numberOfArguments, customExceptionType, customExceptionMessage, customExceptionObject) {
-
- customExceptionMessage = customExceptionMessage || "";
-
- if (arguments.length < 3 || arguments.length > 6) {
- exception.raise(exception.types.Argument, "Wrong number of arguments when calling: validateNumberOfArguments()");
- }
-
- if (isNaN(lowerBound) && isNaN(upperBound) && isNaN(numberOfArguments)) {
- exception.raise(exception.types.ArgumentType, "(validateNumberOfArguments) Arguments are not numbers");
- }
-
- lowerBound = parseInt(lowerBound, 10);
- upperBound = parseInt(upperBound, 10);
- numberOfArguments = parseInt(numberOfArguments, 10);
-
- if (numberOfArguments < lowerBound || numberOfArguments > upperBound) {
- exception.raise((customExceptionType || exception.types.ArgumentLength), (customExceptionMessage + "\n\nWrong number of arguments"), customExceptionObject);
- }
-
- },
-
- validateArgumentType: function (arg, argType, customExceptionType, customExceptionMessage, customExceptionObject) {
- var invalidArg = false,
- msg;
-
- switch (argType) {
- case "array":
- if (!arg instanceof Array) {
- invalidArg = true;
- }
- break;
- case "date":
- if (!arg instanceof Date) {
- invalidArg = true;
- }
- break;
- case "integer":
- if (typeof arg === "number") {
- if (arg !== Math.floor(arg)) {
- invalidArg = true;
- }
- }
- else {
- invalidArg = true;
- }
- break;
- default:
- if (typeof arg !== argType) {
- invalidArg = true;
- }
- break;
- }
-
- if (invalidArg) {
- msg = customExceptionMessage + ("\n\nInvalid Argument type. argument: " + arg + " ==> was expected to be of type: " + argType);
- exception.raise((customExceptionType || exception.types.ArgumentType), msg, customExceptionObject);
- }
- },
-
- validateMultipleArgumentTypes: function (argArray, argTypeArray, customExceptionType, customExceptionMessage, customExceptionObject) {
- for (var i = 0; i < argArray.length; i++) {
- this.validateArgumentType(argArray[i], argTypeArray[i], customExceptionType, customExceptionMessage, customExceptionObject);
- }
- },
-
- arrayContains: function (array, obj) {
- var i = array.length;
- while (i--) {
- if (array[i] === obj) {
- return true;
- }
- }
- return false;
- },
-
- some: function (obj, predicate, scope) {
- if (obj instanceof Array) {
- return obj.some(predicate, scope);
- }
- else {
- var values = self.map(obj, predicate, scope);
-
- return self.reduce(values, function (some, value) {
- return value ? value : some;
- }, false);
- }
- },
-
- count: function (obj) {
- return self.sum(obj, function (total) {
- return 1;
- });
- },
-
- sum: function (obj, selector, scope) {
- var values = self.map(obj, selector, scope);
- return self.reduce(values, function (total, value) {
- return total + value;
- });
- },
-
- max: function (obj, selector, scope) {
- var values = self.map(obj, selector, scope);
- return self.reduce(values, function (max, value) {
- return max < value ? value : max;
- }, Number.MIN_VALUE);
- },
-
- min: function (obj, selector, scope) {
- var values = self.map(obj, selector, scope);
- return self.reduce(values, function (min, value) {
- return min > value ? value : min;
- }, Number.MAX_VALUE);
- },
-
- forEach: function (obj, action, scope) {
- if (obj instanceof Array) {
- return obj.forEach(action, scope);
- }
- else {
- self.map(obj, action, scope);
- }
- },
-
- filter: function (obj, predicate, scope) {
- if (obj instanceof Array) {
- return obj.filter(predicate, scope);
- }
- else {
- var result = [];
- self.forEach(obj, function (value, index) {
- if (predicate.apply(scope, [value, index])) {
- result.push(value);
- }
-
- }, scope);
-
- return result;
- }
- },
-
- reduce: function (obj, func, init, scope) {
- var i,
- initial = init === undefined ? 0 : init,
- result = initial;
-
-
- if (obj instanceof Array) {
- return obj.reduce(func, initial);
- }
- else if (obj instanceof NamedNodeMap) {
- for (i = 0; i < obj.length; i++) {
- result = func.apply(scope, [result, obj[i], i]);
- }
- }
- else {
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- result = func.apply(scope, [result, obj[i], i]);
- }
- }
- }
-
- return result;
-
- },
-
- map: function (obj, func, scope) {
- var i,
- returnVal = null,
- result = [];
-
- if (obj instanceof Array) {
- return obj.map(func, scope);
- }
- else if (obj instanceof NamedNodeMap) {
- for (i = 0; i < obj.length; i++) {
- returnVal = func.apply(scope, [obj[i], i]);
- result.push(returnVal);
- }
- }
- else {
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- returnVal = func.apply(scope, [obj[i], i]);
- result.push(returnVal);
- }
- }
- }
-
- return result;
- },
-
- regexSanitize: function (regexString) {
- return regexString.replace("^", "\\^")
- .replace("$", "\\$")
- .replace("(", "\\(")
- .replace(")", "\\)")
- .replace("<", "\\<")
- .replace("[", "\\[")
- .replace("{", "\\{")
- .replace(/\\/, "\\\\")
- .replace("|", "\\|")
- .replace(">", "\\>")
- .replace(".", "\\.")
- .replace("*", "\\*")
- .replace("+", "\\+")
- .replace("?", "\\?");
- },
-
- find: function (comparison, collection, startInx, endInx, callback) {
- var results = [],
- compare = function (s, pattern) {
-
- if (typeof(s) !== "string" || pattern === null) {
- return s === pattern;
- }
-
- var regex = pattern.replace(/\./g, "\\.")
- .replace(/\^/g, "\\^")
- .replace(/\*/g, ".*")
- .replace(/\\\.\*/g, "\\*");
-
- regex = "^".concat(regex, "$");
-
- return !!s.match(new RegExp(regex, "i"));
- };
-
- self.forEach(collection, function (c) {
- var match,
- fail = false;
-
- self.forEach(comparison, function (value, key) {
- if (!fail && value !== undefined) {
-
- if (compare(c[key], value)) {
- match = c;
- }
- else {
- fail = true;
- match = null;
- }
- }
- });
-
- if (match) {
- results.push(match);
- }
- });
-
- if (callback) {
- if (startInx === undefined) {
- startInx = 0;
- }
- if (endInx === undefined) {
- endInx = results.length;
- }
- if (startInx === endInx) {
- endInx = startInx + 1;
- }
-
- callback.apply(null, [results.slice(startInx, endInx)]);
- }
- },
-
- mixin: function (mixin, to) {
- Object.getOwnPropertyNames(mixin).forEach(function (prop) {
- if (Object.hasOwnProperty.call(mixin, prop)) {
- Object.defineProperty(to, prop, Object.getOwnPropertyDescriptor(mixin, prop));
- }
- });
- return to;
- },
-
- copy: function (obj) {
- var i,
- newObj = (obj === null ? false : global.toString.call(obj) === "[object Array]") ? [] : {};
-
- if (typeof obj === 'number' ||
- typeof obj === 'string' ||
- typeof obj === 'boolean' ||
- obj === null ||
- obj === undefined) {
- return obj;
- }
-
- if (obj instanceof Date) {
- return new Date(obj);
- }
-
- if (obj instanceof RegExp) {
- return new RegExp(obj);
- }
-
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- if (obj[i] && typeof obj[i] === "object") {
- if (obj[i] instanceof Date) {
- newObj[i] = obj[i];
- }
- else {
- newObj[i] = self.copy(obj[i]);
- }
- }
- else {
- newObj[i] = obj[i];
- }
- }
- }
-
- return newObj;
- },
-
- startsWith : function (str, substr) {
- return str.indexOf(substr) === 0;
- },
-
- endsWith : function (str, substr) {
- return str.indexOf(substr, str.length - substr.length) !== -1;
- },
-
- parseUri : function (str) {
- var i, uri = {},
- key = [ "source", "scheme", "authority", "userInfo", "user", "password", "host", "port", "relative", "path", "directory", "file", "query", "anchor" ],
- matcher = /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(str);
-
- for (i = key.length - 1; i >= 0; i--) {
- uri[key[i]] = matcher[i] || "";
- }
-
- return uri;
- },
-
- // uri - output from parseUri
- isAbsoluteURI : function (uri) {
- if (uri && uri.source) {
- return uri.relative !== uri.source;
- }
-
- return false;
- },
-
- fileNameToImageMIME : function (fileName) {
-
- var extensionsToMIME = {},
- ext;
-
- extensionsToMIME.png = 'image/png';
- extensionsToMIME.jpg = 'image/jpeg';
- extensionsToMIME.jpe = 'image/jpeg';
- extensionsToMIME.jpeg = 'image/jpeg';
- extensionsToMIME.gif = 'image/gif';
- extensionsToMIME.bmp = 'image/bmp';
- extensionsToMIME.bm = 'image/bmp';
- extensionsToMIME.svg = 'image/svg+xml';
- extensionsToMIME.tif = 'image/tiff';
- extensionsToMIME.tiff = 'image/tiff';
-
- ext = fileName.split('.').pop();
- return extensionsToMIME[ext];
- },
-
- isLocalURI : function (uri) {
- return uri && uri.scheme && "local:///".indexOf(uri.scheme.toLowerCase()) !== -1;
- },
-
- isFileURI : function (uri) {
- return uri && uri.scheme && "file://".indexOf(uri.scheme.toLowerCase()) !== -1;
- },
-
- isHttpURI : function (uri) {
- return uri && uri.scheme && "http://".indexOf(uri.scheme.toLowerCase()) !== -1;
- },
-
- isHttpsURI : function (uri) {
- return uri && uri.scheme && "https://".indexOf(uri.scheme.toLowerCase()) !== -1;
- },
-
- // Checks if the specified uri starts with 'data:'
- isDataURI : function (uri) {
- return uri && uri.scheme && "data:".indexOf(uri.scheme.toLowerCase()) !== -1;
- },
-
- performExec : function (featureId, property, args) {
- var result;
-
- window.webworks.exec(function (data, response) {
- result = data;
- }, function (data, response) {
- throw data;
- }, featureId, property, args, true);
-
- return result;
- },
-
- inNode : function () {
- return !!require.resolve;
- },
-
- requireWebview : function () {
- return require("./webview");
- },
- convertDataToBinary : function (data, dataEncoding) {
- var rawData,
- uint8Array,
- i;
-
- if (data) {
- if (dataEncoding.toLowerCase() === "base64") {
- rawData = window.atob(data);
- }
- else {
- rawData = data;
- }
-
- uint8Array = new Uint8Array(new ArrayBuffer(rawData.length));
-
- for (i = 0; i < uint8Array.length; i++) {
- uint8Array[i] = rawData.charCodeAt(i);
- }
-
- return uint8Array.buffer;
- }
- },
- getBlobWithArrayBufferAsData : function (data, dataEncoding) {
- var rawData,
- blobBuilderObj = new window.WebKitBlobBuilder();
- rawData = this.convertDataToBinary(data, dataEncoding);
- blobBuilderObj.append(rawData);
-
- return blobBuilderObj.getBlob("arraybuffer");
- }
-};
-
-});
-
-define('lib/exception', function (require, exports, module) {
-/*
- * Copyright 2012 Research In Motion Limited.
- *
- * 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.
- */
-
-module.exports = {
-
- types: {
- Application: "Application",
- ArgumentLength: "ArgumentLength",
- ArgumentType: "ArgumentType",
- Argument: "Argument",
- NotificationType: "NotificationType",
- NotificationStateType: "NotificationStateType",
- DomObjectNotFound: "DomObjectNotFound",
- MethodNotImplemented: "MethodNotImplemented",
- InvalidState: "InvalidState",
- ApplicationState: "ApplicationState"
- },
-
- handle: function handle(exception, reThrow) {
- reThrow = reThrow || false;
-
- var eMsg = exception.message || "exception caught!",
- msg = eMsg + "\n\n" + (exception.stack || "*no stack provided*") + "\n\n";
-
- console.error(msg);
-
- if (reThrow) {
- throw exception;
- }
- },
-
- raise: function raise(exceptionType, message, customExceptionObject) {
- var obj = customExceptionObject || {
- type: "",
- message: "",
-
- toString: function () {
- var result = this.name + ': "' + this.message + '"';
-
- if (this.stack) {
- result += "\n" + this.stack;
- }
- return result;
- }
- };
-
- message = message || "";
-
- obj.name = exceptionType;
- obj.type = exceptionType;
- // TODO: include the exception objects original message if exists
- obj.message = message;
-
- throw obj;
- }
-};
-
-});
-define('lib/webworks-info', function (require, exports, module) {
-module.exports = {
- hash: "65955a4a246382930a30c0e570183a73",
- version: "1.0.1.5"
-};
-});
-/*
-* Copyright 2010-2012 Research In Motion Limited.
-*
-* 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.
-*/
-(function () {
- var _d = document.addEventListener,
- _webworksReady = false,
- _alreadyFired = false,
- _listenerRegistered = false;
-
- //Only fire the webworks event when both webworks is ready and a listener is registered
- function fireWebworksReadyEvent() {
- if (_listenerRegistered && _webworksReady && !_alreadyFired) {
- _alreadyFired = true;
- var evt = document.createEvent("Events");
- evt.initEvent("webworksready", true, true);
- document.dispatchEvent(evt);
- }
- }
-
- //Trapping when users add listeners to the webworks ready event
- //This way we can make sure not to fire the event before there is a listener
- document.addEventListener = function (event, callback, capture) {
- _d.call(document, event, callback, capture);
- if (event.toLowerCase() === "webworksready") {
- _listenerRegistered = true;
- fireWebworksReadyEvent();
- }
- };
-
-
- function createWebworksReady() {
- function RemoteFunctionCall(functionUri) {
- var paramString = "",
- params = {},
- isPost = false;
-
- function composeUri() {
- return "http://localhost:8472/blackberry/" + functionUri;
- }
-
- function createXhrRequest(uri, isAsync) {
- var request = new XMLHttpRequest(),
- paramCount = 1,
- param;
-
- for (param in params) {
- if (params.hasOwnProperty(param)) {
- paramString += param + "=" + params[param] + "&";
- paramCount++;
- }
- }
-
- paramString = paramString.replace(/\&$/, "");
-
- if (!isPost && paramString) {
- uri += "?" + paramString;
- }
-
- // TODO: make get/post
- request.open("GET", uri, isAsync);
- request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
-
- return request;
- }
-
- this.addParam = function (name, value) {
- params[name] = encodeURIComponent(JSON.stringify(value));
- };
-
- this.makeSyncCall = function (success, error) {
- var requestUri = composeUri(),
- request = createXhrRequest(requestUri, false),
- response,
- errored,
- cb,
- data;
-
- request.send(isPost ? paramString : null);
-
- response = JSON.parse(request.responseText || "null");
- errored = response.code < 0;
- cb = errored ? error : success;
- data = errored ? response.msg : response.data;
-
- if (cb) {
- cb(data, response);
- }
- else if (errored) {
- throw data;
- }
-
- return data;
- };
-
- this.makeAsyncCall = function (success, error) {
- var requestUri = composeUri(),
- request = createXhrRequest(requestUri, true);
-
- request.onreadystatechange = function () {
- if (request.readyState === 4 && request.status === 200) {
- var response = JSON.parse(request.responseText || "null"),
- cb = response.code < 0 ? error : success,
- data = response.code < 0 ? response.msg : response.data;
-
- return cb && cb(data, response);
- }
- };
-
- request.send(isPost ? paramString : null);
- };
- }
-
- var builder,
- wwInfo = require('lib/webworks-info'),
- request,
- resp,
- execFunc;
-
- //For users who wish to have a single source project across BB7 -> PB -> BB10 they will need to use webworks.js
- //To aid in this, we will fire the webworksready event on these platforms as well
- //If blackberry object already exists then we are in an older version of webworks
- if (window.blackberry) {
- _webworksReady = true;
- fireWebworksReadyEvent();
- return;
- }
-
- // Build out the blackberry namespace based on the APIs desired in the config.xml
- builder = require('builder');
-
- request = new XMLHttpRequest();
- request.open("GET", "http://localhost:8472/blackberry/extensions/get/?hash=" + wwInfo.hash + "&version=" + wwInfo.version, true);
-
- request.onreadystatechange = function () {
- if (request.readyState === 4) {
- if (request.status === 412) {
- //Application Webworks.js does not match framework, display error to user.
- resp = JSON.parse(request.responseText);
- alert(resp.msg);
- } else if (request.status === 200) {
- resp = JSON.parse(request.responseText);
- builder.build(resp.data).into(window);
- //At this point all of the APIs should be built into the window object
- //Fire the webworks ready event
- _webworksReady = true;
- fireWebworksReadyEvent();
- }
- }
- };
- request.send(null);
-
- execFunc = function (success, fail, service, action, args, sync) {
- var uri = service + "/" + action,
- request = new RemoteFunctionCall(uri),
- name;
-
- for (name in args) {
- if (Object.hasOwnProperty.call(args, name)) {
- request.addParam(name, args[name]);
- }
- }
-
- request[sync ? "makeSyncCall" : "makeAsyncCall"](success, fail);
- };
-
- window.webworks = {
- exec: execFunc,
- execSync: function (service, action, args) {
- var result;
-
- execFunc(function (data, response) {
- result = data;
- }, function (data, response) {
- throw data;
- }, service, action, args, true);
-
- return result;
- },
- execAsync: function (service, action, args) {
- var result;
-
- execFunc(function (data, response) {
- result = data;
- }, function (data, response) {
- throw data;
- }, service, action, args, false);
-
- return result;
- },
- successCallback: function (id, args) {
- //HACK: this will live later
- throw "not implemented";
- },
- errorCallback: function (id, args) {
- //HACK: this will live later
- throw "not implemented";
- },
- defineReadOnlyField: function (obj, field, value) {
- Object.defineProperty(obj, field, {
- "value": value,
- "writable": false
- });
- },
- event: require("event")
- };
- }
- //Only start building window.webworks once the DOMContent is loaded
- document.addEventListener('DOMContentLoaded', createWebworksReady, false);
- //If the DOM Content has already been loaded then create window.webworks immediately
- if (document.readyState === 'complete') {
- createWebworksReady();
- }
-}());
-
-
-}());
View
1,387 invoke/invokable/webworks-1.0.1.5.js
@@ -1,1387 +0,0 @@
-/*
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- 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.
-
--------------------------------------------------------
-Copyright 2011 Research In Motion Limited.
-
-Contributors:
- Brent Lintner (blintner@rim.com)
- Dan Silivestru (dsilivestru@rim.com)
- Gord Tanner (gtanner@rim.com)
- Nino D'Aversa (ndaversa@rim.com)
- Nukul Bhasin (nbhasin@rim.com)
-
--------------------------------------------------------
---> Kudos to third party awesomeness:
-
-* jWorkflow *
-
-http://github.com/tinyhippos/jWorkflow/
-
-The MIT License
-http://www.opensource.org/licenses/mit-license.php
-Copyright (c) 2010 all contributors:
-Gord Tanner
-
--------------------------------------------------------
-* Math.uuid.js (v1.4) *
-
-http://www.broofa.com
-mailto:robert@broofa.com
-
-Copyright (c) 2010 Robert Kieffer
-Dual licensed under the MIT and GPL licenses.
-
--------------------------------------------------------
-
-
-*/
-(function () {
-var define,
- require;
-
-(function () {
- var unpreparedModules = {},
- readyModules = {};
-
-
- function normalizeName(originalName, baseName) {
- var nameParts,
- name = originalName.slice(0);
- //remove ^local:// (if it exists) and .js$
- //This will not work for local:// without a trailing js
- name = name.replace(/(?:^local:\/\/)?(.+?)(?:\.js$)/, "$1");
- if (name.charAt(0) === '.' && baseName) {
- //Split the baseName and remove the final part (the module name)
- nameParts = baseName.split('/');
- nameParts.pop();
- nameParts = nameParts.concat(name.split('/'));
-
- name = nameParts.reduce(function (previous, current, index, array) {
- var returnValue,
- slashIndex;
-
- //If previous is a dot, ignore it
- //If previous is ever just .. we're screwed anyway
- if (previous !== '.') {
- returnValue = previous;
- }
-
- //If we have a .. then remove a chunk of previous
- if (current === "..") {
- slashIndex = previous.lastIndexOf('/');
- //If there's no slash we're either screwed or we remove the final token
- if (slashIndex !== -1) {
- returnValue = previous.slice(0, previous.lastIndexOf('/'));
- } else {
- returnValue = "";
- }
- } else if (current !== '.') {
- //Otherwise simply append anything not a .
- //Only append a slash if we're not empty
- if (returnValue.length) {
- returnValue += "/";
- }
- returnValue += current;
- }
-
- return returnValue;
- });
-
- }
- return name;
- }
-
- function buildModule(name, dependencies, factory) {
- var module = {exports: {}},
- localRequire = function (moduleName) {
- return require(moduleName, name);
- },
- args = [];
-
- dependencies.forEach(function (dependency) {
- if (dependency === 'require') {
- args.push(localRequire);
- } else if (dependency === 'exports') {
- args.push(module.exports);
- } else if (dependency === 'module') {
- args.push(module);
- } else {
- //This is because jshint cannot handle out of order functions
- /*global loadModule:false */
- args.push(loadModule(dependency));
- /*global loadModule:true */
- }
- });
-
- //No need to process dependencies, webworks only has require, exports, module
- factory.apply(this, args);
-
- //For full AMD we would need logic to also check the return value
- return module.exports;
-
- }
-
- function loadModule(name, baseName) {
- var normalizedName = normalizeName(name, baseName),
- url,
- xhr,
- evalString;
- //Always check undefined first, this allows the user to redefine modules
- //(Not used in WebWorks, although it is used in our unit tests)
- if (unpreparedModules[normalizedName]) {
- readyModules[normalizedName] = buildModule(normalizedName, unpreparedModules[normalizedName].dependencies, unpreparedModules[normalizedName].factory);
- delete unpreparedModules[normalizedName];
- }
-
- //If the module does not exist, load the module from external source
- //Webworks currently only loads APIs from across bridge
- if (!readyModules[normalizedName]) {
- //If the module to be loaded ends in .js then we will define it
- //Also if baseName exists than we have a local require situation
- if (/\.js$/.test(name) || baseName) {
- xhr = new XMLHttpRequest();
- url = name;
- //If the module to be loaded starts with local:// go over the bridge
- //Else If the module to be loaded is a relative load it may not have .js extension which is needed
- if (/^local:\/\//.test(name)) {
- url = "http://localhost:8472/blackberry/extensions/load/" + normalizedName.replace(/(?:^ext\/)(.+)(?:\/client$)/, "$1");
- } else if (baseName) {
- url = normalizedName;
- if (!/\.js$/.test(url)) {
- url += ".js";
- }
- }
- xhr.open("GET", url, false);
- xhr.send(null);
- try {
- //Trimming responseText to remove EOF chars
- evalString = 'define("' + normalizedName + '", function (require, exports, module) {' + xhr.responseText.replace(/^\s+|\s+$/g, '') + '});';
- /*jshint evil:true */
- eval(evalString);
- /*jshint evil:false */
- } catch (err) {
- err.message += ' in ' + url;
- throw err;
- }
-
- if (unpreparedModules[normalizedName]) {
- readyModules[normalizedName] = buildModule(normalizedName, unpreparedModules[normalizedName].dependencies, unpreparedModules[normalizedName].factory);
- delete unpreparedModules[normalizedName];
- }
- } else {
- throw "module " + name + " cannot be found";
- }
-
- }
-
- return readyModules[normalizedName];
-
- }
-
- //Use the AMD signature incase we ever want to change.
- //For now we will only be using (name, baseName)
- require = function (dependencies, callback) {
- if (typeof dependencies === "string") {
- //dependencies is the module name and callback is the relName
- //relName is not part of the AMDJS spec, but we use it from localRequire
- return loadModule(dependencies, callback);
- } else if (Array.isArray(dependencies) && typeof callback === 'function') {
- //Call it Asynchronously
- setTimeout(function () {
- buildModule(undefined, dependencies, callback);
- }, 0);
- }
- };
-
-
- //Use the AMD signature incase we ever want to change.
- //For now webworks will only be using (name, factory) signature.
- define = function (name, dependencies, factory) {
- if (typeof name === "string" && typeof dependencies === 'function') {
- factory = dependencies;
- dependencies = ['require', 'exports', 'module'];
- }
-
- //According to the AMDJS spec we should parse out the require statments
- //from factory.toString and add those to the list of dependencies
-
- //Normalize the name. Remove local:// and .js
- name = normalizeName(name);
- unpreparedModules[name] = {
- dependencies: dependencies,
- factory: factory
- };
- };
-}());
-
-//Export for use in node for unit tests
-if (typeof module === "object" && typeof require === "function") {
- module.exports = {
- require: require,
- define: define
- };
-}
-
-define('builder', function (require, exports, module) {
-/*
- * Copyright 2010-2011 Research In Motion Limited.
- *
- * 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.
- */
-
-function requireLocal(id) {
- return require(!!require.resolve ? "../../" + id.replace(/local:\/\//, "").replace(/\.js$/, "") : id);
-}
-
-function buildNamespace(currentNamespace, namespaceParts, featureProperties) {
- var featureId,
- nextPart,
- utils = requireLocal("local://lib/utils.js");
-
- if (namespaceParts.length === 1) {
- //base case, feature properties go here
- featureId = namespaceParts[0];
- if (currentNamespace[featureId] === undefined) {
- currentNamespace[featureId] = {};
- }
-
- currentNamespace = utils.mixin(featureProperties, currentNamespace[featureId]);
- return currentNamespace;
- }
- else {
- nextPart = namespaceParts.shift();
- if (currentNamespace[nextPart] === undefined) {
- currentNamespace[nextPart] = {};
- }
-
- return buildNamespace(currentNamespace[nextPart], namespaceParts, featureProperties);
- }
-}
-
-function include(parent, featureIdList) {
- var featureId,
- featureProperties,
- localUrl,
- i;
-
- for (i = 0; i < featureIdList.length; i++) {
- featureId = featureIdList[i];
-
- localUrl = "local://ext/" + featureId + "/client.js";
- featureProperties = requireLocal(localUrl);
-
- buildNamespace(parent, featureId.split("."), featureProperties);
- }
-}
-
-var _self = {
- build: function (featureIdList) {
- return {
- into: function (target) {
- include(target, featureIdList);
- }
- };
- }
-};
-
-module.exports = _self;
-
-});
-
-define('window', function (require, exports, module) {
-/*
- * Copyright 2010-2011 Research In Motion Limited.
- *
- * 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.
- */
-
-// HACK have to live with differentiating node from browser for now
-module.exports = {
- "window": function () {
- return !!require.resolve ? null : window;
- }
-};
-});
-
-define('event', function (require, exports, module) {
-/*
-* Copyright 2010-2011 Research In Motion Limited.
-*
-* 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.
-*/
-
-var _handlers = {};
-
-function _add(featureId, name, cb, success, fail, once) {
- var handler;
- if (featureId && name && typeof cb === "function") {
- handler = {
- func: cb,
- once: !!once
- };
- //If this is the first time we are adding a cb
- if (!_handlers.hasOwnProperty(name)) {
- _handlers[name] = [handler];
- //Do not call exec for once because its not necessary
- if (!once) {
- window.webworks.exec(success, fail, featureId, "add", {"eventName": name});
- }
- } else if (_handlers[name].some(function (element, index, array) {
- return element.func !== cb;
- })) {
- //Only add unique callbacks
- _handlers[name].push(handler);
- }
- }
-}
-
-module.exports = {
- add: function (featureId, name, cb, success, fail) {
- _add(featureId, name, cb, success, fail, false);
- },
-
- once: function (featureId, name, cb, success, fail) {
- _add(featureId, name, cb, success, fail, true);
- },
-
- isOn: function (name) {
- return !!_handlers[name];
- },
-
- remove: function (featureId, name, cb, success, fail) {
- if (featureId && name && typeof cb === "function") {
- if (_handlers.hasOwnProperty(name)) {
- _handlers[name] = _handlers[name].filter(function (element, index, array) {
- return element.func !== cb || element.once;
- });
-
- if (_handlers[name].length === 0) {
- delete _handlers[name];
- window.webworks.exec(success, fail, featureId, "remove", {"eventName": name});
- }
- }
- }
- },
-
- trigger: function (name, args) {
- var parsedArgs;
- if (_handlers.hasOwnProperty(name)) {
- if (args && args !== "undefined") {
- parsedArgs = JSON.parse(args);
- }
- //Call the handlers
- _handlers[name].forEach(function (handler) {
- if (handler) {
- handler.func(parsedArgs);
- }
- });
- //Remove the once listeners
- _handlers[name] = _handlers[name].filter(function (handler) {
- return !handler.once;
- });
- //Clean up the array if it is empty
- if (_handlers[name].length === 0) {
- delete _handlers[name];
- //No need to call remove since this would only be for callbacks
- }
- }
- }
-};
-
-});
-
-define('lib/utils', function (require, exports, module) {
-/*
- * Copyright 2012 Research In Motion Limited.
- *
- * 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.
- */
-
-var self,
- exception = require('./exception');
-
-self = module.exports = {
- validateNumberOfArguments: function (lowerBound, upperBound, numberOfArguments, customExceptionType, customExceptionMessage, customExceptionObject) {
-
- customExceptionMessage = customExceptionMessage || "";
-
- if (arguments.length < 3 || arguments.length > 6) {
- exception.raise(exception.types.Argument, "Wrong number of arguments when calling: validateNumberOfArguments()");
- }
-
- if (isNaN(lowerBound) && isNaN(upperBound) && isNaN(numberOfArguments)) {
- exception.raise(exception.types.ArgumentType, "(validateNumberOfArguments) Arguments are not numbers");
- }
-
- lowerBound = parseInt(lowerBound, 10);
- upperBound = parseInt(upperBound, 10);
- numberOfArguments = parseInt(numberOfArguments, 10);
-
- if (numberOfArguments < lowerBound || numberOfArguments > upperBound) {
- exception.raise((customExceptionType || exception.types.ArgumentLength), (customExceptionMessage + "\n\nWrong number of arguments"), customExceptionObject);
- }
-
- },
-
- validateArgumentType: function (arg, argType, customExceptionType, customExceptionMessage, customExceptionObject) {
- var invalidArg = false,
- msg;
-
- switch (argType) {
- case "array":
- if (!arg instanceof Array) {
- invalidArg = true;
- }
- break;
- case "date":
- if (!arg instanceof Date) {
- invalidArg = true;
- }
- break;
- case "integer":
- if (typeof arg === "number") {
- if (arg !== Math.floor(arg)) {
- invalidArg = true;
- }
- }
- else {
- invalidArg = true;
- }
- break;
- default:
- if (typeof arg !== argType) {
- invalidArg = true;
- }
- break;
- }
-
- if (invalidArg) {
- msg = customExceptionMessage + ("\n\nInvalid Argument type. argument: " + arg + " ==> was expected to be of type: " + argType);
- exception.raise((customExceptionType || exception.types.ArgumentType), msg, customExceptionObject);
- }
- },
-
- validateMultipleArgumentTypes: function (argArray, argTypeArray, customExceptionType, customExceptionMessage, customExceptionObject) {
- for (var i = 0; i < argArray.length; i++) {
- this.validateArgumentType(argArray[i], argTypeArray[i], customExceptionType, customExceptionMessage, customExceptionObject);
- }
- },
-
- arrayContains: function (array, obj) {
- var i = array.length;
- while (i--) {
- if (array[i] === obj) {
- return true;
- }
- }
- return false;
- },
-
- some: function (obj, predicate, scope) {
- if (obj instanceof Array) {
- return obj.some(predicate, scope);
- }
- else {
- var values = self.map(obj, predicate, scope);
-
- return self.reduce(values, function (some, value) {
- return value ? value : some;
- }, false);
- }
- },
-
- count: function (obj) {
- return self.sum(obj, function (total) {
- return 1;
- });
- },
-
- sum: function (obj, selector, scope) {
- var values = self.map(obj, selector, scope);
- return self.reduce(values, function (total, value) {
- return total + value;
- });
- },
-
- max: function (obj, selector, scope) {
- var values = self.map(obj, selector, scope);
- return self.reduce(values, function (max, value) {
- return max < value ? value : max;
- }, Number.MIN_VALUE);
- },
-
- min: function (obj, selector, scope) {
- var values = self.map(obj, selector, scope);
- return self.reduce(values, function (min, value) {
- return min > value ? value : min;
- }, Number.MAX_VALUE);
- },
-
- forEach: function (obj, action, scope) {
- if (obj instanceof Array) {
- return obj.forEach(action, scope);
- }
- else {
- self.map(obj, action, scope);
- }
- },
-
- filter: function (obj, predicate, scope) {
- if (obj instanceof Array) {
- return obj.filter(predicate, scope);
- }
- else {
- var result = [];
- self.forEach(obj, function (value, index) {
- if (predicate.apply(scope, [value, index])) {
- result.push(value);
- }
-
- }, scope);
-
- return result;
- }
- },
-
- reduce: function (obj, func, init, scope) {
- var i,
- initial = init === undefined ? 0 : init,
- result = initial;
-
-
- if (obj instanceof Array) {
- return obj.reduce(func, initial);
- }
- else if (obj instanceof NamedNodeMap) {
- for (i = 0; i < obj.length; i++) {
- result = func.apply(scope, [result, obj[i], i]);
- }
- }
- else {
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- result = func.apply(scope, [result, obj[i], i]);
- }
- }
- }
-
- return result;
-
- },
-
- map: function (obj, func, scope) {
- var i,
- returnVal = null,
- result = [];
-
- if (obj instanceof Array) {
- return obj.map(func, scope);
- }
- else if (obj instanceof NamedNodeMap) {
- for (i = 0; i < obj.length; i++) {
- returnVal = func.apply(scope, [obj[i], i]);
- result.push(returnVal);
- }
- }
- else {
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- returnVal = func.apply(scope, [obj[i], i]);
- result.push(returnVal);
- }
- }
- }
-
- return result;
- },
-
- regexSanitize: function (regexString) {
- return regexString.replace("^", "\\^")
- .replace("$", "\\$")
- .replace("(", "\\(")
- .replace(")", "\\)")
- .replace("<", "\\<")
- .replace("[", "\\[")
- .replace("{", "\\{")
- .replace(/\\/, "\\\\")
- .replace("|", "\\|")
- .replace(">", "\\>")
- .replace(".", "\\.")
- .replace("*", "\\*")
- .replace("+", "\\+")
- .replace("?", "\\?");
- },
-
- find: function (comparison, collection, startInx, endInx, callback) {
- var results = [],
- compare = function (s, pattern) {
-
- if (typeof(s) !== "string" || pattern === null) {
- return s === pattern;
- }
-
- var regex = pattern.replace(/\./g, "\\.")
- .replace(/\^/g, "\\^")
- .replace(/\*/g, ".*")
- .replace(/\\\.\*/g, "\\*");
-
- regex = "^".concat(regex, "$");
-
- return !!s.match(new RegExp(regex, "i"));
- };
-
- self.forEach(collection, function (c) {
- var match,
- fail = false;
-
- self.forEach(comparison, function (value, key) {
- if (!fail && value !== undefined) {
-
- if (compare(c[key], value)) {
- match = c;
- }
- else {
- fail = true;
- match = null;
- }
- }
- });
-
- if (match) {
- results.push(match);
- }
- });
-
- if (callback) {
- if (startInx === undefined) {
- startInx = 0;
- }
- if (endInx === undefined) {
- endInx = results.length;
- }
- if (startInx === endInx) {
- endInx = startInx + 1;
- }
-
- callback.apply(null, [results.slice(startInx, endInx)]);
- }
- },
-
- mixin: function (mixin, to) {
- Object.getOwnPropertyNames(mixin).forEach(function (prop) {
- if (Object.hasOwnProperty.call(mixin, prop)) {
- Object.defineProperty(to, prop, Object.getOwnPropertyDescriptor(mixin, prop));
- }
- });
- return to;
- },
-
- copy: function (obj) {
- var i,
- newObj = (obj === null ? false : global.toString.call(obj) === "[object Array]") ? [] : {};
-
- if (typeof obj === 'number' ||
- typeof obj === 'string' ||
- typeof obj === 'boolean' ||
- obj === null ||
- obj === undefined) {
- return obj;
- }
-
- if (obj instanceof Date) {
- return new Date(obj);
- }
-
- if (obj instanceof RegExp) {
- return new RegExp(obj);
- }
-
- for (i in obj) {
- if (obj.hasOwnProperty(i)) {
- if (obj[i] && typeof obj[i] === "object") {
- if (obj[i] instanceof Date) {
- newObj[i] = obj[i];
- }
- else {
- newObj[i] = self.copy(obj[i]);
- }
- }
- else {
- newObj[i] = obj[i];
- }
- }
- }
-
- return newObj;
- },
-
- startsWith : function (str, substr) {
- return str.indexOf(substr) === 0;
- },
-
- endsWith : function (str, substr) {
- return str.indexOf(substr, str.length - substr.length) !== -1;
- },
-
- parseUri : function (str) {
- var i, uri = {},
- key = [ "source", "scheme", "authority", "userInfo", "user", "password", "host", "port", "relative", "path", "directory", "file", "query", "anchor" ],
- matcher = /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(str);
-
- for (i = key.length - 1; i >= 0; i--) {
- uri[key[i]] = matcher[i] || "";
- }
-
- return uri;
- },
-
- // uri - output from parseUri
- isAbsoluteURI : function (uri) {
- if (uri && uri.source) {
- return uri.relative !== uri.source;
- }
-
- return false;
- },
-
- fileNameToImageMIME : function (fileName) {
-
- var extensionsToMIME = {},
- ext;
-
- extensionsToMIME.png = 'image/png';
- extensionsToMIME.jpg = 'image/jpeg';
- extensionsToMIME.jpe = 'image/jpeg';
- extensionsToMIME.jpeg = 'image/jpeg';
- extensionsToMIME.gif = 'image/gif';
- extensionsToMIME.bmp = 'image/bmp';
- extensionsToMIME.bm = 'image/bmp';
- extensionsToMIME.svg = 'image/svg+xml';
- extensionsToMIME.tif = 'image/tiff';
- extensionsToMIME.tiff = 'image/tiff';
-
- ext = fileName.split('.').pop();
- return extensionsToMIME[ext];
- },
-
- isLocalURI : function (uri) {
- return uri && uri.scheme && "local:///".indexOf(uri.scheme.toLowerCase()) !== -1;
- },
-
- isFileURI : function (uri) {
- return uri && uri.scheme && "file://".indexOf(uri.scheme.toLowerCase()) !== -1;
- },
-
- isHttpURI : function (uri) {
- return uri && uri.scheme && "http://".indexOf(uri.scheme.toLowerCase()) !== -1;
- },
-
- isHttpsURI : function (uri) {
- return uri && uri.scheme && "https://".indexOf(uri.scheme.toLowerCase()) !== -1;
- },
-
- // Checks if the specified uri starts with 'data:'
- isDataURI : function (uri) {
- return uri && uri.scheme && "data:".indexOf(uri.scheme.toLowerCase()) !== -1;
- },
-
- performExec : function (featureId, property, args) {
- var result;
-
- window.webworks.exec(function (data, response) {
- result = data;
- }, function (data, response) {
- throw data;
- }, featureId, property, args, true);
-
- return result;
- },
-
- inNode : function () {
- return !!require.resolve;
- },
-
- requireWebview : function () {
- return require("./webview");
- },
- convertDataToBinary : function (data, dataEncoding) {
- var rawData,
- uint8Array,
- i;
-
- if (data) {
- if (dataEncoding.toLowerCase() === "base64") {
- rawData = window.atob(data);
- }
- else {
- rawData = data;
- }
-
- uint8Array = new Uint8Array(new ArrayBuffer(rawData.length));
-
- for (i = 0; i < uint8Array.length; i++) {
- uint8Array[i] = rawData.charCodeAt(i);
- }
-
- return uint8Array.buffer;
- }
- },
- getBlobWithArrayBufferAsData : function (data, dataEncoding) {
- var rawData,
- blobBuilderObj = new window.WebKitBlobBuilder();
- rawData = this.convertDataToBinary(data, dataEncoding);
- blobBuilderObj.append(rawData);
-
- return blobBuilderObj.getBlob("arraybuffer");
- }
-};
-
-});
-
-define('lib/exception', function (require, exports, module) {
-/*
- * Copyright 2012 Research In Motion Limited.
- *
- * 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.
- */
-
-module.exports = {
-
- types: {
- Application: "Application",
- ArgumentLength: "ArgumentLength",
- ArgumentType: "ArgumentType",
- Argument: "Argument",
- NotificationType: "NotificationType",
- NotificationStateType: "NotificationStateType",
- DomObjectNotFound: "DomObjectNotFound",
- MethodNotImplemented: "MethodNotImplemented",
- InvalidState: "InvalidState",
- ApplicationState: "ApplicationState"
- },
-
- handle: function handle(exception, reThrow) {
- reThrow = reThrow || false;
-
- var eMsg = exception.message || "exception caught!",
- msg = eMsg + "\n\n" + (exception.stack || "*no stack provided*") + "\n\n";
-
- console.error(msg);
-
- if (reThrow) {
- throw exception;
- }
- },
-
- raise: function raise(exceptionType, message, customExceptionObject) {
- var obj = customExceptionObject || {
- type: "",
- message: "",
-
- toString: function () {
- var result = this.name + ': "' + this.message + '"';
-
- if (this.stack) {
- result += "\n" + this.stack;
- }
- return result;
- }
- };
-
- message = message || "";
-
- obj.name = exceptionType;
- obj.type = exceptionType;
- // TODO: include the exception objects original message if exists
- obj.message = message;
-
- throw obj;
- }
-};
-
-});
-define('lib/webworks-info', function (require, exports, module) {
-module.exports = {
- hash: "65955a4a246382930a30c0e570183a73",
- version: "1.0.1.5"
-};
-});
-/*
-* Copyright 2010-2012 Research In Motion Limited.
-*
-* 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.
-*/
-(function () {
- var _d = document.addEventListener,
- _webworksReady = false,
- _alreadyFired = false,
- _listenerRegistered = false;
-
- //Only fire the webworks event when both webworks is ready and a listener is registered
- function fireWebworksReadyEvent() {
- if (_listenerRegistered && _webworksReady && !_alreadyFired) {
- _alreadyFired = true;
- var evt = document.createEvent("Events");
- evt.initEvent("webworksready", true, true);
- document.dispatchEvent(evt);
- }
- }
-
- //Trapping when users add listeners to the webworks ready event
- //This way we can make sure not to fire the event before there is a listener
- document.addEventListener = function (event, callback, capture) {
- _d.call(document, event, callback, capture);
- if (event.toLowerCase() === "webworksready") {
- _listenerRegistered = true;
- fireWebworksReadyEvent();
- }
- };
-
-
- function createWebworksReady() {
- function RemoteFunctionCall(functionUri) {
- var paramString = "",
- params = {},
- isPost = false;
-
- function composeUri() {
- return "http://localhost:8472/blackberry/" + functionUri;
- }
-
- function createXhrRequest(uri, isAsync) {
- var request = new XMLHttpRequest(),
- paramCount = 1,
- param;
-
- for (param in params) {
- if (params.hasOwnProperty(param)) {
- paramString += param + "=" + params[param] + "&";
- paramCount++;
- }
- }
-
- paramString = paramString.replace(/\&$/, "");
-
- if (!isPost && paramString) {
- uri += "?" + paramString;
- }
-
- // TODO: make get/post
- request.open("GET", uri, isAsync);
- request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
-
- return request;
- }
-
- this.addParam = function (name, value) {
- params[name] = encodeURIComponent(JSON.stringify(value));
- };
-
- this.makeSyncCall = function (success, error) {
- var requestUri = composeUri(),
- request = createXhrRequest(requestUri, false),
- response,
- errored,
- cb,
- data;
-
- request.send(isPost ? paramString : null);
-
- response = JSON.parse(request.responseText || "null");
- errored = response.code < 0;
- cb = errored ? error : success;
- data = errored ? response.msg : response.data;
-
- if (cb) {
- cb(data, response);
- }
- else if (errored) {
- throw data;
- }
-