n8n-nodes-cloudinary 0.0.8 → 0.1.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 +51 -0
- package/dist/credentials/CloudinaryApi.credentials.js +16 -0
- package/dist/credentials/CloudinaryApi.credentials.js.map +1 -1
- package/dist/nodes/Cloudinary/Cloudinary.node.d.ts +0 -1
- package/dist/nodes/Cloudinary/Cloudinary.node.js +26 -707
- package/dist/nodes/Cloudinary/Cloudinary.node.js.map +1 -1
- package/dist/nodes/Cloudinary/Cloudinary.node.json +5 -1
- package/dist/nodes/Cloudinary/cloudinary.utils.d.ts +34 -0
- package/dist/nodes/Cloudinary/cloudinary.utils.js +114 -3
- package/dist/nodes/Cloudinary/cloudinary.utils.js.map +1 -1
- package/dist/nodes/Cloudinary/descriptions/admin/getTags.fields.d.ts +2 -0
- package/dist/nodes/Cloudinary/descriptions/admin/getTags.fields.js +64 -0
- package/dist/nodes/Cloudinary/descriptions/admin/getTags.fields.js.map +1 -0
- package/dist/nodes/Cloudinary/descriptions/admin/search.fields.d.ts +2 -0
- package/dist/nodes/Cloudinary/descriptions/admin/search.fields.js +119 -0
- package/dist/nodes/Cloudinary/descriptions/admin/search.fields.js.map +1 -0
- package/dist/nodes/Cloudinary/descriptions/asset.fields.d.ts +2 -0
- package/dist/nodes/Cloudinary/descriptions/asset.fields.js +357 -0
- package/dist/nodes/Cloudinary/descriptions/asset.fields.js.map +1 -0
- package/dist/nodes/Cloudinary/descriptions/index.d.ts +2 -0
- package/dist/nodes/Cloudinary/descriptions/index.js +22 -0
- package/dist/nodes/Cloudinary/descriptions/index.js.map +1 -0
- package/dist/nodes/Cloudinary/descriptions/resource.d.ts +2 -0
- package/dist/nodes/Cloudinary/descriptions/resource.js +267 -0
- package/dist/nodes/Cloudinary/descriptions/resource.js.map +1 -0
- package/dist/nodes/Cloudinary/descriptions/transform.fields.d.ts +2 -0
- package/dist/nodes/Cloudinary/descriptions/transform.fields.js +742 -0
- package/dist/nodes/Cloudinary/descriptions/transform.fields.js.map +1 -0
- package/dist/nodes/Cloudinary/descriptions/updateAsset.fields.d.ts +2 -0
- package/dist/nodes/Cloudinary/descriptions/updateAsset.fields.js +262 -0
- package/dist/nodes/Cloudinary/descriptions/updateAsset.fields.js.map +1 -0
- package/dist/nodes/Cloudinary/descriptions/upload.fields.d.ts +2 -0
- package/dist/nodes/Cloudinary/descriptions/upload.fields.js +191 -0
- package/dist/nodes/Cloudinary/descriptions/upload.fields.js.map +1 -0
- package/dist/nodes/Cloudinary/descriptions/widget.fields.d.ts +2 -0
- package/dist/nodes/Cloudinary/descriptions/widget.fields.js +268 -0
- package/dist/nodes/Cloudinary/descriptions/widget.fields.js.map +1 -0
- package/dist/nodes/Cloudinary/operations/admin/getMetadataFields.d.ts +2 -0
- package/dist/nodes/Cloudinary/operations/admin/getMetadataFields.js +17 -0
- package/dist/nodes/Cloudinary/operations/admin/getMetadataFields.js.map +1 -0
- package/dist/nodes/Cloudinary/operations/admin/getTags.d.ts +2 -0
- package/dist/nodes/Cloudinary/operations/admin/getTags.js +28 -0
- package/dist/nodes/Cloudinary/operations/admin/getTags.js.map +1 -0
- package/dist/nodes/Cloudinary/operations/admin/search.d.ts +2 -0
- package/dist/nodes/Cloudinary/operations/admin/search.js +92 -0
- package/dist/nodes/Cloudinary/operations/admin/search.js.map +1 -0
- package/dist/nodes/Cloudinary/operations/asset/updateMetadata.d.ts +2 -0
- package/dist/nodes/Cloudinary/operations/asset/updateMetadata.js +25 -0
- package/dist/nodes/Cloudinary/operations/asset/updateMetadata.js.map +1 -0
- package/dist/nodes/Cloudinary/operations/asset/updateTags.d.ts +2 -0
- package/dist/nodes/Cloudinary/operations/asset/updateTags.js +30 -0
- package/dist/nodes/Cloudinary/operations/asset/updateTags.js.map +1 -0
- package/dist/nodes/Cloudinary/operations/index.d.ts +2 -0
- package/dist/nodes/Cloudinary/operations/index.js +50 -0
- package/dist/nodes/Cloudinary/operations/index.js.map +1 -0
- package/dist/nodes/Cloudinary/operations/tagAppend.d.ts +4 -0
- package/dist/nodes/Cloudinary/operations/tagAppend.js +44 -0
- package/dist/nodes/Cloudinary/operations/tagAppend.js.map +1 -0
- package/dist/nodes/Cloudinary/operations/transform/convertImage.d.ts +2 -0
- package/dist/nodes/Cloudinary/operations/transform/convertImage.js +23 -0
- package/dist/nodes/Cloudinary/operations/transform/convertImage.js.map +1 -0
- package/dist/nodes/Cloudinary/operations/transform/cropImage.d.ts +3 -0
- package/dist/nodes/Cloudinary/operations/transform/cropImage.js +31 -0
- package/dist/nodes/Cloudinary/operations/transform/cropImage.js.map +1 -0
- package/dist/nodes/Cloudinary/operations/transform/customTransformation.d.ts +2 -0
- package/dist/nodes/Cloudinary/operations/transform/customTransformation.js +28 -0
- package/dist/nodes/Cloudinary/operations/transform/customTransformation.js.map +1 -0
- package/dist/nodes/Cloudinary/operations/transform/multiStep.d.ts +2 -0
- package/dist/nodes/Cloudinary/operations/transform/multiStep.js +78 -0
- package/dist/nodes/Cloudinary/operations/transform/multiStep.js.map +1 -0
- package/dist/nodes/Cloudinary/operations/transform/optimizeImage.d.ts +2 -0
- package/dist/nodes/Cloudinary/operations/transform/optimizeImage.js +22 -0
- package/dist/nodes/Cloudinary/operations/transform/optimizeImage.js.map +1 -0
- package/dist/nodes/Cloudinary/operations/transform/optimizeVideo.d.ts +2 -0
- package/dist/nodes/Cloudinary/operations/transform/optimizeVideo.js +22 -0
- package/dist/nodes/Cloudinary/operations/transform/optimizeVideo.js.map +1 -0
- package/dist/nodes/Cloudinary/operations/transform/resizeImage.d.ts +3 -0
- package/dist/nodes/Cloudinary/operations/transform/resizeImage.js +28 -0
- package/dist/nodes/Cloudinary/operations/transform/resizeImage.js.map +1 -0
- package/dist/nodes/Cloudinary/operations/transform/shared.d.ts +47 -0
- package/dist/nodes/Cloudinary/operations/transform/shared.js +179 -0
- package/dist/nodes/Cloudinary/operations/transform/shared.js.map +1 -0
- package/dist/nodes/Cloudinary/operations/transform/trimVideo.d.ts +2 -0
- package/dist/nodes/Cloudinary/operations/transform/trimVideo.js +24 -0
- package/dist/nodes/Cloudinary/operations/transform/trimVideo.js.map +1 -0
- package/dist/nodes/Cloudinary/operations/transform/videoThumbnail.d.ts +2 -0
- package/dist/nodes/Cloudinary/operations/transform/videoThumbnail.js +34 -0
- package/dist/nodes/Cloudinary/operations/transform/videoThumbnail.js.map +1 -0
- package/dist/nodes/Cloudinary/operations/types.d.ts +10 -0
- package/dist/nodes/Cloudinary/operations/types.js +5 -0
- package/dist/nodes/Cloudinary/operations/types.js.map +1 -0
- package/dist/nodes/Cloudinary/operations/updateAsset/deleteAssets.d.ts +2 -0
- package/dist/nodes/Cloudinary/operations/updateAsset/deleteAssets.js +36 -0
- package/dist/nodes/Cloudinary/operations/updateAsset/deleteAssets.js.map +1 -0
- package/dist/nodes/Cloudinary/operations/updateAsset/getAsset.d.ts +2 -0
- package/dist/nodes/Cloudinary/operations/updateAsset/getAsset.js +20 -0
- package/dist/nodes/Cloudinary/operations/updateAsset/getAsset.js.map +1 -0
- package/dist/nodes/Cloudinary/operations/updateAsset/updateMetadata.d.ts +2 -0
- package/dist/nodes/Cloudinary/operations/updateAsset/updateMetadata.js +27 -0
- package/dist/nodes/Cloudinary/operations/updateAsset/updateMetadata.js.map +1 -0
- package/dist/nodes/Cloudinary/operations/updateAsset/updateTags.d.ts +2 -0
- package/dist/nodes/Cloudinary/operations/updateAsset/updateTags.js +32 -0
- package/dist/nodes/Cloudinary/operations/updateAsset/updateTags.js.map +1 -0
- package/dist/nodes/Cloudinary/operations/upload/uploadFile.d.ts +2 -0
- package/dist/nodes/Cloudinary/operations/upload/uploadFile.js +44 -0
- package/dist/nodes/Cloudinary/operations/upload/uploadFile.js.map +1 -0
- package/dist/nodes/Cloudinary/operations/upload/uploadUrl.d.ts +2 -0
- package/dist/nodes/Cloudinary/operations/upload/uploadUrl.js +34 -0
- package/dist/nodes/Cloudinary/operations/upload/uploadUrl.js.map +1 -0
- package/dist/nodes/Cloudinary/operations/widget/videoPlayer.d.ts +2 -0
- package/dist/nodes/Cloudinary/operations/widget/videoPlayer.js +170 -0
- package/dist/nodes/Cloudinary/operations/widget/videoPlayer.js.map +1 -0
- package/dist/package.json +7 -3
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +7 -3
- package/dist/nodes/Cloudinary/sha1.utils.d.ts +0 -1
- package/dist/nodes/Cloudinary/sha1.utils.js +0 -68
- package/dist/nodes/Cloudinary/sha1.utils.js.map +0 -1
|
@@ -0,0 +1,742 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.transformFields = void 0;
|
|
4
|
+
const ALL_TRANSFORM_OPS = [
|
|
5
|
+
'optimizeImage',
|
|
6
|
+
'resizeImage',
|
|
7
|
+
'cropImage',
|
|
8
|
+
'convertImage',
|
|
9
|
+
'optimizeVideo',
|
|
10
|
+
'resizeVideo',
|
|
11
|
+
'cropVideo',
|
|
12
|
+
'trimVideo',
|
|
13
|
+
'videoThumbnail',
|
|
14
|
+
'customTransformation',
|
|
15
|
+
'combineTransformations',
|
|
16
|
+
'videoPlayer',
|
|
17
|
+
];
|
|
18
|
+
const DELIVERY_URL_OPS = ALL_TRANSFORM_OPS.filter((op) => op !== 'videoPlayer');
|
|
19
|
+
const CHAINABLE_TRANSFORM_OPS = DELIVERY_URL_OPS.filter((op) => op !== 'customTransformation' && op !== 'combineTransformations');
|
|
20
|
+
const QUALITY_OPTIONS = [
|
|
21
|
+
{ name: 'Auto (Recommended)', value: 'auto', description: 'Let Cloudinary choose the best quality/size trade-off' },
|
|
22
|
+
{ name: 'Auto - Best', value: 'best', description: 'Higher quality, larger files' },
|
|
23
|
+
{ name: 'Auto - Good', value: 'good', description: 'Balanced quality' },
|
|
24
|
+
{ name: 'Auto - Eco', value: 'eco', description: 'Smaller files, slightly lower quality' },
|
|
25
|
+
{ name: 'Auto - Low', value: 'low', description: 'Smallest files, lowest quality' },
|
|
26
|
+
];
|
|
27
|
+
exports.transformFields = [
|
|
28
|
+
{
|
|
29
|
+
displayName: 'Public ID',
|
|
30
|
+
name: 'transformPublicId',
|
|
31
|
+
type: 'string',
|
|
32
|
+
default: '',
|
|
33
|
+
required: true,
|
|
34
|
+
placeholder: 'folder/sample',
|
|
35
|
+
description: 'Public ID of the asset, including any folder path and without the file extension',
|
|
36
|
+
displayOptions: {
|
|
37
|
+
show: {
|
|
38
|
+
resource: ['transform', 'widget'],
|
|
39
|
+
operation: ALL_TRANSFORM_OPS,
|
|
40
|
+
},
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
displayName: 'Type',
|
|
45
|
+
name: 'type',
|
|
46
|
+
type: 'options',
|
|
47
|
+
options: [
|
|
48
|
+
{ name: 'Animoto', value: 'animoto' },
|
|
49
|
+
{ name: 'Authenticated', value: 'authenticated' },
|
|
50
|
+
{ name: 'Dailymotion', value: 'dailymotion' },
|
|
51
|
+
{ name: 'Facebook', value: 'facebook' },
|
|
52
|
+
{ name: 'Fetch (Remote URL)', value: 'fetch' },
|
|
53
|
+
{ name: 'Gravatar', value: 'gravatar' },
|
|
54
|
+
{ name: 'Hulu', value: 'hulu' },
|
|
55
|
+
{ name: 'Private', value: 'private' },
|
|
56
|
+
{ name: 'Twitter (by ID)', value: 'twitter' },
|
|
57
|
+
{ name: 'Twitter (by Name)', value: 'twitter_name' },
|
|
58
|
+
{ name: 'Upload', value: 'upload' },
|
|
59
|
+
{ name: 'Vimeo', value: 'vimeo' },
|
|
60
|
+
{ name: 'WorldStarHipHop', value: 'worldstarhiphop' },
|
|
61
|
+
{ name: 'YouTube', value: 'youtube' },
|
|
62
|
+
],
|
|
63
|
+
default: 'upload',
|
|
64
|
+
description: 'Cloudinary delivery type — in almost all cases use "Upload" (public assets). Becomes the URL path segment (e.g. image/upload/sample, video/fetch/<URL>). IMPORTANT: "Private" and "Authenticated" assets — and, depending on account settings, social profile sources (Facebook, Twitter, Gravatar) — require a signed URL, which this node does not generate yet, so those delivery URLs will fail to load. Leave as "Upload" unless you specifically need another type.',
|
|
65
|
+
displayOptions: {
|
|
66
|
+
show: {
|
|
67
|
+
resource: ['transform', 'widget'],
|
|
68
|
+
operation: ALL_TRANSFORM_OPS,
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
displayName: 'Continue From Transformation',
|
|
74
|
+
name: 'continueFromTransformation',
|
|
75
|
+
type: 'string',
|
|
76
|
+
default: '',
|
|
77
|
+
placeholder: 'c_fill,w_800,h_600',
|
|
78
|
+
description: 'Optional. A transformation to build on, prepended before this operation\'s own transformation so the two compound into one delivery URL. Wire the previous Transform action\'s output here — <code>{{ $json.transformation }}</code> — to chain steps across nodes. Leave empty to start fresh.',
|
|
79
|
+
displayOptions: {
|
|
80
|
+
show: {
|
|
81
|
+
resource: ['transform'],
|
|
82
|
+
operation: CHAINABLE_TRANSFORM_OPS,
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
displayName: 'Quality',
|
|
88
|
+
name: 'imageQuality',
|
|
89
|
+
type: 'options',
|
|
90
|
+
options: QUALITY_OPTIONS,
|
|
91
|
+
default: 'auto',
|
|
92
|
+
description: 'Automatic quality level. Format is always auto-selected (f_auto).',
|
|
93
|
+
displayOptions: {
|
|
94
|
+
show: { resource: ['transform'], operation: ['optimizeImage'] },
|
|
95
|
+
},
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
displayName: 'Width',
|
|
99
|
+
name: 'resizeWidth',
|
|
100
|
+
type: 'number',
|
|
101
|
+
default: 0,
|
|
102
|
+
typeOptions: { minValue: 0 },
|
|
103
|
+
description: 'Target width in pixels. Leave 0 to size by height only.',
|
|
104
|
+
displayOptions: {
|
|
105
|
+
show: { resource: ['transform'], operation: ['resizeImage', 'resizeVideo'] },
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
displayName: 'Height',
|
|
110
|
+
name: 'resizeHeight',
|
|
111
|
+
type: 'number',
|
|
112
|
+
default: 0,
|
|
113
|
+
typeOptions: { minValue: 0 },
|
|
114
|
+
description: 'Target height in pixels. Leave 0 to size by width only.',
|
|
115
|
+
displayOptions: {
|
|
116
|
+
show: { resource: ['transform'], operation: ['resizeImage', 'resizeVideo'] },
|
|
117
|
+
},
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
displayName: 'Fit',
|
|
121
|
+
name: 'resizeFit',
|
|
122
|
+
type: 'options',
|
|
123
|
+
options: [
|
|
124
|
+
{ name: 'Limit (Never Upscale)', value: 'limit', description: 'Resize down to fit within the dimensions; never enlarges' },
|
|
125
|
+
{ name: 'Fit (Fit Within)', value: 'fit', description: 'Fit within the dimensions, may enlarge, keeps full image' },
|
|
126
|
+
{ name: 'Pad (Letterbox)', value: 'pad', description: 'Fit within the dimensions, then pad to fill the rest; keeps full image' },
|
|
127
|
+
{ name: 'Pad - Limit (Never Upscale)', value: 'lpad', description: 'Like Pad, but never enlarges past the original size' },
|
|
128
|
+
{ name: 'Pad - Minimum', value: 'mpad', description: 'Like Pad, but only pads when the target is larger than the original; never scales the image' },
|
|
129
|
+
{ name: 'Scale (Exact)', value: 'scale', description: 'Force exact dimensions; may distort if both are set' },
|
|
130
|
+
],
|
|
131
|
+
default: 'limit',
|
|
132
|
+
description: 'How the asset is fitted to the requested dimensions. Pad modes keep the whole asset and fill the surrounding space (set both width and height to define the padded shape). Note: Resize does not auto-optimize — chain "Image: Optimize" / "Video: Optimize" after it, or use "Compose: Combine Transformations", to add f_auto/q_auto.',
|
|
133
|
+
displayOptions: {
|
|
134
|
+
show: { resource: ['transform'], operation: ['resizeImage', 'resizeVideo'] },
|
|
135
|
+
},
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
displayName: 'Pad Background',
|
|
139
|
+
name: 'resizePadBackground',
|
|
140
|
+
type: 'options',
|
|
141
|
+
options: [
|
|
142
|
+
{ name: 'Black (Default)', value: '', description: 'Cloudinary\'s default — pad with black' },
|
|
143
|
+
{ name: 'Auto (Predominant Color)', value: 'auto', description: 'Pad with a color sampled from the asset (b_auto)' },
|
|
144
|
+
{ name: 'Blurred', value: 'blurred', description: 'Pad with a blurred, enlarged copy of the asset (b_blurred)' },
|
|
145
|
+
{ name: 'Solid Color', value: 'color', description: 'Pad with a specific color set below' },
|
|
146
|
+
],
|
|
147
|
+
default: '',
|
|
148
|
+
description: 'Color to fill the padded area. Applies only to the Pad fit modes.',
|
|
149
|
+
displayOptions: {
|
|
150
|
+
show: {
|
|
151
|
+
resource: ['transform'],
|
|
152
|
+
operation: ['resizeImage', 'resizeVideo'],
|
|
153
|
+
resizeFit: ['pad', 'lpad', 'mpad'],
|
|
154
|
+
},
|
|
155
|
+
},
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
displayName: 'Background Color',
|
|
159
|
+
name: 'resizePadBackgroundColor',
|
|
160
|
+
type: 'color',
|
|
161
|
+
default: '',
|
|
162
|
+
placeholder: '#ffffff or white',
|
|
163
|
+
description: 'A named color (e.g. white, lightblue) or a hex value (e.g. #ffffff). Hex is encoded as b_rgb:.',
|
|
164
|
+
displayOptions: {
|
|
165
|
+
show: {
|
|
166
|
+
resource: ['transform'],
|
|
167
|
+
operation: ['resizeImage', 'resizeVideo'],
|
|
168
|
+
resizeFit: ['pad', 'lpad', 'mpad'],
|
|
169
|
+
resizePadBackground: ['color'],
|
|
170
|
+
},
|
|
171
|
+
},
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
displayName: 'Crop By',
|
|
175
|
+
name: 'cropBy',
|
|
176
|
+
type: 'options',
|
|
177
|
+
options: [
|
|
178
|
+
{ name: 'Dimensions', value: 'dimensions', description: 'Crop to an exact width and height' },
|
|
179
|
+
{ name: 'Aspect Ratio', value: 'aspectRatio', description: 'Crop to an aspect ratio (e.g. 16:9)' },
|
|
180
|
+
],
|
|
181
|
+
default: 'dimensions',
|
|
182
|
+
displayOptions: {
|
|
183
|
+
show: { resource: ['transform'], operation: ['cropImage', 'cropVideo'] },
|
|
184
|
+
},
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
displayName: 'Width',
|
|
188
|
+
name: 'cropWidth',
|
|
189
|
+
type: 'number',
|
|
190
|
+
default: 0,
|
|
191
|
+
typeOptions: { minValue: 0 },
|
|
192
|
+
description: 'Target width in pixels',
|
|
193
|
+
displayOptions: {
|
|
194
|
+
show: { resource: ['transform'], operation: ['cropImage', 'cropVideo'], cropBy: ['dimensions'] },
|
|
195
|
+
},
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
displayName: 'Height',
|
|
199
|
+
name: 'cropHeight',
|
|
200
|
+
type: 'number',
|
|
201
|
+
default: 0,
|
|
202
|
+
typeOptions: { minValue: 0 },
|
|
203
|
+
description: 'Target height in pixels',
|
|
204
|
+
displayOptions: {
|
|
205
|
+
show: { resource: ['transform'], operation: ['cropImage', 'cropVideo'], cropBy: ['dimensions'] },
|
|
206
|
+
},
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
displayName: 'Aspect Ratio',
|
|
210
|
+
name: 'cropAspectRatio',
|
|
211
|
+
type: 'string',
|
|
212
|
+
default: '',
|
|
213
|
+
placeholder: '16:9',
|
|
214
|
+
description: 'Aspect ratio as width:height (e.g. 16:9) or a decimal (e.g. 1.5).',
|
|
215
|
+
displayOptions: {
|
|
216
|
+
show: { resource: ['transform'], operation: ['cropImage', 'cropVideo'], cropBy: ['aspectRatio'] },
|
|
217
|
+
},
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
displayName: 'Width',
|
|
221
|
+
name: 'cropAspectWidth',
|
|
222
|
+
type: 'number',
|
|
223
|
+
default: 0,
|
|
224
|
+
typeOptions: { minValue: 0 },
|
|
225
|
+
description: 'Optional target width in pixels; height is derived from the aspect ratio',
|
|
226
|
+
displayOptions: {
|
|
227
|
+
show: { resource: ['transform'], operation: ['cropImage', 'cropVideo'], cropBy: ['aspectRatio'] },
|
|
228
|
+
},
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
displayName: 'Focus',
|
|
232
|
+
name: 'cropFocus',
|
|
233
|
+
type: 'options',
|
|
234
|
+
options: [
|
|
235
|
+
{ name: 'Auto (Smart)', value: 'auto', description: 'Automatically detect the most important region' },
|
|
236
|
+
{ name: 'Face', value: 'face', description: 'Center the crop on a detected face' },
|
|
237
|
+
{ name: 'Center', value: 'center', description: 'Center the crop on the middle of the asset' },
|
|
238
|
+
],
|
|
239
|
+
default: 'auto',
|
|
240
|
+
description: 'Which part of the asset to keep in focus when cropping. Note: Crop does not auto-optimize — chain "Image: Optimize" / "Video: Optimize" after it, or use "Compose: Combine Transformations", to add f_auto/q_auto.',
|
|
241
|
+
displayOptions: {
|
|
242
|
+
show: { resource: ['transform'], operation: ['cropImage', 'cropVideo'] },
|
|
243
|
+
},
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
displayName: 'Generative Fill',
|
|
247
|
+
name: 'cropGenerativeFill',
|
|
248
|
+
type: 'boolean',
|
|
249
|
+
default: false,
|
|
250
|
+
description: 'Whether to extend (pad) the image with AI-generated content to reach the target shape instead of cropping. This is a generative AI effect that costs extra transformation credits, applies to non-transparent images only, and may render asynchronously on first request.',
|
|
251
|
+
displayOptions: {
|
|
252
|
+
show: { resource: ['transform'], operation: ['cropImage'] },
|
|
253
|
+
},
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
displayName: 'Generative Fill Prompt',
|
|
257
|
+
name: 'cropGenerativeFillPrompt',
|
|
258
|
+
type: 'string',
|
|
259
|
+
default: '',
|
|
260
|
+
placeholder: 'a sandy beach',
|
|
261
|
+
description: 'Optional text prompt guiding the generated fill content',
|
|
262
|
+
displayOptions: {
|
|
263
|
+
show: {
|
|
264
|
+
resource: ['transform'],
|
|
265
|
+
operation: ['cropImage'],
|
|
266
|
+
cropGenerativeFill: [true],
|
|
267
|
+
},
|
|
268
|
+
},
|
|
269
|
+
},
|
|
270
|
+
{
|
|
271
|
+
displayName: 'Target Format',
|
|
272
|
+
name: 'convertFormat',
|
|
273
|
+
type: 'options',
|
|
274
|
+
options: [
|
|
275
|
+
{ name: 'AVIF', value: 'avif' },
|
|
276
|
+
{ name: 'GIF', value: 'gif' },
|
|
277
|
+
{ name: 'JPG', value: 'jpg' },
|
|
278
|
+
{ name: 'PNG', value: 'png' },
|
|
279
|
+
{ name: 'WebP', value: 'webp' },
|
|
280
|
+
],
|
|
281
|
+
default: 'webp',
|
|
282
|
+
description: 'Format to convert the image to',
|
|
283
|
+
displayOptions: {
|
|
284
|
+
show: { resource: ['transform'], operation: ['convertImage'] },
|
|
285
|
+
},
|
|
286
|
+
},
|
|
287
|
+
{
|
|
288
|
+
displayName: 'Quality',
|
|
289
|
+
name: 'videoQuality',
|
|
290
|
+
type: 'options',
|
|
291
|
+
options: QUALITY_OPTIONS,
|
|
292
|
+
default: 'auto',
|
|
293
|
+
description: 'Automatic quality level. Format and codec are auto-selected for the requesting browser (f_auto:video).',
|
|
294
|
+
displayOptions: {
|
|
295
|
+
show: { resource: ['transform'], operation: ['optimizeVideo'] },
|
|
296
|
+
},
|
|
297
|
+
},
|
|
298
|
+
{
|
|
299
|
+
displayName: 'Start Offset',
|
|
300
|
+
name: 'trimStart',
|
|
301
|
+
type: 'string',
|
|
302
|
+
default: '',
|
|
303
|
+
placeholder: '2.5',
|
|
304
|
+
description: 'Start time in seconds (e.g. 2.5). Maps to so_.',
|
|
305
|
+
displayOptions: {
|
|
306
|
+
show: { resource: ['transform'], operation: ['trimVideo'] },
|
|
307
|
+
},
|
|
308
|
+
},
|
|
309
|
+
{
|
|
310
|
+
displayName: 'End Offset',
|
|
311
|
+
name: 'trimEnd',
|
|
312
|
+
type: 'string',
|
|
313
|
+
default: '',
|
|
314
|
+
placeholder: '10',
|
|
315
|
+
description: 'End time in seconds (e.g. 10). Maps to eo_.',
|
|
316
|
+
displayOptions: {
|
|
317
|
+
show: { resource: ['transform'], operation: ['trimVideo'] },
|
|
318
|
+
},
|
|
319
|
+
},
|
|
320
|
+
{
|
|
321
|
+
displayName: 'Duration',
|
|
322
|
+
name: 'trimDuration',
|
|
323
|
+
type: 'string',
|
|
324
|
+
default: '',
|
|
325
|
+
placeholder: '5',
|
|
326
|
+
description: 'Clip duration in seconds (e.g. 5). Maps to du_. Any combination of start/end/duration is allowed.',
|
|
327
|
+
displayOptions: {
|
|
328
|
+
show: { resource: ['transform'], operation: ['trimVideo'] },
|
|
329
|
+
},
|
|
330
|
+
},
|
|
331
|
+
{
|
|
332
|
+
displayName: 'Frame',
|
|
333
|
+
name: 'thumbnailFrameMode',
|
|
334
|
+
type: 'options',
|
|
335
|
+
options: [
|
|
336
|
+
{ name: 'Auto', value: 'auto', description: 'Let Cloudinary pick a representative frame (so_auto)' },
|
|
337
|
+
{ name: 'Specific Time', value: 'time', description: 'Grab the frame at a specific timestamp' },
|
|
338
|
+
],
|
|
339
|
+
default: 'auto',
|
|
340
|
+
displayOptions: {
|
|
341
|
+
show: { resource: ['transform'], operation: ['videoThumbnail'] },
|
|
342
|
+
},
|
|
343
|
+
},
|
|
344
|
+
{
|
|
345
|
+
displayName: 'Timestamp',
|
|
346
|
+
name: 'thumbnailTimestamp',
|
|
347
|
+
type: 'string',
|
|
348
|
+
default: '',
|
|
349
|
+
placeholder: '2.5',
|
|
350
|
+
description: 'Timestamp in seconds to grab the frame from (e.g. 2.5)',
|
|
351
|
+
displayOptions: {
|
|
352
|
+
show: {
|
|
353
|
+
resource: ['transform'],
|
|
354
|
+
operation: ['videoThumbnail'],
|
|
355
|
+
thumbnailFrameMode: ['time'],
|
|
356
|
+
},
|
|
357
|
+
},
|
|
358
|
+
},
|
|
359
|
+
{
|
|
360
|
+
displayName: 'Image Format',
|
|
361
|
+
name: 'thumbnailFormat',
|
|
362
|
+
type: 'options',
|
|
363
|
+
options: [
|
|
364
|
+
{ name: 'JPG', value: 'jpg' },
|
|
365
|
+
{ name: 'PNG', value: 'png' },
|
|
366
|
+
{ name: 'WebP', value: 'webp' },
|
|
367
|
+
{ name: 'GIF', value: 'gif' },
|
|
368
|
+
],
|
|
369
|
+
default: 'jpg',
|
|
370
|
+
description: 'Format of the generated thumbnail image',
|
|
371
|
+
displayOptions: {
|
|
372
|
+
show: { resource: ['transform'], operation: ['videoThumbnail'] },
|
|
373
|
+
},
|
|
374
|
+
},
|
|
375
|
+
{
|
|
376
|
+
displayName: 'Resource Type',
|
|
377
|
+
name: 'customResourceType',
|
|
378
|
+
type: 'options',
|
|
379
|
+
options: [
|
|
380
|
+
{ name: 'Image', value: 'image' },
|
|
381
|
+
{ name: 'Video', value: 'video' },
|
|
382
|
+
],
|
|
383
|
+
default: 'image',
|
|
384
|
+
description: 'The type of asset the transformation targets',
|
|
385
|
+
displayOptions: {
|
|
386
|
+
show: { resource: ['transform'], operation: ['customTransformation'] },
|
|
387
|
+
},
|
|
388
|
+
},
|
|
389
|
+
{
|
|
390
|
+
displayName: 'Transformation',
|
|
391
|
+
name: 'customTransformationString',
|
|
392
|
+
type: 'string',
|
|
393
|
+
default: '',
|
|
394
|
+
required: true,
|
|
395
|
+
placeholder: 'c_fill,g_auto,w_400,h_300/f_auto/q_auto',
|
|
396
|
+
description: 'Raw Cloudinary transformation string, used verbatim. Components are separated by "/" and qualifiers within a component by ",".',
|
|
397
|
+
displayOptions: {
|
|
398
|
+
show: { resource: ['transform'], operation: ['customTransformation'] },
|
|
399
|
+
},
|
|
400
|
+
},
|
|
401
|
+
{
|
|
402
|
+
displayName: 'Format',
|
|
403
|
+
name: 'customFormat',
|
|
404
|
+
type: 'string',
|
|
405
|
+
default: '',
|
|
406
|
+
placeholder: 'jpg',
|
|
407
|
+
description: 'Optional delivery format (file extension), without the leading dot',
|
|
408
|
+
displayOptions: {
|
|
409
|
+
show: { resource: ['transform'], operation: ['customTransformation'] },
|
|
410
|
+
},
|
|
411
|
+
},
|
|
412
|
+
{
|
|
413
|
+
displayName: 'Resource Type',
|
|
414
|
+
name: 'multiStepResourceType',
|
|
415
|
+
type: 'options',
|
|
416
|
+
options: [
|
|
417
|
+
{ name: 'Image', value: 'image' },
|
|
418
|
+
{ name: 'Video', value: 'video' },
|
|
419
|
+
],
|
|
420
|
+
default: 'image',
|
|
421
|
+
description: 'The type of asset the steps target. Determines the URL path and whether Optimize emits f_auto or f_auto:video.',
|
|
422
|
+
displayOptions: {
|
|
423
|
+
show: { resource: ['transform'], operation: ['combineTransformations'] },
|
|
424
|
+
},
|
|
425
|
+
},
|
|
426
|
+
{
|
|
427
|
+
displayName: 'Steps',
|
|
428
|
+
name: 'transformSteps',
|
|
429
|
+
type: 'fixedCollection',
|
|
430
|
+
placeholder: 'Add Step',
|
|
431
|
+
typeOptions: { multipleValues: true, sortable: true },
|
|
432
|
+
default: {},
|
|
433
|
+
description: 'Transformation steps applied in order. Each step becomes one chained Cloudinary component (drag to reorder).',
|
|
434
|
+
displayOptions: {
|
|
435
|
+
show: { resource: ['transform'], operation: ['combineTransformations'] },
|
|
436
|
+
},
|
|
437
|
+
options: [
|
|
438
|
+
{
|
|
439
|
+
displayName: 'Step',
|
|
440
|
+
name: 'step',
|
|
441
|
+
values: [
|
|
442
|
+
{
|
|
443
|
+
displayName: 'Action',
|
|
444
|
+
name: 'stepType',
|
|
445
|
+
type: 'options',
|
|
446
|
+
options: [
|
|
447
|
+
{
|
|
448
|
+
name: 'Convert Format',
|
|
449
|
+
value: 'convert',
|
|
450
|
+
description: 'Set the delivery format (f_<fmt>\t+\textension)',
|
|
451
|
+
},
|
|
452
|
+
{
|
|
453
|
+
name: 'Crop',
|
|
454
|
+
value: 'crop',
|
|
455
|
+
description: 'Crop to dimensions or an aspect ratio (c_fill)',
|
|
456
|
+
},
|
|
457
|
+
{
|
|
458
|
+
name: 'Optimize',
|
|
459
|
+
value: 'optimize',
|
|
460
|
+
description: 'Auto format + quality (f_auto[:video ],q_auto)',
|
|
461
|
+
},
|
|
462
|
+
{
|
|
463
|
+
name: 'Raw Component',
|
|
464
|
+
value: 'raw',
|
|
465
|
+
description: 'A verbatim transformation component',
|
|
466
|
+
},
|
|
467
|
+
{
|
|
468
|
+
name: 'Resize',
|
|
469
|
+
value: 'resize',
|
|
470
|
+
description: 'Resize to a width and/or height (c_<fit>)',
|
|
471
|
+
},
|
|
472
|
+
{
|
|
473
|
+
name: 'Trim (Video)',
|
|
474
|
+
value: 'trim',
|
|
475
|
+
description: 'Trim by start/end/duration (so_/eo_/du_)',
|
|
476
|
+
},
|
|
477
|
+
],
|
|
478
|
+
default: 'optimize',
|
|
479
|
+
description: 'The transformation this step applies',
|
|
480
|
+
},
|
|
481
|
+
{
|
|
482
|
+
displayName: 'Aspect Ratio',
|
|
483
|
+
name: 'aspectRatio',
|
|
484
|
+
type: 'string',
|
|
485
|
+
default: '',
|
|
486
|
+
placeholder: '9:16',
|
|
487
|
+
description: 'Aspect ratio as width:height (e.g. 9:16) or a decimal (e.g. 1.5).',
|
|
488
|
+
displayOptions: {
|
|
489
|
+
show: { stepType: ['crop'], cropMode: ['aspectRatio'] },
|
|
490
|
+
},
|
|
491
|
+
},
|
|
492
|
+
{
|
|
493
|
+
displayName: 'Background Color',
|
|
494
|
+
name: 'padBackgroundColor',
|
|
495
|
+
type: 'color',
|
|
496
|
+
default: '',
|
|
497
|
+
placeholder: '#ffffff or white',
|
|
498
|
+
description: 'A named color (e.g. white) or a hex value (e.g. #ffffff). Hex is encoded as b_rgb:.',
|
|
499
|
+
displayOptions: {
|
|
500
|
+
show: { stepType: ['resize'], fit: ['pad', 'lpad', 'mpad'], padBackground: ['color'] },
|
|
501
|
+
},
|
|
502
|
+
},
|
|
503
|
+
{
|
|
504
|
+
displayName: 'Component',
|
|
505
|
+
name: 'raw',
|
|
506
|
+
type: 'string',
|
|
507
|
+
default: '',
|
|
508
|
+
placeholder: 'e_grayscale',
|
|
509
|
+
description: 'A raw Cloudinary transformation component, used verbatim (qualifiers separated by commas)',
|
|
510
|
+
displayOptions: {
|
|
511
|
+
show: { stepType: ['raw'] },
|
|
512
|
+
},
|
|
513
|
+
},
|
|
514
|
+
{
|
|
515
|
+
displayName: 'Crop By',
|
|
516
|
+
name: 'cropMode',
|
|
517
|
+
type: 'options',
|
|
518
|
+
options: [
|
|
519
|
+
{
|
|
520
|
+
name: 'Dimensions',
|
|
521
|
+
value: 'dimensions',
|
|
522
|
+
},
|
|
523
|
+
{
|
|
524
|
+
name: 'Aspect Ratio',
|
|
525
|
+
value: 'aspectRatio',
|
|
526
|
+
},
|
|
527
|
+
],
|
|
528
|
+
default: 'dimensions',
|
|
529
|
+
displayOptions: {
|
|
530
|
+
show: { stepType: ['crop'] },
|
|
531
|
+
},
|
|
532
|
+
},
|
|
533
|
+
{
|
|
534
|
+
displayName: 'Duration',
|
|
535
|
+
name: 'duration',
|
|
536
|
+
type: 'string',
|
|
537
|
+
default: '',
|
|
538
|
+
placeholder: '10',
|
|
539
|
+
description: 'Clip duration in seconds (du_)',
|
|
540
|
+
displayOptions: {
|
|
541
|
+
show: { stepType: ['trim'] },
|
|
542
|
+
},
|
|
543
|
+
},
|
|
544
|
+
{
|
|
545
|
+
displayName: 'End Offset',
|
|
546
|
+
name: 'end',
|
|
547
|
+
type: 'string',
|
|
548
|
+
default: '',
|
|
549
|
+
placeholder: '15',
|
|
550
|
+
description: 'End time in seconds (eo_)',
|
|
551
|
+
displayOptions: {
|
|
552
|
+
show: { stepType: ['trim'] },
|
|
553
|
+
},
|
|
554
|
+
},
|
|
555
|
+
{
|
|
556
|
+
displayName: 'Fit',
|
|
557
|
+
name: 'fit',
|
|
558
|
+
type: 'options',
|
|
559
|
+
options: [
|
|
560
|
+
{
|
|
561
|
+
name: 'Limit (Never Upscale)',
|
|
562
|
+
value: 'limit',
|
|
563
|
+
},
|
|
564
|
+
{
|
|
565
|
+
name: 'Fit (Fit Within)',
|
|
566
|
+
value: 'fit',
|
|
567
|
+
},
|
|
568
|
+
{
|
|
569
|
+
name: 'Pad (Letterbox)',
|
|
570
|
+
value: 'pad',
|
|
571
|
+
},
|
|
572
|
+
{
|
|
573
|
+
name: 'Pad - Limit (Never Upscale)',
|
|
574
|
+
value: 'lpad',
|
|
575
|
+
},
|
|
576
|
+
{
|
|
577
|
+
name: 'Pad - Minimum',
|
|
578
|
+
value: 'mpad',
|
|
579
|
+
},
|
|
580
|
+
{
|
|
581
|
+
name: 'Scale (Exact)',
|
|
582
|
+
value: 'scale',
|
|
583
|
+
},
|
|
584
|
+
],
|
|
585
|
+
default: 'limit',
|
|
586
|
+
description: 'How the asset is fitted to the requested dimensions. Pad modes keep the whole asset and fill the surrounding space (set both width and height).',
|
|
587
|
+
displayOptions: {
|
|
588
|
+
show: { stepType: ['resize'] },
|
|
589
|
+
},
|
|
590
|
+
},
|
|
591
|
+
{
|
|
592
|
+
displayName: 'Focus',
|
|
593
|
+
name: 'focus',
|
|
594
|
+
type: 'options',
|
|
595
|
+
options: [
|
|
596
|
+
{
|
|
597
|
+
name: 'Auto (Smart)',
|
|
598
|
+
value: 'auto',
|
|
599
|
+
},
|
|
600
|
+
{
|
|
601
|
+
name: 'Face',
|
|
602
|
+
value: 'face',
|
|
603
|
+
},
|
|
604
|
+
{
|
|
605
|
+
name: 'Center',
|
|
606
|
+
value: 'center',
|
|
607
|
+
},
|
|
608
|
+
],
|
|
609
|
+
default: 'auto',
|
|
610
|
+
description: 'Which region to keep when cropping (g_)',
|
|
611
|
+
displayOptions: {
|
|
612
|
+
show: { stepType: ['crop'] },
|
|
613
|
+
},
|
|
614
|
+
},
|
|
615
|
+
{
|
|
616
|
+
displayName: 'Height',
|
|
617
|
+
name: 'height',
|
|
618
|
+
type: 'number',
|
|
619
|
+
default: 0,
|
|
620
|
+
description: 'Target height in pixels. Leave 0 to size by width only.',
|
|
621
|
+
displayOptions: {
|
|
622
|
+
show: { stepType: ['resize'] },
|
|
623
|
+
},
|
|
624
|
+
},
|
|
625
|
+
{
|
|
626
|
+
displayName: 'Height',
|
|
627
|
+
name: 'cropHeight',
|
|
628
|
+
type: 'number',
|
|
629
|
+
default: 0,
|
|
630
|
+
description: 'Target height in pixels',
|
|
631
|
+
displayOptions: {
|
|
632
|
+
show: { stepType: ['crop'], cropMode: ['dimensions'] },
|
|
633
|
+
},
|
|
634
|
+
},
|
|
635
|
+
{
|
|
636
|
+
displayName: 'Pad Background',
|
|
637
|
+
name: 'padBackground',
|
|
638
|
+
type: 'options',
|
|
639
|
+
options: [
|
|
640
|
+
{ name: 'Black (Default)', value: '' },
|
|
641
|
+
{ name: 'Auto (Predominant Color)', value: 'auto' },
|
|
642
|
+
{ name: 'Blurred', value: 'blurred' },
|
|
643
|
+
{ name: 'Solid Color', value: 'color' },
|
|
644
|
+
],
|
|
645
|
+
default: '',
|
|
646
|
+
description: 'Color to fill the padded area. Applies only to the Pad fit modes.',
|
|
647
|
+
displayOptions: {
|
|
648
|
+
show: { stepType: ['resize'], fit: ['pad', 'lpad', 'mpad'] },
|
|
649
|
+
},
|
|
650
|
+
},
|
|
651
|
+
{
|
|
652
|
+
displayName: 'Quality',
|
|
653
|
+
name: 'quality',
|
|
654
|
+
type: 'options',
|
|
655
|
+
options: QUALITY_OPTIONS,
|
|
656
|
+
default: 'auto',
|
|
657
|
+
description: 'Automatic quality level (q_auto[:level])',
|
|
658
|
+
displayOptions: {
|
|
659
|
+
show: { stepType: ['optimize'] },
|
|
660
|
+
},
|
|
661
|
+
},
|
|
662
|
+
{
|
|
663
|
+
displayName: 'Start Offset',
|
|
664
|
+
name: 'start',
|
|
665
|
+
type: 'string',
|
|
666
|
+
default: '',
|
|
667
|
+
placeholder: '0',
|
|
668
|
+
description: 'Start time in seconds (so_)',
|
|
669
|
+
displayOptions: {
|
|
670
|
+
show: { stepType: ['trim'] },
|
|
671
|
+
},
|
|
672
|
+
},
|
|
673
|
+
{
|
|
674
|
+
displayName: 'Target Format',
|
|
675
|
+
name: 'format',
|
|
676
|
+
type: 'string',
|
|
677
|
+
default: '',
|
|
678
|
+
placeholder: 'webp',
|
|
679
|
+
description: 'Delivery format (file extension), without the leading dot',
|
|
680
|
+
displayOptions: {
|
|
681
|
+
show: { stepType: ['convert'] },
|
|
682
|
+
},
|
|
683
|
+
},
|
|
684
|
+
{
|
|
685
|
+
displayName: 'Width',
|
|
686
|
+
name: 'width',
|
|
687
|
+
type: 'number',
|
|
688
|
+
default: 0,
|
|
689
|
+
description: 'Target width in pixels. Leave 0 to size by height only.',
|
|
690
|
+
displayOptions: {
|
|
691
|
+
show: { stepType: ['resize'] },
|
|
692
|
+
},
|
|
693
|
+
},
|
|
694
|
+
{
|
|
695
|
+
displayName: 'Width',
|
|
696
|
+
name: 'cropWidth',
|
|
697
|
+
type: 'number',
|
|
698
|
+
default: 0,
|
|
699
|
+
description: 'Target width in pixels',
|
|
700
|
+
displayOptions: {
|
|
701
|
+
show: { stepType: ['crop'], cropMode: ['dimensions'] },
|
|
702
|
+
},
|
|
703
|
+
},
|
|
704
|
+
{
|
|
705
|
+
displayName: 'Width',
|
|
706
|
+
name: 'cropAspectWidth',
|
|
707
|
+
type: 'number',
|
|
708
|
+
default: 0,
|
|
709
|
+
description: 'Optional target width in pixels; height is derived from the aspect ratio',
|
|
710
|
+
displayOptions: {
|
|
711
|
+
show: { stepType: ['crop'], cropMode: ['aspectRatio'] },
|
|
712
|
+
},
|
|
713
|
+
},
|
|
714
|
+
],
|
|
715
|
+
},
|
|
716
|
+
],
|
|
717
|
+
},
|
|
718
|
+
{
|
|
719
|
+
displayName: 'Additional Options',
|
|
720
|
+
name: 'transformAdditionalOptions',
|
|
721
|
+
type: 'collection',
|
|
722
|
+
placeholder: 'Add Option',
|
|
723
|
+
default: {},
|
|
724
|
+
displayOptions: {
|
|
725
|
+
show: {
|
|
726
|
+
resource: ['transform'],
|
|
727
|
+
operation: DELIVERY_URL_OPS,
|
|
728
|
+
},
|
|
729
|
+
},
|
|
730
|
+
options: [
|
|
731
|
+
{
|
|
732
|
+
displayName: 'Version',
|
|
733
|
+
name: 'version',
|
|
734
|
+
type: 'string',
|
|
735
|
+
default: '',
|
|
736
|
+
placeholder: '1234567890',
|
|
737
|
+
description: 'Asset version, emitted as a v<version> segment to bust CDN caches',
|
|
738
|
+
},
|
|
739
|
+
],
|
|
740
|
+
},
|
|
741
|
+
];
|
|
742
|
+
//# sourceMappingURL=transform.fields.js.map
|