diff --git a/src/runtime/providers/shopify.ts b/src/runtime/providers/shopify.ts index d55ccf376..4ec9d250e 100644 --- a/src/runtime/providers/shopify.ts +++ b/src/runtime/providers/shopify.ts @@ -1,4 +1,4 @@ -import { joinURL, withBase } from 'ufo' +import { parseQuery, withBase, withQuery } from 'ufo' import { createOperationsGenerator } from '../utils/index' import { defineProvider } from '../utils/provider' @@ -36,7 +36,10 @@ export default defineProvider({ const operations = operationsGenerator(modifiers) return { - url: withBase(joinURL(src + (operations ? ('?' + operations) : '')), baseURL), + url: withBase( + withQuery(src, parseQuery(operations)), + baseURL, + ), } }, }) diff --git a/test/nuxt/providers.test.ts b/test/nuxt/providers.test.ts index a867866a3..c1ed0e8cd 100644 --- a/test/nuxt/providers.test.ts +++ b/test/nuxt/providers.test.ts @@ -444,7 +444,7 @@ describe('Providers', () => { baseURL: '', } - const originalUrl = 'https://cdn.shopify.com/static/sample-images/garnished.jpeg' + const originalUrl = 'https://cdn.shopify.com/static/sample-images/garnished.jpeg?v=1763534395' for (const image of images) { const [, modifiers] = image.args diff --git a/test/providers.ts b/test/providers.ts index 75ec56e7c..6f497c421 100644 --- a/test/providers.ts +++ b/test/providers.ts @@ -23,7 +23,7 @@ export const images = [ prismic: { url: '/test.png?auto=compress,format&rect=0,0,200,200&w=100&h=100' }, prismicUnsplash: { url: 'https://images.unsplash.com/test.png?auto=compress,format&rect=0,0,200,200&w=100&h=100' }, sanity: { url: 'https://cdn.sanity.io/images/projectid/production/test-300x450.png?auto=format' }, - shopify: { url: 'https://cdn.shopify.com/static/sample-images/garnished.jpeg' }, + shopify: { url: 'https://cdn.shopify.com/static/sample-images/garnished.jpeg?v=1763534395' }, contentful: { url: '/test.png' }, cloudimage: { url: 'https://demo.cloudimg.io/v7/_sl_/test.png' }, storyblok: { url: 'https://a.storyblok.com/test.png' }, @@ -64,7 +64,7 @@ export const images = [ prismic: { url: '/test.png?auto=compress,format&rect=0,0,200,200&w=200&h=100' }, prismicUnsplash: { url: 'https://images.unsplash.com/test.png?auto=compress,format&rect=0,0,200,200&w=200&h=100' }, sanity: { url: 'https://cdn.sanity.io/images/projectid/production/test-300x450.png?w=200&auto=format' }, - shopify: { url: 'https://cdn.shopify.com/static/sample-images/garnished.jpeg?width=200' }, + shopify: { url: 'https://cdn.shopify.com/static/sample-images/garnished.jpeg?v=1763534395&width=200' }, contentful: { url: '/test.png?w=200' }, cloudimage: { url: 'https://demo.cloudimg.io/v7/_sl_/test.png?width=200' }, storyblok: { url: 'https://a.storyblok.com/test.png/m/200x0' }, @@ -104,7 +104,7 @@ export const images = [ prismic: { url: '/test.png?auto=compress,format&rect=0,0,200,200&w=100&h=200' }, prismicUnsplash: { url: 'https://images.unsplash.com/test.png?auto=compress,format&rect=0,0,200,200&w=100&h=200' }, sanity: { url: 'https://cdn.sanity.io/images/projectid/production/test-300x450.png?h=200&auto=format' }, - shopify: { url: 'https://cdn.shopify.com/static/sample-images/garnished.jpeg?height=200' }, + shopify: { url: 'https://cdn.shopify.com/static/sample-images/garnished.jpeg?v=1763534395&height=200' }, contentful: { url: '/test.png?h=200' }, cloudimage: { url: 'https://demo.cloudimg.io/v7/_sl_/test.png?height=200' }, storyblok: { url: 'https://a.storyblok.com/test.png/m/0x200' }, @@ -144,7 +144,7 @@ export const images = [ prismicUnsplash: { url: 'https://images.unsplash.com/test.png?auto=compress,format&rect=0,0,200,200&w=200&h=200' }, prepr: { url: 'https://projectName.stream.prepr.io/w_200,h_200/image-test-300x450-png' }, sanity: { url: 'https://cdn.sanity.io/images/projectid/production/test-300x450.png?w=200&h=200&auto=format' }, - shopify: { url: 'https://cdn.shopify.com/static/sample-images/garnished.jpeg?width=200&height=200' }, + shopify: { url: 'https://cdn.shopify.com/static/sample-images/garnished.jpeg?v=1763534395&width=200&height=200' }, contentful: { url: '/test.png?w=200&h=200' }, cloudimage: { url: 'https://demo.cloudimg.io/v7/_sl_/test.png?width=200&height=200' }, storyblok: { url: 'https://a.storyblok.com/test.png/m/200x200' }, @@ -184,7 +184,7 @@ export const images = [ prismicUnsplash: { url: 'https://images.unsplash.com/test.png?auto=compress,format&rect=0,0,200,200&w=200&h=200&fit=fill' }, prepr: { url: 'https://projectName.stream.prepr.io/w_200,h_200,fit_contain/image-test-300x450-png' }, sanity: { url: 'https://cdn.sanity.io/images/projectid/production/test-300x450.png?w=200&h=200&fit=fill&auto=format&bg=ffffff' }, - shopify: { url: 'https://cdn.shopify.com/static/sample-images/garnished.jpeg?width=200&height=200&fit=contain' }, + shopify: { url: 'https://cdn.shopify.com/static/sample-images/garnished.jpeg?v=1763534395&width=200&height=200&fit=contain' }, contentful: { url: '/test.png?w=200&h=200&fit=fill' }, cloudimage: { url: 'https://demo.cloudimg.io/v7/_sl_/test.png?width=200&height=200&func=fit' }, storyblok: { url: 'https://a.storyblok.com/test.png/m/fit-contain/200x200' }, @@ -223,7 +223,7 @@ export const images = [ prismic: { url: '/test.png?auto=compress,format&rect=0,0,200,200&w=200&h=200&fit=fill&fm=jpeg' }, prismicUnsplash: { url: 'https://images.unsplash.com/test.png?auto=compress,format&rect=0,0,200,200&w=200&h=200&fit=fill&fm=jpeg' }, sanity: { url: 'https://cdn.sanity.io/images/projectid/production/test-300x450.png?w=200&h=200&fit=fill&fm=jpg&bg=ffffff' }, - shopify: { url: 'https://cdn.shopify.com/static/sample-images/garnished.jpeg?width=200&height=200&fit=contain&format=jpeg' }, + shopify: { url: 'https://cdn.shopify.com/static/sample-images/garnished.jpeg?v=1763534395&width=200&height=200&fit=contain&format=jpeg' }, prepr: { url: 'https://projectName.stream.prepr.io/w_200,h_200,fit_contain,format_jpg/image-test-300x450-png' }, contentful: { url: '/test.png?w=200&h=200&fit=fill&fm=jpg' }, cloudimage: { url: 'https://demo.cloudimg.io/v7/_sl_/test.png?width=200&height=200&func=fit&force_format=jpeg' },