From 163cb2fdd05c7a3444cfb22edade79891f25ffd3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= Date: Thu, 31 Oct 2024 18:47:29 +0100 Subject: [PATCH 1/2] fix: make plugins and cloudinaryPluginProps tree-shakeable (#227) --- packages/url-loader/src/lib/cloudinary.ts | 38 ++++++++++++----------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/packages/url-loader/src/lib/cloudinary.ts b/packages/url-loader/src/lib/cloudinary.ts index bcc0108..5e91f5b 100644 --- a/packages/url-loader/src/lib/cloudinary.ts +++ b/packages/url-loader/src/lib/cloudinary.ts @@ -45,20 +45,7 @@ import type { } from "./plugin.js"; import { entriesOf, throwError } from "./utils.js"; -export const cloudinaryPluginProps = {} as Record; - -const validatePlugins = ( - ...plugins: plugins extends validatePlugins - ? plugins - : validatePlugins -) => { - plugins.forEach((plugin) => { - Object.assign(cloudinaryPluginProps, plugin.props); - }); - return plugins; -}; - -export const transformationPlugins = validatePlugins( +export const transformationPlugins = [ // Some features *must* be the first transformation applied // thus their plugins *must* come first in the chain @@ -96,10 +83,25 @@ export const transformationPlugins = validatePlugins( UnderlaysPlugin, VersionPlugin, ZoompanPlugin -); +] as const; + +const getCloudinaryPluginProps = ( + plugins: plugins extends validatePlugins + ? plugins + : validatePlugins +): Record => { + const cloudinaryPluginProps = {} as Record; + + plugins.forEach((plugin) => { + Object.assign(cloudinaryPluginProps, plugin.props); + }); + + return cloudinaryPluginProps; +}; + +export const cloudinaryPluginProps = /* #__PURE__ */ getCloudinaryPluginProps(transformationPlugins); -// important this comes after `validatePlugins` is called so we've collected the props -export const cloudinaryPluginKeys: readonly CloudinaryKey[] = Object.keys( +export const cloudinaryPluginKeys: readonly CloudinaryKey[] = /* #__PURE__ */ Object.keys( cloudinaryPluginProps ) as never; @@ -355,7 +357,7 @@ type validatePlugins< ] ? validatePlugins< rest, - [ + readonly [ ...validated, keyof opts & keyof next["inferOwnOptions"] extends never ? // if the intersection is never, no options duplicate existing so the plugin is valid From 23e9afd3180ecdcf93d898b07ebc1a7d7e0e2c35 Mon Sep 17 00:00:00 2001 From: semantic-release-bot Date: Thu, 31 Oct 2024 17:48:47 +0000 Subject: [PATCH 2/2] chore(release): 6.0.0-beta.5 [skip ci] # [@cloudinary-util/url-loader-v6.0.0-beta.5](https://github.com/cloudinary-community/cloudinary-util/compare/@cloudinary-util/url-loader-v6.0.0-beta.4...@cloudinary-util/url-loader-v6.0.0-beta.5) (2024-10-31) ### Bug Fixes * make plugins and cloudinaryPluginProps tree-shakeable ([#227](https://github.com/cloudinary-community/cloudinary-util/issues/227)) ([163cb2f](https://github.com/cloudinary-community/cloudinary-util/commit/163cb2fdd05c7a3444cfb22edade79891f25ffd3)) --- packages/url-loader/CHANGELOG.md | 7 +++++++ packages/url-loader/package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/url-loader/CHANGELOG.md b/packages/url-loader/CHANGELOG.md index 7435dcd..6a8ef10 100644 --- a/packages/url-loader/CHANGELOG.md +++ b/packages/url-loader/CHANGELOG.md @@ -1,3 +1,10 @@ +# [@cloudinary-util/url-loader-v6.0.0-beta.5](https://github.com/cloudinary-community/cloudinary-util/compare/@cloudinary-util/url-loader-v6.0.0-beta.4...@cloudinary-util/url-loader-v6.0.0-beta.5) (2024-10-31) + + +### Bug Fixes + +* make plugins and cloudinaryPluginProps tree-shakeable ([#227](https://github.com/cloudinary-community/cloudinary-util/issues/227)) ([163cb2f](https://github.com/cloudinary-community/cloudinary-util/commit/163cb2fdd05c7a3444cfb22edade79891f25ffd3)) + # [@cloudinary-util/url-loader-v6.0.0-beta.4](https://github.com/cloudinary-community/cloudinary-util/compare/@cloudinary-util/url-loader-v6.0.0-beta.3...@cloudinary-util/url-loader-v6.0.0-beta.4) (2024-10-25) diff --git a/packages/url-loader/package.json b/packages/url-loader/package.json index f20e5d1..6e687f4 100644 --- a/packages/url-loader/package.json +++ b/packages/url-loader/package.json @@ -1,6 +1,6 @@ { "name": "@cloudinary-util/url-loader", - "version": "6.0.0-beta.4", + "version": "6.0.0-beta.5", "type": "module", "main": "./dist/index.cjs", "types": "./dist/index.d.cts",