# scim2-filter

> scim 2.0 filter parser

Latest version **0.2.0** (published 2019-09-11) · ISC license · 0 weekly downloads

## Install

```sh
npm install scim2-filter
pnpm add scim2-filter
yarn add scim2-filter
bun add scim2-filter
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.2.0 |
| Published | 2019-09-11 |
| First published | 2019-09-09 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 44 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | nazoking@gmail.com |
| Maintainers | nazoking |
| Keywords | scim |

## Links

- npm: https://www.npmjs.com/package/scim2-filter
- Repository: https://github.com/nazoking/scim2-filter
- Homepage: https://github.com/nazoking/scim2-filter#readme
- Issues: https://github.com/nazoking/scim2-filter/issues
- npm.io page: https://npm.io/package/scim2-filter

## Recent versions

- 0.2.0 (latest) — 2019-09-11
- 0.1.2 — 2019-09-09
- 0.1.0 — 2019-09-09

## README

scim2-filter
============

RFC7643 SCIM(System for Cross-domain Identity Management) 2.0 filter parser.
see [section 3.4.2.2. Filtering](https://tools.ietf.org/html/rfc7644#section-3.4.2.2).

This implements filter syntax parser and json filter function.


usage
-----

You can parse filter query and get ast.

```javascript
import {parse} from 'scim2-filter';

const f = parse(`userType eq "Employee" and emails[type eq "work" and value co "@example.com"]`);
assert.deepEqual(f, {
  op:"and",
  filters:[
    {
      op:"eq",
      attrPath:"userType",
      compValue:"Employee"
    },
    {
      op:"[]",
      attrPath:"emails",
      valFilter:{
        op:"and",
        filters:[
          {
            op:"eq",
            attrPath:"type",
            compValue:"work"
          },
          {
            op:"co",
            attrPath:"value",
            compValue:"@example.com"
          }
        ]
      }
    }
  ]
});
```


and You can use filter in json.

```javascript
import {parse, filter} from 'scim2-filter';

const f = filter(parse(`userName eq "test1@example.com"`));
const users = [
  { userName: "test1@example.com" },
  { userName: "test2@example.com" }
];
const ret = users.filter(f);
assert.deepEqual(ret, [users[0]]);
```

---
_Source: https://npm.io/package/scim2-filter · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
