diff --git a/package-lock.json b/package-lock.json index 1c9edc9..464ee1c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "imagekit-javascript", - "version": "1.5.5", + "version": "3.0.2", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index 9d9c653..d101e93 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "imagekit-javascript", - "version": "3.0.1", + "version": "3.0.2", "description": "Javascript SDK for using ImageKit.io in the browser", "main": "dist/imagekit.cjs.js", "module": "dist/imagekit.esm.js", diff --git a/src/interfaces/UploadOptions.ts b/src/interfaces/UploadOptions.ts index ec39a91..092f263 100644 --- a/src/interfaces/UploadOptions.ts +++ b/src/interfaces/UploadOptions.ts @@ -141,4 +141,9 @@ export interface UploadOptions { * Optional XMLHttpRequest object that you can send for upload API request. You can listen to `progress` and other events on this object for any custom logic. */ xhr?: XMLHttpRequest + + /** + * Optional `checks` parameters can be used to run server-side checks before files are uploaded to the Media Library. + */ + checks?: string } diff --git a/src/upload/index.ts b/src/upload/index.ts index 3af5d4e..3d4915a 100644 --- a/src/upload/index.ts +++ b/src/upload/index.ts @@ -90,6 +90,8 @@ export const upload = ( } else if(key === "transformation" && typeof uploadOptions.transformation === "object" && uploadOptions.transformation !== null) { formData.append(key, JSON.stringify(uploadOptions.transformation)); + } else if (key === 'checks' && uploadOptions.checks) { + formData.append("checks", uploadOptions.checks); } else if(uploadOptions[key] !== undefined) { formData.append(key, String(uploadOptions[key])); } diff --git a/test/upload.js b/test/upload.js index 4715c72..5f27bd4 100644 --- a/test/upload.js +++ b/test/upload.js @@ -1309,4 +1309,34 @@ describe("File upload", function () { expect(callback.calledOnce).to.be.true; sinon.assert.calledWith(callback, errRes, null); }); + + it("With checks option", async function () { + const fileOptions = { + ...securityParameters, + fileName: "test_file_name", + file: "test_file", + responseFields: "tags, customCoordinates, isPrivateFile, metadata", + useUniqueFileName: false, + checks: "'request.folder' : '/'", + }; + var callback = sinon.spy(); + + imagekit.upload(fileOptions, callback); + + expect(server.requests.length).to.be.equal(1); + await sleep(); + successUploadResponse(); + await sleep(); + + var arg = server.requests[0].requestBody; + expect(arg.get("file")).to.be.equal("test_file"); + expect(arg.get("fileName")).to.be.equal("test_file_name"); + expect(arg.get("responseFields")).to.be.equal("tags, customCoordinates, isPrivateFile, metadata"); + expect(arg.get("useUniqueFileName")).to.be.equal("false"); + expect(arg.get("publicKey")).to.be.equal("test_public_key"); + expect(arg.get('checks')).to.be.equal("'request.folder' : '/'"); + + expect(callback.calledOnce).to.be.true; + sinon.assert.calledWith(callback, null, uploadSuccessResponseObj); + }); });