From ded0601d0a4634f68ad56807342ce253a2f7a36a Mon Sep 17 00:00:00 2001 From: David Greenspan Date: Mon, 6 Oct 2014 13:44:32 -0700 Subject: [PATCH 01/39] Minor clarifications to self-tests code --- tools/selftest.js | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/tools/selftest.js b/tools/selftest.js index 3b87098a5d..86bc276648 100644 --- a/tools/selftest.js +++ b/tools/selftest.js @@ -1435,7 +1435,10 @@ var runTests = function (options) { testState = { version: 1, lastPassedHashes: {} }; var currentHashes = {}; - // _.keys(skipCounts) is the set of tags to skip + // _.keys(skipCounts) is the set of tags to skip. + // skipCounts also holds counts of tests skipped for other reasons + // (like not matching the test regex) and is used for printing + // messages about how many tests were skipped. var skipCounts = {}; if (! files.inCheckout()) skipCounts['checkout'] = 0; @@ -1461,7 +1464,7 @@ var runTests = function (options) { tests = _.filter(tests, function (test) { return test.fileHash !== testState.lastPassedHashes[test.file]; }); - skipCounts.unchanged = lengthBeforeOnlyChanged - tests.length; + skipCounts['unchanged'] = lengthBeforeOnlyChanged - tests.length; } var failuresInFile = {}; @@ -1569,10 +1572,10 @@ var runTests = function (options) { if (totalRun > 0) process.stderr.write("\n"); - var totalSkipCount = 0; + var skippedSome = false; _.each(skipCounts, function (count, tag) { - totalSkipCount += count; if (count) { + skippedSome = true; process.stderr.write("Skipped " + count + " " + tag + " test" + (count > 1 ? "s" : "") + " (" + tagDescriptions[tag] + ")\n"); @@ -1584,7 +1587,7 @@ var runTests = function (options) { return 0; } else if (failureCount === 0) { var disclaimers = ''; - if (totalSkipCount > 0) + if (skippedSome) disclaimers += " other"; process.stderr.write("All" + disclaimers + " tests passed.\n"); return 0; From ceda65f24be058157b31bde8a7ac8d3ea0bc71fc Mon Sep 17 00:00:00 2001 From: David Greenspan Date: Mon, 6 Oct 2014 17:20:39 -0700 Subject: [PATCH 02/39] Refactor selftest.runTests and create listTests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Not extensively tested. Needs comments describing options to the new functions (e.g. getFilteredTests) and updated usage for `meteor self-test ––list`. Filtering and running tests now proceeds in stages - Add “pseudo-tags” like non-matching and unchanged - Remove tests whose tags are in a list of “tags to skip” - Run or list the resulting TestList - Optionally report skipped tests - Optionally save the testState --- tools/commands.js | 14 ++- tools/selftest.js | 293 ++++++++++++++++++++++++++++++---------------- 2 files changed, 205 insertions(+), 102 deletions(-) diff --git a/tools/commands.js b/tools/commands.js index 004f9c6302..d65cf193b3 100644 --- a/tools/commands.js +++ b/tools/commands.js @@ -1708,7 +1708,8 @@ main.registerCommand({ 'force-online': { type: Boolean }, slow: { type: Boolean }, browserstack: { type: Boolean }, - history: { type: Number } + history: { type: Number }, + list: { type: Boolean } }, hidden: true }, function (options) { @@ -1737,6 +1738,17 @@ main.registerCommand({ } } + if (options.list) { + selftest.listTests({ + onlyChanged: options.changed, + offline: offline, + includeSlowTests: options.slow, + testRegexp: testRegexp + }); + + return 0; + } + var clients = { browserstack: options.browserstack }; diff --git a/tools/selftest.js b/tools/selftest.js index 86bc276648..7766274326 100644 --- a/tools/selftest.js +++ b/tools/selftest.js @@ -18,6 +18,7 @@ var webdriver = require('browserstack-webdriver'); var phantomjs = require('phantomjs'); var catalogRemote = require('./catalog-remote.js'); var Package = uniload.load({ packages: ["ejson"] }); +var Console = require('./console.js').Console; var toolPackageName = "meteor-tool"; @@ -1385,10 +1386,8 @@ var define = function (name, tagsList, f) { tagsList = []; } - var tags = {}; - _.each(tagsList, function (tag) { - tags[tag] = true; - }); + var tags = tagsList.slice(); + tags.sort(); allTests.push(new Test({ name: name, @@ -1399,94 +1398,201 @@ var define = function (name, tagsList, f) { })); }; - /////////////////////////////////////////////////////////////////////////////// -// Running tests +// Choosing tests /////////////////////////////////////////////////////////////////////////////// var tagDescriptions = { checkout: 'can only run from checkouts', net: 'require an internet connection', slow: 'take quite a long time', - // these last two are not actually test tags; they reflect the use of - // --changed and --tests + // these last two are pseudo-tags, assigned to tests when you specify + // --changed or a regex pattern unchanged: 'unchanged since last pass', 'non-matching': "don't match specified pattern" }; -// options: onlyChanged, offline, includeSlowTests, historyLines, testRegexp -// clients: -// - browserstack (need s3cmd credentials) -var runTests = function (options) { - var failureCount = 0; +var getFilteredTests = function (options) { + options = options || {}; - var tests = getAllTests(); + var allTests = getAllTests(); - if (! tests.length) { - process.stderr.write("No tests defined.\n"); - return 0; + if (allTests.length) { + var testState = readTestState(); + + // Add pseudo-tags 'non-matching' and 'unchanged' + allTests = allTests.map(function (test) { + var newTags = []; + + if (options.testRegexp && ! options.testRegexp.test(test.name)) { + newTags.push('non-matching'); + } else if (options.onlyChanged && + test.fileHash === testState.lastPassedHashes[test.file]) { + newTags.push('unchanged'); + } + + if (! newTags.length) { + return test; + } + + return _.extend({}, test, { tags: test.tags.concat(newTags) }); + }); } - var testStateFile = path.join(process.env.HOME, '.meteortest'); + // (order of tags is significant to the "skip counts" that are displayed) + var tagsToSkip = []; + if (options.testRegexp) { + tagsToSkip.push('non-matching'); + } + if (options.onlyChanged) { + tagsToSkip.push('unchanged'); + } + if (! files.inCheckout()) { + tagsToSkip.push('checkout'); + } + if (options.offline) { + tagsToSkip.push('net'); + } + if (! options.includeSlowTests) { + tagsToSkip.push('slow'); + } + + return new TestList(allTests, tagsToSkip, testState); +}; + +var TestList = function (allTests, tagsToSkip, testState) { + tagsToSkip = (tagsToSkip || []); + testState = (testState || null); + + var self = this; + self.allTests = allTests; + self.skippedTags = tagsToSkip; + self.skipCounts = {}; + self.testState = testState; + + _.each(tagsToSkip, function (tag) { + self.skipCounts[tag] = 0; + }); + + self.fileInfo = {}; // path -> {hash, hasSkips, hasFailures} + + self.filteredTests = _.filter(allTests, function (test) { + + if (! self.fileInfo[test.file]) { + self.fileInfo[test.file] = { + hash: test.fileHash, + hasSkips: false, + hasFailures: false + }; + } + var fileInfo = self.fileInfo[test.file]; + + return !_.any(tagsToSkip, function (tag) { + if (_.contains(test.tags, tag)) { + self.skipCounts[tag]++; + fileInfo.hasSkips = true; + return true; + } else { + return false; + } + }); + }); +}; + +TestList.prototype.notifyFailed = function (test) { + this.fileInfo[test.file].hasFailures = true; +}; + +TestList.prototype.saveTestState = function () { + var self = this; + var testState = self.testState; + if (! (testState && self.filteredTests.length)) { + return; + } + + _.each(self.fileInfo, function (info, f) { + if (info.hasFailures) { + delete testState.lastPassedHashes[f]; + } else if (! info.hasSkips) { + testState.lastPassedHashes[f] = info.hash; + } + }); + + writeTestState(testState); +}; + +TestList.prototype.generateSkipReport = function () { + var self = this; + var result = ''; + + _.each(self.skippedTags, function (tag) { + var count = self.skipCounts[tag]; + if (count) { + result += ("Skipped " + count + " " + tag + " test" + + (count > 1 ? "s" : "") + " (" + + tagDescriptions[tag] + ")\n"); + } + }); + + return result; +}; + +var getTestStateFilePath = function () { + return path.join(process.env.HOME, '.meteortest'); +}; + +var readTestState = function () { + var testStateFile = getTestStateFilePath(); var testState; if (fs.existsSync(testStateFile)) testState = JSON.parse(fs.readFileSync(testStateFile, 'utf8')); if (! testState || testState.version !== 1) testState = { version: 1, lastPassedHashes: {} }; - var currentHashes = {}; + return testState; +}; - // _.keys(skipCounts) is the set of tags to skip. - // skipCounts also holds counts of tests skipped for other reasons - // (like not matching the test regex) and is used for printing - // messages about how many tests were skipped. - var skipCounts = {}; - if (! files.inCheckout()) - skipCounts['checkout'] = 0; +var writeTestState = function (testState) { + var testStateFile = getTestStateFilePath(); + fs.writeFileSync(testStateFile, JSON.stringify(testState), 'utf8'); +}; - if (options.offline) - skipCounts['net'] = 0; +var listTests = function (options) { + var testList = getFilteredTests(options); - if (! options.includeSlowTests) - skipCounts['slow'] = 0; - - if (options.testRegexp) { - var lengthBeforeTestRegexp = tests.length; - // Filter out tests whose name doesn't match. - tests = _.filter(tests, function (test) { - return options.testRegexp.test(test.name); - }); - skipCounts['non-matching'] = lengthBeforeTestRegexp - tests.length; + if (! testList.allTests.length) { + Console.stderr.write("No tests defined.\n"); + return; } - if (options.onlyChanged) { - var lengthBeforeOnlyChanged = tests.length; - // Filter out tests that haven't changed since they last passed. - tests = _.filter(tests, function (test) { - return test.fileHash !== testState.lastPassedHashes[test.file]; - }); - skipCounts['unchanged'] = lengthBeforeOnlyChanged - tests.length; + _.each(_.sortBy(testList.filteredTests, 'file'), function (test) { + Console.stdout.write(test.file + ': ' + test.name + ' [' + + test.tags.join(' ') + ']'); + }); + + Console.stderr.write(testList.generateSkipReport()); +}; + +/////////////////////////////////////////////////////////////////////////////// +// Running tests +/////////////////////////////////////////////////////////////////////////////// + +// options: onlyChanged, offline, includeSlowTests, historyLines, testRegexp +// clients: +// - browserstack (need s3cmd credentials) +var runTests = function (options) { + var testList = getFilteredTests(options); + + if (! testList.allTests.length) { + Console.stderr.write("No tests defined.\n"); + return 0; } - var failuresInFile = {}; - var skipsInFile = {}; var totalRun = 0; - _.each(tests, function (test) { - currentHashes[test.file] = test.fileHash; - // Is this a test we're supposed to skip? - var shouldSkip = false; - _.each(_.keys(test.tags), function (tag) { - if (_.has(skipCounts, tag)) { - shouldSkip = true; - skipCounts[tag] ++; - } - }); - if (shouldSkip) { - skipsInFile[test.file] = true; - return; - } + var failureCount = 0; + _.each(testList.filteredTests, function (test) { totalRun++; - process.stderr.write(test.name + "... "); + Console.stderr.write(test.name + "... "); var failure = null; try { @@ -1496,7 +1602,7 @@ var runTests = function (options) { if (e instanceof TestFailure) { failure = e; } else { - process.stderr.write("exception\n\n"); + Console.stderr.write("exception\n\n"); throw e; } } finally { @@ -1505,12 +1611,14 @@ var runTests = function (options) { } if (failure) { - process.stderr.write("fail!\n"); + Console.stderr.write("fail!\n"); failureCount++; + testList.notifyFailed(test); + var frames = parseStack.parse(failure); var relpath = path.relative(files.getCurrentToolsDir(), frames[0].file); - process.stderr.write(" => " + failure.reason + " at " + + Console.stderr.write(" => " + failure.reason + " at " + relpath + ":" + frames[0].line + "\n"); if (failure.reason === 'no-match') { } @@ -1519,28 +1627,28 @@ var runTests = function (options) { return status.signal || ('' + status.code) || "???"; }; - process.stderr.write(" => Expected: " + s(failure.details.expected) + + Console.stderr.write(" => Expected: " + s(failure.details.expected) + "; actual: " + s(failure.details.actual) + "\n"); } if (failure.reason === 'expected-exception') { } if (failure.reason === 'not-equal') { - process.stderr.write( -" => Expected: " + JSON.stringify(failure.details.expected) + -"; actual: " + JSON.stringify(failure.details.actual) + "\n"); + Console.stderr.write( + " => Expected: " + JSON.stringify(failure.details.expected) + + "; actual: " + JSON.stringify(failure.details.actual) + "\n"); } if (failure.details.run) { failure.details.run.outputLog.end(); var lines = failure.details.run.outputLog.get(); if (! lines.length) { - process.stderr.write(" => No output\n"); + Console.stderr.write(" => No output\n"); } else { var historyLines = options.historyLines || 100; - process.stderr.write(" => Last " + historyLines + " lines:\n"); + Console.stderr.write(" => Last " + historyLines + " lines:\n"); _.each(lines.slice(-historyLines), function (line) { - process.stderr.write(" " + + Console.stderr.write(" " + (line.channel === "stderr" ? "2| " : "1| ") + line.text + (line.bare ? "%" : "") + "\n"); @@ -1549,50 +1657,32 @@ var runTests = function (options) { } if (failure.details.messages) { - process.stderr.write(" => Errors while building:\n"); - process.stderr.write(failure.details.messages.formatMessages()); + Console.stderr.write(" => Errors while building:\n"); + Console.stderr.write(failure.details.messages.formatMessages()); } - - failuresInFile[test.file] = true; } else { - process.stderr.write("ok\n"); + Console.stderr.write("ok\n"); } }); - _.each(_.keys(currentHashes), function (f) { - if (failuresInFile[f]) - delete testState.lastPassedHashes[f]; - else if (! skipsInFile[f]) - testState.lastPassedHashes[f] = currentHashes[f]; - }); - - if (tests.length) - fs.writeFileSync(testStateFile, JSON.stringify(testState), 'utf8'); + testList.saveTestState(); if (totalRun > 0) - process.stderr.write("\n"); + Console.stderr.write("\n"); - var skippedSome = false; - _.each(skipCounts, function (count, tag) { - if (count) { - skippedSome = true; - process.stderr.write("Skipped " + count + " " + tag + " test" + - (count > 1 ? "s" : "") + " (" + - tagDescriptions[tag] + ")\n"); - } - }); + Console.stderr.write(testList.generateSkipReport()); - if (tests.length === 0) { - process.stderr.write("No tests run.\n"); + if (testList.filteredTests.length === 0) { + Console.stderr.write("No tests run.\n"); return 0; } else if (failureCount === 0) { var disclaimers = ''; - if (skippedSome) + if (testList.filteredTests.length < testList.allTests.length) disclaimers += " other"; - process.stderr.write("All" + disclaimers + " tests passed.\n"); + Console.stderr.write("All" + disclaimers + " tests passed.\n"); return 0; } else { - process.stderr.write(failureCount + " failure" + + Console.stderr.write(failureCount + " failure" + (failureCount > 1 ? "s" : "") + ".\n"); return 1; } @@ -1631,6 +1721,7 @@ var runTests = function (options) { _.extend(exports, { runTests: runTests, + listTests: listTests, markStack: markStack, define: define, Sandbox: Sandbox, From 0c641fd7b3c218a0a2e254ee84e2583b1b713df8 Mon Sep 17 00:00:00 2001 From: David Greenspan Date: Tue, 7 Oct 2014 15:09:33 -0700 Subject: [PATCH 03/39] =?UTF-8?q?Improve=20output=20of=20`meteor=20self-te?= =?UTF-8?q?st=20=E2=80=93=E2=80=93list`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tools/selftest.js | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/tools/selftest.js b/tools/selftest.js index 7766274326..28023cc575 100644 --- a/tools/selftest.js +++ b/tools/selftest.js @@ -1405,7 +1405,7 @@ var define = function (name, tagsList, f) { var tagDescriptions = { checkout: 'can only run from checkouts', net: 'require an internet connection', - slow: 'take quite a long time', + slow: 'take quite a long time; use --slow to include', // these last two are pseudo-tags, assigned to tests when you specify // --changed or a regex pattern unchanged: 'unchanged since last pass', @@ -1564,11 +1564,17 @@ var listTests = function (options) { return; } - _.each(_.sortBy(testList.filteredTests, 'file'), function (test) { - Console.stdout.write(test.file + ': ' + test.name + ' [' + - test.tags.join(' ') + ']'); + _.each(_.groupBy(testList.filteredTests, 'file'), function (tests, file) { + Console.stdout.write(file + ':\n'); + _.each(tests, function (test) { + Console.stdout.write(' - ' + test.name + + (test.tags.length ? ' [' + test.tags.join(' ') + ']' + : '')); + }); }); + Console.stdout.write('\n'); + Console.stderr.write(testList.filteredTests.length + " tests listed."); Console.stderr.write(testList.generateSkipReport()); }; From 4b1a781755b0f8c7497f351b8f81bf3e019f4459 Mon Sep 17 00:00:00 2001 From: David Greenspan Date: Tue, 7 Oct 2014 15:22:20 -0700 Subject: [PATCH 04/39] =?UTF-8?q?Support=20=E2=80=93=E2=80=93file=20option?= =?UTF-8?q?=20to=20self-test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tools/commands.js | 9 ++++++--- tools/selftest.js | 21 ++++++++++++++++----- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/tools/commands.js b/tools/commands.js index d65cf193b3..954a6d8106 100644 --- a/tools/commands.js +++ b/tools/commands.js @@ -1709,7 +1709,8 @@ main.registerCommand({ slow: { type: Boolean }, browserstack: { type: Boolean }, history: { type: Number }, - list: { type: Boolean } + list: { type: Boolean }, + file: { type: String } }, hidden: true }, function (options) { @@ -1743,7 +1744,8 @@ main.registerCommand({ onlyChanged: options.changed, offline: offline, includeSlowTests: options.slow, - testRegexp: testRegexp + testRegexp: testRegexp, + inFile: options.file }); return 0; @@ -1759,7 +1761,8 @@ main.registerCommand({ includeSlowTests: options.slow, historyLines: options.history, clients: clients, - testRegexp: testRegexp + testRegexp: testRegexp, + inFile: options.file }); }); diff --git a/tools/selftest.js b/tools/selftest.js index 28023cc575..40581acac8 100644 --- a/tools/selftest.js +++ b/tools/selftest.js @@ -1409,7 +1409,8 @@ var tagDescriptions = { // these last two are pseudo-tags, assigned to tests when you specify // --changed or a regex pattern unchanged: 'unchanged since last pass', - 'non-matching': "don't match specified pattern" + 'non-matching': "don't match specified pattern", + 'in other files': "" }; var getFilteredTests = function (options) { @@ -1424,7 +1425,9 @@ var getFilteredTests = function (options) { allTests = allTests.map(function (test) { var newTags = []; - if (options.testRegexp && ! options.testRegexp.test(test.name)) { + if (options.inFile && test.file !== options.inFile) { + newTags.push('in other files'); + } else if (options.testRegexp && ! options.testRegexp.test(test.name)) { newTags.push('non-matching'); } else if (options.onlyChanged && test.fileHash === testState.lastPassedHashes[test.file]) { @@ -1441,6 +1444,9 @@ var getFilteredTests = function (options) { // (order of tags is significant to the "skip counts" that are displayed) var tagsToSkip = []; + if (options.inFile) { + tagsToSkip.push('in other files'); + } if (options.testRegexp) { tagsToSkip.push('non-matching'); } @@ -1528,9 +1534,14 @@ TestList.prototype.generateSkipReport = function () { _.each(self.skippedTags, function (tag) { var count = self.skipCounts[tag]; if (count) { - result += ("Skipped " + count + " " + tag + " test" + - (count > 1 ? "s" : "") + " (" + - tagDescriptions[tag] + ")\n"); + var noun = "test" + (count > 1 ? "s" : ""); // "test" or "tests" + // "non-matching tests" or "tests in other files" + var nounPhrase = (/ /.test(tag) ? + (noun + " " + tag) : (tag + " " + noun)); + // " (foo)" or "" + var parenthetical = (tagDescriptions[tag] ? " (" + + tagDescriptions[tag] + ")" : ''); + result += ("Skipped " + count + " " + nounPhrase + parenthetical + '\n'); } }); From 746fd0f792126a68004cc6788d42a60b3a77dd7d Mon Sep 17 00:00:00 2001 From: David Greenspan Date: Tue, 7 Oct 2014 15:59:05 -0700 Subject: [PATCH 05/39] =?UTF-8?q?Take=20a=20=E2=80=93=E2=80=93file=20regex?= =?UTF-8?q?;=20comments=20and=20usage?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tools/commands.js | 33 +++++++++++++++++++++++++-------- tools/help.txt | 9 +++++++-- tools/selftest.js | 38 ++++++++++++++++++++++++++++++++------ 3 files changed, 64 insertions(+), 16 deletions(-) diff --git a/tools/commands.js b/tools/commands.js index 954a6d8106..647e3d676b 100644 --- a/tools/commands.js +++ b/tools/commands.js @@ -1727,14 +1727,29 @@ main.registerCommand({ } } - var testRegexp = undefined; - if (options.args.length) { + var compileRegexp = function (str) { try { - testRegexp = new RegExp(options.args[0]); + return new RegExp(str); } catch (e) { if (!(e instanceof SyntaxError)) throw e; - Console.stderr.write("Bad regular expression: " + options.args[0] + "\n"); + Console.stderr.write("Bad regular expression: " + str + "\n"); + return null; + } + }; + + var testRegexp = undefined; + if (options.args.length) { + testRegexp = compileRegexp(options.args[0]); + if (! testRegexp) { + return 1; + } + } + + var fileRegexp = undefined; + if (options.file) { + fileRegexp = compileRegexp(options.file); + if (! fileRegexp) { return 1; } } @@ -1745,7 +1760,7 @@ main.registerCommand({ offline: offline, includeSlowTests: options.slow, testRegexp: testRegexp, - inFile: options.file + fileRegexp: fileRegexp }); return 0; @@ -1756,13 +1771,15 @@ main.registerCommand({ }; return selftest.runTests({ + // filtering options onlyChanged: options.changed, offline: offline, includeSlowTests: options.slow, - historyLines: options.history, - clients: clients, testRegexp: testRegexp, - inFile: options.file + fileRegexp: fileRegexp, + // other options + historyLines: options.history, + clients: clients }); }); diff --git a/tools/help.txt b/tools/help.txt index 3b29bfcd02..1443481fe2 100644 --- a/tools/help.txt +++ b/tools/help.txt @@ -422,8 +422,8 @@ Options: >>> self-test Run tests of the 'meteor' tool. -Usage: meteor self-test [pattern] [--changed] [--slow] - [--force-online] [--history n] +Usage: meteor self-test [pattern] [--list] [--file pattern] [--changed] + [--slow] [--force-online] [--history n] [--browserstack] Runs internal tests. Exits with status 0 on success. @@ -431,6 +431,11 @@ Runs internal tests. Exits with status 0 on success. If 'pattern' is provided, it should be a regular expression. Only tests that match the regular expression will be run. +Use --list to list the tests that would be run according to the other +options, without running them. + +Pass --file to run only tests in files that match the regular expression. + Pass --changed to run only tests that have changed since they last passed. This uses a really rough heuristic: A test has changed iff there has been any change to the file in the 'selftests' subdirectory diff --git a/tools/selftest.js b/tools/selftest.js index 40581acac8..b031d3c21f 100644 --- a/tools/selftest.js +++ b/tools/selftest.js @@ -1413,6 +1413,12 @@ var tagDescriptions = { 'in other files': "" }; +// Returns a TestList object representing a filtered list of tests, +// according to the options given (which are based closely on the +// command-line arguments). Used as the first step of both listTests +// and runTests. +// +// Options: testRegexp, fileRegexp, onlyChanged, offline, includeSlowTests var getFilteredTests = function (options) { options = options || {}; @@ -1421,11 +1427,12 @@ var getFilteredTests = function (options) { if (allTests.length) { var testState = readTestState(); - // Add pseudo-tags 'non-matching' and 'unchanged' + // Add pseudo-tags 'non-matching', 'unchanged', and 'in other files' + // (but only so that we can then skip tests with those tags) allTests = allTests.map(function (test) { var newTags = []; - if (options.inFile && test.file !== options.inFile) { + if (options.fileRegexp && ! options.fileRegexp.test(test.file)) { newTags.push('in other files'); } else if (options.testRegexp && ! options.testRegexp.test(test.name)) { newTags.push('non-matching'); @@ -1444,7 +1451,7 @@ var getFilteredTests = function (options) { // (order of tags is significant to the "skip counts" that are displayed) var tagsToSkip = []; - if (options.inFile) { + if (options.fileRegexp) { tagsToSkip.push('in other files'); } if (options.testRegexp) { @@ -1466,9 +1473,17 @@ var getFilteredTests = function (options) { return new TestList(allTests, tagsToSkip, testState); }; +// A TestList is the result of getFilteredTests. It holds the original +// list of all tests, the filtered list, and stats on how many tests +// were skipped (see generateSkipReport). +// +// TestList is also used to save the hashes of files where all tests +// ran and passed (for the `--changed` option). If a testState is +// passed, the caller can use notifyFailed and saveTestState to cause +// TestList to calculate the new testState and write it out. var TestList = function (allTests, tagsToSkip, testState) { tagsToSkip = (tagsToSkip || []); - testState = (testState || null); + testState = (testState || null); // optional var self = this; self.allTests = allTests; @@ -1493,6 +1508,9 @@ var TestList = function (allTests, tagsToSkip, testState) { } var fileInfo = self.fileInfo[test.file]; + // We look for tagsToSkip *in order*, and when we decide to + // skip a test, we don't keep looking at more tags, and we don't + // add the test to any further "skip counts". return !_.any(tagsToSkip, function (tag) { if (_.contains(test.tags, tag)) { self.skipCounts[tag]++; @@ -1505,10 +1523,15 @@ var TestList = function (allTests, tagsToSkip, testState) { }); }; +// Mark a test's file as having failures so we don't +// save its hash as a potentially "unchanged" file. TestList.prototype.notifyFailed = function (test) { this.fileInfo[test.file].hasFailures = true; }; +// If this TestList was constructed with a testState, +// modify it and write it out based on which tests +// were skipped and which tests had failures. TestList.prototype.saveTestState = function () { var self = this; var testState = self.testState; @@ -1527,6 +1550,7 @@ TestList.prototype.saveTestState = function () { writeTestState(testState); }; +// Return a string like "Skipped 1 foo test\nSkipped 5 bar tests\n" TestList.prototype.generateSkipReport = function () { var self = this; var result = ''; @@ -1567,6 +1591,7 @@ var writeTestState = function (testState) { fs.writeFileSync(testStateFile, JSON.stringify(testState), 'utf8'); }; +// Same options as getFilteredTests. Writes to stdout and stderr. var listTests = function (options) { var testList = getFilteredTests(options); @@ -1583,8 +1608,8 @@ var listTests = function (options) { : '')); }); }); - Console.stdout.write('\n'); + Console.stderr.write('\n'); Console.stderr.write(testList.filteredTests.length + " tests listed."); Console.stderr.write(testList.generateSkipReport()); }; @@ -1593,7 +1618,8 @@ var listTests = function (options) { // Running tests /////////////////////////////////////////////////////////////////////////////// -// options: onlyChanged, offline, includeSlowTests, historyLines, testRegexp +// options: onlyChanged, offline, includeSlowTests, historyLines, testRegexp, +// fileRegexp, // clients: // - browserstack (need s3cmd credentials) var runTests = function (options) { From 1a73a4a6c39c81baadbaa731a9a161a2881d3f8c Mon Sep 17 00:00:00 2001 From: Sashko Stubailo Date: Tue, 7 Oct 2014 16:49:54 -0700 Subject: [PATCH 06/39] Update todos --- docs/.meteor/versions | 117 +- examples/todos/.meteor/packages | 2 - examples/todos/.meteor/release | 2 +- examples/todos/.meteor/versions | 7 +- examples/todos/client/lib/hammer.js | 2463 +++++++++++++++++ .../{base.lessimport => base.import.less} | 0 .../{button.lessimport => button.import.less} | 0 .../{form.lessimport => form.import.less} | 0 .../{icon.lessimport => icon.import.less} | 20 +- .../{layout.lessimport => layout.import.less} | 17 +- .../{link.lessimport => link.import.less} | 0 ...tems.lessimport => list-items.import.less} | 0 .../{menu.lessimport => menu.import.less} | 5 + ...message.lessimport => message.import.less} | 0 .../{nav.lessimport => nav.import.less} | 0 ...on.lessimport => notification.import.less} | 0 examples/todos/client/stylesheets/main.less | 42 +- ...helpers.lessimport => helpers.import.less} | 0 ...lesshat.lessimport => lesshat.import.less} | 0 .../{reset.lessimport => reset.import.less} | 0 .../{text.lessimport => text.import.less} | 0 ...aphy.lessimport => typography.import.less} | 0 ...ables.lessimport => variables.import.less} | 0 examples/todos/client/templates/app-body.js | 44 +- ...d.lessimport => app-not-found.import.less} | 0 .../{auth.lessimport => auth.import.less} | 0 ...show.lessimport => lists-show.import.less} | 0 ...loading.lessimport => loading.import.less} | 0 examples/todos/mobile-config.js | 10 +- examples/todos/public/icon/todos.eot | Bin 5368 -> 6000 bytes examples/todos/public/icon/todos.svg | 5 +- examples/todos/public/icon/todos.ttf | Bin 5212 -> 5844 bytes examples/todos/public/icon/todos.woff | Bin 4260 -> 5920 bytes 33 files changed, 2623 insertions(+), 111 deletions(-) create mode 100644 examples/todos/client/lib/hammer.js rename examples/todos/client/stylesheets/globals/{base.lessimport => base.import.less} (100%) rename examples/todos/client/stylesheets/globals/{button.lessimport => button.import.less} (100%) rename examples/todos/client/stylesheets/globals/{form.lessimport => form.import.less} (100%) rename examples/todos/client/stylesheets/globals/{icon.lessimport => icon.import.less} (71%) rename examples/todos/client/stylesheets/globals/{layout.lessimport => layout.import.less} (85%) rename examples/todos/client/stylesheets/globals/{link.lessimport => link.import.less} (100%) rename examples/todos/client/stylesheets/globals/{list-items.lessimport => list-items.import.less} (100%) rename examples/todos/client/stylesheets/globals/{menu.lessimport => menu.import.less} (92%) rename examples/todos/client/stylesheets/globals/{message.lessimport => message.import.less} (100%) rename examples/todos/client/stylesheets/globals/{nav.lessimport => nav.import.less} (100%) rename examples/todos/client/stylesheets/globals/{notification.lessimport => notification.import.less} (100%) rename examples/todos/client/stylesheets/util/{helpers.lessimport => helpers.import.less} (100%) rename examples/todos/client/stylesheets/util/{lesshat.lessimport => lesshat.import.less} (100%) rename examples/todos/client/stylesheets/util/{reset.lessimport => reset.import.less} (100%) rename examples/todos/client/stylesheets/util/{text.lessimport => text.import.less} (100%) rename examples/todos/client/stylesheets/util/{typography.lessimport => typography.import.less} (100%) rename examples/todos/client/stylesheets/util/{variables.lessimport => variables.import.less} (100%) rename examples/todos/client/templates/{app-not-found.lessimport => app-not-found.import.less} (100%) rename examples/todos/client/templates/{auth.lessimport => auth.import.less} (100%) rename examples/todos/client/templates/{lists-show.lessimport => lists-show.import.less} (100%) rename examples/todos/client/templates/{loading.lessimport => loading.import.less} (100%) diff --git a/docs/.meteor/versions b/docs/.meteor/versions index 73807b599c..ce3da053a0 100644 --- a/docs/.meteor/versions +++ b/docs/.meteor/versions @@ -1,59 +1,58 @@ -appcache@1.0.2-pre.2 -application-configuration@1.0.3-pre.2 -autoupdate@1.1.2-pre.4 -base64@1.0.1-pre.2 -binary-heap@1.0.1-pre.2 -blaze-tools@1.0.1-pre.2 -blaze@2.0.2-pre.2 -boilerplate-generator@1.0.1-pre.4 -callback-hook@1.0.1-pre.2 -check@1.0.2-pre.2 -code-prettify@1.0.1-pre.2 -coffeescript@1.0.4-pre.3 -ctl-helper@1.0.4-pre.2 -ctl@1.0.2-pre.2 -ddp@1.0.10-pre.2 -deps@1.0.5-pre.2 -ejson@1.0.4-pre.2 -fastclick@1.0.1-pre.3 -follower-livedata@1.0.2-pre.2 -geojson-utils@1.0.1-pre.2 -html-tools@1.0.2-pre.2 -htmljs@1.0.2-pre.3 -http@1.0.7-pre.2 -id-map@1.0.1-pre.2 -jquery-waypoints@1.0.1-pre.2 -jquery@1.0.1-pre.2 -json@1.0.1-pre.2 -less@1.0.10-pre.3 -livedata@1.0.11-pre.2 -logging@1.0.4-pre.2 -markdown@1.0.2-pre.2 -meteor-platform@1.1.2-pre.4 -meteor@1.1.2-pre.3 -minifiers@1.1.1-pre.2 -minimongo@1.0.4-pre.3 -mobile-status-bar@1.0.1-pre.2 -mongo@1.0.7-pre.2 -observe-sequence@1.0.3-pre.2 -ordered-dict@1.0.1-pre.2 -random@1.0.1-pre.2 -reactive-dict@1.0.4-pre.2 -reactive-var@1.0.3-pre.2 -reload-safetybelt@1.0.1-pre.2 -reload@1.1.1-pre.2 -retry@1.0.1-pre.2 -routepolicy@1.0.2-pre.2 -session@1.0.3-pre.2 -showdown@1.0.2-pre.2 -spacebars-compiler@1.0.3-pre.2 -spacebars@1.0.3-pre.2 -spiderable@1.0.4-pre.2 -standard-app-packages@1.0.3-pre.2 -templating@1.0.8-pre.3 -tracker@1.0.3-pre.2 -ui@1.0.4-pre.2 -underscore@1.0.1-pre.2 -url@1.0.1-pre.2 -webapp-hashing@1.0.1-pre.2 -webapp@1.1.3-pre.3 +appcache@1.0.1 +application-configuration@1.0.2 +autoupdate@1.1.1 +base64@1.0.0 +binary-heap@1.0.0 +blaze-tools@1.0.0 +blaze@2.0.1 +boilerplate-generator@1.0.0 +callback-hook@1.0.0 +check@1.0.1 +code-prettify@1.0.0 +coffeescript@1.0.3 +ctl-helper@1.0.3 +ctl@1.0.1 +ddp@1.0.9 +deps@1.0.4 +ejson@1.0.3 +fastclick@1.0.0 +follower-livedata@1.0.1 +geojson-utils@1.0.0 +html-tools@1.0.1 +htmljs@1.0.1 +http@1.0.6 +id-map@1.0.0 +jquery-waypoints@1.0.0 +jquery@1.0.0 +json@1.0.0 +less@1.0.9 +livedata@1.0.10 +logging@1.0.3 +meteor-platform@1.1.1 +meteor@1.1.1 +minifiers@1.1.0 +minimongo@1.0.3 +mobile-status-bar@1.0.0 +mongo@1.0.6 +observe-sequence@1.0.2 +ordered-dict@1.0.0 +random@1.0.0 +reactive-dict@1.0.3 +reactive-var@1.0.2 +reload-safetybelt@1.0.0 +reload@1.1.0 +retry@1.0.0 +routepolicy@1.0.1 +session@1.0.2 +showdown@1.0.1 +spacebars-compiler@1.0.2 +spacebars@1.0.2 +spiderable@1.0.3 +standard-app-packages@1.0.2 +templating@1.0.7 +tracker@1.0.2 +ui@1.0.3 +underscore@1.0.0 +url@1.0.0 +webapp-hashing@1.0.0 +webapp@1.1.2 diff --git a/examples/todos/.meteor/packages b/examples/todos/.meteor/packages index b9dd328d10..da825e90c6 100644 --- a/examples/todos/.meteor/packages +++ b/examples/todos/.meteor/packages @@ -9,5 +9,3 @@ less iron:router accounts-password fastclick -noorderstorm:hammer - diff --git a/examples/todos/.meteor/release b/examples/todos/.meteor/release index 0b324bf505..0755219e60 100644 --- a/examples/todos/.meteor/release +++ b/examples/todos/.meteor/release @@ -1 +1 @@ -METEOR@0.9.4-pre.8 +METEOR@0.9.4-pre.11 diff --git a/examples/todos/.meteor/versions b/examples/todos/.meteor/versions index 3ab316d172..207ecba4d6 100644 --- a/examples/todos/.meteor/versions +++ b/examples/todos/.meteor/versions @@ -1,12 +1,12 @@ accounts-base@1.1.2-pre.2 accounts-password@1.0.3-pre.2 application-configuration@1.0.3-pre.2 -autoupdate@1.1.2-pre.3 +autoupdate@1.1.2-pre.4 base64@1.0.1-pre.2 binary-heap@1.0.1-pre.2 blaze-tools@1.0.1-pre.2 blaze@2.0.2-pre.2 -boilerplate-generator@1.0.1-pre.3 +boilerplate-generator@1.0.1-pre.4 callback-hook@1.0.1-pre.2 check@1.0.2-pre.2 ctl-helper@1.0.4-pre.2 @@ -33,13 +33,12 @@ less@1.0.10-pre.3 livedata@1.0.11-pre.2 localstorage@1.0.1-pre.2 logging@1.0.4-pre.2 -meteor-platform@1.1.2-pre.3 +meteor-platform@1.1.2-pre.4 meteor@1.1.2-pre.3 minifiers@1.1.1-pre.2 minimongo@1.0.4-pre.3 mobile-status-bar@1.0.1-pre.2 mongo@1.0.7-pre.2 -noorderstorm:hammer@0.1.3 npm-bcrypt@0.7.7 observe-sequence@1.0.3-pre.2 ordered-dict@1.0.1-pre.2 diff --git a/examples/todos/client/lib/hammer.js b/examples/todos/client/lib/hammer.js new file mode 100644 index 0000000000..5226688998 --- /dev/null +++ b/examples/todos/client/lib/hammer.js @@ -0,0 +1,2463 @@ +/*! Hammer.JS - v2.0.4 - 2014-09-28 + * http://hammerjs.github.io/ + * + * Copyright (c) 2014 Jorik Tangelder; + * Licensed under the MIT license */ +(function(window, document, exportName, undefined) { + 'use strict'; + +var VENDOR_PREFIXES = ['', 'webkit', 'moz', 'MS', 'ms', 'o']; +var TEST_ELEMENT = document.createElement('div'); + +var TYPE_FUNCTION = 'function'; + +var round = Math.round; +var abs = Math.abs; +var now = Date.now; + +/** + * set a timeout with a given scope + * @param {Function} fn + * @param {Number} timeout + * @param {Object} context + * @returns {number} + */ +function setTimeoutContext(fn, timeout, context) { + return setTimeout(bindFn(fn, context), timeout); +} + +/** + * if the argument is an array, we want to execute the fn on each entry + * if it aint an array we don't want to do a thing. + * this is used by all the methods that accept a single and array argument. + * @param {*|Array} arg + * @param {String} fn + * @param {Object} [context] + * @returns {Boolean} + */ +function invokeArrayArg(arg, fn, context) { + if (Array.isArray(arg)) { + each(arg, context[fn], context); + return true; + } + return false; +} + +/** + * walk objects and arrays + * @param {Object} obj + * @param {Function} iterator + * @param {Object} context + */ +function each(obj, iterator, context) { + var i; + + if (!obj) { + return; + } + + if (obj.forEach) { + obj.forEach(iterator, context); + } else if (obj.length !== undefined) { + i = 0; + while (i < obj.length) { + iterator.call(context, obj[i], i, obj); + i++; + } + } else { + for (i in obj) { + obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj); + } + } +} + +/** + * extend object. + * means that properties in dest will be overwritten by the ones in src. + * @param {Object} dest + * @param {Object} src + * @param {Boolean} [merge] + * @returns {Object} dest + */ +function extend(dest, src, merge) { + var keys = Object.keys(src); + var i = 0; + while (i < keys.length) { + if (!merge || (merge && dest[keys[i]] === undefined)) { + dest[keys[i]] = src[keys[i]]; + } + i++; + } + return dest; +} + +/** + * merge the values from src in the dest. + * means that properties that exist in dest will not be overwritten by src + * @param {Object} dest + * @param {Object} src + * @returns {Object} dest + */ +function merge(dest, src) { + return extend(dest, src, true); +} + +/** + * simple class inheritance + * @param {Function} child + * @param {Function} base + * @param {Object} [properties] + */ +function inherit(child, base, properties) { + var baseP = base.prototype, + childP; + + childP = child.prototype = Object.create(baseP); + childP.constructor = child; + childP._super = baseP; + + if (properties) { + extend(childP, properties); + } +} + +/** + * simple function bind + * @param {Function} fn + * @param {Object} context + * @returns {Function} + */ +function bindFn(fn, context) { + return function boundFn() { + return fn.apply(context, arguments); + }; +} + +/** + * let a boolean value also be a function that must return a boolean + * this first item in args will be used as the context + * @param {Boolean|Function} val + * @param {Array} [args] + * @returns {Boolean} + */ +function boolOrFn(val, args) { + if (typeof val == TYPE_FUNCTION) { + return val.apply(args ? args[0] || undefined : undefined, args); + } + return val; +} + +/** + * use the val2 when val1 is undefined + * @param {*} val1 + * @param {*} val2 + * @returns {*} + */ +function ifUndefined(val1, val2) { + return (val1 === undefined) ? val2 : val1; +} + +/** + * addEventListener with multiple events at once + * @param {EventTarget} target + * @param {String} types + * @param {Function} handler + */ +function addEventListeners(target, types, handler) { + each(splitStr(types), function(type) { + target.addEventListener(type, handler, false); + }); +} + +/** + * removeEventListener with multiple events at once + * @param {EventTarget} target + * @param {String} types + * @param {Function} handler + */ +function removeEventListeners(target, types, handler) { + each(splitStr(types), function(type) { + target.removeEventListener(type, handler, false); + }); +} + +/** + * find if a node is in the given parent + * @method hasParent + * @param {HTMLElement} node + * @param {HTMLElement} parent + * @return {Boolean} found + */ +function hasParent(node, parent) { + while (node) { + if (node == parent) { + return true; + } + node = node.parentNode; + } + return false; +} + +/** + * small indexOf wrapper + * @param {String} str + * @param {String} find + * @returns {Boolean} found + */ +function inStr(str, find) { + return str.indexOf(find) > -1; +} + +/** + * split string on whitespace + * @param {String} str + * @returns {Array} words + */ +function splitStr(str) { + return str.trim().split(/\s+/g); +} + +/** + * find if a array contains the object using indexOf or a simple polyFill + * @param {Array} src + * @param {String} find + * @param {String} [findByKey] + * @return {Boolean|Number} false when not found, or the index + */ +function inArray(src, find, findByKey) { + if (src.indexOf && !findByKey) { + return src.indexOf(find); + } else { + var i = 0; + while (i < src.length) { + if ((findByKey && src[i][findByKey] == find) || (!findByKey && src[i] === find)) { + return i; + } + i++; + } + return -1; + } +} + +/** + * convert array-like objects to real arrays + * @param {Object} obj + * @returns {Array} + */ +function toArray(obj) { + return Array.prototype.slice.call(obj, 0); +} + +/** + * unique array with objects based on a key (like 'id') or just by the array's value + * @param {Array} src [{id:1},{id:2},{id:1}] + * @param {String} [key] + * @param {Boolean} [sort=False] + * @returns {Array} [{id:1},{id:2}] + */ +function uniqueArray(src, key, sort) { + var results = []; + var values = []; + var i = 0; + + while (i < src.length) { + var val = key ? src[i][key] : src[i]; + if (inArray(values, val) < 0) { + results.push(src[i]); + } + values[i] = val; + i++; + } + + if (sort) { + if (!key) { + results = results.sort(); + } else { + results = results.sort(function sortUniqueArray(a, b) { + return a[key] > b[key]; + }); + } + } + + return results; +} + +/** + * get the prefixed property + * @param {Object} obj + * @param {String} property + * @returns {String|Undefined} prefixed + */ +function prefixed(obj, property) { + var prefix, prop; + var camelProp = property[0].toUpperCase() + property.slice(1); + + var i = 0; + while (i < VENDOR_PREFIXES.length) { + prefix = VENDOR_PREFIXES[i]; + prop = (prefix) ? prefix + camelProp : property; + + if (prop in obj) { + return prop; + } + i++; + } + return undefined; +} + +/** + * get a unique id + * @returns {number} uniqueId + */ +var _uniqueId = 1; +function uniqueId() { + return _uniqueId++; +} + +/** + * get the window object of an element + * @param {HTMLElement} element + * @returns {DocumentView|Window} + */ +function getWindowForElement(element) { + var doc = element.ownerDocument; + return (doc.defaultView || doc.parentWindow); +} + +var MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i; + +var SUPPORT_TOUCH = ('ontouchstart' in window); +var SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined; +var SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent); + +var INPUT_TYPE_TOUCH = 'touch'; +var INPUT_TYPE_PEN = 'pen'; +var INPUT_TYPE_MOUSE = 'mouse'; +var INPUT_TYPE_KINECT = 'kinect'; + +var COMPUTE_INTERVAL = 25; + +var INPUT_START = 1; +var INPUT_MOVE = 2; +var INPUT_END = 4; +var INPUT_CANCEL = 8; + +var DIRECTION_NONE = 1; +var DIRECTION_LEFT = 2; +var DIRECTION_RIGHT = 4; +var DIRECTION_UP = 8; +var DIRECTION_DOWN = 16; + +var DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT; +var DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN; +var DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL; + +var PROPS_XY = ['x', 'y']; +var PROPS_CLIENT_XY = ['clientX', 'clientY']; + +/** + * create new input type manager + * @param {Manager} manager + * @param {Function} callback + * @returns {Input} + * @constructor + */ +function Input(manager, callback) { + var self = this; + this.manager = manager; + this.callback = callback; + this.element = manager.element; + this.target = manager.options.inputTarget; + + // smaller wrapper around the handler, for the scope and the enabled state of the manager, + // so when disabled the input events are completely bypassed. + this.domHandler = function(ev) { + if (boolOrFn(manager.options.enable, [manager])) { + self.handler(ev); + } + }; + + this.init(); + +} + +Input.prototype = { + /** + * should handle the inputEvent data and trigger the callback + * @virtual + */ + handler: function() { }, + + /** + * bind the events + */ + init: function() { + this.evEl && addEventListeners(this.element, this.evEl, this.domHandler); + this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler); + this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler); + }, + + /** + * unbind the events + */ + destroy: function() { + this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler); + this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler); + this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler); + } +}; + +/** + * create new input type manager + * called by the Manager constructor + * @param {Hammer} manager + * @returns {Input} + */ +function createInputInstance(manager) { + var Type; + var inputClass = manager.options.inputClass; + + if (inputClass) { + Type = inputClass; + } else if (SUPPORT_POINTER_EVENTS) { + Type = PointerEventInput; + } else if (SUPPORT_ONLY_TOUCH) { + Type = TouchInput; + } else if (!SUPPORT_TOUCH) { + Type = MouseInput; + } else { + Type = TouchMouseInput; + } + return new (Type)(manager, inputHandler); +} + +/** + * handle input events + * @param {Manager} manager + * @param {String} eventType + * @param {Object} input + */ +function inputHandler(manager, eventType, input) { + var pointersLen = input.pointers.length; + var changedPointersLen = input.changedPointers.length; + var isFirst = (eventType & INPUT_START && (pointersLen - changedPointersLen === 0)); + var isFinal = (eventType & (INPUT_END | INPUT_CANCEL) && (pointersLen - changedPointersLen === 0)); + + input.isFirst = !!isFirst; + input.isFinal = !!isFinal; + + if (isFirst) { + manager.session = {}; + } + + // source event is the normalized value of the domEvents + // like 'touchstart, mouseup, pointerdown' + input.eventType = eventType; + + // compute scale, rotation etc + computeInputData(manager, input); + + // emit secret event + manager.emit('hammer.input', input); + + manager.recognize(input); + manager.session.prevInput = input; +} + +/** + * extend the data with some usable properties like scale, rotate, velocity etc + * @param {Object} manager + * @param {Object} input + */ +function computeInputData(manager, input) { + var session = manager.session; + var pointers = input.pointers; + var pointersLength = pointers.length; + + // store the first input to calculate the distance and direction + if (!session.firstInput) { + session.firstInput = simpleCloneInputData(input); + } + + // to compute scale and rotation we need to store the multiple touches + if (pointersLength > 1 && !session.firstMultiple) { + session.firstMultiple = simpleCloneInputData(input); + } else if (pointersLength === 1) { + session.firstMultiple = false; + } + + var firstInput = session.firstInput; + var firstMultiple = session.firstMultiple; + var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center; + + var center = input.center = getCenter(pointers); + input.timeStamp = now(); + input.deltaTime = input.timeStamp - firstInput.timeStamp; + + input.angle = getAngle(offsetCenter, center); + input.distance = getDistance(offsetCenter, center); + + computeDeltaXY(session, input); + input.offsetDirection = getDirection(input.deltaX, input.deltaY); + + input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1; + input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0; + + computeIntervalInputData(session, input); + + // find the correct target + var target = manager.element; + if (hasParent(input.srcEvent.target, target)) { + target = input.srcEvent.target; + } + input.target = target; +} + +function computeDeltaXY(session, input) { + var center = input.center; + var offset = session.offsetDelta || {}; + var prevDelta = session.prevDelta || {}; + var prevInput = session.prevInput || {}; + + if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) { + prevDelta = session.prevDelta = { + x: prevInput.deltaX || 0, + y: prevInput.deltaY || 0 + }; + + offset = session.offsetDelta = { + x: center.x, + y: center.y + }; + } + + input.deltaX = prevDelta.x + (center.x - offset.x); + input.deltaY = prevDelta.y + (center.y - offset.y); +} + +/** + * velocity is calculated every x ms + * @param {Object} session + * @param {Object} input + */ +function computeIntervalInputData(session, input) { + var last = session.lastInterval || input, + deltaTime = input.timeStamp - last.timeStamp, + velocity, velocityX, velocityY, direction; + + if (input.eventType != INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) { + var deltaX = last.deltaX - input.deltaX; + var deltaY = last.deltaY - input.deltaY; + + var v = getVelocity(deltaTime, deltaX, deltaY); + velocityX = v.x; + velocityY = v.y; + velocity = (abs(v.x) > abs(v.y)) ? v.x : v.y; + direction = getDirection(deltaX, deltaY); + + session.lastInterval = input; + } else { + // use latest velocity info if it doesn't overtake a minimum period + velocity = last.velocity; + velocityX = last.velocityX; + velocityY = last.velocityY; + direction = last.direction; + } + + input.velocity = velocity; + input.velocityX = velocityX; + input.velocityY = velocityY; + input.direction = direction; +} + +/** + * create a simple clone from the input used for storage of firstInput and firstMultiple + * @param {Object} input + * @returns {Object} clonedInputData + */ +function simpleCloneInputData(input) { + // make a simple copy of the pointers because we will get a reference if we don't + // we only need clientXY for the calculations + var pointers = []; + var i = 0; + while (i < input.pointers.length) { + pointers[i] = { + clientX: round(input.pointers[i].clientX), + clientY: round(input.pointers[i].clientY) + }; + i++; + } + + return { + timeStamp: now(), + pointers: pointers, + center: getCenter(pointers), + deltaX: input.deltaX, + deltaY: input.deltaY + }; +} + +/** + * get the center of all the pointers + * @param {Array} pointers + * @return {Object} center contains `x` and `y` properties + */ +function getCenter(pointers) { + var pointersLength = pointers.length; + + // no need to loop when only one touch + if (pointersLength === 1) { + return { + x: round(pointers[0].clientX), + y: round(pointers[0].clientY) + }; + } + + var x = 0, y = 0, i = 0; + while (i < pointersLength) { + x += pointers[i].clientX; + y += pointers[i].clientY; + i++; + } + + return { + x: round(x / pointersLength), + y: round(y / pointersLength) + }; +} + +/** + * calculate the velocity between two points. unit is in px per ms. + * @param {Number} deltaTime + * @param {Number} x + * @param {Number} y + * @return {Object} velocity `x` and `y` + */ +function getVelocity(deltaTime, x, y) { + return { + x: x / deltaTime || 0, + y: y / deltaTime || 0 + }; +} + +/** + * get the direction between two points + * @param {Number} x + * @param {Number} y + * @return {Number} direction + */ +function getDirection(x, y) { + if (x === y) { + return DIRECTION_NONE; + } + + if (abs(x) >= abs(y)) { + return x > 0 ? DIRECTION_LEFT : DIRECTION_RIGHT; + } + return y > 0 ? DIRECTION_UP : DIRECTION_DOWN; +} + +/** + * calculate the absolute distance between two points + * @param {Object} p1 {x, y} + * @param {Object} p2 {x, y} + * @param {Array} [props] containing x and y keys + * @return {Number} distance + */ +function getDistance(p1, p2, props) { + if (!props) { + props = PROPS_XY; + } + var x = p2[props[0]] - p1[props[0]], + y = p2[props[1]] - p1[props[1]]; + + return Math.sqrt((x * x) + (y * y)); +} + +/** + * calculate the angle between two coordinates + * @param {Object} p1 + * @param {Object} p2 + * @param {Array} [props] containing x and y keys + * @return {Number} angle + */ +function getAngle(p1, p2, props) { + if (!props) { + props = PROPS_XY; + } + var x = p2[props[0]] - p1[props[0]], + y = p2[props[1]] - p1[props[1]]; + return Math.atan2(y, x) * 180 / Math.PI; +} + +/** + * calculate the rotation degrees between two pointersets + * @param {Array} start array of pointers + * @param {Array} end array of pointers + * @return {Number} rotation + */ +function getRotation(start, end) { + return getAngle(end[1], end[0], PROPS_CLIENT_XY) - getAngle(start[1], start[0], PROPS_CLIENT_XY); +} + +/** + * calculate the scale factor between two pointersets + * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out + * @param {Array} start array of pointers + * @param {Array} end array of pointers + * @return {Number} scale + */ +function getScale(start, end) { + return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY); +} + +var MOUSE_INPUT_MAP = { + mousedown: INPUT_START, + mousemove: INPUT_MOVE, + mouseup: INPUT_END +}; + +var MOUSE_ELEMENT_EVENTS = 'mousedown'; +var MOUSE_WINDOW_EVENTS = 'mousemove mouseup'; + +/** + * Mouse events input + * @constructor + * @extends Input + */ +function MouseInput() { + this.evEl = MOUSE_ELEMENT_EVENTS; + this.evWin = MOUSE_WINDOW_EVENTS; + + this.allow = true; // used by Input.TouchMouse to disable mouse events + this.pressed = false; // mousedown state + + Input.apply(this, arguments); +} + +inherit(MouseInput, Input, { + /** + * handle mouse events + * @param {Object} ev + */ + handler: function MEhandler(ev) { + var eventType = MOUSE_INPUT_MAP[ev.type]; + + // on start we want to have the left mouse button down + if (eventType & INPUT_START && ev.button === 0) { + this.pressed = true; + } + + if (eventType & INPUT_MOVE && ev.which !== 1) { + eventType = INPUT_END; + } + + // mouse must be down, and mouse events are allowed (see the TouchMouse input) + if (!this.pressed || !this.allow) { + return; + } + + if (eventType & INPUT_END) { + this.pressed = false; + } + + this.callback(this.manager, eventType, { + pointers: [ev], + changedPointers: [ev], + pointerType: INPUT_TYPE_MOUSE, + srcEvent: ev + }); + } +}); + +var POINTER_INPUT_MAP = { + pointerdown: INPUT_START, + pointermove: INPUT_MOVE, + pointerup: INPUT_END, + pointercancel: INPUT_CANCEL, + pointerout: INPUT_CANCEL +}; + +// in IE10 the pointer types is defined as an enum +var IE10_POINTER_TYPE_ENUM = { + 2: INPUT_TYPE_TOUCH, + 3: INPUT_TYPE_PEN, + 4: INPUT_TYPE_MOUSE, + 5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816 +}; + +var POINTER_ELEMENT_EVENTS = 'pointerdown'; +var POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel'; + +// IE10 has prefixed support, and case-sensitive +if (window.MSPointerEvent) { + POINTER_ELEMENT_EVENTS = 'MSPointerDown'; + POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel'; +} + +/** + * Pointer events input + * @constructor + * @extends Input + */ +function PointerEventInput() { + this.evEl = POINTER_ELEMENT_EVENTS; + this.evWin = POINTER_WINDOW_EVENTS; + + Input.apply(this, arguments); + + this.store = (this.manager.session.pointerEvents = []); +} + +inherit(PointerEventInput, Input, { + /** + * handle mouse events + * @param {Object} ev + */ + handler: function PEhandler(ev) { + var store = this.store; + var removePointer = false; + + var eventTypeNormalized = ev.type.toLowerCase().replace('ms', ''); + var eventType = POINTER_INPUT_MAP[eventTypeNormalized]; + var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType; + + var isTouch = (pointerType == INPUT_TYPE_TOUCH); + + // get index of the event in the store + var storeIndex = inArray(store, ev.pointerId, 'pointerId'); + + // start and mouse must be down + if (eventType & INPUT_START && (ev.button === 0 || isTouch)) { + if (storeIndex < 0) { + store.push(ev); + storeIndex = store.length - 1; + } + } else if (eventType & (INPUT_END | INPUT_CANCEL)) { + removePointer = true; + } + + // it not found, so the pointer hasn't been down (so it's probably a hover) + if (storeIndex < 0) { + return; + } + + // update the event in the store + store[storeIndex] = ev; + + this.callback(this.manager, eventType, { + pointers: store, + changedPointers: [ev], + pointerType: pointerType, + srcEvent: ev + }); + + if (removePointer) { + // remove from the store + store.splice(storeIndex, 1); + } + } +}); + +var SINGLE_TOUCH_INPUT_MAP = { + touchstart: INPUT_START, + touchmove: INPUT_MOVE, + touchend: INPUT_END, + touchcancel: INPUT_CANCEL +}; + +var SINGLE_TOUCH_TARGET_EVENTS = 'touchstart'; +var SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel'; + +/** + * Touch events input + * @constructor + * @extends Input + */ +function SingleTouchInput() { + this.evTarget = SINGLE_TOUCH_TARGET_EVENTS; + this.evWin = SINGLE_TOUCH_WINDOW_EVENTS; + this.started = false; + + Input.apply(this, arguments); +} + +inherit(SingleTouchInput, Input, { + handler: function TEhandler(ev) { + var type = SINGLE_TOUCH_INPUT_MAP[ev.type]; + + // should we handle the touch events? + if (type === INPUT_START) { + this.started = true; + } + + if (!this.started) { + return; + } + + var touches = normalizeSingleTouches.call(this, ev, type); + + // when done, reset the started state + if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) { + this.started = false; + } + + this.callback(this.manager, type, { + pointers: touches[0], + changedPointers: touches[1], + pointerType: INPUT_TYPE_TOUCH, + srcEvent: ev + }); + } +}); + +/** + * @this {TouchInput} + * @param {Object} ev + * @param {Number} type flag + * @returns {undefined|Array} [all, changed] + */ +function normalizeSingleTouches(ev, type) { + var all = toArray(ev.touches); + var changed = toArray(ev.changedTouches); + + if (type & (INPUT_END | INPUT_CANCEL)) { + all = uniqueArray(all.concat(changed), 'identifier', true); + } + + return [all, changed]; +} + +var TOUCH_INPUT_MAP = { + touchstart: INPUT_START, + touchmove: INPUT_MOVE, + touchend: INPUT_END, + touchcancel: INPUT_CANCEL +}; + +var TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel'; + +/** + * Multi-user touch events input + * @constructor + * @extends Input + */ +function TouchInput() { + this.evTarget = TOUCH_TARGET_EVENTS; + this.targetIds = {}; + + Input.apply(this, arguments); +} + +inherit(TouchInput, Input, { + handler: function MTEhandler(ev) { + var type = TOUCH_INPUT_MAP[ev.type]; + var touches = getTouches.call(this, ev, type); + if (!touches) { + return; + } + + this.callback(this.manager, type, { + pointers: touches[0], + changedPointers: touches[1], + pointerType: INPUT_TYPE_TOUCH, + srcEvent: ev + }); + } +}); + +/** + * @this {TouchInput} + * @param {Object} ev + * @param {Number} type flag + * @returns {undefined|Array} [all, changed] + */ +function getTouches(ev, type) { + var allTouches = toArray(ev.touches); + var targetIds = this.targetIds; + + // when there is only one touch, the process can be simplified + if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) { + targetIds[allTouches[0].identifier] = true; + return [allTouches, allTouches]; + } + + var i, + targetTouches, + changedTouches = toArray(ev.changedTouches), + changedTargetTouches = [], + target = this.target; + + // get target touches from touches + targetTouches = allTouches.filter(function(touch) { + return hasParent(touch.target, target); + }); + + // collect touches + if (type === INPUT_START) { + i = 0; + while (i < targetTouches.length) { + targetIds[targetTouches[i].identifier] = true; + i++; + } + } + + // filter changed touches to only contain touches that exist in the collected target ids + i = 0; + while (i < changedTouches.length) { + if (targetIds[changedTouches[i].identifier]) { + changedTargetTouches.push(changedTouches[i]); + } + + // cleanup removed touches + if (type & (INPUT_END | INPUT_CANCEL)) { + delete targetIds[changedTouches[i].identifier]; + } + i++; + } + + if (!changedTargetTouches.length) { + return; + } + + return [ + // merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel' + uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true), + changedTargetTouches + ]; +} + +/** + * Combined touch and mouse input + * + * Touch has a higher priority then mouse, and while touching no mouse events are allowed. + * This because touch devices also emit mouse events while doing a touch. + * + * @constructor + * @extends Input + */ +function TouchMouseInput() { + Input.apply(this, arguments); + + var handler = bindFn(this.handler, this); + this.touch = new TouchInput(this.manager, handler); + this.mouse = new MouseInput(this.manager, handler); +} + +inherit(TouchMouseInput, Input, { + /** + * handle mouse and touch events + * @param {Hammer} manager + * @param {String} inputEvent + * @param {Object} inputData + */ + handler: function TMEhandler(manager, inputEvent, inputData) { + var isTouch = (inputData.pointerType == INPUT_TYPE_TOUCH), + isMouse = (inputData.pointerType == INPUT_TYPE_MOUSE); + + // when we're in a touch event, so block all upcoming mouse events + // most mobile browser also emit mouseevents, right after touchstart + if (isTouch) { + this.mouse.allow = false; + } else if (isMouse && !this.mouse.allow) { + return; + } + + // reset the allowMouse when we're done + if (inputEvent & (INPUT_END | INPUT_CANCEL)) { + this.mouse.allow = true; + } + + this.callback(manager, inputEvent, inputData); + }, + + /** + * remove the event listeners + */ + destroy: function destroy() { + this.touch.destroy(); + this.mouse.destroy(); + } +}); + +var PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction'); +var NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined; + +// magical touchAction value +var TOUCH_ACTION_COMPUTE = 'compute'; +var TOUCH_ACTION_AUTO = 'auto'; +var TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented +var TOUCH_ACTION_NONE = 'none'; +var TOUCH_ACTION_PAN_X = 'pan-x'; +var TOUCH_ACTION_PAN_Y = 'pan-y'; + +/** + * Touch Action + * sets the touchAction property or uses the js alternative + * @param {Manager} manager + * @param {String} value + * @constructor + */ +function TouchAction(manager, value) { + this.manager = manager; + this.set(value); +} + +TouchAction.prototype = { + /** + * set the touchAction value on the element or enable the polyfill + * @param {String} value + */ + set: function(value) { + // find out the touch-action by the event handlers + if (value == TOUCH_ACTION_COMPUTE) { + value = this.compute(); + } + + if (NATIVE_TOUCH_ACTION) { + this.manager.element.style[PREFIXED_TOUCH_ACTION] = value; + } + this.actions = value.toLowerCase().trim(); + }, + + /** + * just re-set the touchAction value + */ + update: function() { + this.set(this.manager.options.touchAction); + }, + + /** + * compute the value for the touchAction property based on the recognizer's settings + * @returns {String} value + */ + compute: function() { + var actions = []; + each(this.manager.recognizers, function(recognizer) { + if (boolOrFn(recognizer.options.enable, [recognizer])) { + actions = actions.concat(recognizer.getTouchAction()); + } + }); + return cleanTouchActions(actions.join(' ')); + }, + + /** + * this method is called on each input cycle and provides the preventing of the browser behavior + * @param {Object} input + */ + preventDefaults: function(input) { + // not needed with native support for the touchAction property + if (NATIVE_TOUCH_ACTION) { + return; + } + + var srcEvent = input.srcEvent; + var direction = input.offsetDirection; + + // if the touch action did prevented once this session + if (this.manager.session.prevented) { + srcEvent.preventDefault(); + return; + } + + var actions = this.actions; + var hasNone = inStr(actions, TOUCH_ACTION_NONE); + var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y); + var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X); + + if (hasNone || + (hasPanY && direction & DIRECTION_HORIZONTAL) || + (hasPanX && direction & DIRECTION_VERTICAL)) { + return this.preventSrc(srcEvent); + } + }, + + /** + * call preventDefault to prevent the browser's default behavior (scrolling in most cases) + * @param {Object} srcEvent + */ + preventSrc: function(srcEvent) { + this.manager.session.prevented = true; + srcEvent.preventDefault(); + } +}; + +/** + * when the touchActions are collected they are not a valid value, so we need to clean things up. * + * @param {String} actions + * @returns {*} + */ +function cleanTouchActions(actions) { + // none + if (inStr(actions, TOUCH_ACTION_NONE)) { + return TOUCH_ACTION_NONE; + } + + var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X); + var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y); + + // pan-x and pan-y can be combined + if (hasPanX && hasPanY) { + return TOUCH_ACTION_PAN_X + ' ' + TOUCH_ACTION_PAN_Y; + } + + // pan-x OR pan-y + if (hasPanX || hasPanY) { + return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y; + } + + // manipulation + if (inStr(actions, TOUCH_ACTION_MANIPULATION)) { + return TOUCH_ACTION_MANIPULATION; + } + + return TOUCH_ACTION_AUTO; +} + +/** + * Recognizer flow explained; * + * All recognizers have the initial state of POSSIBLE when a input session starts. + * The definition of a input session is from the first input until the last input, with all it's movement in it. * + * Example session for mouse-input: mousedown -> mousemove -> mouseup + * + * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed + * which determines with state it should be. + * + * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to + * POSSIBLE to give it another change on the next cycle. + * + * Possible + * | + * +-----+---------------+ + * | | + * +-----+-----+ | + * | | | + * Failed Cancelled | + * +-------+------+ + * | | + * Recognized Began + * | + * Changed + * | + * Ended/Recognized + */ +var STATE_POSSIBLE = 1; +var STATE_BEGAN = 2; +var STATE_CHANGED = 4; +var STATE_ENDED = 8; +var STATE_RECOGNIZED = STATE_ENDED; +var STATE_CANCELLED = 16; +var STATE_FAILED = 32; + +/** + * Recognizer + * Every recognizer needs to extend from this class. + * @constructor + * @param {Object} options + */ +function Recognizer(options) { + this.id = uniqueId(); + + this.manager = null; + this.options = merge(options || {}, this.defaults); + + // default is enable true + this.options.enable = ifUndefined(this.options.enable, true); + + this.state = STATE_POSSIBLE; + + this.simultaneous = {}; + this.requireFail = []; +} + +Recognizer.prototype = { + /** + * @virtual + * @type {Object} + */ + defaults: {}, + + /** + * set options + * @param {Object} options + * @return {Recognizer} + */ + set: function(options) { + extend(this.options, options); + + // also update the touchAction, in case something changed about the directions/enabled state + this.manager && this.manager.touchAction.update(); + return this; + }, + + /** + * recognize simultaneous with an other recognizer. + * @param {Recognizer} otherRecognizer + * @returns {Recognizer} this + */ + recognizeWith: function(otherRecognizer) { + if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) { + return this; + } + + var simultaneous = this.simultaneous; + otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this); + if (!simultaneous[otherRecognizer.id]) { + simultaneous[otherRecognizer.id] = otherRecognizer; + otherRecognizer.recognizeWith(this); + } + return this; + }, + + /** + * drop the simultaneous link. it doesnt remove the link on the other recognizer. + * @param {Recognizer} otherRecognizer + * @returns {Recognizer} this + */ + dropRecognizeWith: function(otherRecognizer) { + if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) { + return this; + } + + otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this); + delete this.simultaneous[otherRecognizer.id]; + return this; + }, + + /** + * recognizer can only run when an other is failing + * @param {Recognizer} otherRecognizer + * @returns {Recognizer} this + */ + requireFailure: function(otherRecognizer) { + if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) { + return this; + } + + var requireFail = this.requireFail; + otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this); + if (inArray(requireFail, otherRecognizer) === -1) { + requireFail.push(otherRecognizer); + otherRecognizer.requireFailure(this); + } + return this; + }, + + /** + * drop the requireFailure link. it does not remove the link on the other recognizer. + * @param {Recognizer} otherRecognizer + * @returns {Recognizer} this + */ + dropRequireFailure: function(otherRecognizer) { + if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) { + return this; + } + + otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this); + var index = inArray(this.requireFail, otherRecognizer); + if (index > -1) { + this.requireFail.splice(index, 1); + } + return this; + }, + + /** + * has require failures boolean + * @returns {boolean} + */ + hasRequireFailures: function() { + return this.requireFail.length > 0; + }, + + /** + * if the recognizer can recognize simultaneous with an other recognizer + * @param {Recognizer} otherRecognizer + * @returns {Boolean} + */ + canRecognizeWith: function(otherRecognizer) { + return !!this.simultaneous[otherRecognizer.id]; + }, + + /** + * You should use `tryEmit` instead of `emit` directly to check + * that all the needed recognizers has failed before emitting. + * @param {Object} input + */ + emit: function(input) { + var self = this; + var state = this.state; + + function emit(withState) { + self.manager.emit(self.options.event + (withState ? stateStr(state) : ''), input); + } + + // 'panstart' and 'panmove' + if (state < STATE_ENDED) { + emit(true); + } + + emit(); // simple 'eventName' events + + // panend and pancancel + if (state >= STATE_ENDED) { + emit(true); + } + }, + + /** + * Check that all the require failure recognizers has failed, + * if true, it emits a gesture event, + * otherwise, setup the state to FAILED. + * @param {Object} input + */ + tryEmit: function(input) { + if (this.canEmit()) { + return this.emit(input); + } + // it's failing anyway + this.state = STATE_FAILED; + }, + + /** + * can we emit? + * @returns {boolean} + */ + canEmit: function() { + var i = 0; + while (i < this.requireFail.length) { + if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) { + return false; + } + i++; + } + return true; + }, + + /** + * update the recognizer + * @param {Object} inputData + */ + recognize: function(inputData) { + // make a new copy of the inputData + // so we can change the inputData without messing up the other recognizers + var inputDataClone = extend({}, inputData); + + // is is enabled and allow recognizing? + if (!boolOrFn(this.options.enable, [this, inputDataClone])) { + this.reset(); + this.state = STATE_FAILED; + return; + } + + // reset when we've reached the end + if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) { + this.state = STATE_POSSIBLE; + } + + this.state = this.process(inputDataClone); + + // the recognizer has recognized a gesture + // so trigger an event + if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) { + this.tryEmit(inputDataClone); + } + }, + + /** + * return the state of the recognizer + * the actual recognizing happens in this method + * @virtual + * @param {Object} inputData + * @returns {Const} STATE + */ + process: function(inputData) { }, // jshint ignore:line + + /** + * return the preferred touch-action + * @virtual + * @returns {Array} + */ + getTouchAction: function() { }, + + /** + * called when the gesture isn't allowed to recognize + * like when another is being recognized or it is disabled + * @virtual + */ + reset: function() { } +}; + +/** + * get a usable string, used as event postfix + * @param {Const} state + * @returns {String} state + */ +function stateStr(state) { + if (state & STATE_CANCELLED) { + return 'cancel'; + } else if (state & STATE_ENDED) { + return 'end'; + } else if (state & STATE_CHANGED) { + return 'move'; + } else if (state & STATE_BEGAN) { + return 'start'; + } + return ''; +} + +/** + * direction cons to string + * @param {Const} direction + * @returns {String} + */ +function directionStr(direction) { + if (direction == DIRECTION_DOWN) { + return 'down'; + } else if (direction == DIRECTION_UP) { + return 'up'; + } else if (direction == DIRECTION_LEFT) { + return 'left'; + } else if (direction == DIRECTION_RIGHT) { + return 'right'; + } + return ''; +} + +/** + * get a recognizer by name if it is bound to a manager + * @param {Recognizer|String} otherRecognizer + * @param {Recognizer} recognizer + * @returns {Recognizer} + */ +function getRecognizerByNameIfManager(otherRecognizer, recognizer) { + var manager = recognizer.manager; + if (manager) { + return manager.get(otherRecognizer); + } + return otherRecognizer; +} + +/** + * This recognizer is just used as a base for the simple attribute recognizers. + * @constructor + * @extends Recognizer + */ +function AttrRecognizer() { + Recognizer.apply(this, arguments); +} + +inherit(AttrRecognizer, Recognizer, { + /** + * @namespace + * @memberof AttrRecognizer + */ + defaults: { + /** + * @type {Number} + * @default 1 + */ + pointers: 1 + }, + + /** + * Used to check if it the recognizer receives valid input, like input.distance > 10. + * @memberof AttrRecognizer + * @param {Object} input + * @returns {Boolean} recognized + */ + attrTest: function(input) { + var optionPointers = this.options.pointers; + return optionPointers === 0 || input.pointers.length === optionPointers; + }, + + /** + * Process the input and return the state for the recognizer + * @memberof AttrRecognizer + * @param {Object} input + * @returns {*} State + */ + process: function(input) { + var state = this.state; + var eventType = input.eventType; + + var isRecognized = state & (STATE_BEGAN | STATE_CHANGED); + var isValid = this.attrTest(input); + + // on cancel input and we've recognized before, return STATE_CANCELLED + if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) { + return state | STATE_CANCELLED; + } else if (isRecognized || isValid) { + if (eventType & INPUT_END) { + return state | STATE_ENDED; + } else if (!(state & STATE_BEGAN)) { + return STATE_BEGAN; + } + return state | STATE_CHANGED; + } + return STATE_FAILED; + } +}); + +/** + * Pan + * Recognized when the pointer is down and moved in the allowed direction. + * @constructor + * @extends AttrRecognizer + */ +function PanRecognizer() { + AttrRecognizer.apply(this, arguments); + + this.pX = null; + this.pY = null; +} + +inherit(PanRecognizer, AttrRecognizer, { + /** + * @namespace + * @memberof PanRecognizer + */ + defaults: { + event: 'pan', + threshold: 10, + pointers: 1, + direction: DIRECTION_ALL + }, + + getTouchAction: function() { + var direction = this.options.direction; + var actions = []; + if (direction & DIRECTION_HORIZONTAL) { + actions.push(TOUCH_ACTION_PAN_Y); + } + if (direction & DIRECTION_VERTICAL) { + actions.push(TOUCH_ACTION_PAN_X); + } + return actions; + }, + + directionTest: function(input) { + var options = this.options; + var hasMoved = true; + var distance = input.distance; + var direction = input.direction; + var x = input.deltaX; + var y = input.deltaY; + + // lock to axis? + if (!(direction & options.direction)) { + if (options.direction & DIRECTION_HORIZONTAL) { + direction = (x === 0) ? DIRECTION_NONE : (x < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT; + hasMoved = x != this.pX; + distance = Math.abs(input.deltaX); + } else { + direction = (y === 0) ? DIRECTION_NONE : (y < 0) ? DIRECTION_UP : DIRECTION_DOWN; + hasMoved = y != this.pY; + distance = Math.abs(input.deltaY); + } + } + input.direction = direction; + return hasMoved && distance > options.threshold && direction & options.direction; + }, + + attrTest: function(input) { + return AttrRecognizer.prototype.attrTest.call(this, input) && + (this.state & STATE_BEGAN || (!(this.state & STATE_BEGAN) && this.directionTest(input))); + }, + + emit: function(input) { + this.pX = input.deltaX; + this.pY = input.deltaY; + + var direction = directionStr(input.direction); + if (direction) { + this.manager.emit(this.options.event + direction, input); + } + + this._super.emit.call(this, input); + } +}); + +/** + * Pinch + * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out). + * @constructor + * @extends AttrRecognizer + */ +function PinchRecognizer() { + AttrRecognizer.apply(this, arguments); +} + +inherit(PinchRecognizer, AttrRecognizer, { + /** + * @namespace + * @memberof PinchRecognizer + */ + defaults: { + event: 'pinch', + threshold: 0, + pointers: 2 + }, + + getTouchAction: function() { + return [TOUCH_ACTION_NONE]; + }, + + attrTest: function(input) { + return this._super.attrTest.call(this, input) && + (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN); + }, + + emit: function(input) { + this._super.emit.call(this, input); + if (input.scale !== 1) { + var inOut = input.scale < 1 ? 'in' : 'out'; + this.manager.emit(this.options.event + inOut, input); + } + } +}); + +/** + * Press + * Recognized when the pointer is down for x ms without any movement. + * @constructor + * @extends Recognizer + */ +function PressRecognizer() { + Recognizer.apply(this, arguments); + + this._timer = null; + this._input = null; +} + +inherit(PressRecognizer, Recognizer, { + /** + * @namespace + * @memberof PressRecognizer + */ + defaults: { + event: 'press', + pointers: 1, + time: 500, // minimal time of the pointer to be pressed + threshold: 5 // a minimal movement is ok, but keep it low + }, + + getTouchAction: function() { + return [TOUCH_ACTION_AUTO]; + }, + + process: function(input) { + var options = this.options; + var validPointers = input.pointers.length === options.pointers; + var validMovement = input.distance < options.threshold; + var validTime = input.deltaTime > options.time; + + this._input = input; + + // we only allow little movement + // and we've reached an end event, so a tap is possible + if (!validMovement || !validPointers || (input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime)) { + this.reset(); + } else if (input.eventType & INPUT_START) { + this.reset(); + this._timer = setTimeoutContext(function() { + this.state = STATE_RECOGNIZED; + this.tryEmit(); + }, options.time, this); + } else if (input.eventType & INPUT_END) { + return STATE_RECOGNIZED; + } + return STATE_FAILED; + }, + + reset: function() { + clearTimeout(this._timer); + }, + + emit: function(input) { + if (this.state !== STATE_RECOGNIZED) { + return; + } + + if (input && (input.eventType & INPUT_END)) { + this.manager.emit(this.options.event + 'up', input); + } else { + this._input.timeStamp = now(); + this.manager.emit(this.options.event, this._input); + } + } +}); + +/** + * Rotate + * Recognized when two or more pointer are moving in a circular motion. + * @constructor + * @extends AttrRecognizer + */ +function RotateRecognizer() { + AttrRecognizer.apply(this, arguments); +} + +inherit(RotateRecognizer, AttrRecognizer, { + /** + * @namespace + * @memberof RotateRecognizer + */ + defaults: { + event: 'rotate', + threshold: 0, + pointers: 2 + }, + + getTouchAction: function() { + return [TOUCH_ACTION_NONE]; + }, + + attrTest: function(input) { + return this._super.attrTest.call(this, input) && + (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN); + } +}); + +/** + * Swipe + * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction. + * @constructor + * @extends AttrRecognizer + */ +function SwipeRecognizer() { + AttrRecognizer.apply(this, arguments); +} + +inherit(SwipeRecognizer, AttrRecognizer, { + /** + * @namespace + * @memberof SwipeRecognizer + */ + defaults: { + event: 'swipe', + threshold: 10, + velocity: 0.65, + direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL, + pointers: 1 + }, + + getTouchAction: function() { + return PanRecognizer.prototype.getTouchAction.call(this); + }, + + attrTest: function(input) { + var direction = this.options.direction; + var velocity; + + if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) { + velocity = input.velocity; + } else if (direction & DIRECTION_HORIZONTAL) { + velocity = input.velocityX; + } else if (direction & DIRECTION_VERTICAL) { + velocity = input.velocityY; + } + + return this._super.attrTest.call(this, input) && + direction & input.direction && + input.distance > this.options.threshold && + abs(velocity) > this.options.velocity && input.eventType & INPUT_END; + }, + + emit: function(input) { + var direction = directionStr(input.direction); + if (direction) { + this.manager.emit(this.options.event + direction, input); + } + + this.manager.emit(this.options.event, input); + } +}); + +/** + * A tap is ecognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur + * between the given interval and position. The delay option can be used to recognize multi-taps without firing + * a single tap. + * + * The eventData from the emitted event contains the property `tapCount`, which contains the amount of + * multi-taps being recognized. + * @constructor + * @extends Recognizer + */ +function TapRecognizer() { + Recognizer.apply(this, arguments); + + // previous time and center, + // used for tap counting + this.pTime = false; + this.pCenter = false; + + this._timer = null; + this._input = null; + this.count = 0; +} + +inherit(TapRecognizer, Recognizer, { + /** + * @namespace + * @memberof PinchRecognizer + */ + defaults: { + event: 'tap', + pointers: 1, + taps: 1, + interval: 300, // max time between the multi-tap taps + time: 250, // max time of the pointer to be down (like finger on the screen) + threshold: 2, // a minimal movement is ok, but keep it low + posThreshold: 10 // a multi-tap can be a bit off the initial position + }, + + getTouchAction: function() { + return [TOUCH_ACTION_MANIPULATION]; + }, + + process: function(input) { + var options = this.options; + + var validPointers = input.pointers.length === options.pointers; + var validMovement = input.distance < options.threshold; + var validTouchTime = input.deltaTime < options.time; + + this.reset(); + + if ((input.eventType & INPUT_START) && (this.count === 0)) { + return this.failTimeout(); + } + + // we only allow little movement + // and we've reached an end event, so a tap is possible + if (validMovement && validTouchTime && validPointers) { + if (input.eventType != INPUT_END) { + return this.failTimeout(); + } + + var validInterval = this.pTime ? (input.timeStamp - this.pTime < options.interval) : true; + var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold; + + this.pTime = input.timeStamp; + this.pCenter = input.center; + + if (!validMultiTap || !validInterval) { + this.count = 1; + } else { + this.count += 1; + } + + this._input = input; + + // if tap count matches we have recognized it, + // else it has began recognizing... + var tapCount = this.count % options.taps; + if (tapCount === 0) { + // no failing requirements, immediately trigger the tap event + // or wait as long as the multitap interval to trigger + if (!this.hasRequireFailures()) { + return STATE_RECOGNIZED; + } else { + this._timer = setTimeoutContext(function() { + this.state = STATE_RECOGNIZED; + this.tryEmit(); + }, options.interval, this); + return STATE_BEGAN; + } + } + } + return STATE_FAILED; + }, + + failTimeout: function() { + this._timer = setTimeoutContext(function() { + this.state = STATE_FAILED; + }, this.options.interval, this); + return STATE_FAILED; + }, + + reset: function() { + clearTimeout(this._timer); + }, + + emit: function() { + if (this.state == STATE_RECOGNIZED ) { + this._input.tapCount = this.count; + this.manager.emit(this.options.event, this._input); + } + } +}); + +/** + * Simple way to create an manager with a default set of recognizers. + * @param {HTMLElement} element + * @param {Object} [options] + * @constructor + */ +function Hammer(element, options) { + options = options || {}; + options.recognizers = ifUndefined(options.recognizers, Hammer.defaults.preset); + return new Manager(element, options); +} + +/** + * @const {string} + */ +Hammer.VERSION = '2.0.4'; + +/** + * default settings + * @namespace + */ +Hammer.defaults = { + /** + * set if DOM events are being triggered. + * But this is slower and unused by simple implementations, so disabled by default. + * @type {Boolean} + * @default false + */ + domEvents: false, + + /** + * The value for the touchAction property/fallback. + * When set to `compute` it will magically set the correct value based on the added recognizers. + * @type {String} + * @default compute + */ + touchAction: TOUCH_ACTION_COMPUTE, + + /** + * @type {Boolean} + * @default true + */ + enable: true, + + /** + * EXPERIMENTAL FEATURE -- can be removed/changed + * Change the parent input target element. + * If Null, then it is being set the to main element. + * @type {Null|EventTarget} + * @default null + */ + inputTarget: null, + + /** + * force an input class + * @type {Null|Function} + * @default null + */ + inputClass: null, + + /** + * Default recognizer setup when calling `Hammer()` + * When creating a new Manager these will be skipped. + * @type {Array} + */ + preset: [ + // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...] + [RotateRecognizer, { enable: false }], + [PinchRecognizer, { enable: false }, ['rotate']], + [SwipeRecognizer,{ direction: DIRECTION_HORIZONTAL }], + [PanRecognizer, { direction: DIRECTION_HORIZONTAL }, ['swipe']], + [TapRecognizer], + [TapRecognizer, { event: 'doubletap', taps: 2 }, ['tap']], + [PressRecognizer] + ], + + /** + * Some CSS properties can be used to improve the working of Hammer. + * Add them to this method and they will be set when creating a new Manager. + * @namespace + */ + cssProps: { + /** + * Disables text selection to improve the dragging gesture. Mainly for desktop browsers. + * @type {String} + * @default 'none' + */ + userSelect: 'none', + + /** + * Disable the Windows Phone grippers when pressing an element. + * @type {String} + * @default 'none' + */ + touchSelect: 'none', + + /** + * Disables the default callout shown when you touch and hold a touch target. + * On iOS, when you touch and hold a touch target such as a link, Safari displays + * a callout containing information about the link. This property allows you to disable that callout. + * @type {String} + * @default 'none' + */ + touchCallout: 'none', + + /** + * Specifies whether zooming is enabled. Used by IE10> + * @type {String} + * @default 'none' + */ + contentZooming: 'none', + + /** + * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers. + * @type {String} + * @default 'none' + */ + userDrag: 'none', + + /** + * Overrides the highlight color shown when the user taps a link or a JavaScript + * clickable element in iOS. This property obeys the alpha value, if specified. + * @type {String} + * @default 'rgba(0,0,0,0)' + */ + tapHighlightColor: 'rgba(0,0,0,0)' + } +}; + +var STOP = 1; +var FORCED_STOP = 2; + +/** + * Manager + * @param {HTMLElement} element + * @param {Object} [options] + * @constructor + */ +function Manager(element, options) { + options = options || {}; + + this.options = merge(options, Hammer.defaults); + this.options.inputTarget = this.options.inputTarget || element; + + this.handlers = {}; + this.session = {}; + this.recognizers = []; + + this.element = element; + this.input = createInputInstance(this); + this.touchAction = new TouchAction(this, this.options.touchAction); + + toggleCssProps(this, true); + + each(options.recognizers, function(item) { + var recognizer = this.add(new (item[0])(item[1])); + item[2] && recognizer.recognizeWith(item[2]); + item[3] && recognizer.requireFailure(item[3]); + }, this); +} + +Manager.prototype = { + /** + * set options + * @param {Object} options + * @returns {Manager} + */ + set: function(options) { + extend(this.options, options); + + // Options that need a little more setup + if (options.touchAction) { + this.touchAction.update(); + } + if (options.inputTarget) { + // Clean up existing event listeners and reinitialize + this.input.destroy(); + this.input.target = options.inputTarget; + this.input.init(); + } + return this; + }, + + /** + * stop recognizing for this session. + * This session will be discarded, when a new [input]start event is fired. + * When forced, the recognizer cycle is stopped immediately. + * @param {Boolean} [force] + */ + stop: function(force) { + this.session.stopped = force ? FORCED_STOP : STOP; + }, + + /** + * run the recognizers! + * called by the inputHandler function on every movement of the pointers (touches) + * it walks through all the recognizers and tries to detect the gesture that is being made + * @param {Object} inputData + */ + recognize: function(inputData) { + var session = this.session; + if (session.stopped) { + return; + } + + // run the touch-action polyfill + this.touchAction.preventDefaults(inputData); + + var recognizer; + var recognizers = this.recognizers; + + // this holds the recognizer that is being recognized. + // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED + // if no recognizer is detecting a thing, it is set to `null` + var curRecognizer = session.curRecognizer; + + // reset when the last recognizer is recognized + // or when we're in a new session + if (!curRecognizer || (curRecognizer && curRecognizer.state & STATE_RECOGNIZED)) { + curRecognizer = session.curRecognizer = null; + } + + var i = 0; + while (i < recognizers.length) { + recognizer = recognizers[i]; + + // find out if we are allowed try to recognize the input for this one. + // 1. allow if the session is NOT forced stopped (see the .stop() method) + // 2. allow if we still haven't recognized a gesture in this session, or the this recognizer is the one + // that is being recognized. + // 3. allow if the recognizer is allowed to run simultaneous with the current recognized recognizer. + // this can be setup with the `recognizeWith()` method on the recognizer. + if (session.stopped !== FORCED_STOP && ( // 1 + !curRecognizer || recognizer == curRecognizer || // 2 + recognizer.canRecognizeWith(curRecognizer))) { // 3 + recognizer.recognize(inputData); + } else { + recognizer.reset(); + } + + // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the + // current active recognizer. but only if we don't already have an active recognizer + if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) { + curRecognizer = session.curRecognizer = recognizer; + } + i++; + } + }, + + /** + * get a recognizer by its event name. + * @param {Recognizer|String} recognizer + * @returns {Recognizer|Null} + */ + get: function(recognizer) { + if (recognizer instanceof Recognizer) { + return recognizer; + } + + var recognizers = this.recognizers; + for (var i = 0; i < recognizers.length; i++) { + if (recognizers[i].options.event == recognizer) { + return recognizers[i]; + } + } + return null; + }, + + /** + * add a recognizer to the manager + * existing recognizers with the same event name will be removed + * @param {Recognizer} recognizer + * @returns {Recognizer|Manager} + */ + add: function(recognizer) { + if (invokeArrayArg(recognizer, 'add', this)) { + return this; + } + + // remove existing + var existing = this.get(recognizer.options.event); + if (existing) { + this.remove(existing); + } + + this.recognizers.push(recognizer); + recognizer.manager = this; + + this.touchAction.update(); + return recognizer; + }, + + /** + * remove a recognizer by name or instance + * @param {Recognizer|String} recognizer + * @returns {Manager} + */ + remove: function(recognizer) { + if (invokeArrayArg(recognizer, 'remove', this)) { + return this; + } + + var recognizers = this.recognizers; + recognizer = this.get(recognizer); + recognizers.splice(inArray(recognizers, recognizer), 1); + + this.touchAction.update(); + return this; + }, + + /** + * bind event + * @param {String} events + * @param {Function} handler + * @returns {EventEmitter} this + */ + on: function(events, handler) { + var handlers = this.handlers; + each(splitStr(events), function(event) { + handlers[event] = handlers[event] || []; + handlers[event].push(handler); + }); + return this; + }, + + /** + * unbind event, leave emit blank to remove all handlers + * @param {String} events + * @param {Function} [handler] + * @returns {EventEmitter} this + */ + off: function(events, handler) { + var handlers = this.handlers; + each(splitStr(events), function(event) { + if (!handler) { + delete handlers[event]; + } else { + handlers[event].splice(inArray(handlers[event], handler), 1); + } + }); + return this; + }, + + /** + * emit event to the listeners + * @param {String} event + * @param {Object} data + */ + emit: function(event, data) { + // we also want to trigger dom events + if (this.options.domEvents) { + triggerDomEvent(event, data); + } + + // no handlers, so skip it all + var handlers = this.handlers[event] && this.handlers[event].slice(); + if (!handlers || !handlers.length) { + return; + } + + data.type = event; + data.preventDefault = function() { + data.srcEvent.preventDefault(); + }; + + var i = 0; + while (i < handlers.length) { + handlers[i](data); + i++; + } + }, + + /** + * destroy the manager and unbinds all events + * it doesn't unbind dom events, that is the user own responsibility + */ + destroy: function() { + this.element && toggleCssProps(this, false); + + this.handlers = {}; + this.session = {}; + this.input.destroy(); + this.element = null; + } +}; + +/** + * add/remove the css properties as defined in manager.options.cssProps + * @param {Manager} manager + * @param {Boolean} add + */ +function toggleCssProps(manager, add) { + var element = manager.element; + each(manager.options.cssProps, function(value, name) { + element.style[prefixed(element.style, name)] = add ? value : ''; + }); +} + +/** + * trigger dom event + * @param {String} event + * @param {Object} data + */ +function triggerDomEvent(event, data) { + var gestureEvent = document.createEvent('Event'); + gestureEvent.initEvent(event, true, true); + gestureEvent.gesture = data; + data.target.dispatchEvent(gestureEvent); +} + +extend(Hammer, { + INPUT_START: INPUT_START, + INPUT_MOVE: INPUT_MOVE, + INPUT_END: INPUT_END, + INPUT_CANCEL: INPUT_CANCEL, + + STATE_POSSIBLE: STATE_POSSIBLE, + STATE_BEGAN: STATE_BEGAN, + STATE_CHANGED: STATE_CHANGED, + STATE_ENDED: STATE_ENDED, + STATE_RECOGNIZED: STATE_RECOGNIZED, + STATE_CANCELLED: STATE_CANCELLED, + STATE_FAILED: STATE_FAILED, + + DIRECTION_NONE: DIRECTION_NONE, + DIRECTION_LEFT: DIRECTION_LEFT, + DIRECTION_RIGHT: DIRECTION_RIGHT, + DIRECTION_UP: DIRECTION_UP, + DIRECTION_DOWN: DIRECTION_DOWN, + DIRECTION_HORIZONTAL: DIRECTION_HORIZONTAL, + DIRECTION_VERTICAL: DIRECTION_VERTICAL, + DIRECTION_ALL: DIRECTION_ALL, + + Manager: Manager, + Input: Input, + TouchAction: TouchAction, + + TouchInput: TouchInput, + MouseInput: MouseInput, + PointerEventInput: PointerEventInput, + TouchMouseInput: TouchMouseInput, + SingleTouchInput: SingleTouchInput, + + Recognizer: Recognizer, + AttrRecognizer: AttrRecognizer, + Tap: TapRecognizer, + Pan: PanRecognizer, + Swipe: SwipeRecognizer, + Pinch: PinchRecognizer, + Rotate: RotateRecognizer, + Press: PressRecognizer, + + on: addEventListeners, + off: removeEventListeners, + each: each, + merge: merge, + extend: extend, + inherit: inherit, + bindFn: bindFn, + prefixed: prefixed +}); + +if (typeof define == TYPE_FUNCTION && define.amd) { + define(function() { + return Hammer; + }); +} else if (typeof module != 'undefined' && module.exports) { + module.exports = Hammer; +} else { + window[exportName] = Hammer; +} + +})(window, document, 'Hammer'); diff --git a/examples/todos/client/stylesheets/globals/base.lessimport b/examples/todos/client/stylesheets/globals/base.import.less similarity index 100% rename from examples/todos/client/stylesheets/globals/base.lessimport rename to examples/todos/client/stylesheets/globals/base.import.less diff --git a/examples/todos/client/stylesheets/globals/button.lessimport b/examples/todos/client/stylesheets/globals/button.import.less similarity index 100% rename from examples/todos/client/stylesheets/globals/button.lessimport rename to examples/todos/client/stylesheets/globals/button.import.less diff --git a/examples/todos/client/stylesheets/globals/form.lessimport b/examples/todos/client/stylesheets/globals/form.import.less similarity index 100% rename from examples/todos/client/stylesheets/globals/form.lessimport rename to examples/todos/client/stylesheets/globals/form.import.less diff --git a/examples/todos/client/stylesheets/globals/icon.lessimport b/examples/todos/client/stylesheets/globals/icon.import.less similarity index 71% rename from examples/todos/client/stylesheets/globals/icon.lessimport rename to examples/todos/client/stylesheets/globals/icon.import.less index 1f385cb411..6be0db9436 100644 --- a/examples/todos/client/stylesheets/globals/icon.lessimport +++ b/examples/todos/client/stylesheets/globals/icon.import.less @@ -1,10 +1,10 @@ @font-face { font-family: 'todos'; - src:url('icon/todos.eot?o4fu7p'); - src:url('icon/todos.eot?#iefixo4fu7p') format('embedded-opentype'), - url('icon/todos.woff?o4fu7p') format('woff'), - url('icon/todos.ttf?o4fu7p') format('truetype'), - url('icon/todos.svg?o4fu7p#todos') format('svg'); + src:url('icon/todos.eot?-5w3um4'); + src:url('icon/todos.eot?#iefix5w3um4') format('embedded-opentype'), + url('icon/todos.woff?5w3um4') format('woff'), + url('icon/todos.ttf?5w3um4') format('truetype'), + url('icon/todos.svg?5w3um4#todos') format('svg'); font-weight: normal; font-style: normal; } @@ -23,9 +23,13 @@ -moz-osx-font-smoothing: grayscale; } + .icon-unlock:before { content: "\e600"; } +.icon-user-add:before { + content: "\e604"; +} .icon-cog:before { content: "\e606"; } @@ -44,6 +48,9 @@ .icon-close:before { content: "\e60c"; } +.icon-cross:before { + content: "\e60d"; +} .icon-sync:before { content: "\e60e"; } @@ -53,6 +60,9 @@ .icon-check:before { content: "\e612"; } +.icon-share:before { + content: "\e617"; +} .icon-email:before { content: "\e619"; } diff --git a/examples/todos/client/stylesheets/globals/layout.lessimport b/examples/todos/client/stylesheets/globals/layout.import.less similarity index 85% rename from examples/todos/client/stylesheets/globals/layout.lessimport rename to examples/todos/client/stylesheets/globals/layout.import.less index 5cefa02a14..75ecccaa05 100644 --- a/examples/todos/client/stylesheets/globals/layout.lessimport +++ b/examples/todos/client/stylesheets/globals/layout.import.less @@ -37,6 +37,10 @@ body { background: @color-tertiary; opacity: 1; + @media screen and (min-width: 40em) { + left: @menu-width; + } + .content-scrollable { .position(absolute, 0, 0, 0, 0); .transform(translate3d(0, 0, 0)); @@ -48,13 +52,14 @@ body { .menu-open & { .transform(translate3d(@menu-width, 0, 0)); opacity: .85; - } + left: 0; - // Show menu on desktop, negate .menu-open - @media screen and (min-width: 40em) { - .transform(translate3d(0, 0, 0)); //reset transform and use position properties instead - left: @menu-width; - opacity: 1; + @media screen and (min-width: 40em) { + // Show menu on desktop, negate .menu-open + .transform(translate3d(0, 0, 0)); //reset transform and use position properties instead + opacity: 1; + left: @menu-width; + } } } diff --git a/examples/todos/client/stylesheets/globals/link.lessimport b/examples/todos/client/stylesheets/globals/link.import.less similarity index 100% rename from examples/todos/client/stylesheets/globals/link.lessimport rename to examples/todos/client/stylesheets/globals/link.import.less diff --git a/examples/todos/client/stylesheets/globals/list-items.lessimport b/examples/todos/client/stylesheets/globals/list-items.import.less similarity index 100% rename from examples/todos/client/stylesheets/globals/list-items.lessimport rename to examples/todos/client/stylesheets/globals/list-items.import.less diff --git a/examples/todos/client/stylesheets/globals/menu.lessimport b/examples/todos/client/stylesheets/globals/menu.import.less similarity index 92% rename from examples/todos/client/stylesheets/globals/menu.lessimport rename to examples/todos/client/stylesheets/globals/menu.import.less index 0ef6c0521c..a842950809 100644 --- a/examples/todos/client/stylesheets/globals/menu.lessimport +++ b/examples/todos/client/stylesheets/globals/menu.import.less @@ -85,6 +85,11 @@ color: @color-empty; .count-list { background: @color-primary; } } + + .cordova &:hover { + // Prevent hover states from being noticeable on Cordova apps + color: rgba(255,255,255,.4); + } } } } \ No newline at end of file diff --git a/examples/todos/client/stylesheets/globals/message.lessimport b/examples/todos/client/stylesheets/globals/message.import.less similarity index 100% rename from examples/todos/client/stylesheets/globals/message.lessimport rename to examples/todos/client/stylesheets/globals/message.import.less diff --git a/examples/todos/client/stylesheets/globals/nav.lessimport b/examples/todos/client/stylesheets/globals/nav.import.less similarity index 100% rename from examples/todos/client/stylesheets/globals/nav.lessimport rename to examples/todos/client/stylesheets/globals/nav.import.less diff --git a/examples/todos/client/stylesheets/globals/notification.lessimport b/examples/todos/client/stylesheets/globals/notification.import.less similarity index 100% rename from examples/todos/client/stylesheets/globals/notification.lessimport rename to examples/todos/client/stylesheets/globals/notification.import.less diff --git a/examples/todos/client/stylesheets/main.less b/examples/todos/client/stylesheets/main.less index 93b78465ac..69d5c249e7 100644 --- a/examples/todos/client/stylesheets/main.less +++ b/examples/todos/client/stylesheets/main.less @@ -1,29 +1,29 @@ -@import 'util/reset.lessimport'; +@import 'util/reset.import.less'; // Mixins & utilities -@import 'util/helpers.lessimport'; -@import 'util/lesshat.lessimport'; -@import 'util/text.lessimport'; -@import 'util/typography.lessimport'; -@import 'util/variables.lessimport'; +@import 'util/helpers.import.less'; +@import 'util/lesshat.import.less'; +@import 'util/text.import.less'; +@import 'util/typography.import.less'; +@import 'util/variables.import.less'; // Global namespace -@import 'globals/base.lessimport'; -@import 'globals/button.lessimport'; -@import 'globals/form.lessimport'; -@import 'globals/icon.lessimport'; -@import 'globals/layout.lessimport'; -@import 'globals/link.lessimport'; -@import 'globals/menu.lessimport'; -@import 'globals/nav.lessimport'; +@import 'globals/base.import.less'; +@import 'globals/button.import.less'; +@import 'globals/form.import.less'; +@import 'globals/icon.import.less'; +@import 'globals/layout.import.less'; +@import 'globals/link.import.less'; +@import 'globals/menu.import.less'; +@import 'globals/nav.import.less'; // Global templates -@import 'globals/list-items.lessimport'; -@import 'globals/message.lessimport'; -@import 'globals/notification.lessimport'; +@import 'globals/list-items.import.less'; +@import 'globals/message.import.less'; +@import 'globals/notification.import.less'; // Templates -@import '../templates/lists-show.lessimport'; -@import '../templates/auth.lessimport'; -@import '../templates/app-not-found.lessimport'; -@import '../templates/loading.lessimport'; \ No newline at end of file +@import '../templates/lists-show.import.less'; +@import '../templates/auth.import.less'; +@import '../templates/app-not-found.import.less'; +@import '../templates/loading.import.less'; \ No newline at end of file diff --git a/examples/todos/client/stylesheets/util/helpers.lessimport b/examples/todos/client/stylesheets/util/helpers.import.less similarity index 100% rename from examples/todos/client/stylesheets/util/helpers.lessimport rename to examples/todos/client/stylesheets/util/helpers.import.less diff --git a/examples/todos/client/stylesheets/util/lesshat.lessimport b/examples/todos/client/stylesheets/util/lesshat.import.less similarity index 100% rename from examples/todos/client/stylesheets/util/lesshat.lessimport rename to examples/todos/client/stylesheets/util/lesshat.import.less diff --git a/examples/todos/client/stylesheets/util/reset.lessimport b/examples/todos/client/stylesheets/util/reset.import.less similarity index 100% rename from examples/todos/client/stylesheets/util/reset.lessimport rename to examples/todos/client/stylesheets/util/reset.import.less diff --git a/examples/todos/client/stylesheets/util/text.lessimport b/examples/todos/client/stylesheets/util/text.import.less similarity index 100% rename from examples/todos/client/stylesheets/util/text.lessimport rename to examples/todos/client/stylesheets/util/text.import.less diff --git a/examples/todos/client/stylesheets/util/typography.lessimport b/examples/todos/client/stylesheets/util/typography.import.less similarity index 100% rename from examples/todos/client/stylesheets/util/typography.lessimport rename to examples/todos/client/stylesheets/util/typography.import.less diff --git a/examples/todos/client/stylesheets/util/variables.lessimport b/examples/todos/client/stylesheets/util/variables.import.less similarity index 100% rename from examples/todos/client/stylesheets/util/variables.lessimport rename to examples/todos/client/stylesheets/util/variables.import.less diff --git a/examples/todos/client/templates/app-body.js b/examples/todos/client/templates/app-body.js index 221febaf62..721d5ec49d 100644 --- a/examples/todos/client/templates/app-body.js +++ b/examples/todos/client/templates/app-body.js @@ -4,21 +4,39 @@ Session.setDefault(MENU_KEY, false); var USER_MENU_KEY = 'userMenuOpen'; Session.setDefault(USER_MENU_KEY, false); -Template.appBody.rendered = function() { +var SHOW_CONNECTION_ISSUE_KEY = 'showConnectionIssue'; +Session.setDefault(SHOW_CONNECTION_ISSUE_KEY, false); + +var CONNECTION_ISSUE_TIMEOUT = 1000; + +Meteor.startup(function () { if (Meteor.isCordova) { // set up a swipe left / right handler - this.hammer = new Hammer(this.find('#container')); - this.hammer.on('swipeleft swiperight', function(event) { - if (event.gesture.direction === 'right') { - Session.set(MENU_KEY, true); - } else if (event.gesture.direction === 'left') { - Session.set(MENU_KEY, false); - } + var hammer = new Hammer.Manager(document.body); + + hammer.add(new Hammer.Swipe({ + velocity: 0.1 + })); + + hammer.on('swipeleft', function () { + Session.set(MENU_KEY, false); + }); + + hammer.on('swiperight', function () { + Session.set(MENU_KEY, true); }); } - + + // Don't show the connection error box unless we haven't connected within + // 1 second of app starting + setTimeout(function () { + Session.set(SHOW_CONNECTION_ISSUE_KEY, true); + }, CONNECTION_ISSUE_TIMEOUT); +}); + +Template.appBody.rendered = function() { this.find('#content-container')._uihooks = { - insertElement: function(node, next) {; + insertElement: function(node, next) { $(node) .hide() .insertBefore(next) @@ -68,7 +86,11 @@ Template.appBody.helpers({ } }, connected: function() { - return Meteor.status().connected; + if (Session.get(SHOW_CONNECTION_ISSUE_KEY)) { + return Meteor.status().connected; + } else { + return true; + } } }); diff --git a/examples/todos/client/templates/app-not-found.lessimport b/examples/todos/client/templates/app-not-found.import.less similarity index 100% rename from examples/todos/client/templates/app-not-found.lessimport rename to examples/todos/client/templates/app-not-found.import.less diff --git a/examples/todos/client/templates/auth.lessimport b/examples/todos/client/templates/auth.import.less similarity index 100% rename from examples/todos/client/templates/auth.lessimport rename to examples/todos/client/templates/auth.import.less diff --git a/examples/todos/client/templates/lists-show.lessimport b/examples/todos/client/templates/lists-show.import.less similarity index 100% rename from examples/todos/client/templates/lists-show.lessimport rename to examples/todos/client/templates/lists-show.import.less diff --git a/examples/todos/client/templates/loading.lessimport b/examples/todos/client/templates/loading.import.less similarity index 100% rename from examples/todos/client/templates/loading.lessimport rename to examples/todos/client/templates/loading.import.less diff --git a/examples/todos/mobile-config.js b/examples/todos/mobile-config.js index acdbd59164..b5f3952f19 100644 --- a/examples/todos/mobile-config.js +++ b/examples/todos/mobile-config.js @@ -7,13 +7,21 @@ App.info({ }); App.icons({ + // iOS 'iphone': 'resources/icons/icon-60.png', 'iphone-2x': 'resources/icons/icon-60@2x.png', 'ipad': 'resources/icons/icon-72.png', - 'ipad-2x': 'resources/icons/icon-72@2x.png' + 'ipad-2x': 'resources/icons/icon-72@2x.png', + + // Android - XXX these are the same as iOS for now + 'android_ldpi': 'resources/icons/icon-60.png', + 'android_mdpi': 'resources/icons/icon-60.png', + 'android_hdpi': 'resources/icons/icon-72.png', + 'android_xhdpi': 'resources/icons/icon-72@2x.png' }); App.launchScreens({ + // iOS 'iphone': 'resources/splash/Default~iphone.png', 'iphone_2x': 'resources/splash/Default@2x~iphone.png', 'iphone5': 'resources/splash/Default-568h@2x~iphone.png', diff --git a/examples/todos/public/icon/todos.eot b/examples/todos/public/icon/todos.eot index d06f492e5436b31e327a30f4e1acd0f81db9ddd0..932ee9360d49c318a7d944893c19c5ec9f731aa1 100755 GIT binary patch delta 1229 zcmZuwO>7%Q6n<}KXLf9_f7ab~y!mm~cCejNN*udxB*2MOg+oC_LOB#J;6jNH&5z^? zil{IL4k!|;DqlF1N?f4gP=Sn44j_8y0l}pby|j?X64Kr(BB7$9s9E0lM-YkCdvE4@ zZ@-QN0N^A5Tw86lHfc-{-lkEmUU>Jd zcWz#PNca{&@^L^**jsO`x#xd*yLdo}4``9f=0@uxFe*Xno6ZWpxB3xHGxS3Y zVu0ZJ;OoBhV}8O<`eVN9=lz0T4IT%9;tcD;5C2acgWt#XaU2IXa1Y$a?%(bs_Ye1h z+oNw|r>sqOPit*#YmkN+{1rcj=V2A#H8r>*3~MADk(JZ{Kv+DoC9Fr!{l%W|gaOoWMv_ULn=NGTMF$k~VtMWFj5 z`<|r*ctL+=!OmC4xz2=K)^MY@Q;U;qhr{A!ug(q<&M)t%&hhfICNS!Pxvw&r$G(L*u++5#m z73XqfPCt^~!bNK~ya(13})ZffVU$v=PwTSIorhJ9E7+OBKv#ex#Rhno@JS)vs zok<-JKXuxl#it@6X-;v~1RK+eCC$A(6^Y64;6Z=VtTQ%X*NG#<4mc zB2SZN$UXAxaC8+=F36+gOXLOe#meCn)7-bk37^b8r78d|%0U&<^kmg9w zsZ6t3vN9UT-vJa($w*C1Va%`XW?&EksW;023NT+~{0!uW0Qo8zxg`~{3{3Vweg%;4 zk&~aCsMeu)2gpAFn|Hr@}%mK8-xFEl{gn=0- z#UNrcIfSt~u>r`G0Xm48fro*SLE#z0Gmd9G&-k7RJQI2*`Aqql+B1{?fB*jn=>W^J zJ>$Y6%lQAX6pQ44$$yf6CI3kNmi#LDM)H;9U7)FqlO35vCI>LF0x`?xP^KEj%^z9z zFl)0jDE$A=_<(Ug&~9r62L@M$5Qb!iA_fLkB{f?{6EkB&BQaS<5jJH*;mJoik~kSS zcz8HKc(OXDD{npzM+GN0H)jP04oHGY(PD{XWnz8BmcurS?GL*OyAOvE&?Jy)LX3F~z^DKMCScGA KZ@_lTJQ diff --git a/examples/todos/public/icon/todos.svg b/examples/todos/public/icon/todos.svg index 720db28555..d6a1342c46 100755 --- a/examples/todos/public/icon/todos.svg +++ b/examples/todos/public/icon/todos.svg @@ -8,15 +8,18 @@ + - + + + diff --git a/examples/todos/public/icon/todos.ttf b/examples/todos/public/icon/todos.ttf index bfd1157aded28215aeaae0f6430b8d8c9a1c3d55..afd1056a946b358d30f289d26085508b301f3cf8 100755 GIT binary patch delta 1161 zcmZuwO>7%g5T4n$@9nd9{j;lG$D72?t{rT*O(Bk5Hxl3=RY3@(R;qd^T)-_QIW#{~ zDkuWg95^5ZqR1Bxr4kpYI20r!lmmz!dIAnb^g`Q2kt*%2P^l^cMU9zf$AU<#X6MZ} zv)}uf@9mw+&4U+%_9xpfTmisw0JyZ!T3e+tO?aI~xp4N)*WS2#`61zJ0M7NrGp$$g zr;kDa_g$(t7Ae6t@K3_u5uRLJI(NPZ+9kqUgioAZIo&#Vvo-_Z)d^26wa%|X9%&8l z6~e)CYso+J>+9tmO1wjh)K*v4&HnX}^T}1K!sblZ%s6L9L;P?C;|B?T<|Cj%Vf6w3QT*R>Z6<)x$23eTI z+xQ_o3kv{;XBvl_sO(U^RDK-Es?!aXZIsIO2Ek%M7$V~(aU_qmJXM8}L^3b0G6Sn& zk?8bgPJQmVnJ1B4ZKm-wl2fJYcEPs8lxUlL!t?gU1oL%aXd2^;^L!ZQIRzSOlIy-E z;uX&g^tjIBJRR6}!9iBBq_is1vgE(fq|WrXAf9xBL?W$WCdkI6k>Y&9cE-jWdxG-K~gId~31dbMRrs+(?iHYuTx|mssnWo%l%9sh=DfT_f3J7{V+`=DVKRf|-I0DC^ zMdEc_<5Z_@%xk#P`NcTW_2d=SMi9LSxA7JP0FRYb>q>2YErkUZk!7g9Ie;0bYfp@F{%O{n-o|2|K55Fx}w_ zEYmjZdg%ZT#Rv}#blA;!HmMVmGP77^O5^=lEll^#Reria=Jh@4U7f|EJ6)VbuizHx zME%1I^;L&z)XUhuX2}<+i?R8g8}mx0m!yT3#FNrmYci?h-ls|Dvw6;pNh`-y6I{$H zmbC8QSDu&*ckcCr#U^6|c9S?ljNeh|jhqm~RNV;R7$Mw5UKN=lRL0Yf7;&1`!7^Qn&BCGvz-r|FUrfyo}ouK@Bra`KZC)jAaK0Qm=ie6`%f ziUI~{MxY%+FMxc7yu@6|)XQb+{}>pAIe?ZJ7vvY0Ffaq97({F)?x>b-0J3C&?qO!& zVPIrXc*gLI;~CF0zGni@geC_tiW;&#Nj_74ruNL_|KI=r85sXRmSU0oFZoaM zujC)e-;!S?-$=faybCmiaq>b&iOCxnSvT)wtYO?7%Cd)9o1H=7|9{2@jQfH1STi^< zxH5z=Br_B-FsLf2*)p1#85Z8;Q-;u-5jpG`8*sIoZQ@; z6&yT_43jT$IByo=T*vr6sl?G^F-HeVUInLz$xxS%&L9YO#9$M~7? z(BuswvcjK%K12mVlOKqPXUYNfDFCq|lm@Xum=}m0fLIO6cLUNOtOz!Qi$R1zj$s$m z3}!v%2`pMHajZj5LzhEhNwzX9tjYVmb^ql z2?)_5^+#2e7F9^i4;qy}rHvx~wGH{x2u1zTrc$b+N==){Z6ymuMMa{NmcY8-nS0k> z2Lt8qo!K*I&YYQZX3k^ollN@hDoEhT7KO|InK%44!)u>=?wy(zf*fFXb8*TaTz&Z9 zo+H5RNBbo%C$8Q3(|vo60%urgGcA|+z5`D^3Y;fI-+3-izIyWA{d@O3B1GyU`deJ+ zx8E=A2U3VMj~V7-UZ#KVKX~joa1&^6=TZ^IO9u`=%yi#GoADEy-k6y_xaT;$ytgn#h3b) zvP-$8%F@VEbNR#NWzb=@x?e4Y*XgI_zi+TM&<2rP&UJDh=Kh=ePwt<&w{nZYY?{Hx zR3r#9#Pq6s60Eg-qZVORj!(v!Vgb54N9V*I@u+xCi0bTSnyoh*lT<6$8}(-825L0R zjq*sPKEicrw%KaW(adxvo2M)~^MG3zRPzT-Ql+fyD5cSr2AHm=hDfE-smx4C(>1E4 zbZIu*9I364rZQRXpKfiTIhw_4OybADYZ{$@#G|olCZ6{qNo9mp$R%eW(YG;^Z>Eyj z0mmcHp&gFb`58@he*a5pN!PYr{MpiT98amtRc2;NW=Axb9*M@{p^(!bmA2<#0!o%# zFOp5Bn)$)7L-Z!d91l$CkLS-CJ1hviN(aTC=Jwc1zcZMn$4y6sT5}}ftsH+#&F}ltt%85iN zrd(M_r#FU_nX{B_7^XC(%$G`e3BVx3kyg%7;n8%eXoW2qmhoaDQSKvilvOgyQmjJ5 zmT83*#yNe(NF;7hrq~~L?3k2=MBl(bU!ovo%yz>4#S9s7FH-C?q-j{D3S%Ipy4*tU zXvlS)jjj`dLo!8vxkG=W*ToMhO9zEW`clr|Sk$K*T3z!5!6D#^{5LToP>V(v2s+{u zsE?H2GsHM3lyzD!H@clM0%}G1=p1K+zbQU?3Wuu=Jq8;!M||4aZM_S2I>q}j&b;wr zMd^%+@pAC`XMHGWVR%=FOo2J*O=qq*1uaYtBbn#<@#^LCVc!xUFhO_WBU6<1twoDF z6Q~9Xf*t6Sz@wR-ZO`Y+^K0Wv50Z`E!QhOv>&;m`3S^aEM=e(>Pm%H@_9<$|_>|Zd zHX7KJsf?&)U%$xVpZg}mO0*K6l9-_vBAz?S|79a^( zj+x(-u0$j8cqCd$lL|xHkQajWnzl(^+HqjzPTB)xhu|b^7nT9q;S{~d()-KT(xkc;NkB&JJsdZ6d#qzM)QXvTKSb^Gn z6_^TI^HpGlRvhb+@@tO;My{)lgArKEs0$Dp6YXQOQQ&+#AWjO;u;omDyy) zESWWS>VZ!KRb_2cyZqH&x^N(DW0@yV?C=40Q_%r8MEQ_A5am|qgCj?N{(g=oa+|ox z<;Pv%i(P;YZ+2WF*V*ib5Ed>lo|+!q(&*@D=LITu7C+}X$Kk9($GPvL5OiRP5_E6{ zI+zhRh%Mq~$Ump;875alfsw&-0l;O%NU;-xG&AfCs8w&*TMaIDt(~>uhO)NJz$Iz0 z#&2dzw9U@zrb$`DwD>riw9|x%NQmB|+lL3ML!I}lSF2aIsCb6%lMw}q1-6II>u|q2 z*!h~&&yms}60Hta2RrW%Umd>MpNT8Z2TW1KsuvO4>*5aa7+^nWYp>=zJl~~Ov~OW& zr9BtRpx>FdXS=oRrYLR{U&CA(WvlWOp{k7_cwj5qt?2?+I9f5vW)TMbee(B4@1>1V zoMQN)#y^vO2t(~hFI{6(R(7>UUr}(laeK?W?2`Z&7A#T#=eGa}aBl9_(zc1Q?S*oY zs8}v+ADh@#Dwc`L#T+@xNk+XwJW)v|sB@{sVGCIEGhKti8iK^x-y6M5WD%Ndp0IcuOyFF7 zyW~uv$24m!MGHBD-e>J}Shn5`Zk5}Z8S__K%{IuY=|+v-QE@wL4-XF9RxPx1nNiPA zuiBbd)<3jTidjrD%L0V#h5Txq7m=4KJbskg1d!}d*!Ot&X5BdHx zE!yysxOG<9vYT~emPpgaX|~aGRq=yf9SORhcJ*Fq+C3K||MoMB>{ek1IrHniHnH!e zb0Hh*AJq2_eU%xs*Is3&^u0%4S1vxo!45Z?mCFrZYizikK|Sh+W{t>2=WL_Yr>^f#*p~e^_$`v*?zs8 z)-|qAyg#Wr^5b+lRe`ZWk(y;sox}?UG%i zMWn7uuc)(MFYts6akI1klz}u44^q!lofn2_^u-rx7t#-`-*xCc+;t@sVMyb>jn8vV z{QTLonWvxD=VGh)0iC7YB7^l$!%t;Wt1+rMkA!Fj7G#^Jp|`j?c~T#X)11xhHi2ZT z1CskroA`u6xGV1lze(m-EyIzGG*@C=CKW>_Rau|ky6o_UswA3-)!)UJm=f&w7IB|= zLVQoWf~jD4rSb@Dw*`G>vX#X3h}lm?RJ9xS9q=0K1+Nv)yru&@KVt_iBB{N|CzPf* z!}WmEcw}S^cb=fom6+;KYi!H*yeYIi_cbgF79{*-!8lVL8Rwz zlYX}z!{6`N(eOjpG$#!QRl2vq(|~dTr5`1aQbZ{Q{|s|cC=rwelo6D96vl52N=fq! z<6B@}oTWR=QS+4LSwFEZ$!Fy+)JeN&-);ZKnQ*o{&x9V*D@xNL{YACA(B4G}d_{a! zQ?Wc@bn!BoGK$>LhfUy%0c-)jJ%A-_DICBG-$BO$IE;JSmyoTH6#|BN`moQ_hkc$t z?DOKbAaH;tA4V}~C(d~~&mOXOaB yDtkg4z-99B9{g54{1_PQ1H~cDbPxLXVw$3ONIZr5^WtGp-G#zaO|mqf`1}vCudomR literal 4260 zcmb7HeQ;b=6~Ei;4VRE^V(3$Y;G|V4Vh7qJfP4%Df%28K2t_*#DGl@^nkEZrB5AkD zZuT>~XTRUeZZ?}nv4u1(h7O-iCxZf=k)neN`j6-g(?CXnv5u5^JM#kZci-Dhqk;o> z_nvp|x##}wz2}~L&U=q;T)%$frcE0et3Jpo7)tg1%qE}zTW(svz7Enej8#4@YyG8V z?{2*3@_NRWAA)?VtYX#tdk=NCJGutvqt|?r&tnjt6!dLBIuVA(J zED)8RmFG}LK`Zp|i!lDhDoJ1YlBDN?R8H2g^MQ2U@~WDzT)6V$@2tJznj3DueZxJQ zO>C3&uI*jdTfesVmMhnqp= zwlJ$^HFD8*b`H*Lxvi?qXMdXiuzXqh=5j+^Al^NXCFV1TY>u+d|!luU* z(g!$2%^!hMBoU5>;}I&B=znsNXe1gY0X3+G!48oy4iQaoI&u8?33{H6K9b*Vjg9-$ zL6tJ3X&^C*M`ETt+WX7RPi-V|E!}wsU1zBZaz0GlLq1<*kmQUJLB>8FiBK3#kLJyg z&_5tv1jF1E6~_Dej}`qDB4e`ws&D4{o!2Y0zdyH!_E3L6$Y9c&4hZVv7KSxk&>@~q zB{dor4*kBuB}%TJXFa3-F>5Un8#Pb)bS5KmIX*n3g@%KI9_8dpxw7tzCl6imQ{oA4 z!W$nH{r%kI@w;d*xzetTTL5opFysw-MIUhs6kUFg+wBQJOHdyl40=O@L!v*&JsAvw z(xROKv(NALNYuf&H!+wLG|nj>$h)(itShybBx-Otqzz@n$OzA7(^x8v`Sb3K7|8MX za6(HCi*e#(luu={*-Q$(5@R^2C5Gc-WLoJAINjYYL0dTm!od(qFdQJUmAI?h?F@8@ z$z41diUlKqC^~{6(b>sUomuBtw|I_tijv_(D1m;0ZMX7+t_k;KKujLyi9|A%vNmke zC?!o@i8q;=$R5lKdY)4%mQ0`|<0%r)6VD&WPNXKqu1OwBgaK~#i^GR`;E;R5bwIAm z0u4|wj)~(^OVA6vJMYYPrNpjXT<##a#D+xBjfE1T^DsYVoUd%62OgkJbngpWUY6bq zJbA`xQln{jrR24EN+pf5gPI38VYr@Ef{_q~;EtxpchDmT=?EQp{BaOE_y~1Sh@^&9 zEO&LA?mA5AR9rKmqp?&}#bhsUdEs7y&uMy@;vp}tg&@6>Q%2L^-&hs=(@P$>K7<~x z*JBFxt-7WdjOf?U^r>FlNcj`S8sZk~jre?W*hXmK5_y49yfZm^!gy6~w|Iq~E?pta z_JsawuGFNA7uy!b$TNy=Cwj;Ld4}t^&)XFvPTl&m`mdc&75JjUg67L+~iD*0)iwQla=Xew@P^#jkmk<%9Pl%iQm7PZ? zCXVjta&lwT7*%#Wr4Q%>M|TvsrIS%@m9Kz?(1u9 zM``T?OReJ&PxVdH49$#BPoYeY&){^QQH*L@y_!Ic>eH+BYQq2YX-W0!)u$nrZlT+Z ztx7%7taJd)y=d`<2J5(^o`_rX!G>8aRQ^BI2ruy@K9($2?<|ATrO`QE1bL6r%+J zv-!X9jAo;G(Sa;P9ePF!{73a>qnU_m`D_cs(pfE36`teJPwQ7GX&<@$KA&%Ze5zIkVmakAy)NpA5NJK*<==H}O0`0Hzw#s*^*HO@Ai zB7N2DsZ+E1Dmv9L+epT$hDPzYUa!zh-?TJp>$qv)K56Ve)9~Z1@(`x`U~8Hlm&P84 z;f13R(hn$p6^ru;kB9I1;Hp1{?xTH9|!?1dGBafx>F2{a9?_W{ICEGU~|*0+;TZYt5_l-j!k2$l!a+- zH0+9x0-=y!0{UDY*T6tWN88>lw1wKnI*#l<;F=6PDMt74v=4Sdp%GtNv>r!<3?M8A z5tc(C(b@|8l3Vqu(1Lx3hxypI-@fr*^cMZ$*wpK>B(@~oc(KUYqH(x?ymaBu%qUSA z>Z1JY%fPT7LFVj0E5;z;IFaT7K!3jTx7WgMGJ7L$JBbe#^EPm-yp4IkP~JZNJH>i^ zI6=qnr@O870^8Uo-z@ZM18H66a2XOyf%6der-I1gv_F^IPx~on=KG-6AHYd>6{;1V z>Xs*M{0u+4Zs%6p=QqzruQ6(h;lny3Br2Sdl?sIZ3w^3|R*piC{ttzckz^<_grpZL zT2y*V$zzuCVjgkXe3S7k+I>+IQBvj}bEp-P3(!tW-%6Td6WokFXyT~i6vv^V=)~vO zJgDf`8!LHyD1ks$Dso8al&xo}MaZRzSUfKD>-CjnY?wz>*EjH|9#ixgGA=P3#wEH# z#xDJgQcTo(lhMRgI2CTO5B5`qQLon<_`%g=+XoL;RiQWOO=h}JnhEWF1>skwTSLk% z9aYWBD=tUt_`#mCZDB(X^H@n6$JJY43c0;LnSxFbm-A3oIxA&VEsIw_2uryULgUFV zqWw3em`jV$W(fN%=r5u?zvAx-?b+AASH5lL;DTehQ4kv4C*SepB0sYe(=6>XT^Ix5 z!h-%!pQE6yC};{*%I~r=yznO($Ja}5#hEP+R9*KGJ5Mf^vEN@dzVqyJ;S<}3wwKWs=1yb>#>hQeTLb^0i6nbUrKZHl zr`$A{b?%Tb$9FD|y%<0sNvoa!>m>r5kkI{7zU;HZTF From a11f56fff8ed7ca918ba4877f801f0ffe25bd00f Mon Sep 17 00:00:00 2001 From: Nick Martin Date: Tue, 7 Oct 2014 16:08:52 -0700 Subject: [PATCH 07/39] Tweak READMEs for built app bundles. --- tools/commands.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/commands.js b/tools/commands.js index 7072220bbd..f1c35c8cb0 100644 --- a/tools/commands.js +++ b/tools/commands.js @@ -749,6 +749,7 @@ var buildCommand = function (options) { files.cp_r(buildPath, path.join(platformPath, 'project')); fs.writeFileSync( path.join(platformPath, 'README'), + "This is an auto-generated XCode project for your iOS application.\n\n" + "Instructions for publishing your iOS app to App Store can be found at:\n" + "https://github.com/meteor/meteor/wiki/How-to-submit-your-iOS-app-to-App-Store\n", "utf8"); @@ -758,6 +759,7 @@ var buildCommand = function (options) { files.copyFile(apkPath, path.join(platformPath, 'unaligned.apk')); fs.writeFileSync( path.join(platformPath, 'README'), + "This is an auto-generated Ant project for your Android application.\n\n" + "Instructions for publishing your Android app to Play Store can be found at:\n" + "https://github.com/meteor/meteor/wiki/How-to-submit-your-Android-app-to-Play-Store\n", "utf8"); From dc50b779312befd062d6132167032b887ab77a63 Mon Sep 17 00:00:00 2001 From: Justin SB Date: Tue, 7 Oct 2014 16:09:59 -0700 Subject: [PATCH 08/39] Use /usr/libexec/java_home to detect JDK --- tools/commands-cordova.js | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/tools/commands-cordova.js b/tools/commands-cordova.js index ec1b3a1cfb..85c005284a 100644 --- a/tools/commands-cordova.js +++ b/tools/commands-cordova.js @@ -1919,7 +1919,20 @@ _.extend(Android.prototype, { var self = this; if (Host.isMac()) { - return files.statOrNull('/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jarsigner') != null; + var javaHomes = files.run('/usr/libexec/java_home'); + + if (javaHomes) { + javaHomes = javaHomes.trim(); + + // /Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home + if (javaHomes.indexOf('/Library/Java/JavaVirtualMachines/jdk') == 0) { + return true; + } + } + + //Unable to find any JVMs matching version "(null)". + //No Java runtime present, try --request to install. + return false; } else { return !!Host.which('jarsigner'); } From 8823367a0f0b950edfb16973aae54bc1103dba39 Mon Sep 17 00:00:00 2001 From: Justin SB Date: Tue, 7 Oct 2014 16:19:09 -0700 Subject: [PATCH 09/39] Clean up the messages to accurately reflect what we're installing --- tools/commands-cordova.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tools/commands-cordova.js b/tools/commands-cordova.js index 85c005284a..fe7723a079 100644 --- a/tools/commands-cordova.js +++ b/tools/commands-cordova.js @@ -2153,11 +2153,12 @@ _.extend(Android.prototype, { if (hasAndroid && hasJava) { if (self.hasTarget('19', 'default/x86')) { - log && Console.info(Console.success("Found suitable Android API libraries")); + log && Console.info(Console.success("Found suitable Android x86 image")); } else { - log && Console.info(Console.fail("Suitable Android API libraries not found")); + log && Console.info(Console.fail("Suitable Android x86 image not found")); if (fixSilent) { + Console.info("Installing Android x86 image"); self.installTarget('sys-img-x86-android-19'); } else { result.missing.push("android-sys-img"); From 913cda95f342a4d9e741fe377784666fcbd13714 Mon Sep 17 00:00:00 2001 From: Slava Kim Date: Tue, 7 Oct 2014 16:07:19 -0700 Subject: [PATCH 10/39] Fix android splash parsing --- tools/commands-cordova.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/commands-cordova.js b/tools/commands-cordova.js index fe7723a079..2fefecb847 100644 --- a/tools/commands-cordova.js +++ b/tools/commands-cordova.js @@ -1395,7 +1395,7 @@ var consumeControlFile = function (controlFilePath, cordovaPath) { verboseLog('Copying resources for mobile apps'); var imageXmlRec = function (name, width, height, src) { - var androidMatch = /.+(.?.dpi)-(landscape|portrait)/g.exec(name); + var androidMatch = /.+(.?.dpi)_(landscape|portrait)/g.exec(name); var xmlRec = { src: src, width: width, From 95d73cca07b2b67ab7443313d68184b71a198d8a Mon Sep 17 00:00:00 2001 From: Slava Kim Date: Tue, 7 Oct 2014 16:29:28 -0700 Subject: [PATCH 11/39] Put accidentally removed cordova.checkIsValidPlugin method back --- tools/commands-cordova.js | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tools/commands-cordova.js b/tools/commands-cordova.js index 2fefecb847..8762c35779 100644 --- a/tools/commands-cordova.js +++ b/tools/commands-cordova.js @@ -111,6 +111,16 @@ cordova.filterPackages = function (packages) { return ret; }; +// used by packages commands +cordova.checkIsValidPlugin = function (name) { + var pluginHash = {}; + pluginHash[name.split('@')[0]] = name.split('@')[1]; + + // check that every plugin is specifying either an exact constraint or a + // tarball url with sha + utils.ensureOnlyExactVersions(pluginHash); +}; + // --- helpers --- var localCordova = path.join(files.getCurrentToolsDir(), From 938313e7bc6c5564af0a7960e2c32214887a8cba Mon Sep 17 00:00:00 2001 From: Sashko Stubailo Date: Tue, 7 Oct 2014 16:57:30 -0700 Subject: [PATCH 12/39] Improve script --- scripts/admin/bump-all-version-numbers.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/admin/bump-all-version-numbers.js b/scripts/admin/bump-all-version-numbers.js index c98d4b3e49..6e3864c4bb 100644 --- a/scripts/admin/bump-all-version-numbers.js +++ b/scripts/admin/bump-all-version-numbers.js @@ -6,7 +6,7 @@ var _ = require("../../packages/underscore/underscore.js")._; var packageNames = _.rest(process.argv, 2); _.each(packageNames, function (name) { - name = "packages/" + name + "/package.js"; + // name = "packages/" + name + "/package.js"; var content = fs.readFileSync(name, {encoding: "utf-8"}); @@ -14,7 +14,7 @@ _.each(packageNames, function (name) { if (match) { var versionNumber = match[0]; var s = versionNumber.split("."); - s[3] = (parseInt(s[3], 10) + 1) + ""; + s[3] = "rc.0"; var incremented = s.join("."); content = content.replace(versionNumber, incremented); From 64a49831f3152c39548410518adc80bd4cb08bf6 Mon Sep 17 00:00:00 2001 From: Sashko Stubailo Date: Tue, 7 Oct 2014 16:58:58 -0700 Subject: [PATCH 13/39] Improve script --- scripts/admin/bump-all-version-numbers.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/admin/bump-all-version-numbers.js b/scripts/admin/bump-all-version-numbers.js index 6e3864c4bb..a302ff3b77 100644 --- a/scripts/admin/bump-all-version-numbers.js +++ b/scripts/admin/bump-all-version-numbers.js @@ -14,7 +14,8 @@ _.each(packageNames, function (name) { if (match) { var versionNumber = match[0]; var s = versionNumber.split("."); - s[3] = "rc.0"; + s[2] = "rc.0"; + s = s.slice(0, 3); var incremented = s.join("."); content = content.replace(versionNumber, incremented); From a36b63b589af2a2f0b0d1790d758c568dd28a6cd Mon Sep 17 00:00:00 2001 From: Sashko Stubailo Date: Tue, 7 Oct 2014 16:59:53 -0700 Subject: [PATCH 14/39] bump --- scripts/admin/bump-all-version-numbers.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/admin/bump-all-version-numbers.js b/scripts/admin/bump-all-version-numbers.js index a302ff3b77..617e19cce7 100644 --- a/scripts/admin/bump-all-version-numbers.js +++ b/scripts/admin/bump-all-version-numbers.js @@ -14,7 +14,7 @@ _.each(packageNames, function (name) { if (match) { var versionNumber = match[0]; var s = versionNumber.split("."); - s[2] = "rc.0"; + s[2] = s[2].split("-")[0] + "-rc.0"; s = s.slice(0, 3); var incremented = s.join("."); From 698fbedb100aa5af8fa4039736565e92d90437f9 Mon Sep 17 00:00:00 2001 From: Sashko Stubailo Date: Tue, 7 Oct 2014 17:00:23 -0700 Subject: [PATCH 15/39] Bump all of the version numbers to rc.0 --- 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-history/package.js | 2 +- packages/jquery-layout/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/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/netroute/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 +- 124 files changed, 124 insertions(+), 124 deletions(-) diff --git a/packages/accounts-base/package.js b/packages/accounts-base/package.js index 075cbd4073..5a9fc92dfc 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.2-pre.2" + version: "1.1.2-rc.0" }); Package.on_use(function (api) { diff --git a/packages/accounts-facebook/package.js b/packages/accounts-facebook/package.js index 199d549fef..5b0c730269 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.2-pre.2" + version: "1.0.2-rc.0" }); Package.on_use(function(api) { diff --git a/packages/accounts-github/package.js b/packages/accounts-github/package.js index 8cc35421d9..c0bfa2f9dc 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.2-pre.2" + version: "1.0.2-rc.0" }); Package.on_use(function(api) { diff --git a/packages/accounts-google/package.js b/packages/accounts-google/package.js index 31d43632fc..d22308a617 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.2-pre.2" + version: "1.0.2-rc.0" }); Package.on_use(function(api) { diff --git a/packages/accounts-meetup/package.js b/packages/accounts-meetup/package.js index 01e55d1347..90addab0ab 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.2-pre.2" + version: "1.0.2-rc.0" }); Package.on_use(function(api) { diff --git a/packages/accounts-meteor-developer/package.js b/packages/accounts-meteor-developer/package.js index 81a56fcafc..f5107fbb78 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.2-pre.2" + version: "1.0.2-rc.0" }); Package.on_use(function (api) { diff --git a/packages/accounts-oauth/package.js b/packages/accounts-oauth/package.js index 361bc39ff0..434ca5d32b 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.2-pre.2" + version: "1.1.2-rc.0" }); Package.on_use(function (api) { diff --git a/packages/accounts-password/package.js b/packages/accounts-password/package.js index 52084aa5b9..ad718b4aaf 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.3-pre.2" + version: "1.0.3-rc.0" }); Package.on_use(function(api) { diff --git a/packages/accounts-twitter/package.js b/packages/accounts-twitter/package.js index 46058c0f1e..63760393fe 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.2-pre.2" + version: "1.0.2-rc.0" }); Package.on_use(function(api) { diff --git a/packages/accounts-ui-unstyled/package.js b/packages/accounts-ui-unstyled/package.js index 77fd534b07..7f435926ad 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.3-pre.2" + version: "1.1.3-rc.0" }); Package.on_use(function (api) { diff --git a/packages/accounts-ui/package.js b/packages/accounts-ui/package.js index efb4b3edb4..024251e1c6 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.2-pre.2" + version: "1.1.2-rc.0" }); Package.on_use(function (api) { diff --git a/packages/accounts-weibo/package.js b/packages/accounts-weibo/package.js index e4f2598eeb..cf0357cc71 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.2-pre.2" + version: "1.0.2-rc.0" }); Package.on_use(function(api) { diff --git a/packages/appcache/package.js b/packages/appcache/package.js index 0a9989eccd..0cefc1becf 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.2-pre.2" + version: "1.0.2-rc.0" }); Package.onUse(function (api) { diff --git a/packages/application-configuration/package.js b/packages/application-configuration/package.js index ee128a5947..bc4962ca76 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.3-pre.2' + version: '1.0.3-rc.0' }); Package.on_use(function (api) { diff --git a/packages/audit-argument-checks/package.js b/packages/audit-argument-checks/package.js index fc2063dcc1..5191a2a194 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.1-pre.2' + version: '1.0.1-rc.0' }); // This package is empty; its presence is detected by livedata. diff --git a/packages/autopublish/package.js b/packages/autopublish/package.js index ad81034057..f9d9296526 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.1-pre.2' + version: '1.0.1-rc.0' }); // This package is empty; its presence is detected by livedata and diff --git a/packages/autoupdate/package.js b/packages/autoupdate/package.js index 20ba317d4e..6910b17272 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.2-pre.4' + version: '1.1.2-rc.0' }); Cordova.depends({ diff --git a/packages/base64/package.js b/packages/base64/package.js index b0a98152d3..dd5b539205 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.1-pre.2' + version: '1.0.1-rc.0' }); Package.on_use(function (api) { diff --git a/packages/binary-heap/package.js b/packages/binary-heap/package.js index 8ef1341e26..57fe29ad38 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.1-pre.2' + version: '1.0.1-rc.0' }); Package.on_use(function (api) { diff --git a/packages/blaze-tools/package.js b/packages/blaze-tools/package.js index 9558acc125..3facd0fd6d 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.1-pre.2' + version: '1.0.1-rc.0' }); Package.on_use(function (api) { diff --git a/packages/blaze/package.js b/packages/blaze/package.js index 2f622490a0..dc41835bdd 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.2-pre.2' + version: '2.0.2-rc.0' }); Package.on_use(function (api) { diff --git a/packages/boilerplate-generator/package.js b/packages/boilerplate-generator/package.js index b92cdfc762..e0bc30dc41 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.1-pre.4' + version: '1.0.1-rc.0' }); Package.on_use(function (api) { diff --git a/packages/browser-policy-common/package.js b/packages/browser-policy-common/package.js index 9eaeefa063..226e7fe56e 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.1-pre.2" + version: "1.0.1-rc.0" }); Package.on_use(function (api) { diff --git a/packages/browser-policy-content/package.js b/packages/browser-policy-content/package.js index 27665431ac..132b27744b 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.2-pre.2" + version: "1.0.2-rc.0" }); Package.on_use(function (api) { diff --git a/packages/browser-policy-framing/package.js b/packages/browser-policy-framing/package.js index 801ec73397..993f27e393 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.2-pre.2" + version: "1.0.2-rc.0" }); Package.on_use(function (api) { diff --git a/packages/browser-policy/package.js b/packages/browser-policy/package.js index 58bff21959..6a0691dbc1 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.2-pre.2" + version: "1.0.2-rc.0" }); Package.on_use(function (api) { diff --git a/packages/callback-hook/package.js b/packages/callback-hook/package.js index 7c638e742a..d756315933 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.1-pre.2' + version: '1.0.1-rc.0' }); Package.on_use(function (api) { diff --git a/packages/check/package.js b/packages/check/package.js index 2516060efc..6d5b3bbfcf 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.2-pre.2' + version: '1.0.2-rc.0' }); Package.on_use(function (api) { diff --git a/packages/code-prettify/package.js b/packages/code-prettify/package.js index 9f9a0dd367..4808404a10 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.1-pre.2" + version: "1.0.1-rc.0" }); // 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 54afac0f6c..56c9aa3687 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.1-pre.2" + version: "1.0.1-rc.0" }); Package.on_use(function (api) { diff --git a/packages/coffeescript/package.js b/packages/coffeescript/package.js index 9a873bcfcc..37d5ffd3ce 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.4-pre.3" + version: "1.0.4-rc.0" }); Package._transitional_registerBuildPlugin({ diff --git a/packages/constraint-solver/package.js b/packages/constraint-solver/package.js index 86837d43b7..103e39367f 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.15-pre.2" + version: "1.0.15-rc.0" }); Npm.depends({ diff --git a/packages/ctl-helper/package.js b/packages/ctl-helper/package.js index 2a1889823f..36db6cd3dc 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.4-pre.2" + version: "1.0.4-rc.0" }); Npm.depends({optimist: '0.6.0'}); diff --git a/packages/ctl/package.js b/packages/ctl/package.js index f9abec9a41..5e1ad4eaab 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.2-pre.2" + version: "1.0.2-rc.0" }); Package.on_use(function (api) { diff --git a/packages/ddp/package.js b/packages/ddp/package.js index 24e64578a4..720544a08d 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.10-pre.2' + version: '1.0.10-rc.0' }); // 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 1254c5563d..49002733b3 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.5-pre.2' + version: '1.0.5-rc.0' }); Package.on_use(function (api) { diff --git a/packages/dev-bundle-fetcher/package.js b/packages/dev-bundle-fetcher/package.js index 099ad862fa..c891b9bffa 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.1-pre.2" + version: "1.0.1-rc.0" }); Package.on_use(function (api) { diff --git a/packages/disable-oplog/package.js b/packages/disable-oplog/package.js index 81f2d34a1d..30d5e0ec64 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.1-pre.2' + version: '1.0.1-rc.0' }); // This package is empty; its presence is detected by mongo-livedata. diff --git a/packages/ejson/package.js b/packages/ejson/package.js index 29895c0915..5f92fe35e5 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.4-pre.2' + version: '1.0.4-rc.0' }); Package.on_use(function (api) { diff --git a/packages/email/package.js b/packages/email/package.js index b3b822ee22..52b874072f 100644 --- a/packages/email/package.js +++ b/packages/email/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Send email messages", - version: "1.0.4-pre.2" + version: "1.0.4-rc.0" }); Npm.depends({ diff --git a/packages/facebook/package.js b/packages/facebook/package.js index 61292ba9ff..3ac745194d 100644 --- a/packages/facebook/package.js +++ b/packages/facebook/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Facebook OAuth flow", - version: "1.1.1-pre.2" + version: "1.1.1-rc.0" }); Package.on_use(function(api) { diff --git a/packages/facts/package.js b/packages/facts/package.js index 126f061c41..a15426a6b5 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.2-pre.2' + version: '1.0.2-rc.0' }); Package.on_use(function (api) { diff --git a/packages/fastclick/package.js b/packages/fastclick/package.js index 738f0f89f4..bb80d1efbd 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.1-pre.3' + version: '1.0.1-rc.0' }); Package.on_use(function (api) { diff --git a/packages/follower-livedata/package.js b/packages/follower-livedata/package.js index f0fe804412..939187fbe3 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.2-pre.2' + version: '1.0.2-rc.0' }); Package.on_use(function (api) { diff --git a/packages/force-ssl/package.js b/packages/force-ssl/package.js index d27a0a3e70..a4a57a46d9 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.2-pre.2" + version: "1.0.2-rc.0" }); Package.on_use(function (api) { diff --git a/packages/geojson-utils/package.js b/packages/geojson-utils/package.js index 9bcf1619cd..802b76dfe1 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.1-pre.2' + version: '1.0.1-rc.0' }); Package.on_use(function (api) { diff --git a/packages/github/package.js b/packages/github/package.js index 9a3d24fb75..8da6bc5343 100644 --- a/packages/github/package.js +++ b/packages/github/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Github OAuth flow", - version: "1.1.1-pre.2" + version: "1.1.1-rc.0" }); Package.on_use(function(api) { diff --git a/packages/google/package.js b/packages/google/package.js index d6df65bbbc..2ef945ff80 100644 --- a/packages/google/package.js +++ b/packages/google/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Google OAuth flow", - version: "1.1.1-pre.2" + version: "1.1.1-rc.0" }); Package.on_use(function(api) { diff --git a/packages/handlebars/package.js b/packages/handlebars/package.js index 37dda5385e..12641de2b2 100644 --- a/packages/handlebars/package.js +++ b/packages/handlebars/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Deprecated", - version: '1.0.1-pre.2' + version: '1.0.1-rc.0' }); Package.on_use(function (api) { diff --git a/packages/html-tools/package.js b/packages/html-tools/package.js index 23001291ba..9f6270e087 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.2-pre.2' + version: '1.0.2-rc.0' }); Package.on_use(function (api) { diff --git a/packages/htmljs/package.js b/packages/htmljs/package.js index 53d786308e..eefe93c7e3 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.2-pre.3' + version: '1.0.2-rc.0' }); Package.on_use(function (api) { diff --git a/packages/http/package.js b/packages/http/package.js index 3bc03841ac..99c2f82163 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.7-pre.2' + version: '1.0.7-rc.0' }); Npm.depends({request: "2.33.0"}); diff --git a/packages/id-map/package.js b/packages/id-map/package.js index 2c5302cca0..81b6207880 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.1-pre.2' + version: '1.0.1-rc.0' }); Package.on_use(function (api) { diff --git a/packages/insecure/package.js b/packages/insecure/package.js index b6137ba59e..8928e84325 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.1-pre.2' + version: '1.0.1-rc.0' }); // This package is empty; its presence is detected by mongo-livedata. diff --git a/packages/jquery-history/package.js b/packages/jquery-history/package.js index 116a20506c..3d45b17b23 100644 --- a/packages/jquery-history/package.js +++ b/packages/jquery-history/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "pushState module from the jQuery project", - version: "1.0.1-pre.2" + version: "1.0.1-rc.0" }); Package.on_use(function (api) { diff --git a/packages/jquery-layout/package.js b/packages/jquery-layout/package.js index e71f87d7f1..51a57e6f03 100644 --- a/packages/jquery-layout/package.js +++ b/packages/jquery-layout/package.js @@ -3,7 +3,7 @@ Package.describe({ summary: "Easily create arbitrary multicolumn layouts", - version: "1.0.2-pre.2" + version: "1.0.2-rc.0" }); Package.on_use(function (api) { diff --git a/packages/jquery-waypoints/package.js b/packages/jquery-waypoints/package.js index 8d3f19e3af..ae978e1255 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.1-pre.2" + version: "1.0.1-rc.0" }); Package.on_use(function (api) { diff --git a/packages/jquery/package.js b/packages/jquery/package.js index 86dc76fbcc..fe32de067a 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.1-pre.2' + version: '1.0.1-rc.0' }); Package.on_use(function (api) { diff --git a/packages/js-analyze-tests/package.js b/packages/js-analyze-tests/package.js index 7d867cfae9..040138c53c 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.1-pre.2" + version: "1.0.1-rc.0" }); // 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 8f465b218f..dde0f35ce8 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.3-pre.2' + version: '1.0.3-rc.0' }); // 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 65e8e02d5f..54b20e41dc 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.1-pre.2' + version: '1.0.1-rc.0' }); // 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 34dd19c4f6..34304d48a9 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.1-pre.2" + version: "1.0.1-rc.0" }); Package.on_use(function (api) { diff --git a/packages/less/package.js b/packages/less/package.js index cc1f7cb4de..10c7b4a527 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.10-pre.3" + version: "1.0.10-rc.0" }); Package._transitional_registerBuildPlugin({ diff --git a/packages/livedata/package.js b/packages/livedata/package.js index de5fa8ae38..1a7bf071ac 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.11-pre.2' + version: '1.0.11-rc.0' }); Package.on_use(function (api) { diff --git a/packages/localstorage/package.js b/packages/localstorage/package.js index 424e669abd..0e4e64ecca 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.1-pre.2" + version: "1.0.1-rc.0" }); Package.on_use(function (api) { diff --git a/packages/logging/package.js b/packages/logging/package.js index c37e092781..bf6b8e4576 100644 --- a/packages/logging/package.js +++ b/packages/logging/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Logging facility.", - version: '1.0.4-pre.2' + version: '1.0.4-rc.0' }); Npm.depends({ diff --git a/packages/markdown/package.js b/packages/markdown/package.js index 532433b3f3..53fcb1a8b5 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.2-pre.2" + version: "1.0.2-rc.0" }); Package.on_use(function (api) { diff --git a/packages/meetup/package.js b/packages/meetup/package.js index 58bfb8f75e..56b5b51188 100644 --- a/packages/meetup/package.js +++ b/packages/meetup/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Meetup OAuth flow", - version: "1.1.1-pre.2" + version: "1.1.1-rc.0" }); Package.on_use(function(api) { diff --git a/packages/meteor-developer/package.js b/packages/meteor-developer/package.js index ecf0cde915..e378d10df8 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.1-pre.2" + version: "1.1.1-rc.0" }); Package.on_use(function (api) { diff --git a/packages/meteor-platform/package.js b/packages/meteor-platform/package.js index 979ab7d0e9..b1c39ebda0 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.1.2-pre.4' + version: '1.1.2-rc.0' }); Package.on_use(function(api) { diff --git a/packages/meteor-tool/package.js b/packages/meteor-tool/package.js index 7a4e152b81..fc2c11fddf 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.34-pre.11' + version: '1.0.34-rc.0' }); Package.includeTool(); diff --git a/packages/meteor/package.js b/packages/meteor/package.js index 62e8e27fc7..45886bffba 100644 --- a/packages/meteor/package.js +++ b/packages/meteor/package.js @@ -2,7 +2,7 @@ Package.describe({ summary: "Core Meteor environment", - version: '1.1.2-pre.3' + version: '1.1.2-rc.0' }); Package._transitional_registerBuildPlugin({ diff --git a/packages/meyerweb-reset/package.js b/packages/meyerweb-reset/package.js index 2d7fd81a43..bfd5b09665 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.1-pre.2" + version: "1.0.1-rc.0" }); Package.on_use(function (api) { diff --git a/packages/minifiers/package.js b/packages/minifiers/package.js index adb3511d31..5235a74c6c 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.1-pre.2" + version: "1.1.1-rc.0" }); Npm.depends({ diff --git a/packages/minimongo/package.js b/packages/minimongo/package.js index 8493e14dad..3e34ffbdba 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.4-pre.3' + version: '1.0.4-rc.0' }); Package.on_use(function (api) { diff --git a/packages/mobile-status-bar/package.js b/packages/mobile-status-bar/package.js index 1bddd491a5..96195864b7 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.1-pre.2" + version: "1.0.1-rc.0" }); Package.onUse(function(api) { diff --git a/packages/mongo-livedata/package.js b/packages/mongo-livedata/package.js index 9876f1bf81..e4acdf8dfa 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.6-pre.2' + version: '1.0.6-rc.0' }); Package.on_use(function (api) { diff --git a/packages/mongo/package.js b/packages/mongo/package.js index 6d9a6609a1..54d62e2162 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.7-pre.2' + version: '1.0.7-rc.0' }); Npm.depends({ diff --git a/packages/netroute/package.js b/packages/netroute/package.js index d6dc0c6e39..35eaeb6cf9 100644 --- a/packages/netroute/package.js +++ b/packages/netroute/package.js @@ -2,7 +2,7 @@ // needs to be uniloaded from tool. Package.describe({ summary: "Wrapper for npm netroute module", - version: "0.2.5-pre.0" + version: "0.2.5-rc.0" }); Npm.depends({ diff --git a/packages/oauth-encryption/package.js b/packages/oauth-encryption/package.js index a8b82f3a80..02bdb0c7e3 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.1-pre.2' + version: '1.0.1-rc.0' }); Package.on_use(function (api) { diff --git a/packages/oauth/package.js b/packages/oauth/package.js index 7fe18ab4c3..34658b18aa 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.1-pre.2" + version: "1.1.1-rc.0" }); Package.on_use(function (api) { diff --git a/packages/oauth1/package.js b/packages/oauth1/package.js index 51f5e3ddb8..73073708ec 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.1-pre.2" + version: "1.1.1-rc.0" }); Package.on_use(function (api) { diff --git a/packages/oauth2/package.js b/packages/oauth2/package.js index 58a5b729cc..fab6f54e9b 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.1-pre.2" + version: "1.1.1-rc.0" }); Package.on_use(function (api) { diff --git a/packages/observe-sequence/package.js b/packages/observe-sequence/package.js index 58bd95d172..880fef0f3c 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.3-pre.2" + version: "1.0.3-rc.0" }); Package.on_use(function (api) { diff --git a/packages/ordered-dict/package.js b/packages/ordered-dict/package.js index 60f928602a..f8964ebefb 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.1-pre.2' + version: '1.0.1-rc.0' }); Package.on_use(function (api) { diff --git a/packages/package-stats-opt-out/package.js b/packages/package-stats-opt-out/package.js index 9d959b6d55..89188268d3 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.1-pre.2' + version: '1.0.1-rc.0' }); Package.on_use(function (api) { diff --git a/packages/package-version-parser/package.js b/packages/package-version-parser/package.js index 61cc700d41..69f19c6bcf 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.2-pre.2" + version: "2.0.2-rc.0" }); Npm.depends({ diff --git a/packages/preserve-inputs/package.js b/packages/preserve-inputs/package.js index 2fd3b9aadd..dc72ee70af 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.1-pre.2" + version: "1.0.1-rc.0" }); Package.on_use(function (api) { diff --git a/packages/random/package.js b/packages/random/package.js index 0a68aa0601..4682a971ca 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.1-pre.2' + version: '1.0.1-rc.0' }); Package.on_use(function (api) { diff --git a/packages/reactive-dict/package.js b/packages/reactive-dict/package.js index 34496a4cd3..faae52161b 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.4-pre.2' + version: '1.0.4-rc.0' }); Package.on_use(function (api) { diff --git a/packages/reactive-var/package.js b/packages/reactive-var/package.js index 7cad7b99a3..c05e03930b 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.3-pre.2' + version: '1.0.3-rc.0' }); Package.on_use(function (api) { diff --git a/packages/reload-safetybelt/package.js b/packages/reload-safetybelt/package.js index 5edb7fd860..eb6ed4d976 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.1-pre.2' + version: '1.0.1-rc.0' }); Package.on_use(function (api) { diff --git a/packages/reload/package.js b/packages/reload/package.js index 44826f3d2b..10af3db434 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.1-pre.2' + version: '1.1.1-rc.0' }); Package.on_use(function (api) { diff --git a/packages/retry/package.js b/packages/retry/package.js index b5104f5a46..d70a7e87af 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.1-pre.2' + version: '1.0.1-rc.0' }); Package.on_use(function (api) { diff --git a/packages/routepolicy/package.js b/packages/routepolicy/package.js index 2e8623ebc0..3c8f29fa1d 100644 --- a/packages/routepolicy/package.js +++ b/packages/routepolicy/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "route policy declarations", - version: '1.0.2-pre.2' + version: '1.0.2-rc.0' }); Package.on_use(function (api) { diff --git a/packages/service-configuration/package.js b/packages/service-configuration/package.js index 2b236d4640..849c295bed 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.2-pre.2" + version: "1.0.2-rc.0" }); Package.on_use(function(api) { diff --git a/packages/session/package.js b/packages/session/package.js index 33b20347f7..6a05b1e853 100644 --- a/packages/session/package.js +++ b/packages/session/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Session variable", - version: '1.0.3-pre.2' + version: '1.0.3-rc.0' }); Package.on_use(function (api) { diff --git a/packages/sha/package.js b/packages/sha/package.js index 6dbc4d146f..c8837f42b8 100644 --- a/packages/sha/package.js +++ b/packages/sha/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "SHA256 implementation", - version: "1.0.1-pre.2" + version: "1.0.1-rc.0" }); Package.on_use(function (api) { diff --git a/packages/showdown/package.js b/packages/showdown/package.js index 71e908167d..3a04d79176 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.2-pre.2' + version: '1.0.2-rc.0' }); Package.on_use(function (api) { diff --git a/packages/spacebars-compiler/package.js b/packages/spacebars-compiler/package.js index 9fe49dd47c..8571200d4b 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.3-pre.2' + version: '1.0.3-rc.0' }); Package.on_use(function (api) { diff --git a/packages/spacebars-tests/package.js b/packages/spacebars-tests/package.js index 3bc8dd1680..cce84e0897 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.1-pre.2' + version: '1.0.1-rc.0' }); // 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 0181b21368..6d1b576d2b 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.3-pre.2' + version: '1.0.3-rc.0' }); // For more, see package `spacebars-compiler`, which is used by diff --git a/packages/spiderable/package.js b/packages/spiderable/package.js index 1f670ce65f..922d5cf18f 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.4-pre.2" + version: "1.0.4-rc.0" }); Package.on_use(function (api) { diff --git a/packages/srp/package.js b/packages/srp/package.js index c8c71d9f2d..b4aa054541 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.1-pre.1" + version: "1.0.1-rc.0" }); Package.on_use(function (api) { diff --git a/packages/standard-app-packages/package.js b/packages/standard-app-packages/package.js index 8cfdcc80cc..d395925b68 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.3-pre.2' + version: '1.0.3-rc.0' }); Package.on_use(function (api) { diff --git a/packages/star-translate/package.js b/packages/star-translate/package.js index 28ad8017c0..d44cc9cb14 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.4-pre.2" + version: "1.0.4-rc.0" }); Package.on_use(function (api) { diff --git a/packages/startup/package.js b/packages/startup/package.js index 41da29e605..1658ba96be 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.1-pre.2", + version: "1.0.1-rc.0", }); Package.on_use(function (api) { diff --git a/packages/stylus/package.js b/packages/stylus/package.js index f40936977f..5b70a79824 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.5-pre.3" + version: "1.0.5-rc.0" }); Package._transitional_registerBuildPlugin({ diff --git a/packages/templating/package.js b/packages/templating/package.js index 20c60ee19b..12a1220554 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.8-pre.3' + version: '1.0.8-rc.0' }); // Today, this package is closely intertwined with Handlebars, meaning diff --git a/packages/test-helpers/package.js b/packages/test-helpers/package.js index ce0e8c69b2..4d62f7dd1a 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.2-pre.2' + version: '1.0.2-rc.0' }); Package.on_use(function (api) { diff --git a/packages/test-in-browser/package.js b/packages/test-in-browser/package.js index cd76dbf3f7..8f23a682da 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.5-pre.2' + version: '1.0.5-rc.0' }); Package.on_use(function (api) { diff --git a/packages/test-in-console/package.js b/packages/test-in-console/package.js index 5a46fabe31..0b397fe3e9 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.3-pre.2' + version: '1.0.3-rc.0' }); Package.on_use(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 6be433faee..586d9668b8 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.1-pre.2' + version: '1.0.1-rc.0' }); Package.on_use(function (api) { diff --git a/packages/tinytest/package.js b/packages/tinytest/package.js index 7538567c03..6b2bed9512 100644 --- a/packages/tinytest/package.js +++ b/packages/tinytest/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Tiny testing framework", - version: '1.0.3-pre.2' + version: '1.0.3-rc.0' }); Package.on_use(function (api) { diff --git a/packages/tracker/package.js b/packages/tracker/package.js index 00313fff1b..f81856a5e9 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.3-pre.2' + version: '1.0.3-rc.0' }); Package.on_use(function (api) { diff --git a/packages/twitter/package.js b/packages/twitter/package.js index 329db56910..cba9ebf796 100644 --- a/packages/twitter/package.js +++ b/packages/twitter/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Twitter OAuth flow", - version: '1.1.1-pre.2' + version: '1.1.1-rc.0' }); Package.on_use(function(api) { diff --git a/packages/ui/package.js b/packages/ui/package.js index 6115f90d1b..4b1ef8f307 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.4-pre.2' + version: '1.0.4-rc.0' }); Package.on_use(function (api) { diff --git a/packages/underscore-tests/package.js b/packages/underscore-tests/package.js index 58916ec887..2aec2406ca 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.1-pre.2' + version: '1.0.1-rc.0' }); Package.on_test(function (api) { diff --git a/packages/underscore/package.js b/packages/underscore/package.js index 10f3e75dd6..0d3915c8e8 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.1-pre.2' + version: '1.0.1-rc.0' }); Package.on_use(function (api) { diff --git a/packages/url/package.js b/packages/url/package.js index bcb2508d8a..2ae138fada 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.1-pre.2" + version: "1.0.1-rc.0" }); Package.onUse(function(api) { diff --git a/packages/webapp-hashing/package.js b/packages/webapp-hashing/package.js index 3c79140c5c..b855ada3b3 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.1-pre.2" + version: "1.0.1-rc.0" }); Package.onUse(function(api) { diff --git a/packages/webapp/package.js b/packages/webapp/package.js index 0e428e3abd..6e12b035ef 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.3-pre.3' + version: '1.1.3-rc.0' }); Npm.depends({connect: "2.9.0", diff --git a/packages/weibo/package.js b/packages/weibo/package.js index 81cfabb350..b4e952efa1 100644 --- a/packages/weibo/package.js +++ b/packages/weibo/package.js @@ -1,6 +1,6 @@ Package.describe({ summary: "Weibo OAuth flow", - version: '1.1.1-pre.2' + version: '1.1.1-rc.0' }); Package.on_use(function(api) { diff --git a/packages/xmlbuilder/package.js b/packages/xmlbuilder/package.js index 0ab8218504..11f73c2469 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.4-pre.0' + version: '2.4.4-rc.0' }); Npm.depends({ From 2ab49825295b2a0fee2b970379cb75db304268f4 Mon Sep 17 00:00:00 2001 From: Sashko Stubailo Date: Tue, 7 Oct 2014 17:01:46 -0700 Subject: [PATCH 16/39] Bump meteor version --- scripts/admin/meteor-release-experimental.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/admin/meteor-release-experimental.json b/scripts/admin/meteor-release-experimental.json index 21f630fb7c..a0ee1fcbdf 100644 --- a/scripts/admin/meteor-release-experimental.json +++ b/scripts/admin/meteor-release-experimental.json @@ -1,7 +1,7 @@ { "track": "METEOR", - "version": "0.9.4-pre.11", + "version": "0.9.4-rc.0", "recommended": false, "official": false, - "description": "A preview of Meteor 0.9.4." + "description": "An RC of Meteor 0.9.4." } From d87a1fe1118714515b3a869d9debd9a0b834bcba Mon Sep 17 00:00:00 2001 From: David Greenspan Date: Tue, 7 Oct 2014 18:59:58 -0700 Subject: [PATCH 17/39] Edit some comments --- tools/selftest.js | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/tools/selftest.js b/tools/selftest.js index b031d3c21f..f696819b0c 100644 --- a/tools/selftest.js +++ b/tools/selftest.js @@ -1406,8 +1406,8 @@ var tagDescriptions = { checkout: 'can only run from checkouts', net: 'require an internet connection', slow: 'take quite a long time; use --slow to include', - // these last two are pseudo-tags, assigned to tests when you specify - // --changed or a regex pattern + // these are pseudo-tags, assigned to tests when you specify + // --changed, --file, or a pattern argument unchanged: 'unchanged since last pass', 'non-matching': "don't match specified pattern", 'in other files': "" @@ -1477,10 +1477,10 @@ var getFilteredTests = function (options) { // list of all tests, the filtered list, and stats on how many tests // were skipped (see generateSkipReport). // -// TestList is also used to save the hashes of files where all tests +// TestList also has code to save the hashes of files where all tests // ran and passed (for the `--changed` option). If a testState is -// passed, the caller can use notifyFailed and saveTestState to cause -// TestList to calculate the new testState and write it out. +// provided, the notifyFailed and saveTestState can be used to modify +// the testState appropriately and write it out. var TestList = function (allTests, tagsToSkip, testState) { tagsToSkip = (tagsToSkip || []); testState = (testState || null); // optional @@ -1523,8 +1523,9 @@ var TestList = function (allTests, tagsToSkip, testState) { }); }; -// Mark a test's file as having failures so we don't -// save its hash as a potentially "unchanged" file. +// Mark a test's file as having failures. This prevents +// saveTestState from saving its hash as a potentially +// "unchanged" file to be skipped in a future run. TestList.prototype.notifyFailed = function (test) { this.fileInfo[test.file].hasFailures = true; }; From 75ef0202bfe468dc74ae3502d38853c0ca29e4e3 Mon Sep 17 00:00:00 2001 From: Sashko Stubailo Date: Tue, 7 Oct 2014 22:30:52 -0700 Subject: [PATCH 18/39] Bump meteor and meteor-tool version numbers --- packages/meteor-tool/package.js | 2 +- packages/meteor/package.js | 2 +- scripts/admin/meteor-release-experimental.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/meteor-tool/package.js b/packages/meteor-tool/package.js index fc2c11fddf..b0e32edbca 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.34-rc.0' + version: '1.0.34-rc.1' }); Package.includeTool(); diff --git a/packages/meteor/package.js b/packages/meteor/package.js index 45886bffba..551067e958 100644 --- a/packages/meteor/package.js +++ b/packages/meteor/package.js @@ -2,7 +2,7 @@ Package.describe({ summary: "Core Meteor environment", - version: '1.1.2-rc.0' + version: '1.1.2-rc.1' }); Package._transitional_registerBuildPlugin({ diff --git a/scripts/admin/meteor-release-experimental.json b/scripts/admin/meteor-release-experimental.json index a0ee1fcbdf..9df8c67d65 100644 --- a/scripts/admin/meteor-release-experimental.json +++ b/scripts/admin/meteor-release-experimental.json @@ -1,6 +1,6 @@ { "track": "METEOR", - "version": "0.9.4-rc.0", + "version": "0.9.4-rc.1", "recommended": false, "official": false, "description": "An RC of Meteor 0.9.4." From 74c8f252f574a55f04294723befabf2a92da707d Mon Sep 17 00:00:00 2001 From: Sashko Stubailo Date: Wed, 8 Oct 2014 13:49:24 -0700 Subject: [PATCH 19/39] Add locus to accounts callbacks --- docs/client/data.js | 2 +- packages/accounts-base/url_client.js | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/client/data.js b/docs/client/data.js index f1a4b28f20..5af6749ee1 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","ui":{"summary":"Accounts UI","kind":"namespace","memberof":"Accounts","name":"ui","longname":"Accounts.ui","scope":"static","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":["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":"

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"}},"emailTemplates":{"summary":"Options to customize emails sent from the Accounts system.","name":"emailTemplates","longname":"Accounts.emailTemplates","kind":"member","memberof":"Accounts","scope":"static","locus":"Anywhere"},"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"},"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"},"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"},"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"},"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"},"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"},"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":[]},"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":[]},"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":[]},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"}},"EJSON":{"kind":"namespace","summary":"Namespace for EJSON functions","name":"EJSON","longname":"EJSON","scope":"global","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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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":{"summary":"The Meteor namespace","kind":"namespace","name":"Meteor","longname":"Meteor","users":{"summary":"A [Mongo.Collection](#collections) containing user documents.","name":"users","longname":"Meteor.users","kind":"member","memberof":"Meteor","scope":"static","locus":"Anywhere"},"isClient":{"summary":"Boolean variable. True if running in client environment.","scope":"static","name":"isClient","longname":"Meteor.isClient","kind":"member","memberof":"Meteor","locus":"Anywhere"},"isServer":{"summary":"Boolean variable. True if running in server environment.","scope":"static","name":"isServer","longname":"Meteor.isServer","kind":"member","memberof":"Meteor","locus":"Anywhere"},"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.","name":"settings","longname":"Meteor.settings","kind":"member","memberof":"Meteor","scope":"static","locus":"Anywhere"},"isCordova":{"summary":"Boolean variable. True if running in a Cordova mobile environment.","name":"isCordova","longname":"Meteor.isCordova","kind":"member","memberof":"Meteor","scope":"static","locus":"Anywhere"},"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.","name":"release","longname":"Meteor.release","kind":"member","memberof":"Meteor","scope":"static","locus":"Anywhere"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"disconnect":{"summary":"Disconnect the client from the server.","memberof":"Meteor","name":"disconnect","longname":"Meteor.disconnect","kind":"function","scope":"static","options":[],"params":[],"locus":"Client"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"Error":{"summary":"This class represents a symbolic error thrown by a method.","kind":"class","params":[{"type":{"names":["Number"]},"description":"

A numeric error code, likely similar to an HTTP code (eg, 404, 500).

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

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

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

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

","name":"details"}],"name":"Error","longname":"Meteor.Error","memberof":"Meteor","scope":"static","options":[],"locus":"Anywhere"}},"Mongo":{"summary":"Namespace for MongoDB-related items","kind":"namespace","name":"Mongo","longname":"Mongo","scope":"global","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"},"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"},"Cursor#fetch":{"summary":"Return all matching documents as an Array.","memberof":"Mongo.Cursor","kind":"function","name":"fetch","scope":"instance","longname":"Mongo.Cursor#fetch","options":[],"params":[],"locus":"Anywhere"},"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"},"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"},"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"},"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"},"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"},"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"}],"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"},"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"}],"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"}},"Assets":{"summary":"The namespace for Assets functions, lives in the bundler.","kind":"namespace","name":"Assets","longname":"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"},"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":{"kind":"namespace","name":"App","scope":"global","summary":"The App configuration object in mobile-config.js","longname":"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"}]},"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":[]},"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":[]},"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":[]},"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":[]}},"Plugin":{"scope":"global","kind":"namespace","name":"Plugin","summary":"The namespace that is exposed inside build plugin files.","longname":"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":{"scope":"global","name":"Package","summary":"The Package object in package.js","kind":"namespace","longname":"Package","locus":"package.js","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"},"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"},"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"},"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":{"kind":"namespace","name":"Npm","scope":"global","summary":"The Npm object in package.js and package source files.","longname":"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"},"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"}},"Cordova":{"kind":"namespace","name":"Cordova","scope":"global","summary":"The Cordova object in package.js.","longname":"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"}},"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"},"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"},"TemplateInstance#view":{"name":"view","memberof":"Blaze.TemplateInstance","scope":"instance","summary":"The [View](#blaze_view) object for this invocation of the template.","longname":"Blaze.TemplateInstance#view","kind":"member","locus":"Client"},"TemplateInstance#firstNode":{"name":"firstNode","memberof":"Blaze.TemplateInstance","scope":"instance","summary":"The first top-level DOM node in this template instance.","longname":"Blaze.TemplateInstance#firstNode","kind":"member","locus":"Client"},"TemplateInstance#lastNode":{"name":"lastNode","memberof":"Blaze.TemplateInstance","scope":"instance","summary":"The last top-level DOM node in this template instance.","longname":"Blaze.TemplateInstance#lastNode","kind":"member","locus":"Client"},"currentView":{"summary":"The View corresponding to the current template helper, event handler, callback, or autorun. If there isn't one, `null`.","name":"currentView","longname":"Blaze.currentView","kind":"member","memberof":"Blaze","scope":"static","locus":"Client"},"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"},"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"},"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"},"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"},"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"},"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"}],"name":"$","longname":"Blaze.TemplateInstance#$","kind":"function","memberof":"Blaze.TemplateInstance","scope":"instance","options":[],"locus":"Client"},"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"}],"name":"findAll","longname":"Blaze.TemplateInstance#findAll","kind":"function","memberof":"Blaze.TemplateInstance","scope":"instance","options":[],"locus":"Client"},"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"}],"name":"find","longname":"Blaze.TemplateInstance#find","kind":"function","memberof":"Blaze.TemplateInstance","scope":"instance","options":[],"locus":"Client"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"}},"MethodInvocation#isSimulation":{"summary":"Access inside a method invocation. Boolean value, true if this invocation is a stub.","name":"isSimulation","memberof":"MethodInvocation","scope":"instance","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"},"Template":{"body":{"summary":"The [template object](#templates_api) representing your `` tag.","name":"body","longname":"Template.body","kind":"member","memberof":"Template","scope":"static","locus":"Client"},"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`.","scope":"static","longname":"Template.instance","options":[],"params":[],"locus":"Client"},"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"},"parentData":{"summary":"Accesses other data contexts that enclose the current data context.","kind":"function","params":[{"type":{"names":["Integer"]},"description":"

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

","name":"numLevels"}],"name":"parentData","longname":"Template.parentData","memberof":"Template","scope":"static","options":[],"locus":"Client"},"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"},"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"},"summary":"The class for defining templates","kind":"class","name":"Template","longname":"Template","scope":"global","options":[],"params":[],"instancename":"Template.myTemplate"},"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.","name":"active","longname":"Tracker.active","kind":"member","memberof":"Tracker","scope":"static","locus":"Client"},"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.","name":"currentComputation","longname":"Tracker.currentComputation","kind":"member","memberof":"Tracker","scope":"static","locus":"Client"},"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"},"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","longname":"Tracker.Computation#invalidated","kind":"member","locus":"Client"},"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","longname":"Tracker.Computation#firstRun","kind":"member","locus":"Client"},"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"},"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"},"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"},"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"},"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"}],"name":"depend","longname":"Tracker.Dependency#depend","kind":"function","memberof":"Tracker.Dependency","scope":"instance","options":[],"locus":"Client"},"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"},"Dependency#hasDependents":{"summary":"True if this Dependency has one or more dependent Computations, which would be invalidated if this Dependency were to change.","name":"hasDependents","longname":"Tracker.Dependency#hasDependents","kind":"function","memberof":"Tracker.Dependency","scope":"instance","options":[],"params":[],"locus":"Client"},"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"},"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"}],"name":"autorun","longname":"Tracker.autorun","kind":"function","memberof":"Tracker","scope":"static","options":[],"locus":"Client"},"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"},"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"},"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"},"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#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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"}},"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"},"setDefault":{"memberof":"Session","kind":"function","name":"setDefault","summary":"Set a variable in the session if it is undefined. 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"},"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"},"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"}},"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":[]},"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' or 'client') to specify what architecture the package is\nused 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 on the server (or the client), you can pass in the second argument (e.g., 'server' or 'client') to specify what 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 on the server (or the client), you can pass in the second argument (e.g., 'server' or 'client') to specify what architecture the export is used with.

","name":"architecture"}],"name":"export","longname":"PackageAPI#export","kind":"function","options":[],"locus":"package.js"},"Subscription":{"summary":"The server's side of a subscription","kind":"class","name":"Subscription","longname":"Subscription","options":[],"params":[],"instancename":"this"},"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"},"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","ui":{"summary":"Accounts UI","kind":"namespace","memberof":"Accounts","name":"ui","longname":"Accounts.ui","scope":"static","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":["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":"

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"}},"emailTemplates":{"summary":"Options to customize emails sent from the Accounts system.","name":"emailTemplates","longname":"Accounts.emailTemplates","kind":"member","memberof":"Accounts","scope":"static","locus":"Anywhere"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"}},"EJSON":{"kind":"namespace","summary":"Namespace for EJSON functions","name":"EJSON","longname":"EJSON","scope":"global","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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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":{"summary":"The Meteor namespace","kind":"namespace","name":"Meteor","longname":"Meteor","users":{"summary":"A [Mongo.Collection](#collections) containing user documents.","name":"users","longname":"Meteor.users","kind":"member","memberof":"Meteor","scope":"static","locus":"Anywhere"},"isClient":{"summary":"Boolean variable. True if running in client environment.","scope":"static","name":"isClient","longname":"Meteor.isClient","kind":"member","memberof":"Meteor","locus":"Anywhere"},"isServer":{"summary":"Boolean variable. True if running in server environment.","scope":"static","name":"isServer","longname":"Meteor.isServer","kind":"member","memberof":"Meteor","locus":"Anywhere"},"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.","name":"settings","longname":"Meteor.settings","kind":"member","memberof":"Meteor","scope":"static","locus":"Anywhere"},"isCordova":{"summary":"Boolean variable. True if running in a Cordova mobile environment.","name":"isCordova","longname":"Meteor.isCordova","kind":"member","memberof":"Meteor","scope":"static","locus":"Anywhere"},"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.","name":"release","longname":"Meteor.release","kind":"member","memberof":"Meteor","scope":"static","locus":"Anywhere"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"disconnect":{"summary":"Disconnect the client from the server.","memberof":"Meteor","name":"disconnect","longname":"Meteor.disconnect","kind":"function","scope":"static","options":[],"params":[],"locus":"Client"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"Error":{"summary":"This class represents a symbolic error thrown by a method.","kind":"class","params":[{"type":{"names":["Number"]},"description":"

A numeric error code, likely similar to an HTTP code (eg, 404, 500).

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

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

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

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

","name":"details"}],"name":"Error","longname":"Meteor.Error","memberof":"Meteor","scope":"static","options":[],"locus":"Anywhere"}},"Mongo":{"summary":"Namespace for MongoDB-related items","kind":"namespace","name":"Mongo","longname":"Mongo","scope":"global","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"},"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"},"Cursor#fetch":{"summary":"Return all matching documents as an Array.","memberof":"Mongo.Cursor","kind":"function","name":"fetch","scope":"instance","longname":"Mongo.Cursor#fetch","options":[],"params":[],"locus":"Anywhere"},"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"},"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"},"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"},"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"},"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"},"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"}],"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"},"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"}],"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"}},"Assets":{"summary":"The namespace for Assets functions, lives in the bundler.","kind":"namespace","name":"Assets","longname":"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"},"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":{"kind":"namespace","name":"App","scope":"global","summary":"The App configuration object in mobile-config.js","longname":"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"}]},"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":[]},"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":[]},"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":[]},"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":[]}},"Plugin":{"scope":"global","kind":"namespace","name":"Plugin","summary":"The namespace that is exposed inside build plugin files.","longname":"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":{"scope":"global","name":"Package","summary":"The Package object in package.js","kind":"namespace","longname":"Package","locus":"package.js","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"},"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"},"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"},"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":{"kind":"namespace","name":"Npm","scope":"global","summary":"The Npm object in package.js and package source files.","longname":"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"},"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"}},"Cordova":{"kind":"namespace","name":"Cordova","scope":"global","summary":"The Cordova object in package.js.","longname":"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"}},"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"},"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"},"TemplateInstance#view":{"name":"view","memberof":"Blaze.TemplateInstance","scope":"instance","summary":"The [View](#blaze_view) object for this invocation of the template.","longname":"Blaze.TemplateInstance#view","kind":"member","locus":"Client"},"TemplateInstance#firstNode":{"name":"firstNode","memberof":"Blaze.TemplateInstance","scope":"instance","summary":"The first top-level DOM node in this template instance.","longname":"Blaze.TemplateInstance#firstNode","kind":"member","locus":"Client"},"TemplateInstance#lastNode":{"name":"lastNode","memberof":"Blaze.TemplateInstance","scope":"instance","summary":"The last top-level DOM node in this template instance.","longname":"Blaze.TemplateInstance#lastNode","kind":"member","locus":"Client"},"currentView":{"summary":"The View corresponding to the current template helper, event handler, callback, or autorun. If there isn't one, `null`.","name":"currentView","longname":"Blaze.currentView","kind":"member","memberof":"Blaze","scope":"static","locus":"Client"},"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"},"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"},"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"},"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"},"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"},"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"}],"name":"$","longname":"Blaze.TemplateInstance#$","kind":"function","memberof":"Blaze.TemplateInstance","scope":"instance","options":[],"locus":"Client"},"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"}],"name":"findAll","longname":"Blaze.TemplateInstance#findAll","kind":"function","memberof":"Blaze.TemplateInstance","scope":"instance","options":[],"locus":"Client"},"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"}],"name":"find","longname":"Blaze.TemplateInstance#find","kind":"function","memberof":"Blaze.TemplateInstance","scope":"instance","options":[],"locus":"Client"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"}},"MethodInvocation#isSimulation":{"summary":"Access inside a method invocation. Boolean value, true if this invocation is a stub.","name":"isSimulation","memberof":"MethodInvocation","scope":"instance","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"},"Template":{"body":{"summary":"The [template object](#templates_api) representing your `` tag.","name":"body","longname":"Template.body","kind":"member","memberof":"Template","scope":"static","locus":"Client"},"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`.","scope":"static","longname":"Template.instance","options":[],"params":[],"locus":"Client"},"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"},"parentData":{"summary":"Accesses other data contexts that enclose the current data context.","kind":"function","params":[{"type":{"names":["Integer"]},"description":"

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

","name":"numLevels"}],"name":"parentData","longname":"Template.parentData","memberof":"Template","scope":"static","options":[],"locus":"Client"},"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"},"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"},"summary":"The class for defining templates","kind":"class","name":"Template","longname":"Template","scope":"global","options":[],"params":[],"instancename":"Template.myTemplate"},"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.","name":"active","longname":"Tracker.active","kind":"member","memberof":"Tracker","scope":"static","locus":"Client"},"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.","name":"currentComputation","longname":"Tracker.currentComputation","kind":"member","memberof":"Tracker","scope":"static","locus":"Client"},"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"},"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","longname":"Tracker.Computation#invalidated","kind":"member","locus":"Client"},"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","longname":"Tracker.Computation#firstRun","kind":"member","locus":"Client"},"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"},"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"},"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"},"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"},"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"}],"name":"depend","longname":"Tracker.Dependency#depend","kind":"function","memberof":"Tracker.Dependency","scope":"instance","options":[],"locus":"Client"},"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"},"Dependency#hasDependents":{"summary":"True if this Dependency has one or more dependent Computations, which would be invalidated if this Dependency were to change.","name":"hasDependents","longname":"Tracker.Dependency#hasDependents","kind":"function","memberof":"Tracker.Dependency","scope":"instance","options":[],"params":[],"locus":"Client"},"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"},"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"}],"name":"autorun","longname":"Tracker.autorun","kind":"function","memberof":"Tracker","scope":"static","options":[],"locus":"Client"},"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"},"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"},"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"},"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#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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"}},"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"},"setDefault":{"memberof":"Session","kind":"function","name":"setDefault","summary":"Set a variable in the session if it is undefined. 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"},"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"},"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"}},"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":[]},"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' or 'client') to specify what architecture the package is\nused 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 on the server (or the client), you can pass in the second argument (e.g., 'server' or 'client') to specify what 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 on the server (or the client), you can pass in the second argument (e.g., 'server' or 'client') to specify what architecture the export is used with.

","name":"architecture"}],"name":"export","longname":"PackageAPI#export","kind":"function","options":[],"locus":"package.js"},"Subscription":{"summary":"The server's side of a subscription","kind":"class","name":"Subscription","longname":"Subscription","options":[],"params":[],"instancename":"this"},"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"},"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 diff --git a/packages/accounts-base/url_client.js b/packages/accounts-base/url_client.js index 342acf8c02..202784f15a 100644 --- a/packages/accounts-base/url_client.js +++ b/packages/accounts-base/url_client.js @@ -80,6 +80,7 @@ AccountsTest = { * 2. `done`: A function to call when the password reset UI flow is complete. The normal * login process is suspended until this function is called, so that the * password for user A can be reset even if user B was logged in. + * @locus Client */ Accounts.onResetPasswordLink = function (callback) { if (accountsCallbacks["reset-password"]) { @@ -104,6 +105,7 @@ Accounts.onResetPasswordLink = function (callback) { * The normal login process is suspended until this function is called, so * that the user can be notified that they are verifying their email before * being logged in. + * @locus Client */ Accounts.onEmailVerificationLink = function (callback) { if (accountsCallbacks["verify-email"]) { @@ -128,6 +130,7 @@ Accounts.onEmailVerificationLink = function (callback) { * 2. `done`: A function to call when the enrollment UI flow is complete. * The normal login process is suspended until this function is called, so that * user A can be enrolled even if user B was logged in. + * @locus Client */ Accounts.onEnrollmentLink = function (callback) { if (accountsCallbacks["enroll-account"]) { From 3f9f3e9c06d622c03bf45004d80850c62e830bc7 Mon Sep 17 00:00:00 2001 From: Emily Stark Date: Wed, 8 Oct 2014 13:38:21 -0700 Subject: [PATCH 20/39] Clone __meteor_runtime_config__ before extending it --- packages/webapp/webapp_server.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/webapp/webapp_server.js b/packages/webapp/webapp_server.js index 7f44489abf..b4c7d9053a 100644 --- a/packages/webapp/webapp_server.js +++ b/packages/webapp/webapp_server.js @@ -318,7 +318,8 @@ var getBoilerplate = function (request, arch) { var generateBoilerplateInstance = function (arch, manifest, additionalOptions) { additionalOptions = additionalOptions || {}; - var runtimeConfig = _.extend(__meteor_runtime_config__, + var runtimeConfig = _.extend( + _.clone(__meteor_runtime_config__), additionalOptions.runtimeConfigOverrides || {} ); From f1592ed5a2d8479a07a4be716bf4574f2cd96e9e Mon Sep 17 00:00:00 2001 From: Emily Stark Date: Wed, 8 Oct 2014 13:53:10 -0700 Subject: [PATCH 21/39] Stop 'meteor run' process in cordova hcp selftest --- tools/tests/cordova-hcp.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/tests/cordova-hcp.js b/tools/tests/cordova-hcp.js index 0a71927b9a..ae18a39092 100644 --- a/tools/tests/cordova-hcp.js +++ b/tools/tests/cordova-hcp.js @@ -39,4 +39,6 @@ selftest.define( if (! result.match(rootUrlRegExp)) { selftest.fail("Incorrect ROOT_URL"); } + + run.stop(); }); From 43106972b010bd5d5db85a928b53718afb870396 Mon Sep 17 00:00:00 2001 From: Emily Stark Date: Wed, 8 Oct 2014 13:53:30 -0700 Subject: [PATCH 22/39] Add regression test for runtime config bug --- tools/tests/run.js | 49 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/tools/tests/run.js b/tools/tests/run.js index a37370c761..59c7775501 100644 --- a/tools/tests/run.js +++ b/tools/tests/run.js @@ -5,6 +5,7 @@ var net = require('net'); var Future = require('fibers/future'); var _ = require('underscore'); var files = require('../files.js'); +var httpHelpers = require('../http-helpers.js'); var MONGO_LISTENING = { stdout: " [initandlisten] waiting for connections on port" }; @@ -408,3 +409,51 @@ selftest.define("'meteor run --port' requires a port", function () { run.matchErr("--port must include a port"); run.expectExit(1); }); + +// Regression test: previously, if ROOT_URL was set, then the process of +// generating the cordova boilerplate would change +// __meteor_runtime_config__, resulting in an incorrect browser +// boilerplate being generated the next time boilerplate generation +// occurs. +selftest.define("generating boilerplate does not change runtime config", function () { + var s = new Sandbox(); + var run; + + s.createApp("myapp", "standard-app"); + s.cd("myapp"); + + // Add 'android' to the .meteor/platforms file, just so that the + // Cordova boilerplate will be generated and served, without having + // to download the whole Android sdk. + var platforms = s.read(".meteor/platforms"); + s.write(".meteor/platforms", platforms + "\nandroid\n"); + + s.set("ROOT_URL", "http://127.0.0.1:3000"); + run = s.run(); + run.waitSecs(30); + run.match("Started your app"); + + var body = httpHelpers.getUrl("http://localhost:3000"); + var rootUrlRegExp = /"ROOT_URL":"http:\/\/127.0.0.1:3000"/; + if (! body.match(rootUrlRegExp)) { + selftest.fail("Incorrect ROOT_URL"); + } + + s.mkdir("client"); + s.cd("client"); + s.write("foo.js", "console.log(1);\n"); + + run.waitSecs(30); + // We don't expect the server to restart; we're testing that + // __meteor_runtime_config__ does not get modified over the life of + // a single server process. + run.forbidAll("restarted"); + run.match("Client modified"); + + body = httpHelpers.getUrl("http://localhost:3000"); + if (! body.match(rootUrlRegExp)) { + selftest.fail("Incorrect ROOT_URL after modifying client"); + } + + run.stop(); +}); From a4570b92df0d0f2e4b259df92de36adafef8df30 Mon Sep 17 00:00:00 2001 From: Emily Stark Date: Wed, 8 Oct 2014 14:26:38 -0700 Subject: [PATCH 23/39] Replace runtime config regression selftest with simpler unit test --- packages/webapp/webapp_server.js | 10 +++++-- packages/webapp/webapp_tests.js | 22 +++++++++++++++ tools/tests/run.js | 48 -------------------------------- 3 files changed, 29 insertions(+), 51 deletions(-) diff --git a/packages/webapp/webapp_server.js b/packages/webapp/webapp_server.js index b4c7d9053a..694f07002f 100644 --- a/packages/webapp/webapp_server.js +++ b/packages/webapp/webapp_server.js @@ -316,8 +316,11 @@ var getBoilerplate = function (request, arch) { return memoizedBoilerplate[memHash]; }; -var generateBoilerplateInstance = function (arch, manifest, additionalOptions) { +WebAppInternals.generateBoilerplateInstance = function (arch, + manifest, + additionalOptions) { additionalOptions = additionalOptions || {}; + var runtimeConfig = _.extend( _.clone(__meteor_runtime_config__), additionalOptions.runtimeConfigOverrides || {} @@ -575,8 +578,9 @@ var runWebAppServer = function () { syncQueue.runTask(function() { _.each(WebApp.clientPrograms, function (program, archName) { boilerplateByArch[archName] = - generateBoilerplateInstance(archName, program.manifest, - defaultOptionsForArch[archName]); + WebAppInternals.generateBoilerplateInstance( + archName, program.manifest, + defaultOptionsForArch[archName]); }); // Clear the memoized boilerplate cache. diff --git a/packages/webapp/webapp_tests.js b/packages/webapp/webapp_tests.js index 358dcd563e..97df3a3dfc 100644 --- a/packages/webapp/webapp_tests.js +++ b/packages/webapp/webapp_tests.js @@ -144,3 +144,25 @@ Tinytest.add("webapp - valid pid check", function (test) { test.isFalse(WebAppInternals.validPid("foobar")); test.isFalse(WebAppInternals.validPid("123foo")); }); + +// Regression test: `generateBoilerplateInstance` should not change +// `__meteor_runtime_config__`. +Tinytest.add("webapp - generating boilerplate should not change runtime config", function (test) { + // Set a dummy key in the runtime config served in the + // boilerplate. Test that the dummy key appears in the boilerplate, + // but not in __meteor_runtime_config__ after generating the + // boilerplate. + + test.isFalse(__meteor_runtime_config__.WEBAPP_TEST_KEY); + + var boilerplate = WebAppInternals.generateBoilerplateInstance( + "web.browser", + {}, // empty manifest + { runtimeConfigOverrides: { WEBAPP_TEST_KEY: true } } + ); + + var boilerplateHtml = boilerplate.toHTML(); + test.isFalse(boilerplateHtml.indexOf("WEBAPP_TEST_KEY") === -1); + + test.isFalse(__meteor_runtime_config__.WEBAPP_TEST_KEY); +}); diff --git a/tools/tests/run.js b/tools/tests/run.js index 59c7775501..5532ff2278 100644 --- a/tools/tests/run.js +++ b/tools/tests/run.js @@ -409,51 +409,3 @@ selftest.define("'meteor run --port' requires a port", function () { run.matchErr("--port must include a port"); run.expectExit(1); }); - -// Regression test: previously, if ROOT_URL was set, then the process of -// generating the cordova boilerplate would change -// __meteor_runtime_config__, resulting in an incorrect browser -// boilerplate being generated the next time boilerplate generation -// occurs. -selftest.define("generating boilerplate does not change runtime config", function () { - var s = new Sandbox(); - var run; - - s.createApp("myapp", "standard-app"); - s.cd("myapp"); - - // Add 'android' to the .meteor/platforms file, just so that the - // Cordova boilerplate will be generated and served, without having - // to download the whole Android sdk. - var platforms = s.read(".meteor/platforms"); - s.write(".meteor/platforms", platforms + "\nandroid\n"); - - s.set("ROOT_URL", "http://127.0.0.1:3000"); - run = s.run(); - run.waitSecs(30); - run.match("Started your app"); - - var body = httpHelpers.getUrl("http://localhost:3000"); - var rootUrlRegExp = /"ROOT_URL":"http:\/\/127.0.0.1:3000"/; - if (! body.match(rootUrlRegExp)) { - selftest.fail("Incorrect ROOT_URL"); - } - - s.mkdir("client"); - s.cd("client"); - s.write("foo.js", "console.log(1);\n"); - - run.waitSecs(30); - // We don't expect the server to restart; we're testing that - // __meteor_runtime_config__ does not get modified over the life of - // a single server process. - run.forbidAll("restarted"); - run.match("Client modified"); - - body = httpHelpers.getUrl("http://localhost:3000"); - if (! body.match(rootUrlRegExp)) { - selftest.fail("Incorrect ROOT_URL after modifying client"); - } - - run.stop(); -}); From eb24eb59d4ad7cab55356ca7a0fd6f0584d905de Mon Sep 17 00:00:00 2001 From: Slava Kim Date: Wed, 8 Oct 2014 13:29:43 -0700 Subject: [PATCH 24/39] Make icons/splashscreens options consistent with underscores --- examples/todos/mobile-config.js | 4 ++-- tools/commands-cordova.js | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/examples/todos/mobile-config.js b/examples/todos/mobile-config.js index b5f3952f19..ae73b56247 100644 --- a/examples/todos/mobile-config.js +++ b/examples/todos/mobile-config.js @@ -9,9 +9,9 @@ App.info({ App.icons({ // iOS 'iphone': 'resources/icons/icon-60.png', - 'iphone-2x': 'resources/icons/icon-60@2x.png', + 'iphone_2x': 'resources/icons/icon-60@2x.png', 'ipad': 'resources/icons/icon-72.png', - 'ipad-2x': 'resources/icons/icon-72@2x.png', + 'ipad_2x': 'resources/icons/icon-72@2x.png', // Android - XXX these are the same as iOS for now 'android_ldpi': 'resources/icons/icon-60.png', diff --git a/tools/commands-cordova.js b/tools/commands-cordova.js index e7094e4aa4..80fe86ce1d 100644 --- a/tools/commands-cordova.js +++ b/tools/commands-cordova.js @@ -1160,10 +1160,10 @@ var requirePlatformReady = function (platform) { // Hard-coded constants var iconIosSizes = { 'iphone': '60x60', - 'iphone-2x': '120x120', - 'iphone-3x': '180x180', + 'iphone_2x': '120x120', + 'iphone_3x': '180x180', 'ipad': '76x76', - 'ipad-2x': '152x152' + 'ipad_2x': '152x152' }; var iconAndroidSizes = { @@ -1288,10 +1288,10 @@ var consumeControlFile = function (controlFilePath, cordovaPath) { * * Valid key values: * - `iphone` - * - `iphone-2x` - * - `iphone-3x` + * - `iphone_2x` + * - `iphone_3x` * - `ipad` - * - `ipad-2x` + * - `ipad_2x` * - `android_ldpi` * - `android_mdpi` * - `android_hdpi` From 588bf284094e52da5b0d6e8d3c5a94ab45ecf82e Mon Sep 17 00:00:00 2001 From: Slava Kim Date: Wed, 8 Oct 2014 13:29:43 -0700 Subject: [PATCH 25/39] Make icons/splashscreens options consistent with underscores --- docs/client/api.html | 2 +- docs/client/data.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/client/api.html b/docs/client/api.html index d0e893f0ed..f6a9270538 100644 --- a/docs/client/api.html +++ b/docs/client/api.html @@ -3638,7 +3638,7 @@ App.info({ // Set up resources such as icons and launch screens. App.icons({ 'iphone': 'icons/icon-60.png', - 'iphone-2x': 'icons/icon-60@2x.png', + 'iphone_2x': 'icons/icon-60@2x.png', // ... more screen sizes and platforms ... }); diff --git a/docs/client/data.js b/docs/client/data.js index 5af6749ee1..f3356cd199 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","ui":{"summary":"Accounts UI","kind":"namespace","memberof":"Accounts","name":"ui","longname":"Accounts.ui","scope":"static","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":["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":"

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"}},"emailTemplates":{"summary":"Options to customize emails sent from the Accounts system.","name":"emailTemplates","longname":"Accounts.emailTemplates","kind":"member","memberof":"Accounts","scope":"static","locus":"Anywhere"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"}},"EJSON":{"kind":"namespace","summary":"Namespace for EJSON functions","name":"EJSON","longname":"EJSON","scope":"global","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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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":{"summary":"The Meteor namespace","kind":"namespace","name":"Meteor","longname":"Meteor","users":{"summary":"A [Mongo.Collection](#collections) containing user documents.","name":"users","longname":"Meteor.users","kind":"member","memberof":"Meteor","scope":"static","locus":"Anywhere"},"isClient":{"summary":"Boolean variable. True if running in client environment.","scope":"static","name":"isClient","longname":"Meteor.isClient","kind":"member","memberof":"Meteor","locus":"Anywhere"},"isServer":{"summary":"Boolean variable. True if running in server environment.","scope":"static","name":"isServer","longname":"Meteor.isServer","kind":"member","memberof":"Meteor","locus":"Anywhere"},"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.","name":"settings","longname":"Meteor.settings","kind":"member","memberof":"Meteor","scope":"static","locus":"Anywhere"},"isCordova":{"summary":"Boolean variable. True if running in a Cordova mobile environment.","name":"isCordova","longname":"Meteor.isCordova","kind":"member","memberof":"Meteor","scope":"static","locus":"Anywhere"},"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.","name":"release","longname":"Meteor.release","kind":"member","memberof":"Meteor","scope":"static","locus":"Anywhere"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"disconnect":{"summary":"Disconnect the client from the server.","memberof":"Meteor","name":"disconnect","longname":"Meteor.disconnect","kind":"function","scope":"static","options":[],"params":[],"locus":"Client"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"Error":{"summary":"This class represents a symbolic error thrown by a method.","kind":"class","params":[{"type":{"names":["Number"]},"description":"

A numeric error code, likely similar to an HTTP code (eg, 404, 500).

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

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

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

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

","name":"details"}],"name":"Error","longname":"Meteor.Error","memberof":"Meteor","scope":"static","options":[],"locus":"Anywhere"}},"Mongo":{"summary":"Namespace for MongoDB-related items","kind":"namespace","name":"Mongo","longname":"Mongo","scope":"global","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"},"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"},"Cursor#fetch":{"summary":"Return all matching documents as an Array.","memberof":"Mongo.Cursor","kind":"function","name":"fetch","scope":"instance","longname":"Mongo.Cursor#fetch","options":[],"params":[],"locus":"Anywhere"},"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"},"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"},"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"},"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"},"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"},"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"}],"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"},"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"}],"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"}},"Assets":{"summary":"The namespace for Assets functions, lives in the bundler.","kind":"namespace","name":"Assets","longname":"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"},"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":{"kind":"namespace","name":"App","scope":"global","summary":"The App configuration object in mobile-config.js","longname":"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"}]},"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":[]},"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":[]},"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":[]},"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":[]}},"Plugin":{"scope":"global","kind":"namespace","name":"Plugin","summary":"The namespace that is exposed inside build plugin files.","longname":"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":{"scope":"global","name":"Package","summary":"The Package object in package.js","kind":"namespace","longname":"Package","locus":"package.js","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"},"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"},"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"},"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":{"kind":"namespace","name":"Npm","scope":"global","summary":"The Npm object in package.js and package source files.","longname":"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"},"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"}},"Cordova":{"kind":"namespace","name":"Cordova","scope":"global","summary":"The Cordova object in package.js.","longname":"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"}},"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"},"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"},"TemplateInstance#view":{"name":"view","memberof":"Blaze.TemplateInstance","scope":"instance","summary":"The [View](#blaze_view) object for this invocation of the template.","longname":"Blaze.TemplateInstance#view","kind":"member","locus":"Client"},"TemplateInstance#firstNode":{"name":"firstNode","memberof":"Blaze.TemplateInstance","scope":"instance","summary":"The first top-level DOM node in this template instance.","longname":"Blaze.TemplateInstance#firstNode","kind":"member","locus":"Client"},"TemplateInstance#lastNode":{"name":"lastNode","memberof":"Blaze.TemplateInstance","scope":"instance","summary":"The last top-level DOM node in this template instance.","longname":"Blaze.TemplateInstance#lastNode","kind":"member","locus":"Client"},"currentView":{"summary":"The View corresponding to the current template helper, event handler, callback, or autorun. If there isn't one, `null`.","name":"currentView","longname":"Blaze.currentView","kind":"member","memberof":"Blaze","scope":"static","locus":"Client"},"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"},"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"},"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"},"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"},"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"},"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"}],"name":"$","longname":"Blaze.TemplateInstance#$","kind":"function","memberof":"Blaze.TemplateInstance","scope":"instance","options":[],"locus":"Client"},"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"}],"name":"findAll","longname":"Blaze.TemplateInstance#findAll","kind":"function","memberof":"Blaze.TemplateInstance","scope":"instance","options":[],"locus":"Client"},"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"}],"name":"find","longname":"Blaze.TemplateInstance#find","kind":"function","memberof":"Blaze.TemplateInstance","scope":"instance","options":[],"locus":"Client"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"}},"MethodInvocation#isSimulation":{"summary":"Access inside a method invocation. Boolean value, true if this invocation is a stub.","name":"isSimulation","memberof":"MethodInvocation","scope":"instance","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"},"Template":{"body":{"summary":"The [template object](#templates_api) representing your `` tag.","name":"body","longname":"Template.body","kind":"member","memberof":"Template","scope":"static","locus":"Client"},"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`.","scope":"static","longname":"Template.instance","options":[],"params":[],"locus":"Client"},"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"},"parentData":{"summary":"Accesses other data contexts that enclose the current data context.","kind":"function","params":[{"type":{"names":["Integer"]},"description":"

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

","name":"numLevels"}],"name":"parentData","longname":"Template.parentData","memberof":"Template","scope":"static","options":[],"locus":"Client"},"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"},"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"},"summary":"The class for defining templates","kind":"class","name":"Template","longname":"Template","scope":"global","options":[],"params":[],"instancename":"Template.myTemplate"},"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.","name":"active","longname":"Tracker.active","kind":"member","memberof":"Tracker","scope":"static","locus":"Client"},"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.","name":"currentComputation","longname":"Tracker.currentComputation","kind":"member","memberof":"Tracker","scope":"static","locus":"Client"},"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"},"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","longname":"Tracker.Computation#invalidated","kind":"member","locus":"Client"},"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","longname":"Tracker.Computation#firstRun","kind":"member","locus":"Client"},"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"},"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"},"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"},"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"},"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"}],"name":"depend","longname":"Tracker.Dependency#depend","kind":"function","memberof":"Tracker.Dependency","scope":"instance","options":[],"locus":"Client"},"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"},"Dependency#hasDependents":{"summary":"True if this Dependency has one or more dependent Computations, which would be invalidated if this Dependency were to change.","name":"hasDependents","longname":"Tracker.Dependency#hasDependents","kind":"function","memberof":"Tracker.Dependency","scope":"instance","options":[],"params":[],"locus":"Client"},"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"},"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"}],"name":"autorun","longname":"Tracker.autorun","kind":"function","memberof":"Tracker","scope":"static","options":[],"locus":"Client"},"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"},"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"},"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"},"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#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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"}},"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"},"setDefault":{"memberof":"Session","kind":"function","name":"setDefault","summary":"Set a variable in the session if it is undefined. 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"},"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"},"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"}},"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":[]},"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' or 'client') to specify what architecture the package is\nused 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 on the server (or the client), you can pass in the second argument (e.g., 'server' or 'client') to specify what 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 on the server (or the client), you can pass in the second argument (e.g., 'server' or 'client') to specify what architecture the export is used with.

","name":"architecture"}],"name":"export","longname":"PackageAPI#export","kind":"function","options":[],"locus":"package.js"},"Subscription":{"summary":"The server's side of a subscription","kind":"class","name":"Subscription","longname":"Subscription","options":[],"params":[],"instancename":"this"},"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"},"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","ui":{"summary":"Accounts UI","kind":"namespace","memberof":"Accounts","name":"ui","longname":"Accounts.ui","scope":"static","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":["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":"

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"}},"emailTemplates":{"summary":"Options to customize emails sent from the Accounts system.","name":"emailTemplates","longname":"Accounts.emailTemplates","kind":"member","memberof":"Accounts","scope":"static","locus":"Anywhere"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"}},"EJSON":{"kind":"namespace","summary":"Namespace for EJSON functions","name":"EJSON","longname":"EJSON","scope":"global","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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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":{"summary":"The Meteor namespace","kind":"namespace","name":"Meteor","longname":"Meteor","users":{"summary":"A [Mongo.Collection](#collections) containing user documents.","name":"users","longname":"Meteor.users","kind":"member","memberof":"Meteor","scope":"static","locus":"Anywhere"},"isClient":{"summary":"Boolean variable. True if running in client environment.","scope":"static","name":"isClient","longname":"Meteor.isClient","kind":"member","memberof":"Meteor","locus":"Anywhere"},"isServer":{"summary":"Boolean variable. True if running in server environment.","scope":"static","name":"isServer","longname":"Meteor.isServer","kind":"member","memberof":"Meteor","locus":"Anywhere"},"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.","name":"settings","longname":"Meteor.settings","kind":"member","memberof":"Meteor","scope":"static","locus":"Anywhere"},"isCordova":{"summary":"Boolean variable. True if running in a Cordova mobile environment.","name":"isCordova","longname":"Meteor.isCordova","kind":"member","memberof":"Meteor","scope":"static","locus":"Anywhere"},"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.","name":"release","longname":"Meteor.release","kind":"member","memberof":"Meteor","scope":"static","locus":"Anywhere"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"disconnect":{"summary":"Disconnect the client from the server.","memberof":"Meteor","name":"disconnect","longname":"Meteor.disconnect","kind":"function","scope":"static","options":[],"params":[],"locus":"Client"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"Error":{"summary":"This class represents a symbolic error thrown by a method.","kind":"class","params":[{"type":{"names":["Number"]},"description":"

A numeric error code, likely similar to an HTTP code (eg, 404, 500).

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

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

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

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

","name":"details"}],"name":"Error","longname":"Meteor.Error","memberof":"Meteor","scope":"static","options":[],"locus":"Anywhere"}},"Mongo":{"summary":"Namespace for MongoDB-related items","kind":"namespace","name":"Mongo","longname":"Mongo","scope":"global","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"},"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"},"Cursor#fetch":{"summary":"Return all matching documents as an Array.","memberof":"Mongo.Cursor","kind":"function","name":"fetch","scope":"instance","longname":"Mongo.Cursor#fetch","options":[],"params":[],"locus":"Anywhere"},"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"},"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"},"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"},"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"},"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"},"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"}],"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"},"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"}],"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"}},"Assets":{"summary":"The namespace for Assets functions, lives in the bundler.","kind":"namespace","name":"Assets","longname":"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"},"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":{"kind":"namespace","name":"App","scope":"global","summary":"The App configuration object in mobile-config.js","longname":"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"}]},"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":[]},"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":[]},"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":[]},"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":[]}},"Plugin":{"scope":"global","kind":"namespace","name":"Plugin","summary":"The namespace that is exposed inside build plugin files.","longname":"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":{"scope":"global","name":"Package","summary":"The Package object in package.js","kind":"namespace","longname":"Package","locus":"package.js","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"},"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"},"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"},"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":{"kind":"namespace","name":"Npm","scope":"global","summary":"The Npm object in package.js and package source files.","longname":"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"},"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"}},"Cordova":{"kind":"namespace","name":"Cordova","scope":"global","summary":"The Cordova object in package.js.","longname":"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"}},"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"},"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"},"TemplateInstance#view":{"name":"view","memberof":"Blaze.TemplateInstance","scope":"instance","summary":"The [View](#blaze_view) object for this invocation of the template.","longname":"Blaze.TemplateInstance#view","kind":"member","locus":"Client"},"TemplateInstance#firstNode":{"name":"firstNode","memberof":"Blaze.TemplateInstance","scope":"instance","summary":"The first top-level DOM node in this template instance.","longname":"Blaze.TemplateInstance#firstNode","kind":"member","locus":"Client"},"TemplateInstance#lastNode":{"name":"lastNode","memberof":"Blaze.TemplateInstance","scope":"instance","summary":"The last top-level DOM node in this template instance.","longname":"Blaze.TemplateInstance#lastNode","kind":"member","locus":"Client"},"currentView":{"summary":"The View corresponding to the current template helper, event handler, callback, or autorun. If there isn't one, `null`.","name":"currentView","longname":"Blaze.currentView","kind":"member","memberof":"Blaze","scope":"static","locus":"Client"},"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"},"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"},"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"},"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"},"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"},"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"}],"name":"$","longname":"Blaze.TemplateInstance#$","kind":"function","memberof":"Blaze.TemplateInstance","scope":"instance","options":[],"locus":"Client"},"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"}],"name":"findAll","longname":"Blaze.TemplateInstance#findAll","kind":"function","memberof":"Blaze.TemplateInstance","scope":"instance","options":[],"locus":"Client"},"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"}],"name":"find","longname":"Blaze.TemplateInstance#find","kind":"function","memberof":"Blaze.TemplateInstance","scope":"instance","options":[],"locus":"Client"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"}},"MethodInvocation#isSimulation":{"summary":"Access inside a method invocation. Boolean value, true if this invocation is a stub.","name":"isSimulation","memberof":"MethodInvocation","scope":"instance","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"},"Template":{"body":{"summary":"The [template object](#templates_api) representing your `` tag.","name":"body","longname":"Template.body","kind":"member","memberof":"Template","scope":"static","locus":"Client"},"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`.","scope":"static","longname":"Template.instance","options":[],"params":[],"locus":"Client"},"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"},"parentData":{"summary":"Accesses other data contexts that enclose the current data context.","kind":"function","params":[{"type":{"names":["Integer"]},"description":"

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

","name":"numLevels"}],"name":"parentData","longname":"Template.parentData","memberof":"Template","scope":"static","options":[],"locus":"Client"},"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"},"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"},"summary":"The class for defining templates","kind":"class","name":"Template","longname":"Template","scope":"global","options":[],"params":[],"instancename":"Template.myTemplate"},"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.","name":"active","longname":"Tracker.active","kind":"member","memberof":"Tracker","scope":"static","locus":"Client"},"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.","name":"currentComputation","longname":"Tracker.currentComputation","kind":"member","memberof":"Tracker","scope":"static","locus":"Client"},"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"},"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","longname":"Tracker.Computation#invalidated","kind":"member","locus":"Client"},"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","longname":"Tracker.Computation#firstRun","kind":"member","locus":"Client"},"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"},"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"},"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"},"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"},"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"}],"name":"depend","longname":"Tracker.Dependency#depend","kind":"function","memberof":"Tracker.Dependency","scope":"instance","options":[],"locus":"Client"},"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"},"Dependency#hasDependents":{"summary":"True if this Dependency has one or more dependent Computations, which would be invalidated if this Dependency were to change.","name":"hasDependents","longname":"Tracker.Dependency#hasDependents","kind":"function","memberof":"Tracker.Dependency","scope":"instance","options":[],"params":[],"locus":"Client"},"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"},"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"}],"name":"autorun","longname":"Tracker.autorun","kind":"function","memberof":"Tracker","scope":"static","options":[],"locus":"Client"},"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"},"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"},"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"},"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#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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"}},"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"},"setDefault":{"memberof":"Session","kind":"function","name":"setDefault","summary":"Set a variable in the session if it is undefined. 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"},"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"},"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"}},"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":[]},"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' or 'client') to specify what architecture the package is\nused 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 on the server (or the client), you can pass in the second argument (e.g., 'server' or 'client') to specify what 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 on the server (or the client), you can pass in the second argument (e.g., 'server' or 'client') to specify what architecture the export is used with.

","name":"architecture"}],"name":"export","longname":"PackageAPI#export","kind":"function","options":[],"locus":"package.js"},"Subscription":{"summary":"The server's side of a subscription","kind":"class","name":"Subscription","longname":"Subscription","options":[],"params":[],"instancename":"this"},"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"},"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 438a87802ee11b6bd2e7ca0f6ebd14c07e758c51 Mon Sep 17 00:00:00 2001 From: Slava Kim Date: Wed, 8 Oct 2014 14:38:34 -0700 Subject: [PATCH 26/39] Check the new argument of clientVersions publications --- packages/autoupdate/autoupdate_server.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/packages/autoupdate/autoupdate_server.js b/packages/autoupdate/autoupdate_server.js index bdbbae2233..8a62571534 100644 --- a/packages/autoupdate/autoupdate_server.js +++ b/packages/autoupdate/autoupdate_server.js @@ -137,6 +137,8 @@ var updateVersions = function (shouldReloadClientProgram) { Meteor.publish( "meteor_autoupdate_clientVersions", function (appId) { + check(appId, Match.Optional(String)); + // Don't notify clients using wrong appId such as mobile apps built with a // different server but pointing at the same local url if (Autoupdate.appId && appId && Autoupdate.appId !== appId) From d25bfb7cd8541d092022c2f1c50b76a886f2e98f Mon Sep 17 00:00:00 2001 From: Justin SB Date: Tue, 30 Sep 2014 12:42:17 -0700 Subject: [PATCH 27/39] Log if phantomjs exits with error (e.g. missing libs) --- tools/selftest.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tools/selftest.js b/tools/selftest.js index 3b87098a5d..129544a44f 100644 --- a/tools/selftest.js +++ b/tools/selftest.js @@ -837,7 +837,12 @@ _.extend(PhantomClient.prototype, { '/bin/bash', ['-c', ("exec " + phantomPath + " --load-images=no /dev/stdin <<'END'\n" + - phantomScript + "\nEND\n")]); + phantomScript + "\nEND\n")], + {}, function (exitCode, stdout, stderr) { + if (exitCode != 0) { + console.log("PhantomJS exited with exitCode ", exitCode, "\nstdout:\n", stdout, "\nstderr:\n", stderr); + } + }); }, stop: function() { From 9dcc5e8780f8a556e007800afe12079e51cb9ed6 Mon Sep 17 00:00:00 2001 From: David Greenspan Date: Wed, 8 Oct 2014 15:05:57 -0700 Subject: [PATCH 28/39] Show list of failed tests --- tools/selftest.js | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/tools/selftest.js b/tools/selftest.js index f696819b0c..8fb0ecfaf3 100644 --- a/tools/selftest.js +++ b/tools/selftest.js @@ -1632,11 +1632,11 @@ var runTests = function (options) { } var totalRun = 0; - var failureCount = 0; + var failedTests = []; _.each(testList.filteredTests, function (test) { totalRun++; - Console.stderr.write(test.name + "... "); + Console.stderr.write(test.file + ": " + test.name + " ... "); var failure = null; try { @@ -1656,7 +1656,7 @@ var runTests = function (options) { if (failure) { Console.stderr.write("fail!\n"); - failureCount++; + failedTests.push(test); testList.notifyFailed(test); var frames = parseStack.parse(failure); @@ -1719,15 +1719,19 @@ var runTests = function (options) { if (testList.filteredTests.length === 0) { Console.stderr.write("No tests run.\n"); return 0; - } else if (failureCount === 0) { + } else if (failedTests.length === 0) { var disclaimers = ''; if (testList.filteredTests.length < testList.allTests.length) disclaimers += " other"; Console.stderr.write("All" + disclaimers + " tests passed.\n"); return 0; } else { + var failureCount = failedTests.length; Console.stderr.write(failureCount + " failure" + - (failureCount > 1 ? "s" : "") + ".\n"); + (failureCount > 1 ? "s" : "") + ":\n"); + _.each(failedTests, function (test) { + Console.stderr.write(" - " + test.file + ": " + test.name); + }); return 1; } }; From 45a18297d1d41b34b2f66a3315d67b72ec92fd1f Mon Sep 17 00:00:00 2001 From: Sashko Stubailo Date: Wed, 8 Oct 2014 15:17:03 -0700 Subject: [PATCH 29/39] Change docs to recommend using strings for Meteor.Error --- docs/client/api.html | 2 +- docs/client/data.js | 2 +- packages/meteor/errors.js | 31 ++++++++++++++++++++++++++++--- 3 files changed, 30 insertions(+), 5 deletions(-) diff --git a/docs/client/api.html b/docs/client/api.html index d0e893f0ed..fc9c9b834d 100644 --- a/docs/client/api.html +++ b/docs/client/api.html @@ -284,7 +284,7 @@ Example: check(arg2, [Number]); // .. do stuff .. if (you want to throw an error) - throw new Meteor.Error(404, "Can't find my pants"); + throw new Meteor.Error("pants-not-found", "Can't find my pants"); return "some return value"; }, diff --git a/docs/client/data.js b/docs/client/data.js index 5af6749ee1..04a20a1b38 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","ui":{"summary":"Accounts UI","kind":"namespace","memberof":"Accounts","name":"ui","longname":"Accounts.ui","scope":"static","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":["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":"

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"}},"emailTemplates":{"summary":"Options to customize emails sent from the Accounts system.","name":"emailTemplates","longname":"Accounts.emailTemplates","kind":"member","memberof":"Accounts","scope":"static","locus":"Anywhere"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"}},"EJSON":{"kind":"namespace","summary":"Namespace for EJSON functions","name":"EJSON","longname":"EJSON","scope":"global","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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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":{"summary":"The Meteor namespace","kind":"namespace","name":"Meteor","longname":"Meteor","users":{"summary":"A [Mongo.Collection](#collections) containing user documents.","name":"users","longname":"Meteor.users","kind":"member","memberof":"Meteor","scope":"static","locus":"Anywhere"},"isClient":{"summary":"Boolean variable. True if running in client environment.","scope":"static","name":"isClient","longname":"Meteor.isClient","kind":"member","memberof":"Meteor","locus":"Anywhere"},"isServer":{"summary":"Boolean variable. True if running in server environment.","scope":"static","name":"isServer","longname":"Meteor.isServer","kind":"member","memberof":"Meteor","locus":"Anywhere"},"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.","name":"settings","longname":"Meteor.settings","kind":"member","memberof":"Meteor","scope":"static","locus":"Anywhere"},"isCordova":{"summary":"Boolean variable. True if running in a Cordova mobile environment.","name":"isCordova","longname":"Meteor.isCordova","kind":"member","memberof":"Meteor","scope":"static","locus":"Anywhere"},"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.","name":"release","longname":"Meteor.release","kind":"member","memberof":"Meteor","scope":"static","locus":"Anywhere"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"disconnect":{"summary":"Disconnect the client from the server.","memberof":"Meteor","name":"disconnect","longname":"Meteor.disconnect","kind":"function","scope":"static","options":[],"params":[],"locus":"Client"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"Error":{"summary":"This class represents a symbolic error thrown by a method.","kind":"class","params":[{"type":{"names":["Number"]},"description":"

A numeric error code, likely similar to an HTTP code (eg, 404, 500).

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

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

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

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

","name":"details"}],"name":"Error","longname":"Meteor.Error","memberof":"Meteor","scope":"static","options":[],"locus":"Anywhere"}},"Mongo":{"summary":"Namespace for MongoDB-related items","kind":"namespace","name":"Mongo","longname":"Mongo","scope":"global","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"},"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"},"Cursor#fetch":{"summary":"Return all matching documents as an Array.","memberof":"Mongo.Cursor","kind":"function","name":"fetch","scope":"instance","longname":"Mongo.Cursor#fetch","options":[],"params":[],"locus":"Anywhere"},"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"},"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"},"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"},"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"},"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"},"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"}],"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"},"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"}],"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"}},"Assets":{"summary":"The namespace for Assets functions, lives in the bundler.","kind":"namespace","name":"Assets","longname":"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"},"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":{"kind":"namespace","name":"App","scope":"global","summary":"The App configuration object in mobile-config.js","longname":"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"}]},"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":[]},"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":[]},"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":[]},"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":[]}},"Plugin":{"scope":"global","kind":"namespace","name":"Plugin","summary":"The namespace that is exposed inside build plugin files.","longname":"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":{"scope":"global","name":"Package","summary":"The Package object in package.js","kind":"namespace","longname":"Package","locus":"package.js","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"},"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"},"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"},"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":{"kind":"namespace","name":"Npm","scope":"global","summary":"The Npm object in package.js and package source files.","longname":"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"},"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"}},"Cordova":{"kind":"namespace","name":"Cordova","scope":"global","summary":"The Cordova object in package.js.","longname":"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"}},"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"},"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"},"TemplateInstance#view":{"name":"view","memberof":"Blaze.TemplateInstance","scope":"instance","summary":"The [View](#blaze_view) object for this invocation of the template.","longname":"Blaze.TemplateInstance#view","kind":"member","locus":"Client"},"TemplateInstance#firstNode":{"name":"firstNode","memberof":"Blaze.TemplateInstance","scope":"instance","summary":"The first top-level DOM node in this template instance.","longname":"Blaze.TemplateInstance#firstNode","kind":"member","locus":"Client"},"TemplateInstance#lastNode":{"name":"lastNode","memberof":"Blaze.TemplateInstance","scope":"instance","summary":"The last top-level DOM node in this template instance.","longname":"Blaze.TemplateInstance#lastNode","kind":"member","locus":"Client"},"currentView":{"summary":"The View corresponding to the current template helper, event handler, callback, or autorun. If there isn't one, `null`.","name":"currentView","longname":"Blaze.currentView","kind":"member","memberof":"Blaze","scope":"static","locus":"Client"},"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"},"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"},"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"},"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"},"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"},"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"}],"name":"$","longname":"Blaze.TemplateInstance#$","kind":"function","memberof":"Blaze.TemplateInstance","scope":"instance","options":[],"locus":"Client"},"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"}],"name":"findAll","longname":"Blaze.TemplateInstance#findAll","kind":"function","memberof":"Blaze.TemplateInstance","scope":"instance","options":[],"locus":"Client"},"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"}],"name":"find","longname":"Blaze.TemplateInstance#find","kind":"function","memberof":"Blaze.TemplateInstance","scope":"instance","options":[],"locus":"Client"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"}},"MethodInvocation#isSimulation":{"summary":"Access inside a method invocation. Boolean value, true if this invocation is a stub.","name":"isSimulation","memberof":"MethodInvocation","scope":"instance","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"},"Template":{"body":{"summary":"The [template object](#templates_api) representing your `` tag.","name":"body","longname":"Template.body","kind":"member","memberof":"Template","scope":"static","locus":"Client"},"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`.","scope":"static","longname":"Template.instance","options":[],"params":[],"locus":"Client"},"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"},"parentData":{"summary":"Accesses other data contexts that enclose the current data context.","kind":"function","params":[{"type":{"names":["Integer"]},"description":"

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

","name":"numLevels"}],"name":"parentData","longname":"Template.parentData","memberof":"Template","scope":"static","options":[],"locus":"Client"},"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"},"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"},"summary":"The class for defining templates","kind":"class","name":"Template","longname":"Template","scope":"global","options":[],"params":[],"instancename":"Template.myTemplate"},"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.","name":"active","longname":"Tracker.active","kind":"member","memberof":"Tracker","scope":"static","locus":"Client"},"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.","name":"currentComputation","longname":"Tracker.currentComputation","kind":"member","memberof":"Tracker","scope":"static","locus":"Client"},"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"},"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","longname":"Tracker.Computation#invalidated","kind":"member","locus":"Client"},"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","longname":"Tracker.Computation#firstRun","kind":"member","locus":"Client"},"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"},"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"},"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"},"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"},"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"}],"name":"depend","longname":"Tracker.Dependency#depend","kind":"function","memberof":"Tracker.Dependency","scope":"instance","options":[],"locus":"Client"},"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"},"Dependency#hasDependents":{"summary":"True if this Dependency has one or more dependent Computations, which would be invalidated if this Dependency were to change.","name":"hasDependents","longname":"Tracker.Dependency#hasDependents","kind":"function","memberof":"Tracker.Dependency","scope":"instance","options":[],"params":[],"locus":"Client"},"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"},"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"}],"name":"autorun","longname":"Tracker.autorun","kind":"function","memberof":"Tracker","scope":"static","options":[],"locus":"Client"},"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"},"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"},"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"},"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#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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"}},"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"},"setDefault":{"memberof":"Session","kind":"function","name":"setDefault","summary":"Set a variable in the session if it is undefined. 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"},"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"},"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"}},"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":[]},"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' or 'client') to specify what architecture the package is\nused 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 on the server (or the client), you can pass in the second argument (e.g., 'server' or 'client') to specify what 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 on the server (or the client), you can pass in the second argument (e.g., 'server' or 'client') to specify what architecture the export is used with.

","name":"architecture"}],"name":"export","longname":"PackageAPI#export","kind":"function","options":[],"locus":"package.js"},"Subscription":{"summary":"The server's side of a subscription","kind":"class","name":"Subscription","longname":"Subscription","options":[],"params":[],"instancename":"this"},"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"},"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","ui":{"summary":"Accounts UI","kind":"namespace","memberof":"Accounts","name":"ui","longname":"Accounts.ui","scope":"static","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":["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":"

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"}},"emailTemplates":{"summary":"Options to customize emails sent from the Accounts system.","name":"emailTemplates","longname":"Accounts.emailTemplates","kind":"member","memberof":"Accounts","scope":"static","locus":"Anywhere"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"}},"EJSON":{"kind":"namespace","summary":"Namespace for EJSON functions","name":"EJSON","longname":"EJSON","scope":"global","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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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":{"summary":"The Meteor namespace","kind":"namespace","name":"Meteor","longname":"Meteor","users":{"summary":"A [Mongo.Collection](#collections) containing user documents.","name":"users","longname":"Meteor.users","kind":"member","memberof":"Meteor","scope":"static","locus":"Anywhere"},"isClient":{"summary":"Boolean variable. True if running in client environment.","scope":"static","name":"isClient","longname":"Meteor.isClient","kind":"member","memberof":"Meteor","locus":"Anywhere"},"isServer":{"summary":"Boolean variable. True if running in server environment.","scope":"static","name":"isServer","longname":"Meteor.isServer","kind":"member","memberof":"Meteor","locus":"Anywhere"},"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.","name":"settings","longname":"Meteor.settings","kind":"member","memberof":"Meteor","scope":"static","locus":"Anywhere"},"isCordova":{"summary":"Boolean variable. True if running in a Cordova mobile environment.","name":"isCordova","longname":"Meteor.isCordova","kind":"member","memberof":"Meteor","scope":"static","locus":"Anywhere"},"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.","name":"release","longname":"Meteor.release","kind":"member","memberof":"Meteor","scope":"static","locus":"Anywhere"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"disconnect":{"summary":"Disconnect the client from the server.","memberof":"Meteor","name":"disconnect","longname":"Meteor.disconnect","kind":"function","scope":"static","options":[],"params":[],"locus":"Client"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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":{"summary":"Namespace for MongoDB-related items","kind":"namespace","name":"Mongo","longname":"Mongo","scope":"global","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"},"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"},"Cursor#fetch":{"summary":"Return all matching documents as an Array.","memberof":"Mongo.Cursor","kind":"function","name":"fetch","scope":"instance","longname":"Mongo.Cursor#fetch","options":[],"params":[],"locus":"Anywhere"},"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"},"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"},"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"},"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"},"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"},"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"}],"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"},"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"}],"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"}},"Assets":{"summary":"The namespace for Assets functions, lives in the bundler.","kind":"namespace","name":"Assets","longname":"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"},"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":{"kind":"namespace","name":"App","scope":"global","summary":"The App configuration object in mobile-config.js","longname":"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"}]},"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":[]},"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":[]},"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":[]},"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":[]}},"Plugin":{"scope":"global","kind":"namespace","name":"Plugin","summary":"The namespace that is exposed inside build plugin files.","longname":"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":{"scope":"global","name":"Package","summary":"The Package object in package.js","kind":"namespace","longname":"Package","locus":"package.js","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"},"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"},"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"},"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":{"kind":"namespace","name":"Npm","scope":"global","summary":"The Npm object in package.js and package source files.","longname":"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"},"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"}},"Cordova":{"kind":"namespace","name":"Cordova","scope":"global","summary":"The Cordova object in package.js.","longname":"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"}},"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"},"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"},"TemplateInstance#view":{"name":"view","memberof":"Blaze.TemplateInstance","scope":"instance","summary":"The [View](#blaze_view) object for this invocation of the template.","longname":"Blaze.TemplateInstance#view","kind":"member","locus":"Client"},"TemplateInstance#firstNode":{"name":"firstNode","memberof":"Blaze.TemplateInstance","scope":"instance","summary":"The first top-level DOM node in this template instance.","longname":"Blaze.TemplateInstance#firstNode","kind":"member","locus":"Client"},"TemplateInstance#lastNode":{"name":"lastNode","memberof":"Blaze.TemplateInstance","scope":"instance","summary":"The last top-level DOM node in this template instance.","longname":"Blaze.TemplateInstance#lastNode","kind":"member","locus":"Client"},"currentView":{"summary":"The View corresponding to the current template helper, event handler, callback, or autorun. If there isn't one, `null`.","name":"currentView","longname":"Blaze.currentView","kind":"member","memberof":"Blaze","scope":"static","locus":"Client"},"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"},"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"},"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"},"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"},"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"},"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"}],"name":"$","longname":"Blaze.TemplateInstance#$","kind":"function","memberof":"Blaze.TemplateInstance","scope":"instance","options":[],"locus":"Client"},"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"}],"name":"findAll","longname":"Blaze.TemplateInstance#findAll","kind":"function","memberof":"Blaze.TemplateInstance","scope":"instance","options":[],"locus":"Client"},"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"}],"name":"find","longname":"Blaze.TemplateInstance#find","kind":"function","memberof":"Blaze.TemplateInstance","scope":"instance","options":[],"locus":"Client"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"}},"MethodInvocation#isSimulation":{"summary":"Access inside a method invocation. Boolean value, true if this invocation is a stub.","name":"isSimulation","memberof":"MethodInvocation","scope":"instance","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"},"Template":{"body":{"summary":"The [template object](#templates_api) representing your `` tag.","name":"body","longname":"Template.body","kind":"member","memberof":"Template","scope":"static","locus":"Client"},"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`.","scope":"static","longname":"Template.instance","options":[],"params":[],"locus":"Client"},"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"},"parentData":{"summary":"Accesses other data contexts that enclose the current data context.","kind":"function","params":[{"type":{"names":["Integer"]},"description":"

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

","name":"numLevels"}],"name":"parentData","longname":"Template.parentData","memberof":"Template","scope":"static","options":[],"locus":"Client"},"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"},"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"},"summary":"The class for defining templates","kind":"class","name":"Template","longname":"Template","scope":"global","options":[],"params":[],"instancename":"Template.myTemplate"},"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.","name":"active","longname":"Tracker.active","kind":"member","memberof":"Tracker","scope":"static","locus":"Client"},"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.","name":"currentComputation","longname":"Tracker.currentComputation","kind":"member","memberof":"Tracker","scope":"static","locus":"Client"},"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"},"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","longname":"Tracker.Computation#invalidated","kind":"member","locus":"Client"},"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","longname":"Tracker.Computation#firstRun","kind":"member","locus":"Client"},"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"},"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"},"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"},"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"},"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"}],"name":"depend","longname":"Tracker.Dependency#depend","kind":"function","memberof":"Tracker.Dependency","scope":"instance","options":[],"locus":"Client"},"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"},"Dependency#hasDependents":{"summary":"True if this Dependency has one or more dependent Computations, which would be invalidated if this Dependency were to change.","name":"hasDependents","longname":"Tracker.Dependency#hasDependents","kind":"function","memberof":"Tracker.Dependency","scope":"instance","options":[],"params":[],"locus":"Client"},"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"},"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"}],"name":"autorun","longname":"Tracker.autorun","kind":"function","memberof":"Tracker","scope":"static","options":[],"locus":"Client"},"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"},"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"},"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"},"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#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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"}},"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"},"setDefault":{"memberof":"Session","kind":"function","name":"setDefault","summary":"Set a variable in the session if it is undefined. 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"},"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"},"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"}},"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":[]},"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' or 'client') to specify what architecture the package is\nused 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 on the server (or the client), you can pass in the second argument (e.g., 'server' or 'client') to specify what 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 on the server (or the client), you can pass in the second argument (e.g., 'server' or 'client') to specify what architecture the export is used with.

","name":"architecture"}],"name":"export","longname":"PackageAPI#export","kind":"function","options":[],"locus":"package.js"},"Subscription":{"summary":"The server's side of a subscription","kind":"class","name":"Subscription","longname":"Subscription","options":[],"params":[],"instancename":"this"},"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"},"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 diff --git a/packages/meteor/errors.js b/packages/meteor/errors.js index c2ce47bb31..9ef661d06e 100644 --- a/packages/meteor/errors.js +++ b/packages/meteor/errors.js @@ -46,9 +46,34 @@ Meteor.makeErrorType = function (name, constructor) { * @summary This class represents a symbolic error thrown by a method. * @locus Anywhere * @class - * @param {Number} error A numeric error code, likely similar to an HTTP code (eg, 404, 500). - * @param {String} [reason] Optional. A short human-readable summary of the error, like 'Not Found'. - * @param {String} [details] Optional. Additional information about the error, like a textual stack trace. + * @param {String} error A string code uniquely identifying this kind of error. + * This string should be used by callers of the method to determine the + * appropriate action to take, instead of attempting to parse the reason + * or details fields. For example: + * + * ``` + * // on the server, pick a code unique to this error + * // the reason field should be a useful debug message + * throw new Meteor.Error("logged-out", + * "The user must be logged in to post a comment."); + * + * // on the client + * Meteor.call("methodName", function (error) { + * // identify the error + * if (error.error === "logged-out") { + * // show a nice error message + * Session.set("errorMessage", "Please log in to post a comment."); + * } + * }); + * ``` + * + * For legacy reasons, some built-in Meteor functions such as `check` throw + * errors with a number in this field. + * + * @param {String} [reason] Optional. A short human-readable summary of the + * error, like 'Not Found'. + * @param {String} [details] Optional. Additional information about the error, + * like a textual stack trace. */ Meteor.Error = Meteor.makeErrorType( "Meteor.Error", From 1e3e65fbf53b6ff265a56907d328e9cbc29fb102 Mon Sep 17 00:00:00 2001 From: Emily Stark Date: Wed, 8 Oct 2014 13:26:24 -0700 Subject: [PATCH 30/39] Use single quotes in 'packages with organizations' selftest --- tools/tests/package-tests.js | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/tools/tests/package-tests.js b/tools/tests/package-tests.js index 2c3af8602b..74a2a87bbc 100644 --- a/tools/tests/package-tests.js +++ b/tools/tests/package-tests.js @@ -361,7 +361,7 @@ var publishMostBasicPackage = function (s, fullPackageName) { s.cd(fullPackageName, function () { run = s.run("publish", "--create"); - run.waitSecs(15); + run.waitSecs(60); run.expectExit(0); run.match("Done"); }); @@ -711,14 +711,18 @@ selftest.define("talk to package server with expired or no accounts token", var changeVersionAndPublish = function (s, expectAuthorizationFailure) { var packageJs = s.read("package.js"); // XXX Hack - var version = packageJs.match(/version: \"(\d\.\d\.\d)\"/)[1]; + var versionMatch = packageJs.match(/version: \'(\d\.\d\.\d)\'/); + if (! versionMatch) { + selftest.fail("package.js does not match version field: " + packageJs); + } + var version = versionMatch[1]; var versionParts = version.split("."); versionParts[0] = parseInt(versionParts[0]) + 1; packageJs = packageJs.replace(version, versionParts.join(".")); s.write("package.js", packageJs); var run = s.run("publish"); - run.waitSecs(30); + run.waitSecs(60); if (expectAuthorizationFailure) { run.matchErr("not an authorized maintainer"); // XXX Why is this 3? Other unauthorized errors (e.g. maintainers From 2d73bc082f0daab0fb1a636183cf2a3dd588fcc3 Mon Sep 17 00:00:00 2001 From: Emily Stark Date: Wed, 8 Oct 2014 11:50:21 -0700 Subject: [PATCH 31/39] Fix argument parsing test; default port is now a string --- tools/tests/command-line.js | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/tools/tests/command-line.js b/tools/tests/command-line.js index 8109e1dbe0..690aeccd7e 100644 --- a/tools/tests/command-line.js +++ b/tools/tests/command-line.js @@ -56,52 +56,52 @@ selftest.define("argument parsing", function () { // successful command invocation, correct parsing of arguments run = s.run("dummy", "--email", "x"); - run.read('"x" 3000 none []\n'); + run.read('"x" "3000" none []\n'); run.expectEnd(); run.expectExit(0); run = s.run("dummy", "--email", ""); - run.read('"" 3000 none []\n'); + run.read('"" "3000" none []\n'); run.expectEnd(); run.expectExit(0); run = s.run("dummy", "--email", "x", "", ""); - run.read('"x" 3000 none ["",""]\n'); + run.read('"x" "3000" none ["",""]\n'); run.expectEnd(); run.expectExit(0); run = s.run("dummy", "--email="); - run.read('"" 3000 none []\n'); + run.read('"" "3000" none []\n'); run.expectEnd(); run.expectExit(0); run = s.run("dummy", "-e="); - run.read('"" 3000 none []\n'); + run.read('"" "3000" none []\n'); run.expectEnd(); run.expectExit(0); run = s.run("dummy", "--email", "x", "-"); - run.read('"x" 3000 none ["-"]\n'); + run.read('"x" "3000" none ["-"]\n'); run.expectEnd(); run.expectExit(0); run = s.run("dummy", "-e", "x"); - run.read('"x" 3000 none []\n'); + run.read('"x" "3000" none []\n'); run.expectEnd(); run.expectExit(0); run = s.run("dummy", "-e", ""); - run.read('"" 3000 none []\n'); + run.read('"" "3000" none []\n'); run.expectEnd(); run.expectExit(0); run = s.run("dummy", "-exxx"); - run.read('"xxx" 3000 none []\n'); + run.read('"xxx" "3000" none []\n'); run.expectEnd(); run.expectExit(0); run = s.run("dummy", "--email", "-"); - run.read('"-" 3000 none []\n'); + run.read('"-" "3000" none []\n'); run.expectEnd(); run.expectExit(0); @@ -121,7 +121,7 @@ selftest.define("argument parsing", function () { run.expectExit(0); run = s.run("dummy", "--email", "--port", "1234", "--changed"); - run.read('"--port" 3000 true ["1234"]\n'); + run.read('"--port" "3000" true ["1234"]\n'); run.expectEnd(); run.expectExit(0); @@ -237,17 +237,17 @@ selftest.define("argument parsing", function () { // '--' to end parsing run = s.run("dummy", "--email", "x", "--", "-p", "4000"); - run.read('"x" 3000 none ["-p","4000"]\n'); + run.read('"x" "3000" none ["-p","4000"]\n'); run.expectEnd(); run.expectExit(0); run = s.run("dummy", "--email", "x", "--", "--changed", "--changed"); - run.read('"x" 3000 none ["--changed","--changed"]\n'); + run.read('"x" "3000" none ["--changed","--changed"]\n'); run.expectEnd(); run.expectExit(0); run = s.run("dummy", "--email", "x", "--"); - run.read('"x" 3000 none []\n'); + run.read('"x" "3000" none []\n'); run.expectEnd(); run.expectExit(0); @@ -258,7 +258,7 @@ selftest.define("argument parsing", function () { run.expectExit(0); run = s.run("dummy", "--email", "x", "-UD", "--changed"); - run.read('"x" 3000 true []\nurl\n\delete\n'); + run.read('"x" "3000" true []\nurl\n\delete\n'); run.expectEnd(); run.expectExit(0); From c09f52d89b13e752e05da2871ba0590240ec869c Mon Sep 17 00:00:00 2001 From: Emily Stark Date: Wed, 8 Oct 2014 11:19:17 -0700 Subject: [PATCH 32/39] Update path in cordova builds selftest --- tools/tests/cordova-builds.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/tests/cordova-builds.js b/tools/tests/cordova-builds.js index 2d9210e027..7a3b3612ca 100644 --- a/tools/tests/cordova-builds.js +++ b/tools/tests/cordova-builds.js @@ -7,7 +7,7 @@ var selftest = require('../selftest.js'); var Sandbox = selftest.Sandbox; var checkMobileServer = selftest.markStack(function (s, expected) { - var output = s.read("android/assets/www/application/index.html"); + var output = s.read("android/project/assets/www/application/index.html"); if (! output.match(new RegExp( '"DDP_DEFAULT_CONNECTION_URL":"' + expected + '"'))) { selftest.fail( From 9fd8b1cd47f6c9f03879427abf471f3d9be49738 Mon Sep 17 00:00:00 2001 From: Emily Stark Date: Wed, 8 Oct 2014 11:09:02 -0700 Subject: [PATCH 33/39] Update 'add cordova platforms' to match latest command output --- tools/tests/cordova-platforms.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tools/tests/cordova-platforms.js b/tools/tests/cordova-platforms.js index 389e31a347..6a9b310b07 100644 --- a/tools/tests/cordova-platforms.js +++ b/tools/tests/cordova-platforms.js @@ -14,8 +14,8 @@ selftest.define("add cordova platforms", function () { s.set("METEOR_TEST_TMP", files.mkdtemp()); run = s.run("run", "android"); - run.matchErr("platform is not added"); - run.matchErr("meteor add-platform android"); + run.matchErr("Platform is not added"); + run.match("meteor add-platform android"); run.expectExit(1); run = s.run("add-platform", "android"); @@ -30,7 +30,7 @@ selftest.define("add cordova platforms", function () { run = s.run("remove-platform", "android"); run.match("removed"); run = s.run("run", "android"); - run.matchErr("platform is not added"); - run.matchErr("meteor add-platform android"); + run.matchErr("Platform is not added"); + run.match("meteor add-platform android"); run.expectExit(1); }); From d8923c5874afa2587a3db9166a5fb8adeec52b57 Mon Sep 17 00:00:00 2001 From: Emily Stark Date: Tue, 7 Oct 2014 19:25:57 -0700 Subject: [PATCH 34/39] Fixes to 'add cordova plugins' selftest. * Remove --settings option that is no longer supported. * Add --server option that is now required. Test still doesn't pass. --- tools/tests/cordova-plugins.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tools/tests/cordova-plugins.js b/tools/tests/cordova-plugins.js index f0a1654102..50eaa1a248 100644 --- a/tools/tests/cordova-plugins.js +++ b/tools/tests/cordova-plugins.js @@ -30,7 +30,7 @@ var localCordova = path.join(files.getCurrentToolsDir(), "tools", // // sand: a sandbox, that has the main app directory as its cwd. // plugins: an array of plugins in order. -var checkCordovaPlugins = function(sand, plugins) { +var checkCordovaPlugins = selftest.markStack(function(sand, plugins) { var lines = selftest.execFileSync(localCordova, ['plugins'], { cwd: path.join(sand.cwd, '.meteor', 'local', 'cordova-build'), @@ -53,7 +53,7 @@ var checkCordovaPlugins = function(sand, plugins) { i++; }); selftest.expectEqual(plugins.length, i); -}; +}); // Given a sandbox, that has the app as its cwd, read the cordova plugins // file and check that it contains exactly the plugins specified, in order. @@ -147,7 +147,7 @@ selftest.define("add cordova plugins", ["slow"], function () { run = s.run("run", "android"); run.matchErr("not added to the project"); - run.matchErr("meteor add-platform "); + run.match("meteor add-platform "); run = s.run("add-platform", "android"); run.match("Do you agree"); @@ -185,7 +185,7 @@ selftest.define("add cordova plugins", ["slow"], function () { run = s.run("list-platforms"); run.match("android"); - run = s.run("build", "../a", "--settings", "settings.json"); + run = s.run("build", "../a", "--server", "localhost:3000"); run.waitSecs(30); // This fails because the FB plugin does not compile without additional // configuration for android. @@ -199,7 +199,7 @@ selftest.define("add cordova plugins", ["slow"], function () { run = s.run("remove", "contains-cordova-plugin"); run.match("removed"); - run = s.run("build", "../a", "--settings", "settings.json"); + run = s.run("build", "../a", "--server", "localhost:3000"); run.waitSecs(60); run.expectExit(0); @@ -209,7 +209,7 @@ selftest.define("add cordova plugins", ["slow"], function () { run.match("removed"); run.expectExit(0); - run = s.run("build", "../a", "--settings", "settings.json"); + run = s.run("build", "../a", "--server", "localhost:3000"); run.waitSecs(60); run.expectExit(0); @@ -219,7 +219,7 @@ selftest.define("add cordova plugins", ["slow"], function () { run.match("added"); run.expectExit(0); - run = s.run("build", "../a", "--settings", "settings.json"); + run = s.run("build", "../a", "--server", "localhost:3000"); run.waitSecs(60); run.expectExit(0); checkCordovaPlugins(s, ["org.apache.cordova.device"]); From d8bd9264d7ea5b3a1f09e110e507f996b9c88337 Mon Sep 17 00:00:00 2001 From: Emily Stark Date: Wed, 8 Oct 2014 10:59:41 -0700 Subject: [PATCH 35/39] Update 'add cordova plugins' test to reflect reality. If we fail to install one plugin, then we uninstall all plugins to avoid awakening the Cordova monsters. Previously, this test was passing because we were passing a `--settings` argument, which was allowing the facebookconnect plugin to install, but the build to fail to other, not-understood reasons. Now that we've removed `--settings`, the plugin fails to install, which means that all plugins get uninstalled. Test passes now. --- tools/tests/cordova-plugins.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tools/tests/cordova-plugins.js b/tools/tests/cordova-plugins.js index 50eaa1a248..c28ed989aa 100644 --- a/tools/tests/cordova-plugins.js +++ b/tools/tests/cordova-plugins.js @@ -191,9 +191,10 @@ selftest.define("add cordova plugins", ["slow"], function () { // configuration for android. run.expectExit(8); - checkCordovaPlugins(s, - ["org.apache.cordova.camera", - "com.phonegap.plugins.facebookconnect"]); + // When one plugin installation fails, we uninstall all the plugins + // (legend has it that Cordova can get in a weird inconsistent state + // if we don't do this). + checkCordovaPlugins(s, []); // Remove a plugin run = s.run("remove", "contains-cordova-plugin"); From ea51b6a26abf4155ea9ce103af6261df6cd8954a Mon Sep 17 00:00:00 2001 From: Sashko Stubailo Date: Wed, 8 Oct 2014 15:55:07 -0700 Subject: [PATCH 36/39] Update DDP.md --- packages/ddp/DDP.md | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/packages/ddp/DDP.md b/packages/ddp/DDP.md index 2cb5cf5296..ca29b4b032 100644 --- a/packages/ddp/DDP.md +++ b/packages/ddp/DDP.md @@ -238,7 +238,7 @@ a `pong` message. If the received `ping` message includes an `id` field, the Errors appear in `result` and `nosub` messages in an optional error field. An error is an Object with the following fields: - * `error`: string + * `error`: string (previously a number. See appendix 3) * `reason`: optional string * `details`: optional string @@ -334,12 +334,25 @@ behaves differently to the server, then syncing will fix this. generated will be the same, and syncing will be a no-op. +## Appendix 3: Error message `error` field can be a string or a number + +In the `pre1` and `pre2` specifications for DDP, the `error` field on error +messages was documented as a number, and in practice often matched the closest +HTTP error code. + +It is typically better to be specific about the type of error being returned, so +new code should use strings like `'wrong-password'` instead of `401`. To support +both the new string error codes and the old number codes, a DDP client should +accept a string or a number in this field. Many meteor packages, including some +core packages, still use the old numeric codes. + + ## Version History -```pre1``` was the first version of DDP +`pre1` was the first version of DDP -```pre2``` added keep-alive (ping & pong messages), and randomSeed. +`pre2` added keep-alive (ping & pong messages), and randomSeed. -```1``` should be considered the first official version of DDP. It is -currently identical to pre2, although non-incompatible changes may be made to -it in future. +`1` should be considered the first official version of DDP. The type of the +error code field has been clarified to reflect the behavior of existing clients +and servers. From 6c8b0832d7429486829e54327ef9f4393630c3f2 Mon Sep 17 00:00:00 2001 From: ekatek Date: Wed, 8 Oct 2014 16:03:29 -0700 Subject: [PATCH 37/39] do not use clone since the catalog is backed by a real db --- tools/tests/package-tests.js | 74 +++++++++++++++++++++++++++++++++++- 1 file changed, 72 insertions(+), 2 deletions(-) diff --git a/tools/tests/package-tests.js b/tools/tests/package-tests.js index 74a2a87bbc..677c9dce3c 100644 --- a/tools/tests/package-tests.js +++ b/tools/tests/package-tests.js @@ -7,6 +7,7 @@ var _= require('underscore'); var fs = require("fs"); var path = require("path"); var packageClient = require("../package-client.js"); +var buildmessage = require("../buildmessage.js"); var username = "test"; var password = "testtest"; @@ -84,6 +85,76 @@ var checkVersions = function(sand, packages) { selftest.expectEqual(packages.length, i); }; +// Takes in a remote catalog. Returns an object that can sort of immitate the +// catalog. We don't bother to copy all of the information for memory/efficiency +// reasons; the new 'catalog' has the following methods, which correspond to the +// same methods on the normal catalog. +// +// getAllPackageNames () - list of package names +// getPackage (p) - given a package name, return its record +// getSortedVersions (p) - given a package name, return a sorted list of its versions +// getAllReleaseTracks () - list of release tracks +// getSortedRecommendedReleaseVersions (t) - given a track name, get (see method name) +// getReleaseVersion (t, v) - given track & version, return the document record +var DataStub = function (remoteCatalog) { + var self = this; + buildmessage.capture( + { title: "copying catalog data" }, + function () { + var packageNames = remoteCatalog.getAllPackageNames(); + self.packages = {}; + _.each(packageNames, function (p) { + var versions = remoteCatalog.getSortedVersions(p); + var record = remoteCatalog.getPackage(p); + self.packages[p] = { versions: versions, record: record }; + }); + var releaseTracks = remoteCatalog.getAllReleaseTracks(); + self.releases = {}; + _.each(releaseTracks, function (t) { + var versions = + remoteCatalog.getSortedRecommendedReleaseVersions(t); + var records = {}; + _.each(versions, function (v) { + records[v] = remoteCatalog.getReleaseVersion(t, v); + }); + self.releases[t] = { versions: versions, records: records }; + }); + }); +}; + +_.extend(DataStub.prototype, { + getAllPackageNames: function () { + return _.keys(this.packages); + }, + getSortedVersions: function (p) { + var self = this; + var rec = self.packages[p]; + if (!rec) return null; + return rec.versions; + }, + getPackage: function (p) { + var self = this; + var rec = self.packages[p]; + if (!rec) return null; + return rec.record; + }, + getAllReleaseTracks: function () { + return _.keys(this.releases); + }, + getSortedRecommendedReleaseVersions: function (t) { + var self = this; + var rec = self.releases[t]; + if (!rec) return null; + return rec.versions; + }, + getReleaseVersion: function (t, v) { + var self = this; + var rec = self.releases[t]; + if (!rec) return null; + return rec.records[v]; + } +}); + // Add packages to an app. Change the contents of the packages and their // dependencies, make sure that the app still refreshes. selftest.define("change packages during hot code push", [], function () { @@ -539,7 +610,6 @@ selftest.define("update server package data unit test", function () { var s = new Sandbox(); var run; - var buildmessage = require("../buildmessage.js"); var packageStorageFileDir = files.mkdtemp("update-server-package-data"); @@ -560,7 +630,7 @@ selftest.define("update server package data unit test", packageServerUrl: selftest.testPackageServerUrl }); - var oldStorage = _.clone(packageStorage); + var oldStorage = new DataStub(packageStorage); var newPackageNames = []; // Publish more than a (small) page worth of packages. When we pass the From 1df375d3a21c6de42a54c83ce8130e979d2c2095 Mon Sep 17 00:00:00 2001 From: David Glasser Date: Wed, 8 Oct 2014 17:05:18 -0700 Subject: [PATCH 38/39] Fix test-package-server tag ... and also make some fixes to the 'update package server data' test, though it's possible that only the other change is strictly necessary --- tools/selftest.js | 4 +- tools/tests/package-tests.js | 95 ++++++++++++++++++------------------ 2 files changed, 49 insertions(+), 50 deletions(-) diff --git a/tools/selftest.js b/tools/selftest.js index fdb8b6f406..142ddece07 100644 --- a/tools/selftest.js +++ b/tools/selftest.js @@ -380,7 +380,7 @@ var Sandbox = function (options) { // assume that the release's packages can be found on the server should not. // Note that this only affects subprocess meteor runs, not direct invocation // of packageClient! - if (runningTest.tags['test-package-server']) { + if (_.contains(runningTest.tags, 'test-package-server')) { self.set('METEOR_PACKAGE_SERVER_URL', exports.testPackageServerUrl); } @@ -1330,7 +1330,7 @@ var Test = function (options) { self.name = options.name; self.file = options.file; self.fileHash = options.fileHash; - self.tags = options.tags || {}; + self.tags = options.tags || []; self.f = options.func; self.cleanupHandlers = []; }; diff --git a/tools/tests/package-tests.js b/tools/tests/package-tests.js index 677c9dce3c..377b08e985 100644 --- a/tools/tests/package-tests.js +++ b/tools/tests/package-tests.js @@ -98,28 +98,26 @@ var checkVersions = function(sand, packages) { // getReleaseVersion (t, v) - given track & version, return the document record var DataStub = function (remoteCatalog) { var self = this; - buildmessage.capture( - { title: "copying catalog data" }, - function () { - var packageNames = remoteCatalog.getAllPackageNames(); - self.packages = {}; - _.each(packageNames, function (p) { - var versions = remoteCatalog.getSortedVersions(p); - var record = remoteCatalog.getPackage(p); - self.packages[p] = { versions: versions, record: record }; - }); - var releaseTracks = remoteCatalog.getAllReleaseTracks(); - self.releases = {}; - _.each(releaseTracks, function (t) { - var versions = - remoteCatalog.getSortedRecommendedReleaseVersions(t); - var records = {}; - _.each(versions, function (v) { - records[v] = remoteCatalog.getReleaseVersion(t, v); + selftest.doOrThrow(function () { + var packageNames = remoteCatalog.getAllPackageNames(); + self.packages = {}; + _.each(packageNames, function (p) { + var versions = remoteCatalog.getSortedVersions(p); + var record = remoteCatalog.getPackage(p); + self.packages[p] = { versions: versions, record: record }; + }); + var releaseTracks = remoteCatalog.getAllReleaseTracks(); + self.releases = {}; + _.each(releaseTracks, function (t) { + var versions = + remoteCatalog.getSortedRecommendedReleaseVersions(t); + var records = {}; + _.each(versions, function (v) { + records[v] = remoteCatalog.getReleaseVersion(t, v); + }); + self.releases[t] = { versions: versions, records: records }; }); - self.releases[t] = { versions: versions, records: records }; }); - }); }; _.extend(DataStub.prototype, { @@ -619,7 +617,10 @@ selftest.define("update server package data unit test", var packageStorageFile = config.getPackageStorage({root: packageStorageFileDir}); packageStorage.initialize({ - packageStorage : packageStorageFile + packageStorage : packageStorageFile, + // Don't let this catalog refresh: we do that manually, and in any case the + // catalog isn't smart enough to refresh with the right URL. + offline: true }); testUtils.login(s, username, password); @@ -647,34 +648,32 @@ selftest.define("update server package data unit test", useShortPages: true }); - buildmessage.capture( - { title: "comparing the test catalogs" }, - function () { - var packages = oldStorage.getAllPackageNames(); - _.each(packages, function (p) { - // We could be more pedantic about comparing all the records, but it - // is a significant effort, time-wise to do that. - selftest.expectEqual( - packageStorage.getPackage(p), oldStorage.getPackage(p)); - selftest.expectEqual( - packageStorage.getSortedVersions(p), - oldStorage.getSortedVersions(p)); - }); - var releaseTracks = oldStorage.getAllReleaseTracks; - _.each(releaseTracks, function (t) { - _.each(oldStorage.getSortedRecommendedReleaseVersions(t), - function (v) { - selftest.expectEqual( - packageStorage.getReleaseVersion(t, v), - oldStorage.getReleaseVersion(t, v)); - }); - }); - }); + selftest.doOrThrow(function () { + var packages = oldStorage.getAllPackageNames(); + _.each(packages, function (p) { + // We could be more pedantic about comparing all the records, but it + // is a significant effort, time-wise to do that. + selftest.expectEqual( + packageStorage.getPackage(p), oldStorage.getPackage(p)); + selftest.expectEqual( + packageStorage.getSortedVersions(p), + oldStorage.getSortedVersions(p)); + }); + var releaseTracks = oldStorage.getAllReleaseTracks; + _.each(releaseTracks, function (t) { + _.each(oldStorage.getSortedRecommendedReleaseVersions(t), + function (v) { + selftest.expectEqual( + packageStorage.getReleaseVersion(t, v), + oldStorage.getReleaseVersion(t, v)); + }); + }); - // Check that our newly published packages appear in newData and on disk. - _.each(newPackageNames, function (name) { - var found = packageStorage.getPackage(name); - selftest.expectEqual(!! found, true); + // Check that our newly published packages appear in newData and on disk. + _.each(newPackageNames, function (name) { + var found = packageStorage.getPackage(name); + selftest.expectEqual(!! found, true); + }); }); }); From e7820b5fbf7839003d95b61cd40cf911517d46ca Mon Sep 17 00:00:00 2001 From: David Glasser Date: Wed, 8 Oct 2014 17:25:48 -0700 Subject: [PATCH 39/39] jsdoc update --- docs/client/data.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/docs/client/data.js b/docs/client/data.js index 71d3f9662c..46cbfd2501 100644 --- a/docs/client/data.js +++ b/docs/client/data.js @@ -1,6 +1,2 @@ // This file is automatically generated by JSDoc; regenerate it with scripts/admin/jsdoc/jsdoc.sh -<<<<<<< HEAD -DocsData = {"Accounts":{"kind":"namespace","name":"Accounts","summary":"The namespace for all accounts-related methods.","longname":"Accounts","ui":{"summary":"Accounts UI","kind":"namespace","memberof":"Accounts","name":"ui","longname":"Accounts.ui","scope":"static","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":["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":"

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"}},"emailTemplates":{"summary":"Options to customize emails sent from the Accounts system.","name":"emailTemplates","longname":"Accounts.emailTemplates","kind":"member","memberof":"Accounts","scope":"static","locus":"Anywhere"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"}},"EJSON":{"kind":"namespace","summary":"Namespace for EJSON functions","name":"EJSON","longname":"EJSON","scope":"global","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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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":{"summary":"The Meteor namespace","kind":"namespace","name":"Meteor","longname":"Meteor","users":{"summary":"A [Mongo.Collection](#collections) containing user documents.","name":"users","longname":"Meteor.users","kind":"member","memberof":"Meteor","scope":"static","locus":"Anywhere"},"isClient":{"summary":"Boolean variable. True if running in client environment.","scope":"static","name":"isClient","longname":"Meteor.isClient","kind":"member","memberof":"Meteor","locus":"Anywhere"},"isServer":{"summary":"Boolean variable. True if running in server environment.","scope":"static","name":"isServer","longname":"Meteor.isServer","kind":"member","memberof":"Meteor","locus":"Anywhere"},"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.","name":"settings","longname":"Meteor.settings","kind":"member","memberof":"Meteor","scope":"static","locus":"Anywhere"},"isCordova":{"summary":"Boolean variable. True if running in a Cordova mobile environment.","name":"isCordova","longname":"Meteor.isCordova","kind":"member","memberof":"Meteor","scope":"static","locus":"Anywhere"},"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.","name":"release","longname":"Meteor.release","kind":"member","memberof":"Meteor","scope":"static","locus":"Anywhere"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"disconnect":{"summary":"Disconnect the client from the server.","memberof":"Meteor","name":"disconnect","longname":"Meteor.disconnect","kind":"function","scope":"static","options":[],"params":[],"locus":"Client"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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":{"summary":"Namespace for MongoDB-related items","kind":"namespace","name":"Mongo","longname":"Mongo","scope":"global","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"},"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"},"Cursor#fetch":{"summary":"Return all matching documents as an Array.","memberof":"Mongo.Cursor","kind":"function","name":"fetch","scope":"instance","longname":"Mongo.Cursor#fetch","options":[],"params":[],"locus":"Anywhere"},"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"},"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"},"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"},"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"},"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"},"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"}],"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"},"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"}],"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"}},"Assets":{"summary":"The namespace for Assets functions, lives in the bundler.","kind":"namespace","name":"Assets","longname":"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"},"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":{"kind":"namespace","name":"App","scope":"global","summary":"The App configuration object in mobile-config.js","longname":"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"}]},"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":[]},"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":[]},"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":[]},"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":[]}},"Plugin":{"scope":"global","kind":"namespace","name":"Plugin","summary":"The namespace that is exposed inside build plugin files.","longname":"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":{"scope":"global","name":"Package","summary":"The Package object in package.js","kind":"namespace","longname":"Package","locus":"package.js","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"},"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"},"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"},"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":{"kind":"namespace","name":"Npm","scope":"global","summary":"The Npm object in package.js and package source files.","longname":"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"},"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"}},"Cordova":{"kind":"namespace","name":"Cordova","scope":"global","summary":"The Cordova object in package.js.","longname":"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"}},"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"},"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"},"TemplateInstance#view":{"name":"view","memberof":"Blaze.TemplateInstance","scope":"instance","summary":"The [View](#blaze_view) object for this invocation of the template.","longname":"Blaze.TemplateInstance#view","kind":"member","locus":"Client"},"TemplateInstance#firstNode":{"name":"firstNode","memberof":"Blaze.TemplateInstance","scope":"instance","summary":"The first top-level DOM node in this template instance.","longname":"Blaze.TemplateInstance#firstNode","kind":"member","locus":"Client"},"TemplateInstance#lastNode":{"name":"lastNode","memberof":"Blaze.TemplateInstance","scope":"instance","summary":"The last top-level DOM node in this template instance.","longname":"Blaze.TemplateInstance#lastNode","kind":"member","locus":"Client"},"currentView":{"summary":"The View corresponding to the current template helper, event handler, callback, or autorun. If there isn't one, `null`.","name":"currentView","longname":"Blaze.currentView","kind":"member","memberof":"Blaze","scope":"static","locus":"Client"},"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"},"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"},"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"},"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"},"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"},"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"}],"name":"$","longname":"Blaze.TemplateInstance#$","kind":"function","memberof":"Blaze.TemplateInstance","scope":"instance","options":[],"locus":"Client"},"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"}],"name":"findAll","longname":"Blaze.TemplateInstance#findAll","kind":"function","memberof":"Blaze.TemplateInstance","scope":"instance","options":[],"locus":"Client"},"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"}],"name":"find","longname":"Blaze.TemplateInstance#find","kind":"function","memberof":"Blaze.TemplateInstance","scope":"instance","options":[],"locus":"Client"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"}},"MethodInvocation#isSimulation":{"summary":"Access inside a method invocation. Boolean value, true if this invocation is a stub.","name":"isSimulation","memberof":"MethodInvocation","scope":"instance","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"},"Template":{"body":{"summary":"The [template object](#templates_api) representing your `` tag.","name":"body","longname":"Template.body","kind":"member","memberof":"Template","scope":"static","locus":"Client"},"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`.","scope":"static","longname":"Template.instance","options":[],"params":[],"locus":"Client"},"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"},"parentData":{"summary":"Accesses other data contexts that enclose the current data context.","kind":"function","params":[{"type":{"names":["Integer"]},"description":"

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

","name":"numLevels"}],"name":"parentData","longname":"Template.parentData","memberof":"Template","scope":"static","options":[],"locus":"Client"},"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"},"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"},"summary":"The class for defining templates","kind":"class","name":"Template","longname":"Template","scope":"global","options":[],"params":[],"instancename":"Template.myTemplate"},"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.","name":"active","longname":"Tracker.active","kind":"member","memberof":"Tracker","scope":"static","locus":"Client"},"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.","name":"currentComputation","longname":"Tracker.currentComputation","kind":"member","memberof":"Tracker","scope":"static","locus":"Client"},"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"},"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","longname":"Tracker.Computation#invalidated","kind":"member","locus":"Client"},"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","longname":"Tracker.Computation#firstRun","kind":"member","locus":"Client"},"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"},"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"},"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"},"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"},"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"}],"name":"depend","longname":"Tracker.Dependency#depend","kind":"function","memberof":"Tracker.Dependency","scope":"instance","options":[],"locus":"Client"},"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"},"Dependency#hasDependents":{"summary":"True if this Dependency has one or more dependent Computations, which would be invalidated if this Dependency were to change.","name":"hasDependents","longname":"Tracker.Dependency#hasDependents","kind":"function","memberof":"Tracker.Dependency","scope":"instance","options":[],"params":[],"locus":"Client"},"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"},"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"}],"name":"autorun","longname":"Tracker.autorun","kind":"function","memberof":"Tracker","scope":"static","options":[],"locus":"Client"},"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"},"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"},"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"},"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#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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"}},"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"},"setDefault":{"memberof":"Session","kind":"function","name":"setDefault","summary":"Set a variable in the session if it is undefined. 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"},"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"},"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"}},"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":[]},"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' or 'client') to specify what architecture the package is\nused 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 on the server (or the client), you can pass in the second argument (e.g., 'server' or 'client') to specify what 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 on the server (or the client), you can pass in the second argument (e.g., 'server' or 'client') to specify what architecture the export is used with.

","name":"architecture"}],"name":"export","longname":"PackageAPI#export","kind":"function","options":[],"locus":"package.js"},"Subscription":{"summary":"The server's side of a subscription","kind":"class","name":"Subscription","longname":"Subscription","options":[],"params":[],"instancename":"this"},"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"},"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"}}; -======= -DocsData = {"Accounts":{"kind":"namespace","name":"Accounts","summary":"The namespace for all accounts-related methods.","longname":"Accounts","ui":{"summary":"Accounts UI","kind":"namespace","memberof":"Accounts","name":"ui","longname":"Accounts.ui","scope":"static","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":["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":"

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"}},"emailTemplates":{"summary":"Options to customize emails sent from the Accounts system.","name":"emailTemplates","longname":"Accounts.emailTemplates","kind":"member","memberof":"Accounts","scope":"static","locus":"Anywhere"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"}},"EJSON":{"kind":"namespace","summary":"Namespace for EJSON functions","name":"EJSON","longname":"EJSON","scope":"global","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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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":{"summary":"The Meteor namespace","kind":"namespace","name":"Meteor","longname":"Meteor","users":{"summary":"A [Mongo.Collection](#collections) containing user documents.","name":"users","longname":"Meteor.users","kind":"member","memberof":"Meteor","scope":"static","locus":"Anywhere"},"isClient":{"summary":"Boolean variable. True if running in client environment.","scope":"static","name":"isClient","longname":"Meteor.isClient","kind":"member","memberof":"Meteor","locus":"Anywhere"},"isServer":{"summary":"Boolean variable. True if running in server environment.","scope":"static","name":"isServer","longname":"Meteor.isServer","kind":"member","memberof":"Meteor","locus":"Anywhere"},"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.","name":"settings","longname":"Meteor.settings","kind":"member","memberof":"Meteor","scope":"static","locus":"Anywhere"},"isCordova":{"summary":"Boolean variable. True if running in a Cordova mobile environment.","name":"isCordova","longname":"Meteor.isCordova","kind":"member","memberof":"Meteor","scope":"static","locus":"Anywhere"},"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.","name":"release","longname":"Meteor.release","kind":"member","memberof":"Meteor","scope":"static","locus":"Anywhere"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"disconnect":{"summary":"Disconnect the client from the server.","memberof":"Meteor","name":"disconnect","longname":"Meteor.disconnect","kind":"function","scope":"static","options":[],"params":[],"locus":"Client"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"Error":{"summary":"This class represents a symbolic error thrown by a method.","kind":"class","params":[{"type":{"names":["Number"]},"description":"

A numeric error code, likely similar to an HTTP code (eg, 404, 500).

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

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

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

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

","name":"details"}],"name":"Error","longname":"Meteor.Error","memberof":"Meteor","scope":"static","options":[],"locus":"Anywhere"}},"Mongo":{"summary":"Namespace for MongoDB-related items","kind":"namespace","name":"Mongo","longname":"Mongo","scope":"global","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"},"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"},"Cursor#fetch":{"summary":"Return all matching documents as an Array.","memberof":"Mongo.Cursor","kind":"function","name":"fetch","scope":"instance","longname":"Mongo.Cursor#fetch","options":[],"params":[],"locus":"Anywhere"},"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"},"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"},"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"},"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"},"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"},"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"}],"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"},"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"}],"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"}},"Assets":{"summary":"The namespace for Assets functions, lives in the bundler.","kind":"namespace","name":"Assets","longname":"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"},"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":{"kind":"namespace","name":"App","scope":"global","summary":"The App configuration object in mobile-config.js","longname":"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"}]},"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":[]},"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":[]},"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":[]},"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":[]}},"Plugin":{"scope":"global","kind":"namespace","name":"Plugin","summary":"The namespace that is exposed inside build plugin files.","longname":"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":{"scope":"global","name":"Package","summary":"The Package object in package.js","kind":"namespace","longname":"Package","locus":"package.js","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"},"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"},"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"},"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":{"kind":"namespace","name":"Npm","scope":"global","summary":"The Npm object in package.js and package source files.","longname":"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"},"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"}},"Cordova":{"kind":"namespace","name":"Cordova","scope":"global","summary":"The Cordova object in package.js.","longname":"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"}},"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"},"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"},"TemplateInstance#view":{"name":"view","memberof":"Blaze.TemplateInstance","scope":"instance","summary":"The [View](#blaze_view) object for this invocation of the template.","longname":"Blaze.TemplateInstance#view","kind":"member","locus":"Client"},"TemplateInstance#firstNode":{"name":"firstNode","memberof":"Blaze.TemplateInstance","scope":"instance","summary":"The first top-level DOM node in this template instance.","longname":"Blaze.TemplateInstance#firstNode","kind":"member","locus":"Client"},"TemplateInstance#lastNode":{"name":"lastNode","memberof":"Blaze.TemplateInstance","scope":"instance","summary":"The last top-level DOM node in this template instance.","longname":"Blaze.TemplateInstance#lastNode","kind":"member","locus":"Client"},"currentView":{"summary":"The View corresponding to the current template helper, event handler, callback, or autorun. If there isn't one, `null`.","name":"currentView","longname":"Blaze.currentView","kind":"member","memberof":"Blaze","scope":"static","locus":"Client"},"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"},"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"},"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"},"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"},"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"},"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"}],"name":"$","longname":"Blaze.TemplateInstance#$","kind":"function","memberof":"Blaze.TemplateInstance","scope":"instance","options":[],"locus":"Client"},"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"}],"name":"findAll","longname":"Blaze.TemplateInstance#findAll","kind":"function","memberof":"Blaze.TemplateInstance","scope":"instance","options":[],"locus":"Client"},"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"}],"name":"find","longname":"Blaze.TemplateInstance#find","kind":"function","memberof":"Blaze.TemplateInstance","scope":"instance","options":[],"locus":"Client"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"}},"MethodInvocation#isSimulation":{"summary":"Access inside a method invocation. Boolean value, true if this invocation is a stub.","name":"isSimulation","memberof":"MethodInvocation","scope":"instance","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"},"Template":{"body":{"summary":"The [template object](#templates_api) representing your `` tag.","name":"body","longname":"Template.body","kind":"member","memberof":"Template","scope":"static","locus":"Client"},"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`.","scope":"static","longname":"Template.instance","options":[],"params":[],"locus":"Client"},"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"},"parentData":{"summary":"Accesses other data contexts that enclose the current data context.","kind":"function","params":[{"type":{"names":["Integer"]},"description":"

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

","name":"numLevels"}],"name":"parentData","longname":"Template.parentData","memberof":"Template","scope":"static","options":[],"locus":"Client"},"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"},"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"},"summary":"The class for defining templates","kind":"class","name":"Template","longname":"Template","scope":"global","options":[],"params":[],"instancename":"Template.myTemplate"},"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.","name":"active","longname":"Tracker.active","kind":"member","memberof":"Tracker","scope":"static","locus":"Client"},"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.","name":"currentComputation","longname":"Tracker.currentComputation","kind":"member","memberof":"Tracker","scope":"static","locus":"Client"},"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"},"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","longname":"Tracker.Computation#invalidated","kind":"member","locus":"Client"},"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","longname":"Tracker.Computation#firstRun","kind":"member","locus":"Client"},"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"},"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"},"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"},"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"},"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"}],"name":"depend","longname":"Tracker.Dependency#depend","kind":"function","memberof":"Tracker.Dependency","scope":"instance","options":[],"locus":"Client"},"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"},"Dependency#hasDependents":{"summary":"True if this Dependency has one or more dependent Computations, which would be invalidated if this Dependency were to change.","name":"hasDependents","longname":"Tracker.Dependency#hasDependents","kind":"function","memberof":"Tracker.Dependency","scope":"instance","options":[],"params":[],"locus":"Client"},"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"},"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"}],"name":"autorun","longname":"Tracker.autorun","kind":"function","memberof":"Tracker","scope":"static","options":[],"locus":"Client"},"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"},"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"},"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"},"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#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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"}},"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"},"setDefault":{"memberof":"Session","kind":"function","name":"setDefault","summary":"Set a variable in the session if it is undefined. 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"},"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"},"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"}},"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":[]},"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' or 'client') to specify what architecture the package is\nused 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 on the server (or the client), you can pass in the second argument (e.g., 'server' or 'client') to specify what 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 on the server (or the client), you can pass in the second argument (e.g., 'server' or 'client') to specify what architecture the export is used with.

","name":"architecture"}],"name":"export","longname":"PackageAPI#export","kind":"function","options":[],"locus":"package.js"},"Subscription":{"summary":"The server's side of a subscription","kind":"class","name":"Subscription","longname":"Subscription","options":[],"params":[],"instancename":"this"},"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"},"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"}}; ->>>>>>> d7bae95deb048b347b137c2807055a32d6d39877 +DocsData = {"Accounts":{"kind":"namespace","name":"Accounts","summary":"The namespace for all accounts-related methods.","longname":"Accounts","ui":{"summary":"Accounts UI","kind":"namespace","memberof":"Accounts","name":"ui","longname":"Accounts.ui","scope":"static","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":["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":"

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"}},"emailTemplates":{"summary":"Options to customize emails sent from the Accounts system.","name":"emailTemplates","longname":"Accounts.emailTemplates","kind":"member","memberof":"Accounts","scope":"static","locus":"Anywhere"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"}},"EJSON":{"kind":"namespace","summary":"Namespace for EJSON functions","name":"EJSON","longname":"EJSON","scope":"global","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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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":{"summary":"The Meteor namespace","kind":"namespace","name":"Meteor","longname":"Meteor","users":{"summary":"A [Mongo.Collection](#collections) containing user documents.","name":"users","longname":"Meteor.users","kind":"member","memberof":"Meteor","scope":"static","locus":"Anywhere"},"isClient":{"summary":"Boolean variable. True if running in client environment.","scope":"static","name":"isClient","longname":"Meteor.isClient","kind":"member","memberof":"Meteor","locus":"Anywhere"},"isServer":{"summary":"Boolean variable. True if running in server environment.","scope":"static","name":"isServer","longname":"Meteor.isServer","kind":"member","memberof":"Meteor","locus":"Anywhere"},"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.","name":"settings","longname":"Meteor.settings","kind":"member","memberof":"Meteor","scope":"static","locus":"Anywhere"},"isCordova":{"summary":"Boolean variable. True if running in a Cordova mobile environment.","name":"isCordova","longname":"Meteor.isCordova","kind":"member","memberof":"Meteor","scope":"static","locus":"Anywhere"},"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.","name":"release","longname":"Meteor.release","kind":"member","memberof":"Meteor","scope":"static","locus":"Anywhere"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"disconnect":{"summary":"Disconnect the client from the server.","memberof":"Meteor","name":"disconnect","longname":"Meteor.disconnect","kind":"function","scope":"static","options":[],"params":[],"locus":"Client"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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":{"summary":"Namespace for MongoDB-related items","kind":"namespace","name":"Mongo","longname":"Mongo","scope":"global","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"},"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"},"Cursor#fetch":{"summary":"Return all matching documents as an Array.","memberof":"Mongo.Cursor","kind":"function","name":"fetch","scope":"instance","longname":"Mongo.Cursor#fetch","options":[],"params":[],"locus":"Anywhere"},"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"},"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"},"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"},"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"},"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"},"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"}],"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"},"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"}],"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"}},"Assets":{"summary":"The namespace for Assets functions, lives in the bundler.","kind":"namespace","name":"Assets","longname":"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"},"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":{"kind":"namespace","name":"App","scope":"global","summary":"The App configuration object in mobile-config.js","longname":"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"}]},"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":[]},"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":[]},"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":[]},"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":[]}},"Plugin":{"scope":"global","kind":"namespace","name":"Plugin","summary":"The namespace that is exposed inside build plugin files.","longname":"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":{"scope":"global","name":"Package","summary":"The Package object in package.js","kind":"namespace","longname":"Package","locus":"package.js","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"},"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"},"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"},"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":{"kind":"namespace","name":"Npm","scope":"global","summary":"The Npm object in package.js and package source files.","longname":"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"},"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"}},"Cordova":{"kind":"namespace","name":"Cordova","scope":"global","summary":"The Cordova object in package.js.","longname":"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"}},"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"},"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"},"TemplateInstance#view":{"name":"view","memberof":"Blaze.TemplateInstance","scope":"instance","summary":"The [View](#blaze_view) object for this invocation of the template.","longname":"Blaze.TemplateInstance#view","kind":"member","locus":"Client"},"TemplateInstance#firstNode":{"name":"firstNode","memberof":"Blaze.TemplateInstance","scope":"instance","summary":"The first top-level DOM node in this template instance.","longname":"Blaze.TemplateInstance#firstNode","kind":"member","locus":"Client"},"TemplateInstance#lastNode":{"name":"lastNode","memberof":"Blaze.TemplateInstance","scope":"instance","summary":"The last top-level DOM node in this template instance.","longname":"Blaze.TemplateInstance#lastNode","kind":"member","locus":"Client"},"currentView":{"summary":"The View corresponding to the current template helper, event handler, callback, or autorun. If there isn't one, `null`.","name":"currentView","longname":"Blaze.currentView","kind":"member","memberof":"Blaze","scope":"static","locus":"Client"},"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"},"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"},"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"},"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"},"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"},"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"}],"name":"$","longname":"Blaze.TemplateInstance#$","kind":"function","memberof":"Blaze.TemplateInstance","scope":"instance","options":[],"locus":"Client"},"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"}],"name":"findAll","longname":"Blaze.TemplateInstance#findAll","kind":"function","memberof":"Blaze.TemplateInstance","scope":"instance","options":[],"locus":"Client"},"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"}],"name":"find","longname":"Blaze.TemplateInstance#find","kind":"function","memberof":"Blaze.TemplateInstance","scope":"instance","options":[],"locus":"Client"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"}},"MethodInvocation#isSimulation":{"summary":"Access inside a method invocation. Boolean value, true if this invocation is a stub.","name":"isSimulation","memberof":"MethodInvocation","scope":"instance","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"},"Template":{"body":{"summary":"The [template object](#templates_api) representing your `` tag.","name":"body","longname":"Template.body","kind":"member","memberof":"Template","scope":"static","locus":"Client"},"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`.","scope":"static","longname":"Template.instance","options":[],"params":[],"locus":"Client"},"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"},"parentData":{"summary":"Accesses other data contexts that enclose the current data context.","kind":"function","params":[{"type":{"names":["Integer"]},"description":"

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

","name":"numLevels"}],"name":"parentData","longname":"Template.parentData","memberof":"Template","scope":"static","options":[],"locus":"Client"},"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"},"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"},"summary":"The class for defining templates","kind":"class","name":"Template","longname":"Template","scope":"global","options":[],"params":[],"instancename":"Template.myTemplate"},"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.","name":"active","longname":"Tracker.active","kind":"member","memberof":"Tracker","scope":"static","locus":"Client"},"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.","name":"currentComputation","longname":"Tracker.currentComputation","kind":"member","memberof":"Tracker","scope":"static","locus":"Client"},"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"},"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","longname":"Tracker.Computation#invalidated","kind":"member","locus":"Client"},"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","longname":"Tracker.Computation#firstRun","kind":"member","locus":"Client"},"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"},"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"},"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"},"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"},"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"}],"name":"depend","longname":"Tracker.Dependency#depend","kind":"function","memberof":"Tracker.Dependency","scope":"instance","options":[],"locus":"Client"},"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"},"Dependency#hasDependents":{"summary":"True if this Dependency has one or more dependent Computations, which would be invalidated if this Dependency were to change.","name":"hasDependents","longname":"Tracker.Dependency#hasDependents","kind":"function","memberof":"Tracker.Dependency","scope":"instance","options":[],"params":[],"locus":"Client"},"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"},"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"}],"name":"autorun","longname":"Tracker.autorun","kind":"function","memberof":"Tracker","scope":"static","options":[],"locus":"Client"},"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"},"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"},"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"},"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#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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"},"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"}},"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"},"setDefault":{"memberof":"Session","kind":"function","name":"setDefault","summary":"Set a variable in the session if it is undefined. 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"},"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"},"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"}},"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":[]},"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' or 'client') to specify what architecture the package is\nused 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 on the server (or the client), you can pass in the second argument (e.g., 'server' or 'client') to specify what 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 on the server (or the client), you can pass in the second argument (e.g., 'server' or 'client') to specify what architecture the export is used with.

","name":"architecture"}],"name":"export","longname":"PackageAPI#export","kind":"function","options":[],"locus":"package.js"},"Subscription":{"summary":"The server's side of a subscription","kind":"class","name":"Subscription","longname":"Subscription","options":[],"params":[],"instancename":"this"},"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"},"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