JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 3
  • Score
    100M100P100Q32439F
  • License MIT

Shared interfaces between magic-odata-client and magic-odata-code-gen

Package Exports

    This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (magic-odata-shared) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

    Readme

    magic-odata

    Magical OData client generation for typescript. No more string. No more any!

    Install

    npm i magic-odata-code-gen --save-dev; npm i magic-odata-client;

    • magic-odata-code-gen is a dev dependency required to generate a client at compile time
      • This tool is small and we recommend installing it locally per project in order to avoid versioning issues
    • magic-odata-client is a dependency of your application. The generated code will use this package

    Generate

    node node_modules/magic-odata-code-gen/dist/index.js --metadataUrl "https://raw.githubusercontent.com/ShaneGH/magic-odata/main/docs/sampleOdataMetadata.xml"

    Use

    // import a generated client
    import { ODataClient } from "./odataClient.js"
    
    // create a client instance
    const oDataClient = new ODataClient({
        // inject a basic Http client
        request: (input, init) => fetch(input, init),
    
        // add a root URI
        uriRoot: "https://my.odata.server/odata"
    })
    
    // use the client!
    const popularBlogPosts = oDataClient.BlogPosts
        // Use object deconstruction to choose query tools
        .withQuery((blogPost, {
            $filter: {gt, or}, 
            $orderby: {orderBy}, 
            $skip, 
            $top
        }) => [ 
            // Combine query tools to build a query
            or(gt(blogPost.Comments.$count, 100), gt(blogPost.Likes, 100)),
            orderBy(blogPost.Name),
            $skip(0),
            $top(10)
        ])
        .get();

    Why?

    Write safe, statically typed odata queries in typescript. No more string. No more any!

    • Cut down on runtime errors
    • Explore OData API possibilities in your IDE
    • Runs in the browser or in node
    • No prod dependencies. Small bundle size
      • Generated executable code is tiny. Almost all generated code is type information
      • magic-odata-client minifies to ~24KB
    • Optional angular mode, for the angular HttpClient

    Features

    See Features.md

    • Code gen configuration
      • $metadata files protected with authentication
      • Angular mode
    • Client configuration
    • Entity keys
    • Entity path
    • Query options
      • $filter
      • $select
      • $expand
      • $orderBy
      • $search
      • $skip, $top and $count
      • custom
    • Casting
    • $value

    Contributing

    See Contributing.md