Revert "feat: add deprecation label to redoc-cli (#2172)"

This reverts commit de3aa44469.
This commit is contained in:
ckoegel 2023-06-06 10:38:25 -04:00
parent 9b5a241bd8
commit 6e7d27fe66
6 changed files with 1278 additions and 59 deletions

View File

@ -89,7 +89,7 @@ Refer to the Redocly's documentation for more information on these products:
- [Simple integration with `create-react-app`](https://redocly.com/docs/redoc/quickstart/react/) - [Simple integration with `create-react-app`](https://redocly.com/docs/redoc/quickstart/react/)
[Example repo](https://github.com/APIs-guru/create-react-app-redoc) [Example repo](https://github.com/APIs-guru/create-react-app-redoc)
- [Command-line interface to bundle your docs into a **zero-dependency** HTML file](https://redocly.com/docs/cli/commands/build-docs/) - [Command-line interface to bundle your docs into a **zero-dependency** HTML file](https://redoc.ly/docs/redoc/quickstart/cli/)
- Neat **interactive** documentation for nested objects <br> - Neat **interactive** documentation for nested objects <br>
![](docs/images/nested-demo.gif) ![](docs/images/nested-demo.gif)

View File

@ -1,7 +1,5 @@
# redoc-cli # redoc-cli
**DEPRECATED: this package is deprecated. Use `npx @redocly/cli build-docs <api>` instead.**
**[ReDoc](https://github.com/Redocly/redoc)'s Command Line Interface** **[ReDoc](https://github.com/Redocly/redoc)'s Command Line Interface**
## Installation ## Installation

View File

@ -1,6 +1,7 @@
#!/usr/bin/env node #!/usr/bin/env node
/* tslint:disable:no-implicit-dependencies */ /* tslint:disable:no-implicit-dependencies */
import { createElement } from 'react'; import * as React from 'react';
import * as updateNotifier from 'update-notifier';
import { renderToString } from 'react-dom/server'; import { renderToString } from 'react-dom/server';
import { ServerStyleSheet } from 'styled-components'; import { ServerStyleSheet } from 'styled-components';
@ -9,7 +10,6 @@ import { createServer, IncomingMessage, ServerResponse } from 'http';
import { dirname, join, resolve, extname as getExtName } from 'path'; import { dirname, join, resolve, extname as getExtName } from 'path';
import * as zlib from 'zlib'; import * as zlib from 'zlib';
import * as boxen from 'boxen';
// @ts-ignore // @ts-ignore
import { createStore, loadAndBundleSpec, Redoc } from 'redoc'; import { createStore, loadAndBundleSpec, Redoc } from 'redoc';
@ -66,14 +66,6 @@ export const mimeTypes = {
const BUNDLES_DIR = dirname(require.resolve('redoc')); const BUNDLES_DIR = dirname(require.resolve('redoc'));
const boxenOptions = {
title: 'DEPRECATED',
titleAlignment: 'center',
padding: 1,
margin: 1,
borderColor: 'red',
} as boxen.Options;
const builderForBuildCommand = yargs => { const builderForBuildCommand = yargs => {
yargs.positional('spec', { yargs.positional('spec', {
describe: 'path or URL to your spec', describe: 'path or URL to your spec',
@ -120,6 +112,7 @@ const handlerForBuildCommand = async (argv: any) => {
}; };
try { try {
notifyUpdateCliVersion();
await bundle(argv.spec, config); await bundle(argv.spec, config);
} catch (e) { } catch (e) {
handleError(e); handleError(e);
@ -128,7 +121,7 @@ const handlerForBuildCommand = async (argv: any) => {
YargsParser.command( YargsParser.command(
'serve <spec>', 'serve <spec>',
'start the server [deprecated]', 'start the server',
yargs => { yargs => {
yargs.positional('spec', { yargs.positional('spec', {
describe: 'path or URL to your spec', describe: 'path or URL to your spec',
@ -183,6 +176,7 @@ YargsParser.command(
}; };
try { try {
notifyUpdateCliVersion();
await serve(argv.host as string, argv.port as number, argv.spec as string, config); await serve(argv.host as string, argv.port as number, argv.spec as string, config);
} catch (e) { } catch (e) {
handleError(e); handleError(e);
@ -190,31 +184,30 @@ YargsParser.command(
}, },
[ [
res => { res => {
console.log(` console.log(
${boxen( `\n⚠ This command is deprecated. Use "npx @redocly/cli preview-docs petstore.yaml"\n`,
'This package is deprecated.\n\nUse `npx @redocly/cli preview-docs <api>` instead.', );
boxenOptions,
)}`);
return res; return res;
}, },
], ],
true,
) )
.command( .command(
'build <spec>', 'build <spec>',
'build definition into zero-dependency HTML-file [deprecated]', 'build definition into zero-dependency HTML-file',
builderForBuildCommand, builderForBuildCommand,
handlerForBuildCommand, handlerForBuildCommand,
[notifyDeprecation],
true,
) )
.command( .command(
'bundle <spec>', 'bundle <spec>',
'bundle spec into zero-dependency HTML-file [deprecated]', 'bundle spec into zero-dependency HTML-file [deprecated]',
builderForBuildCommand, builderForBuildCommand,
handlerForBuildCommand, handlerForBuildCommand,
[notifyDeprecation], [
true, res => {
console.log(`\n⚠ This command is deprecated. Use "build" command instead.\n`);
return res;
},
],
) )
.demandCommand() .demandCommand()
.options('t', { .options('t', {
@ -351,7 +344,7 @@ async function getPageHTML(
const store = await createStore(spec, specUrl, redocOptions); const store = await createStore(spec, specUrl, redocOptions);
const sheet = new ServerStyleSheet(); const sheet = new ServerStyleSheet();
// @ts-ignore // @ts-ignore
html = renderToString(sheet.collectStyles(createElement(Redoc, { store }))); html = renderToString(sheet.collectStyles(React.createElement(Redoc, { store })));
css = sheet.getStyleTags(); css = sheet.getStyleTags();
state = await store.toJS(); state = await store.toJS();
@ -479,12 +472,15 @@ function getObjectOrJSON(options) {
} }
} }
function notifyDeprecation(res: YargsParser.Arguments): YargsParser.Arguments { function notifyUpdateCliVersion() {
console.log( const pkg = require('./package.json');
boxen( const notifier = updateNotifier({
'This package is deprecated.\n\nUse `npx @redocly/cli build-docs <api>` instead.', pkg,
boxenOptions, updateCheckInterval: 0,
), shouldNotifyInNpmScript: true,
); });
return res; notifier.notify({
message:
'Run `{updateCommand}` to update.\nChangelog: https://github.com/Redocly/redoc/releases/tag/{latestVersion}',
});
} }

1269
cli/npm-shrinkwrap.json generated

File diff suppressed because it is too large Load Diff

View File

@ -11,7 +11,6 @@
"node": ">=12.0.0" "node": ">=12.0.0"
}, },
"dependencies": { "dependencies": {
"boxen": "5.1.2",
"chokidar": "^3.5.1", "chokidar": "^3.5.1",
"handlebars": "^4.7.7", "handlebars": "^4.7.7",
"mkdirp": "^1.0.4", "mkdirp": "^1.0.4",
@ -21,6 +20,7 @@
"react-dom": "^17.0.1", "react-dom": "^17.0.1",
"redoc": "2.0.0-rc.77", "redoc": "2.0.0-rc.77",
"styled-components": "^5.3.0", "styled-components": "^5.3.0",
"update-notifier": "^5.0.1",
"yargs": "^17.3.1" "yargs": "^17.3.1"
}, },
"publishConfig": { "publishConfig": {

View File

@ -1,7 +1,7 @@
describe('Search', () => { describe('Search', () => {
const getSearchInput = () => cy.get('[role="search"] input'); const getSearchInput = () => cy.get('[role="search"] input');
const getSearchResults = () => cy.get('[data-role="search:results"]'); const getSearchResults = () => cy.get('[data-role="search:results"]');
const getResult = i => cy.get('[role=search] label').eq(i); const getResult = i => cy.get('[role=search] [role=menuitem]').eq(i);
beforeEach(() => { beforeEach(() => {
cy.visit('e2e/standalone.html'); cy.visit('e2e/standalone.html');
@ -45,7 +45,7 @@ describe('Search', () => {
getSearchInput().type('{enter}', { force: true }); getSearchInput().type('{enter}', { force: true });
cy.contains('[role=menu] label', 'Introduction').should('have.class', 'active'); cy.contains('[role=menu] [role=menuitem]', 'Introduction').should('have.class', 'active');
}); });
it('should mark search results', () => { it('should mark search results', () => {