From 36cd88066e94e2ee1275a7d347d367e3cbc95555 Mon Sep 17 00:00:00 2001 From: Qjuh <76154676+Qjuh@users.noreply.github.com> Date: Mon, 13 Nov 2023 21:30:34 +0100 Subject: [PATCH 1/2] fix: minify mainlib docs json --- .../api-extractor-model/src/model/ApiPackage.ts | 15 ++++++++++++++- packages/api-extractor/src/api/Extractor.ts | 7 ++++++- packages/api-extractor/src/cli/RunAction.ts | 9 +++++++++ packages/discord.js/package.json | 2 +- 4 files changed, 30 insertions(+), 3 deletions(-) diff --git a/packages/api-extractor-model/src/model/ApiPackage.ts b/packages/api-extractor-model/src/model/ApiPackage.ts index 6b684de7fc8c..a648581f321f 100644 --- a/packages/api-extractor-model/src/model/ApiPackage.ts +++ b/packages/api-extractor-model/src/model/ApiPackage.ts @@ -1,6 +1,7 @@ // Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license. // See LICENSE in the project root for license information. +import { Buffer } from 'node:buffer'; import { TSDocConfiguration } from '@microsoft/tsdoc'; import { DeclarationReference } from '@microsoft/tsdoc/lib-commonjs/beta/DeclarationReference.js'; import { TSDocConfigFile } from '@microsoft/tsdoc-config'; @@ -10,6 +11,7 @@ import { PackageJsonLookup, type IPackageJson, type JsonObject, + FileSystem, } from '@rushstack/node-core-library'; import { ApiDocumentedItem, type IApiDocumentedItemOptions } from '../items/ApiDocumentedItem.js'; import { ApiItem, ApiItemKind, type IApiItemJson } from '../items/ApiItem.js'; @@ -98,6 +100,11 @@ export interface IApiPackageJson extends IApiItemJson { * @public */ export interface IApiPackageSaveOptions extends IJsonFileSaveOptions { + /** + * Set to true to not have indentation or newlines in resulting JSON. + */ + minify?: boolean; + /** * Set to true only when invoking API Extractor's test harness. * @@ -300,7 +307,13 @@ export class ApiPackage extends ApiItemContainerMixin(ApiNameMixin(ApiDocumented } this.serializeInto(jsonObject); - JsonFile.save(jsonObject, apiJsonFilename, ioptions); + if (ioptions.minify) { + FileSystem.writeFile(apiJsonFilename, Buffer.from(JSON.stringify(jsonObject), 'utf8'), { + ensureFolderExists: ioptions.ensureFolderExists ?? true, + }); + } else { + JsonFile.save(jsonObject, apiJsonFilename, ioptions); + } } /** diff --git a/packages/api-extractor/src/api/Extractor.ts b/packages/api-extractor/src/api/Extractor.ts index c4258abea5c1..3abe2e8f9814 100644 --- a/packages/api-extractor/src/api/Extractor.ts +++ b/packages/api-extractor/src/api/Extractor.ts @@ -41,6 +41,11 @@ export interface IExtractorInvokeOptions { */ compilerState?: CompilerState; + /** + * Whether to minify the resulting doc model JSON, i.e. without any indentation or newlines. + */ + docModelMinify?: boolean; + /** * Indicates that API Extractor is running as part of a local build, e.g. on developer's * machine. @@ -270,7 +275,7 @@ export class Extractor { apiPackage.saveToJsonFile(extractorConfig.apiJsonFilePath, { toolPackage: Extractor.packageName, toolVersion: Extractor.version, - + minify: options?.docModelMinify ?? false, newlineConversion: extractorConfig.newlineKind, ensureFolderExists: true, testMode: extractorConfig.testMode, diff --git a/packages/api-extractor/src/cli/RunAction.ts b/packages/api-extractor/src/cli/RunAction.ts index 0736df743902..0e6a74f87287 100644 --- a/packages/api-extractor/src/cli/RunAction.ts +++ b/packages/api-extractor/src/cli/RunAction.ts @@ -27,6 +27,8 @@ export class RunAction extends CommandLineAction { private readonly _typescriptCompilerFolder: CommandLineStringParameter; + private readonly _minify: CommandLineFlagParameter; + public constructor(_parser: ApiExtractorCommandLine) { super({ actionName: 'run', @@ -57,6 +59,12 @@ export class RunAction extends CommandLineAction { description: 'Show additional informational messages in the output.', }); + this._minify = this.defineFlagParameter({ + parameterLongName: '--minify', + parameterShortName: '-m', + description: 'Minify the resulting doc model JSON, i.e. without any indentation or newlines.', + }); + this._diagnosticsParameter = this.defineFlagParameter({ parameterLongName: '--diagnostics', description: @@ -136,6 +144,7 @@ export class RunAction extends CommandLineAction { const extractorResult: ExtractorResult = Extractor.invoke(extractorConfig, { localBuild: this._localParameter.value, + docModelMinify: this._minify.value, showVerboseMessages: this._verboseParameter.value, showDiagnostics: this._diagnosticsParameter.value, typescriptCompilerFolder, diff --git a/packages/discord.js/package.json b/packages/discord.js/package.json index 707826688769..6213d8d67af2 100644 --- a/packages/discord.js/package.json +++ b/packages/discord.js/package.json @@ -11,7 +11,7 @@ "fmt": "pnpm run format", "docs": "docgen -i './src/*.js' './src/**/*.js' -c ./docs/index.json -r ../../ -o ./docs/docs.json && pnpm run docs:new", "docs:test": "docgen -i './src/*.js' './src/**/*.js' -c ./docs/index.json -r ../../", - "docs:new": "api-extractor -d run --local", + "docs:new": "api-extractor run --local --minify", "prepack": "pnpm run lint && pnpm run test", "changelog": "git cliff --prepend ./CHANGELOG.md -u -c ./cliff.toml -r ../../ --include-path 'packages/discord.js/*'", "release": "cliff-jumper" From 7d01aeff4108746d28aac323580ed368c3e4101c Mon Sep 17 00:00:00 2001 From: Qjuh <76154676+Qjuh@users.noreply.github.com> Date: Mon, 13 Nov 2023 21:38:23 +0100 Subject: [PATCH 2/2] fix: minify them all --- packages/brokers/package.json | 2 +- packages/builders/package.json | 2 +- packages/collection/package.json | 2 +- packages/core/package.json | 2 +- packages/formatters/package.json | 2 +- packages/next/package.json | 2 +- packages/proxy/package.json | 2 +- packages/rest/package.json | 2 +- packages/util/package.json | 2 +- packages/voice/package.json | 2 +- packages/ws/package.json | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/packages/brokers/package.json b/packages/brokers/package.json index a7f5583759a9..142b1d3d8f86 100644 --- a/packages/brokers/package.json +++ b/packages/brokers/package.json @@ -10,7 +10,7 @@ "lint": "prettier --check . && cross-env TIMING=1 eslint --format=pretty src __tests__", "format": "prettier --write . && cross-env TIMING=1 eslint --fix --format=pretty src __tests__", "fmt": "pnpm run format", - "docs": "pnpm run build:docs && api-extractor run --local", + "docs": "pnpm run build:docs && api-extractor run --local --minify", "prepack": "pnpm run lint && pnpm run test && pnpm run build", "changelog": "git cliff --prepend ./CHANGELOG.md -u -c ./cliff.toml -r ../../ --include-path 'packages/brokers/*'", "release": "cliff-jumper" diff --git a/packages/builders/package.json b/packages/builders/package.json index 85d0fe9d3991..0f4a2b2512e5 100644 --- a/packages/builders/package.json +++ b/packages/builders/package.json @@ -10,7 +10,7 @@ "lint": "prettier --check . && cross-env TIMING=1 eslint --format=pretty src __tests__", "format": "prettier --write . && cross-env TIMING=1 eslint --fix --format=pretty src __tests__", "fmt": "pnpm run format", - "docs": "pnpm run build:docs && api-extractor run --local", + "docs": "pnpm run build:docs && api-extractor run --local --minify", "prepack": "pnpm run lint && pnpm run test && pnpm run build", "changelog": "git cliff --prepend ./CHANGELOG.md -u -c ./cliff.toml -r ../../ --include-path 'packages/builders/*'", "release": "cliff-jumper" diff --git a/packages/collection/package.json b/packages/collection/package.json index c014a8276876..528b40623385 100644 --- a/packages/collection/package.json +++ b/packages/collection/package.json @@ -10,7 +10,7 @@ "lint": "prettier --check . && cross-env TIMING=1 eslint --format=pretty src __tests__", "format": "prettier --write . && cross-env TIMING=1 eslint --fix --format=pretty src __tests__", "fmt": "pnpm run format", - "docs": "pnpm run build:docs && api-extractor run --local", + "docs": "pnpm run build:docs && api-extractor run --local --minify", "prepack": "pnpm run lint && pnpm run test && pnpm run build", "changelog": "git cliff --prepend ./CHANGELOG.md -u -c ./cliff.toml -r ../../ --include-path 'packages/collection/*'", "release": "cliff-jumper" diff --git a/packages/core/package.json b/packages/core/package.json index 040dba30b6d6..0b8d987ae9b4 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -9,7 +9,7 @@ "build:docs": "tsc -p tsconfig.docs.json", "lint": "prettier --check . && cross-env TIMING=1 eslint --format=pretty src", "format": "prettier --write . && cross-env TIMING=1 eslint --fix --format=pretty src", - "docs": "pnpm run build:docs && api-extractor run --local", + "docs": "pnpm run build:docs && api-extractor run --local --minify", "prepack": "pnpm run build && pnpm run lint", "changelog": "git cliff --prepend ./CHANGELOG.md -u -c ./cliff.toml -r ../../ --include-path 'packages/core/*'", "release": "cliff-jumper" diff --git a/packages/formatters/package.json b/packages/formatters/package.json index df2f74590b3d..b7479d87ad53 100644 --- a/packages/formatters/package.json +++ b/packages/formatters/package.json @@ -9,7 +9,7 @@ "build:docs": "tsc -p tsconfig.docs.json", "lint": "prettier --check . && cross-env TIMING=1 eslint --format=pretty src __tests__", "format": "prettier --write . && cross-env TIMING=1 eslint --fix --format=pretty src __tests__", - "docs": "pnpm run build:docs && api-extractor run --local", + "docs": "pnpm run build:docs && api-extractor run --local --minify", "prepack": "pnpm run build && pnpm run lint", "changelog": "git cliff --prepend ./CHANGELOG.md -u -c ./cliff.toml -r ../../ --include-path 'packages/formatters/*'", "release": "cliff-jumper" diff --git a/packages/next/package.json b/packages/next/package.json index a679bf0eba55..d57f2614060c 100644 --- a/packages/next/package.json +++ b/packages/next/package.json @@ -9,7 +9,7 @@ "build:docs": "tsc -p tsconfig.docs.json", "lint": "prettier --check . && cross-env TIMING=1 eslint --format=pretty src __tests__", "format": "prettier --write . && cross-env TIMING=1 eslint --fix --format=pretty src __tests__", - "docs": "pnpm run build:docs && api-extractor run --local", + "docs": "pnpm run build:docs && api-extractor run --local --minify", "prepack": "pnpm run build && pnpm run lint", "changelog": "git cliff --prepend ./CHANGELOG.md -u -c ./cliff.toml -r ../../ --include-path 'packages/next/*'", "release": "cliff-jumper" diff --git a/packages/proxy/package.json b/packages/proxy/package.json index fe24254a1a16..1b1407449d81 100644 --- a/packages/proxy/package.json +++ b/packages/proxy/package.json @@ -10,7 +10,7 @@ "lint": "prettier --check . && cross-env TIMING=1 eslint --format=pretty src __tests__", "format": "prettier --write . && cross-env TIMING=1 eslint --fix --format=pretty src __tests__", "fmt": "pnpm run format", - "docs": "pnpm run build:docs && api-extractor run --local", + "docs": "pnpm run build:docs && api-extractor run --local --minify", "prepack": "pnpm run lint && pnpm run test && pnpm run build", "changelog": "git cliff --prepend ./CHANGELOG.md -u -c ./cliff.toml -r ../../ --include-path 'packages/proxy/*'", "release": "cliff-jumper" diff --git a/packages/rest/package.json b/packages/rest/package.json index 01e7e4e77315..de3614c51250 100644 --- a/packages/rest/package.json +++ b/packages/rest/package.json @@ -10,7 +10,7 @@ "lint": "prettier --check . && cross-env TIMING=1 eslint --format=pretty src __tests__", "format": "prettier --write . && cross-env TIMING=1 eslint --fix --format=pretty src __tests__", "fmt": "pnpm run format", - "docs": "pnpm run build:docs && api-extractor run --local", + "docs": "pnpm run build:docs && api-extractor run --local --minify", "prepack": "pnpm run lint && pnpm run test && pnpm run build", "changelog": "git cliff --prepend ./CHANGELOG.md -u -c ./cliff.toml -r ../../ --include-path 'packages/rest/*'", "release": "cliff-jumper" diff --git a/packages/util/package.json b/packages/util/package.json index 173a9833e5dd..fb5c586ddc0b 100644 --- a/packages/util/package.json +++ b/packages/util/package.json @@ -10,7 +10,7 @@ "lint": "prettier --check . && cross-env TIMING=1 eslint --format=pretty src", "format": "prettier --write . && cross-env TIMING=1 eslint --fix --format=pretty src", "fmt": "pnpm run format", - "docs": "pnpm run build:docs && api-extractor run --local", + "docs": "pnpm run build:docs && api-extractor run --local --minify", "prepack": "pnpm run lint && pnpm run test && pnpm run build", "changelog": "git cliff --prepend ./CHANGELOG.md -u -c ./cliff.toml -r ../../ --include-path 'packages/util/*'", "release": "cliff-jumper" diff --git a/packages/voice/package.json b/packages/voice/package.json index bcc54b8c652f..706fc6e71144 100644 --- a/packages/voice/package.json +++ b/packages/voice/package.json @@ -10,7 +10,7 @@ "lint": "prettier --check . && cross-env TIMING=1 eslint --format=pretty src __tests__", "format": "prettier --write . && cross-env TIMING=1 eslint --fix --format=pretty src __tests__", "fmt": "pnpm run format", - "docs": "pnpm run build:docs && api-extractor run --local", + "docs": "pnpm run build:docs && api-extractor run --local --minify", "prepack": "pnpm run lint && pnpm run test && pnpm run build", "changelog": "git cliff --prepend ./CHANGELOG.md -u -c ./cliff.toml -r ../../ --include-path 'packages/voice/*'", "release": "cliff-jumper" diff --git a/packages/ws/package.json b/packages/ws/package.json index b91fddd70bdf..4f8f71a454c5 100644 --- a/packages/ws/package.json +++ b/packages/ws/package.json @@ -9,7 +9,7 @@ "build:docs": "tsc -p tsconfig.docs.json", "lint": "prettier --check . && cross-env TIMING=1 eslint --format=pretty src __tests__", "format": "prettier --write . && cross-env TIMING=1 eslint --fix --format=pretty src __tests__", - "docs": "pnpm run build:docs && api-extractor run --local", + "docs": "pnpm run build:docs && api-extractor run --local --minify", "prepack": "pnpm run build && pnpm run lint", "changelog": "git cliff --prepend ./CHANGELOG.md -u -c ./cliff.toml -r ../../ --include-path 'packages/ws/*'", "release": "cliff-jumper"