From 076ce0f4f76afe629b7c99c3996d88d51bf20358 Mon Sep 17 00:00:00 2001 From: Jonathan Stockdill Date: Sun, 21 Jul 2024 10:19:25 -0400 Subject: [PATCH] Dynamic Sitemap - cleanup (#1232) --- .../resource/plugin-resouce-sitemap.js | 50 ------------------- packages/plugin-adapter-sitemap/src/index.js | 46 +++++++++++++++++ .../cases/build.default/greenwood.config.js | 5 +- 3 files changed, 49 insertions(+), 52 deletions(-) delete mode 100644 packages/cli/src/plugins/resource/plugin-resouce-sitemap.js diff --git a/packages/cli/src/plugins/resource/plugin-resouce-sitemap.js b/packages/cli/src/plugins/resource/plugin-resouce-sitemap.js deleted file mode 100644 index d5a28f008..000000000 --- a/packages/cli/src/plugins/resource/plugin-resouce-sitemap.js +++ /dev/null @@ -1,50 +0,0 @@ -/* - * - * Sitemap - * - */ - -import { ResourceInterface } from '../../lib/resource-interface.js'; - -class SitemapResource extends ResourceInterface { - constructor(compilation, options) { - super(compilation, options); - } - - async shouldServe(url) { - return url.pathname.endsWith('sitemap.xml') - } - - - async serve(url) { - - //TODO: check if module exists - - const { projectDirectory } = compilation.context; - - try { - const sitemapModule = await import(`${projectDirectory}/src/sitemap.xml.js`); - const sitemap = await sitemapModule.generateSitemap(this.compilation); - return new Response(sitemap, { headers: { 'Content-Type': 'text/xml' } }); - - } catch (error) { - console.error('Error loading module: ./sitemap.xml.js', error); - return new Response("Sitemap oops.", { headers: { 'Content-Type': 'text/xml' } }); - } - - } - -} - -const greenwoodPluginResourceSitemap = { - type: 'resource', - name: 'plugin-sitemap', - provider: (compilation, options) => new SitemapResource(compilation, options) -}; - -export { greenwoodPluginResourceSitemap }; - - - - - diff --git a/packages/plugin-adapter-sitemap/src/index.js b/packages/plugin-adapter-sitemap/src/index.js index b85f4ca3e..5e203d87d 100644 --- a/packages/plugin-adapter-sitemap/src/index.js +++ b/packages/plugin-adapter-sitemap/src/index.js @@ -27,4 +27,50 @@ const greenwoodPluginAdapterSitemap = (options = {}) => [{ } }]; + +/* + * + * Sitemap + * + */ + +import { ResourceInterface } from '@greenwood/cli/src/lib/resource-interface.js'; + +class SitemapResource extends ResourceInterface { + constructor(compilation, options) { + super(compilation, options); + } + + async shouldServe(url) { + return url.pathname.endsWith('sitemap.xml') + } + + + async serve(url) { + + //TODO: check if module exists + + const { projectDirectory } = this.compilation.context; + + try { + const sitemapModule = await import(`${projectDirectory}/src/sitemap.xml.js`); + const sitemap = await sitemapModule.generateSitemap(this.compilation); + return new Response(sitemap, { headers: { 'Content-Type': 'text/xml' } }); + + } catch (error) { + console.error('Error loading module: ./sitemap.xml.js', error); + return new Response("Sitemap oops.", { headers: { 'Content-Type': 'text/xml' } }); + } + + } + +} + +const greenwoodPluginResourceSitemap = { + type: 'resource', + name: 'plugin-sitemap', + provider: (compilation, options) => new SitemapResource(compilation, options) +}; + +export { greenwoodPluginResourceSitemap }; export { greenwoodPluginAdapterSitemap }; \ No newline at end of file diff --git a/packages/plugin-adapter-sitemap/test/cases/build.default/greenwood.config.js b/packages/plugin-adapter-sitemap/test/cases/build.default/greenwood.config.js index 8fafa65ee..1537f1e2d 100644 --- a/packages/plugin-adapter-sitemap/test/cases/build.default/greenwood.config.js +++ b/packages/plugin-adapter-sitemap/test/cases/build.default/greenwood.config.js @@ -1,8 +1,9 @@ -import { greenwoodPluginAdapterSitemap } from '../../../src/index.js'; +import { greenwoodPluginAdapterSitemap, greenwoodPluginResourceSitemap } from '../../../src/index.js'; export default { plugins: [ - greenwoodPluginAdapterSitemap() + greenwoodPluginAdapterSitemap(), + greenwoodPluginResourceSitemap ] }; \ No newline at end of file