From 68e9a70a912d89ae7b54ebbfe00d8f2beb01a068 Mon Sep 17 00:00:00 2001
From: Owen Buckley
Date: Sat, 26 Mar 2022 19:51:41 -0400
Subject: [PATCH 1/3] polyfill DSD flag
---
packages/plugin-renderer-lit/src/index.js | 12 +-
.../src/polyfill-resource.js | 41 ++++
.../cases/serve.config.polyfill/artists.json | 134 ++++++++++++
.../serve.config.polyfill/greenwood.config.js | 9 +
.../cases/serve.config.polyfill/package.json | 7 +
.../serve.config.polyfill.spec.js | 198 ++++++++++++++++++
.../src/components/footer.js | 49 +++++
.../src/components/greeting.js | 24 +++
.../src/pages/artists.js | 84 ++++++++
.../src/templates/app.html | 12 ++
10 files changed, 567 insertions(+), 3 deletions(-)
create mode 100644 packages/plugin-renderer-lit/src/polyfill-resource.js
create mode 100644 packages/plugin-renderer-lit/test/cases/serve.config.polyfill/artists.json
create mode 100644 packages/plugin-renderer-lit/test/cases/serve.config.polyfill/greenwood.config.js
create mode 100644 packages/plugin-renderer-lit/test/cases/serve.config.polyfill/package.json
create mode 100644 packages/plugin-renderer-lit/test/cases/serve.config.polyfill/serve.config.polyfill.spec.js
create mode 100644 packages/plugin-renderer-lit/test/cases/serve.config.polyfill/src/components/footer.js
create mode 100644 packages/plugin-renderer-lit/test/cases/serve.config.polyfill/src/components/greeting.js
create mode 100644 packages/plugin-renderer-lit/test/cases/serve.config.polyfill/src/pages/artists.js
create mode 100644 packages/plugin-renderer-lit/test/cases/serve.config.polyfill/src/templates/app.html
diff --git a/packages/plugin-renderer-lit/src/index.js b/packages/plugin-renderer-lit/src/index.js
index 4c06c0692..e3213ab2e 100755
--- a/packages/plugin-renderer-lit/src/index.js
+++ b/packages/plugin-renderer-lit/src/index.js
@@ -1,14 +1,20 @@
+import { PolyfillsResource } from './polyfill-resource.js';
+
const greenwoodPluginRendererLit = (options = {}) => {
- return {
+ return [{
type: 'renderer',
- name: 'plugin-renderer-lit',
+ name: 'plugin-renderer-lit:renderer',
provider: () => {
return {
workerUrl: new URL('./ssr-route-worker-lit.js', import.meta.url),
prerender: options.prerender
};
}
- };
+ }, {
+ type: 'resource',
+ name: 'plugin-renderer-lit:resource',
+ provider: (compilation) => new PolyfillsResource(compilation, options)
+ }];
};
export {
diff --git a/packages/plugin-renderer-lit/src/polyfill-resource.js b/packages/plugin-renderer-lit/src/polyfill-resource.js
new file mode 100644
index 000000000..498e38ef5
--- /dev/null
+++ b/packages/plugin-renderer-lit/src/polyfill-resource.js
@@ -0,0 +1,41 @@
+import path from 'path';
+import { ResourceInterface } from '@greenwood/cli/src/lib/resource-interface.js';
+
+class PolyfillsResource extends ResourceInterface {
+ constructor(compilation, options = {}) {
+ super(compilation, options);
+ }
+
+ async shouldOptimize(url = '', body, headers = {}) {
+ return Promise.resolve(this.options.polyfill && path.extname(url) === '.html' || (headers.request && headers.request['content-type'].indexOf('text/html') >= 0));
+ }
+
+ async optimize(url, body) {
+ return new Promise(async (resolve, reject) => {
+ try {
+ const newHtml = body.replace('
+ This heading was rendered server side!
+
+