From 6d8240b90a0257cb6e9fe375080e290423b1a11d Mon Sep 17 00:00:00 2001 From: Mitar Date: Thu, 21 Jan 2016 12:33:00 -0800 Subject: [PATCH 01/14] Files without cache busters should not be set to cacheable. --- packages/webapp/webapp_server.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/webapp/webapp_server.js b/packages/webapp/webapp_server.js index 961e23fafb..396d363ce9 100644 --- a/packages/webapp/webapp_server.js +++ b/packages/webapp/webapp_server.js @@ -503,7 +503,7 @@ var runWebAppServer = function () { // XXX change manifest.json -> program.json staticFiles[path.join(urlPrefix, getItemPathname('/manifest.json'))] = { content: JSON.stringify(program), - cacheable: true, + cacheable: false, hash: program.version, type: "json" }; From 310b96d24de7a04eca0f5a5025425b22dd2f1f16 Mon Sep 17 00:00:00 2001 From: Mitar Date: Thu, 21 Jan 2016 12:55:32 -0800 Subject: [PATCH 02/14] Allow HTTP OPTIONS method to correclty support CORS preflight. --- packages/webapp/webapp_server.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/webapp/webapp_server.js b/packages/webapp/webapp_server.js index 961e23fafb..772529c77d 100644 --- a/packages/webapp/webapp_server.js +++ b/packages/webapp/webapp_server.js @@ -323,7 +323,7 @@ var staticFiles; // Serve static files from the manifest or added with // `addStaticJs`. Exported for tests. WebAppInternals.staticFilesMiddleware = function (staticFiles, req, res, next) { - if ('GET' != req.method && 'HEAD' != req.method) { + if ('GET' != req.method && 'HEAD' != req.method && 'OPTIONS' != req.method) { next(); return; } From fa9a896c7e1620b503b7265eba8261cd050141ed Mon Sep 17 00:00:00 2001 From: Mitar Date: Wed, 27 Jan 2016 15:49:29 -0800 Subject: [PATCH 03/14] Fixed manifest.json path on Windows. --- packages/webapp/webapp_server.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/webapp/webapp_server.js b/packages/webapp/webapp_server.js index 961e23fafb..e2b312f0b5 100644 --- a/packages/webapp/webapp_server.js +++ b/packages/webapp/webapp_server.js @@ -501,7 +501,7 @@ var runWebAppServer = function () { // Serve the program as a string at /foo//manifest.json // XXX change manifest.json -> program.json - staticFiles[path.join(urlPrefix, getItemPathname('/manifest.json'))] = { + staticFiles[urlPrefix + getItemPathname('/manifest.json')] = { content: JSON.stringify(program), cacheable: true, hash: program.version, From eb897bc91744946390bf38e56f80780a9786b801 Mon Sep 17 00:00:00 2001 From: SEKE Date: Wed, 3 Feb 2016 11:07:26 +0100 Subject: [PATCH 04/14] Make check check inherited properties Add note about check change to history.md --- History.md | 2 ++ packages/check/match.js | 11 ++++++++++- packages/check/match_test.js | 8 ++++++++ packages/check/package.js | 2 +- 4 files changed, 21 insertions(+), 2 deletions(-) diff --git a/History.md b/History.md index 9b12d41a34..0c36d29058 100644 --- a/History.md +++ b/History.md @@ -13,6 +13,8 @@ * Move `DDPRateLimiter` to the server only, since it won't work if it is called from the client. It will now error if referenced from the client at all. +* `check` will now check all keys of an object, including inherited ones #6140 + * Allow `git+` URL schemes for npm dependencies #844 Patches contributed by GitHub users vereed, devgrok, ... diff --git a/packages/check/match.js b/packages/check/match.js index e12451bf32..5b21fcf880 100644 --- a/packages/check/match.js +++ b/packages/check/match.js @@ -325,7 +325,16 @@ var testSubtree = function (value, pattern) { requiredPatterns[key] = subPattern; }); - for (var keys = _.keys(value), i = 0, length = keys.length; i < length; i++) { + //XXX: replace with underscore's _.allKeys if Meteor updates underscore to 1.8+ (or lodash) + var allKeys = function(obj){ + var keys = []; + if (_.isObject(obj)){ + for (var key in obj) keys.push(key); + } + return keys; + } + + for (var keys = allKeys(value), i = 0, length = keys.length; i < length; i++) { var key = keys[i]; var subValue = value[key]; if (_.has(requiredPatterns, key)) { diff --git a/packages/check/match_test.js b/packages/check/match_test.js index 0328ca1572..5aed1dbd44 100644 --- a/packages/check/match_test.js +++ b/packages/check/match_test.js @@ -161,6 +161,14 @@ Tinytest.add("check - check", function (test) { fails(function () {}, Match.Integer); fails(new Date, Match.Integer); + + // Test objects that have a prototype + var parentObj = {foo:"bar"}; + var childObj = Object.assign(Object.create(parentObj),{bar:"foo"}); + matches(childObj,{foo:String,bar:String}); + fails(childObj,{bar:String}); + + // Test that "arguments" is treated like an array. var argumentsMatches = function () { matches(arguments, [Number]); diff --git a/packages/check/package.js b/packages/check/package.js index 881c08d6fe..1293324a39 100644 --- a/packages/check/package.js +++ b/packages/check/package.js @@ -12,7 +12,7 @@ Package.onUse(function (api) { }); Package.onTest(function (api) { - api.use(['check', 'tinytest', 'underscore', 'ejson'], ['client', 'server']); + api.use(['check', 'tinytest', 'underscore', 'ejson', 'ecmascript'], ['client', 'server']); api.addFiles('match_test.js', ['client', 'server']); }); From f094c9608b2da33718703352fdd1bd288c59d830 Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Fri, 5 Feb 2016 00:09:40 -0500 Subject: [PATCH 05/14] Reserve dev bundle version for not yet released Meteor 1.3. --- meteor | 1 + 1 file changed, 1 insertion(+) diff --git a/meteor b/meteor index ab1433e955..83b892a039 100755 --- a/meteor +++ b/meteor @@ -3,6 +3,7 @@ # Note: 0.5.17 used on branch origin/npm3 # Note: 0.5.20 used on branch origin/cordova-improvements # Note: 0.5.21 used on branch release-1.2.2 +# Note: 0.5.23 used on branch release-1.3 BUNDLE_VERSION=0.5.18 # OS Check. Put here because here is where we download the precompiled From 07b85772e19bff79d62fd6c6a16dc5cb2b67f361 Mon Sep 17 00:00:00 2001 From: Josh Owens Date: Fri, 5 Feb 2016 17:13:16 -0500 Subject: [PATCH 06/14] First draft for sharing new ownership of code sections in Meteor. --- Contributing.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/Contributing.md b/Contributing.md index 8d739f2a89..f51717c68c 100644 --- a/Contributing.md +++ b/Contributing.md @@ -158,7 +158,7 @@ designed to stand separately. At the same time, all the parts of core fit toget distinctive Meteor development experience. Core APIs should be consistent between the client and the server (not always workable; we don't have fibers on the client or a DOM on the server). We prefer synchronous APIs wherever possible: you can use `Meteor.wrapAsync` on the server to wrap -async APIs that take a callback. +async APIs that take a callback. Above all, we are concerned with two design requirements when evaluating any change to a core package: @@ -242,6 +242,14 @@ these guidelines: * Be sure your author field in git is properly filled out with your full name and email address so we can credit you. +#### Need help with your pull request? + +Meteor now has groups defined to cover areas of the codebase. If you need help on certain topics you can address: + +* Meteor Data Team - This includes DDP, tracker, mongo, accounts, etc. You can talk to @stubailo. +* Blaze - This includes Spacebars, Blaze, etc. You can talk to @urigo or @yyx990803. +* Build tools - This includes modules, build tool changes, etc. You can talk to @avital or @benjamn. + ## Running tests on Meteor core When you are working with code in the core Meteor packages, you will want to make sure you run the From 5f78b892e13f0136ae101c7429fd2ab84a75971b Mon Sep 17 00:00:00 2001 From: Josh Owens Date: Fri, 5 Feb 2016 17:36:59 -0500 Subject: [PATCH 07/14] Tweaks from @mitar --- Contributing.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Contributing.md b/Contributing.md index f51717c68c..6d8714743a 100644 --- a/Contributing.md +++ b/Contributing.md @@ -244,11 +244,12 @@ these guidelines: #### Need help with your pull request? -Meteor now has groups defined to cover areas of the codebase. If you need help on certain topics you can address: +Meteor now has groups defined to cover areas of the codebase. If you need help on certain pull requests with an area of focus listed below, you can address the approriate people in the pull request: -* Meteor Data Team - This includes DDP, tracker, mongo, accounts, etc. You can talk to @stubailo. -* Blaze - This includes Spacebars, Blaze, etc. You can talk to @urigo or @yyx990803. -* Build tools - This includes modules, build tool changes, etc. You can talk to @avital or @benjamn. +* Meteor Data Team - This includes DDP, tracker, mongo, accounts, etc. You can mention @stubailo in the PR. +* Blaze - This includes Spacebars, Blaze, etc. You can mention @urigo or @yyx990803 in the PR. +* Build tools - This includes modules, build tool changes, etc. You can memtion @avital or @benjamn in the PR. +* Mobile integration - This includes Cordova, React Native, etc. You can mention @martijnwalraven in the PR. ## Running tests on Meteor core From af5f9c786964df3e59c82034cf1f4fd44e21576a Mon Sep 17 00:00:00 2001 From: Josh Owens Date: Fri, 5 Feb 2016 17:38:31 -0500 Subject: [PATCH 08/14] *sigh* appropriate. --- Contributing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Contributing.md b/Contributing.md index 6d8714743a..819008429e 100644 --- a/Contributing.md +++ b/Contributing.md @@ -244,7 +244,7 @@ these guidelines: #### Need help with your pull request? -Meteor now has groups defined to cover areas of the codebase. If you need help on certain pull requests with an area of focus listed below, you can address the approriate people in the pull request: +Meteor now has groups defined to cover areas of the codebase. If you need help on certain pull requests with an area of focus listed below, you can address the appropriate people in the pull request: * Meteor Data Team - This includes DDP, tracker, mongo, accounts, etc. You can mention @stubailo in the PR. * Blaze - This includes Spacebars, Blaze, etc. You can mention @urigo or @yyx990803 in the PR. From 6bf646fd486da87911523f219eda779f4281a513 Mon Sep 17 00:00:00 2001 From: Mitar Date: Sat, 6 Feb 2016 13:17:49 -0800 Subject: [PATCH 09/14] Wrap connect middleware function into a Fiber. Fixes: #6170 --- packages/webapp/webapp_server.js | 142 ++++++++++++++++--------------- 1 file changed, 72 insertions(+), 70 deletions(-) diff --git a/packages/webapp/webapp_server.js b/packages/webapp/webapp_server.js index 961e23fafb..c897dfa62b 100644 --- a/packages/webapp/webapp_server.js +++ b/packages/webapp/webapp_server.js @@ -649,81 +649,83 @@ var runWebAppServer = function () { }); app.use(function (req, res, next) { - if (! appUrl(req.url)) - return next(); + Fiber(function () { + if (!appUrl(req.url)) + return next(); - var headers = { - 'Content-Type': 'text/html; charset=utf-8' - }; - if (shuttingDown) - headers['Connection'] = 'Close'; + var headers = { + 'Content-Type': 'text/html; charset=utf-8' + }; + if (shuttingDown) + headers['Connection'] = 'Close'; - var request = WebApp.categorizeRequest(req); + var request = WebApp.categorizeRequest(req); - if (request.url.query && request.url.query['meteor_css_resource']) { - // In this case, we're requesting a CSS resource in the meteor-specific - // way, but we don't have it. Serve a static css file that indicates that - // we didn't have it, so we can detect that and refresh. Make sure - // that any proxies or CDNs don't cache this error! (Normally proxies - // or CDNs are smart enough not to cache error pages, but in order to - // make this hack work, we need to return the CSS file as a 200, which - // would otherwise be cached.) - headers['Content-Type'] = 'text/css; charset=utf-8'; - headers['Cache-Control'] = 'no-cache'; - res.writeHead(200, headers); - res.write(".meteor-css-not-found-error { width: 0px;}"); + if (request.url.query && request.url.query['meteor_css_resource']) { + // In this case, we're requesting a CSS resource in the meteor-specific + // way, but we don't have it. Serve a static css file that indicates that + // we didn't have it, so we can detect that and refresh. Make sure + // that any proxies or CDNs don't cache this error! (Normally proxies + // or CDNs are smart enough not to cache error pages, but in order to + // make this hack work, we need to return the CSS file as a 200, which + // would otherwise be cached.) + headers['Content-Type'] = 'text/css; charset=utf-8'; + headers['Cache-Control'] = 'no-cache'; + res.writeHead(200, headers); + res.write(".meteor-css-not-found-error { width: 0px;}"); + res.end(); + return undefined; + } + + if (request.url.query && request.url.query['meteor_js_resource']) { + // Similarly, we're requesting a JS resource that we don't have. + // Serve an uncached 404. (We can't use the same hack we use for CSS, + // because actually acting on that hack requires us to have the JS + // already!) + headers['Cache-Control'] = 'no-cache'; + res.writeHead(404, headers); + res.end("404 Not Found"); + return undefined; + } + + if (request.url.query && request.url.query['meteor_dont_serve_index']) { + // When downloading files during a Cordova hot code push, we need + // to detect if a file is not available instead of inadvertently + // downloading the default index page. + // So similar to the situation above, we serve an uncached 404. + headers['Cache-Control'] = 'no-cache'; + res.writeHead(404, headers); + res.end("404 Not Found"); + return undefined; + } + + // /packages/asdfsad ... /__cordova/dafsdf.js + var pathname = parseurl(req).pathname; + var archKey = pathname.split('/')[1]; + var archKeyCleaned = 'web.' + archKey.replace(/^__/, ''); + + if (!/^__/.test(archKey) || !_.has(archPath, archKeyCleaned)) { + archKey = WebApp.defaultArch; + } else { + archKey = archKeyCleaned; + } + + var boilerplate; + try { + boilerplate = getBoilerplate(request, archKey); + } catch (e) { + Log.error("Error running template: " + e); + res.writeHead(500, headers); + res.end(); + return undefined; + } + + var statusCode = res.statusCode ? res.statusCode : 200; + res.writeHead(statusCode, headers); + res.write(boilerplate); res.end(); return undefined; - } - - if (request.url.query && request.url.query['meteor_js_resource']) { - // Similarly, we're requesting a JS resource that we don't have. - // Serve an uncached 404. (We can't use the same hack we use for CSS, - // because actually acting on that hack requires us to have the JS - // already!) - headers['Cache-Control'] = 'no-cache'; - res.writeHead(404, headers); - res.end("404 Not Found"); - return undefined; - } - - if (request.url.query && request.url.query['meteor_dont_serve_index']) { - // When downloading files during a Cordova hot code push, we need - // to detect if a file is not available instead of inadvertently - // downloading the default index page. - // So similar to the situation above, we serve an uncached 404. - headers['Cache-Control'] = 'no-cache'; - res.writeHead(404, headers); - res.end("404 Not Found"); - return undefined; - } - - // /packages/asdfsad ... /__cordova/dafsdf.js - var pathname = parseurl(req).pathname; - var archKey = pathname.split('/')[1]; - var archKeyCleaned = 'web.' + archKey.replace(/^__/, ''); - - if (! /^__/.test(archKey) || ! _.has(archPath, archKeyCleaned)) { - archKey = WebApp.defaultArch; - } else { - archKey = archKeyCleaned; - } - - var boilerplate; - try { - boilerplate = getBoilerplate(request, archKey); - } catch (e) { - Log.error("Error running template: " + e); - res.writeHead(500, headers); - res.end(); - return undefined; - } - - var statusCode = res.statusCode ? res.statusCode : 200; - res.writeHead(statusCode, headers); - res.write(boilerplate); - res.end(); - return undefined; + }).run(); }); // Return 404 by default, if no other handlers serve this URL. From 50dfce3a5d17141620d61707c02d0eeefe30b356 Mon Sep 17 00:00:00 2001 From: Mitar Date: Sat, 6 Feb 2016 22:02:23 -0800 Subject: [PATCH 10/14] Make clear those are Cordova platforms. --- tools/cli/commands-cordova.js | 10 ++++++---- tools/cordova/index.js | 4 ++-- tools/cordova/project.js | 4 ++-- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/tools/cli/commands-cordova.js b/tools/cli/commands-cordova.js index 27c6098c4f..07d3bf6632 100644 --- a/tools/cli/commands-cordova.js +++ b/tools/cli/commands-cordova.js @@ -43,7 +43,7 @@ main.registerCommand({ for (platform of platformsToAdd) { if (_.contains(installedPlatforms, platform)) { buildmessage.error(`${platform}: platform is already added`); - } else if (!_.contains(cordova.AVAILABLE_PLATFORMS, platform)) { + } else if (!_.contains(cordova.CORDOVA_PLATFORMS, platform)) { buildmessage.error(`${platform}: no such platform`); } } @@ -67,7 +67,9 @@ main.registerCommand({ for (platform of platformsToAdd) { Console.info(`${platform}: added platform`); - cordovaProject.checkPlatformRequirements(platform); + if (_.contains(cordovaPlatforms, platform)) { + cordovaProject.checkPlatformRequirements(platform); + } } }); }); @@ -142,10 +144,10 @@ main.registerCommand({ const platform = options.args[0]; - if (!_.contains(cordova.AVAILABLE_PLATFORMS, platform)) { + if (!_.contains(cordova.CORDOVA_PLATFORMS, platform)) { Console.warn(`Unknown platform: ${platform}`); Console.info(`Valid platforms are: \ -${cordova.AVAILABLE_PLATFORMS.join(', ')}`); +${cordova.CORDOVA_PLATFORMS.join(', ')}`); return 1; } diff --git a/tools/cordova/index.js b/tools/cordova/index.js index 649f5b733a..9f20c778d9 100644 --- a/tools/cordova/index.js +++ b/tools/cordova/index.js @@ -8,7 +8,7 @@ import { oldToNew as oldToNewPluginIds, newToOld as newToOldPluginIds } export const CORDOVA_ARCH = "web.cordova"; -export const AVAILABLE_PLATFORMS = ['ios', 'android']; +export const CORDOVA_PLATFORMS = ['ios', 'android']; const PLATFORM_TO_DISPLAY_NAME_MAP = { 'ios': 'iOS', @@ -28,7 +28,7 @@ export function displayNamesForPlatforms(platforms) { // Right now, the only other platforms are the default browser and server // platforms. export function filterPlatforms(platforms) { - return _.intersection(platforms, AVAILABLE_PLATFORMS); + return _.intersection(platforms, CORDOVA_PLATFORMS); } export function splitPluginsAndPackages(packages) { diff --git a/tools/cordova/project.js b/tools/cordova/project.js index 47e5382fc2..d1462af302 100644 --- a/tools/cordova/project.js +++ b/tools/cordova/project.js @@ -21,7 +21,7 @@ import cordova_util from 'cordova-lib/src/cordova/util.js'; import superspawn from 'cordova-lib/src/cordova/superspawn.js'; import PluginInfoProvider from 'cordova-lib/src/PluginInfoProvider.js'; -import { AVAILABLE_PLATFORMS, displayNameForPlatform, displayNamesForPlatforms, +import { CORDOVA_PLATFORMS, displayNameForPlatform, displayNamesForPlatforms, newPluginId, convertPluginVersions, convertToGitUrl, installationInstructionsUrlForPlatform } from './index.js'; import { CordovaBuilder } from './builder.js'; @@ -363,7 +363,7 @@ from Cordova project`, async () => { for (platform of installedPlatforms) { if (!_.contains(platforms, platform) && - _.contains(AVAILABLE_PLATFORMS, platform)) { + _.contains(CORDOVA_PLATFORMS, platform)) { this.removePlatform(platform); } } From b782d187bdc3fb10c36d5f1e46c68afb7c7894bf Mon Sep 17 00:00:00 2001 From: Josh Owens Date: Sun, 7 Feb 2016 13:50:20 -0500 Subject: [PATCH 11/14] Addressing a few concerns. --- Contributing.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Contributing.md b/Contributing.md index 819008429e..d07f2d101a 100644 --- a/Contributing.md +++ b/Contributing.md @@ -244,13 +244,15 @@ these guidelines: #### Need help with your pull request? -Meteor now has groups defined to cover areas of the codebase. If you need help on certain pull requests with an area of focus listed below, you can address the appropriate people in the pull request: +Meteor now has groups defined to cover different areas of the codebase. If you need help getting acceptance on a certain pull requests with an area of focus listed below, you can address the appropriate people in the pull request: * Meteor Data Team - This includes DDP, tracker, mongo, accounts, etc. You can mention @stubailo in the PR. * Blaze - This includes Spacebars, Blaze, etc. You can mention @urigo or @yyx990803 in the PR. * Build tools - This includes modules, build tool changes, etc. You can memtion @avital or @benjamn in the PR. * Mobile integration - This includes Cordova, React Native, etc. You can mention @martijnwalraven in the PR. +Including the people above is no guarantee that you will get a response, or ultimately that your pull request will be accepted. This section exists to give some minor guidance on internal Meteor Development Group team structures. + ## Running tests on Meteor core When you are working with code in the core Meteor packages, you will want to make sure you run the From 9e498b404a7f7ffe4d6343eb550afdd785ac8b3a Mon Sep 17 00:00:00 2001 From: Fabien Blanchard Date: Sun, 7 Feb 2016 18:14:02 -0600 Subject: [PATCH 12/14] [Docs] Proper detection of key codes for search Avoid opening search on function (FN) keys press (`String.fromCharCode()` returns letters with them). --- docs/client/search.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/docs/client/search.js b/docs/client/search.js index 69918116f3..aadbbb4bb3 100644 --- a/docs/client/search.js +++ b/docs/client/search.js @@ -19,12 +19,10 @@ $(document).on("keydown", function (event) { } }); -// Open search with any non-special key -var keysToOpenSearch = /[A-Za-z0-9]/; $(document).on("keydown", function (event) { // Don't activate search for special keys or keys with modifiers - if (event.which && keysToOpenSearch.test(String.fromCharCode(event.which)) && - (! event.ctrlKey) && (! event.metaKey) && (! Session.get("searchOpen"))) { + if (event.which >= 48 && event.which <= 90 && (!event.ctrlKey) && + (!event.metaKey) && (!Session.get("searchOpen"))) { Session.set("searchOpen", true); Tracker.flush(); From 1f13515e4c4d1878a2b09e856b8b27e9b937d79e Mon Sep 17 00:00:00 2001 From: Martijn Walraven Date: Mon, 8 Feb 2016 10:30:52 +0100 Subject: [PATCH 13/14] Reserve dev bundle version for cordova-improvements --- meteor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meteor b/meteor index 83b892a039..e0775ae85e 100755 --- a/meteor +++ b/meteor @@ -1,7 +1,7 @@ #!/usr/bin/env bash # Note: 0.5.17 used on branch origin/npm3 -# Note: 0.5.20 used on branch origin/cordova-improvements +# Note: 0.5.20 and 0.5.24 used on branch origin/cordova-improvements # Note: 0.5.21 used on branch release-1.2.2 # Note: 0.5.23 used on branch release-1.3 BUNDLE_VERSION=0.5.18 From 9a193c98d625e93aeb911e8e84e54a7f19dcc7e0 Mon Sep 17 00:00:00 2001 From: Martijn Walraven Date: Mon, 8 Feb 2016 10:47:03 +0100 Subject: [PATCH 14/14] Reserve dev bundle version for cordova-improvements --- meteor | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meteor b/meteor index e0775ae85e..bd8c033e62 100755 --- a/meteor +++ b/meteor @@ -1,7 +1,7 @@ #!/usr/bin/env bash # Note: 0.5.17 used on branch origin/npm3 -# Note: 0.5.20 and 0.5.24 used on branch origin/cordova-improvements +# Note: 0.5.20 and 0.5.25 used on branch origin/cordova-improvements # Note: 0.5.21 used on branch release-1.2.2 # Note: 0.5.23 used on branch release-1.3 BUNDLE_VERSION=0.5.18