Ecosyste.ms: OpenCollective

An open API service for software projects hosted on Open Collective.

github.com/sourcecred/sourcecred

a social algorithm for computing cred
https://github.com/sourcecred/sourcecred

Evaluate edge weight based on node and edge type (#486)

Summary:
PageRank wants an _edge evaluator_: a function mapping an edge to its
to-weight and f...

17496764596082335b255952bcf9d7a7ec018ba2 authored over 6 years ago by William Chargin <[email protected]>
Mark `PagerankTable` components as pure (#485)

Summary:
As we add sliders for adjusting the PageRank parameters, we trigger a
bunch of unneed...

88cd736dec8a4b67b81d058983d2b406213ccd15 authored over 6 years ago by William Chargin <[email protected]>
Cache graph size in cred explorer app (#484)

Summary:
To verify that the correct graph is loaded, we display the graph’s node
and edge coun...

663367b0c8abc784b11bb0225c720a99216b715e authored over 6 years ago by William Chargin <[email protected]>
Update README (#482)

Rewrites the README to be a lot more concrete about what SourceCred is
doing, and to give more ...

1cda37e91aed1ace0dd690eebe567afdd330e0b7 authored over 6 years ago by Dandelion Mané <[email protected]>
Parse GitHub references from Markdown text nodes (#480)

Summary:
See #432. This commit switches the GitHub Markdown parser from matching
regular expre...

56d48e254c8349e1180304e7046656d0219e6008 authored over 6 years ago by William Chargin <[email protected]>
Extract contiguous blocks of text from Markdown (#479)

Summary:
This commit exposes a function of type `(string): string[]` to
encapsulate the whole ...

a9600d0379ebf55ca4b48150a5c8087da586da1c authored over 6 years ago by William Chargin <[email protected]>
Properly detect space-separated GitHub references (#478)

Summary:
The regular expressions used to detect GitHub references were of the
form `/(?:\W|^)(...

bc9e94b2a14bd00219ad9c2684ffc1e8770acb78 authored over 6 years ago by William Chargin <[email protected]>
Properly detect GitHub references at start of line (#477)

Summary:
The `^` metacharacter only matches the start of a non-initial line when
the `m` (“mul...

6ab78b85da449df024ccc1dc5557da46cb038e9e authored over 6 years ago by William Chargin <[email protected]>
Remove testsSetup from config/paths (#475)

It references a non-existent file.

Test plan: `yarn travis --full` passed.

664b8ac8d06d085f9edbbd0119c2dcfe7935b346 authored over 6 years ago by Dandelion Mané <[email protected]>
Change `src/v3/` to `src/` and remove v3 naming (#474)

Test plan:
`git grep -i v3` only shows incidental hits in longer strings
`yarn travis --full` ...

24cf35da22acd2f504e55dd7ed81bbd7c49bf999 authored over 6 years ago by Dandelion Mané <[email protected]>
Demolish the bridge (#473)

Summary:
The bridge introduced in #448 has now served its purpose, and may be
deconstructed. T...

23704da7a586bdd715ac1abb720c832c70a56250 authored over 6 years ago by William Chargin <[email protected]>
Delete the `v1` and `v2` directories from #327 (#472)

Test plan:
`node bin/sourcecred.js load sourcecred example-github` works
`yarn start` works
`...

efefc73e6bfcfb4faf42ee25c81e34e7a86da06e authored over 6 years ago by Dandelion Mané <[email protected]>
Copy `start` to `start-v3` (#471)

Summary:
This could also be moved into the bridge directory, but this way is
marginally easier...

0300a805fa867257f653a3801a2162cda17c37bb authored over 6 years ago by William Chargin <[email protected]>
Add load CLI command (#470)

The `load` command replaces `plugin-load`. By default, it loads data for
all plugins, and does ...

addaf4e2a85607669e979d16d0f48ed0d3dcda02 authored over 6 years ago by Dandelion Mané <[email protected]>
Move Express server API from V1 to bridge (#469)

Test Plan:
`yarn start` and `node bin/sourcecred.js start` both still work.

wchargin-branch:...

bb75cc54cd75ee00b9bd730501aebdd886798218 authored over 6 years ago by William Chargin <[email protected]>
Integrate PageRank to the v3 cred explorer! (#468)

This integrates the PageRank table from #466 into the v3 cred explorer
app, bringing the v3 fro...

d627475119ed8fea005dc4cb47ab9f2465dc2af1 authored over 6 years ago by Dandelion Mané <[email protected]>
Update V1 example-github data (#467)

Summary:
Fixes #445. Created with:

```
$ src/v1/plugins/github/fetchGithubRepoTest.sh -u
$...

c10ce0060b328f2cc0e7bdcd322a50993a3ffa4a authored over 6 years ago by William Chargin <[email protected]>
Recreate Pagerank Table (#466)

Ports #265 to the v3 branch, along with some tweaks:
- Only display log score, and normalize th...

65b5babac4055aeb1c9c0f1cd562700af496bf80 authored over 6 years ago by Dandelion Mané <[email protected]>
Add “node types” listing to plugin adapter (#464)

Summary:
This enables plugins to specify different semantic types of nodes, along
with human-r...

72be58a5c0920462429ba72da6798d0c9549bd9c authored over 6 years ago by William Chargin <[email protected]>
Add `name` function to plugin adapter (#463)

Summary:
This presents a human-readable name for a plugin. It’s not yet used
anywhere.

Pair...

728a3cdf3753b7719c2f11b124497dcbe44d5372 authored over 6 years ago by William Chargin <[email protected]>
Add GitPluginAdapter and Git render module (#462)

Test plan:
Run the following commands:

```
node bin/sourcecredV3.js load-plugin-v3 sourcecr...

dd063f5203acaad7fce13ea3cfedac92507626bb authored over 6 years ago by Dandelion Mané <[email protected]>
Implement the GitHub plugin adapter (#461)

Summary:
This enables grabbing the GitHub relational view from disk and
converting it to a gra...

4767dce74940a986e40e68180916e8ead6e51022 authored over 6 years ago by William Chargin <[email protected]>
Allow selecting data to load in V3 cred explorer (#460)

Summary:
Text input boxes for repository owner and name now appear. “Loading the
data” consist...

95c206b346718cfadf809cf84250162042a57898 authored over 6 years ago by William Chargin <[email protected]>
Add support for detecting cross-repo references (#459)

In GitHub, you can make cross repo references. For example,
sourcecred/sourcecred#459 is one su...

0b3c91a7bd0cff9f9f905b76cf5f63cd7840a24e authored over 6 years ago by Dandelion Mané <[email protected]>
Add `loadGitData` and wire it into CLI (#458)

This commit adds `loadGitData`, which clones the git repository for a
given repo and saves the ...

ba4fa8e8204ef3c032f4efbfd9ee7287bdae49d6 authored over 6 years ago by Dandelion Mané <[email protected]>
Remove `babel-plugin-flow-react-proptypes` (#457)

Summary:
Pending the resolution of brigand/babel-plugin-flow-react-proptypes#201,
we’re removi...

a5d19c80aad9abfadd1840a89a7f0e8bb2db4cd3 authored over 6 years ago by William Chargin <[email protected]>
Add `view.entity` (#456)

This method takes an arbitrary structured address and returns an entity
for it (if a matching e...

ffdfdca22aa9aee10dcf719b97b7adf7675a849c authored over 6 years ago by Dandelion Mané <[email protected]>
Add the `attribution/pagerank` module (#455)

This module exposes a method, `pagerank`, which is a convenient entry
point for taking a `Graph...

fe64377194304046e3b82d8992b0b8b3f730223f authored over 6 years ago by Dandelion Mané <[email protected]>
Require all `findStationaryDistribution` options (#453)

I'm planning to make a `pagerank.js` module that is a clean entry point
for all the graph-pager...

5c93085430f5b6ebaead7630d7c967f913a1b2d3 authored over 6 years ago by Dandelion Mané <[email protected]>
Fix off-by-1 error in PageRank iteration limit (#452)

If `findStationaryDistribution` is passed `0` as `maxIterations`, then
it should return the ini...

a5608dd7c80c3feaf74081c163a2101438989e6d authored over 6 years ago by Dandelion Mané <[email protected]>
Implement detection of paired authorship (#451)

This commit enables paired authorship on GitHub authored entities.
If the entity has the string...

4afa5424226d9df03a68872fab2e9148db71aa4b authored over 6 years ago by Dandelion Mané <[email protected]>
Add an entry point for the V3 app (#450)

Summary:
This implements Step 3 of the plan described in #448.

Test Plan:
Run `yarn start` ...

d74d760f43f6e309be330ca5f41f0d18b68ba5bd authored over 6 years ago by William Chargin <[email protected]>
Add a “version select” to the bridged app (#449)

Summary:
The bridge now lets you select any version of the app that you want, as
long as that’...

1d49ec87dc82c58b52801847c8d7ac98c55ab90d authored over 6 years ago by William Chargin <[email protected]>
Create a bridge for the V1 and V3 apps (#448)

Summary:
Our build system doesn’t make it easy to have two separate React
applications, which ...

ca5346b524ba494169e5a495bee86e503a0e652f authored over 6 years ago by William Chargin <[email protected]>
Save the GitHub relational store from the CLI (#447)

Summary:
This provides a command-line entry point `load-plugin-v3` (which will
become `load-pl...

4184e8594a80e5c1c55a66db100e3281775ac727 authored over 6 years ago by William Chargin <[email protected]>
Create a V3 command-line entry point (#446)

Summary:
Due to oclif’s structure, this entry point shares its `commands`
directory with that ...

3835862f82c32c8d4beb550709e1352666942973 authored over 6 years ago by William Chargin <[email protected]>
Update example-github data (#445)

Generated via
```
$ src/v3/plugins/github/fetchGithubRepoTest.sh -u
```

Test plan: travis

3bf496b06fd55b3e231bfbc9e90f1229b246c6c7 authored over 6 years ago by Dandelion Mané <[email protected]>
Include Pull additions/deletions (#444)

This adds additions and deletions to the v3 Pull data model, and also
uses them in the pull des...

baec3c15dd7a2d8217c5445f69274c9f7e1a7558 authored over 6 years ago by Dandelion Mané <[email protected]>
Add RelationalView.{to,from}JSON (#443)

This adds methods for serializing the GitHub RelationalView.

We have not put in the work to e...

6356c5477f3716e5a241cda0108505874f729dac authored over 6 years ago by Dandelion Mané <[email protected]>
Add `RelationalView.addData` (#442)

Now that we want to implement RelationalView de/serialization, we need a
way to construct one w...

64df5b09c3e0f95772d52e2bc728c4a805f5b606 authored over 6 years ago by Dandelion Mané <[email protected]>
Transform Markdown AST to strip formatting (#441)

Summary:
This makes progress on #432. We’d like to look for GitHub references
only within each...

4ee1ed54c8c23657f90b465a2c5355a76639ba8c authored over 6 years ago by William Chargin <[email protected]>
Add dependency on `commonmark` (#440)

Summary:
We plan to use this to more intelligently extract references from GitHub
text content...

0cc2907e9e3786d1eec7711ee354a3ce74025112 authored over 6 years ago by William Chargin <[email protected]>
GH: Add a `description` method for entities (#439)

This commit adds a `description` method that takes a GitHub entity, and
returns a description o...

607adeca296990e58f0b30b75fece09583fb54df authored over 6 years ago by Dandelion Mané <[email protected]>
Add `RelationalView.match` (#438)

`match` implements pattern matching over `Entity`

Test plan:
Unit tests included.

40db3cdfa311e5316f1d13112548b09fcbdf1ebf authored over 6 years ago by Dandelion Mané <[email protected]>
Export a clean `Entity` type from relationalView (#437)

Callers will want to write functions that are generic over `Entity`.
This makes those call sign...

e239fdfeebe77f21305fbaeb6908d93920d066e1 authored over 6 years ago by Dandelion Mané <[email protected]>
Add a GitHub `example` module (#436)

Currently, GitHub tests load example data with ad-hoc methods. It makes
it easy for the author ...

a8f54530bc0862d261f3cb562a48df49cf283c87 authored over 6 years ago by Dandelion Mané <[email protected]>
Rename `demoData` folders to `example` (#435)

The Git and GitHub plugins have folders that contain small example data,
as used for tests and ...

529f7db374e2edd7f3f6836c902cece4dedc7f74 authored over 6 years ago by Dandelion Mané <[email protected]>
Add references to the GitHub graph (#434)

This is a very simple extension of #431 to use the new reference
detection logic added in #429....

38942d1f7b9b0f95d4cc0ac95622c04cac5a4c93 authored over 6 years ago by Dandelion Mané <[email protected]>
Refactor GH `createGraph` to use `RelationalView` (#428)

This commit modifies `github/createGraph` to use the `RelationalView`
class created in #424. Th...

1421148a6d8466a94e8ab305c1a3cdb52e9ab073 authored over 6 years ago by Dandelion Mané <[email protected]>
`RelationalView` tracks GitHub references (#431)

For every `TextContentEntity` (`Issue`, `Pull`, `Review`, `Comment`),
this commit adds a `refer...

c022b3f4d04ad8ff27399053a8c97076675bb3f8 authored over 6 years ago by Dandelion Mané <[email protected]>
Add porcelain-style classes to `RelationalView` (#424)

Based on offline design discussion with @wchargin, we've decided to
upgrade the `RelationalView...

6235febdac242a8b450b7ea41e1f833575e55253 authored over 6 years ago by Dandelion Mané <[email protected]>
Convert V3 graphs to Markov chains (#427)

Summary:
This is based on the V1 file `basicPagerank.js`. The API is necessarily
changed for t...

e7b28b81dbecf5bab732c1c61aff10d24be590e3 authored over 6 years ago by William Chargin <[email protected]>
Expose `advancedGraph` test case (#426)

Summary:
We’d like to use this test case to generate a Markov chain, which
requires that it no...

b9c67f447fda612ebf7220c8e82c34cdc4b4c1f9 authored over 6 years ago by William Chargin <[email protected]>
Copy Markov chain code from V1 to V3 (#425)

Summary:
This code is independent of the graph abstraction, and so is mostly
copied. The only ...

faa2f8c9d00b8742f85ed0fc61bd07b07cb8314e authored over 6 years ago by William Chargin <[email protected]>
Rename `findReferences` to `parseReferences` (#429)

This code is about parsing references out of text, so `parseReferences`
is a better name.

Th...

659fc51d9b623a19fef2fabdda9963155a7376b8 authored over 6 years ago by Dandelion Mané <[email protected]>
Represent submodule commits as normal commits (#423)

Summary:
Closes #417. Submodule commits are dead; long live commits. The ontology
is now:

...

518d5b819c2628b20f5f12e406ce312f7e35cd73 authored over 6 years ago by William Chargin <[email protected]>
Allow Git commits to have zero or one tree (#422)

Summary:
Submodule commits need not have associated tree objects, in case the
repository to wh...

38c364c9164cac6a547767a87de8396e25c95de1 authored over 6 years ago by William Chargin <[email protected]>
Implement a Git graph view (#415)

Summary:
Similar in structure to the GitHub graph view.

Test Plan:
Unit tests added, with f...

dd83d7b4abdbaab1e44aa0474eecafc180d279ce authored over 6 years ago by William Chargin <[email protected]>
Create Git graph (#406)

Summary:
This commit adds logic to create the Git graph, modeled after the GitHub
graph creato...

0522894a8d5abc45eaac5397ee0cb893e2b6ad3b authored over 6 years ago by William Chargin <[email protected]>
Add GitHub `RelationalView` (#411)

The `RelationalView` maps the GitHub GraphQL response data into a View
class, which makes it ea...

a470f282043c2940b29b91c97ee120de052b09df authored over 6 years ago by Dandelion Mané <[email protected]>
Copy `github/findReferences` from v1 to v3 (#410)

The code will be refactored so that references are expressed in terms of
the GitHub node addres...

2dec8868db069976fb3c270b8f18b7afaaaeb7d4 authored over 6 years ago by Dandelion Mané <[email protected]>
Cache core graph `checkInvariants` result (#408)

Summary:
The public method `checkInvariants` on graph is now cached. The cache is
invalidated ...

127200f67c2a1ba5699c407e20b8c3f18e0227f2 authored over 6 years ago by William Chargin <[email protected]>
create the GitHub graph (#405)

This commit:
- adds `github/createGraph.js`
- which ingests GitHub GraphQL response
- and...

a209caeec21e513d7f2cdd9b893cac2f25241c61 authored over 6 years ago by Dandelion Mané <[email protected]>
Use Git Commit type in GitHub mergedAs edge (#407)

Test plan:
`yarn travis` passes

24a7547e16a1af023320bff66a5ff58ad7b04391 authored over 6 years ago by Dandelion Mané <[email protected]>
Add edge type definitions for V3 Git plugin (#404)

Summary:
This is modeled after the GitHub edge module format. In particular, the
whole length ...

448fb3e1a8662e4ce84dbb9b929ea981c6368802 authored over 6 years ago by William Chargin <[email protected]>
Add node type definitions for V3 Git plugin (#403)

Summary:
This is modeled after the GitHub node module format, with the obvious
alterations plu...

7c1b3ca835e96110be6627fe1f9f4b2fc025b5a2 authored over 6 years ago by William Chargin <[email protected]>
Remove payload definitions from V3 `git/types.js` (#402)

Test Plan:
Existing Flow and unit tests suffice.

wchargin-branch: git-v3-remove-payloads

83151d9fac552abd0e6b94ba38ff3ced2c0c3c12 authored over 6 years ago by William Chargin <[email protected]>
Copy graph-independent V1 Git plugin code to V3 (#401)

Summary:
Many files are unchanged. Some files have had paths updated, or new
build/test target...

9347348dd7b7c8e62a397490b88a11bb3e58a6db authored over 6 years ago by William Chargin <[email protected]>
Greatly simplify GitHub edge tests (#400)

Summary:
We had `edgeExamples`, wherein we constructed examples of edge addresses
(not actual ...

281cb574d5bc7f2a7abb7d61fe58651815f4ac3c authored over 6 years ago by William Chargin <[email protected]>
Use `edgeToParts` in the GitHub edge tests (#399)

Test Plan:
Observe that the new snapshots are easier to read. Might as well make
sure that the...

b9c01d13c9235d3c73cfef714df784dd918dc2ca authored over 6 years ago by William Chargin <[email protected]>
Add `edgeToParts` convenience export from `Graph` (#398)

Summary:
We have `edgeToString`, which formats edges as nicely human-readable
strings. However...

aac2fc6792f4530929e58f812a1d262b85f6f7d9 authored over 6 years ago by William Chargin <[email protected]>
Fix GitHub node `fromRaw` error-path test cases (#397)

Summary:
In #394, we uppercased the constants for GitHub node types. However, we
were using st...

ea74955a66a91301d6b26d0748c3a63f02565733 authored over 6 years ago by William Chargin <[email protected]>
Add GitHub prefixes and const types (#395)

- Switch string constant node and edge types (e.g. "REPO") to exported
consts (eg `export const...

ed3397f6549565420c7137e45006fe2b64eb9fa6 authored over 6 years ago by Dandelion Mané <[email protected]>
Add `CommentableAddress` (#396)

Test plan: Not needed.

Paired with @wchargin

a8bf6a36bf2c995dc91d778fc8be6664e371f3e8 authored over 6 years ago by Dandelion Mané <[email protected]>
Use uppercase enum constants in GitHub addresses (#394)

Summary:
@decentralion wants this! :-)

Test Plan:
Verify that the case-insensitive diff is ...

b6eebddeb0990002ed6c1585b14c10cc1265d8b4 authored over 6 years ago by William Chargin <[email protected]>
Use `NodeAddress.empty` and `EdgeAddress.empty` (#393)

Summary:
This fixes up all instances of `fromParts([])` that are not in
`address.js` or `addre...

7ce4a0c32de1c2bee51af74840364a63b4730138 authored over 6 years ago by William Chargin <[email protected]>
Add `empty` (monoid identity) to address modules (#392)

Summary:
This can make invocations of `FooAddress.fromParts([])` a bit more
succinct.

Paire...

6ba6d885ad65ed4264cb365c8afa367f9706fc00 authored over 6 years ago by William Chargin <[email protected]>
Add `Graph.edges` filtering by prefixing (#391)

Similar to #390, we now allow filtering the results from `Graph.edges`
by address prefixes. It'...

7199586262850d0d9e506439bddec4e70c48a68a authored over 6 years ago by Dandelion Mané <[email protected]>
Implement prefix filtering for `Graph.nodes` (#390)

Simple API addition to match v1/v2 semantics.
In the future, we can perf optimize this if we sw...

1a08a48c0333ec0ecffdc378bc6d24a2661d3556 authored over 6 years ago by Dandelion Mané <[email protected]>
Add methods for parsing Ids from GitHub urls (#388)

Test plan:
Unit tests added. Run `yarn travis`.

The GitHub regex code is inspired by work in...

95c5af36d934ccea2015f52fcc79098324ecc157 authored over 6 years ago by Dandelion Mané <[email protected]>
Add GitHub `edges` module (#385)

Summary:
This module includes a raw edge type, a structured edge type, and edge
creation funct...

2491fcd3cb3f10d971603458a8cac9c58c305390 authored over 6 years ago by William Chargin <[email protected]>
Add trait-specific GitHub address types (#387)

Will be useful in graph creation logic, and in #385

Test plan: Only change is to add types. N...

17b390afe94e9f0bdf0635c2b8bdf04287e04d7f authored over 6 years ago by Dandelion Mané <[email protected]>
Export `_githubAddress` from GitHub `nodes` (#384)

Summary:
We’ll want to use this in the upcoming `edges` module.

Test Plan:
Existing unit te...

25f74b89e91f73868bf5cf773c65ea575a4814e2 authored over 6 years ago by William Chargin <[email protected]>
Github Addresses: Rename `fragment` to `id` (#386)

Test plan:
`yarn travis`

ad9ac55bef4aaa6fbe56c5c80f4964bf2f319665 authored over 6 years ago by Dandelion Mané <[email protected]>
Rename various aspects of GitHub `nodes` module (#383)

Summary:
First, we rename the module itself from `address` to `nodes`: we’d like
to put the ed...

748f9210a65f3d827c42190c77a423ef228c0764 authored over 6 years ago by William Chargin <[email protected]>
gh plugin: use consistent concise naming for pulls (#381)

One of the slight modifications we've made in v3 is to effect the
following renames (as impleme...

e4d9ce1565f1b8e9038136905e94b2f00e3a337c authored over 6 years ago by Dandelion Mané <[email protected]>
Add snapshot test for GitHub GraphQL query (#382)

Summary:
This has two primary benefits:
- Humans can look at this snapshot file to see what’...

a3f2b820739d9c3c5a523cc52cfcf445936811b4 authored over 6 years ago by William Chargin <[email protected]>
Add an address module for the GitHub plugin (#380)

Summary:
This module exposes a structured type `StructuredAddress`, an embedding
`GithubAddres...

773596755a0b1f65d0ed023814d09a85d99a88e4 authored over 6 years ago by Dandelion Mané <[email protected]>
Port GitHub data ingestion into v3 (#378)

This commit copies the following logic necessary for downloading GitHub
data into v3. Minimal c...

0339d9f41b5473d9a64ca71311e671fe2c0110ff authored over 6 years ago by Dandelion Mané <[email protected]>
Update GitHub example repository data (#379)

Summary:
We’ve added a comment directly on a pull request.

Paired with @decentralion.

Tes...

ed70947c634380db64beacfdc6df3081908d10e3 authored over 6 years ago by William Chargin <[email protected]>
Check graph invariants during tests (#372)

Summary:
Each of the invariants listed at the top of the `Graph` class is now
explicitly check...

5d3cfd82e46ee7ccb50f73b23ca4b2d7a6e7d3fa authored over 6 years ago by William Chargin <[email protected]>
Add an `advancedGraph` test case (#377)

The `advancedGraph` is an example graph defined in `graph.test.js`.
It shows off many tricksy f...

c352b5b8d6be0bda4b78bafc0119fdea6dc91de4 authored over 6 years ago by Dandelion Mané <[email protected]>
Implement `Graph.toJSON` and `Graph.fromJSON` (#374)

The serialization scheme uses `IndexedEdge`s:

```js
type Integer = number;
type IndexedEdge...

5fc0d42c1fc4a7f8686bc7da3c286a35c19c87bc authored over 6 years ago by Dandelion Mané <[email protected]>
Reimplement `Graph.copy` using `Graph.merge` (#376)

* Implement `Graph.merge`

Tests are mostly copied over from the v2, as implemented in #320.
...

6177f6c740e0717d9f092762e525e3e4ba50cf99 authored over 6 years ago by Dandelion Mané <[email protected]>
Implement `Graph.merge` (#375)

Tests are mostly copied over from the v2, as implemented in #320.
Some new tests were added, e....

46751d27075f480442ff979bc06b77aca72536ea authored over 6 years ago by Dandelion Mané <[email protected]>
Copy `v1/util` to `v3/util` (#373)

No changes made to the code - it's a straight copy.

Test plan:
Unit tests are included.

5fde1c10a5981fb194e309dca70fb2d7ca7955be authored over 6 years ago by Dandelion Mané <[email protected]>
Make invariants more precise (#371)

Summary:
The previously listed invariants were weak on two counts. First, it was
unstated that...

831f5f571c695447a676a77bd37e323b82fcddad authored over 6 years ago by William Chargin <[email protected]>
Implement `Graph.copy` (#370)

The implementation is quite simple. The tests are somewhat more
comprehensive than in v2 or v1....

d9e2850eb3c8d90aee6d3a0150b3f1be76f68fd4 authored over 6 years ago by Dandelion Mané <[email protected]>
Add and implement `Graph.equals` (#369)

It turns out we forgot to add this to the API, so I added it. I also
implemented it. The tests ...

feef1192502ee0160b60c7e916718c71171bd512 authored over 6 years ago by Dandelion Mané <[email protected]>
Implement `Graph.neighbors` (#368)

This is the change that puts the Graph into `Graph` :) We add `_inEdges`
and `_outEdges`, and u...

4a441eb287e5925926999994c209d0bf74fe9282 authored over 6 years ago by Dandelion Mané <[email protected]>