![Module](https://img.shields.io/badge/%40platform-cell.typesystem-%23EA4E7E.svg)
[![License: MIT](https://img.shields.io/badge/license-MIT-blue.svg)](https://opensource.org/licenses/MIT)
[![NPM](https://img.shields.io/npm/v/@platform/cell.typesystem.svg?colorB=blue&style=flat)](https://www.npmjs.com/package/@platform/cell.typesystem)
![banner](https://user-images.githubusercontent.com/185555/77802292-6c95dc80-70df-11ea-96e2-ebe30c69003c.png)

The "[strongly typed](https://en.wikipedia.org/wiki/Strong_and_weak_typing) sheets" system of the CellOS.

- Typing discipline: "[structural](https://en.wikipedia.org/wiki/Structural_type_system)"

- Strongly typed object relational mapper (ORM) for two-way binding of `[sheets] : {objects}`.

- Generation of standards based type declarations from globally addressable `cell:namespace` definitions for consumption by industry standard tooling:
    - [Typescript](https://en.wikipedia.org/wiki/TypeScript) type symbols from globally addressable cell `namespace` definitions.
    - [GraphQL](https://en.wikipedia.org/wiki/GraphQL) schema definition language ([SDL](https://graphql.org/learn/schema/)) symbols - **[Coming Soon 🐷]**

- Advanced type concepts including type OR'ing ("|"), grouping, referencing (aka "fancy" typesystem).


<p>&nbsp;</p>

## Setup

    yarn add @platform/cell.typesystem

NOTE: Typically the TypeSystem is be accessed as part of the [`cell.client`](../cell.client) API.

<p>&nbsp;</p>
<p>&nbsp;</p>

---

<p>&nbsp;</p>

![image](https://user-images.githubusercontent.com/185555/79054376-5f105300-7c98-11ea-8cad-1da126b5c6b3.png)

<p>&nbsp;</p>

![Concepts](https://user-images.githubusercontent.com/185555/79054273-b530c680-7c97-11ea-820a-ef80dc78753f.png)

<p>&nbsp;</p>

![Concepts](https://user-images.githubusercontent.com/185555/79054275-b7932080-7c97-11ea-8f68-23943925ae1e.png)



<p>&nbsp;</p>
<p>&nbsp;</p>
