makecode-browser
Version:
MakeCode (PXT) - web-cached build tool
2 lines (1 loc) • 6.01 kB
TypeScript
export declare const workerJs = "\n/// <reference path=\"../src/types.d.ts\" />\nlet _scriptText;\nlet nextId = 0;\nlet pendingMessages = {};\nfunction registerDriverCallbacks() {\n // Proxy these to the client\n pxt.setupSimpleCompile({\n cacheGet: async (key) => {\n const res = await sendRequestAsync({\n kind: \"worker-to-client\",\n type: \"cacheGet\",\n key\n });\n return res.value;\n },\n cacheSet: async (key, value) => {\n await sendRequestAsync({\n kind: \"worker-to-client\",\n type: \"cacheSet\",\n key,\n value\n });\n },\n pkgOverrideAsync: async (id) => {\n const res = await sendRequestAsync({\n kind: \"worker-to-client\",\n type: \"packageOverride\",\n packageId: id\n });\n return res.files;\n }\n });\n}\nfunction setWebConfig(config) {\n pxt.setupWebConfig(config);\n}\nfunction getWebConfig() {\n return pxt.webConfig;\n}\nfunction getAppTarget() {\n return pxt.appTarget;\n}\nfunction supportsGhPackages() {\n return !!pxt.simpleInstallPackagesAsync;\n}\nfunction setHwVariant(variant) {\n pxt.setHwVariant(variant);\n}\nfunction getHardwareVariants() {\n return pxt.getHwVariants();\n}\nfunction getBundledPackageConfigs() {\n return Object.values(pxt.appTarget.bundledpkgs).map(pkg => JSON.parse(pkg['pxt.json']));\n}\nfunction getCompileOptionsAsync(opts) {\n return pxt.simpleGetCompileOptionsAsync(_scriptText, opts);\n}\nfunction installGhPackagesAsync(projectFiles) {\n return pxt.simpleInstallPackagesAsync(projectFiles);\n}\nfunction performOperation(op, data) {\n return pxtc.service.performOperation(op, data);\n}\nfunction setProjectText(text) {\n _scriptText = text;\n}\nfunction enableExperimentalHardware() {\n pxt.savedAppTheme().experimentalHw = true;\n pxt.reloadAppTargetVariant();\n}\nfunction enableDebug() {\n pxt.options.debug = true;\n}\nfunction setCompileSwitches(flags) {\n pxt.setCompileSwitches(flags);\n if (pxt.appTarget.compile.switches.asmdebug) {\n ts.pxtc.assembler.debug = true;\n }\n}\nfunction onMessageReceived(message) {\n if (message.kind) {\n onResponseReceived(message);\n }\n else {\n onRequestReceivedAsync(message);\n }\n}\nasync function onRequestReceivedAsync(request) {\n switch (request.type) {\n case \"registerDriverCallbacks\":\n registerDriverCallbacks();\n sendResponse(Object.assign(Object.assign({}, request), { response: true }));\n break;\n case \"setWebConfig\":\n setWebConfig(request.webConfig);\n sendResponse(Object.assign(Object.assign({}, request), { response: true }));\n break;\n case \"getWebConfig\":\n sendResponse(Object.assign(Object.assign({}, request), { webConfig: getWebConfig(), response: true }));\n break;\n case \"getAppTarget\":\n sendResponse(Object.assign(Object.assign({}, request), { appTarget: getAppTarget(), response: true }));\n break;\n case \"supportsGhPackages\":\n sendResponse(Object.assign(Object.assign({}, request), { supported: supportsGhPackages(), response: true }));\n break;\n case \"setHwVariant\":\n setHwVariant(request.variant);\n sendResponse(Object.assign(Object.assign({}, request), { response: true }));\n break;\n case \"getHardwareVariants\":\n sendResponse(Object.assign(Object.assign({}, request), { configs: getHardwareVariants(), response: true }));\n break;\n case \"getBundledPackageConfigs\":\n sendResponse(Object.assign(Object.assign({}, request), { configs: getBundledPackageConfigs(), response: true }));\n break;\n case \"getCompileOptionsAsync\":\n sendResponse(Object.assign(Object.assign({}, request), { result: await getCompileOptionsAsync(request.opts), response: true }));\n break;\n case \"installGhPackagesAsync\":\n await installGhPackagesAsync(request.files);\n sendResponse(Object.assign(Object.assign({}, request), { result: request.files, response: true }));\n break;\n case \"performOperation\":\n sendResponse(Object.assign(Object.assign({}, request), { result: performOperation(request.op, request.data), response: true }));\n break;\n case \"setProjectText\":\n setProjectText(request.files);\n sendResponse(Object.assign(Object.assign({}, request), { response: true }));\n break;\n case \"enableExperimentalHardware\":\n enableExperimentalHardware();\n sendResponse(Object.assign(Object.assign({}, request), { response: true }));\n break;\n case \"enableDebug\":\n enableDebug();\n sendResponse(Object.assign(Object.assign({}, request), { response: true }));\n break;\n case \"setCompileSwitches\":\n setCompileSwitches(request.flags);\n sendResponse(Object.assign(Object.assign({}, request), { response: true }));\n break;\n }\n}\nfunction sendResponse(response) {\n postMessage(response);\n}\nfunction sendRequestAsync(request) {\n request.id = nextId++;\n return new Promise(resolve => {\n pendingMessages[request.id] = resolve;\n postMessage(request);\n });\n}\nfunction onResponseReceived(message) {\n if (pendingMessages[message.id]) {\n pendingMessages[message.id](message);\n delete pendingMessages[message.id];\n }\n else {\n console.warn(\"Worker received message with no callback\");\n }\n}\naddEventListener(\"message\", ev => {\n onMessageReceived(ev.data);\n});\n";