You're Invited:Meet the Socket Team at BlackHat and DEF CON in Las Vegas, Aug 4-6.RSVP
Socket
Book a DemoInstallSign in
Socket

imagekit-javascript

Package Overview
Dependencies
Maintainers
1
Versions
36
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

imagekit-javascript - npm Package Compare versions

Comparing version

to
1.4.0

dist/src/constants/errorMessages.d.ts

859

dist/imagekit.cjs.js
'use strict';
var supportedTransforms = {
"height": "h",
"width": "w",
"aspectRatio": "ar",
"quality": "q",
"crop": "c",
"cropMode": "cm",
"x": "x",
"y": "y",
"focus": "fo",
"format": "f",
"radius": "r",
"background": "bg",
"border": "b",
"rotation": "rt",
"rotate": "rt",
"blur": "bl",
"named": "n",
"overlayImage": "oi",
"overlayImageAspectRatio": "oiar",
"overlayImageBackground": "oibg",
"overlayImageBorder": "oib",
"overlayImageDPR": "oidpr",
"overlayImageQuality": "oiq",
"overlayImageCropping": "oic",
"overlayImageTrim": "oit",
"overlayX": "ox",
"overlayY": "oy",
"overlayFocus": "ofo",
"overlayHeight": "oh",
"overlayWidth": "ow",
"overlayText": "ot",
"overlayTextFontSize": "ots",
"overlayTextFontFamily": "otf",
"overlayTextColor": "otc",
"overlayTextTransparency": "oa",
"overlayAlpha": "oa",
"overlayTextTypography": "ott",
"overlayBackground": "obg",
"overlayTextEncoded": "ote",
"overlayTextWidth": "otw",
"overlayTextBackground": "otbg",
"overlayTextPadding": "otp",
"overlayTextInnerAlignment": "otia",
"overlayRadius": "or",
"progressive": "pr",
"lossless": "lo",
"trim": "t",
"metadata": "md",
"colorProfile": "cp",
"defaultImage": "di",
"dpr": "dpr",
"effectSharpen": "e-sharpen",
"effectUSM": "e-usm",
"effectContrast": "e-contrast",
"effectGray": "e-grayscale",
"original": "orig"
};
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
}
const DEFAULT_TRANSFORMATION_POSITION = "path";
const QUERY_TRANSFORMATION_POSITION = "query";
const VALID_TRANSFORMATION_POSITIONS = [DEFAULT_TRANSFORMATION_POSITION, QUERY_TRANSFORMATION_POSITION];
const CHAIN_TRANSFORM_DELIMITER = ":";
const TRANSFORM_DELIMITER = ",";
const TRANSFORM_KEY_VALUE_DELIMITER = "-";
function _defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || false;
descriptor.configurable = true;
if ("value" in descriptor) descriptor.writable = true;
Object.defineProperty(target, descriptor.key, descriptor);
}
}
var transformationUtils = {
getDefault: function () {
return DEFAULT_TRANSFORMATION_POSITION;
},
addAsQueryParameter: function (options) {
return options.transformationPosition === QUERY_TRANSFORMATION_POSITION;
},
validParameters: function (options) {
return VALID_TRANSFORMATION_POSITIONS.indexOf(options.transformationPosition) != -1;
},
getSupportedTransforms: function () {
return supportedTransforms;
},
getTransformKey: function (transform) {
if (!transform) { return ""; }
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
return Constructor;
}
return supportedTransforms[transform] || supportedTransforms[transform.toLowerCase()] || "";
},
getChainTransformDelimiter: function () {
return CHAIN_TRANSFORM_DELIMITER;
},
getTransformDelimiter: function () {
return TRANSFORM_DELIMITER;
},
getTransformKeyValueDelimiter: function () {
return TRANSFORM_KEY_VALUE_DELIMITER;
}
};
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
const TRANSFORMATION_PARAMETER = "tr";
return obj;
}
const buildURL = (opts) => {
if (!opts.path && !opts.src) {
return "";
}
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object);
var urlObj, isSrcParameterUsedForURL, urlEndpointPattern;
if (opts.path) {
urlEndpointPattern = new URL(opts.urlEndpoint).pathname;
urlObj = new URL(pathJoin([opts.urlEndpoint.replace(urlEndpointPattern, ""), opts.path]));
} else {
urlObj = new URL(opts.src);
isSrcParameterUsedForURL = true;
}
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
if (enumerableOnly) symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
});
keys.push.apply(keys, symbols);
}
if (!urlObj) return "";
if (opts.sdkVersion && opts.sdkVersion.trim() != "") {
urlObj.searchParams.append("ik-sdk-version", opts.sdkVersion.trim());
}
for (var i in opts.queryParameters) {
urlObj.searchParams.append(i, opts.queryParameters[i]);
}
var transformationString = constructTransformationString(opts.transformation);
if (transformationString && transformationString.length) {
if (transformationUtils.addAsQueryParameter(opts) || isSrcParameterUsedForURL) {
urlObj.searchParams.append(TRANSFORMATION_PARAMETER, transformationString);
} else {
urlObj.pathname = pathJoin([
TRANSFORMATION_PARAMETER + transformationUtils.getChainTransformDelimiter() + transformationString,
urlObj.pathname
]);
}
}
urlObj.pathname = pathJoin([urlEndpointPattern, urlObj.pathname]);
return urlObj.href;
};
function constructTransformationString(transformation) {
if (!Array.isArray(transformation)) { return ""; }
var parsedTransforms = [];
for (var i = 0, l = transformation.length; i < l; i++) {
var parsedTransformStep = [];
for (var key in transformation[i]) {
var transformKey = transformationUtils.getTransformKey(key);
if (!transformKey) {
transformKey = key;
}
if (transformation[i][key] === "-") {
parsedTransformStep.push(transformKey);
} else {
var value = transformation[i][key];
if(transformKey === "oi" || transformKey === "di") {
value = removeTrailingSlash(removeLeadingSlash(value));
value = value.replace(/\//g,"@@");
}
parsedTransformStep.push([transformKey, value].join(transformationUtils.getTransformKeyValueDelimiter()));
}
}
parsedTransforms.push(parsedTransformStep.join(transformationUtils.getTransformDelimiter()));
}
return parsedTransforms.join(transformationUtils.getChainTransformDelimiter());
return keys;
}
function removeTrailingSlash(str) {
if (typeof str == "string" && str[str.length - 1] == "/") {
str = str.substring(0, str.length - 1);
}
return str;
}
function _objectSpread2(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i] != null ? arguments[i] : {};
function removeLeadingSlash(str) {
if (typeof str == "string" && str[0] == "/") {
str = str.slice(1);
if (i % 2) {
ownKeys(Object(source), true).forEach(function (key) {
_defineProperty(target, key, source[key]);
});
} else if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
} else {
ownKeys(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return str;
}
}
function pathJoin(parts, sep) {
var separator = sep || '/';
var replace = new RegExp(separator + '{1,}', 'g');
return parts.join(separator).replace(replace, separator);
return target;
}
/*
URL builder
*/
var version = "1.4.0";
const url = (urlOpts, defaultOptions) => {
var opts = {
...defaultOptions,
...urlOpts
};
return buildURL(opts);
};
var errorMessages = {
"MANDATORY_INITIALIZATION_MISSING": { message: "Missing urlEndpoint during SDK initialization", help: "" },
"INVALID_TRANSFORMATION_POSITION": { message: "Invalid transformationPosition parameter", help: "" },
"PRIVATE_KEY_CLIENT_SIDE": { message: "privateKey should not be passed on the client side", help: "" },
"MISSING_UPLOAD_DATA": { message: "Missing data for upload", help: "" },
"MISSING_UPLOAD_FILE_PARAMETER": { message: "Missing file parameter for upload", help: "" },
"MISSING_UPLOAD_FILENAME_PARAMETER": { message: "Missing fileName parameter for upload", help: "" },
"MISSING_AUTHENTICATION_ENDPOINT": { message: "Missing authentication endpoint for upload", help: "" },
"AUTH_ENDPOINT_TIMEOUT": { message: "The authenticationEndpoint you provided timed out in 60 seconds", help: "" },
"AUTH_ENDPOINT_NETWORK_ERROR": { message: "Request to authenticationEndpoint failed due to network error", help: "" },
"UPLOAD_ENDPOINT_NETWORK_ERROR": { message: "Request to ImageKit upload endpoint failed due to network error", help: "" },
MANDATORY_INITIALIZATION_MISSING: {
message: "Missing urlEndpoint during SDK initialization",
help: ""
},
INVALID_TRANSFORMATION_POSITION: {
message: "Invalid transformationPosition parameter",
help: ""
},
PRIVATE_KEY_CLIENT_SIDE: {
message: "privateKey should not be passed on the client side",
help: ""
},
MISSING_UPLOAD_DATA: {
message: "Missing data for upload",
help: ""
},
MISSING_UPLOAD_FILE_PARAMETER: {
message: "Missing file parameter for upload",
help: ""
},
MISSING_UPLOAD_FILENAME_PARAMETER: {
message: "Missing fileName parameter for upload",
help: ""
},
MISSING_AUTHENTICATION_ENDPOINT: {
message: "Missing authentication endpoint for upload",
help: ""
},
MISSING_PUBLIC_KEY: {
message: "Missing public key for upload",
help: ""
},
AUTH_ENDPOINT_TIMEOUT: {
message: "The authenticationEndpoint you provided timed out in 60 seconds",
help: ""
},
AUTH_ENDPOINT_NETWORK_ERROR: {
message: "Request to authenticationEndpoint failed due to network error",
help: ""
},
UPLOAD_ENDPOINT_NETWORK_ERROR: {
message: "Request to ImageKit upload endpoint failed due to network error",
help: ""
},
INVALID_UPLOAD_OPTIONS: {
message: "Invalid uploadOptions parameter",
help: ""
}
};
function respond(isError, response, callback) {
if(typeof callback == "function") {
if(isError) {
callback(response, null);
} else {
callback(null, response);
}
}
function respond (isError, response, callback) {
if (typeof callback == "function") {
if (isError) {
callback(response, null);
} else {
callback(null, response);
}
}
}
const request = (formData, options, callback) => {
generateSignatureToken(options, function (err, signaturObj) {
var request = function request(formData, options, callback) {
generateSignatureToken(options, function (err, signaturObj) {
if (err) {
return respond(true, err, callback);
} else {
formData.append("signature", (signaturObj === null || signaturObj === void 0 ? void 0 : signaturObj.signature) || "");
formData.append("expire", String((signaturObj === null || signaturObj === void 0 ? void 0 : signaturObj.expire) || 0));
formData.append("token", (signaturObj === null || signaturObj === void 0 ? void 0 : signaturObj.token) || "");
uploadFile(formData, function (err, responseSucessText) {
if (err) {
if (typeof callback != "function") return;
callback(err, null);
return;
} else {
formData.append("signature", signaturObj.signature || "");
formData.append("expire", signaturObj.expire || 0);
formData.append("token", signaturObj.token);
uploadFile(formData, function (err, responseSucessText) {
if (err) {
if (typeof callback != "function") return;
callback(err, null);
} else {
callback(null, responseSucessText);
}
});
return respond(true, err, callback);
}
});
return respond(false, responseSucessText, callback);
});
}
});
};
var generateSignatureToken = function generateSignatureToken(options, callback) {
var xhr = new XMLHttpRequest();
xhr.timeout = 60000;
xhr.open('GET', options.authenticationEndpoint);
xhr.ontimeout = function (e) {
respond(true, errorMessages.AUTH_ENDPOINT_TIMEOUT, callback);
};
xhr.onerror = function () {
respond(true, errorMessages.AUTH_ENDPOINT_NETWORK_ERROR, callback);
};
xhr.onload = function () {
if (xhr.status === 200) {
try {
var body = JSON.parse(xhr.responseText);
var obj = {
signature: body.signature,
expire: body.expire,
token: body.token
};
respond(false, obj, callback);
} catch (ex) {
respond(true, ex, callback);
}
} else {
try {
var error = JSON.parse(xhr.responseText);
respond(true, error, callback);
} catch (ex) {
respond(true, ex, callback);
}
}
};
xhr.send();
return;
};
var uploadFile = function uploadFile(formData, callback) {
var uploadFileXHR = new XMLHttpRequest();
uploadFileXHR.open('POST', 'https://upload.imagekit.io/api/v1/files/upload');
uploadFileXHR.onerror = function () {
respond(true, errorMessages.UPLOAD_ENDPOINT_NETWORK_ERROR, callback);
return;
};
uploadFileXHR.onload = function () {
if (uploadFileXHR.status === 200) {
var uploadResponse = JSON.parse(uploadFileXHR.responseText);
callback(null, uploadResponse);
} else if (uploadFileXHR.status !== 200) {
try {
callback(JSON.parse(uploadFileXHR.responseText), null);
} catch (ex) {
callback(ex, null);
}
}
};
uploadFileXHR.send(formData);
return;
};
const generateSignatureToken = (options, callback) => {
var xhr = new XMLHttpRequest();
xhr.timeout = 60000;
xhr.open('GET', options.authenticationEndpoint);
xhr.ontimeout = function (e) {
if (typeof callback != "function") return;
respond(true, errorMessages.AUTH_ENDPOINT_TIMEOUT, callback);
return;
};
xhr.onerror = function() {
respond(true, errorMessages.AUTH_ENDPOINT_NETWORK_ERROR, callback);
return;
};
xhr.onload = function () {
if (xhr.status === 200) {
try {
var body = JSON.parse(xhr.responseText);
var obj = {
signature: body.signature,
expire: body.expire,
token: body.token
};
callback(null, obj);
return;
} catch (ex) {
if (typeof callback != "function") return;
callback(ex);
}
} else {
try {
var error = JSON.parse(xhr.responseText);
if (typeof callback != "function") return;
callback(error);
} catch (ex) {
if (typeof callback != "function") return;
callback(ex);
}
}
};
xhr.send();
var upload = function upload(uploadOptions, options, callback) {
if (!uploadOptions) {
respond(true, errorMessages.INVALID_UPLOAD_OPTIONS, callback);
return;
}
if (!uploadOptions.file) {
respond(true, errorMessages.MISSING_UPLOAD_FILE_PARAMETER, callback);
return;
}
if (!uploadOptions.fileName) {
respond(true, errorMessages.MISSING_UPLOAD_FILENAME_PARAMETER, callback);
return;
}
if (!options.authenticationEndpoint) {
respond(true, errorMessages.MISSING_AUTHENTICATION_ENDPOINT, callback);
return;
}
if (!options.publicKey) {
respond(true, errorMessages.MISSING_PUBLIC_KEY, callback);
return;
}
var formData = new FormData();
var i;
for (i in uploadOptions) {
var param = uploadOptions[i];
if (typeof param !== "undefined") {
if (typeof param === "string" || typeof param === "boolean") {
formData.append(i, String(param));
} else {
formData.append(i, param);
}
}
}
formData.append("publicKey", options.publicKey);
request(formData, _objectSpread2(_objectSpread2({}, options), {}, {
authenticationEndpoint: options.authenticationEndpoint
}), callback);
};
const uploadFile = (formData, callback) => {
var uploadFileXHR = new XMLHttpRequest();
uploadFileXHR.open('POST', 'https://upload.imagekit.io/api/v1/files/upload');
uploadFileXHR.onerror = function() {
respond(true, errorMessages.UPLOAD_ENDPOINT_NETWORK_ERROR, callback);
return;
};
uploadFileXHR.onload = function () {
if (uploadFileXHR.status === 200) {
if (typeof callback != "function") return;
var uploadResponse = JSON.parse(uploadFileXHR.responseText);
callback(null, uploadResponse);
}
else if (uploadFileXHR.status !== 200) {
if (typeof callback != "function") return;
try {
callback(JSON.parse(uploadFileXHR.responseText));
} catch (ex) {
callback(ex);
}
}
};
uploadFileXHR.send(formData);
return
var supportedTransforms = {
width: "w",
height: "h",
aspectRatio: "ar",
quality: "q",
crop: "c",
cropMode: "cm",
focus: "fo",
x: "x",
y: "y",
format: "f",
radius: "r",
background: "bg",
border: "b",
rotation: "rt",
rotate: "rt",
blur: "bl",
named: "n",
overlayImage: "oi",
overlayImageAspectRatio: "oiar",
overlayImageBackground: "oibg",
overlayImageBorder: "oib",
overlayImageDPR: "oidpr",
overlayImageQuality: "oiq",
overlayImageCropping: "oic",
overlayImageTrim: "oit",
overlayX: "ox",
overlayY: "oy",
overlayFocus: "ofo",
overlayHeight: "oh",
overlayWidth: "ow",
overlayText: "ot",
overlayTextFontSize: "ots",
overlayTextFontFamily: "otf",
overlayTextColor: "otc",
overlayTextTransparency: "oa",
overlayAlpha: "oa",
overlayTextTypography: "ott",
overlayBackground: "obg",
overlayTextEncoded: "ote",
overlayTextWidth: "otw",
overlayTextBackground: "otbg",
overlayTextPadding: "otp",
overlayTextInnerAlignment: "otia",
overlayRadius: "or",
progressive: "pr",
lossless: "lo",
trim: "t",
metadata: "md",
colorProfile: "cp",
defaultImage: "di",
dpr: "dpr",
effectSharpen: "e-sharpen",
effectUSM: "e-usm",
effectContrast: "e-contrast",
effectGray: "e-grayscale",
original: "orig"
};
const upload = (uploadOptions, options, callback) => {
if (!uploadOptions) {
respond(true, errorMessages.INVALID_UPLOAD_OPTIONS, callback);
return;
var DEFAULT_TRANSFORMATION_POSITION = "path";
var QUERY_TRANSFORMATION_POSITION = "query";
var VALID_TRANSFORMATION_POSITIONS = [DEFAULT_TRANSFORMATION_POSITION, QUERY_TRANSFORMATION_POSITION];
var CHAIN_TRANSFORM_DELIMITER = ":";
var TRANSFORM_DELIMITER = ",";
var TRANSFORM_KEY_VALUE_DELIMITER = "-";
var transformationUtils = {
getDefault: function getDefault() {
return DEFAULT_TRANSFORMATION_POSITION;
},
addAsQueryParameter: function addAsQueryParameter(options) {
return options.transformationPosition === QUERY_TRANSFORMATION_POSITION;
},
validParameters: function validParameters(options) {
if (typeof options.transformationPosition == "undefined") return false;
return VALID_TRANSFORMATION_POSITIONS.indexOf(options.transformationPosition) != -1;
},
getTransformKey: function getTransformKey(transform) {
if (!transform) {
return "";
}
return supportedTransforms[transform] || supportedTransforms[transform.toLowerCase()] || "";
},
getChainTransformDelimiter: function getChainTransformDelimiter() {
return CHAIN_TRANSFORM_DELIMITER;
},
getTransformDelimiter: function getTransformDelimiter() {
return TRANSFORM_DELIMITER;
},
getTransformKeyValueDelimiter: function getTransformKeyValueDelimiter() {
return TRANSFORM_KEY_VALUE_DELIMITER;
}
};
if (!uploadOptions.file) {
respond(true, errorMessages.MISSING_UPLOAD_FILE_PARAMETER, callback);
return;
var TRANSFORMATION_PARAMETER = "tr";
function removeTrailingSlash(str) {
if (typeof str == "string" && str[str.length - 1] == "/") {
str = str.substring(0, str.length - 1);
}
return str;
}
function removeLeadingSlash(str) {
if (typeof str == "string" && str[0] == "/") {
str = str.slice(1);
}
return str;
}
function pathJoin(parts, sep) {
var separator = sep || "/";
var replace = new RegExp(separator + "{1,}", "g");
return parts.join(separator).replace(replace, separator);
}
var buildURL = function buildURL(opts) {
if (!opts.path && !opts.src) {
return "";
}
var urlObj, isSrcParameterUsedForURL, urlEndpointPattern;
try {
if (opts.path) {
urlEndpointPattern = new URL(opts.urlEndpoint).pathname;
urlObj = new URL(pathJoin([opts.urlEndpoint.replace(urlEndpointPattern, ""), opts.path]));
} else {
urlObj = new URL(opts.src);
isSrcParameterUsedForURL = true;
}
if (!uploadOptions.fileName) {
respond(true, errorMessages.MISSING_UPLOAD_FILENAME_PARAMETER, callback);
return;
} catch (e) {
console.error(e);
return "";
}
if (opts.sdkVersion && opts.sdkVersion.trim() != "") {
urlObj.searchParams.append("ik-sdk-version", opts.sdkVersion.trim());
}
for (var i in opts.queryParameters) {
urlObj.searchParams.append(i, String(opts.queryParameters[i]));
}
var transformationString = constructTransformationString(opts.transformation);
if (transformationString && transformationString.length) {
if (transformationUtils.addAsQueryParameter(opts) || isSrcParameterUsedForURL) {
urlObj.searchParams.append(TRANSFORMATION_PARAMETER, transformationString);
} else {
urlObj.pathname = pathJoin([TRANSFORMATION_PARAMETER + transformationUtils.getChainTransformDelimiter() + transformationString, urlObj.pathname]);
}
if (!options.authenticationEndpoint) {
respond(true, errorMessages.MISSING_AUTHENTICATION_ENDPOINT, callback);
return;
}
if (urlEndpointPattern) {
urlObj.pathname = pathJoin([urlEndpointPattern, urlObj.pathname]);
} else {
urlObj.pathname = pathJoin([urlObj.pathname]);
}
return urlObj.href;
};
function constructTransformationString(transformation) {
if (!Array.isArray(transformation)) {
return "";
}
var parsedTransforms = [];
for (var i = 0, l = transformation.length; i < l; i++) {
var parsedTransformStep = [];
for (var key in transformation[i]) {
var transformKey = transformationUtils.getTransformKey(key);
if (!transformKey) {
transformKey = key;
}
if (transformation[i][key] === "-") {
parsedTransformStep.push(transformKey);
} else {
var value = transformation[i][key];
if (transformKey === "oi" || transformKey === "di") {
value = removeTrailingSlash(removeLeadingSlash(value || ""));
value = value.replace(/\//g, "@@");
}
parsedTransformStep.push([transformKey, value].join(transformationUtils.getTransformKeyValueDelimiter()));
}
}
parsedTransforms.push(parsedTransformStep.join(transformationUtils.getTransformDelimiter()));
}
return parsedTransforms.join(transformationUtils.getChainTransformDelimiter());
}
var formData = new FormData();
for (var i in uploadOptions) {
formData.append(i, uploadOptions[i]);
}
formData.append("publicKey", options.publicKey);
request(formData, options, callback);
var url = function url(urlOpts, defaultOptions) {
return buildURL(_objectSpread2(_objectSpread2({}, defaultOptions), urlOpts));
};
var name = "imagekit-javascript";
var version = "1.3.7";
var description = "Javascript SDK for using ImageKit.io in the browser";
var main = "dist/imagekit.cjs.js";
var module$1 = "dist/imagekit.esm.js";
var browser = "dist/imagekit.min.js";
var unpkg = "dist/imagekit.min.js";
var files = [
"dist",
"src"
];
var devDependencies = {
"@babel/cli": "^7.10.5",
"@babel/core": "^7.10.5",
"@babel/preset-env": "^7.10.4",
"@rollup/plugin-babel": "^5.2.0",
"@rollup/plugin-commonjs": "^14.0.0",
"@rollup/plugin-json": "^4.1.0",
"@rollup/plugin-node-resolve": "^8.4.0",
chai: "^4.2.0",
codecov: "^3.8.0",
esm: "^3.2.25",
"formdata-node": "2.1.0",
mocha: "^7.0.1",
nyc: "^15.1.0",
rollup: "^2.22.0",
"rollup-plugin-terser": "^6.1.0",
sinon: "^8.1.1"
};
var scripts = {
dev: "rollup -c -w",
build: "rm -rf dist*;rollup -c",
test: "export NODE_ENV=test && nyc ./node_modules/mocha/bin/mocha --coverage -r esm --exit -t 40000 test/*.js;ex=$? ; unset NODE_ENV ; exit $ex;",
startSampleApp: "yarn build && cd samples/sample-app/ && yarn install && node index.js",
"report-coverage": "nyc report --reporter=text-lcov > coverage.lcov && codecov"
};
var repository = {
type: "git",
url: "git+https://github.com/imagekit-developer/imagekit-javascript.git"
};
var keywords = [
"imagekit",
"javascript",
"sdk",
"js",
"sdk",
"image",
"optimization",
"image",
"transformation",
"image",
"resize"
];
var author = "ImageKit Developer";
var license = "MIT";
var bugs = {
url: "https://github.com/imagekit-developer/imagekit-javascript/issues"
};
var homepage = "https://github.com/imagekit-developer/imagekit-javascript#readme";
var pkg = {
name: name,
version: version,
description: description,
main: main,
module: module$1,
browser: browser,
unpkg: unpkg,
files: files,
devDependencies: devDependencies,
scripts: scripts,
repository: repository,
keywords: keywords,
author: author,
license: license,
bugs: bugs,
homepage: homepage
};
const ImageKit = function(opts) {
opts = opts || {};
this.options = {
sdkVersion: `javascript-${pkg.version}`,
publicKey: "",
urlEndpoint: "",
transformationPosition: transformationUtils.getDefault()
};
this.options = {
...this.options,
...opts
};
function mandatoryParametersAvailable(options) {
return options.urlEndpoint;
}
function privateKeyPassed(options) {
return typeof options.privateKey != "undefined";
}
var ImageKit = function () {
function ImageKit(opts) {
_classCallCheck(this, ImageKit);
_defineProperty(this, "options", {
sdkVersion: "javascript-".concat(version),
publicKey: "",
urlEndpoint: "",
transformationPosition: transformationUtils.getDefault()
});
this.options = _objectSpread2(_objectSpread2({}, this.options), opts || {});
if (!mandatoryParametersAvailable(this.options)) {
throw(errorMessages.MANDATORY_INITIALIZATION_MISSING);
throw errorMessages.MANDATORY_INITIALIZATION_MISSING;
}
if (privateKeyPassed(this.options)) {
throw(errorMessages.PRIVATE_KEY_CLIENT_SIDE);
throw errorMessages.PRIVATE_KEY_CLIENT_SIDE;
}
if (!transformationUtils.validParameters(this.options)) {
throw(errorMessages.INVALID_TRANSFORMATION_POSITION);
throw errorMessages.INVALID_TRANSFORMATION_POSITION;
}
}
_createClass(ImageKit, [{
key: "url",
value: function url$1(urlOptions) {
return url(urlOptions, this.options);
}
}, {
key: "upload",
value: function upload$1(uploadOptions, callback, options) {
var mergedOptions = _objectSpread2(_objectSpread2({}, this.options), options);
return upload(uploadOptions, mergedOptions, callback);
}
}]);
return ImageKit;
}();
/*
URL Builder
*/
this.url = function (urlOptions) {
return url(urlOptions, this.options);
};
/*
Upload API
*/
this.upload = function (uploadOptions, callback, options) {
var mergedOptions = {
...this.options,
...options
};
return upload(uploadOptions, mergedOptions, callback);
};
};
function mandatoryParametersAvailable(options) {
return options.urlEndpoint;
}
function privateKeyPassed(options) {
return typeof options.privateKey != "undefined";
}
module.exports = ImageKit;

@@ -1,478 +0,471 @@

var supportedTransforms = {
"height": "h",
"width": "w",
"aspectRatio": "ar",
"quality": "q",
"crop": "c",
"cropMode": "cm",
"x": "x",
"y": "y",
"focus": "fo",
"format": "f",
"radius": "r",
"background": "bg",
"border": "b",
"rotation": "rt",
"rotate": "rt",
"blur": "bl",
"named": "n",
"overlayImage": "oi",
"overlayImageAspectRatio": "oiar",
"overlayImageBackground": "oibg",
"overlayImageBorder": "oib",
"overlayImageDPR": "oidpr",
"overlayImageQuality": "oiq",
"overlayImageCropping": "oic",
"overlayImageTrim": "oit",
"overlayX": "ox",
"overlayY": "oy",
"overlayFocus": "ofo",
"overlayHeight": "oh",
"overlayWidth": "ow",
"overlayText": "ot",
"overlayTextFontSize": "ots",
"overlayTextFontFamily": "otf",
"overlayTextColor": "otc",
"overlayTextTransparency": "oa",
"overlayAlpha": "oa",
"overlayTextTypography": "ott",
"overlayBackground": "obg",
"overlayTextEncoded": "ote",
"overlayTextWidth": "otw",
"overlayTextBackground": "otbg",
"overlayTextPadding": "otp",
"overlayTextInnerAlignment": "otia",
"overlayRadius": "or",
"progressive": "pr",
"lossless": "lo",
"trim": "t",
"metadata": "md",
"colorProfile": "cp",
"defaultImage": "di",
"dpr": "dpr",
"effectSharpen": "e-sharpen",
"effectUSM": "e-usm",
"effectContrast": "e-contrast",
"effectGray": "e-grayscale",
"original": "orig"
};
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
}
const DEFAULT_TRANSFORMATION_POSITION = "path";
const QUERY_TRANSFORMATION_POSITION = "query";
const VALID_TRANSFORMATION_POSITIONS = [DEFAULT_TRANSFORMATION_POSITION, QUERY_TRANSFORMATION_POSITION];
const CHAIN_TRANSFORM_DELIMITER = ":";
const TRANSFORM_DELIMITER = ",";
const TRANSFORM_KEY_VALUE_DELIMITER = "-";
function _defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || false;
descriptor.configurable = true;
if ("value" in descriptor) descriptor.writable = true;
Object.defineProperty(target, descriptor.key, descriptor);
}
}
var transformationUtils = {
getDefault: function () {
return DEFAULT_TRANSFORMATION_POSITION;
},
addAsQueryParameter: function (options) {
return options.transformationPosition === QUERY_TRANSFORMATION_POSITION;
},
validParameters: function (options) {
return VALID_TRANSFORMATION_POSITIONS.indexOf(options.transformationPosition) != -1;
},
getSupportedTransforms: function () {
return supportedTransforms;
},
getTransformKey: function (transform) {
if (!transform) { return ""; }
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
return Constructor;
}
return supportedTransforms[transform] || supportedTransforms[transform.toLowerCase()] || "";
},
getChainTransformDelimiter: function () {
return CHAIN_TRANSFORM_DELIMITER;
},
getTransformDelimiter: function () {
return TRANSFORM_DELIMITER;
},
getTransformKeyValueDelimiter: function () {
return TRANSFORM_KEY_VALUE_DELIMITER;
}
};
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
const TRANSFORMATION_PARAMETER = "tr";
return obj;
}
const buildURL = (opts) => {
if (!opts.path && !opts.src) {
return "";
}
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object);
var urlObj, isSrcParameterUsedForURL, urlEndpointPattern;
if (opts.path) {
urlEndpointPattern = new URL(opts.urlEndpoint).pathname;
urlObj = new URL(pathJoin([opts.urlEndpoint.replace(urlEndpointPattern, ""), opts.path]));
} else {
urlObj = new URL(opts.src);
isSrcParameterUsedForURL = true;
}
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
if (enumerableOnly) symbols = symbols.filter(function (sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
});
keys.push.apply(keys, symbols);
}
if (!urlObj) return "";
if (opts.sdkVersion && opts.sdkVersion.trim() != "") {
urlObj.searchParams.append("ik-sdk-version", opts.sdkVersion.trim());
}
for (var i in opts.queryParameters) {
urlObj.searchParams.append(i, opts.queryParameters[i]);
}
var transformationString = constructTransformationString(opts.transformation);
if (transformationString && transformationString.length) {
if (transformationUtils.addAsQueryParameter(opts) || isSrcParameterUsedForURL) {
urlObj.searchParams.append(TRANSFORMATION_PARAMETER, transformationString);
} else {
urlObj.pathname = pathJoin([
TRANSFORMATION_PARAMETER + transformationUtils.getChainTransformDelimiter() + transformationString,
urlObj.pathname
]);
}
}
urlObj.pathname = pathJoin([urlEndpointPattern, urlObj.pathname]);
return urlObj.href;
};
function constructTransformationString(transformation) {
if (!Array.isArray(transformation)) { return ""; }
var parsedTransforms = [];
for (var i = 0, l = transformation.length; i < l; i++) {
var parsedTransformStep = [];
for (var key in transformation[i]) {
var transformKey = transformationUtils.getTransformKey(key);
if (!transformKey) {
transformKey = key;
}
if (transformation[i][key] === "-") {
parsedTransformStep.push(transformKey);
} else {
var value = transformation[i][key];
if(transformKey === "oi" || transformKey === "di") {
value = removeTrailingSlash(removeLeadingSlash(value));
value = value.replace(/\//g,"@@");
}
parsedTransformStep.push([transformKey, value].join(transformationUtils.getTransformKeyValueDelimiter()));
}
}
parsedTransforms.push(parsedTransformStep.join(transformationUtils.getTransformDelimiter()));
}
return parsedTransforms.join(transformationUtils.getChainTransformDelimiter());
return keys;
}
function removeTrailingSlash(str) {
if (typeof str == "string" && str[str.length - 1] == "/") {
str = str.substring(0, str.length - 1);
}
return str;
}
function _objectSpread2(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i] != null ? arguments[i] : {};
function removeLeadingSlash(str) {
if (typeof str == "string" && str[0] == "/") {
str = str.slice(1);
if (i % 2) {
ownKeys(Object(source), true).forEach(function (key) {
_defineProperty(target, key, source[key]);
});
} else if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
} else {
ownKeys(Object(source)).forEach(function (key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return str;
}
}
function pathJoin(parts, sep) {
var separator = sep || '/';
var replace = new RegExp(separator + '{1,}', 'g');
return parts.join(separator).replace(replace, separator);
return target;
}
/*
URL builder
*/
var version = "1.4.0";
const url = (urlOpts, defaultOptions) => {
var opts = {
...defaultOptions,
...urlOpts
};
return buildURL(opts);
};
var errorMessages = {
"MANDATORY_INITIALIZATION_MISSING": { message: "Missing urlEndpoint during SDK initialization", help: "" },
"INVALID_TRANSFORMATION_POSITION": { message: "Invalid transformationPosition parameter", help: "" },
"PRIVATE_KEY_CLIENT_SIDE": { message: "privateKey should not be passed on the client side", help: "" },
"MISSING_UPLOAD_DATA": { message: "Missing data for upload", help: "" },
"MISSING_UPLOAD_FILE_PARAMETER": { message: "Missing file parameter for upload", help: "" },
"MISSING_UPLOAD_FILENAME_PARAMETER": { message: "Missing fileName parameter for upload", help: "" },
"MISSING_AUTHENTICATION_ENDPOINT": { message: "Missing authentication endpoint for upload", help: "" },
"AUTH_ENDPOINT_TIMEOUT": { message: "The authenticationEndpoint you provided timed out in 60 seconds", help: "" },
"AUTH_ENDPOINT_NETWORK_ERROR": { message: "Request to authenticationEndpoint failed due to network error", help: "" },
"UPLOAD_ENDPOINT_NETWORK_ERROR": { message: "Request to ImageKit upload endpoint failed due to network error", help: "" },
MANDATORY_INITIALIZATION_MISSING: {
message: "Missing urlEndpoint during SDK initialization",
help: ""
},
INVALID_TRANSFORMATION_POSITION: {
message: "Invalid transformationPosition parameter",
help: ""
},
PRIVATE_KEY_CLIENT_SIDE: {
message: "privateKey should not be passed on the client side",
help: ""
},
MISSING_UPLOAD_DATA: {
message: "Missing data for upload",
help: ""
},
MISSING_UPLOAD_FILE_PARAMETER: {
message: "Missing file parameter for upload",
help: ""
},
MISSING_UPLOAD_FILENAME_PARAMETER: {
message: "Missing fileName parameter for upload",
help: ""
},
MISSING_AUTHENTICATION_ENDPOINT: {
message: "Missing authentication endpoint for upload",
help: ""
},
MISSING_PUBLIC_KEY: {
message: "Missing public key for upload",
help: ""
},
AUTH_ENDPOINT_TIMEOUT: {
message: "The authenticationEndpoint you provided timed out in 60 seconds",
help: ""
},
AUTH_ENDPOINT_NETWORK_ERROR: {
message: "Request to authenticationEndpoint failed due to network error",
help: ""
},
UPLOAD_ENDPOINT_NETWORK_ERROR: {
message: "Request to ImageKit upload endpoint failed due to network error",
help: ""
},
INVALID_UPLOAD_OPTIONS: {
message: "Invalid uploadOptions parameter",
help: ""
}
};
function respond(isError, response, callback) {
if(typeof callback == "function") {
if(isError) {
callback(response, null);
} else {
callback(null, response);
}
}
function respond (isError, response, callback) {
if (typeof callback == "function") {
if (isError) {
callback(response, null);
} else {
callback(null, response);
}
}
}
const request = (formData, options, callback) => {
generateSignatureToken(options, function (err, signaturObj) {
var request = function request(formData, options, callback) {
generateSignatureToken(options, function (err, signaturObj) {
if (err) {
return respond(true, err, callback);
} else {
formData.append("signature", (signaturObj === null || signaturObj === void 0 ? void 0 : signaturObj.signature) || "");
formData.append("expire", String((signaturObj === null || signaturObj === void 0 ? void 0 : signaturObj.expire) || 0));
formData.append("token", (signaturObj === null || signaturObj === void 0 ? void 0 : signaturObj.token) || "");
uploadFile(formData, function (err, responseSucessText) {
if (err) {
if (typeof callback != "function") return;
callback(err, null);
return;
} else {
formData.append("signature", signaturObj.signature || "");
formData.append("expire", signaturObj.expire || 0);
formData.append("token", signaturObj.token);
uploadFile(formData, function (err, responseSucessText) {
if (err) {
if (typeof callback != "function") return;
callback(err, null);
} else {
callback(null, responseSucessText);
}
});
return respond(true, err, callback);
}
});
return respond(false, responseSucessText, callback);
});
}
});
};
var generateSignatureToken = function generateSignatureToken(options, callback) {
var xhr = new XMLHttpRequest();
xhr.timeout = 60000;
xhr.open('GET', options.authenticationEndpoint);
xhr.ontimeout = function (e) {
respond(true, errorMessages.AUTH_ENDPOINT_TIMEOUT, callback);
};
xhr.onerror = function () {
respond(true, errorMessages.AUTH_ENDPOINT_NETWORK_ERROR, callback);
};
xhr.onload = function () {
if (xhr.status === 200) {
try {
var body = JSON.parse(xhr.responseText);
var obj = {
signature: body.signature,
expire: body.expire,
token: body.token
};
respond(false, obj, callback);
} catch (ex) {
respond(true, ex, callback);
}
} else {
try {
var error = JSON.parse(xhr.responseText);
respond(true, error, callback);
} catch (ex) {
respond(true, ex, callback);
}
}
};
xhr.send();
return;
};
var uploadFile = function uploadFile(formData, callback) {
var uploadFileXHR = new XMLHttpRequest();
uploadFileXHR.open('POST', 'https://upload.imagekit.io/api/v1/files/upload');
uploadFileXHR.onerror = function () {
respond(true, errorMessages.UPLOAD_ENDPOINT_NETWORK_ERROR, callback);
return;
};
uploadFileXHR.onload = function () {
if (uploadFileXHR.status === 200) {
var uploadResponse = JSON.parse(uploadFileXHR.responseText);
callback(null, uploadResponse);
} else if (uploadFileXHR.status !== 200) {
try {
callback(JSON.parse(uploadFileXHR.responseText), null);
} catch (ex) {
callback(ex, null);
}
}
};
uploadFileXHR.send(formData);
return;
};
const generateSignatureToken = (options, callback) => {
var xhr = new XMLHttpRequest();
xhr.timeout = 60000;
xhr.open('GET', options.authenticationEndpoint);
xhr.ontimeout = function (e) {
if (typeof callback != "function") return;
respond(true, errorMessages.AUTH_ENDPOINT_TIMEOUT, callback);
return;
};
xhr.onerror = function() {
respond(true, errorMessages.AUTH_ENDPOINT_NETWORK_ERROR, callback);
return;
};
xhr.onload = function () {
if (xhr.status === 200) {
try {
var body = JSON.parse(xhr.responseText);
var obj = {
signature: body.signature,
expire: body.expire,
token: body.token
};
callback(null, obj);
return;
} catch (ex) {
if (typeof callback != "function") return;
callback(ex);
}
} else {
try {
var error = JSON.parse(xhr.responseText);
if (typeof callback != "function") return;
callback(error);
} catch (ex) {
if (typeof callback != "function") return;
callback(ex);
}
}
};
xhr.send();
var upload = function upload(uploadOptions, options, callback) {
if (!uploadOptions) {
respond(true, errorMessages.INVALID_UPLOAD_OPTIONS, callback);
return;
}
if (!uploadOptions.file) {
respond(true, errorMessages.MISSING_UPLOAD_FILE_PARAMETER, callback);
return;
}
if (!uploadOptions.fileName) {
respond(true, errorMessages.MISSING_UPLOAD_FILENAME_PARAMETER, callback);
return;
}
if (!options.authenticationEndpoint) {
respond(true, errorMessages.MISSING_AUTHENTICATION_ENDPOINT, callback);
return;
}
if (!options.publicKey) {
respond(true, errorMessages.MISSING_PUBLIC_KEY, callback);
return;
}
var formData = new FormData();
var i;
for (i in uploadOptions) {
var param = uploadOptions[i];
if (typeof param !== "undefined") {
if (typeof param === "string" || typeof param === "boolean") {
formData.append(i, String(param));
} else {
formData.append(i, param);
}
}
}
formData.append("publicKey", options.publicKey);
request(formData, _objectSpread2(_objectSpread2({}, options), {}, {
authenticationEndpoint: options.authenticationEndpoint
}), callback);
};
const uploadFile = (formData, callback) => {
var uploadFileXHR = new XMLHttpRequest();
uploadFileXHR.open('POST', 'https://upload.imagekit.io/api/v1/files/upload');
uploadFileXHR.onerror = function() {
respond(true, errorMessages.UPLOAD_ENDPOINT_NETWORK_ERROR, callback);
return;
};
uploadFileXHR.onload = function () {
if (uploadFileXHR.status === 200) {
if (typeof callback != "function") return;
var uploadResponse = JSON.parse(uploadFileXHR.responseText);
callback(null, uploadResponse);
}
else if (uploadFileXHR.status !== 200) {
if (typeof callback != "function") return;
try {
callback(JSON.parse(uploadFileXHR.responseText));
} catch (ex) {
callback(ex);
}
}
};
uploadFileXHR.send(formData);
return
var supportedTransforms = {
width: "w",
height: "h",
aspectRatio: "ar",
quality: "q",
crop: "c",
cropMode: "cm",
focus: "fo",
x: "x",
y: "y",
format: "f",
radius: "r",
background: "bg",
border: "b",
rotation: "rt",
rotate: "rt",
blur: "bl",
named: "n",
overlayImage: "oi",
overlayImageAspectRatio: "oiar",
overlayImageBackground: "oibg",
overlayImageBorder: "oib",
overlayImageDPR: "oidpr",
overlayImageQuality: "oiq",
overlayImageCropping: "oic",
overlayImageTrim: "oit",
overlayX: "ox",
overlayY: "oy",
overlayFocus: "ofo",
overlayHeight: "oh",
overlayWidth: "ow",
overlayText: "ot",
overlayTextFontSize: "ots",
overlayTextFontFamily: "otf",
overlayTextColor: "otc",
overlayTextTransparency: "oa",
overlayAlpha: "oa",
overlayTextTypography: "ott",
overlayBackground: "obg",
overlayTextEncoded: "ote",
overlayTextWidth: "otw",
overlayTextBackground: "otbg",
overlayTextPadding: "otp",
overlayTextInnerAlignment: "otia",
overlayRadius: "or",
progressive: "pr",
lossless: "lo",
trim: "t",
metadata: "md",
colorProfile: "cp",
defaultImage: "di",
dpr: "dpr",
effectSharpen: "e-sharpen",
effectUSM: "e-usm",
effectContrast: "e-contrast",
effectGray: "e-grayscale",
original: "orig"
};
const upload = (uploadOptions, options, callback) => {
if (!uploadOptions) {
respond(true, errorMessages.INVALID_UPLOAD_OPTIONS, callback);
return;
var DEFAULT_TRANSFORMATION_POSITION = "path";
var QUERY_TRANSFORMATION_POSITION = "query";
var VALID_TRANSFORMATION_POSITIONS = [DEFAULT_TRANSFORMATION_POSITION, QUERY_TRANSFORMATION_POSITION];
var CHAIN_TRANSFORM_DELIMITER = ":";
var TRANSFORM_DELIMITER = ",";
var TRANSFORM_KEY_VALUE_DELIMITER = "-";
var transformationUtils = {
getDefault: function getDefault() {
return DEFAULT_TRANSFORMATION_POSITION;
},
addAsQueryParameter: function addAsQueryParameter(options) {
return options.transformationPosition === QUERY_TRANSFORMATION_POSITION;
},
validParameters: function validParameters(options) {
if (typeof options.transformationPosition == "undefined") return false;
return VALID_TRANSFORMATION_POSITIONS.indexOf(options.transformationPosition) != -1;
},
getTransformKey: function getTransformKey(transform) {
if (!transform) {
return "";
}
return supportedTransforms[transform] || supportedTransforms[transform.toLowerCase()] || "";
},
getChainTransformDelimiter: function getChainTransformDelimiter() {
return CHAIN_TRANSFORM_DELIMITER;
},
getTransformDelimiter: function getTransformDelimiter() {
return TRANSFORM_DELIMITER;
},
getTransformKeyValueDelimiter: function getTransformKeyValueDelimiter() {
return TRANSFORM_KEY_VALUE_DELIMITER;
}
};
if (!uploadOptions.file) {
respond(true, errorMessages.MISSING_UPLOAD_FILE_PARAMETER, callback);
return;
var TRANSFORMATION_PARAMETER = "tr";
function removeTrailingSlash(str) {
if (typeof str == "string" && str[str.length - 1] == "/") {
str = str.substring(0, str.length - 1);
}
return str;
}
function removeLeadingSlash(str) {
if (typeof str == "string" && str[0] == "/") {
str = str.slice(1);
}
return str;
}
function pathJoin(parts, sep) {
var separator = sep || "/";
var replace = new RegExp(separator + "{1,}", "g");
return parts.join(separator).replace(replace, separator);
}
var buildURL = function buildURL(opts) {
if (!opts.path && !opts.src) {
return "";
}
var urlObj, isSrcParameterUsedForURL, urlEndpointPattern;
try {
if (opts.path) {
urlEndpointPattern = new URL(opts.urlEndpoint).pathname;
urlObj = new URL(pathJoin([opts.urlEndpoint.replace(urlEndpointPattern, ""), opts.path]));
} else {
urlObj = new URL(opts.src);
isSrcParameterUsedForURL = true;
}
if (!uploadOptions.fileName) {
respond(true, errorMessages.MISSING_UPLOAD_FILENAME_PARAMETER, callback);
return;
} catch (e) {
console.error(e);
return "";
}
if (opts.sdkVersion && opts.sdkVersion.trim() != "") {
urlObj.searchParams.append("ik-sdk-version", opts.sdkVersion.trim());
}
for (var i in opts.queryParameters) {
urlObj.searchParams.append(i, String(opts.queryParameters[i]));
}
var transformationString = constructTransformationString(opts.transformation);
if (transformationString && transformationString.length) {
if (transformationUtils.addAsQueryParameter(opts) || isSrcParameterUsedForURL) {
urlObj.searchParams.append(TRANSFORMATION_PARAMETER, transformationString);
} else {
urlObj.pathname = pathJoin([TRANSFORMATION_PARAMETER + transformationUtils.getChainTransformDelimiter() + transformationString, urlObj.pathname]);
}
if (!options.authenticationEndpoint) {
respond(true, errorMessages.MISSING_AUTHENTICATION_ENDPOINT, callback);
return;
}
if (urlEndpointPattern) {
urlObj.pathname = pathJoin([urlEndpointPattern, urlObj.pathname]);
} else {
urlObj.pathname = pathJoin([urlObj.pathname]);
}
return urlObj.href;
};
function constructTransformationString(transformation) {
if (!Array.isArray(transformation)) {
return "";
}
var parsedTransforms = [];
for (var i = 0, l = transformation.length; i < l; i++) {
var parsedTransformStep = [];
for (var key in transformation[i]) {
var transformKey = transformationUtils.getTransformKey(key);
if (!transformKey) {
transformKey = key;
}
if (transformation[i][key] === "-") {
parsedTransformStep.push(transformKey);
} else {
var value = transformation[i][key];
if (transformKey === "oi" || transformKey === "di") {
value = removeTrailingSlash(removeLeadingSlash(value || ""));
value = value.replace(/\//g, "@@");
}
parsedTransformStep.push([transformKey, value].join(transformationUtils.getTransformKeyValueDelimiter()));
}
}
parsedTransforms.push(parsedTransformStep.join(transformationUtils.getTransformDelimiter()));
}
return parsedTransforms.join(transformationUtils.getChainTransformDelimiter());
}
var formData = new FormData();
for (var i in uploadOptions) {
formData.append(i, uploadOptions[i]);
}
formData.append("publicKey", options.publicKey);
request(formData, options, callback);
var url = function url(urlOpts, defaultOptions) {
return buildURL(_objectSpread2(_objectSpread2({}, defaultOptions), urlOpts));
};
var name = "imagekit-javascript";
var version = "1.3.7";
var description = "Javascript SDK for using ImageKit.io in the browser";
var main = "dist/imagekit.cjs.js";
var module = "dist/imagekit.esm.js";
var browser = "dist/imagekit.min.js";
var unpkg = "dist/imagekit.min.js";
var files = [
"dist",
"src"
];
var devDependencies = {
"@babel/cli": "^7.10.5",
"@babel/core": "^7.10.5",
"@babel/preset-env": "^7.10.4",
"@rollup/plugin-babel": "^5.2.0",
"@rollup/plugin-commonjs": "^14.0.0",
"@rollup/plugin-json": "^4.1.0",
"@rollup/plugin-node-resolve": "^8.4.0",
chai: "^4.2.0",
codecov: "^3.8.0",
esm: "^3.2.25",
"formdata-node": "2.1.0",
mocha: "^7.0.1",
nyc: "^15.1.0",
rollup: "^2.22.0",
"rollup-plugin-terser": "^6.1.0",
sinon: "^8.1.1"
};
var scripts = {
dev: "rollup -c -w",
build: "rm -rf dist*;rollup -c",
test: "export NODE_ENV=test && nyc ./node_modules/mocha/bin/mocha --coverage -r esm --exit -t 40000 test/*.js;ex=$? ; unset NODE_ENV ; exit $ex;",
startSampleApp: "yarn build && cd samples/sample-app/ && yarn install && node index.js",
"report-coverage": "nyc report --reporter=text-lcov > coverage.lcov && codecov"
};
var repository = {
type: "git",
url: "git+https://github.com/imagekit-developer/imagekit-javascript.git"
};
var keywords = [
"imagekit",
"javascript",
"sdk",
"js",
"sdk",
"image",
"optimization",
"image",
"transformation",
"image",
"resize"
];
var author = "ImageKit Developer";
var license = "MIT";
var bugs = {
url: "https://github.com/imagekit-developer/imagekit-javascript/issues"
};
var homepage = "https://github.com/imagekit-developer/imagekit-javascript#readme";
var pkg = {
name: name,
version: version,
description: description,
main: main,
module: module,
browser: browser,
unpkg: unpkg,
files: files,
devDependencies: devDependencies,
scripts: scripts,
repository: repository,
keywords: keywords,
author: author,
license: license,
bugs: bugs,
homepage: homepage
};
const ImageKit = function(opts) {
opts = opts || {};
this.options = {
sdkVersion: `javascript-${pkg.version}`,
publicKey: "",
urlEndpoint: "",
transformationPosition: transformationUtils.getDefault()
};
this.options = {
...this.options,
...opts
};
function mandatoryParametersAvailable(options) {
return options.urlEndpoint;
}
function privateKeyPassed(options) {
return typeof options.privateKey != "undefined";
}
var ImageKit = function () {
function ImageKit(opts) {
_classCallCheck(this, ImageKit);
_defineProperty(this, "options", {
sdkVersion: "javascript-".concat(version),
publicKey: "",
urlEndpoint: "",
transformationPosition: transformationUtils.getDefault()
});
this.options = _objectSpread2(_objectSpread2({}, this.options), opts || {});
if (!mandatoryParametersAvailable(this.options)) {
throw(errorMessages.MANDATORY_INITIALIZATION_MISSING);
throw errorMessages.MANDATORY_INITIALIZATION_MISSING;
}
if (privateKeyPassed(this.options)) {
throw(errorMessages.PRIVATE_KEY_CLIENT_SIDE);
throw errorMessages.PRIVATE_KEY_CLIENT_SIDE;
}
if (!transformationUtils.validParameters(this.options)) {
throw(errorMessages.INVALID_TRANSFORMATION_POSITION);
throw errorMessages.INVALID_TRANSFORMATION_POSITION;
}
}
_createClass(ImageKit, [{
key: "url",
value: function url$1(urlOptions) {
return url(urlOptions, this.options);
}
}, {
key: "upload",
value: function upload$1(uploadOptions, callback, options) {
var mergedOptions = _objectSpread2(_objectSpread2({}, this.options), options);
return upload(uploadOptions, mergedOptions, callback);
}
}]);
return ImageKit;
}();
/*
URL Builder
*/
this.url = function (urlOptions) {
return url(urlOptions, this.options);
};
/*
Upload API
*/
this.upload = function (uploadOptions, callback, options) {
var mergedOptions = {
...this.options,
...options
};
return upload(uploadOptions, mergedOptions, callback);
};
};
function mandatoryParametersAvailable(options) {
return options.urlEndpoint;
}
function privateKeyPassed(options) {
return typeof options.privateKey != "undefined";
}
export default ImageKit;

@@ -1,1 +0,1 @@

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).ImageKit=t()}(this,(function(){"use strict";function e(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function t(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function n(n){for(var r=1;r<arguments.length;r++){var o=null!=arguments[r]?arguments[r]:{};r%2?t(Object(o),!0).forEach((function(t){e(n,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(o)):t(Object(o)).forEach((function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(o,e))}))}return n}var r={height:"h",width:"w",aspectRatio:"ar",quality:"q",crop:"c",cropMode:"cm",x:"x",y:"y",focus:"fo",format:"f",radius:"r",background:"bg",border:"b",rotation:"rt",rotate:"rt",blur:"bl",named:"n",overlayImage:"oi",overlayImageAspectRatio:"oiar",overlayImageBackground:"oibg",overlayImageBorder:"oib",overlayImageDPR:"oidpr",overlayImageQuality:"oiq",overlayImageCropping:"oic",overlayImageTrim:"oit",overlayX:"ox",overlayY:"oy",overlayFocus:"ofo",overlayHeight:"oh",overlayWidth:"ow",overlayText:"ot",overlayTextFontSize:"ots",overlayTextFontFamily:"otf",overlayTextColor:"otc",overlayTextTransparency:"oa",overlayAlpha:"oa",overlayTextTypography:"ott",overlayBackground:"obg",overlayTextEncoded:"ote",overlayTextWidth:"otw",overlayTextBackground:"otbg",overlayTextPadding:"otp",overlayTextInnerAlignment:"otia",overlayRadius:"or",progressive:"pr",lossless:"lo",trim:"t",metadata:"md",colorProfile:"cp",defaultImage:"di",dpr:"dpr",effectSharpen:"e-sharpen",effectUSM:"e-usm",effectContrast:"e-contrast",effectGray:"e-grayscale",original:"orig"},o=["path","query"],i=function(){return"path"},a=function(e){return"query"===e.transformationPosition},s=function(e){return-1!=o.indexOf(e.transformationPosition)},u=function(e){return e&&(r[e]||r[e.toLowerCase()])||""},p=function(){return":"},f=function(){return","},l=function(){return"-"},c=function(e){if(!e.path&&!e.src)return"";var t,n,r;if(e.path?(r=new URL(e.urlEndpoint).pathname,t=new URL(I([e.urlEndpoint.replace(r,""),e.path]))):(t=new URL(e.src),n=!0),!t)return"";for(var o in e.sdkVersion&&""!=e.sdkVersion.trim()&&t.searchParams.append("ik-sdk-version",e.sdkVersion.trim()),e.queryParameters)t.searchParams.append(o,e.queryParameters[o]);var i=function(e){if(!Array.isArray(e))return"";for(var t=[],n=0,r=e.length;n<r;n++){var o=[];for(var i in e[n]){var a=u(i);if(a||(a=i),"-"===e[n][i])o.push(a);else{var s=e[n][i];"oi"!==a&&"di"!==a||(s=(s=d(y(s))).replace(/\//g,"@@")),o.push([a,s].join(l()))}}t.push(o.join(f()))}return t.join(p())}(e.transformation);return i&&i.length&&(a(e)||n?t.searchParams.append("tr",i):t.pathname=I(["tr"+p()+i,t.pathname])),t.pathname=I([r,t.pathname]),t.href};function d(e){return"string"==typeof e&&"/"==e[e.length-1]&&(e=e.substring(0,e.length-1)),e}function y(e){return"string"==typeof e&&"/"==e[0]&&(e=e.slice(1)),e}function I(e,t){var n=t||"/",r=new RegExp(n+"{1,}","g");return e.join(n).replace(r,n)}var h={MANDATORY_INITIALIZATION_MISSING:{message:"Missing urlEndpoint during SDK initialization",help:""},INVALID_TRANSFORMATION_POSITION:{message:"Invalid transformationPosition parameter",help:""},PRIVATE_KEY_CLIENT_SIDE:{message:"privateKey should not be passed on the client side",help:""},MISSING_UPLOAD_DATA:{message:"Missing data for upload",help:""},MISSING_UPLOAD_FILE_PARAMETER:{message:"Missing file parameter for upload",help:""},MISSING_UPLOAD_FILENAME_PARAMETER:{message:"Missing fileName parameter for upload",help:""},MISSING_AUTHENTICATION_ENDPOINT:{message:"Missing authentication endpoint for upload",help:""},AUTH_ENDPOINT_TIMEOUT:{message:"The authenticationEndpoint you provided timed out in 60 seconds",help:""},AUTH_ENDPOINT_NETWORK_ERROR:{message:"Request to authenticationEndpoint failed due to network error",help:""},UPLOAD_ENDPOINT_NETWORK_ERROR:{message:"Request to ImageKit upload endpoint failed due to network error",help:""}};function T(e,t,n){"function"==typeof n&&(e?n(t,null):n(null,t))}var g=function(e,t){var n=new XMLHttpRequest;n.timeout=6e4,n.open("GET",e.authenticationEndpoint),n.ontimeout=function(e){"function"==typeof t&&T(!0,h.AUTH_ENDPOINT_TIMEOUT,t)},n.onerror=function(){T(!0,h.AUTH_ENDPOINT_NETWORK_ERROR,t)},n.onload=function(){if(200===n.status)try{var e=JSON.parse(n.responseText),r={signature:e.signature,expire:e.expire,token:e.token};return void t(null,r)}catch(e){if("function"!=typeof t)return;t(e)}else try{var o=JSON.parse(n.responseText);if("function"!=typeof t)return;t(o)}catch(e){if("function"!=typeof t)return;t(e)}},n.send()},O=function(e,t){var n=new XMLHttpRequest;n.open("POST","https://upload.imagekit.io/api/v1/files/upload"),n.onerror=function(){T(!0,h.UPLOAD_ENDPOINT_NETWORK_ERROR,t)},n.onload=function(){if(200===n.status){if("function"!=typeof t)return;var e=JSON.parse(n.responseText);t(null,e)}else if(200!==n.status){if("function"!=typeof t)return;try{t(JSON.parse(n.responseText))}catch(e){t(e)}}},n.send(e)},m=function(e,t,n){if(e)if(e.file)if(e.fileName)if(t.authenticationEndpoint){var r=new FormData;for(var o in e)r.append(o,e[o]);r.append("publicKey",t.publicKey),function(e,t,n){g(t,(function(t,r){if(t){if("function"!=typeof n)return;n(t,null)}else e.append("signature",r.signature||""),e.append("expire",r.expire||0),e.append("token",r.token),O(e,(function(e,t){if(e){if("function"!=typeof n)return;n(e,null)}else n(null,t)}))}))}(r,t,n)}else T(!0,h.MISSING_AUTHENTICATION_ENDPOINT,n);else T(!0,h.MISSING_UPLOAD_FILENAME_PARAMETER,n);else T(!0,h.MISSING_UPLOAD_FILE_PARAMETER,n);else T(!0,h.INVALID_UPLOAD_OPTIONS,n)},v="1.3.7";return function(e){if(e=e||{},this.options={sdkVersion:"javascript-".concat(v),publicKey:"",urlEndpoint:"",transformationPosition:i()},this.options=n(n({},this.options),e),!this.options.urlEndpoint)throw h.MANDATORY_INITIALIZATION_MISSING;if(function(e){return void 0!==e.privateKey}(this.options))throw h.PRIVATE_KEY_CLIENT_SIDE;if(!s(this.options))throw h.INVALID_TRANSFORMATION_POSITION;this.url=function(e){return function(e,t){var r=n(n({},t),e);return c(r)}(e,this.options)},this.upload=function(e,t,r){var o=n(n({},this.options),r);return m(e,o,t)}}}));
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).ImageKit=t()}(this,(function(){"use strict";function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}function t(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function n(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,r)}return n}function r(e){for(var r=1;r<arguments.length;r++){var o=null!=arguments[r]?arguments[r]:{};r%2?n(Object(o),!0).forEach((function(n){t(e,n,o[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):n(Object(o)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(o,t))}))}return e}var o={message:"Missing urlEndpoint during SDK initialization",help:""},i={message:"Invalid transformationPosition parameter",help:""},a={message:"privateKey should not be passed on the client side",help:""},s={message:"Missing file parameter for upload",help:""},p={message:"Missing fileName parameter for upload",help:""},u={message:"Missing authentication endpoint for upload",help:""},l={message:"Missing public key for upload",help:""},c={message:"The authenticationEndpoint you provided timed out in 60 seconds",help:""},f={message:"Request to authenticationEndpoint failed due to network error",help:""},d={message:"Request to ImageKit upload endpoint failed due to network error",help:""},y={message:"Invalid uploadOptions parameter",help:""};function h(e,t,n){"function"==typeof n&&(e?n(t,null):n(null,t))}var g=function(e,t){var n=new XMLHttpRequest;n.timeout=6e4,n.open("GET",e.authenticationEndpoint),n.ontimeout=function(e){h(!0,c,t)},n.onerror=function(){h(!0,f,t)},n.onload=function(){if(200===n.status)try{var e=JSON.parse(n.responseText);h(!1,{signature:e.signature,expire:e.expire,token:e.token},t)}catch(e){h(!0,e,t)}else try{h(!0,JSON.parse(n.responseText),t)}catch(e){h(!0,e,t)}},n.send()},v=function(e,t){var n=new XMLHttpRequest;n.open("POST","https://upload.imagekit.io/api/v1/files/upload"),n.onerror=function(){h(!0,d,t)},n.onload=function(){if(200===n.status){var e=JSON.parse(n.responseText);t(null,e)}else if(200!==n.status)try{t(JSON.parse(n.responseText),null)}catch(e){t(e,null)}},n.send(e)},m=function(e,t,n){if(e)if(e.file)if(e.fileName)if(t.authenticationEndpoint)if(t.publicKey){var o,i=new FormData;for(o in e){var a=e[o];void 0!==a&&("string"==typeof a||"boolean"==typeof a?i.append(o,String(a)):i.append(o,a))}i.append("publicKey",t.publicKey),function(e,t,n){g(t,(function(t,r){if(t)return h(!0,t,n);e.append("signature",(null==r?void 0:r.signature)||""),e.append("expire",String((null==r?void 0:r.expire)||0)),e.append("token",(null==r?void 0:r.token)||""),v(e,(function(e,t){return e?h(!0,e,n):h(!1,t,n)}))}))}(i,r(r({},t),{},{authenticationEndpoint:t.authenticationEndpoint}),n)}else h(!0,l,n);else h(!0,u,n);else h(!0,p,n);else h(!0,s,n);else h(!0,y,n)},b={width:"w",height:"h",aspectRatio:"ar",quality:"q",crop:"c",cropMode:"cm",focus:"fo",x:"x",y:"y",format:"f",radius:"r",background:"bg",border:"b",rotation:"rt",rotate:"rt",blur:"bl",named:"n",overlayImage:"oi",overlayImageAspectRatio:"oiar",overlayImageBackground:"oibg",overlayImageBorder:"oib",overlayImageDPR:"oidpr",overlayImageQuality:"oiq",overlayImageCropping:"oic",overlayImageTrim:"oit",overlayX:"ox",overlayY:"oy",overlayFocus:"ofo",overlayHeight:"oh",overlayWidth:"ow",overlayText:"ot",overlayTextFontSize:"ots",overlayTextFontFamily:"otf",overlayTextColor:"otc",overlayTextTransparency:"oa",overlayAlpha:"oa",overlayTextTypography:"ott",overlayBackground:"obg",overlayTextEncoded:"ote",overlayTextWidth:"otw",overlayTextBackground:"otbg",overlayTextPadding:"otp",overlayTextInnerAlignment:"otia",overlayRadius:"or",progressive:"pr",lossless:"lo",trim:"t",metadata:"md",colorProfile:"cp",defaultImage:"di",dpr:"dpr",effectSharpen:"e-sharpen",effectUSM:"e-usm",effectContrast:"e-contrast",effectGray:"e-grayscale",original:"orig"},w=["path","query"],x=function(){return"path"},O=function(e){return"query"===e.transformationPosition},P=function(e){return void 0!==e.transformationPosition&&-1!=w.indexOf(e.transformationPosition)},T=function(e){return e&&(b[e]||b[e.toLowerCase()])||""},k=function(){return":"},j=function(){return","},E=function(){return"-"};function I(e){return"string"==typeof e&&"/"==e[e.length-1]&&(e=e.substring(0,e.length-1)),e}function S(e,t){var n=t||"/",r=new RegExp(n+"{1,}","g");return e.join(n).replace(r,n)}var R=function(e){if(!e.path&&!e.src)return"";var t,n,r;try{e.path?(r=new URL(e.urlEndpoint).pathname,t=new URL(S([e.urlEndpoint.replace(r,""),e.path]))):(t=new URL(e.src),n=!0)}catch(e){return console.error(e),""}for(var o in e.sdkVersion&&""!=e.sdkVersion.trim()&&t.searchParams.append("ik-sdk-version",e.sdkVersion.trim()),e.queryParameters)t.searchParams.append(o,String(e.queryParameters[o]));var i=function(e){if(!Array.isArray(e))return"";for(var t=[],n=0,r=e.length;n<r;n++){var o=[];for(var i in e[n]){var a=T(i);if(a||(a=i),"-"===e[n][i])o.push(a);else{var s=e[n][i];"oi"!==a&&"di"!==a||(s=(s=I(("string"==typeof(p=s||"")&&"/"==p[0]&&(p=p.slice(1)),p))).replace(/\//g,"@@")),o.push([a,s].join(E()))}}t.push(o.join(j()))}var p;return t.join(k())}(e.transformation);return i&&i.length&&(O(e)||n?t.searchParams.append("tr",i):t.pathname=S(["tr"+k()+i,t.pathname])),t.pathname=S(r?[r,t.pathname]:[t.pathname]),t.href};return function(){function n(e){if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,n),t(this,"options",{sdkVersion:"javascript-".concat("1.4.0"),publicKey:"",urlEndpoint:"",transformationPosition:x()}),this.options=r(r({},this.options),e||{}),!this.options.urlEndpoint)throw o;if(function(e){return void 0!==e.privateKey}(this.options))throw a;if(!P(this.options))throw i}var s,p,u;return s=n,(p=[{key:"url",value:function(e){return t=e,n=this.options,R(r(r({},n),t));var t,n}},{key:"upload",value:function(e,t,n){var o=r(r({},this.options),n);return m(e,o,t)}}])&&e(s.prototype,p),u&&e(s,u),n}()}));
{
"name": "imagekit-javascript",
"version": "1.3.7",
"version": "1.4.0",
"description": "Javascript SDK for using ImageKit.io in the browser",

@@ -17,6 +17,10 @@ "main": "dist/imagekit.cjs.js",

"@babel/preset-env": "^7.10.4",
"@babel/preset-typescript": "^7.13.0",
"@babel/register": "^7.14.5",
"@rollup/plugin-babel": "^5.2.0",
"@rollup/plugin-commonjs": "^14.0.0",
"@rollup/plugin-json": "^4.1.0",
"@rollup/plugin-node-resolve": "^8.4.0",
"@rollup/plugin-typescript": "^8.2.1",
"@types/node": "^15.6.1",
"babel-plugin-transform-class-properties": "^6.24.1",
"chai": "^4.2.0",

@@ -29,11 +33,17 @@ "codecov": "^3.8.0",

"rollup": "^2.22.0",
"rollup-plugin-cleanup": "^3.2.1",
"rollup-plugin-commonjs": "^10.1.0",
"rollup-plugin-terser": "^6.1.0",
"sinon": "^8.1.1"
"sinon": "^8.1.1",
"ts-node": "^10.0.0",
"typescript": "^4.3.2",
"web-file-polyfill": "^1.0.1"
},
"scripts": {
"dev": "rollup -c -w",
"build": "rm -rf dist*;rollup -c",
"test": "export NODE_ENV=test && nyc ./node_modules/mocha/bin/mocha --coverage -r esm --exit -t 40000 test/*.js;ex=$? ; unset NODE_ENV ; exit $ex;",
"export-types": "tsc",
"build": "rm -rf dist*;rollup -c && yarn export-types",
"test": "NODE_ENV=test nyc ./node_modules/mocha/bin/mocha test/*.js",
"startSampleApp": "yarn build && cd samples/sample-app/ && yarn install && node index.js",
"report-coverage": "nyc report --reporter=text-lcov > coverage.lcov && codecov"
"report-coverage": "codecov"
},

@@ -40,0 +50,0 @@ "repository": {

@@ -22,3 +22,5 @@ [<img width="250" alt="ImageKit.io" src="https://raw.githubusercontent.com/imagekit-developer/imagekit-javascript/master/assets/imagekit-light-logo.svg"/>](https://imagekit.io)

```
npm install imagekit-javascript
npm install imagekit-javascript --save
#or
yarn add imagekit-javascript
```

@@ -25,0 +27,0 @@