From bc835f0b4e9af5065d0204971a4a2a5812ebf6c0 Mon Sep 17 00:00:00 2001
From: Karolin Varner <karo@cupdev.net>
Date: Fri, 9 Aug 2019 17:06:17 +0200
Subject: [PATCH] chore: Setup Modern Eslint and apply automatic style fixes
---
.eslintignore | 5 +-
.eslintrc | 38 --
.eslintrc.js | 58 +++
cli.js | 97 +++--
lib/header.js | 59 +--
lib/main.js | 15 +-
lib/markdownWriter.js | 228 +++++-----
lib/prettyMarkdown.js | 13 +-
lib/readSchemaFile.js | 29 +-
lib/readmeWriter.js | 70 +--
lib/schema.js | 487 ++++++++++-----------
lib/schemaWriter.js | 14 +-
lib/writeFiles.js | 28 +-
package-lock.json | 702 +++++++++++++++++++++++++------
package.json | 7 +-
spec/lib/header.spec.js | 33 +-
spec/lib/integrationTest.spec.js | 38 +-
spec/lib/readSchemaFile.spec.js | 47 ++-
spec/lib/schema.spec.js | 25 +-
spec/lib/writeFiles.spec.js | 19 +-
20 files changed, 1258 insertions(+), 754 deletions(-)
delete mode 100644 .eslintrc
create mode 100644 .eslintrc.js
diff --git a/.eslintignore b/.eslintignore
index 66b21bd..ed36736 100644
--- a/.eslintignore
+++ b/.eslintignore
@@ -1,3 +1,2 @@
-node_modules
-coverage
-out
+.vscode/*
+coverage/*
diff --git a/.eslintrc b/.eslintrc
deleted file mode 100644
index 2ad01bd..0000000
--- a/.eslintrc
+++ /dev/null
@@ -1,38 +0,0 @@
-{
- "env": {
- "node": true,
- "es6": true,
- "jasmine": true
- },
- "rules": {
- "array-bracket-spacing": [2, "always"],
- "block-scoped-var": 2,
- "brace-style": [2, "1tbs", { "allowSingleLine": true }],
- "camelcase": 1,
- "computed-property-spacing": [2, "never"],
- "curly": 2,
- "eol-last": 2,
- "eqeqeq": [2, "smart"],
- "indent": ["error", 2],
- "max-depth": [1, 5],
- "new-cap": 1,
- "no-extend-native": 2,
- "no-mixed-spaces-and-tabs": 2,
- "no-trailing-spaces": 2,
- "no-unused-vars": 1,
- "no-use-before-define": [2, "nofunc"],
- "no-undef": 2,
- "object-curly-spacing": [2, "always"],
- "quotes": [2, "single", "avoid-escape"],
- "semi": [2, "always"],
- "keyword-spacing": [2, {
- "before": true,
- "after": true
- }],
- "space-unary-ops": 2,
- "comma-spacing": ["error", { "before": false, "after": true }],
- "space-before-function-paren": ["error", "never"],
- "arrow-spacing": "error",
- "arrow-parens": ["error", "as-needed"]
- }
-}
diff --git a/.eslintrc.js b/.eslintrc.js
new file mode 100644
index 0000000..fd6e0c6
--- /dev/null
+++ b/.eslintrc.js
@@ -0,0 +1,58 @@
+/*
+ * Copyright 2018 Adobe. All rights reserved.
+ * This file is licensed to you under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License. You may obtain a copy
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
+ * OF ANY KIND, either express or implied. See the License for the specific language
+ * governing permissions and limitations under the License.
+ */
+
+module.exports = {
+ 'env': {
+ 'node': true,
+ 'es6': true
+ },
+ // this is the root project for all sub modules. stop searching for any
+ // eslintrc files in parent directories.
+ 'root': true,
+ 'parserOptions': {
+ 'sourceType': 'script',
+ 'ecmaVersion': 10,
+ },
+ 'plugins': [
+ 'header',
+ ],
+ 'extends': 'airbnb',
+ 'rules': {
+ 'strict': 0,
+
+ // Forbid multiple statements in one line
+ 'max-statements-per-line': ["error", { "max": 1 }],
+
+ // Allow for-of loops
+ 'no-restricted-syntax': ['error', 'ForInStatement', 'LabeledStatement', 'WithStatement'],
+
+ // Allow return before else & redundant else statements
+ 'no-else-return': 'off',
+
+ // allow dangling underscores for 'fields'
+ 'no-underscore-dangle': ['error', {'allowAfterThis': true}],
+
+ // enforce license header (todo: improve plugin to support patterns for multi-lines)
+ 'header/header': [2, 'block', ['',
+ ' * Copyright 2019 Adobe. All rights reserved.',
+ ' * This file is licensed to you under the Apache License, Version 2.0 (the "License");',
+ ' * you may not use this file except in compliance with the License. You may obtain a copy',
+ ' * of the License at http://www.apache.org/licenses/LICENSE-2.0',
+ ' *',
+ ' * Unless required by applicable law or agreed to in writing, software distributed under',
+ ' * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS',
+ ' * OF ANY KIND, either express or implied. See the License for the specific language',
+ ' * governing permissions and limitations under the License.',
+ ' ',
+ ]]
+ }
+};
diff --git a/cli.js b/cli.js
index 135ff07..6e0e776 100755
--- a/cli.js
+++ b/cli.js
@@ -1,24 +1,29 @@
#! /usr/bin/env node
-/**
- * Copyright 2017 Adobe Systems Incorporated. All rights reserved.
+/*
+ * Copyright 2019 Adobe. All rights reserved.
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. You may obtain a copy
* of the License at http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
+ * OF ANY KIND, either express or implied. See the License for the specific language
+ * governing permissions and limitations under the License.
*/
-var Promise = require('bluebird');
-var path = require('path');
-var _ = require('lodash');
-var fs = Promise.promisifyAll(require('fs'));
-var readdirp = require('readdirp');
-var Ajv = require('ajv');
-var logger = require('winston');
+const Promise = require('bluebird');
+const path = require('path');
+const _ = require('lodash');
+const fs = Promise.promisifyAll(require('fs'));
+const readdirp = require('readdirp');
+const Ajv = require('ajv');
+const logger = require('winston');
-var Schema = require('./lib/schema');
-var readSchemaFile = require('./lib/readSchemaFile');
+const Schema = require('./lib/schema');
+const readSchemaFile = require('./lib/readSchemaFile');
// parse/process command line arguments
-var argv = require('optimist')
+const { argv } = require('optimist')
.usage('Generate Markdown documentation from JSON Schema.\n\nUsage: $0')
.demand('d')
.alias('d', 'input')
@@ -41,12 +46,12 @@ var argv = require('optimist')
.default('v', '07')
.describe('n', 'Do not generate a README.md file in the output directory')
.describe('link-*', 'Add this file as a link the explain the * attribute, e.g. --link-abstract=abstract.md')
- .check(function(args) {
+ .check((args) => {
if (!fs.existsSync(args.input)) {
- throw 'Input file "' + args.input + '" does not exist!';
+ throw `Input file "${args.input}" does not exist!`;
}
if (args.s && !fs.existsSync(args.s)) {
- throw 'Meta schema file "' + args.s + '" does not exist!';
+ throw `Meta schema file "${args.s}" does not exist!`;
}
})
.alias('i', 'i18n')
@@ -56,79 +61,81 @@ var argv = require('optimist')
.default('h', true)
.argv;
-const docs = _.fromPairs(_.toPairs(argv).filter(([ key, value ]) => { return key.startsWith('link-'); }).map(([ key, value ]) => { return [ key.substr(5), value ];}));
+const docs = _.fromPairs(_.toPairs(argv).filter(([key, value]) => key.startsWith('link-')).map(([key, value]) => [key.substr(5), value]));
const i18n = require('i18n');
logger.configure({
level: 'info',
format: logger.format.combine(
logger.format.splat(),
- logger.format.simple()
+ logger.format.simple(),
),
transports: [
- new logger.transports.Console({})
- ]
+ new logger.transports.Console({}),
+ ],
});
-var ajv = new Ajv({ allErrors: true, messages:true, schemaId: 'auto', logger: logger });
+const ajv = new Ajv({
+ allErrors: true, messages: true, schemaId: 'auto', logger,
+});
console.log(argv.v);
-if (argv.v === '06'||argv.v === 6) {
+if (argv.v === '06' || argv.v === 6) {
console.log('enabling draft-06 support');
ajv.addMetaSchema(require('ajv/lib/refs/json-schema-draft-06.json'));
} else if (argv.v === '04' || argv.v === 4) {
ajv.addMetaSchema(require('ajv/lib/refs/json-schema-draft-04.json'));
}
-var schemaPathMap = {};
-var metaElements = {};
-var schemaPath = path.resolve(argv.d);
-var outDir = path.resolve(argv.o);
-var schemaDir = argv.x === '-' ? '' : argv.x ? path.resolve(argv.x) : outDir;
-var target = fs.statSync(schemaPath);
+const schemaPathMap = {};
+const metaElements = {};
+const schemaPath = path.resolve(argv.d);
+const outDir = path.resolve(argv.o);
+const schemaDir = argv.x === '-' ? '' : argv.x ? path.resolve(argv.x) : outDir;
+const target = fs.statSync(schemaPath);
const readme = argv.n !== true;
const schemaExtension = argv.e || 'schema.json';
-if (argv.s){
+if (argv.s) {
ajv.addMetaSchema(require(path.resolve(argv.s)));
}
if (argv.m) {
- if (_.isArray(argv.m)){
- _.each(argv.m, function(item){
- var meta=item.split('=');
+ if (_.isArray(argv.m)) {
+ _.each(argv.m, (item) => {
+ const meta = item.split('=');
if (meta.length === 2) {
metaElements[meta[0]] = meta[1];
}
});
} else {
- var meta=(argv.m).split('=');
+ const meta = (argv.m).split('=');
if (meta.length === 2) {
metaElements[meta[0]] = meta[1];
}
}
}
let i18nPath;
-if (argv !== undefined && argv.i !== undefined){
- i18nPath=path.resolve(argv.i) ;
+if (argv !== undefined && argv.i !== undefined) {
+ i18nPath = path.resolve(argv.i);
} else {
- i18nPath=path.resolve(path.join(__dirname, 'lib/locales'));
+ i18nPath = path.resolve(path.join(__dirname, 'lib/locales'));
}
i18n.configure({
// setup some locales - other locales default to en silently
- locales:[ 'en' ],
+ locales: ['en'],
// where to store json files - defaults to './locales' relative to modules directory
directory: i18nPath,
- defaultLocale: 'en'
+ defaultLocale: 'en',
});
logger.info('output directory: %s', outDir);
if (target.isDirectory()) {
// the ajv json validator will be passed into the main module to help with processing
- var files=[];
+ const files = [];
readdirp(schemaPath, { root: schemaPath, fileFilter: `*.${schemaExtension}` })
- .on('data', entry => {
+ .on('data', (entry) => {
files.push(entry.fullPath);
try {
ajv.addSchema(require(entry.fullPath), entry.fullPath);
- } catch (e){
+ } catch (e) {
logger.error('Ajv processing error for schema at path %s', entry.fullPath);
logger.error(e);
process.exit(1);
@@ -138,25 +145,25 @@ if (target.isDirectory()) {
Schema.setAjv(ajv);
Schema.setSchemaPathMap(schemaPathMap);
return Promise.reduce(files, readSchemaFile, schemaPathMap)
- .then(schemaMap => {
+ .then((schemaMap) => {
logger.info('finished reading all *.%s files in %s, beginning processing….', schemaExtension, schemaPath);
return Schema.process(schemaMap, schemaPath, outDir, schemaDir, metaElements, readme, docs, argv);
})
.then(() => {
logger.info('Processing complete.');
})
- .catch(err => {
+ .catch((err) => {
logger.error(err);
process.exit(1);
});
})
- .on('error', err => {
+ .on('error', (err) => {
logger.error(err);
process.exit(1);
});
} else {
readSchemaFile(schemaPathMap, schemaPath)
- .then(schemaMap => {
+ .then((schemaMap) => {
ajv.addSchema(require(schemaPath), schemaPath);
Schema.setAjv(ajv);
Schema.setSchemaPathMap(schemaPathMap);
@@ -166,7 +173,7 @@ if (target.isDirectory()) {
.then(() => {
logger.info('Processing complete.');
})
- .catch(err => {
+ .catch((err) => {
logger.error(err);
process.exit(1);
});
diff --git a/lib/header.js b/lib/header.js
index 94ba761..693faf7 100644
--- a/lib/header.js
+++ b/lib/header.js
@@ -1,8 +1,13 @@
-/**
- * Copyright 2018 Adobe Systems Incorporated. All rights reserved.
+/*
+ * Copyright 2019 Adobe. All rights reserved.
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. You may obtain a copy
* of the License at http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
+ * OF ANY KIND, either express or implied. See the License for the specific language
+ * governing permissions and limitations under the License.
*/
const _ = require('lodash');
@@ -11,7 +16,7 @@ const path = require('path');
function custom(schema) {
if (schema.allOf) {
- for (let i=0; i<schema.allOf.length; i++) {
+ for (let i = 0; i < schema.allOf.length; i++) {
if (schema.allOf[i].$ref && schema.allOf[i].$ref === 'https://ns.adobe.com/xdm/common/extensible.schema.json#/definitions/@context') {
return true;
}
@@ -24,11 +29,11 @@ function schemaProps(schema, schemaPath, filename) {
return {
// if there are definitions, but no properties
abstract: (schema.definitions !== undefined && _.keys(schema.properties).length === 0) ? i18n.__('header.tabel.abstractNo') : i18n.__('header.tabel.abstractYes'),
- extensible: (schema.definitions !== undefined || schema['meta:extensible'] === true) ? i18n.__('header.tabel.extensibleYes') : i18n.__('header.tabel.extensibleNo'),
+ extensible: (schema.definitions !== undefined || schema['meta:extensible'] === true) ? i18n.__('header.tabel.extensibleYes') : i18n.__('header.tabel.extensibleNo'),
status: schema['meta:status'] !== undefined ? (schema['meta:status'].charAt(0).toUpperCase() + schema['meta:status'].slice(1)) : i18n.__('header.tabel.statusExperimental'),
custom: custom(schema) ? i18n.__('header.tabel.customPropertiesYes') : i18n.__('header.tabel.customPropertiesNo'),
original: filename.substr(schemaPath.length).substr(1).replace(/\\/g, '/'),
- additionalProperties:schema.additionalProperties===false ? i18n.__('header.tabel.additionalPropertiesNo'): i18n.__('header.tabel.additionalPropertiesYes'),
+ additionalProperties: schema.additionalProperties === false ? i18n.__('header.tabel.additionalPropertiesNo') : i18n.__('header.tabel.additionalPropertiesYes'),
};
}
@@ -45,7 +50,7 @@ class Header {
}
render(text, link, base) {
- return function() {
+ return function () {
if (link) {
return `[${text}](${base}${link})`;
} else {
@@ -62,8 +67,8 @@ function header(name, docs, value, links) {
this.links = links;
- this.render = function(text, link) {
- return function() {
+ this.render = function (text, link) {
+ return function () {
if (link) {
return `[${text}](${link})`;
} else {
@@ -89,7 +94,7 @@ function isIdentifiable(schema) {
if (!schema.properties) {
return 'Unknown';
}
- if (schema.properties['@id']&&schema.properties['@id'].type==='string'&&schema.properties['@id'].format==='uri') {
+ if (schema.properties['@id'] && schema.properties['@id'].type === 'string' && schema.properties['@id'].format === 'uri') {
return 'Yes';
} else {
return 'No';
@@ -98,39 +103,39 @@ function isIdentifiable(schema) {
function headers(schema, indir, filename, docs) {
const props = schemaProps(schema, indir, filename);
- this.doclinks = docs ? docs : {};
+ this.doclinks = docs || {};
this.myheaders = [];
- this.myheaders.push(new Header(i18n.__('header.tabel.abstract'), link(indir, filename, this.doclinks['abstract']), props.abstract));
- this.myheaders.push(new Header(i18n.__('header.tabel.extensible'), link(indir, filename, this.doclinks['extensible']), props.extensible));
- this.myheaders.push(new Header(i18n.__('header.tabel.status'), link(indir, filename, this.doclinks['status']), props.status));
- this.myheaders.push(new Header(i18n.__('header.tabel.identifiable'), link(indir, filename, this.doclinks['id']), isIdentifiable(schema)));
- this.myheaders.push(new Header(i18n.__('header.tabel.customProperties'), link(indir, filename, this.doclinks['custom']), props.custom));
- this.myheaders.push(new Header(i18n.__('header.tabel.additionalProperties'), link(indir, filename, this.doclinks['additional']), props.additionalProperties));
+ this.myheaders.push(new Header(i18n.__('header.tabel.abstract'), link(indir, filename, this.doclinks.abstract), props.abstract));
+ this.myheaders.push(new Header(i18n.__('header.tabel.extensible'), link(indir, filename, this.doclinks.extensible), props.extensible));
+ this.myheaders.push(new Header(i18n.__('header.tabel.status'), link(indir, filename, this.doclinks.status), props.status));
+ this.myheaders.push(new Header(i18n.__('header.tabel.identifiable'), link(indir, filename, this.doclinks.id), isIdentifiable(schema)));
+ this.myheaders.push(new Header(i18n.__('header.tabel.customProperties'), link(indir, filename, this.doclinks.custom), props.custom));
+ this.myheaders.push(new Header(i18n.__('header.tabel.additionalProperties'), link(indir, filename, this.doclinks.additional), props.additionalProperties));
this.myheaders.push(new Header(i18n.__('header.tabel.definedIn'), undefined, props.original, path.basename(props.original)));
- this.render = function() {
- var buf = '';
+ this.render = function () {
+ let buf = '';
- //header
+ // header
buf += '|';
- _.forEach(this.myheaders, myheader => {
- buf += ' ' + myheader.renderHeader() + ' |';
+ _.forEach(this.myheaders, (myheader) => {
+ buf += ` ${myheader.renderHeader()} |`;
});
buf += '\n';
- //divider
+ // divider
buf += '|';
- _.forEach(this.myheaders, myheader => {
- buf += '-' + myheader.renderHeader().replace(/./g, '-') + '-|';
+ _.forEach(this.myheaders, (myheader) => {
+ buf += `-${myheader.renderHeader().replace(/./g, '-')}-|`;
});
buf += '\n';
- //body
+ // body
buf += '|';
- _.forEach(this.myheaders, myheader => {
- buf += ' ' + myheader.renderValue() + ' |';
+ _.forEach(this.myheaders, (myheader) => {
+ buf += ` ${myheader.renderValue()} |`;
});
diff --git a/lib/main.js b/lib/main.js
index 9ce1b84..e0559f2 100644
--- a/lib/main.js
+++ b/lib/main.js
@@ -1,12 +1,17 @@
-/**
- * Copyright 2017 Adobe Systems Incorporated. All rights reserved.
+/*
+ * Copyright 2019 Adobe. All rights reserved.
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. You may obtain a copy
* of the License at http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
+ * OF ANY KIND, either express or implied. See the License for the specific language
+ * governing permissions and limitations under the License.
*/
module.exports = {
- writer:require('./writeFiles'),
- reader:require('./readSchemaFile'),
- schema:require('./schema')
+ writer: require('./writeFiles'),
+ reader: require('./readSchemaFile'),
+ schema: require('./schema'),
};
diff --git a/lib/markdownWriter.js b/lib/markdownWriter.js
index 39eabb9..71f5c5b 100644
--- a/lib/markdownWriter.js
+++ b/lib/markdownWriter.js
@@ -1,32 +1,38 @@
-/**
- * Copyright 2017 Adobe Systems Incorporated. All rights reserved.
+/*
+ * Copyright 2019 Adobe. All rights reserved.
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. You may obtain a copy
* of the License at http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
+ * OF ANY KIND, either express or implied. See the License for the specific language
+ * governing permissions and limitations under the License.
*/
const i18n = require('i18n');
-const writeFile = require('./writeFiles');
-const prettyMarkdown = require('./prettyMarkdown');
-var Promise=require('bluebird');
-var path = require('path');
-var _ = require('lodash');
-var ejs = require('ejs');
+const Promise = require('bluebird');
+const path = require('path');
+const _ = require('lodash');
+const ejs = require('ejs');
+
const pejs = Promise.promisifyAll(ejs);
-// var validUrl = require('valid-url');
+const validUrl = require('valid-url');
+const GithubSlugger = require('github-slugger');
const { headers } = require('./header');
-var GithubSlugger = require('github-slugger');
+const prettyMarkdown = require('./prettyMarkdown');
+const writeFile = require('./writeFiles');
-function createGithubSlugs(names){
- var slugger = new GithubSlugger();
+function createGithubSlugs(names) {
+ const slugger = new GithubSlugger();
slugger.reset();
names = names.sort();
- return names.reduce(function(result, item) {
+ return names.reduce((result, item) => {
result[item] = slugger.slug(item);
return result;
}, {});
}
-function render([ template, context ]) {
+function render([template, context]) {
return pejs.renderFileAsync(template, context, { debug: false });
}
@@ -35,7 +41,7 @@ function build(total, fragment) {
}
function assoc(obj, key, value) {
- if (obj==null) {
+ if (obj == null) {
return assoc({}, key, value);
}
obj[key] = value;
@@ -46,7 +52,7 @@ function flatten(dependencies) {
let deps = [];
if (dependencies) {
const key = _.keys(dependencies)[0];
- deps = _.toPairs(dependencies[key]).map(([ first, second ]) => {
+ deps = _.toPairs(dependencies[key]).map(([first, second]) => {
second.$id = first;
return second;
});
@@ -57,12 +63,10 @@ function flatten(dependencies) {
function stringifyExamples(examples) {
if (examples) {
if (typeof examples === 'string') {
- examples = [ examples ];
+ examples = [examples];
}
- //console.log(examples);
- return examples.map(example => {
- return JSON.stringify(example, null, 2);
- });
+ // console.log(examples);
+ return examples.map(example => JSON.stringify(example, null, 2));
} else {
return false;
}
@@ -73,46 +77,46 @@ function stringifyExamples(examples) {
* @param {object} prop - a JSON Schema property definition
*/
function simpletype(prop) {
- const type = prop.type;
- if (prop.$ref!==undefined) {
- if (prop.$linkVal!==undefined) {
+ const { type } = prop;
+ if (prop.$ref !== undefined) {
+ if (prop.$linkVal !== undefined) {
prop.simpletype = prop.$linkVal;
} else {
- console.log('unresolved reference: ' + prop.$ref);
+ console.log(`unresolved reference: ${prop.$ref}`);
prop.simpletype = 'reference';
}
- } else if (prop.enum!==undefined) {
+ } else if (prop.enum !== undefined) {
prop.simpletype = '`enum`';
- if (prop['meta:enum']===undefined) {
+ if (prop['meta:enum'] === undefined) {
prop['meta:enum'] = {};
}
- for (let i=0;i<prop.enum.length;i++) {
- if (prop['meta:enum'][prop.enum[i]]===undefined) {
- //setting an empty description for each unknown enum
+ for (let i = 0; i < prop.enum.length; i++) {
+ if (prop['meta:enum'][prop.enum[i]] === undefined) {
+ // setting an empty description for each unknown enum
prop['meta:enum'][prop.enum[i]] = '';
}
}
- } else if (prop.const!==undefined) {
+ } else if (prop.const !== undefined) {
prop.simpletype = '`const`';
- } else if (type==='string') {
+ } else if (type === 'string') {
prop.simpletype = '`string`';
- } else if (type==='number') {
+ } else if (type === 'number') {
prop.simpletype = '`number`';
- } else if (type==='boolean') {
+ } else if (type === 'boolean') {
prop.simpletype = '`boolean`';
- } else if (type==='integer') {
+ } else if (type === 'integer') {
prop.simpletype = '`integer`';
- } else if (type==='object') {
+ } else if (type === 'object') {
prop.simpletype = '`object`';
- } else if (type==='null') {
+ } else if (type === 'null') {
prop.simpletype = '`null`';
- } else if (type==='array') {
- if (prop.items!==undefined) {
+ } else if (type === 'array') {
+ if (prop.items !== undefined) {
const innertype = simpletype(prop.items);
- if (innertype.simpletype==='complex') {
+ if (innertype.simpletype === 'complex') {
prop.simpletype = '`array`';
} else {
- //console.log(prop.title);
+ // console.log(prop.title);
prop.simpletype = innertype.simpletype.replace(/(`)$/, '[]$1');
}
} else {
@@ -120,15 +124,15 @@ function simpletype(prop) {
}
} else if (Array.isArray(type)) {
function nullfilter(str) {
- return str!=='null';
+ return str !== 'null';
}
- var filtered = type.filter(nullfilter);
+ const filtered = type.filter(nullfilter);
if (type.length - 1 === filtered.length) {
prop.nullable = true;
}
- if (filtered.length===1) {
+ if (filtered.length === 1) {
prop.type = filtered[0];
- prop.simpletype = '`' + filtered[0] + '`';
+ prop.simpletype = `\`${filtered[0]}\``;
} else {
prop.type = filtered;
prop.simpletype = 'multiple';
@@ -147,7 +151,7 @@ function simpletype(prop) {
*/
function requiredProperties(properties, required) {
if (required) {
- for (let i=0;i<required.length;i++) {
+ for (let i = 0; i < required.length; i++) {
if (properties[required[i]]) {
properties[required[i]].isrequired = true;
}
@@ -157,22 +161,13 @@ function requiredProperties(properties, required) {
}
function ejsRender(template, ctx) {
- let p = pejs.renderFileAsync(path.join(__dirname, '../templates/md/' + template + '.ejs'), ctx, { debug: false });
+ const p = pejs.renderFileAsync(path.join(__dirname, `../templates/md/${template}.ejs`), ctx, { debug: false });
return p.value();
- //return JSON.stringify(obj, null, 2);
+ // return JSON.stringify(obj, null, 2);
}
-const generateMarkdown = function(filename, schema, schemaPath, outDir, dependencyMap, docs, consoleArgs) {
- //var ctx = {
- // schema: schema,
- // _: _,
- // validUrl: validUrl,
- // dependencyMap:dependencyMap
- //};
-
- outDir = outDir ? outDir : path.resolve(path.join('.', 'out'));
- console.log(filename);
- //console.log(dependencyMap);
+const generateMarkdown = (filename, schema, schemaPath, outDir, dependencyMap, docs, consoleArgs) => {
+ outDir = outDir || path.resolve(path.join('.', 'out'));
// this structure allows us to have separate templates for each element. Instead of having
// one huge template, each block can be built individually
outDir = outDir ? outDir : path.resolve(path.join('.', 'out'));
@@ -185,126 +180,123 @@ const generateMarkdown = function(filename, schema, schemaPath, outDir, dependen
dependencies: flatten(dependencyMap),
table: headers(schema, schemaPath, filename, docs).render() } ]);
}
- //multi.push(['divider.ejs', null ]);
- //multi.push(['topSchema.ejs', ctx ]);
multi.push([ 'examples.ejs', { examples: stringifyExamples(schema.examples), title: schema.title, i18n: i18n } ]);
const required = []; //to store required of whole schema, even those in definitions
// Processing schema.definitions before schema.properties to get any required properties present in definitions
if (_.keys(schema.definitions).length > 0) {
const abstract = {};
- for (let i=0; i<_.keys(schema.definitions).length;i++) {
- if (schema.definitions[_.keys(schema.definitions)[i]].properties!==undefined) {
+ for (let i = 0; i < _.keys(schema.definitions).length; i++) {
+ if (schema.definitions[_.keys(schema.definitions)[i]].properties !== undefined) {
const definition = schema.definitions[_.keys(schema.definitions)[i]].properties;
- let tempRequired = schema.definitions[_.keys(schema.definitions)[i]].required;
- let hasRequiredProperties = (tempRequired !== undefined) ? true : false;
- for (let j=0; j<_.keys(definition).length;j++) {
+ const tempRequired = schema.definitions[_.keys(schema.definitions)[i]].required;
+ const hasRequiredProperties = (tempRequired !== undefined);
+ for (let j = 0; j < _.keys(definition).length; j++) {
const name = _.keys(definition)[j];
const property = definition[_.keys(definition)[j]];
- if (hasRequiredProperties && tempRequired.includes(name)){
+ if (hasRequiredProperties && tempRequired.includes(name)) {
required.push(name);
}
- //console.log('Checking ' + name + ' against ' + _.keys(schema.properties));
- if (_.keys(schema.properties).indexOf(name)=== -1) {
+ // console.log('Checking ' + name + ' against ' + _.keys(schema.properties));
+ if (_.keys(schema.properties).indexOf(name) === -1) {
property.definitiongroup = _.keys(schema.definitions)[i];
abstract[name] = property;
}
}
}
}
- let propertiesSlugs = createGithubSlugs(_.keys(abstract));
- if (_.keys(abstract).length>0) {
- //console.log('I got definitions!', abstract);
- multi.push([ 'definitions.ejs', {
+ const propertiesSlugs = createGithubSlugs(_.keys(abstract));
+ if (_.keys(abstract).length > 0) {
+ // console.log('I got definitions!', abstract);
+ multi.push(['definitions.ejs', {
props: requiredProperties(abstract, required),
title: schema.title,
id: schema.$id,
- propertiesSlugs:propertiesSlugs,
- i18n: i18n
- } ]);
- for (let i=0; i<_.keys(abstract).length;i++) {
+ propertiesSlugs,
+ i18n,
+ }]);
+ for (let i = 0; i < _.keys(abstract).length; i++) {
const name = _.keys(abstract).sort()[i];
- multi.push( [ 'property.ejs', {
- name: name,
+ multi.push(['property.ejs', {
+ name,
required: required.includes(name),
ejs: ejsRender,
- examples: stringifyExamples(abstract[name]['examples']),
+ examples: stringifyExamples(abstract[name].examples),
schema: simpletype(abstract[name]),
nameSlug: propertiesSlugs[name],
- i18n: i18n
- } ]);
+ i18n,
+ }]);
}
}
}
- let propertiesSlugs = createGithubSlugs(_.keys(schema.properties));
+ const propertiesSlugs = createGithubSlugs(_.keys(schema.properties));
if (_.keys(schema.properties).length > 0) {
- if (schema.required === undefined){schema.required = [];}
+ if (schema.required === undefined) { schema.required = []; }
schema.required = _.union(schema.required, required);
- //table of contents
- multi.push([ 'properties.ejs', {
+ // table of contents
+ multi.push(['properties.ejs', {
props: requiredProperties(schema.properties, schema.required),
pprops: _.mapValues(schema.patternProperties, simpletype),
title: schema.title,
additional: schema.additionalProperties,
- propertiesSlugs: propertiesSlugs,
- i18n: i18n
- } ]);
- //regular properties
- for (let i=0; i<_.keys(schema.properties).length;i++) {
+ propertiesSlugs,
+ i18n,
+ }]);
+ // regular properties
+ for (let i = 0; i < _.keys(schema.properties).length; i++) {
const name = _.keys(schema.properties).sort()[i];
- multi.push( [ 'property.ejs', {
- name: name,
+ multi.push(['property.ejs', {
+ name,
required: schema.required ? schema.required.includes(name) : false,
- examples: stringifyExamples(schema.properties[name]['examples']),
+ examples: stringifyExamples(schema.properties[name].examples),
ejs: ejsRender,
schema: simpletype(schema.properties[name]),
nameSlug: propertiesSlugs[name],
- i18n: i18n
- } ]);
+ i18n,
+ }]);
}
}
if (_.keys(schema.patternProperties).length > 0) {
- //patterns properties
- for (let i=0; i<_.keys(schema.patternProperties).length;i++) {
+ // patterns properties
+ for (let i = 0; i < _.keys(schema.patternProperties).length; i++) {
const name = _.keys(schema.patternProperties)[i];
- multi.push( [ 'pattern-property.ejs', {
- name: name,
- examples: stringifyExamples(schema.patternProperties[name]['examples']),
+ multi.push(['pattern-property.ejs', {
+ name,
+ examples: stringifyExamples(schema.patternProperties[name].examples),
ejs: ejsRender,
schema: simpletype(schema.patternProperties[name]),
- i18n: i18n } ]);
+ i18n,
+ }]);
}
}
// Handles join-type properties
// If the schema contains a 'oneOf', 'allOf' or 'anyOf'.
- const joinTypeKey = Object.keys(schema).find(key => [ 'oneOf', 'allOf', 'anyOf' ].indexOf(key) > -1);
+ const joinTypeKey = Object.keys(schema).find(key => ['oneOf', 'allOf', 'anyOf'].indexOf(key) > -1);
if (!_.isUndefined(joinTypeKey)) {
const joinType = schema[joinTypeKey];
if (joinType.length > 0) {
- multi.push( [ 'join-type.ejs', {
+ multi.push(['join-type.ejs', {
ejs: ejsRender,
schemas: simpletype(joinType),
schema: simpletype(schema),
- i18n: i18n } ]);
+ i18n,
+ }]);
}
}
- //find definitions that contain properties that are not part of the main schema
- multi = multi.map(([ template, context ]) => {
- return [
- path.join(__dirname, '../templates/md/' + template),
- assoc(assoc(context, '_', _), 'simpletype', simpletype)
- ];
- });
+ // find definitions that contain properties that are not part of the main schema
+ multi = multi.map(([template, context]) => [
+ path.join(__dirname, `../templates/md/${template}`),
+ assoc(assoc(context, '_', _), 'simpletype', simpletype),
+ ]);
- return Promise.reduce(Promise.map(multi, render), build, '').then(str => {
- const mdfile = path.basename(filename).slice(0, -5)+ '.md';
+ return Promise.reduce(Promise.map(multi, render), build, '').then((str) => {
+ const mdfile = `${path.basename(filename).slice(0, -5)}.md`;
return writeFile(path.join(path.join(outDir), path.dirname(filename.substr(schemaPath.length))), mdfile, prettyMarkdown(str));
- }).then(out => {
- //console.log('markdown written (promise)', out);
- return out;
- });
+ }).then(out =>
+ // console.log('markdown written (promise)', out);
+ out);
};
module.exports = generateMarkdown;
diff --git a/lib/prettyMarkdown.js b/lib/prettyMarkdown.js
index 328deb2..f47b710 100644
--- a/lib/prettyMarkdown.js
+++ b/lib/prettyMarkdown.js
@@ -1,13 +1,18 @@
-/**
- * Copyright 2017 Adobe Systems Incorporated. All rights reserved.
+/*
+ * Copyright 2019 Adobe. All rights reserved.
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. You may obtain a copy
* of the License at http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
+ * OF ANY KIND, either express or implied. See the License for the specific language
+ * governing permissions and limitations under the License.
*/
-var prettier = require('prettier');
+const prettier = require('prettier');
-const prettyMarkdown = function(str) {
+const prettyMarkdown = function (str) {
return prettier.format(str, { parser: 'markdown', proseWrap: 'always', printWidth: 119 });
};
diff --git a/lib/readSchemaFile.js b/lib/readSchemaFile.js
index e0d8909..3a8002e 100644
--- a/lib/readSchemaFile.js
+++ b/lib/readSchemaFile.js
@@ -1,12 +1,17 @@
-/**
- * Copyright 2017 Adobe Systems Incorporated. All rights reserved.
+/*
+ * Copyright 2019 Adobe. All rights reserved.
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. You may obtain a copy
* of the License at http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
+ * OF ANY KIND, either express or implied. See the License for the specific language
+ * governing permissions and limitations under the License.
*/
-var Promise=require('bluebird');
-var fs = Promise.promisifyAll(require('fs'));
+const Promise = require('bluebird');
+const fs = Promise.promisifyAll(require('fs'));
// Reads a schema file and modifies a schema path map object based on the schema file.
// Returns the schema path map object.
@@ -22,19 +27,19 @@ module.exports = function readSchemaFile(schemaPathMap, fullPath) {
schemaPathMap = {};
}
return fs.readFileAsync(fullPath)
- .then(data => {
- let schema = JSON.parse(data);
- let obj = {};
+ .then((data) => {
+ const schema = JSON.parse(data);
+ const obj = {};
obj.filePath = fullPath;
obj.jsonSchema = schema;
- if (schema['$id'] && schema['$id'].length > 0) {
- if (!schemaPathMap[schema['$id']]) {
- schemaPathMap[schema['$id']] = obj;
+ if (schema.$id && schema.$id.length > 0) {
+ if (!schemaPathMap[schema.$id]) {
+ schemaPathMap[schema.$id] = obj;
}
// TODO err
- //TODO check Missing Specific properties to throw warning // function for warning
+ // TODO check Missing Specific properties to throw warning // function for warning
} else {
- console.warn('schema ' + fullPath + ' has no $id');
+ console.warn(`schema ${fullPath} has no $id`);
schemaPathMap[fullPath] = obj;
}
return schemaPathMap;
diff --git a/lib/readmeWriter.js b/lib/readmeWriter.js
index b10c6af..9806203 100644
--- a/lib/readmeWriter.js
+++ b/lib/readmeWriter.js
@@ -1,24 +1,30 @@
-/**
- * Copyright 2017 Adobe Systems Incorporated. All rights reserved.
+/*
+ * Copyright 2019 Adobe. All rights reserved.
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. You may obtain a copy
* of the License at http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
+ * OF ANY KIND, either express or implied. See the License for the specific language
+ * governing permissions and limitations under the License.
*/
-const writeFile = require('./writeFiles');
-const prettyMarkdown = require('./prettyMarkdown');
-var Promise=require('bluebird');
-var _ = require('lodash');
-var ejs = require('ejs');
-var path = require('path');
+const Promise = require('bluebird');
+const _ = require('lodash');
+const ejs = require('ejs');
+const path = require('path');
+
const pejs = Promise.promisifyAll(ejs);
-var validUrl = require('valid-url');
+const validUrl = require('valid-url');
const i18n = require('i18n');
+const prettyMarkdown = require('./prettyMarkdown');
+const writeFile = require('./writeFiles');
function relativePath(full, base) {
full = full.replace(/\\/g, '/');
base = base.replace(/\\/g, '/');
- if (full.indexOf(base)===0) {
+ if (full.indexOf(base) === 0) {
return full.substr(base.length).replace(/\.json$/, '');
} else {
return full;
@@ -36,35 +42,31 @@ function directory(full, base) {
* @param {string} out - output directory
* @param {string} base - schema base directory
*/
-const generateReadme = function(paths, schemas, out, base) {
- const coreinfo = _.values(schemas).map(schema => {
- return {
- id: schema.jsonSchema.$id,
- title: schema.jsonSchema.title,
- full: schema.filePath,
- status: schema.jsonSchema['meta:status'] !== undefined ? (schema.jsonSchema['meta:status'].charAt(0).toUpperCase() + schema.jsonSchema['meta:status'].slice(1)) : 'Unknown',
- relative: relativePath(schema.filePath, base),
- dir: directory(schema.filePath, base),
- i18n:i18n,
- };
- });
+const generateReadme = function (paths, schemas, out, base) {
+ const coreinfo = _.values(schemas).map(schema => ({
+ id: schema.jsonSchema.$id,
+ title: schema.jsonSchema.title,
+ full: schema.filePath,
+ status: schema.jsonSchema['meta:status'] !== undefined ? (schema.jsonSchema['meta:status'].charAt(0).toUpperCase() + schema.jsonSchema['meta:status'].slice(1)) : 'Unknown',
+ relative: relativePath(schema.filePath, base),
+ dir: directory(schema.filePath, base),
+ i18n,
+ }));
const ctx = {
- paths: paths,
- i18n:i18n,
- _: _,
- validUrl: validUrl,
- schemas: schemas,
+ paths,
+ i18n,
+ _,
+ validUrl,
+ schemas,
core: coreinfo,
- groups: _.groupBy(coreinfo, key => { return key.dir; })
+ groups: _.groupBy(coreinfo, key => key.dir),
};
- return pejs.renderFileAsync(path.join(__dirname, '../templates/md/readme.ejs'), ctx, { debug: false }, i18n).then(str => {
+ return pejs.renderFileAsync(path.join(__dirname, '../templates/md/readme.ejs'), ctx, { debug: false }, i18n).then((str) => {
console.log('Writing README');
return writeFile(out, 'README.md', prettyMarkdown(str));
- }).then(out => {
- //console.log('markdown written (promise)', out);
- return out;
- });
+ }).then(out =>
+ // console.log('markdown written (promise)', out);
+ out);
};
module.exports = generateReadme;
-
diff --git a/lib/schema.js b/lib/schema.js
index 580ceaa..e8c7ec4 100644
--- a/lib/schema.js
+++ b/lib/schema.js
@@ -1,132 +1,137 @@
-/**
- * Copyright 2017 Adobe Systems Incorporated. All rights reserved.
+/*
+ * Copyright 2019 Adobe. All rights reserved.
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. You may obtain a copy
* of the License at http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
+ * OF ANY KIND, either express or implied. See the License for the specific language
+ * governing permissions and limitations under the License.
*/
-var path = require('path');
-var _ = require('lodash');
-var logger = require('winston');
-var readdirp = require('readdirp');
-var Promise=require('bluebird');
-var fs = Promise.promisifyAll(require('fs'));
-const markdownWriter=require('./markdownWriter');
-const schemaWriter=require('./schemaWriter');
-const readmeWriter=require('./readmeWriter');
-var deff='#/definitions/';
-var absUrlRegex = new RegExp('^(?:[a-z]+:)?//', 'i');
-var pointer = require('json-pointer');
-var smap; //TODO remove global
-var sPath;
-var wmap={};
-function get$refType(refValue){
- var startpart = '', endpart = '', refType = '';
- var arr = refValue.split('#');
- if (arr.length > 1) {endpart=arr[1];}
-
- startpart=arr[0];
- //TODO yRelNoDef
- //relative-- yRelWithDef, yRelNoDef,
- //absolute-- yAbsWithDef, yAbsFSchema, yAbsWithFragment
- var refType='';
- var deff='/definitions/';
-
- //if( absUrlRegex.test(refVal) ){
- if (startpart.length > 1){
- if (startpart in smap){
- if (endpart.startsWith(deff)){
+const path = require('path');
+const _ = require('lodash');
+const logger = require('winston');
+const readdirp = require('readdirp');
+const Promise = require('bluebird');
+const fs = Promise.promisifyAll(require('fs'));
+const markdownWriter = require('./markdownWriter');
+const schemaWriter = require('./schemaWriter');
+const readmeWriter = require('./readmeWriter');
+
+const deff = '#/definitions/';
+const absUrlRegex = new RegExp('^(?:[a-z]+:)?//', 'i');
+const pointer = require('json-pointer');
+
+let smap; // TODO remove global
+let sPath;
+const wmap = {};
+function get$refType(refValue) {
+ let startpart = ''; let endpart = ''; var
+ refType = '';
+ const arr = refValue.split('#');
+ if (arr.length > 1) { endpart = arr[1]; }
+
+ startpart = arr[0];
+ // TODO yRelNoDef
+ // relative-- yRelWithDef, yRelNoDef,
+ // absolute-- yAbsWithDef, yAbsFSchema, yAbsWithFragment
+ var refType = '';
+ const deff = '/definitions/';
+
+ // if( absUrlRegex.test(refVal) ){
+ if (startpart.length > 1) {
+ if (startpart in smap) {
+ if (endpart.startsWith(deff)) {
refType = 'yAbsWithDef';
+ } else if (endpart.length === 0) {
+ refType = 'yAbsFSchema';
} else {
- if (endpart.length === 0) {
- refType = 'yAbsFSchema';
- } else {
- refType = 'yAbsWithFragment';
- }
+ refType = 'yAbsWithFragment';
}
}
- } else {
- if (endpart.startsWith(deff)){
- refType = 'yRelWithDef';
- }
+ } else if (endpart.startsWith(deff)) {
+ refType = 'yRelWithDef';
}
// }
return { startpart, endpart, refType };
}
-function normaliseLinks(obj, refArr){
- let basepath = refArr.startpart ;
- let $linkVal = '', $linkPath = '';
- if (basepath in smap){
- let newpath = path.relative(path.dirname(sPath), smap[basepath].filePath).replace(/\\/g, '/'); //to cater windows paths
- let temp = newpath.slice(0, -5).split('/');
- $linkVal = obj['title'] ? obj['title'] : path.basename(newpath).slice(0, -5);
- $linkPath = temp.join('/')+'.md';
+function normaliseLinks(obj, refArr) {
+ const basepath = refArr.startpart;
+ let $linkVal = ''; let
+ $linkPath = '';
+ if (basepath in smap) {
+ const newpath = path.relative(path.dirname(sPath), smap[basepath].filePath).replace(/\\/g, '/'); // to cater windows paths
+ const temp = newpath.slice(0, -5).split('/');
+ $linkVal = obj.title ? obj.title : path.basename(newpath).slice(0, -5);
+ $linkPath = `${temp.join('/')}.md`;
return { $linkVal, $linkPath };
}
}
-var resolve$ref = Promise.method(function(val, base$id){
- let obj, link;
- if (!(base$id in wmap) ) {wmap[base$id] = {};}
- let refArr = get$refType(val['$ref']);
- if (refArr.refType === 'yRelWithDef'){
+const resolve$ref = Promise.method((val, base$id) => {
+ let obj; let
+ link;
+ if (!(base$id in wmap)) { wmap[base$id] = {}; }
+ const refArr = get$refType(val.$ref);
+ if (refArr.refType === 'yRelWithDef') {
refArr.startpart = base$id;
}
- if (smap[refArr.startpart]){
- obj=smap[refArr.startpart].jsonSchema;
- if (refArr.refType !== 'yRelWithDef'){
+ if (smap[refArr.startpart]) {
+ obj = smap[refArr.startpart].jsonSchema;
+ if (refArr.refType !== 'yRelWithDef') {
link = normaliseLinks(obj, refArr);
- if (!wmap[base$id][refArr.startpart]){
- wmap[base$id][refArr.startpart]=link;
+ if (!wmap[base$id][refArr.startpart]) {
+ wmap[base$id][refArr.startpart] = link;
}
-
}
- if (refArr.refType === 'yAbsFSchema'){
+ if (refArr.refType === 'yAbsFSchema') {
val.type = link.$linkVal;
val.$linkVal = link.$linkVal;
val.$linkPath = link.$linkPath;
return val;
}
- if (pointer.has(obj, refArr.endpart)){
- var ischema = _.cloneDeep(pointer.get(obj, refArr.endpart));
+ if (pointer.has(obj, refArr.endpart)) {
+ const ischema = _.cloneDeep(pointer.get(obj, refArr.endpart));
_.forOwn(val, (v, k) => {
- if (k !== '$ref'){
- ischema[k]=v;
+ if (k !== '$ref') {
+ ischema[k] = v;
}
});
return processISchema(ischema, refArr.startpart);
}
}
});
-var processFurther = Promise.method(function(val, key, $id){
- let base$id =$id;
- if (val['$ref']){
+var processFurther = Promise.method((val, key, $id) => {
+ const base$id = $id;
+ if (val.$ref) {
return resolve$ref(val, base$id);
} else {
- if (val['items'] && val['type'] === 'array'){
- if (val['items']['$ref']){
- resolve$ref(val['items']).then(s => {
+ if (val.items && val.type === 'array') {
+ if (val.items.$ref) {
+ resolve$ref(val.items).then((s) => {
_.forOwn(s, (v, k) => {
- if (k !== '$ref'){
- val['items'][k]=v;
+ if (k !== '$ref') {
+ val.items[k] = v;
}
});
});
}
- } else if (val['properties'] && val['type'] === 'object') {
- _.each(_.entries(val['properties']), function(property) {
- const [ propertyKey, propertyValue ] = property;
- if (propertyValue['$ref']) {
- resolve$ref(propertyValue).then(s => {
+ } else if (val.properties && val.type === 'object') {
+ _.each(_.entries(val.properties), (property) => {
+ const [propertyKey, propertyValue] = property;
+ if (propertyValue.$ref) {
+ resolve$ref(propertyValue).then((s) => {
_.forOwn(s, (v, k) => {
- if (k !== '$ref'){
- val['properties'][propertyKey][k] = v;
+ if (k !== '$ref') {
+ val.properties[propertyKey][k] = v;
}
});
});
} else {
- //type is object but property does not contain a $ref
+ // type is object but property does not contain a $ref
// go recursively down to check for a $ref
return processFurther(propertyValue, propertyKey, base$id);
}
@@ -134,27 +139,27 @@ var processFurther = Promise.method(function(val, key, $id){
return val;
}
- //TODO if any other keyword
+ // TODO if any other keyword
return val;
}
});
-function processISchema() {}; // define w/ function so it gets hoisted and we avoid eslint errors about what is defined first: processISchema or resolve$ref. Both rely on each other!
-processISchema = Promise.method(function(schema, base$id){
- if (!(base$id in wmap) ) {wmap[base$id] = {};}
- if (schema['anyOf'] || schema['oneOf']){
+function processISchema() {} // define w/ function so it gets hoisted and we avoid eslint errors about what is defined first: processISchema or resolve$ref. Both rely on each other!
+processISchema = Promise.method((schema, base$id) => {
+ if (!(base$id in wmap)) { wmap[base$id] = {}; }
+ if (schema.anyOf || schema.oneOf) {
// var $definitions=[]
- schema['type'] = schema['anyOf'] ? 'anyOf' : 'oneOf';
- let arr = schema['anyOf']? schema['anyOf'] : schema['oneOf'];
- _.each(arr, function(value, index) {
- if (value['$ref']){
- resolve$ref(value, base$id).then(piSchema => {
+ schema.type = schema.anyOf ? 'anyOf' : 'oneOf';
+ const arr = schema.anyOf ? schema.anyOf : schema.oneOf;
+ _.each(arr, (value, index) => {
+ if (value.$ref) {
+ resolve$ref(value, base$id).then((piSchema) => {
delete arr[index];
- arr[index]=piSchema;
+ arr[index] = piSchema;
});
} else {
- processISchema(value, base$id).then(piSchema => {
+ processISchema(value, base$id).then((piSchema) => {
delete arr[index];
- arr[index]=piSchema;
+ arr[index] = piSchema;
});
}
});
@@ -162,123 +167,109 @@ processISchema = Promise.method(function(schema, base$id){
return schema;
}
- if (schema['items'] ){
-
- let val=schema['items'];
- if (!schema['type']) {schema['type'] = 'array';}
- if (_.isArray(val)){
- //TODO
+ if (schema.items) {
+ const val = schema.items;
+ if (!schema.type) { schema.type = 'array'; }
+ if (_.isArray(val)) {
+ // TODO
+ } else if (val.$ref) {
+ resolve$ref(val, base$id).then((piSchema) => { // check // not sending correct id
+ schema.items = piSchema;
+ });
} else {
- if (val['$ref']){
- resolve$ref(val, base$id).then(piSchema => {//check // not sending correct id
- schema['items']=piSchema;
- });
- } else {
- //TODO if such a scenario
- }
+ // TODO if such a scenario
}
}
// schema.$definitions = $definitions
return schema;
});
-function processSchema(schema){
+function processSchema(schema) {
return new Promise((resolve, reject) => {
- if (!schema.properties) {schema.properties={};}
- var $id = schema['$id'] || schema['id'];
- var base$id = $id;
- if (!(base$id in wmap)) {wmap[base$id] = {};}
- if (schema['allOf']){
- _.each(schema['allOf'], function(value) {
- if (value['$ref']){
- let obj, link;
- var refArr = get$refType(value['$ref']);
- if (refArr.refType === 'yRelWithDef'){
+ if (!schema.properties) { schema.properties = {}; }
+ const $id = schema.$id || schema.id;
+ const base$id = $id;
+ if (!(base$id in wmap)) { wmap[base$id] = {}; }
+ if (schema.allOf) {
+ _.each(schema.allOf, (value) => {
+ if (value.$ref) {
+ let obj; let
+ link;
+ const refArr = get$refType(value.$ref);
+ if (refArr.refType === 'yRelWithDef') {
refArr.startpart = base$id;
}
- if (smap[refArr.startpart]){
- obj=smap[refArr.startpart].jsonSchema;
- if (refArr.refType !== 'yRelWithDef'){
- link=normaliseLinks(obj, refArr);
- if (!wmap[base$id][refArr.startpart]){
- wmap[base$id][refArr.startpart]=link;
+ if (smap[refArr.startpart]) {
+ obj = smap[refArr.startpart].jsonSchema;
+ if (refArr.refType !== 'yRelWithDef') {
+ link = normaliseLinks(obj, refArr);
+ if (!wmap[base$id][refArr.startpart]) {
+ wmap[base$id][refArr.startpart] = link;
}
}
- if (pointer.has(obj, refArr.endpart)){
- var ischema = _.cloneDeep(pointer.get(obj, refArr.endpart));
- if (refArr.refType === 'yAbsFSchema'){
- processSchema(ischema).then(psSchema => {
- if ( psSchema['properties'] ){
- _.forOwn(psSchema['properties'], (val, key) => {
- processFurther(val, key, refArr.startpart).then(pfSchema => {
- if (pfSchema){
+ if (pointer.has(obj, refArr.endpart)) {
+ const ischema = _.cloneDeep(pointer.get(obj, refArr.endpart));
+ if (refArr.refType === 'yAbsFSchema') {
+ processSchema(ischema).then((psSchema) => {
+ if (psSchema.properties) {
+ _.forOwn(psSchema.properties, (val, key) => {
+ processFurther(val, key, refArr.startpart).then((pfSchema) => {
+ if (pfSchema) {
schema.properties[key] = pfSchema;
- schema.properties[key].$oSchema={};
- schema.properties[key].$oSchema.$linkVal=link.$linkVal;
- schema.properties[key].$oSchema.$linkPath=link.$linkPath;
+ schema.properties[key].$oSchema = {};
+ schema.properties[key].$oSchema.$linkVal = link.$linkVal;
+ schema.properties[key].$oSchema.$linkPath = link.$linkPath;
- if (pfSchema['required']){
- if (key in pfSchema['required']){
+ if (pfSchema.required) {
+ if (key in pfSchema.required) {
schema.required.push(key);
}
}
}
-
});
-
});
}
});
-
- } else {
- if ( ischema['properties'] ){
- _.forOwn(ischema['properties'], (val, key) => {
- processFurther(val, key, refArr.startpart).then(pfSchema => {
- if (pfSchema){
- schema.properties[key] = pfSchema;
- if (refArr.refType === 'yAbsWithDef'){
- schema.properties[key].$oSchema={};
- schema.properties[key].$oSchema.$linkVal=link.$linkVal;
- schema.properties[key].$oSchema.$linkPath=link.$linkPath;
-
- }
- if (ischema['required']){
- if (key in ischema['required']) {schema.required.push(key);}
- }
- } else {
- reject('No further schema found');
+ } else if (ischema.properties) {
+ _.forOwn(ischema.properties, (val, key) => {
+ processFurther(val, key, refArr.startpart).then((pfSchema) => {
+ if (pfSchema) {
+ schema.properties[key] = pfSchema;
+ if (refArr.refType === 'yAbsWithDef') {
+ schema.properties[key].$oSchema = {};
+ schema.properties[key].$oSchema.$linkVal = link.$linkVal;
+ schema.properties[key].$oSchema.$linkPath = link.$linkPath;
}
- });
-
+ if (ischema.required) {
+ if (key in ischema.required) { schema.required.push(key); }
+ }
+ } else {
+ reject('No further schema found');
+ }
});
- }
-
+ });
}
}
-
}
-
} else {
-
- _.forOwn(value, function(val, key){
- schema[key]=val;
+ _.forOwn(value, (val, key) => {
+ schema[key] = val;
//
});
// TODO add properties if there // behaviour to be decided
}
-
});
resolve(schema);
- } else if (schema['properties']){
- _.forOwn(schema['properties'], (val, key) => {
- processFurther(val, key, base$id).then(pfSchema => {
- if (pfSchema){
+ } else if (schema.properties) {
+ _.forOwn(schema.properties, (val, key) => {
+ processFurther(val, key, base$id).then((pfSchema) => {
+ if (pfSchema) {
schema.properties[key] = pfSchema;
- if (pfSchema['required']){
- if (key in pfSchema['required']){
+ if (pfSchema.required) {
+ if (key in pfSchema.required) {
schema.required.push(key);
}
}
@@ -286,55 +277,50 @@ function processSchema(schema){
});
});
- //TODO check if something missing left here
+ // TODO check if something missing left here
resolve(schema);
}
-
});
-
- //generic $ref resolve present in top properties
+ // generic $ref resolve present in top properties
}
-var Schema=function(ajv, schemaMap){
+const Schema = function (ajv, schemaMap) {
this._ajv = ajv;
- this._schemaPathMap=schemaMap;
+ this._schemaPathMap = schemaMap;
};
-Schema.resolveRef=function(key, obj, currpath){
- if (key === '$ref'){
- var refVal = obj[key];
- var temp;
- if ( absUrlRegex.test(refVal) ){
- let parsedUrl = refVal.split('#');
- let basepath = parsedUrl[0] ;
- if (basepath in this._schemaPathMap){
- let newpath = path.relative(path.dirname(currpath), this._schemaPathMap[basepath].filePath).replace(/\\/g, '/'); //to cater windows paths
- obj['$ref'] = newpath;
+Schema.resolveRef = function (key, obj, currpath) {
+ if (key === '$ref') {
+ const refVal = obj[key];
+ let temp;
+ if (absUrlRegex.test(refVal)) {
+ const parsedUrl = refVal.split('#');
+ const basepath = parsedUrl[0];
+ if (basepath in this._schemaPathMap) {
+ const newpath = path.relative(path.dirname(currpath), this._schemaPathMap[basepath].filePath).replace(/\\/g, '/'); // to cater windows paths
+ obj.$ref = newpath;
temp = newpath.slice(0, -5).split('/');
obj.$linkVal = path.basename(newpath).slice(0, -5);
- obj.$linkPath = temp.join('/')+'.md';
- //TODO display with title or file path name title
+ obj.$linkPath = `${temp.join('/')}.md`;
+ // TODO display with title or file path name title
} else {
obj.$linkPath = refVal;
temp = refVal.split('/');
obj.$linkVal = temp.pop() || temp.pop();
}
-
} else if (refVal.startsWith(deff)) {
obj.$linkVal = refVal.slice(deff.length);
- obj.$linkPath = '#'+obj.$linkVal.replace(/ /g, '-');
- } else if (refVal.endsWith('json')){
+ obj.$linkPath = `#${obj.$linkVal.replace(/ /g, '-')}`;
+ } else if (refVal.endsWith('json')) {
temp = refVal.slice(0, -5).split('/');
obj.$linkVal = temp[temp.length - 1];
- obj.$linkPath = temp.join('/')+'.md';
+ obj.$linkPath = `${temp.join('/')}.md`;
}
}
- if (key === 'anyOf' || key === 'oneOf' || key === 'allOf') {obj.$type=key;}
-
- return;
+ if (key === 'anyOf' || key === 'oneOf' || key === 'allOf') { obj.$type = key; }
};
/* The following function does not seem to be used anymore!
@@ -355,62 +341,54 @@ var traverseSchema = function(object,schemaFilePath){
};
*/
-Schema.getExamples = function(filePath, schema){
- var exampleFileNames=[];
- var examples=[];
- var dirname=path.dirname(filePath);
- var filename=path.basename(filePath, path.extname(filePath));
- filename=filename.split('.')[0]+'.example.*.json';
+Schema.getExamples = function (filePath, schema) {
+ const exampleFileNames = [];
+ let examples = [];
+ const dirname = path.dirname(filePath);
+ let filename = path.basename(filePath, path.extname(filePath));
+ filename = `${filename.split('.')[0]}.example.*.json`;
return new Promise((resolve, reject) => {
readdirp(dirname, { root: dirname, fileFilter: filename })
.on('data', entry => exampleFileNames.push(entry.fullPath))
.on('end', () => resolve(exampleFileNames))
.on('error', err => reject(err));
- }).then(exampleFileNames => {
- if (exampleFileNames.length > 0){
- var validate=this._ajv.compile(schema);
- return Promise.map(exampleFileNames, entry => {
- return fs.readFileAsync(entry).then(example => {
- var data = JSON.parse(example.toString());
- var valid = validate(data);
- if (valid) {examples.push({ filename: entry, data: data });} else {logger.error(entry+' is an invalid Example');}
- });
- }).then(() => {
+ }).then((exampleFileNames) => {
+ if (exampleFileNames.length > 0) {
+ const validate = this._ajv.compile(schema);
+ return Promise.map(exampleFileNames, entry => fs.readFileAsync(entry).then((example) => {
+ const data = JSON.parse(example.toString());
+ const valid = validate(data);
+ if (valid) { examples.push({ filename: entry, data }); } else { logger.error(`${entry} is an invalid Example`); }
+ })).then(() => {
// Sort according to filenames in order not to have random prints
- examples.sort(function(a, b) {
- return a.filename > b.filename ? 1 : -1;
- });
+ examples.sort((a, b) => (a.filename > b.filename ? 1 : -1));
logger.error(examples);
- examples = examples.map(function(element) {return element.data; });
- schema.examples=examples;
+ examples = examples.map(element => element.data);
+ schema.examples = examples;
return schema;
});
- } else {return schema;}
+ } else { return schema; }
});
};
-Schema.getDescription = function(filePath, schema){
-
- var temp=path.basename(filePath, path.extname(filePath));
- //TODO should err be thrown here?
- temp=temp.split('.')[0]+'.description.md';
+Schema.getDescription = function (filePath, schema) {
+ let temp = path.basename(filePath, path.extname(filePath));
+ // TODO should err be thrown here?
+ temp = `${temp.split('.')[0]}.description.md`;
return fs.readFileAsync(path.resolve(path.dirname(filePath), temp), 'utf8')
- .then(description => {
- schema.description=description;
+ .then((description) => {
+ schema.description = description;
return schema;
})
- .catch(() => {
- return schema;
- });
-
+ .catch(() => schema);
};
-Schema.setAjv=function(ajv){
- this._ajv=ajv;
+Schema.setAjv = function (ajv) {
+ this._ajv = ajv;
};
-Schema.setSchemaPathMap=function(schemaMap){
- this._schemaPathMap=schemaMap;
+Schema.setSchemaPathMap = function (schemaMap) {
+ this._schemaPathMap = schemaMap;
};
/**
* Loads a schema file for processing into a given target directory
@@ -422,52 +400,51 @@ Schema.setSchemaPathMap=function(schemaMap){
* @param {boolean} readme - generate a README.md directory listing
* @param {map} docs - a map of documentation links for headers
*/
-Schema.process = function(schemaMap, schemaPath, docDir, schemaDir, metaElements, readme, docs, consoleArgs) {
- smap=schemaMap;
- let keys = Object.keys(schemaMap);
- return Promise.mapSeries(keys, schemaKey => {
-
- var props = Object.keys(wmap);
- for (var i = 0; i < props.length; i++) {
+Schema.process = function (schemaMap, schemaPath, docDir, schemaDir, metaElements, readme, docs, consoleArgs) {
+ smap = schemaMap;
+ const keys = Object.keys(schemaMap);
+ return Promise.mapSeries(keys, (schemaKey) => {
+ const props = Object.keys(wmap);
+ for (let i = 0; i < props.length; i++) {
delete wmap[props[i]];
}
- let schema = schemaMap[schemaKey].jsonSchema;
+ const schema = schemaMap[schemaKey].jsonSchema;
sPath = schemaMap[schemaKey].filePath;
return Schema.getExamples(schemaMap[schemaKey].filePath, schema)
.then(egsSchema => Schema.getDescription(schemaMap[schemaKey].filePath, egsSchema))
- .then(allSchema => {
- var schemaClone = _.cloneDeep(allSchema);
+ .then((allSchema) => {
+ const schemaClone = _.cloneDeep(allSchema);
// return Promise.props({
// wSchema:schemaClone,
// mSchema:traverseSchema(allSchema,schemaMap[schemaKey].filePath)
// })
- return processSchema(schemaClone).then(mSchema => {
- mSchema.metaElements=metaElements;
- return { mSchema:mSchema, wSchema:allSchema, dep:wmap };
+ return processSchema(schemaClone).then((mSchema) => {
+ mSchema.metaElements = metaElements;
+ return { mSchema, wSchema: allSchema, dep: wmap };
});
- }).then(object => {
- const outputTasks = [ markdownWriter(schemaMap[schemaKey].filePath, object.mSchema, schemaPath, docDir, object.dep, docs, consoleArgs) ];
+ }).then((object) => {
+ const outputTasks = [markdownWriter(schemaMap[schemaKey].filePath, object.mSchema, schemaPath, docDir, object.dep, docs, consoleArgs)];
if (schemaDir !== '') {
outputTasks.push(schemaWriter(schemaMap[schemaKey].filePath, object.wSchema, schemaPath, schemaDir));
}
return Promise.all(outputTasks);
- }).catch(err => {
+ })
+ .catch((err) => {
logger.error('Error occured in processing schema at path %s', sPath);
logger.error(err); // should we exit here or allow processing of other schemas?
process.exit(1);
});
- }).then(result => {
+ }).then((result) => {
if (readme) {
console.log('Output processed. Trying to make a README.md now');
- const markdowns = result.map(r => { return r[0];});
+ const markdowns = result.map(r => r[0]);
return readmeWriter(markdowns, schemaMap, docDir, schemaPath);
} else {
console.log('Output processed.');
}
});
-
};
diff --git a/lib/schemaWriter.js b/lib/schemaWriter.js
index e768f68..c06d240 100644
--- a/lib/schemaWriter.js
+++ b/lib/schemaWriter.js
@@ -1,16 +1,20 @@
-/**
- * Copyright 2017 Adobe Systems Incorporated. All rights reserved.
+/*
+ * Copyright 2019 Adobe. All rights reserved.
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. You may obtain a copy
* of the License at http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
+ * OF ANY KIND, either express or implied. See the License for the specific language
+ * governing permissions and limitations under the License.
*/
+const path = require('path');
const writeFile = require('./writeFiles');
-var path = require('path');
-const generateNewSchemaFiles = function(filename, schema, schemaPath, outDir) {
+const generateNewSchemaFiles = function (filename, schema, schemaPath, outDir) {
return writeFile(path.join(path.join(outDir), path.dirname(filename.substr(schemaPath.length))), path.basename(filename), JSON.stringify(schema, null, 4));
-
};
module.exports = generateNewSchemaFiles;
diff --git a/lib/writeFiles.js b/lib/writeFiles.js
index 600ce13..b4cf524 100644
--- a/lib/writeFiles.js
+++ b/lib/writeFiles.js
@@ -1,24 +1,26 @@
-/**
- * Copyright 2017 Adobe Systems Incorporated. All rights reserved.
+/*
+ * Copyright 2019 Adobe. All rights reserved.
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. You may obtain a copy
* of the License at http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
+ * OF ANY KIND, either express or implied. See the License for the specific language
+ * governing permissions and limitations under the License.
*/
-var Promise=require('bluebird');
-var fs = Promise.promisifyAll(require('fs'));
-var path = require('path');
-var mkdirp = Promise.promisify(require('mkdirp'));
+const Promise = require('bluebird');
+const fs = Promise.promisifyAll(require('fs'));
+const path = require('path');
+const mkdirp = Promise.promisify(require('mkdirp'));
-const writeFile = function(outputDir, fileName, data) {
- if (!fs.existsSync(outputDir)){
- return mkdirp(outputDir).then(() => {
- return fs.writeFileAsync(path.join(outputDir, fileName), data).then(() => { return path.join(outputDir, fileName ); });
- });
+const writeFile = function (outputDir, fileName, data) {
+ if (!fs.existsSync(outputDir)) {
+ return mkdirp(outputDir).then(() => fs.writeFileAsync(path.join(outputDir, fileName), data).then(() => path.join(outputDir, fileName)));
} else {
- return fs.writeFileAsync(path.join(outputDir, fileName), data).then(() => { return path.join(outputDir, fileName ); });
+ return fs.writeFileAsync(path.join(outputDir, fileName), data).then(() => path.join(outputDir, fileName));
}
-
};
module.exports = writeFile;
diff --git a/package-lock.json b/package-lock.json
index 1fc198f..06b09c8 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -24,6 +24,15 @@
"js-tokens": "^4.0.0"
}
},
+ "@babel/runtime": {
+ "version": "7.5.5",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.5.5.tgz",
+ "integrity": "sha512-28QvEGyQyNkB0/m2B4FU7IEZGK2NUrcMtT6BZEFALTguLk+AUT6ofsHtPk5QyjAdUkpMJ+/Em+quwz4HOt30AQ==",
+ "dev": true,
+ "requires": {
+ "regenerator-runtime": "^0.13.2"
+ }
+ },
"@commitlint/execute-rule": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-8.1.0.tgz",
@@ -251,7 +260,7 @@
"@samverschueren/stream-to-observable": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.0.tgz",
- "integrity": "sha1-7N9I1TLFjqR3rPyrgDSEJPjQZi8=",
+ "integrity": "sha512-MI4Xx6LHs4Webyvi6EbspgyAb4D2Q2VtnCQ1blOJcoLS6mVa8lNN2rkIy1CVxfTUpoyIbCTkXES1rLXztFD1lg==",
"dev": true,
"requires": {
"any-observable": "^0.3.0"
@@ -743,7 +752,7 @@
"JSONStream": {
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz",
- "integrity": "sha1-MgjB8I06TZkmGrZPkjArwV4RHKA=",
+ "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==",
"dev": true,
"requires": {
"jsonparse": "^1.2.0",
@@ -764,7 +773,7 @@
"acorn-jsx": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.0.1.tgz",
- "integrity": "sha1-MqBk/ZJUKSFqCbFBECv90YX65A4=",
+ "integrity": "sha512-HJ7CfNHrfJLlNTzIEUTj43LNWGkqpRLxm3YjAlcD0ACydk9XynzYsCBHxut+iqt+1aBXkx9UP/w/ZqMr13XIzg==",
"dev": true
},
"agent-base": {
@@ -863,7 +872,7 @@
"any-observable": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz",
- "integrity": "sha1-r5M0deWAamfQ198JDdXovvZdEZs=",
+ "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==",
"dev": true
},
"argparse": {
@@ -880,6 +889,16 @@
"integrity": "sha1-oMoMvCmltz6Dbuvhy/bF4OTrgvk=",
"dev": true
},
+ "aria-query": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz",
+ "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=",
+ "dev": true,
+ "requires": {
+ "ast-types-flow": "0.0.7",
+ "commander": "^2.11.0"
+ }
+ },
"arr-diff": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
@@ -910,6 +929,16 @@
"integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=",
"dev": true
},
+ "array-includes": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz",
+ "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.2",
+ "es-abstract": "^1.7.0"
+ }
+ },
"array-union": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz",
@@ -934,10 +963,16 @@
"integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
"dev": true
},
+ "ast-types-flow": {
+ "version": "0.0.7",
+ "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz",
+ "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=",
+ "dev": true
+ },
"astral-regex": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz",
- "integrity": "sha1-bIw/uCfdQ+45GPJ7gngqt2WKb9k=",
+ "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==",
"dev": true
},
"async": {
@@ -957,6 +992,15 @@
"integrity": "sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY=",
"dev": true
},
+ "axobject-query": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.0.2.tgz",
+ "integrity": "sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww==",
+ "dev": true,
+ "requires": {
+ "ast-types-flow": "0.0.7"
+ }
+ },
"babel-runtime": {
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
@@ -1379,7 +1423,7 @@
"color": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/color/-/color-3.0.0.tgz",
- "integrity": "sha1-2SC0Mo1TSjrIKV1o971LpsQnvpo=",
+ "integrity": "sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w==",
"requires": {
"color-convert": "^1.9.1",
"color-string": "^1.5.2"
@@ -1401,7 +1445,7 @@
"color-string": {
"version": "1.5.3",
"resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz",
- "integrity": "sha1-ybvF8BtYtUkvPWhXRZy2WQziBMw=",
+ "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==",
"requires": {
"color-name": "^1.0.0",
"simple-swizzle": "^0.2.2"
@@ -1430,8 +1474,7 @@
"version": "2.17.1",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
"integrity": "sha1-vXerfebelCBc6sxy8XFtKfIKd78=",
- "dev": true,
- "optional": true
+ "dev": true
},
"commitizen": {
"version": "4.0.3",
@@ -1585,10 +1628,22 @@
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
},
+ "confusing-browser-globals": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.7.tgz",
+ "integrity": "sha512-cgHI1azax5ATrZ8rJ+ODDML9Fvu67PimB6aNxBrc/QwSaDaM9eTfIEUHx3bBLJJ82ioSb+/5zfsMCCEJax3ByQ==",
+ "dev": true
+ },
+ "contains-path": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz",
+ "integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=",
+ "dev": true
+ },
"conventional-changelog-angular": {
"version": "5.0.3",
"resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.3.tgz",
- "integrity": "sha1-KZ/dQ99aHwlSg6wWru37CmguyrA=",
+ "integrity": "sha512-YD1xzH7r9yXQte/HF9JBuEDfvjxxwDGGwZU1+ndanbY0oFgA+Po1T9JDSpPLdP0pZT6MhCAsdvFKC4TJ4MTJTA==",
"dev": true,
"requires": {
"compare-func": "^1.3.1",
@@ -1666,7 +1721,7 @@
"conventional-commits-filter": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.1.tgz",
- "integrity": "sha1-VaE13hgC9lELZ1jgpqqeCyhhjbM=",
+ "integrity": "sha512-92OU8pz/977udhBjgPEbg3sbYzIxMDFTlQT97w7KdhR9igNqdJvy8smmedAAgn4tPiqseFloKkrVfbXCVd+E7A==",
"dev": true,
"requires": {
"is-subset": "^0.1.1",
@@ -1676,7 +1731,7 @@
"conventional-commits-parser": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.0.1.tgz",
- "integrity": "sha1-/hxJdT3z+Y7bIoWl5IXhH/p/Lkw=",
+ "integrity": "sha512-P6U5UOvDeidUJ8ebHVDIoXzI7gMlQ1OF/id6oUvp8cnZvOXMt1n8nYl74Ey9YMn0uVQtxmCtjPQawpsssBWtGg==",
"dev": true,
"requires": {
"JSONStream": "^1.0.4",
@@ -1952,16 +2007,22 @@
}
}
},
+ "damerau-levenshtein": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.5.tgz",
+ "integrity": "sha512-CBCRqFnpu715iPmw1KrdOrzRqbdFwQTwAWyyyYS42+iAgHCuXZ+/TdMgQkUENPomxEz9z1BEzuQU2Xw0kUuAgA==",
+ "dev": true
+ },
"date-fns": {
"version": "1.30.1",
"resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz",
- "integrity": "sha1-LnG/CxGRU9u0zE6I2epaz7UNwFw=",
+ "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==",
"dev": true
},
"dateformat": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz",
- "integrity": "sha1-puN0maTZqc+F71hyBE1ikByYia4=",
+ "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==",
"dev": true
},
"debug": {
@@ -2011,7 +2072,7 @@
"deep-extend": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
- "integrity": "sha1-xPp8lUBKF6nD6Mp+FTcxK3NjMKw=",
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
"dev": true
},
"deep-is": {
@@ -2026,6 +2087,15 @@
"integrity": "sha512-YZ1rOP5+kHor4hMAH+HRQnBQHg+wvS1un1hAOuIcxcBy0hzcUf6Jg2a1w65kpoOUnurOfZbERwjI1TfZxNjcww==",
"dev": true
},
+ "define-properties": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
+ "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
+ "dev": true,
+ "requires": {
+ "object-keys": "^1.0.12"
+ }
+ },
"define-property": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
@@ -2101,7 +2171,7 @@
"diagnostics": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/diagnostics/-/diagnostics-1.1.1.tgz",
- "integrity": "sha1-yrasM99wydmnJ0kK5DrJladpsio=",
+ "integrity": "sha512-8wn1PmdunLJ9Tqbx+Fx/ZEuHfJf4NKSN2ZBj7SJC/OWRWha843+WsTjqMe1B5E3p28jqBlp+mJ2fPVxPyNgYKQ==",
"requires": {
"colorspace": "1.1.x",
"enabled": "1.0.x",
@@ -2134,7 +2204,7 @@
"doctrine": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz",
- "integrity": "sha1-rd6+rXKmV023g2OdyHoSF3OXOWE=",
+ "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==",
"dev": true,
"requires": {
"esutils": "^2.0.2"
@@ -2217,7 +2287,7 @@
"env-variable": {
"version": "0.0.5",
"resolved": "https://registry.npmjs.org/env-variable/-/env-variable-0.0.5.tgz",
- "integrity": "sha1-kT3YML7xHpagOcA41BMGBOujf4g="
+ "integrity": "sha512-zoB603vQReOFvTg5xMl9I1P2PnHsHQQKTEowsKKD7nseUfJq6UWzK+4YtlWUO1nhiQUxe6XMkk+JleSZD1NZFA=="
},
"errlop": {
"version": "1.1.1",
@@ -2253,6 +2323,31 @@
}
}
},
+ "es-abstract": {
+ "version": "1.13.0",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz",
+ "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==",
+ "dev": true,
+ "requires": {
+ "es-to-primitive": "^1.2.0",
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3",
+ "is-callable": "^1.1.4",
+ "is-regex": "^1.0.4",
+ "object-keys": "^1.0.12"
+ }
+ },
+ "es-to-primitive": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz",
+ "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==",
+ "dev": true,
+ "requires": {
+ "is-callable": "^1.1.4",
+ "is-date-object": "^1.0.1",
+ "is-symbol": "^1.0.2"
+ }
+ },
"es6-promise": {
"version": "4.2.8",
"resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz",
@@ -2311,9 +2406,9 @@
}
},
"eslint": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.1.0.tgz",
- "integrity": "sha512-QhrbdRD7ofuV09IuE2ySWBz0FyXCq0rriLTZXZqaWSI79CVtHVRdkFuFTViiqzZhkCgfOh9USpriuGN2gIpZDQ==",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-6.0.1.tgz",
+ "integrity": "sha512-DyQRaMmORQ+JsWShYsSg4OPTjY56u1nCjAmICrE8vLWqyLKxhFXOthwMj1SA8xwfrv0CofLNVnqbfyhwCkaO0w==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.0.0",
@@ -2322,7 +2417,7 @@
"cross-spawn": "^6.0.5",
"debug": "^4.0.1",
"doctrine": "^3.0.0",
- "eslint-scope": "^5.0.0",
+ "eslint-scope": "^4.0.3",
"eslint-utils": "^1.3.1",
"eslint-visitor-keys": "^1.0.0",
"espree": "^6.0.0",
@@ -2330,37 +2425,30 @@
"esutils": "^2.0.2",
"file-entry-cache": "^5.0.1",
"functional-red-black-tree": "^1.0.1",
- "glob-parent": "^5.0.0",
+ "glob-parent": "^3.1.0",
"globals": "^11.7.0",
"ignore": "^4.0.6",
"import-fresh": "^3.0.0",
"imurmurhash": "^0.1.4",
- "inquirer": "^6.4.1",
+ "inquirer": "^6.2.2",
"is-glob": "^4.0.0",
"js-yaml": "^3.13.1",
"json-stable-stringify-without-jsonify": "^1.0.1",
"levn": "^0.3.0",
- "lodash": "^4.17.14",
+ "lodash": "^4.17.11",
"minimatch": "^3.0.4",
"mkdirp": "^0.5.1",
"natural-compare": "^1.4.0",
"optionator": "^0.8.2",
"progress": "^2.0.0",
"regexpp": "^2.0.1",
- "semver": "^6.1.2",
- "strip-ansi": "^5.2.0",
- "strip-json-comments": "^3.0.1",
+ "semver": "^5.5.1",
+ "strip-ansi": "^4.0.0",
+ "strip-json-comments": "^2.0.1",
"table": "^5.2.3",
- "text-table": "^0.2.0",
- "v8-compile-cache": "^2.0.3"
+ "text-table": "^0.2.0"
},
"dependencies": {
- "ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
- "dev": true
- },
"debug": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
@@ -2371,21 +2459,22 @@
}
},
"glob-parent": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.0.0.tgz",
- "integrity": "sha512-Z2RwiujPRGluePM6j699ktJYxmPpJKCfpGA13jz2hmFZC7gKetzrWvg5KN3+OsIFmydGyZ1AVwERCq1w/ZZwRg==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+ "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
"dev": true,
"requires": {
- "is-glob": "^4.0.1"
+ "is-glob": "^3.1.0",
+ "path-dirname": "^1.0.0"
},
"dependencies": {
"is-glob": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
- "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+ "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
"dev": true,
"requires": {
- "is-extglob": "^2.1.1"
+ "is-extglob": "^2.1.0"
}
}
}
@@ -2400,45 +2489,236 @@
"esprima": "^4.0.0"
}
},
- "lodash": {
- "version": "4.17.15",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
- "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
- "dev": true
- },
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
+ }
+ }
+ },
+ "eslint-config-airbnb": {
+ "version": "17.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-config-airbnb/-/eslint-config-airbnb-17.1.1.tgz",
+ "integrity": "sha512-xCu//8a/aWqagKljt+1/qAM62BYZeNq04HmdevG5yUGWpja0I/xhqd6GdLRch5oetEGFiJAnvtGuTEAese53Qg==",
+ "dev": true,
+ "requires": {
+ "eslint-config-airbnb-base": "^13.2.0",
+ "object.assign": "^4.1.0",
+ "object.entries": "^1.1.0"
+ }
+ },
+ "eslint-config-airbnb-base": {
+ "version": "13.2.0",
+ "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-13.2.0.tgz",
+ "integrity": "sha512-1mg/7eoB4AUeB0X1c/ho4vb2gYkNH8Trr/EgCT/aGmKhhG+F6vF5s8+iRBlWAzFIAphxIdp3YfEKgEl0f9Xg+w==",
+ "dev": true,
+ "requires": {
+ "confusing-browser-globals": "^1.0.5",
+ "object.assign": "^4.1.0",
+ "object.entries": "^1.1.0"
+ }
+ },
+ "eslint-import-resolver-node": {
+ "version": "0.3.2",
+ "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz",
+ "integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==",
+ "dev": true,
+ "requires": {
+ "debug": "^2.6.9",
+ "resolve": "^1.5.0"
+ },
+ "dependencies": {
+ "resolve": {
+ "version": "1.12.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz",
+ "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==",
+ "dev": true,
+ "requires": {
+ "path-parse": "^1.0.6"
+ }
+ }
+ }
+ },
+ "eslint-module-utils": {
+ "version": "2.4.1",
+ "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.4.1.tgz",
+ "integrity": "sha512-H6DOj+ejw7Tesdgbfs4jeS4YMFrT8uI8xwd1gtQqXssaR0EQ26L+2O/w6wkYFy2MymON0fTwHmXBvvfLNZVZEw==",
+ "dev": true,
+ "requires": {
+ "debug": "^2.6.8",
+ "pkg-dir": "^2.0.0"
+ }
+ },
+ "eslint-plugin-header": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-header/-/eslint-plugin-header-3.0.0.tgz",
+ "integrity": "sha512-OIu2ciVW8jK4Ove4JHm1I7X0C98PZuLCyCsoUhAm2HpyGS+zr34qLM6iV06unnDvssvvEh5BkOfaLRF+N7cGoQ==",
+ "dev": true
+ },
+ "eslint-plugin-import": {
+ "version": "2.18.0",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.18.0.tgz",
+ "integrity": "sha512-PZpAEC4gj/6DEMMoU2Df01C5c50r7zdGIN52Yfi7CvvWaYssG7Jt5R9nFG5gmqodxNOz9vQS87xk6Izdtpdrig==",
+ "dev": true,
+ "requires": {
+ "array-includes": "^3.0.3",
+ "contains-path": "^0.1.0",
+ "debug": "^2.6.9",
+ "doctrine": "1.5.0",
+ "eslint-import-resolver-node": "^0.3.2",
+ "eslint-module-utils": "^2.4.0",
+ "has": "^1.0.3",
+ "lodash": "^4.17.11",
+ "minimatch": "^3.0.4",
+ "read-pkg-up": "^2.0.0",
+ "resolve": "^1.11.0"
+ },
+ "dependencies": {
+ "doctrine": {
+ "version": "1.5.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
+ "integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2",
+ "isarray": "^1.0.0"
+ }
},
- "semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "load-json-file": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
+ "integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
+ "dev": true,
+ "requires": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^2.2.0",
+ "pify": "^2.0.0",
+ "strip-bom": "^3.0.0"
+ }
+ },
+ "parse-json": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
+ "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
+ "dev": true,
+ "requires": {
+ "error-ex": "^1.2.0"
+ }
+ },
+ "path-type": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
+ "integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
+ "dev": true,
+ "requires": {
+ "pify": "^2.0.0"
+ }
+ },
+ "pify": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
+ "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
"dev": true
},
- "strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "read-pkg": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
+ "integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
"dev": true,
"requires": {
- "ansi-regex": "^4.1.0"
+ "load-json-file": "^2.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^2.0.0"
}
},
- "strip-json-comments": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.0.1.tgz",
- "integrity": "sha512-VTyMAUfdm047mwKl+u79WIdrZxtFtn+nBxHeb844XBQ9uMNTuTHdx2hc5RiAJYqwTj3wc/xe5HLSdJSkJ+WfZw==",
+ "read-pkg-up": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
+ "integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
+ "dev": true,
+ "requires": {
+ "find-up": "^2.0.0",
+ "read-pkg": "^2.0.0"
+ }
+ },
+ "resolve": {
+ "version": "1.12.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz",
+ "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==",
+ "dev": true,
+ "requires": {
+ "path-parse": "^1.0.6"
+ }
+ }
+ }
+ },
+ "eslint-plugin-jsx-a11y": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.2.3.tgz",
+ "integrity": "sha512-CawzfGt9w83tyuVekn0GDPU9ytYtxyxyFZ3aSWROmnRRFQFT2BiPJd7jvRdzNDi6oLWaS2asMeYSNMjWTV4eNg==",
+ "dev": true,
+ "requires": {
+ "@babel/runtime": "^7.4.5",
+ "aria-query": "^3.0.0",
+ "array-includes": "^3.0.3",
+ "ast-types-flow": "^0.0.7",
+ "axobject-query": "^2.0.2",
+ "damerau-levenshtein": "^1.0.4",
+ "emoji-regex": "^7.0.2",
+ "has": "^1.0.3",
+ "jsx-ast-utils": "^2.2.1"
+ },
+ "dependencies": {
+ "emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
"dev": true
}
}
},
+ "eslint-plugin-react": {
+ "version": "7.14.2",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.14.2.tgz",
+ "integrity": "sha512-jZdnKe3ip7FQOdjxks9XPN0pjUKZYq48OggNMd16Sk+8VXx6JOvXmlElxROCgp7tiUsTsze3jd78s/9AFJP2mA==",
+ "dev": true,
+ "requires": {
+ "array-includes": "^3.0.3",
+ "doctrine": "^2.1.0",
+ "has": "^1.0.3",
+ "jsx-ast-utils": "^2.1.0",
+ "object.entries": "^1.1.0",
+ "object.fromentries": "^2.0.0",
+ "object.values": "^1.1.0",
+ "prop-types": "^15.7.2",
+ "resolve": "^1.10.1"
+ },
+ "dependencies": {
+ "doctrine": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
+ "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
+ "dev": true,
+ "requires": {
+ "esutils": "^2.0.2"
+ }
+ },
+ "resolve": {
+ "version": "1.12.0",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz",
+ "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==",
+ "dev": true,
+ "requires": {
+ "path-parse": "^1.0.6"
+ }
+ }
+ }
+ },
"eslint-scope": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz",
- "integrity": "sha512-oYrhJW7S0bxAFDvWqzvMPRm6pcgcnWc4QnofCAqRTRfQC0JcwenzGglTtsLyIuuWFfkqDG9vz67cnttSd53djw==",
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz",
+ "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==",
"dev": true,
"requires": {
"esrecurse": "^4.1.0",
@@ -2457,7 +2737,7 @@
"eslint-visitor-keys": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.0.0.tgz",
- "integrity": "sha1-PzGA+y4pEBdxastMnW1bXDSmqB0=",
+ "integrity": "sha512-qzm/XxIbxm/FHyH341ZrbnMUpe+5Bocte9xkmFMzPMjRaZMcXww+MpBptFvtU+79L362nqiLhekCxCxDPaUMBQ==",
"dev": true
},
"espree": {
@@ -2479,7 +2759,7 @@
"esquery": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/esquery/-/esquery-1.0.1.tgz",
- "integrity": "sha1-QGxRZYsfWZGl+bYrHcJbAOPlxwg=",
+ "integrity": "sha512-SmiyZ5zIWH9VM+SRUReLS5Q8a7GxtRdxEBVZpm98rJM7Sb+A9DVCndXfkeFUd3byderg+EbDkfnevfCwynWaNA==",
"dev": true,
"requires": {
"estraverse": "^4.0.0"
@@ -2488,7 +2768,7 @@
"esrecurse": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
- "integrity": "sha1-AHo7n9vCs7uH5IeeoZyS/b05Qs8=",
+ "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
"dev": true,
"requires": {
"estraverse": "^4.1.0"
@@ -2779,7 +3059,7 @@
"fast-safe-stringify": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.0.6.tgz",
- "integrity": "sha1-BLJhBsxWaB9RoETPwNds8ACKwsI="
+ "integrity": "sha512-q8BZ89jjc+mz08rSxROs8VsrBBcn1SIw1kq9NjolL509tkABRk9io01RAjSaEv1Xb2uFLt8VtRiZbGp5H8iDtg=="
},
"fastq": {
"version": "1.6.0",
@@ -2793,7 +3073,7 @@
"fecha": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/fecha/-/fecha-2.3.3.tgz",
- "integrity": "sha1-lI50FX3xoy/RsSw6PDzctuydls0="
+ "integrity": "sha512-lUGBnIamTAwk4znq5BcqsDaxSmZ9nDVJaij6NvRt/Tg4R69gERA+otPKbS86ROw9nxVMw2/mp1fnaiWqbs6Sdg=="
},
"figures": {
"version": "2.0.0",
@@ -2807,7 +3087,7 @@
"file-entry-cache": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz",
- "integrity": "sha1-yg9u+m3T1WEzP7FFFQZcL6/fQ5w=",
+ "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==",
"dev": true,
"requires": {
"flat-cache": "^2.0.1"
@@ -2918,7 +3198,7 @@
"flat-cache": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz",
- "integrity": "sha1-XSltbwS9pEpGMKMBQTvbwuwIXsA=",
+ "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==",
"dev": true,
"requires": {
"flatted": "^2.0.0",
@@ -2987,6 +3267,12 @@
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
"dev": true
},
+ "function-bind": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+ "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+ "dev": true
+ },
"functional-red-black-tree": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz",
@@ -3002,7 +3288,7 @@
"get-own-enumerable-property-symbols": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.0.tgz",
- "integrity": "sha1-uHe0mlwWrvrDZV8u0upbaE340gM=",
+ "integrity": "sha512-CIJYJC4GGF06TakLg8z4GQKvDsx9EMspVxOYih7LerEL/WosUnFIww45CGfxfeKHqlg3twgUrYRT1O3WQqjGCg==",
"dev": true
},
"get-stream": {
@@ -3204,6 +3490,15 @@
}
}
},
+ "has": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+ "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "dev": true,
+ "requires": {
+ "function-bind": "^1.1.1"
+ }
+ },
"has-ansi": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
@@ -3226,6 +3521,12 @@
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0="
},
+ "has-symbols": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz",
+ "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=",
+ "dev": true
+ },
"has-value": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
@@ -3285,7 +3586,7 @@
"http-proxy-agent": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz",
- "integrity": "sha1-5IIb7vWyFCogJr1zkm/lN2McVAU=",
+ "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==",
"dev": true,
"requires": {
"agent-base": "4",
@@ -3295,7 +3596,7 @@
"debug": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
- "integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=",
+ "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
"dev": true,
"requires": {
"ms": "2.0.0"
@@ -3355,7 +3656,7 @@
"ignore": {
"version": "4.0.6",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz",
- "integrity": "sha1-dQ49tYYgh7RzfrrIIH/9HvJ7Jfw=",
+ "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
"dev": true
},
"ignorefs": {
@@ -3456,12 +3757,6 @@
"integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
"dev": true
},
- "lodash": {
- "version": "4.17.15",
- "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
- "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
- "dev": true
- },
"strip-ansi": {
"version": "5.2.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
@@ -3512,7 +3807,7 @@
"is-arrayish": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
- "integrity": "sha1-RXSirlb3qyBolvtDHq7tBm/fjwM="
+ "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ=="
},
"is-buffer": {
"version": "1.1.6",
@@ -3520,6 +3815,12 @@
"integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=",
"dev": true
},
+ "is-callable": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
+ "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==",
+ "dev": true
+ },
"is-data-descriptor": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
@@ -3540,6 +3841,12 @@
}
}
},
+ "is-date-object": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
+ "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=",
+ "dev": true
+ },
"is-descriptor": {
"version": "0.1.6",
"resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
@@ -3620,7 +3927,7 @@
"is-observable": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz",
- "integrity": "sha1-s+mGyPRN6VCGfKtUA/WjRlAFl14=",
+ "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==",
"dev": true,
"requires": {
"symbol-observable": "^1.1.0"
@@ -3629,13 +3936,13 @@
"is-path-cwd": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz",
- "integrity": "sha1-Z9Q7gmZKe1GR/ZEZEn6zAASKn9s=",
+ "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==",
"dev": true
},
"is-path-in-cwd": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz",
- "integrity": "sha1-v+Lcomxp85cmWkAJljYCk1oFOss=",
+ "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==",
"dev": true,
"requires": {
"is-path-inside": "^2.1.0"
@@ -3644,7 +3951,7 @@
"is-path-inside": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz",
- "integrity": "sha1-fJgQWH1lmkDSe8201WFuqwWUlLI=",
+ "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==",
"dev": true,
"requires": {
"path-is-inside": "^1.0.2"
@@ -3671,6 +3978,15 @@
"integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
"dev": true
},
+ "is-regex": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
+ "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
+ "dev": true,
+ "requires": {
+ "has": "^1.0.1"
+ }
+ },
"is-regexp": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz",
@@ -3688,6 +4004,15 @@
"integrity": "sha1-ilkRfZMt4d4A8kX83TnOQ/HpOaY=",
"dev": true
},
+ "is-symbol": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz",
+ "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==",
+ "dev": true,
+ "requires": {
+ "has-symbols": "^1.0.0"
+ }
+ },
"is-text-path": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz",
@@ -3860,7 +4185,7 @@
"js-tokens": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
- "integrity": "sha1-GSA/tZmR35jjoocFDUZHzerzJJk=",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
"dev": true
},
"js-yaml": {
@@ -3917,6 +4242,16 @@
"integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=",
"dev": true
},
+ "jsx-ast-utils": {
+ "version": "2.2.1",
+ "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-2.2.1.tgz",
+ "integrity": "sha512-v3FxCcAf20DayI+uxnCuw795+oOIkVu6EnJ1+kSzhqqTZHNkTZ7B66ZgLp4oLJ/gbA64cI0B7WRoHZMSRdyVRQ==",
+ "dev": true,
+ "requires": {
+ "array-includes": "^3.0.3",
+ "object.assign": "^4.1.0"
+ }
+ },
"kind-of": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
@@ -3926,7 +4261,7 @@
"kuler": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/kuler/-/kuler-1.0.1.tgz",
- "integrity": "sha1-73x4TzbJ+24W3TFQ0VJneysCKKY=",
+ "integrity": "sha512-J9nVUucG1p/skKul6DU3PUZrhs0LPulNaeUOox0IyXDi8S4CztTHs1gQphhuZmzXG7VOQSf6NJfKuzteQLv9gQ==",
"requires": {
"colornames": "^1.1.1"
}
@@ -4105,7 +4440,7 @@
"listr": {
"version": "0.14.3",
"resolved": "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz",
- "integrity": "sha1-L+qQlgTkNL5GTFC926DUlpKPpYY=",
+ "integrity": "sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==",
"dev": true,
"requires": {
"@samverschueren/stream-to-observable": "^0.3.0",
@@ -4128,7 +4463,7 @@
"listr-update-renderer": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz",
- "integrity": "sha1-Tqg2hUinuK7LfgbYyVy0WuLt5qI=",
+ "integrity": "sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==",
"dev": true,
"requires": {
"chalk": "^1.1.3",
@@ -4205,7 +4540,7 @@
"listr-verbose-renderer": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz",
- "integrity": "sha1-8RMhZ1NepMEmEQK58o2sfLoeA9s=",
+ "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==",
"dev": true,
"requires": {
"chalk": "^2.4.1",
@@ -4332,7 +4667,7 @@
"log-symbols": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz",
- "integrity": "sha1-86CFFqXeqJMzan3uFNGKHP2rd8Q=",
+ "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==",
"dev": true,
"requires": {
"chalk": "^2.4.2"
@@ -4374,6 +4709,15 @@
"integrity": "sha1-eB4YMpaqlPbU2RbcM10NF676I/g=",
"dev": true
},
+ "loose-envify": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+ "dev": true,
+ "requires": {
+ "js-tokens": "^3.0.0 || ^4.0.0"
+ }
+ },
"loud-rejection": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz",
@@ -4473,7 +4817,7 @@
"meow": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz",
- "integrity": "sha1-1IWY9vSxRy81v2MXqVlFrONH+XU=",
+ "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==",
"dev": true,
"requires": {
"camelcase-keys": "^4.0.0",
@@ -4514,7 +4858,7 @@
"merge-stream": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
- "integrity": "sha1-UoI2KaFN0AyXcPtq1H3GMQ8sH2A=",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
"dev": true
},
"merge2": {
@@ -4603,7 +4947,7 @@
"minimist-options": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz",
- "integrity": "sha1-+6TIGRM54T7PTWG+sD8HAQPz2VQ=",
+ "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==",
"dev": true,
"requires": {
"arrify": "^1.0.1",
@@ -4642,7 +4986,7 @@
"modify-values": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz",
- "integrity": "sha1-s5OfpgVUZHTj4+PGPWS9Q7TuYCI=",
+ "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==",
"dev": true
},
"ms": {
@@ -4707,7 +5051,7 @@
"node-emoji": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.10.0.tgz",
- "integrity": "sha1-iIar0l2ce7YYAqZYUj0fjSqJsto=",
+ "integrity": "sha512-Yt3384If5H6BYGVHiHwTL+99OzJKHhgp82S8/dktEK73T26BazdgZ4JZh92xSVtGNJvz9UbXdNAc5hcrXV42vw==",
"dev": true,
"requires": {
"lodash.toarray": "^4.4.0"
@@ -4730,7 +5074,7 @@
"normalize-package-data": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
- "integrity": "sha1-5m2xg4sgDB38IzIl0SyzZSDiNKg=",
+ "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
"dev": true,
"requires": {
"hosted-git-info": "^2.1.4",
@@ -8289,6 +8633,12 @@
}
}
},
+ "object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true
+ },
"object-visit": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
@@ -8298,6 +8648,42 @@
"isobject": "^3.0.0"
}
},
+ "object.assign": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz",
+ "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.2",
+ "function-bind": "^1.1.1",
+ "has-symbols": "^1.0.0",
+ "object-keys": "^1.0.11"
+ }
+ },
+ "object.entries": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.0.tgz",
+ "integrity": "sha512-l+H6EQ8qzGRxbkHOd5I/aHRhHDKoQXQ8g0BYt4uSweQU1/J6dZUOyWh9a2Vky35YCKjzmgxOzta2hH6kf9HuXA==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.12.0",
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3"
+ }
+ },
+ "object.fromentries": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.0.tgz",
+ "integrity": "sha512-9iLiI6H083uiqUuvzyY6qrlmc/Gz8hLQFOcb/Ri/0xXFkSNS3ctV+CbE6yM2+AnkYfOB3dGjdzC0wrMLIhQICA==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.2",
+ "es-abstract": "^1.11.0",
+ "function-bind": "^1.1.1",
+ "has": "^1.0.1"
+ }
+ },
"object.pick": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
@@ -8307,10 +8693,22 @@
"isobject": "^3.0.1"
}
},
+ "object.values": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.0.tgz",
+ "integrity": "sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==",
+ "dev": true,
+ "requires": {
+ "define-properties": "^1.1.3",
+ "es-abstract": "^1.12.0",
+ "function-bind": "^1.1.1",
+ "has": "^1.0.3"
+ }
+ },
"octokit-pagination-methods": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz",
- "integrity": "sha1-z0cu3J1VEFX573P25CtNu0yAvqQ=",
+ "integrity": "sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ==",
"dev": true
},
"once": {
@@ -8444,7 +8842,7 @@
"p-limit": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
- "integrity": "sha1-uGvV8MJWkJEcdZD8v8IBDVSzzLg=",
+ "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
"dev": true,
"requires": {
"p-try": "^1.0.0"
@@ -8515,7 +8913,7 @@
"parse-github-url": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/parse-github-url/-/parse-github-url-1.0.2.tgz",
- "integrity": "sha1-JC07ZcvN2hS7UEOeMkKs9pcds5U=",
+ "integrity": "sha512-kgBf6avCbO3Cn6+RnzRGLkUsv4ZVqv/VfAYkRsyBcgkshNvVBkRn1FEZcW0Jb+npXQWm2vHPnnOqFteZxRRGNw==",
"dev": true
},
"parse-json": {
@@ -8539,6 +8937,12 @@
"integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
"dev": true
},
+ "path-dirname": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
+ "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
+ "dev": true
+ },
"path-exists": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
@@ -8565,7 +8969,7 @@
"path-parse": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
- "integrity": "sha1-1i27VnlAXXLEc37FhgDp3c8G0kw=",
+ "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
"dev": true
},
"path-type": {
@@ -8598,6 +9002,15 @@
"load-json-file": "^4.0.0"
}
},
+ "pkg-dir": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz",
+ "integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
+ "dev": true,
+ "requires": {
+ "find-up": "^2.1.0"
+ }
+ },
"please-upgrade-node": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz",
@@ -8632,9 +9045,20 @@
"progress": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
- "integrity": "sha1-foz42PW48jnBvGi+tOt4Vn1XLvg=",
+ "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
"dev": true
},
+ "prop-types": {
+ "version": "15.7.2",
+ "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz",
+ "integrity": "sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==",
+ "dev": true,
+ "requires": {
+ "loose-envify": "^1.4.0",
+ "object-assign": "^4.1.1",
+ "react-is": "^16.8.1"
+ }
+ },
"pump": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
@@ -8665,7 +9089,7 @@
"rc": {
"version": "1.2.8",
"resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
- "integrity": "sha1-zZJL9SAKB1uDwYjNa54hG3/A0+0=",
+ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
"dev": true,
"requires": {
"deep-extend": "^0.6.0",
@@ -8682,6 +9106,12 @@
}
}
},
+ "react-is": {
+ "version": "16.9.0",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.9.0.tgz",
+ "integrity": "sha512-tJBzzzIgnnRfEm046qRcURvwQnZVXmuCbscxUO5RWrGTXpon2d4c8mI0D8WE6ydVIm29JiLB6+RslkIvym9Rjw==",
+ "dev": true
+ },
"read-pkg": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
@@ -8819,6 +9249,12 @@
"esprima": "~4.0.0"
}
},
+ "regenerator-runtime": {
+ "version": "0.13.3",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz",
+ "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw==",
+ "dev": true
+ },
"regex-not": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
@@ -8832,7 +9268,7 @@
"regexpp": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz",
- "integrity": "sha1-jRnTHPYySCtYkEn4KB+T28uk0H8=",
+ "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==",
"dev": true
},
"registry-auth-token": {
@@ -9126,7 +9562,7 @@
"semver-regex": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-2.0.0.tgz",
- "integrity": "sha1-qTwsWERTmncCMzeRB7OMe0rJ0zg=",
+ "integrity": "sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw==",
"dev": true
},
"set-blocking": {
@@ -9193,7 +9629,7 @@
"signale": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/signale/-/signale-1.4.0.tgz",
- "integrity": "sha1-xL5YMC+wJirAD8PYhqfBE3WQQvE=",
+ "integrity": "sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w==",
"dev": true,
"requires": {
"chalk": "^2.3.2",
@@ -9218,7 +9654,7 @@
"slice-ansi": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
- "integrity": "sha1-ys12k0YaY3pXiNkqfdT7oGjoFjY=",
+ "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==",
"dev": true,
"requires": {
"ansi-styles": "^3.2.0",
@@ -9373,7 +9809,7 @@
"spdx-correct": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz",
- "integrity": "sha1-+4PlBERSaPFUsHTiGMh8ADzTHfQ=",
+ "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==",
"dev": true,
"requires": {
"spdx-expression-parse": "^3.0.0",
@@ -9383,13 +9819,13 @@
"spdx-exceptions": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz",
- "integrity": "sha1-LqRQrudPKom/uUUZwH/Nb0EyKXc=",
+ "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==",
"dev": true
},
"spdx-expression-parse": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz",
- "integrity": "sha1-meEZt6XaAOBUkcn6M4t5BII7QdA=",
+ "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==",
"dev": true,
"requires": {
"spdx-exceptions": "^2.1.0",
@@ -9405,7 +9841,7 @@
"split": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz",
- "integrity": "sha1-YFvZvjA6pZ+zX5Ip++oN3snqB9k=",
+ "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==",
"dev": true,
"requires": {
"through": "2"
@@ -9423,7 +9859,7 @@
"split2": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz",
- "integrity": "sha1-GGsldbz4PoW30YRldWI47k7kJJM=",
+ "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==",
"dev": true,
"requires": {
"through2": "^2.0.2"
@@ -9473,7 +9909,7 @@
"string-argv": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.0.tgz",
- "integrity": "sha1-Dqmeclf+pel6G/zfwZzxLWjm7Go=",
+ "integrity": "sha512-NGZHq3nkSXVtGZXTBjFru3MNfoZyIzN25T7BmvdgnSC0LCJczAGLLMQLyjywSIaAoqSemgLzBRHOsnrHbt60+Q==",
"dev": true
},
"string-width": {
@@ -9497,7 +9933,7 @@
"stringify-object": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz",
- "integrity": "sha1-cDBlrvyhkwDTzoivT1s5VtdVZik=",
+ "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==",
"dev": true,
"requires": {
"get-own-enumerable-property-symbols": "^3.0.0",
@@ -9529,7 +9965,7 @@
"strip-final-newline": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
- "integrity": "sha1-ibhS+y/L6Tb29LMYevsKEsGrWK0=",
+ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
"dev": true
},
"strip-indent": {
@@ -9555,7 +9991,7 @@
"supports-hyperlinks": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-1.0.1.tgz",
- "integrity": "sha1-cdrt82zBBgrFEAw1G7PaSMKcDvc=",
+ "integrity": "sha512-HHi5kVSefKaJkGYXbDuKbUGRVxqnWGn3J2e39CYcNJEfWciGq2zYtOhXLTlvrOZW1QU7VX67w7fMmWafHX9Pfw==",
"dev": true,
"requires": {
"has-flag": "^2.0.0",
@@ -9573,13 +10009,13 @@
"symbol-observable": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz",
- "integrity": "sha1-wiaIrtTqs83C3+rLtWFmBWCgCAQ=",
+ "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==",
"dev": true
},
"table": {
- "version": "5.4.4",
- "resolved": "https://registry.npmjs.org/table/-/table-5.4.4.tgz",
- "integrity": "sha512-IIfEAUx5QlODLblLrGTTLJA7Tk0iLSGBvgY8essPRVNGHAzThujww1YqHLs6h3HfTg55h++RzLHH5Xw/rfv+mg==",
+ "version": "5.4.5",
+ "resolved": "https://registry.npmjs.org/table/-/table-5.4.5.tgz",
+ "integrity": "sha512-oGa2Hl7CQjfoaogtrOHEJroOcYILTx7BZWLGsJIlzoWmB2zmguhNfPJZsWPKYek/MgCxfco54gEi31d1uN2hFA==",
"dev": true,
"requires": {
"ajv": "^6.10.2",
@@ -9652,13 +10088,13 @@
"text-extensions": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz",
- "integrity": "sha1-GFPkX+45yUXOb2w2stZZtaq8KiY=",
+ "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==",
"dev": true
},
"text-hex": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz",
- "integrity": "sha1-adycGxdEbueakr9biEu0uRJ1BvU="
+ "integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg=="
},
"text-table": {
"version": "0.2.0",
@@ -9675,7 +10111,7 @@
"through2": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
- "integrity": "sha1-AcHjnrMdB8t9A6lqcIIyYLIxMs0=",
+ "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
"dev": true,
"requires": {
"readable-stream": "~2.3.6",
@@ -9754,7 +10190,7 @@
"triple-beam": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.3.0.tgz",
- "integrity": "sha1-pZUhTHKY24M57u7gg+TRC9jLjdk="
+ "integrity": "sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw=="
},
"tslib": {
"version": "1.9.3",
@@ -9906,12 +10342,6 @@
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
"integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
},
- "v8-compile-cache": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.0.3.tgz",
- "integrity": "sha512-CNmdbwQMBjwr9Gsmohvm0pbL954tJrNzf6gWL3K+QMQf00PF7ERGrEiLgjuU3mKreLC2MeGhUsNV9ybTbLgd3w==",
- "dev": true
- },
"valid-url": {
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/valid-url/-/valid-url-1.0.9.tgz",
@@ -9920,7 +10350,7 @@
"validate-npm-package-license": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
- "integrity": "sha1-/JH2uce6FchX9MssXe/uw51PQQo=",
+ "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
"dev": true,
"requires": {
"spdx-correct": "^3.0.0",
@@ -10039,7 +10469,7 @@
"write": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz",
- "integrity": "sha1-CADhRSO5I6OH5BUSPIZWFqrg9cM=",
+ "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==",
"dev": true,
"requires": {
"mkdirp": "^0.5.1"
@@ -10064,7 +10494,7 @@
"y18n": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
- "integrity": "sha1-le+U+F7MgdAHwmThkKEg8KPIVms=",
+ "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
"dev": true
},
"yallist": {
diff --git a/package.json b/package.json
index 01f698b..eeb3019 100644
--- a/package.json
+++ b/package.json
@@ -38,7 +38,12 @@
"@semantic-release/github": "^5.4.2",
"commitizen": "^4.0.3",
"cz-conventional-changelog": "^3.0.2",
- "eslint": "^6.1.0",
+ "eslint": "6.0.1",
+ "eslint-config-airbnb": "17.1.1",
+ "eslint-plugin-header": "3.0.0",
+ "eslint-plugin-import": "2.18.0",
+ "eslint-plugin-jsx-a11y": "6.2.3",
+ "eslint-plugin-react": "7.14.2",
"ghooks": "^2.0.4",
"istanbul": "^0.4.5",
"jasmine": "~3.4.0",
diff --git a/spec/lib/header.spec.js b/spec/lib/header.spec.js
index 0fcd834..a7f38ce 100644
--- a/spec/lib/header.spec.js
+++ b/spec/lib/header.spec.js
@@ -1,19 +1,33 @@
-const { Header, headers } = require('../../lib/header');
+/*
+ * Copyright 2019 Adobe. All rights reserved.
+ * This file is licensed to you under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License. You may obtain a copy
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
+ * OF ANY KIND, either express or implied. See the License for the specific language
+ * governing permissions and limitations under the License.
+ */
+
+/* eslint-env jasmine */
+
const i18n = require('i18n');
-var path = require('path');
+const path = require('path');
+const { Header, headers } = require('../../lib/header');
-beforeEach(function() {
+beforeEach(() => {
jasmine.addMatchers(require('jasmine-diff')(jasmine, {
colors: true,
- inline: true
+ inline: true,
}));
- let i18nPath=path.resolve(path.join(__dirname, '../../lib/locales'));
+ const i18nPath = path.resolve(path.join(__dirname, '../../lib/locales'));
i18n.configure({
// setup some locales - other locales default to en silently
- locales:[ 'en' ],
+ locales: ['en'],
// where to store json files - defaults to './locales' relative to modules directory
directory: i18nPath,
- defaultLocale: 'en'
+ defaultLocale: 'en',
});
});
@@ -44,7 +58,7 @@ describe('Headers Integration Test', () => {
const schema = {
additionalProperties: true,
'meta:extensible': false,
- properties: { 'foo':'bar', 'bar': 'baz' }
+ properties: { foo: 'bar', bar: 'baz' },
};
const h = headers(schema, '/home/lars', '/home/lars/complex.schema.json');
@@ -59,7 +73,7 @@ describe('Headers Integration Test', () => {
const schema = {
additionalProperties: true,
'meta:extensible': false,
- properties: { 'foo':'bar', 'bar': 'baz' }
+ properties: { foo: 'bar', bar: 'baz' },
};
const h = headers(schema, '/home/lars', '/home/lars/some/deep/path/complex.schema.json');
@@ -69,5 +83,4 @@ describe('Headers Integration Test', () => {
| Can be instantiated | No | Experimental | No | Forbidden | Permitted | [some/deep/path/complex.schema.json](complex.schema.json) |`;
expect(h.render()).toEqual(result);
});
-
});
diff --git a/spec/lib/integrationTest.spec.js b/spec/lib/integrationTest.spec.js
index 1631b83..9b07850 100644
--- a/spec/lib/integrationTest.spec.js
+++ b/spec/lib/integrationTest.spec.js
@@ -1,20 +1,33 @@
+/*
+ * Copyright 2019 Adobe. All rights reserved.
+ * This file is licensed to you under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License. You may obtain a copy
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
+ * OF ANY KIND, either express or implied. See the License for the specific language
+ * governing permissions and limitations under the License.
+ */
+
+/* eslint-env jasmine */
+
const { spawn } = require('child_process');
const path = require('path');
const { readFileSync, readdirSync, statSync } = require('fs');
-beforeEach(function() {
+beforeEach(() => {
jasmine.DEFAULT_TIMEOUT_INTERVAL = 20000;
jasmine.addMatchers(
require('jasmine-diff')(jasmine, {
colors: true,
- inline: true
- })
+ inline: true,
+ }),
);
});
describe('Compare results', () => {
-
- it('Run jsonschema2md for custom file extension', done => {
+ it('Run jsonschema2md for custom file extension', (done) => {
const ls = spawn('node', [
'cli.js',
'-d',
@@ -24,17 +37,17 @@ describe('Compare results', () => {
'-x',
'examples/generated-schemas',
'-e',
- 'js'
+ 'js',
]);
- ls.on('close', code => {
+ ls.on('close', (code) => {
expect(code).toEqual(0);
done();
});
});
- it('Run jsonschema2md on example schemas', done => {
+ it('Run jsonschema2md on example schemas', (done) => {
const ls = spawn('node', [
'cli.js',
'-d',
@@ -51,16 +64,15 @@ describe('Compare results', () => {
'abstract.md',
'--link-status',
'status.md',
- '-v', '06'
+ '-v', '06',
]);
- ls.on('close', code => {
+ ls.on('close', (code) => {
expect(code).toEqual(0);
const files = readdirSync('./spec/examples').filter(item => !(/(^|\/)\.[^\/\.]/g).test(item));
expect(files.length).toEqual(23);
- //console.log(readFileSync(path.resolve('./examples/schemas/', 'definitions.schema.json')).toString());
- files.forEach(file => {
- if (statSync('./spec/examples/' + file).isFile()) {
+ files.forEach((file) => {
+ if (statSync(`./spec/examples/${file}`).isFile()) {
const expectedstr = readFileSync(path.resolve('./spec/examples/', file)).toString();
let actualstr = readFileSync(path.resolve('./examples/docs/', file)).toString();
actualstr=actualstr.replace(/\r\n/g, '\n');
diff --git a/spec/lib/readSchemaFile.spec.js b/spec/lib/readSchemaFile.spec.js
index 9f2f292..813e4ec 100644
--- a/spec/lib/readSchemaFile.spec.js
+++ b/spec/lib/readSchemaFile.spec.js
@@ -1,26 +1,33 @@
-/**
- * Copyright 2017 Adobe Systems Incorporated. All rights reserved.
+/*
+ * Copyright 2019 Adobe. All rights reserved.
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. You may obtain a copy
* of the License at http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
+ * OF ANY KIND, either express or implied. See the License for the specific language
+ * governing permissions and limitations under the License.
*/
-var Promise = require('bluebird');
-var fs = Promise.promisifyAll(require('fs'));
-var readSchemaFile = require('../../lib/readSchemaFile');
+/* eslint-env jasmine */
+
+const Promise = require('bluebird');
+const fs = Promise.promisifyAll(require('fs'));
+const readSchemaFile = require('../../lib/readSchemaFile');
describe('readSchemaFile module', () => {
- var fakePath = 'some/path';
+ const fakePath = 'some/path';
beforeEach(() => {
spyOn(fs, 'readFileAsync').and.returnValue(Promise.resolve('{"schema":"yes"}'));
});
describe('reading schema files without an $id key', () => {
- it('should return a schema path map with path to the file as a key, and object value with path and json schema', done => {
+ it('should return a schema path map with path to the file as a key, and object value with path and json schema', (done) => {
readSchemaFile({}, fakePath)
- .then(map => {
+ .then((map) => {
expect(map[fakePath]).toBeDefined();
expect(map[fakePath].filePath).toEqual(fakePath);
- expect(map[fakePath].jsonSchema).toEqual({ schema:'yes' });
+ expect(map[fakePath].jsonSchema).toEqual({ schema: 'yes' });
})
.catch(fail)
.done(done);
@@ -30,22 +37,22 @@ describe('readSchemaFile module', () => {
beforeEach(() => {
fs.readFileAsync.and.returnValue(Promise.resolve('{"$id":"allyourbase"}'));
});
- it('should return a schema path map with $id value as a key, and object value with path and json schema', done => {
+ it('should return a schema path map with $id value as a key, and object value with path and json schema', (done) => {
readSchemaFile({}, fakePath)
- .then(map => {
- expect(map['allyourbase']).toBeDefined();
- expect(map['allyourbase'].filePath).toEqual(fakePath);
- expect(map['allyourbase'].jsonSchema).toEqual({ $id:'allyourbase' });
+ .then((map) => {
+ expect(map.allyourbase).toBeDefined();
+ expect(map.allyourbase.filePath).toEqual(fakePath);
+ expect(map.allyourbase.jsonSchema).toEqual({ $id: 'allyourbase' });
})
.catch(fail)
.done(done);
});
- it('should not overwrite the value for an existing $id key in the schema path map', done => {
- readSchemaFile({ allyourbase:{} }, fakePath)
- .then(map => {
- expect(map['allyourbase']).toBeDefined();
- expect(map['allyourbase'].filePath).not.toBeDefined();
- expect(map['allyourbase'].jsonSchema).not.toBeDefined();
+ it('should not overwrite the value for an existing $id key in the schema path map', (done) => {
+ readSchemaFile({ allyourbase: {} }, fakePath)
+ .then((map) => {
+ expect(map.allyourbase).toBeDefined();
+ expect(map.allyourbase.filePath).not.toBeDefined();
+ expect(map.allyourbase.jsonSchema).not.toBeDefined();
})
.catch(fail)
.done(done);
diff --git a/spec/lib/schema.spec.js b/spec/lib/schema.spec.js
index 2d9e7b6..c05b17f 100644
--- a/spec/lib/schema.spec.js
+++ b/spec/lib/schema.spec.js
@@ -1,25 +1,32 @@
-/**
- * Copyright 2017 Adobe Systems Incorporated. All rights reserved.
+/*
+ * Copyright 2019 Adobe. All rights reserved.
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. You may obtain a copy
* of the License at http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
+ * OF ANY KIND, either express or implied. See the License for the specific language
+ * governing permissions and limitations under the License.
*/
-var Promise = require('bluebird');
-var fs = Promise.promisifyAll(require('fs'));
-var schema = require('../../lib/schema');
+/* eslint-env jasmine */
+
+const Promise = require('bluebird');
+const fs = Promise.promisifyAll(require('fs'));
+const schema = require('../../lib/schema');
describe('schema module', () => {
describe('getDescription method', () => {
beforeEach(() => {
spyOn(fs, 'readFileAsync');
});
- it('should read a description.md file based on provided file path and tack it onto a provided schema', done => {
- var fakeContents = 'IMPORTANT CONTENTS!';
+ it('should read a description.md file based on provided file path and tack it onto a provided schema', (done) => {
+ const fakeContents = 'IMPORTANT CONTENTS!';
fs.readFileAsync.and.returnValue(Promise.resolve(fakeContents));
- var skeem = {};
+ const skeem = {};
schema.getDescription('/some/path', skeem)
- .then(returnedSchema => {
+ .then((returnedSchema) => {
expect(returnedSchema.description).toEqual(fakeContents);
expect(skeem.description).toEqual(fakeContents);
}).catch(() => {
diff --git a/spec/lib/writeFiles.spec.js b/spec/lib/writeFiles.spec.js
index 900d956..509b07d 100644
--- a/spec/lib/writeFiles.spec.js
+++ b/spec/lib/writeFiles.spec.js
@@ -1,12 +1,19 @@
-/**
- * Copyright 2017 Adobe Systems Incorporated. All rights reserved.
+/*
+ * Copyright 2019 Adobe. All rights reserved.
* This file is licensed to you under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. You may obtain a copy
* of the License at http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software distributed under
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
+ * OF ANY KIND, either express or implied. See the License for the specific language
+ * governing permissions and limitations under the License.
*/
-var markdownWriter = require('../../lib/markdownWriter');
-var ejs = require('ejs');
+/* eslint-env jasmine */
+
+const ejs = require('ejs');
+const markdownWriter = require('../../lib/markdownWriter');
describe('writeFiles module', () => {
describe('generateMarkdown method', () => {
@@ -14,8 +21,8 @@ describe('writeFiles module', () => {
spyOn(ejs, 'renderFile');
});
it('should invoke ejs.renderFile with the topSchema ejs template', () => {
- markdownWriter('somefile.schema.json', { '$id': 'myschema', 'my':'schema' }, 'some/path');
- var renderArgs = ejs.renderFile.calls.argsFor(0);
+ markdownWriter('somefile.schema.json', { $id: 'myschema', my: 'schema' }, 'some/path');
+ const renderArgs = ejs.renderFile.calls.argsFor(0);
expect(renderArgs);
});
});
--
GitLab