next-cloudinary 0.0.10 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -75,8 +75,8 @@
75
75
  }
76
76
 
77
77
  var cropsGravityAuto = ['crop', 'fill', 'lfill', 'fill_pad', 'thumb'];
78
- var props$5 = ['crop', 'gravity'];
79
- function plugin$5(_temp) {
78
+ var props$6 = ['crop', 'gravity'];
79
+ function plugin$6(_temp) {
80
80
  var _ref = _temp === void 0 ? {} : _temp,
81
81
  cldImage = _ref.cldImage,
82
82
  options = _ref.options,
@@ -109,6 +109,82 @@
109
109
  }
110
110
 
111
111
  var croppingPlugin = {
112
+ __proto__: null,
113
+ props: props$6,
114
+ plugin: plugin$6
115
+ };
116
+
117
+ var params = ['art', {
118
+ prop: 'autoBrightness',
119
+ effect: 'auto_brightness'
120
+ }, {
121
+ prop: 'autoColor',
122
+ effect: 'auto_color'
123
+ }, {
124
+ prop: 'autoContrast',
125
+ effect: 'auto_contrast'
126
+ }, {
127
+ prop: 'assistColorblind',
128
+ effect: 'assist_colorblind'
129
+ }, 'blackwhite', 'blur', {
130
+ prop: 'blurFaces',
131
+ effect: 'blur_faces'
132
+ }, {
133
+ prop: 'blurRegion',
134
+ effect: 'blur_region'
135
+ }, 'brightness', {
136
+ prop: 'brightnessHSB',
137
+ effect: 'brightness_hsb'
138
+ }, 'cartoonify', 'colorize', 'contrast', 'distort', {
139
+ prop: 'fillLight',
140
+ effect: 'fill_light'
141
+ }, 'gamma', {
142
+ prop: 'gradientFade',
143
+ effect: 'gradient_fade'
144
+ }, 'grayscale', 'improve', 'negate', {
145
+ prop: 'oilPaint',
146
+ effect: 'oil_paint'
147
+ }, 'outline', 'pixelate', {
148
+ prop: 'pixelateFaces',
149
+ effect: 'pixelate_faces'
150
+ }, {
151
+ prop: 'pixelateRegion',
152
+ effect: 'pixelate_region'
153
+ }, 'redeye', {
154
+ prop: 'replaceColor',
155
+ effect: 'replace_color'
156
+ }, 'saturation', 'sepia', 'shadow', 'sharpen', 'shear', {
157
+ prop: 'simulateColorblind',
158
+ effect: 'simulate_colorblind'
159
+ }, 'tint', {
160
+ prop: 'unsharpMask',
161
+ effect: 'unsharp_mask'
162
+ }, 'vectorize', 'vibrance', 'vignette'];
163
+ var props$5 = params.map(function (param) {
164
+ return param.prop || param;
165
+ });
166
+ function plugin$5(_temp) {
167
+ var _ref = _temp === void 0 ? {} : _temp,
168
+ cldImage = _ref.cldImage,
169
+ cldOptions = _ref.cldOptions;
170
+
171
+ params.forEach(function (key) {
172
+ var prop = key.prop || key;
173
+ var effect = key.effect || key;
174
+
175
+ if (prop === 'oilPaint' && cldOptions[prop]) {
176
+ console.log('cldOptions[prop]', cldOptions[prop]);
177
+ }
178
+
179
+ if (cldOptions[prop] === true) {
180
+ cldImage.effect("e_" + effect);
181
+ } else if (typeof cldOptions[prop] === 'string') {
182
+ cldImage.effect("e_" + effect + ":" + cldOptions[prop]);
183
+ }
184
+ });
185
+ }
186
+
187
+ var effectsPlugin = {
112
188
  __proto__: null,
113
189
  props: props$5,
114
190
  plugin: plugin$5
@@ -271,97 +347,40 @@
271
347
  plugin: plugin$4
272
348
  };
273
349
 
274
- var props$3 = ['removeBackground'];
350
+ var props$3 = ['rawTransformations'];
275
351
  function plugin$3(_temp) {
276
352
  var _ref = _temp === void 0 ? {} : _temp,
277
353
  cldImage = _ref.cldImage,
278
354
  cldOptions = _ref.cldOptions;
279
355
 
280
- var _cldOptions$removeBac = cldOptions.removeBackground,
281
- removeBackground = _cldOptions$removeBac === void 0 ? false : _cldOptions$removeBac;
282
-
283
- if (removeBackground) {
284
- cldImage.effect('e_background_removal');
285
- }
356
+ var _cldOptions$rawTransf = cldOptions.rawTransformations,
357
+ rawTransformations = _cldOptions$rawTransf === void 0 ? [] : _cldOptions$rawTransf;
358
+ rawTransformations.forEach(function (transformation) {
359
+ cldImage.addTransformation(transformation);
360
+ });
286
361
  }
287
362
 
288
- var removeBackgroundPlugin = {
363
+ var rawTransformationsPlugin = {
289
364
  __proto__: null,
290
365
  props: props$3,
291
366
  plugin: plugin$3
292
367
  };
293
368
 
294
- var params = ['art', {
295
- prop: 'autoBrightness',
296
- effect: 'auto_brightness'
297
- }, {
298
- prop: 'autoColor',
299
- effect: 'auto_color'
300
- }, {
301
- prop: 'autoContrast',
302
- effect: 'auto_contrast'
303
- }, {
304
- prop: 'assistColorblind',
305
- effect: 'assist_colorblind'
306
- }, 'blackwhite', 'blur', {
307
- prop: 'blurFaces',
308
- effect: 'blur_faces'
309
- }, {
310
- prop: 'blurRegion',
311
- effect: 'blur_region'
312
- }, 'brightness', {
313
- prop: 'brightnessHSB',
314
- effect: 'brightness_hsb'
315
- }, 'cartoonify', 'colorize', 'contrast', 'distort', {
316
- prop: 'fillLight',
317
- effect: 'fill_light'
318
- }, 'gamma', {
319
- prop: 'gradientFade',
320
- effect: 'gradient_fade'
321
- }, 'grayscale', 'improve', 'negate', {
322
- prop: 'oilPaint',
323
- effect: 'oil_paint'
324
- }, 'outline', 'pixelate', {
325
- prop: 'pixelateFaces',
326
- effect: 'pixelate_faces'
327
- }, {
328
- prop: 'pixelateRegion',
329
- effect: 'pixelate_region'
330
- }, 'redeye', {
331
- prop: 'replaceColor',
332
- effect: 'replace_color'
333
- }, 'saturation', 'sepia', 'shadow', 'sharpen', 'shear', {
334
- prop: 'simulateColorblind',
335
- effect: 'simulate_colorblind'
336
- }, 'tint', {
337
- prop: 'unsharpMask',
338
- effect: 'unsharp_mask'
339
- }, 'vectorize', 'vibrance', 'vignette'];
340
- var props$2 = params.map(function (param) {
341
- return param.prop || param;
342
- });
369
+ var props$2 = ['removeBackground'];
343
370
  function plugin$2(_temp) {
344
371
  var _ref = _temp === void 0 ? {} : _temp,
345
372
  cldImage = _ref.cldImage,
346
373
  cldOptions = _ref.cldOptions;
347
374
 
348
- params.forEach(function (key) {
349
- var prop = key.prop || key;
350
- var effect = key.effect || key;
351
-
352
- if (prop === 'oilPaint' && cldOptions[prop]) {
353
- console.log('cldOptions[prop]', cldOptions[prop]);
354
- }
375
+ var _cldOptions$removeBac = cldOptions.removeBackground,
376
+ removeBackground = _cldOptions$removeBac === void 0 ? false : _cldOptions$removeBac;
355
377
 
356
- if (cldOptions[prop] === true) {
357
- cldImage.effect("e_" + effect);
358
- } else if (typeof cldOptions[prop] === 'string') {
359
- cldImage.effect("e_" + effect + ":" + cldOptions[prop]);
360
- }
361
- });
378
+ if (removeBackground) {
379
+ cldImage.effect('e_background_removal');
380
+ }
362
381
  }
363
382
 
364
- var effectsPlugin = {
383
+ var removeBackgroundPlugin = {
365
384
  __proto__: null,
366
385
  props: props$2,
367
386
  plugin: plugin$2
@@ -444,9 +463,6 @@
444
463
  };
445
464
 
446
465
  var props = ['zoompan'];
447
- var options = {
448
- format: 'gif'
449
- };
450
466
  function plugin(_temp) {
451
467
  var _ref = _temp === void 0 ? {} : _temp,
452
468
  cldImage = _ref.cldImage,
@@ -454,6 +470,7 @@
454
470
 
455
471
  var _cldOptions$zoompan = cldOptions.zoompan,
456
472
  zoompan = _cldOptions$zoompan === void 0 ? false : _cldOptions$zoompan;
473
+ var options = {};
457
474
 
458
475
  if (zoompan === true) {
459
476
  cldImage.effect('e_zoompan');
@@ -484,12 +501,19 @@
484
501
  cldImage.effect(loopEffect);
485
502
  }
486
503
  }
504
+
505
+ if (zoompan !== false) {
506
+ options.format = 'gif';
507
+ }
508
+
509
+ return {
510
+ options: options
511
+ };
487
512
  }
488
513
 
489
514
  var zoompanPlugin = {
490
515
  __proto__: null,
491
516
  props: props,
492
- options: options,
493
517
  plugin: plugin
494
518
  };
495
519
 
@@ -502,8 +526,10 @@
502
526
  analytics: false
503
527
  }
504
528
  });
505
- var transformationPlugins = [removeBackgroundPlugin, // Background Removal must always come first
506
- croppingPlugin, effectsPlugin, overlaysPlugin, underlaysPlugin, zoompanPlugin];
529
+ var transformationPlugins = [// Background Removal must always come first
530
+ removeBackgroundPlugin, croppingPlugin, effectsPlugin, overlaysPlugin, underlaysPlugin, zoompanPlugin, // Raw transformations needs to be last simply to make sure
531
+ // it's always expected to applied the same way
532
+ rawTransformationsPlugin];
507
533
  function cloudinaryLoader(defaultOptions, cldOptions) {
508
534
  var options = _extends({
509
535
  format: 'auto',
@@ -512,13 +538,14 @@
512
538
 
513
539
  var cldImage = cld.image(options.src);
514
540
  transformationPlugins.forEach(function (_ref) {
515
- var plugin = _ref.plugin,
516
- pluginOptions = _ref.options;
517
- plugin({
541
+ var plugin = _ref.plugin;
542
+
543
+ var _ref2 = plugin({
518
544
  cldImage: cldImage,
519
545
  options: options,
520
546
  cldOptions: cldOptions
521
- });
547
+ }) || {},
548
+ pluginOptions = _ref2.options;
522
549
 
523
550
  if (pluginOptions != null && pluginOptions.format) {
524
551
  options.format = pluginOptions.format;
@@ -1 +1 @@
1
- {"version":3,"file":"next-cloudinary.umd.js","sources":["../src/lib/cloudinary.js","../src/plugins/cropping.js","../src/constants/qualifiers.js","../src/plugins/overlays.js","../src/plugins/remove-background.js","../src/plugins/effects.js","../src/plugins/underlays.js","../src/plugins/zoompan.js","../src/loaders/cloudinary-loader.js","../src/components/CldImage/CldImage.js"],"sourcesContent":["import { Cloudinary } from '@cloudinary/url-gen';\n\nconst cld = new Cloudinary({\n cloud: {\n cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME\n },\n url: {\n // Used to avoid issues with SSR particularly for the blurred placeholder\n analytics: false\n }\n});\n\n/**\n * createPlaceholderUrl\n */\n\nexport function createPlaceholderUrl({ src, placeholder }) {\n const cldImage = cld.image(src)\n .resize('c_limit,w_100')\n .delivery('q_1')\n .format('auto');\n\n if ( placeholder === 'grayscale' ) {\n cldImage.effect('e_grayscale');\n }\n\n if ( placeholder.includes('color:') ) {\n const color = placeholder.split(':').splice(1).join(':')\n cldImage.effect('e_grayscale');\n cldImage.effect(`e_colorize:60,co_${color}`);\n }\n\n return cldImage.toURL();\n}","const cropsGravityAuto = [ 'crop', 'fill', 'lfill', 'fill_pad', 'thumb' ];\n\nexport const props = ['crop', 'gravity'];\n\nexport function plugin({ cldImage, options, cldOptions } = {}) {\n const { width, height } = options;\n const { crop = 'limit', gravity } = cldOptions;\n\n let transformationString = `c_${crop},w_${width}`;\n\n if ( !gravity && cropsGravityAuto.includes(crop) ) {\n gravity = 'auto';\n }\n\n if ( !['limit'].includes(crop) ) {\n transformationString = `${transformationString},h_${height}`;\n }\n\n if ( gravity ) {\n if ( gravity === 'auto' && !cropsGravityAuto.includes(crop) ) {\n console.warn('Auto gravity can only be used with crop, fill, lfill, fill_pad or thumb. Not applying gravity.');\n } else {\n transformationString = `${transformationString},g_${gravity}`;\n }\n }\n\n cldImage.resize(transformationString);\n}","// aspectRatio\n\nexport const primary = {\n aspectRatio: {\n qualifier: 'ar'\n },\n crop: {\n qualifier: 'c'\n },\n gravity: {\n qualifier: 'g'\n },\n height: {\n qualifier: 'h'\n },\n width: {\n qualifier: 'w'\n },\n};\n\nexport const position = {\n angle: {\n qualifier: 'a'\n },\n gravity: {\n qualifier: 'g'\n },\n x: {\n qualifier: 'x'\n },\n y: {\n qualifier: 'y'\n },\n}\n\nexport const text = {\n color: {\n qualifier: 'co',\n location: 'primary'\n },\n fontFamily: {\n qualifier: false\n },\n fontSize: {\n qualifier: false\n },\n fontWeight: {\n qualifier: false\n },\n letterSpacing: {\n qualifier: 'letter_spacing'\n },\n textDecoration: {\n qualifier: false\n }\n}","import {\n primary as qualifiersPrimary,\n text as qualifiersText,\n position as qualifiersPosition\n} from '../constants/qualifiers';\n\nexport const props = ['overlays'];\n\nexport function plugin({ cldImage, options, cldOptions } = {}) {\n const { overlays = [] } = cldOptions;\n\n const type = 'overlay';\n const typeQualifier = 'l';\n\n overlays.forEach(({ publicId, position, text, effects: layerEffects = [], ...options }) => {\n const hasPublicId = typeof publicId === 'string';\n const hasText = typeof text === 'object';\n const hasPosition = typeof position === 'object';\n\n if ( !hasPublicId && !hasText ) {\n console.warn(`An ${type} is missing Public ID or Text`);\n return;\n }\n\n // Start to construct the transformation string using text or the public ID\n // if it's image-based\n\n let layerTransformation;\n\n if ( hasText ) {\n layerTransformation = `${typeQualifier}_text`;\n } else {\n layerTransformation = `${typeQualifier}_${publicId.replace(/\\//g, ':')}`;\n }\n\n // Begin organizing transformations based on what it is and the location\n // it needs to be placed in the URL\n\n const primary = [];\n const applied = [];\n\n // Gemeral options\n\n Object.keys(options).forEach(key => {\n if ( !qualifiersPrimary[key] ) return;\n const { qualifier } = qualifiersPrimary[key];\n primary.push(`${qualifier}_${options[key]}`);\n });\n\n // Layer effects\n\n layerEffects.forEach(effect => {\n Object.keys(effect).forEach(key => {\n if ( !qualifiersPrimary[key] ) return;\n const { qualifier } = qualifiersPrimary[key];\n primary.push(`${qualifier}_${effect[key]}`);\n });\n });\n\n // Text styling\n\n if ( hasText ) {\n const textTransformations = [];\n\n Object.keys(text).forEach(key => {\n if ( !qualifiersText[key] ) return;\n\n const { qualifier, location } = qualifiersText[key];\n\n if ( location === 'primary' ) {\n primary.push(`${qualifier}_${text[key]}`);\n } else {\n textTransformations.push(text[key]);\n }\n });\n\n layerTransformation = `${layerTransformation}:${textTransformations.join('_')}:${text.text}`\n }\n\n // Positioning\n\n if ( hasPosition ) {\n Object.keys(position).forEach(key => {\n if ( !qualifiersPosition[key] ) return;\n\n const { qualifier } = qualifiersPosition[key];\n\n applied.push(`${qualifier}_${position[key]}`);\n });\n }\n\n // Add all primary transformations\n\n layerTransformation = `${layerTransformation},${primary.join(',')}`;\n\n // Add all applied transformations\n\n layerTransformation = `${layerTransformation}/fl_layer_apply`;\n\n if ( applied.length > 0 ) {\n layerTransformation = `${layerTransformation},${applied.join(',')}`;\n }\n\n // Finally add it to the image\n\n cldImage.addTransformation(layerTransformation);\n });\n}","export const props = ['removeBackground'];\n\nexport function plugin({ cldImage, options, cldOptions } = {}) {\n const { removeBackground = false } = cldOptions;\n if ( removeBackground ) {\n cldImage.effect('e_background_removal');\n }\n}","const params = [\n 'art',\n {\n prop: 'autoBrightness',\n effect: 'auto_brightness',\n },\n {\n prop: 'autoColor',\n effect: 'auto_color',\n },\n {\n prop: 'autoContrast',\n effect: 'auto_contrast',\n },\n {\n prop: 'assistColorblind',\n effect: 'assist_colorblind',\n },\n 'blackwhite',\n 'blur',\n {\n prop: 'blurFaces',\n effect: 'blur_faces',\n },\n {\n prop: 'blurRegion',\n effect: 'blur_region',\n },\n 'brightness',\n {\n prop: 'brightnessHSB',\n effect: 'brightness_hsb',\n },\n 'cartoonify',\n 'colorize',\n 'contrast',\n 'distort',\n {\n prop: 'fillLight',\n effect: 'fill_light',\n },\n 'gamma',\n {\n prop: 'gradientFade',\n effect: 'gradient_fade',\n },\n 'grayscale',\n 'improve',\n 'negate',\n {\n prop: 'oilPaint',\n effect: 'oil_paint',\n },\n 'outline',\n 'pixelate',\n {\n prop: 'pixelateFaces',\n effect: 'pixelate_faces',\n },\n {\n prop: 'pixelateRegion',\n effect: 'pixelate_region',\n },\n 'redeye',\n {\n prop: 'replaceColor',\n effect: 'replace_color',\n },\n 'saturation',\n 'sepia',\n 'shadow',\n 'sharpen',\n 'shear',\n {\n prop: 'simulateColorblind',\n effect: 'simulate_colorblind',\n },\n 'tint',\n {\n prop: 'unsharpMask',\n effect: 'unsharp_mask',\n },\n 'vectorize',\n 'vibrance',\n 'vignette',\n];\n\nexport const props = params.map(param => param.prop || param);\n\nexport function plugin({ cldImage, cldOptions } = {}) {\n params.forEach(key => {\n\n const prop = key.prop || key;\n const effect = key.effect || key;\n\n if ( prop === 'oilPaint' && cldOptions[prop]) {\n console.log('cldOptions[prop]', cldOptions[prop])\n }\n if ( cldOptions[prop] === true ) {\n cldImage.effect(`e_${effect}`);\n } else if ( typeof cldOptions[prop] === 'string' ) {\n cldImage.effect(`e_${effect}:${cldOptions[prop]}`);\n }\n });\n}","import {\n primary as qualifiersPrimary,\n text as qualifiersText,\n position as qualifiersPosition\n} from '../constants/qualifiers';\n\nexport const props = ['underlays'];\n\nexport function plugin({ cldImage, options, cldOptions } = {}) {\n const { underlays = [] } = cldOptions;\n\n const type = 'underlay';\n const typeQualifier = 'u';\n\n underlays.forEach(({ publicId, type, position, text, effects: layerEffects = [], ...options }) => {\n const hasPublicId = typeof publicId === 'string';\n const hasPosition = typeof position === 'object';\n\n if ( !hasPublicId ) {\n console.warn(`An ${type} is missing a Public ID`);\n return;\n }\n\n // Start to construct the transformation string using text or the public ID\n // if it's image-based\n\n let layerTransformation = `${typeQualifier}_${publicId.replace(/\\//g, ':')}`;\n\n // Begin organizing transformations based on what it is and the location\n // it needs to be placed in the URL\n\n const primary = [];\n const applied = [];\n\n // Gemeral options\n\n Object.keys(options).forEach(key => {\n if ( !qualifiersPrimary[key] ) return;\n const { qualifier } = qualifiersPrimary[key];\n primary.push(`${qualifier}_${options[key]}`);\n });\n\n // Layer effects\n\n layerEffects.forEach(effect => {\n Object.keys(effect).forEach(key => {\n if ( !qualifiersPrimary[key] ) return;\n const { qualifier } = qualifiersPrimary[key];\n primary.push(`${qualifier}_${effect[key]}`);\n });\n });\n\n // Positioning\n\n if ( hasPosition ) {\n Object.keys(position).forEach(key => {\n if ( !qualifiersPosition[key] ) return;\n\n const { qualifier } = qualifiersPosition[key];\n\n applied.push(`${qualifier}_${position[key]}`);\n });\n }\n\n // Add all primary transformations\n\n layerTransformation = `${layerTransformation},${primary.join(',')}`;\n\n // Add all applied transformations\n\n layerTransformation = `${layerTransformation}/fl_layer_apply`;\n\n if ( applied.length > 0 ) {\n layerTransformation = `${layerTransformation},${applied.join(',')}`;\n }\n\n // Finally add it to the image\n\n cldImage.addTransformation(layerTransformation);\n });\n}","export const props = ['zoompan'];\n\nexport const options = {\n format: 'gif'\n}\n\nexport function plugin({ cldImage, cldOptions } = {}) {\n const { zoompan = false } = cldOptions;\n\n if ( zoompan === true ) {\n cldImage.effect('e_zoompan');\n } else if ( typeof zoompan === 'string' ) {\n if ( zoompan === 'loop' ) {\n cldImage.effect('e_zoompan');\n cldImage.effect('e_loop');\n } else {\n cldImage.effect(`e_zoompan:${zoompan}`);\n }\n } else if ( typeof zoompan === 'object' ) {\n let zoompanEffect = 'e_zoompan';\n\n if ( typeof zoompan.options === 'string' ) {\n zoompanEffect = `${zoompanEffect}${zoompan.options}`;\n }\n\n cldImage.effect(zoompanEffect);\n\n let loopEffect;\n\n if ( zoompan.loop === true ) {\n loopEffect = 'e_loop';\n } else if ( typeof zoompan.loop === 'string' ) {\n loopEffect = `e_loop${zoompan.loop}`;\n }\n\n if ( loopEffect ) {\n cldImage.effect(loopEffect);\n }\n }\n}","import { Cloudinary } from '@cloudinary/url-gen';\n\nimport * as croppingPlugin from '../plugins/cropping';\nimport * as overlaysPlugin from '../plugins/overlays';\nimport * as removeBackgroundPlugin from '../plugins/remove-background';\nimport * as effectsPlugin from '../plugins/effects';\nimport * as underlaysPlugin from '../plugins/underlays';\nimport * as zoompanPlugin from '../plugins/zoompan';\n\nimport {\n primary as qualifiersPrimary,\n text as qualifiersText,\n position as qualifiersPosition\n} from '../constants/qualifiers';\n\nconst cld = new Cloudinary({\n cloud: {\n cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME\n },\n url: {\n // Used to avoid issues with SSR particularly for the blurred placeholder\n analytics: false\n }\n});\n\nexport const transformationPlugins = [\n removeBackgroundPlugin, // Background Removal must always come first\n croppingPlugin,\n effectsPlugin,\n overlaysPlugin,\n underlaysPlugin,\n zoompanPlugin\n];\n\nexport function cloudinaryLoader(defaultOptions, cldOptions) {\n const options = {\n format: 'auto',\n quality: 'auto',\n ...defaultOptions\n };\n\n const cldImage = cld.image(options.src);\n\n transformationPlugins.forEach(({ plugin, options: pluginOptions }) => {\n plugin({\n cldImage,\n options,\n cldOptions\n });\n\n if ( pluginOptions?.format ) {\n options.format = pluginOptions.format;\n }\n });\n\n return cldImage\n .format(options.format)\n .delivery(`q_${options.quality}`)\n .toURL();\n}","import Image from 'next/image';\n\nimport { createPlaceholderUrl } from '../../lib/cloudinary';\nimport { cloudinaryLoader, transformationPlugins } from '../../loaders/cloudinary-loader';\n\nconst CldImage = props => {\n\n const CLD_OPTIONS = [];\n\n transformationPlugins.forEach(({ props = [] }) => {\n props.forEach(prop => {\n if ( CLD_OPTIONS.includes(prop) ) {\n throw new Error(`Option ${prop} already exists!`);\n }\n CLD_OPTIONS.push(prop);\n });\n })\n\n // Construct the base Image component props by filtering out Cloudinary-specific props\n\n const imageProps = {};\n\n Object.keys(props)\n .filter(key => !CLD_OPTIONS.includes(key))\n .forEach(key => imageProps[key] = props[key]);\n\n // Construct Cloudinary-specific props by looking for values for any of the supported prop keys\n\n const cldOptions = {};\n\n CLD_OPTIONS.forEach(key => {\n if ( props[key] ) {\n cldOptions[key] = props[key];\n }\n });\n\n // If we see a placeholder option, configure a Cloudinary-based URL.\n // The resulting image will always be blurred per Next.js, so we're\n // limited on options for placeholders.\n //\n // We need to do this logic here as we potentially need to mutate\n // an Image component prop as opposed to simply the URL\n //\n // https://nextjs.org/docs/api-reference/next/image#blurdataurl\n\n if ( imageProps.placeholder ) {\n imageProps.blurDataURL = createPlaceholderUrl({\n src: props.src,\n placeholder: props.placeholder\n });\n\n if ( imageProps.placeholder !== 'blur' ) {\n imageProps.placeholder = 'blur';\n }\n }\n\n return (\n <Image\n {...imageProps}\n loader={(options) => cloudinaryLoader({ ...imageProps, options }, cldOptions)}\n />\n );\n}\n\nexport default CldImage;"],"names":["cld","Cloudinary","cloud","cloudName","process","env","NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME","url","analytics","createPlaceholderUrl","src","placeholder","cldImage","image","resize","delivery","format","effect","includes","color","split","splice","join","toURL","cropsGravityAuto","props","plugin","options","cldOptions","width","height","crop","gravity","transformationString","console","warn","primary","aspectRatio","qualifier","position","angle","x","y","text","location","fontFamily","fontSize","fontWeight","letterSpacing","textDecoration","overlays","type","typeQualifier","forEach","publicId","effects","layerEffects","_excluded","hasPublicId","hasText","hasPosition","layerTransformation","replace","applied","Object","keys","key","qualifiersPrimary","push","textTransformations","qualifiersText","qualifiersPosition","length","addTransformation","removeBackground","params","prop","map","param","log","underlays","zoompan","zoompanEffect","loopEffect","loop","transformationPlugins","removeBackgroundPlugin","croppingPlugin","effectsPlugin","overlaysPlugin","underlaysPlugin","zoompanPlugin","cloudinaryLoader","defaultOptions","quality","pluginOptions","CldImage","CLD_OPTIONS","Error","imageProps","filter","blurDataURL","_jsx","Image"],"mappings":"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"}
1
+ {"version":3,"file":"next-cloudinary.umd.js","sources":["../src/lib/cloudinary.js","../src/plugins/cropping.js","../src/plugins/effects.js","../src/constants/qualifiers.js","../src/plugins/overlays.js","../src/plugins/raw-transformations.js","../src/plugins/remove-background.js","../src/plugins/underlays.js","../src/plugins/zoompan.js","../src/loaders/cloudinary-loader.js","../src/components/CldImage/CldImage.js"],"sourcesContent":["import { Cloudinary } from '@cloudinary/url-gen';\n\nconst cld = new Cloudinary({\n cloud: {\n cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME\n },\n url: {\n // Used to avoid issues with SSR particularly for the blurred placeholder\n analytics: false\n }\n});\n\n/**\n * createPlaceholderUrl\n */\n\nexport function createPlaceholderUrl({ src, placeholder }) {\n const cldImage = cld.image(src)\n .resize('c_limit,w_100')\n .delivery('q_1')\n .format('auto');\n\n if ( placeholder === 'grayscale' ) {\n cldImage.effect('e_grayscale');\n }\n\n if ( placeholder.includes('color:') ) {\n const color = placeholder.split(':').splice(1).join(':')\n cldImage.effect('e_grayscale');\n cldImage.effect(`e_colorize:60,co_${color}`);\n }\n\n return cldImage.toURL();\n}","const cropsGravityAuto = [ 'crop', 'fill', 'lfill', 'fill_pad', 'thumb' ];\n\nexport const props = ['crop', 'gravity'];\n\nexport function plugin({ cldImage, options, cldOptions } = {}) {\n const { width, height } = options;\n const { crop = 'limit', gravity } = cldOptions;\n\n let transformationString = `c_${crop},w_${width}`;\n\n if ( !gravity && cropsGravityAuto.includes(crop) ) {\n gravity = 'auto';\n }\n\n if ( !['limit'].includes(crop) ) {\n transformationString = `${transformationString},h_${height}`;\n }\n\n if ( gravity ) {\n if ( gravity === 'auto' && !cropsGravityAuto.includes(crop) ) {\n console.warn('Auto gravity can only be used with crop, fill, lfill, fill_pad or thumb. Not applying gravity.');\n } else {\n transformationString = `${transformationString},g_${gravity}`;\n }\n }\n\n cldImage.resize(transformationString);\n}","const params = [\n 'art',\n {\n prop: 'autoBrightness',\n effect: 'auto_brightness',\n },\n {\n prop: 'autoColor',\n effect: 'auto_color',\n },\n {\n prop: 'autoContrast',\n effect: 'auto_contrast',\n },\n {\n prop: 'assistColorblind',\n effect: 'assist_colorblind',\n },\n 'blackwhite',\n 'blur',\n {\n prop: 'blurFaces',\n effect: 'blur_faces',\n },\n {\n prop: 'blurRegion',\n effect: 'blur_region',\n },\n 'brightness',\n {\n prop: 'brightnessHSB',\n effect: 'brightness_hsb',\n },\n 'cartoonify',\n 'colorize',\n 'contrast',\n 'distort',\n {\n prop: 'fillLight',\n effect: 'fill_light',\n },\n 'gamma',\n {\n prop: 'gradientFade',\n effect: 'gradient_fade',\n },\n 'grayscale',\n 'improve',\n 'negate',\n {\n prop: 'oilPaint',\n effect: 'oil_paint',\n },\n 'outline',\n 'pixelate',\n {\n prop: 'pixelateFaces',\n effect: 'pixelate_faces',\n },\n {\n prop: 'pixelateRegion',\n effect: 'pixelate_region',\n },\n 'redeye',\n {\n prop: 'replaceColor',\n effect: 'replace_color',\n },\n 'saturation',\n 'sepia',\n 'shadow',\n 'sharpen',\n 'shear',\n {\n prop: 'simulateColorblind',\n effect: 'simulate_colorblind',\n },\n 'tint',\n {\n prop: 'unsharpMask',\n effect: 'unsharp_mask',\n },\n 'vectorize',\n 'vibrance',\n 'vignette',\n];\n\nexport const props = params.map(param => param.prop || param);\n\nexport function plugin({ cldImage, cldOptions } = {}) {\n params.forEach(key => {\n\n const prop = key.prop || key;\n const effect = key.effect || key;\n\n if ( prop === 'oilPaint' && cldOptions[prop]) {\n console.log('cldOptions[prop]', cldOptions[prop])\n }\n if ( cldOptions[prop] === true ) {\n cldImage.effect(`e_${effect}`);\n } else if ( typeof cldOptions[prop] === 'string' ) {\n cldImage.effect(`e_${effect}:${cldOptions[prop]}`);\n }\n });\n}","// aspectRatio\n\nexport const primary = {\n aspectRatio: {\n qualifier: 'ar'\n },\n crop: {\n qualifier: 'c'\n },\n gravity: {\n qualifier: 'g'\n },\n height: {\n qualifier: 'h'\n },\n width: {\n qualifier: 'w'\n },\n};\n\nexport const position = {\n angle: {\n qualifier: 'a'\n },\n gravity: {\n qualifier: 'g'\n },\n x: {\n qualifier: 'x'\n },\n y: {\n qualifier: 'y'\n },\n}\n\nexport const text = {\n color: {\n qualifier: 'co',\n location: 'primary'\n },\n fontFamily: {\n qualifier: false\n },\n fontSize: {\n qualifier: false\n },\n fontWeight: {\n qualifier: false\n },\n letterSpacing: {\n qualifier: 'letter_spacing'\n },\n textDecoration: {\n qualifier: false\n }\n}","import {\n primary as qualifiersPrimary,\n text as qualifiersText,\n position as qualifiersPosition\n} from '../constants/qualifiers';\n\nexport const props = ['overlays'];\n\nexport function plugin({ cldImage, options, cldOptions } = {}) {\n const { overlays = [] } = cldOptions;\n\n const type = 'overlay';\n const typeQualifier = 'l';\n\n overlays.forEach(({ publicId, position, text, effects: layerEffects = [], ...options }) => {\n const hasPublicId = typeof publicId === 'string';\n const hasText = typeof text === 'object';\n const hasPosition = typeof position === 'object';\n\n if ( !hasPublicId && !hasText ) {\n console.warn(`An ${type} is missing Public ID or Text`);\n return;\n }\n\n // Start to construct the transformation string using text or the public ID\n // if it's image-based\n\n let layerTransformation;\n\n if ( hasText ) {\n layerTransformation = `${typeQualifier}_text`;\n } else {\n layerTransformation = `${typeQualifier}_${publicId.replace(/\\//g, ':')}`;\n }\n\n // Begin organizing transformations based on what it is and the location\n // it needs to be placed in the URL\n\n const primary = [];\n const applied = [];\n\n // Gemeral options\n\n Object.keys(options).forEach(key => {\n if ( !qualifiersPrimary[key] ) return;\n const { qualifier } = qualifiersPrimary[key];\n primary.push(`${qualifier}_${options[key]}`);\n });\n\n // Layer effects\n\n layerEffects.forEach(effect => {\n Object.keys(effect).forEach(key => {\n if ( !qualifiersPrimary[key] ) return;\n const { qualifier } = qualifiersPrimary[key];\n primary.push(`${qualifier}_${effect[key]}`);\n });\n });\n\n // Text styling\n\n if ( hasText ) {\n const textTransformations = [];\n\n Object.keys(text).forEach(key => {\n if ( !qualifiersText[key] ) return;\n\n const { qualifier, location } = qualifiersText[key];\n\n if ( location === 'primary' ) {\n primary.push(`${qualifier}_${text[key]}`);\n } else {\n textTransformations.push(text[key]);\n }\n });\n\n layerTransformation = `${layerTransformation}:${textTransformations.join('_')}:${text.text}`\n }\n\n // Positioning\n\n if ( hasPosition ) {\n Object.keys(position).forEach(key => {\n if ( !qualifiersPosition[key] ) return;\n\n const { qualifier } = qualifiersPosition[key];\n\n applied.push(`${qualifier}_${position[key]}`);\n });\n }\n\n // Add all primary transformations\n\n layerTransformation = `${layerTransformation},${primary.join(',')}`;\n\n // Add all applied transformations\n\n layerTransformation = `${layerTransformation}/fl_layer_apply`;\n\n if ( applied.length > 0 ) {\n layerTransformation = `${layerTransformation},${applied.join(',')}`;\n }\n\n // Finally add it to the image\n\n cldImage.addTransformation(layerTransformation);\n });\n}","export const props = ['rawTransformations'];\n\nexport function plugin({ cldImage, cldOptions } = {}) {\n const { rawTransformations = [] } = cldOptions;\n\n rawTransformations.forEach(transformation => {\n cldImage.addTransformation(transformation);\n });\n}","export const props = ['removeBackground'];\n\nexport function plugin({ cldImage, options, cldOptions } = {}) {\n const { removeBackground = false } = cldOptions;\n if ( removeBackground ) {\n cldImage.effect('e_background_removal');\n }\n}","import {\n primary as qualifiersPrimary,\n text as qualifiersText,\n position as qualifiersPosition\n} from '../constants/qualifiers';\n\nexport const props = ['underlays'];\n\nexport function plugin({ cldImage, options, cldOptions } = {}) {\n const { underlays = [] } = cldOptions;\n\n const type = 'underlay';\n const typeQualifier = 'u';\n\n underlays.forEach(({ publicId, type, position, text, effects: layerEffects = [], ...options }) => {\n const hasPublicId = typeof publicId === 'string';\n const hasPosition = typeof position === 'object';\n\n if ( !hasPublicId ) {\n console.warn(`An ${type} is missing a Public ID`);\n return;\n }\n\n // Start to construct the transformation string using text or the public ID\n // if it's image-based\n\n let layerTransformation = `${typeQualifier}_${publicId.replace(/\\//g, ':')}`;\n\n // Begin organizing transformations based on what it is and the location\n // it needs to be placed in the URL\n\n const primary = [];\n const applied = [];\n\n // Gemeral options\n\n Object.keys(options).forEach(key => {\n if ( !qualifiersPrimary[key] ) return;\n const { qualifier } = qualifiersPrimary[key];\n primary.push(`${qualifier}_${options[key]}`);\n });\n\n // Layer effects\n\n layerEffects.forEach(effect => {\n Object.keys(effect).forEach(key => {\n if ( !qualifiersPrimary[key] ) return;\n const { qualifier } = qualifiersPrimary[key];\n primary.push(`${qualifier}_${effect[key]}`);\n });\n });\n\n // Positioning\n\n if ( hasPosition ) {\n Object.keys(position).forEach(key => {\n if ( !qualifiersPosition[key] ) return;\n\n const { qualifier } = qualifiersPosition[key];\n\n applied.push(`${qualifier}_${position[key]}`);\n });\n }\n\n // Add all primary transformations\n\n layerTransformation = `${layerTransformation},${primary.join(',')}`;\n\n // Add all applied transformations\n\n layerTransformation = `${layerTransformation}/fl_layer_apply`;\n\n if ( applied.length > 0 ) {\n layerTransformation = `${layerTransformation},${applied.join(',')}`;\n }\n\n // Finally add it to the image\n\n cldImage.addTransformation(layerTransformation);\n });\n}","export const props = ['zoompan'];\n\nexport function plugin({ cldImage, cldOptions } = {}) {\n const { zoompan = false } = cldOptions;\n const options = {};\n\n if ( zoompan === true ) {\n cldImage.effect('e_zoompan');\n } else if ( typeof zoompan === 'string' ) {\n if ( zoompan === 'loop' ) {\n cldImage.effect('e_zoompan');\n cldImage.effect('e_loop');\n } else {\n cldImage.effect(`e_zoompan:${zoompan}`);\n }\n } else if ( typeof zoompan === 'object' ) {\n let zoompanEffect = 'e_zoompan';\n\n if ( typeof zoompan.options === 'string' ) {\n zoompanEffect = `${zoompanEffect}${zoompan.options}`;\n }\n\n cldImage.effect(zoompanEffect);\n\n let loopEffect;\n\n if ( zoompan.loop === true ) {\n loopEffect = 'e_loop';\n } else if ( typeof zoompan.loop === 'string' ) {\n loopEffect = `e_loop${zoompan.loop}`;\n }\n\n if ( loopEffect ) {\n cldImage.effect(loopEffect);\n }\n }\n\n if ( zoompan !== false ) {\n options.format = 'gif';\n }\n\n return {\n options\n }\n}","import { Cloudinary } from '@cloudinary/url-gen';\n\nimport * as croppingPlugin from '../plugins/cropping';\nimport * as effectsPlugin from '../plugins/effects';\nimport * as overlaysPlugin from '../plugins/overlays';\nimport * as rawTransformationsPlugin from '../plugins/raw-transformations';\nimport * as removeBackgroundPlugin from '../plugins/remove-background';\nimport * as underlaysPlugin from '../plugins/underlays';\nimport * as zoompanPlugin from '../plugins/zoompan';\n\nimport {\n primary as qualifiersPrimary,\n text as qualifiersText,\n position as qualifiersPosition\n} from '../constants/qualifiers';\n\nconst cld = new Cloudinary({\n cloud: {\n cloudName: process.env.NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME\n },\n url: {\n // Used to avoid issues with SSR particularly for the blurred placeholder\n analytics: false\n }\n});\n\nexport const transformationPlugins = [\n // Background Removal must always come first\n removeBackgroundPlugin,\n\n croppingPlugin,\n effectsPlugin,\n overlaysPlugin,\n underlaysPlugin,\n zoompanPlugin,\n\n // Raw transformations needs to be last simply to make sure\n // it's always expected to applied the same way\n\n rawTransformationsPlugin\n];\n\nexport function cloudinaryLoader(defaultOptions, cldOptions) {\n const options = {\n format: 'auto',\n quality: 'auto',\n ...defaultOptions\n };\n\n const cldImage = cld.image(options.src);\n\n transformationPlugins.forEach(({ plugin }) => {\n const { options: pluginOptions } = plugin({\n cldImage,\n options,\n cldOptions\n }) || {};\n\n if ( pluginOptions?.format ) {\n options.format = pluginOptions.format;\n }\n });\n\n return cldImage\n .format(options.format)\n .delivery(`q_${options.quality}`)\n .toURL();\n}","import Image from 'next/image';\n\nimport { createPlaceholderUrl } from '../../lib/cloudinary';\nimport { cloudinaryLoader, transformationPlugins } from '../../loaders/cloudinary-loader';\n\nconst CldImage = props => {\n\n const CLD_OPTIONS = [];\n\n transformationPlugins.forEach(({ props = [] }) => {\n props.forEach(prop => {\n if ( CLD_OPTIONS.includes(prop) ) {\n throw new Error(`Option ${prop} already exists!`);\n }\n CLD_OPTIONS.push(prop);\n });\n })\n\n // Construct the base Image component props by filtering out Cloudinary-specific props\n\n const imageProps = {};\n\n Object.keys(props)\n .filter(key => !CLD_OPTIONS.includes(key))\n .forEach(key => imageProps[key] = props[key]);\n\n // Construct Cloudinary-specific props by looking for values for any of the supported prop keys\n\n const cldOptions = {};\n\n CLD_OPTIONS.forEach(key => {\n if ( props[key] ) {\n cldOptions[key] = props[key];\n }\n });\n\n // If we see a placeholder option, configure a Cloudinary-based URL.\n // The resulting image will always be blurred per Next.js, so we're\n // limited on options for placeholders.\n //\n // We need to do this logic here as we potentially need to mutate\n // an Image component prop as opposed to simply the URL\n //\n // https://nextjs.org/docs/api-reference/next/image#blurdataurl\n\n if ( imageProps.placeholder ) {\n imageProps.blurDataURL = createPlaceholderUrl({\n src: props.src,\n placeholder: props.placeholder\n });\n\n if ( imageProps.placeholder !== 'blur' ) {\n imageProps.placeholder = 'blur';\n }\n }\n\n return (\n <Image\n {...imageProps}\n loader={(options) => cloudinaryLoader({ ...imageProps, options }, cldOptions)}\n />\n );\n}\n\nexport default CldImage;"],"names":["cld","Cloudinary","cloud","cloudName","process","env","NEXT_PUBLIC_CLOUDINARY_CLOUD_NAME","url","analytics","createPlaceholderUrl","src","placeholder","cldImage","image","resize","delivery","format","effect","includes","color","split","splice","join","toURL","cropsGravityAuto","props","plugin","options","cldOptions","width","height","crop","gravity","transformationString","console","warn","params","prop","map","param","forEach","key","log","primary","aspectRatio","qualifier","position","angle","x","y","text","location","fontFamily","fontSize","fontWeight","letterSpacing","textDecoration","overlays","type","typeQualifier","publicId","effects","layerEffects","_excluded","hasPublicId","hasText","hasPosition","layerTransformation","replace","applied","Object","keys","qualifiersPrimary","push","textTransformations","qualifiersText","qualifiersPosition","length","addTransformation","rawTransformations","transformation","removeBackground","underlays","zoompan","zoompanEffect","loopEffect","loop","transformationPlugins","removeBackgroundPlugin","croppingPlugin","effectsPlugin","overlaysPlugin","underlaysPlugin","zoompanPlugin","rawTransformationsPlugin","cloudinaryLoader","defaultOptions","quality","pluginOptions","CldImage","CLD_OPTIONS","Error","imageProps","filter","blurDataURL","_jsx","Image"],"mappings":"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"}
package/jest.config.js ADDED
@@ -0,0 +1,12 @@
1
+ /*
2
+ * For a detailed explanation regarding each configuration property, visit:
3
+ * https://jestjs.io/docs/configuration
4
+ */
5
+
6
+ module.exports = {
7
+ // Indicates which provider should be used to instrument code for coverage
8
+ coverageProvider: "v8",
9
+
10
+ // The test environment that will be used for testing
11
+ testEnvironment: "jsdom",
12
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "next-cloudinary",
3
- "version": "0.0.10",
3
+ "version": "0.1.0",
4
4
  "main": "dist/next-cloudinary.umd.js",
5
5
  "module": "dist/next-cloudinary.module.js",
6
6
  "umd:main": "dist/next-cloudinary.umd.js",
@@ -9,12 +9,19 @@
9
9
  "build": "microbundle --no-compress --jsx React.createElement --jsxFragment React.Fragment --jsxImportSource react",
10
10
  "dev": "microbundle watch --no-compress --jsx React.createElement --jsxFragment React.Fragment --jsxImportSource react",
11
11
  "prepublishOnly": "cp ../README.md .",
12
- "postpublish": "rm ./README.md"
12
+ "postpublish": "rm ./README.md",
13
+ "test": "jest"
13
14
  },
14
15
  "dependencies": {
15
16
  "@cloudinary/url-gen": "^1.8.5"
16
17
  },
17
18
  "devDependencies": {
19
+ "@babel/core": "^7.19.3",
20
+ "@babel/preset-env": "^7.19.3",
21
+ "@types/jest": "^29.1.1",
22
+ "babel-jest": "^29.1.2",
23
+ "jest": "^29.1.2",
24
+ "jest-environment-jsdom": "^29.1.2",
18
25
  "microbundle": "^0.15.1"
19
26
  },
20
27
  "peerDependencies": {
@@ -0,0 +1,28 @@
1
+ import { getPublicId } from "../../src/lib/cloudinary"
2
+
3
+ // Mock console.warn() so we can see when it's called
4
+ global.console = {
5
+ ...global.console,
6
+ warn: jest.fn()
7
+ }
8
+
9
+ describe('Cloudinary', () => {
10
+ afterEach(() => {
11
+ // Clears the state of console.warn, in case multiple tests want to monitor it
12
+ jest.restoreAllMocks()
13
+ })
14
+ describe('getPublicId', () => {
15
+ it('Just returns a non-Cloudinary url', () => {
16
+ const src = 'https://google.com'
17
+ expect(getPublicId(src)).toBe(src)
18
+ })
19
+ it('Returns invalid Cloudinary url with a warning', () => {
20
+ const src = 'https://res.cloudinary.com'
21
+ expect(getPublicId(src)).toBe(src)
22
+ expect(console.warn)
23
+ .toBeCalledWith(`Not possible to retrieve the publicUrl from ${src}, make sure it's a valid cloudinary image url.`)
24
+ })
25
+ it.todo('Returns ID from url with transformations')
26
+ it.todo('Returns ID from url without transformations')
27
+ })
28
+ })
@@ -0,0 +1,54 @@
1
+ import { Cloudinary } from '@cloudinary/url-gen';
2
+
3
+ import * as rawTransformationsPlugin from '../../src/plugins/raw-transformations';
4
+
5
+ const { plugin } = rawTransformationsPlugin
6
+
7
+ const cld = new Cloudinary({
8
+ cloud: {
9
+ cloudName: 'test-cloud-name'
10
+ }
11
+ });
12
+
13
+ const TEST_PUBLIC_ID = 'test-public-id';
14
+
15
+ describe('Plugins', () => {
16
+ describe('Raw Transformations', () => {
17
+ it('should apply a single raw transformations to the end of a Cloudinary URL', () => {
18
+
19
+ const cldImage = cld.image(TEST_PUBLIC_ID);
20
+
21
+ const cldOptions = {
22
+ rawTransformations: [
23
+ 'e_blur:2000'
24
+ ]
25
+ }
26
+
27
+ plugin({
28
+ cldImage,
29
+ cldOptions
30
+ });
31
+
32
+ expect(cldImage.toURL()).toContain(`${cldOptions.rawTransformations.join('/')}/${TEST_PUBLIC_ID}`);
33
+ });
34
+
35
+ it('should apply an array of raw transformations to the end of a Cloudinary URL', () => {
36
+
37
+ const cldImage = cld.image(TEST_PUBLIC_ID);
38
+
39
+ const cldOptions = {
40
+ rawTransformations: [
41
+ 'e_blur:2000',
42
+ 'e_tint:100:0000FF:0p:FF1493:100p'
43
+ ]
44
+ }
45
+
46
+ plugin({
47
+ cldImage,
48
+ cldOptions
49
+ });
50
+
51
+ expect(cldImage.toURL()).toContain(`${cldOptions.rawTransformations.join('/')}/${TEST_PUBLIC_ID}`);
52
+ })
53
+ });
54
+ });