@visulima/storage 1.0.0-alpha.17 → 1.0.0-alpha.19

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.
Files changed (185) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/LICENSE.md +3 -0
  3. package/dist/adapter/nuxt/module.d.ts +3 -3
  4. package/dist/adapter/nuxt/module.js +1 -93
  5. package/dist/handler/http/fetch/index.d.ts +6 -6
  6. package/dist/handler/http/fetch/index.js +1 -4
  7. package/dist/handler/http/hono/index.d.ts +3 -3
  8. package/dist/handler/http/hono/index.js +1 -65
  9. package/dist/handler/http/nextjs/index.d.ts +4 -4
  10. package/dist/handler/http/nextjs/index.js +1 -37
  11. package/dist/handler/http/node/index.d.ts +6 -6
  12. package/dist/handler/http/node/index.js +1 -8
  13. package/dist/handler/http/solid-start/index.d.ts +4 -4
  14. package/dist/handler/http/solid-start/index.js +1 -44
  15. package/dist/index.js +1 -13
  16. package/dist/openapi/index.js +1 -5
  17. package/dist/packem_shared/AwsLightFile-BTLiRxXj.js +1 -0
  18. package/dist/packem_shared/AwsLightMetaStorage-DHz1nf_H.js +1 -0
  19. package/dist/packem_shared/AwsLightStorage-CA9cdfJ6.js +1 -0
  20. package/dist/packem_shared/AzureFile-BKHru1zB.js +1 -0
  21. package/dist/packem_shared/AzureSMetaStorage-BqA4jUDJ.js +1 -0
  22. package/dist/packem_shared/AzureStorage-BKUjCymW.js +1 -0
  23. package/dist/packem_shared/BaseTransformer-D68eLyz1.js +1 -0
  24. package/dist/packem_shared/DiskStorage-DNjpDMX9.js +1 -0
  25. package/dist/packem_shared/DiskStorageWithChecksum-Bb6JX_tC.js +1 -0
  26. package/dist/packem_shared/ERRORS-B9jkvKwx.js +1 -0
  27. package/dist/packem_shared/File-alcSNpLq.js +1 -0
  28. package/dist/packem_shared/GCSConfig-BQ0OpVhe.js +1 -0
  29. package/dist/packem_shared/GCSFile-CHjX_fJk.js +1 -0
  30. package/dist/packem_shared/GCSMetaStorage-CpxQ8wM9.js +1 -0
  31. package/dist/packem_shared/GCStorage-DAg1V55T.js +1 -0
  32. package/dist/packem_shared/LocalMetaStorage-BWuFvWn4.js +1 -0
  33. package/dist/packem_shared/MediaTransformer-2C8MJeAg.js +1 -0
  34. package/dist/packem_shared/MetaStorage-Y4m1dWgd.js +1 -0
  35. package/dist/packem_shared/Metadata-B6Ir0KO7.js +1 -0
  36. package/dist/packem_shared/Multipart-Bd9YFFn0.js +1 -0
  37. package/dist/packem_shared/Multipart-D5bcEvga.js +1 -0
  38. package/dist/packem_shared/NetlifyBlobFile-CpzkMKng.js +1 -0
  39. package/dist/packem_shared/NetlifyBlobMetaStorage-dD0oBLom.js +1 -0
  40. package/dist/packem_shared/NetlifyBlobStorage-ByTwCN-h.js +1 -0
  41. package/dist/packem_shared/NoOpMetrics-Dky06sf1.js +1 -0
  42. package/dist/packem_shared/OpenTelemetryMetrics-9uxQMSlg.js +1 -0
  43. package/dist/packem_shared/Rest-CYEBbtCD.js +1 -0
  44. package/dist/packem_shared/Rest-DoonVU7B.js +1 -0
  45. package/dist/packem_shared/S3File-Du6wP0Sz.js +1 -0
  46. package/dist/packem_shared/S3MetaStorage-vcriiosn.js +1 -0
  47. package/dist/packem_shared/S3Storage-Fx6-OSc-.js +1 -0
  48. package/dist/packem_shared/TUS_RESUMABLE-B7KtPVeC.js +1 -0
  49. package/dist/packem_shared/Tus-Bd_2Ki2G.js +1 -0
  50. package/dist/packem_shared/Tus-CUBCkuPE.js +1 -0
  51. package/dist/packem_shared/ValidationError-D8KKJiKA.js +1 -0
  52. package/dist/packem_shared/VercelBlobFile-CL9MjKcY.js +1 -0
  53. package/dist/packem_shared/VercelBlobMetaStorage-BsOTx-Su.js +1 -0
  54. package/dist/packem_shared/VercelBlobStorage-kNkk5Cn4.js +1 -0
  55. package/dist/packem_shared/_commonjsHelpers-D6W6KoPK.js +1 -0
  56. package/dist/packem_shared/aws-light-meta-storage-TPyQwLvk.js +4 -0
  57. package/dist/packem_shared/backblaze-DEflv87m.js +1 -0
  58. package/dist/packem_shared/base-handler-core-DaggCVsq.js +1 -0
  59. package/dist/packem_shared/base-handler-fetch-DnarP64X.js +1 -0
  60. package/dist/packem_shared/base-handler-node-BTes6sql.js +1 -0
  61. package/dist/packem_shared/cache-qV_5Umeq.js +1 -0
  62. package/dist/packem_shared/cloudflare-DLAeQvgD.js +1 -0
  63. package/dist/packem_shared/defaultCloudStorageFileNameValidation-yiM9GxHr.js +1 -0
  64. package/dist/packem_shared/digitalOcean-nhZUds87.js +1 -0
  65. package/dist/packem_shared/disk-storage-BvdK4bqF.js +5 -0
  66. package/dist/packem_shared/gcs-meta-storage-CvGkpzVE.js +1 -0
  67. package/dist/packem_shared/has-content-Bx2p8Okx.js +1 -0
  68. package/dist/packem_shared/headers-DC2MEOrK.js +27 -0
  69. package/dist/packem_shared/is-expired-1JuZjDtb.js +1 -0
  70. package/dist/packem_shared/isRetryableError-DQNSZiBc.js +1 -0
  71. package/dist/packem_shared/isValidMediaType-B-2UKjZx.js +1 -0
  72. package/dist/packem_shared/local-meta-storage-Bkwqi_gi.js +1 -0
  73. package/dist/packem_shared/{media-transformer.d-ChmjTvjc.d.ts → media-transformer.d-CY9CsEOe.d.ts} +1 -1
  74. package/dist/packem_shared/minio-BWwgGXeE.js +1 -0
  75. package/dist/packem_shared/multipart-base-C6OjBwMS.js +1 -0
  76. package/dist/packem_shared/part-match-DqD5U7An.js +1 -0
  77. package/dist/packem_shared/path-D7rMc9nq-B718mbm6.js +1 -0
  78. package/dist/packem_shared/response-builder-Wdo_fvcF.js +1 -0
  79. package/dist/packem_shared/rest-base-B2Dv7esY.js +1 -0
  80. package/dist/packem_shared/restOpenApiSpec-PaIVbESh.js +1 -0
  81. package/dist/packem_shared/s3-base-storage-xHZNtsGe.js +1 -0
  82. package/dist/packem_shared/sharedGet-Ce7WGAsc.js +1 -0
  83. package/dist/packem_shared/storage-m_Cxgiih.js +1 -0
  84. package/dist/packem_shared/tigris-DZoyrMNd.js +1 -0
  85. package/dist/packem_shared/transformOpenApiSpec-C0vEbDTO.js +1 -0
  86. package/dist/packem_shared/{tus-base.d-CpLzyd-S.d.ts → tus-base.d-DNZRXR9X.d.ts} +2 -2
  87. package/dist/packem_shared/tusOpenApiSpec-DF0-hlWV.js +1 -0
  88. package/dist/packem_shared/{types.d-DBjmJvIT.d.ts → types.d-BCN94sB_.d.ts} +1 -1
  89. package/dist/packem_shared/{types.d-DviSTLOg.d.ts → types.d-D4caL2Fp.d.ts} +1 -1
  90. package/dist/packem_shared/update-size-DANV7aa2.js +1 -0
  91. package/dist/packem_shared/validator-DK41xp8N.js +1 -0
  92. package/dist/packem_shared/waitForStorage-ChSBLhLc.js +1 -0
  93. package/dist/packem_shared/wasabi-Dmce4x9s.js +1 -0
  94. package/dist/packem_shared/xhrOpenApiSpec-nyoboz83.js +1 -0
  95. package/dist/storage/aws/clients/index.js +1 -6
  96. package/dist/storage/aws/index.js +1 -3
  97. package/dist/storage/aws-light/index.js +1 -3
  98. package/dist/storage/azure/index.js +1 -3
  99. package/dist/storage/gcs/index.js +1 -4
  100. package/dist/storage/local/index.js +1 -3
  101. package/dist/storage/netlify-blob/index.js +1 -3
  102. package/dist/storage/vercel-blob/index.js +1 -3
  103. package/dist/transformer/audio-transformer.d.ts +1 -1
  104. package/dist/transformer/audio-transformer.js +1 -278
  105. package/dist/transformer/image-transformer.d.ts +1 -1
  106. package/dist/transformer/image-transformer.js +1 -1100
  107. package/dist/transformer/index.d.ts +2 -2
  108. package/dist/transformer/index.js +1 -4
  109. package/dist/transformer/video-transformer.d.ts +1 -1
  110. package/dist/transformer/video-transformer.js +1 -310
  111. package/package.json +18 -18
  112. package/dist/packem_shared/AwsLightFile-C-Nd5rtl.js +0 -11
  113. package/dist/packem_shared/AwsLightMetaStorage-BIDb5EPg.js +0 -4
  114. package/dist/packem_shared/AwsLightStorage-CMuKw4bI.js +0 -133
  115. package/dist/packem_shared/AzureFile-C0kug4w4.js +0 -8
  116. package/dist/packem_shared/AzureSMetaStorage-BEbXX9Uk.js +0 -89
  117. package/dist/packem_shared/AzureStorage-98-LRZ1e.js +0 -359
  118. package/dist/packem_shared/BaseTransformer-9965D4pb.js +0 -83
  119. package/dist/packem_shared/DiskStorage-COMe_G42.js +0 -12
  120. package/dist/packem_shared/DiskStorageWithChecksum-BVaaZiyS.js +0 -249
  121. package/dist/packem_shared/ERRORS-D0apMqnc.js +0 -97
  122. package/dist/packem_shared/File-CPUhj3DI.js +0 -69
  123. package/dist/packem_shared/GCSConfig-vPP22kN6.js +0 -11
  124. package/dist/packem_shared/GCSFile-DaDiCKE2.js +0 -8
  125. package/dist/packem_shared/GCSMetaStorage-BygVH0Ee.js +0 -7
  126. package/dist/packem_shared/GCStorage-4hSx_bN1.js +0 -410
  127. package/dist/packem_shared/LocalMetaStorage-DvnZqf61.js +0 -7
  128. package/dist/packem_shared/MediaTransformer-BRRqYA0E.js +0 -1202
  129. package/dist/packem_shared/MetaStorage-pECeFOad.js +0 -46
  130. package/dist/packem_shared/Metadata-DRLXeJ0F.js +0 -89
  131. package/dist/packem_shared/Multipart-BzzvNxt4.js +0 -128
  132. package/dist/packem_shared/Multipart-DLtFLQ8s.js +0 -163
  133. package/dist/packem_shared/NetlifyBlobFile-CfyJtGWN.js +0 -14
  134. package/dist/packem_shared/NetlifyBlobMetaStorage-eJT6RFy9.js +0 -9
  135. package/dist/packem_shared/NetlifyBlobStorage-nPv7iIAG.js +0 -376
  136. package/dist/packem_shared/NoOpMetrics-DhAk5rXc.js +0 -10
  137. package/dist/packem_shared/OpenTelemetryMetrics-BnxhqIaH.js +0 -67
  138. package/dist/packem_shared/Rest-DEa7IA9R.js +0 -267
  139. package/dist/packem_shared/Rest-qhMbCn5a.js +0 -228
  140. package/dist/packem_shared/S3File-BXCuJaQZ.js +0 -11
  141. package/dist/packem_shared/S3MetaStorage-yT4CznlV.js +0 -77
  142. package/dist/packem_shared/S3Storage-wi5XT-yu.js +0 -317
  143. package/dist/packem_shared/TUS_RESUMABLE-Dtfsffnj.js +0 -434
  144. package/dist/packem_shared/Tus-Ck0Hdle5.js +0 -195
  145. package/dist/packem_shared/Tus-_0vCdHyB.js +0 -200
  146. package/dist/packem_shared/ValidationError-BfF1aE4h.js +0 -26
  147. package/dist/packem_shared/VercelBlobFile-DkFIIb9Q.js +0 -18
  148. package/dist/packem_shared/VercelBlobMetaStorage-DjFmi4vp.js +0 -9
  149. package/dist/packem_shared/VercelBlobStorage-CmMgiDgr.js +0 -261
  150. package/dist/packem_shared/_commonjsHelpers-BqLXS_qQ.js +0 -5
  151. package/dist/packem_shared/aws-light-meta-storage-BGZEiY3y.js +0 -447
  152. package/dist/packem_shared/backblaze-BlMnIcBC.js +0 -20
  153. package/dist/packem_shared/base-handler-core-lVB-D59L.js +0 -306
  154. package/dist/packem_shared/base-handler-fetch-CitgN-Aw.js +0 -291
  155. package/dist/packem_shared/base-handler-node-BiO2DF87.js +0 -731
  156. package/dist/packem_shared/cache-B88MXQ_2.js +0 -18
  157. package/dist/packem_shared/cloudflare-Bi1q8wXE.js +0 -21
  158. package/dist/packem_shared/defaultCloudStorageFileNameValidation-Brw40ZEP.js +0 -11
  159. package/dist/packem_shared/digitalOcean-CWQRJM3L.js +0 -21
  160. package/dist/packem_shared/disk-storage-D9RfoKjW.js +0 -832
  161. package/dist/packem_shared/gcs-meta-storage-8FovEDbW.js +0 -159
  162. package/dist/packem_shared/has-content-CY66ehMK.js +0 -3
  163. package/dist/packem_shared/headers-YLRp1dLo.js +0 -1318
  164. package/dist/packem_shared/is-expired-CTThU1q5.js +0 -8
  165. package/dist/packem_shared/isRetryableError-Dycp7127.js +0 -82
  166. package/dist/packem_shared/isValidMediaType-BeDgiObq.js +0 -35
  167. package/dist/packem_shared/local-meta-storage-D-pPc3FI.js +0 -658
  168. package/dist/packem_shared/minio-C2YBZQOw.js +0 -22
  169. package/dist/packem_shared/multipart-base-C994naBi.js +0 -102
  170. package/dist/packem_shared/part-match-Dt738Ddb.js +0 -96
  171. package/dist/packem_shared/path-aV9lMdcn-DMU5H1-h.js +0 -162
  172. package/dist/packem_shared/response-builder-BtnRiBUI.js +0 -45
  173. package/dist/packem_shared/rest-base-k1ory8uB.js +0 -457
  174. package/dist/packem_shared/restOpenApiSpec-BBJ_SiPE.js +0 -800
  175. package/dist/packem_shared/s3-base-storage-zUO8u8Cp.js +0 -510
  176. package/dist/packem_shared/sharedGet-CkSLSnMd.js +0 -1022
  177. package/dist/packem_shared/storage-5XW1E7XU.js +0 -1188
  178. package/dist/packem_shared/tigris-Hac8TKnX.js +0 -21
  179. package/dist/packem_shared/transformOpenApiSpec-BodFhFls.js +0 -975
  180. package/dist/packem_shared/tusOpenApiSpec-DzppyJTW.js +0 -740
  181. package/dist/packem_shared/update-size-CCGm6i1J.js +0 -8
  182. package/dist/packem_shared/validator-DuO17wFF.js +0 -79
  183. package/dist/packem_shared/waitForStorage-Cscw85sx.js +0 -18
  184. package/dist/packem_shared/wasabi-DIyflHSd.js +0 -21
  185. package/dist/packem_shared/xhrOpenApiSpec-CXz7BC5J.js +0 -264
@@ -1,1022 +0,0 @@
1
- const FileMetaExample = {
2
- value: {
3
- createdAt: "2022-12-16T10:35:17.466Z",
4
- id: "391c9157ec481ac6-f72b2d884632d7e6-cdeb2056546033e3",
5
- modifiedAt: "2022-12-16T10:35:17.470Z"
6
- }
7
- };
8
- const createParameterGroup = (parameters, groupName) => parameters.map((parameter) => {
9
- return {
10
- ...parameter,
11
- description: `[${groupName}] ${parameter.description}`,
12
- // Add extension for better tooling support
13
- "x-group": groupName
14
- };
15
- });
16
- const getTransformationParameters = (transform, format = ["jpeg", "png", "webp", "avif", "tiff", "gif", "mp4", "webm", "mkv", "ogg", "mp3", "wav", "aac", "flac"]) => {
17
- if (!transform) {
18
- return [];
19
- }
20
- const commonParameters = createParameterGroup(
21
- [
22
- {
23
- description: "Output format for the transformed media",
24
- in: "query",
25
- name: "format",
26
- schema: {
27
- enum: format,
28
- type: "string"
29
- }
30
- },
31
- {
32
- description: "Quality setting (0-100 for images, affects compression)",
33
- in: "query",
34
- name: "quality",
35
- schema: {
36
- maximum: 100,
37
- minimum: 1,
38
- type: "integer"
39
- }
40
- }
41
- ],
42
- "Common"
43
- );
44
- const imageParameters = createParameterGroup(
45
- [
46
- {
47
- description: "Desired width in pixels",
48
- in: "query",
49
- name: "width",
50
- schema: {
51
- minimum: 1,
52
- type: "integer"
53
- }
54
- },
55
- {
56
- description: "Desired height in pixels",
57
- in: "query",
58
- name: "height",
59
- schema: {
60
- minimum: 1,
61
- type: "integer"
62
- }
63
- },
64
- {
65
- description: "Resize fit mode",
66
- in: "query",
67
- name: "fit",
68
- schema: {
69
- enum: ["cover", "contain", "fill", "inside", "outside"],
70
- type: "string"
71
- }
72
- },
73
- {
74
- description: "Position for cover/contain fits",
75
- in: "query",
76
- name: "position",
77
- schema: {
78
- oneOf: [
79
- {
80
- enum: ["top", "right", "bottom", "left", "center"],
81
- type: "string"
82
- },
83
- {
84
- minimum: 0,
85
- type: "integer"
86
- }
87
- ]
88
- }
89
- },
90
- {
91
- description: "Avoid enlarging images smaller than specified dimensions",
92
- in: "query",
93
- name: "withoutEnlargement",
94
- schema: {
95
- type: "boolean"
96
- }
97
- },
98
- {
99
- description: "Avoid reducing images larger than specified dimensions",
100
- in: "query",
101
- name: "withoutReduction",
102
- schema: {
103
- type: "boolean"
104
- }
105
- },
106
- {
107
- description: "Resize kernel algorithm",
108
- in: "query",
109
- name: "kernel",
110
- schema: {
111
- enum: ["nearest", "cubic", "mitchell", "lanczos2", "lanczos3"],
112
- type: "string"
113
- }
114
- },
115
- {
116
- description: "Fast shrink on load for large images",
117
- in: "query",
118
- name: "fastShrinkOnLoad",
119
- schema: {
120
- type: "boolean"
121
- }
122
- },
123
- // Crop parameters
124
- {
125
- description: "Crop area left offset",
126
- in: "query",
127
- name: "left",
128
- schema: {
129
- minimum: 0,
130
- type: "integer"
131
- }
132
- },
133
- {
134
- description: "Crop area top offset",
135
- in: "query",
136
- name: "top",
137
- schema: {
138
- minimum: 0,
139
- type: "integer"
140
- }
141
- },
142
- {
143
- description: "Crop area width",
144
- in: "query",
145
- name: "cropWidth",
146
- schema: {
147
- minimum: 1,
148
- type: "integer"
149
- }
150
- },
151
- {
152
- description: "Crop area height",
153
- in: "query",
154
- name: "cropHeight",
155
- schema: {
156
- minimum: 1,
157
- type: "integer"
158
- }
159
- },
160
- {
161
- description: "Rotation angle in degrees. Note: angles other than 90°, 180°, and 270° require interpolation and may affect quality",
162
- in: "query",
163
- name: "angle",
164
- schema: {
165
- type: "number"
166
- }
167
- },
168
- {
169
- description: "Background color for rotation (hex, rgb, or color name)",
170
- in: "query",
171
- name: "background",
172
- schema: {
173
- type: "string"
174
- }
175
- },
176
- // Image operations
177
- {
178
- description: "Apply blur effect",
179
- in: "query",
180
- name: "blur",
181
- schema: {
182
- type: "boolean"
183
- }
184
- },
185
- {
186
- description: "Apply sharpening",
187
- in: "query",
188
- name: "sharpen",
189
- schema: {
190
- type: "boolean"
191
- }
192
- },
193
- {
194
- description: "Apply median filter with specified size",
195
- in: "query",
196
- name: "median",
197
- schema: {
198
- minimum: 1,
199
- type: "integer"
200
- }
201
- },
202
- {
203
- description: "Apply CLAHE (Contrast Limited Adaptive Histogram Equalization)",
204
- in: "query",
205
- name: "clahe",
206
- schema: {
207
- type: "boolean"
208
- }
209
- },
210
- {
211
- description: "Apply thresholding with specified value (0-255)",
212
- in: "query",
213
- name: "threshold",
214
- schema: {
215
- maximum: 255,
216
- minimum: 0,
217
- type: "integer"
218
- }
219
- },
220
- {
221
- description: "Apply gamma correction",
222
- in: "query",
223
- name: "gamma",
224
- schema: {
225
- type: "boolean"
226
- }
227
- },
228
- {
229
- description: "Negate (invert) the image",
230
- in: "query",
231
- name: "negate",
232
- schema: {
233
- type: "boolean"
234
- }
235
- },
236
- {
237
- description: "Normalise the image",
238
- in: "query",
239
- name: "normalise",
240
- schema: {
241
- type: "boolean"
242
- }
243
- },
244
- {
245
- description: "Flatten alpha channel",
246
- in: "query",
247
- name: "flatten",
248
- schema: {
249
- type: "boolean"
250
- }
251
- },
252
- {
253
- description: "Unflatten alpha channel",
254
- in: "query",
255
- name: "unflatten",
256
- schema: {
257
- type: "boolean"
258
- }
259
- },
260
- {
261
- description: "Flip image vertically",
262
- in: "query",
263
- name: "flip",
264
- schema: {
265
- type: "boolean"
266
- }
267
- },
268
- {
269
- description: "Flop image horizontally",
270
- in: "query",
271
- name: "flop",
272
- schema: {
273
- type: "boolean"
274
- }
275
- },
276
- {
277
- description: "Convert to greyscale",
278
- in: "query",
279
- name: "greyscale",
280
- schema: {
281
- type: "boolean"
282
- }
283
- },
284
- {
285
- description: "Apply modulation effects",
286
- in: "query",
287
- name: "modulate",
288
- schema: {
289
- type: "boolean"
290
- }
291
- },
292
- {
293
- description: "Brightness multiplier for modulation",
294
- in: "query",
295
- name: "brightness",
296
- schema: {
297
- type: "number"
298
- }
299
- },
300
- {
301
- description: "Saturation multiplier for modulation",
302
- in: "query",
303
- name: "saturation",
304
- schema: {
305
- type: "number"
306
- }
307
- },
308
- {
309
- description: "Hue rotation in degrees for modulation",
310
- in: "query",
311
- name: "hue",
312
- schema: {
313
- type: "integer"
314
- }
315
- },
316
- {
317
- description: "Lightness adjustment for modulation",
318
- in: "query",
319
- name: "lightness",
320
- schema: {
321
- type: "integer"
322
- }
323
- },
324
- {
325
- description: "Apply tinting",
326
- in: "query",
327
- name: "tint",
328
- schema: {
329
- type: "boolean"
330
- }
331
- },
332
- {
333
- description: "Convert colourspace",
334
- in: "query",
335
- name: "colourspace",
336
- schema: {
337
- enum: ["srgb", "rgb", "cmyk", "lab", "b-w"],
338
- type: "string"
339
- }
340
- },
341
- {
342
- description: "Apply affine transformation",
343
- in: "query",
344
- name: "affine",
345
- schema: {
346
- type: "boolean"
347
- }
348
- },
349
- {
350
- description: "Apply dilation",
351
- in: "query",
352
- name: "dilate",
353
- schema: {
354
- type: "boolean"
355
- }
356
- },
357
- {
358
- description: "Apply erosion",
359
- in: "query",
360
- name: "erode",
361
- schema: {
362
- type: "boolean"
363
- }
364
- },
365
- {
366
- description: "Set pipeline colourspace",
367
- in: "query",
368
- name: "pipelineColourspace",
369
- schema: {
370
- type: "boolean"
371
- }
372
- },
373
- {
374
- description: "Convert to colourspace",
375
- in: "query",
376
- name: "toColourspace",
377
- schema: {
378
- type: "boolean"
379
- }
380
- },
381
- {
382
- description: "Remove alpha channel",
383
- in: "query",
384
- name: "removeAlpha",
385
- schema: {
386
- type: "boolean"
387
- }
388
- },
389
- {
390
- description: "Ensure alpha channel",
391
- in: "query",
392
- name: "ensureAlpha",
393
- schema: {
394
- type: "boolean"
395
- }
396
- }
397
- ],
398
- "Image"
399
- );
400
- const videoParameters = createParameterGroup(
401
- [
402
- {
403
- description: "Desired width in pixels",
404
- in: "query",
405
- name: "width",
406
- schema: {
407
- minimum: 1,
408
- type: "integer"
409
- }
410
- },
411
- {
412
- description: "Desired height in pixels",
413
- in: "query",
414
- name: "height",
415
- schema: {
416
- minimum: 1,
417
- type: "integer"
418
- }
419
- },
420
- {
421
- description: "Video frame rate in Hz",
422
- in: "query",
423
- name: "frameRate",
424
- schema: {
425
- minimum: 1,
426
- type: "number"
427
- }
428
- },
429
- {
430
- description: "Video key frame interval in seconds",
431
- in: "query",
432
- name: "keyFrameInterval",
433
- schema: {
434
- minimum: 0.1,
435
- type: "number"
436
- }
437
- }
438
- ],
439
- "Video"
440
- );
441
- const videoAudioParameters = createParameterGroup(
442
- [
443
- {
444
- description: "Target bitrate in bits per second",
445
- in: "query",
446
- name: "bitrate",
447
- schema: {
448
- minimum: 1,
449
- type: "integer"
450
- }
451
- },
452
- {
453
- description: "Video or audio codec",
454
- in: "query",
455
- name: "codec",
456
- schema: {
457
- enum: ["avc", "hevc", "vp8", "vp9", "av1", "aac", "opus", "mp3", "vorbis", "flac"],
458
- type: "string"
459
- }
460
- }
461
- ],
462
- "Video/Audio"
463
- );
464
- const audioParameters = createParameterGroup(
465
- [
466
- {
467
- description: "Audio channel count",
468
- in: "query",
469
- name: "numberOfChannels",
470
- schema: {
471
- enum: [1, 2, 3, 4, 5, 6, 7, 8],
472
- type: "integer"
473
- }
474
- },
475
- {
476
- description: "Audio sample rate in Hz",
477
- in: "query",
478
- name: "sampleRate",
479
- schema: {
480
- enum: [8e3, 11025, 16e3, 22050, 32e3, 44100, 48e3, 88200, 96e3, 192e3],
481
- type: "integer"
482
- }
483
- }
484
- ],
485
- "Audio"
486
- );
487
- let parameters = [];
488
- parameters = [...parameters, ...commonParameters];
489
- if (transform === true || transform === "image") {
490
- parameters = [...parameters, ...imageParameters];
491
- }
492
- if (transform === true || transform === "video") {
493
- parameters = [...parameters, ...videoParameters];
494
- }
495
- if (transform === true || transform === "video" || transform === "audio") {
496
- parameters = [...parameters, ...videoAudioParameters];
497
- }
498
- if (transform === true || transform === "audio") {
499
- parameters = [...parameters, ...audioParameters];
500
- }
501
- const seen = /* @__PURE__ */ new Set();
502
- return parameters.filter((parameter) => {
503
- if (seen.has(parameter.name)) {
504
- return false;
505
- }
506
- seen.add(parameter.name);
507
- return true;
508
- });
509
- };
510
- const getOrganizedTransformationParameters = (transform, format = ["jpeg", "png", "webp", "avif", "tiff", "gif", "mp4", "webm", "mkv", "ogg", "mp3", "wav", "aac", "flac"]) => {
511
- const parameters = getTransformationParameters(transform, format);
512
- const groups = {};
513
- parameters.forEach((parameter) => {
514
- const group = parameter["x-group"] || "Other";
515
- if (!groups[group]) {
516
- groups[group] = [];
517
- }
518
- groups[group].push(parameter.name);
519
- });
520
- return { groups, parameters };
521
- };
522
- const getTransformationHeaders = (transform) => {
523
- if (!transform) {
524
- return {};
525
- }
526
- const headers = {
527
- "X-Media-Type": {
528
- description: "Type of media (image/video/audio)",
529
- schema: {
530
- enum: ["image", "video", "audio"],
531
- type: "string"
532
- }
533
- },
534
- "X-Original-Format": {
535
- description: "Original file format",
536
- schema: {
537
- type: "string"
538
- }
539
- },
540
- "X-Transformed-Format": {
541
- description: "Transformed file format",
542
- schema: {
543
- type: "string"
544
- }
545
- }
546
- };
547
- return headers;
548
- };
549
- const getTransformationErrorResponses = (transform) => {
550
- if (!transform) {
551
- return {};
552
- }
553
- return {
554
- 400: {
555
- content: {
556
- "application/json": {
557
- examples: {
558
- ValidationError: {
559
- value: {
560
- error: {
561
- code: "INVALID_PARAMS_FOR_IMAGE",
562
- details: {
563
- invalidParams: ["codec", "bitrate"],
564
- mediaType: "image",
565
- validParams: [
566
- "format",
567
- "quality",
568
- "width",
569
- "height",
570
- "fit",
571
- "position",
572
- "withoutEnlargement",
573
- "withoutReduction",
574
- "kernel",
575
- "fastShrinkOnLoad",
576
- "left",
577
- "top",
578
- "cropWidth",
579
- "cropHeight",
580
- "angle",
581
- "background",
582
- "blur",
583
- "sharpen",
584
- "median",
585
- "clahe",
586
- "threshold",
587
- "gamma",
588
- "negate",
589
- "normalise",
590
- "flatten",
591
- "unflatten",
592
- "flip",
593
- "flop",
594
- "greyscale",
595
- "modulate",
596
- "brightness",
597
- "saturation",
598
- "hue",
599
- "lightness",
600
- "tint",
601
- "colourspace",
602
- "affine",
603
- "dilate",
604
- "erode",
605
- "pipelineColourspace",
606
- "toColourspace",
607
- "removeAlpha",
608
- "ensureAlpha"
609
- ]
610
- },
611
- message: "Invalid query parameters for image transformation: codec, bitrate. Images support: format, quality, width, height, fit, position, withoutEnlargement, withoutReduction, kernel, fastShrinkOnLoad, left, top, cropWidth, cropHeight, angle, background, blur, sharpen, median, clahe, threshold, gamma, negate, normalise, flatten, unflatten, flip, flop, greyscale, modulate, brightness, saturation, hue, lightness, tint, colourspace, affine, dilate, erode, pipelineColourspace, toColourspace, removeAlpha, ensureAlpha. Video/audio parameters (codec, bitrate) are not supported for images.",
612
- name: "ValidationError"
613
- }
614
- }
615
- }
616
- },
617
- schema: {
618
- $ref: "#/components/schemas/ValidationError"
619
- }
620
- }
621
- },
622
- description: "Invalid transformation parameters"
623
- },
624
- 413: {
625
- content: {
626
- "application/json": {
627
- schema: {
628
- $ref: "#/components/schemas/Error"
629
- }
630
- }
631
- },
632
- description: "File too large for transformation"
633
- },
634
- 415: {
635
- content: {
636
- "application/json": {
637
- schema: {
638
- $ref: "#/components/schemas/Error"
639
- }
640
- }
641
- },
642
- description: "Unsupported media type for transformation"
643
- }
644
- };
645
- };
646
- const sharedGet = (operationId, tags, transform, transformerFormat) => {
647
- return {
648
- description: "Get the uploaded file with optional media transformation support",
649
- operationId,
650
- parameters: [
651
- {
652
- in: "path",
653
- name: "id",
654
- required: true,
655
- schema: {
656
- type: "string"
657
- }
658
- },
659
- ...getTransformationParameters(transform, transformerFormat)
660
- ],
661
- responses: {
662
- 200: {
663
- content: {
664
- "*/*": {
665
- schema: {
666
- description: transform ? "Transformed file content" : "File content",
667
- format: "binary",
668
- type: "string"
669
- }
670
- }
671
- },
672
- description: transform ? "File retrieved and transformed successfully" : "File retrieved successfully",
673
- headers: {
674
- "Content-Type": {
675
- description: `MIME type of the file${transform ? " (or transformed file)" : ""}`,
676
- schema: {
677
- type: "string"
678
- }
679
- },
680
- ETag: {
681
- description: `Upload ETag${transform ? " (or transformed file ETag)" : ""}`,
682
- schema: {
683
- example: "d41d8cd98f00b204e9800998ecf8427e",
684
- type: "string"
685
- }
686
- },
687
- "Last-Modified": {
688
- description: "Upload last modified date",
689
- schema: {
690
- example: "2021-08-25T11:12:26.635Z",
691
- format: "date-time",
692
- type: "string"
693
- }
694
- },
695
- ...getTransformationHeaders(transform),
696
- "X-Upload-Expires": {
697
- description: "Upload expiration date",
698
- schema: {
699
- example: "2021-08-25T11:12:26.635Z",
700
- format: "date-time",
701
- type: "string"
702
- }
703
- }
704
- }
705
- },
706
- ...getTransformationErrorResponses(transform),
707
- 404: {
708
- content: {
709
- "application/json": {
710
- example: {
711
- error: {
712
- code: "FileNotFound",
713
- message: "Not found"
714
- }
715
- },
716
- schema: {
717
- $ref: "#/components/schemas/Error"
718
- }
719
- }
720
- },
721
- description: "Not Found"
722
- },
723
- default: {
724
- content: {
725
- "application/json": {
726
- schema: {
727
- $ref: "#/components/schemas/Error"
728
- }
729
- }
730
- },
731
- description: "Error"
732
- }
733
- },
734
- summary: "Get the uploaded file",
735
- tags
736
- };
737
- };
738
- const sharedGetMeta = (operationId, tags) => {
739
- return {
740
- description: "Get the uploaded file metadata",
741
- operationId,
742
- parameters: [
743
- {
744
- in: "path",
745
- name: "id",
746
- required: true,
747
- schema: {
748
- type: "string"
749
- }
750
- }
751
- ],
752
- responses: {
753
- 200: {
754
- content: {
755
- "application/json": {
756
- schema: {
757
- $ref: "#/components/schemas/FileMeta"
758
- }
759
- }
760
- },
761
- description: "OK",
762
- headers: {
763
- "Last-Modified": {
764
- description: "Upload last modified date",
765
- schema: {
766
- example: "2021-08-25T11:12:26.635Z",
767
- format: "date-time",
768
- type: "string"
769
- }
770
- },
771
- "X-Upload-Expires": {
772
- description: "Upload expiration date",
773
- schema: {
774
- example: "2021-08-25T11:12:26.635Z",
775
- format: "date-time",
776
- type: "string"
777
- }
778
- }
779
- }
780
- },
781
- 404: {
782
- content: {
783
- "application/json": {
784
- example: {
785
- error: {
786
- code: "FileNotFound",
787
- message: "File metadata not found"
788
- }
789
- },
790
- schema: {
791
- $ref: "#/components/schemas/Error"
792
- }
793
- }
794
- },
795
- description: "Not Found"
796
- },
797
- default: {
798
- content: {
799
- "application/json": {
800
- schema: {
801
- $ref: "#/components/schemas/Error"
802
- }
803
- }
804
- },
805
- description: "Error"
806
- }
807
- },
808
- summary: "Get the uploaded file metadata",
809
- tags
810
- };
811
- };
812
- const sharedErrorSchemaObject = {
813
- Error: {
814
- description: "Error",
815
- properties: {
816
- error: {
817
- properties: {
818
- code: {
819
- minLength: 1,
820
- type: "string"
821
- },
822
- message: {
823
- minLength: 1,
824
- type: "string"
825
- },
826
- name: {
827
- minLength: 3,
828
- type: "string"
829
- }
830
- },
831
- required: ["message"],
832
- type: "object"
833
- }
834
- },
835
- required: ["error"],
836
- type: "object"
837
- },
838
- // Validation error schema
839
- ValidationError: {
840
- description: "Validation error response",
841
- properties: {
842
- code: {
843
- enum: [
844
- "INVALID_PARAMS_FOR_IMAGE",
845
- "INVALID_PARAMS_FOR_VIDEO",
846
- "INVALID_PARAMS_FOR_AUDIO",
847
- "INVALID_FIT_VALUE",
848
- "INVALID_ANGLE_VALUE",
849
- "INVALID_FORMAT",
850
- "INCOMPLETE_CROP_PARAMS",
851
- "INVALID_VIDEO_CODEC",
852
- "INVALID_VIDEO_FORMAT",
853
- "INVALID_WIDTH",
854
- "INVALID_HEIGHT",
855
- "INVALID_BITRATE",
856
- "INVALID_FRAME_RATE",
857
- "INVALID_KEY_FRAME_INTERVAL",
858
- "INVALID_AUDIO_CODEC",
859
- "INVALID_AUDIO_FORMAT",
860
- "INVALID_CHANNEL_COUNT",
861
- "INVALID_SAMPLE_RATE"
862
- ],
863
- type: "string"
864
- },
865
- details: {
866
- properties: {
867
- invalidParams: {
868
- items: {
869
- type: "string"
870
- },
871
- type: "array"
872
- },
873
- mediaType: {
874
- enum: ["image", "video", "audio"],
875
- type: "string"
876
- },
877
- suggestions: {
878
- items: {
879
- type: "string"
880
- },
881
- type: "array"
882
- },
883
- validParams: {
884
- items: {
885
- type: "string"
886
- },
887
- type: "array"
888
- }
889
- },
890
- required: ["invalidParams", "validParams", "mediaType"],
891
- type: "object"
892
- },
893
- message: {
894
- type: "string"
895
- },
896
- name: {
897
- enum: ["ValidationError"],
898
- type: "string"
899
- }
900
- },
901
- required: ["code", "details", "message", "name"],
902
- type: "object"
903
- }
904
- };
905
- const sharedFileMetaSchemaObject = {
906
- FileMeta: {
907
- description: "File meta",
908
- properties: {
909
- bytesWritten: {
910
- type: "integer"
911
- },
912
- contentType: {
913
- type: "string"
914
- },
915
- createdAt: {
916
- format: "date-time",
917
- type: "string"
918
- },
919
- id: {
920
- minLength: 1,
921
- type: "string"
922
- },
923
- metadata: {
924
- type: "object"
925
- },
926
- name: {
927
- minLength: 1,
928
- type: "string"
929
- },
930
- originalName: {
931
- minLength: 1,
932
- type: "string"
933
- },
934
- status: {
935
- enum: ["completed", "part", "deleted", "created"],
936
- type: "string"
937
- }
938
- },
939
- type: "object"
940
- }
941
- };
942
- const sharedFileMetaExampleObject = {
943
- FileMeta: {
944
- value: [FileMetaExample]
945
- },
946
- FileMetaPagination: {
947
- value: {
948
- data: [FileMetaExample.value],
949
- meta: {
950
- firstPage: 1,
951
- firstPageUrl: "/?page=1",
952
- lastPage: 1,
953
- lastPageUrl: "/?page=10",
954
- nextPageUrl: "/?page=2",
955
- page: 1,
956
- perPage: 1,
957
- previousPageUrl: void 0,
958
- total: 1
959
- }
960
- }
961
- }
962
- };
963
- const sharedGetList = (operationId, tags) => {
964
- return {
965
- description: "List upload",
966
- operationId,
967
- parameters: [
968
- {
969
- description: "Maximum number of elements to retrieve.",
970
- in: "query",
971
- name: "limit",
972
- schema: {
973
- nullable: true,
974
- type: "integer"
975
- }
976
- },
977
- {
978
- description: "Page number. Use only for pagination.",
979
- in: "query",
980
- name: "page",
981
- schema: {
982
- nullable: true,
983
- type: "integer"
984
- }
985
- }
986
- ],
987
- responses: {
988
- 200: {
989
- content: {
990
- "application/json": {
991
- examples: {
992
- Default: {
993
- $ref: "#/components/examples/FileMeta"
994
- },
995
- Pagination: {
996
- $ref: "#/components/examples/FileMetaPagination"
997
- }
998
- },
999
- schema: {
1000
- $ref: "#/components/schemas/FileMeta"
1001
- }
1002
- }
1003
- },
1004
- description: "OK"
1005
- },
1006
- default: {
1007
- content: {
1008
- "application/json": {
1009
- schema: {
1010
- $ref: "#/components/schemas/Error"
1011
- }
1012
- }
1013
- },
1014
- description: "Error"
1015
- }
1016
- },
1017
- summary: "List upload",
1018
- tags
1019
- };
1020
- };
1021
-
1022
- export { getOrganizedTransformationParameters, sharedErrorSchemaObject, sharedFileMetaExampleObject, sharedFileMetaSchemaObject, sharedGet, sharedGetList, sharedGetMeta };