Shared interfaces between magic-odata-client and magic-odata-code-gen
npm install magic-odata-shared
string. No more any!
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
magic-odata-client is a dependency of your application. The generated code will use this package
node node_modules/magic-odata-code-gen/dist/index.js --metadataUrl "https://raw.githubusercontent.com/ShaneGH/magic-odata/main/docs/sampleOdataMetadata.xml"
typescript
// 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, {
$orderby: {orderBy},
$skip,
$top
}) => [
// Combine query tools and fluent operations to build a query
blogPost.Comments.$count.gt(100).or(blogPost.Likes.gt(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 and compresses to ~10KB
* Optional angular mode, for the angular HttpClient`