diff options
author | 2021-04-30 16:33:35 -0500 | |
---|---|---|
committer | 2021-04-30 16:33:35 -0500 | |
commit | 4df1347156cf2632ea2f3475d3a5f8f08d197cc3 (patch) | |
tree | 9d50de89dfe62827c32a8a4046120af4ab61dc0c /src/frontend/render/vue.ts | |
parent | 1d498facc8f78a3ffbfecd05cc6ecd45e8a4a1ae (diff) | |
download | astro-4df1347156cf2632ea2f3475d3a5f8f08d197cc3.tar.gz astro-4df1347156cf2632ea2f3475d3a5f8f08d197cc3.tar.zst astro-4df1347156cf2632ea2f3475d3a5f8f08d197cc3.zip |
Migrate to `yarn` monorepo (#157)
* chore: use monorepo
* chore: scaffold astro-scripts
* chore: move tests inside packages/astro
* chore: refactor tests, add scripts
* chore: move parser to own module
* chore: move runtime to packages/astro
* fix: move parser to own package
* test: fix prettier-plugin-astro tests
* fix: tests
* chore: update package-lock
* chore: add changesets
* fix: cleanup examples
* fix: starter example
* chore: update changeset config
* chore: update changeset config
* chore: setup changeset release workflow
* chore: bump lockfiles
* chore: prism => astro-prism
* fix: tsc --emitDeclarationOnly
* chore: final cleanup, switch to yarn
* chore: add lerna
* chore: update workflows to yarn
* chore: update workflows
* chore: remove lint workflow
* chore: add astro-dev script
* chore: add symlinked README
Diffstat (limited to 'src/frontend/render/vue.ts')
-rw-r--r-- | src/frontend/render/vue.ts | 65 |
1 files changed, 0 insertions, 65 deletions
diff --git a/src/frontend/render/vue.ts b/src/frontend/render/vue.ts deleted file mode 100644 index 57c3c8276..000000000 --- a/src/frontend/render/vue.ts +++ /dev/null @@ -1,65 +0,0 @@ -import type { ComponentRenderer } from '../../@types/renderer'; -import type { Component as VueComponent } from 'vue'; -import { renderToString } from '@vue/server-renderer'; -import { defineComponent, createSSRApp, h as createElement } from 'vue'; -import { createRenderer } from './renderer'; - -// This prevents tree-shaking of render. -Function.prototype(renderToString); - -/** - * Users might attempt to use :vueAttribute syntax to pass primitive values. - * If so, try to JSON.parse them to get the primitives - */ -function cleanPropsForVue(obj: Record<string, any>) { - let cleaned = {} as any; - for (let [key, value] of Object.entries(obj)) { - if (key.startsWith(':')) { - key = key.slice(1); - if (typeof value === 'string') { - try { - value = JSON.parse(value); - } catch (e) {} - } - } - cleaned[key] = value; - } - return cleaned; -} - -const Vue: ComponentRenderer<VueComponent> = { - jsxPragma: createElement, - jsxPragmaName: 'createElement', - renderStatic(Component) { - return async (props, ...children) => { - const App = defineComponent({ - components: { - Component, - }, - data() { - return { props }; - }, - template: `<Component v-bind="props">${children.join('\n')}</Component>`, - }); - - const app = createSSRApp(App); - const html = await renderToString(app); - return html; - }; - }, - imports: { - vue: ['createApp', 'h: createElement'], - }, - render({ Component, root, props, children }) { - const vueProps = cleanPropsForVue(JSON.parse(props)); - return `const App = { render: () => createElement(${Component}, ${JSON.stringify(vueProps)}, { default: () => ${children} }) }; -createApp(App).mount(${root});`; - }, -}; - -const renderer = createRenderer(Vue); - -export const __vue_static = renderer.static; -export const __vue_load = renderer.load; -export const __vue_idle = renderer.idle; -export const __vue_visible = renderer.visible; |