Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id E5039200B8A for ; Fri, 9 Sep 2016 15:28:35 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id E3BEE160AB6; Fri, 9 Sep 2016 13:28:35 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 40BBE160AC2 for ; Fri, 9 Sep 2016 15:28:35 +0200 (CEST) Received: (qmail 42267 invoked by uid 500); 9 Sep 2016 13:28:34 -0000 Mailing-List: contact commits-help@couchdb.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@couchdb.apache.org Delivered-To: mailing list commits@couchdb.apache.org Received: (qmail 42239 invoked by uid 99); 9 Sep 2016 13:28:34 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 09 Sep 2016 13:28:34 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 29331E0667; Fri, 9 Sep 2016 13:28:34 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: rnewson@apache.org To: commits@couchdb.apache.org Date: Fri, 09 Sep 2016 13:28:35 -0000 Message-Id: In-Reply-To: References: X-Mailer: ASF-Git Admin Mailer Subject: [2/4] couchdb commit: updated refs/heads/master to d6abc18 archived-at: Fri, 09 Sep 2016 13:28:36 -0000 seal exposed globals Project: http://git-wip-us.apache.org/repos/asf/couchdb/repo Commit: http://git-wip-us.apache.org/repos/asf/couchdb/commit/3841aedf Tree: http://git-wip-us.apache.org/repos/asf/couchdb/tree/3841aedf Diff: http://git-wip-us.apache.org/repos/asf/couchdb/diff/3841aedf Branch: refs/heads/master Commit: 3841aedfb410864b7e7fa4fccbca71afa104bd91 Parents: 4dbd858 Author: Randall Leeds Authored: Sat Apr 23 19:32:03 2016 -0700 Committer: Robert Newson Committed: Fri Sep 9 14:10:06 2016 +0100 ---------------------------------------------------------------------- share/server/loop.js | 10 ++++++++++ share/server/render.js | 43 ++++++++++++++++++++++++++----------------- 2 files changed, 36 insertions(+), 17 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/couchdb/blob/3841aedf/share/server/loop.js ---------------------------------------------------------------------- diff --git a/share/server/loop.js b/share/server/loop.js index 551004a..1ded19b 100644 --- a/share/server/loop.js +++ b/share/server/loop.js @@ -165,4 +165,14 @@ var Loop = function() { }; }; +// Seal all the globals to prevent modification. +seal(Couch, true); +seal(JSON, true); +seal(Mime, true); +seal(Render, true); +seal(Filter, true); +seal(Views, true); +seal(isArray, true); +seal(log, true); + Loop(); http://git-wip-us.apache.org/repos/asf/couchdb/blob/3841aedf/share/server/render.js ---------------------------------------------------------------------- diff --git a/share/server/render.js b/share/server/render.js index 1fe4da2..946701e 100644 --- a/share/server/render.js +++ b/share/server/render.js @@ -57,26 +57,29 @@ var Mime = (function() { registerType("url_encoded_form", "application/x-www-form-urlencoded"); // http://www.ietf.org/rfc/rfc4627.txt registerType("json", "application/json", "text/x-json"); - - + + + var providesUsed = false; var mimeFuns = []; + var responseContentType = null; + function provides(type, fun) { - Mime.providesUsed = true; + providesUsed = true; mimeFuns.push([type, fun]); }; function resetProvides() { // set globals - Mime.providesUsed = false; + providesUsed = false; mimeFuns = []; - Mime.responseContentType = null; + responseContentType = null; }; function runProvides(req, ddoc) { var supportedMimes = [], bestFun, bestKey = null, accept = req.headers["Accept"]; if (req.query && req.query.format) { bestKey = req.query.format; - Mime.responseContentType = mimesByKey[bestKey][0]; + responseContentType = mimesByKey[bestKey][0]; } else if (accept) { // log("using accept header: "+accept); mimeFuns.reverse().forEach(function(mimeFun) { @@ -85,12 +88,12 @@ var Mime = (function() { supportedMimes = supportedMimes.concat(mimesByKey[mimeKey]); } }); - Mime.responseContentType = Mimeparse.bestMatch(supportedMimes, accept); - bestKey = keysByMime[Mime.responseContentType]; + responseContentType = Mimeparse.bestMatch(supportedMimes, accept); + bestKey = keysByMime[responseContentType]; } else { // just do the first one bestKey = mimeFuns[0][0]; - Mime.responseContentType = mimesByKey[bestKey][0]; + responseContentType = mimesByKey[bestKey][0]; } if (bestKey) { @@ -113,12 +116,18 @@ var Mime = (function() { } }; - + return { registerType : registerType, provides : provides, resetProvides : resetProvides, - runProvides : runProvides + runProvides : runProvides, + providesUsed : function () { + return providesUsed; + }, + responseContentType : function () { + return responseContentType; + } }; })(); @@ -145,7 +154,7 @@ var Render = (function() { }; function sendStart() { - startResp = applyContentType((startResp || {}), Mime.responseContentType); + startResp = applyContentType((startResp || {}), Mime.responseContentType()); respond(["start", chunks, startResp]); chunks = []; startResp = {}; @@ -155,7 +164,7 @@ var Render = (function() { function applyContentType(resp, responseContentType) { resp["headers"] = resp["headers"] || {}; if (responseContentType) { - resp["headers"]["Content-Type"] = resp["headers"]["Content-Type"] || responseContentType; + resp["headers"]["Content-Type"] = resp["headers"]["Content-Type"] || responseContentType; } return resp; } @@ -242,12 +251,12 @@ var Render = (function() { resetList(); } - if (Mime.providesUsed) { + if (Mime.providesUsed()) { var provided_resp = Mime.runProvides(args[1], ddoc) || {}; provided_resp = maybeWrapResponse(provided_resp); resp.body = (resp.body || "") + chunks.join(""); resp.body += provided_resp.body || ""; - resp = applyContentType(resp, Mime.responseContentType); + resp = applyContentType(resp, Mime.responseContentType()); resetList(); } @@ -301,9 +310,9 @@ var Render = (function() { var req = args[1]; var tail = listFun.apply(ddoc, args); - if (Mime.providesUsed) { + if (Mime.providesUsed()) { tail = Mime.runProvides(req, ddoc); - } + } if (!gotRow) getRow(); if (typeof tail != "undefined") { chunks.push(tail);