SCIM Query Filter & Sorter Parser

2.0.4 · active · verified Tue Apr 21

This library, `scim-query-filter-parser`, provides a robust parser and compiler for the System for Cross-Domain Identity Management (SCIM) Protocol 2.0. Specifically, it enables the processing of SCIM filtering (RFC 7644, section 3.4.2.2) and sorting (RFC 7644, section 3.4.2.3) expressions. It takes a SCIM filter or sort string as input and compiles it into a standard JavaScript function that can be used directly with array `filter` or `sort` methods, respectively. The current stable version is 2.0.4. While a specific release cadence isn't explicitly stated, the project appears actively maintained given its versioning and clear use case. A key differentiator is its direct implementation of RFC 7644 standards, originally built for `AuthX`, offering a specialized solution for SCIM-compliant identity management systems.

Common errors

Warnings

Install

Imports

Quickstart

Demonstrates how to import `compileFilter` and `compileSorter` and use them to filter and sort an array of objects based on SCIM query strings, including complex filters and extended attributes.

import { compileFilter, compileSorter } from "scim-query-filter-parser";

const users = [
  { id: 'u1', userName: 'alice', active: true, 'urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:employeeNumber': 'EMP001' },
  { id: 'u2', userName: 'bob', active: false, 'urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:employeeNumber': 'EMP002' },
  { id: 'u3', userName: 'charlie', active: true, 'urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:employeeNumber': 'EMP003' }
];

// Example 1: Filtering users where userName equals 'alice'
const aliceFilter = compileFilter('userName eq "alice"');
const filteredUsers = users.filter(aliceFilter);
console.log('Filtered for Alice:', filteredUsers);

// Example 2: Filtering active users with an employee number greater than 'EMP001'
const complexFilter = compileFilter('active eq true and urn:ietf:params:scim:schemas:extension:enterprise:2.0:User:employeeNumber gt "EMP001"');
const complexFilteredUsers = users.filter(complexFilter);
console.log('Complex filter results:', complexFilteredUsers);

// Example 3: Sorting users by userName in ascending order
const userNameSorter = compileSorter('userName asc');
const sortedUsers = [...users].sort(userNameSorter);
console.log('Sorted by Username:', sortedUsers);

view raw JSON →