Linter error fixes
This commit is contained in:
@@ -6,7 +6,7 @@ export default class AuthorizeBtn extends React.Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
onClick =() => {
|
onClick =() => {
|
||||||
let { authActions, authSelectors, errActions} = this.props
|
let { authActions, authSelectors } = this.props
|
||||||
let definitions = authSelectors.definitionsToAuthorize()
|
let definitions = authSelectors.definitionsToAuthorize()
|
||||||
|
|
||||||
authActions.showDefinitions(definitions)
|
authActions.showDefinitions(definitions)
|
||||||
|
|||||||
@@ -42,14 +42,12 @@ export default class Auths extends React.Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
let { definitions, getComponent, authSelectors, errSelectors, specSelectors } = this.props
|
let { definitions, getComponent, authSelectors, errSelectors } = this.props
|
||||||
const ApiKeyAuth = getComponent("apiKeyAuth")
|
const ApiKeyAuth = getComponent("apiKeyAuth")
|
||||||
const BasicAuth = getComponent("basicAuth")
|
const BasicAuth = getComponent("basicAuth")
|
||||||
const Oauth2 = getComponent("oauth2", true)
|
const Oauth2 = getComponent("oauth2", true)
|
||||||
const Button = getComponent("Button")
|
const Button = getComponent("Button")
|
||||||
const JumpToPath = getComponent("JumpToPath", true)
|
|
||||||
|
|
||||||
let specStr = specSelectors.specStr()
|
|
||||||
let authorized = authSelectors.authorized()
|
let authorized = authSelectors.authorized()
|
||||||
|
|
||||||
let authorizedAuth = definitions.filter( (definition, key) => {
|
let authorizedAuth = definitions.filter( (definition, key) => {
|
||||||
|
|||||||
@@ -16,7 +16,8 @@ export default class Oauth2 extends React.Component {
|
|||||||
authSelectors: PropTypes.object.isRequired,
|
authSelectors: PropTypes.object.isRequired,
|
||||||
authActions: PropTypes.object.isRequired,
|
authActions: PropTypes.object.isRequired,
|
||||||
errSelectors: PropTypes.object.isRequired,
|
errSelectors: PropTypes.object.isRequired,
|
||||||
errActions: PropTypes.object.isRequired
|
errActions: PropTypes.object.isRequired,
|
||||||
|
getConfigs: PropTypes.function
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor(props, context) {
|
constructor(props, context) {
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
import React, { PropTypes } from "react"
|
import React, { PropTypes } from "react"
|
||||||
import Im, { List } from "immutable"
|
import { List } from "immutable"
|
||||||
import Collapse from "react-collapse"
|
import Collapse from "react-collapse"
|
||||||
import sortBy from "lodash/sortBy"
|
|
||||||
|
|
||||||
export default class Errors extends React.Component {
|
export default class Errors extends React.Component {
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
import React, { Component, PropTypes } from "react"
|
import React, { Component, PropTypes } from "react"
|
||||||
import { fromJS } from "immutable"
|
|
||||||
|
|
||||||
export default class Execute extends Component {
|
export default class Execute extends Component {
|
||||||
|
|
||||||
@@ -29,9 +28,6 @@ export default class Execute extends Component {
|
|||||||
onChangeProducesWrapper = ( val ) => this.props.specActions.changeProducesValue([this.props.path, this.props.method], val)
|
onChangeProducesWrapper = ( val ) => this.props.specActions.changeProducesValue([this.props.path, this.props.method], val)
|
||||||
|
|
||||||
render(){
|
render(){
|
||||||
let { getComponent, operation, specActions, path, method } = this.props
|
|
||||||
const ContentType = getComponent( "contentType" )
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<button className="btn execute opblock-control__btn" onClick={ this.onClick }>
|
<button className="btn execute opblock-control__btn" onClick={ this.onClick }>
|
||||||
Execute
|
Execute
|
||||||
|
|||||||
@@ -2,8 +2,6 @@ import React, { PropTypes } from "react"
|
|||||||
import OriCollapse from "react-collapse"
|
import OriCollapse from "react-collapse"
|
||||||
import _Markdown from "react-remarkable"
|
import _Markdown from "react-remarkable"
|
||||||
|
|
||||||
const noop = () => {}
|
|
||||||
|
|
||||||
function xclass(...args) {
|
function xclass(...args) {
|
||||||
return args.filter(a => !!a).join(" ").trim()
|
return args.filter(a => !!a).join(" ").trim()
|
||||||
}
|
}
|
||||||
@@ -44,12 +42,14 @@ export class Col extends React.Component {
|
|||||||
const {
|
const {
|
||||||
hide,
|
hide,
|
||||||
keepContents,
|
keepContents,
|
||||||
|
/* we don't want these in the `rest` object that passes to the final component,
|
||||||
mobile, /* we don't want these in the final component, since React now complains. So we extract them */
|
since React now complains. So we extract them */
|
||||||
|
/* eslint-disable no-unused-vars */
|
||||||
|
mobile,
|
||||||
tablet,
|
tablet,
|
||||||
desktop,
|
desktop,
|
||||||
large,
|
large,
|
||||||
|
/* eslint-enable no-unused-vars */
|
||||||
...rest
|
...rest
|
||||||
} = this.props
|
} = this.props
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import React, { Component, PropTypes } from "react"
|
import React, { Component, PropTypes } from "react"
|
||||||
import ImPropTypes from "react-immutable-proptypes"
|
import ImPropTypes from "react-immutable-proptypes"
|
||||||
import isObject from "lodash/isObject"
|
|
||||||
import { List } from "immutable"
|
import { List } from "immutable"
|
||||||
const braceOpen = "{"
|
const braceOpen = "{"
|
||||||
const braceClose = "}"
|
const braceClose = "}"
|
||||||
@@ -128,7 +127,6 @@ class Primitive extends Component {
|
|||||||
let format = schema.get("format")
|
let format = schema.get("format")
|
||||||
let xml = schema.get("xml")
|
let xml = schema.get("xml")
|
||||||
let enumArray = schema.get("enum")
|
let enumArray = schema.get("enum")
|
||||||
let description = schema.get("description")
|
|
||||||
let properties = schema.filter( ( v, key) => ["enum", "type", "format", "$$ref"].indexOf(key) === -1 )
|
let properties = schema.filter( ( v, key) => ["enum", "type", "format", "$$ref"].indexOf(key) === -1 )
|
||||||
let style = required ? { fontWeight: "bold" } : {}
|
let style = required ? { fontWeight: "bold" } : {}
|
||||||
let propStyle = { color: "#999", fontStyle: "italic" }
|
let propStyle = { color: "#999", fontStyle: "italic" }
|
||||||
@@ -251,9 +249,6 @@ export default class ModelComponent extends Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
render(){
|
render(){
|
||||||
let { name, schema } = this.props
|
|
||||||
let title = schema.get("title") || name
|
|
||||||
|
|
||||||
return <div className="model-box">
|
return <div className="model-box">
|
||||||
<Model { ...this.props } depth={ 1 } expandDepth={ this.props.expandDepth || 0 }/>
|
<Model { ...this.props } depth={ 1 } expandDepth={ this.props.expandDepth || 0 }/>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -4,7 +4,9 @@ import React, { Component, PropTypes } from "react"
|
|||||||
export default class Models extends Component {
|
export default class Models extends Component {
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
getComponent: PropTypes.func,
|
getComponent: PropTypes.func,
|
||||||
specSelectors: PropTypes.object
|
specSelectors: PropTypes.object,
|
||||||
|
layoutSelectors: PropTypes.object,
|
||||||
|
layoutActions: PropTypes.object
|
||||||
}
|
}
|
||||||
|
|
||||||
render(){
|
render(){
|
||||||
|
|||||||
@@ -1,6 +1,12 @@
|
|||||||
import React from "react"
|
import React, { PropTypes } from "react"
|
||||||
|
|
||||||
export default class OnlineValidatorBadge extends React.Component {
|
export default class OnlineValidatorBadge extends React.Component {
|
||||||
|
static propTypes = {
|
||||||
|
getComponent: PropTypes.func.isRequired,
|
||||||
|
getConfigs: PropTypes.func.isRequired,
|
||||||
|
specSelectors: PropTypes.object.isRequired
|
||||||
|
}
|
||||||
|
|
||||||
constructor(props, context) {
|
constructor(props, context) {
|
||||||
super(props, context)
|
super(props, context)
|
||||||
let { specSelectors, getConfigs } = props
|
let { specSelectors, getConfigs } = props
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
import React, { PropTypes } from "react"
|
import React, { PropTypes } from "react"
|
||||||
import { Map, fromJS } from "immutable"
|
|
||||||
import shallowCompare from "react-addons-shallow-compare"
|
import shallowCompare from "react-addons-shallow-compare"
|
||||||
import { getList } from "core/utils"
|
import { getList } from "core/utils"
|
||||||
import * as CustomPropTypes from "core/proptypes"
|
import * as CustomPropTypes from "core/proptypes"
|
||||||
@@ -112,9 +111,7 @@ export default class Operation extends React.Component {
|
|||||||
specActions,
|
specActions,
|
||||||
specSelectors,
|
specSelectors,
|
||||||
authActions,
|
authActions,
|
||||||
authSelectors,
|
authSelectors
|
||||||
layoutSelectors,
|
|
||||||
layoutActions,
|
|
||||||
} = this.props
|
} = this.props
|
||||||
|
|
||||||
let summary = operation.get("summary")
|
let summary = operation.get("summary")
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
import React, { PropTypes } from "react"
|
import React, { PropTypes } from "react"
|
||||||
import {presets} from "react-motion"
|
|
||||||
|
|
||||||
export default class Operations extends React.Component {
|
export default class Operations extends React.Component {
|
||||||
|
|
||||||
@@ -33,7 +32,6 @@ export default class Operations extends React.Component {
|
|||||||
|
|
||||||
const Operation = getComponent("operation")
|
const Operation = getComponent("operation")
|
||||||
const Collapse = getComponent("Collapse")
|
const Collapse = getComponent("Collapse")
|
||||||
const Schemes = getComponent("schemes")
|
|
||||||
|
|
||||||
let showSummary = layoutSelectors.showSummary()
|
let showSummary = layoutSelectors.showSummary()
|
||||||
|
|
||||||
|
|||||||
@@ -30,7 +30,6 @@ export default class Overview extends React.Component {
|
|||||||
{
|
{
|
||||||
taggedOps.map( (tagObj, tag) => {
|
taggedOps.map( (tagObj, tag) => {
|
||||||
let operations = tagObj.get("operations")
|
let operations = tagObj.get("operations")
|
||||||
let tagDetails = tagObj.get("tagDetails")
|
|
||||||
|
|
||||||
let showTagId = ["overview-tags", tag]
|
let showTagId = ["overview-tags", tag]
|
||||||
let showTag = layoutSelectors.isShown(showTagId, true)
|
let showTag = layoutSelectors.isShown(showTagId, true)
|
||||||
@@ -45,7 +44,7 @@ export default class Overview extends React.Component {
|
|||||||
<Collapse isOpened={showTag} animated>
|
<Collapse isOpened={showTag} animated>
|
||||||
{
|
{
|
||||||
operations.map( op => {
|
operations.map( op => {
|
||||||
let { path, method, operation, id } = op.toObject() // toObject is shallow
|
let { path, method, id } = op.toObject() // toObject is shallow
|
||||||
let showOpIdPrefix = "operations"
|
let showOpIdPrefix = "operations"
|
||||||
let showOpId = id
|
let showOpId = id
|
||||||
let shown = layoutSelectors.isShown([showOpIdPrefix, showOpId])
|
let shown = layoutSelectors.isShown([showOpIdPrefix, showOpId])
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import React, { Component, PropTypes } from "react"
|
import React, { Component, PropTypes } from "react"
|
||||||
import shallowCompare from "react-addons-shallow-compare"
|
import shallowCompare from "react-addons-shallow-compare"
|
||||||
import { Set, fromJS, List } from "immutable"
|
import { fromJS, List } from "immutable"
|
||||||
import { getSampleSchema } from "core/utils"
|
import { getSampleSchema } from "core/utils"
|
||||||
|
|
||||||
const NOOP = Function.prototype
|
const NOOP = Function.prototype
|
||||||
@@ -50,7 +50,7 @@ export default class ParamBody extends Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
updateValues = (props) => {
|
updateValues = (props) => {
|
||||||
let { specSelectors, pathMethod, param, isExecute, consumesValue="", onChangeConsumes } = props
|
let { specSelectors, pathMethod, param, isExecute, consumesValue="" } = props
|
||||||
let parameter = specSelectors ? specSelectors.getParameter(pathMethod, param.get("name")) : {}
|
let parameter = specSelectors ? specSelectors.getParameter(pathMethod, param.get("name")) : {}
|
||||||
let isXml = /xml/i.test(consumesValue)
|
let isXml = /xml/i.test(consumesValue)
|
||||||
let paramValue = isXml ? parameter.get("value_xml") : parameter.get("value")
|
let paramValue = isXml ? parameter.get("value_xml") : parameter.get("value")
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import React, { Component, PropTypes } from "react"
|
import React, { Component, PropTypes } from "react"
|
||||||
import ImPropTypes from "react-immutable-proptypes"
|
import ImPropTypes from "react-immutable-proptypes"
|
||||||
import Im, { fromJS } from "immutable"
|
import Im from "immutable"
|
||||||
|
|
||||||
// More readable, just iterate over maps, only
|
// More readable, just iterate over maps, only
|
||||||
const eachMap = (iterable, fn) => iterable.valueSeq().filter(Im.Map.isMap).map(fn)
|
const eachMap = (iterable, fn) => iterable.valueSeq().filter(Im.Map.isMap).map(fn)
|
||||||
@@ -87,7 +87,7 @@ export default class Parameters extends Component {
|
|||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
{
|
{
|
||||||
eachMap(parameters, (parameter, k) => (
|
eachMap(parameters, (parameter) => (
|
||||||
<ParameterRow fn={ fn }
|
<ParameterRow fn={ fn }
|
||||||
getComponent={ getComponent }
|
getComponent={ getComponent }
|
||||||
param={ parameter }
|
param={ parameter }
|
||||||
|
|||||||
@@ -17,8 +17,6 @@ export default class Schemes extends React.Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
onChange =( e ) => {
|
onChange =( e ) => {
|
||||||
let { path, method, specActions } = this.props
|
|
||||||
|
|
||||||
this.setScheme( e.target.value )
|
this.setScheme( e.target.value )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,11 +4,13 @@ export default class TryItOutButton extends React.Component {
|
|||||||
|
|
||||||
static propTypes = {
|
static propTypes = {
|
||||||
onTryoutClick: PropTypes.func,
|
onTryoutClick: PropTypes.func,
|
||||||
|
onCancelClick: PropTypes.func,
|
||||||
enabled: PropTypes.bool, // Try it out is enabled, ie: the user has access to the form
|
enabled: PropTypes.bool, // Try it out is enabled, ie: the user has access to the form
|
||||||
};
|
};
|
||||||
|
|
||||||
static defaultProps = {
|
static defaultProps = {
|
||||||
onTryoutClick: Function.prototype,
|
onTryoutClick: Function.prototype,
|
||||||
|
onCancelClick: Function.prototype,
|
||||||
enabled: false,
|
enabled: false,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ module.exports = function SwaggerUI(opts) {
|
|||||||
var system = store.getSystem()
|
var system = store.getSystem()
|
||||||
let queryConfig = parseSeach()
|
let queryConfig = parseSeach()
|
||||||
|
|
||||||
const downloadSpec = (configs) => {
|
const downloadSpec = () => {
|
||||||
if(typeof constructorConfig !== "object") {
|
if(typeof constructorConfig !== "object") {
|
||||||
return system
|
return system
|
||||||
}
|
}
|
||||||
@@ -96,7 +96,7 @@ module.exports = function SwaggerUI(opts) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!system.specActions.getConfigByUrl || (system.specActions.getConfigByUrl && !system.specActions.getConfigByUrl(downloadSpec))) {
|
if (!system.specActions.getConfigByUrl || (system.specActions.getConfigByUrl && !system.specActions.getConfigByUrl(downloadSpec))) {
|
||||||
return downloadSpec(constructorConfig)
|
return downloadSpec()
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
import React, { PropTypes, Component } from "react"
|
import React, { PropTypes, Component } from "react"
|
||||||
import { arrayify } from "core/utils"
|
|
||||||
import shallowCompare from "react-addons-shallow-compare"
|
import shallowCompare from "react-addons-shallow-compare"
|
||||||
import { List, fromJS } from "immutable"
|
import { List, fromJS } from "immutable"
|
||||||
import assign from "object-assign"
|
|
||||||
//import "less/json-schema-form"
|
//import "less/json-schema-form"
|
||||||
|
|
||||||
const noop = ()=> {}
|
const noop = ()=> {}
|
||||||
@@ -53,7 +51,7 @@ export class JsonSchema_string extends Component {
|
|||||||
}
|
}
|
||||||
onEnumChange = (val) => this.props.onChange(val)
|
onEnumChange = (val) => this.props.onChange(val)
|
||||||
render() {
|
render() {
|
||||||
let { getComponent, value, schema, fn, required, description } = this.props
|
let { getComponent, value, schema, required, description } = this.props
|
||||||
let enumValue = schema["enum"]
|
let enumValue = schema["enum"]
|
||||||
let errors = schema.errors || []
|
let errors = schema.errors || []
|
||||||
|
|
||||||
@@ -119,13 +117,13 @@ export class JsonSchema_array extends Component {
|
|||||||
}
|
}
|
||||||
|
|
||||||
onEnumChange = (value) => {
|
onEnumChange = (value) => {
|
||||||
this.setState(state => ({
|
this.setState(() => ({
|
||||||
value: value
|
value: value
|
||||||
}), this.onChange)
|
}), this.onChange)
|
||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
let { getComponent, onChange, required, schema, fn } = this.props
|
let { getComponent, required, schema, fn } = this.props
|
||||||
|
|
||||||
let itemSchema = fn.inferSchema(schema.items)
|
let itemSchema = fn.inferSchema(schema.items)
|
||||||
|
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ export function transformPathToArray(property, jsSpec) {
|
|||||||
return a.concat(b)
|
return a.concat(b)
|
||||||
}, [])
|
}, [])
|
||||||
.concat([""]) // add an empty item into the array, so we don't get stuck with something in our buffer below
|
.concat([""]) // add an empty item into the array, so we don't get stuck with something in our buffer below
|
||||||
.reduce((buffer, curr, i, arr) => {
|
.reduce((buffer, curr) => {
|
||||||
let obj = pathArr.length ? get(jsSpec, pathArr) : jsSpec
|
let obj = pathArr.length ? get(jsSpec, pathArr) : jsSpec
|
||||||
|
|
||||||
if(get(obj, makeAccessArray(buffer, curr))) {
|
if(get(obj, makeAccessArray(buffer, curr))) {
|
||||||
|
|||||||
@@ -277,8 +277,6 @@ export let getLineNumberForPathAsync = promisifySyncFn(getLineNumberForPath)
|
|||||||
|
|
||||||
function promisifySyncFn(fn) {
|
function promisifySyncFn(fn) {
|
||||||
return function(...args) {
|
return function(...args) {
|
||||||
return new Promise(function(resolve, reject) {
|
return new Promise((resolve) => resolve(fn(...args)))
|
||||||
resolve(fn(...args))
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import btoa from "btoa"
|
|||||||
import {
|
import {
|
||||||
SHOW_AUTH_POPUP,
|
SHOW_AUTH_POPUP,
|
||||||
AUTHORIZE,
|
AUTHORIZE,
|
||||||
PRE_AUTHORIZE_OAUTH2,
|
|
||||||
AUTHORIZE_OAUTH2,
|
AUTHORIZE_OAUTH2,
|
||||||
LOGOUT
|
LOGOUT
|
||||||
} from "./actions"
|
} from "./actions"
|
||||||
@@ -21,7 +20,6 @@ export default {
|
|||||||
// refactor withMutations
|
// refactor withMutations
|
||||||
securities.entrySeq().forEach( ([ key, security ]) => {
|
securities.entrySeq().forEach( ([ key, security ]) => {
|
||||||
let type = security.getIn(["schema", "type"])
|
let type = security.getIn(["schema", "type"])
|
||||||
let name = security.get("name")
|
|
||||||
|
|
||||||
if ( type === "apiKey" ) {
|
if ( type === "apiKey" ) {
|
||||||
map = map.set(key, security)
|
map = map.set(key, security)
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ export const shownDefinitions = createSelector(
|
|||||||
|
|
||||||
export const definitionsToAuthorize = createSelector(
|
export const definitionsToAuthorize = createSelector(
|
||||||
state,
|
state,
|
||||||
auth =>( { specSelectors } ) => {
|
() =>( { specSelectors } ) => {
|
||||||
let definitions = specSelectors.securityDefinitions()
|
let definitions = specSelectors.securityDefinitions()
|
||||||
let list = List()
|
let list = List()
|
||||||
|
|
||||||
@@ -66,7 +66,6 @@ export const authorized = createSelector(
|
|||||||
|
|
||||||
export const isAuthorized = ( state, securities ) =>( { authSelectors } ) => {
|
export const isAuthorized = ( state, securities ) =>( { authSelectors } ) => {
|
||||||
let authorized = authSelectors.authorized()
|
let authorized = authSelectors.authorized()
|
||||||
let isAuth = false
|
|
||||||
|
|
||||||
return !!securities.toJS().filter( ( security ) => {
|
return !!securities.toJS().filter( ( security ) => {
|
||||||
let isAuthorized = true
|
let isAuthorized = true
|
||||||
|
|||||||
@@ -1,5 +1,3 @@
|
|||||||
import { Map } from "immutable"
|
|
||||||
|
|
||||||
// Add security to the final `execute` call ( via `extras` )
|
// Add security to the final `execute` call ( via `extras` )
|
||||||
export const execute = ( oriAction, { authSelectors, specSelectors }) => ({ path, method, operation, extras }) => {
|
export const execute = ( oriAction, { authSelectors, specSelectors }) => ({ path, method, operation, extras }) => {
|
||||||
let securities = {
|
let securities = {
|
||||||
@@ -10,4 +8,3 @@ export const execute = ( oriAction, { authSelectors, specSelectors }) => ({ path
|
|||||||
|
|
||||||
return oriAction({ path, method, operation, securities, ...extras })
|
return oriAction({ path, method, operation, securities, ...extras })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ import { createSelector } from "reselect"
|
|||||||
import { Map } from "immutable"
|
import { Map } from "immutable"
|
||||||
|
|
||||||
export default function downloadUrlPlugin (toolbox) {
|
export default function downloadUrlPlugin (toolbox) {
|
||||||
let { fn, Im } = toolbox
|
let { fn } = toolbox
|
||||||
|
|
||||||
const actions = {
|
const actions = {
|
||||||
download: (url)=> ({ errActions, specSelectors, specActions }) => {
|
download: (url)=> ({ errActions, specSelectors, specActions }) => {
|
||||||
|
|||||||
@@ -20,14 +20,14 @@ export function newThrownErrBatch(errors) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function newSpecErr(err, action) {
|
export function newSpecErr(err) {
|
||||||
return {
|
return {
|
||||||
type: NEW_SPEC_ERR,
|
type: NEW_SPEC_ERR,
|
||||||
payload: err
|
payload: err
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function newAuthErr(err, action) {
|
export function newAuthErr(err) {
|
||||||
return {
|
return {
|
||||||
type: NEW_AUTH_ERR,
|
type: NEW_AUTH_ERR,
|
||||||
payload: err
|
payload: err
|
||||||
|
|||||||
@@ -1,4 +1,3 @@
|
|||||||
import concat from "lodash/concat"
|
|
||||||
import reduce from "lodash/reduce"
|
import reduce from "lodash/reduce"
|
||||||
let request = require.context("./transformers/", true, /\.js$/)
|
let request = require.context("./transformers/", true, /\.js$/)
|
||||||
let errorTransformers = []
|
let errorTransformers = []
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import get from "lodash/get"
|
import get from "lodash/get"
|
||||||
import last from "lodash/get"
|
import { fromJS } from "immutable"
|
||||||
import { fromJS, List } from "immutable"
|
|
||||||
|
|
||||||
export function transform(errors, { jsSpec }) {
|
export function transform(errors, { jsSpec }) {
|
||||||
// LOOK HERE THIS TRANSFORMER IS CURRENTLY DISABLED 😃
|
// LOOK HERE THIS TRANSFORMER IS CURRENTLY DISABLED 😃
|
||||||
|
|||||||
@@ -184,7 +184,7 @@ export const logRequest = (req) => {
|
|||||||
|
|
||||||
// Actually fire the request via fn.execute
|
// Actually fire the request via fn.execute
|
||||||
// (For debugging) and ease of testing
|
// (For debugging) and ease of testing
|
||||||
export const executeRequest = (req) => ({fn, specActions, errActions}) => {
|
export const executeRequest = (req) => ({fn, specActions}) => {
|
||||||
let { pathName, method } = req
|
let { pathName, method } = req
|
||||||
let parsedRequest = Object.assign({}, req)
|
let parsedRequest = Object.assign({}, req)
|
||||||
if ( pathName && method ) {
|
if ( pathName && method ) {
|
||||||
|
|||||||
@@ -51,7 +51,6 @@ export default {
|
|||||||
|
|
||||||
[VALIDATE_PARAMS]: ( state, { payload: { pathMethod } } ) => {
|
[VALIDATE_PARAMS]: ( state, { payload: { pathMethod } } ) => {
|
||||||
let operation = state.getIn( [ "resolved", "paths", ...pathMethod ] )
|
let operation = state.getIn( [ "resolved", "paths", ...pathMethod ] )
|
||||||
let parameters = operation.get("parameters")
|
|
||||||
let isXml = /xml/i.test(operation.get("consumes_value"))
|
let isXml = /xml/i.test(operation.get("consumes_value"))
|
||||||
|
|
||||||
return state.updateIn( [ "resolved", "paths", ...pathMethod, "parameters" ], fromJS([]), parameters => {
|
return state.updateIn( [ "resolved", "paths", ...pathMethod, "parameters" ], fromJS([]), parameters => {
|
||||||
@@ -64,9 +63,6 @@ export default {
|
|||||||
})
|
})
|
||||||
},
|
},
|
||||||
[ClEAR_VALIDATE_PARAMS]: ( state, { payload: { pathMethod } } ) => {
|
[ClEAR_VALIDATE_PARAMS]: ( state, { payload: { pathMethod } } ) => {
|
||||||
let operation = state.getIn( [ "resolved", "paths", ...pathMethod ] )
|
|
||||||
let parameters = operation.get("parameters")
|
|
||||||
|
|
||||||
return state.updateIn( [ "resolved", "paths", ...pathMethod, "parameters" ], fromJS([]), parameters => {
|
return state.updateIn( [ "resolved", "paths", ...pathMethod, "parameters" ], fromJS([]), parameters => {
|
||||||
return parameters.withMutations( parameters => {
|
return parameters.withMutations( parameters => {
|
||||||
for ( let i = 0, len = parameters.count(); i < len; i++ ) {
|
for ( let i = 0, len = parameters.count(); i < len; i++ ) {
|
||||||
|
|||||||
@@ -224,7 +224,7 @@ export const requestFor = (state, path, method) => {
|
|||||||
return requests(state).getIn([path, method], null)
|
return requests(state).getIn([path, method], null)
|
||||||
}
|
}
|
||||||
|
|
||||||
export const allowTryItOutFor = (state, path, method ) => {
|
export const allowTryItOutFor = () => {
|
||||||
// This is just a hook for now.
|
// This is just a hook for now.
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,10 +3,6 @@ import ReactDOM from "react-dom"
|
|||||||
import { connect, Provider } from "react-redux"
|
import { connect, Provider } from "react-redux"
|
||||||
import omit from "lodash/omit"
|
import omit from "lodash/omit"
|
||||||
|
|
||||||
|
|
||||||
const NotFoundComponent = name => ()=> <span style={{color: "red"}}> "{name}" component not found </span>
|
|
||||||
|
|
||||||
|
|
||||||
const SystemWrapper = (getSystem, ComponentToWrap ) => class extends Component {
|
const SystemWrapper = (getSystem, ComponentToWrap ) => class extends Component {
|
||||||
render() {
|
render() {
|
||||||
return <ComponentToWrap {...getSystem() } {...this.props} {...this.context} />
|
return <ComponentToWrap {...getSystem() } {...this.props} {...this.context} />
|
||||||
@@ -75,10 +71,10 @@ const createClass = component => React.createClass({
|
|||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
const Fallback = ({ error, name }) => <div style={{ // eslint-disable-line react/prop-types
|
const Fallback = ({ name }) => <div style={{ // eslint-disable-line react/prop-types
|
||||||
padding: "1em",
|
padding: "1em",
|
||||||
"color": "#aaa"
|
"color": "#aaa"
|
||||||
}}>😱 <i>Could not render { name ? name : "this component" }, see console.</i></div>
|
}}>😱 <i>Could not render { name || name === "t" ? name : "this component" }, see the console.</i></div>
|
||||||
|
|
||||||
const wrapRender = (component) => {
|
const wrapRender = (component) => {
|
||||||
const isStateless = component => !(component.prototype && component.prototype.isReactComponent)
|
const isStateless = component => !(component.prototype && component.prototype.isReactComponent)
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
import { createStore, applyMiddleware, bindActionCreators, compose } from "redux"
|
import { createStore, applyMiddleware, bindActionCreators, compose } from "redux"
|
||||||
import Im, { fromJS, Map } from "immutable"
|
import Im, { fromJS, Map } from "immutable"
|
||||||
import deepExtend from "deep-extend"
|
import deepExtend from "deep-extend"
|
||||||
import createLogger from "redux-logger"
|
|
||||||
import { combineReducers } from "redux-immutable"
|
import { combineReducers } from "redux-immutable"
|
||||||
import assign from "object-assign"
|
import assign from "object-assign"
|
||||||
import serializeError from "serialize-error"
|
import serializeError from "serialize-error"
|
||||||
|
|||||||
@@ -135,12 +135,11 @@ export function getList(iterable, keys) {
|
|||||||
// Adapted from http://stackoverflow.com/a/2893259/454004
|
// Adapted from http://stackoverflow.com/a/2893259/454004
|
||||||
// Note: directly ported from CoffeeScript
|
// Note: directly ported from CoffeeScript
|
||||||
export function formatXml (xml) {
|
export function formatXml (xml) {
|
||||||
var contexp, fn, formatted, indent, l, lastType, len, lines, ln, pad, reg, transitions, wsexp
|
var contexp, fn, formatted, indent, l, lastType, len, lines, ln, reg, transitions, wsexp
|
||||||
reg = /(>)(<)(\/*)/g
|
reg = /(>)(<)(\/*)/g
|
||||||
wsexp = /[ ]*(.*)[ ]+\n/g
|
wsexp = /[ ]*(.*)[ ]+\n/g
|
||||||
contexp = /(<.+>)(.+\n)/g
|
contexp = /(<.+>)(.+\n)/g
|
||||||
xml = xml.replace(/\r\n/g, "\n").replace(reg, "$1\n$2$3").replace(wsexp, "$1\n").replace(contexp, "$1\n$2")
|
xml = xml.replace(/\r\n/g, "\n").replace(reg, "$1\n$2$3").replace(wsexp, "$1\n").replace(contexp, "$1\n$2")
|
||||||
pad = 0
|
|
||||||
formatted = ""
|
formatted = ""
|
||||||
lines = xml.split("\n")
|
lines = xml.split("\n")
|
||||||
indent = 0
|
indent = 0
|
||||||
@@ -164,7 +163,7 @@ export function formatXml (xml) {
|
|||||||
"other->other": 0
|
"other->other": 0
|
||||||
}
|
}
|
||||||
fn = function(ln) {
|
fn = function(ln) {
|
||||||
var fromTo, j, key, padding, type, types, value
|
var fromTo, key, padding, type, types, value
|
||||||
types = {
|
types = {
|
||||||
single: Boolean(ln.match(/<.+\/>/)),
|
single: Boolean(ln.match(/<.+\/>/)),
|
||||||
closing: Boolean(ln.match(/<\/.+>/)),
|
closing: Boolean(ln.match(/<\/.+>/)),
|
||||||
@@ -187,11 +186,13 @@ export function formatXml (xml) {
|
|||||||
padding = ""
|
padding = ""
|
||||||
indent += transitions[fromTo]
|
indent += transitions[fromTo]
|
||||||
padding = ((function() {
|
padding = ((function() {
|
||||||
var m, ref1, results
|
/* eslint-disable no-unused-vars */
|
||||||
|
var m, ref1, results, j
|
||||||
results = []
|
results = []
|
||||||
for (j = m = 0, ref1 = indent; 0 <= ref1 ? m < ref1 : m > ref1; j = 0 <= ref1 ? ++m : --m) {
|
for (j = m = 0, ref1 = indent; 0 <= ref1 ? m < ref1 : m > ref1; j = 0 <= ref1 ? ++m : --m) {
|
||||||
results.push(" ")
|
results.push(" ")
|
||||||
}
|
}
|
||||||
|
/* eslint-enable no-unused-vars */
|
||||||
return results
|
return results
|
||||||
})()).join("")
|
})()).join("")
|
||||||
if (fromTo === "opening->closing") {
|
if (fromTo === "opening->closing") {
|
||||||
@@ -215,19 +216,9 @@ export function formatXml (xml) {
|
|||||||
export function highlight (el) {
|
export function highlight (el) {
|
||||||
const MAX_LENGTH = 5000
|
const MAX_LENGTH = 5000
|
||||||
var
|
var
|
||||||
_window = window,
|
|
||||||
_document = document,
|
_document = document,
|
||||||
appendChild = "appendChild",
|
appendChild = "appendChild",
|
||||||
test = "test",
|
test = "test"
|
||||||
// style and color templates
|
|
||||||
textShadow = ";text-shadow:",
|
|
||||||
opacity = "opacity:.",
|
|
||||||
_0px_0px = " 0px 0px ",
|
|
||||||
_3px_0px_5 = "3px 0px 5",
|
|
||||||
brace = ")",
|
|
||||||
|
|
||||||
i,
|
|
||||||
microlighted
|
|
||||||
|
|
||||||
if (!el) return ""
|
if (!el) return ""
|
||||||
if (el.textContent.length > MAX_LENGTH) { return el.textContent }
|
if (el.textContent.length > MAX_LENGTH) { return el.textContent }
|
||||||
@@ -260,14 +251,7 @@ export function highlight (el) {
|
|||||||
lastTokenType,
|
lastTokenType,
|
||||||
// flag determining if token is multi-character
|
// flag determining if token is multi-character
|
||||||
multichar,
|
multichar,
|
||||||
node,
|
node
|
||||||
|
|
||||||
// calculating the colors for the style templates
|
|
||||||
colorArr = /(\d*\, \d*\, \d*)(, ([.\d]*))?/g.exec(
|
|
||||||
_window.getComputedStyle(el).color
|
|
||||||
),
|
|
||||||
pxColor = "px rgba("+colorArr[1]+",",
|
|
||||||
alpha = colorArr[3]||1
|
|
||||||
|
|
||||||
// running through characters and highlighting
|
// running through characters and highlighting
|
||||||
while (prev2 = prev1,
|
while (prev2 = prev1,
|
||||||
@@ -468,6 +452,17 @@ export const propChecker = (props, nextProps, objectList=[], ignoreList=[]) => {
|
|||||||
|| objectList.some( objectPropName => !eq(props[objectPropName], nextProps[objectPropName])))
|
|| objectList.some( objectPropName => !eq(props[objectPropName], nextProps[objectPropName])))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const validateNumber = ( val ) => {
|
||||||
|
if ( !/^\d+(.?\d+)?$/.test(val)) {
|
||||||
|
return "Value must be a number"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const validateInteger = ( val ) => {
|
||||||
|
if ( !/^\d+$/.test(val)) {
|
||||||
|
return "Value must be integer"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// validation of parameters before execute
|
// validation of parameters before execute
|
||||||
export const validateParam = (param, isXml) => {
|
export const validateParam = (param, isXml) => {
|
||||||
@@ -517,22 +512,9 @@ export const validateParam = (param, isXml) => {
|
|||||||
return errors
|
return errors
|
||||||
}
|
}
|
||||||
|
|
||||||
const validateNumber = ( val ) => {
|
|
||||||
if ( !/^\d+(.?\d+)?$/.test(val)) {
|
|
||||||
return "Value must be a number"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const validateInteger = ( val ) => {
|
|
||||||
if ( !/^\d+$/.test(val)) {
|
|
||||||
return "Value must be integer"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export const getSampleSchema = (schema, contentType="", config={}) => {
|
export const getSampleSchema = (schema, contentType="", config={}) => {
|
||||||
if (/xml/.test(contentType)) {
|
if (/xml/.test(contentType)) {
|
||||||
if (!schema.xml || !schema.xml.name) {
|
if (!schema.xml || !schema.xml.name) {
|
||||||
let name
|
|
||||||
schema.xml = schema.xml || {}
|
schema.xml = schema.xml || {}
|
||||||
|
|
||||||
if (schema.$$ref) {
|
if (schema.$$ref) {
|
||||||
@@ -564,4 +546,4 @@ export const parseSeach = () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return map
|
return map
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ export default function configPlugin (toolbox) {
|
|||||||
function next(res) {
|
function next(res) {
|
||||||
if (res instanceof Error || res.status >= 400) {
|
if (res instanceof Error || res.status >= 400) {
|
||||||
specActions.updateLoadingStatus("failedConfig")
|
specActions.updateLoadingStatus("failedConfig")
|
||||||
console.log(res.statusText + " " + configUrl)
|
console.error(res.statusText + " " + configUrl)
|
||||||
} else {
|
} else {
|
||||||
callback(parseYamlConfig(res.text))
|
callback(parseYamlConfig(res.text))
|
||||||
}
|
}
|
||||||
@@ -70,4 +70,4 @@ export function filterConfigs (configs) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return filteredConfigs
|
return filteredConfigs
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,12 +6,14 @@ export default class StandaloneLayout extends React.Component {
|
|||||||
errSelectors: PropTypes.object.isRequired,
|
errSelectors: PropTypes.object.isRequired,
|
||||||
errActions: PropTypes.object.isRequired,
|
errActions: PropTypes.object.isRequired,
|
||||||
specActions: PropTypes.object.isRequired,
|
specActions: PropTypes.object.isRequired,
|
||||||
|
specSelectors: PropTypes.object.isRequired,
|
||||||
layoutSelectors: PropTypes.object.isRequired,
|
layoutSelectors: PropTypes.object.isRequired,
|
||||||
layoutActions: PropTypes.object.isRequired
|
layoutActions: PropTypes.object.isRequired,
|
||||||
|
getComponent: PropTypes.func.isRequired
|
||||||
}
|
}
|
||||||
|
|
||||||
render() {
|
render() {
|
||||||
let { specSelectors, specActions, getComponent, errSelectors, errActions, spec, readOnly } = this.props
|
let { specSelectors, specActions, getComponent } = this.props
|
||||||
|
|
||||||
let info = specSelectors.info()
|
let info = specSelectors.info()
|
||||||
let url = specSelectors.url()
|
let url = specSelectors.url()
|
||||||
@@ -28,9 +30,7 @@ export default class StandaloneLayout extends React.Component {
|
|||||||
let Container = getComponent("Container")
|
let Container = getComponent("Container")
|
||||||
let Row = getComponent("Row")
|
let Row = getComponent("Row")
|
||||||
let Col = getComponent("Col")
|
let Col = getComponent("Col")
|
||||||
let Button = getComponent("Button")
|
|
||||||
let Errors = getComponent("errors", true)
|
let Errors = getComponent("errors", true)
|
||||||
const SplitPaneMode = getComponent("SplitPaneMode", true)
|
|
||||||
const Schemes = getComponent("schemes")
|
const Schemes = getComponent("schemes")
|
||||||
|
|
||||||
const Topbar = getComponent("Topbar", true)
|
const Topbar = getComponent("Topbar", true)
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ import React from "react"
|
|||||||
import expect, { createSpy } from "expect"
|
import expect, { createSpy } from "expect"
|
||||||
import { shallow } from "enzyme"
|
import { shallow } from "enzyme"
|
||||||
import Operation from "components/operation"
|
import Operation from "components/operation"
|
||||||
import Collapse from "react-collapse"
|
|
||||||
|
|
||||||
describe("<Operation/>", function(){
|
describe("<Operation/>", function(){
|
||||||
it.skip("blanket tests", function(){
|
it.skip("blanket tests", function(){
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/* eslint-env mocha */
|
/* eslint-env mocha */
|
||||||
import expect, { createSpy } from "expect"
|
import expect from "expect"
|
||||||
import { transformPathToArray } from "core/path-translator"
|
import { transformPathToArray } from "core/path-translator"
|
||||||
|
|
||||||
describe("validation plugin - path translator", function(){
|
describe("validation plugin - path translator", function(){
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
/* eslint-env mocha */
|
/* eslint-env mocha */
|
||||||
import expect, { createSpy } from "expect"
|
import expect, { createSpy } from "expect"
|
||||||
import { fromJS } from "immutable"
|
|
||||||
import { execute } from "corePlugins/auth/spec-wrap-actions"
|
import { execute } from "corePlugins/auth/spec-wrap-actions"
|
||||||
|
|
||||||
describe("spec plugin - actions", function(){
|
describe("spec plugin - actions", function(){
|
||||||
@@ -18,7 +17,7 @@ describe("spec plugin - actions", function(){
|
|||||||
|
|
||||||
// When
|
// When
|
||||||
let executeFn = execute(oriExecute, system)
|
let executeFn = execute(oriExecute, system)
|
||||||
let executePromise = executeFn({})
|
executeFn({})
|
||||||
|
|
||||||
// Then
|
// Then
|
||||||
expect(oriExecute.calls.length).toEqual(1)
|
expect(oriExecute.calls.length).toEqual(1)
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import expect, { createSpy } from "expect"
|
import expect from "expect"
|
||||||
import { Map, List } from "immutable"
|
import { Map, List } from "immutable"
|
||||||
import { transform } from "corePlugins/err/error-transformers/transformers/not-of-type"
|
import { transform } from "corePlugins/err/error-transformers/transformers/not-of-type"
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import expect, { createSpy } from "expect"
|
import expect from "expect"
|
||||||
import { Map, List, fromJS } from "immutable"
|
import { fromJS } from "immutable"
|
||||||
import { transform } from "corePlugins/err/error-transformers/transformers/parameter-oneof"
|
import { transform } from "corePlugins/err/error-transformers/transformers/parameter-oneof"
|
||||||
|
|
||||||
describe.skip("err plugin - tranformers - parameter oneof", () => {
|
describe.skip("err plugin - tranformers - parameter oneof", () => {
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ describe("spec plugin - actions", function(){
|
|||||||
|
|
||||||
// When
|
// When
|
||||||
let executeFn = execute({ path: "/one", method: "get"})
|
let executeFn = execute({ path: "/one", method: "get"})
|
||||||
let executePromise = executeFn(system)
|
executeFn(system)
|
||||||
|
|
||||||
// Then
|
// Then
|
||||||
expect(system.specActions.executeRequest.calls[0].arguments[0]).toEqual({
|
expect(system.specActions.executeRequest.calls[0].arguments[0]).toEqual({
|
||||||
@@ -60,7 +60,7 @@ describe("spec plugin - actions", function(){
|
|||||||
|
|
||||||
// When
|
// When
|
||||||
let executeFn = execute({ hi: "hello" })
|
let executeFn = execute({ hi: "hello" })
|
||||||
let executePromise = executeFn(system)
|
executeFn(system)
|
||||||
|
|
||||||
// Then
|
// Then
|
||||||
expect(system.specActions.executeRequest.calls[0].arguments[0]).toInclude({hi: "hello"})
|
expect(system.specActions.executeRequest.calls[0].arguments[0]).toInclude({hi: "hello"})
|
||||||
@@ -72,7 +72,6 @@ describe("spec plugin - actions", function(){
|
|||||||
|
|
||||||
xit("should call fn.execute with arg ", function(){
|
xit("should call fn.execute with arg ", function(){
|
||||||
|
|
||||||
const response = {}
|
|
||||||
const system = {
|
const system = {
|
||||||
fn: {
|
fn: {
|
||||||
execute: createSpy().andReturn(Promise.resolve())
|
execute: createSpy().andReturn(Promise.resolve())
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/* eslint-env mocha */
|
/* eslint-env mocha */
|
||||||
import expect, { createSpy } from "expect"
|
import expect from "expect"
|
||||||
import { fromJS } from "immutable"
|
import { fromJS } from "immutable"
|
||||||
import { parameterValues, contentTypeValues } from "corePlugins/spec/selectors"
|
import { parameterValues, contentTypeValues } from "corePlugins/spec/selectors"
|
||||||
|
|
||||||
|
|||||||
@@ -240,6 +240,7 @@ describe("bound system", function(){
|
|||||||
statePlugins: {
|
statePlugins: {
|
||||||
kyle: {
|
kyle: {
|
||||||
wrapActions: {
|
wrapActions: {
|
||||||
|
// eslint-disable-next-line no-unused-vars
|
||||||
simple: (ori) => (arg) => (sys) => {
|
simple: (ori) => (arg) => (sys) => {
|
||||||
return { type: "called" }
|
return { type: "called" }
|
||||||
}
|
}
|
||||||
@@ -256,7 +257,7 @@ describe("bound system", function(){
|
|||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
describe("selectors", function(){
|
describe("selectors", function(){
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/* eslint-env mocha */
|
/* eslint-env mocha */
|
||||||
import expect, { createSpy } from "expect"
|
import expect from "expect"
|
||||||
import { fromJS } from "immutable"
|
import { fromJS } from "immutable"
|
||||||
import { mapToList } from "core/utils"
|
import { mapToList } from "core/utils"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user