{"version":3,"sources":["meteor://💻app/packages/boilerplate-generator/generator.js","meteor://💻app/packages/boilerplate-generator/template-web.browser.js","meteor://💻app/packages/boilerplate-generator/template-web.cordova.js","meteor://💻app/packages/boilerplate-generator/template.js"],"names":["module","export","Boilerplate","readFile","link","v","createStream","create","WebBrowserTemplate","default","WebCordovaTemplate","readUtf8FileSync","filename","Meteor","wrapAsync","identity","value","appendToStream","chunk","stream","append","Buffer","from","isBuffer","read","shouldWarnAboutToHTMLDeprecation","isProduction","constructor","arch","manifest","options","headTemplate","closeTemplate","getTemplate","baseData","_generateBoilerplateFromManifest","toHTML","extraData","console","error","trace","toHTMLAsync","await","Promise","resolve","reject","toHTMLStream","chunks","on","push","concat","toString","Error","data","start","body","dynamicBody","end","response","urlMapper","pathMapper","baseDataExtension","inline","boilerplateBaseData","css","js","head","meteorManifest","JSON","stringify","forEach","item","urlPath","url","itemObj","scriptContent","path","sri","type","where","startsWith","prefix","split","join","template","mode","htmlAttributes","bundledJsCssUrlRewriteHook","sriMode","dynamicHead","headSections","cssBundle","map","file","href","Object","keys","key","attrName","attrValue","length","meteorRuntimeConfig","rootUrlPathPrefix","inlineScriptsAllowed","additionalStaticJs","conf","src","contents","pathname","_","text","evaluate","interpolate","escape"],"mappings":"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","file":"/packages/boilerplate-generator.js","sourcesContent":["import { readFile } from 'fs';\nimport { create as createStream } from \"combined-stream2\";\n\nimport WebBrowserTemplate from './template-web.browser';\nimport WebCordovaTemplate from './template-web.cordova';\n\n// Copied from webapp_server\nconst readUtf8FileSync = filename => Meteor.wrapAsync(readFile)(filename, 'utf8');\n\nconst identity = value => value;\n\nfunction appendToStream(chunk, stream) {\n if (typeof chunk === \"string\") {\n stream.append(Buffer.from(chunk, \"utf8\"));\n } else if (Buffer.isBuffer(chunk) ||\n typeof chunk.read === \"function\") {\n stream.append(chunk);\n }\n}\n\nlet shouldWarnAboutToHTMLDeprecation = ! Meteor.isProduction;\n\nexport class Boilerplate {\n constructor(arch, manifest, options = {}) {\n const { headTemplate, closeTemplate } = getTemplate(arch);\n this.headTemplate = headTemplate;\n this.closeTemplate = closeTemplate;\n this.baseData = null;\n\n this._generateBoilerplateFromManifest(\n manifest,\n options\n );\n }\n\n toHTML(extraData) {\n if (shouldWarnAboutToHTMLDeprecation) {\n shouldWarnAboutToHTMLDeprecation = false;\n console.error(\n \"The Boilerplate#toHTML method has been deprecated. \" +\n \"Please use Boilerplate#toHTMLStream instead.\"\n );\n console.trace();\n }\n\n // Calling .await() requires a Fiber.\n return this.toHTMLAsync(extraData).await();\n }\n\n // Returns a Promise that resolves to a string of HTML.\n toHTMLAsync(extraData) {\n return new Promise((resolve, reject) => {\n const stream = this.toHTMLStream(extraData);\n const chunks = [];\n stream.on(\"data\", chunk => chunks.push(chunk));\n stream.on(\"end\", () => {\n resolve(Buffer.concat(chunks).toString(\"utf8\"));\n });\n stream.on(\"error\", reject);\n });\n }\n\n // The 'extraData' argument can be used to extend 'self.baseData'. Its\n // purpose is to allow you to specify data that you might not know at\n // the time that you construct the Boilerplate object. (e.g. it is used\n // by 'webapp' to specify data that is only known at request-time).\n // this returns a stream\n toHTMLStream(extraData) {\n if (!this.baseData || !this.headTemplate || !this.closeTemplate) {\n throw new Error('Boilerplate did not instantiate correctly.');\n }\n\n const data = {...this.baseData, ...extraData};\n const start = \"\\n\" + this.headTemplate(data);\n\n const { body, dynamicBody } = data;\n\n const end = this.closeTemplate(data);\n const response = createStream();\n\n appendToStream(start, response);\n\n if (body) {\n appendToStream(body, response);\n }\n\n if (dynamicBody) {\n appendToStream(dynamicBody, response);\n }\n\n appendToStream(end, response);\n\n return response;\n }\n\n // XXX Exported to allow client-side only changes to rebuild the boilerplate\n // without requiring a full server restart.\n // Produces an HTML string with given manifest and boilerplateSource.\n // Optionally takes urlMapper in case urls from manifest need to be prefixed\n // or rewritten.\n // Optionally takes pathMapper for resolving relative file system paths.\n // Optionally allows to override fields of the data context.\n _generateBoilerplateFromManifest(manifest, {\n urlMapper = identity,\n pathMapper = identity,\n baseDataExtension,\n inline,\n } = {}) {\n\n const boilerplateBaseData = {\n css: [],\n js: [],\n head: '',\n body: '',\n meteorManifest: JSON.stringify(manifest),\n ...baseDataExtension,\n };\n\n manifest.forEach(item => {\n const urlPath = urlMapper(item.url);\n const itemObj = { url: urlPath };\n\n if (inline) {\n itemObj.scriptContent = readUtf8FileSync(\n pathMapper(item.path));\n itemObj.inline = true;\n } else if (item.sri) {\n itemObj.sri = item.sri;\n }\n\n if (item.type === 'css' && item.where === 'client') {\n boilerplateBaseData.css.push(itemObj);\n }\n\n if (item.type === 'js' && item.where === 'client' &&\n // Dynamic JS modules should not be loaded eagerly in the\n // initial HTML of the app.\n !item.path.startsWith('dynamic/')) {\n boilerplateBaseData.js.push(itemObj);\n }\n\n if (item.type === 'head') {\n boilerplateBaseData.head =\n readUtf8FileSync(pathMapper(item.path));\n }\n\n if (item.type === 'body') {\n boilerplateBaseData.body =\n readUtf8FileSync(pathMapper(item.path));\n }\n });\n\n this.baseData = boilerplateBaseData;\n }\n};\n\n// Returns a template function that, when called, produces the boilerplate\n// html as a string.\nfunction getTemplate(arch) {\n const prefix = arch.split(\".\", 2).join(\".\");\n\n if (prefix === \"web.browser\") {\n return WebBrowserTemplate;\n }\n\n if (prefix === \"web.cordova\") {\n return WebCordovaTemplate;\n }\n\n throw new Error(\"Unsupported arch: \" + arch);\n}\n","import template from './template';\n\nconst sri = (sri, mode) =>\n (sri && mode) ? ` integrity=\"sha512-${sri}\" crossorigin=\"${mode}\"` : '';\n\nexport const headTemplate = ({\n css,\n htmlAttributes,\n bundledJsCssUrlRewriteHook,\n sriMode,\n head,\n dynamicHead,\n}) => {\n var headSections = head.split(/]*>/, 2);\n var cssBundle = [...(css || []).map(file =>\n template(' \"<%= sri %>>')({\n href: bundledJsCssUrlRewriteHook(file.url),\n sri: sri(file.sri, sriMode),\n })\n )].join('\\n');\n\n return [\n ' template(' <%= attrName %>=\"<%- attrValue %>\"')({\n attrName: key,\n attrValue: htmlAttributes[key],\n })\n ).join('') + '>',\n\n '',\n\n (headSections.length === 1)\n ? [cssBundle, headSections[0]].join('\\n')\n : [headSections[0], cssBundle, headSections[1]].join('\\n'),\n\n dynamicHead,\n '',\n '',\n ].join('\\n');\n};\n\n// Template function for rendering the boilerplate html for browsers\nexport const closeTemplate = ({\n meteorRuntimeConfig,\n rootUrlPathPrefix,\n inlineScriptsAllowed,\n js,\n additionalStaticJs,\n bundledJsCssUrlRewriteHook,\n sriMode,\n}) => [\n '',\n inlineScriptsAllowed\n ? template(' ')({\n conf: meteorRuntimeConfig,\n })\n : template(' ')({\n src: rootUrlPathPrefix,\n }),\n '',\n\n ...(js || []).map(file =>\n template(' ')({\n src: bundledJsCssUrlRewriteHook(file.url),\n sri: sri(file.sri, sriMode),\n })\n ),\n\n ...(additionalStaticJs || []).map(({ contents, pathname }) => (\n inlineScriptsAllowed\n ? template(' ')({\n contents,\n })\n : template(' ')({\n src: rootUrlPathPrefix + pathname,\n })\n )),\n\n '',\n '',\n '',\n ''\n].join('\\n');\n","import template from './template';\n\n// Template function for rendering the boilerplate html for cordova\nexport const headTemplate = ({\n meteorRuntimeConfig,\n rootUrlPathPrefix,\n inlineScriptsAllowed,\n css,\n js,\n additionalStaticJs,\n htmlAttributes,\n bundledJsCssUrlRewriteHook,\n head,\n dynamicHead,\n}) => {\n var headSections = head.split(/]*>/, 2);\n var cssBundle = [\n // We are explicitly not using bundledJsCssUrlRewriteHook: in cordova we serve assets up directly from disk, so rewriting the URL does not make sense\n ...(css || []).map(file =>\n template(' \">')({\n href: file.url,\n })\n )].join('\\n');\n\n return [\n '',\n '',\n ' ',\n ' ',\n ' ',\n ' ',\n ' ',\n\n (headSections.length === 1)\n ? [cssBundle, headSections[0]].join('\\n')\n : [headSections[0], cssBundle, headSections[1]].join('\\n'),\n\n ' ',\n '',\n ' ',\n\n ...(js || []).map(file =>\n template(' ')({\n src: file.url,\n })\n ),\n\n ...(additionalStaticJs || []).map(({ contents, pathname }) => (\n inlineScriptsAllowed\n ? template(' ')({\n contents,\n })\n : template(' ')({\n src: rootUrlPathPrefix + pathname\n })\n )),\n '',\n '',\n '',\n '',\n ].join('\\n');\n};\n\nexport function closeTemplate() {\n return \"\\n\";\n}\n","import { _ } from 'meteor/underscore';\n\n// As identified in issue #9149, when an application overrides the default\n// _.template settings using _.templateSettings, those new settings are\n// used anywhere _.template is used, including within the\n// boilerplate-generator. To handle this, _.template settings that have\n// been verified to work are overridden here on each _.template call.\nexport default function template(text) {\n return _.template(text, null, {\n evaluate : /<%([\\s\\S]+?)%>/g,\n interpolate : /<%=([\\s\\S]+?)%>/g,\n escape : /<%-([\\s\\S]+?)%>/g,\n });\n};\n"]}