npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@jwstott/odata-v4-parser

v0.3.1-1

Published

OData v4 Parser

Downloads

625

Readme

OData v4 Parser

OData v4 parser based on OASIS Standard OData v4 ABNF grammar

How to build

Simply just use $ npm run build

Run TDD tests using $ npm run tdd

How to use

Parser functions:

var parser = require('odata-v4-parser');
parser.filter("Title eq 'Article1'");

Samples

Equality Check

  • $filter=category eq 'Books'
  • $filter=price eq 19.99

Inequality Check

  • $filter=price ne 19.99
  • $filter=category ne 'Electronics'

Greater Than / Less Than

  • $filter=price gt 19.99
  • $filter=price lt 50.00
  • $filter=price ge 19.99
  • $filter=price le 50.00

Logical Operators

  • $filter=price gt 19.99 and price lt 50.00
  • $filter=category eq 'Books' or category eq 'Electronics'

Null Checks

  • $filter=category is null
  • $filter=category is not null
  • $filter=category is nullOrEmpty

String Functions

  • $filter=startswith(name, 'A')
  • $filter=endswith(name, 'Z')
  • $filter=contains(description, 'discount')

Arithmetic Operations

  • $filter=price add 5 eq 24.99
  • $filter=price sub 5 eq 14.99
  • $filter=price mul 2 eq 39.98
  • $filter=price div 2 eq 9.99
  • $filter=price mod 5 eq 4.99

Date Functions

  • $filter=date eq 2023-01-01
  • $filter=date gt 2023-01-01
  • $filter=date lt 2023-12-31

Boolean Functions

  • $filter=isActive eq true
  • $filter=isActive eq false

Complex Expressions

  • $filter=(price gt 19.99 and price lt 50.00) or (category eq 'Books' and isActive eq true)
  • $filter=(startswith(name, 'A') or endswith(name, 'Z')) and price le 100.00

Low-level functional:

require('odata-v4-parser/lib/expressions').boolCommonExpr(new Uint8Array(new Buffer("contains(@word,Title)")), 0);
require('odata-v4-parser/lib/json').arrayOrObject(new Uint8Array(new Buffer('{"a":1}')), 0);
require('odata-v4-parser/lib/expressions').commonExpr(new Uint8Array(new Buffer('Items/all(d:d/Quantity gt 100)')), 0);

NPM package

Change the version in your package.json or use npm version . npm version patch or npm version prerelease

After changing the version number in your package.json, run npm publish to publish the new version to NPM.

npm install will install the latest version in the NPM repository.

Complete sequence

npm run build
<commit changes>
npm version prerelease
git push
git push --tags 
npm publish

TODO

  • more unit testing
  • use metadata for correct OData identifier type detection (complex types, navigation properties, etc.)