Skip to content

Commit 3839b97

Browse files
export transformationStringFromObject function (#595)
1 parent 08c9a8d commit 3839b97

File tree

4 files changed

+64
-2
lines changed

4 files changed

+64
-2
lines changed

__TESTS__/unit/url/url.test.ts

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,13 @@ import {createNewImage} from "../../TestUtils/createCloudinaryImage";
22
import {Resize} from "../../../src/actions/resize";
33
import {Rotate} from "../../../src/actions/rotate";
44
import {SEO_TYPES} from "../../../src/assets/CloudinaryFile";
5+
import {
6+
generateTransformationString
7+
} from "@cloudinary/transformation-builder-sdk/backwards/generateTransformationString";
8+
import {Effect} from "@cloudinary/transformation-builder-sdk/actions/effect";
9+
import {Border} from "@cloudinary/transformation-builder-sdk/actions";
10+
import {RoundCorners} from "../../../src/actions/roundCorners";
11+
import {transformationStringFromObject} from "../../../src";
512

613

714
describe('Tests for URL configuration', () => {
@@ -129,4 +136,31 @@ describe('Tests for URL configuration', () => {
129136
expect(url).toEqual(`https://res.cloudinary.com/demo/image/upload/sample?_i=abcde&_z=1234&_t=false&_a=DATAABAQZAA0`);
130137
});
131138

139+
it('Should include transformation string', function () {
140+
const image = createNewImage('sample', {cloudName: 'demo'}, {analytics: false});
141+
const transformation = transformationStringFromObject({width: 100});
142+
const url = image.addTransformation(transformation).toURL();
143+
expect(url).toEqual("https://res.cloudinary.com/demo/image/upload/w_100/sample");
144+
});
145+
146+
it('Should include transformation string created from an array of nested transformations', function () {
147+
const image = createNewImage('sample', {cloudName: 'demo'}, {analytics: false});
148+
const transformation = transformationStringFromObject({transformation: [{width: 100}, {height: 100}]});
149+
const url = image.addTransformation(transformation).toURL();
150+
expect(url).toEqual("https://res.cloudinary.com/demo/image/upload/w_100/h_100/sample");
151+
});
152+
153+
it('Should include transformation string created from an array of transformations', function () {
154+
const image = createNewImage('sample', {cloudName: 'demo'}, {analytics: false});
155+
const transformation = transformationStringFromObject([{width: 100}, {height: 100}]);
156+
const url = image.addTransformation(transformation).toURL();
157+
expect(url).toEqual("https://res.cloudinary.com/demo/image/upload/w_100/h_100/sample");
158+
});
159+
160+
it('Should include both transformation string and transformation action', function () {
161+
const image = createNewImage('sample', {cloudName: 'demo'}, {analytics: false});
162+
const transformation = transformationStringFromObject({transformation: [{width: 100}, {height: 100}]});
163+
const url = image.effect(Effect.sepia(10)).addTransformation(transformation).border(Border.roundCorners(RoundCorners.byRadius(50))).toURL();
164+
expect(url).toEqual("https://res.cloudinary.com/demo/image/upload/e_sepia:10/w_100/h_100/bo_0px_solid_transparent,r_50/sample");
165+
});
132166
});

src/backwards/generateTransformationString.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// eslint-disable @typescript-eslint/ban-ts-comment
2-
import {LegacyITransforamtionOptions} from "../types/types.js";
2+
import {LegacyITransforamtionOptions, LegacyTransformation as TransformationObject} from "../types/types.js";
33
import {processLayer} from "./transformationProcessing/processLayer.js";
44
import {process_if} from "./transformationProcessing/processIf.js";
55
import {toArray} from "./utils/toArray.js";
@@ -227,4 +227,4 @@ export function generateTransformationString(transformationOptions: LegacyITrans
227227
// console.log(childTransformations);
228228
return childTransformations.join("/");
229229
}
230-
230+
export const transformationStringFromObject: (transformationObject: TransformationObject) => string = generateTransformationString;

src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ export {CloudinaryFile} from "./assets/CloudinaryFile.js";
1111
export {CloudinaryMedia} from "./assets/CloudinaryMedia.js";
1212
export {Cloudinary} from "./instance/Cloudinary.js";
1313
export {createCloudinaryLegacyURL} from "./backwards/createCloudinaryLegacyURL.js";
14+
export {transformationStringFromObject} from "./backwards/generateTransformationString.js";
1415
export * as Actions from './actions.js';
1516
export * as Qualifiers from './qualifiers.js';
1617

src/types/types.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -401,6 +401,33 @@ export type SimulateColorBlindType =
401401
"tritanomaly"|
402402
"tritanopia";
403403

404+
type ExcludedFromTransformation =
405+
'cloud_name'
406+
| 'api_key'
407+
| 'api_secret'
408+
| 'auth_token'
409+
| 'cname'
410+
| 'secure_distribution'
411+
| 'private_cdn'
412+
| 'secure'
413+
| 'sign_url'
414+
| 'long_url_signature'
415+
| 'shorten'
416+
| 'use_root_path'
417+
| 'force_version'
418+
| 'ssl_detected'
419+
| 'cdn_subdomain'
420+
| 'secure_cdn_subdomain'
421+
| 'account_id'
422+
| 'provisioning_api_key'
423+
| 'provisioning_api_secret'
424+
| 'version'
425+
| 'url_suffix'
426+
| 'transformation';
427+
export type LegacyTransformation = ({
428+
transformation?: LegacyTransformation | Array<LegacyTransformation> | string | Transformation;
429+
} & Omit<LegacyITransforamtionOptions, ExcludedFromTransformation>) | Array<LegacyTransformation>
430+
404431
export interface LegacyITransforamtionOptions {
405432
transformation?: LegacyITransforamtionOptions | string | Transformation;
406433
raw_transformation?: string;

0 commit comments

Comments
 (0)