Skip to content

Commit 60e0a72

Browse files
authored
add expies, fallback-image-url, format-quality, min-height, min-width, skip-processing, style, watermark-size, watermark-text, zoom
1 parent d8d605c commit 60e0a72

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+437
-79
lines changed

.devcontainer/docker-compose.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,14 +53,14 @@ services:
5353
# Imgproxy
5454
imgproxy-url-builder-imgproxy:
5555
container_name: imgproxy-url-builder-imgproxy
56-
image: darthsim/imgproxy:v2.17
56+
image: darthsim/imgproxy:v3.4.0
5757
network_mode: service:application
5858
env_file:
5959
- ./imgproxy.env
6060

6161
imgproxy-url-builder-imgproxy-unsigned:
6262
container_name: imgproxy-url-builder-imgproxy-unsigned
63-
image: darthsim/imgproxy:v2.17
63+
image: darthsim/imgproxy:v3.4.0
6464
network_mode: service:application
6565
env_file:
6666
- ./imgproxy-unsigned.env

.devcontainer/test-image.png

5.3 KB
Loading

README.md

Lines changed: 44 additions & 40 deletions
Large diffs are not rendered by default.

jest.config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ export default (): Config.InitialOptions => {
88
setupFilesAfterEnv: ['./jest.setup.ts'],
99
verbose: true,
1010
testMatch: [
11-
'**/test/crypto/*.test.ts',
11+
// '**/test/crypto/*.test.ts',
1212
'**/test/misc/*.test.ts',
1313
'**/test/transformers/*.test.ts',
1414
],

src/index.ts

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,24 @@ import ResizingAlgorithm from './enums/resizing-algorithm.enum';
66
import UnsharpeningMode from './enums/unsharpening-mode.enum';
77
import WatermarkPosition from './enums/watermark-position.enum';
88

9-
import { BackgroundOptions } from './transformers/background';
109
import { BackgroundAlphaOptions } from './transformers/background-alpha';
10+
import { BackgroundOptions } from './transformers/background';
1111
import { BlurOptions } from './transformers/blur';
1212
import { CacheBusterOptions } from './transformers/cache-buster';
1313
import { ContrastOptions } from './transformers/contrast';
1414
import { CropOptions } from './transformers/crop';
1515
import { DprOptions } from './transformers/dpr';
16+
import { ExpiresOptions } from './transformers/expires';
17+
import { FallbackImageUrlOptions } from './transformers/fallback-image-url';
1618
import { FileNameOptions } from './transformers/filename';
1719
import { FormatOptions } from './transformers/format';
20+
import { FormatQualityOptions } from './transformers/format-quality';
1821
import { GifOptions } from './transformers/gif-options';
1922
import { GravityOptions } from './transformers/gravity';
2023
import { JpegOptions } from './transformers/jpeg-options';
2124
import { MaxBytesOptions } from './transformers/max-bytes';
25+
import { MinWidthOptions } from './transformers/min-width';
26+
import { MinHeightOptions } from './transformers/min-height';
2227
import { PaddingOptions } from './transformers/pad';
2328
import { PageOptions } from './transformers/page';
2429
import { PixelateOptions } from './transformers/pixelate';
@@ -30,11 +35,16 @@ import { ResizingAlgorithmOptions } from './transformers/resizing-algorithm';
3035
import { RotationOptions } from './transformers/rotate';
3136
import { SaturationOptions } from './transformers/saturation';
3237
import { SharpenOptions } from './transformers/sharpen';
38+
import { SkipProcessingOptions } from './transformers/skip-processing';
39+
import { StyleOptions } from './transformers/style';
3340
import { TrimOptions } from './transformers/trim';
3441
import { UnsharpeningOptions } from './transformers/unsharpen';
3542
import { VideoThumbnailSecondOptions } from './transformers/video-thumbnail-second';
3643
import { WatermarkOptions } from './transformers/watermark';
44+
import { WatermarkSizeOptions } from './transformers/watermark-size';
45+
import { WatermarkTextOptions } from './transformers/watermark-text';
3746
import { WatermarkUrlOptions } from './transformers/watermark-url';
47+
import { ZoomOptions } from './transformers/zoom';
3848

3949
export default pb;
4050
export {
@@ -47,19 +57,24 @@ export {
4757
UnsharpeningMode,
4858
WatermarkPosition,
4959
// Modifiers
50-
BackgroundOptions,
5160
BackgroundAlphaOptions,
61+
BackgroundOptions,
5262
BlurOptions,
5363
CacheBusterOptions,
5464
ContrastOptions,
5565
CropOptions,
5666
DprOptions,
67+
ExpiresOptions,
68+
FallbackImageUrlOptions,
5769
FileNameOptions,
5870
FormatOptions,
71+
FormatQualityOptions,
5972
GifOptions,
6073
GravityOptions,
6174
JpegOptions,
6275
MaxBytesOptions,
76+
MinWidthOptions,
77+
MinHeightOptions,
6378
PaddingOptions,
6479
PageOptions,
6580
PixelateOptions,
@@ -71,9 +86,14 @@ export {
7186
RotationOptions,
7287
SaturationOptions,
7388
SharpenOptions,
89+
SkipProcessingOptions,
90+
StyleOptions,
7491
TrimOptions,
7592
UnsharpeningOptions,
7693
VideoThumbnailSecondOptions,
7794
WatermarkOptions,
95+
WatermarkSizeOptions,
96+
WatermarkTextOptions,
7897
WatermarkUrlOptions,
98+
ZoomOptions,
7999
};

src/param-builder.ts

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,16 @@ import contrast, { ContrastOptions } from './transformers/contrast';
1010
import crop, { CropOptions } from './transformers/crop';
1111
import dpr, { DprOptions } from './transformers/dpr';
1212
import enlarge from './transformers/enlarge';
13+
import expires, { ExpiresOptions } from './transformers/expires';
1314
import extend from './transformers/extend';
15+
import fallbackImageUrl, {
16+
FallbackImageUrlOptions,
17+
} from './transformers/fallback-image-url';
1418
import fileName, { FileNameOptions } from './transformers/filename';
1519
import format, { FormatOptions } from './transformers/format';
20+
import formatQuality, {
21+
FormatQualityOptions,
22+
} from './transformers/format-quality';
1623
import gifOptions, { GifOptions } from './transformers/gif-options';
1724
import gravity, { GravityOptions } from './transformers/gravity';
1825
import jpegOptions, { JpegOptions } from './transformers/jpeg-options';
@@ -30,17 +37,28 @@ import resizingAlgorithm, {
3037
import rotate, { RotationOptions } from './transformers/rotate';
3138
import saturation, { SaturationOptions } from './transformers/saturation';
3239
import sharpen, { SharpenOptions } from './transformers/sharpen';
40+
import skipProcessing, {
41+
SkipProcessingOptions,
42+
} from './transformers/skip-processing';
3343
import stripColorProfile from './transformers/strip-color-profile';
3444
import stripMetadata from './transformers/strip-metadata';
45+
import style, { StyleOptions } from './transformers/style';
3546
import trim, { TrimOptions } from './transformers/trim';
3647
import unsharpen, { UnsharpeningOptions } from './transformers/unsharpen';
3748
import videoThumbnailSecond, {
3849
VideoThumbnailSecondOptions,
3950
} from './transformers/video-thumbnail-second';
4051
import watermark, { WatermarkOptions } from './transformers/watermark';
52+
import watermarkSize, {
53+
WatermarkSizeOptions,
54+
} from './transformers/watermark-size';
55+
import watermarkText, {
56+
WatermarkTextOptions,
57+
} from './transformers/watermark-text';
4158
import watermarkUrl, {
4259
WatermarkUrlOptions,
4360
} from './transformers/watermark-url';
61+
import zoom, { ZoomOptions } from './transformers/zoom';
4462

4563
import { encodeFilePath, generateSignature } from './utils';
4664

@@ -200,6 +218,16 @@ class ParamBuilder {
200218
return this;
201219
}
202220

221+
/**
222+
* Returns a 404 if the provided timestamp expired
223+
*
224+
* @param options The expiration date / timestamp
225+
*/
226+
public expires(this: this, options: ExpiresOptions): this {
227+
this.modifiers.set('expires', expires(options));
228+
return this;
229+
}
230+
203231
/**
204232
* Extends the image of it is smaller than the given size
205233
*/
@@ -208,6 +236,16 @@ class ParamBuilder {
208236
return this;
209237
}
210238

239+
/**
240+
* Sets the fallback image url
241+
*
242+
* @param options The image URL
243+
*/
244+
public fallbackImageUrl(this: this, options: FallbackImageUrlOptions): this {
245+
this.modifiers.set('fallbackImageUrl', fallbackImageUrl(options));
246+
return this;
247+
}
248+
211249
/**
212250
* Sets the filename for the Content-Disposition header
213251
*
@@ -228,6 +266,16 @@ class ParamBuilder {
228266
return this;
229267
}
230268

269+
/**
270+
* Specifies the format quality
271+
*
272+
* @param options The format quality options
273+
*/
274+
public formatQuality(this: this, options: FormatQualityOptions): this {
275+
this.modifiers.set('formatQuality', formatQuality(options));
276+
return this;
277+
}
278+
231279
/**
232280
* Allows redefining GIF saving options
233281
*
@@ -389,6 +437,16 @@ class ParamBuilder {
389437
return this;
390438
}
391439

440+
/**
441+
* Skips the processing for the specified extensions
442+
*
443+
* @param options The list of formats / extensions
444+
*/
445+
public skipProcessing(this: this, options: SkipProcessingOptions): this {
446+
this.modifiers.set('skipProcessing', skipProcessing(options));
447+
return this;
448+
}
449+
392450
/**
393451
* Strips the color profile from the image
394452
*/
@@ -405,6 +463,16 @@ class ParamBuilder {
405463
return this;
406464
}
407465

466+
/**
467+
* Applies the specified CSS styles to an SVG source image
468+
*
469+
* @param options The CSS styles
470+
*/
471+
public style(this: this, options: StyleOptions): this {
472+
this.modifiers.set('style', style(options));
473+
return this;
474+
}
475+
408476
/**
409477
* Trims the image background
410478
*
@@ -449,6 +517,26 @@ class ParamBuilder {
449517
return this;
450518
}
451519

520+
/**
521+
* Sets the watermark size
522+
*
523+
* @param options The watermark size
524+
*/
525+
public watermarkSize(this: this, options: WatermarkSizeOptions): this {
526+
this.modifiers.set('watermarkSize', watermarkSize(options));
527+
return this;
528+
}
529+
530+
/**
531+
* Sets the watermark Text
532+
*
533+
* @param options The watermark text
534+
*/
535+
public watermarkText(this: this, options: WatermarkTextOptions): this {
536+
this.modifiers.set('watermarkText', watermarkText(options));
537+
return this;
538+
}
539+
452540
/**
453541
* Sets the watermark URL
454542
*
@@ -458,6 +546,17 @@ class ParamBuilder {
458546
this.modifiers.set('watermarkUrl', watermarkUrl(options));
459547
return this;
460548
}
549+
550+
/**
551+
* Multiplies the image according to the specified factors.
552+
* The values must be greater than 0.
553+
*
554+
* @param options The zoom options
555+
*/
556+
public zoom(this: this, options: ZoomOptions): this {
557+
this.modifiers.set('zoom', zoom(options));
558+
return this;
559+
}
461560
}
462561

463562
const pb = (): ParamBuilder => new ParamBuilder();

src/transformers/auto-rotate.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Reference: https://github.com/imgproxy/imgproxy/blob/master/docs/generating_the_url_advanced.md#auto-rotate
1+
// Reference: https://github.com/imgproxy/imgproxy/blob/b243a08254b9ca7da2c628429cd870c111ece5c9/docs/generating_the_url.md#auto-rotate
22

33
import { stringifyOptions } from '../utils';
44

src/transformers/background-alpha.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Reference: https://github.com/imgproxy/imgproxy/blob/master/docs/generating_the_url_advanced.md#background-alpha-idbackground-alpha
1+
// Reference: https://github.com/imgproxy/imgproxy/blob/b243a08254b9ca7da2c628429cd870c111ece5c9/docs/generating_the_url.md#background-alpha-idbackground-alpha
22

33
import { stringifyOptions } from '../utils';
44

src/transformers/background.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Reference: https://github.com/imgproxy/imgproxy/blob/master/docs/generating_the_url_advanced.md#background
1+
// Reference: https://github.com/imgproxy/imgproxy/blob/b243a08254b9ca7da2c628429cd870c111ece5c9/docs/generating_the_url.md#background
22

33
import { stringifyOptions } from '../utils';
44

src/transformers/blur.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// Reference: https://github.com/imgproxy/imgproxy/blob/master/docs/generating_the_url_advanced.md#blur
1+
// Reference: https://github.com/imgproxy/imgproxy/blob/b243a08254b9ca7da2c628429cd870c111ece5c9/docs/generating_the_url.md#blur
22

33
import { stringifyOptions } from '../utils';
44

0 commit comments

Comments
 (0)