@mercuryworkshop/proxy-bootstrap 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,6 @@
1
1
  import * as __WEBPACK_EXTERNAL_MODULE__mercuryworkshop_wisp_js_server_778dd5d9__ from "@mercuryworkshop/wisp-js/server";
2
2
  import * as __WEBPACK_EXTERNAL_MODULE_fs_promises_400951f8__ from "fs/promises";
3
+ import * as __WEBPACK_EXTERNAL_MODULE_node_path_c5b9b54f__ from "node:path";
3
4
  import * as __WEBPACK_EXTERNAL_MODULE_tar__ from "tar";
4
5
  var __webpack_modules__ = ({
5
6
  "./packages/scramjet/packages/bootstrap/src/common.ts":
@@ -59,11 +60,14 @@ __webpack_require__.d(__webpack_exports__, {
59
60
  /* ESM import */var _mercuryworkshop_wisp_js_server__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @mercuryworkshop/wisp-js/server */ "@mercuryworkshop/wisp-js/server");
60
61
  /* ESM import */var tar__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! tar */ "tar");
61
62
  /* ESM import */var fs_promises__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! fs/promises */ "fs/promises");
62
- /* ESM import */var _common__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./common */ "./packages/scramjet/packages/bootstrap/src/common.ts");
63
+ /* ESM import */var node_path__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! node:path */ "node:path");
64
+ /* ESM import */var _common__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./common */ "./packages/scramjet/packages/bootstrap/src/common.ts");
63
65
 
64
66
 
65
67
 
66
68
 
69
+
70
+ const bootstrapRoot = import.meta.dirname;
67
71
  let config;
68
72
  async function sendFile(res, filePath, contentType) {
69
73
  const data = await fs_promises__WEBPACK_IMPORTED_MODULE_2__["default"].readFile(filePath);
@@ -72,7 +76,7 @@ async function sendFile(res, filePath, contentType) {
72
76
  });
73
77
  res.end(data);
74
78
  }
75
- const clientdata = await fs_promises__WEBPACK_IMPORTED_MODULE_2__["default"].readFile(/* unsupported import.meta.dirname */ undefined + "/bootstrap-client.js");
79
+ const clientdata = await fs_promises__WEBPACK_IMPORTED_MODULE_2__["default"].readFile((0,node_path__WEBPACK_IMPORTED_MODULE_3__.join)(bootstrapRoot, "bootstrap-client.js"));
76
80
  function routeRequest(req, res) {
77
81
  if (!req.url) return false;
78
82
  if (req.url === config.swPath) {
@@ -167,13 +171,13 @@ async function getDownloadedControllerVersion() {
167
171
  async function updateScramjet(controllerMeta) {
168
172
  const scramjetVersion = controllerMeta.dependencies["@mercuryworkshop/scramjet"];
169
173
  console.log(`Fetching scramjet version: ${scramjetVersion}`);
170
- const scramjetRes = await fetch(`${_common__WEBPACK_IMPORTED_MODULE_3__.REGISTRY_URL}${_common__WEBPACK_IMPORTED_MODULE_3__.SCRAMJET_PACKAGE_NAME}/${scramjetVersion}`);
174
+ const scramjetRes = await fetch(`${_common__WEBPACK_IMPORTED_MODULE_4__.REGISTRY_URL}${_common__WEBPACK_IMPORTED_MODULE_4__.SCRAMJET_PACKAGE_NAME}/${scramjetVersion}`);
171
175
  const scramjetMeta = await scramjetRes.json();
172
176
  await unpack(scramjetMeta.dist.tarball, "scramjet");
173
177
  await unpack(controllerMeta.dist.tarball, "controller");
174
178
  }
175
179
  async function findLatestVersionOfPackage(packageName, majorVersion) {
176
- const packageRes = await fetch(`${_common__WEBPACK_IMPORTED_MODULE_3__.REGISTRY_URL}${packageName}`);
180
+ const packageRes = await fetch(`${_common__WEBPACK_IMPORTED_MODULE_4__.REGISTRY_URL}${packageName}`);
177
181
  const packageMeta = await packageRes.json();
178
182
  const versions = Object.keys(packageMeta.versions).filter((v)=>v.startsWith(`${majorVersion}.`));
179
183
  const sortedVersions = versions.sort((a, b)=>{
@@ -190,32 +194,32 @@ async function findLatestVersionOfPackage(packageName, majorVersion) {
190
194
  throw new Error(`No versions found for package ${packageName} with major version ${majorVersion}`);
191
195
  }
192
196
  const latestVersion = sortedVersions[0];
193
- const latestRes = await fetch(`${_common__WEBPACK_IMPORTED_MODULE_3__.REGISTRY_URL}${packageName}/${latestVersion}`);
197
+ const latestRes = await fetch(`${_common__WEBPACK_IMPORTED_MODULE_4__.REGISTRY_URL}${packageName}/${latestVersion}`);
194
198
  const latestMeta = await latestRes.json();
195
199
  return latestMeta;
196
200
  }
197
201
  async function bootstrap(cfg = {}) {
198
202
  config = {
199
- ..._common__WEBPACK_IMPORTED_MODULE_3__.defaultConfig,
203
+ ..._common__WEBPACK_IMPORTED_MODULE_4__.defaultConfig,
200
204
  ...cfg,
201
- downloadedFilesDir: /* unsupported import.meta.dirname */ undefined + "/.downloads/"
205
+ downloadedFilesDir: (0,node_path__WEBPACK_IMPORTED_MODULE_3__.join)(bootstrapRoot, ".downloads") + "/"
202
206
  };
203
207
  const downloadedControllerVersion = await getDownloadedControllerVersion();
204
208
  if (downloadedControllerVersion) {
205
209
  console.log(`Found downloaded Scramjet Controller version: ${downloadedControllerVersion}`);
206
210
  }
207
211
  if (config.transport === "epoxy") {
208
- const epoxyMeta = await findLatestVersionOfPackage(_common__WEBPACK_IMPORTED_MODULE_3__.EPOXY_TRANSPORT_PACKAGE_NAME, _common__WEBPACK_IMPORTED_MODULE_3__.EPOXY_TRANSPORT_PINNED_MAJOR_VERSION);
212
+ const epoxyMeta = await findLatestVersionOfPackage(_common__WEBPACK_IMPORTED_MODULE_4__.EPOXY_TRANSPORT_PACKAGE_NAME, _common__WEBPACK_IMPORTED_MODULE_4__.EPOXY_TRANSPORT_PINNED_MAJOR_VERSION);
209
213
  await unpack(epoxyMeta.dist.tarball, "epoxy-transport");
210
214
  console.log(`Using Epoxy Transport version: ${epoxyMeta.version}`);
211
215
  } else if (config.transport === "libcurl") {
212
- const libcurlMeta = await findLatestVersionOfPackage(_common__WEBPACK_IMPORTED_MODULE_3__.LIBCURL_TRANSPORT_PACKAGE_NAME, _common__WEBPACK_IMPORTED_MODULE_3__.LIBCURL_TRANSPORT_PINNED_MAJOR_VERSION);
216
+ const libcurlMeta = await findLatestVersionOfPackage(_common__WEBPACK_IMPORTED_MODULE_4__.LIBCURL_TRANSPORT_PACKAGE_NAME, _common__WEBPACK_IMPORTED_MODULE_4__.LIBCURL_TRANSPORT_PINNED_MAJOR_VERSION);
213
217
  await unpack(libcurlMeta.dist.tarball, "libcurl-transport");
214
218
  console.log(`Using libcurl Transport version: ${libcurlMeta.version}`);
215
219
  } else {
216
220
  throw new Error(`Unknown transport option: ${config.transport}`);
217
221
  }
218
- const controllerMeta = await findLatestVersionOfPackage(_common__WEBPACK_IMPORTED_MODULE_3__.SCRAMJET_CONTROLLER_PACKAGE_NAME, _common__WEBPACK_IMPORTED_MODULE_3__.SCRAMJET_CONTROLLER_PINNED_MAJOR_VERSION);
222
+ const controllerMeta = await findLatestVersionOfPackage(_common__WEBPACK_IMPORTED_MODULE_4__.SCRAMJET_CONTROLLER_PACKAGE_NAME, _common__WEBPACK_IMPORTED_MODULE_4__.SCRAMJET_CONTROLLER_PINNED_MAJOR_VERSION);
219
223
  if (downloadedControllerVersion === controllerMeta.version) {
220
224
  console.log(`Scramjet Controller is up to date (version: ${downloadedControllerVersion}), skipping download.`);
221
225
  } else {
@@ -251,6 +255,16 @@ module.exports = __WEBPACK_EXTERNAL_MODULE__mercuryworkshop_wisp_js_server_778dd
251
255
  module.exports = __WEBPACK_EXTERNAL_MODULE_fs_promises_400951f8__;
252
256
 
253
257
 
258
+ }),
259
+ "node:path":
260
+ /*!****************************!*\
261
+ !*** external "node:path" ***!
262
+ \****************************/
263
+ (function (module) {
264
+
265
+ module.exports = __WEBPACK_EXTERNAL_MODULE_node_path_c5b9b54f__;
266
+
267
+
254
268
  }),
255
269
  "tar":
256
270
  /*!**********************!*\
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap-server.js","sources":["webpack://browser.js/./packages/scramjet/packages/bootstrap/src/common.ts","webpack://browser.js/./packages/scramjet/packages/bootstrap/src/server.ts","webpack://browser.js/webpack/runtime/async_module","webpack://browser.js/webpack/runtime/define_property_getters","webpack://browser.js/webpack/runtime/has_own_property","webpack://browser.js/webpack/runtime/make_namespace_object"],"sourcesContent":["export const REGISTRY_URL = \"https://registry.npmjs.org/\";\nexport const SCRAMJET_PACKAGE_NAME = \"@mercuryworkshop/scramjet\";\n\nexport const SCRAMJET_CONTROLLER_PACKAGE_NAME =\n\t\"@mercuryworkshop/scramjet-controller\";\nexport const SCRAMJET_CONTROLLER_PINNED_MAJOR_VERSION = \"0\";\n\nexport const EPOXY_TRANSPORT_PACKAGE_NAME = \"@mercuryworkshop/epoxy-transport\";\nexport const EPOXY_TRANSPORT_PINNED_MAJOR_VERSION = \"3\";\n\nexport const LIBCURL_TRANSPORT_PACKAGE_NAME =\n\t\"@mercuryworkshop/libcurl-transport\";\nexport const LIBCURL_TRANSPORT_PINNED_MAJOR_VERSION = \"2\";\n\nexport type TransportOptions = \"epoxy\" | \"libcurl\" | \"bare\";\n\nexport type BootstrapOptions = {\n\ttransport: TransportOptions;\n\tswPath: string;\n\n\twispPath: string;\n\n\tscramjetBundlePath: string;\n\tscramjetWasmPath: string;\n\n\tepoxyClientPath: string;\n\tlibcurlClientPath: string;\n\tbareClientPath: string;\n\tscramjetControllerApiPath: string;\n\tscramjetControllerInjectPath: string;\n\tscramjetControllerSwPath: string;\n\n\tbootstrapApiPath: string;\n\tbootstrapInitPath: string;\n\n\tscramjetVersionPin?: string;\n\tscramjetControllerVersionPin?: string;\n\tepoxyTransportVersionPin?: string;\n\tlibcurlTransportVersionPin?: string;\n\tbareTransportVersionPin?: string;\n};\n\nexport const defaultConfig: Partial<BootstrapOptions> = {\n\ttransport: \"libcurl\",\n\tswPath: \"/sw.js\",\n\twispPath: \"/wisp/\",\n\n\tepoxyClientPath: \"/clients/epoxy-client.js\",\n\tlibcurlClientPath: \"/clients/libcurl-client.js\",\n\tbareClientPath: \"/clients/bare-client.js\",\n\tbootstrapInitPath: \"/bootstrap-init.js\",\n\n\tscramjetControllerApiPath: \"/controller/controller.api.js\",\n\tscramjetControllerInjectPath: \"/controller/controller.inject.js\",\n\tscramjetControllerSwPath: \"/controller/controller.sw.js\",\n\tscramjetBundlePath: \"/scram/scramjet.js\",\n\tscramjetWasmPath: \"/scram/scramjet.wasm\",\n};\n","import { server as wisp } from \"@mercuryworkshop/wisp-js/server\";\nimport http from \"http\";\nimport { extract } from \"tar\";\nimport { Readable } from \"stream\";\nimport fs from \"fs/promises\";\nimport {\n\tdefaultConfig,\n\tEPOXY_TRANSPORT_PACKAGE_NAME,\n\tEPOXY_TRANSPORT_PINNED_MAJOR_VERSION,\n\tLIBCURL_TRANSPORT_PACKAGE_NAME,\n\tLIBCURL_TRANSPORT_PINNED_MAJOR_VERSION,\n\tREGISTRY_URL,\n\tSCRAMJET_CONTROLLER_PACKAGE_NAME,\n\tSCRAMJET_CONTROLLER_PINNED_MAJOR_VERSION,\n\tSCRAMJET_PACKAGE_NAME,\n\tBootstrapOptions,\n} from \"./common\";\n\ntype ServerBootstrapOptions = BootstrapOptions & {\n\tdownloadedFilesDir: string;\n};\n\nlet config: ServerBootstrapOptions;\n\nasync function sendFile(\n\tres: http.ServerResponse,\n\tfilePath: string,\n\tcontentType: string\n) {\n\tconst data = await fs.readFile(filePath);\n\tres.writeHead(200, { \"Content-Type\": contentType });\n\tres.end(data);\n}\nconst clientdata = await fs.readFile(\n\timport.meta.dirname + \"/bootstrap-client.js\"\n);\nfunction routeRequest(\n\treq: http.IncomingMessage,\n\tres: http.ServerResponse\n): boolean {\n\tif (!req.url) return false;\n\n\tif (req.url === config.swPath) {\n\t\tres.writeHead(200, { \"Content-Type\": \"application/javascript\" });\n\t\tres.end(`importScripts(\"${config.scramjetControllerSwPath}\");\naddEventListener(\"fetch\", (e) => {\n\tif ($scramjetController.shouldRoute(e)) {\n\t\te.respondWith($scramjetController.route(e));\n\t}\n});\n`);\n\n\t\treturn true;\n\t} else if (req.url === config.bootstrapInitPath) {\n\t\tres.writeHead(200, { \"Content-Type\": \"application/javascript\" });\n\t\tres.end(`async function initBootstrap() {\n\tconst { init } = await import(\"data:text/javascript;base64,${Buffer.from(clientdata).toString(\"base64\")}\");\n\treturn init(${JSON.stringify(config)});\n}`);\n\n\t\treturn true;\n\t}\n\n\tconst pathsToFiles = {\n\t\t[config.scramjetControllerApiPath]:\n\t\t\tconfig.downloadedFilesDir + \"controller/package/dist/controller.api.js\",\n\t\t[config.scramjetControllerInjectPath]:\n\t\t\tconfig.downloadedFilesDir +\n\t\t\t\"controller/package/dist/controller.inject.js\",\n\t\t[config.scramjetControllerSwPath]:\n\t\t\tconfig.downloadedFilesDir + \"controller/package/dist/controller.sw.js\",\n\t\t[config.scramjetBundlePath]:\n\t\t\tconfig.downloadedFilesDir + \"scramjet/package/dist/scramjet.js\",\n\t\t[config.scramjetWasmPath]:\n\t\t\tconfig.downloadedFilesDir + \"scramjet/package/dist/scramjet.wasm\",\n\n\t\t[config.libcurlClientPath]:\n\t\t\tconfig.downloadedFilesDir + \"libcurl-transport/package/dist/index.js\",\n\t};\n\tif (req.url in pathsToFiles) {\n\t\tconst filePath = pathsToFiles[req.url as keyof typeof pathsToFiles];\n\t\tconst contentType = req.url.endsWith(\".wasm\")\n\t\t\t? \"application/wasm\"\n\t\t\t: \"application/javascript\";\n\t\tsendFile(res, filePath, contentType);\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\nfunction routeUpgrade(\n\treq: http.IncomingMessage,\n\tsocket: any,\n\thead: Buffer\n): boolean {\n\tif (!req.url) return false;\n\tif (!req.url.startsWith(\"/wisp/\")) return false;\n\n\twisp.routeRequest(req, socket, head);\n\treturn true;\n}\n\nexport async function unpack(tarball: string, name: string) {\n\tif (!name) throw new Error(\"no package name!\");\n\tconst response = await fetch(tarball);\n\tif (!response.ok) {\n\t\tthrow new Error(`Failed to download tarball: ${response.statusText}`);\n\t}\n\n\tconst arrayBuffer = await response.arrayBuffer();\n\tconst buffer = Buffer.from(arrayBuffer);\n\n\tawait fs.mkdir(config.downloadedFilesDir, { recursive: true });\n\tconst file = `${config.downloadedFilesDir}${name}.tgz`;\n\tawait fs.writeFile(file, buffer);\n\n\tconst packagedir = `${config.downloadedFilesDir}/${name}`;\n\n\tif (await fs.stat(packagedir).catch(() => false)) {\n\t\tawait fs.rm(packagedir, { recursive: true, force: true });\n\t}\n\tawait fs.mkdir(packagedir, { recursive: true });\n\n\ttry {\n\t\tawait extract({\n\t\t\tf: file,\n\t\t\tcwd: packagedir,\n\t\t});\n\t\tawait fs.unlink(file);\n\t} catch (err) {\n\t\tconsole.error(\"Error extracting tarball:\", err);\n\t\tawait fs.unlink(file);\n\t\tthrow err;\n\t}\n}\n\nasync function getDownloadedControllerVersion(): Promise<string | null> {\n\tconst packagedir = `${config.downloadedFilesDir}controller`;\n\tconsole.log(packagedir);\n\ttry {\n\t\tconst pkgJson = JSON.parse(\n\t\t\t(await fs.readFile(\n\t\t\t\t`${packagedir}/package/package.json`,\n\t\t\t\t\"utf-8\"\n\t\t\t)) as unknown as string\n\t\t);\n\t\treturn pkgJson.version;\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nasync function updateScramjet(controllerMeta: any) {\n\tconst scramjetVersion =\n\t\tcontrollerMeta.dependencies[\"@mercuryworkshop/scramjet\"];\n\n\tconsole.log(`Fetching scramjet version: ${scramjetVersion}`);\n\tconst scramjetRes = await fetch(\n\t\t`${REGISTRY_URL}${SCRAMJET_PACKAGE_NAME}/${scramjetVersion}`\n\t);\n\tconst scramjetMeta = await scramjetRes.json();\n\n\tawait unpack(scramjetMeta.dist.tarball, \"scramjet\");\n\tawait unpack(controllerMeta.dist.tarball, \"controller\");\n}\n\nexport async function findLatestVersionOfPackage(\n\tpackageName: string,\n\tmajorVersion: string\n): Promise<NodePackageMeta> {\n\tconst packageRes = await fetch(`${REGISTRY_URL}${packageName}`);\n\tconst packageMeta = await packageRes.json();\n\tconst versions = Object.keys(packageMeta.versions).filter((v) =>\n\t\tv.startsWith(`${majorVersion}.`)\n\t);\n\tconst sortedVersions = versions.sort((a, b) => {\n\t\tconst aParts = a.split(\".\").map(Number);\n\t\tconst bParts = b.split(\".\").map(Number);\n\t\tfor (let i = 0; i < Math.max(aParts.length, bParts.length); i++) {\n\t\t\tconst aVal = aParts[i] || 0;\n\t\t\tconst bVal = bParts[i] || 0;\n\t\t\tif (aVal !== bVal) return bVal - aVal;\n\t\t}\n\t\treturn 0;\n\t});\n\tif (sortedVersions.length === 0) {\n\t\tthrow new Error(\n\t\t\t`No versions found for package ${packageName} with major version ${majorVersion}`\n\t\t);\n\t}\n\tconst latestVersion = sortedVersions[0];\n\n\tconst latestRes = await fetch(\n\t\t`${REGISTRY_URL}${packageName}/${latestVersion}`\n\t);\n\tconst latestMeta = await latestRes.json();\n\treturn latestMeta;\n}\n\ntype NodePackageMeta = {\n\tname: string;\n\tversion: string;\n\tdist: {\n\t\ttarball: string;\n\t};\n\tdependencies: { [key: string]: string };\n};\n\nexport async function bootstrap(\n\tcfg: Partial<ServerBootstrapOptions> = {}\n): Promise<{\n\trouteRequest: typeof routeRequest;\n\trouteUpgrade: typeof routeUpgrade;\n}> {\n\tconfig = {\n\t\t...defaultConfig,\n\t\t...cfg,\n\t\tdownloadedFilesDir: import.meta.dirname + \"/.downloads/\",\n\t} as ServerBootstrapOptions;\n\n\tconst downloadedControllerVersion = await getDownloadedControllerVersion();\n\tif (downloadedControllerVersion) {\n\t\tconsole.log(\n\t\t\t`Found downloaded Scramjet Controller version: ${downloadedControllerVersion}`\n\t\t);\n\t}\n\n\tif (config.transport === \"epoxy\") {\n\t\tconst epoxyMeta = await findLatestVersionOfPackage(\n\t\t\tEPOXY_TRANSPORT_PACKAGE_NAME,\n\t\t\tEPOXY_TRANSPORT_PINNED_MAJOR_VERSION\n\t\t);\n\t\tawait unpack(epoxyMeta.dist.tarball, \"epoxy-transport\");\n\t\tconsole.log(`Using Epoxy Transport version: ${epoxyMeta.version}`);\n\t} else if (config.transport === \"libcurl\") {\n\t\tconst libcurlMeta = await findLatestVersionOfPackage(\n\t\t\tLIBCURL_TRANSPORT_PACKAGE_NAME,\n\t\t\tLIBCURL_TRANSPORT_PINNED_MAJOR_VERSION\n\t\t);\n\t\tawait unpack(libcurlMeta.dist.tarball, \"libcurl-transport\");\n\t\tconsole.log(`Using libcurl Transport version: ${libcurlMeta.version}`);\n\t} else {\n\t\tthrow new Error(`Unknown transport option: ${config.transport}`);\n\t}\n\n\tconst controllerMeta = await findLatestVersionOfPackage(\n\t\tSCRAMJET_CONTROLLER_PACKAGE_NAME,\n\t\tSCRAMJET_CONTROLLER_PINNED_MAJOR_VERSION\n\t);\n\n\tif (downloadedControllerVersion === controllerMeta.version) {\n\t\tconsole.log(\n\t\t\t`Scramjet Controller is up to date (version: ${downloadedControllerVersion}), skipping download.`\n\t\t);\n\t} else {\n\t\tawait updateScramjet(controllerMeta);\n\t\tconsole.log(\n\t\t\t`Downloaded Scramjet Controller version: ${controllerMeta.version}`\n\t\t);\n\t}\n\n\treturn {\n\t\trouteRequest,\n\t\trouteUpgrade,\n\t};\n}\n","var webpackQueues =\n\ttypeof Symbol === \"function\"\n\t\t? Symbol(\"webpack queues\")\n\t\t: \"__webpack_queues__\";\nvar webpackExports =\n\ttypeof Symbol === \"function\"\n\t\t? Symbol(\"webpack exports\")\n\t\t: \"__webpack_exports__\";\nvar webpackError =\n\ttypeof Symbol === \"function\" ? Symbol(\"webpack error\") : \"__webpack_error__\";\nvar resolveQueue = (queue) => {\n if (queue && queue.d < 1) {\n queue.d = 1;\n queue.forEach((fn) => (fn.r--));\n\t\tqueue.forEach((fn) => (fn.r-- ? fn.r++ : fn()));\n\t}\n}\nvar wrapDeps = (deps) => {\n\treturn deps.map((dep) => {\n\t\tif (dep !== null && typeof dep === \"object\") {\n\t\t\tif (dep[webpackQueues]) return dep;\n\t\t\tif (dep.then) {\n\t\t\t\tvar queue = [];\n\t\t\t\tqueue.d = 0;\n\t\t\t\tdep.then((r) => {\n\t\t\t\t\tobj[webpackExports] = r;\n\t\t\t\t\tresolveQueue(queue);\n\t\t\t\t},(e) => {\n\t\t\t\t\tobj[webpackError] = e;\n\t\t\t\t\tresolveQueue(queue);\n\t\t\t\t});\n\t\t\t\tvar obj = {};\n\t\t\t\tobj[webpackQueues] = (fn) => (fn(queue));\n\t\t\t\treturn obj;\n\t\t\t}\n\t\t}\n\t\tvar ret = {};\n\t\tret[webpackQueues] = function() {};\n\t\tret[webpackExports] = dep;\n\t\treturn ret;\n\t});\n};\n__webpack_require__.a = (module, body, hasAwait) => {\n\tvar queue;\n\thasAwait && ((queue = []).d = -1);\n\tvar depQueues = new Set();\n\tvar exports = module.exports;\n\tvar currentDeps;\n\tvar outerResolve;\n\tvar reject;\n\tvar promise = new Promise((resolve, rej) => {\n\t\treject = rej;\n\t\touterResolve = resolve;\n\t});\n\tpromise[webpackExports] = exports;\n\tpromise[webpackQueues] = (fn) => { queue && fn(queue), depQueues.forEach(fn), promise[\"catch\"](function() {}); };\n\tmodule.exports = promise;\n\tbody((deps) => {\n\t\tcurrentDeps = wrapDeps(deps);\n\t\tvar fn;\n\t\tvar getResult = () => {\n\t\t\treturn currentDeps.map((d) => {\n\t\t\t\tif (d[webpackError]) throw d[webpackError];\n\t\t\t\treturn d[webpackExports];\n\t\t\t});\n\t\t}\n\t\tvar promise = new Promise((resolve) => {\n\t\t\tfn = () => (resolve(getResult));\n\t\t\tfn.r = 0;\n\t\t\tvar fnQueue = (q) => (q !== queue && !depQueues.has(q) && (depQueues.add(q), q && !q.d && (fn.r++, q.push(fn))));\n\t\t\tcurrentDeps.map((dep) => (dep[webpackQueues](fnQueue)));\n\t\t});\n\t\treturn fn.r ? promise : getResult();\n\t}, (err) => ((err ? reject(promise[webpackError] = err) : outerResolve(exports)), resolveQueue(queue)));\n\tqueue && queue.d < 0 && (queue.d = 0);\n};","__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};"],"names":["REGISTRY_URL","SCRAMJET_PACKAGE_NAME","SCRAMJET_CONTROLLER_PACKAGE_NAME","SCRAMJET_CONTROLLER_PINNED_MAJOR_VERSION","EPOXY_TRANSPORT_PACKAGE_NAME","EPOXY_TRANSPORT_PINNED_MAJOR_VERSION","LIBCURL_TRANSPORT_PACKAGE_NAME","LIBCURL_TRANSPORT_PINNED_MAJOR_VERSION","defaultConfig","server","wisp","extract","fs","config","sendFile","res","filePath","contentType","data","clientdata","routeRequest","req","Buffer","JSON","pathsToFiles","routeUpgrade","socket","head","unpack","tarball","name","Error","response","fetch","arrayBuffer","buffer","file","packagedir","err","console","getDownloadedControllerVersion","pkgJson","updateScramjet","controllerMeta","scramjetVersion","scramjetRes","scramjetMeta","findLatestVersionOfPackage","packageName","majorVersion","packageRes","packageMeta","versions","Object","v","sortedVersions","a","b","aParts","Number","bParts","i","Math","aVal","bVal","latestVersion","latestRes","latestMeta","bootstrap","cfg","downloadedControllerVersion","epoxyMeta","libcurlMeta"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAO,MAAMA,eAAe,8BAA8B;AACnD,MAAMC,wBAAwB,4BAA4B;AAE1D,MAAMC,mCACZ,uCAAuC;AACjC,MAAMC,2CAA2C,IAAI;AAErD,MAAMC,+BAA+B,mCAAmC;AACxE,MAAMC,uCAAuC,IAAI;AAEjD,MAAMC,iCACZ,qCAAqC;AAC/B,MAAMC,yCAAyC,IAAI;AA8BnD,MAAMC,gBAA2C;IACvD,WAAW;IACX,QAAQ;IACR,UAAU;IAEV,iBAAiB;IACjB,mBAAmB;IACnB,gBAAgB;IAChB,mBAAmB;IAEnB,2BAA2B;IAC3B,8BAA8B;IAC9B,0BAA0B;IAC1B,oBAAoB;IACpB,kBAAkB;AACnB,EAAE;;;;;;;;;;;;;;;;;;;;ACzD+D;AAEnC;AAED;AAYX;AAMlB,IAAIK;AAEJ,eAAeC,SACdC,GAAwB,EACxBC,QAAgB,EAChBC,WAAmB;IAEnB,MAAMC,OAAO,MAAMN,4DAAW,CAACI;IAC/BD,IAAI,SAAS,CAAC,KAAK;QAAE,gBAAgBE;IAAY;IACjDF,IAAI,GAAG,CAACG;AACT;AACA,MAAMC,aAAa,MAAMP,4DAAW,CACnC,+CAAmB,GAAG;AAEvB,SAASQ,aACRC,GAAyB,EACzBN,GAAwB;IAExB,IAAI,CAACM,IAAI,GAAG,EAAE,OAAO;IAErB,IAAIA,IAAI,GAAG,KAAKR,OAAO,MAAM,EAAE;QAC9BE,IAAI,SAAS,CAAC,KAAK;YAAE,gBAAgB;QAAyB;QAC9DA,IAAI,GAAG,CAAC,CAAC,eAAe,EAAEF,OAAO,wBAAwB,CAAC;;;;;;AAM5D,CAAC;QAEC,OAAO;IACR,OAAO,IAAIQ,IAAI,GAAG,KAAKR,OAAO,iBAAiB,EAAE;QAChDE,IAAI,SAAS,CAAC,KAAK;YAAE,gBAAgB;QAAyB;QAC9DA,IAAI,GAAG,CAAC,CAAC;4DACiD,EAAEO,OAAO,IAAI,CAACH,YAAY,QAAQ,CAAC,UAAU;aAC5F,EAAEI,KAAK,SAAS,CAACV,QAAQ;CACrC,CAAC;QAEA,OAAO;IACR;IAEA,MAAMW,eAAe;QACpB,CAACX,OAAO,yBAAyB,CAAC,EACjCA,OAAO,kBAAkB,GAAG;QAC7B,CAACA,OAAO,4BAA4B,CAAC,EACpCA,OAAO,kBAAkB,GACzB;QACD,CAACA,OAAO,wBAAwB,CAAC,EAChCA,OAAO,kBAAkB,GAAG;QAC7B,CAACA,OAAO,kBAAkB,CAAC,EAC1BA,OAAO,kBAAkB,GAAG;QAC7B,CAACA,OAAO,gBAAgB,CAAC,EACxBA,OAAO,kBAAkB,GAAG;QAE7B,CAACA,OAAO,iBAAiB,CAAC,EACzBA,OAAO,kBAAkB,GAAG;IAC9B;IACA,IAAIQ,IAAI,GAAG,IAAIG,cAAc;QAC5B,MAAMR,WAAWQ,YAAY,CAACH,IAAI,GAAG,CAA8B;QACnE,MAAMJ,cAAcI,IAAI,GAAG,CAAC,QAAQ,CAAC,WAClC,qBACA;QACHP,SAASC,KAAKC,UAAUC;QACxB,OAAO;IACR;IAEA,OAAO;AACR;AAEA,SAASQ,aACRJ,GAAyB,EACzBK,MAAW,EACXC,IAAY;IAEZ,IAAI,CAACN,IAAI,GAAG,EAAE,OAAO;IACrB,IAAI,CAACA,IAAI,GAAG,CAAC,UAAU,CAAC,WAAW,OAAO;IAE1CX,gFAAiB,CAACW,KAAKK,QAAQC;IAC/B,OAAO;AACR;AAEO,eAAeC,OAAOC,OAAe,EAAEC,IAAY;IACzD,IAAI,CAACA,MAAM,MAAM,IAAIC,MAAM;IAC3B,MAAMC,WAAW,MAAMC,MAAMJ;IAC7B,IAAI,CAACG,SAAS,EAAE,EAAE;QACjB,MAAM,IAAID,MAAM,CAAC,4BAA4B,EAAEC,SAAS,UAAU,EAAE;IACrE;IAEA,MAAME,cAAc,MAAMF,SAAS,WAAW;IAC9C,MAAMG,SAASb,OAAO,IAAI,CAACY;IAE3B,MAAMtB,yDAAQ,CAACC,OAAO,kBAAkB,EAAE;QAAE,WAAW;IAAK;IAC5D,MAAMuB,OAAO,GAAGvB,OAAO,kBAAkB,GAAGiB,KAAK,IAAI,CAAC;IACtD,MAAMlB,6DAAY,CAACwB,MAAMD;IAEzB,MAAME,aAAa,GAAGxB,OAAO,kBAAkB,CAAC,CAAC,EAAEiB,MAAM;IAEzD,IAAI,MAAMlB,wDAAO,CAACyB,YAAY,KAAK,CAAC,IAAM,QAAQ;QACjD,MAAMzB,sDAAK,CAACyB,YAAY;YAAE,WAAW;YAAM,OAAO;QAAK;IACxD;IACA,MAAMzB,yDAAQ,CAACyB,YAAY;QAAE,WAAW;IAAK;IAE7C,IAAI;QACH,MAAM1B,4CAAOA,CAAC;YACb,GAAGyB;YACH,KAAKC;QACN;QACA,MAAMzB,0DAAS,CAACwB;IACjB,EAAE,OAAOE,KAAK;QACbC,QAAQ,KAAK,CAAC,6BAA6BD;QAC3C,MAAM1B,0DAAS,CAACwB;QAChB,MAAME;IACP;AACD;AAEA,eAAeE;IACd,MAAMH,aAAa,GAAGxB,OAAO,kBAAkB,CAAC,UAAU,CAAC;IAC3D0B,QAAQ,GAAG,CAACF;IACZ,IAAI;QACH,MAAMI,UAAUlB,KAAK,KAAK,CACxB,MAAMX,4DAAW,CACjB,GAAGyB,WAAW,qBAAqB,CAAC,EACpC;QAGF,OAAOI,QAAQ,OAAO;IACvB,EAAE,OAAM;QACP,OAAO;IACR;AACD;AAEA,eAAeC,eAAeC,cAAmB;IAChD,MAAMC,kBACLD,eAAe,YAAY,CAAC,4BAA4B;IAEzDJ,QAAQ,GAAG,CAAC,CAAC,2BAA2B,EAAEK,iBAAiB;IAC3D,MAAMC,cAAc,MAAMZ,MACzB,GAAGjC,iDAAYA,GAAGC,0DAAqBA,CAAC,CAAC,EAAE2C,iBAAiB;IAE7D,MAAME,eAAe,MAAMD,YAAY,IAAI;IAE3C,MAAMjB,OAAOkB,aAAa,IAAI,CAAC,OAAO,EAAE;IACxC,MAAMlB,OAAOe,eAAe,IAAI,CAAC,OAAO,EAAE;AAC3C;AAEO,eAAeI,2BACrBC,WAAmB,EACnBC,YAAoB;IAEpB,MAAMC,aAAa,MAAMjB,MAAM,GAAGjC,iDAAYA,GAAGgD,aAAa;IAC9D,MAAMG,cAAc,MAAMD,WAAW,IAAI;IACzC,MAAME,WAAWC,OAAO,IAAI,CAACF,YAAY,QAAQ,EAAE,MAAM,CAAC,CAACG,IAC1DA,EAAE,UAAU,CAAC,GAAGL,aAAa,CAAC,CAAC;IAEhC,MAAMM,iBAAiBH,SAAS,IAAI,CAAC,CAACI,GAAGC;QACxC,MAAMC,SAASF,EAAE,KAAK,CAAC,KAAK,GAAG,CAACG;QAChC,MAAMC,SAASH,EAAE,KAAK,CAAC,KAAK,GAAG,CAACE;QAChC,IAAK,IAAIE,IAAI,GAAGA,IAAIC,KAAK,GAAG,CAACJ,OAAO,MAAM,EAAEE,OAAO,MAAM,GAAGC,IAAK;YAChE,MAAME,OAAOL,MAAM,CAACG,EAAE,IAAI;YAC1B,MAAMG,OAAOJ,MAAM,CAACC,EAAE,IAAI;YAC1B,IAAIE,SAASC,MAAM,OAAOA,OAAOD;QAClC;QACA,OAAO;IACR;IACA,IAAIR,eAAe,MAAM,KAAK,GAAG;QAChC,MAAM,IAAIxB,MACT,CAAC,8BAA8B,EAAEiB,YAAY,oBAAoB,EAAEC,cAAc;IAEnF;IACA,MAAMgB,gBAAgBV,cAAc,CAAC,EAAE;IAEvC,MAAMW,YAAY,MAAMjC,MACvB,GAAGjC,iDAAYA,GAAGgD,YAAY,CAAC,EAAEiB,eAAe;IAEjD,MAAME,aAAa,MAAMD,UAAU,IAAI;IACvC,OAAOC;AACR;AAWO,eAAeC,UACrBC,MAAuC,CAAC,CAAC;IAKzCxD,SAAS;QACR,GAAGL,kDAAa;QAChB,GAAG6D,GAAG;QACN,oBAAoB,+CAAmB,GAAG;IAC3C;IAEA,MAAMC,8BAA8B,MAAM9B;IAC1C,IAAI8B,6BAA6B;QAChC/B,QAAQ,GAAG,CACV,CAAC,8CAA8C,EAAE+B,6BAA6B;IAEhF;IAEA,IAAIzD,OAAO,SAAS,KAAK,SAAS;QACjC,MAAM0D,YAAY,MAAMxB,2BACvB3C,iEAA4BA,EAC5BC,yEAAoCA;QAErC,MAAMuB,OAAO2C,UAAU,IAAI,CAAC,OAAO,EAAE;QACrChC,QAAQ,GAAG,CAAC,CAAC,+BAA+B,EAAEgC,UAAU,OAAO,EAAE;IAClE,OAAO,IAAI1D,OAAO,SAAS,KAAK,WAAW;QAC1C,MAAM2D,cAAc,MAAMzB,2BACzBzC,mEAA8BA,EAC9BC,2EAAsCA;QAEvC,MAAMqB,OAAO4C,YAAY,IAAI,CAAC,OAAO,EAAE;QACvCjC,QAAQ,GAAG,CAAC,CAAC,iCAAiC,EAAEiC,YAAY,OAAO,EAAE;IACtE,OAAO;QACN,MAAM,IAAIzC,MAAM,CAAC,0BAA0B,EAAElB,OAAO,SAAS,EAAE;IAChE;IAEA,MAAM8B,iBAAiB,MAAMI,2BAC5B7C,qEAAgCA,EAChCC,6EAAwCA;IAGzC,IAAImE,gCAAgC3B,eAAe,OAAO,EAAE;QAC3DJ,QAAQ,GAAG,CACV,CAAC,4CAA4C,EAAE+B,4BAA4B,qBAAqB,CAAC;IAEnG,OAAO;QACN,MAAM5B,eAAeC;QACrBJ,QAAQ,GAAG,CACV,CAAC,wCAAwC,EAAEI,eAAe,OAAO,EAAE;IAErE;IAEA,OAAO;QACNvB;QACAK;IACD;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA,oCAAoC,yEAAyE;AAC7G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,EAAE;AACF;AACA,E;;;;AC3EA;AACA;AACA;AACA,kDAAkD,wCAAwC;AAC1F;AACA;AACA,E;;;;ACNA,wF;;;;ACAA;AACA;AACA;AACA,uDAAuD,iBAAiB;AACxE;AACA,gDAAgD,aAAa;AAC7D,E"}
1
+ {"version":3,"file":"bootstrap-server.js","sources":["webpack://browser.js/./packages/scramjet/packages/bootstrap/src/common.ts","webpack://browser.js/./packages/scramjet/packages/bootstrap/src/server.ts","webpack://browser.js/webpack/runtime/async_module","webpack://browser.js/webpack/runtime/define_property_getters","webpack://browser.js/webpack/runtime/has_own_property","webpack://browser.js/webpack/runtime/make_namespace_object"],"sourcesContent":["export const REGISTRY_URL = \"https://registry.npmjs.org/\";\nexport const SCRAMJET_PACKAGE_NAME = \"@mercuryworkshop/scramjet\";\n\nexport const SCRAMJET_CONTROLLER_PACKAGE_NAME =\n\t\"@mercuryworkshop/scramjet-controller\";\nexport const SCRAMJET_CONTROLLER_PINNED_MAJOR_VERSION = \"0\";\n\nexport const EPOXY_TRANSPORT_PACKAGE_NAME = \"@mercuryworkshop/epoxy-transport\";\nexport const EPOXY_TRANSPORT_PINNED_MAJOR_VERSION = \"3\";\n\nexport const LIBCURL_TRANSPORT_PACKAGE_NAME =\n\t\"@mercuryworkshop/libcurl-transport\";\nexport const LIBCURL_TRANSPORT_PINNED_MAJOR_VERSION = \"2\";\n\nexport type TransportOptions = \"epoxy\" | \"libcurl\" | \"bare\";\n\nexport type BootstrapOptions = {\n\ttransport: TransportOptions;\n\tswPath: string;\n\n\twispPath: string;\n\n\tscramjetBundlePath: string;\n\tscramjetWasmPath: string;\n\n\tepoxyClientPath: string;\n\tlibcurlClientPath: string;\n\tbareClientPath: string;\n\tscramjetControllerApiPath: string;\n\tscramjetControllerInjectPath: string;\n\tscramjetControllerSwPath: string;\n\n\tbootstrapApiPath: string;\n\tbootstrapInitPath: string;\n\n\tscramjetVersionPin?: string;\n\tscramjetControllerVersionPin?: string;\n\tepoxyTransportVersionPin?: string;\n\tlibcurlTransportVersionPin?: string;\n\tbareTransportVersionPin?: string;\n};\n\nexport const defaultConfig: Partial<BootstrapOptions> = {\n\ttransport: \"libcurl\",\n\tswPath: \"/sw.js\",\n\twispPath: \"/wisp/\",\n\n\tepoxyClientPath: \"/clients/epoxy-client.js\",\n\tlibcurlClientPath: \"/clients/libcurl-client.js\",\n\tbareClientPath: \"/clients/bare-client.js\",\n\tbootstrapInitPath: \"/bootstrap-init.js\",\n\n\tscramjetControllerApiPath: \"/controller/controller.api.js\",\n\tscramjetControllerInjectPath: \"/controller/controller.inject.js\",\n\tscramjetControllerSwPath: \"/controller/controller.sw.js\",\n\tscramjetBundlePath: \"/scram/scramjet.js\",\n\tscramjetWasmPath: \"/scram/scramjet.wasm\",\n};\n","import { server as wisp } from \"@mercuryworkshop/wisp-js/server\";\nimport http from \"http\";\nimport { extract } from \"tar\";\nimport { Readable } from \"stream\";\nimport fs from \"fs/promises\";\nimport { join } from \"node:path\";\nimport {\n\tdefaultConfig,\n\tEPOXY_TRANSPORT_PACKAGE_NAME,\n\tEPOXY_TRANSPORT_PINNED_MAJOR_VERSION,\n\tLIBCURL_TRANSPORT_PACKAGE_NAME,\n\tLIBCURL_TRANSPORT_PINNED_MAJOR_VERSION,\n\tREGISTRY_URL,\n\tSCRAMJET_CONTROLLER_PACKAGE_NAME,\n\tSCRAMJET_CONTROLLER_PINNED_MAJOR_VERSION,\n\tSCRAMJET_PACKAGE_NAME,\n\tBootstrapOptions,\n} from \"./common\";\n\nconst bootstrapRoot = import.meta.dirname;\n\ntype ServerBootstrapOptions = BootstrapOptions & {\n\tdownloadedFilesDir: string;\n};\n\nlet config: ServerBootstrapOptions;\n\nasync function sendFile(\n\tres: http.ServerResponse,\n\tfilePath: string,\n\tcontentType: string\n) {\n\tconst data = await fs.readFile(filePath);\n\tres.writeHead(200, { \"Content-Type\": contentType });\n\tres.end(data);\n}\nconst clientdata = await fs.readFile(\n\tjoin(bootstrapRoot, \"bootstrap-client.js\")\n);\nfunction routeRequest(\n\treq: http.IncomingMessage,\n\tres: http.ServerResponse\n): boolean {\n\tif (!req.url) return false;\n\n\tif (req.url === config.swPath) {\n\t\tres.writeHead(200, { \"Content-Type\": \"application/javascript\" });\n\t\tres.end(`importScripts(\"${config.scramjetControllerSwPath}\");\naddEventListener(\"fetch\", (e) => {\n\tif ($scramjetController.shouldRoute(e)) {\n\t\te.respondWith($scramjetController.route(e));\n\t}\n});\n`);\n\n\t\treturn true;\n\t} else if (req.url === config.bootstrapInitPath) {\n\t\tres.writeHead(200, { \"Content-Type\": \"application/javascript\" });\n\t\tres.end(`async function initBootstrap() {\n\tconst { init } = await import(\"data:text/javascript;base64,${Buffer.from(clientdata).toString(\"base64\")}\");\n\treturn init(${JSON.stringify(config)});\n}`);\n\n\t\treturn true;\n\t}\n\n\tconst pathsToFiles = {\n\t\t[config.scramjetControllerApiPath]:\n\t\t\tconfig.downloadedFilesDir + \"controller/package/dist/controller.api.js\",\n\t\t[config.scramjetControllerInjectPath]:\n\t\t\tconfig.downloadedFilesDir +\n\t\t\t\"controller/package/dist/controller.inject.js\",\n\t\t[config.scramjetControllerSwPath]:\n\t\t\tconfig.downloadedFilesDir + \"controller/package/dist/controller.sw.js\",\n\t\t[config.scramjetBundlePath]:\n\t\t\tconfig.downloadedFilesDir + \"scramjet/package/dist/scramjet.js\",\n\t\t[config.scramjetWasmPath]:\n\t\t\tconfig.downloadedFilesDir + \"scramjet/package/dist/scramjet.wasm\",\n\n\t\t[config.libcurlClientPath]:\n\t\t\tconfig.downloadedFilesDir + \"libcurl-transport/package/dist/index.js\",\n\t};\n\tif (req.url in pathsToFiles) {\n\t\tconst filePath = pathsToFiles[req.url as keyof typeof pathsToFiles];\n\t\tconst contentType = req.url.endsWith(\".wasm\")\n\t\t\t? \"application/wasm\"\n\t\t\t: \"application/javascript\";\n\t\tsendFile(res, filePath, contentType);\n\t\treturn true;\n\t}\n\n\treturn false;\n}\n\nfunction routeUpgrade(\n\treq: http.IncomingMessage,\n\tsocket: any,\n\thead: Buffer\n): boolean {\n\tif (!req.url) return false;\n\tif (!req.url.startsWith(\"/wisp/\")) return false;\n\n\twisp.routeRequest(req, socket, head);\n\treturn true;\n}\n\nexport async function unpack(tarball: string, name: string) {\n\tif (!name) throw new Error(\"no package name!\");\n\tconst response = await fetch(tarball);\n\tif (!response.ok) {\n\t\tthrow new Error(`Failed to download tarball: ${response.statusText}`);\n\t}\n\n\tconst arrayBuffer = await response.arrayBuffer();\n\tconst buffer = Buffer.from(arrayBuffer);\n\n\tawait fs.mkdir(config.downloadedFilesDir, { recursive: true });\n\tconst file = `${config.downloadedFilesDir}${name}.tgz`;\n\tawait fs.writeFile(file, buffer);\n\n\tconst packagedir = `${config.downloadedFilesDir}/${name}`;\n\n\tif (await fs.stat(packagedir).catch(() => false)) {\n\t\tawait fs.rm(packagedir, { recursive: true, force: true });\n\t}\n\tawait fs.mkdir(packagedir, { recursive: true });\n\n\ttry {\n\t\tawait extract({\n\t\t\tf: file,\n\t\t\tcwd: packagedir,\n\t\t});\n\t\tawait fs.unlink(file);\n\t} catch (err) {\n\t\tconsole.error(\"Error extracting tarball:\", err);\n\t\tawait fs.unlink(file);\n\t\tthrow err;\n\t}\n}\n\nasync function getDownloadedControllerVersion(): Promise<string | null> {\n\tconst packagedir = `${config.downloadedFilesDir}controller`;\n\tconsole.log(packagedir);\n\ttry {\n\t\tconst pkgJson = JSON.parse(\n\t\t\t(await fs.readFile(\n\t\t\t\t`${packagedir}/package/package.json`,\n\t\t\t\t\"utf-8\"\n\t\t\t)) as unknown as string\n\t\t);\n\t\treturn pkgJson.version;\n\t} catch {\n\t\treturn null;\n\t}\n}\n\nasync function updateScramjet(controllerMeta: any) {\n\tconst scramjetVersion =\n\t\tcontrollerMeta.dependencies[\"@mercuryworkshop/scramjet\"];\n\n\tconsole.log(`Fetching scramjet version: ${scramjetVersion}`);\n\tconst scramjetRes = await fetch(\n\t\t`${REGISTRY_URL}${SCRAMJET_PACKAGE_NAME}/${scramjetVersion}`\n\t);\n\tconst scramjetMeta = await scramjetRes.json();\n\n\tawait unpack(scramjetMeta.dist.tarball, \"scramjet\");\n\tawait unpack(controllerMeta.dist.tarball, \"controller\");\n}\n\nexport async function findLatestVersionOfPackage(\n\tpackageName: string,\n\tmajorVersion: string\n): Promise<NodePackageMeta> {\n\tconst packageRes = await fetch(`${REGISTRY_URL}${packageName}`);\n\tconst packageMeta = await packageRes.json();\n\tconst versions = Object.keys(packageMeta.versions).filter((v) =>\n\t\tv.startsWith(`${majorVersion}.`)\n\t);\n\tconst sortedVersions = versions.sort((a, b) => {\n\t\tconst aParts = a.split(\".\").map(Number);\n\t\tconst bParts = b.split(\".\").map(Number);\n\t\tfor (let i = 0; i < Math.max(aParts.length, bParts.length); i++) {\n\t\t\tconst aVal = aParts[i] || 0;\n\t\t\tconst bVal = bParts[i] || 0;\n\t\t\tif (aVal !== bVal) return bVal - aVal;\n\t\t}\n\t\treturn 0;\n\t});\n\tif (sortedVersions.length === 0) {\n\t\tthrow new Error(\n\t\t\t`No versions found for package ${packageName} with major version ${majorVersion}`\n\t\t);\n\t}\n\tconst latestVersion = sortedVersions[0];\n\n\tconst latestRes = await fetch(\n\t\t`${REGISTRY_URL}${packageName}/${latestVersion}`\n\t);\n\tconst latestMeta = await latestRes.json();\n\treturn latestMeta;\n}\n\ntype NodePackageMeta = {\n\tname: string;\n\tversion: string;\n\tdist: {\n\t\ttarball: string;\n\t};\n\tdependencies: { [key: string]: string };\n};\n\nexport async function bootstrap(\n\tcfg: Partial<ServerBootstrapOptions> = {}\n): Promise<{\n\trouteRequest: typeof routeRequest;\n\trouteUpgrade: typeof routeUpgrade;\n}> {\n\tconfig = {\n\t\t...defaultConfig,\n\t\t...cfg,\n\t\tdownloadedFilesDir: join(bootstrapRoot, \".downloads\") + \"/\",\n\t} as ServerBootstrapOptions;\n\n\tconst downloadedControllerVersion = await getDownloadedControllerVersion();\n\tif (downloadedControllerVersion) {\n\t\tconsole.log(\n\t\t\t`Found downloaded Scramjet Controller version: ${downloadedControllerVersion}`\n\t\t);\n\t}\n\n\tif (config.transport === \"epoxy\") {\n\t\tconst epoxyMeta = await findLatestVersionOfPackage(\n\t\t\tEPOXY_TRANSPORT_PACKAGE_NAME,\n\t\t\tEPOXY_TRANSPORT_PINNED_MAJOR_VERSION\n\t\t);\n\t\tawait unpack(epoxyMeta.dist.tarball, \"epoxy-transport\");\n\t\tconsole.log(`Using Epoxy Transport version: ${epoxyMeta.version}`);\n\t} else if (config.transport === \"libcurl\") {\n\t\tconst libcurlMeta = await findLatestVersionOfPackage(\n\t\t\tLIBCURL_TRANSPORT_PACKAGE_NAME,\n\t\t\tLIBCURL_TRANSPORT_PINNED_MAJOR_VERSION\n\t\t);\n\t\tawait unpack(libcurlMeta.dist.tarball, \"libcurl-transport\");\n\t\tconsole.log(`Using libcurl Transport version: ${libcurlMeta.version}`);\n\t} else {\n\t\tthrow new Error(`Unknown transport option: ${config.transport}`);\n\t}\n\n\tconst controllerMeta = await findLatestVersionOfPackage(\n\t\tSCRAMJET_CONTROLLER_PACKAGE_NAME,\n\t\tSCRAMJET_CONTROLLER_PINNED_MAJOR_VERSION\n\t);\n\n\tif (downloadedControllerVersion === controllerMeta.version) {\n\t\tconsole.log(\n\t\t\t`Scramjet Controller is up to date (version: ${downloadedControllerVersion}), skipping download.`\n\t\t);\n\t} else {\n\t\tawait updateScramjet(controllerMeta);\n\t\tconsole.log(\n\t\t\t`Downloaded Scramjet Controller version: ${controllerMeta.version}`\n\t\t);\n\t}\n\n\treturn {\n\t\trouteRequest,\n\t\trouteUpgrade,\n\t};\n}\n","var webpackQueues =\n\ttypeof Symbol === \"function\"\n\t\t? Symbol(\"webpack queues\")\n\t\t: \"__webpack_queues__\";\nvar webpackExports =\n\ttypeof Symbol === \"function\"\n\t\t? Symbol(\"webpack exports\")\n\t\t: \"__webpack_exports__\";\nvar webpackError =\n\ttypeof Symbol === \"function\" ? Symbol(\"webpack error\") : \"__webpack_error__\";\nvar resolveQueue = (queue) => {\n if (queue && queue.d < 1) {\n queue.d = 1;\n queue.forEach((fn) => (fn.r--));\n\t\tqueue.forEach((fn) => (fn.r-- ? fn.r++ : fn()));\n\t}\n}\nvar wrapDeps = (deps) => {\n\treturn deps.map((dep) => {\n\t\tif (dep !== null && typeof dep === \"object\") {\n\t\t\tif (dep[webpackQueues]) return dep;\n\t\t\tif (dep.then) {\n\t\t\t\tvar queue = [];\n\t\t\t\tqueue.d = 0;\n\t\t\t\tdep.then((r) => {\n\t\t\t\t\tobj[webpackExports] = r;\n\t\t\t\t\tresolveQueue(queue);\n\t\t\t\t},(e) => {\n\t\t\t\t\tobj[webpackError] = e;\n\t\t\t\t\tresolveQueue(queue);\n\t\t\t\t});\n\t\t\t\tvar obj = {};\n\t\t\t\tobj[webpackQueues] = (fn) => (fn(queue));\n\t\t\t\treturn obj;\n\t\t\t}\n\t\t}\n\t\tvar ret = {};\n\t\tret[webpackQueues] = function() {};\n\t\tret[webpackExports] = dep;\n\t\treturn ret;\n\t});\n};\n__webpack_require__.a = (module, body, hasAwait) => {\n\tvar queue;\n\thasAwait && ((queue = []).d = -1);\n\tvar depQueues = new Set();\n\tvar exports = module.exports;\n\tvar currentDeps;\n\tvar outerResolve;\n\tvar reject;\n\tvar promise = new Promise((resolve, rej) => {\n\t\treject = rej;\n\t\touterResolve = resolve;\n\t});\n\tpromise[webpackExports] = exports;\n\tpromise[webpackQueues] = (fn) => { queue && fn(queue), depQueues.forEach(fn), promise[\"catch\"](function() {}); };\n\tmodule.exports = promise;\n\tbody((deps) => {\n\t\tcurrentDeps = wrapDeps(deps);\n\t\tvar fn;\n\t\tvar getResult = () => {\n\t\t\treturn currentDeps.map((d) => {\n\t\t\t\tif (d[webpackError]) throw d[webpackError];\n\t\t\t\treturn d[webpackExports];\n\t\t\t});\n\t\t}\n\t\tvar promise = new Promise((resolve) => {\n\t\t\tfn = () => (resolve(getResult));\n\t\t\tfn.r = 0;\n\t\t\tvar fnQueue = (q) => (q !== queue && !depQueues.has(q) && (depQueues.add(q), q && !q.d && (fn.r++, q.push(fn))));\n\t\t\tcurrentDeps.map((dep) => (dep[webpackQueues](fnQueue)));\n\t\t});\n\t\treturn fn.r ? promise : getResult();\n\t}, (err) => ((err ? reject(promise[webpackError] = err) : outerResolve(exports)), resolveQueue(queue)));\n\tqueue && queue.d < 0 && (queue.d = 0);\n};","__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n }\n }\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};"],"names":["REGISTRY_URL","SCRAMJET_PACKAGE_NAME","SCRAMJET_CONTROLLER_PACKAGE_NAME","SCRAMJET_CONTROLLER_PINNED_MAJOR_VERSION","EPOXY_TRANSPORT_PACKAGE_NAME","EPOXY_TRANSPORT_PINNED_MAJOR_VERSION","LIBCURL_TRANSPORT_PACKAGE_NAME","LIBCURL_TRANSPORT_PINNED_MAJOR_VERSION","defaultConfig","server","wisp","extract","fs","join","bootstrapRoot","config","sendFile","res","filePath","contentType","data","clientdata","routeRequest","req","Buffer","JSON","pathsToFiles","routeUpgrade","socket","head","unpack","tarball","name","Error","response","fetch","arrayBuffer","buffer","file","packagedir","err","console","getDownloadedControllerVersion","pkgJson","updateScramjet","controllerMeta","scramjetVersion","scramjetRes","scramjetMeta","findLatestVersionOfPackage","packageName","majorVersion","packageRes","packageMeta","versions","Object","v","sortedVersions","a","b","aParts","Number","bParts","i","Math","aVal","bVal","latestVersion","latestRes","latestMeta","bootstrap","cfg","downloadedControllerVersion","epoxyMeta","libcurlMeta"],"mappings":"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MAAM8B,iBAAiB,MAAMI,2BAC5B/C,qEAAgCA,EAChCC,6EAAwCA;IAGzC,IAAIqE,gCAAgC3B,eAAe,OAAO,EAAE;QAC3DJ,QAAQ,GAAG,CACV,CAAC,4CAA4C,EAAE+B,4BAA4B,qBAAqB,CAAC;IAEnG,OAAO;QACN,MAAM5B,eAAeC;QACrBJ,QAAQ,GAAG,CACV,CAAC,wCAAwC,EAAEI,eAAe,OAAO,EAAE;IAErE;IAEA,OAAO;QACNvB;QACAK;IACD;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE;AACF;AACA,oCAAoC,yEAAyE;AAC7G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,EAAE;AACF;AACA,E;;;;AC3EA;AACA;AACA;AACA,kDAAkD,wCAAwC;AAC1F;AACA;AACA,E;;;;ACNA,wF;;;;ACAA;AACA;AACA;AACA,uDAAuD,iBAAiB;AACxE;AACA,gDAAgD,aAAa;AAC7D,E"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mercuryworkshop/proxy-bootstrap",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "type": "module",
5
5
  "main": "./dist/bootstrap-server.js",
6
6
  "types": "./dist/types/server.d.ts",