From 99b79dc00f4400fed6af6b786c593b88efded78a Mon Sep 17 00:00:00 2001 From: Ben Newman Date: Tue, 10 Jul 2018 17:36:30 -0400 Subject: [PATCH] Include hash of minimum modern versions in autoupdate versions. --- packages/modern-browsers/modern.js | 6 ++++++ packages/modern-browsers/package.js | 2 +- packages/webapp/webapp_server.js | 15 +++++++++++++-- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/packages/modern-browsers/modern.js b/packages/modern-browsers/modern.js index a051dbe096..ed7e60b157 100644 --- a/packages/modern-browsers/modern.js +++ b/packages/modern-browsers/modern.js @@ -95,6 +95,12 @@ function getCaller(calleeName) { Object.assign(exports, { isModern, setMinimumBrowserVersions, + calculateHashOfMinimumVersions() { + const { createHash } = require("crypto"); + return createHash("sha1").update( + JSON.stringify(minimumVersions) + ).digest("hex"); + } }); // For making defensive copies of [major, minor, ...] version arrays, so diff --git a/packages/modern-browsers/package.js b/packages/modern-browsers/package.js index 4ea7eed7fc..5b6ca065a9 100644 --- a/packages/modern-browsers/package.js +++ b/packages/modern-browsers/package.js @@ -1,6 +1,6 @@ Package.describe({ name: "modern-browsers", - version: "0.1.1", + version: "0.1.2", summary: "API for defining the boundary between modern and legacy " + "JavaScript clients", documentation: "README.md" diff --git a/packages/webapp/webapp_server.js b/packages/webapp/webapp_server.js index 63c99ed84d..16e934b311 100644 --- a/packages/webapp/webapp_server.js +++ b/packages/webapp/webapp_server.js @@ -14,7 +14,10 @@ import query from "qs-middleware"; import parseRequest from "parseurl"; import basicAuth from "basic-auth-connect"; import { lookup as lookupUserAgent } from "useragent"; -import { isModern } from "meteor/modern-browsers"; +import { + isModern, + calculateHashOfMinimumVersions, +} from "meteor/modern-browsers"; import send from "send"; import { removeExistingSocketFile, @@ -641,7 +644,15 @@ function runWebAppServer() { const { AUTOUPDATE_VERSION } = process.env; const { PUBLIC_SETTINGS } = __meteor_runtime_config__; - const configOverrides = { PUBLIC_SETTINGS }; + const configOverrides = { + PUBLIC_SETTINGS, + // Since the minimum modern versions defined in the modern-versions + // package affect which bundle a given client receives, any changes + // in those versions should trigger a corresponding change in the + // versions calculated below. + minimumModernVersionsHash: calculateHashOfMinimumVersions(), + }; + const program = { format: "web-program-pre1", manifest: manifest,