imagekit-javascript
Advanced tools
Comparing version
'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 @@ |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
99662
55.78%35
150%2205
75.7%305
0.66%0
-100%25
56.25%1
Infinity%