New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@forge/events

Package Overview
Dependencies
Maintainers
8
Versions
313
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@forge/events - npm Package Compare versions

Comparing version 0.1.0 to 0.2.0-next.0

6

CHANGELOG.md
# @forge/events
## 0.2.0-next.0
### Minor Changes
- 8dca98b: New configurable settings for Queue push API
## 0.1.0

@@ -4,0 +10,0 @@

@@ -48,2 +48,8 @@ "use strict";

});
it('should throw InvalidPushSettingsError for delay', async () => {
const apiClientMock = getApiClientMock();
const queue = getQueue(apiClientMock, 'name');
await expect(queue.push(1, { delayInSeconds: 901 })).rejects.toThrow(new errors_1.InvalidPushSettingsError(`Delay in seconds must be between 0 and 900.`));
expect(apiClientMock).toHaveBeenCalledTimes(0);
});
it('should throw NoEventsToPushError', async () => {

@@ -50,0 +56,0 @@ const apiClientMock = getApiClientMock();

3

out/errors.d.ts
import { FailedEvent } from './types';
export declare class InvalidPushSettingsError extends Error {
constructor(message: string);
}
export declare class InvalidQueueNameError extends Error {

@@ -3,0 +6,0 @@ constructor(message: string);

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.InternalServerError = exports.PartialSuccessError = exports.RateLimitError = exports.NoEventsToPushError = exports.PayloadTooBigError = exports.TooManyEventsError = exports.InvalidQueueNameError = void 0;
exports.InternalServerError = exports.PartialSuccessError = exports.RateLimitError = exports.NoEventsToPushError = exports.PayloadTooBigError = exports.TooManyEventsError = exports.InvalidQueueNameError = exports.InvalidPushSettingsError = void 0;
class InvalidPushSettingsError extends Error {
constructor(message) {
super(message);
}
}
exports.InvalidPushSettingsError = InvalidPushSettingsError;
class InvalidQueueNameError extends Error {

@@ -5,0 +11,0 @@ constructor(message) {

4

out/queue.d.ts

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

import { APIResponse, FetchMethod, Payload, QueueParams } from './types';
import { APIResponse, FetchMethod, Payload, QueueParams, PushSettings } from './types';
export declare class Queue {

@@ -6,3 +6,3 @@ private readonly apiClient;

constructor(queueParams: QueueParams, apiClient?: FetchMethod);
push(payloads: Payload | Payload[]): Promise<APIResponse>;
push(payloads: Payload | Payload[], pushSettings?: PushSettings): Promise<APIResponse>;
private query;

@@ -9,0 +9,0 @@ private buildRequest;

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

}
async push(payloads) {
async push(payloads, pushSettings) {
validators_1.validatePayloads(payloads);

@@ -25,2 +25,8 @@ const queryParams = {

};
if (pushSettings) {
validators_1.validatePushSettings(pushSettings);
if (pushSettings.delayInSeconds) {
queryParams.delayInSeconds = pushSettings.delayInSeconds;
}
}
const requestBody = queries_1.getPushBody(queryParams);

@@ -27,0 +33,0 @@ return this.query(queries_1.PUSH_PATH, requestBody);

@@ -7,2 +7,5 @@ import { RequestInit, Response } from 'node-fetch';

};
export interface PushSettings {
delayInSeconds: number;
}
export interface QueueParams {

@@ -16,2 +19,3 @@ key: string;

type: string;
delayInSeconds?: number;
}

@@ -18,0 +22,0 @@ export interface APIRequest extends PushBodyParams {

@@ -1,5 +0,6 @@

import { APIResponse, Payload, APIRequest } from './types';
import { APIResponse, Payload, APIRequest, PushSettings } from './types';
export declare const validateQueueName: (queueName: string) => void;
export declare const validatePushSettings: (settings: PushSettings) => void;
export declare const validatePayloads: (payloads: Payload | Payload[]) => void;
export declare const validateAPIResponse: (response: APIResponse, requestBody: APIRequest) => Promise<void>;
//# sourceMappingURL=validators.d.ts.map
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.validateAPIResponse = exports.validatePayloads = exports.validateQueueName = void 0;
exports.validateAPIResponse = exports.validatePayloads = exports.validatePushSettings = exports.validateQueueName = void 0;
const errors_1 = require("./errors");

@@ -13,2 +13,7 @@ const VALID_QUEUE_NAME_PATTERN = /^[a-zA-Z0-9-_]+$/;

};
exports.validatePushSettings = (settings) => {
if ((settings.delayInSeconds && settings.delayInSeconds > 900) || settings.delayInSeconds < 0) {
throw new errors_1.InvalidPushSettingsError('Delay in seconds must be between 0 and 900.');
}
};
exports.validatePayloads = (payloads) => {

@@ -15,0 +20,0 @@ if (!payloads || (Array.isArray(payloads) && payloads.length === 0)) {

{
"name": "@forge/events",
"version": "0.1.0",
"version": "0.2.0-next.0",
"description": "Forge Async Event methods",

@@ -5,0 +5,0 @@ "author": "Atlassian",

@@ -10,3 +10,4 @@ import { Queue } from '../queue';

RateLimitError,
TooManyEventsError
TooManyEventsError,
InvalidPushSettingsError
} from '../errors';

@@ -68,2 +69,11 @@

it('should throw InvalidPushSettingsError for delay', async () => {
const apiClientMock = getApiClientMock();
const queue = getQueue(apiClientMock, 'name');
await expect(queue.push(1, { delayInSeconds: 901 })).rejects.toThrow(
new InvalidPushSettingsError(`Delay in seconds must be between 0 and 900.`)
);
expect(apiClientMock).toHaveBeenCalledTimes(0);
});
it('should throw NoEventsToPushError', async () => {

@@ -70,0 +80,0 @@ const apiClientMock = getApiClientMock();

import { FailedEvent } from './types';
export class InvalidPushSettingsError extends Error {
constructor(message: string) {
super(message);
}
}
export class InvalidQueueNameError extends Error {

@@ -4,0 +10,0 @@ constructor(message: string) {

import { getPushBody, PUSH_PATH } from './queries';
import { validateAPIResponse, validatePayloads, validateQueueName } from './validators';
import { APIResponse, FetchMethod, Payload, PushBodyParams, QueueParams, APIRequest } from './types';
import { validateAPIResponse, validatePayloads, validateQueueName, validatePushSettings } from './validators';
import { APIResponse, FetchMethod, Payload, PushBodyParams, QueueParams, APIRequest, PushSettings } from './types';

@@ -20,3 +20,3 @@ async function getResponseBody(response: APIResponse, body: any): Promise<APIResponse> {

async push(payloads: Payload | Payload[]): Promise<APIResponse> {
async push(payloads: Payload | Payload[], pushSettings?: PushSettings): Promise<APIResponse> {
validatePayloads(payloads);

@@ -30,2 +30,10 @@

};
if (pushSettings) {
validatePushSettings(pushSettings);
if (pushSettings.delayInSeconds) {
queryParams.delayInSeconds = pushSettings.delayInSeconds;
}
}
const requestBody = getPushBody(queryParams);

@@ -32,0 +40,0 @@ return this.query(PUSH_PATH, requestBody);

@@ -7,2 +7,5 @@ import { RequestInit, Response } from 'node-fetch';

export interface PushSettings {
delayInSeconds: number;
}
export interface QueueParams {

@@ -17,2 +20,3 @@ key: string;

type: string;
delayInSeconds?: number;
}

@@ -19,0 +23,0 @@

@@ -8,5 +8,6 @@ import {

RateLimitError,
TooManyEventsError
TooManyEventsError,
InvalidPushSettingsError
} from './errors';
import { APIResponse, Payload, APIRequest } from './types';
import { APIResponse, Payload, APIRequest, PushSettings } from './types';

@@ -23,2 +24,8 @@ const VALID_QUEUE_NAME_PATTERN = /^[a-zA-Z0-9-_]+$/;

export const validatePushSettings = (settings: PushSettings) => {
if ((settings.delayInSeconds && settings.delayInSeconds > 900) || settings.delayInSeconds < 0) {
throw new InvalidPushSettingsError('Delay in seconds must be between 0 and 900.');
}
};
export const validatePayloads = (payloads: Payload | Payload[]) => {

@@ -25,0 +32,0 @@ if (!payloads || (Array.isArray(payloads) && payloads.length === 0)) {

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

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