Package Exports
- magic-odata-code-gen
- magic-odata-code-gen/dist/index.js
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-code-gen) 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
- Generated executable code is tiny. Almost all generated code is
- 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