All Projects → microsoft → Paris

microsoft / Paris

Licence: mit
TypeScript library for implementing Domain-Driven Design in web apps

Programming Languages

typescript
32286 projects

Projects that are alternatives of or similar to Paris

Photoviewslider
📷 A simple photo browser for Android applications.
Stars: ✭ 78 (-6.02%)
Mutual labels:  library
Before after slider
before after slider
Stars: ✭ 80 (-3.61%)
Mutual labels:  library
Litiv
C++ implementation pool for computer vision R&D projects.
Stars: ✭ 82 (-1.2%)
Mutual labels:  library
Vokaturiandroid
Emotion recognition by speech in android.
Stars: ✭ 79 (-4.82%)
Mutual labels:  library
Byline
Go library for convert io.Reader to line-by-line Reader
Stars: ✭ 80 (-3.61%)
Mutual labels:  library
Liblognorm
a fast samples-based log normalization library
Stars: ✭ 81 (-2.41%)
Mutual labels:  library
Gitlink
Git integration for the Wolfram Language
Stars: ✭ 77 (-7.23%)
Mutual labels:  library
Typescript Event Sourcing
Domain Driven Design, Event Sourcing & Command Query Responsibility Segregation with Typescript
Stars: ✭ 83 (+0%)
Mutual labels:  domain-driven-design
Wymaterialbutton
Interactive and fully animated Material Design button for iOS developers.
Stars: ✭ 80 (-3.61%)
Mutual labels:  library
Panwid
A collection of widgets for urwid.
Stars: ✭ 82 (-1.2%)
Mutual labels:  library
Kotlin Futures
A collections of extension functions to make the JVM Future, CompletableFuture, ListenableFuture API more functional and Kotlin like.
Stars: ✭ 79 (-4.82%)
Mutual labels:  library
Discrollview2
[DEPRECATED]Android Library for fancy layouts
Stars: ✭ 79 (-4.82%)
Mutual labels:  library
Sonwan Ui
SonWan UI is a modular UI component library based on figma design to build your next React Web Application.
Stars: ✭ 75 (-9.64%)
Mutual labels:  library
Libgui
Buttons & Co
Stars: ✭ 78 (-6.02%)
Mutual labels:  library
Shiftregister74hc595
Arduino library that simplifies the usage of shift registers
Stars: ✭ 82 (-1.2%)
Mutual labels:  library
Graphql client
GraphQL Client.
Stars: ✭ 78 (-6.02%)
Mutual labels:  library
Bitcoin Cryptography Library
Nayuki's implementation of cryptographic primitives used in Bitcoin.
Stars: ✭ 81 (-2.41%)
Mutual labels:  library
Faustlibraries
The Faust libraries
Stars: ✭ 83 (+0%)
Mutual labels:  library
Internettools
XPath/XQuery 3.1 interpreter for Pascal with compatibility modes for XPath 2.0/XQuery 1.0/3.0, custom and JSONiq extensions, XML/HTML parsers and classes for HTTP/S requests
Stars: ✭ 82 (-1.2%)
Mutual labels:  library
Neumorphic Ui
📚 A library of components based on the concept of neumorphism
Stars: ✭ 82 (-1.2%)
Mutual labels:  library

Paris

Build Status npm version

Paris is a data management library for webapps, using TypeScript and RxJS to implement Domain-Driven Design.

Paris, fashion capital of the world, where all the models want to be.

Installation

Package size: ~15.8kb (gzipped)

  1. Paris is a TypeScript library and also requires RxJs and lodash, so you'll need both those packages, if you don't already use them:

    npm install --save lodash-es rxjs typescript
    
  2. Install the Paris NPM package:

    npm install --save @microsoft/paris
    

Features

  • Data API abstraction and standardization - define and use your data easily, in a consistent way.
  • Strong-typed - data models are defined as classes with TypeScript
  • Full-tree modeling - Paris handles the creation of models and sub-models, essentially creating a model tree.
  • Implements Domain-Driven Design - true and tested development methodology that improves collaboration.
  • Reactive - all async code is done with RxJS Observables.
  • Caching - easily cache data (including time-based caching).

Usage

First, define an Entity:

// todo-item.entity.ts

import { Entity, EntityModelBase, EntityField } from "@microsoft/paris";

@Entity({
	singularName: "Todo Item",
	pluralName: "Todo Items",
	endpoint: "todo/items"
})
export class TodoItem extends EntityModelBase{
	@EntityField()
	text: string;

	@EntityField()
	time: Date;
}

The above defines an Entity, which can be used to query the todo/items server endpoint, like this:

import { Paris } from "@microsoft/paris";

const paris = new Paris();
paris.getItemById(TodoItem, 1).subscribe((todoItem:TodoItem) => {
	console.log("Todo item with ID 1: ", todoItem);
});

Advanced

Check the Wiki for advanced uses and explanations.

Check the Source Typescript models for a detailed look under the hood.

NPM GitHub

Contributing

This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.microsoft.com.

When you submit a pull request, a CLA-bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.

This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact [email protected] with any additional questions or comments.

Testing

Unit tests are written using Jest, and executed with ts-jest.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].