filestack-js
Version:
Official JavaScript library for Filestack
529 lines (528 loc) • 79.9 kB
JavaScript
"use strict";
/*
* Copyright (c) 2019 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.
*/
Object.defineProperty(exports, "__esModule", { value: true });
var tslib_1 = require("tslib");
var filelink_1 = require("./filelink");
var transforms_schema_1 = require("./../schema/transforms.schema");
var validator = tslib_1.__importStar(require("../schema/validator"));
var defaultSource = '5aYkEQJSQCmYShsoCnZN';
var defaultApikey = 'DEFAULT_API_KEY';
describe('filelink', function () {
beforeAll(function () {
jest.spyOn(validator, 'getValidator').mockImplementation();
});
it('should properly instantiate Filelink', function () {
var filelink = new filelink_1.Filelink(defaultSource);
expect(filelink).toBeDefined();
expect(filelink).toBeInstanceOf(filelink_1.Filelink);
});
it('should throw an error when handle is invalid', function () {
var source = '*/5aYkEQJSQCmYShsoCnZN';
expect(function () {
var f = new filelink_1.Filelink(source);
}).toThrow('Invalid filestack source provided');
});
it('should support workflows source', function () {
var source = 'wf://975092d5-2eb3-460e-aca8-e7b00a0838d5/2ec47319-24c8-4ced-9ae3-10a6d450a736/1c04a766e53633f1256759f2d06a50a3';
expect(function () {
var f = new filelink_1.Filelink(source);
}).not.toThrow();
});
it('should throw an error when external handle and without apikey', function () {
var source = 'src://test123/example.jpg';
expect(function () {
var filelink = new filelink_1.Filelink(source);
}).toThrow('External sources requires apikey to handle transforms');
});
it('should throw an error when handle is invalid', function () {
var source = '*/5aYkEQJSQCmYShsoCnZN';
expect(function () {
var f = new filelink_1.Filelink(source);
}).toThrow('Invalid filestack source provided');
});
it('should throw an error when external handle and without apikey', function () {
var source = 'src://test123/example.jpg';
expect(function () {
var filelink = new filelink_1.Filelink(source);
}).toThrow('External sources requires apikey to handle transforms');
});
it('should be able to convert filelink to string', function () {
var filelink = new filelink_1.Filelink(defaultSource);
var result = filelink.toString();
expect(result).toBe('https://cdn.filestackcontent.com/5aYkEQJSQCmYShsoCnZN');
});
it('should allow to set validator status with toString method', function () {
var filelink = new filelink_1.Filelink(defaultSource);
filelink.setUseValidator(false);
expect(filelink
.resize({
// @ts-ignore
t: 1,
})
.toString()).toEqual('https://cdn.filestackcontent.com/resize=t:1/5aYkEQJSQCmYShsoCnZN');
});
it('should allow to set validator status with getTransformations method', function () {
var filelink = new filelink_1.Filelink(defaultSource);
filelink.setUseValidator(false);
filelink.resize({
// @ts-ignore
t: 1,
});
expect(filelink.getTransformations()).toEqual([
{
name: 'resize',
params: { t: 1 },
},
]);
});
it('should create filelink with apikey when is provided', function () {
var filelink = new filelink_1.Filelink(defaultSource, defaultApikey);
var result = filelink.toString();
expect(result).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to use many tasks at once and reset them', function () {
var filelink = new filelink_1.Filelink(defaultSource);
var resizeParams = {
width: 200,
};
var rotateParams = {
deg: 90,
};
filelink
.resize(resizeParams)
.rotate(rotateParams)
.crop({
dim: [20, 20, 250, 250],
});
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/resize=width:200/rotate=deg:90/crop=dim:[20,20,250,250]/5aYkEQJSQCmYShsoCnZN');
filelink.reset();
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to get transformations', function () {
var filelink = new filelink_1.Filelink(defaultSource);
var resizeParams = {
width: 200,
};
var rotateParams = {
deg: 90,
};
filelink
.resize(resizeParams)
.rotate(rotateParams)
.crop({
dim: [20, 20, 250, 250],
});
var expected = [
{ name: 'resize', params: { width: 200 } },
{ name: 'rotate', params: { deg: 90 } },
{ name: 'crop', params: { dim: [20, 20, 250, 250] } },
];
expect(filelink.getTransformations()).toEqual(expected);
});
it('should be able to getValidationSchema', function () {
var filelink = new filelink_1.Filelink(defaultSource);
var result = filelink.getValidationSchema();
expect(result).toEqual(transforms_schema_1.TransformSchema);
});
it('should not require apikay on filestack external url', function () {
var filelink = new filelink_1.Filelink('https://cdn.filestackcontent.com/5aYkEQJSQCmYShsoCnZN');
filelink.shadow(false).upscale();
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/upscale/"https://cdn.filestackcontent.com/5aYkEQJSQCmYShsoCnZN"');
});
it('should be able to disable selected task', function () {
var filelink = new filelink_1.Filelink(defaultSource);
filelink.shadow(false).upscale();
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/upscale/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to create filelink for many handles', function () {
var sourceArr = ['5aYkEQJSQCmYShsoCnZN', '4aYkEQJSQCmYShsoCnZN'];
var filelink = new filelink_1.Filelink(sourceArr);
expect(filelink.toString()).toEqual('https://cdn.filestackcontent.com/[5aYkEQJSQCmYShsoCnZN,4aYkEQJSQCmYShsoCnZN]');
filelink.setBase64(true);
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/b64://WzVhWWtFUUpTUUNtWVNoc29DblpOLDRhWWtFUUpTUUNtWVNoc29DblpOXQ==');
});
it('should be able to create filelink for many src handles', function () {
var sourceArr = ['src://test123/example.jpg', 'src://test123/flug_9-trans_atlantik-400dpi.jpg'];
var filelink = new filelink_1.Filelink(sourceArr, defaultApikey);
expect(filelink.toString()).toEqual('https://cdn.filestackcontent.com/DEFAULT_API_KEY/["src://test123/example.jpg","src://test123/flug_9-trans_atlantik-400dpi.jpg"]');
});
it('should throw an error if task params are not valid', function () {
var filelink = new filelink_1.Filelink(defaultSource);
expect(function () {
// @ts-ignore
filelink.resize({ r: 2 }).toString();
}).toThrow('Params validation error');
});
it('should omit transformations with empty options', function () {
var filelink = new filelink_1.Filelink(defaultSource);
filelink.upscale(false);
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/5aYkEQJSQCmYShsoCnZN');
});
it('should throw an error if source does not exists', function () {
expect(function () {
return new filelink_1.Filelink('');
}).toThrow('Source not Set');
});
it('should be able to use custom cname', function () {
var filelinkCname = new filelink_1.Filelink(defaultSource, defaultApikey);
var cname = 'newcname.com';
filelinkCname.setCname(cname);
expect(filelinkCname.toString()).toBe('https://cdn.newcname.com/DEFAULT_API_KEY/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to use custom domain', function () {
var filelinkCustomDomain = new filelink_1.Filelink(defaultSource, defaultApikey);
var customDomain = 'https://customDomain.com';
filelinkCustomDomain.setCustomDomain(customDomain);
expect(filelinkCustomDomain.toString()).toBe('https://customDomain.com/DEFAULT_API_KEY/5aYkEQJSQCmYShsoCnZN');
});
});
describe('Different tasks', function () {
var filelink;
beforeEach(function () {
filelink = new filelink_1.Filelink(defaultSource, defaultApikey);
});
afterEach(function () {
filelink = null;
});
it('should be able to create filelink when handle is base64', function () {
filelink.upscale();
filelink.setBase64(true);
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/b64/W3sibmFtZSI6InVwc2NhbGUifV0=/b64://NWFZa0VRSlNRQ21ZU2hzb0NuWk4=');
});
it('should be able to autoImage transformation', function () {
filelink.autoImage();
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/auto_image/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to add flip', function () {
filelink.flip();
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/flip/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to add flop', function () {
filelink.flop();
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/flop/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to add imagesize', function () {
filelink.imagesize();
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/imagesize/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to add no_metadata', function () {
filelink.noMetadata();
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/no_metadata/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to add pjpg', function () {
var params = {
quality: 50,
metadata: false,
};
filelink.pjpg(params);
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/pjpg=quality:50,metadata:false/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to add smart_crop', function () {
var params = {
mode: filelink_1.SmartCropMode.auto,
width: 1000,
height: 1000,
};
filelink.smartCrop(params);
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/smart_crop=mode:auto,width:1000,height:1000/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to add watermark', function () {
var params = {
file: 'http://welcome-swiss.com/wp-content/uploads/2015/12/Swiss-landscape.jpg',
size: 20,
position: filelink_1.ImageWatermarkPosition.top,
};
filelink.watermark(params);
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/watermark=file:\"http://welcome-swiss.com/wp-content/uploads/2015/12/Swiss-landscape.jpg\",size:20,position:top/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to enhance', function () {
filelink.enhance();
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/enhance/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to redeye', function () {
filelink.redeye();
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/redeye/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to monochrome', function () {
filelink.monochrome();
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/monochrome/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to negative', function () {
filelink.negative();
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/negative/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to process tags', function () {
filelink.tags();
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/tags/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to sfw', function () {
filelink.sfw();
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/sfw/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to store', function () {
var storeParams = {};
filelink.store(storeParams);
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/store/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to disable cache', function () {
filelink.cache(false);
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/cache=false/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to set cache params', function () {
var cacheParams = {
expiry: 666,
};
filelink.cache(cacheParams);
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/cache=expiry:666/5aYkEQJSQCmYShsoCnZN');
});
it('should be able add animation transform', function () {
var params = {
loop: 1,
delay: 10,
width: 10,
height: 10,
fit: filelink_1.FitOptions.scale,
background: 'transparent',
align: [filelink_1.Align.top, filelink_1.Align.center],
};
filelink.animate(params);
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/animate=loop:1,delay:10,width:10,height:10,fit:scale,background:transparent,align:[top,center]/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to resize', function () {
var resizeParams = {
width: 200,
};
filelink.resize(resizeParams);
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/resize=width:200/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to crop', function () {
filelink.crop({
dim: [20, 20, 250, 250],
});
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/crop=dim:[20,20,250,250]/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to rotate', function () {
var rotateParams = {
deg: 90,
};
filelink.rotate(rotateParams);
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/rotate=deg:90/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to detect faces', function () {
filelink.detectFaces({});
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/detect_faces/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to crop faces', function () {
filelink.cropFaces({});
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/crop_faces/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to pixelate faces', function () {
filelink.pixelateFaces({});
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/pixelate_faces/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to blur faces', function () {
var blurFacesParams = {
amount: 3,
blur: 5,
type: filelink_1.ShapeType.oval,
};
filelink.blurFaces(blurFacesParams);
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/blur_faces=amount:3,blur:5,type:oval/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to round cornerns', function () {
var roundedCornersParams = {
radius: 50,
blur: 5,
};
filelink.roundedCorners(roundedCornersParams);
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/rounded_corners=radius:50,blur:5/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to polaroid', function () {
var polaroidParams = {
color: 'ff0000',
rotate: 50,
};
filelink.polaroid(polaroidParams);
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/polaroid=color:ff0000,rotate:50/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to vignette', function () {
var vignetteParams = {
background: 'ff0000',
amount: 5,
};
filelink.vignette(vignetteParams);
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/vignette=background:ff0000,amount:5/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to tornEdges', function () {
filelink.tornEdges({});
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/torn_edges/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to shadow', function () {
filelink.shadow();
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/shadow/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to circle', function () {
filelink.circle({});
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/circle/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to border', function () {
filelink.border();
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/border/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to vignette', function () {
filelink.vignette({});
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/vignette/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to sharpen', function () {
var sharpenParams = {
amount: 5,
};
filelink.sharpen(sharpenParams);
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/sharpen=amount:5/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to blur', function () {
var blurParams = {
amount: 5,
};
filelink.blur(blurParams);
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/blur=amount:5/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to blackwhite', function () {
var blackwhiteParams = {
threshold: 50,
};
filelink.blackwhite(blackwhiteParams);
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/blackwhite=threshold:50/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to sepia', function () {
filelink.sepia();
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/sepia/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to pixelate', function () {
filelink.pixelate();
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/pixelate/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to oilPaint', function () {
filelink.oilPaint();
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/oil_paint/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to modulate', function () {
filelink.modulate();
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/modulate/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to partialPixelate', function () {
filelink.partialPixelate({
objects: [[20, 20, 50, 50]],
});
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/partial_pixelate=objects:[[20,20,50,50]]/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to partialBlur', function () {
filelink.partialBlur({
amount: 5,
objects: [[20, 20, 50, 50]],
});
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/partial_blur=amount:5,objects:[[20,20,50,50]]/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to collage', function () {
filelink.collage({
files: ['http://welcome-swiss.com/wp-content/uploads/2015/12/Swiss-landscape.jpg'],
width: 200,
height: 200,
});
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/collage=files:["http://welcome-swiss.com/wp-content/uploads/2015/12/Swiss-landscape.jpg"],width:200,height:200/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to upscale', function () {
filelink.upscale();
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/upscale/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to ascii', function () {
filelink.ascii();
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/ascii/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to quality', function () {
var qualityParams = {
value: 5,
};
filelink.quality(qualityParams);
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/quality=value:5/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to use security', function () {
var securityParams = {
policy: 'examplePolicy',
signature: 'exampleSignature',
};
filelink.security(securityParams);
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/security=policy:examplePolicy,signature:exampleSignature/5aYkEQJSQCmYShsoCnZN');
});
it('should be able output', function () {
var outputParams = {
format: 'png',
};
filelink.output(outputParams);
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/output=format:png/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to videoConvert', function () {
var videoConvertParams = {
aspect_mode: filelink_1.VideoAccessMode.letterbox,
upscale: true,
};
filelink.videoConvert(videoConvertParams);
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/video_convert=aspect_mode:letterbox,upscale:true/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to URLScreenshot', function () {
filelink.URLScreenshot();
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/urlscreenshot/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to PDFInfo', function () {
filelink.PDFInfo();
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/pdfinfo/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to PDFConvert', function () {
filelink.PDFConvert();
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/pdfconvert/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to force cache', function () {
filelink.cache(true);
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/cache/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to add fallback transformation', function () {
filelink.fallback({
handle: 'http:test.com',
});
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/fallback=handle:http:test.com/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to add zip trnasformation', function () {
filelink.zip();
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/zip/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to add minify js transformation', function () {
filelink.minifyJs({
mangle: true,
gzip: true,
});
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/minify_js=mangle:true,gzip:true/5aYkEQJSQCmYShsoCnZN');
});
it('should be able to add minify css transformation', function () {
filelink.minifyCss({
level: 1,
gzip: true,
});
expect(filelink.toString()).toBe('https://cdn.filestackcontent.com/DEFAULT_API_KEY/minify_css=level:1,gzip:true/5aYkEQJSQCmYShsoCnZN');
});
});
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvZmlsZWxpbmsuc3BlYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHOzs7QUFFSCx1Q0FBcU07QUFDck0sbUVBQWdFO0FBQ2hFLHFFQUFpRDtBQUVqRCxJQUFNLGFBQWEsR0FBRyxzQkFBc0IsQ0FBQztBQUM3QyxJQUFNLGFBQWEsR0FBRyxpQkFBaUIsQ0FBQztBQUV4QyxRQUFRLENBQUMsVUFBVSxFQUFFO0lBQ25CLFNBQVMsQ0FBQztRQUNSLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDN0QsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsc0NBQXNDLEVBQUU7UUFDekMsSUFBTSxRQUFRLEdBQUcsSUFBSSxtQkFBUSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQzdDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMvQixNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsY0FBYyxDQUFDLG1CQUFRLENBQUMsQ0FBQztJQUM1QyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyw4Q0FBOEMsRUFBRTtRQUNqRCxJQUFNLE1BQU0sR0FBRyx3QkFBd0IsQ0FBQztRQUN4QyxNQUFNLENBQUM7WUFDTCxJQUFNLENBQUMsR0FBRyxJQUFJLG1CQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDakMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7SUFDbEQsQ0FBQyxDQUFDLENBQUM7SUFFSCxFQUFFLENBQUMsaUNBQWlDLEVBQUU7UUFDcEMsSUFBTSxNQUFNLEdBQUcsaUhBQWlILENBQUM7UUFDakksTUFBTSxDQUFDO1lBQ0wsSUFBTSxDQUFDLEdBQUcsSUFBSSxtQkFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ2pDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxP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TSxFQUFFLElBQUk7WUFDWixJQUFJLEVBQUUsSUFBSTtTQUNYLENBQUMsQ0FBQztRQUNILE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsdUdBQXVHLENBQUMsQ0FBQztJQUM1SSxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQyxpREFBaUQsRUFBRTtRQUNwRCxRQUFRLENBQUMsU0FBUyxDQUFDO1lBQ2pCLEtBQUssRUFBRSxDQUFDO1lBQ1IsSUFBSSxFQUFFLElBQUk7U0FDWCxDQUFDLENBQUM7UUFDSCxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLG9HQUFvRyxDQUFDLENBQUM7SUFDekksQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQyIsImZpbGUiOiJsaWIvZmlsZWxpbmsuc3BlYy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTkgYnkgRmlsZXN0YWNrLlxuICogU29tZSByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICdMaWNlbnNlJyk7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gJ0FTIElTJyBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cblxuaW1wb3J0IHsgRmlsZWxpbmssIFNoYXBlVHlwZSwgVmlkZW9BY2Nlc3NNb2RlLCBBbmltYXRpb25QYXJhbXMsIEZpdE9wdGlvbnMsIEFsaWduLCBXYXRlcm1hcmtQYXJhbXMsIEltYWdlV2F0ZXJtYXJrUG9zaXRpb24sIFNtYXJ0Q3JvcFBhcmFtcywgU21hcnRDcm9wTW9kZSwgUHJvZ3Jlc3NpdmVKcGdQYXJhbXMgfSBmcm9tICcuL2ZpbGVsaW5rJztcbmltcG9ydCB7IFRyYW5zZm9ybVNjaGVtYSB9IGZyb20gJy4vLi4vc2NoZW1hL3RyYW5zZm9ybXMuc2NoZW1hJztcbmltcG9ydCAqIGFzIHZhbGlkYXRvciBmcm9tICcuLi9zY2hlbWEvdmFsaWRhdG9yJztcblxuY29uc3QgZGVmYXVsdFNvdXJjZSA9ICc1YVlrRVFKU1FDbVlTaHNvQ25aTic7XG5jb25zdCBkZWZhdWx0QXBpa2V5ID0gJ0RFRkFVTFRfQVBJX0t