filestack-js
Version:
Official JavaScript library for Filestack
1,333 lines (1,332 loc) • 113 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.TransformSchema = void 0;
/*
* Copyright (c) 2018 by Filestack.
* Some rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
exports.TransformSchema = {
'$schema': 'http://json-schema.org/draft-07/schema#',
title: 'Filestack Transformations',
description: 'Filestack transformations parameters',
type: 'object',
additionalProperties: false,
properties: {
flip: {
type: 'boolean',
additionalProperties: false,
},
auto_image: {
type: 'boolean',
additionalProperties: false,
},
no_metadata: {
type: 'boolean',
additionalProperties: false,
},
compress: {
additionalProperties: false,
oneOf: [{
type: 'boolean',
}, {
type: 'object',
properties: {
metadata: {
type: 'boolean',
default: false,
},
},
}],
},
flop: {
type: 'boolean',
additionalProperties: false,
},
enhance: {
default: true,
oneOf: [{
type: 'boolean',
}, {
type: 'object',
additionalProperties: false,
properties: {
preset: {
type: 'string',
enum: ['auto', 'vivid', 'beautify', 'beautify_plus', 'fix_dark', 'fix_noise', 'fix_tint', 'outdoor', 'fireworks'],
},
},
}],
},
redeye: {
type: 'boolean',
additionalProperties: false,
},
monochrome: {
type: 'boolean',
additionalProperties: false,
},
negative: {
type: 'boolean',
additionalProperties: false,
},
tags: {
type: 'boolean',
additionalProperties: false,
},
sfw: {
type: 'boolean',
additionalProperties: false,
},
imagesize: {
type: 'boolean',
additionalProperties: false,
},
smart_crop: {
width: {
type: 'integer',
minimum: 0,
maximum: 10000,
},
height: {
type: 'integer',
minimum: 0,
maximum: 10000,
},
mode: {
type: 'string',
default: 'auto',
enum: ['face', 'auto'],
},
},
animate: {
type: 'object',
properties: {
delay: {
type: 'integer',
minimum: 0,
maximum: 10000,
default: 1000,
},
loop: {
type: 'integer',
minimum: 0,
maximum: 1000,
default: 0,
},
width: {
type: 'integer',
minimum: 1,
maximum: 1800,
},
height: {
type: 'integer',
minimum: 1,
maximum: 1800,
},
fit: {
type: 'string',
default: 'clip',
enum: ['clip', 'scale', 'crop'],
},
background: {
'$ref': 'colorDef',
default: 'transparent',
},
align: {
'$ref': 'positionDef',
default: 'center',
},
},
},
metadata: {
type: 'object',
params: {
type: 'array',
items: {
type: 'string',
enum: [
'filename',
'mimetype',
'size',
'width',
'height',
'writeable',
'path',
'container',
'cloud',
'exif',
'source_url',
'md5',
'sha256',
'sha1',
'sha512',
],
},
minItems: 0,
uniqueItems: true,
additionalItems: false,
},
additionalProperties: false,
},
resize: {
type: 'object',
properties: {
width: {
type: 'number',
minimum: 0,
maximum: 10000,
},
height: {
type: 'number',
minimum: 0,
maximum: 10000,
},
fit: {
type: 'string',
enum: ['clip', 'crop', 'scale', 'max'],
default: 'clip',
},
align: {
'$ref': 'positionDef',
default: 'center',
},
},
// required: ['width', 'height'],
additionalProperties: false,
anyOf: [
{ required: ['width'] },
{ required: ['height'] },
],
},
crop: {
type: 'object',
properties: {
dim: {
type: 'array',
additionalItems: false,
minItems: 4,
items: [{
type: 'integer',
minimum: 0,
maximum: 100000,
}, {
type: 'integer',
minimum: 0,
maximum: 100000,
}, {
type: 'integer',
minimum: 1,
maximum: 100000,
}, {
type: 'integer',
minimum: 1,
maximum: 100000,
}],
},
},
required: ['dim'],
},
rotate: {
type: 'object',
properties: {
deg: {
oneOf: [{
type: 'string',
enum: ['exif'],
}, {
type: 'number',
minimum: 0,
maximum: 359,
}],
},
exif: {
type: 'boolean',
},
background: {
'$ref': 'colorDef',
default: 'FFFFFFFF',
},
},
additionalProperties: false,
},
detect_faces: {
oneOf: [{
type: 'boolean',
}, {
type: 'object',
properties: {
maxsize: {
type: 'number',
minimum: 0,
maximum: 10000,
default: 0.35,
},
minsize: {
type: 'number',
minimum: 0,
maximum: 10000,
default: 0.35,
},
export: {
type: 'boolean',
},
color: {
'$ref': 'colorDef',
default: '000000FF',
},
},
additionalProperties: false,
}],
},
crop_faces: {
oneOf: [{
type: 'boolean',
}, {
type: 'object',
properties: {
faces: {
default: 1,
'$ref': 'facesDef',
},
width: {
type: 'number',
minimum: 1,
maximum: 10000,
},
height: {
type: 'number',
minimum: 1,
maximum: 10000,
},
maxsize: {
type: 'number',
minimum: 0,
maximum: 10000,
default: 0.35,
},
minsize: {
type: 'number',
minimum: 0,
maximum: 10000,
default: 0.35,
},
buffer: {
type: 'integer',
minimum: 0,
maximum: 10000,
},
mode: {
type: 'string',
enum: ['crop', 'thumb', 'fill'],
default: 'thumb',
},
},
additionalProperties: false,
}],
},
pixelate_faces: {
oneOf: [{
type: 'boolean',
}, {
type: 'object',
properties: {
faces: {
'$ref': 'facesDef',
default: 'all',
},
maxsize: {
type: 'number',
minimum: 0,
maximum: 10000,
default: 0.35,
},
minsize: {
type: 'number',
minimum: 0,
maximum: 10000,
default: 0.35,
},
buffer: {
type: 'integer',
minimum: 0,
maximum: 10000,
},
amount: {
type: 'integer',
minimum: 2,
maximum: 100,
default: 10,
},
blur: {
type: 'number',
minimum: 0,
maximum: 20,
default: 4,
},
type: {
type: 'string',
enum: ['rect', 'oval'],
default: 'rect',
},
},
additionalProperties: false,
}],
},
blur_faces: {
oneOf: [{
type: 'boolean',
}, {
type: 'object',
properties: {
faces: {
'$ref': 'facesDef',
default: 'all',
},
maxsize: {
type: 'number',
minimum: 0,
maximum: 10000,
default: 0.35,
},
minsize: {
type: 'number',
minimum: 0,
maximum: 10000,
default: 0.35,
},
buffer: {
type: 'integer',
minimum: 0,
maximum: 10000,
},
amount: {
type: 'number',
minimum: 0,
maximum: 10,
default: 10,
},
blur: {
type: 'number',
minimum: 0,
maximum: 20,
default: 4,
},
type: {
type: 'string',
enum: ['rect', 'oval'],
default: 'rect',
},
},
additionalProperties: false,
}],
},
rounded_corners: {
oneOf: [{
type: 'boolean',
}, {
type: 'object',
properties: {
radius: {
oneOf: [{
type: 'integer',
minimum: 1,
maximum: 10000,
}, {
type: 'string',
enum: ['max'],
}],
},
blur: {
type: 'number',
minimum: 0,
maximum: 20,
default: 0.3,
},
background: {
'$ref': 'colorDef',
},
},
additionalProperties: false,
}],
},
vignette: {
oneOf: [{
type: 'boolean',
}, {
type: 'object',
properties: {
amount: {
type: 'integer',
minimum: 0,
maximum: 100,
default: 20,
},
blurmode: {
type: 'string',
enum: ['gaussian', 'linear'],
default: 'gaussian',
},
background: {
'$ref': 'colorDef',
},
},
additionalProperties: false,
}],
},
polaroid: {
oneOf: [{
type: 'boolean',
}, {
type: 'object',
properties: {
rotate: {
type: 'integer',
minimum: 0,
maximum: 359,
},
color: {
'$ref': 'colorDef',
default: 'snow',
},
background: {
'$ref': 'colorDef',
},
},
additionalProperties: false,
}],
},
torn_edges: {
oneOf: [{
type: 'boolean',
}, {
type: 'object',
properties: {
spread: {
type: 'array',
additionalItems: false,
minItems: 2,
items: [{
type: 'integer',
minimum: 1,
maximum: 10000,
default: 1,
}, {
type: 'integer',
minimum: 1,
maximum: 10000,
default: 10,
}],
},
background: {
'$ref': 'colorDef',
},
},
additionalProperties: false,
}],
},
shadow: {
oneOf: [{
type: 'boolean',
}, {
type: 'object',
properties: {
blur: {
type: 'number',
minimum: 0,
maximum: 20,
default: 100,
},
opacity: {
type: 'integer',
minimum: 0,
maximum: 100,
default: 60,
},
vector: {
type: 'array',
additionalItems: false,
minItems: 2,
items: [{
type: 'integer',
minimum: -1000,
maximum: 1000,
default: 4,
}, {
type: 'integer',
minimum: -1000,
maximum: 1000,
default: 4,
}],
},
color: {
'$ref': 'colorDef',
},
background: {
'$ref': 'colorDef',
},
},
additionalProperties: false,
}],
},
circle: {
oneOf: [{
type: 'boolean',
}, {
type: 'object',
properties: {
background: {
'$ref': 'colorDef',
},
},
additionalProperties: false,
}],
},
border: {
oneOf: [{
type: 'boolean',
}, {
type: 'object',
properties: {
color: {
'$ref': 'colorDef',
},
background: {
'$ref': 'colorDef',
},
width: {
type: 'integer',
minimum: 0,
maximum: 1000,
},
},
additionalProperties: false,
}],
},
sharpen: {
oneOf: [{
type: 'boolean',
}, {
type: 'object',
properties: {
amount: {
type: 'integer',
minimum: 0,
maximum: 20,
default: 2,
},
},
additionalProperties: false,
}],
},
blur: {
oneOf: [{
type: 'boolean',
}, {
type: 'object',
properties: {
amount: {
type: 'integer',
minimum: 0,
maximum: 20,
default: 2,
},
},
additionalProperties: false,
}],
},
blackwhite: {
oneOf: [{
type: 'boolean',
}, {
type: 'object',
properties: {
threshold: {
type: 'integer',
minimum: 0,
maximum: 100,
default: 50,
},
},
additionalProperties: false,
}],
},
sepia: {
oneOf: [{
type: 'boolean',
}, {
type: 'object',
properties: {
tone: {
type: 'integer',
minimum: 0,
maximum: 100,
default: 80,
},
},
additionalProperties: false,
}],
},
pixelate: {
oneOf: [{
type: 'boolean',
}, {
type: 'object',
properties: {
amount: {
type: 'integer',
minimum: 2,
maximum: 100,
default: 2,
},
},
additionalProperties: false,
}],
},
oil_paint: {
oneOf: [{
type: 'boolean',
}, {
type: 'object',
properties: {
amount: {
type: 'integer',
minimum: 2,
maximum: 100,
default: 2,
},
},
additionalProperties: false,
}],
},
modulate: {
oneOf: [{
type: 'boolean',
}, {
type: 'object',
properties: {
brightness: {
type: 'integer',
minimum: 0,
maximum: 10000,
default: 100,
},
saturation: {
type: 'integer',
minimum: 0,
maximum: 10000,
default: 100,
},
hue: {
type: 'integer',
minimum: 0,
maximum: 359,
default: 0,
},
},
additionalProperties: false,
}],
},
ascii: {
oneOf: [{
type: 'boolean',
}, {
type: 'object',
properties: {
foreground: {
'$ref': 'colorDef',
default: '000000FF',
},
background: {
'$ref': 'colorDef',
default: 'FFFFFFFF',
},
colored: {
type: 'boolean',
default: false,
},
size: {
type: 'integer',
minimum: 10,
maximum: 100,
default: 100,
},
reverse: {
type: 'boolean',
default: false,
},
},
additionalProperties: false,
}],
},
collage: {
type: 'object',
properties: {
files: {
type: 'array',
minItems: 1,
items: [{
type: 'string',
}],
},
margin: {
type: 'integer',
minimum: 1,
maximum: 100,
default: 10,
},
width: {
type: 'integer',
minimum: 0,
maximum: 10000,
},
height: {
type: 'integer',
minimum: 0,
maximum: 10000,
},
color: {
'$ref': 'colorDef',
default: 'FFFFFFFF',
},
fit: {
type: 'string',
enum: ['auto', 'crop'],
},
autorotate: {
type: 'boolean',
default: false,
},
},
required: ['width', 'height', 'files'],
additionalProperties: false,
},
urlscreenshot: {
oneOf: [{
type: 'boolean',
}, {
type: 'object',
properties: {
agent: {
type: 'string',
enum: ['desktop', 'mobile'],
default: 'desktop',
},
width: {
type: 'integer',
minimum: 1,
maximum: 1920,
default: 1024,
},
height: {
type: 'integer',
minimum: 1,
maximum: 8000,
default: 768,
},
mode: {
type: 'string',
enum: ['all', 'window'],
default: 'all',
},
delay: {
type: 'integer',
minimum: 0,
maximum: 20000,
default: 1000,
},
orientation: {
type: 'string',
enum: ['portrait', 'landscape'],
default: 'portrait',
},
device: {
type: 'string',
default: '',
},
},
additionalProperties: false,
}],
},
upscale: {
oneOf: [{
type: 'boolean',
}, {
type: 'object',
properties: {
noise: {
type: 'string',
enum: ['none', 'low', 'medium', 'high'],
default: 'none',
},
upscale: {
type: 'boolean',
default: true,
},
style: {
type: 'string',
enum: ['artwork', 'photo'],
default: 'photo',
},
},
additionalProperties: false,
}],
},
output: {
type: 'object',
additionalProperties: false,
properties: {
format: {
type: 'string',
enum: ['doc', 'docx', 'html', 'jpg', 'odp', 'ods', 'odt', 'pjpg', 'pdf', 'png', 'ppt', 'pptx', 'svg', 'txt', 'webp', 'xls', 'xlsx'],
},
page: {
type: 'integer',
minimum: 1,
maximum: 99999,
},
density: {
type: 'integer',
minimum: 1,
maximum: 500,
},
compress: {
type: 'boolean',
},
quality: {
oneOf: [{
type: 'string',
enum: ['input'],
}, {
type: 'integer',
minimum: 1,
maximum: 100,
default: 95,
}],
},
secure: {
type: 'boolean',
default: false,
},
docinfo: {
type: 'boolean',
default: false,
},
strip: {
type: 'boolean',
default: false,
},
colorspace: {
type: 'string',
enum: ['rgb', 'cmyk', 'input'],
default: 'rgb',
},
background: {
'$ref': 'colorDef',
},
pageformat: {
type: 'string',
enum: ['a2', 'a3', 'a4', 'a5', 'b4', 'b5', 'letter', 'legal', 'tabloid'],
},
pageorientation: {
type: 'string',
enum: ['landscape', 'portrait'],
},
},
},
pjpg: {
oneOf: [{
type: 'boolean',
}, {
type: 'object',
additionalProperties: false,
properties: {
quality: {
type: 'integer',
minimum: 0,
maximum: 100,
},
metadata: {
type: 'boolean',
default: false,
},
},
}],
},
quality: {
type: 'object',
additionalProperties: false,
properties: {
value: {
type: 'integer',
minimum: 1,
maximum: 100,
},
},
},
cache: {
oneOf: [{
type: 'boolean',
}, {
type: 'object',
properties: {
expiry: {
type: 'integer',
},
},
}],
},
video_convert: {
type: 'object',
additionalProperties: false,
properties: {
width: {
type: 'integer',
minimum: 1,
maximum: 4096,
},
height: {
type: 'integer',
minimum: 1,
maximum: 4096,
},
preset: {
type: 'string',
},
force: {
type: 'boolean',
},
title: {
type: 'string',
},
extname: {
type: 'string',
},
upscale: {
type: 'boolean',
},
aspect_mode: {
type: 'string',
enum: ['letterbox', 'pad', 'crop', 'preserve', 'constrain'],
default: 'letterbox',
},
audio_sample_rate: {
type: 'integer',
minimum: 1,
maximum: 99999,
},
two_pass: {
type: 'boolean',
},
video_bitrate: {
type: 'integer',
minimum: 1,
maximum: 5000,
},
fps: {
type: 'integer',
minimum: 1,
maximum: 300,
},
keyframe_interval: {
type: 'integer',
minimum: 250,
maximum: 250,
},
audio_bitrate: {
type: 'integer',
minimum: 1,
maximum: 999,
},
audio_codec: {
type: 'string',
},
audio_channels: {
type: 'integer',
minimum: 1,
maximum: 12,
},
clip_length: {
type: 'string',
pattern: "^([0-1]?\\d|2[0-3])(?::([0-5]?\\d))?(?::([0-5]?\\d))?$",
},
clip_offset: {
type: 'string',
pattern: "^([0-1]?\\d|2[0-3])(?::([0-5]?\\d))?(?::([0-5]?\\d))?$",
},
watermark_url: {
type: 'string',
},
watermark_top: {
type: 'integer',
minimum: 0,
maximum: 9999,
},
watermark_right: {
type: 'integer',
minimum: 0,
maximum: 9999,
},
watermark_bottom: {
type: 'integer',
minimum: 0,
maximum: 9999,
},
watermark_left: {
type: 'integer',
minimum: 0,
maximum: 9999,
},
frame_count: {
type: 'integer',
minimum: 1,
maximum: 1,
default: 1,
},
filename: {
type: 'string',
},
location: {
'$ref': 'locationsDef',
},
path: {
type: 'string',
},
container: {
type: 'string',
},
access: {
type: 'string',
enum: ['public', 'private'],
default: 'public',
},
},
},
store: {
oneOf: [{
type: 'boolean',
}, {
type: 'object',
additionalProperties: false,
properties: {
filename: {
type: 'string',
},
location: {
'$ref': 'locationsDef',
},
path: {
type: 'string',
},
container: {
type: 'string',
},
region: {
'$ref': 'regionsDef',
},
access: {
type: 'string',
enum: ['public', 'private'],
default: 'private',
},
base64decode: {
type: 'boolean',
},
workflows: {
'$ref': 'workflowsDef',
},
},
}],
},
watermark: {
type: 'object',
properties: {
file: {
type: 'string',
},
size: {
type: 'number',
minimum: 0,
maximum: 500,
},
position: {
'$ref': 'positionDef',
},
},
required: [
'file',
],
additionalProperties: false,
},
partial_blur: {
type: 'object',
properties: {
objects: {
'$ref': 'objectsDef',
},
amount: {
type: 'number',
minimum: 0,
maximum: 20,
},
blur: {
type: 'number',
minimum: 0,
maximum: 20,
},
type: {
type: 'string',
enum: ['rect', 'oval'],
},
},
required: ['objects'],
},
partial_pixelate: {
type: 'object',
properties: {
objects: {
'$ref': 'objectsDef',
},
amount: {
type: 'number',
minimum: 2,
maximum: 100,
},
blur: {
type: 'number',
minimum: 0,
maximum: 20,
},
type: {
type: 'string',
enum: ['rect', 'oval'],
},
},
required: ['objects'],
},
security: {
type: 'object',
additionalProperties: false,
properties: {
policy: {
type: 'string',
},
signature: {
type: 'string',
},
},
required: ['policy', 'signature'],
},
pdfinfo: {
oneOf: [{
type: 'boolean',
}, {
type: 'object',
properties: {
colorinfo: {
type: 'boolean',
},
},
}],
},
pdfconvert: {
type: 'object',
additionalProperties: false,
properties: {
pageorientation: {
type: 'string',
enum: ['portrait', 'landscape'],
},
pageformat: {
'$ref': 'pageFormatDef',
},
pages: {
'$ref': 'pageRangeDef',
},
},
anyOf: [{
required: ['pageorientation'],
}, {
required: ['pageformat'],
}, {
required: ['pages'],
}],
},
fallback: {
type: 'object',
additionalProperties: false,
properties: {
handle: {
type: 'string',
},
cache: {
type: 'integer',
minimum: 1,
maximum: 31536000,
},
},
required: ['handle'],
},
zip: {
type: 'string',
},
minify_css: {
type: 'object',
additionalProperties: false,
properties: {
gzip: {
type: 'boolean',
},
level: {
type: 'number',
enum: [1, 2],
},
},
},
minify_js: {
type: 'object',
additionalProperties: false,
properties: {
gzip: {
type: 'boolean',
},
use_babel_polyfill: {
type: 'boolean',
},
keep_fn_name: {
type: 'boolean',
},
keep_class_name: {
type: 'boolean',
},
mangle: {
type: 'boolean',
},
merge_vars: {
type: 'boolean',
},
remove_console: {
type: 'boolean',
},
remove_undefined: {
type: 'boolean',
},
targets: {
type: 'string',
},
},
},
},
};
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY2hlbWEvdHJhbnNmb3Jtcy5zY2hlbWEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBQ1UsUUFBQSxlQUFlLEdBQUc7SUFDN0IsU0FBUyxFQUFFLHlDQUF5QztJQUNwRCxLQUFLLEVBQUUsMkJBQTJCO0lBQ2xDLFdBQVcsRUFBRSxzQ0FBc0M7SUFDbkQsSUFBSSxFQUFFLFFBQVE7SUFDZCxvQkFBb0IsRUFBRSxLQUFLO0lBQzNCLFVBQVUsRUFBRTtRQUNWLElBQUksRUFBRTtZQUNKLElBQUksRUFBRSxTQUFTO1lBQ2Ysb0JBQW9CLEVBQUUsS0FBSztTQUM1QjtRQUNELFVBQVUsRUFBRTtZQUNWLElBQUksRUFBRSxTQUFTO1lBQ2Ysb0JBQW9CLEVBQUUsS0FBSztTQUM1QjtRQUNELFdBQVcsRUFBRTtZQUNYLElBQUksRUFBRSxTQUFTO1lBQ2Ysb0JBQW9CLEVBQUUsS0FBSztTQUM1QjtRQUNELFFBQVEsRUFBRTtZQUNSLG9CQUFvQixFQUFFLEtBQUs7WUFDM0IsS0FBSyxFQUFFLENBQUM7b0JBQ04sSUFBSSxFQUFFLFNBQVM7aUJBQ2hCLEVBQUU7b0JBQ0QsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsVUFBVSxFQUFFO3dCQUNWLFFBQVEsRUFBRTs0QkFDUixJQUFJLEVBQUUsU0FBUzs0QkFDZixPQUFPLEVBQUUsS0FBSzt5QkFDZjtxQkFDRjtpQkFDRixDQUFDO1NBQ0g7UUFDRCxJQUFJLEVBQUU7WUFDSixJQUFJLEVBQUUsU0FBUztZQUNmLG9CQUFvQixFQUFFLEtBQUs7U0FDNUI7UUFDRCxPQUFPLEVBQUU7WUFDUCxPQUFPLEVBQUUsSUFBSTtZQUNiLEtBQUssRUFBRSxDQUFDO29CQUNOLElBQUksRUFBRSxTQUFTO2lCQUNoQixFQUFFO29CQUNELElBQUksRUFBRSxRQUFRO29CQUNkLG9CQUFvQixFQUFFLEtBQUs7b0JBQzNCLFVBQVUsRUFBRTt3QkFDVixNQUFNLEVBQUU7NEJBQ04s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