diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..0ea99e2 --- /dev/null +++ b/.eslintignore @@ -0,0 +1,2 @@ +doc +node_modules \ No newline at end of file diff --git a/.eslintrc.js b/.eslintrc.js new file mode 100644 index 0000000..b959c09 --- /dev/null +++ b/.eslintrc.js @@ -0,0 +1,181 @@ +module.exports = { + root: true, + env: { + browser: true, + node: true, + es6: true, + }, + + // add your custom rules here + rules: { + 'accessor-pairs': 2, + 'arrow-spacing': [2, { + 'before': true, + 'after': true + }], + 'block-spacing': [2, 'always'], + 'brace-style': [2, '1tbs', { + 'allowSingleLine': true + }], + 'camelcase': [0, { + 'properties': 'always' + }], + 'comma-dangle': [2, 'never'], + 'comma-spacing': [2, { + 'before': false, + 'after': true + }], + 'comma-style': [2, 'last'], + 'constructor-super': 2, + 'curly': [2, 'multi-line'], + 'dot-location': [2, 'property'], + 'eol-last': 2, + 'eqeqeq': ["error", "always", {"null": "ignore"}], + 'generator-star-spacing': [2, { + 'before': true, + 'after': true + }], + 'handle-callback-err': [2, '^(err|error)$'], + 'indent': [2, 2, { + 'SwitchCase': 1 + }], + 'jsx-quotes': [2, 'prefer-single'], + 'key-spacing': [2, { + 'beforeColon': false, + 'afterColon': true + }], + 'keyword-spacing': [2, { + 'before': true, + 'after': true + }], + 'new-cap': [2, { + 'newIsCap': true, + 'capIsNew': false + }], + 'new-parens': 2, + 'no-array-constructor': 2, + 'no-caller': 2, + 'no-console': 'off', + 'no-class-assign': 2, + 'no-cond-assign': 2, + 'no-const-assign': 2, + 'no-control-regex': 0, + 'no-delete-var': 2, + 'no-dupe-args': 2, + 'no-dupe-class-members': 2, + 'no-dupe-keys': 2, + 'no-duplicate-case': 2, + 'no-empty-character-class': 2, + 'no-empty-pattern': 2, + 'no-eval': 2, + 'no-ex-assign': 2, + 'no-extend-native': 2, + 'no-extra-bind': 2, + 'no-extra-boolean-cast': 2, + 'no-extra-parens': [2, 'functions'], + 'no-fallthrough': 2, + 'no-floating-decimal': 2, + 'no-func-assign': 2, + 'no-implied-eval': 2, + 'no-inner-declarations': [2, 'functions'], + 'no-invalid-regexp': 2, + 'no-irregular-whitespace': 2, + 'no-iterator': 2, + 'no-label-var': 2, + 'no-labels': [2, { + 'allowLoop': false, + 'allowSwitch': false + }], + 'no-lone-blocks': 2, + 'no-mixed-spaces-and-tabs': 2, + 'no-multi-spaces': 2, + 'no-multi-str': 2, + 'no-multiple-empty-lines': [2, { + 'max': 1 + }], + 'no-native-reassign': 2, + 'no-negated-in-lhs': 2, + 'no-new-object': 2, + 'no-new-require': 2, + 'no-new-symbol': 2, + 'no-new-wrappers': 2, + 'no-obj-calls': 2, + 'no-octal': 2, + 'no-octal-escape': 2, + 'no-path-concat': 2, + 'no-proto': 2, + 'no-redeclare': 2, + 'no-regex-spaces': 2, + 'no-return-assign': [2, 'except-parens'], + 'no-self-assign': 2, + 'no-self-compare': 2, + 'no-sequences': 2, + 'no-shadow-restricted-names': 2, + 'no-spaced-func': 2, + 'no-sparse-arrays': 2, + 'no-this-before-super': 2, + 'no-throw-literal': 2, + 'no-trailing-spaces': 2, + 'no-undef': 2, + 'no-undef-init': 2, + 'no-unexpected-multiline': 2, + 'no-unmodified-loop-condition': 2, + 'no-unneeded-ternary': [2, { + 'defaultAssignment': false + }], + 'no-unreachable': 2, + 'no-unsafe-finally': 2, + 'no-unused-vars': [2, { + 'vars': 'all', + 'args': 'none' + }], + 'no-useless-call': 2, + 'no-useless-computed-key': 2, + 'no-useless-constructor': 2, + 'no-useless-escape': 0, + 'no-whitespace-before-property': 2, + 'no-with': 2, + 'one-var': [2, { + 'initialized': 'never' + }], + 'operator-linebreak': [2, 'after', { + 'overrides': { + '?': 'before', + ':': 'before' + } + }], + 'padded-blocks': [2, 'never'], + 'quotes': [2, 'single', { + 'avoidEscape': true, + 'allowTemplateLiterals': true + }], + 'semi': [2, 'never'], + 'semi-spacing': [2, { + 'before': false, + 'after': true + }], + 'space-before-blocks': [2, 'always'], + 'space-before-function-paren': [2, 'never'], + 'space-in-parens': [2, 'never'], + 'space-infix-ops': 2, + 'space-unary-ops': [2, { + 'words': true, + 'nonwords': false + }], + 'spaced-comment': [2, 'always', { + 'markers': ['global', 'globals', 'eslint', 'eslint-disable', '*package', '!', ','] + }], + 'template-curly-spacing': [2, 'never'], + 'use-isnan': 2, + 'valid-typeof': 2, + 'wrap-iife': [2, 'any'], + 'yield-star-spacing': [2, 'both'], + 'yoda': [2, 'never'], + 'prefer-const': 2, + 'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0, + 'object-curly-spacing': [2, 'always', { + objectsInObjects: false + }], + 'array-bracket-spacing': [2, 'never'] + } +} diff --git a/.travis.yml b/.travis.yml index a04f35d..79b61c4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,4 +2,5 @@ language: node_js node_js: 10 script: - yarn - - yarn build:swagger + - yarn test-yaml + - yarn test-json diff --git a/Gruntfile.js b/Gruntfile.js deleted file mode 100644 index 957f8a6..0000000 --- a/Gruntfile.js +++ /dev/null @@ -1,49 +0,0 @@ -const yaml = require('js-yaml') -const fs = require('fs') -const swaggerGen = require('.') - -module.exports = function(grunt) { - grunt.initConfig({ - 'pkg': grunt.file.readJSON('package.json'), - 'swagger-codegen': { - options: { - swagger: '<%= pkg.swagger.definition %>', - className: '<%= pkg.swagger.className %>', - moduleName: '<%= pkg.swagger.moduleName %>', - dist: '<%= pkg.swagger.dist %>' - }, - dist: { - - } - } - }) - - grunt.registerMultiTask('swagger-codegen', function() { - var callback = this.async() - var opt = this.options() - fs.readFile(opt.swagger, function(err, data) { - if (err) { - grunt.log.error(err.toString()) - callback(false) - } else { - const type = opt.swagger.substr(opt.swagger.length - 4, 4) - var parsedData = {} - if (type === 'yaml') { - parsedData = yaml.load(data) - } else if (type === 'json') { - parsedData = JSON.parse(data) - } else { - parsedData = JSON.parse(data) - } - swaggerGen({ - swagger: parsedData, - moduleName: opt.moduleName, - className: opt.className, - dist: opt.dist - }) - } - }) - }) - - grunt.registerTask('vue', ['swagger-codegen']) -} diff --git a/README.md b/README.md index 35c52e4..cc4fd0b 100644 --- a/README.md +++ b/README.md @@ -28,26 +28,17 @@ Modify `package.json`, the `definition` is the input swagger file, the `dist` is the js where to output. -```json -{ - "swagger": { - "definition": "./example/swagger/swagger.json", - "className": "API", - "moduleName": "apis", - "dist": "./example/dist" - } -} -``` - ```bash -yarn -yarn build:swagger +usage: swagger-builder.js [-h] [-v] [-f FILE] [-o OUTPUT] + +Optional arguments: + -h, --help Show this help message and exit. + -v, --version Show program's version number and exit. + -f FILE, --file FILE Swagger file to build + -o OUTPUT, --output OUTPUT + Js file to output ``` -## TODO - -- support npm package - ## Contributors - [kaisawind](https://github.com/kaisawind) - creator, maintainer diff --git a/bin/swagger-builder.js b/bin/swagger-builder.js new file mode 100644 index 0000000..2ec01ab --- /dev/null +++ b/bin/swagger-builder.js @@ -0,0 +1,48 @@ +#!/usr/bin/env node + +'use strict' + +/*eslint-disable no-console*/ + +// stdlib +var fs = require('fs') + +// 3rd-party +var argparse = require('argparse') + +// internal +var builder = require('..') + +// ////////////////////////////////////////////////////////////////////////////// + +var cli = new argparse.ArgumentParser({ + version: require('../package.json').version, + addHelp: true +}) + +cli.addArgument(['-f', '--file'], { + help: 'Swagger file to build' +}) + +cli.addArgument(['-o', '--output'], { + help: 'Js file to output' +}) + +// ////////////////////////////////////////////////////////////////////////////// + +var options = cli.parseArgs() + +// ////////////////////////////////////////////////////////////////////////////// + +function readFile(filename, callback) { + builder.SwaggerBuilder(filename, callback) +} + +readFile(options.file, (template) => { + fs.writeFile(options.output, template, (error) => { + if (error) { + throw error + } + console.log('build ' + options.file + ' to ' + options.output + ' success') + }) +}) diff --git a/example/dist/api.js b/example/dist/api.js deleted file mode 100644 index 5859840..0000000 --- a/example/dist/api.js +++ /dev/null @@ -1,54 +0,0 @@ -/* eslint-disable */ -import axios from 'axios' -import qs from 'qs' -let domain = 'https://petstore.swagger.io/v2' -let axiosInstance = axios.create() -const ContentType_MultipartFormData = 'multipart/form-data' -export const getDomain = () => { - return domain -} -export const setDomain = ($domain) => { - domain = $domain -} -export const getAxiosInstance = () => { - return axiosInstance -} -export const setAxiosInstance = ($axiosInstance) => { - axiosInstance = $axiosInstance -} - -function isFormData(config) { - if (config !== undefined && - config.headers !== undefined && - config.headers['Content-Type'] !== undefined && - config.headers['Content-Type'].indexOf(ContentType_MultipartFormData) !== -1) { - return true - } else { - return false - } -} -export const request = (method, url, body, queryParameters, form, formData, config = {}) => { - method = method.toLowerCase() - const keys = Object.keys(queryParameters) - let queryUrl = url - if (keys.length > 0) { - queryUrl = url + '?' + qs.stringify(queryParameters) - } - // let queryUrl = url+(keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') - if (body) { - if (method === 'delete') { - config.data = body - return axiosInstance[method](queryUrl, config) - } else { - return axiosInstance[method](queryUrl, body, config) - } - } else if (method === 'get' || method === 'delete' || method === 'head' || method === 'option') { - return axiosInstance[method](queryUrl, config) - } else { - if (isFormData(config)) { - return axiosInstance[method](queryUrl, formData, config) - } else { - return axiosInstance[method](queryUrl, qs.stringify(form), config) - } - } -} \ No newline at end of file diff --git a/example/dist/json_apis.js b/example/dist/json_apis.js new file mode 100644 index 0000000..e8d8674 --- /dev/null +++ b/example/dist/json_apis.js @@ -0,0 +1,521 @@ +/** + * @summary Swagger Petstore + * @description This is a sample server Petstore server. You can find out more about Swagger at [http://swagger.io](http://swagger.io) or on [irc + * .freenode.net, #swagger](http://swagger.io/irc/). For this sample, you can use the api key `special-key` to test the authorization filters + * . + * @version 1.0.0 + * @copyright http://swagger.io/terms/ + * @author + * @license Apache 2.0 + */ + +import axios from 'axios' +let domain = 'petstore.swagger.io//v2' +let axiosInstance = axios.create() +export const getDomain = () => { + return domain +} +export const setDomain = ($domain) => { + domain = $domain +} +export const getAxiosInstance = () => { + return axiosInstance +} +export const setAxiosInstance = ($axiosInstance) => { + axiosInstance = $axiosInstance +} + +export const request = (method, url, params, config = {}) => { + method = method.toLowerCase() + let configs = { + method: method, + url: url, + params: params.querys, + headers: params.headers, + data: params.body, + } + const configs = Object.assign(configs, config) + axiosInstance(configs) +} + +/** + * @name PetAddPet + * @method post + * @summary Add a new pet to the store + * @description + * @param { Object } [body] body - Pet object that needs to be added to the store + */ +export const PetAddPet = (parameters = {}) => { + const config = parameters.$config ? parameters.$config : {} + let url = '/pet' + let params = {query: [], headers: [], body: {}} + config.headers['Content-Type'] = 'application/json,application/xml' + config.headers['Accept'] = 'application/xml,application/json' + + if (parameters['body'] !== undefined) { + params.body = parameters['body'] + } + if(parameters['body'] === undefined) { + return Promise.reject(new Error('Missing required Object parameter: body')) + } + return request('post', url, params, config) +} + +/** + * @name PetUpdatePet + * @method put + * @summary Update an existing pet + * @description + * @param { Object } [body] body - Pet object that needs to be added to the store + */ +export const PetUpdatePet = (parameters = {}) => { + const config = parameters.$config ? parameters.$config : {} + let url = '/pet' + let params = {query: [], headers: [], body: {}} + config.headers['Content-Type'] = 'application/json,application/xml' + config.headers['Accept'] = 'application/xml,application/json' + + if (parameters['body'] !== undefined) { + params.body = parameters['body'] + } + if(parameters['body'] === undefined) { + return Promise.reject(new Error('Missing required Object parameter: body')) + } + return request('put', url, params, config) +} + +/** + * @name PetFindPetsByStatus + * @method get + * @summary Finds Pets by status + * @description Multiple status values can be provided with comma separated strings + * @param { Array } [query] status - Status values that need to be considered for filter + */ +export const PetFindPetsByStatus = (parameters = {}) => { + const config = parameters.$config ? parameters.$config : {} + let url = '/pet/findByStatus' + let params = {query: [], headers: [], body: {}} + config.headers['Content-Type'] = 'application/json' + config.headers['Accept'] = 'application/xml,application/json' + + if (parameters['status'] !== undefined) { + params.querys.push(parameters['status']) + } + if(parameters['status'] === undefined) { + return Promise.reject(new Error('Missing required Array parameter: status')) + } + return request('get', url, params, config) +} + +/** + * @name PetFindPetsByTags + * @deprecated + * @method get + * @summary Finds Pets by tags + * @description Muliple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + * @param { Array } [query] tags - Tags to filter by + */ +export const PetFindPetsByTags = (parameters = {}) => { + const config = parameters.$config ? parameters.$config : {} + let url = '/pet/findByTags' + let params = {query: [], headers: [], body: {}} + config.headers['Content-Type'] = 'application/json' + config.headers['Accept'] = 'application/xml,application/json' + + if (parameters['tags'] !== undefined) { + params.querys.push(parameters['tags']) + } + if(parameters['tags'] === undefined) { + return Promise.reject(new Error('Missing required Array parameter: tags')) + } + return request('get', url, params, config) +} + +/** + * @name PetGetPetById + * @method get + * @summary Find pet by ID + * @description Returns a single pet + * @param { Integer } [path] petId - ID of pet to return + */ +export const PetGetPetById = (parameters = {}) => { + const config = parameters.$config ? parameters.$config : {} + let url = '/pet/{petId}' + let params = {query: [], headers: [], body: {}} + config.headers['Content-Type'] = 'application/json' + config.headers['Accept'] = 'application/xml,application/json' + + if (parameters['petId'] !== undefined) { + url = url.replace('{petId}', parameters['petId']) + } + if(parameters['petId'] === undefined) { + return Promise.reject(new Error('Missing required Integer parameter: petId')) + } + return request('get', url, params, config) +} + +/** + * @name PetUpdatePetWithForm + * @method post + * @summary Updates a pet in the store with form data + * @description + * @param { Integer } [path] petId - ID of pet that needs to be updated + * @param { String } [formData] name - Updated name of the pet + * @param { String } [formData] status - Updated status of the pet + */ +export const PetUpdatePetWithForm = (parameters = {}) => { + const config = parameters.$config ? parameters.$config : {} + let url = '/pet/{petId}' + let params = {query: [], headers: [], body: {}} + config.headers['Content-Type'] = 'application/x-www-form-urlencoded' + config.headers['Accept'] = 'application/xml,application/json' + let formData = new URLSearchParams() + if (parameters['petId'] !== undefined) { + url = url.replace('{petId}', parameters['petId']) + } + if(parameters['petId'] === undefined) { + return Promise.reject(new Error('Missing required Integer parameter: petId')) + } + if (parameters['name'] !== undefined) { + formData.append('name', parameters['name']) + } + if (parameters['status'] !== undefined) { + formData.append('status', parameters['status']) + } + return request('post', url, params, config) +} + +/** + * @name PetDeletePet + * @method delete + * @summary Deletes a pet + * @description + * @param { String } [header] api_key - + * @param { Integer } [path] petId - Pet id to delete + */ +export const PetDeletePet = (parameters = {}) => { + const config = parameters.$config ? parameters.$config : {} + let url = '/pet/{petId}' + let params = {query: [], headers: [], body: {}} + config.headers['Content-Type'] = 'application/json' + config.headers['Accept'] = 'application/xml,application/json' + + if (parameters['api_key'] !== undefined) { + params.headers.push(parameters['api_key']) + } + if (parameters['petId'] !== undefined) { + url = url.replace('{petId}', parameters['petId']) + } + if(parameters['petId'] === undefined) { + return Promise.reject(new Error('Missing required Integer parameter: petId')) + } + return request('delete', url, params, config) +} + +/** + * @name PetUploadFile + * @method post + * @summary uploads an image + * @description + * @param { Integer } [path] petId - ID of pet to update + * @param { String } [formData] additionalMetadata - Additional data to pass to server + * @param { File } [formData] file - file to upload + */ +export const PetUploadFile = (parameters = {}) => { + const config = parameters.$config ? parameters.$config : {} + let url = '/pet/{petId}/uploadImage' + let params = {query: [], headers: [], body: {}} + config.headers['Content-Type'] = 'multipart/form-data' + config.headers['Accept'] = 'application/json' + let formData = new FormData() + if (parameters['petId'] !== undefined) { + url = url.replace('{petId}', parameters['petId']) + } + if(parameters['petId'] === undefined) { + return Promise.reject(new Error('Missing required Integer parameter: petId')) + } + if (parameters['additionalMetadata'] !== undefined) { + formData.append('additionalMetadata', parameters['additionalMetadata']) + } + if (parameters['file'] !== undefined) { + formData.append('file', parameters['file']) + } + return request('post', url, params, config) +} + +/** + * @name StoreGetInventory + * @method get + * @summary Returns pet inventories by status + * @description Returns a map of status codes to quantities + */ +export const StoreGetInventory = (parameters = {}) => { + const config = parameters.$config ? parameters.$config : {} + let url = '/store/inventory' + let params = {query: [], headers: [], body: {}} + config.headers['Content-Type'] = 'application/json' + config.headers['Accept'] = 'application/json' + + return request('get', url, params, config) +} + +/** + * @name StorePlaceOrder + * @method post + * @summary Place an order for a pet + * @description + * @param { Object } [body] body - order placed for purchasing the pet + */ +export const StorePlaceOrder = (parameters = {}) => { + const config = parameters.$config ? parameters.$config : {} + let url = '/store/order' + let params = {query: [], headers: [], body: {}} + config.headers['Content-Type'] = 'application/json' + config.headers['Accept'] = 'application/xml,application/json' + + if (parameters['body'] !== undefined) { + params.body = parameters['body'] + } + if(parameters['body'] === undefined) { + return Promise.reject(new Error('Missing required Object parameter: body')) + } + return request('post', url, params, config) +} + +/** + * @name StoreGetOrderById + * @method get + * @summary Find purchase order by ID + * @description For valid response try integer IDs with value >= 1 and <= 10. Other values will generated exceptions + * @param { Integer } [path] orderId - ID of pet that needs to be fetched + */ +export const StoreGetOrderById = (parameters = {}) => { + const config = parameters.$config ? parameters.$config : {} + let url = '/store/order/{orderId}' + let params = {query: [], headers: [], body: {}} + config.headers['Content-Type'] = 'application/json' + config.headers['Accept'] = 'application/xml,application/json' + + if (parameters['orderId'] !== undefined) { + url = url.replace('{orderId}', parameters['orderId']) + } + if(parameters['orderId'] === undefined) { + return Promise.reject(new Error('Missing required Integer parameter: orderId')) + } + return request('get', url, params, config) +} + +/** + * @name StoreDeleteOrder + * @method delete + * @summary Delete purchase order by ID + * @description For valid response try integer IDs with positive integer value. Negative or non-integer values will generate API errors + * @param { Integer } [path] orderId - ID of the order that needs to be deleted + */ +export const StoreDeleteOrder = (parameters = {}) => { + const config = parameters.$config ? parameters.$config : {} + let url = '/store/order/{orderId}' + let params = {query: [], headers: [], body: {}} + config.headers['Content-Type'] = 'application/json' + config.headers['Accept'] = 'application/xml,application/json' + + if (parameters['orderId'] !== undefined) { + url = url.replace('{orderId}', parameters['orderId']) + } + if(parameters['orderId'] === undefined) { + return Promise.reject(new Error('Missing required Integer parameter: orderId')) + } + return request('delete', url, params, config) +} + +/** + * @name UserCreateUser + * @method post + * @summary Create user + * @description This can only be done by the logged in user. + * @param { Object } [body] body - Created user object + */ +export const UserCreateUser = (parameters = {}) => { + const config = parameters.$config ? parameters.$config : {} + let url = '/user' + let params = {query: [], headers: [], body: {}} + config.headers['Content-Type'] = 'application/json' + config.headers['Accept'] = 'application/xml,application/json' + + if (parameters['body'] !== undefined) { + params.body = parameters['body'] + } + if(parameters['body'] === undefined) { + return Promise.reject(new Error('Missing required Object parameter: body')) + } + return request('post', url, params, config) +} + +/** + * @name UserCreateUsersWithArrayInput + * @method post + * @summary Creates list of users with given input array + * @description + * @param { Object } [body] body - List of user object + */ +export const UserCreateUsersWithArrayInput = (parameters = {}) => { + const config = parameters.$config ? parameters.$config : {} + let url = '/user/createWithArray' + let params = {query: [], headers: [], body: {}} + config.headers['Content-Type'] = 'application/json' + config.headers['Accept'] = 'application/xml,application/json' + + if (parameters['body'] !== undefined) { + params.body = parameters['body'] + } + if(parameters['body'] === undefined) { + return Promise.reject(new Error('Missing required Object parameter: body')) + } + return request('post', url, params, config) +} + +/** + * @name UserCreateUsersWithListInput + * @method post + * @summary Creates list of users with given input array + * @description + * @param { Object } [body] body - List of user object + */ +export const UserCreateUsersWithListInput = (parameters = {}) => { + const config = parameters.$config ? parameters.$config : {} + let url = '/user/createWithList' + let params = {query: [], headers: [], body: {}} + config.headers['Content-Type'] = 'application/json' + config.headers['Accept'] = 'application/xml,application/json' + + if (parameters['body'] !== undefined) { + params.body = parameters['body'] + } + if(parameters['body'] === undefined) { + return Promise.reject(new Error('Missing required Object parameter: body')) + } + return request('post', url, params, config) +} + +/** + * @name UserLoginUser + * @method get + * @summary Logs user into the system + * @description + * @param { String } [query] username - The user name for login + * @param { String } [query] password - The password for login in clear text + */ +export const UserLoginUser = (parameters = {}) => { + const config = parameters.$config ? parameters.$config : {} + let url = '/user/login' + let params = {query: [], headers: [], body: {}} + config.headers['Content-Type'] = 'application/json' + config.headers['Accept'] = 'application/xml,application/json' + + if (parameters['username'] !== undefined) { + params.querys.push(parameters['username']) + } + if(parameters['username'] === undefined) { + return Promise.reject(new Error('Missing required String parameter: username')) + } + if (parameters['password'] !== undefined) { + params.querys.push(parameters['password']) + } + if(parameters['password'] === undefined) { + return Promise.reject(new Error('Missing required String parameter: password')) + } + return request('get', url, params, config) +} + +/** + * @name UserLogoutUser + * @method get + * @summary Logs out current logged in user session + * @description + */ +export const UserLogoutUser = (parameters = {}) => { + const config = parameters.$config ? parameters.$config : {} + let url = '/user/logout' + let params = {query: [], headers: [], body: {}} + config.headers['Content-Type'] = 'application/json' + config.headers['Accept'] = 'application/xml,application/json' + + return request('get', url, params, config) +} + +/** + * @name UserGetUserByName + * @method get + * @summary Get user by user name + * @description + * @param { String } [path] username - The name that needs to be fetched. Use user1 for testing. + */ +export const UserGetUserByName = (parameters = {}) => { + const config = parameters.$config ? parameters.$config : {} + let url = '/user/{username}' + let params = {query: [], headers: [], body: {}} + config.headers['Content-Type'] = 'application/json' + config.headers['Accept'] = 'application/xml,application/json' + + if (parameters['username'] !== undefined) { + url = url.replace('{username}', parameters['username']) + } + if(parameters['username'] === undefined) { + return Promise.reject(new Error('Missing required String parameter: username')) + } + return request('get', url, params, config) +} + +/** + * @name UserUpdateUser + * @method put + * @summary Updated user + * @description This can only be done by the logged in user. + * @param { String } [path] username - name that need to be updated + * @param { Object } [body] body - Updated user object + */ +export const UserUpdateUser = (parameters = {}) => { + const config = parameters.$config ? parameters.$config : {} + let url = '/user/{username}' + let params = {query: [], headers: [], body: {}} + config.headers['Content-Type'] = 'application/json' + config.headers['Accept'] = 'application/xml,application/json' + + if (parameters['username'] !== undefined) { + url = url.replace('{username}', parameters['username']) + } + if(parameters['username'] === undefined) { + return Promise.reject(new Error('Missing required String parameter: username')) + } + if (parameters['body'] !== undefined) { + params.body = parameters['body'] + } + if(parameters['body'] === undefined) { + return Promise.reject(new Error('Missing required Object parameter: body')) + } + return request('put', url, params, config) +} + +/** + * @name UserDeleteUser + * @method delete + * @summary Delete user + * @description This can only be done by the logged in user. + * @param { String } [path] username - The name that needs to be deleted + */ +export const UserDeleteUser = (parameters = {}) => { + const config = parameters.$config ? parameters.$config : {} + let url = '/user/{username}' + let params = {query: [], headers: [], body: {}} + config.headers['Content-Type'] = 'application/json' + config.headers['Accept'] = 'application/xml,application/json' + + if (parameters['username'] !== undefined) { + url = url.replace('{username}', parameters['username']) + } + if(parameters['username'] === undefined) { + return Promise.reject(new Error('Missing required String parameter: username')) + } + return request('delete', url, params, config) +} + diff --git a/example/dist/other.js b/example/dist/other.js deleted file mode 100644 index 44478d0..0000000 --- a/example/dist/other.js +++ /dev/null @@ -1,8 +0,0 @@ -/* eslint-disable */ -/* ========================================================== - * other apis - ==========================================================*/ -import { - request, - getDomain -} from './api.js' \ No newline at end of file diff --git a/example/dist/pet.js b/example/dist/pet.js deleted file mode 100644 index 55c9944..0000000 --- a/example/dist/pet.js +++ /dev/null @@ -1,439 +0,0 @@ -/* eslint-disable */ -/* ========================================================== - * Everything about your Pets - ==========================================================*/ -import { - request, - getDomain -} from './api.js' -/** - * Add a new pet to the store - * request: addPet - * url: addPetURL - * method: addPet_TYPE - * raw_url: addPet_RAW_URL - * @param body - Pet object that needs to be added to the store - */ -export const addPet = function(parameters = {}) { - const domain = parameters.$domain ? parameters.$domain : getDomain() - const config = parameters.$config ? parameters.$config : {} - let path = '/pet' - let body - const queryParameters = {} - const form = {} - const formData = new FormData() - if (config['headers'] === undefined) { - config['headers'] = {} - } - config.headers['Accept'] = 'application/xml', 'application/json' - config.headers['Content-Type'] = 'application/json,application/xml' - if (parameters['body'] !== undefined) { - body = parameters['body'] - } - if (parameters['body'] === undefined) { - return Promise.reject(new Error('Missing required parameter: body')) - } - if (parameters.$queryParameters) { - Object.keys(parameters.$queryParameters).forEach(function(parameterName) { - queryParameters[parameterName] = parameters.$queryParameters[parameterName] - }) - } - return request('post', domain + path, body, queryParameters, form, formData, config) -} -export const addPet_RAW_URL = function() { - return '/pet' -} -export const addPet_TYPE = function() { - return 'post' -} -export const addPetURL = function(parameters = {}) { - let queryParameters = {} - const domain = parameters.$domain ? parameters.$domain : getDomain() - let path = '/pet' - if (parameters.$queryParameters) { - Object.keys(parameters.$queryParameters).forEach(function(parameterName) { - queryParameters[parameterName] = parameters.$queryParameters[parameterName] - }) - } - let keys = Object.keys(queryParameters) - return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') -} -/** - * Update an existing pet - * request: updatePet - * url: updatePetURL - * method: updatePet_TYPE - * raw_url: updatePet_RAW_URL - * @param body - Pet object that needs to be added to the store - */ -export const updatePet = function(parameters = {}) { - const domain = parameters.$domain ? parameters.$domain : getDomain() - const config = parameters.$config ? parameters.$config : {} - let path = '/pet' - let body - const queryParameters = {} - const form = {} - const formData = new FormData() - if (config['headers'] === undefined) { - config['headers'] = {} - } - config.headers['Accept'] = 'application/xml', 'application/json' - config.headers['Content-Type'] = 'application/json,application/xml' - if (parameters['body'] !== undefined) { - body = parameters['body'] - } - if (parameters['body'] === undefined) { - return Promise.reject(new Error('Missing required parameter: body')) - } - if (parameters.$queryParameters) { - Object.keys(parameters.$queryParameters).forEach(function(parameterName) { - queryParameters[parameterName] = parameters.$queryParameters[parameterName] - }) - } - return request('put', domain + path, body, queryParameters, form, formData, config) -} -export const updatePet_RAW_URL = function() { - return '/pet' -} -export const updatePet_TYPE = function() { - return 'put' -} -export const updatePetURL = function(parameters = {}) { - let queryParameters = {} - const domain = parameters.$domain ? parameters.$domain : getDomain() - let path = '/pet' - if (parameters.$queryParameters) { - Object.keys(parameters.$queryParameters).forEach(function(parameterName) { - queryParameters[parameterName] = parameters.$queryParameters[parameterName] - }) - } - let keys = Object.keys(queryParameters) - return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') -} -/** - * Multiple status values can be provided with comma separated strings - * request: findPetsByStatus - * url: findPetsByStatusURL - * method: findPetsByStatus_TYPE - * raw_url: findPetsByStatus_RAW_URL - * @param status - Status values that need to be considered for filter - */ -export const findPetsByStatus = function(parameters = {}) { - const domain = parameters.$domain ? parameters.$domain : getDomain() - const config = parameters.$config ? parameters.$config : {} - let path = '/pet/findByStatus' - let body - const queryParameters = {} - const form = {} - const formData = new FormData() - if (config['headers'] === undefined) { - config['headers'] = {} - } - config.headers['Accept'] = 'application/xml', 'application/json' - if (parameters['status'] !== undefined) { - queryParameters['status'] = parameters['status'] - } - if (parameters['status'] === undefined) { - return Promise.reject(new Error('Missing required parameter: status')) - } - if (parameters.$queryParameters) { - Object.keys(parameters.$queryParameters).forEach(function(parameterName) { - queryParameters[parameterName] = parameters.$queryParameters[parameterName] - }) - } - return request('get', domain + path, body, queryParameters, form, formData, config) -} -export const findPetsByStatus_RAW_URL = function() { - return '/pet/findByStatus' -} -export const findPetsByStatus_TYPE = function() { - return 'get' -} -export const findPetsByStatusURL = function(parameters = {}) { - let queryParameters = {} - const domain = parameters.$domain ? parameters.$domain : getDomain() - let path = '/pet/findByStatus' - if (parameters['status'] !== undefined) { - queryParameters['status'] = parameters['status'] - } - if (parameters.$queryParameters) { - Object.keys(parameters.$queryParameters).forEach(function(parameterName) { - queryParameters[parameterName] = parameters.$queryParameters[parameterName] - }) - } - let keys = Object.keys(queryParameters) - return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') -} -/** - * Muliple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. - * request: findPetsByTags - * url: findPetsByTagsURL - * method: findPetsByTags_TYPE - * raw_url: findPetsByTags_RAW_URL - * @param tags - Tags to filter by - */ -export const findPetsByTags = function(parameters = {}) { - const domain = parameters.$domain ? parameters.$domain : getDomain() - const config = parameters.$config ? parameters.$config : {} - let path = '/pet/findByTags' - let body - const queryParameters = {} - const form = {} - const formData = new FormData() - if (config['headers'] === undefined) { - config['headers'] = {} - } - config.headers['Accept'] = 'application/xml', 'application/json' - if (parameters['tags'] !== undefined) { - queryParameters['tags'] = parameters['tags'] - } - if (parameters['tags'] === undefined) { - return Promise.reject(new Error('Missing required parameter: tags')) - } - if (parameters.$queryParameters) { - Object.keys(parameters.$queryParameters).forEach(function(parameterName) { - queryParameters[parameterName] = parameters.$queryParameters[parameterName] - }) - } - return request('get', domain + path, body, queryParameters, form, formData, config) -} -export const findPetsByTags_RAW_URL = function() { - return '/pet/findByTags' -} -export const findPetsByTags_TYPE = function() { - return 'get' -} -export const findPetsByTagsURL = function(parameters = {}) { - let queryParameters = {} - const domain = parameters.$domain ? parameters.$domain : getDomain() - let path = '/pet/findByTags' - if (parameters['tags'] !== undefined) { - queryParameters['tags'] = parameters['tags'] - } - if (parameters.$queryParameters) { - Object.keys(parameters.$queryParameters).forEach(function(parameterName) { - queryParameters[parameterName] = parameters.$queryParameters[parameterName] - }) - } - let keys = Object.keys(queryParameters) - return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') -} -/** - * Returns a single pet - * request: getPetById - * url: getPetByIdURL - * method: getPetById_TYPE - * raw_url: getPetById_RAW_URL - * @param petId - ID of pet to return - */ -export const getPetById = function(parameters = {}) { - const domain = parameters.$domain ? parameters.$domain : getDomain() - const config = parameters.$config ? parameters.$config : {} - let path = '/pet/{petId}' - let body - const queryParameters = {} - const form = {} - const formData = new FormData() - if (config['headers'] === undefined) { - config['headers'] = {} - } - config.headers['Accept'] = 'application/xml', 'application/json' - path = path.replace('{petId}', `${parameters['petId']}`) - if (parameters['petId'] === undefined) { - return Promise.reject(new Error('Missing required parameter: petId')) - } - if (parameters.$queryParameters) { - Object.keys(parameters.$queryParameters).forEach(function(parameterName) { - queryParameters[parameterName] = parameters.$queryParameters[parameterName] - }) - } - return request('get', domain + path, body, queryParameters, form, formData, config) -} -export const getPetById_RAW_URL = function() { - return '/pet/{petId}' -} -export const getPetById_TYPE = function() { - return 'get' -} -export const getPetByIdURL = function(parameters = {}) { - let queryParameters = {} - const domain = parameters.$domain ? parameters.$domain : getDomain() - let path = '/pet/{petId}' - path = path.replace('{petId}', `${parameters['petId']}`) - if (parameters.$queryParameters) { - Object.keys(parameters.$queryParameters).forEach(function(parameterName) { - queryParameters[parameterName] = parameters.$queryParameters[parameterName] - }) - } - let keys = Object.keys(queryParameters) - return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') -} -/** - * Updates a pet in the store with form data - * request: updatePetWithForm - * url: updatePetWithFormURL - * method: updatePetWithForm_TYPE - * raw_url: updatePetWithForm_RAW_URL - * @param petId - ID of pet that needs to be updated - * @param name - Updated name of the pet - * @param status - Updated status of the pet - */ -export const updatePetWithForm = function(parameters = {}) { - const domain = parameters.$domain ? parameters.$domain : getDomain() - const config = parameters.$config ? parameters.$config : {} - let path = '/pet/{petId}' - let body - const queryParameters = {} - const form = {} - const formData = new FormData() - if (config['headers'] === undefined) { - config['headers'] = {} - } - config.headers['Accept'] = 'application/xml', 'application/json' - config.headers['Content-Type'] = 'application/x-www-form-urlencoded' - path = path.replace('{petId}', `${parameters['petId']}`) - if (parameters['petId'] === undefined) { - return Promise.reject(new Error('Missing required parameter: petId')) - } - if (parameters['name'] !== undefined) { - form['name'] = parameters['name'] - } - if (parameters['status'] !== undefined) { - form['status'] = parameters['status'] - } - if (parameters.$queryParameters) { - Object.keys(parameters.$queryParameters).forEach(function(parameterName) { - queryParameters[parameterName] = parameters.$queryParameters[parameterName] - }) - } - return request('post', domain + path, body, queryParameters, form, formData, config) -} -export const updatePetWithForm_RAW_URL = function() { - return '/pet/{petId}' -} -export const updatePetWithForm_TYPE = function() { - return 'post' -} -export const updatePetWithFormURL = function(parameters = {}) { - let queryParameters = {} - const domain = parameters.$domain ? parameters.$domain : getDomain() - let path = '/pet/{petId}' - path = path.replace('{petId}', `${parameters['petId']}`) - if (parameters.$queryParameters) { - Object.keys(parameters.$queryParameters).forEach(function(parameterName) { - queryParameters[parameterName] = parameters.$queryParameters[parameterName] - }) - } - let keys = Object.keys(queryParameters) - return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') -} -/** - * Deletes a pet - * request: deletePet - * url: deletePetURL - * method: deletePet_TYPE - * raw_url: deletePet_RAW_URL - * @param apiKey - - * @param petId - Pet id to delete - */ -export const deletePet = function(parameters = {}) { - const domain = parameters.$domain ? parameters.$domain : getDomain() - const config = parameters.$config ? parameters.$config : {} - let path = '/pet/{petId}' - let body - const queryParameters = {} - const form = {} - const formData = new FormData() - if (config['headers'] === undefined) { - config['headers'] = {} - } - config.headers['Accept'] = 'application/xml', 'application/json' - path = path.replace('{petId}', `${parameters['petId']}`) - if (parameters['petId'] === undefined) { - return Promise.reject(new Error('Missing required parameter: petId')) - } - if (parameters.$queryParameters) { - Object.keys(parameters.$queryParameters).forEach(function(parameterName) { - queryParameters[parameterName] = parameters.$queryParameters[parameterName] - }) - } - return request('delete', domain + path, body, queryParameters, form, formData, config) -} -export const deletePet_RAW_URL = function() { - return '/pet/{petId}' -} -export const deletePet_TYPE = function() { - return 'delete' -} -export const deletePetURL = function(parameters = {}) { - let queryParameters = {} - const domain = parameters.$domain ? parameters.$domain : getDomain() - let path = '/pet/{petId}' - path = path.replace('{petId}', `${parameters['petId']}`) - if (parameters.$queryParameters) { - Object.keys(parameters.$queryParameters).forEach(function(parameterName) { - queryParameters[parameterName] = parameters.$queryParameters[parameterName] - }) - } - let keys = Object.keys(queryParameters) - return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') -} -/** - * uploads an image - * request: uploadFile - * url: uploadFileURL - * method: uploadFile_TYPE - * raw_url: uploadFile_RAW_URL - * @param petId - ID of pet to update - * @param additionalMetadata - Additional data to pass to server - * @param file - file to upload - */ -export const uploadFile = function(parameters = {}) { - const domain = parameters.$domain ? parameters.$domain : getDomain() - const config = parameters.$config ? parameters.$config : {} - let path = '/pet/{petId}/uploadImage' - let body - const queryParameters = {} - const form = {} - const formData = new FormData() - if (config['headers'] === undefined) { - config['headers'] = {} - } - config.headers['Accept'] = 'application/json' - config.headers['Content-Type'] = 'multipart/form-data' - path = path.replace('{petId}', `${parameters['petId']}`) - if (parameters['petId'] === undefined) { - return Promise.reject(new Error('Missing required parameter: petId')) - } - if (parameters['additionalMetadata'] !== undefined) { - formData.append('additionalMetadata', parameters['additionalMetadata']) - } - if (parameters['file'] !== undefined) { - formData.append('file', parameters['file']) - } - if (parameters.$queryParameters) { - Object.keys(parameters.$queryParameters).forEach(function(parameterName) { - queryParameters[parameterName] = parameters.$queryParameters[parameterName] - }) - } - return request('post', domain + path, body, queryParameters, form, formData, config) -} -export const uploadFile_RAW_URL = function() { - return '/pet/{petId}/uploadImage' -} -export const uploadFile_TYPE = function() { - return 'post' -} -export const uploadFileURL = function(parameters = {}) { - let queryParameters = {} - const domain = parameters.$domain ? parameters.$domain : getDomain() - let path = '/pet/{petId}/uploadImage' - path = path.replace('{petId}', `${parameters['petId']}`) - if (parameters.$queryParameters) { - Object.keys(parameters.$queryParameters).forEach(function(parameterName) { - queryParameters[parameterName] = parameters.$queryParameters[parameterName] - }) - } - let keys = Object.keys(queryParameters) - return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') -} \ No newline at end of file diff --git a/example/dist/store.js b/example/dist/store.js deleted file mode 100644 index cc56db3..0000000 --- a/example/dist/store.js +++ /dev/null @@ -1,203 +0,0 @@ -/* eslint-disable */ -/* ========================================================== - * Access to Petstore orders - ==========================================================*/ -import { - request, - getDomain -} from './api.js' -/** - * Returns a map of status codes to quantities - * request: getInventory - * url: getInventoryURL - * method: getInventory_TYPE - * raw_url: getInventory_RAW_URL - */ -export const getInventory = function(parameters = {}) { - const domain = parameters.$domain ? parameters.$domain : getDomain() - const config = parameters.$config ? parameters.$config : {} - let path = '/store/inventory' - let body - const queryParameters = {} - const form = {} - const formData = new FormData() - if (config['headers'] === undefined) { - config['headers'] = {} - } - config.headers['Accept'] = 'application/json' - if (parameters.$queryParameters) { - Object.keys(parameters.$queryParameters).forEach(function(parameterName) { - queryParameters[parameterName] = parameters.$queryParameters[parameterName] - }) - } - return request('get', domain + path, body, queryParameters, form, formData, config) -} -export const getInventory_RAW_URL = function() { - return '/store/inventory' -} -export const getInventory_TYPE = function() { - return 'get' -} -export const getInventoryURL = function(parameters = {}) { - let queryParameters = {} - const domain = parameters.$domain ? parameters.$domain : getDomain() - let path = '/store/inventory' - if (parameters.$queryParameters) { - Object.keys(parameters.$queryParameters).forEach(function(parameterName) { - queryParameters[parameterName] = parameters.$queryParameters[parameterName] - }) - } - let keys = Object.keys(queryParameters) - return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') -} -/** - * Place an order for a pet - * request: placeOrder - * url: placeOrderURL - * method: placeOrder_TYPE - * raw_url: placeOrder_RAW_URL - * @param body - order placed for purchasing the pet - */ -export const placeOrder = function(parameters = {}) { - const domain = parameters.$domain ? parameters.$domain : getDomain() - const config = parameters.$config ? parameters.$config : {} - let path = '/store/order' - let body - const queryParameters = {} - const form = {} - const formData = new FormData() - if (config['headers'] === undefined) { - config['headers'] = {} - } - config.headers['Accept'] = 'application/xml', 'application/json' - if (parameters['body'] !== undefined) { - body = parameters['body'] - } - if (parameters['body'] === undefined) { - return Promise.reject(new Error('Missing required parameter: body')) - } - if (parameters.$queryParameters) { - Object.keys(parameters.$queryParameters).forEach(function(parameterName) { - queryParameters[parameterName] = parameters.$queryParameters[parameterName] - }) - } - return request('post', domain + path, body, queryParameters, form, formData, config) -} -export const placeOrder_RAW_URL = function() { - return '/store/order' -} -export const placeOrder_TYPE = function() { - return 'post' -} -export const placeOrderURL = function(parameters = {}) { - let queryParameters = {} - const domain = parameters.$domain ? parameters.$domain : getDomain() - let path = '/store/order' - if (parameters.$queryParameters) { - Object.keys(parameters.$queryParameters).forEach(function(parameterName) { - queryParameters[parameterName] = parameters.$queryParameters[parameterName] - }) - } - let keys = Object.keys(queryParameters) - return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') -} -/** - * For valid response try integer IDs with value >= 1 and <= 10. Other values will generated exceptions - * request: getOrderById - * url: getOrderByIdURL - * method: getOrderById_TYPE - * raw_url: getOrderById_RAW_URL - * @param orderId - ID of pet that needs to be fetched - */ -export const getOrderById = function(parameters = {}) { - const domain = parameters.$domain ? parameters.$domain : getDomain() - const config = parameters.$config ? parameters.$config : {} - let path = '/store/order/{orderId}' - let body - const queryParameters = {} - const form = {} - const formData = new FormData() - if (config['headers'] === undefined) { - config['headers'] = {} - } - config.headers['Accept'] = 'application/xml', 'application/json' - path = path.replace('{orderId}', `${parameters['orderId']}`) - if (parameters['orderId'] === undefined) { - return Promise.reject(new Error('Missing required parameter: orderId')) - } - if (parameters.$queryParameters) { - Object.keys(parameters.$queryParameters).forEach(function(parameterName) { - queryParameters[parameterName] = parameters.$queryParameters[parameterName] - }) - } - return request('get', domain + path, body, queryParameters, form, formData, config) -} -export const getOrderById_RAW_URL = function() { - return '/store/order/{orderId}' -} -export const getOrderById_TYPE = function() { - return 'get' -} -export const getOrderByIdURL = function(parameters = {}) { - let queryParameters = {} - const domain = parameters.$domain ? parameters.$domain : getDomain() - let path = '/store/order/{orderId}' - path = path.replace('{orderId}', `${parameters['orderId']}`) - if (parameters.$queryParameters) { - Object.keys(parameters.$queryParameters).forEach(function(parameterName) { - queryParameters[parameterName] = parameters.$queryParameters[parameterName] - }) - } - let keys = Object.keys(queryParameters) - return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') -} -/** - * For valid response try integer IDs with positive integer value. Negative or non-integer values will generate API errors - * request: deleteOrder - * url: deleteOrderURL - * method: deleteOrder_TYPE - * raw_url: deleteOrder_RAW_URL - * @param orderId - ID of the order that needs to be deleted - */ -export const deleteOrder = function(parameters = {}) { - const domain = parameters.$domain ? parameters.$domain : getDomain() - const config = parameters.$config ? parameters.$config : {} - let path = '/store/order/{orderId}' - let body - const queryParameters = {} - const form = {} - const formData = new FormData() - if (config['headers'] === undefined) { - config['headers'] = {} - } - config.headers['Accept'] = 'application/xml', 'application/json' - path = path.replace('{orderId}', `${parameters['orderId']}`) - if (parameters['orderId'] === undefined) { - return Promise.reject(new Error('Missing required parameter: orderId')) - } - if (parameters.$queryParameters) { - Object.keys(parameters.$queryParameters).forEach(function(parameterName) { - queryParameters[parameterName] = parameters.$queryParameters[parameterName] - }) - } - return request('delete', domain + path, body, queryParameters, form, formData, config) -} -export const deleteOrder_RAW_URL = function() { - return '/store/order/{orderId}' -} -export const deleteOrder_TYPE = function() { - return 'delete' -} -export const deleteOrderURL = function(parameters = {}) { - let queryParameters = {} - const domain = parameters.$domain ? parameters.$domain : getDomain() - let path = '/store/order/{orderId}' - path = path.replace('{orderId}', `${parameters['orderId']}`) - if (parameters.$queryParameters) { - Object.keys(parameters.$queryParameters).forEach(function(parameterName) { - queryParameters[parameterName] = parameters.$queryParameters[parameterName] - }) - } - let keys = Object.keys(queryParameters) - return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') -} \ No newline at end of file diff --git a/example/dist/user.js b/example/dist/user.js deleted file mode 100644 index bce7fa5..0000000 --- a/example/dist/user.js +++ /dev/null @@ -1,426 +0,0 @@ -/* eslint-disable */ -/* ========================================================== - * Operations about user - ==========================================================*/ -import { - request, - getDomain -} from './api.js' -/** - * This can only be done by the logged in user. - * request: createUser - * url: createUserURL - * method: createUser_TYPE - * raw_url: createUser_RAW_URL - * @param body - Created user object - */ -export const createUser = function(parameters = {}) { - const domain = parameters.$domain ? parameters.$domain : getDomain() - const config = parameters.$config ? parameters.$config : {} - let path = '/user' - let body - const queryParameters = {} - const form = {} - const formData = new FormData() - if (config['headers'] === undefined) { - config['headers'] = {} - } - config.headers['Accept'] = 'application/xml', 'application/json' - if (parameters['body'] !== undefined) { - body = parameters['body'] - } - if (parameters['body'] === undefined) { - return Promise.reject(new Error('Missing required parameter: body')) - } - if (parameters.$queryParameters) { - Object.keys(parameters.$queryParameters).forEach(function(parameterName) { - queryParameters[parameterName] = parameters.$queryParameters[parameterName] - }) - } - return request('post', domain + path, body, queryParameters, form, formData, config) -} -export const createUser_RAW_URL = function() { - return '/user' -} -export const createUser_TYPE = function() { - return 'post' -} -export const createUserURL = function(parameters = {}) { - let queryParameters = {} - const domain = parameters.$domain ? parameters.$domain : getDomain() - let path = '/user' - if (parameters.$queryParameters) { - Object.keys(parameters.$queryParameters).forEach(function(parameterName) { - queryParameters[parameterName] = parameters.$queryParameters[parameterName] - }) - } - let keys = Object.keys(queryParameters) - return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') -} -/** - * Creates list of users with given input array - * request: createUsersWithArrayInput - * url: createUsersWithArrayInputURL - * method: createUsersWithArrayInput_TYPE - * raw_url: createUsersWithArrayInput_RAW_URL - * @param body - List of user object - */ -export const createUsersWithArrayInput = function(parameters = {}) { - const domain = parameters.$domain ? parameters.$domain : getDomain() - const config = parameters.$config ? parameters.$config : {} - let path = '/user/createWithArray' - let body - const queryParameters = {} - const form = {} - const formData = new FormData() - if (config['headers'] === undefined) { - config['headers'] = {} - } - config.headers['Accept'] = 'application/xml', 'application/json' - if (parameters['body'] !== undefined) { - body = parameters['body'] - } - if (parameters['body'] === undefined) { - return Promise.reject(new Error('Missing required parameter: body')) - } - if (parameters.$queryParameters) { - Object.keys(parameters.$queryParameters).forEach(function(parameterName) { - queryParameters[parameterName] = parameters.$queryParameters[parameterName] - }) - } - return request('post', domain + path, body, queryParameters, form, formData, config) -} -export const createUsersWithArrayInput_RAW_URL = function() { - return '/user/createWithArray' -} -export const createUsersWithArrayInput_TYPE = function() { - return 'post' -} -export const createUsersWithArrayInputURL = function(parameters = {}) { - let queryParameters = {} - const domain = parameters.$domain ? parameters.$domain : getDomain() - let path = '/user/createWithArray' - if (parameters.$queryParameters) { - Object.keys(parameters.$queryParameters).forEach(function(parameterName) { - queryParameters[parameterName] = parameters.$queryParameters[parameterName] - }) - } - let keys = Object.keys(queryParameters) - return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') -} -/** - * Creates list of users with given input array - * request: createUsersWithListInput - * url: createUsersWithListInputURL - * method: createUsersWithListInput_TYPE - * raw_url: createUsersWithListInput_RAW_URL - * @param body - List of user object - */ -export const createUsersWithListInput = function(parameters = {}) { - const domain = parameters.$domain ? parameters.$domain : getDomain() - const config = parameters.$config ? parameters.$config : {} - let path = '/user/createWithList' - let body - const queryParameters = {} - const form = {} - const formData = new FormData() - if (config['headers'] === undefined) { - config['headers'] = {} - } - config.headers['Accept'] = 'application/xml', 'application/json' - if (parameters['body'] !== undefined) { - body = parameters['body'] - } - if (parameters['body'] === undefined) { - return Promise.reject(new Error('Missing required parameter: body')) - } - if (parameters.$queryParameters) { - Object.keys(parameters.$queryParameters).forEach(function(parameterName) { - queryParameters[parameterName] = parameters.$queryParameters[parameterName] - }) - } - return request('post', domain + path, body, queryParameters, form, formData, config) -} -export const createUsersWithListInput_RAW_URL = function() { - return '/user/createWithList' -} -export const createUsersWithListInput_TYPE = function() { - return 'post' -} -export const createUsersWithListInputURL = function(parameters = {}) { - let queryParameters = {} - const domain = parameters.$domain ? parameters.$domain : getDomain() - let path = '/user/createWithList' - if (parameters.$queryParameters) { - Object.keys(parameters.$queryParameters).forEach(function(parameterName) { - queryParameters[parameterName] = parameters.$queryParameters[parameterName] - }) - } - let keys = Object.keys(queryParameters) - return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') -} -/** - * Logs user into the system - * request: loginUser - * url: loginUserURL - * method: loginUser_TYPE - * raw_url: loginUser_RAW_URL - * @param username - The user name for login - * @param password - The password for login in clear text - */ -export const loginUser = function(parameters = {}) { - const domain = parameters.$domain ? parameters.$domain : getDomain() - const config = parameters.$config ? parameters.$config : {} - let path = '/user/login' - let body - const queryParameters = {} - const form = {} - const formData = new FormData() - if (config['headers'] === undefined) { - config['headers'] = {} - } - config.headers['Accept'] = 'application/xml', 'application/json' - if (parameters['username'] !== undefined) { - queryParameters['username'] = parameters['username'] - } - if (parameters['username'] === undefined) { - return Promise.reject(new Error('Missing required parameter: username')) - } - if (parameters['password'] !== undefined) { - queryParameters['password'] = parameters['password'] - } - if (parameters['password'] === undefined) { - return Promise.reject(new Error('Missing required parameter: password')) - } - if (parameters.$queryParameters) { - Object.keys(parameters.$queryParameters).forEach(function(parameterName) { - queryParameters[parameterName] = parameters.$queryParameters[parameterName] - }) - } - return request('get', domain + path, body, queryParameters, form, formData, config) -} -export const loginUser_RAW_URL = function() { - return '/user/login' -} -export const loginUser_TYPE = function() { - return 'get' -} -export const loginUserURL = function(parameters = {}) { - let queryParameters = {} - const domain = parameters.$domain ? parameters.$domain : getDomain() - let path = '/user/login' - if (parameters['username'] !== undefined) { - queryParameters['username'] = parameters['username'] - } - if (parameters['password'] !== undefined) { - queryParameters['password'] = parameters['password'] - } - if (parameters.$queryParameters) { - Object.keys(parameters.$queryParameters).forEach(function(parameterName) { - queryParameters[parameterName] = parameters.$queryParameters[parameterName] - }) - } - let keys = Object.keys(queryParameters) - return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') -} -/** - * Logs out current logged in user session - * request: logoutUser - * url: logoutUserURL - * method: logoutUser_TYPE - * raw_url: logoutUser_RAW_URL - */ -export const logoutUser = function(parameters = {}) { - const domain = parameters.$domain ? parameters.$domain : getDomain() - const config = parameters.$config ? parameters.$config : {} - let path = '/user/logout' - let body - const queryParameters = {} - const form = {} - const formData = new FormData() - if (config['headers'] === undefined) { - config['headers'] = {} - } - config.headers['Accept'] = 'application/xml', 'application/json' - if (parameters.$queryParameters) { - Object.keys(parameters.$queryParameters).forEach(function(parameterName) { - queryParameters[parameterName] = parameters.$queryParameters[parameterName] - }) - } - return request('get', domain + path, body, queryParameters, form, formData, config) -} -export const logoutUser_RAW_URL = function() { - return '/user/logout' -} -export const logoutUser_TYPE = function() { - return 'get' -} -export const logoutUserURL = function(parameters = {}) { - let queryParameters = {} - const domain = parameters.$domain ? parameters.$domain : getDomain() - let path = '/user/logout' - if (parameters.$queryParameters) { - Object.keys(parameters.$queryParameters).forEach(function(parameterName) { - queryParameters[parameterName] = parameters.$queryParameters[parameterName] - }) - } - let keys = Object.keys(queryParameters) - return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') -} -/** - * Get user by user name - * request: getUserByName - * url: getUserByNameURL - * method: getUserByName_TYPE - * raw_url: getUserByName_RAW_URL - * @param username - The name that needs to be fetched. Use user1 for testing. - */ -export const getUserByName = function(parameters = {}) { - const domain = parameters.$domain ? parameters.$domain : getDomain() - const config = parameters.$config ? parameters.$config : {} - let path = '/user/{username}' - let body - const queryParameters = {} - const form = {} - const formData = new FormData() - if (config['headers'] === undefined) { - config['headers'] = {} - } - config.headers['Accept'] = 'application/xml', 'application/json' - path = path.replace('{username}', `${parameters['username']}`) - if (parameters['username'] === undefined) { - return Promise.reject(new Error('Missing required parameter: username')) - } - if (parameters.$queryParameters) { - Object.keys(parameters.$queryParameters).forEach(function(parameterName) { - queryParameters[parameterName] = parameters.$queryParameters[parameterName] - }) - } - return request('get', domain + path, body, queryParameters, form, formData, config) -} -export const getUserByName_RAW_URL = function() { - return '/user/{username}' -} -export const getUserByName_TYPE = function() { - return 'get' -} -export const getUserByNameURL = function(parameters = {}) { - let queryParameters = {} - const domain = parameters.$domain ? parameters.$domain : getDomain() - let path = '/user/{username}' - path = path.replace('{username}', `${parameters['username']}`) - if (parameters.$queryParameters) { - Object.keys(parameters.$queryParameters).forEach(function(parameterName) { - queryParameters[parameterName] = parameters.$queryParameters[parameterName] - }) - } - let keys = Object.keys(queryParameters) - return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') -} -/** - * This can only be done by the logged in user. - * request: updateUser - * url: updateUserURL - * method: updateUser_TYPE - * raw_url: updateUser_RAW_URL - * @param username - name that need to be updated - * @param body - Updated user object - */ -export const updateUser = function(parameters = {}) { - const domain = parameters.$domain ? parameters.$domain : getDomain() - const config = parameters.$config ? parameters.$config : {} - let path = '/user/{username}' - let body - const queryParameters = {} - const form = {} - const formData = new FormData() - if (config['headers'] === undefined) { - config['headers'] = {} - } - config.headers['Accept'] = 'application/xml', 'application/json' - path = path.replace('{username}', `${parameters['username']}`) - if (parameters['username'] === undefined) { - return Promise.reject(new Error('Missing required parameter: username')) - } - if (parameters['body'] !== undefined) { - body = parameters['body'] - } - if (parameters['body'] === undefined) { - return Promise.reject(new Error('Missing required parameter: body')) - } - if (parameters.$queryParameters) { - Object.keys(parameters.$queryParameters).forEach(function(parameterName) { - queryParameters[parameterName] = parameters.$queryParameters[parameterName] - }) - } - return request('put', domain + path, body, queryParameters, form, formData, config) -} -export const updateUser_RAW_URL = function() { - return '/user/{username}' -} -export const updateUser_TYPE = function() { - return 'put' -} -export const updateUserURL = function(parameters = {}) { - let queryParameters = {} - const domain = parameters.$domain ? parameters.$domain : getDomain() - let path = '/user/{username}' - path = path.replace('{username}', `${parameters['username']}`) - if (parameters.$queryParameters) { - Object.keys(parameters.$queryParameters).forEach(function(parameterName) { - queryParameters[parameterName] = parameters.$queryParameters[parameterName] - }) - } - let keys = Object.keys(queryParameters) - return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') -} -/** - * This can only be done by the logged in user. - * request: deleteUser - * url: deleteUserURL - * method: deleteUser_TYPE - * raw_url: deleteUser_RAW_URL - * @param username - The name that needs to be deleted - */ -export const deleteUser = function(parameters = {}) { - const domain = parameters.$domain ? parameters.$domain : getDomain() - const config = parameters.$config ? parameters.$config : {} - let path = '/user/{username}' - let body - const queryParameters = {} - const form = {} - const formData = new FormData() - if (config['headers'] === undefined) { - config['headers'] = {} - } - config.headers['Accept'] = 'application/xml', 'application/json' - path = path.replace('{username}', `${parameters['username']}`) - if (parameters['username'] === undefined) { - return Promise.reject(new Error('Missing required parameter: username')) - } - if (parameters.$queryParameters) { - Object.keys(parameters.$queryParameters).forEach(function(parameterName) { - queryParameters[parameterName] = parameters.$queryParameters[parameterName] - }) - } - return request('delete', domain + path, body, queryParameters, form, formData, config) -} -export const deleteUser_RAW_URL = function() { - return '/user/{username}' -} -export const deleteUser_TYPE = function() { - return 'delete' -} -export const deleteUserURL = function(parameters = {}) { - let queryParameters = {} - const domain = parameters.$domain ? parameters.$domain : getDomain() - let path = '/user/{username}' - path = path.replace('{username}', `${parameters['username']}`) - if (parameters.$queryParameters) { - Object.keys(parameters.$queryParameters).forEach(function(parameterName) { - queryParameters[parameterName] = parameters.$queryParameters[parameterName] - }) - } - let keys = Object.keys(queryParameters) - return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') -} \ No newline at end of file diff --git a/example/dist/yaml_apis.js b/example/dist/yaml_apis.js new file mode 100644 index 0000000..e8d8674 --- /dev/null +++ b/example/dist/yaml_apis.js @@ -0,0 +1,521 @@ +/** + * @summary Swagger Petstore + * @description This is a sample server Petstore server. You can find out more about Swagger at [http://swagger.io](http://swagger.io) or on [irc + * .freenode.net, #swagger](http://swagger.io/irc/). For this sample, you can use the api key `special-key` to test the authorization filters + * . + * @version 1.0.0 + * @copyright http://swagger.io/terms/ + * @author + * @license Apache 2.0 + */ + +import axios from 'axios' +let domain = 'petstore.swagger.io//v2' +let axiosInstance = axios.create() +export const getDomain = () => { + return domain +} +export const setDomain = ($domain) => { + domain = $domain +} +export const getAxiosInstance = () => { + return axiosInstance +} +export const setAxiosInstance = ($axiosInstance) => { + axiosInstance = $axiosInstance +} + +export const request = (method, url, params, config = {}) => { + method = method.toLowerCase() + let configs = { + method: method, + url: url, + params: params.querys, + headers: params.headers, + data: params.body, + } + const configs = Object.assign(configs, config) + axiosInstance(configs) +} + +/** + * @name PetAddPet + * @method post + * @summary Add a new pet to the store + * @description + * @param { Object } [body] body - Pet object that needs to be added to the store + */ +export const PetAddPet = (parameters = {}) => { + const config = parameters.$config ? parameters.$config : {} + let url = '/pet' + let params = {query: [], headers: [], body: {}} + config.headers['Content-Type'] = 'application/json,application/xml' + config.headers['Accept'] = 'application/xml,application/json' + + if (parameters['body'] !== undefined) { + params.body = parameters['body'] + } + if(parameters['body'] === undefined) { + return Promise.reject(new Error('Missing required Object parameter: body')) + } + return request('post', url, params, config) +} + +/** + * @name PetUpdatePet + * @method put + * @summary Update an existing pet + * @description + * @param { Object } [body] body - Pet object that needs to be added to the store + */ +export const PetUpdatePet = (parameters = {}) => { + const config = parameters.$config ? parameters.$config : {} + let url = '/pet' + let params = {query: [], headers: [], body: {}} + config.headers['Content-Type'] = 'application/json,application/xml' + config.headers['Accept'] = 'application/xml,application/json' + + if (parameters['body'] !== undefined) { + params.body = parameters['body'] + } + if(parameters['body'] === undefined) { + return Promise.reject(new Error('Missing required Object parameter: body')) + } + return request('put', url, params, config) +} + +/** + * @name PetFindPetsByStatus + * @method get + * @summary Finds Pets by status + * @description Multiple status values can be provided with comma separated strings + * @param { Array } [query] status - Status values that need to be considered for filter + */ +export const PetFindPetsByStatus = (parameters = {}) => { + const config = parameters.$config ? parameters.$config : {} + let url = '/pet/findByStatus' + let params = {query: [], headers: [], body: {}} + config.headers['Content-Type'] = 'application/json' + config.headers['Accept'] = 'application/xml,application/json' + + if (parameters['status'] !== undefined) { + params.querys.push(parameters['status']) + } + if(parameters['status'] === undefined) { + return Promise.reject(new Error('Missing required Array parameter: status')) + } + return request('get', url, params, config) +} + +/** + * @name PetFindPetsByTags + * @deprecated + * @method get + * @summary Finds Pets by tags + * @description Muliple tags can be provided with comma separated strings. Use tag1, tag2, tag3 for testing. + * @param { Array } [query] tags - Tags to filter by + */ +export const PetFindPetsByTags = (parameters = {}) => { + const config = parameters.$config ? parameters.$config : {} + let url = '/pet/findByTags' + let params = {query: [], headers: [], body: {}} + config.headers['Content-Type'] = 'application/json' + config.headers['Accept'] = 'application/xml,application/json' + + if (parameters['tags'] !== undefined) { + params.querys.push(parameters['tags']) + } + if(parameters['tags'] === undefined) { + return Promise.reject(new Error('Missing required Array parameter: tags')) + } + return request('get', url, params, config) +} + +/** + * @name PetGetPetById + * @method get + * @summary Find pet by ID + * @description Returns a single pet + * @param { Integer } [path] petId - ID of pet to return + */ +export const PetGetPetById = (parameters = {}) => { + const config = parameters.$config ? parameters.$config : {} + let url = '/pet/{petId}' + let params = {query: [], headers: [], body: {}} + config.headers['Content-Type'] = 'application/json' + config.headers['Accept'] = 'application/xml,application/json' + + if (parameters['petId'] !== undefined) { + url = url.replace('{petId}', parameters['petId']) + } + if(parameters['petId'] === undefined) { + return Promise.reject(new Error('Missing required Integer parameter: petId')) + } + return request('get', url, params, config) +} + +/** + * @name PetUpdatePetWithForm + * @method post + * @summary Updates a pet in the store with form data + * @description + * @param { Integer } [path] petId - ID of pet that needs to be updated + * @param { String } [formData] name - Updated name of the pet + * @param { String } [formData] status - Updated status of the pet + */ +export const PetUpdatePetWithForm = (parameters = {}) => { + const config = parameters.$config ? parameters.$config : {} + let url = '/pet/{petId}' + let params = {query: [], headers: [], body: {}} + config.headers['Content-Type'] = 'application/x-www-form-urlencoded' + config.headers['Accept'] = 'application/xml,application/json' + let formData = new URLSearchParams() + if (parameters['petId'] !== undefined) { + url = url.replace('{petId}', parameters['petId']) + } + if(parameters['petId'] === undefined) { + return Promise.reject(new Error('Missing required Integer parameter: petId')) + } + if (parameters['name'] !== undefined) { + formData.append('name', parameters['name']) + } + if (parameters['status'] !== undefined) { + formData.append('status', parameters['status']) + } + return request('post', url, params, config) +} + +/** + * @name PetDeletePet + * @method delete + * @summary Deletes a pet + * @description + * @param { String } [header] api_key - + * @param { Integer } [path] petId - Pet id to delete + */ +export const PetDeletePet = (parameters = {}) => { + const config = parameters.$config ? parameters.$config : {} + let url = '/pet/{petId}' + let params = {query: [], headers: [], body: {}} + config.headers['Content-Type'] = 'application/json' + config.headers['Accept'] = 'application/xml,application/json' + + if (parameters['api_key'] !== undefined) { + params.headers.push(parameters['api_key']) + } + if (parameters['petId'] !== undefined) { + url = url.replace('{petId}', parameters['petId']) + } + if(parameters['petId'] === undefined) { + return Promise.reject(new Error('Missing required Integer parameter: petId')) + } + return request('delete', url, params, config) +} + +/** + * @name PetUploadFile + * @method post + * @summary uploads an image + * @description + * @param { Integer } [path] petId - ID of pet to update + * @param { String } [formData] additionalMetadata - Additional data to pass to server + * @param { File } [formData] file - file to upload + */ +export const PetUploadFile = (parameters = {}) => { + const config = parameters.$config ? parameters.$config : {} + let url = '/pet/{petId}/uploadImage' + let params = {query: [], headers: [], body: {}} + config.headers['Content-Type'] = 'multipart/form-data' + config.headers['Accept'] = 'application/json' + let formData = new FormData() + if (parameters['petId'] !== undefined) { + url = url.replace('{petId}', parameters['petId']) + } + if(parameters['petId'] === undefined) { + return Promise.reject(new Error('Missing required Integer parameter: petId')) + } + if (parameters['additionalMetadata'] !== undefined) { + formData.append('additionalMetadata', parameters['additionalMetadata']) + } + if (parameters['file'] !== undefined) { + formData.append('file', parameters['file']) + } + return request('post', url, params, config) +} + +/** + * @name StoreGetInventory + * @method get + * @summary Returns pet inventories by status + * @description Returns a map of status codes to quantities + */ +export const StoreGetInventory = (parameters = {}) => { + const config = parameters.$config ? parameters.$config : {} + let url = '/store/inventory' + let params = {query: [], headers: [], body: {}} + config.headers['Content-Type'] = 'application/json' + config.headers['Accept'] = 'application/json' + + return request('get', url, params, config) +} + +/** + * @name StorePlaceOrder + * @method post + * @summary Place an order for a pet + * @description + * @param { Object } [body] body - order placed for purchasing the pet + */ +export const StorePlaceOrder = (parameters = {}) => { + const config = parameters.$config ? parameters.$config : {} + let url = '/store/order' + let params = {query: [], headers: [], body: {}} + config.headers['Content-Type'] = 'application/json' + config.headers['Accept'] = 'application/xml,application/json' + + if (parameters['body'] !== undefined) { + params.body = parameters['body'] + } + if(parameters['body'] === undefined) { + return Promise.reject(new Error('Missing required Object parameter: body')) + } + return request('post', url, params, config) +} + +/** + * @name StoreGetOrderById + * @method get + * @summary Find purchase order by ID + * @description For valid response try integer IDs with value >= 1 and <= 10. Other values will generated exceptions + * @param { Integer } [path] orderId - ID of pet that needs to be fetched + */ +export const StoreGetOrderById = (parameters = {}) => { + const config = parameters.$config ? parameters.$config : {} + let url = '/store/order/{orderId}' + let params = {query: [], headers: [], body: {}} + config.headers['Content-Type'] = 'application/json' + config.headers['Accept'] = 'application/xml,application/json' + + if (parameters['orderId'] !== undefined) { + url = url.replace('{orderId}', parameters['orderId']) + } + if(parameters['orderId'] === undefined) { + return Promise.reject(new Error('Missing required Integer parameter: orderId')) + } + return request('get', url, params, config) +} + +/** + * @name StoreDeleteOrder + * @method delete + * @summary Delete purchase order by ID + * @description For valid response try integer IDs with positive integer value. Negative or non-integer values will generate API errors + * @param { Integer } [path] orderId - ID of the order that needs to be deleted + */ +export const StoreDeleteOrder = (parameters = {}) => { + const config = parameters.$config ? parameters.$config : {} + let url = '/store/order/{orderId}' + let params = {query: [], headers: [], body: {}} + config.headers['Content-Type'] = 'application/json' + config.headers['Accept'] = 'application/xml,application/json' + + if (parameters['orderId'] !== undefined) { + url = url.replace('{orderId}', parameters['orderId']) + } + if(parameters['orderId'] === undefined) { + return Promise.reject(new Error('Missing required Integer parameter: orderId')) + } + return request('delete', url, params, config) +} + +/** + * @name UserCreateUser + * @method post + * @summary Create user + * @description This can only be done by the logged in user. + * @param { Object } [body] body - Created user object + */ +export const UserCreateUser = (parameters = {}) => { + const config = parameters.$config ? parameters.$config : {} + let url = '/user' + let params = {query: [], headers: [], body: {}} + config.headers['Content-Type'] = 'application/json' + config.headers['Accept'] = 'application/xml,application/json' + + if (parameters['body'] !== undefined) { + params.body = parameters['body'] + } + if(parameters['body'] === undefined) { + return Promise.reject(new Error('Missing required Object parameter: body')) + } + return request('post', url, params, config) +} + +/** + * @name UserCreateUsersWithArrayInput + * @method post + * @summary Creates list of users with given input array + * @description + * @param { Object } [body] body - List of user object + */ +export const UserCreateUsersWithArrayInput = (parameters = {}) => { + const config = parameters.$config ? parameters.$config : {} + let url = '/user/createWithArray' + let params = {query: [], headers: [], body: {}} + config.headers['Content-Type'] = 'application/json' + config.headers['Accept'] = 'application/xml,application/json' + + if (parameters['body'] !== undefined) { + params.body = parameters['body'] + } + if(parameters['body'] === undefined) { + return Promise.reject(new Error('Missing required Object parameter: body')) + } + return request('post', url, params, config) +} + +/** + * @name UserCreateUsersWithListInput + * @method post + * @summary Creates list of users with given input array + * @description + * @param { Object } [body] body - List of user object + */ +export const UserCreateUsersWithListInput = (parameters = {}) => { + const config = parameters.$config ? parameters.$config : {} + let url = '/user/createWithList' + let params = {query: [], headers: [], body: {}} + config.headers['Content-Type'] = 'application/json' + config.headers['Accept'] = 'application/xml,application/json' + + if (parameters['body'] !== undefined) { + params.body = parameters['body'] + } + if(parameters['body'] === undefined) { + return Promise.reject(new Error('Missing required Object parameter: body')) + } + return request('post', url, params, config) +} + +/** + * @name UserLoginUser + * @method get + * @summary Logs user into the system + * @description + * @param { String } [query] username - The user name for login + * @param { String } [query] password - The password for login in clear text + */ +export const UserLoginUser = (parameters = {}) => { + const config = parameters.$config ? parameters.$config : {} + let url = '/user/login' + let params = {query: [], headers: [], body: {}} + config.headers['Content-Type'] = 'application/json' + config.headers['Accept'] = 'application/xml,application/json' + + if (parameters['username'] !== undefined) { + params.querys.push(parameters['username']) + } + if(parameters['username'] === undefined) { + return Promise.reject(new Error('Missing required String parameter: username')) + } + if (parameters['password'] !== undefined) { + params.querys.push(parameters['password']) + } + if(parameters['password'] === undefined) { + return Promise.reject(new Error('Missing required String parameter: password')) + } + return request('get', url, params, config) +} + +/** + * @name UserLogoutUser + * @method get + * @summary Logs out current logged in user session + * @description + */ +export const UserLogoutUser = (parameters = {}) => { + const config = parameters.$config ? parameters.$config : {} + let url = '/user/logout' + let params = {query: [], headers: [], body: {}} + config.headers['Content-Type'] = 'application/json' + config.headers['Accept'] = 'application/xml,application/json' + + return request('get', url, params, config) +} + +/** + * @name UserGetUserByName + * @method get + * @summary Get user by user name + * @description + * @param { String } [path] username - The name that needs to be fetched. Use user1 for testing. + */ +export const UserGetUserByName = (parameters = {}) => { + const config = parameters.$config ? parameters.$config : {} + let url = '/user/{username}' + let params = {query: [], headers: [], body: {}} + config.headers['Content-Type'] = 'application/json' + config.headers['Accept'] = 'application/xml,application/json' + + if (parameters['username'] !== undefined) { + url = url.replace('{username}', parameters['username']) + } + if(parameters['username'] === undefined) { + return Promise.reject(new Error('Missing required String parameter: username')) + } + return request('get', url, params, config) +} + +/** + * @name UserUpdateUser + * @method put + * @summary Updated user + * @description This can only be done by the logged in user. + * @param { String } [path] username - name that need to be updated + * @param { Object } [body] body - Updated user object + */ +export const UserUpdateUser = (parameters = {}) => { + const config = parameters.$config ? parameters.$config : {} + let url = '/user/{username}' + let params = {query: [], headers: [], body: {}} + config.headers['Content-Type'] = 'application/json' + config.headers['Accept'] = 'application/xml,application/json' + + if (parameters['username'] !== undefined) { + url = url.replace('{username}', parameters['username']) + } + if(parameters['username'] === undefined) { + return Promise.reject(new Error('Missing required String parameter: username')) + } + if (parameters['body'] !== undefined) { + params.body = parameters['body'] + } + if(parameters['body'] === undefined) { + return Promise.reject(new Error('Missing required Object parameter: body')) + } + return request('put', url, params, config) +} + +/** + * @name UserDeleteUser + * @method delete + * @summary Delete user + * @description This can only be done by the logged in user. + * @param { String } [path] username - The name that needs to be deleted + */ +export const UserDeleteUser = (parameters = {}) => { + const config = parameters.$config ? parameters.$config : {} + let url = '/user/{username}' + let params = {query: [], headers: [], body: {}} + config.headers['Content-Type'] = 'application/json' + config.headers['Accept'] = 'application/xml,application/json' + + if (parameters['username'] !== undefined) { + url = url.replace('{username}', parameters['username']) + } + if(parameters['username'] === undefined) { + return Promise.reject(new Error('Missing required String parameter: username')) + } + return request('delete', url, params, config) +} + diff --git a/index.js b/index.js index f3f95da..70b5c14 100644 --- a/index.js +++ b/index.js @@ -1,5 +1,3 @@ -const parse = require('./lib/parse.js') -const codegen = require('./lib/codegen.js') -module.exports = function(opt) { - codegen(parse(opt)) -} +'use strict' +var SwaggerBuilder = require('./lib/swagger-builder.js') +module.exports = SwaggerBuilder diff --git a/lib/codegen.js b/lib/codegen.js deleted file mode 100644 index 4270056..0000000 --- a/lib/codegen.js +++ /dev/null @@ -1,50 +0,0 @@ -const Handlebars = require('handlebars') -const fs = require('fs') -const path = require('path') -const beautify = require('js-beautify').js -const apiTemplate = fs.readFileSync(path.join(__dirname, './template/api.hbs'), 'utf-8') -const methods = fs.readFileSync(path.join(__dirname, './template/methods.hbs'), 'utf-8') -const method = fs.readFileSync(path.join(__dirname, './template/method.hbs'), 'utf-8') -Handlebars.registerPartial('methods', methods) -Handlebars.registerPartial('method', method) -Handlebars.registerHelper('toLowerCase', function(word) { - return word.toLowerCase() -}) -Handlebars.registerHelper('brackets', function(word) { - return `{${word}}` -}) - -const writeApiFile = function(info) { - let template = Handlebars.compile(apiTemplate)(info) - template = beautify(template, { indent_size: 2, max_preserve_newlines: -1 }) - const distFileName = path.join(info.dist, 'api' + '.js') - fs.writeFile(distFileName, template, function(err) { - if (err) { - console.log('writeFile err', err) - } else { - console.log('writeFile ok') - } - }) -} - -const writeTagFile = function(name, tag) { - let template = Handlebars.compile(methods)(tag) - template = beautify(template, { indent_size: 2, max_preserve_newlines: -1 }) - const distFileName = path.join(tag.dist, name + '.js') - fs.writeFile(distFileName, template, function(err) { - if (err) { - console.log('writeFile err', err) - } - }) -} - -module.exports = function(data) { - writeApiFile(data.info) - const tags = data.tags - for (const name in tags) { - (function(name, tags) { - writeTagFile(name, tags[name]) - }(name, tags)) - } - return -} diff --git a/lib/parse.js b/lib/parse.js deleted file mode 100644 index 31b825c..0000000 --- a/lib/parse.js +++ /dev/null @@ -1,183 +0,0 @@ -'use strict' -const _ = require('lodash') -const normalizeName = function(id) { - /* eslint-disable */ - return id.replace(/\.|\-|\{|\}/g, '_').split(" ").join("_") - /* eslint-enable */ -} - -const getPathToMethodName = function(opts, m, path) { - if (path === '/' || path === '') { - return m - } - - // clean url path for requests ending with '/' - const cleanPath = path.replace(/\/$/, '') - - let segments = cleanPath.split('/').slice(1) - segments = _.transform(segments, function(result, segment) { - if (segment[0] === '{' && segment[segment.length - 1] === '}') { - segment = 'by' + segment[1].toUpperCase() + segment.substring(2, segment.length - 1) - } - result.push(segment) - }) - const result = _.camelCase(segments.join('-')) - return m.toLowerCase() + result[0].toUpperCase() + result.substring(1) -} - -const getApiInfo = function(opts) { - const swagger = opts.swagger - let domain = '' - if (swagger.schemes && swagger.schemes.length > 0 && swagger.host && swagger.basePath) { - domain = swagger.schemes[0] + '://' + swagger.host + swagger.basePath.replace(/\/+$/g, '') - } - const info = { - moduleName: opts.moduleName, - className: opts.className, - dist: opts.dist, - domain: domain - } - return info -} - -const getApiTags = function(opts) { - const swagger = opts.swagger - const tags = {} - _.forEach(swagger.tags, function(tag) { - tags[tag.name] = { - name: tag.name, - description: tag.description, - dist: opts.dist, - definitions: getApiDefinitions(opts), - methods: [] - } - }) - tags['other'] = { - name: 'other', - description: 'other apis', - dist: opts.dist, - definitions: getApiDefinitions(opts), - methods: [] - } - return tags -} - -const getApiHeaders = function(opts, op) { - const swagger = opts.swagger - const headers = [] - if (op.produces) { - const value = op.produces.map(function(value) { return '\'' + value + '\'' }).join(', ') - headers.push({ name: 'Accept', value: value }) - } - const consumes = op.consumes || swagger.consumes - if (consumes) { - headers.push({ name: 'Content-Type', value: '\'' + consumes + '\'' }) - } - return headers -} - -const getApiDefinitions = function(opts) { - const swagger = opts.swagger - const definitions = [] - _.forEach(swagger.definitions, function(definition, name) { - definitions.push({ - name: name - }) - }) - return definitions -} - -const getApiParameters = function(opts, op, globalParams) { - const swagger = opts.swagger - const parameters = [] - let params = [] - if (_.isArray(op.parameters)) { - params = op.parameters - } - params = params.concat(globalParams) - _.forEach(params, function(parameter) { - // Ignore parameters which contain the x-exclude-from-bindings extension - if (parameter['x-exclude-from-bindings'] === true) { - return - } - if (_.isString(parameter.$ref)) { - const segments = parameter.$ref.split('/') - parameter = swagger.parameters[segments.length === 1 ? segments[0] : segments[2]] - } - parameter.camelCaseName = _.camelCase(parameter.name) - if (parameter.enum && parameter.enum.length === 1) { - parameter.isSingleton = true - parameter.singleton = parameter.enum[0] - } - if (parameter.in === 'body') { - parameter.isBodyParameter = true - } else if (parameter.in === 'path') { - parameter.isPathParameter = true - } else if (parameter.in === 'query') { - if (parameter['x-name-pattern']) { - parameter.isPatternType = true - parameter.pattern = parameter['x-name-pattern'] - } - parameter.isQueryParameter = true - } else if (parameter.in === 'header') { - parameter.isHeaderParameter = true - } else if (parameter.in === 'formData') { - const consumes = op.consumes || swagger.consumes - if (consumes.indexOf('multipart/form-data') !== -1) { - parameter.isFormDataParameter = true - } else { - parameter.isFormParameter = true - } - } - parameter.cardinality = parameter.required ? '' : '?' - parameters.push(parameter) - }) - return parameters -} - -const getViewForSwagger2 = function(opts) { - const swagger = opts.swagger - const authorizedMethods = ['GET', 'POST', 'PUT', 'DELETE', 'PATCH', 'COPY', 'HEAD', 'OPTIONS', 'LINK', 'UNLIK', 'PURGE', 'LOCK', 'UNLOCK', 'PROPFIND'] - var data = { - info: getApiInfo(opts), - tags: getApiTags(opts) - } - - _.forEach(swagger.paths, function(api, path) { - let globalParams = [] - _.forEach(api, function(op, m) { - if (m.toLowerCase() === 'parameters') { - globalParams = op - } - }) - _.forEach(api, function(op, m) { - if (authorizedMethods.indexOf(m.toUpperCase()) === -1) { - return - } - var method = { - path: path, - className: opts.className, - methodName: op.operationId ? normalizeName(op.operationId) : getPathToMethodName(opts, m, path), - method: m.toUpperCase(), - summary: op.description || op.summary, - tags: op.tags, - externalDocs: op.externalDocs, - parameters: getApiParameters(opts, op, globalParams), - headers: getApiHeaders(opts, op) - } - if ((op.tags.length === 0) || (op.tags === undefined)) { - data.tags['other'].methods.push(method) - } else { - data.tags[op.tags[0]].methods.push(method) - } - }) - }) - return data -} - -const parse = function(opts) { - const data = getViewForSwagger2(opts) - return data -} - -module.exports = parse diff --git a/lib/swagger-builder.js b/lib/swagger-builder.js new file mode 100644 index 0000000..34c871f --- /dev/null +++ b/lib/swagger-builder.js @@ -0,0 +1,165 @@ +const SwaggerParser = require('swagger-parser') +const fs = require('fs') +const path = require('path') +const Handlebars = require('handlebars') +const apiTmpl = fs.readFileSync(path.join(__dirname, './tmpl/api.hbs'), 'utf-8') +const methods = fs.readFileSync(path.join(__dirname, './tmpl/methods.hbs'), 'utf-8') +const method = fs.readFileSync(path.join(__dirname, './tmpl/method.hbs'), 'utf-8') +Handlebars.registerPartial('methods', methods) +Handlebars.registerPartial('method', method) +Handlebars.registerHelper('wrap-helper', (object) => { + const descriptions = [] + if (typeof object === 'string') { + let description = ' * @description ' + object + while (description.length > 150) { + descriptions.push(description.substr(0, 150) + '\n') + description = ' * ' + description.substr(150) + } + descriptions.push(description + '') + } + return new Handlebars.SafeString(descriptions.join('')) +}) +Handlebars.registerHelper('form-data-helper', (object) => { + let ret = '' + if (object.indexOf('multipart/form-data') !== -1) { + ret = ` let formData = new FormData()` + } + if (object.indexOf('application/x-www-form-urlencoded') !== -1) { + ret = ` let formData = new URLSearchParams()` + } + return new Handlebars.SafeString(ret) +}) + +Handlebars.registerHelper('compare-helper', (object) => { + let ret = '' + if (object.in === 'query') { + ret = ` params.querys.push(parameters['` + object.name + `'])` + } + if (object.in === 'header') { + ret = ` params.headers.push(parameters['` + object.name + `'])` + } + if (object.in === 'body') { + ret = ` params.body = parameters['` + object.name + `']` + } + if (object.in === 'path') { + ret = ` url = url.replace('{` + object.name + `}', parameters['` + object.name + `'])` + } + if (object.in === 'formData') { + ret = ` formData.append('` + object.name + `', parameters['` + object.name + `'])` + } + return new Handlebars.SafeString(ret) +}) + +module.exports.SwaggerBuilder = (filename, callback) => { + SwaggerParser.validate(filename, (err, api) => { + if (err) { + console.error(err) + } else { + const swagger = fliterApi(api) + const template = Handlebars.compile(apiTmpl)(swagger) + callback(template) + } + }) +} + +function fliterApi(api) { + const swagger = { + info: api.info, + host: api.host, + basePath: api.basePath, + schemes: api.schemes, + tags: [] + } + + // Init tags from swagger's tags + // We only add methods array to tag's object + const _tags = api.tags + const tags = [] + _tags.forEach(_tag => { + const tag = { + name: _tag.name, + description: _tag.description, + methods: [] + } + tags.push(tag) + }) + + // Analyse paths + const paths = api.paths + for (const path in paths) { + for (const type in paths[path]) { + const operation = paths[path][type] + const tagsname = operation.tags + tagsname.forEach(tagname => { + // If tagname === undefine + if (tagname === undefined || tagname === '') { + tagname = 'default' + } + // Check tag if in the tags + let tag = tags.find((tag) => { + return tag.name === tagname + }) + if (tag === undefined) { + tag = { + name: tagname, + description: tagname, + methods: [] + } + tags.push(tag) + } + + // Analyse operationId + const operationId = toUpperFirstCase(tag.name) + toUpperFirstCase(operation.operationId) + + // Analyse parameters + const parameters = [] + if (operation.parameters !== undefined) { + operation.parameters.forEach(element => { + let type = 'Object' + if (element.type !== undefined) { + type = toUpperFirstCase(element.type) + } + const parameter = element + parameter.type = type + parameters.push(parameter) + }) + } + + // Analyse consumes + let consumes = ['application/json'] + if (operation.consumes !== undefined) { + consumes = operation.consumes.join(',') + } + + // Analyse produces + let produces = ['application/json'] + if (operation.produces !== undefined) { + produces = operation.produces.join(',') + } + + // Analyse method + const method = { + method: type.toLowerCase(), + path: path, + summary: operation.summary, + description: operation.description, + operationId: operationId, + consumes: consumes, + produces: produces, + parameters: parameters, + deprecated: operation.deprecated + } + + // add method to tag + tag.methods.push(method) + }) + } + } + + swagger.tags = tags + return swagger +} + +function toUpperFirstCase(str) { + return str.replace(/( |^)[a-z]/g, (L) => L.toUpperCase()) +} diff --git a/lib/template/api.hbs b/lib/template/api.hbs deleted file mode 100644 index 17d69ee..0000000 --- a/lib/template/api.hbs +++ /dev/null @@ -1,56 +0,0 @@ -/* eslint-disable */ -import axios from 'axios' -import qs from 'qs' -let domain = '{{&domain}}' -let axiosInstance = axios.create() - -const ContentType_MultipartFormData = 'multipart/form-data' - -export const getDomain = () => { - return domain -} -export const setDomain = ($domain) => { - domain = $domain -} -export const getAxiosInstance = () => { - return axiosInstance -} -export const setAxiosInstance = ($axiosInstance) => { - axiosInstance = $axiosInstance -} -function isFormData(config) { - if (config !== undefined && - config.headers !== undefined && - config.headers['Content-Type'] !== undefined && - config.headers['Content-Type'].indexOf(ContentType_MultipartFormData) !== -1) { - return true - } else { - return false - } -} -export const request = (method, url, body, queryParameters, form, formData, config = {})=>{ - method = method.toLowerCase() - const keys = Object.keys(queryParameters) - let queryUrl = url - if ( keys.length > 0 ) { - queryUrl = url + '?' + qs.stringify(queryParameters) - } - // let queryUrl = url+(keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')) : '') - if(body){ - if (method === 'delete') { - config.data = body - return axiosInstance[method](queryUrl,config) - } else { - return axiosInstance[method](queryUrl,body,config) - } - } else if (method === 'get' || method === 'delete' || method === 'head' || method === 'option') { - return axiosInstance[method](queryUrl,config) - } else { - if (isFormData(config)) { - return axiosInstance[method](queryUrl, formData, config) - } else { - return axiosInstance[method](queryUrl, qs.stringify(form), config) - } - } -} - diff --git a/lib/template/method.hbs b/lib/template/method.hbs deleted file mode 100644 index 671e150..0000000 --- a/lib/template/method.hbs +++ /dev/null @@ -1,103 +0,0 @@ -/** -* {{&summary}} -* request: {{&methodName}} -* url: {{&methodName}}URL -* method: {{&methodName}}_TYPE -* raw_url: {{&methodName}}_RAW_URL -{{#parameters}} -{{^isSingleton}}* @param {{&camelCaseName}} - {{&description}}{{/isSingleton}} -{{/parameters}} -*/ -export const {{&methodName}} = function(parameters = {}) { - const domain = parameters.$domain ? parameters.$domain : getDomain() - const config = parameters.$config ? parameters.$config : {} - let path = '{{&path}}' - let body - const queryParameters = {} - const form = {} - const formData = new FormData() - - if (config['headers'] === undefined) { - config['headers'] = {} - } -{{#headers}} - config.headers['{{&name}}'] = {{&value}} -{{/headers}} - -{{#parameters}} - - {{#isQueryParameter}} - if(parameters['{{&camelCaseName}}'] !== undefined) { - queryParameters['{{&name}}'] = parameters['{{&camelCaseName}}'] - } - {{/isQueryParameter}} - - {{#isPathParameter}} - path = path.replace('{{brackets name}}', `${parameters['{{&camelCaseName}}']}`) - {{/isPathParameter}} - - {{#isBodyParameter}} - if(parameters['{{&camelCaseName}}'] !== undefined) { - body = parameters['{{&camelCaseName}}'] - } - {{/isBodyParameter}} - - {{#isFormParameter}} - if(parameters['{{&camelCaseName}}'] !== undefined) { - form['{{&name}}'] = parameters['{{&camelCaseName}}'] - } - {{/isFormParameter}} - - {{#isFormDataParameter}} - if(parameters['{{&camelCaseName}}'] !== undefined) { - formData.append('{{&name}}', parameters['{{&camelCaseName}}']) - } - {{/isFormDataParameter}} - - {{#required}} - if(parameters['{{&camelCaseName}}'] === undefined) { - return Promise.reject(new Error('Missing required {{¶mType}} parameter: {{&camelCaseName}}')) - } - {{/required}} - -{{/parameters}} - -if(parameters.$queryParameters) { - Object.keys(parameters.$queryParameters).forEach(function(parameterName){ - queryParameters[parameterName] = parameters.$queryParameters[parameterName] - }) -} - - return request('{{toLowerCase method}}', domain + path, body, queryParameters, form, formData, config) -} - -export const {{&methodName}}_RAW_URL = function () { - return '{{&path}}' -} -export const {{&methodName}}_TYPE = function () { - return '{{toLowerCase method}}' -} -export const {{&methodName}}URL = function(parameters = {}){ - let queryParameters = {} - const domain = parameters.$domain ? parameters.$domain : getDomain() - let path = '{{&path}}' - {{#parameters}} - {{#isQueryParameter}} - if(parameters['{{&camelCaseName}}'] !== undefined){ - queryParameters['{{&name}}'] = parameters['{{&camelCaseName}}'] - } - {{/isQueryParameter}} - {{#isPathParameter}} - path = path.replace('{{brackets name}}', `${parameters['{{&camelCaseName}}']}`) - {{/isPathParameter}} - {{/parameters}} - - if(parameters.$queryParameters) { - Object.keys(parameters.$queryParameters).forEach(function(parameterName) { - queryParameters[parameterName] = parameters.$queryParameters[parameterName] - }) - } - - let keys = Object.keys(queryParameters) - return domain + path + (keys.length > 0 ? '?' + (keys.map(key => key + '=' + encodeURIComponent(queryParameters[key])).join('&')): '') -} diff --git a/lib/template/methods.hbs b/lib/template/methods.hbs deleted file mode 100644 index 4e8ef08..0000000 --- a/lib/template/methods.hbs +++ /dev/null @@ -1,8 +0,0 @@ -/* eslint-disable */ -/* ========================================================== - * {{&description}} - ==========================================================*/ -import { request, getDomain } from './api.js' -{{#methods}} - {{> method }} -{{/methods}} diff --git a/lib/tmpl/api.hbs b/lib/tmpl/api.hbs new file mode 100644 index 0000000..ad958d8 --- /dev/null +++ b/lib/tmpl/api.hbs @@ -0,0 +1,47 @@ +{{#with info}} +/** + * @summary {{ title }} +{{ wrap-helper description }} + * @version {{ version }} +{{#if termsOfService}} + * @copyright {{ termsOfService }} +{{/if}} +{{#if contact.email}} + * @author <{{ contact.email }}> +{{/if}} +{{#if license}} + * @license {{ license.name }} +{{/if}} + */ +{{/with}} + +import axios from 'axios' +let domain = '{{host}}/{{basePath}}' +let axiosInstance = axios.create() +export const getDomain = () => { + return domain +} +export const setDomain = ($domain) => { + domain = $domain +} +export const getAxiosInstance = () => { + return axiosInstance +} +export const setAxiosInstance = ($axiosInstance) => { + axiosInstance = $axiosInstance +} + +export const request = (method, url, params, config = {}) => { + method = method.toLowerCase() + let configs = { + method: method, + url: url, + params: params.querys, + headers: params.headers, + data: params.body, + } + const configs = Object.assign(configs, config) + axiosInstance(configs) +} + +{{> methods }} \ No newline at end of file diff --git a/lib/tmpl/method.hbs b/lib/tmpl/method.hbs new file mode 100644 index 0000000..59d468c --- /dev/null +++ b/lib/tmpl/method.hbs @@ -0,0 +1,36 @@ +/** + * @name {{operationId}} +{{#if deprecated}} + * @deprecated +{{/if}} + * @method {{method}} + * @summary {{ summary }} +{{ wrap-helper description }} +{{#parameters}} + * @param { {{type}} } [{{in}}] {{name}} - {{description}} +{{/parameters}} + */ +export const {{operationId}} = (parameters = {}) => { + const config = parameters.$config ? parameters.$config : {} + let url = '{{path}}' + let params = {query: [], headers: [], body: {}} +{{#if consumes}} + config.headers['Content-Type'] = '{{consumes}}' +{{/if}} +{{#if produces}} + config.headers['Accept'] = '{{produces}}' +{{/if}} +{{form-data-helper consumes}} +{{#parameters}} + if (parameters['{{name}}'] !== undefined) { +{{compare-helper this}} + } +{{#required}} + if(parameters['{{name}}'] === undefined) { + return Promise.reject(new Error('Missing required {{type}} parameter: {{name}}')) + } +{{/required}} +{{/parameters}} + return request('{{method}}', url, params, config) +} + diff --git a/lib/tmpl/methods.hbs b/lib/tmpl/methods.hbs new file mode 100644 index 0000000..a3c416d --- /dev/null +++ b/lib/tmpl/methods.hbs @@ -0,0 +1,5 @@ +{{#tags}} +{{#methods}} +{{> method}} +{{/methods}} +{{/tags}} \ No newline at end of file diff --git a/package.json b/package.json index 137014f..b6162ff 100644 --- a/package.json +++ b/package.json @@ -1,25 +1,14 @@ { "name": "swagger-builder", - "version": "1.0.0", + "version": "2.0.0", "description": "build swagger to javascript with axios", "author": "kaisawind ", "license": "MIT", - "private": true, - "scripts": { - "build:swagger": "grunt vue" - }, - "swagger": { - "definition": "./example/swagger/swagger.json", - "className": "API", - "moduleName": "apis", - "dist": "./example/dist" - }, - "lint-staged": { - "src/**/*.{js,vue}": [ - "eslint --fix", - "git add" - ] - }, + "keywords": [ + "swagger", + "parser", + "axios" + ], "repository": { "type": "git", "url": "git+https://github.com/kaisawind/swagger-builder.git" @@ -27,24 +16,28 @@ "bugs": { "url": "https://github.com/kaisawind/swagger-builder/issues" }, + "bin": { + "swagger-builder": "bin/swagger-builder.js" + }, "dependencies": { - "axios": "0.19.0" + "argparse": "^1.0.10", + "handlebars": "^4.1.2", + "swagger-parser": "^7.0.1" }, "devDependencies": { - "grunt": "^1.0.4", - "grunt-cli": "^1.3.2", - "handlebars": "^4.1.1", - "js-beautify": "1.10.0", - "js-yaml": "^3.13.1", - "lodash": "^4.17.11" + "eslint": "^6.0.1" }, "engines": { - "node": ">= 6.0.0", + "node": ">= 8.0.0", "npm": ">= 3.0.0" }, "browserslist": [ "> 1%", "last 2 versions", "not ie <= 8" - ] + ], + "scripts": { + "test-yaml": "./bin/swagger-builder.js -f=./example/swagger/swagger.yaml -o=./example/dist/yaml_apis.js", + "test-json": "./bin/swagger-builder.js -f=./example/swagger/swagger.json -o=./example/dist/json_apis.js" + } } diff --git a/yarn.lock b/yarn.lock index 21964b6..8e91b97 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1,1689 +1,947 @@ -# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. -# yarn lockfile v1 - - -abbrev@1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" - integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== - -ansi-styles@^3.2.1: - version "3.2.1" - resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" - integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== - dependencies: - color-convert "^1.9.0" - -argparse@^1.0.7: - version "1.0.10" - resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" - integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== - dependencies: - sprintf-js "~1.0.2" - -arr-diff@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" - integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= - -arr-flatten@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" - integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== - -arr-union@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" - integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= - -array-each@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f" - integrity sha1-p5SvDAWrF1KEbudTofIRoFugxE8= - -array-find-index@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/array-find-index/-/array-find-index-1.0.2.tgz#df010aa1287e164bbda6f9723b0a96a1ec4187a1" - integrity sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E= - -array-slice@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-1.1.0.tgz#e368ea15f89bc7069f7ffb89aec3a6c7d4ac22d4" - integrity sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w== - -array-unique@^0.3.2: - version "0.3.2" - resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" - integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= - -assign-symbols@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" - integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= - -async@~1.5.2: - version "1.5.2" - resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" - integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= - -atob@^2.1.1: - version "2.1.2" - resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" - integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== - -axios@0.19.0: - version "0.19.0" - resolved "https://registry.npm.taobao.org/axios/download/axios-0.19.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Faxios%2Fdownload%2Faxios-0.19.0.tgz#8e09bff3d9122e133f7b8101c8fbdd00ed3d2ab8" - integrity sha1-jgm/89kSLhM/e4EByPvdAO09Krg= - dependencies: - follow-redirects "1.5.10" - is-buffer "^2.0.2" - -balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= - -base@^0.11.1: - version "0.11.2" - resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" - integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== - dependencies: - cache-base "^1.0.1" - class-utils "^0.3.5" - component-emitter "^1.2.1" - define-property "^1.0.0" - isobject "^3.0.1" - mixin-deep "^1.2.0" - pascalcase "^0.1.1" - -brace-expansion@^1.1.7: - version "1.1.11" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" - integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== - dependencies: - balanced-match "^1.0.0" - concat-map "0.0.1" - -braces@^2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" - integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== - dependencies: - arr-flatten "^1.1.0" - array-unique "^0.3.2" - extend-shallow "^2.0.1" - fill-range "^4.0.0" - isobject "^3.0.1" - repeat-element "^1.1.2" - snapdragon "^0.8.1" - snapdragon-node "^2.0.1" - split-string "^3.0.2" - to-regex "^3.0.1" - -cache-base@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" - integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== - dependencies: - collection-visit "^1.0.0" - component-emitter "^1.2.1" - get-value "^2.0.6" - has-value "^1.0.0" - isobject "^3.0.1" - set-value "^2.0.0" - to-object-path "^0.3.0" - union-value "^1.0.0" - unset-value "^1.0.0" - -camelcase-keys@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" - integrity sha1-MIvur/3ygRkFHvodkyITyRuPkuc= - dependencies: - camelcase "^2.0.0" - map-obj "^1.0.0" - -camelcase@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" - integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= - -chalk@~2.4.1: - version "2.4.2" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" - integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== - dependencies: - ansi-styles "^3.2.1" - escape-string-regexp "^1.0.5" - supports-color "^5.3.0" - -class-utils@^0.3.5: - version "0.3.6" - resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" - integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== - dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" - -coffeescript@~1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/coffeescript/-/coffeescript-1.10.0.tgz#e7aa8301917ef621b35d8a39f348dcdd1db7e33e" - integrity sha1-56qDAZF+9iGzXYo580jc3R234z4= - -collection-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" - integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= - dependencies: - map-visit "^1.0.0" - object-visit "^1.0.0" - -color-convert@^1.9.0: - version "1.9.3" - resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" - integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== - dependencies: - color-name "1.1.3" - -color-name@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" - integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= - -colors@~1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" - integrity sha1-FopHAXVran9RoSzgyXv6KMCE7WM= - -commander@^2.19.0, commander@~2.20.0: - version "2.20.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" - integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== - -component-emitter@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.2.1.tgz#137918d6d78283f7df7a6b7c5a63e140e69425e6" - integrity sha1-E3kY1teCg/ffemt8WmPhQOaUJeY= - -concat-map@0.0.1: - version "0.0.1" - resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= - -config-chain@^1.1.12: - version "1.1.12" - resolved "https://registry.yarnpkg.com/config-chain/-/config-chain-1.1.12.tgz#0fde8d091200eb5e808caf25fe618c02f48e4efa" - integrity sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA== - dependencies: - ini "^1.3.4" - proto-list "~1.2.1" - -copy-descriptor@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" - integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= - -currently-unhandled@^0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/currently-unhandled/-/currently-unhandled-0.4.1.tgz#988df33feab191ef799a61369dd76c17adf957ea" - integrity sha1-mI3zP+qxke95mmE2nddsF635V+o= - dependencies: - array-find-index "^1.0.1" - -dateformat@~1.0.12: - version "1.0.12" - resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-1.0.12.tgz#9f124b67594c937ff706932e4a642cca8dbbfee9" - integrity sha1-nxJLZ1lMk3/3BpMuSmQsyo27/uk= - dependencies: - get-stdin "^4.0.1" - meow "^3.3.0" - -debug@=3.1.0: - version "3.1.0" - resolved "https://registry.npm.taobao.org/debug/download/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE= - dependencies: - ms "2.0.0" - -debug@^2.2.0, debug@^2.3.3: - version "2.6.9" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" - integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== - dependencies: - ms "2.0.0" - -decamelize@^1.1.2: - version "1.2.0" - resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" - integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= - -decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= - -define-property@^0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" - integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= - dependencies: - is-descriptor "^0.1.0" - -define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" - integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= - dependencies: - is-descriptor "^1.0.0" - -define-property@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" - integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== - dependencies: - is-descriptor "^1.0.2" - isobject "^3.0.1" - -detect-file@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" - integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= - -editorconfig@^0.15.3: - version "0.15.3" - resolved "https://registry.npm.taobao.org/editorconfig/download/editorconfig-0.15.3.tgz#bef84c4e75fb8dcb0ce5cee8efd51c15999befc5" - integrity sha1-vvhMTnX7jcsM5c7o79UcFZmb78U= - dependencies: - commander "^2.19.0" - lru-cache "^4.1.5" - semver "^5.6.0" - sigmund "^1.0.1" - -error-ex@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" - integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== - dependencies: - is-arrayish "^0.2.1" - -escape-string-regexp@^1.0.5: - version "1.0.5" - resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" - integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= - -esprima@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - -eventemitter2@~0.4.13: - version "0.4.14" - resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-0.4.14.tgz#8f61b75cde012b2e9eb284d4545583b5643b61ab" - integrity sha1-j2G3XN4BKy6esoTUVFWDtWQ7Yas= - -exit@~0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" - integrity sha1-BjJjj42HfMghB9MKD/8aF8uhzQw= - -expand-brackets@^2.1.4: - version "2.1.4" - resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" - integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= - dependencies: - debug "^2.3.3" - define-property "^0.2.5" - extend-shallow "^2.0.1" - posix-character-classes "^0.1.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -expand-tilde@^2.0.0, expand-tilde@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" - integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= - dependencies: - homedir-polyfill "^1.0.1" - -extend-shallow@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" - integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= - dependencies: - is-extendable "^0.1.0" - -extend-shallow@^3.0.0, extend-shallow@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" - integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= - dependencies: - assign-symbols "^1.0.0" - is-extendable "^1.0.1" - -extend@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" - integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== - -extglob@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" - integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== - dependencies: - array-unique "^0.3.2" - define-property "^1.0.0" - expand-brackets "^2.1.4" - extend-shallow "^2.0.1" - fragment-cache "^0.2.1" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -fill-range@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" - integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= - dependencies: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" - -find-up@^1.0.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" - integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= - dependencies: - path-exists "^2.0.0" - pinkie-promise "^2.0.0" - -findup-sync@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc" - integrity sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw= - dependencies: - detect-file "^1.0.0" - is-glob "^3.1.0" - micromatch "^3.0.4" - resolve-dir "^1.0.1" - -findup-sync@~0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-0.3.0.tgz#37930aa5d816b777c03445e1966cc6790a4c0b16" - integrity sha1-N5MKpdgWt3fANEXhlmzGeQpMCxY= - dependencies: - glob "~5.0.0" - -fined@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/fined/-/fined-1.1.1.tgz#95d88ff329123dd1a6950fdfcd321f746271e01f" - integrity sha512-jQp949ZmEbiYHk3gkbdtpJ0G1+kgtLQBNdP5edFP7Fh+WAYceLQz6yO1SBj72Xkg8GVyTB3bBzAYrHJVh5Xd5g== - dependencies: - expand-tilde "^2.0.2" - is-plain-object "^2.0.3" - object.defaults "^1.1.0" - object.pick "^1.2.0" - parse-filepath "^1.0.1" - -flagged-respawn@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-1.0.1.tgz#e7de6f1279ddd9ca9aac8a5971d618606b3aab41" - integrity sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q== - -follow-redirects@1.5.10: - version "1.5.10" - resolved "https://registry.npm.taobao.org/follow-redirects/download/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" - integrity sha1-e3qfmuov3/NnhqlP9kPtB/T/Xio= - dependencies: - debug "=3.1.0" - -for-in@^1.0.1, for-in@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" - integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= - -for-own@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" - integrity sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs= - dependencies: - for-in "^1.0.1" - -fragment-cache@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" - integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= - dependencies: - map-cache "^0.2.2" - -fs.realpath@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" - integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= - -get-stdin@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" - integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= - -get-value@^2.0.3, get-value@^2.0.6: - version "2.0.6" - resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" - integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= - -getobject@~0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/getobject/-/getobject-0.1.0.tgz#047a449789fa160d018f5486ed91320b6ec7885c" - integrity sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw= - -glob@^7.1.3: - version "7.1.3" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1" - integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@~5.0.0: - version "5.0.15" - resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" - integrity sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E= - dependencies: - inflight "^1.0.4" - inherits "2" - minimatch "2 || 3" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@~7.0.0: - version "7.0.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.0.6.tgz#211bafaf49e525b8cd93260d14ab136152b3f57a" - integrity sha1-IRuvr0nlJbjNkyYNFKsTYVKz9Xo= - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.2" - once "^1.3.0" - path-is-absolute "^1.0.0" - -global-modules@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" - integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== - dependencies: - global-prefix "^1.0.1" - is-windows "^1.0.1" - resolve-dir "^1.0.0" - -global-prefix@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" - integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= - dependencies: - expand-tilde "^2.0.2" - homedir-polyfill "^1.0.1" - ini "^1.3.4" - is-windows "^1.0.1" - which "^1.2.14" - -graceful-fs@^4.1.2: - version "4.1.15" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.15.tgz#ffb703e1066e8a0eeaa4c8b80ba9253eeefbfb00" - integrity sha512-6uHUhOPEBgQ24HM+r6b/QwWfZq+yiFcipKFrOFiBEnWdy5sdzYoi+pJeQaPI5qOLRFqWmAXUPQNsielzdLoecA== - -grunt-cli@^1.3.2: - version "1.3.2" - resolved "https://registry.yarnpkg.com/grunt-cli/-/grunt-cli-1.3.2.tgz#60f12d12c1b5aae94ae3469c6b5fe24e960014e8" - integrity sha512-8OHDiZZkcptxVXtMfDxJvmN7MVJNE8L/yIcPb4HB7TlyFD1kDvjHrb62uhySsU14wJx9ORMnTuhRMQ40lH/orQ== - dependencies: - grunt-known-options "~1.1.0" - interpret "~1.1.0" - liftoff "~2.5.0" - nopt "~4.0.1" - v8flags "~3.1.1" - -grunt-cli@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/grunt-cli/-/grunt-cli-1.2.0.tgz#562b119ebb069ddb464ace2845501be97b35b6a8" - integrity sha1-VisRnrsGndtGSs4oRVAb6Xs1tqg= - dependencies: - findup-sync "~0.3.0" - grunt-known-options "~1.1.0" - nopt "~3.0.6" - resolve "~1.1.0" - -grunt-known-options@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/grunt-known-options/-/grunt-known-options-1.1.1.tgz#6cc088107bd0219dc5d3e57d91923f469059804d" - integrity sha512-cHwsLqoighpu7TuYj5RonnEuxGVFnztcUqTqp5rXFGYL4OuPFofwC4Ycg7n9fYwvK6F5WbYgeVOwph9Crs2fsQ== - -grunt-legacy-log-utils@~2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/grunt-legacy-log-utils/-/grunt-legacy-log-utils-2.0.1.tgz#d2f442c7c0150065d9004b08fd7410d37519194e" - integrity sha512-o7uHyO/J+i2tXG8r2bZNlVk20vlIFJ9IEYyHMCQGfWYru8Jv3wTqKZzvV30YW9rWEjq0eP3cflQ1qWojIe9VFA== - dependencies: - chalk "~2.4.1" - lodash "~4.17.10" - -grunt-legacy-log@~2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/grunt-legacy-log/-/grunt-legacy-log-2.0.0.tgz#c8cd2c6c81a4465b9bbf2d874d963fef7a59ffb9" - integrity sha512-1m3+5QvDYfR1ltr8hjiaiNjddxGdQWcH0rw1iKKiQnF0+xtgTazirSTGu68RchPyh1OBng1bBUjLmX8q9NpoCw== - dependencies: - colors "~1.1.2" - grunt-legacy-log-utils "~2.0.0" - hooker "~0.2.3" - lodash "~4.17.5" - -grunt-legacy-util@~1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/grunt-legacy-util/-/grunt-legacy-util-1.1.1.tgz#e10624e7c86034e5b870c8a8616743f0a0845e42" - integrity sha512-9zyA29w/fBe6BIfjGENndwoe1Uy31BIXxTH3s8mga0Z5Bz2Sp4UCjkeyv2tI449ymkx3x26B+46FV4fXEddl5A== - dependencies: - async "~1.5.2" - exit "~0.1.1" - getobject "~0.1.0" - hooker "~0.2.3" - lodash "~4.17.10" - underscore.string "~3.3.4" - which "~1.3.0" - -grunt@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/grunt/-/grunt-1.0.4.tgz#c799883945a53a3d07622e0737c8f70bfe19eb38" - integrity sha512-PYsMOrOC+MsdGEkFVwMaMyc6Ob7pKmq+deg1Sjr+vvMWp35sztfwKE7qoN51V+UEtHsyNuMcGdgMLFkBHvMxHQ== - dependencies: - coffeescript "~1.10.0" - dateformat "~1.0.12" - eventemitter2 "~0.4.13" - exit "~0.1.1" - findup-sync "~0.3.0" - glob "~7.0.0" - grunt-cli "~1.2.0" - grunt-known-options "~1.1.0" - grunt-legacy-log "~2.0.0" - grunt-legacy-util "~1.1.1" - iconv-lite "~0.4.13" - js-yaml "~3.13.0" - minimatch "~3.0.2" - mkdirp "~0.5.1" - nopt "~3.0.6" - path-is-absolute "~1.0.0" - rimraf "~2.6.2" - -handlebars@^4.1.1: - version "4.1.2" - resolved "https://registry.npm.taobao.org/handlebars/download/handlebars-4.1.2.tgz#b6b37c1ced0306b221e094fc7aca3ec23b131b67" - integrity sha1-trN8HO0DBrIh4JT8eso+wjsTG2c= - dependencies: - neo-async "^2.6.0" - optimist "^0.6.1" - source-map "^0.6.1" - optionalDependencies: - uglify-js "^3.1.4" - -has-flag@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" - integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= - -has-value@^0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" - integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= - dependencies: - get-value "^2.0.3" - has-values "^0.1.4" - isobject "^2.0.0" - -has-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" - integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= - dependencies: - get-value "^2.0.6" - has-values "^1.0.0" - isobject "^3.0.0" - -has-values@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" - integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= - -has-values@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" - integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= - dependencies: - is-number "^3.0.0" - kind-of "^4.0.0" - -homedir-polyfill@^1.0.1: - version "1.0.3" - resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" - integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== - dependencies: - parse-passwd "^1.0.0" - -hooker@~0.2.3: - version "0.2.3" - resolved "https://registry.yarnpkg.com/hooker/-/hooker-0.2.3.tgz#b834f723cc4a242aa65963459df6d984c5d3d959" - integrity sha1-uDT3I8xKJCqmWWNFnfbZhMXT2Vk= - -hosted-git-info@^2.1.4: - version "2.7.1" - resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" - integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w== - -iconv-lite@~0.4.13: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - -indent-string@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-2.1.0.tgz#8e2d48348742121b4a8218b7a137e9a52049dc80" - integrity sha1-ji1INIdCEhtKghi3oTfppSBJ3IA= - dependencies: - repeating "^2.0.0" - -inflight@^1.0.4: - version "1.0.6" - resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" - integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= - dependencies: - once "^1.3.0" - wrappy "1" - -inherits@2: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - -ini@^1.3.4: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== - -interpret@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.1.0.tgz#7ed1b1410c6a0e0f78cf95d3b8440c63f78b8614" - integrity sha1-ftGxQQxqDg94z5XTuEQMY/eLhhQ= - -is-absolute@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" - integrity sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA== - dependencies: - is-relative "^1.0.0" - is-windows "^1.0.1" - -is-accessor-descriptor@^0.1.6: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" - integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= - dependencies: - kind-of "^3.0.2" - -is-accessor-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" - integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== - dependencies: - kind-of "^6.0.0" - -is-arrayish@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" - integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= - -is-buffer@^1.1.5: - version "1.1.6" - resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" - integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== - -is-buffer@^2.0.2: - version "2.0.3" - resolved "https://registry.npm.taobao.org/is-buffer/download/is-buffer-2.0.3.tgz#4ecf3fcf749cbd1e472689e109ac66261a25e725" - integrity sha1-Ts8/z3ScvR5HJonhCaxmJhol5yU= - -is-data-descriptor@^0.1.4: - version "0.1.4" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" - integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= - dependencies: - kind-of "^3.0.2" - -is-data-descriptor@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" - integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== - dependencies: - kind-of "^6.0.0" - -is-descriptor@^0.1.0: - version "0.1.6" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" - integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== - dependencies: - is-accessor-descriptor "^0.1.6" - is-data-descriptor "^0.1.4" - kind-of "^5.0.0" - -is-descriptor@^1.0.0, is-descriptor@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" - integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== - dependencies: - is-accessor-descriptor "^1.0.0" - is-data-descriptor "^1.0.0" - kind-of "^6.0.2" - -is-extendable@^0.1.0, is-extendable@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" - integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= - -is-extendable@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" - integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== - dependencies: - is-plain-object "^2.0.4" - -is-extglob@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= - -is-finite@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-finite/-/is-finite-1.0.2.tgz#cc6677695602be550ef11e8b4aa6305342b6d0aa" - integrity sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko= - dependencies: - number-is-nan "^1.0.0" - -is-glob@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" - integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= - dependencies: - is-extglob "^2.1.0" - -is-number@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" - integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= - dependencies: - kind-of "^3.0.2" - -is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" - integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== - dependencies: - isobject "^3.0.1" - -is-relative@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" - integrity sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA== - dependencies: - is-unc-path "^1.0.0" - -is-unc-path@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d" - integrity sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ== - dependencies: - unc-path-regex "^0.1.2" - -is-utf8@^0.2.0: - version "0.2.1" - resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" - integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= - -is-windows@^1.0.1, is-windows@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" - integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== - -isarray@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" - integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= - -isexe@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" - integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= - -isobject@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" - integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= - dependencies: - isarray "1.0.0" - -isobject@^3.0.0, isobject@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" - integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= - -js-beautify@1.10.0: - version "1.10.0" - resolved "https://registry.npm.taobao.org/js-beautify/download/js-beautify-1.10.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fjs-beautify%2Fdownload%2Fjs-beautify-1.10.0.tgz#9753a13c858d96828658cd18ae3ca0e5783ea672" - integrity sha1-l1OhPIWNloKGWM0Yrjyg5Xg+pnI= - dependencies: - config-chain "^1.1.12" - editorconfig "^0.15.3" - glob "^7.1.3" - mkdirp "~0.5.1" - nopt "~4.0.1" - -js-yaml@^3.13.1, js-yaml@~3.13.0: - version "3.13.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" - integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== - dependencies: - argparse "^1.0.7" - esprima "^4.0.0" - -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - version "3.2.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" - integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= - dependencies: - is-buffer "^1.1.5" - -kind-of@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" - integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= - dependencies: - is-buffer "^1.1.5" - -kind-of@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" - integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== - -kind-of@^6.0.0, kind-of@^6.0.2: - version "6.0.2" - resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.2.tgz#01146b36a6218e64e58f3a8d66de5d7fc6f6d051" - integrity sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA== - -liftoff@~2.5.0: - version "2.5.0" - resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-2.5.0.tgz#2009291bb31cea861bbf10a7c15a28caf75c31ec" - integrity sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew= - dependencies: - extend "^3.0.0" - findup-sync "^2.0.0" - fined "^1.0.1" - flagged-respawn "^1.0.0" - is-plain-object "^2.0.4" - object.map "^1.0.0" - rechoir "^0.6.2" - resolve "^1.1.7" - -load-json-file@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" - integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= - dependencies: - graceful-fs "^4.1.2" - parse-json "^2.2.0" - pify "^2.0.0" - pinkie-promise "^2.0.0" - strip-bom "^2.0.0" - -lodash@^4.17.11, lodash@~4.17.10, lodash@~4.17.5: - version "4.17.11" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" - integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== - -loud-rejection@^1.0.0: - version "1.6.0" - resolved "https://registry.yarnpkg.com/loud-rejection/-/loud-rejection-1.6.0.tgz#5b46f80147edee578870f086d04821cf998e551f" - integrity sha1-W0b4AUft7leIcPCG0Eghz5mOVR8= - dependencies: - currently-unhandled "^0.4.1" - signal-exit "^3.0.0" - -lru-cache@^4.1.5: - version "4.1.5" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" - integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== - dependencies: - pseudomap "^1.0.2" - yallist "^2.1.2" - -make-iterator@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/make-iterator/-/make-iterator-1.0.1.tgz#29b33f312aa8f547c4a5e490f56afcec99133ad6" - integrity sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw== - dependencies: - kind-of "^6.0.2" - -map-cache@^0.2.0, map-cache@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" - integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= - -map-obj@^1.0.0, map-obj@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-1.0.1.tgz#d933ceb9205d82bdcf4886f6742bdc2b4dea146d" - integrity sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0= - -map-visit@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" - integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= - dependencies: - object-visit "^1.0.0" - -meow@^3.3.0: - version "3.7.0" - resolved "https://registry.yarnpkg.com/meow/-/meow-3.7.0.tgz#72cb668b425228290abbfa856892587308a801fb" - integrity sha1-cstmi0JSKCkKu/qFaJJYcwioAfs= - dependencies: - camelcase-keys "^2.0.0" - decamelize "^1.1.2" - loud-rejection "^1.0.0" - map-obj "^1.0.1" - minimist "^1.1.3" - normalize-package-data "^2.3.4" - object-assign "^4.0.1" - read-pkg-up "^1.0.1" - redent "^1.0.0" - trim-newlines "^1.0.0" - -micromatch@^3.0.4: - version "3.1.10" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" - integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - braces "^2.3.1" - define-property "^2.0.2" - extend-shallow "^3.0.2" - extglob "^2.0.4" - fragment-cache "^0.2.1" - kind-of "^6.0.2" - nanomatch "^1.2.9" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.2" - -"minimatch@2 || 3", minimatch@^3.0.2, minimatch@^3.0.4, minimatch@~3.0.2: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== - dependencies: - brace-expansion "^1.1.7" - -minimist@0.0.8: - version "0.0.8" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" - integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= - -minimist@^1.1.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= - -minimist@~0.0.1: - version "0.0.10" - resolved "https://registry.npm.taobao.org/minimist/download/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" - integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= - -mixin-deep@^1.2.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.1.tgz#a49e7268dce1a0d9698e45326c5626df3543d0fe" - integrity sha512-8ZItLHeEgaqEvd5lYBXfm4EZSFCX29Jb9K+lAHhDKzReKBQKj3R+7NOF6tjqYi9t4oI8VUfaWITJQm86wnXGNQ== - dependencies: - for-in "^1.0.2" - is-extendable "^1.0.1" - -mkdirp@~0.5.1: - version "0.5.1" - resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" - integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= - dependencies: - minimist "0.0.8" - -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" - integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= - -nanomatch@^1.2.9: - version "1.2.13" - resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" - integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== - dependencies: - arr-diff "^4.0.0" - array-unique "^0.3.2" - define-property "^2.0.2" - extend-shallow "^3.0.2" - fragment-cache "^0.2.1" - is-windows "^1.0.2" - kind-of "^6.0.2" - object.pick "^1.3.0" - regex-not "^1.0.0" - snapdragon "^0.8.1" - to-regex "^3.0.1" - -neo-async@^2.6.0: - version "2.6.1" - resolved "https://registry.npm.taobao.org/neo-async/download/neo-async-2.6.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fneo-async%2Fdownload%2Fneo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" - integrity sha1-rCetpmFn+ohJpq3dg39rGJrSCBw= - -nopt@~3.0.6: - version "3.0.6" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" - integrity sha1-xkZdvwirzU2zWTF/eaxopkayj/k= - dependencies: - abbrev "1" - -nopt@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" - integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= - dependencies: - abbrev "1" - osenv "^0.1.4" - -normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: - version "2.5.0" - resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" - integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== - dependencies: - hosted-git-info "^2.1.4" - resolve "^1.10.0" - semver "2 || 3 || 4 || 5" - validate-npm-package-license "^3.0.1" - -number-is-nan@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" - integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= - -object-assign@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" - integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= - -object-copy@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" - integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= - dependencies: - copy-descriptor "^0.1.0" - define-property "^0.2.5" - kind-of "^3.0.3" - -object-visit@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" - integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= - dependencies: - isobject "^3.0.0" - -object.defaults@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/object.defaults/-/object.defaults-1.1.0.tgz#3a7f868334b407dea06da16d88d5cd29e435fecf" - integrity sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8= - dependencies: - array-each "^1.0.1" - array-slice "^1.0.0" - for-own "^1.0.0" - isobject "^3.0.0" - -object.map@^1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/object.map/-/object.map-1.0.1.tgz#cf83e59dc8fcc0ad5f4250e1f78b3b81bd801d37" - integrity sha1-z4Plncj8wK1fQlDh94s7gb2AHTc= - dependencies: - for-own "^1.0.0" - make-iterator "^1.0.0" - -object.pick@^1.2.0, object.pick@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" - integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= - dependencies: - isobject "^3.0.1" - -once@^1.3.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" - integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= - dependencies: - wrappy "1" - -optimist@^0.6.1: - version "0.6.1" - resolved "https://registry.npm.taobao.org/optimist/download/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" - integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= - dependencies: - minimist "~0.0.1" - wordwrap "~0.0.2" - -os-homedir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" - integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= - -os-tmpdir@^1.0.0: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= - -osenv@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - -parse-filepath@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.2.tgz#a632127f53aaf3d15876f5872f3ffac763d6c891" - integrity sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE= - dependencies: - is-absolute "^1.0.0" - map-cache "^0.2.0" - path-root "^0.1.1" - -parse-json@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" - integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= - dependencies: - error-ex "^1.2.0" - -parse-passwd@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" - integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= - -pascalcase@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" - integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= - -path-exists@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" - integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= - dependencies: - pinkie-promise "^2.0.0" - -path-is-absolute@^1.0.0, path-is-absolute@~1.0.0: - version "1.0.1" - resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" - integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= - -path-parse@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" - integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== - -path-root-regex@^0.1.0: - version "0.1.2" - resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" - integrity sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0= - -path-root@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/path-root/-/path-root-0.1.1.tgz#9a4a6814cac1c0cd73360a95f32083c8ea4745b7" - integrity sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc= - dependencies: - path-root-regex "^0.1.0" - -path-type@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" - integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= - dependencies: - graceful-fs "^4.1.2" - pify "^2.0.0" - pinkie-promise "^2.0.0" - -pify@^2.0.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" - integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= - -pinkie-promise@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" - integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= - dependencies: - pinkie "^2.0.0" - -pinkie@^2.0.0: - version "2.0.4" - resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" - integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= - -posix-character-classes@^0.1.0: - version "0.1.1" - resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" - integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= - -proto-list@~1.2.1: - version "1.2.4" - resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" - integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= - -pseudomap@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" - integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= - -read-pkg-up@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" - integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= - dependencies: - find-up "^1.0.0" - read-pkg "^1.0.0" - -read-pkg@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" - integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= - dependencies: - load-json-file "^1.0.0" - normalize-package-data "^2.3.2" - path-type "^1.0.0" - -rechoir@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" - integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= - dependencies: - resolve "^1.1.6" - -redent@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/redent/-/redent-1.0.0.tgz#cf916ab1fd5f1f16dfb20822dd6ec7f730c2afde" - integrity sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94= - dependencies: - indent-string "^2.1.0" - strip-indent "^1.0.1" - -regex-not@^1.0.0, regex-not@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" - integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== - dependencies: - extend-shallow "^3.0.2" - safe-regex "^1.1.0" - -repeat-element@^1.1.2: - version "1.1.3" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" - integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== - -repeat-string@^1.6.1: - version "1.6.1" - resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" - integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= - -repeating@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/repeating/-/repeating-2.0.1.tgz#5214c53a926d3552707527fbab415dbc08d06dda" - integrity sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo= - dependencies: - is-finite "^1.0.0" - -resolve-dir@^1.0.0, resolve-dir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" - integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= - dependencies: - expand-tilde "^2.0.0" - global-modules "^1.0.0" - -resolve-url@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" - integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= - -resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0: - version "1.10.0" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.10.0.tgz#3bdaaeaf45cc07f375656dfd2e54ed0810b101ba" - integrity sha512-3sUr9aq5OfSg2S9pNtPA9hL1FVEAjvfOC4leW0SNf/mpnaakz2a9femSd6LqAww2RaFctwyf1lCqnTHuF1rxDg== - dependencies: - path-parse "^1.0.6" - -resolve@~1.1.0: - version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= - -ret@~0.1.10: - version "0.1.15" - resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" - integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== - -rimraf@~2.6.2: - version "2.6.3" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" - integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== - dependencies: - glob "^7.1.3" - -safe-regex@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" - integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= - dependencies: - ret "~0.1.10" - -"safer-buffer@>= 2.1.2 < 3": - version "2.1.2" - resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" - integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== - -"semver@2 || 3 || 4 || 5", semver@^5.6.0: - version "5.7.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" - integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== - -set-value@^0.4.3: - version "0.4.3" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" - integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE= - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.1" - to-object-path "^0.3.0" - -set-value@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.0.tgz#71ae4a88f0feefbbf52d1ea604f3fb315ebb6274" - integrity sha512-hw0yxk9GT/Hr5yJEYnHNKYXkIA8mVJgd9ditYZCe16ZczcaELYYcfvaXesNACk2O8O0nTiPQcQhGUQj8JLzeeg== - dependencies: - extend-shallow "^2.0.1" - is-extendable "^0.1.1" - is-plain-object "^2.0.3" - split-string "^3.0.1" - -sigmund@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" - integrity sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA= - -signal-exit@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" - integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= - -snapdragon-node@^2.0.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" - integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== - dependencies: - define-property "^1.0.0" - isobject "^3.0.0" - snapdragon-util "^3.0.1" - -snapdragon-util@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" - integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== - dependencies: - kind-of "^3.2.0" - -snapdragon@^0.8.1: - version "0.8.2" - resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" - integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== - dependencies: - base "^0.11.1" - debug "^2.2.0" - define-property "^0.2.5" - extend-shallow "^2.0.1" - map-cache "^0.2.2" - source-map "^0.5.6" - source-map-resolve "^0.5.0" - use "^3.1.0" - -source-map-resolve@^0.5.0: - version "0.5.2" - resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.2.tgz#72e2cc34095543e43b2c62b2c4c10d4a9054f259" - integrity sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA== - dependencies: - atob "^2.1.1" - decode-uri-component "^0.2.0" - resolve-url "^0.2.1" - source-map-url "^0.4.0" - urix "^0.1.0" - -source-map-url@^0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" - integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= - -source-map@^0.5.6: - version "0.5.7" - resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" - integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= - -source-map@^0.6.1, source-map@~0.6.1: - version "0.6.1" - resolved "https://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" - integrity sha1-dHIq8y6WFOnCh6jQu95IteLxomM= - -spdx-correct@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" - integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== - dependencies: - spdx-expression-parse "^3.0.0" - spdx-license-ids "^3.0.0" - -spdx-exceptions@^2.1.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" - integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== - -spdx-expression-parse@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" - integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== - dependencies: - spdx-exceptions "^2.1.0" - spdx-license-ids "^3.0.0" - -spdx-license-ids@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz#75ecd1a88de8c184ef015eafb51b5b48bfd11bb1" - integrity sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA== - -split-string@^3.0.1, split-string@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" - integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== - dependencies: - extend-shallow "^3.0.0" - -sprintf-js@^1.0.3: - version "1.1.2" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673" - integrity sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug== - -sprintf-js@~1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" - integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= - -static-extend@^0.1.1: - version "0.1.2" - resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" - integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= - dependencies: - define-property "^0.2.5" - object-copy "^0.1.0" - -strip-bom@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" - integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= - dependencies: - is-utf8 "^0.2.0" - -strip-indent@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" - integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI= - dependencies: - get-stdin "^4.0.1" - -supports-color@^5.3.0: - version "5.5.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" - integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow== - dependencies: - has-flag "^3.0.0" - -to-object-path@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" - integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= - dependencies: - kind-of "^3.0.2" - -to-regex-range@^2.1.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" - integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= - dependencies: - is-number "^3.0.0" - repeat-string "^1.6.1" - -to-regex@^3.0.1, to-regex@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" - integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== - dependencies: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" - -trim-newlines@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-1.0.0.tgz#5887966bb582a4503a41eb524f7d35011815a613" - integrity sha1-WIeWa7WCpFA6QetST301ARgVphM= - -uglify-js@^3.1.4: - version "3.6.0" - resolved "https://registry.npm.taobao.org/uglify-js/download/uglify-js-3.6.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fuglify-js%2Fdownload%2Fuglify-js-3.6.0.tgz#704681345c53a8b2079fb6cec294b05ead242ff5" - integrity sha1-cEaBNFxTqLIHn7bOwpSwXq0kL/U= - dependencies: - commander "~2.20.0" - source-map "~0.6.1" - -unc-path-regex@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" - integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo= - -underscore.string@~3.3.4: - version "3.3.5" - resolved "https://registry.yarnpkg.com/underscore.string/-/underscore.string-3.3.5.tgz#fc2ad255b8bd309e239cbc5816fd23a9b7ea4023" - integrity sha512-g+dpmgn+XBneLmXXo+sGlW5xQEt4ErkS3mgeN2GFbremYeMBSJKr9Wf2KJplQVaiPY/f7FN6atosWYNm9ovrYg== - dependencies: - sprintf-js "^1.0.3" - util-deprecate "^1.0.2" - -union-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.0.tgz#5c71c34cb5bad5dcebe3ea0cd08207ba5aa1aea4" - integrity sha1-XHHDTLW61dzr4+oM0IIHulqhrqQ= - dependencies: - arr-union "^3.1.0" - get-value "^2.0.6" - is-extendable "^0.1.1" - set-value "^0.4.3" - -unset-value@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" - integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= - dependencies: - has-value "^0.3.1" - isobject "^3.0.0" - -urix@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" - integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= - -use@^3.1.0: - version "3.1.1" - resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" - integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== - -util-deprecate@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" - integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= - -v8flags@~3.1.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.1.2.tgz#fc5cd0c227428181e6c29b2992e4f8f1da5e0c9f" - integrity sha512-MtivA7GF24yMPte9Rp/BWGCYQNaUj86zeYxV/x2RRJMKagImbbv3u8iJC57lNhWLPcGLJmHcHmFWkNsplbbLWw== - dependencies: - homedir-polyfill "^1.0.1" - -validate-npm-package-license@^3.0.1: - version "3.0.4" - resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" - integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== - dependencies: - spdx-correct "^3.0.0" - spdx-expression-parse "^3.0.0" - -which@^1.2.14, which@~1.3.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" - integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== - dependencies: - isexe "^2.0.0" - -wordwrap@~0.0.2: - version "0.0.3" - resolved "https://registry.npm.taobao.org/wordwrap/download/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" - integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= - -wrappy@1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" - integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= - -yallist@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" - integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@^7.0.0": + version "7.0.0" + resolved "http://r.cnpmjs.org/@babel/code-frame/download/@babel/code-frame-7.0.0.tgz#06e2ab19bdb535385559aabb5ba59729482800f8" + integrity sha1-BuKrGb21NThVWaq7W6WXKUgoAPg= + dependencies: + "@babel/highlight" "^7.0.0" + +"@babel/highlight@^7.0.0": + version "7.5.0" + resolved "http://r.cnpmjs.org/@babel/highlight/download/@babel/highlight-7.5.0.tgz#56d11312bd9248fa619591d02472be6e8cb32540" + integrity sha1-VtETEr2SSPphlZHQJHK+boyzJUA= + dependencies: + chalk "^2.0.0" + esutils "^2.0.2" + js-tokens "^4.0.0" + +acorn-jsx@^5.0.0: + version "5.0.1" + resolved "http://r.cnpmjs.org/acorn-jsx/download/acorn-jsx-5.0.1.tgz#32a064fd925429216a09b141102bfdd185fae40e" + integrity sha1-MqBk/ZJUKSFqCbFBECv90YX65A4= + +acorn@^6.0.7: + version "6.2.0" + resolved "http://r.cnpmjs.org/acorn/download/acorn-6.2.0.tgz#67f0da2fc339d6cfb5d6fb244fd449f33cd8bbe3" + integrity sha1-Z/DaL8M51s+11vskT9RJ8zzYu+M= + +ajv@^6.10.0, ajv@^6.9.1: + version "6.10.1" + resolved "http://r.cnpmjs.org/ajv/download/ajv-6.10.1.tgz#ebf8d3af22552df9dd049bfbe50cc2390e823593" + integrity sha1-6/jTryJVLfndBJv75QzCOQ6CNZM= + dependencies: + fast-deep-equal "^2.0.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ansi-escapes@^3.2.0: + version "3.2.0" + resolved "http://r.cnpmjs.org/ansi-escapes/download/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" + integrity sha1-h4C5j/nb9WOBUtHx/lwde0RCl2s= + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "http://r.cnpmjs.org/ansi-regex/download/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + +ansi-regex@^4.1.0: + version "4.1.0" + resolved "http://r.cnpmjs.org/ansi-regex/download/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" + integrity sha1-i5+PCM8ay4Q3Vqg5yox+MWjFGZc= + +ansi-styles@^3.2.0, ansi-styles@^3.2.1: + version "3.2.1" + resolved "http://r.cnpmjs.org/ansi-styles/download/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0= + dependencies: + color-convert "^1.9.0" + +argparse@^1.0.10, argparse@^1.0.7: + version "1.0.10" + resolved "http://r.cnpmjs.org/argparse/download/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE= + dependencies: + sprintf-js "~1.0.2" + +astral-regex@^1.0.0: + version "1.0.0" + resolved "http://r.cnpmjs.org/astral-regex/download/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" + integrity sha1-bIw/uCfdQ+45GPJ7gngqt2WKb9k= + +balanced-match@^1.0.0: + version "1.0.0" + resolved "http://r.cnpmjs.org/balanced-match/download/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "http://r.cnpmjs.org/brace-expansion/download/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0= + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +call-me-maybe@^1.0.1: + version "1.0.1" + resolved "http://r.cnpmjs.org/call-me-maybe/download/call-me-maybe-1.0.1.tgz#26d208ea89e37b5cbde60250a15f031c16a4d66b" + integrity sha1-JtII6onje1y95gJQoV8DHBak1ms= + +callsites@^3.0.0: + version "3.1.0" + resolved "http://r.cnpmjs.org/callsites/download/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha1-s2MKvYlDQy9Us/BRkjjjPNffL3M= + +chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.2: + version "2.4.2" + resolved "http://r.cnpmjs.org/chalk/download/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" + integrity sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ= + dependencies: + ansi-styles "^3.2.1" + escape-string-regexp "^1.0.5" + supports-color "^5.3.0" + +chardet@^0.7.0: + version "0.7.0" + resolved "http://r.cnpmjs.org/chardet/download/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha1-kAlISfCTfy7twkJdDSip5fDLrZ4= + +cli-cursor@^2.1.0: + version "2.1.0" + resolved "http://r.cnpmjs.org/cli-cursor/download/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= + dependencies: + restore-cursor "^2.0.0" + +cli-width@^2.0.0: + version "2.2.0" + resolved "http://r.cnpmjs.org/cli-width/download/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" + integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk= + +color-convert@^1.9.0: + version "1.9.3" + resolved "http://r.cnpmjs.org/color-convert/download/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha1-u3GFBpDh8TZWfeYp0tVHHe2kweg= + dependencies: + color-name "1.1.3" + +color-name@1.1.3: + version "1.1.3" + resolved "http://r.cnpmjs.org/color-name/download/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU= + +commander@^2.7.1, commander@~2.20.0: + version "2.20.0" + resolved "http://r.cnpmjs.org/commander/download/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" + integrity sha1-1YuytcHuj4ew00ACfp6U4iLFpCI= + +concat-map@0.0.1: + version "0.0.1" + resolved "http://r.cnpmjs.org/concat-map/download/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +core-js@^2.5.7: + version "2.6.9" + resolved "http://r.cnpmjs.org/core-js/download/core-js-2.6.9.tgz#6b4b214620c834152e179323727fc19741b084f2" + integrity sha1-a0shRiDINBUuF5Mjcn/Bl0GwhPI= + +cross-spawn@^6.0.5: + version "6.0.5" + resolved "http://r.cnpmjs.org/cross-spawn/download/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" + integrity sha1-Sl7Hxk364iw6FBJNus3uhG2Ay8Q= + dependencies: + nice-try "^1.0.4" + path-key "^2.0.1" + semver "^5.5.0" + shebang-command "^1.2.0" + which "^1.2.9" + +debug@^4.0.1: + version "4.1.1" + resolved "http://r.cnpmjs.org/debug/download/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" + integrity sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E= + dependencies: + ms "^2.1.1" + +deep-is@~0.1.3: + version "0.1.3" + resolved "http://r.cnpmjs.org/deep-is/download/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + +doctrine@^3.0.0: + version "3.0.0" + resolved "http://r.cnpmjs.org/doctrine/download/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha1-rd6+rXKmV023g2OdyHoSF3OXOWE= + dependencies: + esutils "^2.0.2" + +emoji-regex@^7.0.1: + version "7.0.3" + resolved "http://r.cnpmjs.org/emoji-regex/download/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" + integrity sha1-kzoEBShgyF6DwSJHnEdIqOTHIVY= + +escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "http://r.cnpmjs.org/escape-string-regexp/download/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= + +eslint-scope@^4.0.3: + version "4.0.3" + resolved "http://r.cnpmjs.org/eslint-scope/download/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" + integrity sha1-ygODMxD2iJoyZHgaqC5j65z+eEg= + dependencies: + esrecurse "^4.1.0" + estraverse "^4.1.1" + +eslint-utils@^1.3.1: + version "1.3.1" + resolved "http://r.cnpmjs.org/eslint-utils/download/eslint-utils-1.3.1.tgz#9a851ba89ee7c460346f97cf8939c7298827e512" + integrity sha1-moUbqJ7nxGA0b5fPiTnHKYgn5RI= + +eslint-visitor-keys@^1.0.0: + version "1.0.0" + resolved "http://r.cnpmjs.org/eslint-visitor-keys/download/eslint-visitor-keys-1.0.0.tgz#3f3180fb2e291017716acb4c9d6d5b5c34a6a81d" + integrity sha1-PzGA+y4pEBdxastMnW1bXDSmqB0= + +eslint@^6.0.1: + version "6.0.1" + resolved "http://r.cnpmjs.org/eslint/download/eslint-6.0.1.tgz#4a32181d72cb999d6f54151df7d337131f81cda7" + integrity sha1-SjIYHXLLmZ1vVBUd99M3Ex+Bzac= + dependencies: + "@babel/code-frame" "^7.0.0" + ajv "^6.10.0" + chalk "^2.1.0" + cross-spawn "^6.0.5" + debug "^4.0.1" + doctrine "^3.0.0" + eslint-scope "^4.0.3" + eslint-utils "^1.3.1" + eslint-visitor-keys "^1.0.0" + espree "^6.0.0" + esquery "^1.0.1" + esutils "^2.0.2" + file-entry-cache "^5.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^3.1.0" + globals "^11.7.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + 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.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 "^5.5.1" + strip-ansi "^4.0.0" + strip-json-comments "^2.0.1" + table "^5.2.3" + text-table "^0.2.0" + +espree@^6.0.0: + version "6.0.0" + resolved "http://r.cnpmjs.org/espree/download/espree-6.0.0.tgz#716fc1f5a245ef5b9a7fdb1d7b0d3f02322e75f6" + integrity sha1-cW/B9aJF71uaf9sdew0/AjIudfY= + dependencies: + acorn "^6.0.7" + acorn-jsx "^5.0.0" + eslint-visitor-keys "^1.0.0" + +esprima@^4.0.0: + version "4.0.1" + resolved "http://r.cnpmjs.org/esprima/download/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha1-E7BM2z5sXRnfkatph6hpVhmwqnE= + +esquery@^1.0.1: + version "1.0.1" + resolved "http://r.cnpmjs.org/esquery/download/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" + integrity sha1-QGxRZYsfWZGl+bYrHcJbAOPlxwg= + dependencies: + estraverse "^4.0.0" + +esrecurse@^4.1.0: + version "4.2.1" + resolved "http://r.cnpmjs.org/esrecurse/download/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" + integrity sha1-AHo7n9vCs7uH5IeeoZyS/b05Qs8= + dependencies: + estraverse "^4.1.0" + +estraverse@^4.0.0, estraverse@^4.1.0, estraverse@^4.1.1: + version "4.2.0" + resolved "http://r.cnpmjs.org/estraverse/download/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" + integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= + +esutils@^2.0.2: + version "2.0.2" + resolved "http://r.cnpmjs.org/esutils/download/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" + integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= + +external-editor@^3.0.3: + version "3.1.0" + resolved "http://r.cnpmjs.org/external-editor/download/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha1-ywP3QL764D6k0oPK7SdBqD8zVJU= + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + +fast-deep-equal@^2.0.1: + version "2.0.1" + resolved "http://r.cnpmjs.org/fast-deep-equal/download/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" + integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= + +fast-json-stable-stringify@^2.0.0: + version "2.0.0" + resolved "http://r.cnpmjs.org/fast-json-stable-stringify/download/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" + integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= + +fast-levenshtein@~2.0.4: + version "2.0.6" + resolved "http://r.cnpmjs.org/fast-levenshtein/download/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +figures@^2.0.0: + version "2.0.0" + resolved "http://r.cnpmjs.org/figures/download/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" + integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^5.0.1: + version "5.0.1" + resolved "http://r.cnpmjs.org/file-entry-cache/download/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" + integrity sha1-yg9u+m3T1WEzP7FFFQZcL6/fQ5w= + dependencies: + flat-cache "^2.0.1" + +flat-cache@^2.0.1: + version "2.0.1" + resolved "http://r.cnpmjs.org/flat-cache/download/flat-cache-2.0.1.tgz#5d296d6f04bda44a4630a301413bdbc2ec085ec0" + integrity sha1-XSltbwS9pEpGMKMBQTvbwuwIXsA= + dependencies: + flatted "^2.0.0" + rimraf "2.6.3" + write "1.0.3" + +flatted@^2.0.0: + version "2.0.1" + resolved "http://r.cnpmjs.org/flatted/download/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08" + integrity sha1-aeV8qo8OrLwoHS4stFjUb9tEngg= + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "http://r.cnpmjs.org/fs.realpath/download/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "http://r.cnpmjs.org/functional-red-black-tree/download/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +glob-parent@^3.1.0: + version "3.1.0" + resolved "http://r.cnpmjs.org/glob-parent/download/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob@^7.1.3: + version "7.1.4" + resolved "http://r.cnpmjs.org/glob/download/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" + integrity sha1-qmCKL2xXetNX4a5aXCbZqNGWklU= + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +globals@^11.7.0: + version "11.12.0" + resolved "http://r.cnpmjs.org/globals/download/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha1-q4eVM4hooLq9hSV1gBjCp+uVxC4= + +handlebars@^4.1.2: + version "4.1.2" + resolved "http://r.cnpmjs.org/handlebars/download/handlebars-4.1.2.tgz#b6b37c1ced0306b221e094fc7aca3ec23b131b67" + integrity sha1-trN8HO0DBrIh4JT8eso+wjsTG2c= + dependencies: + neo-async "^2.6.0" + optimist "^0.6.1" + source-map "^0.6.1" + optionalDependencies: + uglify-js "^3.1.4" + +has-flag@^3.0.0: + version "3.0.0" + resolved "http://r.cnpmjs.org/has-flag/download/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" + integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= + +iconv-lite@^0.4.24: + version "0.4.24" + resolved "http://r.cnpmjs.org/iconv-lite/download/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha1-ICK0sl+93CHS9SSXSkdKr+czkIs= + dependencies: + safer-buffer ">= 2.1.2 < 3" + +ignore@^4.0.6: + version "4.0.6" + resolved "http://r.cnpmjs.org/ignore/download/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha1-dQ49tYYgh7RzfrrIIH/9HvJ7Jfw= + +import-fresh@^3.0.0: + version "3.1.0" + resolved "http://r.cnpmjs.org/import-fresh/download/import-fresh-3.1.0.tgz#6d33fa1dcef6df930fae003446f33415af905118" + integrity sha1-bTP6Hc7235MPrgA0RvM0Fa+QURg= + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "http://r.cnpmjs.org/imurmurhash/download/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +inflight@^1.0.4: + version "1.0.6" + resolved "http://r.cnpmjs.org/inflight/download/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2: + version "2.0.4" + resolved "http://r.cnpmjs.org/inherits/download/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w= + +inquirer@^6.2.2: + version "6.4.1" + resolved "http://r.cnpmjs.org/inquirer/download/inquirer-6.4.1.tgz#7bd9e5ab0567cd23b41b0180b68e0cfa82fc3c0b" + integrity sha1-e9nlqwVnzSO0GwGAto4M+oL8PAs= + dependencies: + ansi-escapes "^3.2.0" + chalk "^2.4.2" + cli-cursor "^2.1.0" + cli-width "^2.0.0" + external-editor "^3.0.3" + figures "^2.0.0" + lodash "^4.17.11" + mute-stream "0.0.7" + run-async "^2.2.0" + rxjs "^6.4.0" + string-width "^2.1.0" + strip-ansi "^5.1.0" + through "^2.3.6" + +is-extglob@^2.1.0, is-extglob@^2.1.1: + version "2.1.1" + resolved "http://r.cnpmjs.org/is-extglob/download/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "http://r.cnpmjs.org/is-fullwidth-code-point/download/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-glob@^3.1.0: + version "3.1.0" + resolved "http://r.cnpmjs.org/is-glob/download/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0: + version "4.0.1" + resolved "http://r.cnpmjs.org/is-glob/download/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha1-dWfb6fL14kZ7x3q4PEopSCQHpdw= + dependencies: + is-extglob "^2.1.1" + +is-promise@^2.1.0: + version "2.1.0" + resolved "http://r.cnpmjs.org/is-promise/download/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" + integrity sha1-eaKp7OfwlugPNtKy87wWwf9L8/o= + +isexe@^2.0.0: + version "2.0.0" + resolved "http://r.cnpmjs.org/isexe/download/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +js-tokens@^4.0.0: + version "4.0.0" + resolved "http://r.cnpmjs.org/js-tokens/download/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha1-GSA/tZmR35jjoocFDUZHzerzJJk= + +js-yaml@^3.13.1: + version "3.13.1" + resolved "http://r.cnpmjs.org/js-yaml/download/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" + integrity sha1-r/FRswv9+o5J4F2iLnQV6d+jeEc= + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +json-schema-ref-parser@^7.1.0: + version "7.1.0" + resolved "http://r.cnpmjs.org/json-schema-ref-parser/download/json-schema-ref-parser-7.1.0.tgz#987582b19fa06a37db4797d4e825879a7aea127c" + integrity sha1-mHWCsZ+gajfbR5fU6CWHmnrqEnw= + dependencies: + call-me-maybe "^1.0.1" + js-yaml "^3.13.1" + ono "^5.0.1" + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "http://r.cnpmjs.org/json-schema-traverse/download/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha1-afaofZUTq4u4/mO9sJecRI5oRmA= + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "http://r.cnpmjs.org/json-stable-stringify-without-jsonify/download/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +jsonschema-draft4@^1.0.0: + version "1.0.0" + resolved "http://r.cnpmjs.org/jsonschema-draft4/download/jsonschema-draft4-1.0.0.tgz#f0af2005054f0f0ade7ea2118614b69dc512d865" + integrity sha1-8K8gBQVPDwrefqIRhhS2ncUS2GU= + +jsonschema@1.2.4: + version "1.2.4" + resolved "http://r.cnpmjs.org/jsonschema/download/jsonschema-1.2.4.tgz#a46bac5d3506a254465bc548876e267c6d0d6464" + integrity sha1-pGusXTUGolRGW8VIh24mfG0NZGQ= + +levn@^0.3.0, levn@~0.3.0: + version "0.3.0" + resolved "http://r.cnpmjs.org/levn/download/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" + integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= + dependencies: + prelude-ls "~1.1.2" + type-check "~0.3.2" + +lodash.get@^4.4.2: + version "4.4.2" + resolved "http://r.cnpmjs.org/lodash.get/download/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" + integrity sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk= + +lodash.isequal@^4.5.0: + version "4.5.0" + resolved "http://r.cnpmjs.org/lodash.isequal/download/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" + integrity sha1-QVxEePK8wwEgwizhDtMib30+GOA= + +lodash@^4.17.11: + version "4.17.11" + resolved "http://r.cnpmjs.org/lodash/download/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" + integrity sha1-s56mIp72B+zYniyN8SU2iRysm40= + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "http://r.cnpmjs.org/mimic-fn/download/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha1-ggyGo5M0ZA6ZUWkovQP8qIBX0CI= + +minimatch@^3.0.4: + version "3.0.4" + resolved "http://r.cnpmjs.org/minimatch/download/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM= + dependencies: + brace-expansion "^1.1.7" + +minimist@0.0.8: + version "0.0.8" + resolved "http://r.cnpmjs.org/minimist/download/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= + +minimist@~0.0.1: + version "0.0.10" + resolved "http://r.cnpmjs.org/minimist/download/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= + +mkdirp@^0.5.1: + version "0.5.1" + resolved "http://r.cnpmjs.org/mkdirp/download/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= + dependencies: + minimist "0.0.8" + +ms@^2.1.1: + version "2.1.2" + resolved "http://r.cnpmjs.org/ms/download/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk= + +mute-stream@0.0.7: + version "0.0.7" + resolved "http://r.cnpmjs.org/mute-stream/download/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" + integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= + +natural-compare@^1.4.0: + version "1.4.0" + resolved "http://r.cnpmjs.org/natural-compare/download/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +neo-async@^2.6.0: + version "2.6.1" + resolved "http://r.cnpmjs.org/neo-async/download/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" + integrity sha1-rCetpmFn+ohJpq3dg39rGJrSCBw= + +nice-try@^1.0.4: + version "1.0.5" + resolved "http://r.cnpmjs.org/nice-try/download/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" + integrity sha1-ozeKdpbOfSI+iPybdkvX7xCJ42Y= + +once@^1.3.0: + version "1.4.0" + resolved "http://r.cnpmjs.org/once/download/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +onetime@^2.0.0: + version "2.0.1" + resolved "http://r.cnpmjs.org/onetime/download/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= + dependencies: + mimic-fn "^1.0.0" + +ono@^5.0.1: + version "5.0.1" + resolved "http://r.cnpmjs.org/ono/download/ono-5.0.1.tgz#a39e0af7ab2c2a143a06f08ad9d187e61f9da0c8" + integrity sha1-o54K96ssKhQ6BvCK2dGH5h+doMg= + +openapi-schema-validation@^0.4.2: + version "0.4.2" + resolved "http://r.cnpmjs.org/openapi-schema-validation/download/openapi-schema-validation-0.4.2.tgz#895c29021be02e000f71c51f859da52118eb1e21" + integrity sha1-iVwpAhvgLgAPccUfhZ2lIRjrHiE= + dependencies: + jsonschema "1.2.4" + jsonschema-draft4 "^1.0.0" + swagger-schema-official "2.0.0-bab6bed" + +openapi-types@^1.3.5: + version "1.3.5" + resolved "http://r.cnpmjs.org/openapi-types/download/openapi-types-1.3.5.tgz#6718cfbc857fe6c6f1471f65b32bdebb9c10ce40" + integrity sha1-ZxjPvIV/5sbxRx9lsyveu5wQzkA= + +optimist@^0.6.1: + version "0.6.1" + resolved "http://r.cnpmjs.org/optimist/download/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" + integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= + dependencies: + minimist "~0.0.1" + wordwrap "~0.0.2" + +optionator@^0.8.2: + version "0.8.2" + resolved "http://r.cnpmjs.org/optionator/download/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" + integrity sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q= + dependencies: + deep-is "~0.1.3" + fast-levenshtein "~2.0.4" + levn "~0.3.0" + prelude-ls "~1.1.2" + type-check "~0.3.2" + wordwrap "~1.0.0" + +os-tmpdir@~1.0.2: + version "1.0.2" + resolved "http://r.cnpmjs.org/os-tmpdir/download/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + +parent-module@^1.0.0: + version "1.0.1" + resolved "http://r.cnpmjs.org/parent-module/download/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha1-aR0nCeeMefrjoVZiJFLQB2LKqqI= + dependencies: + callsites "^3.0.0" + +path-dirname@^1.0.0: + version "1.0.2" + resolved "http://r.cnpmjs.org/path-dirname/download/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "http://r.cnpmjs.org/path-is-absolute/download/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-key@^2.0.1: + version "2.0.1" + resolved "http://r.cnpmjs.org/path-key/download/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +prelude-ls@~1.1.2: + version "1.1.2" + resolved "http://r.cnpmjs.org/prelude-ls/download/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" + integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= + +progress@^2.0.0: + version "2.0.3" + resolved "http://r.cnpmjs.org/progress/download/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha1-foz42PW48jnBvGi+tOt4Vn1XLvg= + +punycode@^2.1.0: + version "2.1.1" + resolved "http://r.cnpmjs.org/punycode/download/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha1-tYsBCsQMIsVldhbI0sLALHv0eew= + +regexpp@^2.0.1: + version "2.0.1" + resolved "http://r.cnpmjs.org/regexpp/download/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" + integrity sha1-jRnTHPYySCtYkEn4KB+T28uk0H8= + +resolve-from@^4.0.0: + version "4.0.0" + resolved "http://r.cnpmjs.org/resolve-from/download/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha1-SrzYUq0y3Xuqv+m0DgCjbbXzkuY= + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "http://r.cnpmjs.org/restore-cursor/download/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + +rimraf@2.6.3: + version "2.6.3" + resolved "http://r.cnpmjs.org/rimraf/download/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha1-stEE/g2Psnz54KHNqCYt04M8bKs= + dependencies: + glob "^7.1.3" + +run-async@^2.2.0: + version "2.3.0" + resolved "http://r.cnpmjs.org/run-async/download/run-async-2.3.0.tgz#0371ab4ae0bdd720d4166d7dfda64ff7a445a6c0" + integrity sha1-A3GrSuC91yDUFm19/aZP96RFpsA= + dependencies: + is-promise "^2.1.0" + +rxjs@^6.4.0: + version "6.5.2" + resolved "http://r.cnpmjs.org/rxjs/download/rxjs-6.5.2.tgz#2e35ce815cd46d84d02a209fb4e5921e051dbec7" + integrity sha1-LjXOgVzUbYTQKiCftOWSHgUdvsc= + dependencies: + tslib "^1.9.0" + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "http://r.cnpmjs.org/safer-buffer/download/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo= + +semver@^5.5.0, semver@^5.5.1: + version "5.7.0" + resolved "http://r.cnpmjs.org/semver/download/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" + integrity sha1-eQp89v6lRZuslhELKbYEEtyP+Ws= + +shebang-command@^1.2.0: + version "1.2.0" + resolved "http://r.cnpmjs.org/shebang-command/download/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "http://r.cnpmjs.org/shebang-regex/download/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +signal-exit@^3.0.2: + version "3.0.2" + resolved "http://r.cnpmjs.org/signal-exit/download/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= + +slice-ansi@^2.1.0: + version "2.1.0" + resolved "http://r.cnpmjs.org/slice-ansi/download/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" + integrity sha1-ys12k0YaY3pXiNkqfdT7oGjoFjY= + dependencies: + ansi-styles "^3.2.0" + astral-regex "^1.0.0" + is-fullwidth-code-point "^2.0.0" + +source-map@^0.6.1, source-map@~0.6.1: + version "0.6.1" + resolved "http://r.cnpmjs.org/source-map/download/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha1-dHIq8y6WFOnCh6jQu95IteLxomM= + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "http://r.cnpmjs.org/sprintf-js/download/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw= + +string-width@^2.1.0: + version "2.1.1" + resolved "http://r.cnpmjs.org/string-width/download/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4= + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string-width@^3.0.0: + version "3.1.0" + resolved "http://r.cnpmjs.org/string-width/download/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" + integrity sha1-InZ74htirxCBV0MG9prFG2IgOWE= + dependencies: + emoji-regex "^7.0.1" + is-fullwidth-code-point "^2.0.0" + strip-ansi "^5.1.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "http://r.cnpmjs.org/strip-ansi/download/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^5.1.0: + version "5.2.0" + resolved "http://r.cnpmjs.org/strip-ansi/download/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" + integrity sha1-jJpTb+tq/JYr36WxBKUJHBrZwK4= + dependencies: + ansi-regex "^4.1.0" + +strip-json-comments@^2.0.1: + version "2.0.1" + resolved "http://r.cnpmjs.org/strip-json-comments/download/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= + +supports-color@^5.3.0: + version "5.5.0" + resolved "http://r.cnpmjs.org/supports-color/download/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" + integrity sha1-4uaaRKyHcveKHsCzW2id9lMO/I8= + dependencies: + has-flag "^3.0.0" + +swagger-methods@^2.0.0: + version "2.0.0" + resolved "http://r.cnpmjs.org/swagger-methods/download/swagger-methods-2.0.0.tgz#e1260876e7638b8a5d61ae5735ad9d5e97f4f09d" + integrity sha1-4SYIdudji4pdYa5XNa2dXpf08J0= + +swagger-parser@^7.0.1: + version "7.0.1" + resolved "http://r.cnpmjs.org/swagger-parser/download/swagger-parser-7.0.1.tgz#da6892673b66b0cd831b26d63ce5914eeda7ee47" + integrity sha1-2miSZztmsM2DGybWPOWRTu2n7kc= + dependencies: + call-me-maybe "^1.0.1" + json-schema-ref-parser "^7.1.0" + ono "^5.0.1" + openapi-schema-validation "^0.4.2" + openapi-types "^1.3.5" + swagger-methods "^2.0.0" + swagger-schema-official "2.0.0-bab6bed" + z-schema "^4.1.0" + +swagger-schema-official@2.0.0-bab6bed: + version "2.0.0-bab6bed" + resolved "http://r.cnpmjs.org/swagger-schema-official/download/swagger-schema-official-2.0.0-bab6bed.tgz#70070468d6d2977ca5237b2e519ca7d06a2ea3fd" + integrity sha1-cAcEaNbSl3ylI3suUZyn0Gouo/0= + +table@^5.2.3: + version "5.4.1" + resolved "http://r.cnpmjs.org/table/download/table-5.4.1.tgz#0691ae2ebe8259858efb63e550b6d5f9300171e8" + integrity sha1-BpGuLr6CWYWO+2PlULbV+TABceg= + dependencies: + ajv "^6.9.1" + lodash "^4.17.11" + slice-ansi "^2.1.0" + string-width "^3.0.0" + +text-table@^0.2.0: + version "0.2.0" + resolved "http://r.cnpmjs.org/text-table/download/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +through@^2.3.6: + version "2.3.8" + resolved "http://r.cnpmjs.org/through/download/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + +tmp@^0.0.33: + version "0.0.33" + resolved "http://r.cnpmjs.org/tmp/download/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha1-bTQzWIl2jSGyvNoKonfO07G/rfk= + dependencies: + os-tmpdir "~1.0.2" + +tslib@^1.9.0: + version "1.10.0" + resolved "http://r.cnpmjs.org/tslib/download/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" + integrity sha1-w8GflZc/sKYpc/sJ2Q2WHuQ+XIo= + +type-check@~0.3.2: + version "0.3.2" + resolved "http://r.cnpmjs.org/type-check/download/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" + integrity sha1-WITKtRLPHTVeP7eE8wgEsrUg23I= + dependencies: + prelude-ls "~1.1.2" + +uglify-js@^3.1.4: + version "3.6.0" + resolved "http://r.cnpmjs.org/uglify-js/download/uglify-js-3.6.0.tgz#704681345c53a8b2079fb6cec294b05ead242ff5" + integrity sha1-cEaBNFxTqLIHn7bOwpSwXq0kL/U= + dependencies: + commander "~2.20.0" + source-map "~0.6.1" + +uri-js@^4.2.2: + version "4.2.2" + resolved "http://r.cnpmjs.org/uri-js/download/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" + integrity sha1-lMVA4f93KVbiKZUHwBCupsiDjrA= + dependencies: + punycode "^2.1.0" + +validator@^10.11.0: + version "10.11.0" + resolved "http://r.cnpmjs.org/validator/download/validator-10.11.0.tgz#003108ea6e9a9874d31ccc9e5006856ccd76b228" + integrity sha1-ADEI6m6amHTTHMyeUAaFbM12sig= + +which@^1.2.9: + version "1.3.1" + resolved "http://r.cnpmjs.org/which/download/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha1-pFBD1U9YBTFtqNYvn1CRjT2nCwo= + dependencies: + isexe "^2.0.0" + +wordwrap@~0.0.2: + version "0.0.3" + resolved "http://r.cnpmjs.org/wordwrap/download/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" + integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= + +wordwrap@~1.0.0: + version "1.0.0" + resolved "http://r.cnpmjs.org/wordwrap/download/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= + +wrappy@1: + version "1.0.2" + resolved "http://r.cnpmjs.org/wrappy/download/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write@1.0.3: + version "1.0.3" + resolved "http://r.cnpmjs.org/write/download/write-1.0.3.tgz#0800e14523b923a387e415123c865616aae0f5c3" + integrity sha1-CADhRSO5I6OH5BUSPIZWFqrg9cM= + dependencies: + mkdirp "^0.5.1" + +z-schema@^4.1.0: + version "4.1.0" + resolved "http://r.cnpmjs.org/z-schema/download/z-schema-4.1.0.tgz#8f824eabffdf018875cbcfa9b92dc3a348140b76" + integrity sha1-j4JOq//fAYh1y8+puS3Do0gUC3Y= + dependencies: + core-js "^2.5.7" + lodash.get "^4.4.2" + lodash.isequal "^4.5.0" + validator "^10.11.0" + optionalDependencies: + commander "^2.7.1"