0.2.5 • Published 17 days ago

@byaga/graphql v0.2.5

Weekly downloads
-
License
MIT
Repository
github
Last release
17 days ago

@byaga/graphql

This library provides a set of utilities to filter data stored in a QueryData object. One of the key features is the intersectionOf function, which allows you to apply multiple filters and get the intersection of the results.

Installation

This library is written in TypeScript and can be used in any JavaScript or TypeScript project. To install, use npm:

npm install @byaga/graphql

Usage

intersectionOf

The intersectionOf function takes one or more predicate filters and returns a function that, when called with a QueryData object, returns the intersection of the results of the predicate filters.

Here is an example of how to use intersectionOf:

import {intersectionOf, objectIsOneOf, objectIs, byPredicate} from '@byaga/graphql';
import {QueryData} from '@byaga/graphql';
import {byPredicate} from "./by-predicate";

interface YourType {
    id: string,
    name: string,
    amount: number
}

// Define your data
const data = new Map<string, YourType>([
    ['id1', {id: 'id1', name: 'value1', value: 10}],
    ['id2', {id: 'id2', name: 'value2', value: 10}],
    ['id3', {id: 'id3', name: 'value3', value: 30}]
]);

// Create a QueryData object
const collection = new QueryData(data);

// Define your filters
const filter1 = values => values.get('id1');
const filter2 = values => values.get('value2');

// Get the intersection of the results of the filters
const result = intersectionOf<YourType>(
    property('value', is(10)),
    property('name', isOneOf('value1', 'value2')),
)(collection);

console.log(result); // Outputs: ['id1', 'id2']
console.log(collection.getItems(result)); // Outputs: [{ id: 'id1', name: 'value1' }, { id: 'id2', name: 'value2' }]

In this example, filter1 and filter2 are functions that take a QueryData object and return an array of keys that pass the filter. The intersectionOf function then returns the intersection of these arrays.

Please note that the intersectionOf function returns a new function that takes a QueryData object. This allows you to define your filters once and then apply them to different QueryData objects.

Testing

This library includes a comprehensive set of unit tests to ensure its functionality. You can run these tests using npm:

npm test

Contributing

Contributions are welcome! Please submit a pull request with any improvements.

License

This library is licensed under the MIT License.

0.2.5

17 days ago

0.2.3

1 month ago

0.2.4

1 month ago

0.2.1

1 month ago

0.2.0

1 month ago

0.2.2

1 month ago

0.1.2

2 months ago

0.1.1

2 months ago

0.1.0

2 months ago