{"analyzedAt":"2022-06-29T04:36:57.712Z","collected":{"metadata":{"name":"react-swagger-openapi","scope":"unscoped","version":"0.14.1","description":"Library that generates React Hooks based on the OpenAPI specification.","keywords":["openapi","swagger","generator","typescript","yaml","json","fetch","react","hooks","xhr","axios","node"],"date":"2022-01-14T11:25:54.368Z","author":{"name":"Steed Monteiro"},"publisher":{"username":"steed","email":"steed.monteiro@gmail.com"},"maintainers":[{"username":"steed","email":"steed.monteiro@gmail.com"}],"repository":{"type":"git","url":"git+https://github.com/rize-network/react-swagger-openapi.git"},"links":{"npm":"https://www.npmjs.com/package/react-swagger-openapi","homepage":"https://github.com/rize-network/react-swagger-openapi","repository":"https://github.com/rize-network/react-swagger-openapi","bugs":"https://github.com/rize-network/react-swagger-openapi/issues"},"license":"MIT","dependencies":{"@types/node-fetch":"^2.5.12","abort-controller":"^3.0.0","axios":"^0.24.0","camelcase":"^6.3.0","commander":"^8.3.0","form-data":"^4.0.0","handlebars":"^4.7.6","json-schema-ref-parser":"^9.0.7","prettier":"2.4.0","node-fetch":"^2.6.6"},"devDependencies":{"@babel/cli":"7.16.7","@babel/core":"7.16.7","@babel/preset-env":"7.16.7","@babel/preset-typescript":"7.16.7","@rollup/plugin-commonjs":"21.0.1","@rollup/plugin-node-resolve":"13.1.3","@rollup/plugin-typescript":"8.3.0","@types/express":"4.17.13","@types/glob":"7.2.0","@types/jest":"27.4.0","@types/node":"17.0.8","@types/qs":"6.9.7","@typescript-eslint/eslint-plugin":"5.9.0","@typescript-eslint/parser":"5.9.0","codecov":"3.8.3","eslint":"8.6.0","eslint-config-prettier":"8.3.0","eslint-plugin-prettier":"4.0.0","eslint-plugin-simple-import-sort":"7.0.0","express":"4.17.2","glob":"7.2.0","jest":"27.4.7","jest-cli":"27.4.7","prettier":"2.5.1","puppeteer":"13.0.1","qs":"6.10.2","rimraf":"^3.0.2","rollup":"2.63.0","rollup-plugin-node-externals":"3.1.2","rollup-plugin-terser":"7.0.2","ts-node":"10.4.0","tslib":"2.3.1","typescript":"4.5.4"},"releases":[{"from":"2022-05-30T00:00:00.000Z","to":"2022-06-29T00:00:00.000Z","count":0},{"from":"2022-03-31T00:00:00.000Z","to":"2022-06-29T00:00:00.000Z","count":1},{"from":"2021-12-31T00:00:00.000Z","to":"2022-06-29T00:00:00.000Z","count":7},{"from":"2021-06-29T00:00:00.000Z","to":"2022-06-29T00:00:00.000Z","count":7},{"from":"2020-06-29T00:00:00.000Z","to":"2022-06-29T00:00:00.000Z","count":7}],"hasTestScript":true,"hasSelectiveFiles":true,"readme":"# React Swagger OpenAPI\n\n[![NPM][npm-image]][npm-url]\n[![License][license-image]][license-url]\n[![Coverage][coverage-image]][coverage-url]\n[![Quality][quality-image]][quality-url]\n[![Code Climate][climate-image]][climate-url]\n[![Downloads][downloads-image]][downloads-url]\n[![Build][build-image]][build-url]\n\n> Node.js library that generates Typescript clients based on the OpenAPI specification.\n\n## Why?\n\n-   Frontend ❤️ OpenAPI, but we do not want to use JAVA codegen in our builds\n-   Quick, lightweight, robust and framework-agnostic 🚀\n-   Supports generation of TypeScript clients\n-   Supports generations of Fetch, [Node-Fetch](#node-fetch-support), [Axios](#axios-support) and XHR http clients\n-   Supports OpenAPI specification v2.0 and v3.0\n-   Supports JSON and YAML files for input\n-   Supports generation through CLI, Node.js and NPX\n-   Supports tsc and @babel/plugin-transform-typescript\n-   Supports aborting of requests (cancelable promise pattern)\n-   Supports external references using [`json-schema-ref-parser`](https://github.com/APIDevTools/json-schema-ref-parser/)\n\n## Install\n\n```\nnpm install react-swagger-openapi --save-dev\n```\n\n## Usage\n\n```\n$ openapi --help\n\n  Usage: openapi [options]\n\n  Options:\n    -V, --version             output the version number\n    -i, --input <value>       OpenAPI specification, can be a path, url or string content (required)\n    -o, --output <value>      Output directory (required)\n    -c, --client <value>      HTTP client to generate [fetch, xhr, axios, node] (default: \"fetch\")\n    --useOptions              Use options instead of arguments\n    --useUnionTypes           Use union types instead of enums\n    --exportCore <value>      Write core files to disk (default: true)\n    --exportServices <value>  Write services to disk (default: true)\n    --exportModels <value>    Write models to disk (default: true)\n    --exportSchemas <value>   Write schemas to disk (default: false)\n    --postfix <value>         Service name postfix (default: \"Service\")\n    --request <value>         Path to custom request file\n    -h, --help                display help for command\n\n  Examples\n    $ openapi --input ./spec.json\n    $ openapi --input ./spec.json --output ./dist\n    $ openapi --input ./spec.json --output ./dist --client xhr\n```\n\n## Example\n\n**package.json**\n\n```json\n{\n    \"scripts\": {\n        \"generate\": \"openapi --input ./spec.json --output ./dist\"\n    }\n}\n```\n\n**NPX**\n\n```\nnpx react-swagger-openapi --input ./spec.json --output ./dist\n```\n\n**Node.js API**\n\n```javascript\nconst OpenAPI = require('react-swagger-openapi');\n\nOpenAPI.generate({\n    input: './spec.json',\n    output: './dist',\n});\n\n// Or by providing the content of the spec directly 🚀\nOpenAPI.generate({\n    input: require('./spec.json'),\n    output: './dist',\n});\n```\n\n## Features\n\n### Argument style vs. Object style `--useOptions`\n\nThere's no [named parameter](https://en.wikipedia.org/wiki/Named_parameter) in JavaScript or TypeScript, because of\nthat, we offer the flag `--useOptions` to generate code in two different styles.\n\n**Argument-style:**\n\n```typescript\nfunction createUser(name: string, password: string, type?: string, address?: string) {\n    // ...\n}\n\n// Usage\ncreateUser('Jack', '123456', undefined, 'NY US');\n```\n\n**Object-style:**\n\n```typescript\nfunction createUser({\n    name,\n    password,\n    type,\n    address,\n}: {\n    name: string;\n    password: string;\n    type?: string;\n    address?: string;\n}) {\n    // ...\n}\n\n// Usage\ncreateUser({\n    name: 'Jack',\n    password: '123456',\n    address: 'NY US',\n});\n```\n\n### Usage\n\n```typescript\nimport { UserService } from './api';\n\n//promise\nconst userRole = await UserService.getRole(1);\n\nconst Component = () => {\n    //hooks\n    const userGetRoleRequest = UserService.useGetRole({\n        onSuccess:(data) => {\n            console.log(data)\n        },\n        onError: (error) => {\n            console.error(error)\n        }\n    });\n\n    return  (<>\n        <Button onPress={()=>{\n            userGetRoleRequest.run(1);\n        }}>Load</Button>\n\n        {userGetRoleRequest.loading && <Loader />}\n        {userGetRoleRequest.error && <>{userGetRoleRequest.error.message}</>}\n        {userGetRoleRequest.data && <>Name : {userGetRoleRequest.data.name}</>}\n    <>);\n}\n```\n\n### Enums vs. Union Types `--useUnionTypes`\n\nThe OpenAPI spec allows you to define [enums](https://swagger.io/docs/specification/data-models/enums/) inside the\ndata model. By default, we convert these enums definitions to [TypeScript enums](https://www.typescriptlang.org/docs/handbook/enums.html).\nHowever, these enums are merged inside the namespace of the model, this is unsupported by Babel, [see docs](https://babeljs.io/docs/en/babel-plugin-transform-typescript#impartial-namespace-support).\nBecause we also want to support projects that use Babel [@babel/plugin-transform-typescript](https://babeljs.io/docs/en/babel-plugin-transform-typescript),\nwe offer the flag `--useUnionTypes` to generate [union types](https://www.typescriptlang.org/docs/handbook/unions-and-intersections.html#union-types)\ninstead of the traditional enums. The difference can be seen below:\n\n**Enums:**\n\n```typescript\n// Model\nexport interface Order {\n    id?: number;\n    quantity?: number;\n    status?: Order.status;\n}\n\nexport namespace Order {\n    export enum status {\n        PLACED = 'placed',\n        APPROVED = 'approved',\n        DELIVERED = 'delivered',\n    }\n}\n\n// Usage\nconst order: Order = {\n    id: 1,\n    quantity: 40,\n    status: Order.status.PLACED,\n};\n```\n\n**Union Types:**\n\n```typescript\n// Model\nexport interface Order {\n    id?: number;\n    quantity?: number;\n    status?: 'placed' | 'approved' | 'delivered';\n}\n\n// Usage\nconst order: Order = {\n    id: 1,\n    quantity: 40,\n    status: 'placed',\n};\n```\n\n### Runtime schemas `--exportSchemas`\n\nBy default, the OpenAPI generator only exports interfaces for your models. These interfaces will help you during\ndevelopment, but will not be available in JavaScript during runtime. However, Swagger allows you to define properties\nthat can be useful during runtime, for instance: `maxLength` of a string or a `pattern` to match, etc. Let's say\nwe have the following model:\n\n```json\n{\n    \"MyModel\": {\n        \"required\": [\"key\", \"name\"],\n        \"type\": \"object\",\n        \"properties\": {\n            \"key\": {\n                \"maxLength\": 64,\n                \"pattern\": \"^[a-zA-Z0-9_]*$\",\n                \"type\": \"string\"\n            },\n            \"name\": {\n                \"maxLength\": 255,\n                \"type\": \"string\"\n            },\n            \"enabled\": {\n                \"type\": \"boolean\",\n                \"readOnly\": true\n            },\n            \"modified\": {\n                \"type\": \"string\",\n                \"format\": \"date-time\",\n                \"readOnly\": true\n            }\n        }\n    }\n}\n```\n\nThis will generate the following interface:\n\n```typescript\nexport interface MyModel {\n    key: string;\n    name: string;\n    readonly enabled?: boolean;\n    readonly modified?: string;\n}\n```\n\nThe interface does not contain any properties like `maxLength` or `pattern`. However, they could be useful\nif we wanted to create some form where a user could create such a model. In that form you would iterate\nover the properties to render form fields based on their type and validate the input based on the `maxLength`\nor `pattern` property. This requires us to have this information somewhere... For this we can use the\nflag `--exportSchemas` to generate a runtime model next to the normal interface:\n\n```typescript\nexport const $MyModel = {\n    properties: {\n        key: {\n            type: 'string',\n            isRequired: true,\n            maxLength: 64,\n            pattern: '^[a-zA-Z0-9_]*$',\n        },\n        name: {\n            type: 'string',\n            isRequired: true,\n            maxLength: 255,\n        },\n        enabled: {\n            type: 'boolean',\n            isReadOnly: true,\n        },\n        modified: {\n            type: 'string',\n            isReadOnly: true,\n            format: 'date-time',\n        },\n    },\n} as const;\n```\n\nThese runtime object are prefixed with a `$` character and expose all the interesting attributes of a model\nand its properties. We can now use this object to generate the form:\n\n```typescript jsx\nimport { $MyModel } from './generated';\n\n// Some pseudo code to iterate over the properties and return a form field\n// the form field could be some abstract component that renders the correct\n// field type and validation rules based on the given input.\nconst formFields = Object.entries($MyModel.properties).map(([key, value]) => (\n    <FormField\n        name={key}\n        type={value.type}\n        format={value.format}\n        maxLength={value.maxLength}\n        pattern={value.pattern}\n        isReadOnly={value.isReadOnly}\n    />\n));\n\nconst MyForm = () => <form>{formFields}</form>;\n```\n\n### Enum with custom names and descriptions\n\nYou can use `x-enum-varnames` and `x-enum-descriptions` in your spec to generate enum with custom names and descriptions.\nIt's not in official [spec](https://github.com/OAI/OpenAPI-Specification/issues/681) yet. But it's a supported extension\nthat can help developers use more meaningful enumerators.\n\n```json\n{\n    \"EnumWithStrings\": {\n        \"description\": \"This is a simple enum with strings\",\n        \"enum\": [0, 1, 2],\n        \"x-enum-varnames\": [\"Success\", \"Warning\", \"Error\"],\n        \"x-enum-descriptions\": [\n            \"Used when the status of something is successful\",\n            \"Used when the status of something has a warning\",\n            \"Used when the status of something has an error\"\n        ]\n    }\n}\n```\n\nGenerated code:\n\n```typescript\nenum EnumWithStrings {\n    /*\n     * Used when the status of something is successful\n     */\n    Success = 0,\n    /*\n     * Used when the status of something has a warning\n     */\n    Waring = 1,\n    /*\n     * Used when the status of something has an error\n     */\n    Error = 2,\n}\n```\n\n### Nullable in OpenAPI v2\n\nIn the OpenAPI v3 spec you can create properties that can be NULL, by providing a `nullable: true` in your schema.\nHowever, the v2 spec does not allow you to do this. You can use the unofficial `x-nullable` in your specification\nto generate nullable properties in OpenApi v2.\n\n```json\n{\n    \"ModelWithNullableString\": {\n        \"required\": [\"requiredProp\"],\n        \"description\": \"This is a model with one string property\",\n        \"type\": \"object\",\n        \"properties\": {\n            \"prop\": {\n                \"description\": \"This is a simple string property\",\n                \"type\": \"string\",\n                \"x-nullable\": true\n            },\n            \"requiredProp\": {\n                \"description\": \"This is a simple string property\",\n                \"type\": \"string\",\n                \"x-nullable\": true\n            }\n        }\n    }\n}\n```\n\nGenerated code:\n\n```typescript\ninterface ModelWithNullableString {\n    prop?: string | null;\n    requiredProp: string | null;\n}\n```\n\n### Authorization\n\nThe OpenAPI generator supports Bearer Token authorization. In order to enable the sending\nof tokens in each request you can set the token using the global OpenAPI configuration:\n\n```typescript\nimport { OpenAPI } from './generated';\n\nOpenAPI.TOKEN = 'some-bearer-token';\n```\n\nAlternatively, we also support an async method that provides the token for each request.\nYou can simply assign this method to the same `TOKEN `property in the global OpenAPI object.\n\n```typescript\nimport { OpenAPI } from './generated';\n\nconst getToken = async () => {\n    // Some code that requests a token...\n    return 'SOME_TOKEN';\n};\n\nOpenAPI.TOKEN = getToken;\n```\n\n### References\n\nLocal references to schema definitions (those beginning with `#/definitions/schemas/`)\nwill be converted to type references to the equivalent, generated top-level type.\n\nThe OpenAPI generator also supports external references, which allows you to break\ndown your openapi.yml into multiple sub-files, or incorporate third-party schemas\nas part of your types to ensure everything is able to be TypeScript generated.\n\nExternal references may be:\n\n-   _relative references_ - references to other files at the same location e.g.\n    `{ $ref: 'schemas/customer.yml' }`\n-   _remote references_ - fully qualified references to another remote location\n    e.g. `{ $ref: 'https://myexampledomain.com/schemas/customer_schema.yml' }`\n\n    For remote references, both files (when the file is on the current filesystem)\n    and http(s) URLs are supported.\n\nExternal references may also contain internal paths in the external schema (e.g.\n`schemas/collection.yml#/definitions/schemas/Customer`) and back-references to\nthe base openapi file or between files (so that you can reference another\nschema in the main file as a type of an object or array property, for example).\n\nAt start-up, an OpenAPI or Swagger file with external references will be \"bundled\",\nso that all external references and back-references will be resolved (but local\nreferences preserved).\n\n# FAQ\n\n### Babel support\n\nIf you use enums inside your models / definitions then those enums are by default inside a namespace with the same name\nas your model. This is called declaration merging. However, the [@babel/plugin-transform-typescript](https://babeljs.io/docs/en/babel-plugin-transform-typescript)\ndoes not support these namespaces, so if you are using babel in your project please use the `--useUnionTypes` flag\nto generate union types instead of traditional enums. More info can be found here: [Enums vs. Union Types](#enums-vs-union-types---useuniontypes).\n\n**Note:** If you are using Babel 7 and Typescript 3.8 (or higher) then you should enable the `onlyRemoveTypeImports` to\nignore any 'type only' imports, see https://babeljs.io/docs/en/babel-preset-typescript#onlyremovetypeimports for more info\n\n```javascript\nmodule.exports = {\n    presets: [\n        [\n            '@babel/preset-typescript',\n            {\n                onlyRemoveTypeImports: true,\n            },\n        ],\n    ],\n};\n```\n\n### Axios support\n\nThis tool allows you to generate a client based on the [`axios`](https://www.npmjs.com/package/axios) client.\nThe advantage of the Axios client is that it works in both NodeJS and Browser based environments.\nIf you want to generate the Axios based client then you can specify `--client axios` in the openapi call:\n\n`openapi --input ./spec.json --output ./dist --client axios`\n\nThe only downside is that this client needs some additional dependencies to work (due to the missing Blob and FormData\nclasses in NodeJS).\n\n```\nnpm install axios --save-dev\nnpm install form-data@4.x --save-dev\n```\n\nIn order to compile the project and resolve the imports, you will need to enable the `allowSyntheticDefaultImports`\nin your `tsconfig.json` file.\n\n### Node-Fetch support\n\nBy default, this tool will generate a client that is compatible with the (browser based) Fetch API.\nHowever, this client will not work inside the Node.js environment. If you want to generate the Node.js compatible\nclient then you can specify `--client node` in the openapi call:\n\n`openapi --input ./spec.json --output ./dist --client node`\n\nThis will generate a client that uses [`node-fetch`](https://www.npmjs.com/package/node-fetch) internally. However,\nin order to compile and run this client, you might need to install the `node-fetch@2.x` dependencies.\n\n> Since version 3.x [`node-fetch`](https://www.npmjs.com/package/node-fetch) switched to ESM only,\n> breaking many CommonJS based toolchains (like Jest). Right now we do not support this new version!\n\n```\nnpm install @types/node-fetch@2.x --save-dev\nnpm install abort-controller@3.x --save-dev\nnpm install form-data@4.x --save-dev\nnpm install node-fetch@2.x --save-dev\n```\n\nIn order to compile the project and resolve the imports, you will need to enable the `allowSyntheticDefaultImports`\nin your `tsconfig.json` file.\n\n[npm-url]: https://npmjs.org/package/react-swagger-openapi\n[npm-image]: https://img.shields.io/npm/v/react-swagger-openapi.svg\n[license-url]: LICENSE\n[license-image]: http://img.shields.io/npm/l/react-swagger-openapi.svg\n[coverage-url]: https://codecov.io/gh/rize-network/react-swagger-openapi\n[coverage-image]: https://img.shields.io/codecov/c/github/rize-network/react-swagger-openapi.svg\n[quality-url]: https://lgtm.com/projects/g/rize-network/react-swagger-openapi\n[quality-image]: https://img.shields.io/lgtm/grade/javascript/g/rize-network/react-swagger-openapi.svg\n[climate-url]: https://codeclimate.com/github/rize-network/react-swagger-openapi\n[climate-image]: https://img.shields.io/codeclimate/maintainability/rize-network/react-swagger-openapi.svg\n[downloads-url]: http://npm-stat.com/charts.html?package=react-swagger-openapi\n[downloads-image]: http://img.shields.io/npm/dm/react-swagger-openapi.svg\n[build-url]: https://circleci.com/gh/rize-network/react-swagger-openapi/tree/master\n[build-image]: https://circleci.com/gh/rize-network/react-swagger-openapi/tree/master.svg?style=svg"},"npm":{"downloads":[{"from":"2022-06-28T00:00:00.000Z","to":"2022-06-29T00:00:00.000Z","count":0},{"from":"2022-06-22T00:00:00.000Z","to":"2022-06-29T00:00:00.000Z","count":1},{"from":"2022-05-30T00:00:00.000Z","to":"2022-06-29T00:00:00.000Z","count":5},{"from":"2022-03-31T00:00:00.000Z","to":"2022-06-29T00:00:00.000Z","count":71},{"from":"2021-12-31T00:00:00.000Z","to":"2022-06-29T00:00:00.000Z","count":280},{"from":"2021-06-29T00:00:00.000Z","to":"2022-06-29T00:00:00.000Z","count":280}],"starsCount":0},"github":{"forkOf":"ferdikoomen/openapi-typescript-codegen","starsCount":0,"forksCount":0,"subscribersCount":0,"issues":{"count":0,"openCount":0,"distribution":{"3600":0,"10800":0,"32400":0,"97200":0,"291600":0,"874800":0,"2624400":0,"7873200":0,"23619600":0,"70858800":0,"212576400":0},"isDisabled":true},"contributors":[{"username":"macko911","commitsCount":1},{"username":"rossille","commitsCount":1},{"username":"mlaps-gafe","commitsCount":3},{"username":"xiaoyu-tamu","commitsCount":1},{"username":"todesstoss","commitsCount":1},{"username":"mvasin","commitsCount":1},{"username":"dbo","commitsCount":2},{"username":"ferdikoomen","commitsCount":358},{"username":"thetrime","commitsCount":1},{"username":"SteedMonteiro","commitsCount":13},{"username":"jurgenbelien","commitsCount":3},{"username":"raman-savitski-exadel","commitsCount":2},{"username":"budde377","commitsCount":5},{"username":"troglotit","commitsCount":2},{"username":"nandorojo","commitsCount":5},{"username":"Ronaldvdh-ISAAC","commitsCount":1},{"username":"vanhoofmaarten","commitsCount":3},{"username":"dependabot-preview[bot]","commitsCount":613},{"username":"dependabot[bot]","commitsCount":11}],"commits":[{"from":"2022-06-22T00:00:00.000Z","to":"2022-06-29T00:00:00.000Z","count":0},{"from":"2022-05-30T00:00:00.000Z","to":"2022-06-29T00:00:00.000Z","count":0},{"from":"2022-03-31T00:00:00.000Z","to":"2022-06-29T00:00:00.000Z","count":0},{"from":"2021-12-31T00:00:00.000Z","to":"2022-06-29T00:00:00.000Z","count":19},{"from":"2021-06-29T00:00:00.000Z","to":"2022-06-29T00:00:00.000Z","count":157}]},"source":{"files":{"readmeSize":16987,"testsSize":498341},"badges":[{"urls":{"original":"https://img.shields.io/npm/v/react-swagger-openapi.svg","shields":"https://img.shields.io/npm/v/react-swagger-openapi.svg","content":"https://img.shields.io/npm/v/react-swagger-openapi.json"},"info":{"service":"npm","type":"version","modifiers":{"type":"v"}}},{"urls":{"original":"http://img.shields.io/npm/l/react-swagger-openapi.svg","shields":"https://img.shields.io/npm/l/react-swagger-openapi.svg","content":"https://img.shields.io/npm/l/react-swagger-openapi.json"},"info":{"service":"npm","type":"license","modifiers":{"type":"l"}}},{"urls":{"original":"https://img.shields.io/codecov/c/github/rize-network/react-swagger-openapi.svg","service":"https://codecov.io/github/rize-network/react-swagger-openapi/graphs/badge.svg","shields":"https://img.shields.io/codecov/c/github/rize-network/react-swagger-openapi.svg","content":"https://img.shields.io/codecov/c/github/rize-network/react-swagger-openapi.json"},"info":{"service":"codecov","type":"coverage"}},{"urls":{"original":"http://img.shields.io/npm/dm/react-swagger-openapi.svg","shields":"https://img.shields.io/npm/dm/react-swagger-openapi.svg","content":"https://img.shields.io/npm/dm/react-swagger-openapi.json"},"info":{"service":"npm","type":"downloads","modifiers":{"type":"dm"}}},{"urls":{"original":"https://circleci.com/gh/rize-network/react-swagger-openapi/tree/master.svg?style=svg","service":"https://circleci.com/gh/rize-network/react-swagger-openapi/tree/master.svg","shields":"https://img.shields.io/circleci/project/github/rize-network/react-swagger-openapi/master.svg","content":"https://img.shields.io/circleci/project/github/rize-network/react-swagger-openapi/master.json"},"info":{"service":"circleci","type":"build","modifiers":{"branch":"master"}}}],"linters":["editorconfig","eslint","prettier"],"outdatedDependencies":{"camelcase":{"required":"^6.3.0","stable":"7.0.0","latest":"7.0.0"},"axios":{"required":"^0.24.0","stable":"0.27.2","latest":"1.0.0-alpha.1"},"prettier":{"required":"2.4.0","stable":"2.7.1","latest":"2.7.1"},"node-fetch":{"required":"^2.6.6","stable":"3.2.6","latest":"4.0.0-beta.4"},"commander":{"required":"^8.3.0","stable":"9.3.0","latest":"9.3.0"}}}},"evaluation":{"quality":{"carefulness":0.45999999999999996,"tests":0.6,"health":0.5,"branding":0.6},"popularity":{"communityInterest":19,"downloadsCount":23.666666666666668,"downloadsAcceleration":0.04699391171993916,"dependentsCount":0},"maintenance":{"releasesFrequency":1,"commitsFrequency":0.850291095890411,"openIssues":0.7,"issuesDistribution":0.7}},"score":{"final":0.6056741136392647,"detail":{"quality":0.793217646686295,"popularity":0.053064608053498954,"maintenance":0.9975320194704329}}}