@digipair/skill-sharp 0.83.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 @@
1
+ export * from './lib/skill-sharp';
@@ -0,0 +1,22 @@
1
+ import { PinsSettings } from '@digipair/engine';
2
+ import * as sharp from 'sharp';
3
+ export declare const metadata: (params: any, pinsSettingsList: PinsSettings[], context: any) => Promise<sharp.Metadata>;
4
+ export declare const stats: (params: any, pinsSettingsList: PinsSettings[], context: any) => Promise<sharp.Stats>;
5
+ export declare const raw: (params: any, pinsSettingsList: PinsSettings[], context: any) => Promise<string>;
6
+ export declare const resize: (params: any, pinsSettingsList: PinsSettings[], context: any) => Promise<string>;
7
+ export declare const rotate: (params: any, pinsSettingsList: PinsSettings[], context: any) => Promise<string>;
8
+ export declare const extract: (params: any, pinsSettingsList: PinsSettings[], context: any) => Promise<string>;
9
+ export declare const flip: (params: any, pinsSettingsList: PinsSettings[], context: any) => Promise<string>;
10
+ export declare const flop: (params: any, pinsSettingsList: PinsSettings[], context: any) => Promise<string>;
11
+ export declare const grayscale: (params: any, pinsSettingsList: PinsSettings[], context: any) => Promise<string>;
12
+ export declare const negate: (params: any, pinsSettingsList: PinsSettings[], context: any) => Promise<string>;
13
+ export declare const tint: (params: any, pinsSettingsList: PinsSettings[], context: any) => Promise<string>;
14
+ export declare const modulate: (params: any, pinsSettingsList: PinsSettings[], context: any) => Promise<string>;
15
+ export declare const blur: (params: any, pinsSettingsList: PinsSettings[], context: any) => Promise<string>;
16
+ export declare const sharpen: (params: any, pinsSettingsList: PinsSettings[], context: any) => Promise<string>;
17
+ export declare const toFormat: (params: any, pinsSettingsList: PinsSettings[], context: any) => Promise<string>;
18
+ export declare const jpeg: (params: any, pinsSettingsList: PinsSettings[], context: any) => Promise<string>;
19
+ export declare const png: (params: any, pinsSettingsList: PinsSettings[], context: any) => Promise<string>;
20
+ export declare const webp: (params: any, pinsSettingsList: PinsSettings[], context: any) => Promise<string>;
21
+ export declare const avif: (params: any, pinsSettingsList: PinsSettings[], context: any) => Promise<string>;
22
+ export declare const composite: (params: any, pinsSettingsList: PinsSettings[], context: any) => Promise<string>;
package/package.json ADDED
@@ -0,0 +1,14 @@
1
+ {
2
+ "name": "@digipair/skill-sharp",
3
+ "version": "0.83.0",
4
+ "keywords": [
5
+ "digipair",
6
+ "service",
7
+ "tool"
8
+ ],
9
+ "dependencies": {
10
+ "sharp": "^0.34.1"
11
+ },
12
+ "main": "./index.cjs.js",
13
+ "module": "./index.esm.js"
14
+ }
package/schema.fr.json ADDED
@@ -0,0 +1,270 @@
1
+ {
2
+ "openapi": "3.0.0",
3
+ "info": {
4
+ "title": "@digipair/skill-sharp",
5
+ "summary": "Traitement d’image avec Sharp",
6
+ "description": "Cette skill permet d’effectuer des traitements avancés sur les images grâce à la librairie Sharp.",
7
+ "version": "0.1.0",
8
+ "x-icon": "🖼️"
9
+ },
10
+ "paths": {
11
+ "/metadata": {
12
+ "post": {
13
+ "tags": ["service"],
14
+ "summary": "Métadonnées",
15
+ "description": "Retourne les métadonnées de l’image (dimensions, format, EXIF, etc.).",
16
+ "parameters": [
17
+ {
18
+ "name": "content",
19
+ "required": true,
20
+ "description": "Image encodée en base64",
21
+ "schema": { "type": "string" }
22
+ }
23
+ ]
24
+ }
25
+ },
26
+ "/stats": {
27
+ "post": {
28
+ "tags": ["service"],
29
+ "summary": "Statistiques",
30
+ "description": "Retourne des statistiques sur l’image comme la moyenne ou l’écart-type.",
31
+ "parameters": [
32
+ {
33
+ "name": "content",
34
+ "required": true,
35
+ "schema": { "type": "string" }
36
+ }
37
+ ]
38
+ }
39
+ },
40
+ "/raw": {
41
+ "post": {
42
+ "tags": ["service"],
43
+ "summary": "Brut (RAW)",
44
+ "description": "Retourne le buffer brut de l’image en base64.",
45
+ "parameters": [
46
+ {
47
+ "name": "content",
48
+ "required": true,
49
+ "schema": { "type": "string" }
50
+ }
51
+ ]
52
+ }
53
+ },
54
+ "/resize": {
55
+ "post": {
56
+ "tags": ["service"],
57
+ "summary": "Redimensionner",
58
+ "description": "Redimensionne l’image selon la largeur et la hauteur spécifiées.",
59
+ "parameters": [
60
+ { "name": "content", "required": true, "schema": { "type": "string" } },
61
+ { "name": "width", "required": true, "schema": { "type": "integer" } },
62
+ { "name": "height", "required": true, "schema": { "type": "integer" } }
63
+ ]
64
+ }
65
+ },
66
+ "/rotate": {
67
+ "post": {
68
+ "tags": ["service"],
69
+ "summary": "Rotation",
70
+ "description": "Fait pivoter l’image (angle optionnel, utilise EXIF si absent).",
71
+ "parameters": [
72
+ { "name": "content", "required": true, "schema": { "type": "string" } },
73
+ { "name": "angle", "required": false, "schema": { "type": "integer" } }
74
+ ]
75
+ }
76
+ },
77
+ "/extract": {
78
+ "post": {
79
+ "tags": ["service"],
80
+ "summary": "Rogner",
81
+ "description": "Extrait une portion de l’image.",
82
+ "parameters": [
83
+ { "name": "content", "required": true, "schema": { "type": "string" } },
84
+ { "name": "left", "required": true, "schema": { "type": "integer" } },
85
+ { "name": "top", "required": true, "schema": { "type": "integer" } },
86
+ { "name": "width", "required": true, "schema": { "type": "integer" } },
87
+ { "name": "height", "required": true, "schema": { "type": "integer" } }
88
+ ]
89
+ }
90
+ },
91
+ "/flip": {
92
+ "post": {
93
+ "tags": ["service"],
94
+ "summary": "Miroir vertical",
95
+ "description": "Retourne l’image verticalement.",
96
+ "parameters": [
97
+ { "name": "content", "required": true, "schema": { "type": "string" } }
98
+ ]
99
+ }
100
+ },
101
+ "/flop": {
102
+ "post": {
103
+ "tags": ["service"],
104
+ "summary": "Miroir horizontal",
105
+ "description": "Retourne l’image horizontalement.",
106
+ "parameters": [
107
+ { "name": "content", "required": true, "schema": { "type": "string" } }
108
+ ]
109
+ }
110
+ },
111
+ "/grayscale": {
112
+ "post": {
113
+ "tags": ["service"],
114
+ "summary": "Niveaux de gris",
115
+ "description": "Convertit l’image en niveaux de gris.",
116
+ "parameters": [
117
+ { "name": "content", "required": true, "schema": { "type": "string" } }
118
+ ]
119
+ }
120
+ },
121
+ "/negate": {
122
+ "post": {
123
+ "tags": ["service"],
124
+ "summary": "Inverser les couleurs",
125
+ "description": "Inverse les couleurs de l’image.",
126
+ "parameters": [
127
+ { "name": "content", "required": true, "schema": { "type": "string" } }
128
+ ]
129
+ }
130
+ },
131
+ "/tint": {
132
+ "post": {
133
+ "tags": ["service"],
134
+ "summary": "Teinte",
135
+ "description": "Applique une teinte colorée à l’image.",
136
+ "parameters": [
137
+ { "name": "content", "required": true, "schema": { "type": "string" } },
138
+ { "name": "r", "required": true, "schema": { "type": "integer" } },
139
+ { "name": "g", "required": true, "schema": { "type": "integer" } },
140
+ { "name": "b", "required": true, "schema": { "type": "integer" } }
141
+ ]
142
+ }
143
+ },
144
+ "/modulate": {
145
+ "post": {
146
+ "tags": ["service"],
147
+ "summary": "Modulation",
148
+ "description": "Ajuste la luminosité, la saturation et la teinte.",
149
+ "parameters": [
150
+ { "name": "content", "required": true, "schema": { "type": "string" } },
151
+ { "name": "brightness", "required": false, "schema": { "type": "number" } },
152
+ { "name": "saturation", "required": false, "schema": { "type": "number" } },
153
+ { "name": "hue", "required": false, "schema": { "type": "number" } }
154
+ ]
155
+ }
156
+ },
157
+ "/blur": {
158
+ "post": {
159
+ "tags": ["service"],
160
+ "summary": "Flou",
161
+ "description": "Applique un flou à l’image.",
162
+ "parameters": [
163
+ { "name": "content", "required": true, "schema": { "type": "string" } },
164
+ { "name": "radius", "required": false, "schema": { "type": "number" } }
165
+ ]
166
+ }
167
+ },
168
+ "/sharpen": {
169
+ "post": {
170
+ "tags": ["service"],
171
+ "summary": "Netteté",
172
+ "description": "Accentue les contours de l’image.",
173
+ "parameters": [
174
+ { "name": "content", "required": true, "schema": { "type": "string" } }
175
+ ]
176
+ }
177
+ },
178
+ "/toFormat": {
179
+ "post": {
180
+ "tags": ["service"],
181
+ "summary": "Conversion de format",
182
+ "description": "Convertit l’image vers un autre format.",
183
+ "parameters": [
184
+ { "name": "content", "required": true, "schema": { "type": "string" } },
185
+ {
186
+ "name": "format",
187
+ "required": true,
188
+ "description": "jpeg, png, webp, avif",
189
+ "schema": { "type": "string", "enum": ["jpeg", "png", "webp", "avif"] }
190
+ }
191
+ ]
192
+ }
193
+ },
194
+ "/jpeg": {
195
+ "post": {
196
+ "tags": ["service"],
197
+ "summary": "Exporter en JPEG",
198
+ "description": "Convertit l’image en format JPEG avec qualité personnalisable.",
199
+ "parameters": [
200
+ { "name": "content", "required": true, "schema": { "type": "string" } },
201
+ { "name": "quality", "required": false, "schema": { "type": "integer", "default": 80 } }
202
+ ]
203
+ }
204
+ },
205
+ "/png": {
206
+ "post": {
207
+ "tags": ["service"],
208
+ "summary": "Exporter en PNG",
209
+ "description": "Convertit l’image en format PNG avec niveau de compression personnalisé.",
210
+ "parameters": [
211
+ { "name": "content", "required": true, "schema": { "type": "string" } },
212
+ { "name": "compressionLevel", "required": false, "schema": { "type": "integer", "default": 6 } }
213
+ ]
214
+ }
215
+ },
216
+ "/webp": {
217
+ "post": {
218
+ "tags": ["service"],
219
+ "summary": "Exporter en WebP",
220
+ "description": "Convertit l’image en format WebP avec qualité personnalisable.",
221
+ "parameters": [
222
+ { "name": "content", "required": true, "schema": { "type": "string" } },
223
+ { "name": "quality", "required": false, "schema": { "type": "integer", "default": 80 } }
224
+ ]
225
+ }
226
+ },
227
+ "/avif": {
228
+ "post": {
229
+ "tags": ["service"],
230
+ "summary": "Exporter en AVIF",
231
+ "description": "Convertit l’image en format AVIF avec qualité personnalisable.",
232
+ "parameters": [
233
+ { "name": "content", "required": true, "schema": { "type": "string" } },
234
+ { "name": "quality", "required": false, "schema": { "type": "integer", "default": 50 } }
235
+ ]
236
+ }
237
+ },
238
+ "/composite": {
239
+ "post": {
240
+ "tags": ["service"],
241
+ "summary": "Superposition",
242
+ "description": "Superpose une ou plusieurs images (ex. : watermark).",
243
+ "parameters": [
244
+ { "name": "content", "required": true, "schema": { "type": "string" } },
245
+ {
246
+ "name": "overlays",
247
+ "required": true,
248
+ "description": "Liste d’éléments { input (base64), top, left }",
249
+ "schema": {
250
+ "type": "array",
251
+ "items": {
252
+ "type": "object",
253
+ "properties": {
254
+ "input": { "type": "string" },
255
+ "top": { "type": "integer" },
256
+ "left": { "type": "integer" }
257
+ },
258
+ "required": ["input", "top", "left"]
259
+ }
260
+ }
261
+ }
262
+ ]
263
+ }
264
+ }
265
+ },
266
+ "components": {
267
+ "schemas": {}
268
+ },
269
+ "x-scene-blocks": {}
270
+ }
package/schema.json ADDED
@@ -0,0 +1,270 @@
1
+ {
2
+ "openapi": "3.0.0",
3
+ "info": {
4
+ "title": "@digipair/skill-sharp",
5
+ "summary": "Image processing with Sharp",
6
+ "description": "This skill provides advanced image processing functions using the Sharp library.",
7
+ "version": "0.1.0",
8
+ "x-icon": "🖼️"
9
+ },
10
+ "paths": {
11
+ "/metadata": {
12
+ "post": {
13
+ "tags": ["service"],
14
+ "summary": "Metadata",
15
+ "description": "Returns image metadata (dimensions, format, EXIF, etc.)",
16
+ "parameters": [
17
+ {
18
+ "name": "content",
19
+ "required": true,
20
+ "description": "Image content as a base64-encoded string",
21
+ "schema": { "type": "string" }
22
+ }
23
+ ]
24
+ }
25
+ },
26
+ "/stats": {
27
+ "post": {
28
+ "tags": ["service"],
29
+ "summary": "Stats",
30
+ "description": "Returns image statistics like mean and standard deviation",
31
+ "parameters": [
32
+ {
33
+ "name": "content",
34
+ "required": true,
35
+ "schema": { "type": "string" }
36
+ }
37
+ ]
38
+ }
39
+ },
40
+ "/raw": {
41
+ "post": {
42
+ "tags": ["service"],
43
+ "summary": "Raw",
44
+ "description": "Returns raw image buffer as base64",
45
+ "parameters": [
46
+ {
47
+ "name": "content",
48
+ "required": true,
49
+ "schema": { "type": "string" }
50
+ }
51
+ ]
52
+ }
53
+ },
54
+ "/resize": {
55
+ "post": {
56
+ "tags": ["service"],
57
+ "summary": "Resize",
58
+ "description": "Resizes the image",
59
+ "parameters": [
60
+ { "name": "content", "required": true, "schema": { "type": "string" } },
61
+ { "name": "width", "required": true, "schema": { "type": "integer" } },
62
+ { "name": "height", "required": true, "schema": { "type": "integer" } }
63
+ ]
64
+ }
65
+ },
66
+ "/rotate": {
67
+ "post": {
68
+ "tags": ["service"],
69
+ "summary": "Rotate",
70
+ "description": "Rotates the image (angle optional)",
71
+ "parameters": [
72
+ { "name": "content", "required": true, "schema": { "type": "string" } },
73
+ { "name": "angle", "required": false, "schema": { "type": "integer" } }
74
+ ]
75
+ }
76
+ },
77
+ "/extract": {
78
+ "post": {
79
+ "tags": ["service"],
80
+ "summary": "Extract",
81
+ "description": "Extracts a region from the image",
82
+ "parameters": [
83
+ { "name": "content", "required": true, "schema": { "type": "string" } },
84
+ { "name": "left", "required": true, "schema": { "type": "integer" } },
85
+ { "name": "top", "required": true, "schema": { "type": "integer" } },
86
+ { "name": "width", "required": true, "schema": { "type": "integer" } },
87
+ { "name": "height", "required": true, "schema": { "type": "integer" } }
88
+ ]
89
+ }
90
+ },
91
+ "/flip": {
92
+ "post": {
93
+ "tags": ["service"],
94
+ "summary": "Flip",
95
+ "description": "Flips the image vertically",
96
+ "parameters": [
97
+ { "name": "content", "required": true, "schema": { "type": "string" } }
98
+ ]
99
+ }
100
+ },
101
+ "/flop": {
102
+ "post": {
103
+ "tags": ["service"],
104
+ "summary": "Flop",
105
+ "description": "Flips the image horizontally",
106
+ "parameters": [
107
+ { "name": "content", "required": true, "schema": { "type": "string" } }
108
+ ]
109
+ }
110
+ },
111
+ "/grayscale": {
112
+ "post": {
113
+ "tags": ["service"],
114
+ "summary": "Grayscale",
115
+ "description": "Converts the image to grayscale",
116
+ "parameters": [
117
+ { "name": "content", "required": true, "schema": { "type": "string" } }
118
+ ]
119
+ }
120
+ },
121
+ "/negate": {
122
+ "post": {
123
+ "tags": ["service"],
124
+ "summary": "Negate",
125
+ "description": "Inverts the image colors",
126
+ "parameters": [
127
+ { "name": "content", "required": true, "schema": { "type": "string" } }
128
+ ]
129
+ }
130
+ },
131
+ "/tint": {
132
+ "post": {
133
+ "tags": ["service"],
134
+ "summary": "Tint",
135
+ "description": "Applies a color tint",
136
+ "parameters": [
137
+ { "name": "content", "required": true, "schema": { "type": "string" } },
138
+ { "name": "r", "required": true, "schema": { "type": "integer" } },
139
+ { "name": "g", "required": true, "schema": { "type": "integer" } },
140
+ { "name": "b", "required": true, "schema": { "type": "integer" } }
141
+ ]
142
+ }
143
+ },
144
+ "/modulate": {
145
+ "post": {
146
+ "tags": ["service"],
147
+ "summary": "Modulate",
148
+ "description": "Adjusts brightness, saturation and hue",
149
+ "parameters": [
150
+ { "name": "content", "required": true, "schema": { "type": "string" } },
151
+ { "name": "brightness", "required": false, "schema": { "type": "number" } },
152
+ { "name": "saturation", "required": false, "schema": { "type": "number" } },
153
+ { "name": "hue", "required": false, "schema": { "type": "number" } }
154
+ ]
155
+ }
156
+ },
157
+ "/blur": {
158
+ "post": {
159
+ "tags": ["service"],
160
+ "summary": "Blur",
161
+ "description": "Applies a blur effect",
162
+ "parameters": [
163
+ { "name": "content", "required": true, "schema": { "type": "string" } },
164
+ { "name": "radius", "required": false, "schema": { "type": "number" } }
165
+ ]
166
+ }
167
+ },
168
+ "/sharpen": {
169
+ "post": {
170
+ "tags": ["service"],
171
+ "summary": "Sharpen",
172
+ "description": "Sharpens the image",
173
+ "parameters": [
174
+ { "name": "content", "required": true, "schema": { "type": "string" } }
175
+ ]
176
+ }
177
+ },
178
+ "/toFormat": {
179
+ "post": {
180
+ "tags": ["service"],
181
+ "summary": "To Format",
182
+ "description": "Converts the image to a different format",
183
+ "parameters": [
184
+ { "name": "content", "required": true, "schema": { "type": "string" } },
185
+ {
186
+ "name": "format",
187
+ "required": true,
188
+ "description": "jpeg, png, webp, avif",
189
+ "schema": { "type": "string", "enum": ["jpeg", "png", "webp", "avif"] }
190
+ }
191
+ ]
192
+ }
193
+ },
194
+ "/jpeg": {
195
+ "post": {
196
+ "tags": ["service"],
197
+ "summary": "JPEG",
198
+ "description": "Exports the image as JPEG",
199
+ "parameters": [
200
+ { "name": "content", "required": true, "schema": { "type": "string" } },
201
+ { "name": "quality", "required": false, "schema": { "type": "integer", "default": 80 } }
202
+ ]
203
+ }
204
+ },
205
+ "/png": {
206
+ "post": {
207
+ "tags": ["service"],
208
+ "summary": "PNG",
209
+ "description": "Exports the image as PNG",
210
+ "parameters": [
211
+ { "name": "content", "required": true, "schema": { "type": "string" } },
212
+ { "name": "compressionLevel", "required": false, "schema": { "type": "integer", "default": 6 } }
213
+ ]
214
+ }
215
+ },
216
+ "/webp": {
217
+ "post": {
218
+ "tags": ["service"],
219
+ "summary": "WebP",
220
+ "description": "Exports the image as WebP",
221
+ "parameters": [
222
+ { "name": "content", "required": true, "schema": { "type": "string" } },
223
+ { "name": "quality", "required": false, "schema": { "type": "integer", "default": 80 } }
224
+ ]
225
+ }
226
+ },
227
+ "/avif": {
228
+ "post": {
229
+ "tags": ["service"],
230
+ "summary": "AVIF",
231
+ "description": "Exports the image as AVIF",
232
+ "parameters": [
233
+ { "name": "content", "required": true, "schema": { "type": "string" } },
234
+ { "name": "quality", "required": false, "schema": { "type": "integer", "default": 50 } }
235
+ ]
236
+ }
237
+ },
238
+ "/composite": {
239
+ "post": {
240
+ "tags": ["service"],
241
+ "summary": "Composite",
242
+ "description": "Overlays other images (e.g. watermark)",
243
+ "parameters": [
244
+ { "name": "content", "required": true, "schema": { "type": "string" } },
245
+ {
246
+ "name": "overlays",
247
+ "required": true,
248
+ "description": "Array of { input (base64), top, left }",
249
+ "schema": {
250
+ "type": "array",
251
+ "items": {
252
+ "type": "object",
253
+ "properties": {
254
+ "input": { "type": "string" },
255
+ "top": { "type": "integer" },
256
+ "left": { "type": "integer" }
257
+ },
258
+ "required": ["input", "top", "left"]
259
+ }
260
+ }
261
+ }
262
+ ]
263
+ }
264
+ }
265
+ },
266
+ "components": {
267
+ "schemas": {}
268
+ },
269
+ "x-scene-blocks": {}
270
+ }