Move Documentation to the @0xproject/react-docs
package
This commit is contained in:
5
packages/react-docs/.npmignore
Normal file
5
packages/react-docs/.npmignore
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
.*
|
||||||
|
yarn-error.log
|
||||||
|
/src/
|
||||||
|
/scripts/
|
||||||
|
tsconfig.json
|
3
packages/react-docs/CHANGELOG.md
Normal file
3
packages/react-docs/CHANGELOG.md
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
# CHANGELOG
|
||||||
|
|
||||||
|
## vX.X.X - _TBD, 2018_
|
47
packages/react-docs/README.md
Normal file
47
packages/react-docs/README.md
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
## @0xproject/react-docs
|
||||||
|
|
||||||
|
A full-page React component for rendering beautiful documentation generated with [TypeDoc](http://typedoc.org/) or [Doxity](https://github.com/0xproject/doxity).
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
```bash
|
||||||
|
yarn add @0xproject/react-docs
|
||||||
|
```
|
||||||
|
|
||||||
|
## Contributing
|
||||||
|
|
||||||
|
We strongly encourage 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.
|
||||||
|
|
||||||
|
Please read our [contribution guidelines](../../CONTRIBUTING.md) before getting started.
|
||||||
|
|
||||||
|
### Install Dependencies
|
||||||
|
|
||||||
|
If you don't have yarn workspaces enabled (Yarn < v1.0) - enable them:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
yarn config set workspaces-experimental true
|
||||||
|
```
|
||||||
|
|
||||||
|
Then install dependencies
|
||||||
|
|
||||||
|
```bash
|
||||||
|
yarn install
|
||||||
|
```
|
||||||
|
|
||||||
|
### Build
|
||||||
|
|
||||||
|
```bash
|
||||||
|
yarn build
|
||||||
|
```
|
||||||
|
|
||||||
|
### Lint
|
||||||
|
|
||||||
|
```bash
|
||||||
|
yarn lint
|
||||||
|
```
|
||||||
|
|
||||||
|
### Run Tests
|
||||||
|
|
||||||
|
```bash
|
||||||
|
yarn test
|
||||||
|
```
|
37
packages/react-docs/package.json
Normal file
37
packages/react-docs/package.json
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
{
|
||||||
|
"name": "@0xproject/react-docs",
|
||||||
|
"version": "0.0.1",
|
||||||
|
"description": "React documentation component for rendering TypeDoc & Doxity generated JSON",
|
||||||
|
"main": "lib/index.js",
|
||||||
|
"types": "lib/index.d.ts",
|
||||||
|
"scripts": {
|
||||||
|
"lint": "tslint --project . 'src/ts/**/*.ts' 'src/ts/**/*.tsx'",
|
||||||
|
"build": "tsc",
|
||||||
|
"build:watch": "tsc -w",
|
||||||
|
"clean": "shx rm -rf lib"
|
||||||
|
},
|
||||||
|
"author": "Fabio Berger",
|
||||||
|
"license": "MIT",
|
||||||
|
"devDependencies": {
|
||||||
|
"@0xproject/tslint-config": "^0.4.9",
|
||||||
|
"@types/lodash": "^4.14.86",
|
||||||
|
"@types/node": "^8.0.53",
|
||||||
|
"@types/material-ui": "0.18.0",
|
||||||
|
"@types/react": "^15.0.15",
|
||||||
|
"@types/react-dom": "^0.14.23",
|
||||||
|
"shx": "^0.2.2",
|
||||||
|
"tslint": "^5.9.1",
|
||||||
|
"typescript": "2.7.1"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@0xproject/react-shared": "^0.0.1",
|
||||||
|
"basscss": "^8.0.3",
|
||||||
|
"compare-versions": "^3.0.1",
|
||||||
|
"react-tooltip": "^3.2.7",
|
||||||
|
"material-ui": "^0.17.1",
|
||||||
|
"react": "15.6.1",
|
||||||
|
"react-dom": "15.6.1",
|
||||||
|
"lodash": "^4.17.4",
|
||||||
|
"react-tap-event-plugin": "^2.0.1"
|
||||||
|
}
|
||||||
|
}
|
5
packages/react-docs/scripts/postpublish.js
vendored
Normal file
5
packages/react-docs/scripts/postpublish.js
vendored
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
const postpublish_utils = require('../../../scripts/postpublish_utils');
|
||||||
|
const packageJSON = require('../package.json');
|
||||||
|
|
||||||
|
const subPackageName = packageJSON.name;
|
||||||
|
postpublish_utils.standardPostPublishAsync(subPackageName);
|
@@ -15,12 +15,12 @@ const styles: Styles = {
|
|||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
interface BadgeProps {
|
export interface BadgeProps {
|
||||||
title: string;
|
title: string;
|
||||||
backgroundColor: string;
|
backgroundColor: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface BadgeState {
|
export interface BadgeState {
|
||||||
isHovering: boolean;
|
isHovering: boolean;
|
||||||
}
|
}
|
||||||
|
|
@@ -3,7 +3,7 @@ import * as _ from 'lodash';
|
|||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import * as ReactMarkdown from 'react-markdown';
|
import * as ReactMarkdown from 'react-markdown';
|
||||||
|
|
||||||
interface CommentProps {
|
export interface CommentProps {
|
||||||
comment: string;
|
comment: string;
|
||||||
className?: string;
|
className?: string;
|
||||||
}
|
}
|
@@ -1,11 +1,12 @@
|
|||||||
import * as _ from 'lodash';
|
import * as _ from 'lodash';
|
||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import { CustomType } from 'ts/types';
|
|
||||||
import { utils } from 'ts/utils/utils';
|
import { CustomType } from '../types';
|
||||||
|
import { utils } from '../utils/utils';
|
||||||
|
|
||||||
const STRING_ENUM_CODE_PREFIX = ' strEnum(';
|
const STRING_ENUM_CODE_PREFIX = ' strEnum(';
|
||||||
|
|
||||||
interface CustomEnumProps {
|
export interface CustomEnumProps {
|
||||||
type: CustomType;
|
type: CustomType;
|
||||||
}
|
}
|
||||||
|
|
@@ -1,6 +1,7 @@
|
|||||||
import { MenuSubsectionsBySection } from '@0xproject/react-shared';
|
import { MenuSubsectionsBySection } from '@0xproject/react-shared';
|
||||||
import compareVersions = require('compare-versions');
|
import compareVersions = require('compare-versions');
|
||||||
import * as _ from 'lodash';
|
import * as _ from 'lodash';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
ContractsByVersionByNetworkId,
|
ContractsByVersionByNetworkId,
|
||||||
DocAgnosticFormat,
|
DocAgnosticFormat,
|
||||||
@@ -10,9 +11,9 @@ import {
|
|||||||
SectionsMap,
|
SectionsMap,
|
||||||
SupportedDocJson,
|
SupportedDocJson,
|
||||||
TypeDocNode,
|
TypeDocNode,
|
||||||
} from 'ts/types';
|
} from '../types';
|
||||||
import { doxityUtils } from 'ts/utils/doxity_utils';
|
import { doxityUtils } from '../utils/doxity_utils';
|
||||||
import { typeDocUtils } from 'ts/utils/typedoc_utils';
|
import { typeDocUtils } from '../utils/typedoc_utils';
|
||||||
|
|
||||||
export class DocsInfo {
|
export class DocsInfo {
|
||||||
public id: string;
|
public id: string;
|
@@ -1,9 +1,11 @@
|
|||||||
import {
|
import {
|
||||||
colors,
|
colors,
|
||||||
constants as sharedConstants,
|
constants as sharedConstants,
|
||||||
|
EtherscanLinkSuffixes,
|
||||||
MarkdownSection,
|
MarkdownSection,
|
||||||
MenuSubsectionsBySection,
|
MenuSubsectionsBySection,
|
||||||
NestedSidebarMenu,
|
NestedSidebarMenu,
|
||||||
|
Networks,
|
||||||
SectionHeader,
|
SectionHeader,
|
||||||
Styles,
|
Styles,
|
||||||
utils as sharedUtils,
|
utils as sharedUtils,
|
||||||
@@ -12,29 +14,28 @@ import * as _ from 'lodash';
|
|||||||
import CircularProgress from 'material-ui/CircularProgress';
|
import CircularProgress from 'material-ui/CircularProgress';
|
||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import { scroller } from 'react-scroll';
|
import { scroller } from 'react-scroll';
|
||||||
import { Badge } from 'ts/components/ui/badge';
|
|
||||||
import { Comment } from 'ts/pages/documentation/comment';
|
|
||||||
import { DocsInfo } from 'ts/pages/documentation/docs_info';
|
|
||||||
import { EventDefinition } from 'ts/pages/documentation/event_definition';
|
|
||||||
import { MethodBlock } from 'ts/pages/documentation/method_block';
|
|
||||||
import { SourceLink } from 'ts/pages/documentation/source_link';
|
|
||||||
import { Type } from 'ts/pages/documentation/type';
|
|
||||||
import { TypeDefinition } from 'ts/pages/documentation/type_definition';
|
|
||||||
import {
|
import {
|
||||||
AddressByContractName,
|
AddressByContractName,
|
||||||
DocAgnosticFormat,
|
DocAgnosticFormat,
|
||||||
DoxityDocObj,
|
DoxityDocObj,
|
||||||
EtherscanLinkSuffixes,
|
|
||||||
Event,
|
Event,
|
||||||
Networks,
|
|
||||||
Property,
|
Property,
|
||||||
SolidityMethod,
|
SolidityMethod,
|
||||||
SupportedDocJson,
|
SupportedDocJson,
|
||||||
TypeDefinitionByName,
|
TypeDefinitionByName,
|
||||||
TypescriptMethod,
|
TypescriptMethod,
|
||||||
} from 'ts/types';
|
} from '../types';
|
||||||
import { constants } from 'ts/utils/constants';
|
import { utils } from '../utils/utils';
|
||||||
import { utils } from 'ts/utils/utils';
|
|
||||||
|
import { Badge } from './badge';
|
||||||
|
import { Comment } from './comment';
|
||||||
|
import { DocsInfo } from './docs_info';
|
||||||
|
import { EventDefinition } from './event_definition';
|
||||||
|
import { MethodBlock } from './method_block';
|
||||||
|
import { SourceLink } from './source_link';
|
||||||
|
import { Type } from './type';
|
||||||
|
import { TypeDefinition } from './type_definition';
|
||||||
|
|
||||||
const TOP_BAR_HEIGHT = 60;
|
const TOP_BAR_HEIGHT = 60;
|
||||||
|
|
||||||
@@ -55,7 +56,7 @@ export interface DocumentationProps {
|
|||||||
sourceUrl: string;
|
sourceUrl: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface DocumentationState {}
|
export interface DocumentationState {}
|
||||||
|
|
||||||
const styles: Styles = {
|
const styles: Styles = {
|
||||||
mainContainers: {
|
mainContainers: {
|
||||||
@@ -268,9 +269,9 @@ export class Documentation extends React.Component<DocumentationProps, Documenta
|
|||||||
if (_.isUndefined(contractAddress)) {
|
if (_.isUndefined(contractAddress)) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
const linkIfExists = utils.getEtherScanLinkIfExists(
|
const linkIfExists = sharedUtils.getEtherScanLinkIfExists(
|
||||||
contractAddress,
|
contractAddress,
|
||||||
constants.NETWORK_ID_BY_NAME[networkName],
|
sharedConstants.NETWORK_ID_BY_NAME[networkName],
|
||||||
EtherscanLinkSuffixes.Address,
|
EtherscanLinkSuffixes.Address,
|
||||||
);
|
);
|
||||||
return (
|
return (
|
@@ -1,8 +1,9 @@
|
|||||||
import * as _ from 'lodash';
|
import * as _ from 'lodash';
|
||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import { EnumValue } from 'ts/types';
|
|
||||||
|
|
||||||
interface EnumProps {
|
import { EnumValue } from '../types';
|
||||||
|
|
||||||
|
export interface EnumProps {
|
||||||
values: EnumValue[];
|
values: EnumValue[];
|
||||||
}
|
}
|
||||||
|
|
@@ -1,17 +1,19 @@
|
|||||||
import { AnchorTitle, colors, HeaderSizes } from '@0xproject/react-shared';
|
import { AnchorTitle, colors, HeaderSizes } from '@0xproject/react-shared';
|
||||||
import * as _ from 'lodash';
|
import * as _ from 'lodash';
|
||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import { DocsInfo } from 'ts/pages/documentation/docs_info';
|
|
||||||
import { Type } from 'ts/pages/documentation/type';
|
|
||||||
import { Event, EventArg } from 'ts/types';
|
|
||||||
|
|
||||||
interface EventDefinitionProps {
|
import { Event, EventArg } from '../types';
|
||||||
|
|
||||||
|
import { DocsInfo } from './docs_info';
|
||||||
|
import { Type } from './type';
|
||||||
|
|
||||||
|
export interface EventDefinitionProps {
|
||||||
event: Event;
|
event: Event;
|
||||||
sectionName: string;
|
sectionName: string;
|
||||||
docsInfo: DocsInfo;
|
docsInfo: DocsInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface EventDefinitionState {
|
export interface EventDefinitionState {
|
||||||
shouldShowAnchor: boolean;
|
shouldShowAnchor: boolean;
|
||||||
}
|
}
|
||||||
|
|
@@ -1,11 +1,13 @@
|
|||||||
import * as _ from 'lodash';
|
import * as _ from 'lodash';
|
||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import { DocsInfo } from 'ts/pages/documentation/docs_info';
|
|
||||||
import { MethodSignature } from 'ts/pages/documentation/method_signature';
|
|
||||||
import { Type } from 'ts/pages/documentation/type';
|
|
||||||
import { CustomType, TypeDocTypes } from 'ts/types';
|
|
||||||
|
|
||||||
interface InterfaceProps {
|
import { CustomType, TypeDocTypes } from '../types';
|
||||||
|
|
||||||
|
import { DocsInfo } from './docs_info';
|
||||||
|
import { MethodSignature } from './method_signature';
|
||||||
|
import { Type } from './type';
|
||||||
|
|
||||||
|
export interface InterfaceProps {
|
||||||
type: CustomType;
|
type: CustomType;
|
||||||
sectionName: string;
|
sectionName: string;
|
||||||
docsInfo: DocsInfo;
|
docsInfo: DocsInfo;
|
@@ -1,14 +1,16 @@
|
|||||||
import { AnchorTitle, colors, HeaderSizes, Styles } from '@0xproject/react-shared';
|
import { AnchorTitle, colors, HeaderSizes, Styles } from '@0xproject/react-shared';
|
||||||
import * as _ from 'lodash';
|
import * as _ from 'lodash';
|
||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import { Comment } from 'ts/pages/documentation/comment';
|
|
||||||
import { DocsInfo } from 'ts/pages/documentation/docs_info';
|
|
||||||
import { MethodSignature } from 'ts/pages/documentation/method_signature';
|
|
||||||
import { SourceLink } from 'ts/pages/documentation/source_link';
|
|
||||||
import { Parameter, SolidityMethod, TypeDefinitionByName, TypescriptMethod } from 'ts/types';
|
|
||||||
import { typeDocUtils } from 'ts/utils/typedoc_utils';
|
|
||||||
|
|
||||||
interface MethodBlockProps {
|
import { Parameter, SolidityMethod, TypeDefinitionByName, TypescriptMethod } from '../types';
|
||||||
|
import { typeDocUtils } from '../utils/typedoc_utils';
|
||||||
|
|
||||||
|
import { Comment } from './comment';
|
||||||
|
import { DocsInfo } from './docs_info';
|
||||||
|
import { MethodSignature } from './method_signature';
|
||||||
|
import { SourceLink } from './source_link';
|
||||||
|
|
||||||
|
export interface MethodBlockProps {
|
||||||
method: SolidityMethod | TypescriptMethod;
|
method: SolidityMethod | TypescriptMethod;
|
||||||
sectionName: string;
|
sectionName: string;
|
||||||
libraryVersion: string;
|
libraryVersion: string;
|
||||||
@@ -17,7 +19,7 @@ interface MethodBlockProps {
|
|||||||
sourceUrl: string;
|
sourceUrl: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface MethodBlockState {
|
export interface MethodBlockState {
|
||||||
shouldShowAnchor: boolean;
|
shouldShowAnchor: boolean;
|
||||||
}
|
}
|
||||||
|
|
@@ -1,12 +1,14 @@
|
|||||||
import * as _ from 'lodash';
|
import * as _ from 'lodash';
|
||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import * as ReactDOM from 'react-dom';
|
import * as ReactDOM from 'react-dom';
|
||||||
import { DocsInfo } from 'ts/pages/documentation/docs_info';
|
|
||||||
import { Type } from 'ts/pages/documentation/type';
|
|
||||||
import { Parameter, SolidityMethod, TypeDefinitionByName, TypescriptMethod } from 'ts/types';
|
|
||||||
import { constants } from 'ts/utils/constants';
|
|
||||||
|
|
||||||
interface MethodSignatureProps {
|
import { Parameter, SolidityMethod, TypeDefinitionByName, TypescriptMethod } from '../types';
|
||||||
|
import { constants } from '../utils/constants';
|
||||||
|
|
||||||
|
import { DocsInfo } from './docs_info';
|
||||||
|
import { Type } from './type';
|
||||||
|
|
||||||
|
export interface MethodSignatureProps {
|
||||||
method: TypescriptMethod | SolidityMethod;
|
method: TypescriptMethod | SolidityMethod;
|
||||||
sectionName: string;
|
sectionName: string;
|
||||||
shouldHideMethodName?: boolean;
|
shouldHideMethodName?: boolean;
|
@@ -1,9 +1,10 @@
|
|||||||
import { colors } from '@0xproject/react-shared';
|
import { colors } from '@0xproject/react-shared';
|
||||||
import * as _ from 'lodash';
|
import * as _ from 'lodash';
|
||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import { Source } from 'ts/types';
|
|
||||||
|
|
||||||
interface SourceLinkProps {
|
import { Source } from '../types';
|
||||||
|
|
||||||
|
export interface SourceLinkProps {
|
||||||
source: Source;
|
source: Source;
|
||||||
sourceUrl: string;
|
sourceUrl: string;
|
||||||
version: string;
|
version: string;
|
@@ -3,11 +3,13 @@ import * as _ from 'lodash';
|
|||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import { Link as ScrollLink } from 'react-scroll';
|
import { Link as ScrollLink } from 'react-scroll';
|
||||||
import * as ReactTooltip from 'react-tooltip';
|
import * as ReactTooltip from 'react-tooltip';
|
||||||
import { DocsInfo } from 'ts/pages/documentation/docs_info';
|
|
||||||
import { TypeDefinition } from 'ts/pages/documentation/type_definition';
|
import { Type as TypeDef, TypeDefinitionByName, TypeDocTypes } from '../types';
|
||||||
import { Type as TypeDef, TypeDefinitionByName, TypeDocTypes } from 'ts/types';
|
import { constants } from '../utils/constants';
|
||||||
import { constants } from 'ts/utils/constants';
|
import { utils } from '../utils/utils';
|
||||||
import { utils } from 'ts/utils/utils';
|
|
||||||
|
import { DocsInfo } from './docs_info';
|
||||||
|
import { TypeDefinition } from './type_definition';
|
||||||
|
|
||||||
// Some types reference other libraries. For these types, we want to link the user to the relevant documentation.
|
// Some types reference other libraries. For these types, we want to link the user to the relevant documentation.
|
||||||
const typeToUrl: { [typeName: string]: string } = {
|
const typeToUrl: { [typeName: string]: string } = {
|
||||||
@@ -34,7 +36,7 @@ const typeToSection: { [typeName: string]: string } = {
|
|||||||
OrderStateWatcher: 'orderWatcher',
|
OrderStateWatcher: 'orderWatcher',
|
||||||
};
|
};
|
||||||
|
|
||||||
interface TypeProps {
|
export interface TypeProps {
|
||||||
type: TypeDef;
|
type: TypeDef;
|
||||||
docsInfo: DocsInfo;
|
docsInfo: DocsInfo;
|
||||||
sectionName: string;
|
sectionName: string;
|
||||||
@@ -181,7 +183,7 @@ export function Type(props: TypeProps): any {
|
|||||||
duration={sharedConstants.DOCS_SCROLL_DURATION_MS}
|
duration={sharedConstants.DOCS_SCROLL_DURATION_MS}
|
||||||
containerId={sharedConstants.DOCS_CONTAINER_ID}
|
containerId={sharedConstants.DOCS_CONTAINER_ID}
|
||||||
>
|
>
|
||||||
{_.isUndefined(typeDefinition) || utils.isUserOnMobile() ? (
|
{_.isUndefined(typeDefinition) || sharedUtils.isUserOnMobile() ? (
|
||||||
<span
|
<span
|
||||||
onClick={sharedUtils.setUrlHash.bind(null, typeDefinitionAnchorId)}
|
onClick={sharedUtils.setUrlHash.bind(null, typeDefinitionAnchorId)}
|
||||||
style={{ color: colors.lightBlueA700, cursor: 'pointer' }}
|
style={{ color: colors.lightBlueA700, cursor: 'pointer' }}
|
@@ -1,24 +1,26 @@
|
|||||||
import { AnchorTitle, colors, HeaderSizes } from '@0xproject/react-shared';
|
import { AnchorTitle, colors, HeaderSizes } from '@0xproject/react-shared';
|
||||||
import * as _ from 'lodash';
|
import * as _ from 'lodash';
|
||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import { Comment } from 'ts/pages/documentation/comment';
|
|
||||||
import { CustomEnum } from 'ts/pages/documentation/custom_enum';
|
|
||||||
import { DocsInfo } from 'ts/pages/documentation/docs_info';
|
|
||||||
import { Enum } from 'ts/pages/documentation/enum';
|
|
||||||
import { Interface } from 'ts/pages/documentation/interface';
|
|
||||||
import { MethodSignature } from 'ts/pages/documentation/method_signature';
|
|
||||||
import { Type } from 'ts/pages/documentation/type';
|
|
||||||
import { CustomType, CustomTypeChild, KindString, TypeDocTypes } from 'ts/types';
|
|
||||||
import { utils } from 'ts/utils/utils';
|
|
||||||
|
|
||||||
interface TypeDefinitionProps {
|
import { CustomType, CustomTypeChild, KindString, TypeDocTypes } from '../types';
|
||||||
|
import { utils } from '../utils/utils';
|
||||||
|
|
||||||
|
import { Comment } from './comment';
|
||||||
|
import { CustomEnum } from './custom_enum';
|
||||||
|
import { DocsInfo } from './docs_info';
|
||||||
|
import { Enum } from './enum';
|
||||||
|
import { Interface } from './interface';
|
||||||
|
import { MethodSignature } from './method_signature';
|
||||||
|
import { Type } from './type';
|
||||||
|
|
||||||
|
export interface TypeDefinitionProps {
|
||||||
sectionName: string;
|
sectionName: string;
|
||||||
customType: CustomType;
|
customType: CustomType;
|
||||||
shouldAddId?: boolean;
|
shouldAddId?: boolean;
|
||||||
docsInfo: DocsInfo;
|
docsInfo: DocsInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface TypeDefinitionState {
|
export interface TypeDefinitionState {
|
||||||
shouldShowAnchor: boolean;
|
shouldShowAnchor: boolean;
|
||||||
}
|
}
|
||||||
|
|
7
packages/react-docs/src/ts/globals.d.ts
vendored
Normal file
7
packages/react-docs/src/ts/globals.d.ts
vendored
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
declare module 'react-tooltip';
|
||||||
|
|
||||||
|
// compare-version declarations
|
||||||
|
declare function compareVersions(firstVersion: string, secondVersion: string): number;
|
||||||
|
declare module 'compare-versions' {
|
||||||
|
export = compareVersions;
|
||||||
|
}
|
20
packages/react-docs/src/ts/index.ts
Normal file
20
packages/react-docs/src/ts/index.ts
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
export { Documentation } from './components/documentation';
|
||||||
|
export { DocsInfo } from './components/docs_info';
|
||||||
|
|
||||||
|
// Exported to give users of this library added flexibility if they want to build
|
||||||
|
// a docs page from scratch using the individual components.
|
||||||
|
export { Badge } from './components/badge';
|
||||||
|
export { Comment } from './components/comment';
|
||||||
|
export { CustomEnum } from './components/custom_enum';
|
||||||
|
export { Enum } from './components/enum';
|
||||||
|
export { EventDefinition } from './components/event_definition';
|
||||||
|
export { Interface } from './components/interface';
|
||||||
|
export { MethodBlock } from './components/method_block';
|
||||||
|
export { MethodSignature } from './components/method_signature';
|
||||||
|
export { SourceLink } from './components/source_link';
|
||||||
|
export { TypeDefinition } from './components/type_definition';
|
||||||
|
export { Type } from './components/type';
|
||||||
|
|
||||||
|
export { DocsInfoConfig, DocAgnosticFormat, DoxityDocObj, DocsMenu, SupportedDocJson, TypeDocNode } from './types';
|
||||||
|
|
||||||
|
export { constants } from './utils/constants';
|
266
packages/react-docs/src/ts/types.ts
Normal file
266
packages/react-docs/src/ts/types.ts
Normal file
@@ -0,0 +1,266 @@
|
|||||||
|
export interface DocsInfoConfig {
|
||||||
|
id: string;
|
||||||
|
type: SupportedDocJson;
|
||||||
|
displayName: string;
|
||||||
|
packageUrl: string;
|
||||||
|
menu: DocsMenu;
|
||||||
|
sections: SectionsMap;
|
||||||
|
sectionNameToMarkdown: { [sectionName: string]: string };
|
||||||
|
visibleConstructors: string[];
|
||||||
|
subPackageName?: string;
|
||||||
|
publicTypes?: string[];
|
||||||
|
sectionNameToModulePath?: { [sectionName: string]: string[] };
|
||||||
|
menuSubsectionToVersionWhenIntroduced?: { [sectionName: string]: string };
|
||||||
|
contractsByVersionByNetworkId?: ContractsByVersionByNetworkId;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface DocsMenu {
|
||||||
|
[sectionName: string]: string[];
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface SectionsMap {
|
||||||
|
[sectionName: string]: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface TypeDocType {
|
||||||
|
type: TypeDocTypes;
|
||||||
|
value: string;
|
||||||
|
name: string;
|
||||||
|
types: TypeDocType[];
|
||||||
|
typeArguments?: TypeDocType[];
|
||||||
|
declaration: TypeDocNode;
|
||||||
|
elementType?: TypeDocType;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface TypeDocFlags {
|
||||||
|
isStatic?: boolean;
|
||||||
|
isOptional?: boolean;
|
||||||
|
isPublic?: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface TypeDocGroup {
|
||||||
|
title: string;
|
||||||
|
children: number[];
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface TypeDocNode {
|
||||||
|
id?: number;
|
||||||
|
name?: string;
|
||||||
|
kind?: string;
|
||||||
|
defaultValue?: string;
|
||||||
|
kindString?: string;
|
||||||
|
type?: TypeDocType;
|
||||||
|
fileName?: string;
|
||||||
|
line?: number;
|
||||||
|
comment?: TypeDocNode;
|
||||||
|
text?: string;
|
||||||
|
shortText?: string;
|
||||||
|
returns?: string;
|
||||||
|
declaration: TypeDocNode;
|
||||||
|
flags?: TypeDocFlags;
|
||||||
|
indexSignature?: TypeDocNode | TypeDocNode[]; // TypeDocNode in TypeDoc <V0.9.0, TypeDocNode[] in >V0.9.0
|
||||||
|
signatures?: TypeDocNode[];
|
||||||
|
parameters?: TypeDocNode[];
|
||||||
|
typeParameter?: TypeDocNode[];
|
||||||
|
sources?: TypeDocNode[];
|
||||||
|
children?: TypeDocNode[];
|
||||||
|
groups?: TypeDocGroup[];
|
||||||
|
}
|
||||||
|
|
||||||
|
export enum TypeDocTypes {
|
||||||
|
Intrinsic = 'intrinsic',
|
||||||
|
Reference = 'reference',
|
||||||
|
Array = 'array',
|
||||||
|
StringLiteral = 'stringLiteral',
|
||||||
|
Reflection = 'reflection',
|
||||||
|
Union = 'union',
|
||||||
|
TypeParameter = 'typeParameter',
|
||||||
|
Intersection = 'intersection',
|
||||||
|
Unknown = 'unknown',
|
||||||
|
}
|
||||||
|
|
||||||
|
// Exception: We don't make the values uppercase because these KindString's need to
|
||||||
|
// match up those returned by TypeDoc
|
||||||
|
export enum KindString {
|
||||||
|
Constructor = 'Constructor',
|
||||||
|
Property = 'Property',
|
||||||
|
Method = 'Method',
|
||||||
|
Interface = 'Interface',
|
||||||
|
TypeAlias = 'Type alias',
|
||||||
|
Variable = 'Variable',
|
||||||
|
Function = 'Function',
|
||||||
|
Enumeration = 'Enumeration',
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface DocAgnosticFormat {
|
||||||
|
[sectionName: string]: DocSection;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface DocSection {
|
||||||
|
comment: string;
|
||||||
|
constructors: Array<TypescriptMethod | SolidityMethod>;
|
||||||
|
methods: Array<TypescriptMethod | SolidityMethod>;
|
||||||
|
properties: Property[];
|
||||||
|
types: CustomType[];
|
||||||
|
events?: Event[];
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface TypescriptMethod extends BaseMethod {
|
||||||
|
source?: Source;
|
||||||
|
isStatic?: boolean;
|
||||||
|
typeParameter?: TypeParameter;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface SolidityMethod extends BaseMethod {
|
||||||
|
isConstant?: boolean;
|
||||||
|
isPayable?: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface Source {
|
||||||
|
fileName: string;
|
||||||
|
line: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface Parameter {
|
||||||
|
name: string;
|
||||||
|
comment: string;
|
||||||
|
isOptional: boolean;
|
||||||
|
type: Type;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface TypeParameter {
|
||||||
|
name: string;
|
||||||
|
type: Type;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface Type {
|
||||||
|
name: string;
|
||||||
|
typeDocType: TypeDocTypes;
|
||||||
|
value?: string;
|
||||||
|
typeArguments?: Type[];
|
||||||
|
elementType?: ElementType;
|
||||||
|
types?: Type[];
|
||||||
|
method?: TypescriptMethod;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ElementType {
|
||||||
|
name: string;
|
||||||
|
typeDocType: TypeDocTypes;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface IndexSignature {
|
||||||
|
keyName: string;
|
||||||
|
keyType: Type;
|
||||||
|
valueName: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface CustomType {
|
||||||
|
name: string;
|
||||||
|
kindString: string;
|
||||||
|
type?: Type;
|
||||||
|
method?: TypescriptMethod;
|
||||||
|
indexSignature?: IndexSignature;
|
||||||
|
defaultValue?: string;
|
||||||
|
comment?: string;
|
||||||
|
children?: CustomTypeChild[];
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface CustomTypeChild {
|
||||||
|
name: string;
|
||||||
|
type?: Type;
|
||||||
|
defaultValue?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface Event {
|
||||||
|
name: string;
|
||||||
|
eventArgs: EventArg[];
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface EventArg {
|
||||||
|
isIndexed: boolean;
|
||||||
|
name: string;
|
||||||
|
type: Type;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface Property {
|
||||||
|
name: string;
|
||||||
|
type: Type;
|
||||||
|
source?: Source;
|
||||||
|
comment?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface BaseMethod {
|
||||||
|
isConstructor: boolean;
|
||||||
|
name: string;
|
||||||
|
returnComment?: string | undefined;
|
||||||
|
callPath: string;
|
||||||
|
parameters: Parameter[];
|
||||||
|
returnType: Type;
|
||||||
|
comment?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface TypeDefinitionByName {
|
||||||
|
[typeName: string]: CustomType;
|
||||||
|
}
|
||||||
|
|
||||||
|
export enum SupportedDocJson {
|
||||||
|
Doxity = 'DOXITY',
|
||||||
|
TypeDoc = 'TYPEDOC',
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ContractsByVersionByNetworkId {
|
||||||
|
[version: string]: {
|
||||||
|
[networkName: string]: {
|
||||||
|
[contractName: string]: string;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface DoxityDocObj {
|
||||||
|
[contractName: string]: DoxityContractObj;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface DoxityContractObj {
|
||||||
|
title: string;
|
||||||
|
fileName: string;
|
||||||
|
name: string;
|
||||||
|
abiDocs: DoxityAbiDoc[];
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface DoxityAbiDoc {
|
||||||
|
constant: boolean;
|
||||||
|
inputs: DoxityInput[];
|
||||||
|
name: string;
|
||||||
|
outputs: DoxityOutput[];
|
||||||
|
payable: boolean;
|
||||||
|
type: string;
|
||||||
|
details?: string;
|
||||||
|
return?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface DoxityOutput {
|
||||||
|
name: string;
|
||||||
|
type: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface DoxityInput {
|
||||||
|
name: string;
|
||||||
|
type: string;
|
||||||
|
description: string;
|
||||||
|
indexed?: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface AddressByContractName {
|
||||||
|
[contractName: string]: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface EnumValue {
|
||||||
|
name: string;
|
||||||
|
defaultValue?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export enum AbiTypes {
|
||||||
|
Constructor = 'constructor',
|
||||||
|
Function = 'function',
|
||||||
|
Event = 'event',
|
||||||
|
}
|
9
packages/react-docs/src/ts/utils/constants.ts
Normal file
9
packages/react-docs/src/ts/utils/constants.ts
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
export const constants = {
|
||||||
|
TYPES_SECTION_NAME: 'types',
|
||||||
|
URL_WEB3_DOCS: 'https://github.com/ethereum/wiki/wiki/JavaScript-API',
|
||||||
|
URL_WEB3_DECODED_LOG_ENTRY_EVENT:
|
||||||
|
'https://github.com/0xProject/web3-typescript-typings/blob/f5bcb96/index.d.ts#L123',
|
||||||
|
URL_WEB3_LOG_ENTRY_EVENT: 'https://github.com/0xProject/web3-typescript-typings/blob/f5bcb96/index.d.ts#L127',
|
||||||
|
URL_WEB3_PROVIDER_DOCS: 'https://github.com/0xProject/web3-typescript-typings/blob/f5bcb96/index.d.ts#L150',
|
||||||
|
URL_BIGNUMBERJS_GITHUB: 'http://mikemcl.github.io/bignumber.js',
|
||||||
|
};
|
@@ -1,4 +1,5 @@
|
|||||||
import * as _ from 'lodash';
|
import * as _ from 'lodash';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
AbiTypes,
|
AbiTypes,
|
||||||
DocAgnosticFormat,
|
DocAgnosticFormat,
|
||||||
@@ -13,7 +14,7 @@ import {
|
|||||||
SolidityMethod,
|
SolidityMethod,
|
||||||
Type,
|
Type,
|
||||||
TypeDocTypes,
|
TypeDocTypes,
|
||||||
} from 'ts/types';
|
} from '../types';
|
||||||
|
|
||||||
export const doxityUtils = {
|
export const doxityUtils = {
|
||||||
convertToDocAgnosticFormat(doxityDocObj: DoxityDocObj): DocAgnosticFormat {
|
convertToDocAgnosticFormat(doxityDocObj: DoxityDocObj): DocAgnosticFormat {
|
@@ -1,10 +1,10 @@
|
|||||||
import * as _ from 'lodash';
|
import * as _ from 'lodash';
|
||||||
import { DocsInfo } from 'ts/pages/documentation/docs_info';
|
|
||||||
|
import { DocsInfo } from '../components/docs_info';
|
||||||
import {
|
import {
|
||||||
CustomType,
|
CustomType,
|
||||||
CustomTypeChild,
|
CustomTypeChild,
|
||||||
DocAgnosticFormat,
|
DocAgnosticFormat,
|
||||||
DocPackages,
|
|
||||||
DocSection,
|
DocSection,
|
||||||
IndexSignature,
|
IndexSignature,
|
||||||
KindString,
|
KindString,
|
||||||
@@ -16,8 +16,8 @@ import {
|
|||||||
TypeDocType,
|
TypeDocType,
|
||||||
TypeParameter,
|
TypeParameter,
|
||||||
TypescriptMethod,
|
TypescriptMethod,
|
||||||
} from 'ts/types';
|
} from '../types';
|
||||||
import { utils } from 'ts/utils/utils';
|
import { utils } from '../utils/utils';
|
||||||
|
|
||||||
export const typeDocUtils = {
|
export const typeDocUtils = {
|
||||||
isType(entity: TypeDocNode): boolean {
|
isType(entity: TypeDocNode): boolean {
|
||||||
@@ -267,7 +267,8 @@ export const typeDocUtils = {
|
|||||||
let callPath;
|
let callPath;
|
||||||
if (isConstructor || entity.name === '__type') {
|
if (isConstructor || entity.name === '__type') {
|
||||||
callPath = '';
|
callPath = '';
|
||||||
} else if (docId === DocPackages.ZeroExJs) {
|
// TODO: Get rid of this 0x-specific logic
|
||||||
|
} else if (docId === 'ZERO_EX_JS') {
|
||||||
const topLevelInterface = isStatic ? 'ZeroEx.' : 'zeroEx.';
|
const topLevelInterface = isStatic ? 'ZeroEx.' : 'zeroEx.';
|
||||||
callPath =
|
callPath =
|
||||||
!_.isUndefined(sections.zeroEx) && sectionName !== sections.zeroEx
|
!_.isUndefined(sections.zeroEx) && sectionName !== sections.zeroEx
|
10
packages/react-docs/src/ts/utils/utils.ts
Normal file
10
packages/react-docs/src/ts/utils/utils.ts
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
export const utils = {
|
||||||
|
consoleLog(message: string) {
|
||||||
|
/* tslint:disable */
|
||||||
|
console.log(message);
|
||||||
|
/* tslint:enable */
|
||||||
|
},
|
||||||
|
spawnSwitchErr(name: string, value: any) {
|
||||||
|
return new Error(`Unexpected switch value: ${value} encountered for ${name}`);
|
||||||
|
},
|
||||||
|
};
|
14
packages/react-docs/tsconfig.json
Normal file
14
packages/react-docs/tsconfig.json
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"extends": "../../tsconfig",
|
||||||
|
"compilerOptions": {
|
||||||
|
"outDir": "./lib/",
|
||||||
|
"jsx": "react",
|
||||||
|
"baseUrl": "./",
|
||||||
|
"strictNullChecks": false,
|
||||||
|
"noImplicitThis": false,
|
||||||
|
"paths": {
|
||||||
|
"*": ["node_modules/@types/*", "*"]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"include": ["./src/ts/**/*"]
|
||||||
|
}
|
9
packages/react-docs/tslint.json
Normal file
9
packages/react-docs/tslint.json
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"extends": ["@0xproject/tslint-config"],
|
||||||
|
"rules": {
|
||||||
|
"no-implicit-dependencies": false,
|
||||||
|
"no-object-literal-type-assertion": false,
|
||||||
|
"completed-docs": false,
|
||||||
|
"prefer-function-over-method": false
|
||||||
|
}
|
||||||
|
}
|
@@ -25,6 +25,7 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"basscss": "^8.0.3",
|
"basscss": "^8.0.3",
|
||||||
|
"is-mobile": "^0.2.2",
|
||||||
"material-ui": "^0.17.1",
|
"material-ui": "^0.17.1",
|
||||||
"react": "15.6.1",
|
"react": "15.6.1",
|
||||||
"react-dom": "15.6.1",
|
"react-dom": "15.6.1",
|
||||||
|
6
packages/react-shared/src/ts/globals.d.ts
vendored
6
packages/react-shared/src/ts/globals.d.ts
vendored
@@ -1 +1,7 @@
|
|||||||
declare module 'react-highlight';
|
declare module 'react-highlight';
|
||||||
|
|
||||||
|
// is-mobile declarations
|
||||||
|
declare function isMobile(): boolean;
|
||||||
|
declare module 'is-mobile' {
|
||||||
|
export = isMobile;
|
||||||
|
}
|
||||||
|
@@ -5,7 +5,7 @@ export { MarkdownSection } from './components/markdown_section';
|
|||||||
export { NestedSidebarMenu } from './components/nested_sidebar_menu';
|
export { NestedSidebarMenu } from './components/nested_sidebar_menu';
|
||||||
export { SectionHeader } from './components/section_header';
|
export { SectionHeader } from './components/section_header';
|
||||||
|
|
||||||
export { HeaderSizes, Styles, MenuSubsectionsBySection } from './types';
|
export { HeaderSizes, Styles, MenuSubsectionsBySection, EtherscanLinkSuffixes, Networks } from './types';
|
||||||
|
|
||||||
export { utils } from './utils/utils';
|
export { utils } from './utils/utils';
|
||||||
export { constants } from './utils/constants';
|
export { constants } from './utils/constants';
|
||||||
|
@@ -11,3 +11,15 @@ export enum HeaderSizes {
|
|||||||
export interface MenuSubsectionsBySection {
|
export interface MenuSubsectionsBySection {
|
||||||
[section: string]: string[];
|
[section: string]: string[];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export enum EtherscanLinkSuffixes {
|
||||||
|
Address = 'address',
|
||||||
|
Tx = 'tx',
|
||||||
|
}
|
||||||
|
|
||||||
|
export enum Networks {
|
||||||
|
Mainnet = 'Mainnet',
|
||||||
|
Kovan = 'Kovan',
|
||||||
|
Ropsten = 'Ropsten',
|
||||||
|
Rinkeby = 'Rinkeby',
|
||||||
|
}
|
||||||
|
@@ -1,6 +1,20 @@
|
|||||||
|
import { Networks } from '../types';
|
||||||
|
|
||||||
export const constants = {
|
export const constants = {
|
||||||
DOCS_SCROLL_DURATION_MS: 0,
|
DOCS_SCROLL_DURATION_MS: 0,
|
||||||
DOCS_CONTAINER_ID: 'documentation',
|
DOCS_CONTAINER_ID: 'documentation',
|
||||||
SCROLL_CONTAINER_ID: 'documentation',
|
SCROLL_CONTAINER_ID: 'documentation',
|
||||||
SCROLL_TOP_ID: 'pageScrollTop',
|
SCROLL_TOP_ID: 'pageScrollTop',
|
||||||
|
NETWORK_NAME_BY_ID: {
|
||||||
|
1: Networks.Mainnet,
|
||||||
|
3: Networks.Ropsten,
|
||||||
|
4: Networks.Rinkeby,
|
||||||
|
42: Networks.Kovan,
|
||||||
|
} as { [symbol: number]: string },
|
||||||
|
NETWORK_ID_BY_NAME: {
|
||||||
|
[Networks.Mainnet]: 1,
|
||||||
|
[Networks.Ropsten]: 3,
|
||||||
|
[Networks.Rinkeby]: 4,
|
||||||
|
[Networks.Kovan]: 42,
|
||||||
|
} as { [networkName: string]: number },
|
||||||
};
|
};
|
||||||
|
@@ -1,6 +1,9 @@
|
|||||||
|
import isMobile = require('is-mobile');
|
||||||
import * as _ from 'lodash';
|
import * as _ from 'lodash';
|
||||||
import { scroller } from 'react-scroll';
|
import { scroller } from 'react-scroll';
|
||||||
|
|
||||||
|
import { EtherscanLinkSuffixes, Networks } from '../types';
|
||||||
|
|
||||||
import { constants } from './constants';
|
import { constants } from './constants';
|
||||||
|
|
||||||
export const utils = {
|
export const utils = {
|
||||||
@@ -19,6 +22,10 @@ export const utils = {
|
|||||||
containerId,
|
containerId,
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
isUserOnMobile(): boolean {
|
||||||
|
const isUserOnMobile = isMobile();
|
||||||
|
return isUserOnMobile;
|
||||||
|
},
|
||||||
getIdFromName(name: string) {
|
getIdFromName(name: string) {
|
||||||
const id = name.replace(/ /g, '-');
|
const id = name.replace(/ /g, '-');
|
||||||
return id;
|
return id;
|
||||||
@@ -29,4 +36,12 @@ export const utils = {
|
|||||||
const baseUrl = `https://${window.location.hostname}${hasPort ? `:${port}` : ''}`;
|
const baseUrl = `https://${window.location.hostname}${hasPort ? `:${port}` : ''}`;
|
||||||
return baseUrl;
|
return baseUrl;
|
||||||
},
|
},
|
||||||
|
getEtherScanLinkIfExists(addressOrTxHash: string, networkId: number, suffix: EtherscanLinkSuffixes): string {
|
||||||
|
const networkName = constants.NETWORK_NAME_BY_ID[networkId];
|
||||||
|
if (_.isUndefined(networkName)) {
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
const etherScanPrefix = networkName === Networks.Mainnet ? '' : `${networkName.toLowerCase()}.`;
|
||||||
|
return `https://${etherScanPrefix}etherscan.io/${suffix}/${addressOrTxHash}`;
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
@@ -18,6 +18,7 @@
|
|||||||
"author": "Fabio Berger",
|
"author": "Fabio Berger",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@0xproject/react-docs": "^0.0.1",
|
||||||
"@0xproject/react-shared": "^0.0.1",
|
"@0xproject/react-shared": "^0.0.1",
|
||||||
"@0xproject/subproviders": "^0.6.0",
|
"@0xproject/subproviders": "^0.6.0",
|
||||||
"@0xproject/utils": "^0.4.0",
|
"@0xproject/utils": "^0.4.0",
|
||||||
@@ -25,14 +26,12 @@
|
|||||||
"accounting": "^0.4.1",
|
"accounting": "^0.4.1",
|
||||||
"basscss": "^8.0.3",
|
"basscss": "^8.0.3",
|
||||||
"blockies": "^0.0.2",
|
"blockies": "^0.0.2",
|
||||||
"compare-versions": "^3.0.1",
|
|
||||||
"dateformat": "^2.0.0",
|
"dateformat": "^2.0.0",
|
||||||
"deep-equal": "^1.0.1",
|
"deep-equal": "^1.0.1",
|
||||||
"dharma-loan-frame": "^0.0.12",
|
"dharma-loan-frame": "^0.0.12",
|
||||||
"ethereumjs-tx": "^1.3.3",
|
"ethereumjs-tx": "^1.3.3",
|
||||||
"ethereumjs-util": "^5.1.1",
|
"ethereumjs-util": "^5.1.1",
|
||||||
"find-versions": "^2.0.0",
|
"find-versions": "^2.0.0",
|
||||||
"is-mobile": "^0.2.2",
|
|
||||||
"jsonschema": "^1.2.0",
|
"jsonschema": "^1.2.0",
|
||||||
"less": "^2.7.2",
|
"less": "^2.7.2",
|
||||||
"lodash": "^4.17.4",
|
"lodash": "^4.17.4",
|
||||||
|
@@ -15,6 +15,7 @@ import {
|
|||||||
TransactionReceiptWithDecodedLogs,
|
TransactionReceiptWithDecodedLogs,
|
||||||
ZeroEx,
|
ZeroEx,
|
||||||
} from '0x.js';
|
} from '0x.js';
|
||||||
|
import { EtherscanLinkSuffixes, utils as sharedUtils } from '@0xproject/react-shared';
|
||||||
import {
|
import {
|
||||||
InjectedWeb3Subprovider,
|
InjectedWeb3Subprovider,
|
||||||
ledgerEthereumBrowserClientFactoryAsync,
|
ledgerEthereumBrowserClientFactoryAsync,
|
||||||
@@ -35,7 +36,6 @@ import {
|
|||||||
BlockchainCallErrs,
|
BlockchainCallErrs,
|
||||||
BlockchainErrs,
|
BlockchainErrs,
|
||||||
ContractInstance,
|
ContractInstance,
|
||||||
EtherscanLinkSuffixes,
|
|
||||||
Order as PortalOrder,
|
Order as PortalOrder,
|
||||||
ProviderType,
|
ProviderType,
|
||||||
Side,
|
Side,
|
||||||
@@ -271,7 +271,11 @@ export class Blockchain {
|
|||||||
},
|
},
|
||||||
);
|
);
|
||||||
await this._showEtherScanLinkAndAwaitTransactionMinedAsync(txHash);
|
await this._showEtherScanLinkAndAwaitTransactionMinedAsync(txHash);
|
||||||
const etherScanLinkIfExists = utils.getEtherScanLinkIfExists(txHash, this.networkId, EtherscanLinkSuffixes.Tx);
|
const etherScanLinkIfExists = sharedUtils.getEtherScanLinkIfExists(
|
||||||
|
txHash,
|
||||||
|
this.networkId,
|
||||||
|
EtherscanLinkSuffixes.Tx,
|
||||||
|
);
|
||||||
this._dispatcher.showFlashMessage(
|
this._dispatcher.showFlashMessage(
|
||||||
React.createElement(TokenSendCompleted, {
|
React.createElement(TokenSendCompleted, {
|
||||||
etherScanLinkIfExists,
|
etherScanLinkIfExists,
|
||||||
@@ -542,7 +546,11 @@ export class Blockchain {
|
|||||||
private async _showEtherScanLinkAndAwaitTransactionMinedAsync(
|
private async _showEtherScanLinkAndAwaitTransactionMinedAsync(
|
||||||
txHash: string,
|
txHash: string,
|
||||||
): Promise<TransactionReceiptWithDecodedLogs> {
|
): Promise<TransactionReceiptWithDecodedLogs> {
|
||||||
const etherScanLinkIfExists = utils.getEtherScanLinkIfExists(txHash, this.networkId, EtherscanLinkSuffixes.Tx);
|
const etherScanLinkIfExists = sharedUtils.getEtherScanLinkIfExists(
|
||||||
|
txHash,
|
||||||
|
this.networkId,
|
||||||
|
EtherscanLinkSuffixes.Tx,
|
||||||
|
);
|
||||||
this._dispatcher.showFlashMessage(
|
this._dispatcher.showFlashMessage(
|
||||||
React.createElement(TransactionSubmitted, {
|
React.createElement(TransactionSubmitted, {
|
||||||
etherScanLinkIfExists,
|
etherScanLinkIfExists,
|
||||||
|
@@ -1,10 +1,10 @@
|
|||||||
import { colors } from '@0xproject/react-shared';
|
import { colors, Networks } from '@0xproject/react-shared';
|
||||||
import * as _ from 'lodash';
|
import * as _ from 'lodash';
|
||||||
import Dialog from 'material-ui/Dialog';
|
import Dialog from 'material-ui/Dialog';
|
||||||
import FlatButton from 'material-ui/FlatButton';
|
import FlatButton from 'material-ui/FlatButton';
|
||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import { Blockchain } from 'ts/blockchain';
|
import { Blockchain } from 'ts/blockchain';
|
||||||
import { BlockchainErrs, Networks } from 'ts/types';
|
import { BlockchainErrs } from 'ts/types';
|
||||||
import { configs } from 'ts/utils/configs';
|
import { configs } from 'ts/utils/configs';
|
||||||
import { constants } from 'ts/utils/constants';
|
import { constants } from 'ts/utils/constants';
|
||||||
|
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
import { colors } from '@0xproject/react-shared';
|
import { colors, constants as sharedConstants } from '@0xproject/react-shared';
|
||||||
import { BigNumber } from '@0xproject/utils';
|
import { BigNumber } from '@0xproject/utils';
|
||||||
import * as _ from 'lodash';
|
import * as _ from 'lodash';
|
||||||
import Dialog from 'material-ui/Dialog';
|
import Dialog from 'material-ui/Dialog';
|
||||||
@@ -82,7 +82,7 @@ export class LedgerConfigDialog extends React.Component<LedgerConfigDialogProps,
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
private _renderConnectStep() {
|
private _renderConnectStep() {
|
||||||
const networkIds = _.values(constants.NETWORK_ID_BY_NAME);
|
const networkIds = _.values(sharedConstants.NETWORK_ID_BY_NAME);
|
||||||
return (
|
return (
|
||||||
<div>
|
<div>
|
||||||
<div className="h4 pt3">Follow these instructions before proceeding:</div>
|
<div className="h4 pt3">Follow these instructions before proceeding:</div>
|
||||||
@@ -163,7 +163,7 @@ export class LedgerConfigDialog extends React.Component<LedgerConfigDialogProps,
|
|||||||
const balance = this.state.addressBalances[i];
|
const balance = this.state.addressBalances[i];
|
||||||
const addressTooltipId = `address-${userAddress}`;
|
const addressTooltipId = `address-${userAddress}`;
|
||||||
const balanceTooltipId = `balance-${userAddress}`;
|
const balanceTooltipId = `balance-${userAddress}`;
|
||||||
const networkName = constants.NETWORK_NAME_BY_ID[this.props.networkId];
|
const networkName = sharedConstants.NETWORK_NAME_BY_ID[this.props.networkId];
|
||||||
// We specifically prefix kovan ETH.
|
// We specifically prefix kovan ETH.
|
||||||
// TODO: We should probably add prefixes for all networks
|
// TODO: We should probably add prefixes for all networks
|
||||||
const isKovanNetwork = networkName === 'Kovan';
|
const isKovanNetwork = networkName === 'Kovan';
|
||||||
|
@@ -1,8 +1,8 @@
|
|||||||
|
import { constants as sharedConstants } from '@0xproject/react-shared';
|
||||||
import * as _ from 'lodash';
|
import * as _ from 'lodash';
|
||||||
import DropDownMenu from 'material-ui/DropDownMenu';
|
import DropDownMenu from 'material-ui/DropDownMenu';
|
||||||
import MenuItem from 'material-ui/MenuItem';
|
import MenuItem from 'material-ui/MenuItem';
|
||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import { constants } from 'ts/utils/constants';
|
|
||||||
|
|
||||||
interface NetworkDropDownProps {
|
interface NetworkDropDownProps {
|
||||||
updateSelectedNetwork: (e: any, index: number, value: number) => void;
|
updateSelectedNetwork: (e: any, index: number, value: number) => void;
|
||||||
@@ -24,7 +24,7 @@ export class NetworkDropDown extends React.Component<NetworkDropDownProps, Netwo
|
|||||||
}
|
}
|
||||||
private _renderDropDownItems() {
|
private _renderDropDownItems() {
|
||||||
const items = _.map(this.props.avialableNetworkIds, networkId => {
|
const items = _.map(this.props.avialableNetworkIds, networkId => {
|
||||||
const networkName = constants.NETWORK_NAME_BY_ID[networkId];
|
const networkName = sharedConstants.NETWORK_NAME_BY_ID[networkId];
|
||||||
const primaryText = (
|
const primaryText = (
|
||||||
<div className="flex">
|
<div className="flex">
|
||||||
<div className="pr1" style={{ width: 14, paddingTop: 2 }}>
|
<div className="pr1" style={{ width: 14, paddingTop: 2 }}>
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
import { ZeroEx } from '0x.js';
|
import { ZeroEx } from '0x.js';
|
||||||
import { colors } from '@0xproject/react-shared';
|
import { colors, EtherscanLinkSuffixes, utils as sharedUtils } from '@0xproject/react-shared';
|
||||||
import { BigNumber } from '@0xproject/utils';
|
import { BigNumber } from '@0xproject/utils';
|
||||||
import * as _ from 'lodash';
|
import * as _ from 'lodash';
|
||||||
import Divider from 'material-ui/Divider';
|
import Divider from 'material-ui/Divider';
|
||||||
@@ -10,14 +10,7 @@ import ReactTooltip = require('react-tooltip');
|
|||||||
import { Blockchain } from 'ts/blockchain';
|
import { Blockchain } from 'ts/blockchain';
|
||||||
import { EthWethConversionButton } from 'ts/components/eth_weth_conversion_button';
|
import { EthWethConversionButton } from 'ts/components/eth_weth_conversion_button';
|
||||||
import { Dispatcher } from 'ts/redux/dispatcher';
|
import { Dispatcher } from 'ts/redux/dispatcher';
|
||||||
import {
|
import { OutdatedWrappedEtherByNetworkId, Side, Token, TokenByAddress, TokenState } from 'ts/types';
|
||||||
EtherscanLinkSuffixes,
|
|
||||||
OutdatedWrappedEtherByNetworkId,
|
|
||||||
Side,
|
|
||||||
Token,
|
|
||||||
TokenByAddress,
|
|
||||||
TokenState,
|
|
||||||
} from 'ts/types';
|
|
||||||
import { configs } from 'ts/utils/configs';
|
import { configs } from 'ts/utils/configs';
|
||||||
import { constants } from 'ts/utils/constants';
|
import { constants } from 'ts/utils/constants';
|
||||||
import { utils } from 'ts/utils/utils';
|
import { utils } from 'ts/utils/utils';
|
||||||
@@ -99,7 +92,7 @@ export class EthWrappers extends React.Component<EthWrappersProps, EthWrappersSt
|
|||||||
const etherToken = this._getEthToken();
|
const etherToken = this._getEthToken();
|
||||||
const wethBalance = ZeroEx.toUnitAmount(this.state.ethTokenState.balance, constants.DECIMAL_PLACES_ETH);
|
const wethBalance = ZeroEx.toUnitAmount(this.state.ethTokenState.balance, constants.DECIMAL_PLACES_ETH);
|
||||||
const isBidirectional = true;
|
const isBidirectional = true;
|
||||||
const etherscanUrl = utils.getEtherScanLinkIfExists(
|
const etherscanUrl = sharedUtils.getEtherScanLinkIfExists(
|
||||||
etherToken.address,
|
etherToken.address,
|
||||||
this.props.networkId,
|
this.props.networkId,
|
||||||
EtherscanLinkSuffixes.Address,
|
EtherscanLinkSuffixes.Address,
|
||||||
@@ -281,7 +274,7 @@ export class EthWrappers extends React.Component<EthWrappersProps, EthWrappersSt
|
|||||||
this,
|
this,
|
||||||
outdatedWETHIfExists.address,
|
outdatedWETHIfExists.address,
|
||||||
);
|
);
|
||||||
const etherscanUrl = utils.getEtherScanLinkIfExists(
|
const etherscanUrl = sharedUtils.getEtherScanLinkIfExists(
|
||||||
outdatedWETHIfExists.address,
|
outdatedWETHIfExists.address,
|
||||||
this.props.networkId,
|
this.props.networkId,
|
||||||
EtherscanLinkSuffixes.Address,
|
EtherscanLinkSuffixes.Address,
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
import { Order as ZeroExOrder, ZeroEx } from '0x.js';
|
import { Order as ZeroExOrder, ZeroEx } from '0x.js';
|
||||||
import { colors } from '@0xproject/react-shared';
|
import { colors, constants as sharedConstants } from '@0xproject/react-shared';
|
||||||
import { BigNumber } from '@0xproject/utils';
|
import { BigNumber } from '@0xproject/utils';
|
||||||
import * as accounting from 'accounting';
|
import * as accounting from 'accounting';
|
||||||
import * as _ from 'lodash';
|
import * as _ from 'lodash';
|
||||||
@@ -537,7 +537,7 @@ export class FillOrder extends React.Component<FillOrderProps, FillOrderState> {
|
|||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const networkName = constants.NETWORK_NAME_BY_ID[this.props.networkId];
|
const networkName = sharedConstants.NETWORK_NAME_BY_ID[this.props.networkId];
|
||||||
const eventLabel = `${parsedOrder.metadata.takerToken.symbol}-${networkName}`;
|
const eventLabel = `${parsedOrder.metadata.takerToken.symbol}-${networkName}`;
|
||||||
try {
|
try {
|
||||||
const orderFilledAmount: BigNumber = await this.props.blockchain.fillOrderAsync(
|
const orderFilledAmount: BigNumber = await this.props.blockchain.fillOrderAsync(
|
||||||
@@ -623,7 +623,7 @@ export class FillOrder extends React.Component<FillOrderProps, FillOrderState> {
|
|||||||
});
|
});
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const networkName = constants.NETWORK_NAME_BY_ID[this.props.networkId];
|
const networkName = sharedConstants.NETWORK_NAME_BY_ID[this.props.networkId];
|
||||||
const eventLabel = `${parsedOrder.metadata.makerToken.symbol}-${networkName}`;
|
const eventLabel = `${parsedOrder.metadata.makerToken.symbol}-${networkName}`;
|
||||||
try {
|
try {
|
||||||
await this.props.blockchain.cancelOrderAsync(signedOrder, availableTakerTokenAmount);
|
await this.props.blockchain.cancelOrderAsync(signedOrder, availableTakerTokenAmount);
|
||||||
|
@@ -1,3 +1,4 @@
|
|||||||
|
import { constants as sharedConstants } from '@0xproject/react-shared';
|
||||||
import { ECSignature, Order, ZeroEx } from '0x.js';
|
import { ECSignature, Order, ZeroEx } from '0x.js';
|
||||||
import { colors } from '@0xproject/react-shared';
|
import { colors } from '@0xproject/react-shared';
|
||||||
import { BigNumber } from '@0xproject/utils';
|
import { BigNumber } from '@0xproject/utils';
|
||||||
@@ -253,7 +254,7 @@ export class GenerateOrderForm extends React.Component<GenerateOrderFormProps, G
|
|||||||
) {
|
) {
|
||||||
const didSignSuccessfully = await this._signTransactionAsync();
|
const didSignSuccessfully = await this._signTransactionAsync();
|
||||||
if (didSignSuccessfully) {
|
if (didSignSuccessfully) {
|
||||||
const networkName = constants.NETWORK_NAME_BY_ID[this.props.networkId];
|
const networkName = sharedConstants.NETWORK_NAME_BY_ID[this.props.networkId];
|
||||||
const eventLabel = `${this.props.tokenByAddress[debitToken.address].symbol}-${networkName}`;
|
const eventLabel = `${this.props.tokenByAddress[debitToken.address].symbol}-${networkName}`;
|
||||||
ReactGA.event({
|
ReactGA.event({
|
||||||
category: 'Portal',
|
category: 'Portal',
|
||||||
|
@@ -1,3 +1,4 @@
|
|||||||
|
import { constants as sharedConstants } from '@0xproject/react-shared';
|
||||||
import { BigNumber } from '@0xproject/utils';
|
import { BigNumber } from '@0xproject/utils';
|
||||||
import * as _ from 'lodash';
|
import * as _ from 'lodash';
|
||||||
import Toggle from 'material-ui/Toggle';
|
import Toggle from 'material-ui/Toggle';
|
||||||
@@ -76,7 +77,7 @@ export class AllowanceToggle extends React.Component<AllowanceToggleProps, Allow
|
|||||||
if (!this._isAllowanceSet()) {
|
if (!this._isAllowanceSet()) {
|
||||||
newAllowanceAmountInBaseUnits = DEFAULT_ALLOWANCE_AMOUNT_IN_BASE_UNITS;
|
newAllowanceAmountInBaseUnits = DEFAULT_ALLOWANCE_AMOUNT_IN_BASE_UNITS;
|
||||||
}
|
}
|
||||||
const networkName = constants.NETWORK_NAME_BY_ID[this.props.networkId];
|
const networkName = sharedConstants.NETWORK_NAME_BY_ID[this.props.networkId];
|
||||||
const eventLabel = `${this.props.token.symbol}-${networkName}`;
|
const eventLabel = `${this.props.token.symbol}-${networkName}`;
|
||||||
try {
|
try {
|
||||||
await this.props.blockchain.setProxyAllowanceAsync(this.props.token, newAllowanceAmountInBaseUnits);
|
await this.props.blockchain.setProxyAllowanceAsync(this.props.token, newAllowanceAmountInBaseUnits);
|
||||||
|
@@ -1,5 +1,12 @@
|
|||||||
import { ZeroEx } from '0x.js';
|
import { ZeroEx } from '0x.js';
|
||||||
import { colors, Styles } from '@0xproject/react-shared';
|
import {
|
||||||
|
colors,
|
||||||
|
constants as sharedConstants,
|
||||||
|
EtherscanLinkSuffixes,
|
||||||
|
Networks,
|
||||||
|
Styles,
|
||||||
|
utils as sharedUtils,
|
||||||
|
} from '@0xproject/react-shared';
|
||||||
import { BigNumber } from '@0xproject/utils';
|
import { BigNumber } from '@0xproject/utils';
|
||||||
import DharmaLoanFrame from 'dharma-loan-frame';
|
import DharmaLoanFrame from 'dharma-loan-frame';
|
||||||
import * as _ from 'lodash';
|
import * as _ from 'lodash';
|
||||||
@@ -27,8 +34,6 @@ import {
|
|||||||
BalanceErrs,
|
BalanceErrs,
|
||||||
BlockchainCallErrs,
|
BlockchainCallErrs,
|
||||||
BlockchainErrs,
|
BlockchainErrs,
|
||||||
EtherscanLinkSuffixes,
|
|
||||||
Networks,
|
|
||||||
ScreenWidths,
|
ScreenWidths,
|
||||||
Token,
|
Token,
|
||||||
TokenByAddress,
|
TokenByAddress,
|
||||||
@@ -117,7 +122,7 @@ export class TokenBalances extends React.Component<TokenBalancesProps, TokenBala
|
|||||||
if (nextProps.userEtherBalance !== this.props.userEtherBalance) {
|
if (nextProps.userEtherBalance !== this.props.userEtherBalance) {
|
||||||
if (this.state.isBalanceSpinnerVisible) {
|
if (this.state.isBalanceSpinnerVisible) {
|
||||||
const receivedAmount = nextProps.userEtherBalance.minus(this.props.userEtherBalance);
|
const receivedAmount = nextProps.userEtherBalance.minus(this.props.userEtherBalance);
|
||||||
const networkName = constants.NETWORK_NAME_BY_ID[this.props.networkId];
|
const networkName = sharedConstants.NETWORK_NAME_BY_ID[this.props.networkId];
|
||||||
this.props.dispatcher.showFlashMessage(`Received ${receivedAmount.toString(10)} ${networkName} Ether`);
|
this.props.dispatcher.showFlashMessage(`Received ${receivedAmount.toString(10)} ${networkName} Ether`);
|
||||||
}
|
}
|
||||||
this.setState({
|
this.setState({
|
||||||
@@ -357,17 +362,20 @@ export class TokenBalances extends React.Component<TokenBalancesProps, TokenBala
|
|||||||
}
|
}
|
||||||
private _renderTokenRow(tokenColSpan: number, actionPaddingX: number, token: Token) {
|
private _renderTokenRow(tokenColSpan: number, actionPaddingX: number, token: Token) {
|
||||||
const tokenState = this.state.trackedTokenStateByAddress[token.address];
|
const tokenState = this.state.trackedTokenStateByAddress[token.address];
|
||||||
const tokenLink = utils.getEtherScanLinkIfExists(
|
const tokenLink = sharedUtils.getEtherScanLinkIfExists(
|
||||||
token.address,
|
token.address,
|
||||||
this.props.networkId,
|
this.props.networkId,
|
||||||
EtherscanLinkSuffixes.Address,
|
EtherscanLinkSuffixes.Address,
|
||||||
);
|
);
|
||||||
const isMintable =
|
const isMintable =
|
||||||
(_.includes(configs.SYMBOLS_OF_MINTABLE_KOVAN_TOKENS, token.symbol) &&
|
(_.includes(configs.SYMBOLS_OF_MINTABLE_KOVAN_TOKENS, token.symbol) &&
|
||||||
this.props.networkId === constants.NETWORK_ID_BY_NAME[Networks.Kovan]) ||
|
this.props.networkId === sharedConstants.NETWORK_ID_BY_NAME[Networks.Kovan]) ||
|
||||||
(_.includes(configs.SYMBOLS_OF_MINTABLE_RINKEBY_ROPSTEN_TOKENS, token.symbol) &&
|
(_.includes(configs.SYMBOLS_OF_MINTABLE_RINKEBY_ROPSTEN_TOKENS, token.symbol) &&
|
||||||
_.includes(
|
_.includes(
|
||||||
[constants.NETWORK_ID_BY_NAME[Networks.Rinkeby], constants.NETWORK_ID_BY_NAME[Networks.Ropsten]],
|
[
|
||||||
|
sharedConstants.NETWORK_ID_BY_NAME[Networks.Rinkeby],
|
||||||
|
sharedConstants.NETWORK_ID_BY_NAME[Networks.Ropsten],
|
||||||
|
],
|
||||||
this.props.networkId,
|
this.props.networkId,
|
||||||
));
|
));
|
||||||
return (
|
return (
|
||||||
@@ -539,7 +547,7 @@ export class TokenBalances extends React.Component<TokenBalancesProps, TokenBala
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
private _renderDharmaLoanFrame() {
|
private _renderDharmaLoanFrame() {
|
||||||
if (utils.isUserOnMobile()) {
|
if (sharedUtils.isUserOnMobile()) {
|
||||||
return (
|
return (
|
||||||
<h4 style={{ textAlign: 'center' }}>
|
<h4 style={{ textAlign: 'center' }}>
|
||||||
We apologize -- Dharma loan requests are not available on mobile yet. Please try again through your
|
We apologize -- Dharma loan requests are not available on mobile yet. Please try again through your
|
||||||
|
@@ -1,3 +1,4 @@
|
|||||||
|
import { constants as sharedConstants } from '@0xproject/react-shared';
|
||||||
import { colors } from '@0xproject/react-shared';
|
import { colors } from '@0xproject/react-shared';
|
||||||
import * as _ from 'lodash';
|
import * as _ from 'lodash';
|
||||||
import { RadioButton, RadioButtonGroup } from 'material-ui/RadioButton';
|
import { RadioButton, RadioButtonGroup } from 'material-ui/RadioButton';
|
||||||
@@ -56,7 +57,7 @@ export class ProviderPicker extends React.Component<ProviderPickerProps, Provide
|
|||||||
return label;
|
return label;
|
||||||
}
|
}
|
||||||
private _renderNetwork() {
|
private _renderNetwork() {
|
||||||
const networkName = constants.NETWORK_NAME_BY_ID[this.props.networkId];
|
const networkName = sharedConstants.NETWORK_NAME_BY_ID[this.props.networkId];
|
||||||
return (
|
return (
|
||||||
<div className="flex" style={{ marginTop: 1 }}>
|
<div className="flex" style={{ marginTop: 1 }}>
|
||||||
<div className="relative" style={{ width: 14, paddingLeft: 14 }}>
|
<div className="relative" style={{ width: 14, paddingLeft: 14 }}>
|
||||||
|
@@ -1,3 +1,4 @@
|
|||||||
|
import { DocsInfo, DocsMenu } from '@0xproject/react-docs';
|
||||||
import { colors, MenuSubsectionsBySection, NestedSidebarMenu, Styles } from '@0xproject/react-shared';
|
import { colors, MenuSubsectionsBySection, NestedSidebarMenu, Styles } from '@0xproject/react-shared';
|
||||||
import * as _ from 'lodash';
|
import * as _ from 'lodash';
|
||||||
import Drawer from 'material-ui/Drawer';
|
import Drawer from 'material-ui/Drawer';
|
||||||
@@ -12,9 +13,8 @@ import { ProviderDisplay } from 'ts/components/top_bar/provider_display';
|
|||||||
import { TopBarMenuItem } from 'ts/components/top_bar/top_bar_menu_item';
|
import { TopBarMenuItem } from 'ts/components/top_bar/top_bar_menu_item';
|
||||||
import { DropDown } from 'ts/components/ui/drop_down';
|
import { DropDown } from 'ts/components/ui/drop_down';
|
||||||
import { Identicon } from 'ts/components/ui/identicon';
|
import { Identicon } from 'ts/components/ui/identicon';
|
||||||
import { DocsInfo } from 'ts/pages/documentation/docs_info';
|
|
||||||
import { Dispatcher } from 'ts/redux/dispatcher';
|
import { Dispatcher } from 'ts/redux/dispatcher';
|
||||||
import { Deco, DocsMenu, Key, ProviderType, WebsitePaths } from 'ts/types';
|
import { Deco, Key, ProviderType, WebsitePaths } from 'ts/types';
|
||||||
import { constants } from 'ts/utils/constants';
|
import { constants } from 'ts/utils/constants';
|
||||||
import { Translate } from 'ts/utils/translate';
|
import { Translate } from 'ts/utils/translate';
|
||||||
|
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
import { ZeroEx } from '0x.js';
|
import { ZeroEx } from '0x.js';
|
||||||
import { colors } from '@0xproject/react-shared';
|
import { colors, EtherscanLinkSuffixes } from '@0xproject/react-shared';
|
||||||
import { BigNumber } from '@0xproject/utils';
|
import { BigNumber } from '@0xproject/utils';
|
||||||
import * as _ from 'lodash';
|
import * as _ from 'lodash';
|
||||||
import Paper from 'material-ui/Paper';
|
import Paper from 'material-ui/Paper';
|
||||||
@@ -8,7 +8,7 @@ import * as React from 'react';
|
|||||||
import * as ReactTooltip from 'react-tooltip';
|
import * as ReactTooltip from 'react-tooltip';
|
||||||
import { EtherScanIcon } from 'ts/components/ui/etherscan_icon';
|
import { EtherScanIcon } from 'ts/components/ui/etherscan_icon';
|
||||||
import { Party } from 'ts/components/ui/party';
|
import { Party } from 'ts/components/ui/party';
|
||||||
import { EtherscanLinkSuffixes, Fill, Token, TokenByAddress } from 'ts/types';
|
import { Fill, Token, TokenByAddress } from 'ts/types';
|
||||||
|
|
||||||
const PRECISION = 5;
|
const PRECISION = 5;
|
||||||
const IDENTICON_DIAMETER = 40;
|
const IDENTICON_DIAMETER = 40;
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
|
import { EtherscanLinkSuffixes } from '@0xproject/react-shared';
|
||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import ReactTooltip = require('react-tooltip');
|
import ReactTooltip = require('react-tooltip');
|
||||||
import { EtherScanIcon } from 'ts/components/ui/etherscan_icon';
|
import { EtherScanIcon } from 'ts/components/ui/etherscan_icon';
|
||||||
import { EtherscanLinkSuffixes } from 'ts/types';
|
|
||||||
import { utils } from 'ts/utils/utils';
|
import { utils } from 'ts/utils/utils';
|
||||||
|
|
||||||
interface EthereumAddressProps {
|
interface EthereumAddressProps {
|
||||||
|
@@ -1,8 +1,7 @@
|
|||||||
import { colors } from '@0xproject/react-shared';
|
import { colors, EtherscanLinkSuffixes, utils as sharedUtils } from '@0xproject/react-shared';
|
||||||
import * as _ from 'lodash';
|
import * as _ from 'lodash';
|
||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import ReactTooltip = require('react-tooltip');
|
import ReactTooltip = require('react-tooltip');
|
||||||
import { EtherscanLinkSuffixes } from 'ts/types';
|
|
||||||
import { utils } from 'ts/utils/utils';
|
import { utils } from 'ts/utils/utils';
|
||||||
|
|
||||||
interface EtherScanIconProps {
|
interface EtherScanIconProps {
|
||||||
@@ -12,7 +11,7 @@ interface EtherScanIconProps {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const EtherScanIcon = (props: EtherScanIconProps) => {
|
export const EtherScanIcon = (props: EtherScanIconProps) => {
|
||||||
const etherscanLinkIfExists = utils.getEtherScanLinkIfExists(
|
const etherscanLinkIfExists = sharedUtils.getEtherScanLinkIfExists(
|
||||||
props.addressOrTxHash,
|
props.addressOrTxHash,
|
||||||
props.networkId,
|
props.networkId,
|
||||||
EtherscanLinkSuffixes.Address,
|
EtherscanLinkSuffixes.Address,
|
||||||
|
@@ -1,10 +1,9 @@
|
|||||||
import { colors } from '@0xproject/react-shared';
|
import { colors, EtherscanLinkSuffixes, utils as sharedUtils } from '@0xproject/react-shared';
|
||||||
import * as _ from 'lodash';
|
import * as _ from 'lodash';
|
||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import ReactTooltip = require('react-tooltip');
|
import ReactTooltip = require('react-tooltip');
|
||||||
import { EthereumAddress } from 'ts/components/ui/ethereum_address';
|
import { EthereumAddress } from 'ts/components/ui/ethereum_address';
|
||||||
import { Identicon } from 'ts/components/ui/identicon';
|
import { Identicon } from 'ts/components/ui/identicon';
|
||||||
import { EtherscanLinkSuffixes } from 'ts/types';
|
|
||||||
import { utils } from 'ts/utils/utils';
|
import { utils } from 'ts/utils/utils';
|
||||||
|
|
||||||
const IMAGE_DIMENSION = 100;
|
const IMAGE_DIMENSION = 100;
|
||||||
@@ -43,7 +42,7 @@ export class Party extends React.Component<PartyProps, PartyState> {
|
|||||||
width: IMAGE_DIMENSION,
|
width: IMAGE_DIMENSION,
|
||||||
height: IMAGE_DIMENSION,
|
height: IMAGE_DIMENSION,
|
||||||
};
|
};
|
||||||
const etherscanLinkIfExists = utils.getEtherScanLinkIfExists(
|
const etherscanLinkIfExists = sharedUtils.getEtherScanLinkIfExists(
|
||||||
this.props.address,
|
this.props.address,
|
||||||
this.props.networkId,
|
this.props.networkId,
|
||||||
EtherscanLinkSuffixes.Address,
|
EtherscanLinkSuffixes.Address,
|
||||||
|
@@ -1,12 +1,12 @@
|
|||||||
|
import { constants as docConstants, DocsInfo, DocsInfoConfig, SupportedDocJson } from '@0xproject/react-docs';
|
||||||
import * as _ from 'lodash';
|
import * as _ from 'lodash';
|
||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { Dispatch } from 'redux';
|
import { Dispatch } from 'redux';
|
||||||
import { DocPage as DocPageComponent, DocPageProps } from 'ts/pages/documentation/doc_page';
|
import { DocPage as DocPageComponent, DocPageProps } from 'ts/pages/documentation/doc_page';
|
||||||
import { DocsInfo } from 'ts/pages/documentation/docs_info';
|
|
||||||
import { Dispatcher } from 'ts/redux/dispatcher';
|
import { Dispatcher } from 'ts/redux/dispatcher';
|
||||||
import { State } from 'ts/redux/reducer';
|
import { State } from 'ts/redux/reducer';
|
||||||
import { DocPackages, DocsInfoConfig, Environments, SupportedDocJson, WebsitePaths } from 'ts/types';
|
import { DocPackages, Environments, WebsitePaths } from 'ts/types';
|
||||||
import { configs } from 'ts/utils/configs';
|
import { configs } from 'ts/utils/configs';
|
||||||
import { constants } from 'ts/utils/constants';
|
import { constants } from 'ts/utils/constants';
|
||||||
import { Translate } from 'ts/utils/translate';
|
import { Translate } from 'ts/utils/translate';
|
||||||
@@ -21,7 +21,7 @@ const connectDocSections = {
|
|||||||
installation: 'installation',
|
installation: 'installation',
|
||||||
httpClient: 'httpClient',
|
httpClient: 'httpClient',
|
||||||
webSocketOrderbookChannel: 'webSocketOrderbookChannel',
|
webSocketOrderbookChannel: 'webSocketOrderbookChannel',
|
||||||
types: constants.TYPES_SECTION_NAME,
|
types: docConstants.TYPES_SECTION_NAME,
|
||||||
};
|
};
|
||||||
|
|
||||||
const docsInfoConfig: DocsInfoConfig = {
|
const docsInfoConfig: DocsInfoConfig = {
|
||||||
|
@@ -1,19 +1,13 @@
|
|||||||
|
import { DocsInfo, DocsInfoConfig, SupportedDocJson } from '@0xproject/react-docs';
|
||||||
|
import { Networks } from '@0xproject/react-shared';
|
||||||
import * as _ from 'lodash';
|
import * as _ from 'lodash';
|
||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { Dispatch } from 'redux';
|
import { Dispatch } from 'redux';
|
||||||
import { DocPage as DocPageComponent, DocPageProps } from 'ts/pages/documentation/doc_page';
|
import { DocPage as DocPageComponent, DocPageProps } from 'ts/pages/documentation/doc_page';
|
||||||
import { DocsInfo } from 'ts/pages/documentation/docs_info';
|
|
||||||
import { Dispatcher } from 'ts/redux/dispatcher';
|
import { Dispatcher } from 'ts/redux/dispatcher';
|
||||||
import { State } from 'ts/redux/reducer';
|
import { State } from 'ts/redux/reducer';
|
||||||
import {
|
import { DocPackages, SmartContractDocSections as Sections, WebsitePaths } from 'ts/types';
|
||||||
DocPackages,
|
|
||||||
DocsInfoConfig,
|
|
||||||
Networks,
|
|
||||||
SmartContractDocSections as Sections,
|
|
||||||
SupportedDocJson,
|
|
||||||
WebsitePaths,
|
|
||||||
} from 'ts/types';
|
|
||||||
import { Translate } from 'ts/utils/translate';
|
import { Translate } from 'ts/utils/translate';
|
||||||
|
|
||||||
/* tslint:disable:no-var-requires */
|
/* tslint:disable:no-var-requires */
|
||||||
|
@@ -1,12 +1,12 @@
|
|||||||
|
import { constants as docConstants, DocsInfo, DocsInfoConfig, SupportedDocJson } from '@0xproject/react-docs';
|
||||||
import * as _ from 'lodash';
|
import * as _ from 'lodash';
|
||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import { connect } from 'react-redux';
|
import { connect } from 'react-redux';
|
||||||
import { Dispatch } from 'redux';
|
import { Dispatch } from 'redux';
|
||||||
import { DocPage as DocPageComponent, DocPageProps } from 'ts/pages/documentation/doc_page';
|
import { DocPage as DocPageComponent, DocPageProps } from 'ts/pages/documentation/doc_page';
|
||||||
import { DocsInfo } from 'ts/pages/documentation/docs_info';
|
|
||||||
import { Dispatcher } from 'ts/redux/dispatcher';
|
import { Dispatcher } from 'ts/redux/dispatcher';
|
||||||
import { State } from 'ts/redux/reducer';
|
import { State } from 'ts/redux/reducer';
|
||||||
import { DocPackages, DocsInfoConfig, Environments, SupportedDocJson, WebsitePaths } from 'ts/types';
|
import { DocPackages, Environments, WebsitePaths } from 'ts/types';
|
||||||
import { configs } from 'ts/utils/configs';
|
import { configs } from 'ts/utils/configs';
|
||||||
import { constants } from 'ts/utils/constants';
|
import { constants } from 'ts/utils/constants';
|
||||||
import { Translate } from 'ts/utils/translate';
|
import { Translate } from 'ts/utils/translate';
|
||||||
@@ -33,7 +33,7 @@ const zeroExJsDocSections = {
|
|||||||
etherToken: 'etherToken',
|
etherToken: 'etherToken',
|
||||||
proxy: 'proxy',
|
proxy: 'proxy',
|
||||||
orderWatcher: 'orderWatcher',
|
orderWatcher: 'orderWatcher',
|
||||||
types: constants.TYPES_SECTION_NAME,
|
types: docConstants.TYPES_SECTION_NAME,
|
||||||
};
|
};
|
||||||
|
|
||||||
const docsInfoConfig: DocsInfoConfig = {
|
const docsInfoConfig: DocsInfoConfig = {
|
||||||
|
12
packages/website/ts/globals.d.ts
vendored
12
packages/website/ts/globals.d.ts
vendored
@@ -27,12 +27,6 @@ declare module 'find-versions' {
|
|||||||
export = findVersions;
|
export = findVersions;
|
||||||
}
|
}
|
||||||
|
|
||||||
// compare-version declarations
|
|
||||||
declare function compareVersions(firstVersion: string, secondVersion: string): number;
|
|
||||||
declare module 'compare-versions' {
|
|
||||||
export = compareVersions;
|
|
||||||
}
|
|
||||||
|
|
||||||
// semver-sort declarations
|
// semver-sort declarations
|
||||||
declare module 'semver-sort' {
|
declare module 'semver-sort' {
|
||||||
const desc: (versions: string[]) => string[];
|
const desc: (versions: string[]) => string[];
|
||||||
@@ -115,12 +109,6 @@ declare module 'blockies' {
|
|||||||
export = blockies;
|
export = blockies;
|
||||||
}
|
}
|
||||||
|
|
||||||
// is-mobile declarations
|
|
||||||
declare function isMobile(): boolean;
|
|
||||||
declare module 'is-mobile' {
|
|
||||||
export = isMobile;
|
|
||||||
}
|
|
||||||
|
|
||||||
// web3-provider-engine declarations
|
// web3-provider-engine declarations
|
||||||
declare class Subprovider {}
|
declare class Subprovider {}
|
||||||
declare module 'web3-provider-engine/subproviders/subprovider' {
|
declare module 'web3-provider-engine/subproviders/subprovider' {
|
||||||
|
@@ -1,3 +1,4 @@
|
|||||||
|
import { DocAgnosticFormat, DocsInfo, Documentation, DoxityDocObj } from '@0xproject/react-docs';
|
||||||
import { MenuSubsectionsBySection } from '@0xproject/react-shared';
|
import { MenuSubsectionsBySection } from '@0xproject/react-shared';
|
||||||
import findVersions = require('find-versions');
|
import findVersions = require('find-versions');
|
||||||
import * as _ from 'lodash';
|
import * as _ from 'lodash';
|
||||||
@@ -5,10 +6,8 @@ import * as React from 'react';
|
|||||||
import DocumentTitle = require('react-document-title');
|
import DocumentTitle = require('react-document-title');
|
||||||
import semverSort = require('semver-sort');
|
import semverSort = require('semver-sort');
|
||||||
import { TopBar } from 'ts/components/top_bar/top_bar';
|
import { TopBar } from 'ts/components/top_bar/top_bar';
|
||||||
import { DocsInfo } from 'ts/pages/documentation/docs_info';
|
|
||||||
import { Documentation } from 'ts/pages/documentation/documentation';
|
|
||||||
import { Dispatcher } from 'ts/redux/dispatcher';
|
import { Dispatcher } from 'ts/redux/dispatcher';
|
||||||
import { DocAgnosticFormat, DocPackages, DoxityDocObj, Environments } from 'ts/types';
|
import { DocPackages, Environments } from 'ts/types';
|
||||||
import { configs } from 'ts/utils/configs';
|
import { configs } from 'ts/utils/configs';
|
||||||
import { constants } from 'ts/utils/constants';
|
import { constants } from 'ts/utils/constants';
|
||||||
import { docUtils } from 'ts/utils/doc_utils';
|
import { docUtils } from 'ts/utils/doc_utils';
|
||||||
|
@@ -225,11 +225,6 @@ export enum AlertTypes {
|
|||||||
SUCCESS,
|
SUCCESS,
|
||||||
}
|
}
|
||||||
|
|
||||||
export enum EtherscanLinkSuffixes {
|
|
||||||
Address = 'address',
|
|
||||||
Tx = 'tx',
|
|
||||||
}
|
|
||||||
|
|
||||||
export enum BlockchainErrs {
|
export enum BlockchainErrs {
|
||||||
AContractNotDeployedOnNetwork = 'A_CONTRACT_NOT_DEPLOYED_ON_NETWORK',
|
AContractNotDeployedOnNetwork = 'A_CONTRACT_NOT_DEPLOYED_ON_NETWORK',
|
||||||
DisconnectedFromEthereumNode = 'DISCONNECTED_FROM_ETHEREUM_NODE',
|
DisconnectedFromEthereumNode = 'DISCONNECTED_FROM_ETHEREUM_NODE',
|
||||||
@@ -243,24 +238,6 @@ export enum BlockchainCallErrs {
|
|||||||
TokenAddressIsInvalid = 'TOKEN_ADDRESS_IS_INVALID',
|
TokenAddressIsInvalid = 'TOKEN_ADDRESS_IS_INVALID',
|
||||||
}
|
}
|
||||||
|
|
||||||
// Exception: We don't make the values uppercase because these KindString's need to
|
|
||||||
// match up those returned by TypeDoc
|
|
||||||
export enum KindString {
|
|
||||||
Constructor = 'Constructor',
|
|
||||||
Property = 'Property',
|
|
||||||
Method = 'Method',
|
|
||||||
Interface = 'Interface',
|
|
||||||
TypeAlias = 'Type alias',
|
|
||||||
Variable = 'Variable',
|
|
||||||
Function = 'Function',
|
|
||||||
Enumeration = 'Enumeration',
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface EnumValue {
|
|
||||||
name: string;
|
|
||||||
defaultValue?: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export enum Environments {
|
export enum Environments {
|
||||||
DEVELOPMENT,
|
DEVELOPMENT,
|
||||||
PRODUCTION,
|
PRODUCTION,
|
||||||
@@ -268,170 +245,6 @@ export enum Environments {
|
|||||||
|
|
||||||
export type ContractInstance = any; // TODO: add type definition for Contract
|
export type ContractInstance = any; // TODO: add type definition for Contract
|
||||||
|
|
||||||
export interface TypeDocType {
|
|
||||||
type: TypeDocTypes;
|
|
||||||
value: string;
|
|
||||||
name: string;
|
|
||||||
types: TypeDocType[];
|
|
||||||
typeArguments?: TypeDocType[];
|
|
||||||
declaration: TypeDocNode;
|
|
||||||
elementType?: TypeDocType;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface TypeDocFlags {
|
|
||||||
isStatic?: boolean;
|
|
||||||
isOptional?: boolean;
|
|
||||||
isPublic?: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface TypeDocGroup {
|
|
||||||
title: string;
|
|
||||||
children: number[];
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface TypeDocNode {
|
|
||||||
id?: number;
|
|
||||||
name?: string;
|
|
||||||
kind?: string;
|
|
||||||
defaultValue?: string;
|
|
||||||
kindString?: string;
|
|
||||||
type?: TypeDocType;
|
|
||||||
fileName?: string;
|
|
||||||
line?: number;
|
|
||||||
comment?: TypeDocNode;
|
|
||||||
text?: string;
|
|
||||||
shortText?: string;
|
|
||||||
returns?: string;
|
|
||||||
declaration: TypeDocNode;
|
|
||||||
flags?: TypeDocFlags;
|
|
||||||
indexSignature?: TypeDocNode | TypeDocNode[]; // TypeDocNode in TypeDoc <V0.9.0, TypeDocNode[] in >V0.9.0
|
|
||||||
signatures?: TypeDocNode[];
|
|
||||||
parameters?: TypeDocNode[];
|
|
||||||
typeParameter?: TypeDocNode[];
|
|
||||||
sources?: TypeDocNode[];
|
|
||||||
children?: TypeDocNode[];
|
|
||||||
groups?: TypeDocGroup[];
|
|
||||||
}
|
|
||||||
|
|
||||||
export enum TypeDocTypes {
|
|
||||||
Intrinsic = 'intrinsic',
|
|
||||||
Reference = 'reference',
|
|
||||||
Array = 'array',
|
|
||||||
StringLiteral = 'stringLiteral',
|
|
||||||
Reflection = 'reflection',
|
|
||||||
Union = 'union',
|
|
||||||
TypeParameter = 'typeParameter',
|
|
||||||
Intersection = 'intersection',
|
|
||||||
Unknown = 'unknown',
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface DocAgnosticFormat {
|
|
||||||
[sectionName: string]: DocSection;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface DocSection {
|
|
||||||
comment: string;
|
|
||||||
constructors: Array<TypescriptMethod | SolidityMethod>;
|
|
||||||
methods: Array<TypescriptMethod | SolidityMethod>;
|
|
||||||
properties: Property[];
|
|
||||||
types: CustomType[];
|
|
||||||
events?: Event[];
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface Event {
|
|
||||||
name: string;
|
|
||||||
eventArgs: EventArg[];
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface EventArg {
|
|
||||||
isIndexed: boolean;
|
|
||||||
name: string;
|
|
||||||
type: Type;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface Property {
|
|
||||||
name: string;
|
|
||||||
type: Type;
|
|
||||||
source?: Source;
|
|
||||||
comment?: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface BaseMethod {
|
|
||||||
isConstructor: boolean;
|
|
||||||
name: string;
|
|
||||||
returnComment?: string | undefined;
|
|
||||||
callPath: string;
|
|
||||||
parameters: Parameter[];
|
|
||||||
returnType: Type;
|
|
||||||
comment?: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface TypescriptMethod extends BaseMethod {
|
|
||||||
source?: Source;
|
|
||||||
isStatic?: boolean;
|
|
||||||
typeParameter?: TypeParameter;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface SolidityMethod extends BaseMethod {
|
|
||||||
isConstant?: boolean;
|
|
||||||
isPayable?: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface Source {
|
|
||||||
fileName: string;
|
|
||||||
line: number;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface Parameter {
|
|
||||||
name: string;
|
|
||||||
comment: string;
|
|
||||||
isOptional: boolean;
|
|
||||||
type: Type;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface TypeParameter {
|
|
||||||
name: string;
|
|
||||||
type: Type;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface Type {
|
|
||||||
name: string;
|
|
||||||
typeDocType: TypeDocTypes;
|
|
||||||
value?: string;
|
|
||||||
typeArguments?: Type[];
|
|
||||||
elementType?: ElementType;
|
|
||||||
types?: Type[];
|
|
||||||
method?: TypescriptMethod;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface ElementType {
|
|
||||||
name: string;
|
|
||||||
typeDocType: TypeDocTypes;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface IndexSignature {
|
|
||||||
keyName: string;
|
|
||||||
keyType: Type;
|
|
||||||
valueName: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface CustomType {
|
|
||||||
name: string;
|
|
||||||
kindString: string;
|
|
||||||
type?: Type;
|
|
||||||
method?: TypescriptMethod;
|
|
||||||
indexSignature?: IndexSignature;
|
|
||||||
defaultValue?: string;
|
|
||||||
comment?: string;
|
|
||||||
children?: CustomTypeChild[];
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface CustomTypeChild {
|
|
||||||
name: string;
|
|
||||||
type?: Type;
|
|
||||||
defaultValue?: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface FAQQuestion {
|
export interface FAQQuestion {
|
||||||
prompt: string;
|
prompt: string;
|
||||||
answer: React.ReactNode;
|
answer: React.ReactNode;
|
||||||
@@ -500,10 +313,6 @@ export interface BlogPost {
|
|||||||
url: string;
|
url: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface TypeDefinitionByName {
|
|
||||||
[typeName: string]: CustomType;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface Article {
|
export interface Article {
|
||||||
section: string;
|
section: string;
|
||||||
title: string;
|
title: string;
|
||||||
@@ -527,40 +336,6 @@ export enum TokenVisibility {
|
|||||||
TRACKED = 'TRACKED',
|
TRACKED = 'TRACKED',
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface DoxityDocObj {
|
|
||||||
[contractName: string]: DoxityContractObj;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface DoxityContractObj {
|
|
||||||
title: string;
|
|
||||||
fileName: string;
|
|
||||||
name: string;
|
|
||||||
abiDocs: DoxityAbiDoc[];
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface DoxityAbiDoc {
|
|
||||||
constant: boolean;
|
|
||||||
inputs: DoxityInput[];
|
|
||||||
name: string;
|
|
||||||
outputs: DoxityOutput[];
|
|
||||||
payable: boolean;
|
|
||||||
type: string;
|
|
||||||
details?: string;
|
|
||||||
return?: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface DoxityOutput {
|
|
||||||
name: string;
|
|
||||||
type: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface DoxityInput {
|
|
||||||
name: string;
|
|
||||||
type: string;
|
|
||||||
description: string;
|
|
||||||
indexed?: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface VersionToFileName {
|
export interface VersionToFileName {
|
||||||
[version: string]: string;
|
[version: string]: string;
|
||||||
}
|
}
|
||||||
@@ -570,29 +345,6 @@ export enum Docs {
|
|||||||
SmartContracts,
|
SmartContracts,
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ContractAddresses {
|
|
||||||
[version: string]: {
|
|
||||||
[network: string]: AddressByContractName;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface AddressByContractName {
|
|
||||||
[contractName: string]: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export enum Networks {
|
|
||||||
Mainnet = 'Mainnet',
|
|
||||||
Kovan = 'Kovan',
|
|
||||||
Ropsten = 'Ropsten',
|
|
||||||
Rinkeby = 'Rinkeby',
|
|
||||||
}
|
|
||||||
|
|
||||||
export enum AbiTypes {
|
|
||||||
Constructor = 'constructor',
|
|
||||||
Function = 'function',
|
|
||||||
Event = 'event',
|
|
||||||
}
|
|
||||||
|
|
||||||
export enum WebsitePaths {
|
export enum WebsitePaths {
|
||||||
Portal = '/portal',
|
Portal = '/portal',
|
||||||
Wiki = '/wiki',
|
Wiki = '/wiki',
|
||||||
@@ -605,49 +357,12 @@ export enum WebsitePaths {
|
|||||||
Connect = '/docs/connect',
|
Connect = '/docs/connect',
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface DocsMenu {
|
|
||||||
[sectionName: string]: string[];
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface SectionsMap {
|
|
||||||
[sectionName: string]: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export enum DocPackages {
|
export enum DocPackages {
|
||||||
Connect = 'CONNECT',
|
Connect = 'CONNECT',
|
||||||
ZeroExJs = 'ZERO_EX_JS',
|
ZeroExJs = 'ZERO_EX_JS',
|
||||||
SmartContracts = 'SMART_CONTRACTS',
|
SmartContracts = 'SMART_CONTRACTS',
|
||||||
}
|
}
|
||||||
|
|
||||||
export enum SupportedDocJson {
|
|
||||||
Doxity = 'DOXITY',
|
|
||||||
TypeDoc = 'TYPEDOC',
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface ContractsByVersionByNetworkId {
|
|
||||||
[version: string]: {
|
|
||||||
[networkName: string]: {
|
|
||||||
[contractName: string]: string;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface DocsInfoConfig {
|
|
||||||
id: string;
|
|
||||||
type: SupportedDocJson;
|
|
||||||
displayName: string;
|
|
||||||
packageUrl: string;
|
|
||||||
menu: DocsMenu;
|
|
||||||
sections: SectionsMap;
|
|
||||||
sectionNameToMarkdown: { [sectionName: string]: string };
|
|
||||||
visibleConstructors: string[];
|
|
||||||
subPackageName?: string;
|
|
||||||
publicTypes?: string[];
|
|
||||||
sectionNameToModulePath?: { [sectionName: string]: string[] };
|
|
||||||
menuSubsectionToVersionWhenIntroduced?: { [sectionName: string]: string };
|
|
||||||
contractsByVersionByNetworkId?: ContractsByVersionByNetworkId;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface TimestampMsRange {
|
export interface TimestampMsRange {
|
||||||
startTimestampMs: number;
|
startTimestampMs: number;
|
||||||
endTimestampMs: number;
|
endTimestampMs: number;
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
import * as _ from 'lodash';
|
import * as _ from 'lodash';
|
||||||
import { ContractAddresses, Environments, OutdatedWrappedEtherByNetworkId, PublicNodeUrlsByNetworkId } from 'ts/types';
|
import { Environments, OutdatedWrappedEtherByNetworkId, PublicNodeUrlsByNetworkId } from 'ts/types';
|
||||||
|
|
||||||
const BASE_URL = window.location.origin;
|
const BASE_URL = window.location.origin;
|
||||||
const isDevelopment = _.includes(
|
const isDevelopment = _.includes(
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
|
import { Networks } from '@0xproject/react-shared';
|
||||||
import { BigNumber } from '@0xproject/utils';
|
import { BigNumber } from '@0xproject/utils';
|
||||||
import { Networks } from 'ts/types';
|
|
||||||
|
|
||||||
export const constants = {
|
export const constants = {
|
||||||
DECIMAL_PLACES_ETH: 18,
|
DECIMAL_PLACES_ETH: 18,
|
||||||
@@ -21,18 +21,6 @@ export const constants = {
|
|||||||
NETWORK_ID_MAINNET: 1,
|
NETWORK_ID_MAINNET: 1,
|
||||||
NETWORK_ID_KOVAN: 42,
|
NETWORK_ID_KOVAN: 42,
|
||||||
NETWORK_ID_TESTRPC: 50,
|
NETWORK_ID_TESTRPC: 50,
|
||||||
NETWORK_NAME_BY_ID: {
|
|
||||||
1: Networks.Mainnet,
|
|
||||||
3: Networks.Ropsten,
|
|
||||||
4: Networks.Rinkeby,
|
|
||||||
42: Networks.Kovan,
|
|
||||||
} as { [symbol: number]: string },
|
|
||||||
NETWORK_ID_BY_NAME: {
|
|
||||||
[Networks.Mainnet]: 1,
|
|
||||||
[Networks.Ropsten]: 3,
|
|
||||||
[Networks.Rinkeby]: 4,
|
|
||||||
[Networks.Kovan]: 42,
|
|
||||||
} as { [networkName: string]: number },
|
|
||||||
NULL_ADDRESS: '0x0000000000000000000000000000000000000000',
|
NULL_ADDRESS: '0x0000000000000000000000000000000000000000',
|
||||||
PROVIDER_NAME_LEDGER: 'Ledger',
|
PROVIDER_NAME_LEDGER: 'Ledger',
|
||||||
PROVIDER_NAME_METAMASK: 'Metamask',
|
PROVIDER_NAME_METAMASK: 'Metamask',
|
||||||
@@ -45,7 +33,6 @@ export const constants = {
|
|||||||
UNAVAILABLE_STATUS: 503,
|
UNAVAILABLE_STATUS: 503,
|
||||||
TAKER_FEE: new BigNumber(0),
|
TAKER_FEE: new BigNumber(0),
|
||||||
TESTNET_NAME: 'Kovan',
|
TESTNET_NAME: 'Kovan',
|
||||||
TYPES_SECTION_NAME: 'types',
|
|
||||||
PROJECT_URL_ETHFINEX: 'https://www.bitfinex.com/ethfinex',
|
PROJECT_URL_ETHFINEX: 'https://www.bitfinex.com/ethfinex',
|
||||||
PROJECT_URL_AMADEUS: 'http://amadeusrelay.org',
|
PROJECT_URL_AMADEUS: 'http://amadeusrelay.org',
|
||||||
PROJECT_URL_DDEX: 'https://ddex.io',
|
PROJECT_URL_DDEX: 'https://ddex.io',
|
||||||
@@ -70,7 +57,6 @@ export const constants = {
|
|||||||
PROJECT_URL_OPEN_ANX: 'https://www.openanx.org',
|
PROJECT_URL_OPEN_ANX: 'https://www.openanx.org',
|
||||||
PROJECT_URL_IDT: 'https://kinalpha.com',
|
PROJECT_URL_IDT: 'https://kinalpha.com',
|
||||||
URL_ANGELLIST: 'https://angel.co/0xproject/jobs',
|
URL_ANGELLIST: 'https://angel.co/0xproject/jobs',
|
||||||
URL_BIGNUMBERJS_GITHUB: 'http://mikemcl.github.io/bignumber.js',
|
|
||||||
URL_BITLY_API: 'https://api-ssl.bitly.com',
|
URL_BITLY_API: 'https://api-ssl.bitly.com',
|
||||||
URL_BLOG: 'https://blog.0xproject.com/latest',
|
URL_BLOG: 'https://blog.0xproject.com/latest',
|
||||||
URL_DISCOURSE_FORUM: 'https://forum.0xproject.com',
|
URL_DISCOURSE_FORUM: 'https://forum.0xproject.com',
|
||||||
@@ -85,11 +71,6 @@ export const constants = {
|
|||||||
URL_REDDIT: 'https://reddit.com/r/0xproject',
|
URL_REDDIT: 'https://reddit.com/r/0xproject',
|
||||||
URL_STANDARD_RELAYER_API_GITHUB: 'https://github.com/0xProject/standard-relayer-api/blob/master/README.md',
|
URL_STANDARD_RELAYER_API_GITHUB: 'https://github.com/0xProject/standard-relayer-api/blob/master/README.md',
|
||||||
URL_TWITTER: 'https://twitter.com/0xproject',
|
URL_TWITTER: 'https://twitter.com/0xproject',
|
||||||
URL_WEB3_DOCS: 'https://github.com/ethereum/wiki/wiki/JavaScript-API',
|
|
||||||
URL_WEB3_DECODED_LOG_ENTRY_EVENT:
|
|
||||||
'https://github.com/0xProject/web3-typescript-typings/blob/f5bcb96/index.d.ts#L123',
|
|
||||||
URL_WEB3_LOG_ENTRY_EVENT: 'https://github.com/0xProject/web3-typescript-typings/blob/f5bcb96/index.d.ts#L127',
|
|
||||||
URL_WEB3_PROVIDER_DOCS: 'https://github.com/0xProject/web3-typescript-typings/blob/f5bcb96/index.d.ts#L150',
|
|
||||||
URL_WETH_IO: 'https://weth.io/',
|
URL_WETH_IO: 'https://weth.io/',
|
||||||
URL_ZEROEX_CHAT: 'https://chat.0xproject.com',
|
URL_ZEROEX_CHAT: 'https://chat.0xproject.com',
|
||||||
};
|
};
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
|
import { DoxityDocObj, TypeDocNode } from '@0xproject/react-docs';
|
||||||
import findVersions = require('find-versions');
|
import findVersions = require('find-versions');
|
||||||
import * as _ from 'lodash';
|
import * as _ from 'lodash';
|
||||||
import { DoxityDocObj, S3FileObject, TypeDocNode, VersionToFileName } from 'ts/types';
|
import { S3FileObject, VersionToFileName } from 'ts/types';
|
||||||
import { utils } from 'ts/utils/utils';
|
import { utils } from 'ts/utils/utils';
|
||||||
import convert = require('xml-js');
|
import convert = require('xml-js');
|
||||||
|
|
||||||
|
@@ -1,19 +1,10 @@
|
|||||||
import { ECSignature, ExchangeContractErrs, ZeroEx, ZeroExError } from '0x.js';
|
import { ECSignature, ExchangeContractErrs, ZeroEx, ZeroExError } from '0x.js';
|
||||||
|
import { constants as sharedConstants, EtherscanLinkSuffixes, Networks } from '@0xproject/react-shared';
|
||||||
import { BigNumber } from '@0xproject/utils';
|
import { BigNumber } from '@0xproject/utils';
|
||||||
import deepEqual = require('deep-equal');
|
import deepEqual = require('deep-equal');
|
||||||
import isMobile = require('is-mobile');
|
|
||||||
import * as _ from 'lodash';
|
import * as _ from 'lodash';
|
||||||
import * as moment from 'moment';
|
import * as moment from 'moment';
|
||||||
import {
|
import { Order, ScreenWidths, Side, SideToAssetToken, Token, TokenByAddress } from 'ts/types';
|
||||||
EtherscanLinkSuffixes,
|
|
||||||
Networks,
|
|
||||||
Order,
|
|
||||||
ScreenWidths,
|
|
||||||
Side,
|
|
||||||
SideToAssetToken,
|
|
||||||
Token,
|
|
||||||
TokenByAddress,
|
|
||||||
} from 'ts/types';
|
|
||||||
import { configs } from 'ts/utils/configs';
|
import { configs } from 'ts/utils/configs';
|
||||||
import { constants } from 'ts/utils/constants';
|
import { constants } from 'ts/utils/constants';
|
||||||
import * as u2f from 'ts/vendor/u2f_api';
|
import * as u2f from 'ts/vendor/u2f_api';
|
||||||
@@ -139,18 +130,6 @@ export const utils = {
|
|||||||
return ScreenWidths.Sm;
|
return ScreenWidths.Sm;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
isUserOnMobile(): boolean {
|
|
||||||
const isUserOnMobile = isMobile();
|
|
||||||
return isUserOnMobile;
|
|
||||||
},
|
|
||||||
getEtherScanLinkIfExists(addressOrTxHash: string, networkId: number, suffix: EtherscanLinkSuffixes): string {
|
|
||||||
const networkName = constants.NETWORK_NAME_BY_ID[networkId];
|
|
||||||
if (_.isUndefined(networkName)) {
|
|
||||||
return undefined;
|
|
||||||
}
|
|
||||||
const etherScanPrefix = networkName === Networks.Mainnet ? '' : `${networkName.toLowerCase()}.`;
|
|
||||||
return `https://${etherScanPrefix}etherscan.io/${suffix}/${addressOrTxHash}`;
|
|
||||||
},
|
|
||||||
async isU2FSupportedAsync(): Promise<boolean> {
|
async isU2FSupportedAsync(): Promise<boolean> {
|
||||||
const w = window as any;
|
const w = window as any;
|
||||||
return new Promise((resolve: (isSupported: boolean) => void) => {
|
return new Promise((resolve: (isSupported: boolean) => void) => {
|
||||||
@@ -275,9 +254,9 @@ export const utils = {
|
|||||||
isTestNetwork(networkId: number): boolean {
|
isTestNetwork(networkId: number): boolean {
|
||||||
const isTestNetwork = _.includes(
|
const isTestNetwork = _.includes(
|
||||||
[
|
[
|
||||||
constants.NETWORK_ID_BY_NAME[Networks.Kovan],
|
sharedConstants.NETWORK_ID_BY_NAME[Networks.Kovan],
|
||||||
constants.NETWORK_ID_BY_NAME[Networks.Rinkeby],
|
sharedConstants.NETWORK_ID_BY_NAME[Networks.Rinkeby],
|
||||||
constants.NETWORK_ID_BY_NAME[Networks.Ropsten],
|
sharedConstants.NETWORK_ID_BY_NAME[Networks.Ropsten],
|
||||||
],
|
],
|
||||||
networkId,
|
networkId,
|
||||||
);
|
);
|
||||||
|
Reference in New Issue
Block a user