Socket
Socket
Sign inDemoInstall

@rpldy/sender

Package Overview
Dependencies
Maintainers
1
Versions
96
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@rpldy/sender - npm Package Compare versions

Comparing version 0.1.4 to 0.1.5

lib/xhrSender/prepareFormData.js

4

lib/index.js

@@ -14,3 +14,3 @@ "use strict";

var _sender = _interopRequireDefault(require("./sender"));
var _xhrSender = _interopRequireDefault(require("./xhrSender/xhrSender"));

@@ -21,3 +21,3 @@ var _mockSender = _interopRequireDefault(require("./mockSender/mockSender"));

var _default = _sender["default"];
var _default = _xhrSender["default"];
exports["default"] = _default;

@@ -18,3 +18,3 @@ "use strict";

var createRequest = function createRequest(options) {
var createRequest = function createRequest(options, items) {
var start = performance.now();

@@ -31,5 +31,3 @@ var progressEventsData = [];

progressTimeouts.forEach(function (handle) {
if (handle) {
clearTimeout(handle);
}
clearTimeout(handle);
});

@@ -49,2 +47,3 @@ progressTimeouts = null;

clearTimeouts();
return true;
};

@@ -66,3 +65,3 @@

clearTimeouts();
}, options.delay);
}, options.delay || 0);
});

@@ -81,3 +80,3 @@

progressEventsData.push(event);
progressCallback(event);
progressCallback(event, items);
}

@@ -128,6 +127,6 @@ }, ms);

var send = function send(item, url, sendOptions, onProgress) {
_shared.logger.debugLog("uploady.mockSender: about to make a mock request for item: ", item);
var send = function send(items, url, sendOptions, onProgress) {
_shared.logger.debugLog("uploady.mockSender: about to make a mock request for items: ", items);
var request = createRequest(mockOptions);
var request = createRequest(mockOptions, items);
request.onProgress(onProgress);

@@ -134,0 +133,0 @@ return {

{
"version": "0.1.4",
"version": "0.1.5",
"name": "@rpldy/sender",

@@ -15,12 +15,16 @@ "description": "",

"scripts": {
"build": "node ../../scripts/build.js"
"build": "node ../../scripts/build.js",
"flow:copy": "flow-copy-source ./src ./lib; cp src/types.js lib/types.js"
},
"dependencies": {
"@rpldy/shared": "^0.1.4",
"@rpldy/shared": "^0.1.5",
"lodash": "^4.17.15"
},
"devDependencies": {
"flow-bin": "^0.119.1"
},
"publishConfig": {
"access": "public"
},
"gitHead": "ee693c1d4f8c2f7cb7809ed848d8c8b780459a2a"
"gitHead": "0974c6250a302c0a59132e161237bebb9a135c41"
}
// @flow
import send from "./sender";
import send from "./xhrSender/xhrSender";
import createMockSender from "./mockSender/mockSender";

@@ -5,0 +4,0 @@

@@ -20,3 +20,3 @@ // @flow

const createRequest = (options: MandatoryMockOptions) => {
const createRequest = (options: MandatoryMockOptions, items: BatchItem[]) => {
const start = performance.now();

@@ -34,5 +34,3 @@ const progressEventsData: SenderProgressEvent[] = [];

progressTimeouts.forEach((handle) => {
if (handle) {
clearTimeout(handle);
}
clearTimeout(handle);
});

@@ -53,2 +51,3 @@

clearTimeouts();
return true;
};

@@ -71,3 +70,3 @@

clearTimeouts();
}, options.delay);
}, options.delay || 0);
});

@@ -79,2 +78,3 @@

const ms = (options.delay || 0) * perc;
return setTimeout(() => {

@@ -89,3 +89,3 @@ if (!isCancelled && !isDone && progressCallback) {

progressEventsData.push(event);
progressCallback(event);
progressCallback(event, items);
}

@@ -137,5 +137,5 @@ }, ms);

const send = (item: BatchItem, url: string, sendOptions: SendOptions, onProgress: OnProgress): SendResult => {
logger.debugLog("uploady.mockSender: about to make a mock request for item: ", item);
const request = createRequest(mockOptions);
const send = (items: BatchItem[], url: string, sendOptions: SendOptions, onProgress: OnProgress): SendResult => {
logger.debugLog("uploady.mockSender: about to make a mock request for items: ", items);
const request = createRequest(mockOptions, items);

@@ -154,2 +154,2 @@ request.onProgress(onProgress);

};
};
};

@@ -7,131 +7,180 @@ import { FILE_STATES } from "@rpldy/shared";

const onProgress = jest.fn();
const onProgress = jest.fn();
beforeEach(() => {
jest.useFakeTimers();
beforeEach(() => {
jest.useFakeTimers();
clearJestMocks(onProgress);
});
clearJestMocks(onProgress);
});
afterEach(() => {
jest.useRealTimers();
});
afterEach(() => {
jest.useRealTimers();
});
const customOptions = {
delay: 1000,
fileSize: 50000,
progressIntervals: [25, 50, 80],
response: { test: true },
};
const customOptions = {
delay: 1000,
fileSize: 50000,
progressIntervals: [25, 50, 80],
response: { test: true },
};
const items = [1, 2, 3];
const doMockSend = (options = {}, updatedOptions = {}, abort = false) => {
const doMockSend = (options = {}, updatedOptions = {}, abort = false, noProgressCb = false) => {
const sender = createMockSender(options);
const sender = createMockSender(options);
if (updatedOptions) {
sender.update(updatedOptions);
}
if (updatedOptions) {
sender.update(updatedOptions);
}
const result = sender.send(null, null, null, onProgress);
const result = sender.send(items, null, null, !noProgressCb && onProgress);
if (abort) {
result.abort();
} else {
const delay = (options && options.delay) ||
(updatedOptions && updatedOptions.delay) || MOCK_DEFAULTS.delay;
if (abort) {
jest.advanceTimersByTime(100);
result.abort();
} else {
const delay = (options && options.delay) ||
(updatedOptions && updatedOptions.delay) || MOCK_DEFAULTS.delay;
jest.advanceTimersByTime(delay);
}
if (options?.delay === 0) {
jest.runAllTimers();
jest.runAllImmediates();
} else {
jest.advanceTimersByTime(delay);
}
}
return result;
};
return result;
};
it("should send mock request with defaults", async () => {
it("should send mock request with defaults", async () => {
const result = await doMockSend().request;
const response = result.response;
const result = await doMockSend().request;
const response = result.response;
expect(response.time).toBeGreaterThan(0);
expect(response.headers).toEqual({ "x-request-type": "react-uploady.mockSender" });
expect(response.data).toEqual({ mock: true, success: true });
expect(response.progressEvents).toHaveLength(5);
expect(response.time).toBeGreaterThan(0);
expect(response.headers).toEqual({ "x-request-type": "react-uploady.mockSender" });
expect(response.data).toEqual({ mock: true, success: true });
expect(response.progressEvents).toHaveLength(5);
expect(response.progressEvents[0].total).toBe(MOCK_DEFAULTS.fileSize);
expect(response.progressEvents[0].loaded).toBe(MOCK_DEFAULTS.fileSize / 10);
expect(response.progressEvents[4].loaded).toBe(MOCK_DEFAULTS.fileSize * 0.99);
expect(response.progressEvents[0].total).toBe(MOCK_DEFAULTS.fileSize);
expect(response.progressEvents[0].loaded).toBe(MOCK_DEFAULTS.fileSize / 10);
expect(response.progressEvents[4].loaded).toBe(MOCK_DEFAULTS.fileSize * 0.99);
expect(response.options).toEqual(MOCK_DEFAULTS);
expect(response.options).toEqual(MOCK_DEFAULTS);
expect(onProgress).toHaveBeenCalledTimes(5);
expect(onProgress).toHaveBeenCalledTimes(5);
expect(onProgress).toHaveBeenNthCalledWith(1, {
total: MOCK_DEFAULTS.fileSize,
loaded: MOCK_DEFAULTS.fileSize / 10,
});
expect(onProgress).toHaveBeenNthCalledWith(1, {
total: MOCK_DEFAULTS.fileSize,
loaded: MOCK_DEFAULTS.fileSize / 10,
}, items);
expect(result.state).toBe(FILE_STATES.FINISHED);
});
expect(result.state).toBe(FILE_STATES.FINISHED);
});
it("should send mock request with custom options", async () => {
it("should not emit progress events with 0 delay", async () => {
const result = await doMockSend(customOptions).request;
const result = await doMockSend({
delay: 0,
}).request;
const response = result.response;
const response = result.response;
expect(response.data).toEqual(customOptions.response);
expect(response.progressEvents).toHaveLength(3);
expect(response.progressEvents[2].total).toBe(customOptions.fileSize);
expect(response.progressEvents[2].loaded).toBe(customOptions.fileSize * 0.8);
expect(response.options.delay).toBe(customOptions.delay);
expect(response.time).toBeGreaterThan(0);
expect(response.data).toEqual({ mock: true, success: true });
expect(response.progressEvents).toHaveLength(0);
expect(result.state).toBe(FILE_STATES.FINISHED);
});
expect(onProgress).toHaveBeenCalledTimes(3);
it("should emit progress events with options.fileSize = 0", async () => {
expect(onProgress).toHaveBeenNthCalledWith(1, {
total: customOptions.fileSize,
loaded: customOptions.fileSize * 0.25,
});
const result = await doMockSend({
fileSize: 0,
}).request;
expect(result.state).toBe(FILE_STATES.FINISHED);
});
const response = result.response;
it("should send without progress events", async () => {
const options = {
progressIntervals: null,
};
expect(response.time).toBeGreaterThan(0);
expect(response.data).toEqual({ mock: true, success: true });
expect(result.state).toBe(FILE_STATES.FINISHED);
const result = await doMockSend(options).request;
const response = result.response;
expect(response.progressEvents).toHaveLength(0);
expect(response.progressEvents).toHaveLength(5);
expect(onProgress).not.toHaveBeenCalled();
expect(response.progressEvents[0].total).toBe(0);
expect(response.progressEvents[0].loaded).toBe(0);
expect(response.progressEvents[4].total).toBe(0);
expect(response.progressEvents[4].loaded).toBe(0);
});
expect(result.state).toBe(FILE_STATES.FINISHED);
});
it("should send mock request with custom options", async () => {
it("should use updated options", async () => {
const result = await doMockSend(null, customOptions).request;
const response = result.response;
const result = await doMockSend(customOptions).request;
expect(response.data).toEqual(customOptions.response);
expect(response.progressEvents).toHaveLength(3);
const response = result.response;
expect(onProgress).toHaveBeenCalledTimes(3);
expect(response.data).toEqual(customOptions.response);
expect(response.progressEvents).toHaveLength(3);
expect(response.progressEvents[2].total).toBe(customOptions.fileSize);
expect(response.progressEvents[2].loaded).toBe(customOptions.fileSize * 0.8);
expect(response.options.delay).toBe(customOptions.delay);
expect(onProgress).toHaveBeenNthCalledWith(1, {
total: customOptions.fileSize,
loaded: customOptions.fileSize * 0.25,
});
expect(onProgress).toHaveBeenCalledTimes(3);
expect(result.state).toBe(FILE_STATES.FINISHED);
});
expect(onProgress).toHaveBeenNthCalledWith(1, {
total: customOptions.fileSize,
loaded: customOptions.fileSize * 0.25,
}, items);
it("should abort request successfully", async () => {
const result = await doMockSend(null, null, true).request;
const response = result.response;
expect(result.state).toBe(FILE_STATES.FINISHED);
});
expect(onProgress).not.toHaveBeenCalled();
expect(result.state).toBe(FILE_STATES.CANCELLED);
expect(response).toBe("abort");
});
});
it("should send without progress events", async () => {
const options = {
progressIntervals: null,
};
const result = await doMockSend(options).request;
const response = result.response;
expect(response.progressEvents).toHaveLength(0);
expect(onProgress).not.toHaveBeenCalled();
expect(result.state).toBe(FILE_STATES.FINISHED);
});
it("should use updated options", async () => {
const result = await doMockSend(null, customOptions).request;
const response = result.response;
expect(response.data).toEqual(customOptions.response);
expect(response.progressEvents).toHaveLength(3);
expect(onProgress).toHaveBeenCalledTimes(3);
expect(onProgress).toHaveBeenNthCalledWith(1, {
total: customOptions.fileSize,
loaded: customOptions.fileSize * 0.25,
}, items);
expect(result.state).toBe(FILE_STATES.FINISHED);
});
it("should abort request successfully", async () => {
const result = await doMockSend(null, null, true).request;
const response = result.response;
expect(onProgress).toHaveBeenCalledTimes(1)
expect(result.state).toBe(FILE_STATES.CANCELLED);
expect(response).toBe("abort");
});
it("should work without on progress callback", async () => {
const result = await doMockSend(null, null, false, true).request;
// result.response;
expect(onProgress).toHaveBeenCalledTimes(0);
expect(result.state).toBe(FILE_STATES.FINISHED);
});
});
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc