@dyrected/storage-cloudinary 2.11.0 → 2.12.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.
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=storage.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/storage.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,45 @@
1
+ import { describe, it, expect } from "vitest";
2
+ import { CloudinaryStorageAdapter } from "../index.js";
3
+ describe("CloudinaryStorageAdapter - Dynamic URL Transformations", () => {
4
+ const adapter = new CloudinaryStorageAdapter({
5
+ cloudName: "demo-cloud",
6
+ apiKey: "test-api-key",
7
+ apiSecret: "test-api-secret",
8
+ });
9
+ it("returns base secure URL when no transform is requested", () => {
10
+ const url = adapter.getURL({ filename: "samples/nature.jpg" });
11
+ expect(url).toContain("res.cloudinary.com/demo-cloud/image/upload");
12
+ expect(url).toContain("samples/nature.jpg");
13
+ });
14
+ it("generates dynamic width, height, crop, format, and quality parameters", () => {
15
+ const url = adapter.getURL({
16
+ filename: "samples/nature.jpg",
17
+ transform: {
18
+ width: 800,
19
+ height: 600,
20
+ crop: "fill",
21
+ format: "webp",
22
+ quality: 85,
23
+ },
24
+ });
25
+ expect(url).toContain("c_fill");
26
+ expect(url).toContain("h_600");
27
+ expect(url).toContain("w_800");
28
+ expect(url).toContain("f_webp");
29
+ expect(url).toContain("q_85");
30
+ });
31
+ it("generates focal point coordinates when provided", () => {
32
+ const url = adapter.getURL({
33
+ filename: "samples/portrait.jpg",
34
+ transform: {
35
+ width: 400,
36
+ height: 400,
37
+ focalPoint: { x: 0.65, y: 0.35 },
38
+ },
39
+ });
40
+ expect(url).toContain("g_xy_center");
41
+ expect(url).toContain("x_0.65");
42
+ expect(url).toContain("y_0.35");
43
+ });
44
+ });
45
+ //# sourceMappingURL=storage.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.test.js","sourceRoot":"","sources":["../../src/__tests__/storage.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAEvD,QAAQ,CAAC,wDAAwD,EAAE,GAAG,EAAE;IACtE,MAAM,OAAO,GAAG,IAAI,wBAAwB,CAAC;QAC3C,SAAS,EAAE,YAAY;QACvB,MAAM,EAAE,cAAc;QACtB,SAAS,EAAE,iBAAiB;KAC7B,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,oBAAoB,EAAE,CAAC,CAAC;QAC/D,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,4CAA4C,CAAC,CAAC;QACpE,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uEAAuE,EAAE,GAAG,EAAE;QAC/E,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;YACzB,QAAQ,EAAE,oBAAoB;YAC9B,SAAS,EAAE;gBACT,KAAK,EAAE,GAAG;gBACV,MAAM,EAAE,GAAG;gBACX,IAAI,EAAE,MAAM;gBACZ,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE;aACZ;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAChC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC/B,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC/B,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAChC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC;YACzB,QAAQ,EAAE,sBAAsB;YAChC,SAAS,EAAE;gBACT,KAAK,EAAE,GAAG;gBACV,MAAM,EAAE,GAAG;gBACX,UAAU,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE;aACjC;SACF,CAAC,CAAC;QAEH,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACrC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAChC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { StorageAdapter, FileData } from '@dyrected/core';
1
+ import { StorageAdapter, FileData, ImageTransformOptions } from '@dyrected/core';
2
2
  export interface CloudinaryStorageConfig {
3
3
  cloudName: string;
4
4
  apiKey: string;
@@ -19,6 +19,7 @@ export declare class CloudinaryStorageAdapter implements StorageAdapter {
19
19
  }): Promise<void>;
20
20
  getURL(args: {
21
21
  filename: string;
22
+ transform?: ImageTransformOptions;
22
23
  }): string;
23
24
  }
24
25
  export declare const cloudinaryStorage: (config: CloudinaryStorageConfig) => CloudinaryStorageAdapter;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1D,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,wBAAyB,YAAW,cAAc;IACjD,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,uBAAuB;IAQ7C,MAAM,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,UAAU,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;IAiD5G,MAAM,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvD,MAAM,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;CAG3C;AAED,eAAO,MAAM,iBAAiB,GAAI,QAAQ,uBAAuB,6BAAyC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAGjF,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,wBAAyB,YAAW,cAAc;IACjD,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,uBAAuB;IAQ7C,MAAM,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,UAAU,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;IAuD5G,MAAM,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvD,MAAM,CAAC,IAAI,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,qBAAqB,CAAA;KAAE,GAAG,MAAM;CA4C9E;AAED,eAAO,MAAM,iBAAiB,GAAI,QAAQ,uBAAuB,6BAAyC,CAAC"}
package/dist/index.js CHANGED
@@ -38,13 +38,18 @@ export class CloudinaryStorageAdapter {
38
38
  return reject(error);
39
39
  if (!result)
40
40
  return reject(new Error('Upload failed'));
41
+ const width = result.width;
42
+ const height = result.height;
43
+ const aspectRatio = width && height ? width / height : undefined;
41
44
  resolve({
42
45
  filename: result.public_id,
46
+ originalFilename: args.filename,
43
47
  filesize: result.bytes,
44
48
  mimeType: args.mimeType,
45
49
  url: result.secure_url,
46
- width: result.width,
47
- height: result.height,
50
+ width,
51
+ height,
52
+ aspectRatio,
48
53
  provider_metadata: result,
49
54
  });
50
55
  });
@@ -55,7 +60,50 @@ export class CloudinaryStorageAdapter {
55
60
  await cloudinary.uploader.destroy(args.filename);
56
61
  }
57
62
  getURL(args) {
58
- return cloudinary.url(args.filename, { secure: true });
63
+ const { filename, transform } = args;
64
+ if (!transform) {
65
+ return cloudinary.url(filename, { secure: true });
66
+ }
67
+ const options = {
68
+ secure: true,
69
+ fetch_format: transform.format ?? 'auto',
70
+ quality: transform.quality ?? 'auto',
71
+ };
72
+ if (transform.width)
73
+ options.width = transform.width;
74
+ if (transform.height)
75
+ options.height = transform.height;
76
+ if (transform.aspectRatio)
77
+ options.aspect_ratio = transform.aspectRatio;
78
+ if (transform.crop) {
79
+ options.crop =
80
+ transform.crop === 'cover'
81
+ ? 'fill'
82
+ : transform.crop === 'contain'
83
+ ? 'fit'
84
+ : transform.crop;
85
+ }
86
+ else if (transform.width || transform.height) {
87
+ options.crop = 'fill';
88
+ }
89
+ if (transform.focalPoint && typeof transform.focalPoint.x === 'number' && typeof transform.focalPoint.y === 'number') {
90
+ options.gravity = 'xy_center';
91
+ const normX = transform.focalPoint.x > 1 ? transform.focalPoint.x / 100 : transform.focalPoint.x;
92
+ const normY = transform.focalPoint.y > 1 ? transform.focalPoint.y / 100 : transform.focalPoint.y;
93
+ options.x = Math.round(normX * 100) / 100;
94
+ options.y = Math.round(normY * 100) / 100;
95
+ }
96
+ else if (transform.gravity) {
97
+ options.gravity =
98
+ transform.gravity === 'focal' ? 'auto:focal' : transform.gravity;
99
+ }
100
+ if (transform.blur)
101
+ options.effect = `blur:${transform.blur}`;
102
+ if (transform.rotate)
103
+ options.angle = transform.rotate;
104
+ if (transform.dpr)
105
+ options.dpr = transform.dpr;
106
+ return cloudinary.url(filename, options);
59
107
  }
60
108
  }
61
109
  export const cloudinaryStorage = (config) => new CloudinaryStorageAdapter(config);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dyrected/storage-cloudinary",
3
- "version": "2.11.0",
3
+ "version": "2.12.0",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -9,11 +9,12 @@
9
9
  ],
10
10
  "dependencies": {
11
11
  "cloudinary": "^2.2.0",
12
- "@dyrected/core": "2.11.0"
12
+ "@dyrected/core": "2.12.0"
13
13
  },
14
14
  "devDependencies": {
15
15
  "@types/node": "^20.12.12",
16
- "typescript": "^5.4.5"
16
+ "typescript": "^5.4.5",
17
+ "vitest": "^1.6.0"
17
18
  },
18
19
  "license": "BSL-1.1",
19
20
  "author": "Busola Okeowo <busolaokemoney@gmail.com>",
@@ -28,6 +29,7 @@
28
29
  "description": "Cloudinary storage adapter for Dyrected CMS",
29
30
  "scripts": {
30
31
  "build": "tsc",
31
- "dev": "tsc --watch"
32
+ "dev": "tsc --watch",
33
+ "test": "vitest run"
32
34
  }
33
35
  }