From e21934d6002fdc3c64b64f3d39c8cd4f0dc70036 Mon Sep 17 00:00:00 2001 From: Owen Buckley Date: Wed, 10 Jul 2024 09:30:14 -0400 Subject: [PATCH 1/4] supporting attributes from frontmatter imports --- packages/cli/src/lib/layout-utils.js | 26 ++++++++++++++++--- packages/cli/src/lifecycles/bundle.js | 2 +- ...ault.workspace-frontmatter-imports.spec.js | 19 ++++++++++++++ .../src/pages/examples/demo.md | 4 +-- .../serve.default.ssr.spec.js | 2 +- 5 files changed, 45 insertions(+), 8 deletions(-) diff --git a/packages/cli/src/lib/layout-utils.js b/packages/cli/src/lib/layout-utils.js index e39739676..2b1ccc0b4 100644 --- a/packages/cli/src/lib/layout-utils.js +++ b/packages/cli/src/lib/layout-utils.js @@ -227,17 +227,35 @@ async function getAppLayout(pageLayoutContents, compilation, customImports = [], const mergedStyles = [ ...appRoot.querySelectorAll('head style'), ...[...(pageRoot && pageRoot.querySelectorAll('head style')) || []], - ...customImports.filter(resource => resource.split('.').pop() === 'css') - .map(resource => ``) + ...customImports.filter(resource => resource.split(' ')[0].split('.').pop() === 'css') + .map((resource) => { + console.log({ resource }); + const [href, ...attributes] = resource.split(' '); + const attrs = attributes?.length > 0 + ? attributes.join(' ') + : ''; + console.log({ href, attributes, attrs }); + return ``; + }) ].join('\n'); const mergedScripts = [ ...appRoot.querySelectorAll('head script'), ...[...(pageRoot && pageRoot.querySelectorAll('head script')) || []], - ...customImports.filter(resource => resource.split('.').pop() === 'js') - .map(resource => ``) + ...customImports.filter(resource => resource.split(' ')[0].split('.').pop() === 'js') + .map((resource) => { + console.log({ resource }); + const [src, ...attributes] = resource.split(' '); + const attrs = attributes?.length > 0 + ? attributes.join(' ') + : ''; + console.log({ src, attributes, attrs }); + return ``; + }) ].join('\n'); + console.log({ mergedStyles }); + const finalBody = pageLayoutContents ? appBody.replace(/<\/page-outlet>/, pageBody) : appBody; diff --git a/packages/cli/src/lifecycles/bundle.js b/packages/cli/src/lifecycles/bundle.js index 4ed4cb218..9c963f786 100644 --- a/packages/cli/src/lifecycles/bundle.js +++ b/packages/cli/src/lifecycles/bundle.js @@ -105,7 +105,7 @@ async function optimizeStaticPages(compilation, plugins) { } // clean up optimization markers - const body = (await response.text()).replace(/data-gwd-opt=".*[a-z]"/g, ''); + const body = (await response.text()).replace(/data-gwd-opt=".*?[a-z]"/g, ''); await fs.writeFile(new URL(`.${outputPath}`, outputDir), body); }) diff --git a/packages/cli/test/cases/build.default.workspace-frontmatter-imports/build.default.workspace-frontmatter-imports.spec.js b/packages/cli/test/cases/build.default.workspace-frontmatter-imports/build.default.workspace-frontmatter-imports.spec.js index d5f789371..d7c39f9f3 100644 --- a/packages/cli/test/cases/build.default.workspace-frontmatter-imports/build.default.workspace-frontmatter-imports.spec.js +++ b/packages/cli/test/cases/build.default.workspace-frontmatter-imports/build.default.workspace-frontmatter-imports.spec.js @@ -110,6 +110,16 @@ describe('Build Greenwood With: ', function() { it('should output a heading tag from the custom element', function() { expect(html).to.contain('

My Counter

'); }); + + it('should have expected attributes on the `` tag from frontmatter imports', async function() { + const link = Array.from(dom.window.document + .querySelectorAll('head link')) + .find(link => link.getAttribute('href')?.startsWith('/components/counter/')); + + expect(link.getAttribute('data-gwd-opt')).to.equal(null); + expect(link.getAttribute('foo')).to.equal('bar'); + expect(link.getAttribute('baz')).to.equal('bar'); + }); }); describe('Custom Multihyphen component', () => { @@ -127,6 +137,15 @@ describe('Build Greenwood With: ', function() { it('should have the expected prerendered content', function() { expect(html).to.contain('I have multiple hyphens in my tag name!'); }); + + it('should have expected attributes on the ` + ``` From eba86797ef458bd600efdf3c4fd3177fd3606cf2 Mon Sep 17 00:00:00 2001 From: Owen Buckley Date: Wed, 10 Jul 2024 09:34:14 -0400 Subject: [PATCH 3/4] clean up console logs --- packages/cli/src/lib/layout-utils.js | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/packages/cli/src/lib/layout-utils.js b/packages/cli/src/lib/layout-utils.js index 2b1ccc0b4..8dbf28197 100644 --- a/packages/cli/src/lib/layout-utils.js +++ b/packages/cli/src/lib/layout-utils.js @@ -229,12 +229,11 @@ async function getAppLayout(pageLayoutContents, compilation, customImports = [], ...[...(pageRoot && pageRoot.querySelectorAll('head style')) || []], ...customImports.filter(resource => resource.split(' ')[0].split('.').pop() === 'css') .map((resource) => { - console.log({ resource }); const [href, ...attributes] = resource.split(' '); const attrs = attributes?.length > 0 ? attributes.join(' ') : ''; - console.log({ href, attributes, attrs }); + return ``; }) ].join('\n'); @@ -244,18 +243,15 @@ async function getAppLayout(pageLayoutContents, compilation, customImports = [], ...[...(pageRoot && pageRoot.querySelectorAll('head script')) || []], ...customImports.filter(resource => resource.split(' ')[0].split('.').pop() === 'js') .map((resource) => { - console.log({ resource }); const [src, ...attributes] = resource.split(' '); const attrs = attributes?.length > 0 ? attributes.join(' ') : ''; - console.log({ src, attributes, attrs }); + return ``; }) ].join('\n'); - console.log({ mergedStyles }); - const finalBody = pageLayoutContents ? appBody.replace(/<\/page-outlet>/, pageBody) : appBody; From b6d42ca2f20ac4c9dc3a419ecbbd214396075a7b Mon Sep 17 00:00:00 2001 From: Owen Buckley Date: Thu, 11 Jul 2024 10:22:41 -0400 Subject: [PATCH 4/4] quote formatting test case --- .../src/pages/examples/demo.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cli/test/cases/build.default.workspace-frontmatter-imports/src/pages/examples/demo.md b/packages/cli/test/cases/build.default.workspace-frontmatter-imports/src/pages/examples/demo.md index 75ac5859e..49db0a955 100644 --- a/packages/cli/test/cases/build.default.workspace-frontmatter-imports/src/pages/examples/demo.md +++ b/packages/cli/test/cases/build.default.workspace-frontmatter-imports/src/pages/examples/demo.md @@ -2,7 +2,7 @@ title: Demo Page imports: - /components/counter/counter.js - - /components/counter/counter.css data-gwd-opt="none" foo="bar" baz="bar" + - /components/counter/counter.css data-gwd-opt='none' foo='bar' baz='bar' - /components/multi-hyphen/multi-hyphen.js type="module" foo="bar" ---