@gmitch215/tinyimg 1.0.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.
- package/LICENSE +21 -0
- package/README.md +720 -0
- package/dist/image.d.ts +263 -0
- package/dist/image.d.ts.map +1 -0
- package/dist/image.js +391 -0
- package/dist/image.js.map +1 -0
- package/dist/index.d.ts +46 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -0
- package/dist/tinyimg.wasm +0 -0
- package/dist/transform.d.ts +135 -0
- package/dist/transform.d.ts.map +1 -0
- package/dist/transform.js +220 -0
- package/dist/transform.js.map +1 -0
- package/dist/types.d.ts +345 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +132 -0
- package/dist/types.js.map +1 -0
- package/dist/wasm.d.ts +367 -0
- package/dist/wasm.d.ts.map +1 -0
- package/dist/wasm.js +283 -0
- package/dist/wasm.js.map +1 -0
- package/package.json +106 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"image.js","sourceRoot":"","sources":["../src/ts/image.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* tinyimg: image decoding, transformation and drawing for Cloudflare Workers.
|
|
3
|
+
*
|
|
4
|
+
* The module has to arrive already compiled, because workerd refuses to compile wasm from bytes.
|
|
5
|
+
* Importing the file is what makes it work there; {@link TinyImgModule.loadBytes} is for node, bun
|
|
6
|
+
* and the browser.
|
|
7
|
+
*
|
|
8
|
+
* ```ts
|
|
9
|
+
* import wasm from '@gmitch215/tinyimg/tinyimg.wasm';
|
|
10
|
+
* import { TinyImgModule, transform } from '@gmitch215/tinyimg';
|
|
11
|
+
*
|
|
12
|
+
* const tinyimg = TinyImgModule.load(wasm);
|
|
13
|
+
*
|
|
14
|
+
* export default {
|
|
15
|
+
* async fetch(request: Request): Promise<Response> {
|
|
16
|
+
* const source = await fetch('https://example.com/photo.jpg');
|
|
17
|
+
* const thumb = await transform(tinyimg, source, {
|
|
18
|
+
* width: 400,
|
|
19
|
+
* height: 400,
|
|
20
|
+
* fit: 'cover',
|
|
21
|
+
* format: 'webp',
|
|
22
|
+
* quality: 80
|
|
23
|
+
* });
|
|
24
|
+
*
|
|
25
|
+
* return thumb.response();
|
|
26
|
+
* }
|
|
27
|
+
* };
|
|
28
|
+
* ```
|
|
29
|
+
*
|
|
30
|
+
* Three tiers, and they are the same planner underneath:
|
|
31
|
+
*
|
|
32
|
+
* - {@link transform} for one call with an option object, which is most requests.
|
|
33
|
+
* - {@link Image} for a chain, when you want two encodings of one transformation or an operation
|
|
34
|
+
* the option object does not cover.
|
|
35
|
+
* - {@link TinyImgModule} for the things that are not transformations: {@link TinyImgModule.probe},
|
|
36
|
+
* {@link TinyImgModule.detectFaces} and {@link TinyImgModule.loadBlob}.
|
|
37
|
+
*
|
|
38
|
+
* Nothing runs until the output is asked for. A 400x400 thumbnail of a 16 megapixel photograph
|
|
39
|
+
* decodes a region at a reduced scale rather than 16 megapixels, and that decision cannot be made
|
|
40
|
+
* after the first operation has already run.
|
|
41
|
+
*/
|
|
42
|
+
export { Image, mimeFor, type EncodeOptions, type FitOptions } from './image.js';
|
|
43
|
+
export { TRANSFORM_ORDER, apply, artifactKey, transform, type TransformResult } from './transform.js';
|
|
44
|
+
export { Err, TinyImgArgumentError, TinyImgBlobError, TinyImgDataError, TinyImgError, TinyImgFormatError, TinyImgMemoryError, TinyImgPlanError, TinyImgTooLargeError, readColor, readSource, type BlobKind, type Color, type Extent, type FaceBox, type Fit, type FlipAxis, type Gravity, type ImageFormat, type ImageInfo, type MetadataPolicy, type PlanDecision, type RawImage, type Rect, type ResampleFilter, type Source, type TransformOptions } from './types.js';
|
|
45
|
+
export { Feature, SUPPORTED_ABI, TinyImgLoadError, TinyImgModule, type FeatureName, type Measured, type WorkCounters } from './wasm.js';
|
|
46
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/ts/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AACjF,OAAO,EACN,eAAe,EACf,KAAK,EACL,WAAW,EACX,SAAS,EACT,KAAK,eAAe,EACpB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACN,GAAG,EACH,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,SAAS,EACT,UAAU,EACV,KAAK,QAAQ,EACb,KAAK,KAAK,EACV,KAAK,MAAM,EACX,KAAK,OAAO,EACZ,KAAK,GAAG,EACR,KAAK,QAAQ,EACb,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,QAAQ,EACb,KAAK,IAAI,EACT,KAAK,cAAc,EACnB,KAAK,MAAM,EACX,KAAK,gBAAgB,EACrB,MAAM,YAAY,CAAC;AACpB,OAAO,EACN,OAAO,EACP,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,MAAM,WAAW,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { Image, mimeFor } from './image.js';
|
|
2
|
+
export { TRANSFORM_ORDER, apply, artifactKey, transform } from './transform.js';
|
|
3
|
+
export { Err, TinyImgArgumentError, TinyImgBlobError, TinyImgDataError, TinyImgError, TinyImgFormatError, TinyImgMemoryError, TinyImgPlanError, TinyImgTooLargeError, readColor, readSource } from './types.js';
|
|
4
|
+
export { Feature, SUPPORTED_ABI, TinyImgLoadError, TinyImgModule } from './wasm.js';
|
|
5
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/ts/index.ts"],"names":[],"mappings":"AA0CA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAuC,MAAM,YAAY,CAAC;AACjF,OAAO,EACN,eAAe,EACf,KAAK,EACL,WAAW,EACX,SAAS,EAET,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACN,GAAG,EACH,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,SAAS,EACT,UAAU,EAiBV,MAAM,YAAY,CAAC;AACpB,OAAO,EACN,OAAO,EACP,aAAa,EACb,gBAAgB,EAChB,aAAa,EAIb,MAAM,WAAW,CAAC"}
|
|
Binary file
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { Image } from './image.js';
|
|
2
|
+
import { type ImageFormat, type Source, type TransformOptions } from './types.js';
|
|
3
|
+
import type { TinyImgModule } from './wasm.js';
|
|
4
|
+
/**
|
|
5
|
+
* The result of a one-shot transformation.
|
|
6
|
+
*
|
|
7
|
+
* Carries the bytes and the conveniences a Worker actually wants, so nobody has to build a
|
|
8
|
+
* `Response` or a `data:` URL by hand.
|
|
9
|
+
*/
|
|
10
|
+
export interface TransformResult {
|
|
11
|
+
/** The encoded image. */
|
|
12
|
+
readonly data: Uint8Array<ArrayBuffer>;
|
|
13
|
+
/** What it was encoded as. */
|
|
14
|
+
readonly format: ImageFormat;
|
|
15
|
+
/** Its content type. */
|
|
16
|
+
readonly contentType: string;
|
|
17
|
+
/** Width of the output in pixels. */
|
|
18
|
+
readonly width: number;
|
|
19
|
+
/** Height of the output in pixels. */
|
|
20
|
+
readonly height: number;
|
|
21
|
+
/**
|
|
22
|
+
* Set when the source held several frames and this output holds only the first.
|
|
23
|
+
*
|
|
24
|
+
* There is no animated encoder, so any request that actually has work to do reduces an
|
|
25
|
+
* animation to a still. That is a lossy outcome a caller may want to avoid rather than
|
|
26
|
+
* discover, by serving the original or by asking for a request that passes through.
|
|
27
|
+
*/
|
|
28
|
+
readonly flattened: boolean;
|
|
29
|
+
/** The encoded bytes. */
|
|
30
|
+
bytes(): Uint8Array<ArrayBuffer>;
|
|
31
|
+
/** The bytes as a `Blob`, typed. */
|
|
32
|
+
blob(): Blob;
|
|
33
|
+
/** The bytes as a `Response`, typed and length-set. */
|
|
34
|
+
response(headers?: HeadersInit): Response;
|
|
35
|
+
/** The bytes as a `data:` URL. */
|
|
36
|
+
dataUrl(): string;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* The order the options apply in.
|
|
40
|
+
*
|
|
41
|
+
* An option object has no order of its own, so this is fixed and documented rather than left to
|
|
42
|
+
* whatever `Object.keys` happens to return: two callers writing the same keys have to get the same
|
|
43
|
+
* image. Geometry first, because everything after it then works on fewer pixels; color next,
|
|
44
|
+
* because it collapses into one pass; the neighborhood operations last, because they cannot.
|
|
45
|
+
*/
|
|
46
|
+
declare const ORDER: readonly ["crop", "resize or fit", "rotate", "flip", "brightness", "contrast", "saturation", "hue", "gamma", "grayscale", "invert", "blur", "sharpen", "trim"];
|
|
47
|
+
/**
|
|
48
|
+
* Applies an option object to an image, in {@link ORDER}.
|
|
49
|
+
*
|
|
50
|
+
* Split out from {@link transform} so {@link Image} is still the only thing that knows how to talk
|
|
51
|
+
* to the module, and so a caller holding an `Image` can apply an option object to it mid-chain.
|
|
52
|
+
*
|
|
53
|
+
* @param image The image to append to.
|
|
54
|
+
* @param options What to apply.
|
|
55
|
+
* @return The same image, for chaining.
|
|
56
|
+
*/
|
|
57
|
+
export declare function apply(image: Image, options: TransformOptions): Image;
|
|
58
|
+
/**
|
|
59
|
+
* Transforms an image in one call.
|
|
60
|
+
*
|
|
61
|
+
* The entry point to reach for. It builds a plan from the options, lets the planner pull only the
|
|
62
|
+
* source it needs, and hands back the encoded result:
|
|
63
|
+
*
|
|
64
|
+
* ```ts
|
|
65
|
+
* import wasm from '@gmitch215/tinyimg/tinyimg.wasm';
|
|
66
|
+
* import { TinyImgModule, transform } from '@gmitch215/tinyimg';
|
|
67
|
+
*
|
|
68
|
+
* const tinyimg = TinyImgModule.load(wasm);
|
|
69
|
+
*
|
|
70
|
+
* export default {
|
|
71
|
+
* async fetch(request: Request): Promise<Response> {
|
|
72
|
+
* const source = await fetch('https://example.com/photo.jpg');
|
|
73
|
+
* const result = await transform(tinyimg, source, {
|
|
74
|
+
* width: 800,
|
|
75
|
+
* height: 600,
|
|
76
|
+
* fit: 'cover',
|
|
77
|
+
* format: 'webp',
|
|
78
|
+
* quality: 80
|
|
79
|
+
* });
|
|
80
|
+
*
|
|
81
|
+
* return result.response({ 'cache-control': 'public, max-age=86400' });
|
|
82
|
+
* }
|
|
83
|
+
* };
|
|
84
|
+
* ```
|
|
85
|
+
*
|
|
86
|
+
* The handle is released before this returns, so there is nothing to dispose. Use {@link Image}
|
|
87
|
+
* directly when you want two encodings of one transformation, or an operation this option object
|
|
88
|
+
* does not cover.
|
|
89
|
+
*
|
|
90
|
+
* @param module The loaded module.
|
|
91
|
+
* @param source The encoded image, in any shape {@link Source} accepts.
|
|
92
|
+
* @param options What to do to it. An empty object decodes and re-encodes.
|
|
93
|
+
* @return The encoded result and its conveniences.
|
|
94
|
+
*/
|
|
95
|
+
export declare function transform(module: TinyImgModule, source: Source, options?: TransformOptions): Promise<TransformResult>;
|
|
96
|
+
/**
|
|
97
|
+
* A stable key for the artifact a request would produce.
|
|
98
|
+
*
|
|
99
|
+
* The point of a cache in front of this library is that the expensive path runs once. That only
|
|
100
|
+
* works if the key is canonical: two requests that mean the same thing have to produce the same
|
|
101
|
+
* string, and two that mean different things must not. Option order, absent options and the source
|
|
102
|
+
* itself all have to be normalized, which is easy to get subtly wrong by hand and is why this is
|
|
103
|
+
* here rather than in a README snippet.
|
|
104
|
+
*
|
|
105
|
+
* The source is identified by the SHA-256 of its bytes rather than by a URL, so the same picture
|
|
106
|
+
* served from two places is one artifact and a picture that changed under a stable URL is not
|
|
107
|
+
* mistaken for the old one.
|
|
108
|
+
*
|
|
109
|
+
* The result is shaped as a URL because that is what the Workers Cache API takes as a key:
|
|
110
|
+
*
|
|
111
|
+
* ```ts
|
|
112
|
+
* const key = await artifactKey(source, options);
|
|
113
|
+
* const hit = await caches.default.match(key);
|
|
114
|
+
*
|
|
115
|
+
* if (hit) return hit;
|
|
116
|
+
*
|
|
117
|
+
* const out = await transform(tinyimg, source, options);
|
|
118
|
+
* const response = out.response({ 'cache-control': 'public, max-age=31536000, immutable' });
|
|
119
|
+
*
|
|
120
|
+
* ctx.waitUntil(caches.default.put(key, response.clone()));
|
|
121
|
+
* return response;
|
|
122
|
+
* ```
|
|
123
|
+
*
|
|
124
|
+
* A cache hit costs no CPU at all, which is the only way a request the budget cannot afford still
|
|
125
|
+
* gets served: it is paid for once.
|
|
126
|
+
*
|
|
127
|
+
* @param source The image the request is about, in any shape {@link Source} accepts.
|
|
128
|
+
* @param options The request. `budgetMs` and `effort` are included, because both can change the
|
|
129
|
+
* bytes that come out.
|
|
130
|
+
* @param origin Prefix for the returned URL. Anything stable; it never leaves the cache.
|
|
131
|
+
* @return A URL-shaped key.
|
|
132
|
+
*/
|
|
133
|
+
export declare function artifactKey(source: Source, options?: TransformOptions, origin?: string): Promise<string>;
|
|
134
|
+
export { ORDER as TRANSFORM_ORDER };
|
|
135
|
+
//# sourceMappingURL=transform.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform.d.ts","sourceRoot":"","sources":["../src/ts/transform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAA+B,MAAM,YAAY,CAAC;AAChE,OAAO,EAAc,KAAK,WAAW,EAAE,KAAK,MAAM,EAAE,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9F,OAAO,KAAK,EAAe,aAAa,EAAE,MAAM,WAAW,CAAC;AAE5D;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC/B,yBAAyB;IACzB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;IACvC,8BAA8B;IAC9B,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,wBAAwB;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,qCAAqC;IACrC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,sCAAsC;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;;;;;OAMG;IACH,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAE5B,yBAAyB;IACzB,KAAK,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC;IACjC,oCAAoC;IACpC,IAAI,IAAI,IAAI,CAAC;IACb,uDAAuD;IACvD,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,QAAQ,CAAC;IAC1C,kCAAkC;IAClC,OAAO,IAAI,MAAM,CAAC;CAClB;AAED;;;;;;;GAOG;AACH,QAAA,MAAM,KAAK,gKAeD,CAAC;AAEX;;;;;;;;;GASG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,gBAAgB,GAAG,KAAK,CA2CpE;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAsB,SAAS,CAC9B,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,gBAAqB,GAC5B,OAAO,CAAC,eAAe,CAAC,CAsC1B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAsB,WAAW,CAChC,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,gBAAqB,EAC9B,MAAM,SAA6B,GACjC,OAAO,CAAC,MAAM,CAAC,CA6BjB;AAgND,OAAO,EAAE,KAAK,IAAI,eAAe,EAAE,CAAC"}
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
import { Image, mimeFor } from './image.js';
|
|
2
|
+
import { readSource } from './types.js';
|
|
3
|
+
const ORDER = [
|
|
4
|
+
'crop',
|
|
5
|
+
'resize or fit',
|
|
6
|
+
'rotate',
|
|
7
|
+
'flip',
|
|
8
|
+
'brightness',
|
|
9
|
+
'contrast',
|
|
10
|
+
'saturation',
|
|
11
|
+
'hue',
|
|
12
|
+
'gamma',
|
|
13
|
+
'grayscale',
|
|
14
|
+
'invert',
|
|
15
|
+
'blur',
|
|
16
|
+
'sharpen',
|
|
17
|
+
'trim'
|
|
18
|
+
];
|
|
19
|
+
export function apply(image, options) {
|
|
20
|
+
if (options.effort !== undefined)
|
|
21
|
+
image.effort(options.effort);
|
|
22
|
+
if (options.background !== undefined)
|
|
23
|
+
image.background(options.background);
|
|
24
|
+
if (options.crop) {
|
|
25
|
+
image.crop(options.crop.x, options.crop.y, options.crop.width, options.crop.height);
|
|
26
|
+
}
|
|
27
|
+
const dpr = options.dpr ?? 1;
|
|
28
|
+
const width = options.width === undefined ? undefined : Math.round(options.width * dpr);
|
|
29
|
+
const height = options.height === undefined ? undefined : Math.round(options.height * dpr);
|
|
30
|
+
if (width !== undefined && height !== undefined) {
|
|
31
|
+
image.fit(width, height, {
|
|
32
|
+
fit: options.fit ?? 'cover',
|
|
33
|
+
...(options.gravity === undefined ? {} : { gravity: options.gravity }),
|
|
34
|
+
...(options.filter === undefined ? {} : { filter: options.filter })
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
else if (width !== undefined || height !== undefined) {
|
|
38
|
+
image.resize(width ?? 0, height ?? 0, options.filter ?? 'auto');
|
|
39
|
+
}
|
|
40
|
+
if (options.rotate)
|
|
41
|
+
image.rotate(options.rotate);
|
|
42
|
+
if (options.flip)
|
|
43
|
+
image.flip(options.flip);
|
|
44
|
+
if (options.brightness !== undefined)
|
|
45
|
+
image.brightness(options.brightness);
|
|
46
|
+
if (options.contrast !== undefined)
|
|
47
|
+
image.contrast(options.contrast);
|
|
48
|
+
if (options.saturation !== undefined)
|
|
49
|
+
image.saturation(options.saturation);
|
|
50
|
+
if (options.hue !== undefined)
|
|
51
|
+
image.hue(options.hue);
|
|
52
|
+
if (options.gamma !== undefined)
|
|
53
|
+
image.gamma(options.gamma);
|
|
54
|
+
if (options.grayscale)
|
|
55
|
+
image.grayscale();
|
|
56
|
+
if (options.invert)
|
|
57
|
+
image.invert();
|
|
58
|
+
if (options.blur !== undefined)
|
|
59
|
+
image.blur(options.blur);
|
|
60
|
+
if (options.sharpen !== undefined)
|
|
61
|
+
image.sharpen(options.sharpen);
|
|
62
|
+
if (options.trim)
|
|
63
|
+
image.trim(options.trim === true ? 8 : options.trim);
|
|
64
|
+
return image;
|
|
65
|
+
}
|
|
66
|
+
export async function transform(module, source, options = {}) {
|
|
67
|
+
const bytes = await readSource(source);
|
|
68
|
+
const passed = await passThrough(module, bytes, options);
|
|
69
|
+
if (passed)
|
|
70
|
+
return passed;
|
|
71
|
+
const image = await Image.open(module, bytes);
|
|
72
|
+
try {
|
|
73
|
+
apply(image, options);
|
|
74
|
+
const decided = image.decide();
|
|
75
|
+
const format = chooseFormat(module, image, options, decided);
|
|
76
|
+
const encode = {
|
|
77
|
+
...(options.quality === undefined ? {} : { quality: options.quality }),
|
|
78
|
+
...(options.lossless === undefined ? {} : { lossless: options.lossless }),
|
|
79
|
+
...(options.progressive === undefined ? {} : { progressive: options.progressive }),
|
|
80
|
+
...(options.metadata === undefined
|
|
81
|
+
? {}
|
|
82
|
+
: { stripMetadata: options.metadata === 'none' }),
|
|
83
|
+
...(options.effort === undefined ? {} : { effort: options.effort })
|
|
84
|
+
};
|
|
85
|
+
const data = await image.bytes(format, encode);
|
|
86
|
+
return result(data, format, decided.output.width, decided.output.height, image.sourceFrames > 1);
|
|
87
|
+
}
|
|
88
|
+
finally {
|
|
89
|
+
image.dispose();
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
export async function artifactKey(source, options = {}, origin = 'https://tinyimg.invalid/') {
|
|
93
|
+
const bytes = await readSource(source);
|
|
94
|
+
const digest = await crypto.subtle.digest('SHA-256', bytes.slice().buffer);
|
|
95
|
+
const hex = Array.from(new Uint8Array(digest), (byte) => byte.toString(16).padStart(2, '0')).join('');
|
|
96
|
+
const query = Object.keys(options)
|
|
97
|
+
.sort()
|
|
98
|
+
.flatMap((key) => {
|
|
99
|
+
const value = options[key];
|
|
100
|
+
if (value === undefined)
|
|
101
|
+
return [];
|
|
102
|
+
const text = typeof value === 'object' && value !== null
|
|
103
|
+
? JSON.stringify(Object.fromEntries(Object.entries(value).sort(([a], [b]) => (a < b ? -1 : 1))))
|
|
104
|
+
: String(value);
|
|
105
|
+
return [`${encodeURIComponent(key)}=${encodeURIComponent(text)}`];
|
|
106
|
+
})
|
|
107
|
+
.join('&');
|
|
108
|
+
return query ? `${origin}${hex}?${query}` : `${origin}${hex}`;
|
|
109
|
+
}
|
|
110
|
+
const CHANGES_OUTPUT = [
|
|
111
|
+
'crop',
|
|
112
|
+
'rotate',
|
|
113
|
+
'flip',
|
|
114
|
+
'brightness',
|
|
115
|
+
'contrast',
|
|
116
|
+
'saturation',
|
|
117
|
+
'hue',
|
|
118
|
+
'gamma',
|
|
119
|
+
'grayscale',
|
|
120
|
+
'invert',
|
|
121
|
+
'blur',
|
|
122
|
+
'sharpen',
|
|
123
|
+
'trim',
|
|
124
|
+
'background',
|
|
125
|
+
'quality',
|
|
126
|
+
'lossless',
|
|
127
|
+
'progressive',
|
|
128
|
+
'metadata',
|
|
129
|
+
'dpr'
|
|
130
|
+
];
|
|
131
|
+
async function passThrough(module, bytes, options) {
|
|
132
|
+
for (const key of CHANGES_OUTPUT) {
|
|
133
|
+
if (options[key] !== undefined)
|
|
134
|
+
return undefined;
|
|
135
|
+
}
|
|
136
|
+
let info;
|
|
137
|
+
try {
|
|
138
|
+
info = await module.probe(bytes);
|
|
139
|
+
}
|
|
140
|
+
catch {
|
|
141
|
+
return undefined;
|
|
142
|
+
}
|
|
143
|
+
if (info.format === 'unknown')
|
|
144
|
+
return undefined;
|
|
145
|
+
const asked = options.format;
|
|
146
|
+
const wanted = asked === 'auto' ? (module.has('webp') ? 'webp' : 'jpeg') : asked;
|
|
147
|
+
if (wanted !== undefined && wanted !== info.format)
|
|
148
|
+
return undefined;
|
|
149
|
+
const width = options.width;
|
|
150
|
+
const height = options.height;
|
|
151
|
+
if (width !== undefined && width < info.width)
|
|
152
|
+
return undefined;
|
|
153
|
+
if (height !== undefined && height < info.height)
|
|
154
|
+
return undefined;
|
|
155
|
+
if (width !== undefined && height !== undefined)
|
|
156
|
+
return undefined;
|
|
157
|
+
const view = bytes.buffer instanceof ArrayBuffer
|
|
158
|
+
? bytes
|
|
159
|
+
: new Uint8Array(bytes);
|
|
160
|
+
return result(view, info.format, info.width, info.height);
|
|
161
|
+
}
|
|
162
|
+
const FORMAT_ID = {
|
|
163
|
+
png: 1,
|
|
164
|
+
jpeg: 2,
|
|
165
|
+
bmp: 3,
|
|
166
|
+
gif: 4,
|
|
167
|
+
tiff: 5,
|
|
168
|
+
webp: 6,
|
|
169
|
+
avif: 7,
|
|
170
|
+
heif: 8
|
|
171
|
+
};
|
|
172
|
+
const AUTO_ORDER = ['webp', 'jpeg'];
|
|
173
|
+
function chooseFormat(module, image, options, decided) {
|
|
174
|
+
const asked = options.format;
|
|
175
|
+
if (asked !== undefined && asked !== 'auto')
|
|
176
|
+
return asked;
|
|
177
|
+
const budget = options.budgetMs;
|
|
178
|
+
const { width, height } = decided.output;
|
|
179
|
+
const cost = (format) => decided.estimateMs +
|
|
180
|
+
module.exports.tiny_encode_cost(FORMAT_ID[format], width, height) / 1000;
|
|
181
|
+
if (asked === 'auto') {
|
|
182
|
+
if (budget === undefined) {
|
|
183
|
+
return module.has('webp') ? 'webp' : 'jpeg';
|
|
184
|
+
}
|
|
185
|
+
const affordable = AUTO_ORDER.filter((format) => module.has(format) && cost(format) <= budget);
|
|
186
|
+
return affordable[0] ?? 'jpeg';
|
|
187
|
+
}
|
|
188
|
+
const source = image.sourceFormat;
|
|
189
|
+
if (source === 'unknown') {
|
|
190
|
+
throw new TypeError('the source format is unknown, so `format` has to be given');
|
|
191
|
+
}
|
|
192
|
+
return source;
|
|
193
|
+
}
|
|
194
|
+
function result(data, format, width, height, flattened = false) {
|
|
195
|
+
const contentType = mimeFor(format);
|
|
196
|
+
return {
|
|
197
|
+
data,
|
|
198
|
+
format,
|
|
199
|
+
contentType,
|
|
200
|
+
width,
|
|
201
|
+
height,
|
|
202
|
+
flattened,
|
|
203
|
+
bytes: () => data,
|
|
204
|
+
blob: () => new Blob([data], { type: contentType }),
|
|
205
|
+
response: (headers) => {
|
|
206
|
+
const merged = new Headers(headers);
|
|
207
|
+
merged.set('content-type', contentType);
|
|
208
|
+
merged.set('content-length', String(data.byteLength));
|
|
209
|
+
return new Response(data, { headers: merged });
|
|
210
|
+
},
|
|
211
|
+
dataUrl: () => {
|
|
212
|
+
let binary = '';
|
|
213
|
+
for (const byte of data)
|
|
214
|
+
binary += String.fromCharCode(byte);
|
|
215
|
+
return `data:${contentType};base64,${btoa(binary)}`;
|
|
216
|
+
}
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
export { ORDER as TRANSFORM_ORDER };
|
|
220
|
+
//# sourceMappingURL=transform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transform.js","sourceRoot":"","sources":["../src/ts/transform.ts"],"names":[],"mappings":"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"}
|