UNPKG

@codesandbox/sandpack-client

Version:

<img style="width:100%" src="https://user-images.githubusercontent.com/4838076/143581035-ebee5ba2-9cb1-4fe8-a05b-2f44bd69bb4b.gif" alt="Component toolkit for live running code editing experiences" />

189 lines (172 loc) 5.46 kB
/* eslint-env worker */ /* eslint no-var: off, vars-on-top: off, strict: off, no-use-before-define: off */ /* globals prettier prettierPlugins */ var imported = Object.create(null); function importScriptOnce(url) { if (!imported[url]) { imported[url] = true; importScripts(url); } } // this is required to only load parsers when we need them var parsers = { // JS - Babel get babel() { importScriptOnce("/static/js/prettier/1.16.4/parser-babylon.js"); return prettierPlugins.babylon.parsers.babel; }, get "babel-flow"() { importScriptOnce("/static/js/prettier/1.16.4/parser-babylon.js"); return prettierPlugins.babylon.parsers["babel-flow"]; }, // backward compatibility get babylon() { importScriptOnce("/static/js/prettier/1.16.4/parser-babylon.js"); return prettierPlugins.babylon.parsers.babylon; }, get json() { importScriptOnce("/static/js/prettier/1.16.4/parser-babylon.js"); return prettierPlugins.babylon.parsers.json; }, get json5() { importScriptOnce("/static/js/prettier/1.16.4/parser-babylon.js"); return prettierPlugins.babylon.parsers.json5; }, get "json-stringify"() { importScriptOnce("/static/js/prettier/1.16.4/parser-babylon.js"); return prettierPlugins.babylon.parsers["json-stringify"]; }, get __js_expression() { importScriptOnce("/static/js/prettier/1.16.4/parser-babylon.js"); return prettierPlugins.babylon.parsers.__js_expression; }, get __vue_expression() { importScriptOnce("/static/js/prettier/1.16.4/parser-babylon.js"); return prettierPlugins.babylon.parsers.__vue_expression; }, get __vue_event_binding() { importScriptOnce("/static/js/prettier/1.16.4/parser-babylon.js"); return prettierPlugins.babylon.parsers.__vue_event_binding; }, // JS - Flow get flow() { importScriptOnce("/static/js/prettier/1.16.4/parser-flow.js"); return prettierPlugins.flow.parsers.flow; }, // JS - TypeScript get typescript() { importScriptOnce("/static/js/prettier/1.16.4/parser-typescript.js"); return prettierPlugins.typescript.parsers.typescript; }, // JS - Angular Action get __ng_action() { importScriptOnce("/static/js/prettier/1.16.4/parser-angular.js"); return prettierPlugins.angular.parsers.__ng_action; }, // JS - Angular Binding get __ng_binding() { importScriptOnce("/static/js/prettier/1.16.4/parser-angular.js"); return prettierPlugins.angular.parsers.__ng_binding; }, // JS - Angular Interpolation get __ng_interpolation() { importScriptOnce("/static/js/prettier/1.16.4/parser-angular.js"); return prettierPlugins.angular.parsers.__ng_interpolation; }, // JS - Angular Directive get __ng_directive() { importScriptOnce("/static/js/prettier/1.16.4/parser-angular.js"); return prettierPlugins.angular.parsers.__ng_directive; }, // CSS get css() { importScriptOnce("/static/js/prettier/1.16.4/parser-postcss.js"); return prettierPlugins.postcss.parsers.css; }, get less() { importScriptOnce("/static/js/prettier/1.16.4/parser-postcss.js"); return prettierPlugins.postcss.parsers.css; }, get scss() { importScriptOnce("/static/js/prettier/1.16.4/parser-postcss.js"); return prettierPlugins.postcss.parsers.css; }, // GraphQL get graphql() { importScriptOnce("/static/js/prettier/1.16.4/parser-graphql.js"); return prettierPlugins.graphql.parsers.graphql; }, // Markdown get markdown() { importScriptOnce("/static/js/prettier/1.16.4/parser-markdown.js"); return prettierPlugins.markdown.parsers.remark; }, get mdx() { importScriptOnce("/static/js/prettier/1.16.4/parser-markdown.js"); return prettierPlugins.markdown.parsers.mdx; }, // YAML get yaml() { importScriptOnce("/static/js/prettier/1.16.4/parser-yaml.js"); return prettierPlugins.yaml.parsers.yaml; }, // Handlebars get glimmer() { importScriptOnce("/static/js/prettier/1.16.4/parser-glimmer.js"); return prettierPlugins.glimmer.parsers.glimmer; }, // HTML get html() { importScriptOnce("/static/js/prettier/1.16.4/parser-html.js"); return prettierPlugins.html.parsers.html; }, // Vue get vue() { importScriptOnce("/static/js/prettier/1.16.4/parser-html.js"); return prettierPlugins.html.parsers.vue; }, // Angular get angular() { importScriptOnce("/static/js/prettier/1.16.4/parser-html.js"); return prettierPlugins.html.parsers.angular; }, // Lightning Web Components get lwc() { importScriptOnce("/static/js/prettier/1.16.4/parser-html.js"); return prettierPlugins.html.parsers.lwc; } }; importScripts("/static/js/prettier/1.16.4/standalone.js"); self.onmessage = function(event) { const message = handleMessage(event.data); self.postMessage({ uid: event.data.uid, result: message, text: event.data.text }); }; function handleMessage(message) { var options = message.options || {}; delete options.ast; delete options.doc; delete options.output2; var plugins = [{ parsers }]; options.plugins = plugins; var response = { formatted: formatCode(message.text, options), debug: { ast: null, doc: null, reformatted: null } }; return response; } function formatCode(text, options) { try { return prettier.format(text, options); } catch (e) { self.postMessage({ error: e.message, text }); return undefined } }