@cibule/image 0.1.1
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.
- package/README.md +99 -0
- package/dist/index.cjs +75 -0
- package/dist/index.cjs.map +7 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +42 -0
- package/dist/index.js.map +7 -0
- package/dist/lib/constants.d.ts +5 -0
- package/dist/lib/constants.d.ts.map +1 -0
- package/dist/lib/content-type-map.d.ts +3 -0
- package/dist/lib/content-type-map.d.ts.map +1 -0
- package/dist/lib/image-transformer-accessor.d.ts +5 -0
- package/dist/lib/image-transformer-accessor.d.ts.map +1 -0
- package/dist/lib/image-transformer.d.ts +6 -0
- package/dist/lib/image-transformer.d.ts.map +1 -0
- package/dist/lib/transform-options.d.ts +19 -0
- package/dist/lib/transform-options.d.ts.map +1 -0
- package/package.json +36 -0
package/README.md
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# @cibule/image
|
|
2
|
+
|
|
3
|
+
Image transformation core package. Defines the `ImageTransformer` abstract class, transform options, and configuration constants used by driver packages (`@cibule/image-sharp`, `@cibule/image-cf`).
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @cibule/image
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## API
|
|
12
|
+
|
|
13
|
+
### ImageTransformer
|
|
14
|
+
|
|
15
|
+
Abstract class defining the image transformation contract:
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
import { ImageTransformer } from '@cibule/image';
|
|
19
|
+
|
|
20
|
+
abstract class ImageTransformer {
|
|
21
|
+
abstract transform(key: string, options: TransformOptions): Promise<TransformResult>;
|
|
22
|
+
abstract purgeCache(): Promise<PurgeCacheResult>;
|
|
23
|
+
}
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
### TransformOptions
|
|
27
|
+
|
|
28
|
+
Options passed to `transform()`:
|
|
29
|
+
|
|
30
|
+
```typescript
|
|
31
|
+
interface TransformOptions {
|
|
32
|
+
readonly width: number;
|
|
33
|
+
readonly quality?: number; // default: 80
|
|
34
|
+
readonly format?: ImageFormat; // 'avif' | 'webp' | 'jpeg' | 'png'
|
|
35
|
+
readonly fit?: ImageFit; // 'cover' | 'contain' | 'fill' | 'inside' | 'outside'
|
|
36
|
+
}
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### TransformResult
|
|
40
|
+
|
|
41
|
+
Result returned by `transform()`:
|
|
42
|
+
|
|
43
|
+
```typescript
|
|
44
|
+
interface TransformResult {
|
|
45
|
+
readonly body: ReadableStream<Uint8Array>;
|
|
46
|
+
readonly contentType: string;
|
|
47
|
+
readonly width: number;
|
|
48
|
+
readonly height: number;
|
|
49
|
+
readonly size: number;
|
|
50
|
+
}
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### PurgeCacheResult
|
|
54
|
+
|
|
55
|
+
Result returned by `purgeCache()`:
|
|
56
|
+
|
|
57
|
+
```typescript
|
|
58
|
+
interface PurgeCacheResult {
|
|
59
|
+
readonly purgedCount: number;
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### DI Token
|
|
64
|
+
|
|
65
|
+
Injection token for the accessor pattern:
|
|
66
|
+
|
|
67
|
+
```typescript
|
|
68
|
+
import { IMAGE_TRANSFORMER_ACCESSOR } from '@cibule/image';
|
|
69
|
+
import type { ImageTransformerAccessor } from '@cibule/image';
|
|
70
|
+
|
|
71
|
+
// Register
|
|
72
|
+
const providers = [{ provide: IMAGE_TRANSFORMER_ACCESSOR, useFactory: () => () => myTransformer }];
|
|
73
|
+
|
|
74
|
+
// Resolve
|
|
75
|
+
const getTransformer = inject(IMAGE_TRANSFORMER_ACCESSOR);
|
|
76
|
+
const transformer = getTransformer();
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Constants
|
|
80
|
+
|
|
81
|
+
```typescript
|
|
82
|
+
import {
|
|
83
|
+
ALLOWED_WIDTHS, // [384, 640, 750, 828, 1080, 1200, 1920]
|
|
84
|
+
ALLOWED_PLACEHOLDER_WIDTHS, // [20, 30, 50, 80]
|
|
85
|
+
DEFAULT_QUALITY, // 80
|
|
86
|
+
DEFAULT_MAX_SOURCE_SIZE, // 62914560 (60 MB)
|
|
87
|
+
} from '@cibule/image';
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Drivers
|
|
91
|
+
|
|
92
|
+
| Package | Strategy | Cache |
|
|
93
|
+
| --------------------- | ------------------------------ | ---------------------------------- |
|
|
94
|
+
| `@cibule/image-sharp` | Sharp library, resize + AVIF | Local FileStorage (`/thumbnails/`) |
|
|
95
|
+
| `@cibule/image-cf` | CF Image Resizing (`cf.image`) | CDN edge (purge via CF API) |
|
|
96
|
+
|
|
97
|
+
## License
|
|
98
|
+
|
|
99
|
+
MIT
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/index.ts
|
|
21
|
+
var index_exports = {};
|
|
22
|
+
__export(index_exports, {
|
|
23
|
+
ALLOWED_PLACEHOLDER_WIDTHS: () => ALLOWED_PLACEHOLDER_WIDTHS,
|
|
24
|
+
ALLOWED_WIDTHS: () => ALLOWED_WIDTHS,
|
|
25
|
+
DEFAULT_MAX_SOURCE_SIZE: () => DEFAULT_MAX_SOURCE_SIZE,
|
|
26
|
+
DEFAULT_QUALITY: () => DEFAULT_QUALITY,
|
|
27
|
+
IMAGE_TRANSFORMER_ACCESSOR: () => IMAGE_TRANSFORMER_ACCESSOR,
|
|
28
|
+
ImageTransformer: () => ImageTransformer,
|
|
29
|
+
getContentType: () => getContentType
|
|
30
|
+
});
|
|
31
|
+
module.exports = __toCommonJS(index_exports);
|
|
32
|
+
|
|
33
|
+
// src/lib/constants.ts
|
|
34
|
+
var ALLOWED_WIDTHS = [384, 640, 750, 828, 1080, 1200, 1920];
|
|
35
|
+
var ALLOWED_PLACEHOLDER_WIDTHS = [20, 30, 50, 80];
|
|
36
|
+
var DEFAULT_QUALITY = 80;
|
|
37
|
+
var DEFAULT_MAX_SOURCE_SIZE = 60 * 1024 * 1024;
|
|
38
|
+
|
|
39
|
+
// src/lib/content-type-map.ts
|
|
40
|
+
var FORMAT_TO_CONTENT_TYPE = {
|
|
41
|
+
avif: "image/avif",
|
|
42
|
+
webp: "image/webp",
|
|
43
|
+
jpeg: "image/jpeg",
|
|
44
|
+
png: "image/png"
|
|
45
|
+
};
|
|
46
|
+
function getContentType(format) {
|
|
47
|
+
return FORMAT_TO_CONTENT_TYPE[format];
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// src/lib/image-transformer.ts
|
|
51
|
+
var ImageTransformer = class {
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
// ../di/src/lib/injection-token.ts
|
|
55
|
+
var InjectionToken = class {
|
|
56
|
+
constructor(description) {
|
|
57
|
+
this.description = description;
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
// src/lib/image-transformer-accessor.ts
|
|
62
|
+
var IMAGE_TRANSFORMER_ACCESSOR = new InjectionToken(
|
|
63
|
+
"IMAGE_TRANSFORMER_ACCESSOR"
|
|
64
|
+
);
|
|
65
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
66
|
+
0 && (module.exports = {
|
|
67
|
+
ALLOWED_PLACEHOLDER_WIDTHS,
|
|
68
|
+
ALLOWED_WIDTHS,
|
|
69
|
+
DEFAULT_MAX_SOURCE_SIZE,
|
|
70
|
+
DEFAULT_QUALITY,
|
|
71
|
+
IMAGE_TRANSFORMER_ACCESSOR,
|
|
72
|
+
ImageTransformer,
|
|
73
|
+
getContentType
|
|
74
|
+
});
|
|
75
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/index.ts", "../src/lib/constants.ts", "../src/lib/content-type-map.ts", "../src/lib/image-transformer.ts", "../../di/src/lib/injection-token.ts", "../src/lib/image-transformer-accessor.ts"],
|
|
4
|
+
"sourcesContent": ["export {\n ALLOWED_PLACEHOLDER_WIDTHS,\n ALLOWED_WIDTHS,\n DEFAULT_MAX_SOURCE_SIZE,\n DEFAULT_QUALITY,\n} from './lib/constants';\nexport { getContentType } from './lib/content-type-map';\nexport { ImageTransformer } from './lib/image-transformer';\nexport type { ImageTransformerAccessor } from './lib/image-transformer-accessor';\nexport { IMAGE_TRANSFORMER_ACCESSOR } from './lib/image-transformer-accessor';\nexport type {\n ImageFit,\n ImageFormat,\n PurgeCacheResult,\n TransformOptions,\n TransformResult,\n} from './lib/transform-options';\n", "export const ALLOWED_WIDTHS = [384, 640, 750, 828, 1080, 1200, 1920] as const;\n\nexport const ALLOWED_PLACEHOLDER_WIDTHS = [20, 30, 50, 80] as const;\n\nexport const DEFAULT_QUALITY = 80;\n\nexport const DEFAULT_MAX_SOURCE_SIZE = 60 * 1024 * 1024;\n", "import type { ImageFormat } from './transform-options';\n\nconst FORMAT_TO_CONTENT_TYPE: Record<ImageFormat, string> = {\n avif: 'image/avif',\n webp: 'image/webp',\n jpeg: 'image/jpeg',\n png: 'image/png',\n};\n\nexport function getContentType(format: ImageFormat): string {\n return FORMAT_TO_CONTENT_TYPE[format];\n}\n", "import type { PurgeCacheResult, TransformOptions, TransformResult } from './transform-options';\n\nexport abstract class ImageTransformer {\n abstract transform(key: string, options: TransformOptions): Promise<TransformResult>;\n abstract purgeCache(): Promise<PurgeCacheResult>;\n}\n", "export class InjectionToken<T> {\n declare readonly _brand: T;\n constructor(public readonly description: string) {}\n}\n", "import { InjectionToken } from '@cibule/di';\n\nimport type { ImageTransformer } from './image-transformer';\n\nexport type ImageTransformerAccessor = () => ImageTransformer;\n\nexport const IMAGE_TRANSFORMER_ACCESSOR = new InjectionToken<ImageTransformerAccessor>(\n 'IMAGE_TRANSFORMER_ACCESSOR',\n);\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAO,IAAM,iBAAiB,CAAC,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,IAAI;AAE5D,IAAM,6BAA6B,CAAC,IAAI,IAAI,IAAI,EAAE;AAElD,IAAM,kBAAkB;AAExB,IAAM,0BAA0B,KAAK,OAAO;;;ACJnD,IAAM,yBAAsD;AAAA,EAC1D,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,KAAK;AACP;AAEO,SAAS,eAAe,QAA6B;AAC1D,SAAO,uBAAuB,MAAM;AACtC;;;ACTO,IAAe,mBAAf,MAAgC;AAGvC;;;ACLO,IAAM,iBAAN,MAAwB;AAAA,EAE7B,YAA4B,aAAqB;AAArB;AAAA,EAAsB;AACpD;;;ACGO,IAAM,6BAA6B,IAAI;AAAA,EAC5C;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { ALLOWED_PLACEHOLDER_WIDTHS, ALLOWED_WIDTHS, DEFAULT_MAX_SOURCE_SIZE, DEFAULT_QUALITY, } from './lib/constants';
|
|
2
|
+
export { getContentType } from './lib/content-type-map';
|
|
3
|
+
export { ImageTransformer } from './lib/image-transformer';
|
|
4
|
+
export type { ImageTransformerAccessor } from './lib/image-transformer-accessor';
|
|
5
|
+
export { IMAGE_TRANSFORMER_ACCESSOR } from './lib/image-transformer-accessor';
|
|
6
|
+
export type { ImageFit, ImageFormat, PurgeCacheResult, TransformOptions, TransformResult, } from './lib/transform-options';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,cAAc,EACd,uBAAuB,EACvB,eAAe,GAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,YAAY,EAAE,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AACjF,OAAO,EAAE,0BAA0B,EAAE,MAAM,kCAAkC,CAAC;AAC9E,YAAY,EACV,QAAQ,EACR,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,GAChB,MAAM,yBAAyB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// src/lib/constants.ts
|
|
2
|
+
var ALLOWED_WIDTHS = [384, 640, 750, 828, 1080, 1200, 1920];
|
|
3
|
+
var ALLOWED_PLACEHOLDER_WIDTHS = [20, 30, 50, 80];
|
|
4
|
+
var DEFAULT_QUALITY = 80;
|
|
5
|
+
var DEFAULT_MAX_SOURCE_SIZE = 60 * 1024 * 1024;
|
|
6
|
+
|
|
7
|
+
// src/lib/content-type-map.ts
|
|
8
|
+
var FORMAT_TO_CONTENT_TYPE = {
|
|
9
|
+
avif: "image/avif",
|
|
10
|
+
webp: "image/webp",
|
|
11
|
+
jpeg: "image/jpeg",
|
|
12
|
+
png: "image/png"
|
|
13
|
+
};
|
|
14
|
+
function getContentType(format) {
|
|
15
|
+
return FORMAT_TO_CONTENT_TYPE[format];
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// src/lib/image-transformer.ts
|
|
19
|
+
var ImageTransformer = class {
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
// ../di/src/lib/injection-token.ts
|
|
23
|
+
var InjectionToken = class {
|
|
24
|
+
constructor(description) {
|
|
25
|
+
this.description = description;
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
|
|
29
|
+
// src/lib/image-transformer-accessor.ts
|
|
30
|
+
var IMAGE_TRANSFORMER_ACCESSOR = new InjectionToken(
|
|
31
|
+
"IMAGE_TRANSFORMER_ACCESSOR"
|
|
32
|
+
);
|
|
33
|
+
export {
|
|
34
|
+
ALLOWED_PLACEHOLDER_WIDTHS,
|
|
35
|
+
ALLOWED_WIDTHS,
|
|
36
|
+
DEFAULT_MAX_SOURCE_SIZE,
|
|
37
|
+
DEFAULT_QUALITY,
|
|
38
|
+
IMAGE_TRANSFORMER_ACCESSOR,
|
|
39
|
+
ImageTransformer,
|
|
40
|
+
getContentType
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/lib/constants.ts", "../src/lib/content-type-map.ts", "../src/lib/image-transformer.ts", "../../di/src/lib/injection-token.ts", "../src/lib/image-transformer-accessor.ts"],
|
|
4
|
+
"sourcesContent": ["export const ALLOWED_WIDTHS = [384, 640, 750, 828, 1080, 1200, 1920] as const;\n\nexport const ALLOWED_PLACEHOLDER_WIDTHS = [20, 30, 50, 80] as const;\n\nexport const DEFAULT_QUALITY = 80;\n\nexport const DEFAULT_MAX_SOURCE_SIZE = 60 * 1024 * 1024;\n", "import type { ImageFormat } from './transform-options';\n\nconst FORMAT_TO_CONTENT_TYPE: Record<ImageFormat, string> = {\n avif: 'image/avif',\n webp: 'image/webp',\n jpeg: 'image/jpeg',\n png: 'image/png',\n};\n\nexport function getContentType(format: ImageFormat): string {\n return FORMAT_TO_CONTENT_TYPE[format];\n}\n", "import type { PurgeCacheResult, TransformOptions, TransformResult } from './transform-options';\n\nexport abstract class ImageTransformer {\n abstract transform(key: string, options: TransformOptions): Promise<TransformResult>;\n abstract purgeCache(): Promise<PurgeCacheResult>;\n}\n", "export class InjectionToken<T> {\n declare readonly _brand: T;\n constructor(public readonly description: string) {}\n}\n", "import { InjectionToken } from '@cibule/di';\n\nimport type { ImageTransformer } from './image-transformer';\n\nexport type ImageTransformerAccessor = () => ImageTransformer;\n\nexport const IMAGE_TRANSFORMER_ACCESSOR = new InjectionToken<ImageTransformerAccessor>(\n 'IMAGE_TRANSFORMER_ACCESSOR',\n);\n"],
|
|
5
|
+
"mappings": ";AAAO,IAAM,iBAAiB,CAAC,KAAK,KAAK,KAAK,KAAK,MAAM,MAAM,IAAI;AAE5D,IAAM,6BAA6B,CAAC,IAAI,IAAI,IAAI,EAAE;AAElD,IAAM,kBAAkB;AAExB,IAAM,0BAA0B,KAAK,OAAO;;;ACJnD,IAAM,yBAAsD;AAAA,EAC1D,MAAM;AAAA,EACN,MAAM;AAAA,EACN,MAAM;AAAA,EACN,KAAK;AACP;AAEO,SAAS,eAAe,QAA6B;AAC1D,SAAO,uBAAuB,MAAM;AACtC;;;ACTO,IAAe,mBAAf,MAAgC;AAGvC;;;ACLO,IAAM,iBAAN,MAAwB;AAAA,EAE7B,YAA4B,aAAqB;AAArB;AAAA,EAAsB;AACpD;;;ACGO,IAAM,6BAA6B,IAAI;AAAA,EAC5C;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const ALLOWED_WIDTHS: readonly [384, 640, 750, 828, 1080, 1200, 1920];
|
|
2
|
+
export declare const ALLOWED_PLACEHOLDER_WIDTHS: readonly [20, 30, 50, 80];
|
|
3
|
+
export declare const DEFAULT_QUALITY = 80;
|
|
4
|
+
export declare const DEFAULT_MAX_SOURCE_SIZE: number;
|
|
5
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,iDAAkD,CAAC;AAE9E,eAAO,MAAM,0BAA0B,2BAA4B,CAAC;AAEpE,eAAO,MAAM,eAAe,KAAK,CAAC;AAElC,eAAO,MAAM,uBAAuB,QAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"content-type-map.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/content-type-map.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AASvD,wBAAgB,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAE1D"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { InjectionToken } from '@cibule/di';
|
|
2
|
+
import type { ImageTransformer } from './image-transformer';
|
|
3
|
+
export type ImageTransformerAccessor = () => ImageTransformer;
|
|
4
|
+
export declare const IMAGE_TRANSFORMER_ACCESSOR: InjectionToken<ImageTransformerAccessor>;
|
|
5
|
+
//# sourceMappingURL=image-transformer-accessor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image-transformer-accessor.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/image-transformer-accessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,MAAM,MAAM,wBAAwB,GAAG,MAAM,gBAAgB,CAAC;AAE9D,eAAO,MAAM,0BAA0B,0CAEtC,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { PurgeCacheResult, TransformOptions, TransformResult } from './transform-options';
|
|
2
|
+
export declare abstract class ImageTransformer {
|
|
3
|
+
abstract transform(key: string, options: TransformOptions): Promise<TransformResult>;
|
|
4
|
+
abstract purgeCache(): Promise<PurgeCacheResult>;
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=image-transformer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image-transformer.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/image-transformer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAE/F,8BAAsB,gBAAgB;IACpC,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IACpF,QAAQ,CAAC,UAAU,IAAI,OAAO,CAAC,gBAAgB,CAAC;CACjD"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export type ImageFormat = 'avif' | 'webp' | 'jpeg' | 'png';
|
|
2
|
+
export type ImageFit = 'cover' | 'contain' | 'fill' | 'inside' | 'outside';
|
|
3
|
+
export interface TransformOptions {
|
|
4
|
+
readonly width: number;
|
|
5
|
+
readonly quality?: number;
|
|
6
|
+
readonly format?: ImageFormat;
|
|
7
|
+
readonly fit?: ImageFit;
|
|
8
|
+
}
|
|
9
|
+
export interface TransformResult {
|
|
10
|
+
readonly body: ReadableStream<Uint8Array>;
|
|
11
|
+
readonly contentType: string;
|
|
12
|
+
readonly width: number;
|
|
13
|
+
readonly height: number;
|
|
14
|
+
readonly size: number;
|
|
15
|
+
}
|
|
16
|
+
export interface PurgeCacheResult {
|
|
17
|
+
readonly purgedCount: number;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=transform-options.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform-options.d.ts","sourceRoot":"","sources":["../../../../../../src/lib/transform-options.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AAE3D,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE3E,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IAC1C,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B"}
|
package/package.json
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@cibule/image",
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"license": "MIT",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.cjs",
|
|
7
|
+
"module": "dist/index.js",
|
|
8
|
+
"types": "dist/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
".": {
|
|
11
|
+
"import": {
|
|
12
|
+
"types": "./dist/index.d.ts",
|
|
13
|
+
"default": "./dist/index.js"
|
|
14
|
+
},
|
|
15
|
+
"require": {
|
|
16
|
+
"types": "./dist/index.d.ts",
|
|
17
|
+
"default": "./dist/index.cjs"
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
},
|
|
21
|
+
"files": [
|
|
22
|
+
"dist"
|
|
23
|
+
],
|
|
24
|
+
"sideEffects": false,
|
|
25
|
+
"repository": {
|
|
26
|
+
"type": "git",
|
|
27
|
+
"url": "https://gitlab.com/LadaBr/cibule",
|
|
28
|
+
"directory": "packages/image"
|
|
29
|
+
},
|
|
30
|
+
"publishConfig": {
|
|
31
|
+
"access": "public"
|
|
32
|
+
},
|
|
33
|
+
"dependencies": {
|
|
34
|
+
"@cibule/di": "workspace:*"
|
|
35
|
+
}
|
|
36
|
+
}
|