• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

microstates / lab
96%
master: 96%

Build:
Build:
LAST BUILD BRANCH: greenkeeper/monorepo.babel7-20200530201154
DEFAULT BRANCH: master
Repo Added 05 Dec 2018 10:51PM UTC
Files 10
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

LAST BUILD ON BRANCH cl/linker-architecture
branch: cl/linker-architecture
CHANGE BRANCH
x
Reset
  • cl/linker-architecture
  • cl/entity-relationships
  • cl/ignore-example-and-query-coverage
  • cl/value-of-non-microstates
  • greenkeeper/babel-eslint-10.0.2
  • greenkeeper/babel-eslint-10.0.3
  • greenkeeper/babel-eslint-10.1.0
  • greenkeeper/coveralls-3.0.10
  • greenkeeper/coveralls-3.0.11
  • greenkeeper/coveralls-3.0.12
  • greenkeeper/coveralls-3.0.13
  • greenkeeper/coveralls-3.0.14
  • greenkeeper/coveralls-3.0.3
  • greenkeeper/coveralls-3.0.4
  • greenkeeper/coveralls-3.0.5
  • greenkeeper/coveralls-3.0.6
  • greenkeeper/coveralls-3.0.7
  • greenkeeper/coveralls-3.0.8
  • greenkeeper/coveralls-3.0.9
  • greenkeeper/coveralls-3.1.0
  • greenkeeper/eslint-5.14.0
  • greenkeeper/eslint-5.14.1
  • greenkeeper/eslint-5.15.0
  • greenkeeper/eslint-5.15.1
  • greenkeeper/eslint-5.15.2
  • greenkeeper/eslint-5.15.3
  • greenkeeper/eslint-5.16.0
  • greenkeeper/funcadelic-0.5.5
  • greenkeeper/funcadelic-0.5.6
  • greenkeeper/funcadelic-0.5.7
  • greenkeeper/mocha-6.0.0
  • greenkeeper/mocha-6.0.1
  • greenkeeper/mocha-6.0.2
  • greenkeeper/mocha-pin-6.0.2
  • greenkeeper/monorepo.babel7-20181215113126
  • greenkeeper/monorepo.babel7-20181220132906
  • greenkeeper/monorepo.babel7-20181220164408
  • greenkeeper/monorepo.babel7-20181222002817
  • greenkeeper/monorepo.babel7-20190205010819
  • greenkeeper/monorepo.babel7-20190216013824
  • greenkeeper/monorepo.babel7-20190225220816
  • greenkeeper/monorepo.babel7-20190319224409
  • greenkeeper/monorepo.babel7-20190320023035
  • greenkeeper/monorepo.babel7-20190321122043
  • greenkeeper/monorepo.babel7-20190402220535
  • greenkeeper/monorepo.babel7-20190426211543
  • greenkeeper/monorepo.babel7-20190521175803
  • greenkeeper/monorepo.babel7-20190704132520
  • greenkeeper/monorepo.babel7-20190704205919
  • greenkeeper/monorepo.babel7-20190704205935
  • greenkeeper/monorepo.babel7-20190704205953
  • greenkeeper/monorepo.babel7-20190704210015
  • greenkeeper/monorepo.babel7-20190706082134
  • greenkeeper/monorepo.babel7-20190708200138
  • greenkeeper/monorepo.babel7-20190709152622
  • greenkeeper/monorepo.babel7-20190709192312
  • greenkeeper/monorepo.babel7-20190717213021
  • greenkeeper/monorepo.babel7-20190717234334
  • greenkeeper/monorepo.babel7-20190906190906
  • greenkeeper/monorepo.babel7-20190906234035
  • greenkeeper/monorepo.babel7-20190913211117
  • greenkeeper/monorepo.babel7-20190923213305
  • greenkeeper/monorepo.babel7-20190924005733
  • greenkeeper/monorepo.babel7-20191008200020
  • greenkeeper/monorepo.babel7-20191010144043
  • greenkeeper/monorepo.babel7-20191105110141
  • greenkeeper/monorepo.babel7-20191105151132
  • greenkeeper/monorepo.babel7-20191106233658
  • greenkeeper/monorepo.babel7-20191108210517
  • greenkeeper/monorepo.babel7-20191122234407
  • greenkeeper/monorepo.babel7-20191206132935
  • greenkeeper/monorepo.babel7-20191208003358
  • greenkeeper/monorepo.babel7-20191219010209
  • greenkeeper/monorepo.babel7-20200130124445
  • greenkeeper/monorepo.babel7-20200228094136
  • greenkeeper/monorepo.babel7-20200228094154
  • greenkeeper/monorepo.babel7-20200228094213
  • greenkeeper/monorepo.babel7-20200305020406
  • greenkeeper/monorepo.babel7-20200312194108
  • greenkeeper/monorepo.babel7-20200407210918
  • greenkeeper/monorepo.babel7-20200429184705
  • greenkeeper/monorepo.babel7-20200527223108
  • greenkeeper/monorepo.babel7-20200530201120
  • greenkeeper/monorepo.babel7-20200530201133
  • greenkeeper/monorepo.babel7-20200530201154
  • greenkeeper/monorepo.jest2-20190205152836
  • greenkeeper/monorepo.jest2-20190205155838
  • greenkeeper/monorepo.jest2-20190307131557
  • greenkeeper/monorepo.jest2-20190307232310
  • greenkeeper/monorepo.jest2-20190311171927
  • greenkeeper/monorepo.jest2-20190312230328
  • greenkeeper/monorepo.jest2-20190401223700
  • greenkeeper/monorepo.jest2-20190403040550
  • greenkeeper/monorepo.jest2-20190404012846
  • greenkeeper/monorepo.jest2-20190505021050
  • greenkeeper/monorepo.jest2-20190613104048
  • greenkeeper/monorepo.jest2-20190816060425
  • greenkeeper/monorepo.jest2-20190816063358
  • greenkeeper/monorepo.jest2-20191118072756
  • greenkeeper/monorepo.jest2-20191128032552
  • greenkeeper/monorepo.jest2-20191218231709
  • greenkeeper/nyc-13.2.0
  • greenkeeper/nyc-13.3.0
  • greenkeeper/rollup-0.68.0
  • greenkeeper/rollup-0.68.1
  • greenkeeper/rollup-0.68.2
  • greenkeeper/rollup-1.0.0
  • greenkeeper/rollup-1.0.1
  • greenkeeper/rollup-1.0.2
  • greenkeeper/rollup-1.1.0
  • greenkeeper/rollup-1.10.0
  • greenkeeper/rollup-1.10.1
  • greenkeeper/rollup-1.11.0
  • greenkeeper/rollup-1.11.1
  • greenkeeper/rollup-1.11.2
  • greenkeeper/rollup-1.11.3
  • greenkeeper/rollup-1.12.0
  • greenkeeper/rollup-1.12.1
  • greenkeeper/rollup-1.12.2
  • greenkeeper/rollup-1.12.3
  • greenkeeper/rollup-1.12.4
  • greenkeeper/rollup-1.12.5
  • greenkeeper/rollup-1.13.0
  • greenkeeper/rollup-1.13.1
  • greenkeeper/rollup-1.14.0
  • greenkeeper/rollup-1.14.1
  • greenkeeper/rollup-1.14.2
  • greenkeeper/rollup-1.14.4
  • greenkeeper/rollup-1.14.5
  • greenkeeper/rollup-1.14.6
  • greenkeeper/rollup-1.15.0
  • greenkeeper/rollup-1.15.1
  • greenkeeper/rollup-1.15.2
  • greenkeeper/rollup-1.15.3
  • greenkeeper/rollup-1.15.4
  • greenkeeper/rollup-1.15.5
  • greenkeeper/rollup-1.15.6
  • greenkeeper/rollup-1.16.0
  • greenkeeper/rollup-1.16.1
  • greenkeeper/rollup-1.16.2
  • greenkeeper/rollup-1.16.3
  • greenkeeper/rollup-1.16.4
  • greenkeeper/rollup-1.16.5
  • greenkeeper/rollup-1.16.6
  • greenkeeper/rollup-1.16.7
  • greenkeeper/rollup-1.17.0
  • greenkeeper/rollup-1.18.0
  • greenkeeper/rollup-1.19.0
  • greenkeeper/rollup-1.19.1
  • greenkeeper/rollup-1.19.2
  • greenkeeper/rollup-1.19.3
  • greenkeeper/rollup-1.19.4
  • greenkeeper/rollup-1.2.0
  • greenkeeper/rollup-1.2.1
  • greenkeeper/rollup-1.2.2
  • greenkeeper/rollup-1.2.3
  • greenkeeper/rollup-1.2.4
  • greenkeeper/rollup-1.2.5
  • greenkeeper/rollup-1.20.0
  • greenkeeper/rollup-1.20.1
  • greenkeeper/rollup-1.20.2
  • greenkeeper/rollup-1.20.3
  • greenkeeper/rollup-1.21.0
  • greenkeeper/rollup-1.21.1
  • greenkeeper/rollup-1.21.2
  • greenkeeper/rollup-1.21.4
  • greenkeeper/rollup-1.22.0
  • greenkeeper/rollup-1.23.0
  • greenkeeper/rollup-1.23.1
  • greenkeeper/rollup-1.24.0
  • greenkeeper/rollup-1.25.0
  • greenkeeper/rollup-1.25.1
  • greenkeeper/rollup-1.25.2
  • greenkeeper/rollup-1.26.0
  • greenkeeper/rollup-1.26.1
  • greenkeeper/rollup-1.26.2
  • greenkeeper/rollup-1.26.3
  • greenkeeper/rollup-1.26.4
  • greenkeeper/rollup-1.26.5
  • greenkeeper/rollup-1.27.0
  • greenkeeper/rollup-1.27.1
  • greenkeeper/rollup-1.27.10
  • greenkeeper/rollup-1.27.11
  • greenkeeper/rollup-1.27.12
  • greenkeeper/rollup-1.27.13
  • greenkeeper/rollup-1.27.14
  • greenkeeper/rollup-1.27.2
  • greenkeeper/rollup-1.27.3
  • greenkeeper/rollup-1.27.4
  • greenkeeper/rollup-1.27.5
  • greenkeeper/rollup-1.27.6
  • greenkeeper/rollup-1.27.7
  • greenkeeper/rollup-1.27.8
  • greenkeeper/rollup-1.27.9
  • greenkeeper/rollup-1.29.1
  • greenkeeper/rollup-1.3.0
  • greenkeeper/rollup-1.3.1
  • greenkeeper/rollup-1.3.2
  • greenkeeper/rollup-1.3.3
  • greenkeeper/rollup-1.30.0
  • greenkeeper/rollup-1.30.1
  • greenkeeper/rollup-1.31.0
  • greenkeeper/rollup-1.31.1
  • greenkeeper/rollup-1.32.0
  • greenkeeper/rollup-1.32.1
  • greenkeeper/rollup-1.4.0
  • greenkeeper/rollup-1.4.1
  • greenkeeper/rollup-1.4.2
  • greenkeeper/rollup-1.5.0
  • greenkeeper/rollup-1.6.0
  • greenkeeper/rollup-1.6.1
  • greenkeeper/rollup-1.7.0
  • greenkeeper/rollup-1.7.1
  • greenkeeper/rollup-1.7.2
  • greenkeeper/rollup-1.7.3
  • greenkeeper/rollup-1.8.0
  • greenkeeper/rollup-1.9.0
  • greenkeeper/rollup-1.9.1
  • greenkeeper/rollup-1.9.2
  • greenkeeper/rollup-pin-1.9.2
  • greenkeeper/rollup-plugin-babel-4.1.0
  • greenkeeper/rollup-plugin-babel-4.2.0
  • greenkeeper/rollup-plugin-babel-4.3.0
  • greenkeeper/rollup-plugin-babel-4.3.1
  • greenkeeper/rollup-plugin-babel-4.3.3
  • greenkeeper/rollup-plugin-babel-4.4.0
  • greenkeeper/rollup-plugin-filesize-6.0.0
  • greenkeeper/rollup-plugin-filesize-6.1.0
  • greenkeeper/rollup-plugin-filesize-pin-6.1.0
  • greenkeeper/rollup-plugin-node-resolve-4.0.0
  • greenkeeper/rollup-plugin-node-resolve-4.0.1
  • greenkeeper/rollup-plugin-node-resolve-4.1.0
  • greenkeeper/rollup-plugin-node-resolve-4.2.0
  • greenkeeper/rollup-plugin-node-resolve-4.2.1
  • greenkeeper/rollup-plugin-node-resolve-4.2.2
  • greenkeeper/rollup-plugin-node-resolve-4.2.3
  • greenkeeper/rollup-plugin-node-resolve-4.2.4
  • greenkeeper/rollup-plugin-node-resolve-5.0.0
  • greenkeeper/rollup-plugin-node-resolve-5.0.1
  • greenkeeper/rollup-plugin-node-resolve-5.0.2
  • greenkeeper/rollup-plugin-node-resolve-5.0.3
  • greenkeeper/rollup-plugin-node-resolve-5.0.4
  • greenkeeper/rollup-plugin-node-resolve-5.1.0
  • greenkeeper/rollup-plugin-node-resolve-5.1.1
  • greenkeeper/rollup-plugin-node-resolve-5.2.0
  • master
  • taras-patch-1
  • tm/add-travis

pending completion
29

Pull #10

travis-ci-com

web-flow
Abstract Relationships

We've introduced a very, very low-level linking functionality to have
a microstate draw its value from anywhere in the tree. However, what's
lacking is a way to declaratively state from within the microstate
what those links _are_ and where they go.

So, for example in the BigTest network ORM, we want to be able to say:

```js

import { belongsTo } from '@bigtest/network';

class Blog {
  title = String;
  author = belongsTo(Person);
}
```

and for it to link to the correct person.

To accomplish this, we introduce the concept of a relationship which
is just an abstraction over a Type and a path. Every reference from
one microstate to another is now reconceived as a relatioship.

It's not that complicated though. A relationship is really just a
function that takes the holder object, it's type, it's path, and the
name of the relationship and returns a `{ Type, path }` pair that is
used for linking.

For example, the default relationship is `Child` and is defined as:

```js
function Child(spec) {
  return new Relationship(resolve);

  function resolve(origin, originType, path, name) {
    let Type = typeof spec === 'function' ? spec : typeOf(spec);
    return { Type, path: path.concat(name) };
  }
}
```

It's what implements the first line DSL.

`belongsTo`, which resolves to a different place in the store, could
be implemented like so:

```js
function belongsTo(Type) {
  return new Relationship(resolve);

  function resolve(object, objectType, path, name) {
    let tableName = pluralize(Type.name.toLowerCase());
    let id = valueOf(this)[`${name}Id`];
    return { Type, path: path.slice(-3).concat([tableName, "records", id]) };
  }
}
```

this assumes a layout of the DB like:

```json
{
  blogs: {
    nextId: 2,
    records: {
      0: { title: 'How to blog', authorId: 'id1' },
      1: {
        title: 'How to build a fully immutable directed cyclic graph in javascript',
        authorId: '0'
      }
    }
  },
  people: {
   ... (continued)
Pull Request #10: Abstract Relationships

53 of 60 branches covered (88.33%)

Branch coverage included in aggregate %.

15 of 15 new or added lines in 5 files covered. (100.0%)

164 of 166 relevant lines covered (98.8%)

182.23 hits per line

Relevant lines Covered
Build:
Build:
166 RELEVANT LINES 164 COVERED LINES
182.23 HITS PER LINE
Source Files on cl/linker-architecture
  • List 0
  • Changed 7
  • Source Changed 4
  • Coverage Changed 6
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
29 cl/linker-architecture Abstract Relationships We've introduced a very, very low-level linking functionality to have a microstate draw its value from anywhere in the tree. However, what's lacking is a way to declaratively state from within the microstate what those link... Pull #10 11 Dec 2018 07:42PM UTC web-flow travis-ci-com pending completion  
27 cl/linker-architecture Abstract Relationships We've introduced a very, very low-level linking functionality to have a microstate draw its value from anywhere in the tree. However, what's lacking is a way to declaratively state from within the microstate what those link... Pull #10 11 Dec 2018 07:38PM UTC web-flow travis-ci pending completion  
28 cl/linker-architecture Abstract Relationships We've introduced a very, very low-level linking functionality to have a microstate draw its value from anywhere in the tree. However, what's lacking is a way to declaratively state from within the microstate what those link... push 11 Dec 2018 07:38PM UTC cowboyd travis-ci-com pending completion  
26 cl/linker-architecture Abstract Relationships We've introduced a very, very low-level linking functionality to have a microstate draw its value from anywhere in the tree. However, what's lacking is a way to declaratively state from within the microstate what those link... push 11 Dec 2018 07:37PM UTC cowboyd travis-ci pending completion  
16 cl/linker-architecture Abstract Relationships We've introduced a very, very low-level linking functionality to have a microstate draw its value from anywhere in the tree. However, what's lacking is a way to declaratively state from within the microstate what those link... Pull #10 07 Dec 2018 11:54PM UTC web-flow travis-ci-com pending completion  
16 cl/linker-architecture Abstract Relationships We've introduced a very, very low-level linking functionality to have a microstate draw its value from anywhere in the tree. However, what's lacking is a way to declaratively state from within the microstate what those link... Pull #10 07 Dec 2018 11:52PM UTC web-flow travis-ci pending completion  
15 cl/linker-architecture Abstract Relationships We've introduced a very, very low-level linking functionality to have a microstate draw its value from anywhere in the tree. However, what's lacking is a way to declaratively state from within the microstate what those link... push 07 Dec 2018 11:51PM UTC cowboyd travis-ci pending completion  
15 cl/linker-architecture Abstract Relationships We've introduced a very, very low-level linking functionality to have a microstate draw its value from anywhere in the tree. However, what's lacking is a way to declaratively state from within the microstate what those link... push 07 Dec 2018 11:50PM UTC cowboyd travis-ci-com pending completion  
See All Builds (389)
  • Repo on GitHub
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc