@frogbotai/piece-image-helper 0.29.0 → 0.30.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/README.md +3 -1
- package/dist/actions/compress.js +16 -7
- package/dist/actions/compress.js.map +1 -1
- package/dist/actions/convertFormat.js +44 -17
- package/dist/actions/convertFormat.js.map +1 -1
- package/dist/actions/crop.js +8 -5
- package/dist/actions/crop.js.map +1 -1
- package/dist/actions/getMetadata.js +9 -4
- package/dist/actions/getMetadata.js.map +1 -1
- package/dist/actions/imageToBase64.js +9 -4
- package/dist/actions/imageToBase64.js.map +1 -1
- package/dist/actions/resize.js +8 -5
- package/dist/actions/resize.js.map +1 -1
- package/dist/actions/rotate.js +13 -6
- package/dist/actions/rotate.js.map +1 -1
- package/dist/define.js +1 -0
- package/dist/define.js.map +1 -1
- package/dist/files.d.ts.map +1 -1
- package/dist/files.js +39 -28
- package/dist/files.js.map +1 -1
- package/dist/index.js +14 -2
- package/dist/index.js.map +1 -1
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# `@frogbotai/piece-image-helper`
|
|
2
2
|
|
|
3
|
-
Inspect, transform, compress, and convert images stored in
|
|
3
|
+
Inspect, transform, compress, and convert images stored in the files collection.
|
|
4
4
|
|
|
5
5
|
## Usage
|
|
6
6
|
|
|
@@ -10,6 +10,8 @@ import { createImageHelper } from '@frogbotai/piece-image-helper';
|
|
|
10
10
|
export const imageHelper = createImageHelper();
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
+
Every action uses the [files collection](https://docs.frogbot.ai/upload/files), the upload collection marked `file: true`. Without one, they fail with an error that asks you to add it.
|
|
14
|
+
|
|
13
15
|
## Actions
|
|
14
16
|
|
|
15
17
|
| Upstream action slug | Previous wrapper export | Native action | Notes |
|
package/dist/actions/compress.js
CHANGED
|
@@ -3,10 +3,18 @@ import { z } from 'zod';
|
|
|
3
3
|
import { defineAction } from '../define.js';
|
|
4
4
|
import { imageFile, loadImage, savedImage, saveImage } from '../files.js';
|
|
5
5
|
const inputSchema = z.object({
|
|
6
|
-
image: imageFile.meta({
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
image: imageFile.meta({
|
|
7
|
+
label: 'Image'
|
|
8
|
+
}),
|
|
9
|
+
quality: z.union([
|
|
10
|
+
z.literal(90),
|
|
11
|
+
z.literal(60)
|
|
12
|
+
]),
|
|
13
|
+
format: z.enum([
|
|
14
|
+
'jpg',
|
|
15
|
+
'png'
|
|
16
|
+
]),
|
|
17
|
+
resultFileName: z.string().min(1).optional()
|
|
10
18
|
});
|
|
11
19
|
export const compress = defineAction({
|
|
12
20
|
slug: 'compress',
|
|
@@ -14,7 +22,7 @@ export const compress = defineAction({
|
|
|
14
22
|
description: 'Compress an image with the selected quality.',
|
|
15
23
|
input: inputSchema,
|
|
16
24
|
output: savedImage,
|
|
17
|
-
async run({ input, req }) {
|
|
25
|
+
async run ({ input, req }) {
|
|
18
26
|
const source = await loadImage(req, input.image);
|
|
19
27
|
const image = await Jimp.read(source.data);
|
|
20
28
|
const mimeType = input.format === 'jpg' ? Jimp.MIME_JPEG : Jimp.MIME_PNG;
|
|
@@ -24,8 +32,9 @@ export const compress = defineAction({
|
|
|
24
32
|
req,
|
|
25
33
|
data,
|
|
26
34
|
name: `${input.resultFileName ?? 'image'}.${input.format}`,
|
|
27
|
-
mimeType
|
|
35
|
+
mimeType
|
|
28
36
|
});
|
|
29
|
-
}
|
|
37
|
+
}
|
|
30
38
|
});
|
|
39
|
+
|
|
31
40
|
//# sourceMappingURL=compress.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../src/actions/compress.ts"],"names":["Jimp","z","defineAction","imageFile","loadImage","savedImage","saveImage","inputSchema","object","image","meta","label","quality","union","literal","format","enum","resultFileName","string","min","optional","compress","slug","description","input","output","run","req","source","read","data","mimeType","MIME_JPEG","MIME_PNG","getBufferAsync","name"],"mappings":"AAAA,OAAOA,UAAU,OAAO;AACxB,SAASC,CAAC,QAAQ,MAAM;AAExB,SAASC,YAAY,QAAQ,eAAe;AAC5C,SAASC,SAAS,EAAEC,SAAS,EAAEC,UAAU,EAAEC,SAAS,QAAQ,cAAc;AAE1E,MAAMC,cAAcN,EAAEO,MAAM,CAAC;IAC3BC,OAAON,UAAUO,IAAI,CAAC;QAAEC,OAAO;IAAQ;IACvCC,SAASX,EAAEY,KAAK,CAAC;QAACZ,EAAEa,OAAO,CAAC;QAAKb,EAAEa,OAAO,CAAC;KAAI;IAC/CC,QAAQd,EAAEe,IAAI,CAAC;QAAC;QAAO;KAAM;IAC7BC,gBAAgBhB,EAAEiB,MAAM,GAAGC,GAAG,CAAC,GAAGC,QAAQ;AAC5C;AAEA,OAAO,MAAMC,WAAWnB,aAAa;IACnCoB,MAAM;IACNX,OAAO;IACPY,aAAa;IACbC,OAAOjB;IACPkB,QAAQpB;IACR,MAAMqB,KAAI,EAAEF,KAAK,EAAEG,GAAG,EAAE;QACtB,MAAMC,SAAS,MAAMxB,UAAUuB,KAAKH,MAAMf,KAAK;QAC/C,MAAMA,QAAQ,MAAMT,KAAK6B,IAAI,CAACD,OAAOE,IAAI;QACzC,MAAMC,WAAWP,MAAMT,MAAM,KAAK,QAAQf,KAAKgC,SAAS,GAAGhC,KAAKiC,QAAQ;QAExExB,MAAMG,OAAO,CAACY,MAAMZ,OAAO;QAE3B,MAAMkB,OAAO,MAAMrB,MAAMyB,cAAc,CAACH;QAExC,OAAOzB,UAAU;YACfqB;YACAG;YACAK,MAAM,GAAGX,MAAMP,cAAc,IAAI,QAAQ,CAAC,EAAEO,MAAMT,MAAM,EAAE;YAC1DgB;QACF;IACF;AACF,GAAG","file":"compress.js"}
|
|
@@ -5,19 +5,39 @@ import { z } from 'zod';
|
|
|
5
5
|
import { defineAction } from '../define.js';
|
|
6
6
|
import { imageFile, loadImage, savedImage, saveImage } from '../files.js';
|
|
7
7
|
const inputSchema = z.object({
|
|
8
|
-
image: imageFile.meta({
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
image: imageFile.meta({
|
|
9
|
+
label: 'Image'
|
|
10
|
+
}),
|
|
11
|
+
outputFormat: z.enum([
|
|
12
|
+
'JPEG',
|
|
13
|
+
'PNG',
|
|
14
|
+
'TIFF',
|
|
15
|
+
'BMP',
|
|
16
|
+
'AVIF'
|
|
17
|
+
]),
|
|
18
|
+
resultFileName: z.string().min(1).optional()
|
|
11
19
|
});
|
|
12
20
|
const output = z.object({
|
|
13
21
|
file: savedImage,
|
|
14
|
-
sourceMimeType: z.string().min(1)
|
|
22
|
+
sourceMimeType: z.string().min(1)
|
|
15
23
|
});
|
|
16
24
|
const formats = {
|
|
17
|
-
JPEG: {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
25
|
+
JPEG: {
|
|
26
|
+
extension: 'jpg',
|
|
27
|
+
mimeType: Jimp.MIME_JPEG
|
|
28
|
+
},
|
|
29
|
+
PNG: {
|
|
30
|
+
extension: 'png',
|
|
31
|
+
mimeType: Jimp.MIME_PNG
|
|
32
|
+
},
|
|
33
|
+
TIFF: {
|
|
34
|
+
extension: 'tiff',
|
|
35
|
+
mimeType: Jimp.MIME_TIFF
|
|
36
|
+
},
|
|
37
|
+
BMP: {
|
|
38
|
+
extension: 'bmp',
|
|
39
|
+
mimeType: Jimp.MIME_BMP
|
|
40
|
+
}
|
|
21
41
|
};
|
|
22
42
|
export const convertFormat = defineAction({
|
|
23
43
|
slug: 'convertFormat',
|
|
@@ -25,11 +45,15 @@ export const convertFormat = defineAction({
|
|
|
25
45
|
description: 'Convert an image to JPEG, PNG, TIFF, BMP, or AVIF.',
|
|
26
46
|
input: inputSchema,
|
|
27
47
|
output,
|
|
28
|
-
async run({ input, req }) {
|
|
48
|
+
async run ({ input, req }) {
|
|
29
49
|
const source = await loadImage(req, input.image);
|
|
30
|
-
const sourceData = [
|
|
31
|
-
|
|
32
|
-
|
|
50
|
+
const sourceData = [
|
|
51
|
+
'image/heic',
|
|
52
|
+
'image/heif'
|
|
53
|
+
].includes(source.mimeType) ? Buffer.from(await convertHeic({
|
|
54
|
+
buffer: source.data,
|
|
55
|
+
format: 'PNG'
|
|
56
|
+
})) : source.data;
|
|
33
57
|
let data;
|
|
34
58
|
let extension;
|
|
35
59
|
let mimeType;
|
|
@@ -37,8 +61,7 @@ export const convertFormat = defineAction({
|
|
|
37
61
|
data = await sharp(sourceData).avif().toBuffer();
|
|
38
62
|
extension = 'avif';
|
|
39
63
|
mimeType = 'image/avif';
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
64
|
+
} else {
|
|
42
65
|
const format = formats[input.outputFormat];
|
|
43
66
|
const image = await Jimp.read(sourceData);
|
|
44
67
|
data = await image.getBufferAsync(format.mimeType);
|
|
@@ -49,9 +72,13 @@ export const convertFormat = defineAction({
|
|
|
49
72
|
req,
|
|
50
73
|
data,
|
|
51
74
|
name: `${input.resultFileName ?? 'image'}.${extension}`,
|
|
52
|
-
mimeType
|
|
75
|
+
mimeType
|
|
53
76
|
});
|
|
54
|
-
return {
|
|
55
|
-
|
|
77
|
+
return {
|
|
78
|
+
file,
|
|
79
|
+
sourceMimeType: source.mimeType
|
|
80
|
+
};
|
|
81
|
+
}
|
|
56
82
|
});
|
|
83
|
+
|
|
57
84
|
//# sourceMappingURL=convertFormat.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../src/actions/convertFormat.ts"],"names":["convertHeic","Jimp","sharp","z","defineAction","imageFile","loadImage","savedImage","saveImage","inputSchema","object","image","meta","label","outputFormat","enum","resultFileName","string","min","optional","output","file","sourceMimeType","formats","JPEG","extension","mimeType","MIME_JPEG","PNG","MIME_PNG","TIFF","MIME_TIFF","BMP","MIME_BMP","convertFormat","slug","description","input","run","req","source","sourceData","includes","Buffer","from","buffer","data","format","avif","toBuffer","read","getBufferAsync","name"],"mappings":"AAAA,OAAOA,iBAAiB,eAAe;AACvC,OAAOC,UAAU,OAAO;AACxB,OAAOC,WAAW,QAAQ;AAC1B,SAASC,CAAC,QAAQ,MAAM;AAExB,SAASC,YAAY,QAAQ,eAAe;AAC5C,SAASC,SAAS,EAAEC,SAAS,EAAEC,UAAU,EAAEC,SAAS,QAAQ,cAAc;AAE1E,MAAMC,cAAcN,EAAEO,MAAM,CAAC;IAC3BC,OAAON,UAAUO,IAAI,CAAC;QAAEC,OAAO;IAAQ;IACvCC,cAAcX,EAAEY,IAAI,CAAC;QAAC;QAAQ;QAAO;QAAQ;QAAO;KAAO;IAC3DC,gBAAgBb,EAAEc,MAAM,GAAGC,GAAG,CAAC,GAAGC,QAAQ;AAC5C;AAEA,MAAMC,SAASjB,EAAEO,MAAM,CAAC;IACtBW,MAAMd;IACNe,gBAAgBnB,EAAEc,MAAM,GAAGC,GAAG,CAAC;AACjC;AAIA,MAAMK,UAAyE;IAC7EC,MAAM;QAAEC,WAAW;QAAOC,UAAUzB,KAAK0B,SAAS;IAAC;IACnDC,KAAK;QAAEH,WAAW;QAAOC,UAAUzB,KAAK4B,QAAQ;IAAC;IACjDC,MAAM;QAAEL,WAAW;QAAQC,UAAUzB,KAAK8B,SAAS;IAAC;IACpDC,KAAK;QAAEP,WAAW;QAAOC,UAAUzB,KAAKgC,QAAQ;IAAC;AACnD;AAEA,OAAO,MAAMC,gBAAgB9B,aAAa;IACxC+B,MAAM;IACNtB,OAAO;IACPuB,aAAa;IACbC,OAAO5B;IACPW;IACA,MAAMkB,KAAI,EAAED,KAAK,EAAEE,GAAG,EAAE;QACtB,MAAMC,SAAS,MAAMlC,UAAUiC,KAAKF,MAAM1B,KAAK;QAC/C,MAAM8B,aAAa;YAAC;YAAc;SAAa,CAACC,QAAQ,CAACF,OAAOd,QAAQ,IACpEiB,OAAOC,IAAI,CAAC,MAAM5C,YAAY;YAAE6C,QAAQL,OAAOM,IAAI;YAAEC,QAAQ;QAAM,MACnEP,OAAOM,IAAI;QAEf,IAAIA;QACJ,IAAIrB;QACJ,IAAIC;QAEJ,IAAIW,MAAMvB,YAAY,KAAK,QAAQ;YACjCgC,OAAO,MAAM5C,MAAMuC,YAAYO,IAAI,GAAGC,QAAQ;YAC9CxB,YAAY;YACZC,WAAW;QACb,OAAO;YACL,MAAMqB,SAASxB,OAAO,CAACc,MAAMvB,YAAY,CAAC;YAC1C,MAAMH,QAAQ,MAAMV,KAAKiD,IAAI,CAACT;YAE9BK,OAAO,MAAMnC,MAAMwC,cAAc,CAACJ,OAAOrB,QAAQ;YACjDD,YAAYsB,OAAOtB,SAAS;YAC5BC,WAAWqB,OAAOrB,QAAQ;QAC5B;QAEA,MAAML,OAAO,MAAMb,UAAU;YAC3B+B;YACAO;YACAM,MAAM,GAAGf,MAAMrB,cAAc,IAAI,QAAQ,CAAC,EAAES,WAAW;YACvDC;QACF;QAEA,OAAO;YAAEL;YAAMC,gBAAgBkB,OAAOd,QAAQ;QAAC;IACjD;AACF,GAAG","file":"convertFormat.js"}
|
package/dist/actions/crop.js
CHANGED
|
@@ -3,12 +3,14 @@ import { z } from 'zod';
|
|
|
3
3
|
import { defineAction } from '../define.js';
|
|
4
4
|
import { imageFile, loadImage, savedImage, saveImage } from '../files.js';
|
|
5
5
|
const inputSchema = z.object({
|
|
6
|
-
image: imageFile.meta({
|
|
6
|
+
image: imageFile.meta({
|
|
7
|
+
label: 'Image'
|
|
8
|
+
}),
|
|
7
9
|
left: z.number().int().nonnegative(),
|
|
8
10
|
top: z.number().int().nonnegative(),
|
|
9
11
|
width: z.number().int().positive(),
|
|
10
12
|
height: z.number().int().positive(),
|
|
11
|
-
resultFileName: z.string().min(1).optional()
|
|
13
|
+
resultFileName: z.string().min(1).optional()
|
|
12
14
|
});
|
|
13
15
|
export const crop = defineAction({
|
|
14
16
|
slug: 'crop',
|
|
@@ -16,7 +18,7 @@ export const crop = defineAction({
|
|
|
16
18
|
description: 'Crop a rectangular region from an image.',
|
|
17
19
|
input: inputSchema,
|
|
18
20
|
output: savedImage,
|
|
19
|
-
async run({ input, req }) {
|
|
21
|
+
async run ({ input, req }) {
|
|
20
22
|
const source = await loadImage(req, input.image);
|
|
21
23
|
const image = await Jimp.read(source.data);
|
|
22
24
|
image.crop(input.left, input.top, input.width, input.height);
|
|
@@ -25,8 +27,9 @@ export const crop = defineAction({
|
|
|
25
27
|
req,
|
|
26
28
|
data,
|
|
27
29
|
name: `${input.resultFileName ?? 'image'}.${image.getExtension()}`,
|
|
28
|
-
mimeType: image.getMIME()
|
|
30
|
+
mimeType: image.getMIME()
|
|
29
31
|
});
|
|
30
|
-
}
|
|
32
|
+
}
|
|
31
33
|
});
|
|
34
|
+
|
|
32
35
|
//# sourceMappingURL=crop.js.map
|
package/dist/actions/crop.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../src/actions/crop.ts"],"names":["Jimp","z","defineAction","imageFile","loadImage","savedImage","saveImage","inputSchema","object","image","meta","label","left","number","int","nonnegative","top","width","positive","height","resultFileName","string","min","optional","crop","slug","description","input","output","run","req","source","read","data","getBufferAsync","getMIME","name","getExtension","mimeType"],"mappings":"AAAA,OAAOA,UAAU,OAAO;AACxB,SAASC,CAAC,QAAQ,MAAM;AAExB,SAASC,YAAY,QAAQ,eAAe;AAC5C,SAASC,SAAS,EAAEC,SAAS,EAAEC,UAAU,EAAEC,SAAS,QAAQ,cAAc;AAE1E,MAAMC,cAAcN,EAAEO,MAAM,CAAC;IAC3BC,OAAON,UAAUO,IAAI,CAAC;QAAEC,OAAO;IAAQ;IACvCC,MAAMX,EAAEY,MAAM,GAAGC,GAAG,GAAGC,WAAW;IAClCC,KAAKf,EAAEY,MAAM,GAAGC,GAAG,GAAGC,WAAW;IACjCE,OAAOhB,EAAEY,MAAM,GAAGC,GAAG,GAAGI,QAAQ;IAChCC,QAAQlB,EAAEY,MAAM,GAAGC,GAAG,GAAGI,QAAQ;IACjCE,gBAAgBnB,EAAEoB,MAAM,GAAGC,GAAG,CAAC,GAAGC,QAAQ;AAC5C;AAEA,OAAO,MAAMC,OAAOtB,aAAa;IAC/BuB,MAAM;IACNd,OAAO;IACPe,aAAa;IACbC,OAAOpB;IACPqB,QAAQvB;IACR,MAAMwB,KAAI,EAAEF,KAAK,EAAEG,GAAG,EAAE;QACtB,MAAMC,SAAS,MAAM3B,UAAU0B,KAAKH,MAAMlB,KAAK;QAC/C,MAAMA,QAAQ,MAAMT,KAAKgC,IAAI,CAACD,OAAOE,IAAI;QAEzCxB,MAAMe,IAAI,CAACG,MAAMf,IAAI,EAAEe,MAAMX,GAAG,EAAEW,MAAMV,KAAK,EAAEU,MAAMR,MAAM;QAE3D,MAAMc,OAAO,MAAMxB,MAAMyB,cAAc,CAACzB,MAAM0B,OAAO;QAErD,OAAO7B,UAAU;YACfwB;YACAG;YACAG,MAAM,GAAGT,MAAMP,cAAc,IAAI,QAAQ,CAAC,EAAEX,MAAM4B,YAAY,IAAI;YAClEC,UAAU7B,MAAM0B,OAAO;QACzB;IACF;AACF,GAAG","file":"crop.js"}
|
|
@@ -2,7 +2,11 @@ import ExifReader from 'exifreader';
|
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { defineAction } from '../define.js';
|
|
4
4
|
import { imageFile, loadImage } from '../files.js';
|
|
5
|
-
const inputSchema = z.object({
|
|
5
|
+
const inputSchema = z.object({
|
|
6
|
+
image: imageFile.meta({
|
|
7
|
+
label: 'Image'
|
|
8
|
+
})
|
|
9
|
+
});
|
|
6
10
|
export const getMetadata = defineAction({
|
|
7
11
|
slug: 'getMetadata',
|
|
8
12
|
label: 'Get image metadata',
|
|
@@ -10,11 +14,12 @@ export const getMetadata = defineAction({
|
|
|
10
14
|
input: inputSchema,
|
|
11
15
|
output: z.record(z.string(), z.object({
|
|
12
16
|
value: z.unknown(),
|
|
13
|
-
description: z.string().optional()
|
|
17
|
+
description: z.string().optional()
|
|
14
18
|
})),
|
|
15
|
-
async run({ input, req }) {
|
|
19
|
+
async run ({ input, req }) {
|
|
16
20
|
const image = await loadImage(req, input.image);
|
|
17
21
|
return ExifReader.load(image.data);
|
|
18
|
-
}
|
|
22
|
+
}
|
|
19
23
|
});
|
|
24
|
+
|
|
20
25
|
//# sourceMappingURL=getMetadata.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../src/actions/getMetadata.ts"],"names":["ExifReader","z","defineAction","imageFile","loadImage","inputSchema","object","image","meta","label","getMetadata","slug","description","input","output","record","string","value","unknown","optional","run","req","load","data"],"mappings":"AAAA,OAAOA,gBAAgB,aAAa;AACpC,SAASC,CAAC,QAAQ,MAAM;AAExB,SAASC,YAAY,QAAQ,eAAe;AAC5C,SAASC,SAAS,EAAEC,SAAS,QAAQ,cAAc;AAEnD,MAAMC,cAAcJ,EAAEK,MAAM,CAAC;IAAEC,OAAOJ,UAAUK,IAAI,CAAC;QAAEC,OAAO;IAAQ;AAAG;AAEzE,OAAO,MAAMC,cAAcR,aAAa;IACtCS,MAAM;IACNF,OAAO;IACPG,aAAa;IACbC,OAAOR;IACPS,QAAQb,EAAEc,MAAM,CACdd,EAAEe,MAAM,IACRf,EAAEK,MAAM,CAAC;QACPW,OAAOhB,EAAEiB,OAAO;QAChBN,aAAaX,EAAEe,MAAM,GAAGG,QAAQ;IAClC;IAEF,MAAMC,KAAI,EAAEP,KAAK,EAAEQ,GAAG,EAAE;QACtB,MAAMd,QAAQ,MAAMH,UAAUiB,KAAKR,MAAMN,KAAK;QAE9C,OAAOP,WAAWsB,IAAI,CAACf,MAAMgB,IAAI;IACnC;AACF,GAAG","file":"getMetadata.js"}
|
|
@@ -2,8 +2,12 @@ import { z } from 'zod';
|
|
|
2
2
|
import { defineAction } from '../define.js';
|
|
3
3
|
import { imageFile, loadImage } from '../files.js';
|
|
4
4
|
const inputSchema = z.object({
|
|
5
|
-
image: imageFile.meta({
|
|
6
|
-
|
|
5
|
+
image: imageFile.meta({
|
|
6
|
+
label: 'Image'
|
|
7
|
+
}),
|
|
8
|
+
mimeType: z.string().min(1).optional().meta({
|
|
9
|
+
label: 'Override MIME type'
|
|
10
|
+
})
|
|
7
11
|
});
|
|
8
12
|
export const imageToBase64 = defineAction({
|
|
9
13
|
slug: 'imageToBase64',
|
|
@@ -11,9 +15,10 @@ export const imageToBase64 = defineAction({
|
|
|
11
15
|
description: 'Convert an image to a Base64 data URL.',
|
|
12
16
|
input: inputSchema,
|
|
13
17
|
output: z.string().regex(/^data:[^;,]+;base64,[A-Za-z0-9+/]*={0,2}$/),
|
|
14
|
-
async run({ input, req }) {
|
|
18
|
+
async run ({ input, req }) {
|
|
15
19
|
const image = await loadImage(req, input.image);
|
|
16
20
|
return `data:${input.mimeType ?? image.mimeType};base64,${image.data.toString('base64')}`;
|
|
17
|
-
}
|
|
21
|
+
}
|
|
18
22
|
});
|
|
23
|
+
|
|
19
24
|
//# sourceMappingURL=imageToBase64.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../src/actions/imageToBase64.ts"],"names":["z","defineAction","imageFile","loadImage","inputSchema","object","image","meta","label","mimeType","string","min","optional","imageToBase64","slug","description","input","output","regex","run","req","data","toString"],"mappings":"AAAA,SAASA,CAAC,QAAQ,MAAM;AAExB,SAASC,YAAY,QAAQ,eAAe;AAC5C,SAASC,SAAS,EAAEC,SAAS,QAAQ,cAAc;AAEnD,MAAMC,cAAcJ,EAAEK,MAAM,CAAC;IAC3BC,OAAOJ,UAAUK,IAAI,CAAC;QAAEC,OAAO;IAAQ;IACvCC,UAAUT,EAAEU,MAAM,GAAGC,GAAG,CAAC,GAAGC,QAAQ,GAAGL,IAAI,CAAC;QAAEC,OAAO;IAAqB;AAC5E;AAEA,OAAO,MAAMK,gBAAgBZ,aAAa;IACxCa,MAAM;IACNN,OAAO;IACPO,aAAa;IACbC,OAAOZ;IACPa,QAAQjB,EAAEU,MAAM,GAAGQ,KAAK,CAAC;IACzB,MAAMC,KAAI,EAAEH,KAAK,EAAEI,GAAG,EAAE;QACtB,MAAMd,QAAQ,MAAMH,UAAUiB,KAAKJ,MAAMV,KAAK;QAE9C,OAAO,CAAC,KAAK,EAAEU,MAAMP,QAAQ,IAAIH,MAAMG,QAAQ,CAAC,QAAQ,EAAEH,MAAMe,IAAI,CAACC,QAAQ,CAAC,WAAW;IAC3F;AACF,GAAG","file":"imageToBase64.js"}
|
package/dist/actions/resize.js
CHANGED
|
@@ -3,11 +3,13 @@ import { z } from 'zod';
|
|
|
3
3
|
import { defineAction } from '../define.js';
|
|
4
4
|
import { imageFile, loadImage, savedImage, saveImage } from '../files.js';
|
|
5
5
|
const inputSchema = z.object({
|
|
6
|
-
image: imageFile.meta({
|
|
6
|
+
image: imageFile.meta({
|
|
7
|
+
label: 'Image'
|
|
8
|
+
}),
|
|
7
9
|
width: z.number().int().positive(),
|
|
8
10
|
height: z.number().int().positive(),
|
|
9
11
|
maintainAspectRatio: z.boolean().default(false),
|
|
10
|
-
resultFileName: z.string().min(1).optional()
|
|
12
|
+
resultFileName: z.string().min(1).optional()
|
|
11
13
|
});
|
|
12
14
|
export const resize = defineAction({
|
|
13
15
|
slug: 'resize',
|
|
@@ -15,7 +17,7 @@ export const resize = defineAction({
|
|
|
15
17
|
description: 'Resize an image to the requested dimensions.',
|
|
16
18
|
input: inputSchema,
|
|
17
19
|
output: savedImage,
|
|
18
|
-
async run({ input, req }) {
|
|
20
|
+
async run ({ input, req }) {
|
|
19
21
|
const source = await loadImage(req, input.image);
|
|
20
22
|
const image = await Jimp.read(source.data);
|
|
21
23
|
image.resize(input.width, input.maintainAspectRatio ? Jimp.AUTO : input.height);
|
|
@@ -24,8 +26,9 @@ export const resize = defineAction({
|
|
|
24
26
|
req,
|
|
25
27
|
data,
|
|
26
28
|
name: `${input.resultFileName ?? 'image'}.${image.getExtension()}`,
|
|
27
|
-
mimeType: image.getMIME()
|
|
29
|
+
mimeType: image.getMIME()
|
|
28
30
|
});
|
|
29
|
-
}
|
|
31
|
+
}
|
|
30
32
|
});
|
|
33
|
+
|
|
31
34
|
//# sourceMappingURL=resize.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../src/actions/resize.ts"],"names":["Jimp","z","defineAction","imageFile","loadImage","savedImage","saveImage","inputSchema","object","image","meta","label","width","number","int","positive","height","maintainAspectRatio","boolean","default","resultFileName","string","min","optional","resize","slug","description","input","output","run","req","source","read","data","AUTO","getBufferAsync","getMIME","name","getExtension","mimeType"],"mappings":"AAAA,OAAOA,UAAU,OAAO;AACxB,SAASC,CAAC,QAAQ,MAAM;AAExB,SAASC,YAAY,QAAQ,eAAe;AAC5C,SAASC,SAAS,EAAEC,SAAS,EAAEC,UAAU,EAAEC,SAAS,QAAQ,cAAc;AAE1E,MAAMC,cAAcN,EAAEO,MAAM,CAAC;IAC3BC,OAAON,UAAUO,IAAI,CAAC;QAAEC,OAAO;IAAQ;IACvCC,OAAOX,EAAEY,MAAM,GAAGC,GAAG,GAAGC,QAAQ;IAChCC,QAAQf,EAAEY,MAAM,GAAGC,GAAG,GAAGC,QAAQ;IACjCE,qBAAqBhB,EAAEiB,OAAO,GAAGC,OAAO,CAAC;IACzCC,gBAAgBnB,EAAEoB,MAAM,GAAGC,GAAG,CAAC,GAAGC,QAAQ;AAC5C;AAEA,OAAO,MAAMC,SAAStB,aAAa;IACjCuB,MAAM;IACNd,OAAO;IACPe,aAAa;IACbC,OAAOpB;IACPqB,QAAQvB;IACR,MAAMwB,KAAI,EAAEF,KAAK,EAAEG,GAAG,EAAE;QACtB,MAAMC,SAAS,MAAM3B,UAAU0B,KAAKH,MAAMlB,KAAK;QAC/C,MAAMA,QAAQ,MAAMT,KAAKgC,IAAI,CAACD,OAAOE,IAAI;QAEzCxB,MAAMe,MAAM,CAACG,MAAMf,KAAK,EAAEe,MAAMV,mBAAmB,GAAGjB,KAAKkC,IAAI,GAAGP,MAAMX,MAAM;QAE9E,MAAMiB,OAAO,MAAMxB,MAAM0B,cAAc,CAAC1B,MAAM2B,OAAO;QAErD,OAAO9B,UAAU;YACfwB;YACAG;YACAI,MAAM,GAAGV,MAAMP,cAAc,IAAI,QAAQ,CAAC,EAAEX,MAAM6B,YAAY,IAAI;YAClEC,UAAU9B,MAAM2B,OAAO;QACzB;IACF;AACF,GAAG","file":"resize.js"}
|
package/dist/actions/rotate.js
CHANGED
|
@@ -3,9 +3,15 @@ import { z } from 'zod';
|
|
|
3
3
|
import { defineAction } from '../define.js';
|
|
4
4
|
import { imageFile, loadImage, savedImage, saveImage } from '../files.js';
|
|
5
5
|
const inputSchema = z.object({
|
|
6
|
-
image: imageFile.meta({
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
image: imageFile.meta({
|
|
7
|
+
label: 'Image'
|
|
8
|
+
}),
|
|
9
|
+
degrees: z.union([
|
|
10
|
+
z.literal(90),
|
|
11
|
+
z.literal(180),
|
|
12
|
+
z.literal(270)
|
|
13
|
+
]),
|
|
14
|
+
resultFileName: z.string().min(1).optional()
|
|
9
15
|
});
|
|
10
16
|
export const rotate = defineAction({
|
|
11
17
|
slug: 'rotate',
|
|
@@ -13,7 +19,7 @@ export const rotate = defineAction({
|
|
|
13
19
|
description: 'Rotate an image clockwise.',
|
|
14
20
|
input: inputSchema,
|
|
15
21
|
output: savedImage,
|
|
16
|
-
async run({ input, req }) {
|
|
22
|
+
async run ({ input, req }) {
|
|
17
23
|
const source = await loadImage(req, input.image);
|
|
18
24
|
const image = await Jimp.read(source.data);
|
|
19
25
|
image.rotate(-input.degrees);
|
|
@@ -22,8 +28,9 @@ export const rotate = defineAction({
|
|
|
22
28
|
req,
|
|
23
29
|
data,
|
|
24
30
|
name: `${input.resultFileName ?? 'image'}.${image.getExtension()}`,
|
|
25
|
-
mimeType: image.getMIME()
|
|
31
|
+
mimeType: image.getMIME()
|
|
26
32
|
});
|
|
27
|
-
}
|
|
33
|
+
}
|
|
28
34
|
});
|
|
35
|
+
|
|
29
36
|
//# sourceMappingURL=rotate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../../src/actions/rotate.ts"],"names":["Jimp","z","defineAction","imageFile","loadImage","savedImage","saveImage","inputSchema","object","image","meta","label","degrees","union","literal","resultFileName","string","min","optional","rotate","slug","description","input","output","run","req","source","read","data","getBufferAsync","getMIME","name","getExtension","mimeType"],"mappings":"AAAA,OAAOA,UAAU,OAAO;AACxB,SAASC,CAAC,QAAQ,MAAM;AAExB,SAASC,YAAY,QAAQ,eAAe;AAC5C,SAASC,SAAS,EAAEC,SAAS,EAAEC,UAAU,EAAEC,SAAS,QAAQ,cAAc;AAE1E,MAAMC,cAAcN,EAAEO,MAAM,CAAC;IAC3BC,OAAON,UAAUO,IAAI,CAAC;QAAEC,OAAO;IAAQ;IACvCC,SAASX,EAAEY,KAAK,CAAC;QAACZ,EAAEa,OAAO,CAAC;QAAKb,EAAEa,OAAO,CAAC;QAAMb,EAAEa,OAAO,CAAC;KAAK;IAChEC,gBAAgBd,EAAEe,MAAM,GAAGC,GAAG,CAAC,GAAGC,QAAQ;AAC5C;AAEA,OAAO,MAAMC,SAASjB,aAAa;IACjCkB,MAAM;IACNT,OAAO;IACPU,aAAa;IACbC,OAAOf;IACPgB,QAAQlB;IACR,MAAMmB,KAAI,EAAEF,KAAK,EAAEG,GAAG,EAAE;QACtB,MAAMC,SAAS,MAAMtB,UAAUqB,KAAKH,MAAMb,KAAK;QAC/C,MAAMA,QAAQ,MAAMT,KAAK2B,IAAI,CAACD,OAAOE,IAAI;QAEzCnB,MAAMU,MAAM,CAAC,CAACG,MAAMV,OAAO;QAE3B,MAAMgB,OAAO,MAAMnB,MAAMoB,cAAc,CAACpB,MAAMqB,OAAO;QAErD,OAAOxB,UAAU;YACfmB;YACAG;YACAG,MAAM,GAAGT,MAAMP,cAAc,IAAI,QAAQ,CAAC,EAAEN,MAAMuB,YAAY,IAAI;YAClEC,UAAUxB,MAAMqB,OAAO;QACzB;IACF;AACF,GAAG","file":"rotate.js"}
|
package/dist/define.js
CHANGED
package/dist/define.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../src/define.ts"],"names":["createPieceHelpers","defineAction"],"mappings":"AAAA,SAASA,kBAAkB,QAAQ,iBAAiB;AAEpD,OAAO,MAAM,EAAEC,YAAY,EAAE,GAAGD,qBAAqB","file":"define.js"}
|
package/dist/files.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../src/files.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../src/files.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAG9C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,SAAS,iDAAoC,CAAC;AAE3D,eAAO,MAAM,UAAU;;;;;;iBAMrB,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,wBAAsB,SAAS,CAAC,GAAG,EAAE,cAAc,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA6D9F;AAED,wBAAsB,SAAS,CAAC,EAC9B,GAAG,EACH,IAAI,EACJ,IAAI,EACJ,QAAQ,GACT,EAAE;IACD,GAAG,EAAE,cAAc,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;;;;;;GAkBA"}
|
package/dist/files.js
CHANGED
|
@@ -1,85 +1,96 @@
|
|
|
1
|
+
import { filesCollectionSlug } from 'frogbot/pieces';
|
|
1
2
|
import { lookup } from 'mime-types';
|
|
2
3
|
import { z } from 'zod';
|
|
3
|
-
export const imageFile = z.union([
|
|
4
|
+
export const imageFile = z.union([
|
|
5
|
+
z.string(),
|
|
6
|
+
z.number()
|
|
7
|
+
]);
|
|
4
8
|
export const savedImage = z.object({
|
|
5
|
-
id: z.union([
|
|
9
|
+
id: z.union([
|
|
10
|
+
z.string().min(1),
|
|
11
|
+
z.number()
|
|
12
|
+
]),
|
|
6
13
|
name: z.string().min(1),
|
|
7
14
|
mimeType: z.string().min(1),
|
|
8
15
|
size: z.number().int().nonnegative(),
|
|
9
|
-
url: z.string().min(1).optional()
|
|
16
|
+
url: z.string().min(1).optional()
|
|
10
17
|
});
|
|
11
|
-
function filesCollection(req) {
|
|
12
|
-
const collection = req.frogbot.config.files?.slug;
|
|
13
|
-
if (!collection) {
|
|
14
|
-
throw new Error('[frogbot] Image Helper requires the files collection to be configured.');
|
|
15
|
-
}
|
|
16
|
-
return collection;
|
|
17
|
-
}
|
|
18
18
|
export async function loadImage(req, id) {
|
|
19
19
|
req.signal?.throwIfAborted();
|
|
20
20
|
const doc = await req.frogbot.findByID({
|
|
21
|
-
collection:
|
|
21
|
+
collection: filesCollectionSlug(req, 'Image Helper'),
|
|
22
22
|
id,
|
|
23
23
|
depth: 0,
|
|
24
24
|
req,
|
|
25
|
-
overrideAccess: false
|
|
25
|
+
overrideAccess: false
|
|
26
26
|
});
|
|
27
27
|
if (typeof doc.url !== 'string') {
|
|
28
28
|
throw new Error(`[frogbot] Image '${id}' is unavailable.`);
|
|
29
29
|
}
|
|
30
30
|
const config = await req.frogbot.config._internal.payloadConfig;
|
|
31
31
|
const originURL = config.serverURL || req.url;
|
|
32
|
-
if (!originURL)
|
|
33
|
-
throw new Error('[frogbot] Image requests require a server URL.');
|
|
32
|
+
if (!originURL) throw new Error('[frogbot] Image requests require a server URL.');
|
|
34
33
|
const origin = new URL(originURL);
|
|
35
34
|
const url = new URL(doc.url, origin);
|
|
36
|
-
if (![
|
|
35
|
+
if (![
|
|
36
|
+
'http:',
|
|
37
|
+
'https:'
|
|
38
|
+
].includes(url.protocol) || url.username || url.password) {
|
|
37
39
|
throw new Error(`[frogbot] Image '${id}' has an invalid URL.`);
|
|
38
40
|
}
|
|
39
41
|
const headers = new Headers();
|
|
40
42
|
if (url.origin === origin.origin) {
|
|
41
|
-
for (const name of [
|
|
43
|
+
for (const name of [
|
|
44
|
+
'authorization',
|
|
45
|
+
'cookie'
|
|
46
|
+
]){
|
|
42
47
|
const value = req.headers.get(name);
|
|
43
|
-
if (value)
|
|
44
|
-
headers.set(name, value);
|
|
48
|
+
if (value) headers.set(name, value);
|
|
45
49
|
}
|
|
46
50
|
}
|
|
47
51
|
const timeout = AbortSignal.timeout(30_000);
|
|
48
52
|
const response = await fetch(url, {
|
|
49
53
|
headers,
|
|
50
54
|
redirect: 'error',
|
|
51
|
-
signal: req.signal ? AbortSignal.any([
|
|
55
|
+
signal: req.signal ? AbortSignal.any([
|
|
56
|
+
req.signal,
|
|
57
|
+
timeout
|
|
58
|
+
]) : timeout
|
|
52
59
|
});
|
|
53
60
|
if (!response.ok) {
|
|
54
61
|
throw new Error(`[frogbot] Image '${id}' is unavailable (${response.status}).`);
|
|
55
62
|
}
|
|
56
63
|
const name = typeof doc.filename === 'string' ? doc.filename : 'image';
|
|
57
64
|
const extension = name.includes('.') ? name.split('.').pop()?.toLowerCase() : undefined;
|
|
58
|
-
const mimeType = typeof doc.mimeType === 'string'
|
|
59
|
-
? doc.mimeType
|
|
60
|
-
: (extension && lookup(extension)) || 'application/octet-stream';
|
|
65
|
+
const mimeType = typeof doc.mimeType === 'string' ? doc.mimeType : extension && lookup(extension) || 'application/octet-stream';
|
|
61
66
|
return {
|
|
62
67
|
data: Buffer.from(await response.arrayBuffer()),
|
|
63
68
|
name,
|
|
64
69
|
extension,
|
|
65
|
-
mimeType
|
|
70
|
+
mimeType
|
|
66
71
|
};
|
|
67
72
|
}
|
|
68
|
-
export async function saveImage({ req, data, name, mimeType
|
|
73
|
+
export async function saveImage({ req, data, name, mimeType }) {
|
|
69
74
|
req.signal?.throwIfAborted();
|
|
70
75
|
const doc = await req.frogbot.create({
|
|
71
|
-
collection:
|
|
76
|
+
collection: filesCollectionSlug(req, 'Image Helper'),
|
|
72
77
|
data: {},
|
|
73
|
-
file: {
|
|
78
|
+
file: {
|
|
79
|
+
data,
|
|
80
|
+
name,
|
|
81
|
+
mimetype: mimeType,
|
|
82
|
+
size: data.length
|
|
83
|
+
},
|
|
74
84
|
req,
|
|
75
|
-
overrideAccess: false
|
|
85
|
+
overrideAccess: false
|
|
76
86
|
});
|
|
77
87
|
return {
|
|
78
88
|
id: doc.id,
|
|
79
89
|
name,
|
|
80
90
|
mimeType,
|
|
81
91
|
size: data.length,
|
|
82
|
-
url: typeof doc.url === 'string' ? doc.url : undefined
|
|
92
|
+
url: typeof doc.url === 'string' ? doc.url : undefined
|
|
83
93
|
};
|
|
84
94
|
}
|
|
95
|
+
|
|
85
96
|
//# sourceMappingURL=files.js.map
|
package/dist/files.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../src/files.ts"],"names":["filesCollectionSlug","lookup","z","imageFile","union","string","number","savedImage","object","id","min","name","mimeType","size","int","nonnegative","url","optional","loadImage","req","signal","throwIfAborted","doc","frogbot","findByID","collection","depth","overrideAccess","Error","config","_internal","payloadConfig","originURL","serverURL","origin","URL","includes","protocol","username","password","headers","Headers","value","get","set","timeout","AbortSignal","response","fetch","redirect","any","ok","status","filename","extension","split","pop","toLowerCase","undefined","data","Buffer","from","arrayBuffer","saveImage","create","file","mimetype","length"],"mappings":"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","file":"files.js"}
|
package/dist/index.js
CHANGED
|
@@ -9,7 +9,19 @@ import { rotate } from './actions/rotate.js';
|
|
|
9
9
|
export const createImageHelper = definePiece({
|
|
10
10
|
slug: 'image-helper',
|
|
11
11
|
label: 'Image Helper',
|
|
12
|
-
admin: {
|
|
13
|
-
|
|
12
|
+
admin: {
|
|
13
|
+
description: 'Inspect, transform, and convert images',
|
|
14
|
+
group: 'Core'
|
|
15
|
+
},
|
|
16
|
+
actions: [
|
|
17
|
+
imageToBase64,
|
|
18
|
+
getMetadata,
|
|
19
|
+
crop,
|
|
20
|
+
rotate,
|
|
21
|
+
resize,
|
|
22
|
+
compress,
|
|
23
|
+
convertFormat
|
|
24
|
+
]
|
|
14
25
|
});
|
|
26
|
+
|
|
15
27
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"names":["definePiece","compress","convertFormat","crop","getMetadata","imageToBase64","resize","rotate","createImageHelper","slug","label","admin","description","group","actions"],"mappings":"AAAA,SAASA,WAAW,QAAQ,iBAAiB;AAE7C,SAASC,QAAQ,QAAQ,wBAAwB;AACjD,SAASC,aAAa,QAAQ,6BAA6B;AAC3D,SAASC,IAAI,QAAQ,oBAAoB;AACzC,SAASC,WAAW,QAAQ,2BAA2B;AACvD,SAASC,aAAa,QAAQ,6BAA6B;AAC3D,SAASC,MAAM,QAAQ,sBAAsB;AAC7C,SAASC,MAAM,QAAQ,sBAAsB;AAE7C,OAAO,MAAMC,oBAAoBR,YAAY;IAC3CS,MAAM;IACNC,OAAO;IACPC,OAAO;QAAEC,aAAa;QAA0CC,OAAO;IAAO;IAC9EC,SAAS;QAACT;QAAeD;QAAaD;QAAMI;QAAQD;QAAQL;QAAUC;KAAc;AACtF,GAAG","file":"index.js"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@frogbotai/piece-image-helper",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.30.0",
|
|
4
4
|
"description": "image-helper tools for FrogBot.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Colby Gilbert",
|
|
@@ -27,19 +27,19 @@
|
|
|
27
27
|
"zod": "^4.3.6"
|
|
28
28
|
},
|
|
29
29
|
"peerDependencies": {
|
|
30
|
-
"frogbot": "0.
|
|
30
|
+
"frogbot": "0.30.0"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
33
|
"@types/heic-convert": "2.1.1",
|
|
34
34
|
"@types/mime-types": "2.1.1",
|
|
35
35
|
"typescript": "5.6.2",
|
|
36
|
-
"frogbot": "0.
|
|
36
|
+
"frogbot": "0.30.0"
|
|
37
37
|
},
|
|
38
38
|
"publishConfig": {
|
|
39
39
|
"access": "public"
|
|
40
40
|
},
|
|
41
41
|
"scripts": {
|
|
42
|
-
"build": "
|
|
42
|
+
"build": "node ../../../scripts/build-package.mjs",
|
|
43
43
|
"clean": "rm -rf dist",
|
|
44
44
|
"typecheck": "tsc --noEmit"
|
|
45
45
|
}
|