function handleRequest(request, response) { response.setHeader("Content-Type", "application/package", false); response.write(octetStreamData.getData()); } // The package content // getData formats it as described at http://www.w3.org/TR/web-packaging/#streamable-package-format var octetStreamData = { content: [ { headers: ["Content-Location: /index.html", "Content-Type: text/html"], data: "\r\n \r\n \r\n\r\n Web Packaged App Index\r\n\r\n", type: "text/html", }, { headers: [ "Content-Location: /scripts/app.js", "Content-Type: text/javascript", ], data: "module Math from '/scripts/helpers/math.js';\r\n...\r\n", type: "text/javascript", }, { headers: [ "Content-Location: /scripts/helpers/math.js", "Content-Type: text/javascript", ], data: "export function sum(nums) { ... }\r\n...\r\n", type: "text/javascript", }, ], token: "gc0pJq0M:08jU534c0p", getData() { var str = ""; for (var i in this.content) { str += "--" + this.token + "\r\n"; for (var j in this.content[i].headers) { str += this.content[i].headers[j] + "\r\n"; } str += "\r\n"; str += this.content[i].data + "\r\n"; } str += "--" + this.token + "--"; return str; }, };