From ace6ad8ed1a47e9553d0a95b367309d3ae009aaa Mon Sep 17 00:00:00 2001 From: Emily Stark Date: Tue, 9 Dec 2014 13:16:05 -0800 Subject: [PATCH 01/60] remove history entry for nonexistent 0.6.4.2 --- History.md | 8 -------- 1 file changed, 8 deletions(-) diff --git a/History.md b/History.md index df548e23ab..800e87c7b5 100644 --- a/History.md +++ b/History.md @@ -1918,14 +1918,6 @@ sdarnell, and timhaines. Patches contributed by GitHub users btipling, mizzao, timhaines and zol. -## v0.6.4.2 - -* Fix a security issue in allow/deny rules that could result in data - loss. If your app uses allow/deny rules, or uses packages that use - allow/deny rules, we recommend that you update immediately. - Backport from 1.0.1. - - ## v0.6.4.1 * Update mongodb driver to use version 0.2.1 of the bson module. From 73b809c122b2ae92a9403d30183056104f709e3e Mon Sep 17 00:00:00 2001 From: David Glasser Date: Thu, 11 Dec 2014 22:44:41 -0800 Subject: [PATCH 02/60] Bump versions for 1.0.2. --- packages/accounts-base/package.js | 2 +- packages/accounts-facebook/package.js | 2 +- packages/accounts-github/package.js | 2 +- packages/accounts-google/package.js | 2 +- packages/accounts-meetup/package.js | 2 +- packages/accounts-meteor-developer/package.js | 2 +- packages/accounts-oauth/package.js | 2 +- packages/accounts-password/package.js | 2 +- packages/accounts-twitter/package.js | 2 +- packages/accounts-ui-unstyled/package.js | 2 +- packages/accounts-ui/package.js | 2 +- packages/accounts-weibo/package.js | 2 +- packages/appcache/package.js | 2 +- packages/application-configuration/package.js | 2 +- packages/audit-argument-checks/package.js | 2 +- packages/autopublish/package.js | 2 +- packages/autoupdate/package.js | 2 +- packages/base64/package.js | 2 +- packages/binary-heap/package.js | 2 +- packages/blaze-tools/package.js | 2 +- packages/blaze/package.js | 2 +- packages/boilerplate-generator/package.js | 2 +- packages/browser-policy-common/package.js | 2 +- packages/browser-policy-content/package.js | 2 +- packages/browser-policy-framing/package.js | 2 +- packages/browser-policy/package.js | 2 +- packages/callback-hook/package.js | 2 +- packages/check/package.js | 2 +- packages/code-prettify/package.js | 2 +- packages/coffeescript-test-helper/package.js | 2 +- packages/coffeescript/package.js | 2 +- packages/constraint-solver/package.js | 2 +- packages/ctl-helper/package.js | 2 +- packages/ctl/package.js | 2 +- packages/ddp/package.js | 2 +- packages/deps/package.js | 2 +- packages/dev-bundle-fetcher/package.js | 2 +- packages/disable-oplog/package.js | 2 +- packages/ejson/package.js | 2 +- packages/email/package.js | 2 +- packages/facebook/package.js | 2 +- packages/facts/package.js | 2 +- packages/fastclick/package.js | 2 +- packages/follower-livedata/package.js | 2 +- packages/force-ssl/package.js | 2 +- packages/geojson-utils/package.js | 2 +- packages/github/package.js | 2 +- packages/google/package.js | 2 +- packages/handlebars/package.js | 2 +- packages/html-tools/package.js | 2 +- packages/htmljs/package.js | 2 +- packages/http/package.js | 2 +- packages/id-map/package.js | 2 +- packages/insecure/package.js | 2 +- packages/jquery-waypoints/package.js | 2 +- packages/jquery/package.js | 2 +- packages/js-analyze-tests/package.js | 2 +- packages/js-analyze/package.js | 2 +- packages/json/package.js | 2 +- packages/jsparse/package.js | 2 +- packages/launch-screen/package.js | 2 +- packages/less/package.js | 2 +- packages/livedata/package.js | 2 +- packages/localstorage/package.js | 2 +- packages/logging/package.js | 2 +- packages/markdown/package.js | 2 +- packages/meetup/package.js | 2 +- packages/meteor-developer/package.js | 2 +- packages/meteor-platform/package.js | 2 +- packages/meteor-tool/package.js | 2 +- packages/meteor/package.js | 2 +- packages/meyerweb-reset/package.js | 2 +- packages/minifiers/package.js | 2 +- packages/minimongo/package.js | 2 +- packages/mobile-status-bar/package.js | 2 +- packages/mongo-livedata/package.js | 2 +- packages/mongo/package.js | 2 +- packages/oauth-encryption/package.js | 2 +- packages/oauth/package.js | 2 +- packages/oauth1/package.js | 2 +- packages/oauth2/package.js | 2 +- packages/observe-sequence/package.js | 2 +- packages/ordered-dict/package.js | 2 +- packages/package-stats-opt-out/package.js | 2 +- packages/package-version-parser/package.js | 2 +- packages/preserve-inputs/package.js | 2 +- packages/random/package.js | 2 +- packages/reactive-dict/package.js | 2 +- packages/reactive-var/package.js | 2 +- packages/reload-safetybelt/package.js | 2 +- packages/reload/package.js | 2 +- packages/retry/package.js | 2 +- packages/routepolicy/package.js | 2 +- packages/service-configuration/package.js | 2 +- packages/session/package.js | 2 +- packages/sha/package.js | 2 +- packages/showdown/package.js | 2 +- packages/spacebars-compiler/package.js | 2 +- packages/spacebars-tests/package.js | 2 +- packages/spacebars/package.js | 2 +- packages/spiderable/package.js | 2 +- packages/srp/package.js | 2 +- packages/standard-app-packages/package.js | 2 +- packages/star-translate/package.js | 2 +- packages/startup/package.js | 2 +- packages/stylus/package.js | 2 +- packages/templating/package.js | 2 +- packages/test-helpers/package.js | 2 +- packages/test-in-browser/package.js | 2 +- packages/test-in-console/package.js | 2 +- packages/test-server-tests-in-console-once/package.js | 2 +- packages/tinytest/package.js | 2 +- packages/tracker/package.js | 2 +- packages/twitter/package.js | 2 +- packages/ui/package.js | 2 +- packages/underscore-tests/package.js | 2 +- packages/underscore/package.js | 2 +- packages/url/package.js | 2 +- packages/webapp-hashing/package.js | 2 +- packages/webapp/package.js | 2 +- packages/weibo/package.js | 2 +- packages/xmlbuilder/package.js | 2 +- scripts/admin/meteor-release-experimental.json | 2 +- 123 files changed, 123 insertions(+), 123 deletions(-) diff --git a/packages/accounts-base/package.js b/packages/accounts-base/package.js index e98721cc9f..ea2b17253f 100644 --- a/packages/accounts-base/package.js +++ b/packages/accounts-base/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "A user account system", - version: "1.1.3-ipc.0" + version: "1.1.3-rc.1" }); Package.onUse(function (api) { diff --git a/packages/accounts-facebook/package.js b/packages/accounts-facebook/package.js index 6c4708460b..93615339c8 100644 --- a/packages/accounts-facebook/package.js +++ b/packages/accounts-facebook/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Login service for Facebook accounts", - version: "1.0.3-ipc.0" + version: "1.0.3-rc.1" }); Package.onUse(function(api) { diff --git a/packages/accounts-github/package.js b/packages/accounts-github/package.js index 9476fd926d..f0a9086fed 100644 --- a/packages/accounts-github/package.js +++ b/packages/accounts-github/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Login service for Github accounts", - version: "1.0.3-ipc.0" + version: "1.0.3-rc.1" }); Package.onUse(function(api) { diff --git a/packages/accounts-google/package.js b/packages/accounts-google/package.js index 1a993285f9..2b1d600d4d 100644 --- a/packages/accounts-google/package.js +++ b/packages/accounts-google/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Login service for Google accounts", - version: "1.0.3-ipc.0" + version: "1.0.3-rc.1" }); Package.onUse(function(api) { diff --git a/packages/accounts-meetup/package.js b/packages/accounts-meetup/package.js index eff83f5787..178810bce3 100644 --- a/packages/accounts-meetup/package.js +++ b/packages/accounts-meetup/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Login service for Meetup accounts", - version: "1.0.3-ipc.0" + version: "1.0.3-rc.1" }); Package.onUse(function(api) { diff --git a/packages/accounts-meteor-developer/package.js b/packages/accounts-meteor-developer/package.js index 72b60478ab..dc081468dd 100644 --- a/packages/accounts-meteor-developer/package.js +++ b/packages/accounts-meteor-developer/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Login service for Meteor developer accounts", - version: "1.0.3-ipc.0" + version: "1.0.3-rc.1" }); Package.onUse(function (api) { diff --git a/packages/accounts-oauth/package.js b/packages/accounts-oauth/package.js index 9ab11ffea6..dd90b2ee8d 100644 --- a/packages/accounts-oauth/package.js +++ b/packages/accounts-oauth/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Common code for OAuth-based login services", - version: "1.1.3-ipc.0" + version: "1.1.3-rc.1" }); Package.onUse(function (api) { diff --git a/packages/accounts-password/package.js b/packages/accounts-password/package.js index 2eb6c197e9..3ac56dab61 100644 --- a/packages/accounts-password/package.js +++ b/packages/accounts-password/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Password support for accounts", - version: "1.0.5-ipc.0" + version: "1.0.5-rc.1" }); Package.onUse(function(api) { diff --git a/packages/accounts-twitter/package.js b/packages/accounts-twitter/package.js index 50e8c2d8f3..2fdda22989 100644 --- a/packages/accounts-twitter/package.js +++ b/packages/accounts-twitter/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Login service for Twitter accounts", - version: "1.0.3-ipc.0" + version: "1.0.3-rc.1" }); Package.onUse(function(api) { diff --git a/packages/accounts-ui-unstyled/package.js b/packages/accounts-ui-unstyled/package.js index b43ebaf431..7cf2c6d5e1 100644 --- a/packages/accounts-ui-unstyled/package.js +++ b/packages/accounts-ui-unstyled/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Unstyled version of login widgets", - version: "1.1.5-ipc.1" + version: "1.1.5-rc.1" }); Package.onUse(function (api) { diff --git a/packages/accounts-ui/package.js b/packages/accounts-ui/package.js index d80b468ca4..e521de834f 100644 --- a/packages/accounts-ui/package.js +++ b/packages/accounts-ui/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Simple templates to add login widgets to an app", - version: "1.1.4-ipc.0" + version: "1.1.4-rc.1" }); Package.onUse(function (api) { diff --git a/packages/accounts-weibo/package.js b/packages/accounts-weibo/package.js index 85443f5839..b6fcf77a9e 100644 --- a/packages/accounts-weibo/package.js +++ b/packages/accounts-weibo/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Login service for Sina Weibo accounts", - version: "1.0.3-ipc.0" + version: "1.0.3-rc.1" }); Package.onUse(function(api) { diff --git a/packages/appcache/package.js b/packages/appcache/package.js index 7066ef4058..4209624739 100644 --- a/packages/appcache/package.js +++ b/packages/appcache/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Enable the application cache in the browser", - version: "1.0.3-ipc.0" + version: "1.0.3-rc.1" }); Package.onUse(function (api) { diff --git a/packages/application-configuration/package.js b/packages/application-configuration/package.js index 5ffaaa10dc..8bfc8579b3 100644 --- a/packages/application-configuration/package.js +++ b/packages/application-configuration/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Interaction with the configuration sources for your apps", - version: '1.0.4-ipc.0' + version: '1.0.4-rc.1' }); Package.onUse(function (api) { diff --git a/packages/audit-argument-checks/package.js b/packages/audit-argument-checks/package.js index 0ec2fae86d..802bf8ed1f 100644 --- a/packages/audit-argument-checks/package.js +++ b/packages/audit-argument-checks/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Try to detect inadequate input sanitization", - version: '1.0.2-ipc.0' + version: '1.0.2-rc.1' }); // This package is empty; its presence is detected by livedata. diff --git a/packages/autopublish/package.js b/packages/autopublish/package.js index b463c867a8..009d79aabe 100644 --- a/packages/autopublish/package.js +++ b/packages/autopublish/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Publish the entire database to all clients", - version: '1.0.2-ipc.0' + version: '1.0.2-rc.1' }); // This package is empty; its presence is detected by livedata and diff --git a/packages/autoupdate/package.js b/packages/autoupdate/package.js index ded6376e52..5a390dc23b 100644 --- a/packages/autoupdate/package.js +++ b/packages/autoupdate/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Update the client when new client code is available", - version: '1.1.4-ipc.0' + version: '1.1.4-rc.1' }); Cordova.depends({ diff --git a/packages/base64/package.js b/packages/base64/package.js index 2698821a20..ade0ed050d 100644 --- a/packages/base64/package.js +++ b/packages/base64/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Base64 encoding and decoding", - version: '1.0.2-ipc.0' + version: '1.0.2-rc.1' }); Package.onUse(function (api) { diff --git a/packages/binary-heap/package.js b/packages/binary-heap/package.js index 67eed76830..c535cf2a71 100644 --- a/packages/binary-heap/package.js +++ b/packages/binary-heap/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Binary Heap datastructure implementation", - version: '1.0.2-ipc.0' + version: '1.0.2-rc.1' }); Package.onUse(function (api) { diff --git a/packages/blaze-tools/package.js b/packages/blaze-tools/package.js index d64dfb3380..23ecea137d 100644 --- a/packages/blaze-tools/package.js +++ b/packages/blaze-tools/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Compile-time tools for Blaze", - version: '1.0.2-ipc.0' + version: '1.0.2-rc.1' }); Package.onUse(function (api) { diff --git a/packages/blaze/package.js b/packages/blaze/package.js index 96704cce1f..b520b17397 100644 --- a/packages/blaze/package.js +++ b/packages/blaze/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Meteor Reactive Templating library", - version: '2.0.4-ipc.1' + version: '2.0.4-rc.1' }); Package.onUse(function (api) { diff --git a/packages/boilerplate-generator/package.js b/packages/boilerplate-generator/package.js index b2e0f00632..dfcc2ea56b 100644 --- a/packages/boilerplate-generator/package.js +++ b/packages/boilerplate-generator/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Generates the boilerplate html from program's manifest", - version: '1.0.2-ipc.0' + version: '1.0.2-rc.1' }); Package.onUse(function (api) { diff --git a/packages/browser-policy-common/package.js b/packages/browser-policy-common/package.js index bf434849f5..66294f98f1 100644 --- a/packages/browser-policy-common/package.js +++ b/packages/browser-policy-common/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Common code for browser-policy packages", - version: "1.0.2-ipc.0" + version: "1.0.2-rc.1" }); Package.onUse(function (api) { diff --git a/packages/browser-policy-content/package.js b/packages/browser-policy-content/package.js index 15cde27ad0..195fbbc1ce 100644 --- a/packages/browser-policy-content/package.js +++ b/packages/browser-policy-content/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Configure content security policies", - version: "1.0.3-ipc.0" + version: "1.0.3-rc.1" }); Package.onUse(function (api) { diff --git a/packages/browser-policy-framing/package.js b/packages/browser-policy-framing/package.js index 0d40a9bc3a..816d45f52f 100644 --- a/packages/browser-policy-framing/package.js +++ b/packages/browser-policy-framing/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Restrict which websites can frame your app", - version: "1.0.3-ipc.0" + version: "1.0.3-rc.1" }); Package.onUse(function (api) { diff --git a/packages/browser-policy/package.js b/packages/browser-policy/package.js index adec2ea3f0..f7bfb7bda9 100644 --- a/packages/browser-policy/package.js +++ b/packages/browser-policy/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Configure security policies enforced by the browser", - version: "1.0.3-ipc.0" + version: "1.0.3-rc.1" }); Package.onUse(function (api) { diff --git a/packages/callback-hook/package.js b/packages/callback-hook/package.js index 09ac1f0050..3d9d33863e 100644 --- a/packages/callback-hook/package.js +++ b/packages/callback-hook/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Register callbacks on a hook", - version: '1.0.2-ipc.0' + version: '1.0.2-rc.1' }); Package.onUse(function (api) { diff --git a/packages/check/package.js b/packages/check/package.js index 90c0598afc..f79767edef 100644 --- a/packages/check/package.js +++ b/packages/check/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Check whether a value matches a pattern", - version: '1.0.3-ipc.1' + version: '1.0.3-rc.1' }); Package.onUse(function (api) { diff --git a/packages/code-prettify/package.js b/packages/code-prettify/package.js index 267dd727ef..2aa4f0f2e1 100644 --- a/packages/code-prettify/package.js +++ b/packages/code-prettify/package.js @@ -8,7 +8,7 @@ var path = Npm.require('path'); Package.describe({ summary: "Syntax highlighting of code, from Google", - version: "1.0.2-ipc.0" + version: "1.0.2-rc.1" }); // XXX this code dumps symbols into the global namespace (directly diff --git a/packages/coffeescript-test-helper/package.js b/packages/coffeescript-test-helper/package.js index 2390e75e2d..07e6892bd6 100644 --- a/packages/coffeescript-test-helper/package.js +++ b/packages/coffeescript-test-helper/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Used by the coffeescript package's tests", - version: "1.0.2-ipc.0" + version: "1.0.2-rc.1" }); Package.onUse(function (api) { diff --git a/packages/coffeescript/package.js b/packages/coffeescript/package.js index 7ac7355f0a..c4a92ad48c 100644 --- a/packages/coffeescript/package.js +++ b/packages/coffeescript/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Javascript dialect with fewer braces and semicolons", - version: "1.0.5-ipc.0" + version: "1.0.5-rc.1" }); Package.registerBuildPlugin({ diff --git a/packages/constraint-solver/package.js b/packages/constraint-solver/package.js index ecb2031fc7..c1e8b2768e 100644 --- a/packages/constraint-solver/package.js +++ b/packages/constraint-solver/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Given the set of the constraints, picks a satisfying configuration", - version: "1.0.16-ipc.2" + version: "1.0.16-rc.1" }); Npm.depends({ diff --git a/packages/ctl-helper/package.js b/packages/ctl-helper/package.js index 9dc45fe17f..9b8fb43a5b 100644 --- a/packages/ctl-helper/package.js +++ b/packages/ctl-helper/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Helpers for control programs", - version: "1.0.5-ipc.0" + version: "1.0.5-rc.1" }); Npm.depends({optimist: '0.6.0'}); diff --git a/packages/ctl/package.js b/packages/ctl/package.js index 2eac87f9b1..9452c24899 100644 --- a/packages/ctl/package.js +++ b/packages/ctl/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Default control program for an application", - version: "1.0.3-ipc.0" + version: "1.0.3-rc.1" }); Package.onUse(function (api) { diff --git a/packages/ddp/package.js b/packages/ddp/package.js index 23bd6c93fc..98d4a2ca7c 100644 --- a/packages/ddp/package.js +++ b/packages/ddp/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Meteor's latency-compensated distributed data framework", - version: '1.0.13-ipc.0' + version: '1.0.13-rc.1' }); // We use 'faye-websocket' for connections in server-to-server DDP, mostly diff --git a/packages/deps/package.js b/packages/deps/package.js index e857dab622..0ec755bfaf 100644 --- a/packages/deps/package.js +++ b/packages/deps/package.js @@ -2,7 +2,7 @@ Package.describe({ summary: "Deprecated: Use the 'tracker' package instead.", - version: '1.0.6-ipc.0' + version: '1.0.6-rc.1' }); Package.onUse(function (api) { diff --git a/packages/dev-bundle-fetcher/package.js b/packages/dev-bundle-fetcher/package.js index ef54633649..f4b0bcc8e4 100644 --- a/packages/dev-bundle-fetcher/package.js +++ b/packages/dev-bundle-fetcher/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "A shell script for downloading the Meteor dev bundle", - version: "1.0.2-ipc.0" + version: "1.0.2-rc.1" }); Package.onUse(function (api) { diff --git a/packages/disable-oplog/package.js b/packages/disable-oplog/package.js index 3efbeaa778..6714c56060 100644 --- a/packages/disable-oplog/package.js +++ b/packages/disable-oplog/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Disables oplog tailing", - version: '1.0.2-ipc.0' + version: '1.0.2-rc.1' }); // This package is empty; its presence is detected by mongo-livedata. diff --git a/packages/ejson/package.js b/packages/ejson/package.js index 30aa6a933f..e0886eeae7 100644 --- a/packages/ejson/package.js +++ b/packages/ejson/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Extended and Extensible JSON library", - version: '1.0.5-ipc.0' + version: '1.0.5-rc.1' }); Package.onUse(function (api) { diff --git a/packages/email/package.js b/packages/email/package.js index 0294fa91ef..02593ddc9e 100644 --- a/packages/email/package.js +++ b/packages/email/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Send email messages", - version: "1.0.5-ipc.0" + version: "1.0.5-rc.1" }); Npm.depends({ diff --git a/packages/facebook/package.js b/packages/facebook/package.js index 514d7d631c..7f4d65fb9b 100644 --- a/packages/facebook/package.js +++ b/packages/facebook/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Facebook OAuth flow", - version: "1.1.3-ipc.0" + version: "1.1.3-rc.1" }); Package.onUse(function(api) { diff --git a/packages/facts/package.js b/packages/facts/package.js index 3f49191b8a..f4cea1900d 100644 --- a/packages/facts/package.js +++ b/packages/facts/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Publish internal app statistics", - version: '1.0.3-ipc.0' + version: '1.0.3-rc.1' }); Package.onUse(function (api) { diff --git a/packages/fastclick/package.js b/packages/fastclick/package.js index 8677f23791..a7ab3f5009 100644 --- a/packages/fastclick/package.js +++ b/packages/fastclick/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Faster touch events on mobile", - version: '1.0.2-ipc.0' + version: '1.0.2-rc.1' }); Package.onUse(function (api) { diff --git a/packages/follower-livedata/package.js b/packages/follower-livedata/package.js index 7d0d39e3d1..8a07fda896 100644 --- a/packages/follower-livedata/package.js +++ b/packages/follower-livedata/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Maintain a connection to the leader of an election set", - version: '1.0.3-ipc.0' + version: '1.0.3-rc.1' }); Package.onUse(function (api) { diff --git a/packages/force-ssl/package.js b/packages/force-ssl/package.js index 3a52469d2d..9b1f0d2537 100644 --- a/packages/force-ssl/package.js +++ b/packages/force-ssl/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Require this application to use HTTPS", - version: "1.0.3-ipc.0" + version: "1.0.3-rc.1" }); Package.onUse(function (api) { diff --git a/packages/geojson-utils/package.js b/packages/geojson-utils/package.js index ef21f3e6eb..80ac0cd995 100644 --- a/packages/geojson-utils/package.js +++ b/packages/geojson-utils/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: 'GeoJSON utility functions (from https://github.com/maxogden/geojson-js-utils)', - version: '1.0.2-ipc.0' + version: '1.0.2-rc.1' }); Package.onUse(function (api) { diff --git a/packages/github/package.js b/packages/github/package.js index ec073014f5..584ab5665e 100644 --- a/packages/github/package.js +++ b/packages/github/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Github OAuth flow", - version: "1.1.2-ipc.0" + version: "1.1.2-rc.1" }); Package.onUse(function(api) { diff --git a/packages/google/package.js b/packages/google/package.js index f3d28e6daa..80ec0838bf 100644 --- a/packages/google/package.js +++ b/packages/google/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Google OAuth flow", - version: "1.1.3-ipc.0" + version: "1.1.3-rc.1" }); Package.onUse(function(api) { diff --git a/packages/handlebars/package.js b/packages/handlebars/package.js index b80aa30317..62ac88a913 100644 --- a/packages/handlebars/package.js +++ b/packages/handlebars/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Deprecated", - version: '1.0.2-ipc.0' + version: '1.0.2-rc.1' }); Package.onUse(function (api) { diff --git a/packages/html-tools/package.js b/packages/html-tools/package.js index c1b6459c38..23ace8dcd8 100644 --- a/packages/html-tools/package.js +++ b/packages/html-tools/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Standards-compliant HTML tools", - version: '1.0.3-ipc.0' + version: '1.0.3-rc.1' }); Package.onUse(function (api) { diff --git a/packages/htmljs/package.js b/packages/htmljs/package.js index 64addcbec5..f8b0e9f46b 100644 --- a/packages/htmljs/package.js +++ b/packages/htmljs/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Small library for expressing HTML trees", - version: '1.0.3-ipc.0' + version: '1.0.3-rc.1' }); Package.onUse(function (api) { diff --git a/packages/http/package.js b/packages/http/package.js index cd144da4b0..4c44dd1a9b 100644 --- a/packages/http/package.js +++ b/packages/http/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Make HTTP calls to remote servers", - version: '1.0.9-ipc.0' + version: '1.0.9-rc.1' }); Npm.depends({request: "2.47.0"}); diff --git a/packages/id-map/package.js b/packages/id-map/package.js index 66381b061f..8c95abda1c 100644 --- a/packages/id-map/package.js +++ b/packages/id-map/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Dictionary data structure allowing non-string keys", - version: '1.0.2-ipc.0' + version: '1.0.2-rc.1' }); Package.onUse(function (api) { diff --git a/packages/insecure/package.js b/packages/insecure/package.js index 751a24b5e9..231180819f 100644 --- a/packages/insecure/package.js +++ b/packages/insecure/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Allow all database writes by default", - version: '1.0.2-ipc.0' + version: '1.0.2-rc.1' }); // This package is empty; its presence is detected by mongo-livedata. diff --git a/packages/jquery-waypoints/package.js b/packages/jquery-waypoints/package.js index a858f50d28..d9bb6e9b6f 100644 --- a/packages/jquery-waypoints/package.js +++ b/packages/jquery-waypoints/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Run a function when the user scrolls past an element", - version: "1.0.2-ipc.0" + version: "1.0.2-rc.1" }); Package.onUse(function (api) { diff --git a/packages/jquery/package.js b/packages/jquery/package.js index b24fb8a3e6..cf0b451f58 100644 --- a/packages/jquery/package.js +++ b/packages/jquery/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Manipulate the DOM using CSS selectors", - version: '1.0.2-ipc.0' + version: '1.0.2-rc.1' }); Package.onUse(function (api) { diff --git a/packages/js-analyze-tests/package.js b/packages/js-analyze-tests/package.js index b8c424922e..b992a16a70 100644 --- a/packages/js-analyze-tests/package.js +++ b/packages/js-analyze-tests/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Tests for JavaScript code analysis for Meteor", - version: "1.0.2-ipc.0" + version: "1.0.2-rc.1" }); // The tests are in a separate package so that it is possible to compile diff --git a/packages/js-analyze/package.js b/packages/js-analyze/package.js index a9176d1fc0..66e71bad43 100644 --- a/packages/js-analyze/package.js +++ b/packages/js-analyze/package.js @@ -4,7 +4,7 @@ Package.describe({ summary: "JavaScript code analysis for Meteor", - version: '1.0.4-ipc.0' + version: '1.0.4-rc.1' }); // Use some packages from the Esprima project. If it turns out we need these on diff --git a/packages/json/package.js b/packages/json/package.js index 57d1048e88..05814a7f2a 100644 --- a/packages/json/package.js +++ b/packages/json/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Provides JSON.stringify and JSON.parse for older browsers", - version: '1.0.2-ipc.0' + version: '1.0.2-rc.1' }); // We need to figure out how to serve this file only to browsers that don't have diff --git a/packages/jsparse/package.js b/packages/jsparse/package.js index eb53a6d656..f7046ad117 100644 --- a/packages/jsparse/package.js +++ b/packages/jsparse/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Full-featured JavaScript parser", - version: "1.0.2-ipc.0" + version: "1.0.2-rc.1" }); Package.onUse(function (api) { diff --git a/packages/launch-screen/package.js b/packages/launch-screen/package.js index b11f4514f9..83d5c7ab7f 100644 --- a/packages/launch-screen/package.js +++ b/packages/launch-screen/package.js @@ -6,7 +6,7 @@ Package.describe({ // between such packages and the build tool. name: 'launch-screen', summary: 'Default and customizable launch screen on mobile.', - version: '1.0.1-ipc.0' + version: '1.0.1-rc.1' }); Cordova.depends({ diff --git a/packages/less/package.js b/packages/less/package.js index 287a4ae223..72922f5f24 100644 --- a/packages/less/package.js +++ b/packages/less/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "The dynamic stylesheet language", - version: "1.0.12-ipc.0" + version: "1.0.12-rc.1" }); Package.registerBuildPlugin({ diff --git a/packages/livedata/package.js b/packages/livedata/package.js index 96ad8bf8cd..4813aa3022 100644 --- a/packages/livedata/package.js +++ b/packages/livedata/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Moved to the 'ddp' package", - version: '1.0.12-ipc.0' + version: '1.0.12-rc.1' }); Package.onUse(function (api) { diff --git a/packages/localstorage/package.js b/packages/localstorage/package.js index 2f59edaa95..b9ef0be798 100644 --- a/packages/localstorage/package.js +++ b/packages/localstorage/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Simulates local storage on IE 6,7 using userData", - version: "1.0.2-ipc.0" + version: "1.0.2-rc.1" }); Package.onUse(function (api) { diff --git a/packages/logging/package.js b/packages/logging/package.js index d8b376778e..49f823d9a9 100644 --- a/packages/logging/package.js +++ b/packages/logging/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Logging facility.", - version: '1.0.6-ipc.0' + version: '1.0.6-rc.1' }); Npm.depends({ diff --git a/packages/markdown/package.js b/packages/markdown/package.js index 183c4d9248..eec4674e17 100644 --- a/packages/markdown/package.js +++ b/packages/markdown/package.js @@ -2,7 +2,7 @@ Package.describe({ summary: "Markdown-to-HTML processor", - version: "1.0.3-ipc.0" + version: "1.0.3-rc.1" }); Package.onUse(function (api) { diff --git a/packages/meetup/package.js b/packages/meetup/package.js index be2f3e2848..ca517d6d3d 100644 --- a/packages/meetup/package.js +++ b/packages/meetup/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Meetup OAuth flow", - version: "1.1.2-ipc.0" + version: "1.1.2-rc.1" }); Package.onUse(function(api) { diff --git a/packages/meteor-developer/package.js b/packages/meteor-developer/package.js index 12c03c730b..11c2a014bc 100644 --- a/packages/meteor-developer/package.js +++ b/packages/meteor-developer/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Meteor developer accounts OAuth flow", - version: "1.1.2-ipc.0" + version: "1.1.2-rc.1" }); Package.onUse(function (api) { diff --git a/packages/meteor-platform/package.js b/packages/meteor-platform/package.js index 653e69fa2a..962642c01d 100644 --- a/packages/meteor-platform/package.js +++ b/packages/meteor-platform/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Include a standard set of Meteor packages in your app", - version: '1.2.1-ipc.0' + version: '1.2.1-rc.1' }); Package.onUse(function(api) { diff --git a/packages/meteor-tool/package.js b/packages/meteor-tool/package.js index bec4a36e53..b35bddc911 100644 --- a/packages/meteor-tool/package.js +++ b/packages/meteor-tool/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "The Meteor command-line tool", - version: '1.0.37-ipc.0' + version: '1.0.37-rc.1' }); Package.includeTool(); diff --git a/packages/meteor/package.js b/packages/meteor/package.js index 3f69ffddb6..04f542f596 100644 --- a/packages/meteor/package.js +++ b/packages/meteor/package.js @@ -2,7 +2,7 @@ Package.describe({ summary: "Core Meteor environment", - version: '1.1.4-ipc.0' + version: '1.1.4-rc.1' }); Package.registerBuildPlugin({ diff --git a/packages/meyerweb-reset/package.js b/packages/meyerweb-reset/package.js index 11800857bd..e14b4fa1dc 100644 --- a/packages/meyerweb-reset/package.js +++ b/packages/meyerweb-reset/package.js @@ -3,7 +3,7 @@ // encourage this pattern. Maybe another solution would be better. Package.describe({ summary: "reset.css v2.0 from http://meyerweb.com/eric/tools/css/reset/", - version: "1.0.2-ipc.0" + version: "1.0.2-rc.1" }); Package.onUse(function (api) { diff --git a/packages/minifiers/package.js b/packages/minifiers/package.js index 148a92d51a..1515f7bb78 100644 --- a/packages/minifiers/package.js +++ b/packages/minifiers/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "JavaScript and CSS minifiers", - version: "1.1.3-ipc.0" + version: "1.1.3-rc.1" }); Npm.depends({ diff --git a/packages/minimongo/package.js b/packages/minimongo/package.js index 09a45d5de8..31210e8f12 100644 --- a/packages/minimongo/package.js +++ b/packages/minimongo/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Meteor's client-side datastore: a port of MongoDB to Javascript", - version: '1.0.6-ipc.1' + version: '1.0.6-rc.1' }); Package.onUse(function (api) { diff --git a/packages/mobile-status-bar/package.js b/packages/mobile-status-bar/package.js index 6f858db69d..e8187fd42a 100644 --- a/packages/mobile-status-bar/package.js +++ b/packages/mobile-status-bar/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Good defaults for the mobile status bar", - version: "1.0.2-ipc.0" + version: "1.0.2-rc.1" }); Package.onUse(function(api) { diff --git a/packages/mongo-livedata/package.js b/packages/mongo-livedata/package.js index 41c151dd54..6a83b3c63f 100644 --- a/packages/mongo-livedata/package.js +++ b/packages/mongo-livedata/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Moved to the 'mongo' package", - version: '1.0.7-ipc.0' + version: '1.0.7-rc.1' }); Package.onUse(function (api) { diff --git a/packages/mongo/package.js b/packages/mongo/package.js index 7d720c31a6..01d88b3e59 100644 --- a/packages/mongo/package.js +++ b/packages/mongo/package.js @@ -9,7 +9,7 @@ Package.describe({ summary: "Adaptor for using MongoDB and Minimongo over DDP", - version: '1.0.10-ipc.0' + version: '1.0.10-rc.1' }); Npm.depends({ diff --git a/packages/oauth-encryption/package.js b/packages/oauth-encryption/package.js index 6b4a805109..5d6f112bf4 100644 --- a/packages/oauth-encryption/package.js +++ b/packages/oauth-encryption/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Encrypt account secrets stored in the database", - version: '1.0.2-ipc.0' + version: '1.0.2-rc.1' }); Package.onUse(function (api) { diff --git a/packages/oauth/package.js b/packages/oauth/package.js index 1f994b9dd1..2bad38d8e9 100644 --- a/packages/oauth/package.js +++ b/packages/oauth/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Common code for OAuth-based services", - version: "1.1.3-ipc.0" + version: "1.1.3-rc.1" }); Package.onUse(function (api) { diff --git a/packages/oauth1/package.js b/packages/oauth1/package.js index 703a2fc8f9..62072870f1 100644 --- a/packages/oauth1/package.js +++ b/packages/oauth1/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Common code for OAuth1-based login services", - version: "1.1.3-ipc.0" + version: "1.1.3-rc.1" }); Package.onUse(function (api) { diff --git a/packages/oauth2/package.js b/packages/oauth2/package.js index 5f480aa260..f967f293de 100644 --- a/packages/oauth2/package.js +++ b/packages/oauth2/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Common code for OAuth2-based login services", - version: "1.1.2-ipc.0" + version: "1.1.2-rc.1" }); Package.onUse(function (api) { diff --git a/packages/observe-sequence/package.js b/packages/observe-sequence/package.js index ab1794ebb4..e973bf6980 100644 --- a/packages/observe-sequence/package.js +++ b/packages/observe-sequence/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Observe changes to various sequence types such as arrays, cursors and objects", - version: "1.0.4-ipc.0" + version: "1.0.4-rc.1" }); Package.onUse(function (api) { diff --git a/packages/ordered-dict/package.js b/packages/ordered-dict/package.js index b3a7ee5d73..d0d7cfaf83 100644 --- a/packages/ordered-dict/package.js +++ b/packages/ordered-dict/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Ordered traversable dictionary with a mutable ordering", - version: '1.0.2-ipc.0' + version: '1.0.2-rc.1' }); Package.onUse(function (api) { diff --git a/packages/package-stats-opt-out/package.js b/packages/package-stats-opt-out/package.js index c24813df66..05b45fb40d 100644 --- a/packages/package-stats-opt-out/package.js +++ b/packages/package-stats-opt-out/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Opt out of sending package stats", - version: '1.0.2-ipc.0' + version: '1.0.2-rc.1' }); Package.onUse(function (api) { diff --git a/packages/package-version-parser/package.js b/packages/package-version-parser/package.js index eb7c2941bf..0ba5c2d48e 100644 --- a/packages/package-version-parser/package.js +++ b/packages/package-version-parser/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Parses Meteor Smart Package version string", - version: "2.0.3-ipc.1" + version: "2.0.3-rc.1" }); Npm.depends({ diff --git a/packages/preserve-inputs/package.js b/packages/preserve-inputs/package.js index e24a5a9579..0ce98575fc 100644 --- a/packages/preserve-inputs/package.js +++ b/packages/preserve-inputs/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Deprecated package (now empty)", - version: "1.0.2-ipc.0" + version: "1.0.2-rc.1" }); Package.onUse(function (api) { diff --git a/packages/random/package.js b/packages/random/package.js index 23112e604e..feb4cecf31 100644 --- a/packages/random/package.js +++ b/packages/random/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Random number generator and utilities", - version: '1.0.2-ipc.0' + version: '1.0.2-rc.1' }); Package.onUse(function (api) { diff --git a/packages/reactive-dict/package.js b/packages/reactive-dict/package.js index 9514bf7e71..7374494b62 100644 --- a/packages/reactive-dict/package.js +++ b/packages/reactive-dict/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Reactive dictionary", - version: '1.0.5-ipc.0' + version: '1.0.5-rc.1' }); Package.onUse(function (api) { diff --git a/packages/reactive-var/package.js b/packages/reactive-var/package.js index 3c442ffde4..a12f5de74c 100644 --- a/packages/reactive-var/package.js +++ b/packages/reactive-var/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Reactive variable", - version: '1.0.4-ipc.0' + version: '1.0.4-rc.1' }); Package.onUse(function (api) { diff --git a/packages/reload-safetybelt/package.js b/packages/reload-safetybelt/package.js index b556519f51..e129981a36 100644 --- a/packages/reload-safetybelt/package.js +++ b/packages/reload-safetybelt/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Reload safety belt for multi-server deployments", - version: '1.0.2-ipc.0' + version: '1.0.2-rc.1' }); Package.onUse(function (api) { diff --git a/packages/reload/package.js b/packages/reload/package.js index 1da87ded6b..57ca2bd11d 100644 --- a/packages/reload/package.js +++ b/packages/reload/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Reload the page while preserving application state.", - version: '1.1.2-ipc.0' + version: '1.1.2-rc.1' }); Package.onUse(function (api) { diff --git a/packages/retry/package.js b/packages/retry/package.js index dfa51e974c..781bc9d6b0 100644 --- a/packages/retry/package.js +++ b/packages/retry/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Retry logic with exponential backoff", - version: '1.0.2-ipc.0' + version: '1.0.2-rc.1' }); Package.onUse(function (api) { diff --git a/packages/routepolicy/package.js b/packages/routepolicy/package.js index e8e539c627..818c69be14 100644 --- a/packages/routepolicy/package.js +++ b/packages/routepolicy/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "route policy declarations", - version: '1.0.3-ipc.0' + version: '1.0.3-rc.1' }); Package.onUse(function (api) { diff --git a/packages/service-configuration/package.js b/packages/service-configuration/package.js index 29692806bf..2e688c23fd 100644 --- a/packages/service-configuration/package.js +++ b/packages/service-configuration/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Manage the configuration for third-party services", - version: "1.0.3-ipc.0" + version: "1.0.3-rc.1" }); Package.onUse(function(api) { diff --git a/packages/session/package.js b/packages/session/package.js index 3114fc2071..36a32b5dec 100644 --- a/packages/session/package.js +++ b/packages/session/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Session variable", - version: '1.0.5-ipc.0' + version: '1.0.5-rc.1' }); Package.onUse(function (api) { diff --git a/packages/sha/package.js b/packages/sha/package.js index 2b76239e80..918e32f815 100644 --- a/packages/sha/package.js +++ b/packages/sha/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "SHA256 implementation", - version: "1.0.2-ipc.0" + version: "1.0.2-rc.1" }); Package.onUse(function (api) { diff --git a/packages/showdown/package.js b/packages/showdown/package.js index f88fff71cd..86e9fafa58 100644 --- a/packages/showdown/package.js +++ b/packages/showdown/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Moved to the 'markdown' package", - version: '1.0.3-ipc.0' + version: '1.0.3-rc.1' }); Package.onUse(function (api) { diff --git a/packages/spacebars-compiler/package.js b/packages/spacebars-compiler/package.js index 78782e040e..da77ba5a0e 100644 --- a/packages/spacebars-compiler/package.js +++ b/packages/spacebars-compiler/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Compiler for Spacebars template language", - version: '1.0.4-ipc.0' + version: '1.0.4-rc.1' }); Package.onUse(function (api) { diff --git a/packages/spacebars-tests/package.js b/packages/spacebars-tests/package.js index 4b1cc66340..eb5063dead 100644 --- a/packages/spacebars-tests/package.js +++ b/packages/spacebars-tests/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Additional tests for Spacebars", - version: '1.0.2-ipc.0' + version: '1.0.2-rc.1' }); // These tests are in a separate package to avoid a circular dependency diff --git a/packages/spacebars/package.js b/packages/spacebars/package.js index a4fd7715d7..255ed5e96e 100644 --- a/packages/spacebars/package.js +++ b/packages/spacebars/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Handlebars-like template language for Meteor", - version: '1.0.4-ipc.0' + version: '1.0.4-rc.1' }); // For more, see package `spacebars-compiler`, which is used by diff --git a/packages/spiderable/package.js b/packages/spiderable/package.js index fa755e0b5a..214968c87c 100644 --- a/packages/spiderable/package.js +++ b/packages/spiderable/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Makes the application crawlable to web spiders", - version: "1.0.6-ipc.0" + version: "1.0.6-rc.1" }); Package.onUse(function (api) { diff --git a/packages/srp/package.js b/packages/srp/package.js index 32b462f654..cd7e8df7ab 100644 --- a/packages/srp/package.js +++ b/packages/srp/package.js @@ -5,7 +5,7 @@ Package.describe({ summary: "Library for Secure Remote Password (SRP) exchanges", - version: "1.0.2-ipc.0" + version: "1.0.2-rc.1" }); Package.onUse(function (api) { diff --git a/packages/standard-app-packages/package.js b/packages/standard-app-packages/package.js index 7675fea507..5596a8dc14 100644 --- a/packages/standard-app-packages/package.js +++ b/packages/standard-app-packages/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Moved to meteor-platform", - version: '1.0.4-ipc.0' + version: '1.0.4-rc.1' }); Package.onUse(function (api) { diff --git a/packages/star-translate/package.js b/packages/star-translate/package.js index 4100f6b073..bc8cdbfcff 100644 --- a/packages/star-translate/package.js +++ b/packages/star-translate/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "A package for translating old bundles into stars", - version: "1.0.5-ipc.0" + version: "1.0.5-rc.1" }); Package.onUse(function (api) { diff --git a/packages/startup/package.js b/packages/startup/package.js index 5d63b90c73..da6aba428b 100644 --- a/packages/startup/package.js +++ b/packages/startup/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Deprecated package (now empty)", - version: "1.0.2-ipc.0" + version: "1.0.2-rc.1" }); Package.onUse(function (api) { diff --git a/packages/stylus/package.js b/packages/stylus/package.js index f0022de6c4..f092355129 100644 --- a/packages/stylus/package.js +++ b/packages/stylus/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: 'Expressive, dynamic, robust CSS', - version: "1.0.6-ipc.0" + version: "1.0.6-rc.1" }); Package.registerBuildPlugin({ diff --git a/packages/templating/package.js b/packages/templating/package.js index ee4f9129af..ccb22e2521 100644 --- a/packages/templating/package.js +++ b/packages/templating/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Allows templates to be defined in .html files", - version: '1.0.10-ipc.0' + version: '1.0.10-rc.1' }); // Today, this package is closely intertwined with Handlebars, meaning diff --git a/packages/test-helpers/package.js b/packages/test-helpers/package.js index f0d709a142..6e3aef014f 100644 --- a/packages/test-helpers/package.js +++ b/packages/test-helpers/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Utility functions for tests", - version: '1.0.3-ipc.0' + version: '1.0.3-rc.1' }); Package.onUse(function (api) { diff --git a/packages/test-in-browser/package.js b/packages/test-in-browser/package.js index bdd8d74186..b5d637c1cd 100644 --- a/packages/test-in-browser/package.js +++ b/packages/test-in-browser/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Run tests interactively in the browser", - version: '1.0.6-ipc.0' + version: '1.0.6-rc.1' }); Package.onUse(function (api) { diff --git a/packages/test-in-console/package.js b/packages/test-in-console/package.js index 2c65d1bd7f..b2401f5827 100644 --- a/packages/test-in-console/package.js +++ b/packages/test-in-console/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Run tests noninteractively, with results going to the console.", - version: '1.0.4-ipc.0' + version: '1.0.4-rc.1' }); Package.onUse(function (api) { diff --git a/packages/test-server-tests-in-console-once/package.js b/packages/test-server-tests-in-console-once/package.js index 703116714f..e0da25f9c1 100644 --- a/packages/test-server-tests-in-console-once/package.js +++ b/packages/test-server-tests-in-console-once/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Run server tests noninteractively, with results going to the console.", - version: '1.0.2-ipc.0' + version: '1.0.2-rc.1' }); Package.onUse(function (api) { diff --git a/packages/tinytest/package.js b/packages/tinytest/package.js index 1d3d12df1f..06bf1a48e9 100644 --- a/packages/tinytest/package.js +++ b/packages/tinytest/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Tiny testing framework", - version: '1.0.4-ipc.0' + version: '1.0.4-rc.1' }); Package.onUse(function (api) { diff --git a/packages/tracker/package.js b/packages/tracker/package.js index bb6d69a84a..d19f67fd7e 100644 --- a/packages/tracker/package.js +++ b/packages/tracker/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Dependency tracker to allow reactive callbacks", - version: '1.0.4-ipc.0' + version: '1.0.4-rc.1' }); Package.onUse(function (api) { diff --git a/packages/twitter/package.js b/packages/twitter/package.js index 5d9d64752b..2839a3b0f9 100644 --- a/packages/twitter/package.js +++ b/packages/twitter/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Twitter OAuth flow", - version: '1.1.3-ipc.0' + version: '1.1.3-rc.1' }); Package.onUse(function(api) { diff --git a/packages/ui/package.js b/packages/ui/package.js index 34d963ace3..7e620f056e 100644 --- a/packages/ui/package.js +++ b/packages/ui/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Deprecated: Use the 'blaze' package", - version: '1.0.5-ipc.0' + version: '1.0.5-rc.1' }); Package.onUse(function (api) { diff --git a/packages/underscore-tests/package.js b/packages/underscore-tests/package.js index 576f2ceb30..1d6791d355 100644 --- a/packages/underscore-tests/package.js +++ b/packages/underscore-tests/package.js @@ -2,7 +2,7 @@ Package.describe({ // These tests can't be directly in the underscore packages since // Tinytest depends on underscore summary: "Tests for the underscore package", - version: '1.0.2-ipc.0' + version: '1.0.2-rc.1' }); Package.onTest(function (api) { diff --git a/packages/underscore/package.js b/packages/underscore/package.js index a550d23186..4138d221b8 100644 --- a/packages/underscore/package.js +++ b/packages/underscore/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Collection of small helpers: _.map, _.each, ...", - version: '1.0.2-ipc.0' + version: '1.0.2-rc.1' }); Package.onUse(function (api) { diff --git a/packages/url/package.js b/packages/url/package.js index afdc2e2d84..abdf6dba0a 100644 --- a/packages/url/package.js +++ b/packages/url/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Utility code for constructing URLs", - version: "1.0.3-ipc.0" + version: "1.0.3-rc.1" }); Package.onUse(function(api) { diff --git a/packages/webapp-hashing/package.js b/packages/webapp-hashing/package.js index 7e702d07d2..7cebcd0694 100644 --- a/packages/webapp-hashing/package.js +++ b/packages/webapp-hashing/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Used internally by WebApp. Knows how to hash programs from manifests.", - version: "1.0.2-ipc.0" + version: "1.0.2-rc.1" }); Package.onUse(function(api) { diff --git a/packages/webapp/package.js b/packages/webapp/package.js index 650bcfce0e..e65ade35f9 100644 --- a/packages/webapp/package.js +++ b/packages/webapp/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Serves a Meteor app over HTTP", - version: '1.1.5-ipc.1' + version: '1.1.5-rc.1' }); Npm.depends({connect: "2.9.0", diff --git a/packages/weibo/package.js b/packages/weibo/package.js index 443485e054..a27093d6e1 100644 --- a/packages/weibo/package.js +++ b/packages/weibo/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Weibo OAuth flow", - version: '1.1.2-ipc.0' + version: '1.1.2-rc.1' }); Package.onUse(function(api) { diff --git a/packages/xmlbuilder/package.js b/packages/xmlbuilder/package.js index e6b78a2d3f..5c5db8d77a 100644 --- a/packages/xmlbuilder/package.js +++ b/packages/xmlbuilder/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "An XML builder for node.js similar to java-xmlbuilder.", - version: '2.4.5-ipc.0' + version: '2.4.5-rc.1' }); Npm.depends({ diff --git a/scripts/admin/meteor-release-experimental.json b/scripts/admin/meteor-release-experimental.json index 4e5e57b5bd..83615b7281 100644 --- a/scripts/admin/meteor-release-experimental.json +++ b/scripts/admin/meteor-release-experimental.json @@ -1,6 +1,6 @@ { "track": "METEOR", - "version": "1.0.2-test-spring", + "version": "1.0.2-rc.1", "recommended": false, "official": false, "description": "An RC of Meteor 1.0." From fd79f43f4b518c0f6ab790ed578b099593179bce Mon Sep 17 00:00:00 2001 From: David Glasser Date: Fri, 12 Dec 2014 07:37:57 -0800 Subject: [PATCH 03/60] Fix app build for Cordova Caught by a zillion tests, oops. But not by --prepare-app! --- tools/bundler.js | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/tools/bundler.js b/tools/bundler.js index b03dff74be..6184f4501b 100644 --- a/tools/bundler.js +++ b/tools/bundler.js @@ -2015,11 +2015,14 @@ exports.bundle = function (options) { }; // Create a Isopack object that represents the app + // XXX should this be part of prepareProjectForBuild and get cached? + // at the very least, would speed up deploy after build. var packageSource = new PackageSource; packageSource.initFromAppDir(projectContext, exports.ignoreFiles); var app = compiler.compile(packageSource, { packageMap: projectContext.packageMap, - isopackCache: projectContext.isopackCache + isopackCache: projectContext.isopackCache, + includeCordovaUnibuild: projectContext.platformList.usesCordova() }).isopack; var clientTargets = []; @@ -2159,7 +2162,9 @@ exports.buildJsImage = function (options) { var isopack = compiler.compile(packageSource, { packageMap: options.packageMap, - isopackCache: options.isopackCache + isopackCache: options.isopackCache, + // There's no web.cordova unibuild here anyway, just os. + includeCordovaUnibuild: false }).isopack; var target = new JsImageTarget({ From e4b32c9dc53b683748dd85e929cb0b90a8f3cded Mon Sep 17 00:00:00 2001 From: David Glasser Date: Fri, 12 Dec 2014 07:53:45 -0800 Subject: [PATCH 04/60] 1.0.2-rc.2 --- packages/meteor-tool/package.js | 2 +- scripts/admin/meteor-release-experimental.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/meteor-tool/package.js b/packages/meteor-tool/package.js index b35bddc911..bcad1463b4 100644 --- a/packages/meteor-tool/package.js +++ b/packages/meteor-tool/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "The Meteor command-line tool", - version: '1.0.37-rc.1' + version: '1.0.37-rc.2' }); Package.includeTool(); diff --git a/scripts/admin/meteor-release-experimental.json b/scripts/admin/meteor-release-experimental.json index 83615b7281..ca090a6284 100644 --- a/scripts/admin/meteor-release-experimental.json +++ b/scripts/admin/meteor-release-experimental.json @@ -1,6 +1,6 @@ { "track": "METEOR", - "version": "1.0.2-rc.1", + "version": "1.0.2-rc.2", "recommended": false, "official": false, "description": "An RC of Meteor 1.0." From f1c0654e33e7f0b0101cdb770908bf426fe1c80f Mon Sep 17 00:00:00 2001 From: David Glasser Date: Fri, 12 Dec 2014 17:36:29 -0800 Subject: [PATCH 05/60] "Fix" bizarre memory corruption (?) bug See #3285. For some reason, in some mostly-replicatable circumstances, this is necessary. Clearly some sort of V8/Node/Fibers bug. --- tools/package-map.js | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/tools/package-map.js b/tools/package-map.js index 4ffaed6da7..99ec76990d 100644 --- a/tools/package-map.js +++ b/tools/package-map.js @@ -40,7 +40,14 @@ _.extend(exports.PackageMap.prototype, { eachPackage: function (iterator) { var self = this; _.each(self._map, function (info, packageName) { - iterator(packageName, _.clone(info)); + // For reasons that are super unclear, if this `_.clone` is inlined into + // the `iterator` call, the value produced can mysteriously turn into + // undefined on the way into `iterator`. Presumably some sort of memory + // corruption, maybe Fiber-related? Trying to minimize has been an + // exercise in nondeterminism. But this does seem to be a sure-fire way to + // fix it, for now. Who knows why, and who knows when it will recur again. + var infoClone = _.clone(info); + iterator(packageName, infoClone); }); }, getInfo: function (packageName) { From c120069ff64f5032285b1c881a300066d52c03f0 Mon Sep 17 00:00:00 2001 From: David Glasser Date: Fri, 12 Dec 2014 17:38:27 -0800 Subject: [PATCH 06/60] 1.0.2-rc.3 --- packages/meteor-tool/package.js | 2 +- scripts/admin/meteor-release-experimental.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/meteor-tool/package.js b/packages/meteor-tool/package.js index bcad1463b4..e50bea366d 100644 --- a/packages/meteor-tool/package.js +++ b/packages/meteor-tool/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "The Meteor command-line tool", - version: '1.0.37-rc.2' + version: '1.0.37-rc.3' }); Package.includeTool(); diff --git a/scripts/admin/meteor-release-experimental.json b/scripts/admin/meteor-release-experimental.json index ca090a6284..f3d366b6b6 100644 --- a/scripts/admin/meteor-release-experimental.json +++ b/scripts/admin/meteor-release-experimental.json @@ -1,6 +1,6 @@ { "track": "METEOR", - "version": "1.0.2-rc.2", + "version": "1.0.2-rc.3", "recommended": false, "official": false, "description": "An RC of Meteor 1.0." From 56ceae09aadc3968ca86d3053c81bf664b911fda Mon Sep 17 00:00:00 2001 From: David Glasser Date: Fri, 12 Dec 2014 18:19:53 -0800 Subject: [PATCH 07/60] rough draft of History.md for 1.0.2 --- History.md | 46 ++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/History.md b/History.md index e40d76d6ae..2cacb2e9cb 100644 --- a/History.md +++ b/History.md @@ -1,5 +1,30 @@ ## v.NEXT + +## v1.0.2 + +* Tool performance improvements XXX + - The entire build tool has been refactored with an eye to correctness, + maintainability, and performance + - We refresh the package catalog for build commands only when an error + occurs that could be fixed by a refresh, not for every command + - Constraint solver is now run only once per command + - Packages are now cached inside the app directory + - Mongo started in parallel with app build + - Constraint solver no longer leaves a `versions.json` file in your + packages; when publishing a package that is not inside an app, it uses a + similar `.versions` file + - Constraint edges are by package, not unibuild, and plugins must use the + same version of packages as their surrounding package (when built from + local source) + +* `meteor shell` XXX + +* `meteor debug` improvements ba89b7d and maybe e63ac7c + +* Output from the command-line tool is now word-wrapped to the width of your + terminal. + * Spacebars: Allow curly braces to be escaped, with special sequences `{{|` and `{{{|` to insert a literal `{{` or `{{{`. @@ -9,8 +34,6 @@ * Some packages are no longer released as part of the core release process: amplify, backbone, bootstrap, d3, jquery-history, and jquery-layout. -* Rework how Meteor packages get loaded into the command-line tool - * Remove support for the undocumented earliestCompatibleVersion feature of the package system. @@ -24,6 +47,22 @@ * `Blaze.remove` on a template's view now correctly removes the DOM when the template was inserted using `Blaze.renderWithData`. #3130 +* Fix crash when two plugins defined source handlers for the same + extension. #3015 #3180 + +* Fix crash when a package version contained a dot-separated prerelease part + with both digits and non-digits. #3147 + +* Fix bug (introduced in 0.9.3) where the warning about using experimental + versions of packages was printed too often. + +* Fix bug (introduced in 1.0) where `meteor update --patch` crashed. + +* Fix bug (introduced in 0.9.4) where banners about new releases could be + printed too many times. + +* Make query parameter available to oauth1 services 6b8221d + * Upgraded dependencies: - node: 0.10.33 (from 0.10.29) - source-map-support: 0.2.8 (from 0.2.5) @@ -35,10 +74,13 @@ - phantomjs npm module: 1.9.12 (from 1.8.1-1) - http-proxy: 1.6.0 (from a fork of 1.0.2) - esprima: 1.2.2 (from an unreleased 1.1-era commit) + - escope: 1.0.1 (from 1.0.0) - openssl in mongo: 1.0.1j (from 1.0.1g) - faye-websocket: 0.8.1 (from using websocket-driver instead) - MongoDB: 2.4.12 (from 2.4.9) +XXX include contributor list + ## v1.0.1 From 0f00c9e482b24a26c04c10725819633362e7a637 Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Fri, 12 Dec 2014 17:34:49 -0500 Subject: [PATCH 08/60] Fall back to fs.watchFile if pathwatcher.watch does not work. Fixes #3284. --- tools/run-all.js | 5 ++ tools/safe-pathwatcher.js | 128 ++++++++++++++++++++++++++++++++++++++ tools/watch.js | 12 ++-- 3 files changed, 140 insertions(+), 5 deletions(-) create mode 100644 tools/safe-pathwatcher.js diff --git a/tools/run-all.js b/tools/run-all.js index f0c273686a..402d6669f8 100644 --- a/tools/run-all.js +++ b/tools/run-all.js @@ -1,4 +1,5 @@ var _ = require('underscore'); +var path = require('path'); var Fiber = require('fibers'); var Future = require('fibers/future'); @@ -83,6 +84,10 @@ var Runner = function (options) { self.updater = new Updater; + require("./safe-pathwatcher.js").testDirectory( + path.join(self.projectContext.projectDir, ".meteor", "local") + ); + self.appRunner = new AppRunner({ projectContext: self.projectContext, port: self.appPort, diff --git a/tools/safe-pathwatcher.js b/tools/safe-pathwatcher.js new file mode 100644 index 0000000000..9100d27b7a --- /dev/null +++ b/tools/safe-pathwatcher.js @@ -0,0 +1,128 @@ +var fs = require("fs"); +var path = require("path"); +var Future = require("fibers/future"); +var _ = require("underscore"); +var switchFunctions = []; +var pollingInterval = 500; +var canUsePathwatcher = true; + +// The pathwatcher library does not work on all platforms and file systems +// (notably, network file systems), so we have to do a little feature +// detection to see if we can use it. + +// We optimistically watch files using pathwatcher.watch until one of the +// directories tested fails to support file system events. When that +// happens, we switch all previously created pathwatcher watches to use +// fs.watchFile, and set canUsePathwatcher to false so that all future +// watches will use fs.watchFile as well. + +// There is some theoretical risk of missing file system events from +// pathwatcher watches created before we discover that we can't use +// pathwatcher.watch, but the window of time where that can happen is so +// small (200ms) that developers are highly unlikely to notice. + +exports.testDirectory = function(dir) { + if (! canUsePathwatcher) { + // No need to test this directory if we've already decided we can't + // use pathwatcher.watch. + return; + } + + var canaryFile = path.join( + dir, "canary$" + Math.random().toString(36).slice(2) + ); + + fs.unlink(canaryFile, function(ignoredError) { + function cleanUp(arg) { + if (watcher) { + watcher.close(); + watcher = null; + fs.unlink(canaryFile, function(ignoredError) {}); + } + } + + function fallBack() { + // Disallow future uses of pathwatcher.watch. + canUsePathwatcher = false; + + // Convert any pathwatcher watchers we previously created to + // fs.watchFile watchers. + _.each(switchFunctions.splice(0), function(switchToPolling) { + switchToPolling(); + }); + + require("./console.js").Console.warn( + "Falling back to fs.watchFile instead of pathwatcher.watch..." + ); + } + + // Watch the candidate directory using pathwatcher.watch. + var watcher = require("pathwatcher").watch(dir, cleanUp); + + // Create a new file to trigger a change event (hopefully). It's fine + // if other events sneak in while we're waiting, since all we care + // about is whether pathwatcher.watch works. + fs.writeFile(canaryFile, "ok", function(err) { + if (err) { + cleanUp(); + throw err; + } + }); + + // Set a time limit of 200ms for the change event. + setTimeout(function() { + if (watcher) { + cleanUp(); + fallBack(); + } + }, 200); + }); +}; + +exports.watch = function(absPath, callback) { + if (canUsePathwatcher) { + // In principle, all this logic for watching files should continue to + // work perfectly if we substitute fs.watch for pathwatcher.watch, but + // that will probably have to wait until we upgrade Node to v0.11.x, + // so that fs.watch is more reliable. + var watcher = require("pathwatcher").watch(absPath, callback); + + var closed = false; + var switched = false; + + switchFunctions.push(function switchToPolling() { + if (! switched && ! closed) { + switched = true; + watcher.close(); + + // Re-watch the file using fs.watchFile instead. + fs.watchFile(absPath, { + interval: pollingInterval + }, callback); + } + }); + + return { + close: function close() { + if (! closed) { + closed = true; + if (switched) { + fs.unwatchFile(absPath, callback); + } else { + watcher.close(); + } + } + } + }; + } + + fs.watchFile(absPath, { + interval: pollingInterval + }, callback); + + return { + close: function close() { + fs.unwatchFile(absPath, callback); + } + }; +}; diff --git a/tools/watch.js b/tools/watch.js index 7a301869f8..db343c9845 100644 --- a/tools/watch.js +++ b/tools/watch.js @@ -3,6 +3,7 @@ var path = require("path"); var _ = require('underscore'); var Future = require('fibers/future'); var fiberHelpers = require('./fiber-helpers.js'); +var pathwatcher = require("./safe-pathwatcher.js"); // Watch for changes to a set of files, and the first time that any of // the files change, call a user-provided callback. (If you want a @@ -411,12 +412,13 @@ _.extend(Watcher.prototype, { var onWatchEvent = self._makeWatchEventCallback(absPath); + if (self.justCheckOnce) { + onWatchEvent(); + return; + } + try { - // In principle, all this logic for watching files should continue - // to work perfectly well if we substitute fs.watch for - // pathwatcher.watch, but that will probably have to wait until we - // upgrade Node to v0.11.x, so that fs.watch is more reliable. - entry.watcher = require('pathwatcher').watch(absPath, onWatchEvent); + entry.watcher = pathwatcher.watch(absPath, onWatchEvent); } catch (err) { if (err.code === "ENOENT" || // For fs.watch. From 651348f6f50fa9d14e265d8b8ac8aafd1a392181 Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Mon, 15 Dec 2014 11:54:59 -0500 Subject: [PATCH 09/60] Allow forcing fs.watchFile with an environment variable. --- tools/safe-pathwatcher.js | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/tools/safe-pathwatcher.js b/tools/safe-pathwatcher.js index 9100d27b7a..2bc098d1e2 100644 --- a/tools/safe-pathwatcher.js +++ b/tools/safe-pathwatcher.js @@ -4,7 +4,10 @@ var Future = require("fibers/future"); var _ = require("underscore"); var switchFunctions = []; var pollingInterval = 500; -var canUsePathwatcher = true; + +// Set this environment variable to a truthy value to force the use of +// fs.watchFile instead of pathwatcher.watch. +var canUsePathwatcher = !process.env.METEOR_WATCH_FORCE_POLLING; // The pathwatcher library does not work on all platforms and file systems // (notably, network file systems), so we have to do a little feature @@ -18,8 +21,8 @@ var canUsePathwatcher = true; // There is some theoretical risk of missing file system events from // pathwatcher watches created before we discover that we can't use -// pathwatcher.watch, but the window of time where that can happen is so -// small (200ms) that developers are highly unlikely to notice. +// pathwatcher.watch, but the window of time where that can happen is +// small enough (500ms) that developers are highly unlikely to care. exports.testDirectory = function(dir) { if (! canUsePathwatcher) { @@ -69,13 +72,13 @@ exports.testDirectory = function(dir) { } }); - // Set a time limit of 200ms for the change event. + // Set a time limit of 500ms for the change event. setTimeout(function() { if (watcher) { cleanUp(); fallBack(); } - }, 200); + }, 500); }); }; From e8bef27a5e4f643db7c6047a7a37bd1f71c28a84 Mon Sep 17 00:00:00 2001 From: David Glasser Date: Mon, 15 Dec 2014 18:12:53 -0800 Subject: [PATCH 10/60] Be more specific about how to run meteor update --- tools/commands-packages.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tools/commands-packages.js b/tools/commands-packages.js index 0f977a7f8b..c2636e66e9 100644 --- a/tools/commands-packages.js +++ b/tools/commands-packages.js @@ -1571,8 +1571,11 @@ var maybeUpdateRelease = function (options) { // command even ran. They could equivalently have run 'meteor // help --release xyz'. Console.info( - "Installed. Run " + Console.command("'meteor update' ") + - "inside of a particular project directory to update that project to " + + "Installed. Run", + Console.command( + "'meteor update --release " + + release.current.getDisplayName({ noPrefix: true } + "'")), + "inside of a particular project directory to update that project to", release.current.getDisplayName() + "."); } else { // We get here if the user ran 'meteor update' and we didn't From f5dc40765c3aa876f8fbe42c7835643359918ecc Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Mon, 15 Dec 2014 17:42:52 -0500 Subject: [PATCH 11/60] Package version bumps. --- packages/less/package.js | 2 +- packages/meteor-tool/package.js | 2 +- packages/minifiers/package.js | 2 +- packages/templating/package.js | 2 +- scripts/admin/meteor-release-experimental.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/less/package.js b/packages/less/package.js index 72922f5f24..5dcf51a627 100644 --- a/packages/less/package.js +++ b/packages/less/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "The dynamic stylesheet language", - version: "1.0.12-rc.1" + version: "1.0.12-rc.2" }); Package.registerBuildPlugin({ diff --git a/packages/meteor-tool/package.js b/packages/meteor-tool/package.js index e50bea366d..7fb6600e3f 100644 --- a/packages/meteor-tool/package.js +++ b/packages/meteor-tool/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "The Meteor command-line tool", - version: '1.0.37-rc.3' + version: '1.0.37-rc.6' }); Package.includeTool(); diff --git a/packages/minifiers/package.js b/packages/minifiers/package.js index 1515f7bb78..861bcd6f44 100644 --- a/packages/minifiers/package.js +++ b/packages/minifiers/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "JavaScript and CSS minifiers", - version: "1.1.3-rc.1" + version: "1.1.3-rc.2" }); Npm.depends({ diff --git a/packages/templating/package.js b/packages/templating/package.js index ccb22e2521..58d1772cb7 100644 --- a/packages/templating/package.js +++ b/packages/templating/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Allows templates to be defined in .html files", - version: '1.0.10-rc.1' + version: '1.0.10-rc.2' }); // Today, this package is closely intertwined with Handlebars, meaning diff --git a/scripts/admin/meteor-release-experimental.json b/scripts/admin/meteor-release-experimental.json index f3d366b6b6..3479a095f3 100644 --- a/scripts/admin/meteor-release-experimental.json +++ b/scripts/admin/meteor-release-experimental.json @@ -1,6 +1,6 @@ { "track": "METEOR", - "version": "1.0.2-rc.3", + "version": "1.0.2-rc.5", "recommended": false, "official": false, "description": "An RC of Meteor 1.0." From bd3e276f3315766d3955f5db04fc40f049602ecf Mon Sep 17 00:00:00 2001 From: David Glasser Date: Mon, 15 Dec 2014 22:51:30 -0800 Subject: [PATCH 12/60] Move pathwatcher fallback message to debug level --- tools/safe-pathwatcher.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/safe-pathwatcher.js b/tools/safe-pathwatcher.js index 2bc098d1e2..e6499414c1 100644 --- a/tools/safe-pathwatcher.js +++ b/tools/safe-pathwatcher.js @@ -54,7 +54,7 @@ exports.testDirectory = function(dir) { switchToPolling(); }); - require("./console.js").Console.warn( + require("./console.js").Console.debug( "Falling back to fs.watchFile instead of pathwatcher.watch..." ); } From 58321c3c58cd02ba19b806545cbbb2d87c31b8e4 Mon Sep 17 00:00:00 2001 From: Rahul Date: Sun, 14 Dec 2014 01:04:47 -0800 Subject: [PATCH 13/60] Don't force external links to open in a new tab Overriding user preference is a bad idea from a usability point of view. Just allow people to decide for themselves whether they want to navigate away to another page or open the link in a new tab using the controls provided them by the browser (eg. cmd-click, or the options in the right click menu). This also fixes the situation where someone might want to open an external link in the same tab, which is currently made impossible. --- docs/client/full-api/docs.js | 6 ------ 1 file changed, 6 deletions(-) diff --git a/docs/client/full-api/docs.js b/docs/client/full-api/docs.js index 7e5a44d8c5..ddce65b0ef 100644 --- a/docs/client/full-api/docs.js +++ b/docs/client/full-api/docs.js @@ -1,9 +1,3 @@ -Meteor.startup(function () { - // Make external links open in a new tab. - // XXX doesn't work in multipage - $('a:not([href^="#"])').attr('target', '_blank'); -}); - check_links = function() { var body = document.body.innerHTML; From 496d432856f75bf9d12d3af7aae5466f72da7064 Mon Sep 17 00:00:00 2001 From: ogourment Date: Sun, 7 Dec 2014 12:31:09 -0500 Subject: [PATCH 14/60] Make deny, allow example clear as to client/server As per explanation from Avital Oliver in meteor-talk, I suggest making this change in the doc to make it more clear that the example does not need to reside on *both* the client and server. The title of the sections (deny, allow) from the autoApiBox specify "server". The example got me confused as is. --- docs/client/basic/sections/collections.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/client/basic/sections/collections.md b/docs/client/basic/sections/collections.md index 2d1b35d49e..978820dba4 100644 --- a/docs/client/basic/sections/collections.md +++ b/docs/client/basic/sections/collections.md @@ -233,7 +233,7 @@ For example, we might say that users can only create new posts if the impersonate each other. ``` -// In a file loaded on the client and server +// In a file loaded on the server (ignored on the client) Posts.allow({ insert: function (userId, post) { // can only create posts where you are the author @@ -284,7 +284,7 @@ For example, if we wanted to override part of our `allow` rule above to exclude certain post titles: ``` -// In a file loaded on the client and server +// In a file loaded on the server (ignored on the client) Posts.deny({ insert: function (userId, post) { // Don't allow posts with a certain title From fe8297697be446e6df39df2d8301f943cdf58c74 Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Tue, 16 Dec 2014 02:07:40 -0500 Subject: [PATCH 15/60] Avoid pathwatcher.watch failures in testDirectory. --- tools/safe-pathwatcher.js | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/tools/safe-pathwatcher.js b/tools/safe-pathwatcher.js index e6499414c1..8fb7959a5f 100644 --- a/tools/safe-pathwatcher.js +++ b/tools/safe-pathwatcher.js @@ -35,6 +35,9 @@ exports.testDirectory = function(dir) { dir, "canary$" + Math.random().toString(36).slice(2) ); + // Make sure the test directory exists. + require("./files.js").mkdir_p(dir); + fs.unlink(canaryFile, function(ignoredError) { function cleanUp(arg) { if (watcher) { @@ -60,7 +63,19 @@ exports.testDirectory = function(dir) { } // Watch the candidate directory using pathwatcher.watch. - var watcher = require("pathwatcher").watch(dir, cleanUp); + var pathwatcher = require("pathwatcher"); + try { + var watcher = pathwatcher.watch(dir, cleanUp); + } catch (err) { + // If the directory did not exist, do not treat this failure as + // evidence against pathwatcher.watch, but simply return and leave + // canUsePathwatcher set to true. + if (err instanceof TypeError && + err.message === "Unable to watch path") { + return; + } + throw err; + } // Create a new file to trigger a change event (hopefully). It's fine // if other events sneak in while we're waiting, since all we care From 1307132c25d87472c9fd898303b915a2eb13b791 Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Tue, 16 Dec 2014 18:26:18 -0500 Subject: [PATCH 16/60] Create temporary pathwatcher test file in app directory. Previously we were testing pathwatcher.watch by creating a file in .meteor/local, but developers using Vagrant VMs often mount .meteor on a different (non-network) file system, for Mongo's sake. Writing the file directly in the app directory increases the likelihood that it will interact with pathwatcher in the same way as other source files the developer will be editing. Conflicts from devel: tools/safe-pathwatcher.js --- tools/run-all.js | 2 +- tools/safe-pathwatcher.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/run-all.js b/tools/run-all.js index 402d6669f8..ba071bd183 100644 --- a/tools/run-all.js +++ b/tools/run-all.js @@ -85,7 +85,7 @@ var Runner = function (options) { self.updater = new Updater; require("./safe-pathwatcher.js").testDirectory( - path.join(self.projectContext.projectDir, ".meteor", "local") + self.projectContext.projectDir ); self.appRunner = new AppRunner({ diff --git a/tools/safe-pathwatcher.js b/tools/safe-pathwatcher.js index 8fb7959a5f..4a8c5e4d7f 100644 --- a/tools/safe-pathwatcher.js +++ b/tools/safe-pathwatcher.js @@ -32,7 +32,7 @@ exports.testDirectory = function(dir) { } var canaryFile = path.join( - dir, "canary$" + Math.random().toString(36).slice(2) + dir, ".pathwatcher-canary-" + Math.random().toString(36).slice(2) ); // Make sure the test directory exists. @@ -80,7 +80,7 @@ exports.testDirectory = function(dir) { // Create a new file to trigger a change event (hopefully). It's fine // if other events sneak in while we're waiting, since all we care // about is whether pathwatcher.watch works. - fs.writeFile(canaryFile, "ok", function(err) { + fs.writeFile(canaryFile, "ok\n", function(err) { if (err) { cleanUp(); throw err; From 07f6cf41fbe81c619105f855d5a13e4114b3b6c0 Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Tue, 16 Dec 2014 19:23:12 -0500 Subject: [PATCH 17/60] Run file watching tests with both pathwatcher.watch and fs.watchFile. Running the two versions of the test in parallel is safe because they run in separate processes, and a good idea because it cuts the time taken by the test in half, from 36sec to 19sec. Conflicts from devel: tools/tests/old.js --- tools/tests/old.js | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/tools/tests/old.js b/tools/tests/old.js index c4f2466115..fc4862e63f 100644 --- a/tools/tests/old.js +++ b/tools/tests/old.js @@ -1,3 +1,5 @@ +var _ = require('underscore'); +var Future = require('fibers/future'); var selftest = require('../selftest.js'); var Sandbox = selftest.Sandbox; var Run = selftest.Run; @@ -18,13 +20,13 @@ var maybeFixRelease = function (env) { // they are very chatty about logging their progress to stdout/stderr. // // filename is interpreted relative to tools/selftests/old. -var runOldTest = function (filename) { +var runOldTest = function (filename, extraEnv) { var s = new Sandbox; var run = new Run(process.execPath, { args: [path.resolve(__dirname, 'old', filename)], - env: maybeFixRelease({ + env: maybeFixRelease(_.extend({ METEOR_TOOL_PATH: s.execPath - }) + }, extraEnv)) }); run.waitSecs(1000); run.expectExit(0); @@ -45,7 +47,17 @@ var runOldTest = function (filename) { // before 0.9.0. // selftest.define("watch", ["slow"], function () { - runOldTest('test-watch.js'); + var runFuture = runOldTest.future(); + + Future.wait( + runFuture('test-watch.js', { + METEOR_WATCH_FORCE_POLLING: 0 + }), + + runFuture('test-watch.js', { + METEOR_WATCH_FORCE_POLLING: 1 + }) + ); }); selftest.define("bundler-assets", ["checkout"], function () { From 5924a6a1406ad9e6893433979923652eb0515a23 Mon Sep 17 00:00:00 2001 From: David Glasser Date: Tue, 16 Dec 2014 17:04:53 -0800 Subject: [PATCH 18/60] Fix pathwatcher fallback tests - Future.wait does not throw - any non-empty env var counts as true --- tools/tests/old.js | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/tools/tests/old.js b/tools/tests/old.js index fc4862e63f..40919bcee4 100644 --- a/tools/tests/old.js +++ b/tools/tests/old.js @@ -28,7 +28,7 @@ var runOldTest = function (filename, extraEnv) { METEOR_TOOL_PATH: s.execPath }, extraEnv)) }); - run.waitSecs(1000); + run.waitSecs(40); run.expectExit(0); }; @@ -48,16 +48,19 @@ var runOldTest = function (filename, extraEnv) { // selftest.define("watch", ["slow"], function () { var runFuture = runOldTest.future(); - - Future.wait( - runFuture('test-watch.js', { - METEOR_WATCH_FORCE_POLLING: 0 - }), - + var futures = [ + // Run with pathwatcher (if possible) + runFuture('test-watch.js'), + // Run with fs.watchFile fallback runFuture('test-watch.js', { METEOR_WATCH_FORCE_POLLING: 1 }) - ); + ]; + Future.wait(futures); + // Throw if any threw. + _.each(futures, function (f) { + f.get(); + }); }); selftest.define("bundler-assets", ["checkout"], function () { From 747dd88bbf2cf7d44bb6fe5bcc63a65ba5ef390b Mon Sep 17 00:00:00 2001 From: Emily Stark Date: Tue, 16 Dec 2014 13:53:20 -0800 Subject: [PATCH 19/60] Clear password reset tokens on password change Conflicts from devel: History.md --- History.md | 2 ++ packages/accounts-password/password_server.js | 3 ++- packages/accounts-password/password_tests.js | 25 +++++++++++++++++++ 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/History.md b/History.md index 2cacb2e9cb..601301e13e 100644 --- a/History.md +++ b/History.md @@ -63,6 +63,8 @@ * Make query parameter available to oauth1 services 6b8221d +* Expire a user's password reset tokens when their password is changed. + * Upgraded dependencies: - node: 0.10.33 (from 0.10.29) - source-map-support: 0.2.8 (from 0.2.5) diff --git a/packages/accounts-password/password_server.js b/packages/accounts-password/password_server.js index 632a5bfce8..073520f86f 100644 --- a/packages/accounts-password/password_server.js +++ b/packages/accounts-password/password_server.js @@ -307,7 +307,8 @@ Meteor.methods({changePassword: function (oldPassword, newPassword) { $set: { 'services.password.bcrypt': hashed }, $pull: { 'services.resume.loginTokens': { hashedToken: { $ne: currentToken } } - } + }, + $unset: { 'services.password.reset': 1 } } ); diff --git a/packages/accounts-password/password_tests.js b/packages/accounts-password/password_tests.js index e485d301af..cda1c12a18 100644 --- a/packages/accounts-password/password_tests.js +++ b/packages/accounts-password/password_tests.js @@ -4,6 +4,10 @@ if (Meteor.isServer) { Meteor.methods({ getUserId: function () { return this.userId; + }, + getResetToken: function () { + var token = Meteor.users.findOne(this.userId).services.password.reset; + return token; } }); } @@ -167,6 +171,21 @@ if (Meteor.isClient) (function () { {username: this.username, email: this.email, password: this.password}, loggedInAs(this.username, test, expect)); }, + // Send a password reset email so that we can test that password + // reset tokens get deleted on password change. + function (test, expect) { + Meteor.call("forgotPassword", { email: this.email }, expect(function (error) { + test.isFalse(error); + })); + }, + function (test, expect) { + var self = this; + Meteor.call("getResetToken", expect(function (err, token) { + test.isFalse(err); + test.isTrue(token); + self.token = token; + })); + }, // change password with bad old password. we stay logged in. function (test, expect) { var self = this; @@ -180,6 +199,12 @@ if (Meteor.isClient) (function () { Accounts.changePassword(this.password, this.password2, loggedInAs(this.username, test, expect)); }, + function (test, expect) { + Meteor.call("getResetToken", expect(function (err, token) { + test.isFalse(err); + test.isFalse(token); + })); + }, logoutStep, // old password, failed login function (test, expect) { From d9feb32148d828871abded4703fe46a0522d9d85 Mon Sep 17 00:00:00 2001 From: Emily Stark Date: Tue, 16 Dec 2014 13:16:34 -0800 Subject: [PATCH 20/60] Disallow EJSON custom types as replacement documents in updates --- packages/mongo/mongo_driver.js | 10 +++++++++- packages/mongo/mongo_livedata_tests.js | 7 +++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/packages/mongo/mongo_driver.js b/packages/mongo/mongo_driver.js index 822746e336..4cc97f310f 100644 --- a/packages/mongo/mongo_driver.js +++ b/packages/mongo/mongo_driver.js @@ -320,7 +320,7 @@ MongoConnection.prototype._insert = function (collection_name, document, if (!(LocalCollection._isPlainObject(document) && !EJSON._isCustomType(document))) { sendError(new Error( - "Only documents (plain objects) may be inserted into MongoDB")); + "Only plain objects may be inserted into MongoDB")); return; } @@ -432,6 +432,14 @@ MongoConnection.prototype._update = function (collection_name, selector, mod, if (!mod || typeof mod !== 'object') throw new Error("Invalid modifier. Modifier must be an object."); + if (!(LocalCollection._isPlainObject(mod) && + !EJSON._isCustomType(mod))) { + throw new Error( + "Only plain objects may be used as replacement" + + " documents in MongoDB"); + return; + } + if (!options) options = {}; var write = self._maybeBeginWrite(); diff --git a/packages/mongo/mongo_livedata_tests.js b/packages/mongo/mongo_livedata_tests.js index 5fa38bb232..686992dfb0 100644 --- a/packages/mongo/mongo_livedata_tests.js +++ b/packages/mongo/mongo_livedata_tests.js @@ -1481,6 +1481,7 @@ testAsyncMulti('mongo-livedata - document with a custom type, ' + idGeneration, test.isFalse(err); test.isTrue(id); docId = id; + self.docId = docId; var cursor = self.coll.find(); test.equal(cursor.count(), 1); var inColl = self.coll.findOne(); @@ -1493,6 +1494,12 @@ testAsyncMulti('mongo-livedata - document with a custom type, ' + idGeneration, test.isTrue(err); test.isFalse(id); })); + }, function (test, expect) { + var self = this; + self.coll.update( + self.docId, new Dog("rover", "orange"), expect(function (err) { + test.isTrue(err); + })); } ]); From d7006103975e05cd46f6ff627bb54dca40d507af Mon Sep 17 00:00:00 2001 From: Emily Stark Date: Tue, 16 Dec 2014 13:24:39 -0800 Subject: [PATCH 21/60] Disallow mixed modifier/non-modifier fields in updates We expect modifiers to be either modifiers or replacements, not a mix. MongoDB does this check also, but do it in meteor too as a safety belt. --- packages/mongo/mongo_driver.js | 18 ++++++++++++++---- packages/mongo/mongo_livedata_tests.js | 2 +- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/packages/mongo/mongo_driver.js b/packages/mongo/mongo_driver.js index 4cc97f310f..18540ecb07 100644 --- a/packages/mongo/mongo_driver.js +++ b/packages/mongo/mongo_driver.js @@ -514,10 +514,20 @@ MongoConnection.prototype._update = function (collection_name, selector, mod, }; var isModificationMod = function (mod) { - for (var k in mod) - if (k.substr(0, 1) === '$') - return true; - return false; + var isReplace = false; + var isModify = false; + for (var k in mod) { + if (k.substr(0, 1) === '$') { + isModify = true; + } else { + isReplace = true; + } + } + if (isModify && isReplace) { + throw new Error( + "Update parameter cannot have both modifier and non-modifier fields."); + } + return isModify; }; var NUM_OPTIMISTIC_TRIES = 3; diff --git a/packages/mongo/mongo_livedata_tests.js b/packages/mongo/mongo_livedata_tests.js index 686992dfb0..75e351396d 100644 --- a/packages/mongo/mongo_livedata_tests.js +++ b/packages/mongo/mongo_livedata_tests.js @@ -3068,7 +3068,7 @@ Meteor.isServer && testAsyncMulti("mongo-livedata - update with replace forbidde test.throws(function () { c.update(id, { foo3: "bar3", $set: { blah: 1 } }); - }, "cannot be mixed"); + }, "cannot have both modifier and non-modifier fields"); test.equal(c.findOne(id), { _id: id, foo2: "bar2" }); } ]); From 6c43678bc059520279de876330eb7084bca53656 Mon Sep 17 00:00:00 2001 From: David Glasser Date: Tue, 16 Dec 2014 17:45:51 -0800 Subject: [PATCH 22/60] Clear two types of tokens on Accounts.setPassword --- History.md | 3 ++- packages/accounts-password/password_server.js | 7 ++++++- packages/accounts-password/password_tests.js | 13 ++++++++++++- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/History.md b/History.md index 601301e13e..4710c30295 100644 --- a/History.md +++ b/History.md @@ -63,7 +63,8 @@ * Make query parameter available to oauth1 services 6b8221d -* Expire a user's password reset tokens when their password is changed. +* Expire a user's password reset and login tokens in all circumstances when + their password is changed. * Upgraded dependencies: - node: 0.10.33 (from 0.10.29) diff --git a/packages/accounts-password/password_server.js b/packages/accounts-password/password_server.js index 073520f86f..4245207f77 100644 --- a/packages/accounts-password/password_server.js +++ b/packages/accounts-password/password_server.js @@ -331,7 +331,12 @@ Accounts.setPassword = function (userId, newPlaintextPassword) { Meteor.users.update( {_id: user._id}, - { $unset: {'services.password.srp': 1}, // XXX COMPAT WITH 0.8.1.3 + { + $unset: { + 'services.password.srp': 1, // XXX COMPAT WITH 0.8.1.3 + 'services.password.reset': 1, + 'services.resume.loginTokens': 1 + }, $set: {'services.password.bcrypt': hashPassword(newPlaintextPassword)} } ); }; diff --git a/packages/accounts-password/password_tests.js b/packages/accounts-password/password_tests.js index cda1c12a18..e51a277e9a 100644 --- a/packages/accounts-password/password_tests.js +++ b/packages/accounts-password/password_tests.js @@ -873,8 +873,9 @@ if (Meteor.isServer) (function () { 'passwords - setPassword', function (test) { var username = Random.id(); + var email = username + '-intercept@example.com'; - var userId = Accounts.createUser({username: username}); + var userId = Accounts.createUser({username: username, email: email}); var user = Meteor.users.findOne(userId); // no services yet. @@ -886,12 +887,22 @@ if (Meteor.isServer) (function () { var oldSaltedHash = user.services.password.bcrypt; test.isTrue(oldSaltedHash); + // Send a reset password email (setting a reset token) and insert a login + // token. + Accounts.sendResetPasswordEmail(userId, email); + Accounts._insertLoginToken(userId, Accounts._generateStampedLoginToken()); + test.isTrue(Meteor.users.findOne(userId).services.password.reset); + test.isTrue(Meteor.users.findOne(userId).services.resume.loginTokens); + // reset with the same password, see we get a different salted hash Accounts.setPassword(userId, 'new password'); user = Meteor.users.findOne(userId); var newSaltedHash = user.services.password.bcrypt; test.isTrue(newSaltedHash); test.notEqual(oldSaltedHash, newSaltedHash); + // No more tokens. + test.isFalse(Meteor.users.findOne(userId).services.password.reset); + test.isFalse(Meteor.users.findOne(userId).services.resume.loginTokens); // cleanup Meteor.users.remove(userId); From b492b71b605607e2e67dc95457be5b616a2a8940 Mon Sep 17 00:00:00 2001 From: David Glasser Date: Tue, 16 Dec 2014 21:08:26 -0800 Subject: [PATCH 23/60] Drop browserstack support from built tool We haven't really been trying to keep 'meteor self-test' passing from built tool in a while, so why waste the bandwidth? --- tools/commands.js | 5 +++++ tools/isopack.js | 7 ++++++- tools/tests/selftest-test.js | 20 -------------------- 3 files changed, 11 insertions(+), 21 deletions(-) delete mode 100644 tools/tests/selftest-test.js diff --git a/tools/commands.js b/tools/commands.js index 4742665f5c..c076bc5333 100644 --- a/tools/commands.js +++ b/tools/commands.js @@ -1760,6 +1760,11 @@ main.registerCommand({ hidden: true, catalogRefresh: new catalog.Refresh.Never() }, function (options) { + if (! files.inCheckout()) { + Console.error("self-test is only supported running from a checkout"); + return 1; + } + var selftest = require('./selftest.js'); // Auto-detect whether to skip 'net' tests, unless --force-online is passed. diff --git a/tools/isopack.js b/tools/isopack.js index 2628ecf33b..4716ac7493 100644 --- a/tools/isopack.js +++ b/tools/isopack.js @@ -1053,10 +1053,15 @@ _.extend(Isopack.prototype, { to: '', specificFiles: pathsToCopy }); + + // Include the dev bundle, but drop a few things that are only used by + // self-test (which isn't supported from release). + var devBundleIgnore = _.clone(bundler.ignoreFiles); + devBundleIgnore.push(/BrowserStackLocal/, /browserstack-webdriver/); builder.copyDirectory({ from: path.join(files.getDevBundle()), to: 'dev_bundle', - ignore: bundler.ignoreFiles + ignore: devBundleIgnore }); // Build all of the isopackets now, so that no build step is required when diff --git a/tools/tests/selftest-test.js b/tools/tests/selftest-test.js deleted file mode 100644 index 3359257e5b..0000000000 --- a/tools/tests/selftest-test.js +++ /dev/null @@ -1,20 +0,0 @@ -var selftest = require('../selftest.js'); -var Sandbox = selftest.Sandbox; -var files = require('../files.js'); - -selftest.define("selftest-from-warehouse", ['checkout'], function () { - var s = new Sandbox({ - warehouse: { - v1: { recommended: true } - } - }); - - // Create an app with the latest release. - var run = s.run("self-test", "do-nothing"); - run.waitSecs(15); - run.expectExit(0); -}); - -selftest.define("do-nothing", function () { - selftest.expectEqual(true, true); -}); From 8f9bb8da176d77199da7056fa8f6f87cdc205636 Mon Sep 17 00:00:00 2001 From: David Glasser Date: Tue, 16 Dec 2014 23:36:38 -0800 Subject: [PATCH 24/60] delete dead fields --- tools/isopack.js | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/tools/isopack.js b/tools/isopack.js index 4716ac7493..0a5e140726 100644 --- a/tools/isopack.js +++ b/tools/isopack.js @@ -232,17 +232,6 @@ var Isopack = function () { // isopack-buildinfo.json file). They are not set for Isopacks read from // the tropohouse. - // The versions that we used at build time for each of our direct - // dependencies. Map from package name to version string. - self.buildTimeDirectDependencies = null; - - // The complete list of versions (including transitive dependencies) - // that we used at build time to build each of our plugins. Map from - // plugin name to package name to version string. Note that two - // plugins might not use the same version for the same transitive - // dependency. - self.buildTimePluginDependencies = null; - // XXX this is likely to change once we have build versions // // A WatchSet for the full transitive dependencies for all plugins in this @@ -292,8 +281,6 @@ _.extend(Isopack.prototype, { self.plugins = options.plugins; self.cordovaDependencies = options.cordovaDependencies; self.pluginWatchSet = options.pluginWatchSet; - self.buildTimeDirectDependencies = options.buildTimeDirectDependencies; - self.buildTimePluginDependencies = options.buildTimePluginDependencies; self.npmDiscards = options.npmDiscards; self.includeTool = options.includeTool; self.debugOnly = options.debugOnly; From 31bd507b11e164e409e06cc147b3bba878c44591 Mon Sep 17 00:00:00 2001 From: David Glasser Date: Tue, 16 Dec 2014 23:44:12 -0800 Subject: [PATCH 25/60] refactor: move pluginProviderPackageMap in Isopack This also un-breaks soft refresh for troposphere packages: previousIsopack was accidentally being set to an {isopack,pluginProviderPackageMap} object, and so the "can we reuse the previous one" check was never actually passing. --- tools/bundler.js | 4 ++-- tools/compiler.js | 10 ++++++---- tools/isopack-cache.js | 40 ++++++++++------------------------------ tools/isopack.js | 10 +++++++++- tools/package-client.js | 15 +++++---------- 5 files changed, 32 insertions(+), 47 deletions(-) diff --git a/tools/bundler.js b/tools/bundler.js index 6184f4501b..99c53b8b52 100644 --- a/tools/bundler.js +++ b/tools/bundler.js @@ -2023,7 +2023,7 @@ exports.bundle = function (options) { packageMap: projectContext.packageMap, isopackCache: projectContext.isopackCache, includeCordovaUnibuild: projectContext.platformList.usesCordova() - }).isopack; + }); var clientTargets = []; // Client @@ -2165,7 +2165,7 @@ exports.buildJsImage = function (options) { isopackCache: options.isopackCache, // There's no web.cordova unibuild here anyway, just os. includeCordovaUnibuild: false - }).isopack; + }); var target = new JsImageTarget({ packageMap: options.packageMap, diff --git a/tools/compiler.js b/tools/compiler.js index ad8154c745..14bda4727d 100644 --- a/tools/compiler.js +++ b/tools/compiler.js @@ -140,10 +140,12 @@ compiler.compile = function (packageSource, options) { unibuildResult.pluginProviderPackageNames); }); - return { - isopack: isopk, - pluginProviderPackageNames: _.keys(pluginProviderPackageNames) - }; + if (options.includePluginProviderPackageMap) { + isopk.setPluginProviderPackageMap( + packageMap.makeSubsetMap(_.keys(pluginProviderPackageNames))); + } + + return isopk; }; // options.sourceArch is a SourceArch to compile. Process all source files diff --git a/tools/isopack-cache.js b/tools/isopack-cache.js index f3a0d0b940..72bdf206e3 100644 --- a/tools/isopack-cache.js +++ b/tools/isopack-cache.js @@ -37,9 +37,7 @@ exports.IsopackCache = function (options) { throw Error("previousIsopackCache has different cacheDir!"); } - // Map from package name to {isopack, pluginProviderPackageMap} object. - // pluginProviderPackageMap is null for isopacks that are loaded from the - // tropohouse, and otherwise is a PackageMap object listing + // Map from package name to Isopack. self._isopacks = {}; self._noLineNumbers = !! options.noLineNumbers; @@ -91,23 +89,16 @@ _.extend(exports.IsopackCache.prototype, { var self = this; if (! _.has(self._isopacks, name)) throw Error("isopack " + name + " not yet loaded?"); - return self._isopacks[name].isopack; + return self._isopacks[name]; }, eachBuiltIsopack: function (iterator) { var self = this; - _.each(self._isopacks, function (info, packageName) { - iterator(packageName, info.isopack); + _.each(self._isopacks, function (isopack, packageName) { + iterator(packageName, isopack); }); }, - getPluginProviderPackageMap: function (name) { - var self = this; - if (! _.has(self._isopacks, name)) - throw Error("isopack " + name + " not yet loaded?"); - return self._isopacks[name].pluginProviderPackageMap; - }, - _ensurePackageLoaded: function (name, onStack) { var self = this; buildmessage.assertInCapture(); @@ -178,10 +169,7 @@ _.extend(exports.IsopackCache.prototype, { }); } - self._isopacks[name] = { - isopack: isopack, - pluginProviderPackageMap: null - }; + self._isopacks[name] = isopack; // Also load its dependencies. This is so that if this package is being // built as part of a plugin, all the transitive dependencies of the // plugin are loaded. @@ -205,42 +193,34 @@ _.extend(exports.IsopackCache.prototype, { self._isopackBuildInfoPath(name)); var upToDate = self._checkUpToDate(isopackBuildInfoJson); - var isopack, pluginProviderPackageMap; + var isopack; if (upToDate) { isopack = new isopackModule.Isopack; isopack.initFromPath(name, self._isopackDir(name), { isopackBuildInfoJson: isopackBuildInfoJson }); - pluginProviderPackageMap = self._packageMap.makeSubsetMap( - _.keys(isopackBuildInfoJson.pluginProviderPackageMap)); } else { // Nope! Compile it again. - var compilerResult = compiler.compile(packageInfo.packageSource, { + isopack = compiler.compile(packageInfo.packageSource, { packageMap: self._packageMap, isopackCache: self, noLineNumbers: self._noLineNumbers, - includeCordovaUnibuild: self._includeCordovaUnibuild + includeCordovaUnibuild: self._includeCordovaUnibuild, + includePluginProviderPackageMap: true }); // Accept the compiler's result, even if there were errors (since it at // least will have a useful WatchSet and will allow us to keep going and // compile other packages that depend on this one). - isopack = compilerResult.isopack; - pluginProviderPackageMap = self._packageMap.makeSubsetMap( - compilerResult.pluginProviderPackageNames); if (self.cacheDir && ! buildmessage.jobHasMessages()) { // Save to disk, for next time! isopack.saveToPath(self._isopackDir(name), { - pluginProviderPackageMap: pluginProviderPackageMap, includeIsopackBuildInfo: true }); } } self.allLoadedLocalPackagesWatchSet.merge(isopack.getMergedWatchSet()); - self._isopacks[name] = { - isopack: isopack, - pluginProviderPackageMap: pluginProviderPackageMap - }; + self._isopacks[name] = isopack; }); }, diff --git a/tools/isopack.js b/tools/isopack.js index 0a5e140726..a34eb53252 100644 --- a/tools/isopack.js +++ b/tools/isopack.js @@ -260,6 +260,9 @@ var Isopack = function () { // This is tools to copy from trees on disk. This is used by the // isopack-merge code in tropohouse. self.toolsOnDisk = []; + + // XXX doc + self.pluginProviderPackageMap = null; }; _.extend(Isopack.prototype, { @@ -295,6 +298,11 @@ _.extend(Isopack.prototype, { self.unibuilds.push(new Unibuild(self, options)); }, + setPluginProviderPackageMap: function (pluginProviderPackageMap) { + var self = this; + self.pluginProviderPackageMap = pluginProviderPackageMap; + }, + getSourceFilesUnderSourceRoot: function (sourceRoot) { var self = this; var sourceFiles = {}; @@ -753,7 +761,7 @@ _.extend(Isopack.prototype, { // our package.js (because modifications to package.js could add a new // plugin), as well as any files making up plugins in our package. pluginDependencies: self.pluginWatchSet.toJSON(), - pluginProviderPackageMap: options.pluginProviderPackageMap.toJSON(), + pluginProviderPackageMap: self.pluginProviderPackageMap.toJSON(), includeCordovaUnibuild: _.any(self.unibuilds, function (unibuild) { return unibuild.arch === 'web.cordova'; }) diff --git a/tools/package-client.js b/tools/package-client.js index 836acae47b..035c5ac6d6 100644 --- a/tools/package-client.js +++ b/tools/package-client.js @@ -221,8 +221,7 @@ exports.loggedInPackagesConnection = function () { // XXX this is missing a few things. In retrospect a better approach here might // be to actually make "save source somewhere else" or perhaps "add source // to tarball" be part of the package build itself... -var bundleSource = function (isopack, includeSources, packageDir, - pluginProviderPackageMap) { +var bundleSource = function (isopack, includeSources, packageDir) { buildmessage.assertInJob(); var name = isopack.name; @@ -261,6 +260,9 @@ var bundleSource = function (isopack, includeSources, packageDir, var packageMapFilename = path.join(sourcePackageDir, '.versions'); if (fs.existsSync(packageMapFilename)) throw Error(".versions file already exists? " + packageMapFilename); + var pluginProviderPackageMap = isopack.pluginProviderPackageMap; + if (! pluginProviderPackageMap) + throw Error("no pluginProviderPackageMap on isopack?"); var packageMapFile = new projectContextModule.PackageMapFile({ filename: packageMapFilename }); @@ -522,17 +524,10 @@ exports.publishPackage = function (options) { sourceFiles = _.union(sourceFiles, testSourceFiles); } - // Find the PackageMap of packages that are build time dependencies of this - // package. - var pluginProviderPackageMap = - projectContext.isopackCache.getPluginProviderPackageMap(name); - if (! pluginProviderPackageMap) - throw Error("missing pluginProviderPackageMap for " + name); - var sourceBundleResult; buildmessage.enterJob("bundling source", function () { sourceBundleResult = bundleSource( - isopack, sourceFiles, packageSource.sourceRoot, pluginProviderPackageMap); + isopack, sourceFiles, packageSource.sourceRoot); }); if (buildmessage.jobHasMessages()) return; From dc24e7b7d735df4d439761011e45ab5c4daa4945 Mon Sep 17 00:00:00 2001 From: David Glasser Date: Tue, 16 Dec 2014 23:59:59 -0800 Subject: [PATCH 26/60] Implement soft refresh. Fixes #3213. Also ameliorates the memory leak of parsedSourceMaps in files.runJavaScript (because now we don't reload unchanged plugins). --- tools/isopack-cache.js | 106 +++++++++++++++++++++++++++-------------- tools/isopack.js | 11 +++-- tools/run-app.js | 1 - 3 files changed, 77 insertions(+), 41 deletions(-) diff --git a/tools/isopack-cache.js b/tools/isopack-cache.js index 72bdf206e3..dcc2c040a3 100644 --- a/tools/isopack-cache.js +++ b/tools/isopack-cache.js @@ -120,6 +120,20 @@ _.extend(exports.IsopackCache.prototype, { var packageInfo = self._packageMap.getInfo(name); if (! packageInfo) throw Error("Depend on unknown package " + name + "?"); + var previousIsopack = null; + if (self._previousIsopackCache && + _.has(self._previousIsopackCache._isopacks, name)) { + var previousInfo = self._previousIsopackCache._packageMap.getInfo(name); + if ((packageInfo.kind === 'versioned' && + previousInfo.kind === 'versioned' && + packageInfo.version === previousInfo.version) || + (packageInfo.kind === 'local' && + previousInfo.kind === 'local' && + (packageInfo.packageSource.sourceRoot === + previousInfo.packageSource.sourceRoot))) { + previousIsopack = self._previousIsopackCache._isopacks[name]; + } + } if (packageInfo.kind === 'local') { var packageNames = @@ -132,7 +146,7 @@ _.extend(exports.IsopackCache.prototype, { // load it. if (buildmessage.jobHasMessages()) return; - self._loadLocalPackage(name, packageInfo); + self._loadLocalPackage(name, packageInfo, previousIsopack); }); } else if (packageInfo.kind === 'versioned') { // We don't have to build this package, and we don't have to build its @@ -143,13 +157,9 @@ _.extend(exports.IsopackCache.prototype, { } var isopack = null, packagesToLoad = []; - if (self._previousIsopackCache - && _.has(self._previousIsopackCache._isopacks, name)) { - var previousIsopack = self._previousIsopackCache._isopacks[name]; - if (previousIsopack.version === packageInfo.version) { - isopack = previousIsopack; - packagesToLoad = isopack.getStrongOrderedUsedAndImpliedPackages(); - } + if (previousIsopack) { + isopack = previousIsopack; + packagesToLoad = isopack.getStrongOrderedUsedAndImpliedPackages(); } if (! isopack) { // Load the isopack from disk. @@ -181,41 +191,42 @@ _.extend(exports.IsopackCache.prototype, { } }, - _loadLocalPackage: function (name, packageInfo) { + _loadLocalPackage: function (name, packageInfo, previousIsopack) { var self = this; buildmessage.assertInCapture(); buildmessage.enterJob("building package " + name, function () { - // XXX #3213 use _previousIsopackCache here too (which involves moving - // pluginProviderPackageMap into the Isopack object) - - // Do we have an up-to-date package on disk? - var isopackBuildInfoJson = self.cacheDir && files.readJSONOrNull( - self._isopackBuildInfoPath(name)); - var upToDate = self._checkUpToDate(isopackBuildInfoJson); - var isopack; - if (upToDate) { - isopack = new isopackModule.Isopack; - isopack.initFromPath(name, self._isopackDir(name), { - isopackBuildInfoJson: isopackBuildInfoJson - }); + if (previousIsopack && self._checkUpToDatePreloaded(previousIsopack)) { + isopack = previousIsopack; } else { - // Nope! Compile it again. - isopack = compiler.compile(packageInfo.packageSource, { - packageMap: self._packageMap, - isopackCache: self, - noLineNumbers: self._noLineNumbers, - includeCordovaUnibuild: self._includeCordovaUnibuild, - includePluginProviderPackageMap: true - }); - // Accept the compiler's result, even if there were errors (since it at - // least will have a useful WatchSet and will allow us to keep going and - // compile other packages that depend on this one). - if (self.cacheDir && ! buildmessage.jobHasMessages()) { - // Save to disk, for next time! - isopack.saveToPath(self._isopackDir(name), { - includeIsopackBuildInfo: true + // Do we have an up-to-date package on disk? + var isopackBuildInfoJson = self.cacheDir && files.readJSONOrNull( + self._isopackBuildInfoPath(name)); + var upToDate = self._checkUpToDate(isopackBuildInfoJson); + + if (upToDate) { + isopack = new isopackModule.Isopack; + isopack.initFromPath(name, self._isopackDir(name), { + isopackBuildInfoJson: isopackBuildInfoJson }); + } else { + // Nope! Compile it again. + isopack = compiler.compile(packageInfo.packageSource, { + packageMap: self._packageMap, + isopackCache: self, + noLineNumbers: self._noLineNumbers, + includeCordovaUnibuild: self._includeCordovaUnibuild, + includePluginProviderPackageMap: true + }); + // Accept the compiler's result, even if there were errors (since it + // at least will have a useful WatchSet and will allow us to keep + // going and compile other packages that depend on this one). + if (self.cacheDir && ! buildmessage.jobHasMessages()) { + // Save to disk, for next time! + isopack.saveToPath(self._isopackDir(name), { + includeIsopackBuildInfo: true + }); + } } } @@ -255,6 +266,27 @@ _.extend(exports.IsopackCache.prototype, { return watch.isUpToDate(watchSet); }, + _checkUpToDatePreloaded: function (previousIsopack) { + var self = this; + + // If we include Cordova but this Isopack doesn't, or via versa, then we're + // not up to date. + if (self._includeCordovaUnibuild !== previousIsopack.hasCordovaUnibuild()) { + return false; + } + + // If any of the direct dependencies changed their version or location, we + // aren't up to date. + if (!self._packageMap.isSupersetOfJSON( + previousIsopack.pluginProviderPackageMap)) { + return false; + } + // Merge in the watchsets for all unibuilds and plugins in the package, then + // check it once. + var watchSet = previousIsopack.getMergedWatchSet(); + return watch.isUpToDate(watchSet); + }, + _isopackDir: function (packageName) { var self = this; return path.join(self.cacheDir, diff --git a/tools/isopack.js b/tools/isopack.js index a34eb53252..164d388faa 100644 --- a/tools/isopack.js +++ b/tools/isopack.js @@ -725,6 +725,13 @@ _.extend(Isopack.prototype, { return true; }, + hasCordovaUnibuild: function () { + var self = this; + return _.any(self.unibuilds, function (unibuild) { + return unibuild.arch === 'web.cordova'; + }); + }, + // options: // // - includeIsopackBuildInfo: If set, write an isopack-buildinfo.json file. @@ -762,9 +769,7 @@ _.extend(Isopack.prototype, { // plugin), as well as any files making up plugins in our package. pluginDependencies: self.pluginWatchSet.toJSON(), pluginProviderPackageMap: self.pluginProviderPackageMap.toJSON(), - includeCordovaUnibuild: _.any(self.unibuilds, function (unibuild) { - return unibuild.arch === 'web.cordova'; - }) + includeCordovaUnibuild: self.hasCordovaUnibuild() }; } diff --git a/tools/run-app.js b/tools/run-app.js index ab47963a96..c41c554237 100644 --- a/tools/run-app.js +++ b/tools/run-app.js @@ -444,7 +444,6 @@ _.extend(AppRunner.prototype, { self.projectContext.reset({}, { // Don't forget all Isopack objects; just make sure to check that they // are up to date. - // XXX this feature is only half-implemented. #3213 softRefreshIsopacks: true, // Don't forget the package map we calculated last time, even if we // didn't write it to disk (because, eg, we're not running with a From d090f55b4bf0f3d9e657ec6b28dbe3afa0e82c5f Mon Sep 17 00:00:00 2001 From: David Glasser Date: Wed, 17 Dec 2014 00:05:50 -0800 Subject: [PATCH 27/60] Fix safe-pathwatcher memory leak --- tools/safe-pathwatcher.js | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/tools/safe-pathwatcher.js b/tools/safe-pathwatcher.js index 4a8c5e4d7f..45740a1249 100644 --- a/tools/safe-pathwatcher.js +++ b/tools/safe-pathwatcher.js @@ -65,7 +65,10 @@ exports.testDirectory = function(dir) { // Watch the candidate directory using pathwatcher.watch. var pathwatcher = require("pathwatcher"); try { - var watcher = pathwatcher.watch(dir, cleanUp); + var watcher = pathwatcher.watch(dir, function () { + cleanUp(); + switchFunctions = null; + }); } catch (err) { // If the directory did not exist, do not treat this failure as // evidence against pathwatcher.watch, but simply return and leave @@ -108,17 +111,19 @@ exports.watch = function(absPath, callback) { var closed = false; var switched = false; - switchFunctions.push(function switchToPolling() { - if (! switched && ! closed) { - switched = true; - watcher.close(); + if (switchFunctions) { + switchFunctions.push(function switchToPolling() { + if (! switched && ! closed) { + switched = true; + watcher.close(); - // Re-watch the file using fs.watchFile instead. - fs.watchFile(absPath, { - interval: pollingInterval - }, callback); - } - }); + // Re-watch the file using fs.watchFile instead. + fs.watchFile(absPath, { + interval: pollingInterval + }, callback); + } + }); + } return { close: function close() { From 7239b4051ce214879632d55a7fe42ab868309727 Mon Sep 17 00:00:00 2001 From: David Glasser Date: Wed, 17 Dec 2014 00:19:58 -0800 Subject: [PATCH 28/60] 1.0.2-rc.6 --- packages/accounts-password/package.js | 2 +- packages/less/package.js | 2 +- packages/meteor-tool/package.js | 2 +- packages/minifiers/package.js | 2 +- packages/mongo/package.js | 2 +- packages/templating/package.js | 2 +- scripts/admin/meteor-release-experimental.json | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/accounts-password/package.js b/packages/accounts-password/package.js index 3ac56dab61..9390ac2fb8 100644 --- a/packages/accounts-password/package.js +++ b/packages/accounts-password/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Password support for accounts", - version: "1.0.5-rc.1" + version: "1.0.5-rc.2" }); Package.onUse(function(api) { diff --git a/packages/less/package.js b/packages/less/package.js index 5dcf51a627..1d0deda0ab 100644 --- a/packages/less/package.js +++ b/packages/less/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "The dynamic stylesheet language", - version: "1.0.12-rc.2" + version: "1.0.12-rc.3" }); Package.registerBuildPlugin({ diff --git a/packages/meteor-tool/package.js b/packages/meteor-tool/package.js index 7fb6600e3f..d8bec1f0b2 100644 --- a/packages/meteor-tool/package.js +++ b/packages/meteor-tool/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "The Meteor command-line tool", - version: '1.0.37-rc.6' + version: '1.0.37-rc.7' }); Package.includeTool(); diff --git a/packages/minifiers/package.js b/packages/minifiers/package.js index 861bcd6f44..74662623c7 100644 --- a/packages/minifiers/package.js +++ b/packages/minifiers/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "JavaScript and CSS minifiers", - version: "1.1.3-rc.2" + version: "1.1.3-rc.3" }); Npm.depends({ diff --git a/packages/mongo/package.js b/packages/mongo/package.js index 01d88b3e59..a6f970cee7 100644 --- a/packages/mongo/package.js +++ b/packages/mongo/package.js @@ -9,7 +9,7 @@ Package.describe({ summary: "Adaptor for using MongoDB and Minimongo over DDP", - version: '1.0.10-rc.1' + version: '1.0.10-rc.2' }); Npm.depends({ diff --git a/packages/templating/package.js b/packages/templating/package.js index 58d1772cb7..21c05a405b 100644 --- a/packages/templating/package.js +++ b/packages/templating/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Allows templates to be defined in .html files", - version: '1.0.10-rc.2' + version: '1.0.10-rc.3' }); // Today, this package is closely intertwined with Handlebars, meaning diff --git a/scripts/admin/meteor-release-experimental.json b/scripts/admin/meteor-release-experimental.json index 3479a095f3..2434463fd2 100644 --- a/scripts/admin/meteor-release-experimental.json +++ b/scripts/admin/meteor-release-experimental.json @@ -1,6 +1,6 @@ { "track": "METEOR", - "version": "1.0.2-rc.5", + "version": "1.0.2-rc.6", "recommended": false, "official": false, "description": "An RC of Meteor 1.0." From cb33da85364a1f9b7de6ea2f2c178e0ba0e223f9 Mon Sep 17 00:00:00 2001 From: David Glasser Date: Wed, 17 Dec 2014 00:36:22 -0800 Subject: [PATCH 29/60] Missing space in login message --- tools/auth.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/auth.js b/tools/auth.js index 62c8061817..1b2d09af18 100644 --- a/tools/auth.js +++ b/tools/auth.js @@ -743,9 +743,9 @@ exports.loginCommand = withAccountsConnection(function (options, data = readSessionData(); Console.error(); Console.error("Logged in" + (galaxy ? " to " + galaxy : "") + - (currentUsername(data) ? - " as " + currentUsername(data) : "") + "." + - "Thanks for being a Meteor developer!"); + (currentUsername(data) ? + " as " + currentUsername(data) : "") + ".", + "Thanks for being a Meteor developer!"); return 0; }); From 0c8edc1511803ddc6570948fdfef8aa9ae0f8323 Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Wed, 17 Dec 2014 14:16:41 -0500 Subject: [PATCH 30/60] Use both pathwatcher and polling to detect changes more robustly. This strategy was suggested by @glasser after we realized just how hopeless it is to probe the file system to test pathwatcher: https://github.com/meteor/meteor/issues/3285#issuecomment-67296961 I've made some attempt to de-duplicate these events (since we're effectively watching twice now), but we have other mechanisms for dealing with bursty file change events, so these measures do not need to be completely bulletproof. Fixes #3284 (again). --- tools/safe-pathwatcher.js | 172 +++++++++----------------------------- 1 file changed, 41 insertions(+), 131 deletions(-) diff --git a/tools/safe-pathwatcher.js b/tools/safe-pathwatcher.js index 45740a1249..6469e0a2e8 100644 --- a/tools/safe-pathwatcher.js +++ b/tools/safe-pathwatcher.js @@ -1,151 +1,61 @@ var fs = require("fs"); -var path = require("path"); -var Future = require("fibers/future"); -var _ = require("underscore"); -var switchFunctions = []; -var pollingInterval = 500; -// Set this environment variable to a truthy value to force the use of -// fs.watchFile instead of pathwatcher.watch. +// Set this env variable to a truthy value to force fs.watchFile instead +// of pathwatcher.watch. var canUsePathwatcher = !process.env.METEOR_WATCH_FORCE_POLLING; -// The pathwatcher library does not work on all platforms and file systems -// (notably, network file systems), so we have to do a little feature -// detection to see if we can use it. +var pollingInterval = canUsePathwatcher + // Set this env variable to alter the watchFile polling interval. + ? ~~process.env.METEOR_WATCH_POLLING_INTERVAL_MS || 5000 + : 500; -// We optimistically watch files using pathwatcher.watch until one of the -// directories tested fails to support file system events. When that -// happens, we switch all previously created pathwatcher watches to use -// fs.watchFile, and set canUsePathwatcher to false so that all future -// watches will use fs.watchFile as well. +exports.watch = function watch(absPath, callback) { + var lastPathwatcherEventTime = 0; -// There is some theoretical risk of missing file system events from -// pathwatcher watches created before we discover that we can't use -// pathwatcher.watch, but the window of time where that can happen is -// small enough (500ms) that developers are highly unlikely to care. - -exports.testDirectory = function(dir) { - if (! canUsePathwatcher) { - // No need to test this directory if we've already decided we can't - // use pathwatcher.watch. - return; + function pathwatcherWrapper() { + // It's tempting to call fs.unwatchFile(absPath, watchFileWrapper) + // here, but previous pathwatcher success is no guarantee of future + // pathwatcher reliability. For example, pathwatcher works just fine + // when file changes originate from within a Vagrant VM, but changes + // to shared files made outside the VM are invisible to pathwatcher, + // so our only hope of catching them is to continue polling. + lastPathwatcherEventTime = +new Date; + callback.apply(this, arguments); } - var canaryFile = path.join( - dir, ".pathwatcher-canary-" + Math.random().toString(36).slice(2) - ); + var watcher = canUsePathwatcher && + require("pathwatcher").watch(absPath, pathwatcherWrapper); - // Make sure the test directory exists. - require("./files.js").mkdir_p(dir); - - fs.unlink(canaryFile, function(ignoredError) { - function cleanUp(arg) { - if (watcher) { - watcher.close(); - watcher = null; - fs.unlink(canaryFile, function(ignoredError) {}); - } + function watchFileWrapper() { + // If a pathwatcher event fired in the last polling interval, ignore + // this event. + if (new Date - lastPathwatcherEventTime > pollingInterval) { + callback.apply(this, arguments); } - - function fallBack() { - // Disallow future uses of pathwatcher.watch. - canUsePathwatcher = false; - - // Convert any pathwatcher watchers we previously created to - // fs.watchFile watchers. - _.each(switchFunctions.splice(0), function(switchToPolling) { - switchToPolling(); - }); - - require("./console.js").Console.debug( - "Falling back to fs.watchFile instead of pathwatcher.watch..." - ); - } - - // Watch the candidate directory using pathwatcher.watch. - var pathwatcher = require("pathwatcher"); - try { - var watcher = pathwatcher.watch(dir, function () { - cleanUp(); - switchFunctions = null; - }); - } catch (err) { - // If the directory did not exist, do not treat this failure as - // evidence against pathwatcher.watch, but simply return and leave - // canUsePathwatcher set to true. - if (err instanceof TypeError && - err.message === "Unable to watch path") { - return; - } - throw err; - } - - // Create a new file to trigger a change event (hopefully). It's fine - // if other events sneak in while we're waiting, since all we care - // about is whether pathwatcher.watch works. - fs.writeFile(canaryFile, "ok\n", function(err) { - if (err) { - cleanUp(); - throw err; - } - }); - - // Set a time limit of 500ms for the change event. - setTimeout(function() { - if (watcher) { - cleanUp(); - fallBack(); - } - }, 500); - }); -}; - -exports.watch = function(absPath, callback) { - if (canUsePathwatcher) { - // In principle, all this logic for watching files should continue to - // work perfectly if we substitute fs.watch for pathwatcher.watch, but - // that will probably have to wait until we upgrade Node to v0.11.x, - // so that fs.watch is more reliable. - var watcher = require("pathwatcher").watch(absPath, callback); - - var closed = false; - var switched = false; - - if (switchFunctions) { - switchFunctions.push(function switchToPolling() { - if (! switched && ! closed) { - switched = true; - watcher.close(); - - // Re-watch the file using fs.watchFile instead. - fs.watchFile(absPath, { - interval: pollingInterval - }, callback); - } - }); - } - - return { - close: function close() { - if (! closed) { - closed = true; - if (switched) { - fs.unwatchFile(absPath, callback); - } else { - watcher.close(); - } - } - } - }; } + // We use fs.watchFile in addition to pathwatcher.watch as a fail-safe + // to detect file changes even on network file systems. However (unless + // canUsePathwatcher is false), we use a relatively long default polling + // interval of 5000ms to save CPU cycles. fs.watchFile(absPath, { + persistent: false, interval: pollingInterval - }, callback); + }, watchFileWrapper); + + var polling = true; return { close: function close() { - fs.unwatchFile(absPath, callback); + if (watcher) { + watcher.close(); + watcher = null; + } + + if (polling) { + polling = false; + fs.unwatchFile(absPath, watchFileWrapper); + } } }; }; From 3ace90ccc7c57608bea4a96ace6dc2debd92d57b Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Wed, 17 Dec 2014 15:03:00 -0500 Subject: [PATCH 31/60] Remove a stray call to require("./safe-pathwatcher.js").testDirectory. --- tools/run-all.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/tools/run-all.js b/tools/run-all.js index ba071bd183..a1a2e5fc4f 100644 --- a/tools/run-all.js +++ b/tools/run-all.js @@ -84,10 +84,6 @@ var Runner = function (options) { self.updater = new Updater; - require("./safe-pathwatcher.js").testDirectory( - self.projectContext.projectDir - ); - self.appRunner = new AppRunner({ projectContext: self.projectContext, port: self.appPort, From becfb57a15c906f24e9aa6b00c2ad9bd7c40157b Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Wed, 17 Dec 2014 16:00:01 -0500 Subject: [PATCH 32/60] Don't rely on pathwatcher.watch to determine if files exist. --- tools/watch.js | 31 +++++++++++-------------------- 1 file changed, 11 insertions(+), 20 deletions(-) diff --git a/tools/watch.js b/tools/watch.js index db343c9845..236255f176 100644 --- a/tools/watch.js +++ b/tools/watch.js @@ -410,33 +410,24 @@ _.extend(Watcher.prototype, { return; } - var onWatchEvent = self._makeWatchEventCallback(absPath); - if (self.justCheckOnce) { - onWatchEvent(); - return; - } + self._makeWatchEventCallback(absPath)(); - try { + } else if (fs.existsSync(absPath)) { + var onWatchEvent = self._makeWatchEventCallback(absPath); entry.watcher = pathwatcher.watch(absPath, onWatchEvent); - } catch (err) { - if (err.code === "ENOENT" || // For fs.watch. - (err instanceof TypeError && // For pathwatcher.watch. - err.message === "Unable to watch path")) { - var parentDir = path.dirname(absPath); - if (parentDir !== absPath) { - self._watchFileOrDirectory(parentDir); - } - } else { - throw err; - } - } - - if (entry.watcher) { // If we successfully created the watcher, invoke the callback // immediately, so that we examine this file at least once. onWatchEvent(); + + } else { + var parentDir = path.dirname(absPath); + if (parentDir === absPath) { + throw new Error("Unable to watch parent directory of " + absPath); + } + + self._watchFileOrDirectory(parentDir); } }, From e4fd1134a1ea97d7d5b4ee1c5bdc959338e0f9dc Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Wed, 17 Dec 2014 16:46:11 -0500 Subject: [PATCH 33/60] Deal with some file-watching race conditions. --- tools/watch.js | 54 +++++++++++++++++++++++++++++++------------------- 1 file changed, 34 insertions(+), 20 deletions(-) diff --git a/tools/watch.js b/tools/watch.js index 236255f176..e1874ab3ba 100644 --- a/tools/watch.js +++ b/tools/watch.js @@ -380,15 +380,12 @@ _.extend(Watcher.prototype, { if (self.stopped) return; + if (! self.justCheckOnce) + self._watchFileOrDirectory(absPath); + // Check for the case where by the time we created the watch, // the file had already changed from the sha we were provided. - if (self._fireIfFileChanged(absPath)) - return; - - if (self.justCheckOnce) - return; - - self._watchFileOrDirectory(absPath); + self._fireIfFileChanged(absPath); }); }, @@ -414,6 +411,11 @@ _.extend(Watcher.prototype, { self._makeWatchEventCallback(absPath)(); } else if (fs.existsSync(absPath)) { + if (self._mustNotExist(absPath)) { + self._fire(); + return; + } + var onWatchEvent = self._makeWatchEventCallback(absPath); entry.watcher = pathwatcher.watch(absPath, onWatchEvent); @@ -422,6 +424,11 @@ _.extend(Watcher.prototype, { onWatchEvent(); } else { + if (self._mustBeAFile(absPath)) { + self._fire(); + return; + } + var parentDir = path.dirname(absPath); if (parentDir === absPath) { throw new Error("Unable to watch parent directory of " + absPath); @@ -501,6 +508,20 @@ _.extend(Watcher.prototype, { }); }, + _mustNotExist: function(absPath) { + var wsFiles = this.watchSet.files; + if (_.has(wsFiles, absPath)) + return wsFiles[absPath] === null; + return false; + }, + + _mustBeAFile: function(absPath) { + var wsFiles = this.watchSet.files; + if (_.has(wsFiles, absPath)) + return _.isString(wsFiles[absPath]); + return false; + }, + _updateStatForWatch: function(absPath) { var self = this; var entry = self.watches[absPath]; @@ -515,14 +536,8 @@ _.extend(Watcher.prototype, { } } - // Note: these defaults do *not* mean mustExist or mustNotBeAFile. - var mustNotExist = false; - var mustBeAFile = false; - var wsFiles = self.watchSet.files; - if (_.has(wsFiles, absPath)) { - mustNotExist = wsFiles[absPath] === null; - mustBeAFile = _.isString(wsFiles[absPath]); - } + var mustNotExist = self._mustNotExist(absPath); + var mustBeAFile = self._mustBeAFile(absPath); if (stat && lastStat === undefined) { // We have not checked for this file before, so our expectations are @@ -581,13 +596,12 @@ _.extend(Watcher.prototype, { if (self.stopped) return; - // Check for the case where by the time we created the watch, the - // directory has already changed. - if (self._fireIfDirectoryChanged(info, yielding)) - return; - if (! self.justCheckOnce) self._watchFileOrDirectory(info.absPath); + + // Check for the case where by the time we created the watch, the + // directory has already changed. + self._fireIfDirectoryChanged(info, yielding); }); }, From 356d6b91ff9ea7ee18cb837886862e92480daf2c Mon Sep 17 00:00:00 2001 From: David Glasser Date: Wed, 17 Dec 2014 13:55:41 -0800 Subject: [PATCH 34/60] Remove dead justCheckOnce clause --- tools/watch.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/tools/watch.js b/tools/watch.js index e1874ab3ba..7293d6cd4e 100644 --- a/tools/watch.js +++ b/tools/watch.js @@ -407,10 +407,7 @@ _.extend(Watcher.prototype, { return; } - if (self.justCheckOnce) { - self._makeWatchEventCallback(absPath)(); - - } else if (fs.existsSync(absPath)) { + if (fs.existsSync(absPath)) { if (self._mustNotExist(absPath)) { self._fire(); return; From 4723a310ab593bc0bad1d4d17a97353d7bf89571 Mon Sep 17 00:00:00 2001 From: David Glasser Date: Wed, 17 Dec 2014 14:37:38 -0800 Subject: [PATCH 35/60] 1.0.2-rc.7 --- packages/meteor-tool/package.js | 2 +- scripts/admin/meteor-release-experimental.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/meteor-tool/package.js b/packages/meteor-tool/package.js index d8bec1f0b2..7449387af7 100644 --- a/packages/meteor-tool/package.js +++ b/packages/meteor-tool/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "The Meteor command-line tool", - version: '1.0.37-rc.7' + version: '1.0.37-rc.8' }); Package.includeTool(); diff --git a/scripts/admin/meteor-release-experimental.json b/scripts/admin/meteor-release-experimental.json index 2434463fd2..ed49e8085e 100644 --- a/scripts/admin/meteor-release-experimental.json +++ b/scripts/admin/meteor-release-experimental.json @@ -1,6 +1,6 @@ { "track": "METEOR", - "version": "1.0.2-rc.6", + "version": "1.0.2-rc.7", "recommended": false, "official": false, "description": "An RC of Meteor 1.0." From 934bfca426e3673a1a97aca742011e0b9a89b7c3 Mon Sep 17 00:00:00 2001 From: David Glasser Date: Wed, 17 Dec 2014 18:17:58 -0800 Subject: [PATCH 36/60] More History.md cleanup --- History.md | 38 +++++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/History.md b/History.md index 4710c30295..cda9aa0454 100644 --- a/History.md +++ b/History.md @@ -3,24 +3,27 @@ ## v1.0.2 -* Tool performance improvements XXX - - The entire build tool has been refactored with an eye to correctness, - maintainability, and performance - - We refresh the package catalog for build commands only when an error - occurs that could be fixed by a refresh, not for every command - - Constraint solver is now run only once per command - - Packages are now cached inside the app directory - - Mongo started in parallel with app build - - Constraint solver no longer leaves a `versions.json` file in your - packages; when publishing a package that is not inside an app, it uses a - similar `.versions` file - - Constraint edges are by package, not unibuild, and plugins must use the - same version of packages as their surrounding package (when built from - local source) +* `meteor shell` XXX ben will describe this. -* `meteor shell` XXX +* We've done a major internal overhaul of the `meteor` command-line tool with an + eye to correctness, maintainability, and performance. Some details include: + * We refresh the package catalog for build commands only when an error + occurs that could be fixed by a refresh, not for every build command. + * We never run the constraint solver to select package versions more than once + per build. + * Built packages ("isopacks") are now cached inside individual app directories + instead of inside their source directories. + * `meteor run` starts Mongo and builds your app in parallel with each other. + * The constraint solver no longer leaves a `versions.json` file in your + packages source directories; when publishing a package that is not inside an + app, it will leave a `.versions` file (with the same format as + `.meteor/versions`) which you should check into source control. + * The constraint solver's model has been simplified so that plugins must use + the same version of packages as their surrounding package, when built from + local source. -* `meteor debug` improvements ba89b7d and maybe e63ac7c +* Using `meteor debug` no longer requires manually continuing the debugger when + your app restarts, and it no longer overwrites the symbol `_` inside your app. * Output from the command-line tool is now word-wrapped to the width of your terminal. @@ -61,7 +64,8 @@ * Fix bug (introduced in 0.9.4) where banners about new releases could be printed too many times. -* Make query parameter available to oauth1 services 6b8221d +* Make query parameter available to oauth1 services 6b8221d XXX emily will + describe this * Expire a user's password reset and login tokens in all circumstances when their password is changed. From 6527e669ab8339d4fbb9333d54ec3f71a9472238 Mon Sep 17 00:00:00 2001 From: David Glasser Date: Wed, 17 Dec 2014 18:21:45 -0800 Subject: [PATCH 37/60] Reorganize History.md --- History.md | 45 ++++++++++++++++++++++++++++----------------- 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/History.md b/History.md index cda9aa0454..4e570e8c36 100644 --- a/History.md +++ b/History.md @@ -3,6 +3,8 @@ ## v1.0.2 +### Improvements to the `meteor` command-line tool + * `meteor shell` XXX ben will describe this. * We've done a major internal overhaul of the `meteor` command-line tool with an @@ -28,34 +30,18 @@ * Output from the command-line tool is now word-wrapped to the width of your terminal. -* Spacebars: Allow curly braces to be escaped, with special - sequences `{{|` and `{{{|` to insert a literal `{{` or `{{{`. - * Corporate HTTP proxy support is now implemented using our websocket library's new built-in implementation instead of a custom implementation. #2515 -* Some packages are no longer released as part of the core release process: - amplify, backbone, bootstrap, d3, jquery-history, and jquery-layout. - * Remove support for the undocumented earliestCompatibleVersion feature of the package system. -* Fix audit-argument-checks spurious failure when an argument is NaN. #2914 - * Fix a check for a parent process in 'meteor run' that was happening constantly instead of every few seconds. #3252 -* `Template.parentData`'s argument defaults to 1. #2861 - -* `Blaze.remove` on a template's view now correctly removes the DOM - when the template was inserted using `Blaze.renderWithData`. #3130 - * Fix crash when two plugins defined source handlers for the same extension. #3015 #3180 -* Fix crash when a package version contained a dot-separated prerelease part - with both digits and non-digits. #3147 - * Fix bug (introduced in 0.9.3) where the warning about using experimental versions of packages was printed too often. @@ -64,13 +50,38 @@ * Fix bug (introduced in 0.9.4) where banners about new releases could be printed too many times. +* Fix crash when a package version contained a dot-separated prerelease part + with both digits and non-digits. #3147 + +### Blaze + +* `Template.parentData`'s argument defaults to 1. #2861 + +* `Blaze.remove` on a template's view now correctly removes the DOM + when the template was inserted using `Blaze.renderWithData`. #3130 + +* Spacebars: Allow curly braces to be escaped, with special + sequences `{{|` and `{{{|` to insert a literal `{{` or `{{{`. + +### Meteor Accounts + * Make query parameter available to oauth1 services 6b8221d XXX emily will describe this * Expire a user's password reset and login tokens in all circumstances when their password is changed. -* Upgraded dependencies: +### Other bug fixes and improvements + +* Some packages are no longer released as part of the core release process: + amplify, backbone, bootstrap, d3, jquery-history, and jquery-layout. This + means that new versions of these packages can be published outside of the full + Meteor release cycle. + +* Fix audit-argument-checks spurious failure when an argument is NaN. #2914 + +### Upgraded dependencies + - node: 0.10.33 (from 0.10.29) - source-map-support: 0.2.8 (from 0.2.5) - semver: 4.1.0 (from 2.2.1) From 2dc8464cf7f8bae7f3bcbbc3e71925343aa702cc Mon Sep 17 00:00:00 2001 From: Emily Stark Date: Wed, 17 Dec 2014 20:30:53 -0800 Subject: [PATCH 38/60] Add History entry for OAuth1 query parameter change --- History.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/History.md b/History.md index 4e570e8c36..ddaa8a4be6 100644 --- a/History.md +++ b/History.md @@ -65,8 +65,8 @@ ### Meteor Accounts -* Make query parameter available to oauth1 services 6b8221d XXX emily will - describe this +* Allow integration with OAuth1 servers that require additional query + parameters to be passed with the access token. #2894 * Expire a user's password reset and login tokens in all circumstances when their password is changed. From 37781be2e0e4e1b1409fba5d1c89b5cae8c0ea3c Mon Sep 17 00:00:00 2001 From: Nick Martin Date: Thu, 18 Dec 2014 01:34:47 -0800 Subject: [PATCH 39/60] Minor History.md tweaks. --- History.md | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/History.md b/History.md index ddaa8a4be6..9f83c63a3c 100644 --- a/History.md +++ b/History.md @@ -9,19 +9,19 @@ * We've done a major internal overhaul of the `meteor` command-line tool with an eye to correctness, maintainability, and performance. Some details include: - * We refresh the package catalog for build commands only when an error + * Refresh the package catalog for build commands only when an error occurs that could be fixed by a refresh, not for every build command. - * We never run the constraint solver to select package versions more than once + * Never run the constraint solver to select package versions more than once per build. * Built packages ("isopacks") are now cached inside individual app directories instead of inside their source directories. - * `meteor run` starts Mongo and builds your app in parallel with each other. + * `meteor run` starts Mongo in parallel with building the application. * The constraint solver no longer leaves a `versions.json` file in your packages source directories; when publishing a package that is not inside an app, it will leave a `.versions` file (with the same format as `.meteor/versions`) which you should check into source control. * The constraint solver's model has been simplified so that plugins must use - the same version of packages as their surrounding package, when built from + the same version of packages as their surrounding package when built from local source. * Using `meteor debug` no longer requires manually continuing the debugger when @@ -30,14 +30,15 @@ * Output from the command-line tool is now word-wrapped to the width of your terminal. -* Corporate HTTP proxy support is now implemented using our websocket library's - new built-in implementation instead of a custom implementation. #2515 - * Remove support for the undocumented earliestCompatibleVersion feature of the package system. -* Fix a check for a parent process in 'meteor run' that was happening - constantly instead of every few seconds. #3252 +* Reduce CPU usage and disk I/O bandwidth by using kernel file-system + change notification events where possible. This can be disabled with + the `METEOR_WATCH_FORCE_POLLING` environment variable if needed. #2135 + +* Reduce CPU usage by fixing a check for a parent process in `meteor + run` that was happening constantly instead of every few seconds. #3252 * Fix crash when two plugins defined source handlers for the same extension. #3015 #3180 @@ -50,17 +51,22 @@ * Fix bug (introduced in 0.9.4) where banners about new releases could be printed too many times. -* Fix crash when a package version contained a dot-separated prerelease part +* Fix crash when a package version contained a dot-separated pre-release part with both digits and non-digits. #3147 +* Corporate HTTP proxy support is now implemented using our websocket library's + new built-in implementation instead of a custom implementation. #2515 + ### Blaze -* `Template.parentData`'s argument defaults to 1. #2861 +* Add default behavior for `Template.parentData` with no arguments. This + selects the first parent. #2861 -* `Blaze.remove` on a template's view now correctly removes the DOM - when the template was inserted using `Blaze.renderWithData`. #3130 +* Fix `Blaze.remove` on a template's view to correctly remove the DOM + elements when the template was inserted using + `Blaze.renderWithData`. #3130 -* Spacebars: Allow curly braces to be escaped, with special +* Allow curly braces to be escaped in Spacebars. Use the special sequences `{{|` and `{{{|` to insert a literal `{{` or `{{{`. ### Meteor Accounts From cfe07d898c17208b5fcf52510612f0c799c80666 Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Thu, 18 Dec 2014 10:55:43 -0500 Subject: [PATCH 40/60] Mention `meteor shell` in History.md. --- History.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/History.md b/History.md index 9f83c63a3c..35cbbd1bb5 100644 --- a/History.md +++ b/History.md @@ -5,7 +5,15 @@ ### Improvements to the `meteor` command-line tool -* `meteor shell` XXX ben will describe this. +* A new command called `meteor shell` attaches an interactive terminal to + an already-running server process, enabling inspection and execution of + server-side data and code, with dynamic tab completion of variable names + and properties. To see `meteor shell` in action, type `meteor run` in an + app directory, then (in another terminal) type `meteor shell` in the + same app directory. You do not have to wait for the app to start before + typing `meteor shell`, as it will automatically connect when the server + is ready. Note that `meteor shell` currently works for local development + only, and is not yet supported for apps running on remote hosts. * We've done a major internal overhaul of the `meteor` command-line tool with an eye to correctness, maintainability, and performance. Some details include: From 67e510dd646faa3c70a9237a733444502dad0efc Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Thu, 18 Dec 2014 08:20:44 -0800 Subject: [PATCH 41/60] Doc fix: meteor bundle -> meteor build --- packages/meteor/url_common.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/meteor/url_common.js b/packages/meteor/url_common.js index fb69c328be..64a0ab0725 100644 --- a/packages/meteor/url_common.js +++ b/packages/meteor/url_common.js @@ -1,5 +1,5 @@ /** - * @summary Generate an absolute URL pointing to the application. The server reads from the `ROOT_URL` environment variable to determine where it is running. This is taken care of automatically for apps deployed with `meteor deploy`, but must be provided when using `meteor bundle`. + * @summary Generate an absolute URL pointing to the application. The server reads from the `ROOT_URL` environment variable to determine where it is running. This is taken care of automatically for apps deployed with `meteor deploy`, but must be provided when using `meteor build`. * @locus Anywhere * @param {String} [path] A path to append to the root URL. Do not include a leading "`/`". * @param {Object} [options] From d58bb59e482d7f0a854aefd0f657df8b67b51121 Mon Sep 17 00:00:00 2001 From: David Glasser Date: Thu, 18 Dec 2014 10:08:38 -0800 Subject: [PATCH 42/60] Fix self-test --list formatting --- tools/selftest.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/selftest.js b/tools/selftest.js index 1fc587b90f..b66446c4a8 100644 --- a/tools/selftest.js +++ b/tools/selftest.js @@ -1650,7 +1650,7 @@ var listTests = function (options) { _.each(tests, function (test) { Console.rawInfo(' - ' + test.name + (test.tags.length ? ' [' + test.tags.join(' ') + ']' - : '')); + : '') + '\n'); }); }); From 8dc1567cc29833a26dbbed65203c6508c872a955 Mon Sep 17 00:00:00 2001 From: David Glasser Date: Thu, 18 Dec 2014 10:15:12 -0800 Subject: [PATCH 43/60] Explain why you'd set METEOR_WATCH_FORCE_POLLING --- History.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/History.md b/History.md index 35cbbd1bb5..94a70466e7 100644 --- a/History.md +++ b/History.md @@ -41,9 +41,12 @@ * Remove support for the undocumented earliestCompatibleVersion feature of the package system. -* Reduce CPU usage and disk I/O bandwidth by using kernel file-system - change notification events where possible. This can be disabled with - the `METEOR_WATCH_FORCE_POLLING` environment variable if needed. #2135 +* Reduce CPU usage and disk I/O bandwidth by using kernel file-system change + notification events where possible. On file systems that do not support these + events (NFS, Vagrant Virtualbox shared folders, etc), file changes will only + be detected every 5 seconds; to detect changes more often in these cases (but + use more CPU), set the `METEOR_WATCH_FORCE_POLLING` environment + variable. #2135 * Reduce CPU usage by fixing a check for a parent process in `meteor run` that was happening constantly instead of every few seconds. #3252 From 62561227849e423149f0424e8cc15bf9e75fdd54 Mon Sep 17 00:00:00 2001 From: David Glasser Date: Thu, 18 Dec 2014 10:44:24 -0800 Subject: [PATCH 44/60] Update mailmap/contributors --- .mailmap | 33 ++++++++++++++++++++++++----- History.md | 18 ++++++++++------ scripts/admin/find-author-github.sh | 4 ++++ 3 files changed, 43 insertions(+), 12 deletions(-) create mode 100755 scripts/admin/find-author-github.sh diff --git a/.mailmap b/.mailmap index 2536fb1770..d20a66e705 100644 --- a/.mailmap +++ b/.mailmap @@ -1,23 +1,32 @@ # This makes it easier to find GitHub usernames for History.md. # # This controls 'git shortlog'. eg, run: -# git shortlog -s release/0.6.5.1..HEAD +# git shortlog -s release/METEOR@1.0.1..HEAD # to get a sorted list of all committers to revisions in HEAD but not -# in 0.6.5.1. +# in 1.0.1. # # For any emails that show up in the shortlog that aren't in one of # these lists, figure out their GitHub username and add them. - +# +# A command-line way to get the GitHub username for an author: +# scripts/admin/find-author-github.sh 'User Name ' +# (Note that this script always outputs GITHUB so you should manually +# check to see if they are an MDG employee!) GITHUB: aldeed GITHUB: AlexeyMK +GITHUB: andylash GITHUB: ansman +GITHUB: anstarovoyt GITHUB: apendua GITHUB: awwx GITHUB: babenzele +GITHUB: benweissmann GITHUB: Cangit +GITHUB: chrisbridgett GITHUB: cmather GITHUB: codeinthehole +GITHUB: colllin GITHUB: cryptoquick GITHUB: dandv GITHUB: davegonzalez @@ -31,15 +40,20 @@ GITHUB: felixrabe GITHUB: FooBarWidget GITHUB: FredericoC GITHUB: Gaelan +GITHUB: graemian GITHUB: icellan GITHUB: ImtiazMajeed GITHUB: jacott +GITHUB: JamesLefrere GITHUB: jbruni GITHUB: jfhamlin GITHUB: jperl GITHUB: kentonv +GITHUB: kevinchiu +GITHUB: LyuGGang GITHUB: marcandre GITHUB: mart-jansink +GITHUB: matteodem GITHUB: Maxhodges GITHUB: MaximDubrovin GITHUB: meawoppl @@ -50,11 +64,15 @@ GITHUB: mitar GITHUB: mizzao GITHUB: mquandalle GITHUB: mquandalle +GITHUB: musically-ut GITHUB: nathan-muir GITHUB: Neftedollar +GITHUB: ograycode GITHUB: OyoKooN GITHUB: paulswartz +GITHUB: pcjpcj2 GITHUB: Pent +GITHUB: physiocoder GITHUB: prapicault GITHUB: prapicault GITHUB: Primigenus @@ -62,6 +80,7 @@ GITHUB: pscanf GITHUB: queso GITHUB: rcy GITHUB: rdickert +GITHUB: rgoomar GITHUB: rgould GITHUB: RichardLitt GITHUB: richguan @@ -79,7 +98,9 @@ GITHUB: thatneat GITHUB: timhaines GITHUB: timoabend GITHUB: tmeasday +GITHUB: trusktr GITHUB: twhy +GITHUB: Urigo GITHUB: waitingkuo GITHUB: wulfmeister GITHUB: yauh @@ -95,14 +116,16 @@ METEOR: dgreensp METEOR: ekatek METEOR: estark37 METEOR: estark37 -METEOR: glasser METEOR: glasser +METEOR: glasser METEOR: gschmidt METEOR: justinsb METEOR: karayu METEOR: mariapacana METEOR: n1mmy METEOR: sixolet -METEOR: Slava METEOR: Slava +METEOR: Slava +METEOR: stubailo METEOR: stubailo +METEOR: yyx990803 diff --git a/History.md b/History.md index 94a70466e7..7152855b77 100644 --- a/History.md +++ b/History.md @@ -114,7 +114,11 @@ - faye-websocket: 0.8.1 (from using websocket-driver instead) - MongoDB: 2.4.12 (from 2.4.9) -XXX include contributor list + +Patches by GitHub users andylash, anstarovoyt, benweissmann, chrisbridgett, +colllin, dandv, ecwyne, graemian, JamesLefrere, kevinchiu, LyuGGang, matteodem, +mitar, mitar, mquandalle, musically-ut, ograycode, pcjpcj2, physiocoder, +rgoomar, trusktr, Urigo, and zol. ## v1.0.1 @@ -225,7 +229,7 @@ XXX include contributor list * Allow build plugins to override the 'bare' option on added source files. #2834 -Patches by Github users DenisGorbachev, ecwyne, mitar, mquandalle, +Patches by GitHub users DenisGorbachev, ecwyne, mitar, mquandalle, Primigenus, svda, yauh, and zol. @@ -359,7 +363,7 @@ Primigenus, svda, yauh, and zol. other CPU-intensive tasks. #2536, #2588. -Patches by Github users cryptoquick, Gaelan, jperl, meonkeys, mitar, +Patches by GitHub users cryptoquick, Gaelan, jperl, meonkeys, mitar, mquandalle, prapicault, pscanf, richguan, rick-golden-healthagen, rissem, rosh93, rzymek, and timoabend @@ -426,7 +430,7 @@ will not be able to use versions of packages that use the new features. enable data persistence during hot code push. -Patches by Github users evliu, meonkeys, mitar, mizzao, mquandalle, +Patches by GitHub users evliu, meonkeys, mitar, mizzao, mquandalle, prapicault, waitingkuo, wulfmeister. @@ -505,7 +509,7 @@ integration with Apache's Cordova/PhoneGap project. `bundle/programs/client` is now `bundle/programs/web.browser`. -Patches by Github users awwx, mizzao, and mquandalle. +Patches by GitHub users awwx, mizzao, and mquandalle. @@ -595,7 +599,7 @@ prefix instead of your own username. * Fix `meteor list` if not all packages on server. Fixes #2468 -Patch by Github user mitar. +Patch by GitHub user mitar. ## v0.9.0.1 @@ -710,7 +714,7 @@ Other changes: - tar: 1.0.1 (from 0.1.19) - fstream: 1.0.2 (from 0.1.25) -Patches by Github users Cangit, dandv, ImtiazMajeed, MaximDubrovin, mitar, +Patches by GitHub users Cangit, dandv, ImtiazMajeed, MaximDubrovin, mitar, mquandalle, rcy, RichardLitt, thatneat, and twhy. diff --git a/scripts/admin/find-author-github.sh b/scripts/admin/find-author-github.sh new file mode 100755 index 0000000000..9db1ea39ce --- /dev/null +++ b/scripts/admin/find-author-github.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +export ARG="$1" +curl -s "https://github.com/meteor/meteor/commit/$(git log --format=%H -1 --author "$1")" | perl -nle 'm!)/; print "GITHUB: $name $1"; exit 0 }' From b804b2cd55d0c5f0775fc9ae1d9de76661da02a6 Mon Sep 17 00:00:00 2001 From: David Glasser Date: Thu, 18 Dec 2014 10:44:47 -0800 Subject: [PATCH 45/60] Fix wordwrap-related test failures --- tools/tests/authorized.js | 3 +-- tools/tests/deploy-auth.js | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/tools/tests/authorized.js b/tools/tests/authorized.js index 2002a5a447..0726a0a9f0 100644 --- a/tools/tests/authorized.js +++ b/tools/tests/authorized.js @@ -134,8 +134,7 @@ selftest.define('authorized - no username', ['net', 'slow'], function () { var token = testUtils.deployWithNewEmail(s, email, appName); var run = s.run('authorized', appName, '--add', 'test'); run.waitSecs(commandTimeoutSecs); - run.matchErr('You must set a password on your account before ' + - 'you can authorize other users'); + run.matchErr('You must set a password on your account'); run.expectExit(1); // After we set a username, we should be able to authorize others. testUtils.registerWithToken(token, username, 'testtest', email); diff --git a/tools/tests/deploy-auth.js b/tools/tests/deploy-auth.js index 2ff3be4372..190d598eaf 100644 --- a/tools/tests/deploy-auth.js +++ b/tools/tests/deploy-auth.js @@ -156,6 +156,6 @@ selftest.define('deploy - logged out', ['net', 'slow'], function () { run.write(email + '\n'); run.waitSecs(commandTimeoutSecs); run.matchErr('pick a password'); - run.matchErr('An email has been sent to you with the link'); + run.matchErr('sent to you with the link'); run.stop(); }); From 7fb54a952a6b4f17f34aa7985be3e94c4098f5ce Mon Sep 17 00:00:00 2001 From: David Glasser Date: Thu, 18 Dec 2014 10:46:22 -0800 Subject: [PATCH 46/60] Fix self-test expecting a removed message --- tools/tests/publish.js | 1 - 1 file changed, 1 deletion(-) diff --git a/tools/tests/publish.js b/tools/tests/publish.js index 67bf081a64..8a086a3bed 100644 --- a/tools/tests/publish.js +++ b/tools/tests/publish.js @@ -85,7 +85,6 @@ selftest.define("publish-and-search", // in any case, that we can't rely on the rest of this test working. run = s.run("publish"); run.waitSecs(15); - run.match("Reading package...\n"); run.matchErr("There is no package named " + newPackageName); run.expectExit(1); From 28ae4d48c27673cac6154763fbef0e3c45d5454d Mon Sep 17 00:00:00 2001 From: Tim Haines Date: Thu, 18 Dec 2014 08:20:44 -0800 Subject: [PATCH 47/60] Doc fix: meteor bundle -> meteor build --- packages/meteor/url_common.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/meteor/url_common.js b/packages/meteor/url_common.js index fb69c328be..64a0ab0725 100644 --- a/packages/meteor/url_common.js +++ b/packages/meteor/url_common.js @@ -1,5 +1,5 @@ /** - * @summary Generate an absolute URL pointing to the application. The server reads from the `ROOT_URL` environment variable to determine where it is running. This is taken care of automatically for apps deployed with `meteor deploy`, but must be provided when using `meteor bundle`. + * @summary Generate an absolute URL pointing to the application. The server reads from the `ROOT_URL` environment variable to determine where it is running. This is taken care of automatically for apps deployed with `meteor deploy`, but must be provided when using `meteor build`. * @locus Anywhere * @param {String} [path] A path to append to the root URL. Do not include a leading "`/`". * @param {Object} [options] From c49e7f97a1594893ee779e14118f29ea5e79667e Mon Sep 17 00:00:00 2001 From: David Glasser Date: Thu, 18 Dec 2014 10:47:14 -0800 Subject: [PATCH 48/60] Update contributor list again --- History.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/History.md b/History.md index 7152855b77..278f85b12d 100644 --- a/History.md +++ b/History.md @@ -118,7 +118,7 @@ Patches by GitHub users andylash, anstarovoyt, benweissmann, chrisbridgett, colllin, dandv, ecwyne, graemian, JamesLefrere, kevinchiu, LyuGGang, matteodem, mitar, mitar, mquandalle, musically-ut, ograycode, pcjpcj2, physiocoder, -rgoomar, trusktr, Urigo, and zol. +rgoomar, timhaines, trusktr, Urigo, and zol. ## v1.0.1 From 589dbbabcbe53a2d8bbaa1a31e415ad45fdea958 Mon Sep 17 00:00:00 2001 From: David Glasser Date: Thu, 18 Dec 2014 15:09:05 -0800 Subject: [PATCH 49/60] Fix typo in `meteor update` message Turns out that "[object Object]'" doesn't have a noPrefix property! --- tools/commands-packages.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/commands-packages.js b/tools/commands-packages.js index c2636e66e9..8173cda6e3 100644 --- a/tools/commands-packages.js +++ b/tools/commands-packages.js @@ -1574,7 +1574,7 @@ var maybeUpdateRelease = function (options) { "Installed. Run", Console.command( "'meteor update --release " + - release.current.getDisplayName({ noPrefix: true } + "'")), + release.current.getDisplayName({ noPrefix: true }) + "'"), "inside of a particular project directory to update that project to", release.current.getDisplayName() + "."); } else { From 7633de6efd63e04d9f760847aebf26cd3b2ff3e5 Mon Sep 17 00:00:00 2001 From: David Glasser Date: Thu, 18 Dec 2014 16:11:23 -0800 Subject: [PATCH 50/60] fix another word-wrap self-test --- tools/tests/package-tests.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/tests/package-tests.js b/tools/tests/package-tests.js index 271e4ebca6..6d18bd7347 100644 --- a/tools/tests/package-tests.js +++ b/tools/tests/package-tests.js @@ -828,7 +828,7 @@ selftest.define("packages with organizations", // Removing 'orgName' as a maintainer should fail. run = s.run("admin", "maintainers", fullPackageName, "--remove", orgName); run.waitSecs(15); - run.matchErr("remove the maintainer in the package prefix"); + run.matchErr("remove the maintainer in the package"); run.expectExit(1); // Publish a package with 'test' as the prefix. From 533ff573ceee54743a4e6776be4e8a0e08a21ca5 Mon Sep 17 00:00:00 2001 From: David Glasser Date: Thu, 18 Dec 2014 17:32:34 -0800 Subject: [PATCH 51/60] update autoupdate QA --- packages/autoupdate/QA.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/autoupdate/QA.md b/packages/autoupdate/QA.md index 980d50dad3..f78bca4f43 100644 --- a/packages/autoupdate/QA.md +++ b/packages/autoupdate/QA.md @@ -68,8 +68,8 @@ client automatically reloads. Remove the `reload` package so you can see the variable without having the client also reload. $ meteor remove meteor-platform - $ meteor add meteor webapp logging deps session livedata - $ meteor add mongo-livedata templating handlebars check underscore + $ meteor add meteor webapp logging tracker session ddp + $ meteor add mongo templating handlebars check underscore $ meteor add jquery random ejson autoupdate spacebars Add to leaderboard.js: From 3556010f5188fc1d2222d95dc8a9acf2f5253de2 Mon Sep 17 00:00:00 2001 From: David Glasser Date: Thu, 18 Dec 2014 17:40:34 -0800 Subject: [PATCH 52/60] banner update --- scripts/admin/banners.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/admin/banners.json b/scripts/admin/banners.json index 0a96d539c5..211c9fd0ab 100644 --- a/scripts/admin/banners.json +++ b/scripts/admin/banners.json @@ -2,9 +2,9 @@ "banners": [ { "versions": ["0.9.0", "0.9.0.1", "0.9.1", "0.9.1.1", "0.9.2", - "0.9.2.1", "0.9.2.2", "0.9.3", "0.9.3.1", "0.9.4", "1.0"], + "0.9.2.1", "0.9.2.2", "0.9.3", "0.9.3.1", "0.9.4", "1.0", "1.0.1"], "banner": { - "text": "=> Meteor 1.0.1: Fixes a security issue in allow/deny rules that could\n result in data loss.\n More information at https://www.meteor.com/patch-1.0.1\n\n This release is being downloaded in the background. Update your app to\n Meteor 1.0.1 by running 'meteor update'." + "text": "=> Meteor 1.0.2: Performance and stability improvements to the command-line\n tool, and a new server console command: 'meteor shell'!\n\n This release is being downloaded in the background. Update your app to\n Meteor 1.0.2 by running 'meteor update'." } } ] From 49319507e91a2ba55b2b26eea2011f544fd67154 Mon Sep 17 00:00:00 2001 From: Nick Martin Date: Thu, 18 Dec 2014 18:12:29 -0800 Subject: [PATCH 53/60] Update license file. --- LICENSE.txt | 98 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 98 insertions(+) diff --git a/LICENSE.txt b/LICENSE.txt index bed271a30b..0e3a669cd9 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -979,6 +979,75 @@ stringstream: https://github.com/mhart/StringStream Copyright 2012 Michael Hart (michael.hart.au@gmail.com) +---------- +clone: https://github.com/pvorb/node-clone +---------- + +Copyright © 2011-2014 Paul Vorbach + + +---------- +defaults: https://github.com/tmpvar/defaults +---------- + +---------- +throttleit: https://github.com/component/throttle +---------- + + +---------- +emissary: https://github.com/atom/emissary +event-kit: https://github.com/atom/event-kit +fs-plus: https://github.com/atom/fs-plus +grim: https://github.com/atom/grim +mixto: https://github.com/atom/mixto +pathwatcher: https://github.com/atom/node-pathwatcher +property-accessors: https://github.com/atom/property-accessors +runas: https://github.com/atom/node-runas +underscore-plus: https://github.com/atom/underscore-plus +---------- + +Copyright (c) 2013 GitHub Inc. +Copyright (c) 2014 GitHub Inc. + + +---------- +harmony-collections: https://github.com/Benvie/harmony-collections +---------- + +Copyright (c) 2012 Brandon Benvie http://bbenvie.com + + +---------- +iconv-lite: https://github.com/ashtuchkin/iconv-lite +---------- + +Copyright (c) 2011 Alexander Shtuchkin + + +---------- +request-progress: https://github.com/IndigoUnited/node-request-progress +---------- + +Copyright (c) 2012 IndigoUnited + + +---------- +wcwidth: https://github.com/mycoboco/wcwidth.js +---------- + +Copyright (C) 2012-2014 by Jun Woong and Tim Oxley. + + +---------- +adm-zip: https://github.com/cthackers/adm-zip +---------- + +Copyright (c) 2012 Another-D-Mention Software and other contributors, +http://www.another-d-mention.ro/ + + + ============== Apache License ============== @@ -1167,6 +1236,14 @@ ip: https://github.com/indutny/node-ip Copyright Fedor Indutny, 2012 +---------- +kew: https://github.com/Medium/kew +---------- + +Copyright 2012 The Obvious Corporation. +http://obvious.com/ + + ====================== Eclipse Public License @@ -3572,6 +3649,27 @@ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +---------- +wrappy: https://github.com/npm/wrappy +---------- + +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + ---------- jsdoc: https://github.com/jsdoc3/jsdoc ---------- From b76801bf5e8349026fc1d3b4490a595213f74ffb Mon Sep 17 00:00:00 2001 From: David Glasser Date: Fri, 19 Dec 2014 00:20:02 -0800 Subject: [PATCH 54/60] less excited --- scripts/admin/banners.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/admin/banners.json b/scripts/admin/banners.json index 211c9fd0ab..8592679964 100644 --- a/scripts/admin/banners.json +++ b/scripts/admin/banners.json @@ -4,7 +4,7 @@ "versions": ["0.9.0", "0.9.0.1", "0.9.1", "0.9.1.1", "0.9.2", "0.9.2.1", "0.9.2.2", "0.9.3", "0.9.3.1", "0.9.4", "1.0", "1.0.1"], "banner": { - "text": "=> Meteor 1.0.2: Performance and stability improvements to the command-line\n tool, and a new server console command: 'meteor shell'!\n\n This release is being downloaded in the background. Update your app to\n Meteor 1.0.2 by running 'meteor update'." + "text": "=> Meteor 1.0.2: Performance and stability improvements to the command-line\n tool, and a new server console command: 'meteor shell'.\n\n This release is being downloaded in the background. Update your app to\n Meteor 1.0.2 by running 'meteor update'." } } ] From e3b5a5f3ef90d3bab2317769dd93803b2c8bbb08 Mon Sep 17 00:00:00 2001 From: David Glasser Date: Fri, 19 Dec 2014 10:15:30 -0800 Subject: [PATCH 55/60] update jsdoc --- docs/client/data.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/client/data.js b/docs/client/data.js index 9f5538084a..0b28036d2b 100644 --- a/docs/client/data.js +++ b/docs/client/data.js @@ -1,2 +1,2 @@ // This file is automatically generated by JSDoc; regenerate it with scripts/admin/jsdoc/jsdoc.sh -DocsData = {"Accounts":{"kind":"namespace","name":"Accounts","summary":"The namespace for all accounts-related methods.","longname":"Accounts"},"Accounts.ui":{"summary":"Accounts UI","kind":"namespace","memberof":"Accounts","name":"ui","longname":"Accounts.ui","scope":"static"},"Blaze":{"kind":"namespace","name":"Blaze","summary":"The namespace for all Blaze-related methods and classes.","longname":"Blaze"},"Match":{"kind":"namespace","name":"Match","summary":"The namespace for all Match types and methods.","longname":"Match"},"DDP":{"kind":"namespace","name":"DDP","summary":"The namespace for DDP-related methods.","longname":"DDP"},"EJSON":{"kind":"namespace","summary":"Namespace for EJSON functions","name":"EJSON","longname":"EJSON","scope":"global"},"Meteor":{"summary":"The Meteor namespace","kind":"namespace","name":"Meteor","longname":"Meteor"},"Mongo":{"summary":"Namespace for MongoDB-related items","kind":"namespace","name":"Mongo","longname":"Mongo","scope":"global"},"Tracker":{"kind":"namespace","name":"Tracker","summary":"The namespace for Tracker-related methods.","longname":"Tracker"},"Assets":{"summary":"The namespace for Assets functions, lives in the bundler.","kind":"namespace","name":"Assets","longname":"Assets"},"App":{"kind":"namespace","name":"App","scope":"global","summary":"The App configuration object in mobile-config.js","longname":"App"},"Plugin":{"scope":"global","kind":"namespace","name":"Plugin","summary":"The namespace that is exposed inside build plugin files.","longname":"Plugin"},"Package":{"scope":"global","name":"Package","summary":"The Package object in package.js","kind":"namespace","longname":"Package","locus":"package.js"},"Npm":{"kind":"namespace","name":"Npm","scope":"global","summary":"The Npm object in package.js and package source files.","longname":"Npm"},"Cordova":{"kind":"namespace","name":"Cordova","scope":"global","summary":"The Cordova object in package.js.","longname":"Cordova"},"currentUser":{"scope":"global","name":"currentUser","summary":"Calls [Meteor.user()](#meteor_user). Use `{{#if currentUser}}` to check whether the user is logged in.","longname":"currentUser","kind":"member","ishelper":"true"},"loggingIn":{"scope":"global","name":"loggingIn","summary":"Calls [Meteor.loggingIn()](#meteor_loggingin).","longname":"loggingIn","kind":"member","ishelper":"true"},"Meteor.users":{"summary":"A [Mongo.Collection](#collections) containing user documents.","type":{"names":["Mongo.Collection"]},"name":"users","longname":"Meteor.users","kind":"member","memberof":"Meteor","scope":"static","locus":"Anywhere"},"Accounts.emailTemplates":{"summary":"Options to customize emails sent from the Accounts system.","name":"emailTemplates","longname":"Accounts.emailTemplates","kind":"member","memberof":"Accounts","scope":"static","locus":"Server"},"Template#created":{"name":"created","scope":"instance","memberof":"Template","summary":"Provide a callback when an instance of a template is created.","longname":"Template#created","kind":"member","locus":"Client"},"Template#rendered":{"name":"rendered","scope":"instance","memberof":"Template","summary":"Provide a callback when an instance of a template is rendered.","longname":"Template#rendered","kind":"member","locus":"Client"},"Template#destroyed":{"name":"destroyed","scope":"instance","memberof":"Template","summary":"Provide a callback when an instance of a template is destroyed.","longname":"Template#destroyed","kind":"member","locus":"Client"},"Blaze.TemplateInstance#data":{"scope":"instance","memberof":"Blaze.TemplateInstance","name":"data","summary":"The data context of this instance's latest invocation.","longname":"Blaze.TemplateInstance#data","kind":"member","locus":"Client"},"Blaze.TemplateInstance#view":{"name":"view","memberof":"Blaze.TemplateInstance","scope":"instance","summary":"The [View](#blaze_view) object for this invocation of the template.","type":{"names":["Blaze.View"]},"longname":"Blaze.TemplateInstance#view","kind":"member","locus":"Client"},"Blaze.TemplateInstance#firstNode":{"name":"firstNode","memberof":"Blaze.TemplateInstance","scope":"instance","summary":"The first top-level DOM node in this template instance.","type":{"names":["DOMNode"]},"longname":"Blaze.TemplateInstance#firstNode","kind":"member","locus":"Client"},"Blaze.TemplateInstance#lastNode":{"name":"lastNode","memberof":"Blaze.TemplateInstance","scope":"instance","summary":"The last top-level DOM node in this template instance.","type":{"names":["DOMNode"]},"longname":"Blaze.TemplateInstance#lastNode","kind":"member","locus":"Client"},"Blaze.currentView":{"summary":"The View corresponding to the current template helper, event handler, callback, or autorun. If there isn't one, `null`.","type":{"names":["Blaze.View"]},"name":"currentView","longname":"Blaze.currentView","kind":"member","memberof":"Blaze","scope":"static","locus":"Client"},"MethodInvocation#isSimulation":{"summary":"Access inside a method invocation. Boolean value, true if this invocation is a stub.","name":"isSimulation","memberof":"MethodInvocation","scope":"instance","type":{"names":["Boolean"]},"longname":"MethodInvocation#isSimulation","kind":"member","locus":"Anywhere"},"MethodInvocation#userId":{"summary":"The id of the user that made this method call, or `null` if no user was logged in.","name":"userId","memberof":"MethodInvocation","scope":"instance","longname":"MethodInvocation#userId","kind":"member","locus":"Anywhere"},"MethodInvocation#connection":{"summary":"Access inside a method invocation. The [connection](#meteor_onconnection) that this method was received on. `null` if the method is not associated with a connection, eg. a server initiated method call.","name":"connection","memberof":"MethodInvocation","scope":"instance","longname":"MethodInvocation#connection","kind":"member","locus":"Server"},"Subscription#connection":{"summary":"Access inside the publish function. The incoming [connection](#meteor_onconnection) for this subscription.","name":"connection","memberof":"Subscription","scope":"instance","longname":"Subscription#connection","kind":"member","locus":"Server"},"Subscription#userId":{"summary":"Access inside the publish function. The id of the logged-in user, or `null` if no user is logged in.","memberof":"Subscription","name":"userId","scope":"instance","longname":"Subscription#userId","kind":"member","locus":"Server"},"EJSON.newBinary":{"summary":"Allocate a new buffer of binary data that EJSON can serialize.","params":[{"type":{"names":["Number"]},"description":"

The number of bytes of binary data to allocate.

","name":"size"}],"name":"newBinary","longname":"EJSON.newBinary","kind":"member","memberof":"EJSON","scope":"static","locus":"Anywhere"},"Meteor.isClient":{"summary":"Boolean variable. True if running in client environment.","scope":"static","type":{"names":["Boolean"]},"name":"isClient","longname":"Meteor.isClient","kind":"member","memberof":"Meteor","locus":"Anywhere"},"Meteor.isServer":{"summary":"Boolean variable. True if running in server environment.","scope":"static","type":{"names":["Boolean"]},"name":"isServer","longname":"Meteor.isServer","kind":"member","memberof":"Meteor","locus":"Anywhere"},"Meteor.settings":{"summary":"`Meteor.settings` contains deployment-specific configuration options. You can initialize settings by passing the `--settings` option (which takes the name of a file containing JSON data) to `meteor run` or `meteor deploy`. When running your server directly (e.g. from a bundle), you instead specify settings by putting the JSON directly into the `METEOR_SETTINGS` environment variable. If you don't provide any settings, `Meteor.settings` will be an empty object. If the settings object contains a key named `public`, then `Meteor.settings.public` will be available on the client as well as the server. All other properties of `Meteor.settings` are only defined on the server.","type":{"names":["Object"]},"name":"settings","longname":"Meteor.settings","kind":"member","memberof":"Meteor","scope":"static","locus":"Anywhere"},"Meteor.isCordova":{"summary":"Boolean variable. True if running in a Cordova mobile environment.","type":{"names":["Boolean"]},"scope":"static","name":"isCordova","longname":"Meteor.isCordova","kind":"member","memberof":"Meteor","locus":"Anywhere"},"Meteor.release":{"summary":"`Meteor.release` is a string containing the name of the [release](#meteorupdate) with which the project was built (for example, `\"1.2.3\"`). It is `undefined` if the project was built using a git checkout of Meteor.","type":{"names":["String"]},"name":"release","longname":"Meteor.release","kind":"member","memberof":"Meteor","scope":"static","locus":"Anywhere"},"Template.body":{"summary":"The [template object](#templates_api) representing your `` tag.","name":"body","longname":"Template.body","kind":"member","memberof":"Template","scope":"static","locus":"Client"},"Tracker.active":{"summary":"True if there is a current computation, meaning that dependencies on reactive data sources will be tracked and potentially cause the current computation to be rerun.","type":{"names":["Boolean"]},"name":"active","longname":"Tracker.active","kind":"member","memberof":"Tracker","scope":"static","locus":"Client"},"Tracker.currentComputation":{"summary":"The current computation, or `null` if there isn't one. The current computation is the [`Tracker.Computation`](#tracker_computation) object created by the innermost active call to `Tracker.autorun`, and it's the computation that gains dependencies when reactive data sources are accessed.","type":{"names":["Tracker.Computation"]},"name":"currentComputation","longname":"Tracker.currentComputation","kind":"member","memberof":"Tracker","scope":"static","locus":"Client"},"Tracker.Computation#stopped":{"summary":"True if this computation has been stopped.","memberof":"Tracker.Computation","scope":"instance","name":"stopped","longname":"Tracker.Computation#stopped","kind":"member","locus":"Client"},"Tracker.Computation#invalidated":{"summary":"True if this computation has been invalidated (and not yet rerun), or if it has been stopped.","memberof":"Tracker.Computation","scope":"instance","name":"invalidated","type":{"names":["Boolean"]},"longname":"Tracker.Computation#invalidated","kind":"member","locus":"Client"},"Tracker.Computation#firstRun":{"summary":"True during the initial run of the computation at the time `Tracker.autorun` is called, and false on subsequent reruns and at other times.","memberof":"Tracker.Computation","scope":"instance","name":"firstRun","type":{"names":["Boolean"]},"longname":"Tracker.Computation#firstRun","kind":"member","locus":"Client"},"CompileStep#inputSize":{"summary":"The total number of bytes in the input file.","memberof":"CompileStep","scope":"instance","type":{"names":["Integer"]},"name":"inputSize","longname":"CompileStep#inputSize","kind":"member"},"CompileStep#inputPath":{"summary":"The filename and relative path of the input file.\nPlease don't use this filename to read the file from disk, instead\nuse [compileStep.read](CompileStep-read).","type":{"names":["String"]},"scope":"instance","memberof":"CompileStep","name":"inputPath","longname":"CompileStep#inputPath","kind":"member"},"CompileStep#fullInputPath":{"summary":"The filename and absolute path of the input file.\nPlease don't use this filename to read the file from disk, instead\nuse [compileStep.read](CompileStep-read).","type":{"names":["String"]},"scope":"instance","memberof":"CompileStep","name":"fullInputPath","longname":"CompileStep#fullInputPath","kind":"member"},"CompileStep#pathForSourceMap":{"summary":"If you are generating a sourcemap for the compiled file, use\nthis path for the original file in the sourcemap.","type":{"names":["String"]},"memberof":"CompileStep","scope":"instance","name":"pathForSourceMap","longname":"CompileStep#pathForSourceMap","kind":"member"},"CompileStep#packageName":{"summary":"The name of the package in which the file being built exists.","type":{"names":["String"]},"memberof":"CompileStep","scope":"instance","name":"packageName","longname":"CompileStep#packageName","kind":"member"},"CompileStep#rootOutputPath":{"summary":"On web targets, this will be the root URL prepended\nto the paths you pick for your output files. For example,\nit could be \"/packages/my-package\".","type":{"names":["String"]},"memberof":"CompileStep","scope":"instance","name":"rootOutputPath","longname":"CompileStep#rootOutputPath","kind":"member"},"CompileStep#arch":{"summary":"The architecture for which we are building. Can be \"os\",\n\"web.browser\", or \"web.cordova\".","type":{"names":["String"]},"memberof":"CompileStep","scope":"instance","name":"arch","longname":"CompileStep#arch","kind":"member"},"CompileStep#fileOptions":{"summary":"Any options passed to \"api.addFiles\".","type":{"names":["Object"]},"memberof":"CompileStep","scope":"instance","name":"fileOptions","longname":"CompileStep#fileOptions","kind":"member"},"CompileStep#declaredExports":{"summary":"The list of exports that the current package has defined.\nCan be used to treat those symbols differently during compilation.","type":{"names":["Object"]},"memberof":"CompileStep","scope":"instance","name":"declaredExports","longname":"CompileStep#declaredExports","kind":"member"},"Meteor.userId":{"summary":"Get the current user id, or `null` if no user is logged in. A reactive data source.","name":"userId","longname":"Meteor.userId","kind":"function","memberof":"Meteor","scope":"static","options":[],"params":[],"locus":"Anywhere but publish functions"},"Meteor.loggingIn":{"summary":"True if a login method (such as `Meteor.loginWithPassword`, `Meteor.loginWithFacebook`, or `Accounts.createUser`) is currently in progress. A reactive data source.","name":"loggingIn","longname":"Meteor.loggingIn","kind":"function","memberof":"Meteor","scope":"static","options":[],"params":[],"locus":"Client"},"Meteor.user":{"summary":"Get the current user record, or `null` if no user is logged in. A reactive data source.","name":"user","longname":"Meteor.user","kind":"function","memberof":"Meteor","scope":"static","options":[],"params":[],"locus":"Anywhere but publish functions"},"Meteor.logout":{"summary":"Log the user out.","params":[{"type":{"names":["function"]},"optional":true,"description":"

Optional callback. Called with no arguments on success, or with a single Error argument on failure.

","name":"callback"}],"name":"logout","longname":"Meteor.logout","kind":"function","memberof":"Meteor","scope":"static","options":[],"locus":"Client"},"Meteor.logoutOtherClients":{"summary":"Log out other clients logged in as the current user, but does not log out the client that calls this function.","params":[{"type":{"names":["function"]},"optional":true,"description":"

Optional callback. Called with no arguments on success, or with a single Error argument on failure.

","name":"callback"}],"name":"logoutOtherClients","longname":"Meteor.logoutOtherClients","kind":"function","memberof":"Meteor","scope":"static","options":[],"locus":"Client"},"Accounts.config":{"summary":"Set global accounts options.","params":[{"type":{"names":["Object"]},"name":"options"}],"name":"config","longname":"Accounts.config","kind":"function","memberof":"Accounts","scope":"static","options":[{"type":{"names":["Boolean"]},"description":"

New users with an email address will receive an address verification email.

","name":"sendVerificationEmail"},{"type":{"names":["Boolean"]},"description":"

Calls to createUser from the client will be rejected. In addition, if you are using accounts-ui, the "Create account" link will not be available.

","name":"forbidClientAccountCreation"},{"type":{"names":["String","function"]},"description":"

If set to a string, only allows new users if the domain part of their email address matches the string. If set to a function, only allows new users if the function returns true. The function is passed the full email address of the proposed new user. Works with password-based sign-in and external services that expose email addresses (Google, Facebook, GitHub). All existing users still can log in after enabling this option. Example: Accounts.config({ restrictCreationByEmailDomain: 'school.edu' }).

","name":"restrictCreationByEmailDomain"},{"type":{"names":["Number"]},"description":"

The number of days from when a user logs in until their token expires and they are logged out. Defaults to 90. Set to null to disable login expiration.

","name":"loginExpirationInDays"},{"type":{"names":["String"]},"description":"

When using the oauth-encryption package, the 16 byte key using to encrypt sensitive account credentials in the database, encoded in base64. This option may only be specifed on the server. See packages/oauth-encryption/README.md for details.

","name":"oauthSecretKey"}],"locus":"Anywhere"},"Accounts.validateLoginAttempt":{"summary":"Validate login attempts.","params":[{"type":{"names":["function"]},"description":"

Called whenever a login is attempted (either successful or unsuccessful). A login can be aborted by returning a falsy value or throwing an exception.

","name":"func"}],"name":"validateLoginAttempt","longname":"Accounts.validateLoginAttempt","kind":"function","memberof":"Accounts","scope":"static","options":[],"locus":"Server"},"Accounts.onLogin":{"summary":"Register a callback to be called after a login attempt succeeds.","params":[{"type":{"names":["function"]},"description":"

The callback to be called when login is successful.

","name":"func"}],"name":"onLogin","longname":"Accounts.onLogin","kind":"function","memberof":"Accounts","scope":"static","options":[],"locus":"Server"},"Accounts.onLoginFailure":{"summary":"Register a callback to be called after a login attempt fails.","params":[{"type":{"names":["function"]},"description":"

The callback to be called after the login has failed.

","name":"func"}],"name":"onLoginFailure","longname":"Accounts.onLoginFailure","kind":"function","memberof":"Accounts","scope":"static","options":[],"locus":"Server"},"Accounts.onCreateUser":{"summary":"Customize new user creation.","params":[{"type":{"names":["function"]},"description":"

Called whenever a new user is created. Return the new user object, or throw an Error to abort the creation.

","name":"func"}],"name":"onCreateUser","longname":"Accounts.onCreateUser","kind":"function","memberof":"Accounts","scope":"static","options":[],"locus":"Server"},"Accounts.validateNewUser":{"summary":"Set restrictions on new user creation.","params":[{"type":{"names":["function"]},"description":"

Called whenever a new user is created. Takes the new user object, and returns true to allow the creation or false to abort.

","name":"func"}],"name":"validateNewUser","longname":"Accounts.validateNewUser","kind":"function","memberof":"Accounts","scope":"static","options":[],"locus":"Server"},"Accounts.onResetPasswordLink":{"summary":"Register a function to call when a reset password link is clicked\nin an email sent by\n[`Accounts.sendResetPasswordEmail`](#accounts_sendresetpasswordemail).\nThis function should be called in top-level code, not inside\n`Meteor.startup()`.","params":[{"type":{"names":["function"]},"description":"

The function to call. It is given two arguments:

\n
    \n
  1. token: A password reset token that can be passed to\nAccounts.resetPassword.
  2. \n
  3. done: A function to call when the password reset UI flow is complete. The normal\nlogin process is suspended until this function is called, so that the\npassword for user A can be reset even if user B was logged in.
  4. \n
","name":"callback"}],"name":"onResetPasswordLink","longname":"Accounts.onResetPasswordLink","kind":"function","memberof":"Accounts","scope":"static","options":[],"locus":"Client"},"Accounts.onEmailVerificationLink":{"summary":"Register a function to call when an email verification link is\nclicked in an email sent by\n[`Accounts.sendVerificationEmail`](#accounts_sendverificationemail).\nThis function should be called in top-level code, not inside\n`Meteor.startup()`.","params":[{"type":{"names":["function"]},"description":"

The function to call. It is given two arguments:

\n
    \n
  1. token: An email verification token that can be passed to\nAccounts.verifyEmail.
  2. \n
  3. done: A function to call when the email verification UI flow is complete.\nThe normal login process is suspended until this function is called, so\nthat the user can be notified that they are verifying their email before\nbeing logged in.
  4. \n
","name":"callback"}],"name":"onEmailVerificationLink","longname":"Accounts.onEmailVerificationLink","kind":"function","memberof":"Accounts","scope":"static","options":[],"locus":"Client"},"Accounts.onEnrollmentLink":{"summary":"Register a function to call when an account enrollment link is\nclicked in an email sent by\n[`Accounts.sendEnrollmentEmail`](#accounts_sendenrollmentemail).\nThis function should be called in top-level code, not inside\n`Meteor.startup()`.","params":[{"type":{"names":["function"]},"description":"

The function to call. It is given two arguments:

\n
    \n
  1. token: A password reset token that can be passed to\nAccounts.resetPassword to give the newly\nenrolled account a password.
  2. \n
  3. done: A function to call when the enrollment UI flow is complete.\nThe normal login process is suspended until this function is called, so that\nuser A can be enrolled even if user B was logged in.
  4. \n
","name":"callback"}],"name":"onEnrollmentLink","longname":"Accounts.onEnrollmentLink","kind":"function","memberof":"Accounts","scope":"static","options":[],"locus":"Client"},"Meteor.loginWith":{"name":"loginWith","memberof":"Meteor","kind":"function","summary":"Log the user in using an external service.","params":[{"type":{"names":["Object"]},"optional":true,"name":"options"},{"type":{"names":["function"]},"optional":true,"description":"

Optional callback. Called with no arguments on success, or with a single Error argument on failure.

","name":"callback"}],"scope":"static","longname":"Meteor.loginWith","options":[{"type":{"names":["Array."]},"description":"

A list of permissions to request from the user.

","name":"requestPermissions"},{"type":{"names":["Boolean"]},"description":"

If true, asks the user for permission to act on their behalf when offline. This stores an additional offline token in the services field of the user document. Currently only supported with Google.

","name":"requestOfflineToken"},{"type":{"names":["Boolean"]},"description":"

If true, forces the user to approve the app's permissions, even if previously approved. Currently only supported with Google.

","name":"forceApprovalPrompt"},{"type":{"names":["String"]},"description":"

An email address that the external service will use to pre-fill the login prompt. Currently only supported with Meteor developer accounts.

","name":"userEmail"},{"type":{"names":["String"]},"description":"

Login style ("popup" or "redirect", defaults to the login service configuration). The "popup" style opens the login page in a separate popup window, which is generally preferred because the Meteor application doesn't need to be reloaded. The "redirect" style redirects the Meteor application's window to the login page, and the login service provider redirects back to the Meteor application which is then reloaded. The "redirect" style can be used in situations where a popup window can't be opened, such as in a mobile UIWebView. The "redirect" style however relies on session storage which isn't available in Safari private mode, so the "popup" style will be forced if session storage can't be used.

","name":"loginStyle"}],"locus":"Client"},"Meteor.loginWithPassword":{"summary":"Log the user in with a password.","params":[{"type":{"names":["Object","String"]},"description":"

Either a string interpreted as a username or an email; or an object with a single key: email, username or id.

","name":"user"},{"type":{"names":["String"]},"description":"

The user's password.

","name":"password"},{"type":{"names":["function"]},"optional":true,"description":"

Optional callback. Called with no arguments on success, or with a single Error argument on failure.

","name":"callback"}],"name":"loginWithPassword","longname":"Meteor.loginWithPassword","kind":"function","memberof":"Meteor","scope":"static","options":[],"locus":"Client"},"Accounts.createUser":{"summary":"Create a new user.","params":[{"type":{"names":["Object"]},"name":"options"},{"type":{"names":["function"]},"optional":true,"description":"

Client only, optional callback. Called with no arguments on success, or with a single Error argument on failure.

","name":"callback"}],"name":"createUser","longname":"Accounts.createUser","kind":"function","memberof":"Accounts","scope":"static","options":[{"type":{"names":["String"]},"description":"

A unique name for this user.

","name":"username"},{"type":{"names":["String"]},"description":"

The user's email address.

","name":"email"},{"type":{"names":["String"]},"description":"

The user's password. This is not sent in plain text over the wire.

","name":"password"},{"type":{"names":["Object"]},"description":"

The user's profile, typically including the name field.

","name":"profile"}],"locus":"Anywhere"},"Accounts.changePassword":{"summary":"Change the current user's password. Must be logged in.","params":[{"type":{"names":["String"]},"description":"

The user's current password. This is not sent in plain text over the wire.

","name":"oldPassword"},{"type":{"names":["String"]},"description":"

A new password for the user. This is not sent in plain text over the wire.

","name":"newPassword"},{"type":{"names":["function"]},"optional":true,"description":"

Optional callback. Called with no arguments on success, or with a single Error argument on failure.

","name":"callback"}],"name":"changePassword","longname":"Accounts.changePassword","kind":"function","memberof":"Accounts","scope":"static","options":[],"locus":"Client"},"Accounts.forgotPassword":{"summary":"Request a forgot password email.","params":[{"type":{"names":["Object"]},"name":"options"},{"type":{"names":["function"]},"optional":true,"description":"

Optional callback. Called with no arguments on success, or with a single Error argument on failure.

","name":"callback"}],"name":"forgotPassword","longname":"Accounts.forgotPassword","kind":"function","memberof":"Accounts","scope":"static","options":[{"type":{"names":["String"]},"description":"

The email address to send a password reset link.

","name":"email"}],"locus":"Client"},"Accounts.resetPassword":{"summary":"Reset the password for a user using a token received in email. Logs the user in afterwards.","params":[{"type":{"names":["String"]},"description":"

The token retrieved from the reset password URL.

","name":"token"},{"type":{"names":["String"]},"description":"

A new password for the user. This is not sent in plain text over the wire.

","name":"newPassword"},{"type":{"names":["function"]},"optional":true,"description":"

Optional callback. Called with no arguments on success, or with a single Error argument on failure.

","name":"callback"}],"name":"resetPassword","longname":"Accounts.resetPassword","kind":"function","memberof":"Accounts","scope":"static","options":[],"locus":"Client"},"Accounts.verifyEmail":{"summary":"Marks the user's email address as verified. Logs the user in afterwards.","params":[{"type":{"names":["String"]},"description":"

The token retrieved from the verification URL.

","name":"token"},{"type":{"names":["function"]},"optional":true,"description":"

Optional callback. Called with no arguments on success, or with a single Error argument on failure.

","name":"callback"}],"name":"verifyEmail","longname":"Accounts.verifyEmail","kind":"function","memberof":"Accounts","scope":"static","options":[],"locus":"Client"},"Accounts.setPassword":{"summary":"Forcibly change the password for a user.","params":[{"type":{"names":["String"]},"description":"

The id of the user to update.

","name":"userId"},{"type":{"names":["String"]},"description":"

A new password for the user.

","name":"newPassword"}],"name":"setPassword","longname":"Accounts.setPassword","kind":"function","memberof":"Accounts","scope":"static","options":[],"locus":"Server"},"Accounts.sendResetPasswordEmail":{"summary":"Send an email with a link the user can use to reset their password.","params":[{"type":{"names":["String"]},"description":"

The id of the user to send email to.

","name":"userId"},{"type":{"names":["String"]},"optional":true,"description":"

Optional. Which address of the user's to send the email to. This address must be in the user's emails list. Defaults to the first email in the list.

","name":"email"}],"name":"sendResetPasswordEmail","longname":"Accounts.sendResetPasswordEmail","kind":"function","memberof":"Accounts","scope":"static","options":[],"locus":"Server"},"Accounts.sendEnrollmentEmail":{"summary":"Send an email with a link the user can use to set their initial password.","params":[{"type":{"names":["String"]},"description":"

The id of the user to send email to.

","name":"userId"},{"type":{"names":["String"]},"optional":true,"description":"

Optional. Which address of the user's to send the email to. This address must be in the user's emails list. Defaults to the first email in the list.

","name":"email"}],"name":"sendEnrollmentEmail","longname":"Accounts.sendEnrollmentEmail","kind":"function","memberof":"Accounts","scope":"static","options":[],"locus":"Server"},"Accounts.sendVerificationEmail":{"summary":"Send an email with a link the user can use verify their email address.","params":[{"type":{"names":["String"]},"description":"

The id of the user to send email to.

","name":"userId"},{"type":{"names":["String"]},"optional":true,"description":"

Optional. Which address of the user's to send the email to. This address must be in the user's emails list. Defaults to the first unverified email in the list.

","name":"email"}],"name":"sendVerificationEmail","longname":"Accounts.sendVerificationEmail","kind":"function","memberof":"Accounts","scope":"static","options":[],"locus":"Server"},"Accounts.ui.config":{"summary":"Configure the behavior of [`{{> loginButtons}}`](#accountsui).","params":[{"type":{"names":["Object"]},"name":"options"}],"name":"config","longname":"Accounts.ui.config","kind":"function","memberof":"Accounts.ui","scope":"static","options":[{"type":{"names":["Object"]},"description":"

Which permissions to request from the user for each external service.

","name":"requestPermissions"},{"type":{"names":["Object"]},"description":"

To ask the user for permission to act on their behalf when offline, map the relevant external service to true. Currently only supported with Google. See Meteor.loginWithExternalService for more details.

","name":"requestOfflineToken"},{"type":{"names":["Object"]},"description":"

If true, forces the user to approve the app's permissions, even if previously approved. Currently only supported with Google.

","name":"forceApprovalPrompt"},{"type":{"names":["String"]},"description":"

Which fields to display in the user creation form. One of 'USERNAME_AND_EMAIL', 'USERNAME_AND_OPTIONAL_EMAIL', 'USERNAME_ONLY', or 'EMAIL_ONLY' (default).

","name":"passwordSignupFields"}],"locus":"Client"},"Blaze.With":{"summary":"Constructs a View that renders content with a data context.","params":[{"type":{"names":["Object","function"]},"description":"

An object to use as the data context, or a function returning such an object. If a function is provided, it will be reactively re-run.

","name":"data"},{"type":{"names":["function"]},"description":"

A Function that returns renderable content.

","name":"contentFunc"}],"name":"With","longname":"Blaze.With","kind":"function","memberof":"Blaze","scope":"static","options":[],"locus":"Client"},"Blaze.If":{"summary":"Constructs a View that renders content conditionally.","params":[{"type":{"names":["function"]},"description":"

A function to reactively re-run. Whether the result is truthy or falsy determines whether contentFunc or elseFunc is shown. An empty array is considered falsy.

","name":"conditionFunc"},{"type":{"names":["function"]},"description":"

A Function that returns renderable content.

","name":"contentFunc"},{"type":{"names":["function"]},"optional":true,"description":"

Optional. A Function that returns renderable content. If no elseFunc is supplied, no content is shown in the "else" case.

","name":"elseFunc"}],"name":"If","longname":"Blaze.If","kind":"function","memberof":"Blaze","scope":"static","options":[],"locus":"Client"},"Blaze.Unless":{"summary":"An inverted [`Blaze.If`](#blaze_if).","params":[{"type":{"names":["function"]},"description":"

A function to reactively re-run. If the result is falsy, contentFunc is shown, otherwise elseFunc is shown. An empty array is considered falsy.

","name":"conditionFunc"},{"type":{"names":["function"]},"description":"

A Function that returns renderable content.

","name":"contentFunc"},{"type":{"names":["function"]},"optional":true,"description":"

Optional. A Function that returns renderable content. If no elseFunc is supplied, no content is shown in the "else" case.

","name":"elseFunc"}],"name":"Unless","longname":"Blaze.Unless","kind":"function","memberof":"Blaze","scope":"static","options":[],"locus":"Client"},"Blaze.Each":{"summary":"Constructs a View that renders `contentFunc` for each item in a sequence.","params":[{"type":{"names":["function"]},"description":"

A function to reactively re-run. The function may return a Cursor, an array, null, or undefined.

","name":"argFunc"},{"type":{"names":["function"]},"description":"

A Function that returns renderable content.

","name":"contentFunc"},{"type":{"names":["function"]},"optional":true,"description":"

Optional. A Function that returns renderable content to display in the case when there are no items to display.

","name":"elseFunc"}],"name":"Each","longname":"Blaze.Each","kind":"function","memberof":"Blaze","scope":"static","options":[],"locus":"Client"},"Blaze.isTemplate":{"summary":"Returns true if `value` is a template object like `Template.myTemplate`.","params":[{"type":{"names":["Any"]},"description":"

The value to test.

","name":"value"}],"name":"isTemplate","longname":"Blaze.isTemplate","kind":"function","memberof":"Blaze","scope":"static","options":[],"locus":"Client"},"Blaze.TemplateInstance#$":{"summary":"Find all elements matching `selector` in this template instance, and return them as a JQuery object.","params":[{"type":{"names":["String"]},"description":"

The CSS selector to match, scoped to the template contents.

","name":"selector"}],"returns":[{"type":{"names":["Array."]}}],"name":"$","longname":"Blaze.TemplateInstance#$","kind":"function","memberof":"Blaze.TemplateInstance","scope":"instance","options":[],"locus":"Client"},"Blaze.TemplateInstance#findAll":{"summary":"Find all elements matching `selector` in this template instance.","params":[{"type":{"names":["String"]},"description":"

The CSS selector to match, scoped to the template contents.

","name":"selector"}],"returns":[{"type":{"names":["Array."]}}],"name":"findAll","longname":"Blaze.TemplateInstance#findAll","kind":"function","memberof":"Blaze.TemplateInstance","scope":"instance","options":[],"locus":"Client"},"Blaze.TemplateInstance#find":{"summary":"Find one element matching `selector` in this template instance.","params":[{"type":{"names":["String"]},"description":"

The CSS selector to match, scoped to the template contents.

","name":"selector"}],"returns":[{"type":{"names":["DOMElement"]}}],"name":"find","longname":"Blaze.TemplateInstance#find","kind":"function","memberof":"Blaze.TemplateInstance","scope":"instance","options":[],"locus":"Client"},"Blaze.TemplateInstance#autorun":{"summary":"A version of [Tracker.autorun](#tracker_autorun) that is stopped when the template is destroyed.","params":[{"type":{"names":["function"]},"description":"

The function to run. It receives one argument: a Tracker.Computation object.

","name":"runFunc"}],"name":"autorun","longname":"Blaze.TemplateInstance#autorun","kind":"function","memberof":"Blaze.TemplateInstance","scope":"instance","options":[],"locus":"Client"},"Template#helpers":{"summary":"Specify template helpers available to this template.","params":[{"type":{"names":["Object"]},"description":"

Dictionary of helper functions by name.

","name":"helpers"}],"name":"helpers","longname":"Template#helpers","kind":"function","memberof":"Template","scope":"instance","options":[],"locus":"Client"},"Template#events":{"summary":"Specify event handlers for this template.","params":[{"type":{"names":["EventMap"]},"description":"

Event handlers to associate with this template.

","name":"eventMap"}],"name":"events","longname":"Template#events","kind":"function","memberof":"Template","scope":"instance","options":[],"locus":"Client"},"Template.instance":{"kind":"function","name":"instance","memberof":"Template","summary":"The [template instance](#template_inst) corresponding to the current template helper, event handler, callback, or autorun. If there isn't one, `null`.","returns":[{"description":"

Blaze.TemplateInstance

"}],"scope":"static","longname":"Template.instance","options":[],"params":[],"locus":"Client"},"Template.currentData":{"summary":"Returns the data context of the current helper, or the data context of the template that declares the current event handler or callback. Establishes a reactive dependency on the result.","kind":"function","name":"currentData","longname":"Template.currentData","memberof":"Template","scope":"static","options":[],"params":[],"locus":"Client"},"Template.parentData":{"summary":"Accesses other data contexts that enclose the current data context.","kind":"function","params":[{"type":{"names":["Integer"]},"optional":true,"description":"

The number of levels beyond the current data context to look. Defaults to 1.

","name":"numLevels"}],"name":"parentData","longname":"Template.parentData","memberof":"Template","scope":"static","options":[],"locus":"Client"},"Template.registerHelper":{"summary":"Defines a [helper function](#template_helpers) which can be used from all templates.","kind":"function","params":[{"type":{"names":["String"]},"description":"

The name of the helper function you are defining.

","name":"name"},{"type":{"names":["function"]},"description":"

The helper function itself.

","name":"function"}],"name":"registerHelper","longname":"Template.registerHelper","memberof":"Template","scope":"static","options":[],"locus":"Client"},"Blaze.render":{"summary":"Renders a template or View to DOM nodes and inserts it into the DOM, returning a rendered [View](#blaze_view) which can be passed to [`Blaze.remove`](#blaze_remove).","params":[{"type":{"names":["Template","Blaze.View"]},"description":"

The template (e.g. Template.myTemplate) or View object to render. If a template, a View object is constructed. If a View, it must be an unrendered View, which becomes a rendered View and is returned.

","name":"templateOrView"},{"type":{"names":["DOMNode"]},"description":"

The node that will be the parent of the rendered template. It must be an Element node.

","name":"parentNode"},{"type":{"names":["DOMNode"]},"optional":true,"description":"

Optional. If provided, must be a child of parentNode; the template will be inserted before this node. If not provided, the template will be inserted as the last child of parentNode.

","name":"nextNode"},{"type":{"names":["Blaze.View"]},"optional":true,"description":"

Optional. If provided, it will be set as the rendered View's parentView.

","name":"parentView"}],"name":"render","longname":"Blaze.render","kind":"function","memberof":"Blaze","scope":"static","options":[],"locus":"Client"},"Blaze.renderWithData":{"summary":"Renders a template or View to DOM nodes with a data context. Otherwise identical to `Blaze.render`.","params":[{"type":{"names":["Template","Blaze.View"]},"description":"

The template (e.g. Template.myTemplate) or View object to render.

","name":"templateOrView"},{"type":{"names":["Object","function"]},"description":"

The data context to use, or a function returning a data context. If a function is provided, it will be reactively re-run.

","name":"data"},{"type":{"names":["DOMNode"]},"description":"

The node that will be the parent of the rendered template. It must be an Element node.

","name":"parentNode"},{"type":{"names":["DOMNode"]},"optional":true,"description":"

Optional. If provided, must be a child of parentNode; the template will be inserted before this node. If not provided, the template will be inserted as the last child of parentNode.

","name":"nextNode"},{"type":{"names":["Blaze.View"]},"optional":true,"description":"

Optional. If provided, it will be set as the rendered View's parentView.

","name":"parentView"}],"name":"renderWithData","longname":"Blaze.renderWithData","kind":"function","memberof":"Blaze","scope":"static","options":[],"locus":"Client"},"Blaze.remove":{"summary":"Removes a rendered View from the DOM, stopping all reactive updates and event listeners on it.","params":[{"type":{"names":["Blaze.View"]},"description":"

The return value from Blaze.render or Blaze.renderWithData.

","name":"renderedView"}],"name":"remove","longname":"Blaze.remove","kind":"function","memberof":"Blaze","scope":"static","options":[],"locus":"Client"},"Blaze.toHTML":{"summary":"Renders a template or View to a string of HTML.","params":[{"type":{"names":["Template","Blaze.View"]},"description":"

The template (e.g. Template.myTemplate) or View object from which to generate HTML.

","name":"templateOrView"}],"name":"toHTML","longname":"Blaze.toHTML","kind":"function","memberof":"Blaze","scope":"static","options":[],"locus":"Client"},"Blaze.toHTMLWithData":{"summary":"Renders a template or View to HTML with a data context. Otherwise identical to `Blaze.toHTML`.","params":[{"type":{"names":["Template","Blaze.View"]},"description":"

The template (e.g. Template.myTemplate) or View object from which to generate HTML.

","name":"templateOrView"},{"type":{"names":["Object","function"]},"description":"

The data context to use, or a function returning a data context.

","name":"data"}],"name":"toHTMLWithData","longname":"Blaze.toHTMLWithData","kind":"function","memberof":"Blaze","scope":"static","options":[],"locus":"Client"},"Blaze.getData":{"summary":"Returns the current data context, or the data context that was used when rendering a particular DOM element or View from a Meteor template.","params":[{"type":{"names":["DOMElement","Blaze.View"]},"optional":true,"description":"

Optional. An element that was rendered by a Meteor, or a View.

","name":"elementOrView"}],"name":"getData","longname":"Blaze.getData","kind":"function","memberof":"Blaze","scope":"static","options":[],"locus":"Client"},"Blaze.getView":{"summary":"Gets either the current View, or the View enclosing the given DOM element.","params":[{"type":{"names":["DOMElement"]},"optional":true,"description":"

Optional. If specified, the View enclosing element is returned.

","name":"element"}],"name":"getView","longname":"Blaze.getView","kind":"function","memberof":"Blaze","scope":"static","options":[],"locus":"Client"},"check":{"summary":"Check that a value matches a [pattern](#matchpatterns).\nIf the value does not match the pattern, throw a `Match.Error`.\n\nParticularly useful to assert that arguments to a function have the right\ntypes and structure.","params":[{"type":{"names":["Any"]},"description":"

The value to check

","name":"value"},{"type":{"names":["MatchPattern"]},"description":"

The pattern to match\nvalue against

","name":"pattern"}],"name":"check","longname":"check","kind":"function","scope":"global","options":[],"locus":"Anywhere"},"Match.test":{"summary":"Returns true if the value matches the pattern.","params":[{"type":{"names":["Any"]},"description":"

The value to check

","name":"value"},{"type":{"names":["MatchPattern"]},"description":"

The pattern to match value against

","name":"pattern"}],"name":"test","longname":"Match.test","kind":"function","memberof":"Match","scope":"static","options":[],"locus":"Anywhere"},"MethodInvocation":{"summary":"The state for a single invocation of a method, referenced by this\ninside a method definition.","params":[{"type":{"names":["Object"]},"name":"options"}],"name":"MethodInvocation","longname":"MethodInvocation","kind":"function","scope":"global","options":[],"instancename":"this"},"MethodInvocation#unblock":{"summary":"Call inside a method invocation. Allow subsequent method from this client to begin running in a new fiber.","memberof":"MethodInvocation","scope":"instance","name":"unblock","longname":"MethodInvocation#unblock","kind":"function","options":[],"params":[],"locus":"Server"},"MethodInvocation#setUserId":{"summary":"Set the logged in user.","memberof":"MethodInvocation","scope":"instance","params":[{"type":{"names":["String","null"]},"description":"

The value that should be returned by userId on this connection.

","name":"userId"}],"name":"setUserId","longname":"MethodInvocation#setUserId","kind":"function","options":[],"locus":"Server"},"Meteor.subscribe":{"memberof":"Meteor","summary":"Subscribe to a record set. Returns a handle that provides `stop()` and `ready()` methods.","params":[{"type":{"names":["String"]},"description":"

Name of the subscription. Matches the name of the server's publish() call.

","name":"name"},{"type":{"names":["Any"]},"optional":true,"description":"

Optional arguments passed to publisher function on server.

","name":"arg1, arg2..."},{"type":{"names":["function","Object"]},"optional":true,"description":"

Optional. May include onError and onReady callbacks. If a function is passed instead of an object, it is interpreted as an onReady callback.

","name":"callbacks"}],"name":"subscribe","longname":"Meteor.subscribe","kind":"function","scope":"static","options":[],"locus":"Client"},"Meteor.call":{"memberof":"Meteor","summary":"Invokes a method passing any number of arguments.","params":[{"type":{"names":["String"]},"description":"

Name of method to invoke

","name":"name"},{"type":{"names":["EJSONable"]},"optional":true,"description":"

Optional method arguments

","name":"arg1, arg2..."},{"type":{"names":["function"]},"optional":true,"description":"

Optional callback, which is called asynchronously with the error or result after the method is complete. If not provided, the method runs synchronously if possible (see below).

","name":"asyncCallback"}],"name":"call","longname":"Meteor.call","kind":"function","scope":"static","options":[],"locus":"Anywhere"},"Meteor.apply":{"memberof":"Meteor","summary":"Invoke a method passing an array of arguments.","params":[{"type":{"names":["String"]},"description":"

Name of method to invoke

","name":"name"},{"type":{"names":["Array."]},"description":"

Method arguments

","name":"args"},{"type":{"names":["Object"]},"optional":true,"name":"options"},{"type":{"names":["function"]},"optional":true,"description":"

Optional callback; same semantics as in Meteor.call.

","name":"asyncCallback"}],"name":"apply","longname":"Meteor.apply","kind":"function","scope":"static","options":[{"type":{"names":["Boolean"]},"description":"

(Client only) If true, don't send this method until all previous method calls have completed, and don't send any subsequent method calls until this one is completed.

","name":"wait"},{"type":{"names":["function"]},"description":"

(Client only) This callback is invoked with the error or result of the method (just like asyncCallback) as soon as the error or result is available. The local cache may not yet reflect the writes performed by the method.

","name":"onResultReceived"}],"locus":"Anywhere"},"Meteor.status":{"summary":"Get the current connection status. A reactive data source.","memberof":"Meteor","name":"status","longname":"Meteor.status","kind":"function","scope":"static","options":[],"params":[],"locus":"Client"},"Meteor.reconnect":{"summary":"Force an immediate reconnection attempt if the client is not connected to the server.\n\n This method does nothing if the client is already connected.","memberof":"Meteor","name":"reconnect","longname":"Meteor.reconnect","kind":"function","scope":"static","options":[],"params":[],"locus":"Client"},"Meteor.disconnect":{"summary":"Disconnect the client from the server.","memberof":"Meteor","name":"disconnect","longname":"Meteor.disconnect","kind":"function","scope":"static","options":[],"params":[],"locus":"Client"},"DDP.connect":{"summary":"Connect to the server of a different Meteor application to subscribe to its document sets and invoke its remote methods.","params":[{"type":{"names":["String"]},"description":"

The URL of another Meteor application.

","name":"url"}],"name":"connect","longname":"DDP.connect","kind":"function","memberof":"DDP","scope":"static","options":[],"locus":"Anywhere"},"Subscription#error":{"summary":"Call inside the publish function. Stops this client's subscription, triggering a call on the client to the `onError` callback passed to [`Meteor.subscribe`](#meteor_subscribe), if any. If `error` is not a [`Meteor.Error`](#meteor_error), it will be [sanitized](#meteor_error).","params":[{"type":{"names":["Error"]},"description":"

The error to pass to the client.

","name":"error"}],"scope":"instance","memberof":"Subscription","name":"error","longname":"Subscription#error","kind":"function","options":[],"locus":"Server"},"Subscription#stop":{"summary":"Call inside the publish function. Stops this client's subscription; the `onError` callback is *not* invoked on the client.","scope":"instance","memberof":"Subscription","name":"stop","longname":"Subscription#stop","kind":"function","options":[],"params":[],"locus":"Server"},"Subscription#onStop":{"summary":"Call inside the publish function. Registers a callback function to run when the subscription is stopped.","memberof":"Subscription","scope":"instance","params":[{"type":{"names":["function"]},"description":"

The callback function

","name":"func"}],"name":"onStop","longname":"Subscription#onStop","kind":"function","options":[],"locus":"Server"},"Subscription#added":{"summary":"Call inside the publish function. Informs the subscriber that a document has been added to the record set.","memberof":"Subscription","scope":"instance","params":[{"type":{"names":["String"]},"description":"

The name of the collection that contains the new document.

","name":"collection"},{"type":{"names":["String"]},"description":"

The new document's ID.

","name":"id"},{"type":{"names":["Object"]},"description":"

The fields in the new document. If _id is present it is ignored.

","name":"fields"}],"name":"added","longname":"Subscription#added","kind":"function","options":[],"locus":"Server"},"Subscription#changed":{"summary":"Call inside the publish function. Informs the subscriber that a document in the record set has been modified.","memberof":"Subscription","scope":"instance","params":[{"type":{"names":["String"]},"description":"

The name of the collection that contains the changed document.

","name":"collection"},{"type":{"names":["String"]},"description":"

The changed document's ID.

","name":"id"},{"type":{"names":["Object"]},"description":"

The fields in the document that have changed, together with their new values. If a field is not present in fields it was left unchanged; if it is present in fields and has a value of undefined it was removed from the document. If _id is present it is ignored.

","name":"fields"}],"name":"changed","longname":"Subscription#changed","kind":"function","options":[],"locus":"Server"},"Subscription#removed":{"summary":"Call inside the publish function. Informs the subscriber that a document has been removed from the record set.","memberof":"Subscription","scope":"instance","params":[{"type":{"names":["String"]},"description":"

The name of the collection that the document has been removed from.

","name":"collection"},{"type":{"names":["String"]},"description":"

The ID of the document that has been removed.

","name":"id"}],"name":"removed","longname":"Subscription#removed","kind":"function","options":[],"locus":"Server"},"Subscription#ready":{"summary":"Call inside the publish function. Informs the subscriber that an initial, complete snapshot of the record set has been sent. This will trigger a call on the client to the `onReady` callback passed to [`Meteor.subscribe`](#meteor_subscribe), if any.","memberof":"Subscription","scope":"instance","name":"ready","longname":"Subscription#ready","kind":"function","options":[],"params":[],"locus":"Server"},"Meteor.onConnection":{"summary":"Register a callback to be called when a new DDP connection is made to the server.","params":[{"type":{"names":["function"]},"description":"

The function to call when a new DDP connection is established.

","name":"callback"}],"memberof":"Meteor","name":"onConnection","longname":"Meteor.onConnection","kind":"function","scope":"static","options":[],"locus":"Server"},"Meteor.publish":{"summary":"Publish a record set.","memberof":"Meteor","params":[{"type":{"names":["String"]},"description":"

Name of the record set. If null, the set has no name, and the record set is automatically sent to all connected clients.

","name":"name"},{"type":{"names":["function"]},"description":"

Function called on the server each time a client subscribes. Inside the function, this is the publish handler object, described below. If the client passed arguments to subscribe, the function is called with the same arguments.

","name":"func"}],"name":"publish","longname":"Meteor.publish","kind":"function","scope":"static","options":[],"locus":"Server"},"Meteor.methods":{"summary":"Defines functions that can be invoked over the network by clients.","params":[{"type":{"names":["Object"]},"description":"

Dictionary whose keys are method names and values are functions.

","name":"methods"}],"memberof":"Meteor","name":"methods","longname":"Meteor.methods","kind":"function","scope":"static","options":[],"locus":"Anywhere"},"EJSON.CustomType#typeName":{"kind":"function","name":"typeName","memberof":"EJSON.CustomType","summary":"Return the tag used to identify this type. This must match the tag used to register this type with [`EJSON.addType`](#ejson_add_type).","scope":"instance","longname":"EJSON.CustomType#typeName","options":[],"params":[],"locus":"Anywhere"},"EJSON.CustomType#toJSONValue":{"kind":"function","name":"toJSONValue","memberof":"EJSON.CustomType","summary":"Serialize this instance into a JSON-compatible value.","scope":"instance","longname":"EJSON.CustomType#toJSONValue","options":[],"params":[],"locus":"Anywhere"},"EJSON.CustomType#clone":{"kind":"function","name":"clone","memberof":"EJSON.CustomType","summary":"Return a value `r` such that `this.equals(r)` is true, and modifications to `r` do not affect `this` and vice versa.","scope":"instance","longname":"EJSON.CustomType#clone","options":[],"params":[],"locus":"Anywhere"},"EJSON.CustomType#equals":{"kind":"function","name":"equals","memberof":"EJSON.CustomType","summary":"Return `true` if `other` has a value equal to `this`; `false` otherwise.","params":[{"type":{"names":["Object"]},"description":"

Another object to compare this to.

","name":"other"}],"scope":"instance","longname":"EJSON.CustomType#equals","options":[],"locus":"Anywhere"},"EJSON.addType":{"summary":"Add a custom datatype to EJSON.","params":[{"type":{"names":["String"]},"description":"

A tag for your custom type; must be unique among custom data types defined in your project, and must match the result of your type's typeName method.

","name":"name"},{"type":{"names":["function"]},"description":"

A function that deserializes a JSON-compatible value into an instance of your type. This should match the serialization performed by your type's toJSONValue method.

","name":"factory"}],"name":"addType","longname":"EJSON.addType","kind":"function","memberof":"EJSON","scope":"static","options":[],"locus":"Anywhere"},"EJSON.toJSONValue":{"summary":"Serialize an EJSON-compatible value into its plain JSON representation.","params":[{"type":{"names":["EJSON"]},"description":"

A value to serialize to plain JSON.

","name":"val"}],"name":"toJSONValue","longname":"EJSON.toJSONValue","kind":"function","memberof":"EJSON","scope":"static","options":[],"locus":"Anywhere"},"EJSON.fromJSONValue":{"summary":"Deserialize an EJSON value from its plain JSON representation.","params":[{"type":{"names":["JSONCompatible"]},"description":"

A value to deserialize into EJSON.

","name":"val"}],"name":"fromJSONValue","longname":"EJSON.fromJSONValue","kind":"function","memberof":"EJSON","scope":"static","options":[],"locus":"Anywhere"},"EJSON.stringify":{"summary":"Serialize a value to a string.\n\nFor EJSON values, the serialization fully represents the value. For non-EJSON values, serializes the same way as `JSON.stringify`.","params":[{"type":{"names":["EJSON"]},"description":"

A value to stringify.

","name":"val"},{"type":{"names":["Object"]},"optional":true,"name":"options"}],"name":"stringify","longname":"EJSON.stringify","kind":"function","memberof":"EJSON","scope":"static","options":[{"type":{"names":["Boolean","Integer","String"]},"description":"

Indents objects and arrays for easy readability. When true, indents by 2 spaces; when an integer, indents by that number of spaces; and when a string, uses the string as the indentation pattern.

","name":"indent"},{"type":{"names":["Boolean"]},"description":"

When true, stringifies keys in an object in sorted order.

","name":"canonical"}],"locus":"Anywhere"},"EJSON.parse":{"summary":"Parse a string into an EJSON value. Throws an error if the string is not valid EJSON.","params":[{"type":{"names":["String"]},"description":"

A string to parse into an EJSON value.

","name":"str"}],"name":"parse","longname":"EJSON.parse","kind":"function","memberof":"EJSON","scope":"static","options":[],"locus":"Anywhere"},"EJSON.isBinary":{"summary":"Returns true if `x` is a buffer of binary data, as returned from [`EJSON.newBinary`](#ejson_new_binary).","params":[{"type":{"names":["Object"]},"description":"

The variable to check.

","name":"x"}],"name":"isBinary","longname":"EJSON.isBinary","kind":"function","memberof":"EJSON","scope":"static","options":[],"locus":"Anywhere"},"EJSON.equals":{"summary":"Return true if `a` and `b` are equal to each other. Return false otherwise. Uses the `equals` method on `a` if present, otherwise performs a deep comparison.","params":[{"type":{"names":["EJSON"]},"name":"a"},{"type":{"names":["EJSON"]},"name":"b"},{"type":{"names":["Object"]},"optional":true,"name":"options"}],"name":"equals","longname":"EJSON.equals","kind":"function","memberof":"EJSON","scope":"static","options":[{"type":{"names":["Boolean"]},"description":"

Compare in key sensitive order, if supported by the JavaScript implementation. For example, {a: 1, b: 2} is equal to {b: 2, a: 1} only when keyOrderSensitive is false. The default is false.

","name":"keyOrderSensitive"}],"locus":"Anywhere"},"EJSON.clone":{"summary":"Return a deep copy of `val`.","params":[{"type":{"names":["EJSON"]},"description":"

A value to copy.

","name":"val"}],"name":"clone","longname":"EJSON.clone","kind":"function","memberof":"EJSON","scope":"static","options":[],"locus":"Anywhere"},"Email.send":{"summary":"Send an email. Throws an `Error` on failure to contact mail server\nor if mail server returns an error. All fields should match\n[RFC5322](http://tools.ietf.org/html/rfc5322) specification.","params":[{"type":{"names":["Object"]},"name":"options"}],"name":"send","longname":"Email.send","kind":"function","memberof":"Email","scope":"static","options":[{"type":{"names":["String"]},"description":"

"From:" address (required)

","name":"from"},{"type":{"names":["String","Array."]},"description":"

"To:", "Cc:", "Bcc:", and "Reply-To:" addresses

","name":"to, cc, bcc, replyTo"},{"type":{"names":["String"]},"optional":true,"description":"

"Subject:" line

","name":"subject"},{"type":{"names":["String"]},"optional":true,"description":"

Mail body (in plain text or HTML)

","name":"text, html"},{"type":{"names":["Object"]},"optional":true,"description":"

Dictionary of custom headers

","name":"headers"}],"locus":"Server"},"HTTP.call":{"summary":"Perform an outbound HTTP request.","params":[{"type":{"names":["String"]},"description":"

The HTTP method to use, such as "GET", "POST", or "HEAD".

","name":"method"},{"type":{"names":["String"]},"description":"

The URL to retrieve.

","name":"url"},{"type":{"names":["Object"]},"optional":true,"name":"options"},{"type":{"names":["function"]},"optional":true,"description":"

Optional callback. If passed, the method runs asynchronously, instead of synchronously, and calls asyncCallback. On the client, this callback is required.

","name":"asyncCallback"}],"name":"call","longname":"HTTP.call","kind":"function","memberof":"HTTP","scope":"static","options":[{"type":{"names":["String"]},"description":"

String to use as the HTTP request body.

","name":"content"},{"type":{"names":["Object"]},"description":"

JSON-able object to stringify and use as the HTTP request body. Overwrites content.

","name":"data"},{"type":{"names":["String"]},"description":"

Query string to go in the URL. Overwrites any query string in url.

","name":"query"},{"type":{"names":["Object"]},"description":"

Dictionary of request parameters to be encoded and placed in the URL (for GETs) or request body (for POSTs). If content or data is specified, params will always be placed in the URL.

","name":"params"},{"type":{"names":["String"]},"description":"

HTTP basic authentication string of the form "username:password"

","name":"auth"},{"type":{"names":["Object"]},"description":"

Dictionary of strings, headers to add to the HTTP request.

","name":"headers"},{"type":{"names":["Number"]},"description":"

Maximum time in milliseconds to wait for the request before failing. There is no timeout by default.

","name":"timeout"},{"type":{"names":["Boolean"]},"description":"

If true, transparently follow HTTP redirects. Cannot be set to false on the client. Default true.

","name":"followRedirects"}],"locus":"Anywhere"},"HTTP.get":{"summary":"Send an HTTP `GET` request. Equivalent to calling [`HTTP.call`](#http_call) with \"GET\" as the first argument.","params":[{"type":{"names":["String"]},"description":"

The URL to which the request should be sent.

","name":"url"},{"type":{"names":["Object"]},"optional":true,"description":"

Options passed on to HTTP.call.

","name":"callOptions"},{"type":{"names":["function"]},"optional":true,"description":"

Callback that is called when the request is completed. Required on the client.

","name":"asyncCallback"}],"name":"get","longname":"HTTP.get","kind":"function","memberof":"HTTP","scope":"static","options":[],"locus":"Anywhere"},"HTTP.post":{"summary":"Send an HTTP `POST` request. Equivalent to calling [`HTTP.call`](#http_call) with \"POST\" as the first argument.","params":[{"type":{"names":["String"]},"description":"

The URL to which the request should be sent.

","name":"url"},{"type":{"names":["Object"]},"optional":true,"description":"

Options passed on to HTTP.call.

","name":"callOptions"},{"type":{"names":["function"]},"optional":true,"description":"

Callback that is called when the request is completed. Required on the client.

","name":"asyncCallback"}],"name":"post","longname":"HTTP.post","kind":"function","memberof":"HTTP","scope":"static","options":[],"locus":"Anywhere"},"HTTP.put":{"summary":"Send an HTTP `PUT` request. Equivalent to calling [`HTTP.call`](#http_call) with \"PUT\" as the first argument.","params":[{"type":{"names":["String"]},"description":"

The URL to which the request should be sent.

","name":"url"},{"type":{"names":["Object"]},"optional":true,"description":"

Options passed on to HTTP.call.

","name":"callOptions"},{"type":{"names":["function"]},"optional":true,"description":"

Callback that is called when the request is completed. Required on the client.

","name":"asyncCallback"}],"name":"put","longname":"HTTP.put","kind":"function","memberof":"HTTP","scope":"static","options":[],"locus":"Anywhere"},"HTTP.del":{"summary":"Send an HTTP `DELETE` request. Equivalent to calling [`HTTP.call`](#http_call) with \"DELETE\" as the first argument. (Named `del` to avoid conflic with the Javascript keyword `delete`)","params":[{"type":{"names":["String"]},"description":"

The URL to which the request should be sent.

","name":"url"},{"type":{"names":["Object"]},"optional":true,"description":"

Options passed on to HTTP.call.

","name":"callOptions"},{"type":{"names":["function"]},"optional":true,"description":"

Callback that is called when the request is completed. Required on the client.

","name":"asyncCallback"}],"name":"del","longname":"HTTP.del","kind":"function","memberof":"HTTP","scope":"static","options":[],"locus":"Anywhere"},"Meteor.wrapAsync":{"memberof":"Meteor","summary":"Wrap a function that takes a callback function as its final parameter. On the server, the wrapped function can be used either synchronously (without passing a callback) or asynchronously (when a callback is passed). On the client, a callback is always required; errors will be logged if there is no callback. If a callback is provided, the environment captured when the original function was called will be restored in the callback.","params":[{"type":{"names":["function"]},"description":"

A function that takes a callback as its final parameter

","name":"func"},{"type":{"names":["Object"]},"optional":true,"description":"

Optional this object against which the original function will be invoked

","name":"context"}],"name":"wrapAsync","longname":"Meteor.wrapAsync","kind":"function","scope":"static","options":[],"locus":"Anywhere"},"Meteor.startup":{"summary":"Run code when a client or a server starts.","params":[{"type":{"names":["function"]},"description":"

A function to run on startup.

","name":"func"}],"name":"startup","longname":"Meteor.startup","kind":"function","memberof":"Meteor","scope":"static","options":[],"locus":"Anywhere"},"Meteor.setTimeout":{"memberof":"Meteor","summary":"Call a function in the future after waiting for a specified delay.","params":[{"type":{"names":["function"]},"description":"

The function to run

","name":"func"},{"type":{"names":["Number"]},"description":"

Number of milliseconds to wait before calling function

","name":"delay"}],"name":"setTimeout","longname":"Meteor.setTimeout","kind":"function","scope":"static","options":[],"locus":"Anywhere"},"Meteor.setInterval":{"memberof":"Meteor","summary":"Call a function repeatedly, with a time delay between calls.","params":[{"type":{"names":["function"]},"description":"

The function to run

","name":"func"},{"type":{"names":["Number"]},"description":"

Number of milliseconds to wait between each function call.

","name":"delay"}],"name":"setInterval","longname":"Meteor.setInterval","kind":"function","scope":"static","options":[],"locus":"Anywhere"},"Meteor.clearInterval":{"memberof":"Meteor","summary":"Cancel a repeating function call scheduled by `Meteor.setInterval`.","params":[{"type":{"names":["Number"]},"description":"

The handle returned by Meteor.setInterval

","name":"id"}],"name":"clearInterval","longname":"Meteor.clearInterval","kind":"function","scope":"static","options":[],"locus":"Anywhere"},"Meteor.clearTimeout":{"memberof":"Meteor","summary":"Cancel a function call scheduled by `Meteor.setTimeout`.","params":[{"type":{"names":["Number"]},"description":"

The handle returned by Meteor.setTimeout

","name":"id"}],"name":"clearTimeout","longname":"Meteor.clearTimeout","kind":"function","scope":"static","options":[],"locus":"Anywhere"},"Meteor.absoluteUrl":{"summary":"Generate an absolute URL pointing to the application. The server reads from the `ROOT_URL` environment variable to determine where it is running. This is taken care of automatically for apps deployed with `meteor deploy`, but must be provided when using `meteor bundle`.","params":[{"type":{"names":["String"]},"optional":true,"description":"

A path to append to the root URL. Do not include a leading "/".

","name":"path"},{"type":{"names":["Object"]},"optional":true,"name":"options"}],"name":"absoluteUrl","longname":"Meteor.absoluteUrl","kind":"function","memberof":"Meteor","scope":"static","options":[{"type":{"names":["Boolean"]},"description":"

Create an HTTPS URL.

","name":"secure"},{"type":{"names":["Boolean"]},"description":"

Replace localhost with 127.0.0.1. Useful for services that don't recognize localhost as a domain name.

","name":"replaceLocalhost"},{"type":{"names":["String"]},"description":"

Override the default ROOT_URL from the server environment. For example: "http://foo.example.com"

","name":"rootUrl"}],"locus":"Anywhere"},"Mongo.Cursor#forEach":{"summary":"Call `callback` once for each matching document, sequentially and synchronously.","kind":"function","name":"forEach","scope":"instance","memberof":"Mongo.Cursor","params":[{"type":{"names":["function"]},"description":"

Function to call. It will be called with three arguments: the document, a 0-based index, and cursor itself.

","name":"callback"},{"type":{"names":["Any"]},"optional":true,"description":"

An object which will be the value of this inside callback.

","name":"thisArg"}],"longname":"Mongo.Cursor#forEach","options":[],"locus":"Anywhere"},"Mongo.Cursor#map":{"summary":"Map callback over all matching documents. Returns an Array.","kind":"function","name":"map","scope":"instance","memberof":"Mongo.Cursor","params":[{"type":{"names":["function"]},"description":"

Function to call. It will be called with three arguments: the document, a 0-based index, and cursor itself.

","name":"callback"},{"type":{"names":["Any"]},"optional":true,"description":"

An object which will be the value of this inside callback.

","name":"thisArg"}],"longname":"Mongo.Cursor#map","options":[],"locus":"Anywhere"},"Mongo.Cursor#fetch":{"summary":"Return all matching documents as an Array.","memberof":"Mongo.Cursor","kind":"function","name":"fetch","scope":"instance","returns":[{"type":{"names":["Array."]}}],"longname":"Mongo.Cursor#fetch","options":[],"params":[],"locus":"Anywhere"},"Mongo.Cursor#count":{"summary":"Returns the number of documents that match a query.","memberof":"Mongo.Cursor","kind":"function","name":"count","scope":"instance","longname":"Mongo.Cursor#count","options":[],"params":[],"locus":"Anywhere"},"Mongo.Cursor#observe":{"summary":"Watch a query. Receive callbacks as the result set changes.","memberof":"Mongo.Cursor","scope":"instance","params":[{"type":{"names":["Object"]},"description":"

Functions to call to deliver the result set as it changes

","name":"callbacks"}],"name":"observe","longname":"Mongo.Cursor#observe","kind":"function","options":[],"locus":"Anywhere"},"Mongo.Cursor#observeChanges":{"summary":"Watch a query. Receive callbacks as the result set changes. Only the differences between the old and new documents are passed to the callbacks.","memberof":"Mongo.Cursor","scope":"instance","params":[{"type":{"names":["Object"]},"description":"

Functions to call to deliver the result set as it changes

","name":"callbacks"}],"name":"observeChanges","longname":"Mongo.Cursor#observeChanges","kind":"function","options":[],"locus":"Anywhere"},"Mongo.Collection#insert":{"summary":"Insert a document in the collection. Returns its unique _id.","kind":"function","name":"insert","memberof":"Mongo.Collection","scope":"instance","params":[{"type":{"names":["Object"]},"description":"

The document to insert. May not yet have an _id attribute, in which case Meteor will generate one for you.

","name":"doc"},{"type":{"names":["function"]},"optional":true,"description":"

Optional. If present, called with an error object as the first argument and, if no error, the _id as the second.

","name":"callback"}],"longname":"Mongo.Collection#insert","options":[],"locus":"Anywhere"},"Mongo.Collection#update":{"summary":"Modify one or more documents in the collection. Returns the number of affected documents.","kind":"function","name":"update","memberof":"Mongo.Collection","scope":"instance","params":[{"type":{"names":["MongoSelector"]},"description":"

Specifies which documents to modify

","name":"selector"},{"type":{"names":["MongoModifier"]},"description":"

Specifies how to modify the documents

","name":"modifier"},{"type":{"names":["Object"]},"optional":true,"name":"options"},{"type":{"names":["function"]},"optional":true,"description":"

Optional. If present, called with an error object as the first argument and, if no error, the number of affected documents as the second.

","name":"callback"}],"longname":"Mongo.Collection#update","options":[{"type":{"names":["Boolean"]},"description":"

True to modify all matching documents; false to only modify one of the matching documents (the default).

","name":"multi"},{"type":{"names":["Boolean"]},"description":"

True to insert a document if no matching documents are found.

","name":"upsert"}],"locus":"Anywhere"},"Mongo.Collection#find":{"summary":"Find the documents in a collection that match the selector.","kind":"function","name":"find","memberof":"Mongo.Collection","scope":"instance","params":[{"type":{"names":["MongoSelector"]},"optional":true,"description":"

A query describing the documents to find

","name":"selector"},{"type":{"names":["Object"]},"optional":true,"name":"options"}],"returns":[{"type":{"names":["Mongo.Cursor"]}}],"longname":"Mongo.Collection#find","options":[{"type":{"names":["MongoSortSpecifier"]},"description":"

Sort order (default: natural order)

","name":"sort"},{"type":{"names":["Number"]},"description":"

Number of results to skip at the beginning

","name":"skip"},{"type":{"names":["Number"]},"description":"

Maximum number of results to return

","name":"limit"},{"type":{"names":["MongoFieldSpecifier"]},"description":"

Dictionary of fields to return or exclude.

","name":"fields"},{"type":{"names":["Boolean"]},"description":"

(Client only) Default true; pass false to disable reactivity

","name":"reactive"},{"type":{"names":["function"]},"description":"

Overrides transform on the Collection for this cursor. Pass null to disable transformation.

","name":"transform"}],"locus":"Anywhere"},"Mongo.Collection#findOne":{"summary":"Finds the first document that matches the selector, as ordered by sort and skip options.","kind":"function","name":"findOne","memberof":"Mongo.Collection","scope":"instance","params":[{"type":{"names":["MongoSelector"]},"optional":true,"description":"

A query describing the documents to find

","name":"selector"},{"type":{"names":["Object"]},"optional":true,"name":"options"}],"returns":[{"type":{"names":["Object"]}}],"longname":"Mongo.Collection#findOne","options":[{"type":{"names":["MongoSortSpecifier"]},"description":"

Sort order (default: natural order)

","name":"sort"},{"type":{"names":["Number"]},"description":"

Number of results to skip at the beginning

","name":"skip"},{"type":{"names":["MongoFieldSpecifier"]},"description":"

Dictionary of fields to return or exclude.

","name":"fields"},{"type":{"names":["Boolean"]},"description":"

(Client only) Default true; pass false to disable reactivity

","name":"reactive"},{"type":{"names":["function"]},"description":"

Overrides transform on the Collection for this cursor. Pass null to disable transformation.

","name":"transform"}],"locus":"Anywhere"},"Mongo.Collection#remove":{"summary":"Remove documents from the collection","kind":"function","name":"remove","memberof":"Mongo.Collection","scope":"instance","params":[{"type":{"names":["MongoSelector"]},"description":"

Specifies which documents to remove

","name":"selector"},{"type":{"names":["function"]},"optional":true,"description":"

Optional. If present, called with an error object as its argument.

","name":"callback"}],"longname":"Mongo.Collection#remove","options":[],"locus":"Anywhere"},"Mongo.Collection#upsert":{"summary":"Modify one or more documents in the collection, or insert one if no matching documents were found. Returns an object with keys `numberAffected` (the number of documents modified) and `insertedId` (the unique _id of the document that was inserted, if any).","params":[{"type":{"names":["MongoSelector"]},"description":"

Specifies which documents to modify

","name":"selector"},{"type":{"names":["MongoModifier"]},"description":"

Specifies how to modify the documents

","name":"modifier"},{"type":{"names":["Object"]},"optional":true,"name":"options"},{"type":{"names":["function"]},"optional":true,"description":"

Optional. If present, called with an error object as the first argument and, if no error, the number of affected documents as the second.

","name":"callback"}],"name":"upsert","longname":"Mongo.Collection#upsert","kind":"function","memberof":"Mongo.Collection","scope":"instance","options":[{"type":{"names":["Boolean"]},"description":"

True to modify all matching documents; false to only modify one of the matching documents (the default).

","name":"multi"}],"locus":"Anywhere"},"Mongo.Collection#allow":{"summary":"Allow users to write directly to this collection from client code, subject to limitations you define.","params":[{"type":{"names":["Object"]},"name":"options"}],"name":"allow","longname":"Mongo.Collection#allow","kind":"function","memberof":"Mongo.Collection","scope":"instance","options":[{"type":{"names":["function"]},"description":"

Functions that look at a proposed modification to the database and return true if it should be allowed.

","name":"insert, update, remove"},{"type":{"names":["Array."]},"description":"

Optional performance enhancement. Limits the fields that will be fetched from the database for inspection by your update and remove functions.

","name":"fetch"},{"type":{"names":["function"]},"description":"

Overrides transform on the Collection. Pass null to disable transformation.

","name":"transform"}],"locus":"Server"},"Mongo.Collection#deny":{"summary":"Override `allow` rules.","params":[{"type":{"names":["Object"]},"name":"options"}],"name":"deny","longname":"Mongo.Collection#deny","kind":"function","memberof":"Mongo.Collection","scope":"instance","options":[{"type":{"names":["function"]},"description":"

Functions that look at a proposed modification to the database and return true if it should be denied, even if an allow rule says otherwise.

","name":"insert, update, remove"},{"type":{"names":["Array."]},"description":"

Optional performance enhancement. Limits the fields that will be fetched from the database for inspection by your update and remove functions.

","name":"fetch"},{"type":{"names":["function"]},"description":"

Overrides transform on the Collection. Pass null to disable transformation.

","name":"transform"}],"locus":"Server"},"ReactiveVar#get":{"summary":"Returns the current value of the ReactiveVar, establishing a reactive dependency.","name":"get","longname":"ReactiveVar#get","kind":"function","memberof":"ReactiveVar","scope":"instance","options":[],"params":[],"locus":"Client"},"ReactiveVar#set":{"summary":"Sets the current value of the ReactiveVar, invalidating the Computations that called `get` if `newValue` is different from the old value.","params":[{"type":{"names":["Any"]},"name":"newValue"}],"name":"set","longname":"ReactiveVar#set","kind":"function","memberof":"ReactiveVar","scope":"instance","options":[],"locus":"Client"},"Session.set":{"memberof":"Session","kind":"function","name":"set","summary":"Set a variable in the session. Notify any listeners that the value has changed (eg: redraw templates, and rerun any [`Tracker.autorun`](#tracker_autorun) computations, that called [`Session.get`](#session_get) on this `key`.)","params":[{"type":{"names":["String"]},"description":"

The key to set, eg, selectedItem

","name":"key"},{"type":{"names":["EJSONable","undefined"]},"description":"

The new value for key

","name":"value"}],"scope":"static","longname":"Session.set","options":[],"locus":"Client"},"Session.setDefault":{"memberof":"Session","kind":"function","name":"setDefault","summary":"Set a variable in the session if it hasn't been set before. Otherwise works exactly the same as [`Session.set`](#session_set).","params":[{"type":{"names":["String"]},"description":"

The key to set, eg, selectedItem

","name":"key"},{"type":{"names":["EJSONable","undefined"]},"description":"

The new value for key

","name":"value"}],"scope":"static","longname":"Session.setDefault","options":[],"locus":"Client"},"Session.get":{"memberof":"Session","kind":"function","name":"get","summary":"Get the value of a session variable. If inside a [reactive computation](#reactivity), invalidate the computation the next time the value of the variable is changed by [`Session.set`](#session_set). This returns a clone of the session value, so if it's an object or an array, mutating the returned value has no effect on the value stored in the session.","params":[{"type":{"names":["String"]},"description":"

The name of the session variable to return

","name":"key"}],"scope":"static","longname":"Session.get","options":[],"locus":"Client"},"Session.equals":{"memberof":"Session","kind":"function","name":"equals","summary":"Test if a session variable is equal to a value. If inside a [reactive computation](#reactivity), invalidate the computation the next time the variable changes to or from the value.","params":[{"type":{"names":["String"]},"description":"

The name of the session variable to test

","name":"key"},{"type":{"names":["String","Number","Boolean","null","undefined"]},"description":"

The value to test against

","name":"value"}],"scope":"static","longname":"Session.equals","options":[],"locus":"Client"},"Template.dynamic":{"memberof":"Template","kind":"function","name":"dynamic","summary":"Choose a template to include dynamically, by name.","params":[{"type":{"names":["String"]},"description":"

The name of the template to include.

","name":"template"},{"type":{"names":["Object"]},"optional":true,"description":"

Optional. The data context in which to include the template.

","name":"data"}],"scope":"static","longname":"Template.dynamic","options":[],"istemplate":"true","locus":"Templates"},"Tracker.Computation":{"summary":"A Computation object represents code that is repeatedly rerun\nin response to\nreactive data changes. Computations don't have return values; they just\nperform actions, such as rerendering a template on the screen. Computations\nare created using Tracker.autorun. Use stop to prevent further rerunning of a\ncomputation.","name":"Computation","longname":"Tracker.Computation","kind":"function","memberof":"Tracker","scope":"static","options":[],"params":[],"instancename":"computation"},"Tracker.Computation#onInvalidate":{"summary":"Registers `callback` to run when this computation is next invalidated, or runs it immediately if the computation is already invalidated. The callback is run exactly once and not upon future invalidations unless `onInvalidate` is called again after the computation becomes valid again.","params":[{"type":{"names":["function"]},"description":"

Function to be called on invalidation. Receives one argument, the computation that was invalidated.

","name":"callback"}],"name":"onInvalidate","longname":"Tracker.Computation#onInvalidate","kind":"function","memberof":"Tracker.Computation","scope":"instance","options":[],"locus":"Client"},"Tracker.Computation#invalidate":{"summary":"Invalidates this computation so that it will be rerun.","name":"invalidate","longname":"Tracker.Computation#invalidate","kind":"function","memberof":"Tracker.Computation","scope":"instance","options":[],"params":[],"locus":"Client"},"Tracker.Computation#stop":{"summary":"Prevents this computation from rerunning.","name":"stop","longname":"Tracker.Computation#stop","kind":"function","memberof":"Tracker.Computation","scope":"instance","options":[],"params":[],"locus":"Client"},"Tracker.Dependency#depend":{"summary":"Declares that the current computation (or `fromComputation` if given) depends on `dependency`. The computation will be invalidated the next time `dependency` changes.\n\nIf there is no current computation and `depend()` is called with no arguments, it does nothing and returns false.\n\nReturns true if the computation is a new dependent of `dependency` rather than an existing one.","params":[{"type":{"names":["Tracker.Computation"]},"optional":true,"description":"

An optional computation declared to depend on dependency instead of the current computation.

","name":"fromComputation"}],"returns":[{"type":{"names":["Boolean"]}}],"name":"depend","longname":"Tracker.Dependency#depend","kind":"function","memberof":"Tracker.Dependency","scope":"instance","options":[],"locus":"Client"},"Tracker.Dependency#changed":{"summary":"Invalidate all dependent computations immediately and remove them as dependents.","name":"changed","longname":"Tracker.Dependency#changed","kind":"function","memberof":"Tracker.Dependency","scope":"instance","options":[],"params":[],"locus":"Client"},"Tracker.Dependency#hasDependents":{"summary":"True if this Dependency has one or more dependent Computations, which would be invalidated if this Dependency were to change.","returns":[{"type":{"names":["Boolean"]}}],"name":"hasDependents","longname":"Tracker.Dependency#hasDependents","kind":"function","memberof":"Tracker.Dependency","scope":"instance","options":[],"params":[],"locus":"Client"},"Tracker.flush":{"summary":"Process all reactive updates immediately and ensure that all invalidated computations are rerun.","name":"flush","longname":"Tracker.flush","kind":"function","memberof":"Tracker","scope":"static","options":[],"params":[],"locus":"Client"},"Tracker.autorun":{"summary":"Run a function now and rerun it later whenever its dependencies change. Returns a Computation object that can be used to stop or observe the rerunning.","params":[{"type":{"names":["function"]},"description":"

The function to run. It receives one argument: the Computation object that will be returned.

","name":"runFunc"}],"returns":[{"type":{"names":["Tracker.Computation"]}}],"name":"autorun","longname":"Tracker.autorun","kind":"function","memberof":"Tracker","scope":"static","options":[],"locus":"Client"},"Tracker.nonreactive":{"summary":"Run a function without tracking dependencies.","params":[{"type":{"names":["function"]},"description":"

A function to call immediately.

","name":"func"}],"name":"nonreactive","longname":"Tracker.nonreactive","kind":"function","memberof":"Tracker","scope":"static","options":[],"locus":"Client"},"Tracker.onInvalidate":{"summary":"Registers a new [`onInvalidate`](#computation_oninvalidate) callback on the current computation (which must exist), to be called immediately when the current computation is invalidated or stopped.","params":[{"type":{"names":["function"]},"description":"

A callback function that will be invoked as func(c), where c is the computation on which the callback is registered.

","name":"callback"}],"name":"onInvalidate","longname":"Tracker.onInvalidate","kind":"function","memberof":"Tracker","scope":"static","options":[],"locus":"Client"},"Tracker.afterFlush":{"summary":"Schedules a function to be called during the next flush, or later in the current flush if one is in progress, after all invalidated computations have been rerun. The function will be run once and not on subsequent flushes unless `afterFlush` is called again.","params":[{"type":{"names":["function"]},"description":"

A function to call at flush time.

","name":"callback"}],"name":"afterFlush","longname":"Tracker.afterFlush","kind":"function","memberof":"Tracker","scope":"static","options":[],"locus":"Client"},"Assets.getText":{"summary":"Retrieve the contents of the static server asset as a UTF8-encoded string.","memberof":"Assets","params":[{"type":{"names":["String"]},"description":"

The path of the asset, relative to the application's private subdirectory.

","name":"assetPath"},{"type":{"names":["function"]},"optional":true,"description":"

Optional callback, which is called asynchronously with the error or result after the function is complete. If not provided, the function runs synchronously.

","name":"asyncCallback"}],"name":"getText","longname":"Assets.getText","kind":"function","scope":"static","options":[],"locus":"Server"},"Assets.getBinary":{"summary":"Retrieve the contents of the static server asset as an [EJSON Binary](#ejson_new_binary).","memberof":"Assets","params":[{"type":{"names":["String"]},"description":"

The path of the asset, relative to the application's private subdirectory.

","name":"assetPath"},{"type":{"names":["function"]},"optional":true,"description":"

Optional callback, which is called asynchronously with the error or result after the function is complete. If not provided, the function runs synchronously.

","name":"asyncCallback"}],"name":"getBinary","longname":"Assets.getBinary","kind":"function","scope":"static","options":[],"locus":"Server"},"App.info":{"summary":"Set your mobile app's core configuration information.","params":[{"type":{"names":["Object"]},"name":"options"}],"memberof":"App","name":"info","longname":"App.info","kind":"function","scope":"static","options":[{"type":{"names":["String"]},"optional":true,"description":"

Each of the options correspond to a key in the app's core configuration\nas described in the PhoneGap documentation.

","name":"id, version, name, description, author, email, website"}]},"App.setPreference":{"summary":"Add a preference for your build as described in the\n[PhoneGap documentation](http://docs.phonegap.com/en/3.5.0/config_ref_index.md.html#The%20config.xml%20File_global_preferences).","params":[{"type":{"names":["String"]},"description":"

A preference name supported by Phonegap's\nconfig.xml.

","name":"name"},{"type":{"names":["String"]},"description":"

The value for that preference.

","name":"value"}],"memberof":"App","name":"setPreference","longname":"App.setPreference","kind":"function","scope":"static","options":[]},"App.configurePlugin":{"summary":"Set the build-time configuration for a Phonegap plugin.","params":[{"type":{"names":["String"]},"description":"

The identifier of the plugin you want to\nconfigure.

","name":"pluginName"},{"type":{"names":["Object"]},"description":"

A set of key-value pairs which will be passed\nat build-time to configure the specified plugin.

","name":"config"}],"memberof":"App","name":"configurePlugin","longname":"App.configurePlugin","kind":"function","scope":"static","options":[]},"App.icons":{"summary":"Set the icons for your mobile app.","params":[{"type":{"names":["Object"]},"description":"

An Object where the keys are different\ndevices and screen sizes, and values are image paths\nrelative to the project root directory.

\n

Valid key values:

\n
    \n
  • iphone
  • \n
  • iphone_2x
  • \n
  • iphone_3x
  • \n
  • ipad
  • \n
  • ipad_2x
  • \n
  • android_ldpi
  • \n
  • android_mdpi
  • \n
  • android_hdpi
  • \n
  • android_xhdpi
  • \n
","name":"icons"}],"memberof":"App","name":"icons","longname":"App.icons","kind":"function","scope":"static","options":[]},"App.launchScreens":{"summary":"Set the launch screen images for your mobile app.","params":[{"type":{"names":["Object"]},"description":"

A dictionary where keys are different\ndevices, screen sizes, and orientations, and the values are image paths\nrelative to the project root directory.

\n

For Android, launch screen images should\nbe special "Nine-patch" image files that specify how they should be\nstretched. See the Android docs.

\n

Valid key values:

\n
    \n
  • iphone
  • \n
  • iphone_2x
  • \n
  • iphone5
  • \n
  • iphone6
  • \n
  • iphone6p_portrait
  • \n
  • iphone6p_landscape
  • \n
  • ipad_portrait
  • \n
  • ipad_portrait_2x
  • \n
  • ipad_landscape
  • \n
  • ipad_landscape_2x
  • \n
  • android_ldpi_portrait
  • \n
  • android_ldpi_landscape
  • \n
  • android_mdpi_portrait
  • \n
  • android_mdpi_landscape
  • \n
  • android_hdpi_portrait
  • \n
  • android_hdpi_landscape
  • \n
  • android_xhdpi_portrait
  • \n
  • android_xhdpi_landscape
  • \n
","name":"launchScreens"}],"memberof":"App","name":"launchScreens","longname":"App.launchScreens","kind":"function","scope":"static","options":[]},"CompileStep#read":{"summary":"Read from the input file. If `n` is specified, returns the\nnext `n` bytes of the file as a Buffer. XXX not sure if this actually\nreturns a String sometimes...","params":[{"type":{"names":["Integer"]},"optional":true,"description":"

The number of bytes to return.

","name":"n"}],"scope":"instance","memberof":"CompileStep","name":"read","longname":"CompileStep#read","kind":"function","options":[]},"CompileStep#addHtml":{"summary":"Works in web targets only. Add markup to the `head` or `body`\nsection of the document.","params":[{"type":{"names":["Object"]},"name":"options"}],"memberof":"CompileStep","scope":"instance","name":"addHtml","longname":"CompileStep#addHtml","kind":"function","options":[{"type":{"names":["String"]},"description":"

Which section of the document should\nbe appended to. Can only be "head" or "body".

","name":"section"},{"type":{"names":["String"]},"description":"

The content to append.

","name":"data"}]},"CompileStep#addStylesheet":{"summary":"Web targets only. Add a stylesheet to the document.","params":[{"type":{"names":["Object"]},"name":"options"},{"type":{"names":["String"]},"description":"

The requested path for the added CSS, may not be\nsatisfied if there are path conflicts.

","name":"path"},{"type":{"names":["String"]},"description":"

The content of the stylesheet that should be\nadded.

","name":"data"},{"type":{"names":["String"]},"description":"

A stringified JSON sourcemap, in case the\nstylesheet was generated from a different file.

","name":"sourceMap"}],"memberof":"CompileStep","scope":"instance","name":"addStylesheet","longname":"CompileStep#addStylesheet","kind":"function","options":[]},"CompileStep#addJavaScript":{"summary":"Add JavaScript code. The code added will only see the\nnamespaces imported by this package as runtime dependencies using\n['api.use'](#PackageAPI-use). If the file being compiled was added\nwith the bare flag, the resulting JavaScript won't be wrapped in a\nclosure.","params":[{"type":{"names":["Object"]},"name":"options"}],"memberof":"CompileStep","scope":"instance","name":"addJavaScript","longname":"CompileStep#addJavaScript","kind":"function","options":[{"type":{"names":["String"]},"description":"

The path at which the JavaScript file\nshould be inserted, may not be honored in case of path conflicts.

","name":"path"},{"type":{"names":["String"]},"description":"

The code to be added.

","name":"data"},{"type":{"names":["String"]},"description":"

The path that will be used in\nany error messages generated by this file, e.g. foo.js:4:1: error.

","name":"sourcePath"}]},"CompileStep#addAsset":{"summary":"Add a file to serve as-is to the browser or to include on\nthe browser, depending on the target. On the web, it will be served\nat the exact path requested. For server targets, it can be retrieved\nusing `Assets.getText` or `Assets.getBinary`.","params":[{"type":{"names":["Object"]},"name":"options"},{"type":{"names":["String"]},"description":"

The path at which to serve the asset.

","name":"path"},{"type":{"names":["Buffer","String"]},"description":"

The data that should be placed in\nthe file.

","name":"data"}],"memberof":"CompileStep","scope":"instance","name":"addAsset","longname":"CompileStep#addAsset","kind":"function","options":[]},"CompileStep#error":{"summary":"Display a build error.","params":[{"type":{"names":["Object"]},"name":"options"},{"type":{"names":["String"]},"description":"

The error message to display.

","name":"message"},{"type":{"names":["String"]},"optional":true,"description":"

The path to display in the error message.

","name":"sourcePath"},{"type":{"names":["Integer"]},"description":"

The line number to display in the error message.

","name":"line"},{"type":{"names":["String"]},"description":"

The function name to display in the error message.

","name":"func"}],"memberof":"CompileStep","scope":"instance","name":"error","longname":"CompileStep#error","kind":"function","options":[]},"Plugin.registerSourceHandler":{"summary":"Inside a build plugin source file specified in\n[Package.registerBuildPlugin](#Package-registerBuildPlugin),\nadd a handler to compile files with a certain file extension.","params":[{"type":{"names":["String"]},"description":"

The file extension that this plugin\nshould handle, without the first dot.\nExamples: "coffee", "coffee.md".

","name":"fileExtension"},{"type":{"names":["function"]},"description":"

A function that takes one argument,\na CompileStep object.

\n

Documentation for CompileStep is available on the GitHub Wiki.

","name":"handler"}],"memberof":"Plugin","name":"registerSourceHandler","longname":"Plugin.registerSourceHandler","kind":"function","scope":"static","options":[],"locus":"Build Plugin"},"Package.describe":{"summary":"Provide basic package information.","memberof":"Package","params":[{"type":{"names":["Object"]},"name":"options"}],"name":"describe","longname":"Package.describe","kind":"function","scope":"static","options":[{"type":{"names":["String"]},"description":"

A concise 1-2 sentence description of\nthe package, required for publication.

","name":"summary"},{"type":{"names":["String"]},"description":"

The (extended)\nsemver version for your package. Additionally,\nMeteor allows a wrap number: a positive integer that follows the version number. If you are\nporting another package that uses semver versioning, you may want to\nuse the original version, postfixed with _wrapnumber. For example,\n1.2.3_1 or 2.4.5-rc1_4. Wrap numbers sort after the original numbers:\n1.2.3 < 1.2.3_1 < 1.2.3_2 < 1.2.4-rc.0. If no version is specified,\nthis field defaults to 0.0.0. If you want to publish your package to\nthe package server, you must specify a version.

","name":"version"},{"type":{"names":["String"]},"description":"

Optional name override. By default, the\npackage name comes from the name of its directory.

","name":"name"},{"type":{"names":["String"]},"description":"

Optional Git URL to the source repository.

","name":"git"}],"locus":"package.js"},"Package.onUse":{"summary":"Define package dependencies and expose package methods.","memberof":"Package","params":[{"type":{"names":["function"]},"description":"

A function that takes in the package control 'api' object, which keeps track of dependencies and exports.

","name":"func"}],"name":"onUse","longname":"Package.onUse","kind":"function","scope":"static","options":[],"locus":"package.js"},"Package.onTest":{"summary":"Define dependencies and expose package methods for unit tests.","memberof":"Package","params":[{"type":{"names":["function"]},"description":"

A function that takes in the package control 'api' object, which keeps track of dependencies and exports.

","name":"func"}],"name":"onTest","longname":"Package.onTest","kind":"function","scope":"static","options":[],"locus":"package.js"},"Package.registerBuildPlugin":{"summary":"Define a build plugin. A build plugin extends the build\nprocess for apps and packages that use this package. For example,\nthe `coffeescript` package uses a build plugin to compile CoffeeScript\nsource files into JavaScript.","params":[{"type":{"names":["Object"]},"optional":true,"name":"options"}],"memberof":"Package","name":"registerBuildPlugin","longname":"Package.registerBuildPlugin","kind":"function","scope":"static","options":[{"type":{"names":["String"]},"description":"

A cosmetic name, must be unique in the\npackage.

","name":"name"},{"type":{"names":["String","Array."]},"description":"

Meteor packages that this\nplugin uses, independent of the packages specified in\napi.onUse.

","name":"use"},{"type":{"names":["Array."]},"description":"

The source files that make up the\nbuild plugin, independent from api.addFiles.

","name":"sources"},{"type":{"names":["Object"]},"description":"

An object where the keys\nare NPM package names, and the keys are the version numbers of\nrequired NPM packages, just like in Npm.depends.

","name":"npmDependencies"}],"locus":"package.js"},"Npm.depends":{"summary":"Specify which [NPM](https://www.npmjs.org/) packages\nyour Meteor package depends on.","params":[{"type":{"names":["Object"]},"description":"

An object where the keys are package\nnames and the values are version numbers in string form.\nYou can only depend on exact versions of NPM packages. Example:

\n
Npm.depends({moment: "2.8.3"});
","name":"dependencies"}],"memberof":"Npm","name":"depends","longname":"Npm.depends","kind":"function","scope":"static","options":[],"locus":"package.js"},"Cordova.depends":{"summary":"Specify which [Cordova / PhoneGap](http://cordova.apache.org/)\nplugins your Meteor package depends on.\n\nPlugins are installed from\n[plugins.cordova.io](http://plugins.cordova.io/), so the plugins and\nversions specified must exist there. Alternatively, the version\ncan be replaced with a GitHub tarball URL as described in the\n[Cordova / PhoneGap](https://github.com/meteor/meteor/wiki/Meteor-Cordova-Phonegap-integration#meteor-packages-with-cordovaphonegap-dependencies)\npage of the Meteor wiki on GitHub.","params":[{"type":{"names":["Object"]},"description":"

An object where the keys are plugin\nnames and the values are version numbers or GitHub tarball URLs\nin string form.\nExample:

\n
Cordova.depends({\n  "org.apache.cordova.camera": "0.3.0"\n});

Alternatively, with a GitHub URL:

\n
Cordova.depends({\n  "org.apache.cordova.camera":\n    "https://github.com/apache/cordova-plugin-camera/tarball/d84b875c"\n});
","name":"dependencies"}],"memberof":"Cordova","name":"depends","longname":"Cordova.depends","kind":"function","scope":"static","options":[],"locus":"package.js"},"PackageAPI#use":{"memberof":"PackageAPI","scope":"instance","summary":"Depend on package `packagename`.","params":[{"type":{"names":["String","Array."]},"description":"

Packages being depended on.\nPackage names may be suffixed with an @version tag.

\n

In general, you must specify a package's version (e.g.,\n'accounts@1.0.0' to use version 1.0.0 or a higher\ncompatible version (ex: 1.0.1, 1.5.0, etc.) of the\naccounts package). If you are sourcing core\npackages from a Meteor release with versionsFrom, you may leave\noff version names for core packages. You may also specify constraints,\nsuch as my:forms@=1.0.0 (this package demands my:forms at 1.0.0 exactly),\nor my:forms@1.0.0 || =2.0.1 (my:forms at 1.x.y, or exactly 2.0.1).

","name":"packageNames"},{"type":{"names":["String"]},"optional":true,"description":"

If you only use the package on the\nserver (or the client), you can pass in the second argument (e.g.,\n'server', 'client', 'web.browser', 'web.cordova') to specify\nwhat architecture the package is used with.

","name":"architecture"},{"type":{"names":["Object"]},"optional":true,"name":"options"}],"name":"use","longname":"PackageAPI#use","kind":"function","options":[{"type":{"names":["Boolean"]},"description":"

Establish a weak dependency on a\npackage. If package A has a weak dependency on package B, it means\nthat including A in an app does not force B to be included too — but,\nif B is included or by another package, then B will load before A.\nYou can use this to make packages that optionally integrate with or\nenhance other packages if those packages are present.\nWhen you weakly depend on a package you don't see its exports.\nYou can detect if the possibly-present weakly-depended-on package\nis there by seeing if Package.foo exists, and get its exports\nfrom the same place.

","name":"weak"},{"type":{"names":["Boolean"]},"description":"

It's okay to load this dependency\nafter your package. (In general, dependencies specified by api.use\nare loaded before your package.) You can use this option to break\ncircular dependencies.

","name":"unordered"}],"locus":"package.js"},"PackageAPI#imply":{"memberof":"PackageAPI","summary":"Give users of this package access to another package (by passing in the string `packagename`) or a collection of packages (by passing in an array of strings [`packagename1`, `packagename2`]","scope":"instance","params":[{"type":{"names":["String","Array."]},"description":"

Name of a package, or array of package names, with an optional @version component for each.

","name":"packageSpecs"}],"name":"imply","longname":"PackageAPI#imply","kind":"function","options":[],"locus":"package.js"},"PackageAPI#addFiles":{"memberof":"PackageAPI","scope":"instance","summary":"Specify the source code for your package.","params":[{"type":{"names":["String","Array."]},"description":"

Name of the source file, or array of strings of source file names.

","name":"filename"},{"type":{"names":["String"]},"optional":true,"description":"

If you only want to export the file\non the server (or the client), you can pass in the second argument\n(e.g., 'server', 'client', 'web.browser', 'web.cordova') to specify\nwhat architecture the file is used with.

","name":"architecture"}],"name":"addFiles","longname":"PackageAPI#addFiles","kind":"function","options":[],"locus":"package.js"},"PackageAPI#versionsFrom":{"memberof":"PackageAPI","scope":"instance","summary":"Use versions of core packages from a release. Unless provided, all packages will default to the versions released along with `meteorRelease`. This will save you from having to figure out the exact versions of the core packages you want to use. For example, if the newest release of meteor is `METEOR@0.9.0` and it includes `jquery@1.0.0`, you can write `api.versionsFrom('METEOR@0.9.0')` in your package, and when you later write `api.use('jquery')`, it will be equivalent to `api.use('jquery@1.0.0')`. You may specify an array of multiple releases, in which case the default value for constraints will be the \"or\" of the versions from each release: `api.versionsFrom(['METEOR@0.9.0', 'METEOR@0.9.5'])` may cause `api.use('jquery')` to be interpreted as `api.use('jquery@1.0.0 || 2.0.0')`.","params":[{"type":{"names":["String","Array."]},"description":"

Specification of a release: track@version. Just 'version' (e.g. "0.9.0") is sufficient if using the default release track METEOR.

","name":"meteorRelease"}],"name":"versionsFrom","longname":"PackageAPI#versionsFrom","kind":"function","options":[],"locus":"package.js"},"PackageAPI#export":{"memberof":"PackageAPI","scope":"instance","summary":"Export package-level variables in your package. The specified variables (declared without `var` in the source code) will be available to packages that use this package.","params":[{"type":{"names":["String"]},"description":"

Name of the object.

","name":"exportedObject"},{"type":{"names":["String"]},"optional":true,"description":"

If you only want to export the object\non the server (or the client), you can pass in the second argument\n(e.g., 'server', 'client', 'web.browser', 'web.cordova') to specify\nwhat architecture the export is used with.

","name":"architecture"}],"name":"export","longname":"PackageAPI#export","kind":"function","options":[],"locus":"package.js"},"Npm.require":{"summary":"Require a package that was specified using\n`Npm.depends()`.","params":[{"type":{"names":["String"]},"description":"

The name of the package to require.

","name":"name"}],"memberof":"Npm","name":"require","longname":"Npm.require","kind":"function","scope":"static","options":[],"locus":"Server"},"Blaze.Template":{"kind":"class","summary":"Constructor for a Template, which is used to construct Views with particular name and content.","params":[{"type":{"names":["String"]},"optional":true,"description":"

Optional. A name for Views constructed by this Template. See view.name.

","name":"viewName"},{"type":{"names":["function"]},"description":"

A function that returns renderable content. This function is used as the renderFunction for Views constructed by this Template.

","name":"renderFunction"}],"name":"Template","longname":"Blaze.Template","memberof":"Blaze","scope":"static","options":[],"locus":"Client"},"Blaze.TemplateInstance":{"kind":"class","summary":"The class for template instances","params":[{"type":{"names":["Blaze.View"]},"name":"view"}],"name":"TemplateInstance","longname":"Blaze.TemplateInstance","memberof":"Blaze","scope":"static","options":[],"instancename":"template"},"Blaze.View":{"kind":"class","summary":"Constructor for a View, which represents a reactive region of DOM.","params":[{"type":{"names":["String"]},"optional":true,"description":"

Optional. A name for this type of View. See view.name.

","name":"name"},{"type":{"names":["function"]},"description":"

A function that returns renderable content. In this function, this is bound to the View.

","name":"renderFunction"}],"name":"View","longname":"Blaze.View","memberof":"Blaze","scope":"static","options":[],"locus":"Client"},"Subscription":{"summary":"The server's side of a subscription","kind":"class","name":"Subscription","longname":"Subscription","options":[],"params":[],"instancename":"this"},"EJSON.CustomType":{"kind":"class","name":"CustomType","memberof":"EJSON","summary":"The interface that a class must satisfy to be able to become an\nEJSON custom type via EJSON.addType.","scope":"static","longname":"EJSON.CustomType","options":[],"params":[],"instancename":"customType"},"Meteor.Error":{"summary":"This class represents a symbolic error thrown by a method.","kind":"class","params":[{"type":{"names":["String"]},"description":"

A string code uniquely identifying this kind of error.\nThis string should be used by callers of the method to determine the\nappropriate action to take, instead of attempting to parse the reason\nor details fields. For example:

\n
// on the server, pick a code unique to this error\n// the reason field should be a useful debug message\nthrow new Meteor.Error("logged-out", \n  "The user must be logged in to post a comment.");\n\n// on the client\nMeteor.call("methodName", function (error) {\n  // identify the error\n  if (error.error === "logged-out") {\n    // show a nice error message\n    Session.set("errorMessage", "Please log in to post a comment.");\n  }\n});

For legacy reasons, some built-in Meteor functions such as check throw\nerrors with a number in this field.

","name":"error"},{"type":{"names":["String"]},"optional":true,"description":"

Optional. A short human-readable summary of the\nerror, like 'Not Found'.

","name":"reason"},{"type":{"names":["String"]},"optional":true,"description":"

Optional. Additional information about the error,\nlike a textual stack trace.

","name":"details"}],"name":"Error","longname":"Meteor.Error","memberof":"Meteor","scope":"static","options":[],"locus":"Anywhere"},"Mongo.Collection":{"summary":"Constructor for a Collection","kind":"class","params":[{"type":{"names":["String"]},"description":"

The name of the collection. If null, creates an unmanaged (unsynchronized) local collection.

","name":"name"},{"type":{"names":["Object"]},"optional":true,"name":"options"}],"name":"Collection","longname":"Mongo.Collection","memberof":"Mongo","scope":"static","options":[{"type":{"names":["Object"]},"description":"

The server connection that will manage this collection. Uses the default connection if not specified. Pass the return value of calling DDP.connect to specify a different server. Pass null to specify no connection. Unmanaged (name is null) collections cannot specify a connection.

","name":"connection"},{"type":{"names":["String"]},"description":"

The method of generating the _id fields of new documents in this collection. Possible values:

\n\n

The default id generation technique is 'STRING'.

","name":"idGeneration"},{"type":{"names":["function"]},"description":"

An optional transformation function. Documents will be passed through this function before being returned from fetch or findOne, and before being passed to callbacks of observe, map, forEach, allow, and deny. Transforms are not applied for the callbacks of observeChanges or to cursors returned from publish functions.

","name":"transform"}],"locus":"Anywhere","instancename":"collection"},"Mongo.ObjectID":{"summary":"Create a Mongo-style `ObjectID`. If you don't specify a `hexString`, the `ObjectID` will generated randomly (not using MongoDB's ID construction rules).","kind":"class","params":[{"type":{"names":["String"]},"description":"

Optional. The 24-character hexadecimal contents of the ObjectID to create

","name":"hexString"}],"name":"ObjectID","longname":"Mongo.ObjectID","memberof":"Mongo","scope":"static","options":[],"locus":"Anywhere"},"Mongo.Cursor":{"summary":"To create a cursor, use find. To access the documents in a cursor, use forEach, map, or fetch.","kind":"class","name":"Cursor","longname":"Mongo.Cursor","memberof":"Mongo","scope":"static","options":[],"params":[],"instancename":"cursor"},"ReactiveVar":{"kind":"class","summary":"Constructor for a ReactiveVar, which represents a single reactive variable.","params":[{"type":{"names":["Any"]},"description":"

The initial value to set. equalsFunc is ignored when setting the initial value.

","name":"initialValue"},{"type":{"names":["function"]},"optional":true,"description":"

Optional. A function of two arguments, called on the old value and the new value whenever the ReactiveVar is set. If it returns true, no set is performed. If omitted, the default equalsFunc returns true if its arguments are === and are of type number, boolean, string, undefined, or null.

","name":"equalsFunc"}],"name":"ReactiveVar","longname":"ReactiveVar","scope":"global","options":[],"instancename":"reactiveVar","locus":"Client"},"Template":{"summary":"The class for defining templates","kind":"class","name":"Template","longname":"Template","scope":"global","options":[],"params":[],"instancename":"Template.myTemplate"},"Tracker.Dependency":{"summary":"A Dependency represents an atomic unit of reactive data that a\ncomputation might depend on. Reactive data sources such as Session or\nMinimongo internally create different Dependency objects for different\npieces of data, each of which may be depended on by multiple computations.\nWhen the data changes, the computations are invalidated.","kind":"class","name":"Dependency","longname":"Tracker.Dependency","memberof":"Tracker","scope":"static","options":[],"params":[],"instancename":"dependency"},"CompileStep":{"description":"

The comments for this class aren't used to generate docs right now.\nThe docs live in the GitHub Wiki at: https://github.com/meteor/meteor/wiki/CompileStep-API-for-Build-Plugin-Source-Handlers

","kind":"class","name":"CompileStep","summary":"The object passed into Plugin.registerSourceHandler","scope":"global","longname":"CompileStep","options":[],"params":[]},"PackageAPI":{"kind":"class","name":"PackageAPI","scope":"global","summary":"The API object passed into the Packages.onUse function.","longname":"PackageAPI","options":[],"params":[],"instancename":"api"}}; \ No newline at end of file +DocsData = {"Accounts":{"kind":"namespace","name":"Accounts","summary":"The namespace for all accounts-related methods.","longname":"Accounts"},"Accounts.ui":{"summary":"Accounts UI","kind":"namespace","memberof":"Accounts","name":"ui","longname":"Accounts.ui","scope":"static"},"Blaze":{"kind":"namespace","name":"Blaze","summary":"The namespace for all Blaze-related methods and classes.","longname":"Blaze"},"Match":{"kind":"namespace","name":"Match","summary":"The namespace for all Match types and methods.","longname":"Match"},"DDP":{"kind":"namespace","name":"DDP","summary":"The namespace for DDP-related methods.","longname":"DDP"},"EJSON":{"kind":"namespace","summary":"Namespace for EJSON functions","name":"EJSON","longname":"EJSON","scope":"global"},"Meteor":{"summary":"The Meteor namespace","kind":"namespace","name":"Meteor","longname":"Meteor"},"Mongo":{"summary":"Namespace for MongoDB-related items","kind":"namespace","name":"Mongo","longname":"Mongo","scope":"global"},"Tracker":{"kind":"namespace","name":"Tracker","summary":"The namespace for Tracker-related methods.","longname":"Tracker"},"Assets":{"summary":"The namespace for Assets functions, lives in the bundler.","kind":"namespace","name":"Assets","longname":"Assets"},"App":{"kind":"namespace","name":"App","scope":"global","summary":"The App configuration object in mobile-config.js","longname":"App"},"Plugin":{"scope":"global","kind":"namespace","name":"Plugin","summary":"The namespace that is exposed inside build plugin files.","longname":"Plugin"},"Package":{"scope":"global","name":"Package","summary":"The Package object in package.js","kind":"namespace","longname":"Package","locus":"package.js"},"Npm":{"kind":"namespace","name":"Npm","scope":"global","summary":"The Npm object in package.js and package source files.","longname":"Npm"},"Cordova":{"kind":"namespace","name":"Cordova","scope":"global","summary":"The Cordova object in package.js.","longname":"Cordova"},"currentUser":{"scope":"global","name":"currentUser","summary":"Calls [Meteor.user()](#meteor_user). Use `{{#if currentUser}}` to check whether the user is logged in.","longname":"currentUser","kind":"member","ishelper":"true"},"loggingIn":{"scope":"global","name":"loggingIn","summary":"Calls [Meteor.loggingIn()](#meteor_loggingin).","longname":"loggingIn","kind":"member","ishelper":"true"},"Meteor.users":{"summary":"A [Mongo.Collection](#collections) containing user documents.","type":{"names":["Mongo.Collection"]},"name":"users","longname":"Meteor.users","kind":"member","memberof":"Meteor","scope":"static","locus":"Anywhere"},"Accounts.emailTemplates":{"summary":"Options to customize emails sent from the Accounts system.","name":"emailTemplates","longname":"Accounts.emailTemplates","kind":"member","memberof":"Accounts","scope":"static","locus":"Server"},"Template#created":{"name":"created","scope":"instance","memberof":"Template","summary":"Provide a callback when an instance of a template is created.","longname":"Template#created","kind":"member","locus":"Client"},"Template#rendered":{"name":"rendered","scope":"instance","memberof":"Template","summary":"Provide a callback when an instance of a template is rendered.","longname":"Template#rendered","kind":"member","locus":"Client"},"Template#destroyed":{"name":"destroyed","scope":"instance","memberof":"Template","summary":"Provide a callback when an instance of a template is destroyed.","longname":"Template#destroyed","kind":"member","locus":"Client"},"Blaze.TemplateInstance#data":{"scope":"instance","memberof":"Blaze.TemplateInstance","name":"data","summary":"The data context of this instance's latest invocation.","longname":"Blaze.TemplateInstance#data","kind":"member","locus":"Client"},"Blaze.TemplateInstance#view":{"name":"view","memberof":"Blaze.TemplateInstance","scope":"instance","summary":"The [View](#blaze_view) object for this invocation of the template.","type":{"names":["Blaze.View"]},"longname":"Blaze.TemplateInstance#view","kind":"member","locus":"Client"},"Blaze.TemplateInstance#firstNode":{"name":"firstNode","memberof":"Blaze.TemplateInstance","scope":"instance","summary":"The first top-level DOM node in this template instance.","type":{"names":["DOMNode"]},"longname":"Blaze.TemplateInstance#firstNode","kind":"member","locus":"Client"},"Blaze.TemplateInstance#lastNode":{"name":"lastNode","memberof":"Blaze.TemplateInstance","scope":"instance","summary":"The last top-level DOM node in this template instance.","type":{"names":["DOMNode"]},"longname":"Blaze.TemplateInstance#lastNode","kind":"member","locus":"Client"},"Blaze.currentView":{"summary":"The View corresponding to the current template helper, event handler, callback, or autorun. If there isn't one, `null`.","type":{"names":["Blaze.View"]},"name":"currentView","longname":"Blaze.currentView","kind":"member","memberof":"Blaze","scope":"static","locus":"Client"},"MethodInvocation#isSimulation":{"summary":"Access inside a method invocation. Boolean value, true if this invocation is a stub.","name":"isSimulation","memberof":"MethodInvocation","scope":"instance","type":{"names":["Boolean"]},"longname":"MethodInvocation#isSimulation","kind":"member","locus":"Anywhere"},"MethodInvocation#userId":{"summary":"The id of the user that made this method call, or `null` if no user was logged in.","name":"userId","memberof":"MethodInvocation","scope":"instance","longname":"MethodInvocation#userId","kind":"member","locus":"Anywhere"},"MethodInvocation#connection":{"summary":"Access inside a method invocation. The [connection](#meteor_onconnection) that this method was received on. `null` if the method is not associated with a connection, eg. a server initiated method call.","name":"connection","memberof":"MethodInvocation","scope":"instance","longname":"MethodInvocation#connection","kind":"member","locus":"Server"},"Subscription#connection":{"summary":"Access inside the publish function. The incoming [connection](#meteor_onconnection) for this subscription.","name":"connection","memberof":"Subscription","scope":"instance","longname":"Subscription#connection","kind":"member","locus":"Server"},"Subscription#userId":{"summary":"Access inside the publish function. The id of the logged-in user, or `null` if no user is logged in.","memberof":"Subscription","name":"userId","scope":"instance","longname":"Subscription#userId","kind":"member","locus":"Server"},"EJSON.newBinary":{"summary":"Allocate a new buffer of binary data that EJSON can serialize.","params":[{"type":{"names":["Number"]},"description":"

The number of bytes of binary data to allocate.

","name":"size"}],"name":"newBinary","longname":"EJSON.newBinary","kind":"member","memberof":"EJSON","scope":"static","locus":"Anywhere"},"Meteor.isClient":{"summary":"Boolean variable. True if running in client environment.","scope":"static","type":{"names":["Boolean"]},"name":"isClient","longname":"Meteor.isClient","kind":"member","memberof":"Meteor","locus":"Anywhere"},"Meteor.isServer":{"summary":"Boolean variable. True if running in server environment.","scope":"static","type":{"names":["Boolean"]},"name":"isServer","longname":"Meteor.isServer","kind":"member","memberof":"Meteor","locus":"Anywhere"},"Meteor.settings":{"summary":"`Meteor.settings` contains deployment-specific configuration options. You can initialize settings by passing the `--settings` option (which takes the name of a file containing JSON data) to `meteor run` or `meteor deploy`. When running your server directly (e.g. from a bundle), you instead specify settings by putting the JSON directly into the `METEOR_SETTINGS` environment variable. If you don't provide any settings, `Meteor.settings` will be an empty object. If the settings object contains a key named `public`, then `Meteor.settings.public` will be available on the client as well as the server. All other properties of `Meteor.settings` are only defined on the server.","type":{"names":["Object"]},"name":"settings","longname":"Meteor.settings","kind":"member","memberof":"Meteor","scope":"static","locus":"Anywhere"},"Meteor.isCordova":{"summary":"Boolean variable. True if running in a Cordova mobile environment.","type":{"names":["Boolean"]},"scope":"static","name":"isCordova","longname":"Meteor.isCordova","kind":"member","memberof":"Meteor","locus":"Anywhere"},"Meteor.release":{"summary":"`Meteor.release` is a string containing the name of the [release](#meteorupdate) with which the project was built (for example, `\"1.2.3\"`). It is `undefined` if the project was built using a git checkout of Meteor.","type":{"names":["String"]},"name":"release","longname":"Meteor.release","kind":"member","memberof":"Meteor","scope":"static","locus":"Anywhere"},"Template.body":{"summary":"The [template object](#templates_api) representing your `` tag.","name":"body","longname":"Template.body","kind":"member","memberof":"Template","scope":"static","locus":"Client"},"Tracker.active":{"summary":"True if there is a current computation, meaning that dependencies on reactive data sources will be tracked and potentially cause the current computation to be rerun.","type":{"names":["Boolean"]},"name":"active","longname":"Tracker.active","kind":"member","memberof":"Tracker","scope":"static","locus":"Client"},"Tracker.currentComputation":{"summary":"The current computation, or `null` if there isn't one. The current computation is the [`Tracker.Computation`](#tracker_computation) object created by the innermost active call to `Tracker.autorun`, and it's the computation that gains dependencies when reactive data sources are accessed.","type":{"names":["Tracker.Computation"]},"name":"currentComputation","longname":"Tracker.currentComputation","kind":"member","memberof":"Tracker","scope":"static","locus":"Client"},"Tracker.Computation#stopped":{"summary":"True if this computation has been stopped.","memberof":"Tracker.Computation","scope":"instance","name":"stopped","longname":"Tracker.Computation#stopped","kind":"member","locus":"Client"},"Tracker.Computation#invalidated":{"summary":"True if this computation has been invalidated (and not yet rerun), or if it has been stopped.","memberof":"Tracker.Computation","scope":"instance","name":"invalidated","type":{"names":["Boolean"]},"longname":"Tracker.Computation#invalidated","kind":"member","locus":"Client"},"Tracker.Computation#firstRun":{"summary":"True during the initial run of the computation at the time `Tracker.autorun` is called, and false on subsequent reruns and at other times.","memberof":"Tracker.Computation","scope":"instance","name":"firstRun","type":{"names":["Boolean"]},"longname":"Tracker.Computation#firstRun","kind":"member","locus":"Client"},"CompileStep#inputSize":{"summary":"The total number of bytes in the input file.","memberof":"CompileStep","scope":"instance","type":{"names":["Integer"]},"name":"inputSize","longname":"CompileStep#inputSize","kind":"member"},"CompileStep#inputPath":{"summary":"The filename and relative path of the input file.\nPlease don't use this filename to read the file from disk, instead\nuse [compileStep.read](CompileStep-read).","type":{"names":["String"]},"scope":"instance","memberof":"CompileStep","name":"inputPath","longname":"CompileStep#inputPath","kind":"member"},"CompileStep#fullInputPath":{"summary":"The filename and absolute path of the input file.\nPlease don't use this filename to read the file from disk, instead\nuse [compileStep.read](CompileStep-read).","type":{"names":["String"]},"scope":"instance","memberof":"CompileStep","name":"fullInputPath","longname":"CompileStep#fullInputPath","kind":"member"},"CompileStep#pathForSourceMap":{"summary":"If you are generating a sourcemap for the compiled file, use\nthis path for the original file in the sourcemap.","type":{"names":["String"]},"memberof":"CompileStep","scope":"instance","name":"pathForSourceMap","longname":"CompileStep#pathForSourceMap","kind":"member"},"CompileStep#packageName":{"summary":"The name of the package in which the file being built exists.","type":{"names":["String"]},"memberof":"CompileStep","scope":"instance","name":"packageName","longname":"CompileStep#packageName","kind":"member"},"CompileStep#rootOutputPath":{"summary":"On web targets, this will be the root URL prepended\nto the paths you pick for your output files. For example,\nit could be \"/packages/my-package\".","type":{"names":["String"]},"memberof":"CompileStep","scope":"instance","name":"rootOutputPath","longname":"CompileStep#rootOutputPath","kind":"member"},"CompileStep#arch":{"summary":"The architecture for which we are building. Can be \"os\",\n\"web.browser\", or \"web.cordova\".","type":{"names":["String"]},"memberof":"CompileStep","scope":"instance","name":"arch","longname":"CompileStep#arch","kind":"member"},"CompileStep#fileOptions":{"summary":"Any options passed to \"api.addFiles\".","type":{"names":["Object"]},"memberof":"CompileStep","scope":"instance","name":"fileOptions","longname":"CompileStep#fileOptions","kind":"member"},"CompileStep#declaredExports":{"summary":"The list of exports that the current package has defined.\nCan be used to treat those symbols differently during compilation.","type":{"names":["Object"]},"memberof":"CompileStep","scope":"instance","name":"declaredExports","longname":"CompileStep#declaredExports","kind":"member"},"Meteor.userId":{"summary":"Get the current user id, or `null` if no user is logged in. A reactive data source.","name":"userId","longname":"Meteor.userId","kind":"function","memberof":"Meteor","scope":"static","options":[],"params":[],"locus":"Anywhere but publish functions"},"Meteor.loggingIn":{"summary":"True if a login method (such as `Meteor.loginWithPassword`, `Meteor.loginWithFacebook`, or `Accounts.createUser`) is currently in progress. A reactive data source.","name":"loggingIn","longname":"Meteor.loggingIn","kind":"function","memberof":"Meteor","scope":"static","options":[],"params":[],"locus":"Client"},"Meteor.user":{"summary":"Get the current user record, or `null` if no user is logged in. A reactive data source.","name":"user","longname":"Meteor.user","kind":"function","memberof":"Meteor","scope":"static","options":[],"params":[],"locus":"Anywhere but publish functions"},"Meteor.logout":{"summary":"Log the user out.","params":[{"type":{"names":["function"]},"optional":true,"description":"

Optional callback. Called with no arguments on success, or with a single Error argument on failure.

","name":"callback"}],"name":"logout","longname":"Meteor.logout","kind":"function","memberof":"Meteor","scope":"static","options":[],"locus":"Client"},"Meteor.logoutOtherClients":{"summary":"Log out other clients logged in as the current user, but does not log out the client that calls this function.","params":[{"type":{"names":["function"]},"optional":true,"description":"

Optional callback. Called with no arguments on success, or with a single Error argument on failure.

","name":"callback"}],"name":"logoutOtherClients","longname":"Meteor.logoutOtherClients","kind":"function","memberof":"Meteor","scope":"static","options":[],"locus":"Client"},"Accounts.config":{"summary":"Set global accounts options.","params":[{"type":{"names":["Object"]},"name":"options"}],"name":"config","longname":"Accounts.config","kind":"function","memberof":"Accounts","scope":"static","options":[{"type":{"names":["Boolean"]},"description":"

New users with an email address will receive an address verification email.

","name":"sendVerificationEmail"},{"type":{"names":["Boolean"]},"description":"

Calls to createUser from the client will be rejected. In addition, if you are using accounts-ui, the "Create account" link will not be available.

","name":"forbidClientAccountCreation"},{"type":{"names":["String","function"]},"description":"

If set to a string, only allows new users if the domain part of their email address matches the string. If set to a function, only allows new users if the function returns true. The function is passed the full email address of the proposed new user. Works with password-based sign-in and external services that expose email addresses (Google, Facebook, GitHub). All existing users still can log in after enabling this option. Example: Accounts.config({ restrictCreationByEmailDomain: 'school.edu' }).

","name":"restrictCreationByEmailDomain"},{"type":{"names":["Number"]},"description":"

The number of days from when a user logs in until their token expires and they are logged out. Defaults to 90. Set to null to disable login expiration.

","name":"loginExpirationInDays"},{"type":{"names":["String"]},"description":"

When using the oauth-encryption package, the 16 byte key using to encrypt sensitive account credentials in the database, encoded in base64. This option may only be specifed on the server. See packages/oauth-encryption/README.md for details.

","name":"oauthSecretKey"}],"locus":"Anywhere"},"Accounts.validateLoginAttempt":{"summary":"Validate login attempts.","params":[{"type":{"names":["function"]},"description":"

Called whenever a login is attempted (either successful or unsuccessful). A login can be aborted by returning a falsy value or throwing an exception.

","name":"func"}],"name":"validateLoginAttempt","longname":"Accounts.validateLoginAttempt","kind":"function","memberof":"Accounts","scope":"static","options":[],"locus":"Server"},"Accounts.onLogin":{"summary":"Register a callback to be called after a login attempt succeeds.","params":[{"type":{"names":["function"]},"description":"

The callback to be called when login is successful.

","name":"func"}],"name":"onLogin","longname":"Accounts.onLogin","kind":"function","memberof":"Accounts","scope":"static","options":[],"locus":"Server"},"Accounts.onLoginFailure":{"summary":"Register a callback to be called after a login attempt fails.","params":[{"type":{"names":["function"]},"description":"

The callback to be called after the login has failed.

","name":"func"}],"name":"onLoginFailure","longname":"Accounts.onLoginFailure","kind":"function","memberof":"Accounts","scope":"static","options":[],"locus":"Server"},"Accounts.onCreateUser":{"summary":"Customize new user creation.","params":[{"type":{"names":["function"]},"description":"

Called whenever a new user is created. Return the new user object, or throw an Error to abort the creation.

","name":"func"}],"name":"onCreateUser","longname":"Accounts.onCreateUser","kind":"function","memberof":"Accounts","scope":"static","options":[],"locus":"Server"},"Accounts.validateNewUser":{"summary":"Set restrictions on new user creation.","params":[{"type":{"names":["function"]},"description":"

Called whenever a new user is created. Takes the new user object, and returns true to allow the creation or false to abort.

","name":"func"}],"name":"validateNewUser","longname":"Accounts.validateNewUser","kind":"function","memberof":"Accounts","scope":"static","options":[],"locus":"Server"},"Accounts.onResetPasswordLink":{"summary":"Register a function to call when a reset password link is clicked\nin an email sent by\n[`Accounts.sendResetPasswordEmail`](#accounts_sendresetpasswordemail).\nThis function should be called in top-level code, not inside\n`Meteor.startup()`.","params":[{"type":{"names":["function"]},"description":"

The function to call. It is given two arguments:

\n
    \n
  1. token: A password reset token that can be passed to\nAccounts.resetPassword.
  2. \n
  3. done: A function to call when the password reset UI flow is complete. The normal\nlogin process is suspended until this function is called, so that the\npassword for user A can be reset even if user B was logged in.
  4. \n
","name":"callback"}],"name":"onResetPasswordLink","longname":"Accounts.onResetPasswordLink","kind":"function","memberof":"Accounts","scope":"static","options":[],"locus":"Client"},"Accounts.onEmailVerificationLink":{"summary":"Register a function to call when an email verification link is\nclicked in an email sent by\n[`Accounts.sendVerificationEmail`](#accounts_sendverificationemail).\nThis function should be called in top-level code, not inside\n`Meteor.startup()`.","params":[{"type":{"names":["function"]},"description":"

The function to call. It is given two arguments:

\n
    \n
  1. token: An email verification token that can be passed to\nAccounts.verifyEmail.
  2. \n
  3. done: A function to call when the email verification UI flow is complete.\nThe normal login process is suspended until this function is called, so\nthat the user can be notified that they are verifying their email before\nbeing logged in.
  4. \n
","name":"callback"}],"name":"onEmailVerificationLink","longname":"Accounts.onEmailVerificationLink","kind":"function","memberof":"Accounts","scope":"static","options":[],"locus":"Client"},"Accounts.onEnrollmentLink":{"summary":"Register a function to call when an account enrollment link is\nclicked in an email sent by\n[`Accounts.sendEnrollmentEmail`](#accounts_sendenrollmentemail).\nThis function should be called in top-level code, not inside\n`Meteor.startup()`.","params":[{"type":{"names":["function"]},"description":"

The function to call. It is given two arguments:

\n
    \n
  1. token: A password reset token that can be passed to\nAccounts.resetPassword to give the newly\nenrolled account a password.
  2. \n
  3. done: A function to call when the enrollment UI flow is complete.\nThe normal login process is suspended until this function is called, so that\nuser A can be enrolled even if user B was logged in.
  4. \n
","name":"callback"}],"name":"onEnrollmentLink","longname":"Accounts.onEnrollmentLink","kind":"function","memberof":"Accounts","scope":"static","options":[],"locus":"Client"},"Meteor.loginWith":{"name":"loginWith","memberof":"Meteor","kind":"function","summary":"Log the user in using an external service.","params":[{"type":{"names":["Object"]},"optional":true,"name":"options"},{"type":{"names":["function"]},"optional":true,"description":"

Optional callback. Called with no arguments on success, or with a single Error argument on failure.

","name":"callback"}],"scope":"static","longname":"Meteor.loginWith","options":[{"type":{"names":["Array."]},"description":"

A list of permissions to request from the user.

","name":"requestPermissions"},{"type":{"names":["Boolean"]},"description":"

If true, asks the user for permission to act on their behalf when offline. This stores an additional offline token in the services field of the user document. Currently only supported with Google.

","name":"requestOfflineToken"},{"type":{"names":["Boolean"]},"description":"

If true, forces the user to approve the app's permissions, even if previously approved. Currently only supported with Google.

","name":"forceApprovalPrompt"},{"type":{"names":["String"]},"description":"

An email address that the external service will use to pre-fill the login prompt. Currently only supported with Meteor developer accounts.

","name":"userEmail"},{"type":{"names":["String"]},"description":"

Login style ("popup" or "redirect", defaults to the login service configuration). The "popup" style opens the login page in a separate popup window, which is generally preferred because the Meteor application doesn't need to be reloaded. The "redirect" style redirects the Meteor application's window to the login page, and the login service provider redirects back to the Meteor application which is then reloaded. The "redirect" style can be used in situations where a popup window can't be opened, such as in a mobile UIWebView. The "redirect" style however relies on session storage which isn't available in Safari private mode, so the "popup" style will be forced if session storage can't be used.

","name":"loginStyle"}],"locus":"Client"},"Meteor.loginWithPassword":{"summary":"Log the user in with a password.","params":[{"type":{"names":["Object","String"]},"description":"

Either a string interpreted as a username or an email; or an object with a single key: email, username or id.

","name":"user"},{"type":{"names":["String"]},"description":"

The user's password.

","name":"password"},{"type":{"names":["function"]},"optional":true,"description":"

Optional callback. Called with no arguments on success, or with a single Error argument on failure.

","name":"callback"}],"name":"loginWithPassword","longname":"Meteor.loginWithPassword","kind":"function","memberof":"Meteor","scope":"static","options":[],"locus":"Client"},"Accounts.createUser":{"summary":"Create a new user.","params":[{"type":{"names":["Object"]},"name":"options"},{"type":{"names":["function"]},"optional":true,"description":"

Client only, optional callback. Called with no arguments on success, or with a single Error argument on failure.

","name":"callback"}],"name":"createUser","longname":"Accounts.createUser","kind":"function","memberof":"Accounts","scope":"static","options":[{"type":{"names":["String"]},"description":"

A unique name for this user.

","name":"username"},{"type":{"names":["String"]},"description":"

The user's email address.

","name":"email"},{"type":{"names":["String"]},"description":"

The user's password. This is not sent in plain text over the wire.

","name":"password"},{"type":{"names":["Object"]},"description":"

The user's profile, typically including the name field.

","name":"profile"}],"locus":"Anywhere"},"Accounts.changePassword":{"summary":"Change the current user's password. Must be logged in.","params":[{"type":{"names":["String"]},"description":"

The user's current password. This is not sent in plain text over the wire.

","name":"oldPassword"},{"type":{"names":["String"]},"description":"

A new password for the user. This is not sent in plain text over the wire.

","name":"newPassword"},{"type":{"names":["function"]},"optional":true,"description":"

Optional callback. Called with no arguments on success, or with a single Error argument on failure.

","name":"callback"}],"name":"changePassword","longname":"Accounts.changePassword","kind":"function","memberof":"Accounts","scope":"static","options":[],"locus":"Client"},"Accounts.forgotPassword":{"summary":"Request a forgot password email.","params":[{"type":{"names":["Object"]},"name":"options"},{"type":{"names":["function"]},"optional":true,"description":"

Optional callback. Called with no arguments on success, or with a single Error argument on failure.

","name":"callback"}],"name":"forgotPassword","longname":"Accounts.forgotPassword","kind":"function","memberof":"Accounts","scope":"static","options":[{"type":{"names":["String"]},"description":"

The email address to send a password reset link.

","name":"email"}],"locus":"Client"},"Accounts.resetPassword":{"summary":"Reset the password for a user using a token received in email. Logs the user in afterwards.","params":[{"type":{"names":["String"]},"description":"

The token retrieved from the reset password URL.

","name":"token"},{"type":{"names":["String"]},"description":"

A new password for the user. This is not sent in plain text over the wire.

","name":"newPassword"},{"type":{"names":["function"]},"optional":true,"description":"

Optional callback. Called with no arguments on success, or with a single Error argument on failure.

","name":"callback"}],"name":"resetPassword","longname":"Accounts.resetPassword","kind":"function","memberof":"Accounts","scope":"static","options":[],"locus":"Client"},"Accounts.verifyEmail":{"summary":"Marks the user's email address as verified. Logs the user in afterwards.","params":[{"type":{"names":["String"]},"description":"

The token retrieved from the verification URL.

","name":"token"},{"type":{"names":["function"]},"optional":true,"description":"

Optional callback. Called with no arguments on success, or with a single Error argument on failure.

","name":"callback"}],"name":"verifyEmail","longname":"Accounts.verifyEmail","kind":"function","memberof":"Accounts","scope":"static","options":[],"locus":"Client"},"Accounts.setPassword":{"summary":"Forcibly change the password for a user.","params":[{"type":{"names":["String"]},"description":"

The id of the user to update.

","name":"userId"},{"type":{"names":["String"]},"description":"

A new password for the user.

","name":"newPassword"}],"name":"setPassword","longname":"Accounts.setPassword","kind":"function","memberof":"Accounts","scope":"static","options":[],"locus":"Server"},"Accounts.sendResetPasswordEmail":{"summary":"Send an email with a link the user can use to reset their password.","params":[{"type":{"names":["String"]},"description":"

The id of the user to send email to.

","name":"userId"},{"type":{"names":["String"]},"optional":true,"description":"

Optional. Which address of the user's to send the email to. This address must be in the user's emails list. Defaults to the first email in the list.

","name":"email"}],"name":"sendResetPasswordEmail","longname":"Accounts.sendResetPasswordEmail","kind":"function","memberof":"Accounts","scope":"static","options":[],"locus":"Server"},"Accounts.sendEnrollmentEmail":{"summary":"Send an email with a link the user can use to set their initial password.","params":[{"type":{"names":["String"]},"description":"

The id of the user to send email to.

","name":"userId"},{"type":{"names":["String"]},"optional":true,"description":"

Optional. Which address of the user's to send the email to. This address must be in the user's emails list. Defaults to the first email in the list.

","name":"email"}],"name":"sendEnrollmentEmail","longname":"Accounts.sendEnrollmentEmail","kind":"function","memberof":"Accounts","scope":"static","options":[],"locus":"Server"},"Accounts.sendVerificationEmail":{"summary":"Send an email with a link the user can use verify their email address.","params":[{"type":{"names":["String"]},"description":"

The id of the user to send email to.

","name":"userId"},{"type":{"names":["String"]},"optional":true,"description":"

Optional. Which address of the user's to send the email to. This address must be in the user's emails list. Defaults to the first unverified email in the list.

","name":"email"}],"name":"sendVerificationEmail","longname":"Accounts.sendVerificationEmail","kind":"function","memberof":"Accounts","scope":"static","options":[],"locus":"Server"},"Accounts.ui.config":{"summary":"Configure the behavior of [`{{> loginButtons}}`](#accountsui).","params":[{"type":{"names":["Object"]},"name":"options"}],"name":"config","longname":"Accounts.ui.config","kind":"function","memberof":"Accounts.ui","scope":"static","options":[{"type":{"names":["Object"]},"description":"

Which permissions to request from the user for each external service.

","name":"requestPermissions"},{"type":{"names":["Object"]},"description":"

To ask the user for permission to act on their behalf when offline, map the relevant external service to true. Currently only supported with Google. See Meteor.loginWithExternalService for more details.

","name":"requestOfflineToken"},{"type":{"names":["Object"]},"description":"

If true, forces the user to approve the app's permissions, even if previously approved. Currently only supported with Google.

","name":"forceApprovalPrompt"},{"type":{"names":["String"]},"description":"

Which fields to display in the user creation form. One of 'USERNAME_AND_EMAIL', 'USERNAME_AND_OPTIONAL_EMAIL', 'USERNAME_ONLY', or 'EMAIL_ONLY' (default).

","name":"passwordSignupFields"}],"locus":"Client"},"Blaze.With":{"summary":"Constructs a View that renders content with a data context.","params":[{"type":{"names":["Object","function"]},"description":"

An object to use as the data context, or a function returning such an object. If a function is provided, it will be reactively re-run.

","name":"data"},{"type":{"names":["function"]},"description":"

A Function that returns renderable content.

","name":"contentFunc"}],"name":"With","longname":"Blaze.With","kind":"function","memberof":"Blaze","scope":"static","options":[],"locus":"Client"},"Blaze.If":{"summary":"Constructs a View that renders content conditionally.","params":[{"type":{"names":["function"]},"description":"

A function to reactively re-run. Whether the result is truthy or falsy determines whether contentFunc or elseFunc is shown. An empty array is considered falsy.

","name":"conditionFunc"},{"type":{"names":["function"]},"description":"

A Function that returns renderable content.

","name":"contentFunc"},{"type":{"names":["function"]},"optional":true,"description":"

Optional. A Function that returns renderable content. If no elseFunc is supplied, no content is shown in the "else" case.

","name":"elseFunc"}],"name":"If","longname":"Blaze.If","kind":"function","memberof":"Blaze","scope":"static","options":[],"locus":"Client"},"Blaze.Unless":{"summary":"An inverted [`Blaze.If`](#blaze_if).","params":[{"type":{"names":["function"]},"description":"

A function to reactively re-run. If the result is falsy, contentFunc is shown, otherwise elseFunc is shown. An empty array is considered falsy.

","name":"conditionFunc"},{"type":{"names":["function"]},"description":"

A Function that returns renderable content.

","name":"contentFunc"},{"type":{"names":["function"]},"optional":true,"description":"

Optional. A Function that returns renderable content. If no elseFunc is supplied, no content is shown in the "else" case.

","name":"elseFunc"}],"name":"Unless","longname":"Blaze.Unless","kind":"function","memberof":"Blaze","scope":"static","options":[],"locus":"Client"},"Blaze.Each":{"summary":"Constructs a View that renders `contentFunc` for each item in a sequence.","params":[{"type":{"names":["function"]},"description":"

A function to reactively re-run. The function may return a Cursor, an array, null, or undefined.

","name":"argFunc"},{"type":{"names":["function"]},"description":"

A Function that returns renderable content.

","name":"contentFunc"},{"type":{"names":["function"]},"optional":true,"description":"

Optional. A Function that returns renderable content to display in the case when there are no items to display.

","name":"elseFunc"}],"name":"Each","longname":"Blaze.Each","kind":"function","memberof":"Blaze","scope":"static","options":[],"locus":"Client"},"Blaze.isTemplate":{"summary":"Returns true if `value` is a template object like `Template.myTemplate`.","params":[{"type":{"names":["Any"]},"description":"

The value to test.

","name":"value"}],"name":"isTemplate","longname":"Blaze.isTemplate","kind":"function","memberof":"Blaze","scope":"static","options":[],"locus":"Client"},"Blaze.TemplateInstance#$":{"summary":"Find all elements matching `selector` in this template instance, and return them as a JQuery object.","params":[{"type":{"names":["String"]},"description":"

The CSS selector to match, scoped to the template contents.

","name":"selector"}],"returns":[{"type":{"names":["Array."]}}],"name":"$","longname":"Blaze.TemplateInstance#$","kind":"function","memberof":"Blaze.TemplateInstance","scope":"instance","options":[],"locus":"Client"},"Blaze.TemplateInstance#findAll":{"summary":"Find all elements matching `selector` in this template instance.","params":[{"type":{"names":["String"]},"description":"

The CSS selector to match, scoped to the template contents.

","name":"selector"}],"returns":[{"type":{"names":["Array."]}}],"name":"findAll","longname":"Blaze.TemplateInstance#findAll","kind":"function","memberof":"Blaze.TemplateInstance","scope":"instance","options":[],"locus":"Client"},"Blaze.TemplateInstance#find":{"summary":"Find one element matching `selector` in this template instance.","params":[{"type":{"names":["String"]},"description":"

The CSS selector to match, scoped to the template contents.

","name":"selector"}],"returns":[{"type":{"names":["DOMElement"]}}],"name":"find","longname":"Blaze.TemplateInstance#find","kind":"function","memberof":"Blaze.TemplateInstance","scope":"instance","options":[],"locus":"Client"},"Blaze.TemplateInstance#autorun":{"summary":"A version of [Tracker.autorun](#tracker_autorun) that is stopped when the template is destroyed.","params":[{"type":{"names":["function"]},"description":"

The function to run. It receives one argument: a Tracker.Computation object.

","name":"runFunc"}],"name":"autorun","longname":"Blaze.TemplateInstance#autorun","kind":"function","memberof":"Blaze.TemplateInstance","scope":"instance","options":[],"locus":"Client"},"Template#helpers":{"summary":"Specify template helpers available to this template.","params":[{"type":{"names":["Object"]},"description":"

Dictionary of helper functions by name.

","name":"helpers"}],"name":"helpers","longname":"Template#helpers","kind":"function","memberof":"Template","scope":"instance","options":[],"locus":"Client"},"Template#events":{"summary":"Specify event handlers for this template.","params":[{"type":{"names":["EventMap"]},"description":"

Event handlers to associate with this template.

","name":"eventMap"}],"name":"events","longname":"Template#events","kind":"function","memberof":"Template","scope":"instance","options":[],"locus":"Client"},"Template.instance":{"kind":"function","name":"instance","memberof":"Template","summary":"The [template instance](#template_inst) corresponding to the current template helper, event handler, callback, or autorun. If there isn't one, `null`.","returns":[{"description":"

Blaze.TemplateInstance

"}],"scope":"static","longname":"Template.instance","options":[],"params":[],"locus":"Client"},"Template.currentData":{"summary":"Returns the data context of the current helper, or the data context of the template that declares the current event handler or callback. Establishes a reactive dependency on the result.","kind":"function","name":"currentData","longname":"Template.currentData","memberof":"Template","scope":"static","options":[],"params":[],"locus":"Client"},"Template.parentData":{"summary":"Accesses other data contexts that enclose the current data context.","kind":"function","params":[{"type":{"names":["Integer"]},"optional":true,"description":"

The number of levels beyond the current data context to look. Defaults to 1.

","name":"numLevels"}],"name":"parentData","longname":"Template.parentData","memberof":"Template","scope":"static","options":[],"locus":"Client"},"Template.registerHelper":{"summary":"Defines a [helper function](#template_helpers) which can be used from all templates.","kind":"function","params":[{"type":{"names":["String"]},"description":"

The name of the helper function you are defining.

","name":"name"},{"type":{"names":["function"]},"description":"

The helper function itself.

","name":"function"}],"name":"registerHelper","longname":"Template.registerHelper","memberof":"Template","scope":"static","options":[],"locus":"Client"},"Blaze.render":{"summary":"Renders a template or View to DOM nodes and inserts it into the DOM, returning a rendered [View](#blaze_view) which can be passed to [`Blaze.remove`](#blaze_remove).","params":[{"type":{"names":["Template","Blaze.View"]},"description":"

The template (e.g. Template.myTemplate) or View object to render. If a template, a View object is constructed. If a View, it must be an unrendered View, which becomes a rendered View and is returned.

","name":"templateOrView"},{"type":{"names":["DOMNode"]},"description":"

The node that will be the parent of the rendered template. It must be an Element node.

","name":"parentNode"},{"type":{"names":["DOMNode"]},"optional":true,"description":"

Optional. If provided, must be a child of parentNode; the template will be inserted before this node. If not provided, the template will be inserted as the last child of parentNode.

","name":"nextNode"},{"type":{"names":["Blaze.View"]},"optional":true,"description":"

Optional. If provided, it will be set as the rendered View's parentView.

","name":"parentView"}],"name":"render","longname":"Blaze.render","kind":"function","memberof":"Blaze","scope":"static","options":[],"locus":"Client"},"Blaze.renderWithData":{"summary":"Renders a template or View to DOM nodes with a data context. Otherwise identical to `Blaze.render`.","params":[{"type":{"names":["Template","Blaze.View"]},"description":"

The template (e.g. Template.myTemplate) or View object to render.

","name":"templateOrView"},{"type":{"names":["Object","function"]},"description":"

The data context to use, or a function returning a data context. If a function is provided, it will be reactively re-run.

","name":"data"},{"type":{"names":["DOMNode"]},"description":"

The node that will be the parent of the rendered template. It must be an Element node.

","name":"parentNode"},{"type":{"names":["DOMNode"]},"optional":true,"description":"

Optional. If provided, must be a child of parentNode; the template will be inserted before this node. If not provided, the template will be inserted as the last child of parentNode.

","name":"nextNode"},{"type":{"names":["Blaze.View"]},"optional":true,"description":"

Optional. If provided, it will be set as the rendered View's parentView.

","name":"parentView"}],"name":"renderWithData","longname":"Blaze.renderWithData","kind":"function","memberof":"Blaze","scope":"static","options":[],"locus":"Client"},"Blaze.remove":{"summary":"Removes a rendered View from the DOM, stopping all reactive updates and event listeners on it.","params":[{"type":{"names":["Blaze.View"]},"description":"

The return value from Blaze.render or Blaze.renderWithData.

","name":"renderedView"}],"name":"remove","longname":"Blaze.remove","kind":"function","memberof":"Blaze","scope":"static","options":[],"locus":"Client"},"Blaze.toHTML":{"summary":"Renders a template or View to a string of HTML.","params":[{"type":{"names":["Template","Blaze.View"]},"description":"

The template (e.g. Template.myTemplate) or View object from which to generate HTML.

","name":"templateOrView"}],"name":"toHTML","longname":"Blaze.toHTML","kind":"function","memberof":"Blaze","scope":"static","options":[],"locus":"Client"},"Blaze.toHTMLWithData":{"summary":"Renders a template or View to HTML with a data context. Otherwise identical to `Blaze.toHTML`.","params":[{"type":{"names":["Template","Blaze.View"]},"description":"

The template (e.g. Template.myTemplate) or View object from which to generate HTML.

","name":"templateOrView"},{"type":{"names":["Object","function"]},"description":"

The data context to use, or a function returning a data context.

","name":"data"}],"name":"toHTMLWithData","longname":"Blaze.toHTMLWithData","kind":"function","memberof":"Blaze","scope":"static","options":[],"locus":"Client"},"Blaze.getData":{"summary":"Returns the current data context, or the data context that was used when rendering a particular DOM element or View from a Meteor template.","params":[{"type":{"names":["DOMElement","Blaze.View"]},"optional":true,"description":"

Optional. An element that was rendered by a Meteor, or a View.

","name":"elementOrView"}],"name":"getData","longname":"Blaze.getData","kind":"function","memberof":"Blaze","scope":"static","options":[],"locus":"Client"},"Blaze.getView":{"summary":"Gets either the current View, or the View enclosing the given DOM element.","params":[{"type":{"names":["DOMElement"]},"optional":true,"description":"

Optional. If specified, the View enclosing element is returned.

","name":"element"}],"name":"getView","longname":"Blaze.getView","kind":"function","memberof":"Blaze","scope":"static","options":[],"locus":"Client"},"check":{"summary":"Check that a value matches a [pattern](#matchpatterns).\nIf the value does not match the pattern, throw a `Match.Error`.\n\nParticularly useful to assert that arguments to a function have the right\ntypes and structure.","params":[{"type":{"names":["Any"]},"description":"

The value to check

","name":"value"},{"type":{"names":["MatchPattern"]},"description":"

The pattern to match\nvalue against

","name":"pattern"}],"name":"check","longname":"check","kind":"function","scope":"global","options":[],"locus":"Anywhere"},"Match.test":{"summary":"Returns true if the value matches the pattern.","params":[{"type":{"names":["Any"]},"description":"

The value to check

","name":"value"},{"type":{"names":["MatchPattern"]},"description":"

The pattern to match value against

","name":"pattern"}],"name":"test","longname":"Match.test","kind":"function","memberof":"Match","scope":"static","options":[],"locus":"Anywhere"},"MethodInvocation":{"summary":"The state for a single invocation of a method, referenced by this\ninside a method definition.","params":[{"type":{"names":["Object"]},"name":"options"}],"name":"MethodInvocation","longname":"MethodInvocation","kind":"function","scope":"global","options":[],"instancename":"this"},"MethodInvocation#unblock":{"summary":"Call inside a method invocation. Allow subsequent method from this client to begin running in a new fiber.","memberof":"MethodInvocation","scope":"instance","name":"unblock","longname":"MethodInvocation#unblock","kind":"function","options":[],"params":[],"locus":"Server"},"MethodInvocation#setUserId":{"summary":"Set the logged in user.","memberof":"MethodInvocation","scope":"instance","params":[{"type":{"names":["String","null"]},"description":"

The value that should be returned by userId on this connection.

","name":"userId"}],"name":"setUserId","longname":"MethodInvocation#setUserId","kind":"function","options":[],"locus":"Server"},"Meteor.subscribe":{"memberof":"Meteor","summary":"Subscribe to a record set. Returns a handle that provides `stop()` and `ready()` methods.","params":[{"type":{"names":["String"]},"description":"

Name of the subscription. Matches the name of the server's publish() call.

","name":"name"},{"type":{"names":["Any"]},"optional":true,"description":"

Optional arguments passed to publisher function on server.

","name":"arg1, arg2..."},{"type":{"names":["function","Object"]},"optional":true,"description":"

Optional. May include onError and onReady callbacks. If a function is passed instead of an object, it is interpreted as an onReady callback.

","name":"callbacks"}],"name":"subscribe","longname":"Meteor.subscribe","kind":"function","scope":"static","options":[],"locus":"Client"},"Meteor.call":{"memberof":"Meteor","summary":"Invokes a method passing any number of arguments.","params":[{"type":{"names":["String"]},"description":"

Name of method to invoke

","name":"name"},{"type":{"names":["EJSONable"]},"optional":true,"description":"

Optional method arguments

","name":"arg1, arg2..."},{"type":{"names":["function"]},"optional":true,"description":"

Optional callback, which is called asynchronously with the error or result after the method is complete. If not provided, the method runs synchronously if possible (see below).

","name":"asyncCallback"}],"name":"call","longname":"Meteor.call","kind":"function","scope":"static","options":[],"locus":"Anywhere"},"Meteor.apply":{"memberof":"Meteor","summary":"Invoke a method passing an array of arguments.","params":[{"type":{"names":["String"]},"description":"

Name of method to invoke

","name":"name"},{"type":{"names":["Array."]},"description":"

Method arguments

","name":"args"},{"type":{"names":["Object"]},"optional":true,"name":"options"},{"type":{"names":["function"]},"optional":true,"description":"

Optional callback; same semantics as in Meteor.call.

","name":"asyncCallback"}],"name":"apply","longname":"Meteor.apply","kind":"function","scope":"static","options":[{"type":{"names":["Boolean"]},"description":"

(Client only) If true, don't send this method until all previous method calls have completed, and don't send any subsequent method calls until this one is completed.

","name":"wait"},{"type":{"names":["function"]},"description":"

(Client only) This callback is invoked with the error or result of the method (just like asyncCallback) as soon as the error or result is available. The local cache may not yet reflect the writes performed by the method.

","name":"onResultReceived"}],"locus":"Anywhere"},"Meteor.status":{"summary":"Get the current connection status. A reactive data source.","memberof":"Meteor","name":"status","longname":"Meteor.status","kind":"function","scope":"static","options":[],"params":[],"locus":"Client"},"Meteor.reconnect":{"summary":"Force an immediate reconnection attempt if the client is not connected to the server.\n\n This method does nothing if the client is already connected.","memberof":"Meteor","name":"reconnect","longname":"Meteor.reconnect","kind":"function","scope":"static","options":[],"params":[],"locus":"Client"},"Meteor.disconnect":{"summary":"Disconnect the client from the server.","memberof":"Meteor","name":"disconnect","longname":"Meteor.disconnect","kind":"function","scope":"static","options":[],"params":[],"locus":"Client"},"DDP.connect":{"summary":"Connect to the server of a different Meteor application to subscribe to its document sets and invoke its remote methods.","params":[{"type":{"names":["String"]},"description":"

The URL of another Meteor application.

","name":"url"}],"name":"connect","longname":"DDP.connect","kind":"function","memberof":"DDP","scope":"static","options":[],"locus":"Anywhere"},"Subscription#error":{"summary":"Call inside the publish function. Stops this client's subscription, triggering a call on the client to the `onError` callback passed to [`Meteor.subscribe`](#meteor_subscribe), if any. If `error` is not a [`Meteor.Error`](#meteor_error), it will be [sanitized](#meteor_error).","params":[{"type":{"names":["Error"]},"description":"

The error to pass to the client.

","name":"error"}],"scope":"instance","memberof":"Subscription","name":"error","longname":"Subscription#error","kind":"function","options":[],"locus":"Server"},"Subscription#stop":{"summary":"Call inside the publish function. Stops this client's subscription; the `onError` callback is *not* invoked on the client.","scope":"instance","memberof":"Subscription","name":"stop","longname":"Subscription#stop","kind":"function","options":[],"params":[],"locus":"Server"},"Subscription#onStop":{"summary":"Call inside the publish function. Registers a callback function to run when the subscription is stopped.","memberof":"Subscription","scope":"instance","params":[{"type":{"names":["function"]},"description":"

The callback function

","name":"func"}],"name":"onStop","longname":"Subscription#onStop","kind":"function","options":[],"locus":"Server"},"Subscription#added":{"summary":"Call inside the publish function. Informs the subscriber that a document has been added to the record set.","memberof":"Subscription","scope":"instance","params":[{"type":{"names":["String"]},"description":"

The name of the collection that contains the new document.

","name":"collection"},{"type":{"names":["String"]},"description":"

The new document's ID.

","name":"id"},{"type":{"names":["Object"]},"description":"

The fields in the new document. If _id is present it is ignored.

","name":"fields"}],"name":"added","longname":"Subscription#added","kind":"function","options":[],"locus":"Server"},"Subscription#changed":{"summary":"Call inside the publish function. Informs the subscriber that a document in the record set has been modified.","memberof":"Subscription","scope":"instance","params":[{"type":{"names":["String"]},"description":"

The name of the collection that contains the changed document.

","name":"collection"},{"type":{"names":["String"]},"description":"

The changed document's ID.

","name":"id"},{"type":{"names":["Object"]},"description":"

The fields in the document that have changed, together with their new values. If a field is not present in fields it was left unchanged; if it is present in fields and has a value of undefined it was removed from the document. If _id is present it is ignored.

","name":"fields"}],"name":"changed","longname":"Subscription#changed","kind":"function","options":[],"locus":"Server"},"Subscription#removed":{"summary":"Call inside the publish function. Informs the subscriber that a document has been removed from the record set.","memberof":"Subscription","scope":"instance","params":[{"type":{"names":["String"]},"description":"

The name of the collection that the document has been removed from.

","name":"collection"},{"type":{"names":["String"]},"description":"

The ID of the document that has been removed.

","name":"id"}],"name":"removed","longname":"Subscription#removed","kind":"function","options":[],"locus":"Server"},"Subscription#ready":{"summary":"Call inside the publish function. Informs the subscriber that an initial, complete snapshot of the record set has been sent. This will trigger a call on the client to the `onReady` callback passed to [`Meteor.subscribe`](#meteor_subscribe), if any.","memberof":"Subscription","scope":"instance","name":"ready","longname":"Subscription#ready","kind":"function","options":[],"params":[],"locus":"Server"},"Meteor.onConnection":{"summary":"Register a callback to be called when a new DDP connection is made to the server.","params":[{"type":{"names":["function"]},"description":"

The function to call when a new DDP connection is established.

","name":"callback"}],"memberof":"Meteor","name":"onConnection","longname":"Meteor.onConnection","kind":"function","scope":"static","options":[],"locus":"Server"},"Meteor.publish":{"summary":"Publish a record set.","memberof":"Meteor","params":[{"type":{"names":["String"]},"description":"

Name of the record set. If null, the set has no name, and the record set is automatically sent to all connected clients.

","name":"name"},{"type":{"names":["function"]},"description":"

Function called on the server each time a client subscribes. Inside the function, this is the publish handler object, described below. If the client passed arguments to subscribe, the function is called with the same arguments.

","name":"func"}],"name":"publish","longname":"Meteor.publish","kind":"function","scope":"static","options":[],"locus":"Server"},"Meteor.methods":{"summary":"Defines functions that can be invoked over the network by clients.","params":[{"type":{"names":["Object"]},"description":"

Dictionary whose keys are method names and values are functions.

","name":"methods"}],"memberof":"Meteor","name":"methods","longname":"Meteor.methods","kind":"function","scope":"static","options":[],"locus":"Anywhere"},"EJSON.CustomType#typeName":{"kind":"function","name":"typeName","memberof":"EJSON.CustomType","summary":"Return the tag used to identify this type. This must match the tag used to register this type with [`EJSON.addType`](#ejson_add_type).","scope":"instance","longname":"EJSON.CustomType#typeName","options":[],"params":[],"locus":"Anywhere"},"EJSON.CustomType#toJSONValue":{"kind":"function","name":"toJSONValue","memberof":"EJSON.CustomType","summary":"Serialize this instance into a JSON-compatible value.","scope":"instance","longname":"EJSON.CustomType#toJSONValue","options":[],"params":[],"locus":"Anywhere"},"EJSON.CustomType#clone":{"kind":"function","name":"clone","memberof":"EJSON.CustomType","summary":"Return a value `r` such that `this.equals(r)` is true, and modifications to `r` do not affect `this` and vice versa.","scope":"instance","longname":"EJSON.CustomType#clone","options":[],"params":[],"locus":"Anywhere"},"EJSON.CustomType#equals":{"kind":"function","name":"equals","memberof":"EJSON.CustomType","summary":"Return `true` if `other` has a value equal to `this`; `false` otherwise.","params":[{"type":{"names":["Object"]},"description":"

Another object to compare this to.

","name":"other"}],"scope":"instance","longname":"EJSON.CustomType#equals","options":[],"locus":"Anywhere"},"EJSON.addType":{"summary":"Add a custom datatype to EJSON.","params":[{"type":{"names":["String"]},"description":"

A tag for your custom type; must be unique among custom data types defined in your project, and must match the result of your type's typeName method.

","name":"name"},{"type":{"names":["function"]},"description":"

A function that deserializes a JSON-compatible value into an instance of your type. This should match the serialization performed by your type's toJSONValue method.

","name":"factory"}],"name":"addType","longname":"EJSON.addType","kind":"function","memberof":"EJSON","scope":"static","options":[],"locus":"Anywhere"},"EJSON.toJSONValue":{"summary":"Serialize an EJSON-compatible value into its plain JSON representation.","params":[{"type":{"names":["EJSON"]},"description":"

A value to serialize to plain JSON.

","name":"val"}],"name":"toJSONValue","longname":"EJSON.toJSONValue","kind":"function","memberof":"EJSON","scope":"static","options":[],"locus":"Anywhere"},"EJSON.fromJSONValue":{"summary":"Deserialize an EJSON value from its plain JSON representation.","params":[{"type":{"names":["JSONCompatible"]},"description":"

A value to deserialize into EJSON.

","name":"val"}],"name":"fromJSONValue","longname":"EJSON.fromJSONValue","kind":"function","memberof":"EJSON","scope":"static","options":[],"locus":"Anywhere"},"EJSON.stringify":{"summary":"Serialize a value to a string.\n\nFor EJSON values, the serialization fully represents the value. For non-EJSON values, serializes the same way as `JSON.stringify`.","params":[{"type":{"names":["EJSON"]},"description":"

A value to stringify.

","name":"val"},{"type":{"names":["Object"]},"optional":true,"name":"options"}],"name":"stringify","longname":"EJSON.stringify","kind":"function","memberof":"EJSON","scope":"static","options":[{"type":{"names":["Boolean","Integer","String"]},"description":"

Indents objects and arrays for easy readability. When true, indents by 2 spaces; when an integer, indents by that number of spaces; and when a string, uses the string as the indentation pattern.

","name":"indent"},{"type":{"names":["Boolean"]},"description":"

When true, stringifies keys in an object in sorted order.

","name":"canonical"}],"locus":"Anywhere"},"EJSON.parse":{"summary":"Parse a string into an EJSON value. Throws an error if the string is not valid EJSON.","params":[{"type":{"names":["String"]},"description":"

A string to parse into an EJSON value.

","name":"str"}],"name":"parse","longname":"EJSON.parse","kind":"function","memberof":"EJSON","scope":"static","options":[],"locus":"Anywhere"},"EJSON.isBinary":{"summary":"Returns true if `x` is a buffer of binary data, as returned from [`EJSON.newBinary`](#ejson_new_binary).","params":[{"type":{"names":["Object"]},"description":"

The variable to check.

","name":"x"}],"name":"isBinary","longname":"EJSON.isBinary","kind":"function","memberof":"EJSON","scope":"static","options":[],"locus":"Anywhere"},"EJSON.equals":{"summary":"Return true if `a` and `b` are equal to each other. Return false otherwise. Uses the `equals` method on `a` if present, otherwise performs a deep comparison.","params":[{"type":{"names":["EJSON"]},"name":"a"},{"type":{"names":["EJSON"]},"name":"b"},{"type":{"names":["Object"]},"optional":true,"name":"options"}],"name":"equals","longname":"EJSON.equals","kind":"function","memberof":"EJSON","scope":"static","options":[{"type":{"names":["Boolean"]},"description":"

Compare in key sensitive order, if supported by the JavaScript implementation. For example, {a: 1, b: 2} is equal to {b: 2, a: 1} only when keyOrderSensitive is false. The default is false.

","name":"keyOrderSensitive"}],"locus":"Anywhere"},"EJSON.clone":{"summary":"Return a deep copy of `val`.","params":[{"type":{"names":["EJSON"]},"description":"

A value to copy.

","name":"val"}],"name":"clone","longname":"EJSON.clone","kind":"function","memberof":"EJSON","scope":"static","options":[],"locus":"Anywhere"},"Email.send":{"summary":"Send an email. Throws an `Error` on failure to contact mail server\nor if mail server returns an error. All fields should match\n[RFC5322](http://tools.ietf.org/html/rfc5322) specification.","params":[{"type":{"names":["Object"]},"name":"options"}],"name":"send","longname":"Email.send","kind":"function","memberof":"Email","scope":"static","options":[{"type":{"names":["String"]},"description":"

"From:" address (required)

","name":"from"},{"type":{"names":["String","Array."]},"description":"

"To:", "Cc:", "Bcc:", and "Reply-To:" addresses

","name":"to, cc, bcc, replyTo"},{"type":{"names":["String"]},"optional":true,"description":"

"Subject:" line

","name":"subject"},{"type":{"names":["String"]},"optional":true,"description":"

Mail body (in plain text or HTML)

","name":"text, html"},{"type":{"names":["Object"]},"optional":true,"description":"

Dictionary of custom headers

","name":"headers"}],"locus":"Server"},"HTTP.call":{"summary":"Perform an outbound HTTP request.","params":[{"type":{"names":["String"]},"description":"

The HTTP method to use, such as "GET", "POST", or "HEAD".

","name":"method"},{"type":{"names":["String"]},"description":"

The URL to retrieve.

","name":"url"},{"type":{"names":["Object"]},"optional":true,"name":"options"},{"type":{"names":["function"]},"optional":true,"description":"

Optional callback. If passed, the method runs asynchronously, instead of synchronously, and calls asyncCallback. On the client, this callback is required.

","name":"asyncCallback"}],"name":"call","longname":"HTTP.call","kind":"function","memberof":"HTTP","scope":"static","options":[{"type":{"names":["String"]},"description":"

String to use as the HTTP request body.

","name":"content"},{"type":{"names":["Object"]},"description":"

JSON-able object to stringify and use as the HTTP request body. Overwrites content.

","name":"data"},{"type":{"names":["String"]},"description":"

Query string to go in the URL. Overwrites any query string in url.

","name":"query"},{"type":{"names":["Object"]},"description":"

Dictionary of request parameters to be encoded and placed in the URL (for GETs) or request body (for POSTs). If content or data is specified, params will always be placed in the URL.

","name":"params"},{"type":{"names":["String"]},"description":"

HTTP basic authentication string of the form "username:password"

","name":"auth"},{"type":{"names":["Object"]},"description":"

Dictionary of strings, headers to add to the HTTP request.

","name":"headers"},{"type":{"names":["Number"]},"description":"

Maximum time in milliseconds to wait for the request before failing. There is no timeout by default.

","name":"timeout"},{"type":{"names":["Boolean"]},"description":"

If true, transparently follow HTTP redirects. Cannot be set to false on the client. Default true.

","name":"followRedirects"}],"locus":"Anywhere"},"HTTP.get":{"summary":"Send an HTTP `GET` request. Equivalent to calling [`HTTP.call`](#http_call) with \"GET\" as the first argument.","params":[{"type":{"names":["String"]},"description":"

The URL to which the request should be sent.

","name":"url"},{"type":{"names":["Object"]},"optional":true,"description":"

Options passed on to HTTP.call.

","name":"callOptions"},{"type":{"names":["function"]},"optional":true,"description":"

Callback that is called when the request is completed. Required on the client.

","name":"asyncCallback"}],"name":"get","longname":"HTTP.get","kind":"function","memberof":"HTTP","scope":"static","options":[],"locus":"Anywhere"},"HTTP.post":{"summary":"Send an HTTP `POST` request. Equivalent to calling [`HTTP.call`](#http_call) with \"POST\" as the first argument.","params":[{"type":{"names":["String"]},"description":"

The URL to which the request should be sent.

","name":"url"},{"type":{"names":["Object"]},"optional":true,"description":"

Options passed on to HTTP.call.

","name":"callOptions"},{"type":{"names":["function"]},"optional":true,"description":"

Callback that is called when the request is completed. Required on the client.

","name":"asyncCallback"}],"name":"post","longname":"HTTP.post","kind":"function","memberof":"HTTP","scope":"static","options":[],"locus":"Anywhere"},"HTTP.put":{"summary":"Send an HTTP `PUT` request. Equivalent to calling [`HTTP.call`](#http_call) with \"PUT\" as the first argument.","params":[{"type":{"names":["String"]},"description":"

The URL to which the request should be sent.

","name":"url"},{"type":{"names":["Object"]},"optional":true,"description":"

Options passed on to HTTP.call.

","name":"callOptions"},{"type":{"names":["function"]},"optional":true,"description":"

Callback that is called when the request is completed. Required on the client.

","name":"asyncCallback"}],"name":"put","longname":"HTTP.put","kind":"function","memberof":"HTTP","scope":"static","options":[],"locus":"Anywhere"},"HTTP.del":{"summary":"Send an HTTP `DELETE` request. Equivalent to calling [`HTTP.call`](#http_call) with \"DELETE\" as the first argument. (Named `del` to avoid conflic with the Javascript keyword `delete`)","params":[{"type":{"names":["String"]},"description":"

The URL to which the request should be sent.

","name":"url"},{"type":{"names":["Object"]},"optional":true,"description":"

Options passed on to HTTP.call.

","name":"callOptions"},{"type":{"names":["function"]},"optional":true,"description":"

Callback that is called when the request is completed. Required on the client.

","name":"asyncCallback"}],"name":"del","longname":"HTTP.del","kind":"function","memberof":"HTTP","scope":"static","options":[],"locus":"Anywhere"},"Meteor.wrapAsync":{"memberof":"Meteor","summary":"Wrap a function that takes a callback function as its final parameter. On the server, the wrapped function can be used either synchronously (without passing a callback) or asynchronously (when a callback is passed). On the client, a callback is always required; errors will be logged if there is no callback. If a callback is provided, the environment captured when the original function was called will be restored in the callback.","params":[{"type":{"names":["function"]},"description":"

A function that takes a callback as its final parameter

","name":"func"},{"type":{"names":["Object"]},"optional":true,"description":"

Optional this object against which the original function will be invoked

","name":"context"}],"name":"wrapAsync","longname":"Meteor.wrapAsync","kind":"function","scope":"static","options":[],"locus":"Anywhere"},"Meteor.startup":{"summary":"Run code when a client or a server starts.","params":[{"type":{"names":["function"]},"description":"

A function to run on startup.

","name":"func"}],"name":"startup","longname":"Meteor.startup","kind":"function","memberof":"Meteor","scope":"static","options":[],"locus":"Anywhere"},"Meteor.setTimeout":{"memberof":"Meteor","summary":"Call a function in the future after waiting for a specified delay.","params":[{"type":{"names":["function"]},"description":"

The function to run

","name":"func"},{"type":{"names":["Number"]},"description":"

Number of milliseconds to wait before calling function

","name":"delay"}],"name":"setTimeout","longname":"Meteor.setTimeout","kind":"function","scope":"static","options":[],"locus":"Anywhere"},"Meteor.setInterval":{"memberof":"Meteor","summary":"Call a function repeatedly, with a time delay between calls.","params":[{"type":{"names":["function"]},"description":"

The function to run

","name":"func"},{"type":{"names":["Number"]},"description":"

Number of milliseconds to wait between each function call.

","name":"delay"}],"name":"setInterval","longname":"Meteor.setInterval","kind":"function","scope":"static","options":[],"locus":"Anywhere"},"Meteor.clearInterval":{"memberof":"Meteor","summary":"Cancel a repeating function call scheduled by `Meteor.setInterval`.","params":[{"type":{"names":["Number"]},"description":"

The handle returned by Meteor.setInterval

","name":"id"}],"name":"clearInterval","longname":"Meteor.clearInterval","kind":"function","scope":"static","options":[],"locus":"Anywhere"},"Meteor.clearTimeout":{"memberof":"Meteor","summary":"Cancel a function call scheduled by `Meteor.setTimeout`.","params":[{"type":{"names":["Number"]},"description":"

The handle returned by Meteor.setTimeout

","name":"id"}],"name":"clearTimeout","longname":"Meteor.clearTimeout","kind":"function","scope":"static","options":[],"locus":"Anywhere"},"Meteor.absoluteUrl":{"summary":"Generate an absolute URL pointing to the application. The server reads from the `ROOT_URL` environment variable to determine where it is running. This is taken care of automatically for apps deployed with `meteor deploy`, but must be provided when using `meteor build`.","params":[{"type":{"names":["String"]},"optional":true,"description":"

A path to append to the root URL. Do not include a leading "/".

","name":"path"},{"type":{"names":["Object"]},"optional":true,"name":"options"}],"name":"absoluteUrl","longname":"Meteor.absoluteUrl","kind":"function","memberof":"Meteor","scope":"static","options":[{"type":{"names":["Boolean"]},"description":"

Create an HTTPS URL.

","name":"secure"},{"type":{"names":["Boolean"]},"description":"

Replace localhost with 127.0.0.1. Useful for services that don't recognize localhost as a domain name.

","name":"replaceLocalhost"},{"type":{"names":["String"]},"description":"

Override the default ROOT_URL from the server environment. For example: "http://foo.example.com"

","name":"rootUrl"}],"locus":"Anywhere"},"Mongo.Cursor#forEach":{"summary":"Call `callback` once for each matching document, sequentially and synchronously.","kind":"function","name":"forEach","scope":"instance","memberof":"Mongo.Cursor","params":[{"type":{"names":["function"]},"description":"

Function to call. It will be called with three arguments: the document, a 0-based index, and cursor itself.

","name":"callback"},{"type":{"names":["Any"]},"optional":true,"description":"

An object which will be the value of this inside callback.

","name":"thisArg"}],"longname":"Mongo.Cursor#forEach","options":[],"locus":"Anywhere"},"Mongo.Cursor#map":{"summary":"Map callback over all matching documents. Returns an Array.","kind":"function","name":"map","scope":"instance","memberof":"Mongo.Cursor","params":[{"type":{"names":["function"]},"description":"

Function to call. It will be called with three arguments: the document, a 0-based index, and cursor itself.

","name":"callback"},{"type":{"names":["Any"]},"optional":true,"description":"

An object which will be the value of this inside callback.

","name":"thisArg"}],"longname":"Mongo.Cursor#map","options":[],"locus":"Anywhere"},"Mongo.Cursor#fetch":{"summary":"Return all matching documents as an Array.","memberof":"Mongo.Cursor","kind":"function","name":"fetch","scope":"instance","returns":[{"type":{"names":["Array."]}}],"longname":"Mongo.Cursor#fetch","options":[],"params":[],"locus":"Anywhere"},"Mongo.Cursor#count":{"summary":"Returns the number of documents that match a query.","memberof":"Mongo.Cursor","kind":"function","name":"count","scope":"instance","longname":"Mongo.Cursor#count","options":[],"params":[],"locus":"Anywhere"},"Mongo.Cursor#observe":{"summary":"Watch a query. Receive callbacks as the result set changes.","memberof":"Mongo.Cursor","scope":"instance","params":[{"type":{"names":["Object"]},"description":"

Functions to call to deliver the result set as it changes

","name":"callbacks"}],"name":"observe","longname":"Mongo.Cursor#observe","kind":"function","options":[],"locus":"Anywhere"},"Mongo.Cursor#observeChanges":{"summary":"Watch a query. Receive callbacks as the result set changes. Only the differences between the old and new documents are passed to the callbacks.","memberof":"Mongo.Cursor","scope":"instance","params":[{"type":{"names":["Object"]},"description":"

Functions to call to deliver the result set as it changes

","name":"callbacks"}],"name":"observeChanges","longname":"Mongo.Cursor#observeChanges","kind":"function","options":[],"locus":"Anywhere"},"Mongo.Collection#insert":{"summary":"Insert a document in the collection. Returns its unique _id.","kind":"function","name":"insert","memberof":"Mongo.Collection","scope":"instance","params":[{"type":{"names":["Object"]},"description":"

The document to insert. May not yet have an _id attribute, in which case Meteor will generate one for you.

","name":"doc"},{"type":{"names":["function"]},"optional":true,"description":"

Optional. If present, called with an error object as the first argument and, if no error, the _id as the second.

","name":"callback"}],"longname":"Mongo.Collection#insert","options":[],"locus":"Anywhere"},"Mongo.Collection#update":{"summary":"Modify one or more documents in the collection. Returns the number of affected documents.","kind":"function","name":"update","memberof":"Mongo.Collection","scope":"instance","params":[{"type":{"names":["MongoSelector"]},"description":"

Specifies which documents to modify

","name":"selector"},{"type":{"names":["MongoModifier"]},"description":"

Specifies how to modify the documents

","name":"modifier"},{"type":{"names":["Object"]},"optional":true,"name":"options"},{"type":{"names":["function"]},"optional":true,"description":"

Optional. If present, called with an error object as the first argument and, if no error, the number of affected documents as the second.

","name":"callback"}],"longname":"Mongo.Collection#update","options":[{"type":{"names":["Boolean"]},"description":"

True to modify all matching documents; false to only modify one of the matching documents (the default).

","name":"multi"},{"type":{"names":["Boolean"]},"description":"

True to insert a document if no matching documents are found.

","name":"upsert"}],"locus":"Anywhere"},"Mongo.Collection#find":{"summary":"Find the documents in a collection that match the selector.","kind":"function","name":"find","memberof":"Mongo.Collection","scope":"instance","params":[{"type":{"names":["MongoSelector"]},"optional":true,"description":"

A query describing the documents to find

","name":"selector"},{"type":{"names":["Object"]},"optional":true,"name":"options"}],"returns":[{"type":{"names":["Mongo.Cursor"]}}],"longname":"Mongo.Collection#find","options":[{"type":{"names":["MongoSortSpecifier"]},"description":"

Sort order (default: natural order)

","name":"sort"},{"type":{"names":["Number"]},"description":"

Number of results to skip at the beginning

","name":"skip"},{"type":{"names":["Number"]},"description":"

Maximum number of results to return

","name":"limit"},{"type":{"names":["MongoFieldSpecifier"]},"description":"

Dictionary of fields to return or exclude.

","name":"fields"},{"type":{"names":["Boolean"]},"description":"

(Client only) Default true; pass false to disable reactivity

","name":"reactive"},{"type":{"names":["function"]},"description":"

Overrides transform on the Collection for this cursor. Pass null to disable transformation.

","name":"transform"}],"locus":"Anywhere"},"Mongo.Collection#findOne":{"summary":"Finds the first document that matches the selector, as ordered by sort and skip options.","kind":"function","name":"findOne","memberof":"Mongo.Collection","scope":"instance","params":[{"type":{"names":["MongoSelector"]},"optional":true,"description":"

A query describing the documents to find

","name":"selector"},{"type":{"names":["Object"]},"optional":true,"name":"options"}],"returns":[{"type":{"names":["Object"]}}],"longname":"Mongo.Collection#findOne","options":[{"type":{"names":["MongoSortSpecifier"]},"description":"

Sort order (default: natural order)

","name":"sort"},{"type":{"names":["Number"]},"description":"

Number of results to skip at the beginning

","name":"skip"},{"type":{"names":["MongoFieldSpecifier"]},"description":"

Dictionary of fields to return or exclude.

","name":"fields"},{"type":{"names":["Boolean"]},"description":"

(Client only) Default true; pass false to disable reactivity

","name":"reactive"},{"type":{"names":["function"]},"description":"

Overrides transform on the Collection for this cursor. Pass null to disable transformation.

","name":"transform"}],"locus":"Anywhere"},"Mongo.Collection#remove":{"summary":"Remove documents from the collection","kind":"function","name":"remove","memberof":"Mongo.Collection","scope":"instance","params":[{"type":{"names":["MongoSelector"]},"description":"

Specifies which documents to remove

","name":"selector"},{"type":{"names":["function"]},"optional":true,"description":"

Optional. If present, called with an error object as its argument.

","name":"callback"}],"longname":"Mongo.Collection#remove","options":[],"locus":"Anywhere"},"Mongo.Collection#upsert":{"summary":"Modify one or more documents in the collection, or insert one if no matching documents were found. Returns an object with keys `numberAffected` (the number of documents modified) and `insertedId` (the unique _id of the document that was inserted, if any).","params":[{"type":{"names":["MongoSelector"]},"description":"

Specifies which documents to modify

","name":"selector"},{"type":{"names":["MongoModifier"]},"description":"

Specifies how to modify the documents

","name":"modifier"},{"type":{"names":["Object"]},"optional":true,"name":"options"},{"type":{"names":["function"]},"optional":true,"description":"

Optional. If present, called with an error object as the first argument and, if no error, the number of affected documents as the second.

","name":"callback"}],"name":"upsert","longname":"Mongo.Collection#upsert","kind":"function","memberof":"Mongo.Collection","scope":"instance","options":[{"type":{"names":["Boolean"]},"description":"

True to modify all matching documents; false to only modify one of the matching documents (the default).

","name":"multi"}],"locus":"Anywhere"},"Mongo.Collection#allow":{"summary":"Allow users to write directly to this collection from client code, subject to limitations you define.","params":[{"type":{"names":["Object"]},"name":"options"}],"name":"allow","longname":"Mongo.Collection#allow","kind":"function","memberof":"Mongo.Collection","scope":"instance","options":[{"type":{"names":["function"]},"description":"

Functions that look at a proposed modification to the database and return true if it should be allowed.

","name":"insert, update, remove"},{"type":{"names":["Array."]},"description":"

Optional performance enhancement. Limits the fields that will be fetched from the database for inspection by your update and remove functions.

","name":"fetch"},{"type":{"names":["function"]},"description":"

Overrides transform on the Collection. Pass null to disable transformation.

","name":"transform"}],"locus":"Server"},"Mongo.Collection#deny":{"summary":"Override `allow` rules.","params":[{"type":{"names":["Object"]},"name":"options"}],"name":"deny","longname":"Mongo.Collection#deny","kind":"function","memberof":"Mongo.Collection","scope":"instance","options":[{"type":{"names":["function"]},"description":"

Functions that look at a proposed modification to the database and return true if it should be denied, even if an allow rule says otherwise.

","name":"insert, update, remove"},{"type":{"names":["Array."]},"description":"

Optional performance enhancement. Limits the fields that will be fetched from the database for inspection by your update and remove functions.

","name":"fetch"},{"type":{"names":["function"]},"description":"

Overrides transform on the Collection. Pass null to disable transformation.

","name":"transform"}],"locus":"Server"},"ReactiveVar#get":{"summary":"Returns the current value of the ReactiveVar, establishing a reactive dependency.","name":"get","longname":"ReactiveVar#get","kind":"function","memberof":"ReactiveVar","scope":"instance","options":[],"params":[],"locus":"Client"},"ReactiveVar#set":{"summary":"Sets the current value of the ReactiveVar, invalidating the Computations that called `get` if `newValue` is different from the old value.","params":[{"type":{"names":["Any"]},"name":"newValue"}],"name":"set","longname":"ReactiveVar#set","kind":"function","memberof":"ReactiveVar","scope":"instance","options":[],"locus":"Client"},"Session.set":{"memberof":"Session","kind":"function","name":"set","summary":"Set a variable in the session. Notify any listeners that the value has changed (eg: redraw templates, and rerun any [`Tracker.autorun`](#tracker_autorun) computations, that called [`Session.get`](#session_get) on this `key`.)","params":[{"type":{"names":["String"]},"description":"

The key to set, eg, selectedItem

","name":"key"},{"type":{"names":["EJSONable","undefined"]},"description":"

The new value for key

","name":"value"}],"scope":"static","longname":"Session.set","options":[],"locus":"Client"},"Session.setDefault":{"memberof":"Session","kind":"function","name":"setDefault","summary":"Set a variable in the session if it hasn't been set before. Otherwise works exactly the same as [`Session.set`](#session_set).","params":[{"type":{"names":["String"]},"description":"

The key to set, eg, selectedItem

","name":"key"},{"type":{"names":["EJSONable","undefined"]},"description":"

The new value for key

","name":"value"}],"scope":"static","longname":"Session.setDefault","options":[],"locus":"Client"},"Session.get":{"memberof":"Session","kind":"function","name":"get","summary":"Get the value of a session variable. If inside a [reactive computation](#reactivity), invalidate the computation the next time the value of the variable is changed by [`Session.set`](#session_set). This returns a clone of the session value, so if it's an object or an array, mutating the returned value has no effect on the value stored in the session.","params":[{"type":{"names":["String"]},"description":"

The name of the session variable to return

","name":"key"}],"scope":"static","longname":"Session.get","options":[],"locus":"Client"},"Session.equals":{"memberof":"Session","kind":"function","name":"equals","summary":"Test if a session variable is equal to a value. If inside a [reactive computation](#reactivity), invalidate the computation the next time the variable changes to or from the value.","params":[{"type":{"names":["String"]},"description":"

The name of the session variable to test

","name":"key"},{"type":{"names":["String","Number","Boolean","null","undefined"]},"description":"

The value to test against

","name":"value"}],"scope":"static","longname":"Session.equals","options":[],"locus":"Client"},"Template.dynamic":{"memberof":"Template","kind":"function","name":"dynamic","summary":"Choose a template to include dynamically, by name.","params":[{"type":{"names":["String"]},"description":"

The name of the template to include.

","name":"template"},{"type":{"names":["Object"]},"optional":true,"description":"

Optional. The data context in which to include the template.

","name":"data"}],"scope":"static","longname":"Template.dynamic","options":[],"istemplate":"true","locus":"Templates"},"Tracker.Computation":{"summary":"A Computation object represents code that is repeatedly rerun\nin response to\nreactive data changes. Computations don't have return values; they just\nperform actions, such as rerendering a template on the screen. Computations\nare created using Tracker.autorun. Use stop to prevent further rerunning of a\ncomputation.","name":"Computation","longname":"Tracker.Computation","kind":"function","memberof":"Tracker","scope":"static","options":[],"params":[],"instancename":"computation"},"Tracker.Computation#onInvalidate":{"summary":"Registers `callback` to run when this computation is next invalidated, or runs it immediately if the computation is already invalidated. The callback is run exactly once and not upon future invalidations unless `onInvalidate` is called again after the computation becomes valid again.","params":[{"type":{"names":["function"]},"description":"

Function to be called on invalidation. Receives one argument, the computation that was invalidated.

","name":"callback"}],"name":"onInvalidate","longname":"Tracker.Computation#onInvalidate","kind":"function","memberof":"Tracker.Computation","scope":"instance","options":[],"locus":"Client"},"Tracker.Computation#invalidate":{"summary":"Invalidates this computation so that it will be rerun.","name":"invalidate","longname":"Tracker.Computation#invalidate","kind":"function","memberof":"Tracker.Computation","scope":"instance","options":[],"params":[],"locus":"Client"},"Tracker.Computation#stop":{"summary":"Prevents this computation from rerunning.","name":"stop","longname":"Tracker.Computation#stop","kind":"function","memberof":"Tracker.Computation","scope":"instance","options":[],"params":[],"locus":"Client"},"Tracker.Dependency#depend":{"summary":"Declares that the current computation (or `fromComputation` if given) depends on `dependency`. The computation will be invalidated the next time `dependency` changes.\n\nIf there is no current computation and `depend()` is called with no arguments, it does nothing and returns false.\n\nReturns true if the computation is a new dependent of `dependency` rather than an existing one.","params":[{"type":{"names":["Tracker.Computation"]},"optional":true,"description":"

An optional computation declared to depend on dependency instead of the current computation.

","name":"fromComputation"}],"returns":[{"type":{"names":["Boolean"]}}],"name":"depend","longname":"Tracker.Dependency#depend","kind":"function","memberof":"Tracker.Dependency","scope":"instance","options":[],"locus":"Client"},"Tracker.Dependency#changed":{"summary":"Invalidate all dependent computations immediately and remove them as dependents.","name":"changed","longname":"Tracker.Dependency#changed","kind":"function","memberof":"Tracker.Dependency","scope":"instance","options":[],"params":[],"locus":"Client"},"Tracker.Dependency#hasDependents":{"summary":"True if this Dependency has one or more dependent Computations, which would be invalidated if this Dependency were to change.","returns":[{"type":{"names":["Boolean"]}}],"name":"hasDependents","longname":"Tracker.Dependency#hasDependents","kind":"function","memberof":"Tracker.Dependency","scope":"instance","options":[],"params":[],"locus":"Client"},"Tracker.flush":{"summary":"Process all reactive updates immediately and ensure that all invalidated computations are rerun.","name":"flush","longname":"Tracker.flush","kind":"function","memberof":"Tracker","scope":"static","options":[],"params":[],"locus":"Client"},"Tracker.autorun":{"summary":"Run a function now and rerun it later whenever its dependencies change. Returns a Computation object that can be used to stop or observe the rerunning.","params":[{"type":{"names":["function"]},"description":"

The function to run. It receives one argument: the Computation object that will be returned.

","name":"runFunc"}],"returns":[{"type":{"names":["Tracker.Computation"]}}],"name":"autorun","longname":"Tracker.autorun","kind":"function","memberof":"Tracker","scope":"static","options":[],"locus":"Client"},"Tracker.nonreactive":{"summary":"Run a function without tracking dependencies.","params":[{"type":{"names":["function"]},"description":"

A function to call immediately.

","name":"func"}],"name":"nonreactive","longname":"Tracker.nonreactive","kind":"function","memberof":"Tracker","scope":"static","options":[],"locus":"Client"},"Tracker.onInvalidate":{"summary":"Registers a new [`onInvalidate`](#computation_oninvalidate) callback on the current computation (which must exist), to be called immediately when the current computation is invalidated or stopped.","params":[{"type":{"names":["function"]},"description":"

A callback function that will be invoked as func(c), where c is the computation on which the callback is registered.

","name":"callback"}],"name":"onInvalidate","longname":"Tracker.onInvalidate","kind":"function","memberof":"Tracker","scope":"static","options":[],"locus":"Client"},"Tracker.afterFlush":{"summary":"Schedules a function to be called during the next flush, or later in the current flush if one is in progress, after all invalidated computations have been rerun. The function will be run once and not on subsequent flushes unless `afterFlush` is called again.","params":[{"type":{"names":["function"]},"description":"

A function to call at flush time.

","name":"callback"}],"name":"afterFlush","longname":"Tracker.afterFlush","kind":"function","memberof":"Tracker","scope":"static","options":[],"locus":"Client"},"Assets.getText":{"summary":"Retrieve the contents of the static server asset as a UTF8-encoded string.","memberof":"Assets","params":[{"type":{"names":["String"]},"description":"

The path of the asset, relative to the application's private subdirectory.

","name":"assetPath"},{"type":{"names":["function"]},"optional":true,"description":"

Optional callback, which is called asynchronously with the error or result after the function is complete. If not provided, the function runs synchronously.

","name":"asyncCallback"}],"name":"getText","longname":"Assets.getText","kind":"function","scope":"static","options":[],"locus":"Server"},"Assets.getBinary":{"summary":"Retrieve the contents of the static server asset as an [EJSON Binary](#ejson_new_binary).","memberof":"Assets","params":[{"type":{"names":["String"]},"description":"

The path of the asset, relative to the application's private subdirectory.

","name":"assetPath"},{"type":{"names":["function"]},"optional":true,"description":"

Optional callback, which is called asynchronously with the error or result after the function is complete. If not provided, the function runs synchronously.

","name":"asyncCallback"}],"name":"getBinary","longname":"Assets.getBinary","kind":"function","scope":"static","options":[],"locus":"Server"},"App.info":{"summary":"Set your mobile app's core configuration information.","params":[{"type":{"names":["Object"]},"name":"options"}],"memberof":"App","name":"info","longname":"App.info","kind":"function","scope":"static","options":[{"type":{"names":["String"]},"optional":true,"description":"

Each of the options correspond to a key in the app's core configuration\nas described in the PhoneGap documentation.

","name":"id, version, name, description, author, email, website"}]},"App.setPreference":{"summary":"Add a preference for your build as described in the\n[PhoneGap documentation](http://docs.phonegap.com/en/3.5.0/config_ref_index.md.html#The%20config.xml%20File_global_preferences).","params":[{"type":{"names":["String"]},"description":"

A preference name supported by Phonegap's\nconfig.xml.

","name":"name"},{"type":{"names":["String"]},"description":"

The value for that preference.

","name":"value"}],"memberof":"App","name":"setPreference","longname":"App.setPreference","kind":"function","scope":"static","options":[]},"App.configurePlugin":{"summary":"Set the build-time configuration for a Phonegap plugin.","params":[{"type":{"names":["String"]},"description":"

The identifier of the plugin you want to\nconfigure.

","name":"pluginName"},{"type":{"names":["Object"]},"description":"

A set of key-value pairs which will be passed\nat build-time to configure the specified plugin.

","name":"config"}],"memberof":"App","name":"configurePlugin","longname":"App.configurePlugin","kind":"function","scope":"static","options":[]},"App.icons":{"summary":"Set the icons for your mobile app.","params":[{"type":{"names":["Object"]},"description":"

An Object where the keys are different\ndevices and screen sizes, and values are image paths\nrelative to the project root directory.

\n

Valid key values:

\n
    \n
  • iphone
  • \n
  • iphone_2x
  • \n
  • iphone_3x
  • \n
  • ipad
  • \n
  • ipad_2x
  • \n
  • android_ldpi
  • \n
  • android_mdpi
  • \n
  • android_hdpi
  • \n
  • android_xhdpi
  • \n
","name":"icons"}],"memberof":"App","name":"icons","longname":"App.icons","kind":"function","scope":"static","options":[]},"App.launchScreens":{"summary":"Set the launch screen images for your mobile app.","params":[{"type":{"names":["Object"]},"description":"

A dictionary where keys are different\ndevices, screen sizes, and orientations, and the values are image paths\nrelative to the project root directory.

\n

For Android, launch screen images should\nbe special "Nine-patch" image files that specify how they should be\nstretched. See the Android docs.

\n

Valid key values:

\n
    \n
  • iphone
  • \n
  • iphone_2x
  • \n
  • iphone5
  • \n
  • iphone6
  • \n
  • iphone6p_portrait
  • \n
  • iphone6p_landscape
  • \n
  • ipad_portrait
  • \n
  • ipad_portrait_2x
  • \n
  • ipad_landscape
  • \n
  • ipad_landscape_2x
  • \n
  • android_ldpi_portrait
  • \n
  • android_ldpi_landscape
  • \n
  • android_mdpi_portrait
  • \n
  • android_mdpi_landscape
  • \n
  • android_hdpi_portrait
  • \n
  • android_hdpi_landscape
  • \n
  • android_xhdpi_portrait
  • \n
  • android_xhdpi_landscape
  • \n
","name":"launchScreens"}],"memberof":"App","name":"launchScreens","longname":"App.launchScreens","kind":"function","scope":"static","options":[]},"CompileStep#read":{"summary":"Read from the input file. If `n` is specified, returns the\nnext `n` bytes of the file as a Buffer. XXX not sure if this actually\nreturns a String sometimes...","params":[{"type":{"names":["Integer"]},"optional":true,"description":"

The number of bytes to return.

","name":"n"}],"scope":"instance","memberof":"CompileStep","name":"read","longname":"CompileStep#read","kind":"function","options":[]},"CompileStep#addHtml":{"summary":"Works in web targets only. Add markup to the `head` or `body`\nsection of the document.","params":[{"type":{"names":["Object"]},"name":"options"}],"memberof":"CompileStep","scope":"instance","name":"addHtml","longname":"CompileStep#addHtml","kind":"function","options":[{"type":{"names":["String"]},"description":"

Which section of the document should\nbe appended to. Can only be "head" or "body".

","name":"section"},{"type":{"names":["String"]},"description":"

The content to append.

","name":"data"}]},"CompileStep#addStylesheet":{"summary":"Web targets only. Add a stylesheet to the document.","params":[{"type":{"names":["Object"]},"name":"options"},{"type":{"names":["String"]},"description":"

The requested path for the added CSS, may not be\nsatisfied if there are path conflicts.

","name":"path"},{"type":{"names":["String"]},"description":"

The content of the stylesheet that should be\nadded.

","name":"data"},{"type":{"names":["String"]},"description":"

A stringified JSON sourcemap, in case the\nstylesheet was generated from a different file.

","name":"sourceMap"}],"memberof":"CompileStep","scope":"instance","name":"addStylesheet","longname":"CompileStep#addStylesheet","kind":"function","options":[]},"CompileStep#addJavaScript":{"summary":"Add JavaScript code. The code added will only see the\nnamespaces imported by this package as runtime dependencies using\n['api.use'](#PackageAPI-use). If the file being compiled was added\nwith the bare flag, the resulting JavaScript won't be wrapped in a\nclosure.","params":[{"type":{"names":["Object"]},"name":"options"}],"memberof":"CompileStep","scope":"instance","name":"addJavaScript","longname":"CompileStep#addJavaScript","kind":"function","options":[{"type":{"names":["String"]},"description":"

The path at which the JavaScript file\nshould be inserted, may not be honored in case of path conflicts.

","name":"path"},{"type":{"names":["String"]},"description":"

The code to be added.

","name":"data"},{"type":{"names":["String"]},"description":"

The path that will be used in\nany error messages generated by this file, e.g. foo.js:4:1: error.

","name":"sourcePath"}]},"CompileStep#addAsset":{"summary":"Add a file to serve as-is to the browser or to include on\nthe browser, depending on the target. On the web, it will be served\nat the exact path requested. For server targets, it can be retrieved\nusing `Assets.getText` or `Assets.getBinary`.","params":[{"type":{"names":["Object"]},"name":"options"},{"type":{"names":["String"]},"description":"

The path at which to serve the asset.

","name":"path"},{"type":{"names":["Buffer","String"]},"description":"

The data that should be placed in\nthe file.

","name":"data"}],"memberof":"CompileStep","scope":"instance","name":"addAsset","longname":"CompileStep#addAsset","kind":"function","options":[]},"CompileStep#error":{"summary":"Display a build error.","params":[{"type":{"names":["Object"]},"name":"options"},{"type":{"names":["String"]},"description":"

The error message to display.

","name":"message"},{"type":{"names":["String"]},"optional":true,"description":"

The path to display in the error message.

","name":"sourcePath"},{"type":{"names":["Integer"]},"description":"

The line number to display in the error message.

","name":"line"},{"type":{"names":["String"]},"description":"

The function name to display in the error message.

","name":"func"}],"memberof":"CompileStep","scope":"instance","name":"error","longname":"CompileStep#error","kind":"function","options":[]},"Plugin.registerSourceHandler":{"summary":"Inside a build plugin source file specified in\n[Package.registerBuildPlugin](#Package-registerBuildPlugin),\nadd a handler to compile files with a certain file extension.","params":[{"type":{"names":["String"]},"description":"

The file extension that this plugin\nshould handle, without the first dot.\nExamples: "coffee", "coffee.md".

","name":"fileExtension"},{"type":{"names":["function"]},"description":"

A function that takes one argument,\na CompileStep object.

\n

Documentation for CompileStep is available on the GitHub Wiki.

","name":"handler"}],"memberof":"Plugin","name":"registerSourceHandler","longname":"Plugin.registerSourceHandler","kind":"function","scope":"static","options":[],"locus":"Build Plugin"},"Package.describe":{"summary":"Provide basic package information.","memberof":"Package","params":[{"type":{"names":["Object"]},"name":"options"}],"name":"describe","longname":"Package.describe","kind":"function","scope":"static","options":[{"type":{"names":["String"]},"description":"

A concise 1-2 sentence description of\nthe package, required for publication.

","name":"summary"},{"type":{"names":["String"]},"description":"

The (extended)\nsemver version for your package. Additionally,\nMeteor allows a wrap number: a positive integer that follows the version number. If you are\nporting another package that uses semver versioning, you may want to\nuse the original version, postfixed with _wrapnumber. For example,\n1.2.3_1 or 2.4.5-rc1_4. Wrap numbers sort after the original numbers:\n1.2.3 < 1.2.3_1 < 1.2.3_2 < 1.2.4-rc.0. If no version is specified,\nthis field defaults to 0.0.0. If you want to publish your package to\nthe package server, you must specify a version.

","name":"version"},{"type":{"names":["String"]},"description":"

Optional name override. By default, the\npackage name comes from the name of its directory.

","name":"name"},{"type":{"names":["String"]},"description":"

Optional Git URL to the source repository.

","name":"git"}],"locus":"package.js"},"Package.onUse":{"summary":"Define package dependencies and expose package methods.","memberof":"Package","params":[{"type":{"names":["function"]},"description":"

A function that takes in the package control 'api' object, which keeps track of dependencies and exports.

","name":"func"}],"name":"onUse","longname":"Package.onUse","kind":"function","scope":"static","options":[],"locus":"package.js"},"Package.onTest":{"summary":"Define dependencies and expose package methods for unit tests.","memberof":"Package","params":[{"type":{"names":["function"]},"description":"

A function that takes in the package control 'api' object, which keeps track of dependencies and exports.

","name":"func"}],"name":"onTest","longname":"Package.onTest","kind":"function","scope":"static","options":[],"locus":"package.js"},"Package.registerBuildPlugin":{"summary":"Define a build plugin. A build plugin extends the build\nprocess for apps and packages that use this package. For example,\nthe `coffeescript` package uses a build plugin to compile CoffeeScript\nsource files into JavaScript.","params":[{"type":{"names":["Object"]},"optional":true,"name":"options"}],"memberof":"Package","name":"registerBuildPlugin","longname":"Package.registerBuildPlugin","kind":"function","scope":"static","options":[{"type":{"names":["String"]},"description":"

A cosmetic name, must be unique in the\npackage.

","name":"name"},{"type":{"names":["String","Array."]},"description":"

Meteor packages that this\nplugin uses, independent of the packages specified in\napi.onUse.

","name":"use"},{"type":{"names":["Array."]},"description":"

The source files that make up the\nbuild plugin, independent from api.addFiles.

","name":"sources"},{"type":{"names":["Object"]},"description":"

An object where the keys\nare NPM package names, and the keys are the version numbers of\nrequired NPM packages, just like in Npm.depends.

","name":"npmDependencies"}],"locus":"package.js"},"Npm.depends":{"summary":"Specify which [NPM](https://www.npmjs.org/) packages\nyour Meteor package depends on.","params":[{"type":{"names":["Object"]},"description":"

An object where the keys are package\nnames and the values are version numbers in string form.\nYou can only depend on exact versions of NPM packages. Example:

\n
Npm.depends({moment: "2.8.3"});
","name":"dependencies"}],"memberof":"Npm","name":"depends","longname":"Npm.depends","kind":"function","scope":"static","options":[],"locus":"package.js"},"Cordova.depends":{"summary":"Specify which [Cordova / PhoneGap](http://cordova.apache.org/)\nplugins your Meteor package depends on.\n\nPlugins are installed from\n[plugins.cordova.io](http://plugins.cordova.io/), so the plugins and\nversions specified must exist there. Alternatively, the version\ncan be replaced with a GitHub tarball URL as described in the\n[Cordova / PhoneGap](https://github.com/meteor/meteor/wiki/Meteor-Cordova-Phonegap-integration#meteor-packages-with-cordovaphonegap-dependencies)\npage of the Meteor wiki on GitHub.","params":[{"type":{"names":["Object"]},"description":"

An object where the keys are plugin\nnames and the values are version numbers or GitHub tarball URLs\nin string form.\nExample:

\n
Cordova.depends({\n  "org.apache.cordova.camera": "0.3.0"\n});

Alternatively, with a GitHub URL:

\n
Cordova.depends({\n  "org.apache.cordova.camera":\n    "https://github.com/apache/cordova-plugin-camera/tarball/d84b875c"\n});
","name":"dependencies"}],"memberof":"Cordova","name":"depends","longname":"Cordova.depends","kind":"function","scope":"static","options":[],"locus":"package.js"},"PackageAPI#use":{"memberof":"PackageAPI","scope":"instance","summary":"Depend on package `packagename`.","params":[{"type":{"names":["String","Array."]},"description":"

Packages being depended on.\nPackage names may be suffixed with an @version tag.

\n

In general, you must specify a package's version (e.g.,\n'accounts@1.0.0' to use version 1.0.0 or a higher\ncompatible version (ex: 1.0.1, 1.5.0, etc.) of the\naccounts package). If you are sourcing core\npackages from a Meteor release with versionsFrom, you may leave\noff version names for core packages. You may also specify constraints,\nsuch as my:forms@=1.0.0 (this package demands my:forms at 1.0.0 exactly),\nor my:forms@1.0.0 || =2.0.1 (my:forms at 1.x.y, or exactly 2.0.1).

","name":"packageNames"},{"type":{"names":["String"]},"optional":true,"description":"

If you only use the package on the\nserver (or the client), you can pass in the second argument (e.g.,\n'server', 'client', 'web.browser', 'web.cordova') to specify\nwhat architecture the package is used with.

","name":"architecture"},{"type":{"names":["Object"]},"optional":true,"name":"options"}],"name":"use","longname":"PackageAPI#use","kind":"function","options":[{"type":{"names":["Boolean"]},"description":"

Establish a weak dependency on a\npackage. If package A has a weak dependency on package B, it means\nthat including A in an app does not force B to be included too — but,\nif B is included or by another package, then B will load before A.\nYou can use this to make packages that optionally integrate with or\nenhance other packages if those packages are present.\nWhen you weakly depend on a package you don't see its exports.\nYou can detect if the possibly-present weakly-depended-on package\nis there by seeing if Package.foo exists, and get its exports\nfrom the same place.

","name":"weak"},{"type":{"names":["Boolean"]},"description":"

It's okay to load this dependency\nafter your package. (In general, dependencies specified by api.use\nare loaded before your package.) You can use this option to break\ncircular dependencies.

","name":"unordered"}],"locus":"package.js"},"PackageAPI#imply":{"memberof":"PackageAPI","summary":"Give users of this package access to another package (by passing in the string `packagename`) or a collection of packages (by passing in an array of strings [`packagename1`, `packagename2`]","scope":"instance","params":[{"type":{"names":["String","Array."]},"description":"

Name of a package, or array of package names, with an optional @version component for each.

","name":"packageSpecs"}],"name":"imply","longname":"PackageAPI#imply","kind":"function","options":[],"locus":"package.js"},"PackageAPI#addFiles":{"memberof":"PackageAPI","scope":"instance","summary":"Specify the source code for your package.","params":[{"type":{"names":["String","Array."]},"description":"

Name of the source file, or array of strings of source file names.

","name":"filename"},{"type":{"names":["String"]},"optional":true,"description":"

If you only want to export the file\non the server (or the client), you can pass in the second argument\n(e.g., 'server', 'client', 'web.browser', 'web.cordova') to specify\nwhat architecture the file is used with.

","name":"architecture"}],"name":"addFiles","longname":"PackageAPI#addFiles","kind":"function","options":[],"locus":"package.js"},"PackageAPI#versionsFrom":{"memberof":"PackageAPI","scope":"instance","summary":"Use versions of core packages from a release. Unless provided, all packages will default to the versions released along with `meteorRelease`. This will save you from having to figure out the exact versions of the core packages you want to use. For example, if the newest release of meteor is `METEOR@0.9.0` and it includes `jquery@1.0.0`, you can write `api.versionsFrom('METEOR@0.9.0')` in your package, and when you later write `api.use('jquery')`, it will be equivalent to `api.use('jquery@1.0.0')`. You may specify an array of multiple releases, in which case the default value for constraints will be the \"or\" of the versions from each release: `api.versionsFrom(['METEOR@0.9.0', 'METEOR@0.9.5'])` may cause `api.use('jquery')` to be interpreted as `api.use('jquery@1.0.0 || 2.0.0')`.","params":[{"type":{"names":["String","Array."]},"description":"

Specification of a release: track@version. Just 'version' (e.g. "0.9.0") is sufficient if using the default release track METEOR.

","name":"meteorRelease"}],"name":"versionsFrom","longname":"PackageAPI#versionsFrom","kind":"function","options":[],"locus":"package.js"},"PackageAPI#export":{"memberof":"PackageAPI","scope":"instance","summary":"Export package-level variables in your package. The specified variables (declared without `var` in the source code) will be available to packages that use this package.","params":[{"type":{"names":["String"]},"description":"

Name of the object.

","name":"exportedObject"},{"type":{"names":["String"]},"optional":true,"description":"

If you only want to export the object\non the server (or the client), you can pass in the second argument\n(e.g., 'server', 'client', 'web.browser', 'web.cordova') to specify\nwhat architecture the export is used with.

","name":"architecture"}],"name":"export","longname":"PackageAPI#export","kind":"function","options":[],"locus":"package.js"},"Npm.require":{"summary":"Require a package that was specified using\n`Npm.depends()`.","params":[{"type":{"names":["String"]},"description":"

The name of the package to require.

","name":"name"}],"memberof":"Npm","name":"require","longname":"Npm.require","kind":"function","scope":"static","options":[],"locus":"Server"},"Blaze.Template":{"kind":"class","summary":"Constructor for a Template, which is used to construct Views with particular name and content.","params":[{"type":{"names":["String"]},"optional":true,"description":"

Optional. A name for Views constructed by this Template. See view.name.

","name":"viewName"},{"type":{"names":["function"]},"description":"

A function that returns renderable content. This function is used as the renderFunction for Views constructed by this Template.

","name":"renderFunction"}],"name":"Template","longname":"Blaze.Template","memberof":"Blaze","scope":"static","options":[],"locus":"Client"},"Blaze.TemplateInstance":{"kind":"class","summary":"The class for template instances","params":[{"type":{"names":["Blaze.View"]},"name":"view"}],"name":"TemplateInstance","longname":"Blaze.TemplateInstance","memberof":"Blaze","scope":"static","options":[],"instancename":"template"},"Blaze.View":{"kind":"class","summary":"Constructor for a View, which represents a reactive region of DOM.","params":[{"type":{"names":["String"]},"optional":true,"description":"

Optional. A name for this type of View. See view.name.

","name":"name"},{"type":{"names":["function"]},"description":"

A function that returns renderable content. In this function, this is bound to the View.

","name":"renderFunction"}],"name":"View","longname":"Blaze.View","memberof":"Blaze","scope":"static","options":[],"locus":"Client"},"Subscription":{"summary":"The server's side of a subscription","kind":"class","name":"Subscription","longname":"Subscription","options":[],"params":[],"instancename":"this"},"EJSON.CustomType":{"kind":"class","name":"CustomType","memberof":"EJSON","summary":"The interface that a class must satisfy to be able to become an\nEJSON custom type via EJSON.addType.","scope":"static","longname":"EJSON.CustomType","options":[],"params":[],"instancename":"customType"},"Meteor.Error":{"summary":"This class represents a symbolic error thrown by a method.","kind":"class","params":[{"type":{"names":["String"]},"description":"

A string code uniquely identifying this kind of error.\nThis string should be used by callers of the method to determine the\nappropriate action to take, instead of attempting to parse the reason\nor details fields. For example:

\n
// on the server, pick a code unique to this error\n// the reason field should be a useful debug message\nthrow new Meteor.Error("logged-out", \n  "The user must be logged in to post a comment.");\n\n// on the client\nMeteor.call("methodName", function (error) {\n  // identify the error\n  if (error.error === "logged-out") {\n    // show a nice error message\n    Session.set("errorMessage", "Please log in to post a comment.");\n  }\n});

For legacy reasons, some built-in Meteor functions such as check throw\nerrors with a number in this field.

","name":"error"},{"type":{"names":["String"]},"optional":true,"description":"

Optional. A short human-readable summary of the\nerror, like 'Not Found'.

","name":"reason"},{"type":{"names":["String"]},"optional":true,"description":"

Optional. Additional information about the error,\nlike a textual stack trace.

","name":"details"}],"name":"Error","longname":"Meteor.Error","memberof":"Meteor","scope":"static","options":[],"locus":"Anywhere"},"Mongo.Collection":{"summary":"Constructor for a Collection","kind":"class","params":[{"type":{"names":["String"]},"description":"

The name of the collection. If null, creates an unmanaged (unsynchronized) local collection.

","name":"name"},{"type":{"names":["Object"]},"optional":true,"name":"options"}],"name":"Collection","longname":"Mongo.Collection","memberof":"Mongo","scope":"static","options":[{"type":{"names":["Object"]},"description":"

The server connection that will manage this collection. Uses the default connection if not specified. Pass the return value of calling DDP.connect to specify a different server. Pass null to specify no connection. Unmanaged (name is null) collections cannot specify a connection.

","name":"connection"},{"type":{"names":["String"]},"description":"

The method of generating the _id fields of new documents in this collection. Possible values:

\n\n

The default id generation technique is 'STRING'.

","name":"idGeneration"},{"type":{"names":["function"]},"description":"

An optional transformation function. Documents will be passed through this function before being returned from fetch or findOne, and before being passed to callbacks of observe, map, forEach, allow, and deny. Transforms are not applied for the callbacks of observeChanges or to cursors returned from publish functions.

","name":"transform"}],"locus":"Anywhere","instancename":"collection"},"Mongo.ObjectID":{"summary":"Create a Mongo-style `ObjectID`. If you don't specify a `hexString`, the `ObjectID` will generated randomly (not using MongoDB's ID construction rules).","kind":"class","params":[{"type":{"names":["String"]},"description":"

Optional. The 24-character hexadecimal contents of the ObjectID to create

","name":"hexString"}],"name":"ObjectID","longname":"Mongo.ObjectID","memberof":"Mongo","scope":"static","options":[],"locus":"Anywhere"},"Mongo.Cursor":{"summary":"To create a cursor, use find. To access the documents in a cursor, use forEach, map, or fetch.","kind":"class","name":"Cursor","longname":"Mongo.Cursor","memberof":"Mongo","scope":"static","options":[],"params":[],"instancename":"cursor"},"ReactiveVar":{"kind":"class","summary":"Constructor for a ReactiveVar, which represents a single reactive variable.","params":[{"type":{"names":["Any"]},"description":"

The initial value to set. equalsFunc is ignored when setting the initial value.

","name":"initialValue"},{"type":{"names":["function"]},"optional":true,"description":"

Optional. A function of two arguments, called on the old value and the new value whenever the ReactiveVar is set. If it returns true, no set is performed. If omitted, the default equalsFunc returns true if its arguments are === and are of type number, boolean, string, undefined, or null.

","name":"equalsFunc"}],"name":"ReactiveVar","longname":"ReactiveVar","scope":"global","options":[],"instancename":"reactiveVar","locus":"Client"},"Template":{"summary":"The class for defining templates","kind":"class","name":"Template","longname":"Template","scope":"global","options":[],"params":[],"instancename":"Template.myTemplate"},"Tracker.Dependency":{"summary":"A Dependency represents an atomic unit of reactive data that a\ncomputation might depend on. Reactive data sources such as Session or\nMinimongo internally create different Dependency objects for different\npieces of data, each of which may be depended on by multiple computations.\nWhen the data changes, the computations are invalidated.","kind":"class","name":"Dependency","longname":"Tracker.Dependency","memberof":"Tracker","scope":"static","options":[],"params":[],"instancename":"dependency"},"CompileStep":{"description":"

The comments for this class aren't used to generate docs right now.\nThe docs live in the GitHub Wiki at: https://github.com/meteor/meteor/wiki/CompileStep-API-for-Build-Plugin-Source-Handlers

","kind":"class","name":"CompileStep","summary":"The object passed into Plugin.registerSourceHandler","scope":"global","longname":"CompileStep","options":[],"params":[]},"PackageAPI":{"kind":"class","name":"PackageAPI","scope":"global","summary":"The API object passed into the Packages.onUse function.","longname":"PackageAPI","options":[],"params":[],"instancename":"api"}}; \ No newline at end of file From 6b204ca73afd48eab1b9c549f3c2d04c7328ce3f Mon Sep 17 00:00:00 2001 From: David Glasser Date: Fri, 19 Dec 2014 10:31:59 -0800 Subject: [PATCH 56/60] Bump package versions for 1.0.2 --- packages/accounts-base/package.js | 2 +- packages/accounts-facebook/package.js | 2 +- packages/accounts-github/package.js | 2 +- packages/accounts-google/package.js | 2 +- packages/accounts-meetup/package.js | 2 +- packages/accounts-meteor-developer/package.js | 2 +- packages/accounts-oauth/package.js | 2 +- packages/accounts-password/package.js | 2 +- packages/accounts-twitter/package.js | 2 +- packages/accounts-ui-unstyled/package.js | 2 +- packages/accounts-ui/package.js | 2 +- packages/accounts-weibo/package.js | 2 +- packages/appcache/package.js | 2 +- packages/application-configuration/package.js | 2 +- packages/audit-argument-checks/package.js | 2 +- packages/autopublish/package.js | 2 +- packages/autoupdate/package.js | 2 +- packages/base64/package.js | 2 +- packages/binary-heap/package.js | 2 +- packages/blaze-tools/package.js | 2 +- packages/blaze/package.js | 2 +- packages/boilerplate-generator/package.js | 2 +- packages/browser-policy-common/package.js | 2 +- packages/browser-policy-content/package.js | 2 +- packages/browser-policy-framing/package.js | 2 +- packages/browser-policy/package.js | 2 +- packages/callback-hook/package.js | 2 +- packages/check/package.js | 2 +- packages/code-prettify/package.js | 2 +- packages/coffeescript-test-helper/package.js | 2 +- packages/coffeescript/package.js | 2 +- packages/constraint-solver/package.js | 2 +- packages/ctl-helper/package.js | 2 +- packages/ctl/package.js | 2 +- packages/ddp/package.js | 2 +- packages/deps/package.js | 2 +- packages/dev-bundle-fetcher/package.js | 2 +- packages/disable-oplog/package.js | 2 +- packages/ejson/package.js | 2 +- packages/email/package.js | 2 +- packages/facebook/package.js | 2 +- packages/facts/package.js | 2 +- packages/fastclick/package.js | 2 +- packages/follower-livedata/package.js | 2 +- packages/force-ssl/package.js | 2 +- packages/geojson-utils/package.js | 2 +- packages/github/package.js | 2 +- packages/google/package.js | 2 +- packages/handlebars/package.js | 2 +- packages/html-tools/package.js | 2 +- packages/htmljs/package.js | 2 +- packages/http/package.js | 2 +- packages/id-map/package.js | 2 +- packages/insecure/package.js | 2 +- packages/jquery-waypoints/package.js | 2 +- packages/jquery/package.js | 2 +- packages/js-analyze-tests/package.js | 2 +- packages/js-analyze/package.js | 2 +- packages/json/package.js | 2 +- packages/jsparse/package.js | 2 +- packages/launch-screen/package.js | 2 +- packages/less/package.js | 2 +- packages/livedata/package.js | 2 +- packages/localstorage/package.js | 2 +- packages/logging/package.js | 2 +- packages/markdown/package.js | 2 +- packages/meetup/package.js | 2 +- packages/meteor-developer/package.js | 2 +- packages/meteor-platform/package.js | 2 +- packages/meteor-tool/package.js | 2 +- packages/meteor/package.js | 2 +- packages/meyerweb-reset/package.js | 2 +- packages/minifiers/package.js | 2 +- packages/minimongo/package.js | 2 +- packages/mobile-status-bar/package.js | 2 +- packages/mongo-livedata/package.js | 2 +- packages/mongo/package.js | 2 +- packages/oauth-encryption/package.js | 2 +- packages/oauth/package.js | 2 +- packages/oauth1/package.js | 2 +- packages/oauth2/package.js | 2 +- packages/observe-sequence/package.js | 2 +- packages/ordered-dict/package.js | 2 +- packages/package-stats-opt-out/package.js | 2 +- packages/package-version-parser/package.js | 2 +- packages/preserve-inputs/package.js | 2 +- packages/random/package.js | 2 +- packages/reactive-dict/package.js | 2 +- packages/reactive-var/package.js | 2 +- packages/reload-safetybelt/package.js | 2 +- packages/reload/package.js | 2 +- packages/retry/package.js | 2 +- packages/routepolicy/package.js | 2 +- packages/service-configuration/package.js | 2 +- packages/session/package.js | 2 +- packages/sha/package.js | 2 +- packages/showdown/package.js | 2 +- packages/spacebars-compiler/package.js | 2 +- packages/spacebars-tests/package.js | 2 +- packages/spacebars/package.js | 2 +- packages/spiderable/package.js | 2 +- packages/srp/package.js | 2 +- packages/standard-app-packages/package.js | 2 +- packages/star-translate/package.js | 2 +- packages/startup/package.js | 2 +- packages/stylus/package.js | 2 +- packages/templating/package.js | 2 +- packages/test-helpers/package.js | 2 +- packages/test-in-browser/package.js | 2 +- packages/test-in-console/package.js | 2 +- packages/test-server-tests-in-console-once/package.js | 2 +- packages/tinytest/package.js | 2 +- packages/tracker/package.js | 2 +- packages/twitter/package.js | 2 +- packages/ui/package.js | 2 +- packages/underscore-tests/package.js | 2 +- packages/underscore/package.js | 2 +- packages/url/package.js | 2 +- packages/webapp-hashing/package.js | 2 +- packages/webapp/package.js | 2 +- packages/weibo/package.js | 2 +- packages/xmlbuilder/package.js | 2 +- 122 files changed, 122 insertions(+), 122 deletions(-) diff --git a/packages/accounts-base/package.js b/packages/accounts-base/package.js index ea2b17253f..a57be1b7cd 100644 --- a/packages/accounts-base/package.js +++ b/packages/accounts-base/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "A user account system", - version: "1.1.3-rc.1" + version: "1.1.3" }); Package.onUse(function (api) { diff --git a/packages/accounts-facebook/package.js b/packages/accounts-facebook/package.js index 93615339c8..b656d63559 100644 --- a/packages/accounts-facebook/package.js +++ b/packages/accounts-facebook/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Login service for Facebook accounts", - version: "1.0.3-rc.1" + version: "1.0.3" }); Package.onUse(function(api) { diff --git a/packages/accounts-github/package.js b/packages/accounts-github/package.js index f0a9086fed..a29f37b4a3 100644 --- a/packages/accounts-github/package.js +++ b/packages/accounts-github/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Login service for Github accounts", - version: "1.0.3-rc.1" + version: "1.0.3" }); Package.onUse(function(api) { diff --git a/packages/accounts-google/package.js b/packages/accounts-google/package.js index 2b1d600d4d..98e8180433 100644 --- a/packages/accounts-google/package.js +++ b/packages/accounts-google/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Login service for Google accounts", - version: "1.0.3-rc.1" + version: "1.0.3" }); Package.onUse(function(api) { diff --git a/packages/accounts-meetup/package.js b/packages/accounts-meetup/package.js index 178810bce3..0a7e5be0e0 100644 --- a/packages/accounts-meetup/package.js +++ b/packages/accounts-meetup/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Login service for Meetup accounts", - version: "1.0.3-rc.1" + version: "1.0.3" }); Package.onUse(function(api) { diff --git a/packages/accounts-meteor-developer/package.js b/packages/accounts-meteor-developer/package.js index dc081468dd..06a1085ffc 100644 --- a/packages/accounts-meteor-developer/package.js +++ b/packages/accounts-meteor-developer/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Login service for Meteor developer accounts", - version: "1.0.3-rc.1" + version: "1.0.3" }); Package.onUse(function (api) { diff --git a/packages/accounts-oauth/package.js b/packages/accounts-oauth/package.js index dd90b2ee8d..97ec92f651 100644 --- a/packages/accounts-oauth/package.js +++ b/packages/accounts-oauth/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Common code for OAuth-based login services", - version: "1.1.3-rc.1" + version: "1.1.3" }); Package.onUse(function (api) { diff --git a/packages/accounts-password/package.js b/packages/accounts-password/package.js index 9390ac2fb8..cb19d0b80b 100644 --- a/packages/accounts-password/package.js +++ b/packages/accounts-password/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Password support for accounts", - version: "1.0.5-rc.2" + version: "1.0.5" }); Package.onUse(function(api) { diff --git a/packages/accounts-twitter/package.js b/packages/accounts-twitter/package.js index 2fdda22989..ddd92ec3dd 100644 --- a/packages/accounts-twitter/package.js +++ b/packages/accounts-twitter/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Login service for Twitter accounts", - version: "1.0.3-rc.1" + version: "1.0.3" }); Package.onUse(function(api) { diff --git a/packages/accounts-ui-unstyled/package.js b/packages/accounts-ui-unstyled/package.js index 7cf2c6d5e1..4573ebfd94 100644 --- a/packages/accounts-ui-unstyled/package.js +++ b/packages/accounts-ui-unstyled/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Unstyled version of login widgets", - version: "1.1.5-rc.1" + version: "1.1.5" }); Package.onUse(function (api) { diff --git a/packages/accounts-ui/package.js b/packages/accounts-ui/package.js index e521de834f..60d42d7cfd 100644 --- a/packages/accounts-ui/package.js +++ b/packages/accounts-ui/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Simple templates to add login widgets to an app", - version: "1.1.4-rc.1" + version: "1.1.4" }); Package.onUse(function (api) { diff --git a/packages/accounts-weibo/package.js b/packages/accounts-weibo/package.js index b6fcf77a9e..2d26ef0374 100644 --- a/packages/accounts-weibo/package.js +++ b/packages/accounts-weibo/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Login service for Sina Weibo accounts", - version: "1.0.3-rc.1" + version: "1.0.3" }); Package.onUse(function(api) { diff --git a/packages/appcache/package.js b/packages/appcache/package.js index 4209624739..f43cae2fda 100644 --- a/packages/appcache/package.js +++ b/packages/appcache/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Enable the application cache in the browser", - version: "1.0.3-rc.1" + version: "1.0.3" }); Package.onUse(function (api) { diff --git a/packages/application-configuration/package.js b/packages/application-configuration/package.js index 8bfc8579b3..f5fd5cafba 100644 --- a/packages/application-configuration/package.js +++ b/packages/application-configuration/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Interaction with the configuration sources for your apps", - version: '1.0.4-rc.1' + version: '1.0.4' }); Package.onUse(function (api) { diff --git a/packages/audit-argument-checks/package.js b/packages/audit-argument-checks/package.js index 802bf8ed1f..5d1f094dac 100644 --- a/packages/audit-argument-checks/package.js +++ b/packages/audit-argument-checks/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Try to detect inadequate input sanitization", - version: '1.0.2-rc.1' + version: '1.0.2' }); // This package is empty; its presence is detected by livedata. diff --git a/packages/autopublish/package.js b/packages/autopublish/package.js index 009d79aabe..54f7666e53 100644 --- a/packages/autopublish/package.js +++ b/packages/autopublish/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Publish the entire database to all clients", - version: '1.0.2-rc.1' + version: '1.0.2' }); // This package is empty; its presence is detected by livedata and diff --git a/packages/autoupdate/package.js b/packages/autoupdate/package.js index 5a390dc23b..e32049bbf3 100644 --- a/packages/autoupdate/package.js +++ b/packages/autoupdate/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Update the client when new client code is available", - version: '1.1.4-rc.1' + version: '1.1.4' }); Cordova.depends({ diff --git a/packages/base64/package.js b/packages/base64/package.js index ade0ed050d..2743d4a783 100644 --- a/packages/base64/package.js +++ b/packages/base64/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Base64 encoding and decoding", - version: '1.0.2-rc.1' + version: '1.0.2' }); Package.onUse(function (api) { diff --git a/packages/binary-heap/package.js b/packages/binary-heap/package.js index c535cf2a71..8855e7e1ea 100644 --- a/packages/binary-heap/package.js +++ b/packages/binary-heap/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Binary Heap datastructure implementation", - version: '1.0.2-rc.1' + version: '1.0.2' }); Package.onUse(function (api) { diff --git a/packages/blaze-tools/package.js b/packages/blaze-tools/package.js index 23ecea137d..898e386187 100644 --- a/packages/blaze-tools/package.js +++ b/packages/blaze-tools/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Compile-time tools for Blaze", - version: '1.0.2-rc.1' + version: '1.0.2' }); Package.onUse(function (api) { diff --git a/packages/blaze/package.js b/packages/blaze/package.js index b520b17397..778626def7 100644 --- a/packages/blaze/package.js +++ b/packages/blaze/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Meteor Reactive Templating library", - version: '2.0.4-rc.1' + version: '2.0.4' }); Package.onUse(function (api) { diff --git a/packages/boilerplate-generator/package.js b/packages/boilerplate-generator/package.js index dfcc2ea56b..dbf1e95b49 100644 --- a/packages/boilerplate-generator/package.js +++ b/packages/boilerplate-generator/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Generates the boilerplate html from program's manifest", - version: '1.0.2-rc.1' + version: '1.0.2' }); Package.onUse(function (api) { diff --git a/packages/browser-policy-common/package.js b/packages/browser-policy-common/package.js index 66294f98f1..9ba2fd5421 100644 --- a/packages/browser-policy-common/package.js +++ b/packages/browser-policy-common/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Common code for browser-policy packages", - version: "1.0.2-rc.1" + version: "1.0.2" }); Package.onUse(function (api) { diff --git a/packages/browser-policy-content/package.js b/packages/browser-policy-content/package.js index 195fbbc1ce..4f203bc100 100644 --- a/packages/browser-policy-content/package.js +++ b/packages/browser-policy-content/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Configure content security policies", - version: "1.0.3-rc.1" + version: "1.0.3" }); Package.onUse(function (api) { diff --git a/packages/browser-policy-framing/package.js b/packages/browser-policy-framing/package.js index 816d45f52f..9816bbd2a7 100644 --- a/packages/browser-policy-framing/package.js +++ b/packages/browser-policy-framing/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Restrict which websites can frame your app", - version: "1.0.3-rc.1" + version: "1.0.3" }); Package.onUse(function (api) { diff --git a/packages/browser-policy/package.js b/packages/browser-policy/package.js index f7bfb7bda9..bfb8086f52 100644 --- a/packages/browser-policy/package.js +++ b/packages/browser-policy/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Configure security policies enforced by the browser", - version: "1.0.3-rc.1" + version: "1.0.3" }); Package.onUse(function (api) { diff --git a/packages/callback-hook/package.js b/packages/callback-hook/package.js index 3d9d33863e..c867a2a635 100644 --- a/packages/callback-hook/package.js +++ b/packages/callback-hook/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Register callbacks on a hook", - version: '1.0.2-rc.1' + version: '1.0.2' }); Package.onUse(function (api) { diff --git a/packages/check/package.js b/packages/check/package.js index f79767edef..bafa5b54ba 100644 --- a/packages/check/package.js +++ b/packages/check/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Check whether a value matches a pattern", - version: '1.0.3-rc.1' + version: '1.0.3' }); Package.onUse(function (api) { diff --git a/packages/code-prettify/package.js b/packages/code-prettify/package.js index 2aa4f0f2e1..1c53cbd9d3 100644 --- a/packages/code-prettify/package.js +++ b/packages/code-prettify/package.js @@ -8,7 +8,7 @@ var path = Npm.require('path'); Package.describe({ summary: "Syntax highlighting of code, from Google", - version: "1.0.2-rc.1" + version: "1.0.2" }); // XXX this code dumps symbols into the global namespace (directly diff --git a/packages/coffeescript-test-helper/package.js b/packages/coffeescript-test-helper/package.js index 07e6892bd6..d83adda840 100644 --- a/packages/coffeescript-test-helper/package.js +++ b/packages/coffeescript-test-helper/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Used by the coffeescript package's tests", - version: "1.0.2-rc.1" + version: "1.0.2" }); Package.onUse(function (api) { diff --git a/packages/coffeescript/package.js b/packages/coffeescript/package.js index c4a92ad48c..fb935a9851 100644 --- a/packages/coffeescript/package.js +++ b/packages/coffeescript/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Javascript dialect with fewer braces and semicolons", - version: "1.0.5-rc.1" + version: "1.0.5" }); Package.registerBuildPlugin({ diff --git a/packages/constraint-solver/package.js b/packages/constraint-solver/package.js index c1e8b2768e..d3ca135cae 100644 --- a/packages/constraint-solver/package.js +++ b/packages/constraint-solver/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Given the set of the constraints, picks a satisfying configuration", - version: "1.0.16-rc.1" + version: "1.0.16" }); Npm.depends({ diff --git a/packages/ctl-helper/package.js b/packages/ctl-helper/package.js index 9b8fb43a5b..3bf09a0f87 100644 --- a/packages/ctl-helper/package.js +++ b/packages/ctl-helper/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Helpers for control programs", - version: "1.0.5-rc.1" + version: "1.0.5" }); Npm.depends({optimist: '0.6.0'}); diff --git a/packages/ctl/package.js b/packages/ctl/package.js index 9452c24899..3065164c1e 100644 --- a/packages/ctl/package.js +++ b/packages/ctl/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Default control program for an application", - version: "1.0.3-rc.1" + version: "1.0.3" }); Package.onUse(function (api) { diff --git a/packages/ddp/package.js b/packages/ddp/package.js index 98d4a2ca7c..eec91bc46e 100644 --- a/packages/ddp/package.js +++ b/packages/ddp/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Meteor's latency-compensated distributed data framework", - version: '1.0.13-rc.1' + version: '1.0.13' }); // We use 'faye-websocket' for connections in server-to-server DDP, mostly diff --git a/packages/deps/package.js b/packages/deps/package.js index 0ec755bfaf..fc8bdd916d 100644 --- a/packages/deps/package.js +++ b/packages/deps/package.js @@ -2,7 +2,7 @@ Package.describe({ summary: "Deprecated: Use the 'tracker' package instead.", - version: '1.0.6-rc.1' + version: '1.0.6' }); Package.onUse(function (api) { diff --git a/packages/dev-bundle-fetcher/package.js b/packages/dev-bundle-fetcher/package.js index f4b0bcc8e4..b720ccf5d5 100644 --- a/packages/dev-bundle-fetcher/package.js +++ b/packages/dev-bundle-fetcher/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "A shell script for downloading the Meteor dev bundle", - version: "1.0.2-rc.1" + version: "1.0.2" }); Package.onUse(function (api) { diff --git a/packages/disable-oplog/package.js b/packages/disable-oplog/package.js index 6714c56060..ffacf50187 100644 --- a/packages/disable-oplog/package.js +++ b/packages/disable-oplog/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Disables oplog tailing", - version: '1.0.2-rc.1' + version: '1.0.2' }); // This package is empty; its presence is detected by mongo-livedata. diff --git a/packages/ejson/package.js b/packages/ejson/package.js index e0886eeae7..89d1e59c3d 100644 --- a/packages/ejson/package.js +++ b/packages/ejson/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Extended and Extensible JSON library", - version: '1.0.5-rc.1' + version: '1.0.5' }); Package.onUse(function (api) { diff --git a/packages/email/package.js b/packages/email/package.js index 02593ddc9e..b7a015fd3c 100644 --- a/packages/email/package.js +++ b/packages/email/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Send email messages", - version: "1.0.5-rc.1" + version: "1.0.5" }); Npm.depends({ diff --git a/packages/facebook/package.js b/packages/facebook/package.js index 7f4d65fb9b..6ab7464d6e 100644 --- a/packages/facebook/package.js +++ b/packages/facebook/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Facebook OAuth flow", - version: "1.1.3-rc.1" + version: "1.1.3" }); Package.onUse(function(api) { diff --git a/packages/facts/package.js b/packages/facts/package.js index f4cea1900d..a2e88fd6f4 100644 --- a/packages/facts/package.js +++ b/packages/facts/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Publish internal app statistics", - version: '1.0.3-rc.1' + version: '1.0.3' }); Package.onUse(function (api) { diff --git a/packages/fastclick/package.js b/packages/fastclick/package.js index a7ab3f5009..be8b2b6157 100644 --- a/packages/fastclick/package.js +++ b/packages/fastclick/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Faster touch events on mobile", - version: '1.0.2-rc.1' + version: '1.0.2' }); Package.onUse(function (api) { diff --git a/packages/follower-livedata/package.js b/packages/follower-livedata/package.js index 8a07fda896..bf1a33f50e 100644 --- a/packages/follower-livedata/package.js +++ b/packages/follower-livedata/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Maintain a connection to the leader of an election set", - version: '1.0.3-rc.1' + version: '1.0.3' }); Package.onUse(function (api) { diff --git a/packages/force-ssl/package.js b/packages/force-ssl/package.js index 9b1f0d2537..ad21e3f378 100644 --- a/packages/force-ssl/package.js +++ b/packages/force-ssl/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Require this application to use HTTPS", - version: "1.0.3-rc.1" + version: "1.0.3" }); Package.onUse(function (api) { diff --git a/packages/geojson-utils/package.js b/packages/geojson-utils/package.js index 80ac0cd995..c9e6926c80 100644 --- a/packages/geojson-utils/package.js +++ b/packages/geojson-utils/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: 'GeoJSON utility functions (from https://github.com/maxogden/geojson-js-utils)', - version: '1.0.2-rc.1' + version: '1.0.2' }); Package.onUse(function (api) { diff --git a/packages/github/package.js b/packages/github/package.js index 584ab5665e..c5feebadac 100644 --- a/packages/github/package.js +++ b/packages/github/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Github OAuth flow", - version: "1.1.2-rc.1" + version: "1.1.2" }); Package.onUse(function(api) { diff --git a/packages/google/package.js b/packages/google/package.js index 80ec0838bf..97654ef819 100644 --- a/packages/google/package.js +++ b/packages/google/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Google OAuth flow", - version: "1.1.3-rc.1" + version: "1.1.3" }); Package.onUse(function(api) { diff --git a/packages/handlebars/package.js b/packages/handlebars/package.js index 62ac88a913..a1abe0671e 100644 --- a/packages/handlebars/package.js +++ b/packages/handlebars/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Deprecated", - version: '1.0.2-rc.1' + version: '1.0.2' }); Package.onUse(function (api) { diff --git a/packages/html-tools/package.js b/packages/html-tools/package.js index 23ace8dcd8..bf884fa3e4 100644 --- a/packages/html-tools/package.js +++ b/packages/html-tools/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Standards-compliant HTML tools", - version: '1.0.3-rc.1' + version: '1.0.3' }); Package.onUse(function (api) { diff --git a/packages/htmljs/package.js b/packages/htmljs/package.js index f8b0e9f46b..6c258bd8ef 100644 --- a/packages/htmljs/package.js +++ b/packages/htmljs/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Small library for expressing HTML trees", - version: '1.0.3-rc.1' + version: '1.0.3' }); Package.onUse(function (api) { diff --git a/packages/http/package.js b/packages/http/package.js index 4c44dd1a9b..ef748cbca9 100644 --- a/packages/http/package.js +++ b/packages/http/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Make HTTP calls to remote servers", - version: '1.0.9-rc.1' + version: '1.0.9' }); Npm.depends({request: "2.47.0"}); diff --git a/packages/id-map/package.js b/packages/id-map/package.js index 8c95abda1c..18cc057cbb 100644 --- a/packages/id-map/package.js +++ b/packages/id-map/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Dictionary data structure allowing non-string keys", - version: '1.0.2-rc.1' + version: '1.0.2' }); Package.onUse(function (api) { diff --git a/packages/insecure/package.js b/packages/insecure/package.js index 231180819f..8287d015fb 100644 --- a/packages/insecure/package.js +++ b/packages/insecure/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Allow all database writes by default", - version: '1.0.2-rc.1' + version: '1.0.2' }); // This package is empty; its presence is detected by mongo-livedata. diff --git a/packages/jquery-waypoints/package.js b/packages/jquery-waypoints/package.js index d9bb6e9b6f..4fc8b443c4 100644 --- a/packages/jquery-waypoints/package.js +++ b/packages/jquery-waypoints/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Run a function when the user scrolls past an element", - version: "1.0.2-rc.1" + version: "1.0.2" }); Package.onUse(function (api) { diff --git a/packages/jquery/package.js b/packages/jquery/package.js index cf0b451f58..56d3e8e198 100644 --- a/packages/jquery/package.js +++ b/packages/jquery/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Manipulate the DOM using CSS selectors", - version: '1.0.2-rc.1' + version: '1.0.2' }); Package.onUse(function (api) { diff --git a/packages/js-analyze-tests/package.js b/packages/js-analyze-tests/package.js index b992a16a70..1eee1df495 100644 --- a/packages/js-analyze-tests/package.js +++ b/packages/js-analyze-tests/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Tests for JavaScript code analysis for Meteor", - version: "1.0.2-rc.1" + version: "1.0.2" }); // The tests are in a separate package so that it is possible to compile diff --git a/packages/js-analyze/package.js b/packages/js-analyze/package.js index 66e71bad43..c50ba9e089 100644 --- a/packages/js-analyze/package.js +++ b/packages/js-analyze/package.js @@ -4,7 +4,7 @@ Package.describe({ summary: "JavaScript code analysis for Meteor", - version: '1.0.4-rc.1' + version: '1.0.4' }); // Use some packages from the Esprima project. If it turns out we need these on diff --git a/packages/json/package.js b/packages/json/package.js index 05814a7f2a..5afca9299e 100644 --- a/packages/json/package.js +++ b/packages/json/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Provides JSON.stringify and JSON.parse for older browsers", - version: '1.0.2-rc.1' + version: '1.0.2' }); // We need to figure out how to serve this file only to browsers that don't have diff --git a/packages/jsparse/package.js b/packages/jsparse/package.js index f7046ad117..d92cf4878a 100644 --- a/packages/jsparse/package.js +++ b/packages/jsparse/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Full-featured JavaScript parser", - version: "1.0.2-rc.1" + version: "1.0.2" }); Package.onUse(function (api) { diff --git a/packages/launch-screen/package.js b/packages/launch-screen/package.js index 83d5c7ab7f..a4ae1c16d2 100644 --- a/packages/launch-screen/package.js +++ b/packages/launch-screen/package.js @@ -6,7 +6,7 @@ Package.describe({ // between such packages and the build tool. name: 'launch-screen', summary: 'Default and customizable launch screen on mobile.', - version: '1.0.1-rc.1' + version: '1.0.1' }); Cordova.depends({ diff --git a/packages/less/package.js b/packages/less/package.js index 1d0deda0ab..1b0e548e78 100644 --- a/packages/less/package.js +++ b/packages/less/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "The dynamic stylesheet language", - version: "1.0.12-rc.3" + version: "1.0.12" }); Package.registerBuildPlugin({ diff --git a/packages/livedata/package.js b/packages/livedata/package.js index 4813aa3022..c85f6bce17 100644 --- a/packages/livedata/package.js +++ b/packages/livedata/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Moved to the 'ddp' package", - version: '1.0.12-rc.1' + version: '1.0.12' }); Package.onUse(function (api) { diff --git a/packages/localstorage/package.js b/packages/localstorage/package.js index b9ef0be798..fc3cea6592 100644 --- a/packages/localstorage/package.js +++ b/packages/localstorage/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Simulates local storage on IE 6,7 using userData", - version: "1.0.2-rc.1" + version: "1.0.2" }); Package.onUse(function (api) { diff --git a/packages/logging/package.js b/packages/logging/package.js index 49f823d9a9..948f478ed9 100644 --- a/packages/logging/package.js +++ b/packages/logging/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Logging facility.", - version: '1.0.6-rc.1' + version: '1.0.6' }); Npm.depends({ diff --git a/packages/markdown/package.js b/packages/markdown/package.js index eec4674e17..bdf301cac1 100644 --- a/packages/markdown/package.js +++ b/packages/markdown/package.js @@ -2,7 +2,7 @@ Package.describe({ summary: "Markdown-to-HTML processor", - version: "1.0.3-rc.1" + version: "1.0.3" }); Package.onUse(function (api) { diff --git a/packages/meetup/package.js b/packages/meetup/package.js index ca517d6d3d..cd4bb2d50d 100644 --- a/packages/meetup/package.js +++ b/packages/meetup/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Meetup OAuth flow", - version: "1.1.2-rc.1" + version: "1.1.2" }); Package.onUse(function(api) { diff --git a/packages/meteor-developer/package.js b/packages/meteor-developer/package.js index 11c2a014bc..b9b5a13391 100644 --- a/packages/meteor-developer/package.js +++ b/packages/meteor-developer/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Meteor developer accounts OAuth flow", - version: "1.1.2-rc.1" + version: "1.1.2" }); Package.onUse(function (api) { diff --git a/packages/meteor-platform/package.js b/packages/meteor-platform/package.js index 962642c01d..ee508dc423 100644 --- a/packages/meteor-platform/package.js +++ b/packages/meteor-platform/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Include a standard set of Meteor packages in your app", - version: '1.2.1-rc.1' + version: '1.2.1' }); Package.onUse(function(api) { diff --git a/packages/meteor-tool/package.js b/packages/meteor-tool/package.js index 7449387af7..546a39ee2d 100644 --- a/packages/meteor-tool/package.js +++ b/packages/meteor-tool/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "The Meteor command-line tool", - version: '1.0.37-rc.8' + version: '1.0.37' }); Package.includeTool(); diff --git a/packages/meteor/package.js b/packages/meteor/package.js index 04f542f596..66f6ca0373 100644 --- a/packages/meteor/package.js +++ b/packages/meteor/package.js @@ -2,7 +2,7 @@ Package.describe({ summary: "Core Meteor environment", - version: '1.1.4-rc.1' + version: '1.1.4' }); Package.registerBuildPlugin({ diff --git a/packages/meyerweb-reset/package.js b/packages/meyerweb-reset/package.js index e14b4fa1dc..9624dfcc76 100644 --- a/packages/meyerweb-reset/package.js +++ b/packages/meyerweb-reset/package.js @@ -3,7 +3,7 @@ // encourage this pattern. Maybe another solution would be better. Package.describe({ summary: "reset.css v2.0 from http://meyerweb.com/eric/tools/css/reset/", - version: "1.0.2-rc.1" + version: "1.0.2" }); Package.onUse(function (api) { diff --git a/packages/minifiers/package.js b/packages/minifiers/package.js index 74662623c7..5d061e92ae 100644 --- a/packages/minifiers/package.js +++ b/packages/minifiers/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "JavaScript and CSS minifiers", - version: "1.1.3-rc.3" + version: "1.1.3" }); Npm.depends({ diff --git a/packages/minimongo/package.js b/packages/minimongo/package.js index 31210e8f12..1528ec641b 100644 --- a/packages/minimongo/package.js +++ b/packages/minimongo/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Meteor's client-side datastore: a port of MongoDB to Javascript", - version: '1.0.6-rc.1' + version: '1.0.6' }); Package.onUse(function (api) { diff --git a/packages/mobile-status-bar/package.js b/packages/mobile-status-bar/package.js index e8187fd42a..ec307905b1 100644 --- a/packages/mobile-status-bar/package.js +++ b/packages/mobile-status-bar/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Good defaults for the mobile status bar", - version: "1.0.2-rc.1" + version: "1.0.2" }); Package.onUse(function(api) { diff --git a/packages/mongo-livedata/package.js b/packages/mongo-livedata/package.js index 6a83b3c63f..fd6acf3953 100644 --- a/packages/mongo-livedata/package.js +++ b/packages/mongo-livedata/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Moved to the 'mongo' package", - version: '1.0.7-rc.1' + version: '1.0.7' }); Package.onUse(function (api) { diff --git a/packages/mongo/package.js b/packages/mongo/package.js index a6f970cee7..527a5d8007 100644 --- a/packages/mongo/package.js +++ b/packages/mongo/package.js @@ -9,7 +9,7 @@ Package.describe({ summary: "Adaptor for using MongoDB and Minimongo over DDP", - version: '1.0.10-rc.2' + version: '1.0.10' }); Npm.depends({ diff --git a/packages/oauth-encryption/package.js b/packages/oauth-encryption/package.js index 5d6f112bf4..8246b223eb 100644 --- a/packages/oauth-encryption/package.js +++ b/packages/oauth-encryption/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Encrypt account secrets stored in the database", - version: '1.0.2-rc.1' + version: '1.0.2' }); Package.onUse(function (api) { diff --git a/packages/oauth/package.js b/packages/oauth/package.js index 2bad38d8e9..43d0c1d959 100644 --- a/packages/oauth/package.js +++ b/packages/oauth/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Common code for OAuth-based services", - version: "1.1.3-rc.1" + version: "1.1.3" }); Package.onUse(function (api) { diff --git a/packages/oauth1/package.js b/packages/oauth1/package.js index 62072870f1..05c5385382 100644 --- a/packages/oauth1/package.js +++ b/packages/oauth1/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Common code for OAuth1-based login services", - version: "1.1.3-rc.1" + version: "1.1.3" }); Package.onUse(function (api) { diff --git a/packages/oauth2/package.js b/packages/oauth2/package.js index f967f293de..08d65110ba 100644 --- a/packages/oauth2/package.js +++ b/packages/oauth2/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Common code for OAuth2-based login services", - version: "1.1.2-rc.1" + version: "1.1.2" }); Package.onUse(function (api) { diff --git a/packages/observe-sequence/package.js b/packages/observe-sequence/package.js index e973bf6980..737dc65c63 100644 --- a/packages/observe-sequence/package.js +++ b/packages/observe-sequence/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Observe changes to various sequence types such as arrays, cursors and objects", - version: "1.0.4-rc.1" + version: "1.0.4" }); Package.onUse(function (api) { diff --git a/packages/ordered-dict/package.js b/packages/ordered-dict/package.js index d0d7cfaf83..0dda4875e4 100644 --- a/packages/ordered-dict/package.js +++ b/packages/ordered-dict/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Ordered traversable dictionary with a mutable ordering", - version: '1.0.2-rc.1' + version: '1.0.2' }); Package.onUse(function (api) { diff --git a/packages/package-stats-opt-out/package.js b/packages/package-stats-opt-out/package.js index 05b45fb40d..2b5d818e6f 100644 --- a/packages/package-stats-opt-out/package.js +++ b/packages/package-stats-opt-out/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Opt out of sending package stats", - version: '1.0.2-rc.1' + version: '1.0.2' }); Package.onUse(function (api) { diff --git a/packages/package-version-parser/package.js b/packages/package-version-parser/package.js index 0ba5c2d48e..4462cfd67b 100644 --- a/packages/package-version-parser/package.js +++ b/packages/package-version-parser/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Parses Meteor Smart Package version string", - version: "2.0.3-rc.1" + version: "2.0.3" }); Npm.depends({ diff --git a/packages/preserve-inputs/package.js b/packages/preserve-inputs/package.js index 0ce98575fc..fec8778925 100644 --- a/packages/preserve-inputs/package.js +++ b/packages/preserve-inputs/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Deprecated package (now empty)", - version: "1.0.2-rc.1" + version: "1.0.2" }); Package.onUse(function (api) { diff --git a/packages/random/package.js b/packages/random/package.js index feb4cecf31..2c0a2c1dae 100644 --- a/packages/random/package.js +++ b/packages/random/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Random number generator and utilities", - version: '1.0.2-rc.1' + version: '1.0.2' }); Package.onUse(function (api) { diff --git a/packages/reactive-dict/package.js b/packages/reactive-dict/package.js index 7374494b62..36f189a01a 100644 --- a/packages/reactive-dict/package.js +++ b/packages/reactive-dict/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Reactive dictionary", - version: '1.0.5-rc.1' + version: '1.0.5' }); Package.onUse(function (api) { diff --git a/packages/reactive-var/package.js b/packages/reactive-var/package.js index a12f5de74c..bc52854ebc 100644 --- a/packages/reactive-var/package.js +++ b/packages/reactive-var/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Reactive variable", - version: '1.0.4-rc.1' + version: '1.0.4' }); Package.onUse(function (api) { diff --git a/packages/reload-safetybelt/package.js b/packages/reload-safetybelt/package.js index e129981a36..45b39199b2 100644 --- a/packages/reload-safetybelt/package.js +++ b/packages/reload-safetybelt/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Reload safety belt for multi-server deployments", - version: '1.0.2-rc.1' + version: '1.0.2' }); Package.onUse(function (api) { diff --git a/packages/reload/package.js b/packages/reload/package.js index 57ca2bd11d..05ed9254fe 100644 --- a/packages/reload/package.js +++ b/packages/reload/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Reload the page while preserving application state.", - version: '1.1.2-rc.1' + version: '1.1.2' }); Package.onUse(function (api) { diff --git a/packages/retry/package.js b/packages/retry/package.js index 781bc9d6b0..951ceac113 100644 --- a/packages/retry/package.js +++ b/packages/retry/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Retry logic with exponential backoff", - version: '1.0.2-rc.1' + version: '1.0.2' }); Package.onUse(function (api) { diff --git a/packages/routepolicy/package.js b/packages/routepolicy/package.js index 818c69be14..a52887823e 100644 --- a/packages/routepolicy/package.js +++ b/packages/routepolicy/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "route policy declarations", - version: '1.0.3-rc.1' + version: '1.0.3' }); Package.onUse(function (api) { diff --git a/packages/service-configuration/package.js b/packages/service-configuration/package.js index 2e688c23fd..bdeab050bb 100644 --- a/packages/service-configuration/package.js +++ b/packages/service-configuration/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Manage the configuration for third-party services", - version: "1.0.3-rc.1" + version: "1.0.3" }); Package.onUse(function(api) { diff --git a/packages/session/package.js b/packages/session/package.js index 36a32b5dec..c67579fcc0 100644 --- a/packages/session/package.js +++ b/packages/session/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Session variable", - version: '1.0.5-rc.1' + version: '1.0.5' }); Package.onUse(function (api) { diff --git a/packages/sha/package.js b/packages/sha/package.js index 918e32f815..1442878429 100644 --- a/packages/sha/package.js +++ b/packages/sha/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "SHA256 implementation", - version: "1.0.2-rc.1" + version: "1.0.2" }); Package.onUse(function (api) { diff --git a/packages/showdown/package.js b/packages/showdown/package.js index 86e9fafa58..3a5b38e673 100644 --- a/packages/showdown/package.js +++ b/packages/showdown/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Moved to the 'markdown' package", - version: '1.0.3-rc.1' + version: '1.0.3' }); Package.onUse(function (api) { diff --git a/packages/spacebars-compiler/package.js b/packages/spacebars-compiler/package.js index da77ba5a0e..143e79afe8 100644 --- a/packages/spacebars-compiler/package.js +++ b/packages/spacebars-compiler/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Compiler for Spacebars template language", - version: '1.0.4-rc.1' + version: '1.0.4' }); Package.onUse(function (api) { diff --git a/packages/spacebars-tests/package.js b/packages/spacebars-tests/package.js index eb5063dead..72491e6a5b 100644 --- a/packages/spacebars-tests/package.js +++ b/packages/spacebars-tests/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Additional tests for Spacebars", - version: '1.0.2-rc.1' + version: '1.0.2' }); // These tests are in a separate package to avoid a circular dependency diff --git a/packages/spacebars/package.js b/packages/spacebars/package.js index 255ed5e96e..07ad5f7790 100644 --- a/packages/spacebars/package.js +++ b/packages/spacebars/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Handlebars-like template language for Meteor", - version: '1.0.4-rc.1' + version: '1.0.4' }); // For more, see package `spacebars-compiler`, which is used by diff --git a/packages/spiderable/package.js b/packages/spiderable/package.js index 214968c87c..4ea9ad3177 100644 --- a/packages/spiderable/package.js +++ b/packages/spiderable/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Makes the application crawlable to web spiders", - version: "1.0.6-rc.1" + version: "1.0.6" }); Package.onUse(function (api) { diff --git a/packages/srp/package.js b/packages/srp/package.js index cd7e8df7ab..f5af568769 100644 --- a/packages/srp/package.js +++ b/packages/srp/package.js @@ -5,7 +5,7 @@ Package.describe({ summary: "Library for Secure Remote Password (SRP) exchanges", - version: "1.0.2-rc.1" + version: "1.0.2" }); Package.onUse(function (api) { diff --git a/packages/standard-app-packages/package.js b/packages/standard-app-packages/package.js index 5596a8dc14..c74ef95e6b 100644 --- a/packages/standard-app-packages/package.js +++ b/packages/standard-app-packages/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Moved to meteor-platform", - version: '1.0.4-rc.1' + version: '1.0.4' }); Package.onUse(function (api) { diff --git a/packages/star-translate/package.js b/packages/star-translate/package.js index bc8cdbfcff..5ef91c52f8 100644 --- a/packages/star-translate/package.js +++ b/packages/star-translate/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "A package for translating old bundles into stars", - version: "1.0.5-rc.1" + version: "1.0.5" }); Package.onUse(function (api) { diff --git a/packages/startup/package.js b/packages/startup/package.js index da6aba428b..97b8a5085a 100644 --- a/packages/startup/package.js +++ b/packages/startup/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Deprecated package (now empty)", - version: "1.0.2-rc.1" + version: "1.0.2" }); Package.onUse(function (api) { diff --git a/packages/stylus/package.js b/packages/stylus/package.js index f092355129..7daddd4826 100644 --- a/packages/stylus/package.js +++ b/packages/stylus/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: 'Expressive, dynamic, robust CSS', - version: "1.0.6-rc.1" + version: "1.0.6" }); Package.registerBuildPlugin({ diff --git a/packages/templating/package.js b/packages/templating/package.js index 21c05a405b..da7d40fb05 100644 --- a/packages/templating/package.js +++ b/packages/templating/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Allows templates to be defined in .html files", - version: '1.0.10-rc.3' + version: '1.0.10' }); // Today, this package is closely intertwined with Handlebars, meaning diff --git a/packages/test-helpers/package.js b/packages/test-helpers/package.js index 6e3aef014f..06e350f536 100644 --- a/packages/test-helpers/package.js +++ b/packages/test-helpers/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Utility functions for tests", - version: '1.0.3-rc.1' + version: '1.0.3' }); Package.onUse(function (api) { diff --git a/packages/test-in-browser/package.js b/packages/test-in-browser/package.js index b5d637c1cd..76d19f6984 100644 --- a/packages/test-in-browser/package.js +++ b/packages/test-in-browser/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Run tests interactively in the browser", - version: '1.0.6-rc.1' + version: '1.0.6' }); Package.onUse(function (api) { diff --git a/packages/test-in-console/package.js b/packages/test-in-console/package.js index b2401f5827..cea0258298 100644 --- a/packages/test-in-console/package.js +++ b/packages/test-in-console/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Run tests noninteractively, with results going to the console.", - version: '1.0.4-rc.1' + version: '1.0.4' }); Package.onUse(function (api) { diff --git a/packages/test-server-tests-in-console-once/package.js b/packages/test-server-tests-in-console-once/package.js index e0da25f9c1..49169d8a34 100644 --- a/packages/test-server-tests-in-console-once/package.js +++ b/packages/test-server-tests-in-console-once/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Run server tests noninteractively, with results going to the console.", - version: '1.0.2-rc.1' + version: '1.0.2' }); Package.onUse(function (api) { diff --git a/packages/tinytest/package.js b/packages/tinytest/package.js index 06bf1a48e9..9e83161456 100644 --- a/packages/tinytest/package.js +++ b/packages/tinytest/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Tiny testing framework", - version: '1.0.4-rc.1' + version: '1.0.4' }); Package.onUse(function (api) { diff --git a/packages/tracker/package.js b/packages/tracker/package.js index d19f67fd7e..8128fb76a0 100644 --- a/packages/tracker/package.js +++ b/packages/tracker/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Dependency tracker to allow reactive callbacks", - version: '1.0.4-rc.1' + version: '1.0.4' }); Package.onUse(function (api) { diff --git a/packages/twitter/package.js b/packages/twitter/package.js index 2839a3b0f9..b807c7c4c3 100644 --- a/packages/twitter/package.js +++ b/packages/twitter/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Twitter OAuth flow", - version: '1.1.3-rc.1' + version: '1.1.3' }); Package.onUse(function(api) { diff --git a/packages/ui/package.js b/packages/ui/package.js index 7e620f056e..492e98efb4 100644 --- a/packages/ui/package.js +++ b/packages/ui/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Deprecated: Use the 'blaze' package", - version: '1.0.5-rc.1' + version: '1.0.5' }); Package.onUse(function (api) { diff --git a/packages/underscore-tests/package.js b/packages/underscore-tests/package.js index 1d6791d355..52cba85ba6 100644 --- a/packages/underscore-tests/package.js +++ b/packages/underscore-tests/package.js @@ -2,7 +2,7 @@ Package.describe({ // These tests can't be directly in the underscore packages since // Tinytest depends on underscore summary: "Tests for the underscore package", - version: '1.0.2-rc.1' + version: '1.0.2' }); Package.onTest(function (api) { diff --git a/packages/underscore/package.js b/packages/underscore/package.js index 4138d221b8..35e6311aee 100644 --- a/packages/underscore/package.js +++ b/packages/underscore/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Collection of small helpers: _.map, _.each, ...", - version: '1.0.2-rc.1' + version: '1.0.2' }); Package.onUse(function (api) { diff --git a/packages/url/package.js b/packages/url/package.js index abdf6dba0a..6321edb7a5 100644 --- a/packages/url/package.js +++ b/packages/url/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Utility code for constructing URLs", - version: "1.0.3-rc.1" + version: "1.0.3" }); Package.onUse(function(api) { diff --git a/packages/webapp-hashing/package.js b/packages/webapp-hashing/package.js index 7cebcd0694..de52ffcdfc 100644 --- a/packages/webapp-hashing/package.js +++ b/packages/webapp-hashing/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Used internally by WebApp. Knows how to hash programs from manifests.", - version: "1.0.2-rc.1" + version: "1.0.2" }); Package.onUse(function(api) { diff --git a/packages/webapp/package.js b/packages/webapp/package.js index e65ade35f9..a643fa6758 100644 --- a/packages/webapp/package.js +++ b/packages/webapp/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Serves a Meteor app over HTTP", - version: '1.1.5-rc.1' + version: '1.1.5' }); Npm.depends({connect: "2.9.0", diff --git a/packages/weibo/package.js b/packages/weibo/package.js index a27093d6e1..d05c81df04 100644 --- a/packages/weibo/package.js +++ b/packages/weibo/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Weibo OAuth flow", - version: '1.1.2-rc.1' + version: '1.1.2' }); Package.onUse(function(api) { diff --git a/packages/xmlbuilder/package.js b/packages/xmlbuilder/package.js index 5c5db8d77a..e0009c193b 100644 --- a/packages/xmlbuilder/package.js +++ b/packages/xmlbuilder/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "An XML builder for node.js similar to java-xmlbuilder.", - version: '2.4.5-rc.1' + version: '2.4.5' }); Npm.depends({ From 8722ac60636828eb5739fa5d9378cecb0c443aaf Mon Sep 17 00:00:00 2001 From: David Glasser Date: Fri, 19 Dec 2014 10:32:31 -0800 Subject: [PATCH 57/60] Bump release file for 1.0.2 --- scripts/admin/meteor-release-official.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/admin/meteor-release-official.json b/scripts/admin/meteor-release-official.json index a48d5a4159..535d959a83 100644 --- a/scripts/admin/meteor-release-official.json +++ b/scripts/admin/meteor-release-official.json @@ -1,6 +1,6 @@ { "track": "METEOR", - "version": "1.0.1", + "version": "1.0.2", "recommended": false, "official": true, "description": "The Official Meteor Distribution" From 9717ba320033995eacb9f02de1e1b8accc2c7f19 Mon Sep 17 00:00:00 2001 From: David Glasser Date: Fri, 19 Dec 2014 11:26:19 -0800 Subject: [PATCH 58/60] Update docs for 1.0.2 --- docs/.meteor/release | 2 +- docs/.meteor/versions | 116 ++++++++++++++++++++--------------------- docs/client/helpers.js | 2 +- 3 files changed, 59 insertions(+), 61 deletions(-) diff --git a/docs/.meteor/release b/docs/.meteor/release index f1b6255960..b3841a0e9d 100644 --- a/docs/.meteor/release +++ b/docs/.meteor/release @@ -1 +1 @@ -METEOR@1.0.1 +METEOR@1.0.2 diff --git a/docs/.meteor/versions b/docs/.meteor/versions index 53de18f5fd..a18613034d 100644 --- a/docs/.meteor/versions +++ b/docs/.meteor/versions @@ -1,61 +1,59 @@ -appcache@1.0.2 -application-configuration@1.0.3 -autoupdate@1.1.3 -base64@1.0.1 -binary-heap@1.0.1 -blaze-tools@1.0.1 -blaze@2.0.3 -boilerplate-generator@1.0.1 -callback-hook@1.0.1 -check@1.0.2 -coffeescript@1.0.4 -ctl-helper@1.0.4 -ctl@1.0.2 -ddp@1.0.12 -deps@1.0.5 -ejson@1.0.4 -fastclick@1.0.1 -follower-livedata@1.0.2 -geojson-utils@1.0.1 -html-tools@1.0.2 -htmljs@1.0.2 -http@1.0.8 -id-map@1.0.1 -jquery-waypoints@1.0.1 -jquery@1.0.1 -json@1.0.1 -launch-screen@1.0.0 -less@1.0.11 -livedata@1.0.11 -logging@1.0.5 -markdown@1.0.2 -meteor-platform@1.2.0 -meteor@1.1.3 -minifiers@1.1.2 -minimongo@1.0.5 -mobile-status-bar@1.0.1 -mongo@1.0.9 -observe-sequence@1.0.3 -ordered-dict@1.0.1 -random@1.0.1 -reactive-dict@1.0.4 -reactive-var@1.0.3 -reload-safetybelt@1.0.1 -reload@1.1.1 -retry@1.0.1 -routepolicy@1.0.2 -session@1.0.4 -showdown@1.0.2 +appcache@1.0.3 +application-configuration@1.0.4 +autoupdate@1.1.4 +base64@1.0.2 +binary-heap@1.0.2 +blaze@2.0.4 +blaze-tools@1.0.2 +boilerplate-generator@1.0.2 +callback-hook@1.0.2 +check@1.0.3 +coffeescript@1.0.5 +ddp@1.0.13 +deps@1.0.6 +ejson@1.0.5 +fastclick@1.0.2 +follower-livedata@1.0.3 +geojson-utils@1.0.2 +html-tools@1.0.3 +htmljs@1.0.3 +http@1.0.9 +id-map@1.0.2 +jquery@1.0.2 +jquery-waypoints@1.0.2 +json@1.0.2 +launch-screen@1.0.1 +less@1.0.12 +livedata@1.0.12 +logging@1.0.6 +markdown@1.0.3 +meteor@1.1.4 +meteor-platform@1.2.1 +minifiers@1.1.3 +minimongo@1.0.6 +mobile-status-bar@1.0.2 +mongo@1.0.10 +observe-sequence@1.0.4 +ordered-dict@1.0.2 +random@1.0.2 +reactive-dict@1.0.5 +reactive-var@1.0.4 +reload@1.1.2 +reload-safetybelt@1.0.2 +retry@1.0.2 +routepolicy@1.0.3 +session@1.0.5 +showdown@1.0.3 simple:highlight.js@1.0.9 simple:markdown-templating@1.2.6 -spacebars-compiler@1.0.3 -spacebars@1.0.3 -spiderable@1.0.5 -standard-app-packages@1.0.3 -templating@1.0.9 -tracker@1.0.3 -ui@1.0.4 -underscore@1.0.1 -url@1.0.2 -webapp-hashing@1.0.1 -webapp@1.1.4 +spacebars@1.0.4 +spacebars-compiler@1.0.4 +spiderable@1.0.6 +standard-app-packages@1.0.4 +templating@1.0.10 +tracker@1.0.4 +ui@1.0.5 +underscore@1.0.2 +url@1.0.3 +webapp@1.1.5 +webapp-hashing@1.0.2 diff --git a/docs/client/helpers.js b/docs/client/helpers.js index 246868150a..15e496d57c 100644 --- a/docs/client/helpers.js +++ b/docs/client/helpers.js @@ -1,4 +1,4 @@ -release = Meteor.release ? "1.0.1" : "(checkout)"; +release = Meteor.release ? "1.0.2" : "(checkout)"; Template.registerHelper("release", release); From fc829ad525b27b36bd5179f471ce299aa57a0fc3 Mon Sep 17 00:00:00 2001 From: David Glasser Date: Fri, 19 Dec 2014 11:31:38 -0800 Subject: [PATCH 59/60] update examples for 1.0.2 --- examples/clock/.meteor/release | 2 +- examples/clock/.meteor/versions | 103 +++++++-------- examples/leaderboard/.meteor/release | 2 +- examples/leaderboard/.meteor/versions | 102 +++++++-------- examples/localmarket/.meteor/release | 2 +- examples/localmarket/.meteor/versions | 123 +++++++++--------- .../request/.npm/package/npm-shrinkwrap.json | 91 ++++++++----- examples/todos/.meteor/release | 2 +- examples/todos/.meteor/versions | 117 ++++++++--------- 9 files changed, 282 insertions(+), 262 deletions(-) diff --git a/examples/clock/.meteor/release b/examples/clock/.meteor/release index f1b6255960..b3841a0e9d 100644 --- a/examples/clock/.meteor/release +++ b/examples/clock/.meteor/release @@ -1 +1 @@ -METEOR@1.0.1 +METEOR@1.0.2 diff --git a/examples/clock/.meteor/versions b/examples/clock/.meteor/versions index 7b6f5e3263..149aa498a2 100644 --- a/examples/clock/.meteor/versions +++ b/examples/clock/.meteor/versions @@ -1,53 +1,50 @@ -application-configuration@1.0.3 -autopublish@1.0.1 -autoupdate@1.1.3 -base64@1.0.1 -binary-heap@1.0.1 -blaze-tools@1.0.1 -blaze@2.0.3 -boilerplate-generator@1.0.1 -callback-hook@1.0.1 -check@1.0.2 -ctl-helper@1.0.4 -ctl@1.0.2 -ddp@1.0.12 -deps@1.0.5 -ejson@1.0.4 -fastclick@1.0.1 -follower-livedata@1.0.2 -geojson-utils@1.0.1 -html-tools@1.0.2 -htmljs@1.0.2 -http@1.0.8 -id-map@1.0.1 -insecure@1.0.1 -jquery@1.0.1 -json@1.0.1 -launch-screen@1.0.0 -livedata@1.0.11 -logging@1.0.5 -meteor-platform@1.2.0 -meteor@1.1.3 -minifiers@1.1.2 -minimongo@1.0.5 -mobile-status-bar@1.0.1 -mongo@1.0.9 -observe-sequence@1.0.3 -ordered-dict@1.0.1 -random@1.0.1 -reactive-dict@1.0.4 -reactive-var@1.0.3 -reload@1.1.1 -retry@1.0.1 -routepolicy@1.0.2 -session@1.0.4 -spacebars-compiler@1.0.3 -spacebars@1.0.3 -standard-app-packages@1.0.3 -templating@1.0.9 -tracker@1.0.3 -ui@1.0.4 -underscore@1.0.1 -url@1.0.2 -webapp-hashing@1.0.1 -webapp@1.1.4 +application-configuration@1.0.4 +autopublish@1.0.2 +autoupdate@1.1.4 +base64@1.0.2 +binary-heap@1.0.2 +blaze@2.0.4 +blaze-tools@1.0.2 +boilerplate-generator@1.0.2 +callback-hook@1.0.2 +check@1.0.3 +ddp@1.0.13 +deps@1.0.6 +ejson@1.0.5 +fastclick@1.0.2 +follower-livedata@1.0.3 +geojson-utils@1.0.2 +html-tools@1.0.3 +htmljs@1.0.3 +http@1.0.9 +id-map@1.0.2 +insecure@1.0.2 +jquery@1.0.2 +json@1.0.2 +launch-screen@1.0.1 +livedata@1.0.12 +logging@1.0.6 +meteor@1.1.4 +meteor-platform@1.2.1 +minifiers@1.1.3 +minimongo@1.0.6 +mobile-status-bar@1.0.2 +mongo@1.0.10 +observe-sequence@1.0.4 +ordered-dict@1.0.2 +random@1.0.2 +reactive-dict@1.0.5 +reactive-var@1.0.4 +reload@1.1.2 +retry@1.0.2 +routepolicy@1.0.3 +session@1.0.5 +spacebars@1.0.4 +spacebars-compiler@1.0.4 +templating@1.0.10 +tracker@1.0.4 +ui@1.0.5 +underscore@1.0.2 +url@1.0.3 +webapp@1.1.5 +webapp-hashing@1.0.2 diff --git a/examples/leaderboard/.meteor/release b/examples/leaderboard/.meteor/release index f1b6255960..b3841a0e9d 100644 --- a/examples/leaderboard/.meteor/release +++ b/examples/leaderboard/.meteor/release @@ -1 +1 @@ -METEOR@1.0.1 +METEOR@1.0.2 diff --git a/examples/leaderboard/.meteor/versions b/examples/leaderboard/.meteor/versions index 2c204e229d..149aa498a2 100644 --- a/examples/leaderboard/.meteor/versions +++ b/examples/leaderboard/.meteor/versions @@ -1,52 +1,50 @@ -application-configuration@1.0.3 -autopublish@1.0.1 -autoupdate@1.1.3 -base64@1.0.1 -binary-heap@1.0.1 -blaze-tools@1.0.1 -blaze@2.0.3 -boilerplate-generator@1.0.1 -callback-hook@1.0.1 -check@1.0.2 -ctl-helper@1.0.4 -ctl@1.0.2 -ddp@1.0.12 -deps@1.0.5 -ejson@1.0.4 -fastclick@1.0.1 -follower-livedata@1.0.2 -geojson-utils@1.0.1 -html-tools@1.0.2 -htmljs@1.0.2 -http@1.0.8 -id-map@1.0.1 -insecure@1.0.1 -jquery@1.0.1 -json@1.0.1 -launch-screen@1.0.0 -livedata@1.0.11 -logging@1.0.5 -meteor-platform@1.2.0 -meteor@1.1.3 -minifiers@1.1.2 -minimongo@1.0.5 -mobile-status-bar@1.0.1 -mongo@1.0.9 -observe-sequence@1.0.3 -ordered-dict@1.0.1 -random@1.0.1 -reactive-dict@1.0.4 -reactive-var@1.0.3 -reload@1.1.1 -retry@1.0.1 -routepolicy@1.0.2 -session@1.0.4 -spacebars-compiler@1.0.3 -spacebars@1.0.3 -templating@1.0.9 -tracker@1.0.3 -ui@1.0.4 -underscore@1.0.1 -url@1.0.2 -webapp-hashing@1.0.1 -webapp@1.1.4 +application-configuration@1.0.4 +autopublish@1.0.2 +autoupdate@1.1.4 +base64@1.0.2 +binary-heap@1.0.2 +blaze@2.0.4 +blaze-tools@1.0.2 +boilerplate-generator@1.0.2 +callback-hook@1.0.2 +check@1.0.3 +ddp@1.0.13 +deps@1.0.6 +ejson@1.0.5 +fastclick@1.0.2 +follower-livedata@1.0.3 +geojson-utils@1.0.2 +html-tools@1.0.3 +htmljs@1.0.3 +http@1.0.9 +id-map@1.0.2 +insecure@1.0.2 +jquery@1.0.2 +json@1.0.2 +launch-screen@1.0.1 +livedata@1.0.12 +logging@1.0.6 +meteor@1.1.4 +meteor-platform@1.2.1 +minifiers@1.1.3 +minimongo@1.0.6 +mobile-status-bar@1.0.2 +mongo@1.0.10 +observe-sequence@1.0.4 +ordered-dict@1.0.2 +random@1.0.2 +reactive-dict@1.0.5 +reactive-var@1.0.4 +reload@1.1.2 +retry@1.0.2 +routepolicy@1.0.3 +session@1.0.5 +spacebars@1.0.4 +spacebars-compiler@1.0.4 +templating@1.0.10 +tracker@1.0.4 +ui@1.0.5 +underscore@1.0.2 +url@1.0.3 +webapp@1.1.5 +webapp-hashing@1.0.2 diff --git a/examples/localmarket/.meteor/release b/examples/localmarket/.meteor/release index f1b6255960..b3841a0e9d 100644 --- a/examples/localmarket/.meteor/release +++ b/examples/localmarket/.meteor/release @@ -1 +1 @@ -METEOR@1.0.1 +METEOR@1.0.2 diff --git a/examples/localmarket/.meteor/versions b/examples/localmarket/.meteor/versions index d95f6d02c9..c264c508de 100644 --- a/examples/localmarket/.meteor/versions +++ b/examples/localmarket/.meteor/versions @@ -1,73 +1,70 @@ -accounts-base@1.1.2 -accounts-oauth@1.1.2 -accounts-twitter@1.0.2 -application-configuration@1.0.3 -autoupdate@1.1.3 -base64@1.0.1 -binary-heap@1.0.1 -blaze-tools@1.0.1 -blaze@2.0.3 -boilerplate-generator@1.0.1 -callback-hook@1.0.1 -check@1.0.2 -coffeescript@1.0.4 -ctl-helper@1.0.4 -ctl@1.0.2 -ddp@1.0.12 -deps@1.0.5 -ejson@1.0.4 -email@1.0.4 -fastclick@1.0.1 -follower-livedata@1.0.2 -geojson-utils@1.0.1 -html-tools@1.0.2 -htmljs@1.0.2 -http@1.0.8 -id-map@1.0.1 +accounts-base@1.1.3 +accounts-oauth@1.1.3 +accounts-twitter@1.0.3 +application-configuration@1.0.4 +autoupdate@1.1.4 +base64@1.0.2 +binary-heap@1.0.2 +blaze@2.0.4 +blaze-tools@1.0.2 +boilerplate-generator@1.0.2 +callback-hook@1.0.2 +check@1.0.3 +coffeescript@1.0.5 +ddp@1.0.13 +deps@1.0.6 +ejson@1.0.5 +email@1.0.5 +fastclick@1.0.2 +follower-livedata@1.0.3 +geojson-utils@1.0.2 +html-tools@1.0.3 +htmljs@1.0.3 +http@1.0.9 +id-map@1.0.2 iron:core@0.3.4 iron:dynamic-template@0.4.1 iron:layout@0.4.1 iron:router@0.9.4 -jquery-waypoints@1.0.1 -jquery@1.0.1 -json@1.0.1 -launch-screen@1.0.0 -less@1.0.11 -livedata@1.0.11 -localstorage@1.0.1 -logging@1.0.5 +jquery@1.0.2 +jquery-waypoints@1.0.2 +json@1.0.2 +launch-screen@1.0.1 +less@1.0.12 +livedata@1.0.12 +localstorage@1.0.2 +logging@1.0.6 mdg:camera@1.1.3 mdg:geolocation@1.0.2 -meteor-platform@1.2.0 -meteor@1.1.3 -minifiers@1.1.2 -minimongo@1.0.5 -mobile-status-bar@1.0.1 -mongo@1.0.9 -oauth1@1.1.2 -oauth@1.1.2 -observe-sequence@1.0.3 -ordered-dict@1.0.1 +meteor@1.1.4 +meteor-platform@1.2.1 +minifiers@1.1.3 +minimongo@1.0.6 +mobile-status-bar@1.0.2 +mongo@1.0.10 +oauth@1.1.3 +oauth1@1.1.3 +observe-sequence@1.0.4 +ordered-dict@1.0.2 percolate:velocityjs@1.1.0 percolate:wireframing@0.2.0 -random@1.0.1 -reactive-dict@1.0.4 -reactive-var@1.0.3 -reload@1.1.1 +random@1.0.2 +reactive-dict@1.0.5 +reactive-var@1.0.4 +reload@1.1.2 request@0.0.0 -retry@1.0.1 -routepolicy@1.0.2 -service-configuration@1.0.2 -session@1.0.4 -spacebars-compiler@1.0.3 -spacebars@1.0.3 -standard-app-packages@1.0.3 -templating@1.0.9 +retry@1.0.2 +routepolicy@1.0.3 +service-configuration@1.0.3 +session@1.0.5 +spacebars@1.0.4 +spacebars-compiler@1.0.4 +templating@1.0.10 tmeasday:publish-counts@0.3.4 -tracker@1.0.3 -twitter@1.1.2 -ui@1.0.4 -underscore@1.0.1 -url@1.0.2 -webapp-hashing@1.0.1 -webapp@1.1.4 +tracker@1.0.4 +twitter@1.1.3 +ui@1.0.5 +underscore@1.0.2 +url@1.0.3 +webapp@1.1.5 +webapp-hashing@1.0.2 diff --git a/examples/localmarket/packages/request/.npm/package/npm-shrinkwrap.json b/examples/localmarket/packages/request/.npm/package/npm-shrinkwrap.json index 240e1288ba..ae9ab37cab 100644 --- a/examples/localmarket/packages/request/.npm/package/npm-shrinkwrap.json +++ b/examples/localmarket/packages/request/.npm/package/npm-shrinkwrap.json @@ -1,22 +1,61 @@ { "dependencies": { "request": { - "version": "2.33.0", + "version": "2.47.0", "dependencies": { - "qs": { - "version": "0.6.6" + "bl": { + "version": "0.9.3", + "dependencies": { + "readable-stream": { + "version": "1.0.33", + "dependencies": { + "core-util-is": { + "version": "1.0.1" + }, + "isarray": { + "version": "0.0.1" + }, + "string_decoder": { + "version": "0.10.31" + }, + "inherits": { + "version": "2.0.1" + } + } + } + } }, - "json-stringify-safe": { - "version": "5.0.0" + "caseless": { + "version": "0.6.0" }, "forever-agent": { "version": "0.5.2" }, - "node-uuid": { - "version": "1.4.1" + "form-data": { + "version": "0.1.4", + "dependencies": { + "mime": { + "version": "1.2.11" + }, + "async": { + "version": "0.9.0" + } + } }, - "mime": { - "version": "1.2.11" + "json-stringify-safe": { + "version": "5.0.0" + }, + "mime-types": { + "version": "1.0.2" + }, + "node-uuid": { + "version": "1.4.2" + }, + "qs": { + "version": "2.3.3" + }, + "tunnel-agent": { + "version": "0.4.0" }, "tough-cookie": { "version": "0.12.1", @@ -26,25 +65,6 @@ } } }, - "form-data": { - "version": "0.1.4", - "dependencies": { - "combined-stream": { - "version": "0.0.5", - "dependencies": { - "delayed-stream": { - "version": "0.0.5" - } - } - }, - "async": { - "version": "0.9.0" - } - } - }, - "tunnel-agent": { - "version": "0.3.0" - }, "http-signature": { "version": "0.10.0", "dependencies": { @@ -60,10 +80,10 @@ } }, "oauth-sign": { - "version": "0.3.0" + "version": "0.4.0" }, "hawk": { - "version": "1.0.0", + "version": "1.1.1", "dependencies": { "hoek": { "version": "0.9.1" @@ -81,6 +101,17 @@ }, "aws-sign2": { "version": "0.5.0" + }, + "stringstream": { + "version": "0.0.4" + }, + "combined-stream": { + "version": "0.0.7", + "dependencies": { + "delayed-stream": { + "version": "0.0.5" + } + } } } } diff --git a/examples/todos/.meteor/release b/examples/todos/.meteor/release index f1b6255960..b3841a0e9d 100644 --- a/examples/todos/.meteor/release +++ b/examples/todos/.meteor/release @@ -1 +1 @@ -METEOR@1.0.1 +METEOR@1.0.2 diff --git a/examples/todos/.meteor/versions b/examples/todos/.meteor/versions index aec8137f6b..e7c716c457 100644 --- a/examples/todos/.meteor/versions +++ b/examples/todos/.meteor/versions @@ -1,65 +1,62 @@ -accounts-base@1.1.2 -accounts-password@1.0.4 -application-configuration@1.0.3 -autoupdate@1.1.3 -base64@1.0.1 -binary-heap@1.0.1 -blaze-tools@1.0.1 -blaze@2.0.3 -boilerplate-generator@1.0.1 -callback-hook@1.0.1 -check@1.0.2 -ctl-helper@1.0.4 -ctl@1.0.2 -ddp@1.0.12 -deps@1.0.5 -ejson@1.0.4 -email@1.0.4 -fastclick@1.0.1 -follower-livedata@1.0.2 -geojson-utils@1.0.1 -html-tools@1.0.2 -htmljs@1.0.2 -http@1.0.8 -id-map@1.0.1 -insecure@1.0.1 +accounts-base@1.1.3 +accounts-password@1.0.5 +application-configuration@1.0.4 +autoupdate@1.1.4 +base64@1.0.2 +binary-heap@1.0.2 +blaze@2.0.4 +blaze-tools@1.0.2 +boilerplate-generator@1.0.2 +callback-hook@1.0.2 +check@1.0.3 +ddp@1.0.13 +deps@1.0.6 +ejson@1.0.5 +email@1.0.5 +fastclick@1.0.2 +follower-livedata@1.0.3 +geojson-utils@1.0.2 +html-tools@1.0.3 +htmljs@1.0.3 +http@1.0.9 +id-map@1.0.2 +insecure@1.0.2 iron:core@0.3.4 iron:dynamic-template@0.4.1 iron:layout@0.4.1 iron:router@0.9.4 -jquery@1.0.1 -json@1.0.1 -launch-screen@1.0.0 -less@1.0.11 -livedata@1.0.11 -localstorage@1.0.1 -logging@1.0.5 -meteor-platform@1.2.0 -meteor@1.1.3 -minifiers@1.1.2 -minimongo@1.0.5 -mobile-status-bar@1.0.1 -mongo@1.0.9 +jquery@1.0.2 +json@1.0.2 +launch-screen@1.0.1 +less@1.0.12 +livedata@1.0.12 +localstorage@1.0.2 +logging@1.0.6 +meteor@1.1.4 +meteor-platform@1.2.1 +minifiers@1.1.3 +minimongo@1.0.6 +mobile-status-bar@1.0.2 +mongo@1.0.10 npm-bcrypt@0.7.7 -observe-sequence@1.0.3 -ordered-dict@1.0.1 -random@1.0.1 -reactive-dict@1.0.4 -reactive-var@1.0.3 -reload@1.1.1 -retry@1.0.1 -routepolicy@1.0.2 -service-configuration@1.0.2 -session@1.0.4 -sha@1.0.1 -spacebars-compiler@1.0.3 -spacebars@1.0.3 -srp@1.0.1 -standard-app-packages@1.0.3 -templating@1.0.9 -tracker@1.0.3 -ui@1.0.4 -underscore@1.0.1 -url@1.0.2 -webapp-hashing@1.0.1 -webapp@1.1.4 +observe-sequence@1.0.4 +ordered-dict@1.0.2 +random@1.0.2 +reactive-dict@1.0.5 +reactive-var@1.0.4 +reload@1.1.2 +retry@1.0.2 +routepolicy@1.0.3 +service-configuration@1.0.3 +session@1.0.5 +sha@1.0.2 +spacebars@1.0.4 +spacebars-compiler@1.0.4 +srp@1.0.2 +templating@1.0.10 +tracker@1.0.4 +ui@1.0.5 +underscore@1.0.2 +url@1.0.3 +webapp@1.1.5 +webapp-hashing@1.0.2 From 0befea50f263fc952d0ae22c9f5716cd99ce1cd1 Mon Sep 17 00:00:00 2001 From: David Glasser Date: Fri, 19 Dec 2014 11:34:07 -0800 Subject: [PATCH 60/60] Delete versions.json files; they are no longer used --- .../packages/request/versions.json | 15 ------------ .../non-core/jquery-history/versions.json | 23 ------------------- packages/non-core/jquery-layout/versions.json | 19 --------------- packages/non-core/npm-bcrypt/versions.json | 15 ------------ .../non-core/npm-node-aes-gcm/versions.json | 15 ------------ packages/tracker/versions.json | 15 ------------ .../versions.json | 15 ------------ .../test-package/addTxt-versions.json | 6 ----- .../test-package/test-package-versions.json | 20 ---------------- .../packages/test-package/versions.json | 20 ---------------- 10 files changed, 163 deletions(-) delete mode 100644 examples/localmarket/packages/request/versions.json delete mode 100644 packages/non-core/jquery-history/versions.json delete mode 100644 packages/non-core/jquery-layout/versions.json delete mode 100644 packages/non-core/npm-bcrypt/versions.json delete mode 100644 packages/non-core/npm-node-aes-gcm/versions.json delete mode 100644 packages/tracker/versions.json delete mode 100644 tools/tests/apps/package-tests/packages/say-something-client-targets/versions.json delete mode 100644 tools/tests/old/app-with-private/packages/test-package/addTxt-versions.json delete mode 100644 tools/tests/old/app-with-private/packages/test-package/test-package-versions.json delete mode 100644 tools/tests/old/app-with-private/packages/test-package/versions.json diff --git a/examples/localmarket/packages/request/versions.json b/examples/localmarket/packages/request/versions.json deleted file mode 100644 index b5e0794f73..0000000000 --- a/examples/localmarket/packages/request/versions.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "dependencies": [ - [ - "meteor", - "1.1.3-rc.0" - ], - [ - "underscore", - "1.0.1" - ] - ], - "pluginDependencies": [], - "toolVersion": "meteor-tool@1.0.35-rc.11", - "format": "1.0" -} \ No newline at end of file diff --git a/packages/non-core/jquery-history/versions.json b/packages/non-core/jquery-history/versions.json deleted file mode 100644 index bf5daa44b3..0000000000 --- a/packages/non-core/jquery-history/versions.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "dependencies": [ - [ - "jquery", - "1.0.1" - ], - [ - "json", - "1.0.1" - ], - [ - "meteor", - "1.1.3" - ], - [ - "underscore", - "1.0.1" - ] - ], - "pluginDependencies": [], - "toolVersion": "meteor-tool@1.0.35", - "format": "1.0" -} \ No newline at end of file diff --git a/packages/non-core/jquery-layout/versions.json b/packages/non-core/jquery-layout/versions.json deleted file mode 100644 index eb0cf1bc5b..0000000000 --- a/packages/non-core/jquery-layout/versions.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "dependencies": [ - [ - "jquery", - "1.0.1" - ], - [ - "meteor", - "1.1.3" - ], - [ - "underscore", - "1.0.1" - ] - ], - "pluginDependencies": [], - "toolVersion": "meteor-tool@1.0.35", - "format": "1.0" -} \ No newline at end of file diff --git a/packages/non-core/npm-bcrypt/versions.json b/packages/non-core/npm-bcrypt/versions.json deleted file mode 100644 index 514fd08cdc..0000000000 --- a/packages/non-core/npm-bcrypt/versions.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "dependencies": [ - [ - "meteor", - "1.0.0" - ], - [ - "underscore", - "1.0.0" - ] - ], - "pluginDependencies": [], - "toolVersion": "meteor-tool@1.0.0", - "format": "1.0" -} \ No newline at end of file diff --git a/packages/non-core/npm-node-aes-gcm/versions.json b/packages/non-core/npm-node-aes-gcm/versions.json deleted file mode 100644 index 514fd08cdc..0000000000 --- a/packages/non-core/npm-node-aes-gcm/versions.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "dependencies": [ - [ - "meteor", - "1.0.0" - ], - [ - "underscore", - "1.0.0" - ] - ], - "pluginDependencies": [], - "toolVersion": "meteor-tool@1.0.0", - "format": "1.0" -} \ No newline at end of file diff --git a/packages/tracker/versions.json b/packages/tracker/versions.json deleted file mode 100644 index 2537c0d099..0000000000 --- a/packages/tracker/versions.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "dependencies": [ - [ - "meteor", - "1.0.2" - ], - [ - "underscore", - "1.0.0" - ] - ], - "pluginDependencies": [], - "toolVersion": "meteor-tool@1.0.26", - "format": "1.0" -} \ No newline at end of file diff --git a/tools/tests/apps/package-tests/packages/say-something-client-targets/versions.json b/tools/tests/apps/package-tests/packages/say-something-client-targets/versions.json deleted file mode 100644 index 514fd08cdc..0000000000 --- a/tools/tests/apps/package-tests/packages/say-something-client-targets/versions.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "dependencies": [ - [ - "meteor", - "1.0.0" - ], - [ - "underscore", - "1.0.0" - ] - ], - "pluginDependencies": [], - "toolVersion": "meteor-tool@1.0.0", - "format": "1.0" -} \ No newline at end of file diff --git a/tools/tests/old/app-with-private/packages/test-package/addTxt-versions.json b/tools/tests/old/app-with-private/packages/test-package/addTxt-versions.json deleted file mode 100644 index 5244e19ec9..0000000000 --- a/tools/tests/old/app-with-private/packages/test-package/addTxt-versions.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "dependencies": [], - "pluginDependencies": [], - "toolVersion": "meteor-tool@1.0.0", - "format": "1.0" -} \ No newline at end of file diff --git a/tools/tests/old/app-with-private/packages/test-package/test-package-versions.json b/tools/tests/old/app-with-private/packages/test-package/test-package-versions.json deleted file mode 100644 index 6f45875f73..0000000000 --- a/tools/tests/old/app-with-private/packages/test-package/test-package-versions.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "dependencies": [ - [ - "meteor", - "1.0.0" - ], - [ - "underscore", - "1.0.0" - ] - ], - "pluginDependencies": [ - [ - "addTxt", - {} - ] - ], - "toolVersion": "meteor-tool@1.0.0", - "format": "1.0" -} \ No newline at end of file diff --git a/tools/tests/old/app-with-private/packages/test-package/versions.json b/tools/tests/old/app-with-private/packages/test-package/versions.json deleted file mode 100644 index 3da615ea38..0000000000 --- a/tools/tests/old/app-with-private/packages/test-package/versions.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "dependencies": [ - [ - "meteor", - "1.1.3" - ], - [ - "underscore", - "1.0.1" - ] - ], - "pluginDependencies": [ - [ - "addTxt", - {} - ] - ], - "toolVersion": "meteor-tool@CHECKOUT", - "format": "1.0" -} \ No newline at end of file