Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

graphql-rate-limit

Package Overview
Dependencies
Maintainers
1
Versions
23
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

graphql-rate-limit - npm Package Compare versions

Comparing version 1.2.3 to 1.2.4

4

build/main/lib/field-directive.d.ts

@@ -25,2 +25,6 @@ import { Store } from './store';

readonly identityArgs?: ReadonlyArray<string>;
/**
* Limit by the length of an input array
*/
readonly arrayLengthField?: string;
}

@@ -27,0 +31,0 @@ export interface FormatErrorInput {

17

build/main/lib/field-directive.js

@@ -55,6 +55,9 @@ "use strict";

const accessTimestamps = await store.getForIdentity(identity);
// Create an array of callCount length, filled with the current timestamp
const timestamp = Date.now();
const newTimestamps = [...new Array(options.callCount || 1)].map(() => timestamp);
const filteredAccessTimestamps = [
Date.now(),
...accessTimestamps.filter(timestamp => {
return timestamp + options.windowMs > Date.now();
...newTimestamps,
...accessTimestamps.filter(t => {
return t + options.windowMs > Date.now();
})

@@ -78,2 +81,5 @@ ];

args: {
arrayLengthField: {
type: graphql_1.GraphQLString
},
identityArgs: {

@@ -108,2 +114,3 @@ type: new graphql_1.GraphQLList(graphql_1.GraphQLString)

const fieldIdentity = getFieldIdentity(name, identityArgs, resolveArgs);
const callCount = lodash_get_1.default(resolveArgs, [this.args.arrayLengthField, 'length']) || 1;
const message = this.args.message ||

@@ -117,3 +124,3 @@ config.formatError({

});
const isExceedingMax = await validateResolve(config.store, { contextIdentity, fieldIdentity }, { windowMs, max });
const isExceedingMax = await validateResolve(config.store, { contextIdentity, fieldIdentity }, { windowMs, max, callCount });
if (isExceedingMax) {

@@ -129,2 +136,2 @@ throw new rate_limit_error_1.RateLimitError(message);

exports.createRateLimitDirective = createRateLimitDirective;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9maWVsZC1kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxxQ0FRaUI7QUFDakIsaURBQXVEO0FBQ3ZELDREQUE2QjtBQUM3Qiw0Q0FBb0I7QUFDcEIsdURBQWtEO0FBQ2xELHlEQUFvRDtBQTREcEQsMkJBQTJCO0FBQzNCLE1BQU0sYUFBYSxHQUFHO0lBQ3BCLFdBQVcsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFvQixFQUFVLEVBQUU7UUFDdkQsT0FBTyw2QkFBNkIsU0FBUyxhQUFhLENBQUM7SUFDN0QsQ0FBQztJQUNELGVBQWUsRUFBRSxDQUFDLENBQU0sRUFBVSxFQUFFO1FBQ2xDLE1BQU0sSUFBSSxLQUFLLENBQ2Isc0VBQXNFLENBQ3ZFLENBQUM7SUFDSixDQUFDO0lBQ0QsS0FBSyxFQUFFLElBQUksK0JBQWEsRUFBRTtDQUMzQixDQUFDO0FBRUYsd0JBQXdCO0FBQ3hCLE1BQU0sY0FBYyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDakMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCLE1BQU0sMkJBQTJCLEdBQTBCLEVBQUUsQ0FBQztBQUU5RDs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFNLGdCQUFnQixHQUFHLENBQ3ZCLFNBQWlCLEVBQ2pCLFlBQW1DLEVBQ25DLFdBQWdCLEVBQ2hCLEVBQUU7SUFDRixNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsb0JBQUcsQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMvRCxPQUFPLENBQUMsU0FBUyxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzNDLENBQUMsQ0FBQztBQTJHaUMsNENBQWdCO0FBekduRDs7Ozs7Ozs7R0FRRztB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
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9maWVsZC1kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxxQ0FRaUI7QUFDakIsaURBQXVEO0FBQ3ZELDREQUE2QjtBQUM3Qiw0Q0FBb0I7QUFDcEIsdURBQWtEO0FBQ2xELHlEQUFvRDtBQWdFcEQsMkJBQTJCO0FBQzNCLE1BQU0sYUFBYSxHQUFHO0lBQ3BCLFdBQVcsRUFBRSxDQUFDLEVBQUUsU0FBUyxFQUFvQixFQUFVLEVBQUU7UUFDdkQsT0FBTyw2QkFBNkIsU0FBUyxhQUFhLENBQUM7SUFDN0QsQ0FBQztJQUNELGVBQWUsRUFBRSxDQUFDLENBQU0sRUFBVSxFQUFFO1FBQ2xDLE1BQU0sSUFBSSxLQUFLLENBQ2Isc0VBQXNFLENBQ3ZFLENBQUM7SUFDSixDQUFDO0lBQ0QsS0FBSyxFQUFFLElBQUksK0JBQWEsRUFBRTtDQUMzQixDQUFDO0FBRUYsd0JBQXdCO0FBQ3hCLE1BQU0sY0FBYyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDakMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCLE1BQU0sMkJBQTJCLEdBQTBCLEVBQUUsQ0FBQztBQUU5RDs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFNLGdCQUFnQixHQUFHLENBQ3ZCLFNBQWlCLEVBQ2pCLFlBQW1DLEVBQ25DLFdBQWdCLEVBQ2hCLEVBQUU7SUFDRixNQUFNLE9BQU8sR0FBRyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsb0JBQUcsQ0FBQyxXQUFXLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUMvRCxPQUFPLENBQUMsU0FBUyxFQUFFLEdBQUcsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzNDLENBQUMsQ0FBQztBQXFIaUMsNENBQWdCO0FBbkhuRDs7Ozs7Ozs7R0FRRztB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

@@ -8,2 +8,3 @@ export interface Identity {

readonly max: number;
readonly callCount?: number;
}

@@ -25,2 +25,6 @@ import { Store } from './store';

readonly identityArgs?: ReadonlyArray<string>;
/**
* Limit by the length of an input array
*/
readonly arrayLengthField?: string;
}

@@ -27,0 +31,0 @@ export interface FormatErrorInput {

@@ -49,6 +49,9 @@ import { defaultFieldResolver, DirectiveLocation, GraphQLDirective, GraphQLInt, GraphQLList, GraphQLString } from 'graphql';

const accessTimestamps = await store.getForIdentity(identity);
// Create an array of callCount length, filled with the current timestamp
const timestamp = Date.now();
const newTimestamps = [...new Array(options.callCount || 1)].map(() => timestamp);
const filteredAccessTimestamps = [
Date.now(),
...accessTimestamps.filter(timestamp => {
return timestamp + options.windowMs > Date.now();
...newTimestamps,
...accessTimestamps.filter(t => {
return t + options.windowMs > Date.now();
})

@@ -71,2 +74,5 @@ ];

args: {
arrayLengthField: {
type: GraphQLString
},
identityArgs: {

@@ -101,2 +107,3 @@ type: new GraphQLList(GraphQLString)

const fieldIdentity = getFieldIdentity(name, identityArgs, resolveArgs);
const callCount = get(resolveArgs, [this.args.arrayLengthField, 'length']) || 1;
const message = this.args.message ||

@@ -110,3 +117,3 @@ config.formatError({

});
const isExceedingMax = await validateResolve(config.store, { contextIdentity, fieldIdentity }, { windowMs, max });
const isExceedingMax = await validateResolve(config.store, { contextIdentity, fieldIdentity }, { windowMs, max, callCount });
if (isExceedingMax) {

@@ -122,2 +129,2 @@ throw new RateLimitError(message);

export { createRateLimitDirective, getFieldIdentity, validateResolve };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9maWVsZC1kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixpQkFBaUIsRUFDakIsZ0JBQWdCLEVBRWhCLFVBQVUsRUFDVixXQUFXLEVBQ1gsYUFBYSxFQUNkLE1BQU0sU0FBUyxDQUFDO0FBQ2pCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLEdBQUcsTUFBTSxZQUFZLENBQUM7QUFDN0IsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3BCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUE0RHBELDJCQUEyQjtBQUMzQixNQUFNLGFBQWEsR0FBRztJQUNwQixXQUFXLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBb0IsRUFBVSxFQUFFO1FBQ3ZELE9BQU8sNkJBQTZCLFNBQVMsYUFBYSxDQUFDO0lBQzdELENBQUM7SUFDRCxlQUFlLEVBQUUsQ0FBQyxDQUFNLEVBQVUsRUFBRTtRQUNsQyxNQUFNLElBQUksS0FBSyxDQUNiLHNFQUFzRSxDQUN2RSxDQUFDO0lBQ0osQ0FBQztJQUNELEtBQUssRUFBRSxJQUFJLGFBQWEsRUFBRTtDQUMzQixDQUFDO0FBRUYsd0JBQXdCO0FBQ3hCLE1BQU0sY0FBYyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDakMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCLE1BQU0sMkJBQTJCLEdBQTBCLEVBQUUsQ0FBQztBQUU5RDs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFNLGdCQUFnQixHQUFHLENBQ3ZCLFNBQWlCLEVBQ2pCLFlBQW1DLEVBQ25DLFdBQWdCLEVBQ2hCLEVBQUU7SUFDRixNQUFNLE9BQU8s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
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmllbGQtZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9maWVsZC1kaXJlY3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixpQkFBaUIsRUFDakIsZ0JBQWdCLEVBRWhCLFVBQVUsRUFDVixXQUFXLEVBQ1gsYUFBYSxFQUNkLE1BQU0sU0FBUyxDQUFDO0FBQ2pCLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RCxPQUFPLEdBQUcsTUFBTSxZQUFZLENBQUM7QUFDN0IsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBQ3BCLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFnRXBELDJCQUEyQjtBQUMzQixNQUFNLGFBQWEsR0FBRztJQUNwQixXQUFXLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBb0IsRUFBVSxFQUFFO1FBQ3ZELE9BQU8sNkJBQTZCLFNBQVMsYUFBYSxDQUFDO0lBQzdELENBQUM7SUFDRCxlQUFlLEVBQUUsQ0FBQyxDQUFNLEVBQVUsRUFBRTtRQUNsQyxNQUFNLElBQUksS0FBSyxDQUNiLHNFQUFzRSxDQUN2RSxDQUFDO0lBQ0osQ0FBQztJQUNELEtBQUssRUFBRSxJQUFJLGFBQWEsRUFBRTtDQUMzQixDQUFDO0FBRUYsd0JBQXdCO0FBQ3hCLE1BQU0sY0FBYyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUM7QUFDakMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxDQUFDO0FBQ3RCLE1BQU0sMkJBQTJCLEdBQTBCLEVBQUUsQ0FBQztBQUU5RDs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFNLGdCQUFnQixHQUFHLENBQ3ZCLFNBQWlCLEVBQ2pCLFlBQW1DLEVBQ25DLFdBQWdCLEVBQ2hCLEVBQUU7SUFDRixNQUFNLE9BQU8s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

@@ -8,2 +8,3 @@ export interface Identity {

readonly max: number;
readonly callCount?: number;
}

@@ -17,3 +17,3 @@ const { ApolloServer, gql } = require('apollo-server');

const typeDefs = gql`
directive @rateLimit(message: String, identityArgs: [String], max: Int, window: String) on FIELD_DEFINITION
directive @rateLimit(message: String, identityArgs: [String], arrayLengthField: String, max: Int, window: String) on FIELD_DEFINITION

@@ -31,2 +31,3 @@ type Book {

createBook(title: String!, author: String!): Book @rateLimit(identityArgs: ["title"], max: 2, window: "10s")
deleteBooks(titles: [String]!): Book @rateLimit(identityArgs: ["title"], arrayLengthField: "titles", max: 4, window: "10s")
}

@@ -42,3 +43,6 @@ `;

books.push(args);
return args;
return args;
},
deleteBooks: () => {
return books[0];
}

@@ -45,0 +49,0 @@ }

{
"name": "graphql-rate-limit",
"version": "1.2.3",
"version": "1.2.4",
"description": "A GraphQL Directive to Rate Limit Queries or Mutations 💂‍♀",

@@ -5,0 +5,0 @@ "main": "build/main/index.js",

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