# New ports collection makefile for:	p5-Class-Adapter
# Date created:		2006-08-13
# Whom:			Tsung-Han Yeh <snowfly@yuntech.edu.tw>
#
# $FreeBSD$
#

PORTNAME=	Class-Adapter
PORTVERSION=	1.04
CATEGORIES=	devel perl5
MASTER_SITES=	CPAN
PKGNAMEPREFIX=	p5-

MAINTAINER=	snowfly@yuntech.edu.tw
COMMENT=	Perl implementation of the "Adapter" Design Pattern

BUILD_DEPENDS=	${SITE_PERL}/${PERL_ARCH}/Scalar/Util.pm:${PORTSDIR}/lang/p5-Scalar-List-Utils \
		${SITE_PERL}/${PERL_ARCH}/File/Spec.pm:${PORTSDIR}/devel/p5-PathTools \
		${SITE_PERL}/Test/More.pm:${PORTSDIR}/devel/p5-Test-Simple
RUN_DEPENDS=	${SITE_PERL}/${PERL_ARCH}/Scalar/Util.pm:${PORTSDIR}/lang/p5-Scalar-List-Utils \
		${SITE_PERL}/${PERL_ARCH}/File/Spec.pm:${PORTSDIR}/devel/p5-PathTools \
		${SITE_PERL}/Test/More.pm:${PORTSDIR}/devel/p5-Test-Simple

PERL_CONFIGURE=	yes

MAN3=		Class::Adapter.3 \
		Class::Adapter::Builder.3 \
		Class::Adapter::Clear.3

.include <bsd.port.mk>
lantw44/cgit/cgit.cgi/'><img src='/~lantw44/cgit-data/cgit.png' alt='cgit logo'/></a></td>
<td class='main'><a href='/~lantw44/cgit/cgit.cgi/'>index</a> : <a title='freebsd-ports-gnome' href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/'>freebsd-ports-gnome</a></td><td class='form'><form method='get'>
<input type='hidden' name='showmsg' value='1'/><select name='h' onchange='this.form.submit();'>
<option value='cinnamon'>cinnamon</option>
<option value='cinnamon-2.8'>cinnamon-2.8</option>
<option value='dependabot/npm_and_yarn/devel/electron4/files/bl-1.2.3'>dependabot/npm_and_yarn/devel/electron4/files/bl-1.2.3</option>
<option value='dependabot/npm_and_yarn/devel/electron4/files/elliptic-6.5.3'>dependabot/npm_and_yarn/devel/electron4/files/elliptic-6.5.3</option>
<option value='dependabot/npm_and_yarn/devel/electron4/files/elliptic-6.5.4'>dependabot/npm_and_yarn/devel/electron4/files/elliptic-6.5.4</option>
<option value='dependabot/npm_and_yarn/devel/electron4/files/ini-1.3.7'>dependabot/npm_and_yarn/devel/electron4/files/ini-1.3.7</option>
<option value='dependabot/npm_and_yarn/devel/electron4/files/lodash-4.17.19'>dependabot/npm_and_yarn/devel/electron4/files/lodash-4.17.19</option>
<option value='dependabot/npm_and_yarn/devel/electron4/files/lodash.merge-4.6.2'>dependabot/npm_and_yarn/devel/electron4/files/lodash.merge-4.6.2</option>
<option value='dependabot/npm_and_yarn/devel/electron4/files/minimist-1.2.2'>dependabot/npm_and_yarn/devel/electron4/files/minimist-1.2.2</option>
<option value='dependabot/npm_and_yarn/devel/electron4/files/minimist-1.2.3'>dependabot/npm_and_yarn/devel/electron4/files/minimist-1.2.3</option>
<option value='dependabot/npm_and_yarn/devel/electron4/files/node-fetch-2.6.1'>dependabot/npm_and_yarn/devel/electron4/files/node-fetch-2.6.1</option>
<option value='dependabot/npm_and_yarn/devel/electron4/files/serve-10.1.2'>dependabot/npm_and_yarn/devel/electron4/files/serve-10.1.2</option>
<option value='dependabot/npm_and_yarn/devel/electron4/files/y18n-3.2.2'>dependabot/npm_and_yarn/devel/electron4/files/y18n-3.2.2</option>
<option value='dependabot/npm_and_yarn/devel/electron6/files/elliptic-6.5.3'>dependabot/npm_and_yarn/devel/electron6/files/elliptic-6.5.3</option>
<option value='dependabot/npm_and_yarn/devel/electron6/files/elliptic-6.5.4'>dependabot/npm_and_yarn/devel/electron6/files/elliptic-6.5.4</option>
<option value='dependabot/npm_and_yarn/devel/electron6/files/ini-1.3.8'>dependabot/npm_and_yarn/devel/electron6/files/ini-1.3.8</option>
<option value='dependabot/npm_and_yarn/devel/electron6/files/lodash-4.17.19'>dependabot/npm_and_yarn/devel/electron6/files/lodash-4.17.19</option>
<option value='dependabot/npm_and_yarn/devel/electron6/files/lodash.merge-4.6.2'>dependabot/npm_and_yarn/devel/electron6/files/lodash.merge-4.6.2</option>
<option value='dependabot/npm_and_yarn/devel/electron6/files/node-fetch-2.6.1'>dependabot/npm_and_yarn/devel/electron6/files/node-fetch-2.6.1</option>
<option value='dependabot/npm_and_yarn/devel/electron6/files/serve-10.1.2'>dependabot/npm_and_yarn/devel/electron6/files/serve-10.1.2</option>
<option value='gnome-3.22'>gnome-3.22</option>
<option value='gnome-3.24' selected='selected'>gnome-3.24</option>
<option value='gnome-3.26'>gnome-3.26</option>
<option value='gnome-3.28'>gnome-3.28</option>
<option value='gnome-3.32'>gnome-3.32</option>
<option value='gnome-3.36'>gnome-3.36</option>
<option value='gstreamer'>gstreamer</option>
<option value='gstreamer-1.16'>gstreamer-1.16</option>
<option value='gstreamer0.10-removal'>gstreamer0.10-removal</option>
<option value='main'>main</option>
<option value='master'>master</option>
<option value='mate-1.16'>mate-1.16</option>
<option value='mate-1.18'>mate-1.18</option>
<option value='mate-1.20'>mate-1.20</option>
<option value='mate-1.22'>mate-1.22</option>
</select> <input type='submit' value='switch'/></form></td></tr>
<tr><td class='sub'>FreeBSD GNOME current development ports (https://github.com/freebsd/freebsd-ports-gnome)</td><td class='sub right'></td></tr></table>
<table class='tabs'><tr><td>
<a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/about/?h=gnome-3.24'>about</a><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/?h=gnome-3.24'>summary</a><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/refs/?h=gnome-3.24'>refs</a><a class='active' href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/log/www/p5-URI-ToDisk/pkg-plist?h=gnome-3.24&amp;showmsg=1'>log</a><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/tree/www/p5-URI-ToDisk/pkg-plist?h=gnome-3.24'>tree</a><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/commit/www/p5-URI-ToDisk/pkg-plist?h=gnome-3.24'>commit</a><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/diff/www/p5-URI-ToDisk/pkg-plist?h=gnome-3.24'>diff</a><a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/stats/www/p5-URI-ToDisk/pkg-plist?h=gnome-3.24'>stats</a></td><td class='form'><form class='right' method='get' action='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/log/www/p5-URI-ToDisk/pkg-plist'>
<input type='hidden' name='h' value='gnome-3.24'/><input type='hidden' name='showmsg' value='1'/><select name='qt'>
<option value='grep'>log msg</option>
<option value='author'>author</option>
<option value='committer'>committer</option>
<option value='range'>range</option>
</select>
<input class='txt' type='search' size='10' name='q' value=''/>
<input type='submit' value='search'/>
</form>
</td></tr></table>
<div class='path'>path: <a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/log/?h=gnome-3.24&amp;showmsg=1'>root</a>/<a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/log/www?h=gnome-3.24&amp;showmsg=1'>www</a>/<a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/log/www/p5-URI-ToDisk?h=gnome-3.24&amp;showmsg=1'>p5-URI-ToDisk</a>/<a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/log/www/p5-URI-ToDisk/pkg-plist?h=gnome-3.24&amp;showmsg=1'>pkg-plist</a></div><div class='content'><table class='list nowrap'><tr class='nohover'><th></th><th class='left'>Commit message (<a href='/~lantw44/cgit/cgit.cgi/freebsd-ports-gnome/log/www/p5-URI-ToDisk/pkg-plist?h=gnome-3.24'>Collapse</a>)</th><th class='left'>Author</th><th class='left'>Age</th><th class='left'>Files</th><th class='left'>Lines</th></tr>
 dl dd>:last-child {
    margin-bottom: 0px;
}
.markdown-body blockquote {
    border-left: 4px solid #DDD;
    padding: 0 15px;
    color: #777;
}
.markdown-body blockquote>:first-child {
    margin-top: 0px;
}
.markdown-body blockquote>:last-child {
    margin-bottom: 0px;
}
.markdown-body table th {
    font-weight: bold;
}
.markdown-body table th, .markdown-body table td {
    border: 1px solid #ccc;
    padding: 6px 13px;
}
.markdown-body table tr {
    border-top: 1px solid #ccc;
    background-color: #fff;
}
.markdown-body table tr:nth-child(2n) {
    background-color: #f8f8f8;
}
.markdown-body img {
    max-width: 100%;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
}
.markdown-body span.frame {
    display: block;
    overflow: hidden;
}
.markdown-body span.frame>span {
    border: 1px solid #ddd;
    display: block;
    float: left;
    overflow: hidden;
    margin: 13px 0 0;
    padding: 7px;
    width: auto;
}
.markdown-body span.frame span img {
    display: block;
    float: left;
}
.markdown-body span.frame span span {
    clear: both;
    color: #333;
    display: block;
    padding: 5px 0 0;
}
.markdown-body span.align-center {
    display: block;
    overflow: hidden;
    clear: both;
}
.markdown-body span.align-center>span {
    display: block;
    overflow: hidden;
    margin: 13px auto 0;
    text-align: center;
}
.markdown-body span.align-center span img {
    margin: 0 auto;
    text-align: center;
}
.markdown-body span.align-right {
    display: block;
    overflow: hidden;
    clear: both;
}
.markdown-body span.align-right>span {
    display: block;
    overflow: hidden;
    margin: 13px 0 0;
    text-align: right;
}
.markdown-body span.align-right span img {
    margin: 0;
    text-align: right;
}
.markdown-body span.float-left {
    display: block;
    margin-right: 13px;
    overflow: hidden;
    float: left;
}
.markdown-body span.float-left span {
    margin: 13px 0 0;
}
.markdown-body span.float-right {
    display: block;
    margin-left: 13px;
    overflow: hidden;
    float: right;
}
.markdown-body span.float-right>span {
    display: block;
    overflow: hidden;
    margin: 13px auto 0;
    text-align: right;
}
.markdown-body code, .markdown-body tt {
    margin: 0 2px;
    padding: 0px 5px;
    border: 1px solid #eaeaea;
    background-color: #f8f8f8;
    border-radius: 3px;
}
.markdown-body code {
    white-space: nowrap;
}
.markdown-body pre>code {
    margin: 0;
    padding: 0;
    white-space: pre;
    border: none;
    background: transparent;
}
.markdown-body .highlight pre, .markdown-body pre {
    background-color: #f8f8f8;
    border: 1px solid #ccc;
    font-size: 13px;
    line-height: 19px;
    overflow: auto;
    padding: 6px 10px;
    border-radius: 3px;
}
.markdown-body pre code, .markdown-body pre tt {
    margin: 0;
    padding: 0;
    background-color: transparent;
    border: none;
}
pre { line-height: 125%; }
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.highlight .hll { background-color: #ffffcc }
.highlight { background: #ffffff; }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */
.highlight .gr { color: #aa0000 } /* Generic.Error */
.highlight .gh { color: #333333 } /* Generic.Heading */
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #555555 } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #666666 } /* Generic.Subheading */
.highlight .gt { color: #aa0000 } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008800 } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */
.highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #336699 } /* Name.Attribute */
.highlight .nb { color: #003388 } /* Name.Builtin */
.highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555 } /* Name.Decorator */
.highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */
.highlight .nl { color: #336699; font-style: italic } /* Name.Label */
.highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */
.highlight .py { color: #336699; font-weight: bold } /* Name.Property */
.highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #336699 } /* Name.Variable */
.highlight .ow { color: #008800 } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */
.highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */
.highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */
.highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */
.highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */
.highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700 } /* Name.Variable.Global */
.highlight .vi { color: #3333bb } /* Name.Variable.Instance */
.highlight .vm { color: #336699 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
</style>   
<div class='markdown-body'><p><img src="https://github.com/0xProject/branding/blob/master/0x%20Logo/PNG/0x-Logo-Black.png" width="150px" ></p>
<hr>
<p><a href="https://0xproject.com">0x</a> is an open protocol that facilitates trustless, low friction exchange of Ethereum-based assets. For more information on how it works, check out the <a href="https://github.com/0xProject/0x-protocol-specification/blob/master/v2/v2-specification.md">0x protocol specification</a>.</p>
<p>This repository is a monorepo including the 0x protocol smart contracts and numerous developer tools. Each public sub-package is independently published to NPM.</p>
<p>If you're developing on 0x now or are interested in using 0x infrastructure in the future, please join our <a href="http://eepurl.com/dx4cPf">developer mailing list</a> for updates.</p>
<p><a href="https://circleci.com/gh/0xProject/0x-monorepo"><img alt="CircleCI" src="https://circleci.com/gh/0xProject/0x-monorepo.svg?style=svg&amp;circle-token=61bf7cd8c9b4e11b132089dfcffdd1be277d1e0c"></a>
<a href="https://coveralls.io/github/0xProject/0x-monorepo?branch=development"><img alt="Coverage Status" src="https://coveralls.io/repos/github/0xProject/0x-monorepo/badge.svg?branch=development"></a>
<a href="https://chat.0xproject.com"><img alt="Discord" src="https://img.shields.io/badge/chat-rocket.chat-yellow.svg?style=flat"></a>
<a href="https://gitter.im/0xProject/Lobby?utm_source=badge&amp;utm_medium=badge&amp;utm_campaign=pr-badge&amp;utm_content=badge"><img alt="Join the chat at https://gitter.im/0xProject/Lobby" src="https://badges.gitter.im/0xProject/Lobby.svg"></a>
<a href="https://opensource.org/licenses/Apache-2.0"><img alt="License" src="https://img.shields.io/badge/License-Apache%202.0-blue.svg"></a></p>
<h2 id="packages"><a class="toclink" href="#packages">Packages</a></h2>
<p>Visit our <a href="https://0xproject.com/docs/order-utils">developer portal</a> for a comprehensive list of core &amp; community maintained packages. All packages maintained with this monorepo are listed below.</p>
<h3 id="python-packages"><a class="toclink" href="#python-packages">Python Packages</a></h3>
<table>
<thead>
<tr>
<th>Package</th>
<th>Version</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="/python-packages/contract_addresses"><code>0x-contract-addresses</code></a></td>
<td><a href="https://pypi.org/project/0x-contract-addresses/"><img alt="PyPI" src="https://img.shields.io/pypi/v/0x-contract-addresses.svg"></a></td>
<td>A tiny utility library for getting known deployed contract addresses for a particular network</td>
</tr>
<tr>
<td><a href="/python-packages/contract_artifacts"><code>0x-contract-artifacts</code></a></td>
<td><a href="https://pypi.org/project/0x-contract-artifacts/"><img alt="PyPI" src="https://img.shields.io/pypi/v/0x-contract-artifacts.svg"></a></td>
<td>0x smart contract compilation artifacts</td>
</tr>
<tr>
<td><a href="/python-packages/json_schemas"><code>0x-json-schemas</code></a></td>
<td><a href="https://pypi.org/project/0x-json-schemas/"><img alt="PyPI" src="https://img.shields.io/pypi/v/0x-json-schemas.svg"></a></td>
<td>0x-related JSON schemas</td>
</tr>
<tr>
<td><a href="/python-packages/order_utils"><code>0x-order-utils</code></a></td>
<td><a href="https://pypi.org/project/0x-order-utils/"><img alt="PyPI" src="https://img.shields.io/pypi/v/0x-order-utils.svg"></a></td>
<td>A set of utilities for generating, parsing, signing and validating 0x orders</td>
</tr>
<tr>
<td><a href="/python-packages/sra_client"><code>0x-sra-client</code></a></td>
<td><a href="https://pypi.org/project/0x-sra-client/"><img alt="PyPI" src="https://img.shields.io/pypi/v/0x-sra-client.svg"></a></td>
<td>A Python client for interacting with servers conforming to the Standard Relayer API specification</td>
</tr>
</tbody>
</table>
<h3 id="typescriptjavascript-packages"><a class="toclink" href="#typescriptjavascript-packages">Typescript/Javascript Packages</a></h3>
<h4 id="0x-specific-packages"><a class="toclink" href="#0x-specific-packages">0x-specific packages</a></h4>
<table>
<thead>
<tr>
<th>Package</th>
<th>Version</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="/packages/0x.js"><code>0x.js</code></a></td>
<td><a href="https://www.npmjs.com/package/0x.js"><img alt="npm" src="https://img.shields.io/npm/v/0x.js.svg"></a></td>
<td>An aggregate package combining many smaller utility packages for interacting with the 0x protocol</td>
</tr>
<tr>
<td><a href="/packages/contract-addresses"><code>@0x/contract-addresses</code></a></td>
<td><a href="https://www.npmjs.com/package/@0x/contract-addresses"><img alt="npm" src="https://img.shields.io/npm/v/@0x/contract-addresses.svg"></a></td>
<td>A tiny utility library for getting known deployed contract addresses for a particular network.</td>
</tr>
<tr>
<td><a href="/packages/contract-wrappers"><code>@0x/contract-wrappers</code></a></td>
<td><a href="https://www.npmjs.com/package/@0x/contract-wrappers"><img alt="npm" src="https://img.shields.io/npm/v/@0x/contract-wrappers.svg"></a></td>
<td>JS/TS wrappers for interacting with the 0x smart contracts</td>
</tr>
<tr>
<td><a href="/packages/order-utils"><code>@0x/order-utils</code></a></td>
<td><a href="https://www.npmjs.com/package/@0x/order-utils"><img alt="npm" src="https://img.shields.io/npm/v/@0x/order-utils.svg"></a></td>
<td>A set of utilities for generating, parsing, signing and validating 0x orders</td>
</tr>
<tr>
<td><a href="/packages/json-schemas"><code>@0x/json-schemas</code></a></td>
<td><a href="https://www.npmjs.com/package/@0x/json-schemas"><img alt="npm" src="https://img.shields.io/npm/v/@0x/json-schemas.svg"></a></td>
<td>0x-related JSON schemas</td>
</tr>
<tr>
<td><a href="/packages/order-watcher"><code>@0x/order-watcher</code></a></td>
<td><a href="https://www.npmjs.com/package/@0x/order-watcher"><img alt="npm" src="https://img.shields.io/npm/v/@0x/order-watcher.svg"></a></td>
<td>An order watcher daemon that watches for order validity</td>
</tr>
<tr>
<td><a href="/packages/migrations"><code>@0x/migrations</code></a></td>
<td><a href="https://www.npmjs.com/package/@0x/migrations"><img alt="npm" src="https://img.shields.io/npm/v/@0x/migrations.svg"></a></td>
<td>Migration tool for deploying 0x smart contracts on private testnets</td>
</tr>
<tr>
<td><a href="/packages/contract-artifacts"><code>@0x/contract-artifacts</code></a></td>
<td><a href="https://www.npmjs.com/package/@0x/contract-artifacts"><img alt="npm" src="https://img.shields.io/npm/v/@0x/contract-artifacts.svg"></a></td>
<td>0x smart contract compilation artifacts</td>
</tr>
<tr>
<td><a href="/packages/abi-gen-wrappers"><code>@0x/abi-gen-wrappers</code></a></td>
<td><a href="https://www.npmjs.com/package/@0x/abi-gen-wrappers"><img alt="npm" src="https://img.shields.io/npm/v/@0x/abi-gen-wrappers.svg"></a></td>
<td>Low-level 0x smart contract wrappers generated using <code>@0x/abi-gen</code></td>
</tr>
<tr>
<td><a href="/packages/sra-spec"><code>@0x/sra-spec</code></a></td>
<td><a href="https://www.npmjs.com/package/@0x/sra-spec"><img alt="npm" src="https://img.shields.io/npm/v/@0x/sra-spec.svg"></a></td>
<td>OpenAPI specification for the Standard Relayer API</td>
</tr>
<tr>
<td><a href="/packages/connect"><code>@0x/connect</code></a></td>
<td><a href="https://www.npmjs.com/package/@0x/connect"><img alt="npm" src="https://img.shields.io/npm/v/@0x/connect.svg"></a></td>
<td>An HTTP/WS client for interacting with the Standard Relayer API</td>
</tr>
<tr>
<td><a href="/packages/asset-buyer"><code>@0x/asset-buyer</code></a></td>
<td><a href="https://www.npmjs.com/package/@0x/asset-buyer"><img alt="npm" src="https://img.shields.io/npm/v/@0x/asset-buyer.svg"></a></td>
<td>Convenience package for discovering and buying assets with Ether</td>
</tr>
</tbody>
</table>
<h4 id="ethereum-tooling"><a class="toclink" href="#ethereum-tooling">Ethereum tooling</a></h4>
<table>
<thead>
<tr>
<th>Package</th>
<th>Version</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="/packages/web3-wrapper"><code>@0x/web3-wrapper</code></a></td>
<td><a href="https://www.npmjs.com/package/@0x/web3-wrapper"><img alt="npm" src="https://img.shields.io/npm/v/@0x/web3-wrapper.svg"></a></td>
<td>An Ethereum JSON RPC client</td>
</tr>
<tr>
<td><a href="/packages/sol-compiler"><code>@dexon-foundation/sol-compiler</code></a></td>
<td><a href="https://www.npmjs.com/package/@dexon-foundation/sol-compiler"><img alt="npm" src="https://img.shields.io/npm/v/@dexon-foundation/sol-compiler.svg"></a></td>
<td>A wrapper around solc-js that adds smart re-compilation, ability to compile an entire project, Solidity version specific compilation, standard input description support and much more.</td>
</tr>
<tr>
<td><a href="/packages/sol-coverage"><code>@dexon-foundation/sol-coverage</code></a></td>
<td><a href="https://www.npmjs.com/package/@dexon-foundation/sol-coverage"><img alt="npm" src="https://img.shields.io/npm/v/@dexon-foundation/sol-coverage.svg"></a></td>
<td>A solidity test coverage tool</td>
</tr>
<tr>
<td><a href="/packages/sol-profiler"><code>@dexon-foundation/sol-profiler</code></a></td>
<td><a href="https://www.npmjs.com/package/@dexon-foundation/sol-profiler"><img alt="npm" src="https://img.shields.io/npm/v/@dexon-foundation/sol-profiler.svg"></a></td>
<td>A solidity gas cost profiler</td>
</tr>
<tr>
<td><a href="/packages/sol-trace"><code>@0x/sol-trace</code></a></td>
<td><a href="https://www.npmjs.com/package/@0x/sol-trace"><img alt="npm" src="https://img.shields.io/npm/v/@0x/sol-trace.svg"></a></td>
<td>A solidity stack trace tool</td>
</tr>
<tr>
<td><a href="/packages/sol-resolver"><code>@0x/sol-resolver</code></a></td>
<td><a href="https://www.npmjs.com/package/@0x/sol-resolver"><img alt="npm" src="https://img.shields.io/npm/v/@0x/sol-resolver.svg"></a></td>
<td>Import resolver for smart contracts dependencies</td>
</tr>
<tr>
<td><a href="/packages/subproviders"><code>@dexon-foundation/subproviders</code></a></td>
<td><a href="https://www.npmjs.com/package/@dexon-foundation/subproviders"><img alt="npm" src="https://img.shields.io/npm/v/@dexon-foundation/subproviders.svg"></a></td>
<td>Web3 provider middlewares (e.g. LedgerSubprovider)</td>
</tr>
<tr>
<td><a href="/packages/sol-doc"><code>@dexon-foundation/sol-doc</code></a></td>
<td><a href="https://www.npmjs.com/package/@dexon-foundation/sol-doc"><img alt="npm" src="https://img.shields.io/npm/v/@dexon-foundation/sol-doc.svg"></a></td>
<td>Solidity documentation generator</td>
</tr>
</tbody>
</table>
<h4 id="utilities"><a class="toclink" href="#utilities">Utilities</a></h4>
<table>
<thead>
<tr>
<th>Package</th>
<th>Version</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="/packages/abi-gen"><code>@0x/abi-gen</code></a></td>
<td><a href="https://www.npmjs.com/package/@0x/abi-gen"><img alt="npm" src="https://img.shields.io/npm/v/@0x/abi-gen.svg"></a></td>
<td>Tool to generate TS wrappers from smart contract ABIs</td>
</tr>
<tr>
<td><a href="/packages/tslint-config"><code>@0x/tslint-config</code></a></td>
<td><a href="https://www.npmjs.com/package/@0x/tslint-config"><img alt="npm" src="https://img.shields.io/npm/v/@0x/tslint-config.svg"></a></td>
<td>Custom TSLint rules used by the 0x core team</td>
</tr>
<tr>
<td><a href="/packages/types"><code>@0x/types</code></a></td>
<td><a href="https://www.npmjs.com/package/@0x/types"><img alt="npm" src="https://img.shields.io/npm/v/@0x/types.svg"></a></td>
<td>Shared type declarations</td>
</tr>
<tr>
<td><a href="/packages/typescript-typings"><code>@0x/typescript-typings</code></a></td>
<td><a href="https://www.npmjs.com/package/@0x/typescript-typings"><img alt="npm" src="https://img.shields.io/npm/v/@0x/typescript-typings.svg"></a></td>
<td>Repository of types for external packages</td>
</tr>
<tr>
<td><a href="/packages/utils"><code>@0x/utils</code></a></td>
<td><a href="https://www.npmjs.com/package/@0x/utils"><img alt="npm" src="https://img.shields.io/npm/v/@0x/utils.svg"></a></td>
<td>Shared utilities</td>
</tr>
<tr>
<td><a href="/packages/react-docs"><code>@0x/react-docs</code></a></td>
<td><a href="https://www.npmjs.com/package/@0x/react-docs"><img alt="npm" src="https://img.shields.io/npm/v/@0x/react-docs.svg"></a></td>
<td>React documentation component for rendering TypeDoc &amp; sol-doc generated JSON</td>
</tr>
<tr>
<td><a href="/packages/react-shared"><code>@0x/react-shared</code></a></td>
<td><a href="https://www.npmjs.com/package/@0x/react-shared"><img alt="npm" src="https://img.shields.io/npm/v/@0x/react-shared.svg"></a></td>
<td>0x shared react components</td>
</tr>
<tr>
<td><a href="/packages/assert"><code>@0x/assert</code></a></td>
<td><a href="https://www.npmjs.com/package/@0x/assert"><img alt="npm" src="https://img.shields.io/npm/v/@0x/assert.svg"></a></td>
<td>Type and schema assertions used by our packages</td>
</tr>
<tr>
<td><a href="/packages/base-contract"><code>@0x/base-contract</code></a></td>
<td><a href="https://www.npmjs.com/package/@0x/base-contract"><img alt="npm" src="https://img.shields.io/npm/v/@0x/base-contract.svg"></a></td>
<td>BaseContract used by auto-generated <code>abi-gen</code> wrapper contracts</td>
</tr>
<tr>
<td><a href="/packages/dev-utils"><code>@0x/dev-utils</code></a></td>
<td><a href="https://www.npmjs.com/package/@0x/dev-utils"><img alt="npm" src="https://img.shields.io/npm/v/@0x/dev-utils.svg"></a></td>
<td>Dev utils to be shared across 0x packages</td>
</tr>
<tr>
<td><a href="/packages/fill-scenarios"><code>@0x/fill-scenarios</code></a></td>
<td><a href="https://www.npmjs.com/package/@0x/fill-scenarios"><img alt="npm" src="https://img.shields.io/npm/v/@0x/fill-scenarios.svg"></a></td>
<td>0x order fill scenario generator</td>
</tr>
</tbody>
</table>
<h4 id="private-packages"><a class="toclink" href="#private-packages">Private Packages</a></h4>
<table>
<thead>
<tr>
<th>Package</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="/contracts/core"><code>@0x/contracts</code></a></td>
<td>0x protocol solidity smart contracts &amp; tests</td>
</tr>
<tr>
<td><a href="/packages/instant"><code>@0x/instant</code></a></td>
<td>A free and flexible way to offer simple crypto purchasing in any app or website.</td>
</tr>
<tr>
<td><a href="/packages/testnet-faucets"><code>@0x/testnet-faucets</code></a></td>
<td>A faucet micro-service that dispenses test ERC20 tokens or Ether</td>
</tr>
<tr>
<td><a href="/packages/website"><code>@0x/website</code></a></td>
<td>0x website</td>
</tr>
</tbody>
</table>
<h2 id="usage"><a class="toclink" href="#usage">Usage</a></h2>
<p>Node version &gt;= 6.12 is required.</p>
<p>Most of the packages require additional typings for external dependencies.
You can include those by prepending the <code>@0x/typescript-typings</code> package to your <a href="http://www.typescriptlang.org/docs/handbook/tsconfig-json.html"><code>typeRoots</code></a> config.</p>
<div class="highlight"><pre><span></span><code><span class="nt">&quot;typeRoots&quot;</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">&quot;node_modules/@0x/typescript-typings/types&quot;</span><span class="p">,</span><span class="w"> </span><span class="s2">&quot;node_modules/@types&quot;</span><span class="p">],</span>
</code></pre></div>

<h2 id="contributing"><a class="toclink" href="#contributing">Contributing</a></h2>
<p>We strongly recommend that the community help us make improvements and determine the future direction of the protocol. To report bugs within this package, please create an issue in this repository.</p>
<h4 id="read-our-contribution-guidelines"><a class="toclink" href="#read-our-contribution-guidelines">Read our <a href="./CONTRIBUTING.md">contribution guidelines</a>.</a></h4>
<h3 id="install-dependencies"><a class="toclink" href="#install-dependencies">Install dependencies</a></h3>
<p>Make sure you are using Yarn v1.9.4. To install using brew:</p>
<div class="highlight"><pre><span></span><code>brew<span class="w"> </span>install<span class="w"> </span>yarn@1.9.4
</code></pre></div>

<p>Then install dependencies</p>
<div class="highlight"><pre><span></span><code>yarn<span class="w"> </span>install
</code></pre></div>

<h3 id="build"><a class="toclink" href="#build">Build</a></h3>
<p>To build all packages:</p>
<div class="highlight"><pre><span></span><code>yarn<span class="w"> </span>build
</code></pre></div>

<p>To build a specific package:</p>
<div class="highlight"><pre><span></span><code><span class="nv">PKG</span><span class="o">=</span>@0x/web3-wrapper<span class="w"> </span>yarn<span class="w"> </span>build
</code></pre></div>

<h3 id="watch"><a class="toclink" href="#watch">Watch</a></h3>
<p>To re-build all packages on change:</p>
<div class="highlight"><pre><span></span><code>yarn<span class="w"> </span>watch
</code></pre></div>

<p>To watch a specific package and all it's dependent packages:</p>
<div class="highlight"><pre><span></span><code><span class="nv">PKG</span><span class="o">=[</span>NPM_PACKAGE_NAME<span class="o">]</span><span class="w"> </span>yarn<span class="w"> </span>watch

e.g
<span class="nv">PKG</span><span class="o">=</span>@0x/web3-wrapper<span class="w"> </span>yarn<span class="w"> </span>watch
</code></pre></div>

<h3 id="clean"><a class="toclink" href="#clean">Clean</a></h3>
<p>Clean all packages:</p>
<div class="highlight"><pre><span></span><code>yarn<span class="w"> </span>clean
</code></pre></div>

<p>Clean a specific package</p>
<div class="highlight"><pre><span></span><code><span class="nv">PKG</span><span class="o">=</span>0x.js<span class="w"> </span>yarn<span class="w"> </span>clean
</code></pre></div>

<h3 id="rebuild"><a class="toclink" href="#rebuild">Rebuild</a></h3>
<p>To re-build (clean &amp; build) all packages:</p>
<div class="highlight"><pre><span></span><code>yarn<span class="w"> </span>rebuild
</code></pre></div>

<p>To re-build (clean &amp; build) a specific package &amp; it's deps:</p>
<div class="highlight"><pre><span></span><code><span class="nv">PKG</span><span class="o">=</span>0x.js<span class="w"> </span>yarn<span class="w"> </span>rebuild
</code></pre></div>

<h3 id="lint"><a class="toclink" href="#lint">Lint</a></h3>
<p>Lint all packages:</p>
<div class="highlight"><pre><span></span><code>yarn<span class="w"> </span>lint
</code></pre></div>

<p>Lint a specific package:</p>
<div class="highlight"><pre><span></span><code><span class="nv">PKG</span><span class="o">=</span>0x.js<span class="w"> </span>yarn<span class="w"> </span>lint
</code></pre></div>

<h3 id="run-tests"><a class="toclink" href="#run-tests">Run Tests</a></h3>
<p>Run all tests:</p>
<div class="highlight"><pre><span></span><code>yarn<span class="w"> </span><span class="nb">test</span>
</code></pre></div>

<p>Run a specific package's test:</p>
<div class="highlight"><pre><span></span><code><span class="nv">PKG</span><span class="o">=</span>@0x/web3-wrapper<span class="w"> </span>yarn<span class="w"> </span><span class="nb">test</span>
</code></pre></div></div>