From de76a5247dde15816363d04faff4558db0d79e93 Mon Sep 17 00:00:00 2001 From: Tommy Markley Date: Thu, 10 Feb 2022 23:37:27 +0000 Subject: [PATCH] Removes backport and release-notes scripts * Also deletes the unnecessary @osd/release-notes package. * Backport is unnecessary since we're adding a backport action in #1233. * Release notes are generated with `git-release-notes`, and there's no need to maintain a package dedicated to release notes for now. Future work can be done to integrate existing release notes repositories instead of reinventing the wheel. Signed-off-by: Tommy Markley --- .eslintignore | 1 - .gitignore | 4 - package.json | 3 - packages/osd-release-notes/package.json | 27 -- packages/osd-release-notes/src/cli.ts | 176 -------- .../osd-release-notes/src/formats/asciidoc.ts | 97 ---- packages/osd-release-notes/src/formats/csv.ts | 87 ---- .../osd-release-notes/src/formats/format.ts | 47 -- .../osd-release-notes/src/formats/index.ts | 38 -- packages/osd-release-notes/src/index.ts | 33 -- .../osd-release-notes/src/lib/classify_pr.ts | 79 ---- .../src/lib/get_fix_references.test.ts | 81 ---- .../src/lib/get_fix_references.ts | 42 -- .../src/lib/get_note_from_description.test.ts | 96 ---- .../src/lib/get_note_from_description.ts | 49 --- packages/osd-release-notes/src/lib/index.ts | 39 -- .../src/lib/irrelevant_pr_summary.ts | 74 ---- .../src/lib/is_pr_relevant.ts | 74 ---- packages/osd-release-notes/src/lib/pr_api.ts | 246 ----------- packages/osd-release-notes/src/lib/streams.ts | 47 -- .../osd-release-notes/src/lib/type_helpers.ts | 33 -- .../osd-release-notes/src/lib/version.test.ts | 159 ------- packages/osd-release-notes/src/lib/version.ts | 136 ------ .../src/release_notes_config.ts | 307 ------------- packages/osd-release-notes/tsconfig.json | 12 - packages/osd-release-notes/yarn.lock | 1 - scripts/backport.js | 34 -- scripts/release_notes.js | 34 -- yarn.lock | 415 +----------------- 29 files changed, 9 insertions(+), 2462 deletions(-) delete mode 100644 packages/osd-release-notes/package.json delete mode 100644 packages/osd-release-notes/src/cli.ts delete mode 100644 packages/osd-release-notes/src/formats/asciidoc.ts delete mode 100644 packages/osd-release-notes/src/formats/csv.ts delete mode 100644 packages/osd-release-notes/src/formats/format.ts delete mode 100644 packages/osd-release-notes/src/formats/index.ts delete mode 100644 packages/osd-release-notes/src/index.ts delete mode 100644 packages/osd-release-notes/src/lib/classify_pr.ts delete mode 100644 packages/osd-release-notes/src/lib/get_fix_references.test.ts delete mode 100644 packages/osd-release-notes/src/lib/get_fix_references.ts delete mode 100644 packages/osd-release-notes/src/lib/get_note_from_description.test.ts delete mode 100644 packages/osd-release-notes/src/lib/get_note_from_description.ts delete mode 100644 packages/osd-release-notes/src/lib/index.ts delete mode 100644 packages/osd-release-notes/src/lib/irrelevant_pr_summary.ts delete mode 100644 packages/osd-release-notes/src/lib/is_pr_relevant.ts delete mode 100644 packages/osd-release-notes/src/lib/pr_api.ts delete mode 100644 packages/osd-release-notes/src/lib/streams.ts delete mode 100644 packages/osd-release-notes/src/lib/type_helpers.ts delete mode 100644 packages/osd-release-notes/src/lib/version.test.ts delete mode 100644 packages/osd-release-notes/src/lib/version.ts delete mode 100644 packages/osd-release-notes/src/release_notes_config.ts delete mode 100644 packages/osd-release-notes/tsconfig.json delete mode 120000 packages/osd-release-notes/yarn.lock delete mode 100644 scripts/backport.js delete mode 100644 scripts/release_notes.js diff --git a/.eslintignore b/.eslintignore index f25ea426cf26..6578c3edd84b 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,5 +1,4 @@ **/*.js.snap -**/graphql/types.ts /.opensearch /.chromium /build diff --git a/.gitignore b/.gitignore index facab75ed526..2ce3f5d31091 100644 --- a/.gitignore +++ b/.gitignore @@ -59,10 +59,6 @@ apm.tsconfig.json ## when switching from master or 7.x branches snapshots.js -# release notes script output -report.csv -report.asciidoc - # TS incremental build cache *.tsbuildinfo diff --git a/package.json b/package.json index f2d50ff7b64c..50f9d9173d88 100644 --- a/package.json +++ b/package.json @@ -238,7 +238,6 @@ "@osd/optimizer": "1.0.0", "@osd/plugin-generator": "1.0.0", "@osd/pm": "1.0.0", - "@osd/release-notes": "1.0.0", "@osd/telemetry-tools": "1.0.0", "@osd/test": "1.0.0", "@osd/test-subj-selector": "0.2.1", @@ -272,7 +271,6 @@ "@types/getos": "^3.0.0", "@types/glob": "^7.1.3", "@types/globby": "^8.0.0", - "@types/graphql": "^0.13.2", "@types/hapi__cookie": "^10.1.4", "@types/hapi__h2o2": "^8.3.3", "@types/hapi__hapi": "^20.0.10", @@ -343,7 +341,6 @@ "babel-eslint": "^10.0.3", "babel-jest": "^26.3.0", "babel-plugin-istanbul": "^6.0.0", - "backport": "^5.6.6", "brace": "0.11.1", "chai": "3.5.0", "chance": "1.0.18", diff --git a/packages/osd-release-notes/package.json b/packages/osd-release-notes/package.json deleted file mode 100644 index 38b3d2713f8a..000000000000 --- a/packages/osd-release-notes/package.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "@osd/release-notes", - "version": "1.0.0", - "license": "Apache-2.0", - "main": "target/index.js", - "opensearchDashboards": { - "devOnly": true - }, - "scripts": { - "osd:bootstrap": "tsc", - "osd:watch": "tsc --watch" - }, - "dependencies": { - "@osd/utils": "1.0.0", - "@osd/dev-utils": "1.0.0", - "axios": "^0.21.4", - "cheerio": "0.22.0", - "dedent": "^0.7.0", - "graphql": "^0.13.2", - "graphql-tag": "^2.10.3", - "terminal-link": "^2.1.1" - }, - "devDependencies": { - "markdown-it": "^12.3.2", - "typescript": "4.0.2" - } -} diff --git a/packages/osd-release-notes/src/cli.ts b/packages/osd-release-notes/src/cli.ts deleted file mode 100644 index 32e2caf99912..000000000000 --- a/packages/osd-release-notes/src/cli.ts +++ /dev/null @@ -1,176 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -import Fs from 'fs'; -import Path from 'path'; -import { inspect } from 'util'; - -import { REPO_ROOT } from '@osd/utils'; -import { run, createFlagError, createFailError } from '@osd/dev-utils'; - -import { FORMATS, SomeFormat } from './formats'; -import { - PrApi, - Version, - ClassifiedPr, - streamFromIterable, - asyncPipeline, - IrrelevantPrSummary, - isPrRelevant, - classifyPr, -} from './lib'; - -const rootPackageJson = JSON.parse( - Fs.readFileSync(Path.resolve(REPO_ROOT, 'package.json'), 'utf8') -); -const extensions = FORMATS.map((f) => f.extension); - -export function runReleaseNotesCli() { - run( - async ({ flags, log }) => { - const token = flags.token; - if (!token || typeof token !== 'string') { - throw createFlagError('--token must be defined'); - } - const prApi = new PrApi(log, token); - - const version = Version.fromFlag(flags.version); - if (!version) { - throw createFlagError('unable to parse --version, use format "v{major}.{minor}.{patch}"'); - } - - const includeVersions = Version.fromFlags(flags.include || []); - if (!includeVersions) { - throw createFlagError('unable to parse --include, use format "v{major}.{minor}.{patch}"'); - } - - const Formats: SomeFormat[] = []; - for (const flag of Array.isArray(flags.format) ? flags.format : [flags.format]) { - const Format = FORMATS.find((F) => F.extension === flag); - if (!Format) { - throw createFlagError(`--format must be one of "${extensions.join('", "')}"`); - } - Formats.push(Format); - } - - const filename = flags.filename; - if (!filename || typeof filename !== 'string') { - throw createFlagError('--filename must be a string'); - } - - if (flags['debug-pr']) { - const number = parseInt(String(flags['debug-pr']), 10); - if (Number.isNaN(number)) { - throw createFlagError('--debug-pr must be a pr number when specified'); - } - - const summary = new IrrelevantPrSummary(log); - const pr = await prApi.getPr(number); - log.success( - inspect( - { - version: version.label, - includeVersions: includeVersions.map((v) => v.label), - isPrRelevant: isPrRelevant(pr, version, includeVersions, summary), - ...classifyPr(pr, log), - pr, - }, - { depth: 100 } - ) - ); - summary.logStats(); - return; - } - - log.info(`Loading all PRs with label [${version.label}] to build release notes...`); - - const summary = new IrrelevantPrSummary(log); - const prsToReport: ClassifiedPr[] = []; - const prIterable = prApi.iterRelevantPullRequests(version); - for await (const pr of prIterable) { - if (!isPrRelevant(pr, version, includeVersions, summary)) { - continue; - } - prsToReport.push(classifyPr(pr, log)); - } - summary.logStats(); - - if (!prsToReport.length) { - throw createFailError( - `All PRs with label [${version.label}] were filtered out by the config. Run again with --debug for more info.` - ); - } - - log.info(`Found ${prsToReport.length} prs to report on`); - - for (const Format of Formats) { - const format = new Format(version, prsToReport, log); - const outputPath = Path.resolve(`${filename}.${Format.extension}`); - await asyncPipeline(streamFromIterable(format.print()), Fs.createWriteStream(outputPath)); - log.success(`[${Format.extension}] report written to ${outputPath}`); - } - }, - { - usage: `node scripts/release_notes --token {token} --version {version}`, - flags: { - alias: { - version: 'v', - include: 'i', - }, - string: ['token', 'version', 'format', 'filename', 'include', 'debug-pr'], - default: { - filename: 'report', - version: rootPackageJson.version, - format: extensions, - }, - help: ` - --token (required) The Github access token to use for requests - --version, -v The version to fetch PRs by, PRs with version labels prior to - this one will be ignored (see --include-version) (default ${ - rootPackageJson.version - }) - --include, -i A version that is before --version but shouldn't be considered - "released" and cause PRs with a matching label to be excluded from - release notes. Use this when PRs are labeled with a version that - is less that --version and is expected to be released after - --version, can be specified multiple times. - --format Only produce a certain format, options: "${extensions.join('", "')}" - --filename Output filename, defaults to "report" - --debug-pr Fetch and print the details for a single PR, disabling reporting - `, - }, - description: ` - Fetch details from Github PRs for generating release notes - `, - } - ); -} diff --git a/packages/osd-release-notes/src/formats/asciidoc.ts b/packages/osd-release-notes/src/formats/asciidoc.ts deleted file mode 100644 index 96299e2da9b8..000000000000 --- a/packages/osd-release-notes/src/formats/asciidoc.ts +++ /dev/null @@ -1,97 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -import dedent from 'dedent'; - -import { Format } from './format'; -import { - ASCIIDOC_SECTIONS, - UNKNOWN_ASCIIDOC_SECTION, - AREAS, - UNKNOWN_AREA, -} from '../release_notes_config'; - -function* lines(body: string) { - for (const line of dedent(body).split('\n')) { - yield `${line}\n`; - } -} - -export class AsciidocFormat extends Format { - static extension = 'asciidoc'; - - *print() { - const sortedAreas = [ - ...AREAS.slice().sort((a, b) => a.title.localeCompare(b.title)), - UNKNOWN_AREA, - ]; - - yield* lines(` - [[release-notes-${this.version.label}]] - == ${this.version.label} Release Notes - - Also see <>. - `); - - for (const section of [...ASCIIDOC_SECTIONS, UNKNOWN_ASCIIDOC_SECTION]) { - const prsInSection = this.prs.filter((pr) => pr.asciidocSection === section); - if (!prsInSection.length) { - continue; - } - - yield '\n'; - yield* lines(` - [float] - [[${section.id}-${this.version.label}]] - === ${section.title} - `); - - for (const area of sortedAreas) { - const prsInArea = prsInSection.filter((pr) => pr.area === area); - - if (!prsInArea.length) { - continue; - } - - yield `${area.title}::\n`; - for (const pr of prsInArea) { - const fixes = pr.fixes.length ? `[Fixes ${pr.fixes.join(', ')}] ` : ''; - const strippedTitle = pr.title.replace(/^\s*\[[^\]]+\]\s*/, ''); - yield `* ${fixes}${strippedTitle} {opensearch-dashboards-pull}${pr.number}[#${pr.number}]\n`; - if (pr.note) { - yield ` - ${pr.note}\n`; - } - } - } - } - } -} diff --git a/packages/osd-release-notes/src/formats/csv.ts b/packages/osd-release-notes/src/formats/csv.ts deleted file mode 100644 index 045240a7ef34..000000000000 --- a/packages/osd-release-notes/src/formats/csv.ts +++ /dev/null @@ -1,87 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -import { Format } from './format'; - -/** - * Escape a value to conform to field and header encoding defined at https://tools.ietf.org/html/rfc4180 - */ -function esc(value: string | number) { - if (typeof value === 'number') { - return String(value); - } - - if (!value.includes(',') && !value.includes('\n') && !value.includes('"')) { - return value; - } - - return `"${value.split('"').join('""')}"`; -} - -function row(...fields: Array) { - return fields.map(esc).join(',') + '\r\n'; -} - -export class CsvFormat extends Format { - static extension = 'csv'; - - *print() { - // columns - yield row( - 'areas', - 'versions', - 'user', - 'title', - 'number', - 'url', - 'date', - 'fixes', - 'labels', - 'state' - ); - - for (const pr of this.prs) { - yield row( - pr.area.title, - pr.versions.map((v) => v.label).join(', '), - pr.user.name || pr.user.login, - pr.title, - pr.number, - pr.url, - pr.mergedAt, - pr.fixes.join(', '), - pr.labels.join(', '), - pr.state - ); - } - } -} diff --git a/packages/osd-release-notes/src/formats/format.ts b/packages/osd-release-notes/src/formats/format.ts deleted file mode 100644 index f6e505728de4..000000000000 --- a/packages/osd-release-notes/src/formats/format.ts +++ /dev/null @@ -1,47 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -import { ToolingLog } from '@osd/dev-utils'; - -import { Version, ClassifiedPr } from '../lib'; - -export abstract class Format { - static extension: string; - - constructor( - protected readonly version: Version, - protected readonly prs: ClassifiedPr[], - protected readonly log: ToolingLog - ) {} - - abstract print(): Iterator; -} diff --git a/packages/osd-release-notes/src/formats/index.ts b/packages/osd-release-notes/src/formats/index.ts deleted file mode 100644 index 5e9f9d29451f..000000000000 --- a/packages/osd-release-notes/src/formats/index.ts +++ /dev/null @@ -1,38 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -import { ArrayItem } from '../lib'; -import { AsciidocFormat } from './asciidoc'; -import { CsvFormat } from './csv'; - -export const FORMATS = [CsvFormat, AsciidocFormat] as const; -export type SomeFormat = ArrayItem; diff --git a/packages/osd-release-notes/src/index.ts b/packages/osd-release-notes/src/index.ts deleted file mode 100644 index ce3c7367b22d..000000000000 --- a/packages/osd-release-notes/src/index.ts +++ /dev/null @@ -1,33 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -export * from './cli'; diff --git a/packages/osd-release-notes/src/lib/classify_pr.ts b/packages/osd-release-notes/src/lib/classify_pr.ts deleted file mode 100644 index a6f2217a923b..000000000000 --- a/packages/osd-release-notes/src/lib/classify_pr.ts +++ /dev/null @@ -1,79 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -import { ToolingLog } from '@osd/dev-utils'; - -import { - Area, - AREAS, - UNKNOWN_AREA, - AsciidocSection, - ASCIIDOC_SECTIONS, - UNKNOWN_ASCIIDOC_SECTION, -} from '../release_notes_config'; -import { PullRequest } from './pr_api'; - -export interface ClassifiedPr extends PullRequest { - area: Area; - asciidocSection: AsciidocSection; -} - -export function classifyPr(pr: PullRequest, log: ToolingLog): ClassifiedPr { - const filter = (a: Area | AsciidocSection) => - a.labels.some((test) => - typeof test === 'string' ? pr.labels.includes(test) : pr.labels.some((l) => l.match(test)) - ); - - const areas = AREAS.filter(filter); - const asciidocSections = ASCIIDOC_SECTIONS.filter(filter); - - const pickOne = (name: string, options: T[]) => { - if (options.length > 1) { - const matches = options.map((o) => o.title).join(', '); - log.warning(`[${pr.terminalLink}] ambiguous ${name}, mulitple match [${matches}]`); - return options[0]; - } - - if (options.length === 0) { - log.error(`[${pr.terminalLink}] unable to determine ${name} because none match`); - return; - } - - return options[0]; - }; - - return { - ...pr, - area: pickOne('area', areas) || UNKNOWN_AREA, - asciidocSection: pickOne('asciidoc section', asciidocSections) || UNKNOWN_ASCIIDOC_SECTION, - }; -} diff --git a/packages/osd-release-notes/src/lib/get_fix_references.test.ts b/packages/osd-release-notes/src/lib/get_fix_references.test.ts deleted file mode 100644 index 717fa82e3bd7..000000000000 --- a/packages/osd-release-notes/src/lib/get_fix_references.test.ts +++ /dev/null @@ -1,81 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -import { getFixReferences } from './get_fix_references'; - -it('returns all fixed issue mentions in the PR text', () => { - expect( - getFixReferences(` - clOses #1 - closes: #2 - clOse #3 - close: #4 - clOsed #5 - closed: #6 - fiX #7 - fix: #8 - fiXes #9 - fixes: #10 - fiXed #11 - fixed: #12 - reSolve #13 - resolve: #14 - reSolves #15 - resolves: #16 - reSolved #17 - resolved: #18 - fixed - #19 - `) - ).toMatchInlineSnapshot(` - Array [ - "#1", - "#2", - "#3", - "#4", - "#5", - "#6", - "#7", - "#8", - "#9", - "#10", - "#11", - "#12", - "#13", - "#14", - "#15", - "#16", - "#17", - "#18", - ] - `); -}); diff --git a/packages/osd-release-notes/src/lib/get_fix_references.ts b/packages/osd-release-notes/src/lib/get_fix_references.ts deleted file mode 100644 index 180b6f14f39a..000000000000 --- a/packages/osd-release-notes/src/lib/get_fix_references.ts +++ /dev/null @@ -1,42 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -const FIXES_RE = /(?:closes|close|closed|fix|fixes|fixed|resolve|resolves|resolved)[ :]*(#\d*)/gi; - -export function getFixReferences(prText: string) { - const fixes: string[] = []; - let match; - while ((match = FIXES_RE.exec(prText))) { - fixes.push(match[1]); - } - return fixes; -} diff --git a/packages/osd-release-notes/src/lib/get_note_from_description.test.ts b/packages/osd-release-notes/src/lib/get_note_from_description.test.ts deleted file mode 100644 index bec423f5a9d2..000000000000 --- a/packages/osd-release-notes/src/lib/get_note_from_description.test.ts +++ /dev/null @@ -1,96 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -import MarkdownIt from 'markdown-it'; -import dedent from 'dedent'; - -import { getNoteFromDescription } from './get_note_from_description'; - -it('extracts expected components from html', () => { - const mk = new MarkdownIt(); - - expect( - getNoteFromDescription( - mk.render(dedent` - My PR description - - Fixes: #1234 - - ## Release Note: - - Checkout this feature - `), - 'release note' - ) - ).toMatchInlineSnapshot(`"Checkout this feature"`); - - expect( - getNoteFromDescription( - mk.render(dedent` - My PR description - - Fixes: #1234 - - #### Dev docs: - - We fixed an issue - `), - 'dev docs' - ) - ).toMatchInlineSnapshot(`"We fixed an issue"`); - - expect( - getNoteFromDescription( - mk.render(dedent` - My PR description - - Fixes: #1234 - - OTHER TITLE: Checkout feature foo - `), - 'other title' - ) - ).toMatchInlineSnapshot(`"Checkout feature foo"`); - - expect( - getNoteFromDescription( - mk.render(dedent` - # Summary - - My PR description - - release note : bar - `), - 'release note' - ) - ).toMatchInlineSnapshot(`"bar"`); -}); diff --git a/packages/osd-release-notes/src/lib/get_note_from_description.ts b/packages/osd-release-notes/src/lib/get_note_from_description.ts deleted file mode 100644 index 0371b232d819..000000000000 --- a/packages/osd-release-notes/src/lib/get_note_from_description.ts +++ /dev/null @@ -1,49 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -import cheerio from 'cheerio'; - -export function getNoteFromDescription(descriptionHtml: string, header: string) { - const re = new RegExp(`^(\\s*${header.toLowerCase()}(?:s)?\\s*:?\\s*)`, 'i'); - const $ = cheerio.load(descriptionHtml); - for (const el of $('p,h1,h2,h3,h4,h5').toArray()) { - const text = $(el).text(); - const match = text.match(re); - - if (!match) { - continue; - } - - const note = text.replace(match[1], '').trim(); - return note || $(el).next().text().trim(); - } -} diff --git a/packages/osd-release-notes/src/lib/index.ts b/packages/osd-release-notes/src/lib/index.ts deleted file mode 100644 index ebbc1cecb55f..000000000000 --- a/packages/osd-release-notes/src/lib/index.ts +++ /dev/null @@ -1,39 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -export * from './pr_api'; -export * from './version'; -export * from './is_pr_relevant'; -export * from './streams'; -export * from './type_helpers'; -export * from './irrelevant_pr_summary'; -export * from './classify_pr'; diff --git a/packages/osd-release-notes/src/lib/irrelevant_pr_summary.ts b/packages/osd-release-notes/src/lib/irrelevant_pr_summary.ts deleted file mode 100644 index 519fbd25b53a..000000000000 --- a/packages/osd-release-notes/src/lib/irrelevant_pr_summary.ts +++ /dev/null @@ -1,74 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -import { ToolingLog } from '@osd/dev-utils'; - -import { PullRequest } from './pr_api'; -import { Version } from './version'; - -export class IrrelevantPrSummary { - private readonly stats = { - 'skipped by label': new Map(), - 'skipped by label regexp': new Map(), - 'skipped by version': new Map(), - }; - - constructor(private readonly log: ToolingLog) {} - - skippedByLabel(pr: PullRequest, label: string) { - this.log.debug(`${pr.terminalLink} skipped, label [${label}] is ignored`); - this.increment('skipped by label', label); - } - - skippedByLabelRegExp(pr: PullRequest, regexp: RegExp, label: string) { - this.log.debug(`${pr.terminalLink} skipped, label [${label}] matches regexp [${regexp}]`); - this.increment('skipped by label regexp', `${regexp}`); - } - - skippedByVersion(pr: PullRequest, earliestVersion: Version) { - this.log.debug(`${pr.terminalLink} skipped, earliest version is [${earliestVersion.label}]`); - this.increment('skipped by version', earliestVersion.label); - } - - private increment(stat: keyof IrrelevantPrSummary['stats'], key: string) { - const n = this.stats[stat].get(key) || 0; - this.stats[stat].set(key, n + 1); - } - - logStats() { - for (const [description, stats] of Object.entries(this.stats)) { - for (const [key, count] of stats) { - this.log.warning(`${count} ${count === 1 ? 'pr was' : 'prs were'} ${description} [${key}]`); - } - } - } -} diff --git a/packages/osd-release-notes/src/lib/is_pr_relevant.ts b/packages/osd-release-notes/src/lib/is_pr_relevant.ts deleted file mode 100644 index c72f6550ef2d..000000000000 --- a/packages/osd-release-notes/src/lib/is_pr_relevant.ts +++ /dev/null @@ -1,74 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -import { Version } from './version'; -import { PullRequest } from './pr_api'; -import { IGNORE_LABELS } from '../release_notes_config'; -import { IrrelevantPrSummary } from './irrelevant_pr_summary'; - -export function isPrRelevant( - pr: PullRequest, - version: Version, - includeVersions: Version[], - summary: IrrelevantPrSummary -) { - for (const label of IGNORE_LABELS) { - if (typeof label === 'string') { - if (pr.labels.includes(label)) { - summary.skippedByLabel(pr, label); - return false; - } - } - - if (label instanceof RegExp) { - const matching = pr.labels.find((l) => label.test(l)); - if (matching) { - summary.skippedByLabelRegExp(pr, label, matching); - return false; - } - } - } - - const [earliestVersion] = Version.sort( - // filter out `includeVersions` so that they won't be considered the "earliest version", only - // versions which are actually before the current `version` or the `version` itself are eligible - pr.versions.filter((v) => !includeVersions.includes(v)), - 'asc' - ); - - if (version !== earliestVersion) { - summary.skippedByVersion(pr, earliestVersion); - return false; - } - - return true; -} diff --git a/packages/osd-release-notes/src/lib/pr_api.ts b/packages/osd-release-notes/src/lib/pr_api.ts deleted file mode 100644 index ee1d30561ecb..000000000000 --- a/packages/osd-release-notes/src/lib/pr_api.ts +++ /dev/null @@ -1,246 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -import { inspect } from 'util'; - -import Axios from 'axios'; -import gql from 'graphql-tag'; -import * as GraphqlPrinter from 'graphql/language/printer'; -import { DocumentNode } from 'graphql/language/ast'; -import makeTerminalLink from 'terminal-link'; -import { ToolingLog, isAxiosResponseError } from '@osd/dev-utils'; - -import { Version } from './version'; -import { getFixReferences } from './get_fix_references'; -import { getNoteFromDescription } from './get_note_from_description'; - -const PrNodeFragment = gql` - fragment PrNode on PullRequest { - number - url - title - bodyText - bodyHTML - mergedAt - baseRefName - state - author { - login - ... on User { - name - } - } - labels(first: 100) { - nodes { - name - } - } - } -`; - -export interface PullRequest { - number: number; - url: string; - title: string; - targetBranch: string; - mergedAt: string; - state: string; - labels: string[]; - fixes: string[]; - user: { - name: string; - login: string; - }; - versions: Version[]; - terminalLink: string; - note?: string; -} - -export class PrApi { - constructor(private readonly log: ToolingLog, private readonly token: string) {} - - async getPr(number: number) { - const resp = await this.gqlRequest( - gql` - query($number: Int!) { - repository(owner: "opensearch-project", name: "OpenSearch-Dashboards") { - pullRequest(number: $number) { - ...PrNode - } - } - } - ${PrNodeFragment} - `, - { - number, - } - ); - - const node = resp.data?.repository?.pullRequest; - if (!node) { - throw new Error(`unexpected github response, unable to fetch PR: ${inspect(resp)}`); - } - - return this.parsePullRequestNode(node); - } - - /** - * Iterate all of the PRs which have the `version` label - */ - async *iterRelevantPullRequests(version: Version) { - let nextCursor: string | undefined; - let hasNextPage = true; - - while (hasNextPage) { - const resp = await this.gqlRequest( - gql` - query($cursor: String, $labels: [String!]) { - repository(owner: "opensearch-project", name: "OpenSearch-Dashboards") { - pullRequests(first: 100, after: $cursor, labels: $labels, states: MERGED) { - pageInfo { - hasNextPage - endCursor - } - nodes { - ...PrNode - } - } - } - } - ${PrNodeFragment} - `, - { - cursor: nextCursor, - labels: [version.label], - } - ); - - const pullRequests = resp.data?.repository?.pullRequests; - if (!pullRequests) { - throw new Error(`unexpected github response, unable to fetch PRs: ${inspect(resp)}`); - } - - hasNextPage = pullRequests.pageInfo?.hasNextPage; - nextCursor = pullRequests.pageInfo?.endCursor; - - if (hasNextPage === undefined || (hasNextPage && !nextCursor)) { - throw new Error( - `github response does not include valid pagination information: ${inspect(resp)}` - ); - } - - for (const node of pullRequests.nodes) { - yield this.parsePullRequestNode(node); - } - } - } - - /** - * Convert the Github API response into the structure used by this tool - * - * @param node A GraphQL response from Github using the PrNode fragment - */ - private parsePullRequestNode(node: any): PullRequest { - const terminalLink = makeTerminalLink(`#${node.number}`, node.url); - - const labels: string[] = node.labels.nodes.map((l: { name: string }) => l.name); - - return { - number: node.number, - url: node.url, - terminalLink, - title: node.title, - targetBranch: node.baseRefName, - state: node.state, - mergedAt: node.mergedAt, - labels, - fixes: getFixReferences(node.bodyText), - user: { - login: node.author?.login || 'deleted user', - name: node.author?.name, - }, - versions: labels - .map((l) => Version.fromLabel(l)) - .filter((v): v is Version => v instanceof Version), - note: - getNoteFromDescription(node.bodyHTML, 'release note') || - getNoteFromDescription(node.bodyHTML, 'dev docs'), - }; - } - - /** - * Send a single request to the Github v4 GraphQL API - */ - private async gqlRequest(query: DocumentNode, variables: Record = {}) { - let attempt = 0; - - while (true) { - attempt += 1; - - try { - const resp = await Axios.request({ - url: 'https://api.github.com/graphql', - method: 'POST', - headers: { - 'user-agent': '@osd/release-notes', - authorization: `bearer ${this.token}`, - }, - data: { - query: GraphqlPrinter.print(query), - variables, - }, - }); - - return resp.data; - } catch (error) { - if (!isAxiosResponseError(error) || error.response.status < 500) { - // rethrow error unless it is a 500+ response from github - throw error; - } - - const { status, data } = error.response; - const resp = inspect(data); - - if (attempt === 5) { - throw new Error( - `${status} response from Github, attempted request ${attempt} times: [${resp}]` - ); - } - - const delay = attempt * 2000; - this.log.debug(`Github responded with ${status}, retrying in ${delay} ms: [${resp}]`); - await new Promise((resolve) => setTimeout(resolve, delay)); - continue; - } - } - } -} diff --git a/packages/osd-release-notes/src/lib/streams.ts b/packages/osd-release-notes/src/lib/streams.ts deleted file mode 100644 index 9612f431db1d..000000000000 --- a/packages/osd-release-notes/src/lib/streams.ts +++ /dev/null @@ -1,47 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -import { promisify } from 'util'; -import { Readable, pipeline } from 'stream'; - -/** - * @types/node still doesn't have this method that was added - * in 10.17.0 https://nodejs.org/api/stream.html#stream_stream_readable_from_iterable_options - */ -export function streamFromIterable( - iter: Iterable | AsyncIterable -): Readable { - // @ts-ignore - return Readable.from(iter); -} - -export const asyncPipeline = promisify(pipeline); diff --git a/packages/osd-release-notes/src/lib/type_helpers.ts b/packages/osd-release-notes/src/lib/type_helpers.ts deleted file mode 100644 index 7cb53057cd43..000000000000 --- a/packages/osd-release-notes/src/lib/type_helpers.ts +++ /dev/null @@ -1,33 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -export type ArrayItem = T extends ReadonlyArray ? X : never; diff --git a/packages/osd-release-notes/src/lib/version.test.ts b/packages/osd-release-notes/src/lib/version.test.ts deleted file mode 100644 index ac0f165b8d49..000000000000 --- a/packages/osd-release-notes/src/lib/version.test.ts +++ /dev/null @@ -1,159 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -import { Version } from './version'; - -it('parses version labels, returns null on failure', () => { - expect(Version.fromLabel('v1.0.2')).toMatchInlineSnapshot(` - Version { - "label": "v1.0.2", - "major": 1, - "minor": 0, - "patch": 2, - "tag": undefined, - "tagNum": undefined, - "tagOrder": Infinity, - } - `); - expect(Version.fromLabel('v1.0.0')).toMatchInlineSnapshot(` - Version { - "label": "v1.0.0", - "major": 1, - "minor": 0, - "patch": 0, - "tag": undefined, - "tagNum": undefined, - "tagOrder": Infinity, - } - `); - expect(Version.fromLabel('v9.0.2')).toMatchInlineSnapshot(` - Version { - "label": "v9.0.2", - "major": 9, - "minor": 0, - "patch": 2, - "tag": undefined, - "tagNum": undefined, - "tagOrder": Infinity, - } - `); - expect(Version.fromLabel('v9.0.2-alpha0')).toMatchInlineSnapshot(` - Version { - "label": "v9.0.2-alpha0", - "major": 9, - "minor": 0, - "patch": 2, - "tag": "alpha", - "tagNum": 0, - "tagOrder": 1, - } - `); - expect(Version.fromLabel('v9.0.2-beta1')).toMatchInlineSnapshot(` - Version { - "label": "v9.0.2-beta1", - "major": 9, - "minor": 0, - "patch": 2, - "tag": "beta", - "tagNum": 1, - "tagOrder": 2, - } - `); - expect(Version.fromLabel('v9.0')).toMatchInlineSnapshot(`undefined`); - expect(Version.fromLabel('some:area')).toMatchInlineSnapshot(`undefined`); -}); - -it('sorts versions in ascending order', () => { - const versions = [ - 'v1.7.3', - 'v1.7.0', - 'v1.5.0', - 'v2.7.0', - 'v7.0.0-beta2', - 'v7.0.0-alpha1', - 'v2.0.0', - 'v0.0.0', - 'v7.0.0-beta1', - 'v7.0.0', - ].map((l) => Version.fromLabel(l)!); - - const sorted = Version.sort(versions); - - expect(sorted.map((v) => v.label)).toMatchInlineSnapshot(` - Array [ - "v0.0.0", - "v1.5.0", - "v1.7.0", - "v1.7.3", - "v2.0.0", - "v2.7.0", - "v7.0.0-alpha1", - "v7.0.0-beta1", - "v7.0.0-beta2", - "v7.0.0", - ] - `); - - // ensure versions was not mutated - expect(sorted).not.toEqual(versions); -}); - -it('sorts versions in decending order', () => { - const versions = [ - 'v1.7.3', - 'v1.7.0', - 'v1.5.0', - 'v7.0.0-beta1', - 'v2.7.0', - 'v2.0.0', - 'v0.0.0', - 'v7.0.0', - ].map((l) => Version.fromLabel(l)!); - - const sorted = Version.sort(versions, 'desc'); - - expect(sorted.map((v) => v.label)).toMatchInlineSnapshot(` - Array [ - "v7.0.0", - "v7.0.0-beta1", - "v2.7.0", - "v2.0.0", - "v1.7.3", - "v1.7.0", - "v1.5.0", - "v0.0.0", - ] - `); - - // ensure versions was not mutated - expect(sorted).not.toEqual(versions); -}); diff --git a/packages/osd-release-notes/src/lib/version.ts b/packages/osd-release-notes/src/lib/version.ts deleted file mode 100644 index bd2d6ec735a9..000000000000 --- a/packages/osd-release-notes/src/lib/version.ts +++ /dev/null @@ -1,136 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -const LABEL_RE = /^v(\d+)\.(\d+)\.(\d+)(?:-(alpha|beta)(\d+))?$/; - -const versionCache = new Map(); - -const multiCompare = (...diffs: number[]) => { - for (const diff of diffs) { - if (diff !== 0) { - return diff; - } - } - return 0; -}; - -export class Version { - static fromFlag(flag: string | string[] | boolean | undefined) { - if (typeof flag !== 'string') { - return; - } - - return Version.fromLabel(flag) || Version.fromLabel(`v${flag}`); - } - - static fromFlags(flag: string | string[] | boolean | undefined) { - const flags = Array.isArray(flag) ? flag : [flag]; - const versions: Version[] = []; - - for (const f of flags) { - const version = Version.fromFlag(f); - if (!version) { - return; - } - versions.push(version); - } - - return versions; - } - - static fromLabel(label: string) { - const match = label.match(LABEL_RE); - if (!match) { - return; - } - - const cached = versionCache.get(label); - if (cached) { - return cached; - } - - const [, major, minor, patch, tag, tagNum] = match; - const version = new Version( - parseInt(major, 10), - parseInt(minor, 10), - parseInt(patch, 10), - tag as 'alpha' | 'beta' | undefined, - tagNum ? parseInt(tagNum, 10) : undefined - ); - - versionCache.set(label, version); - return version; - } - - static sort(versions: Version[], dir: 'asc' | 'desc' = 'asc') { - const order = dir === 'asc' ? 1 : -1; - - return versions.slice().sort((a, b) => a.compare(b) * order); - } - - public readonly label = `v${this.major}.${this.minor}.${this.patch}${ - this.tag ? `-${this.tag}${this.tagNum}` : '' - }`; - private readonly tagOrder: number; - - constructor( - public readonly major: number, - public readonly minor: number, - public readonly patch: number, - public readonly tag: 'alpha' | 'beta' | undefined, - public readonly tagNum: number | undefined - ) { - switch (tag) { - case undefined: - this.tagOrder = Infinity; - break; - case 'alpha': - this.tagOrder = 1; - break; - case 'beta': - this.tagOrder = 2; - break; - default: - throw new Error('unexpected tag'); - } - } - - compare(other: Version) { - return multiCompare( - this.major - other.major, - this.minor - other.minor, - this.patch - other.patch, - this.tagOrder - other.tagOrder, - (this.tagNum ?? 0) - (other.tagNum ?? 0) - ); - } -} diff --git a/packages/osd-release-notes/src/release_notes_config.ts b/packages/osd-release-notes/src/release_notes_config.ts deleted file mode 100644 index eccedde8a048..000000000000 --- a/packages/osd-release-notes/src/release_notes_config.ts +++ /dev/null @@ -1,307 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -/** - * Exclude any PR from release notes that has a matching label. String - * labels must match exactly, for more complicated use a RegExp - */ -export const IGNORE_LABELS: Array = [ - 'Team:Docs', - ':OpenSearchDashboardsApp/fix-it-week', - 'reverted', - /^test/, - 'non-issue', - 'jenkins', - 'build', - 'chore', - 'backport', - 'release_note:skip', - 'release_note:dev_docs', -]; - -/** - * Define areas that are used to categorize changes in the release notes - * based on the labels a PR has. the `labels` array can contain strings, which - * are matched exactly, or regular expressions. The first area, in definition - * order, which has a `label` which matches and label on a PR is the area - * assigned to that PR. - */ - -export interface Area { - title: string; - labels: Array; -} - -export const AREAS: Area[] = [ - { - title: 'Design', - labels: ['Team:Design', 'Project:Accessibility'], - }, - { - title: 'Logstash', - labels: ['App:Logstash', 'Feature:Logstash Pipelines'], - }, - { - title: 'Management', - labels: [ - 'Feature:license', - 'Feature:Console', - 'Feature:Search Profiler', - 'Feature:watcher', - 'Feature:Index Patterns', - 'Feature:OpenSearch Dashboards Management', - 'Feature:Dev Tools', - 'Feature:Inspector', - 'Feature:Index Management', - 'Feature:Snapshot and Restore', - 'Team:OpenSearch UI', - 'Feature:FieldFormatters', - 'Feature:CCR', - 'Feature:ILM', - 'Feature:Transforms', - ], - }, - { - title: 'Monitoring', - labels: ['Team:Monitoring', 'Feature:Telemetry', 'Feature:Stack Monitoring'], - }, - { - title: 'Operations', - labels: ['Team:Operations', 'Feature:License'], - }, - { - title: 'OpenSearch Dashboards UI', - labels: ['OpenSearch Dashboards UI', 'Team:Core UI', 'Feature:Header'], - }, - { - title: 'Platform', - labels: [ - 'Team:Platform', - 'Feature:Plugins', - 'Feature:New Platform', - 'Project:i18n', - 'Feature:ExpressionLanguage', - 'Feature:Saved Objects', - 'Team:Stack Services', - 'Feature:NP Migration', - 'Feature:Task Manager', - 'Team:Pulse', - ], - }, - { - title: 'Machine Learning', - labels: [ - ':ml', - 'Feature:Anomaly Detection', - 'Feature:Data Frames', - 'Feature:File Data Viz', - 'Feature:ml-results', - 'Feature:Data Frame Analytics', - ], - }, - { - title: 'Maps', - labels: ['Team:Geo'], - }, - { - title: 'QA', - labels: ['Team:QA'], - }, - { - title: 'Security', - labels: [ - 'Team:Security', - 'Feature:Security/Spaces', - 'Feature:users and roles', - 'Feature:Security/Authentication', - 'Feature:Security/Authorization', - 'Feature:Security/Feature Controls', - ], - }, - { - title: 'Canvas', - labels: ['Feature:Canvas'], - }, - { - title: 'Dashboard', - labels: ['Feature:Dashboard', 'Feature:Drilldowns'], - }, - { - title: 'Discover', - labels: ['Feature:Discover'], - }, - { - title: 'OpenSearch Dashboards Home & Add Data', - labels: ['Feature:Add Data', 'Feature:Home'], - }, - { - title: 'Querying & Filtering', - labels: [ - 'Feature:Query Bar', - 'Feature:Courier', - 'Feature:Filters', - 'Feature:Timepicker', - 'Feature:Highlight', - 'Feature:DQL', - 'Feature:Rollups', - ], - }, - { - title: 'Reporting', - labels: ['Feature:Reporting', 'Team:Reporting Services'], - }, - { - title: 'Sharing', - labels: ['Feature:Embedding', 'Feature:SharingURLs'], - }, - { - title: 'Visualizations', - labels: [ - 'Feature:Timeline', - 'Feature:TSVB', - 'Feature:Coordinate Map', - 'Feature:Region Map', - 'Feature:Vega', - 'Feature:Gauge Vis', - 'Feature:Tagcloud', - 'Feature:Vis Loader', - 'Feature:Vislib', - 'Feature:Vis Editor', - 'Feature:Aggregations', - 'Feature:Input Control', - 'Feature:Visualizations', - 'Feature:Markdown', - 'Feature:Data Table', - 'Feature:Heatmap', - 'Feature:Pie Chart', - 'Feature:XYAxis', - 'Feature:Graph', - 'Feature:New Feature', - 'Feature:MetricVis', - ], - }, - { - title: 'SIEM', - labels: ['Team:SIEM'], - }, - { - title: 'Code', - labels: ['Team:Code'], - }, - { - title: 'Infrastructure', - labels: ['App:Infrastructure', 'Feature:Infra UI', 'Feature:Service Maps'], - }, - { - title: 'Logs', - labels: ['App:Logs', 'Feature:Logs UI'], - }, - { - title: 'Uptime', - labels: ['App:Uptime', 'Feature:Uptime', 'Team:uptime'], - }, - { - title: 'Beats Management', - labels: ['App:Beats', 'Feature:beats-cm', 'Team:Beats'], - }, - { - title: 'APM', - labels: ['Team:apm', /^apm[:\-]/], - }, - { - title: 'Lens', - labels: ['App:Lens', 'Feature:Lens'], - }, - { - title: 'Alerting', - labels: ['App:Alerting', 'Feature:Alerting', 'Team:Alerting Services', 'Feature:Actions'], - }, - { - title: 'Metrics', - labels: ['App:Metrics', 'Feature:Metrics UI', 'Team:logs-metrics-ui'], - }, - { - title: 'Data ingest', - labels: ['Ingest', 'Feature:Ingest Node Pipelines'], - }, -]; - -export const UNKNOWN_AREA: Area = { - title: 'Unknown', - labels: [], -}; - -/** - * Define the sections that will be assigned to PRs when generating the - * asciidoc formatted report. The order of the sections determines the - * order they will be rendered in the report - */ - -export interface AsciidocSection { - title: string; - labels: Array; - id: string; -} - -export const ASCIIDOC_SECTIONS: AsciidocSection[] = [ - { - id: 'enhancement', - title: 'Enhancements', - labels: ['release_note:enhancement'], - }, - { - id: 'bug', - title: 'Bug fixes', - labels: ['release_note:fix'], - }, - { - id: 'roadmap', - title: 'Roadmap', - labels: ['release_note:roadmap'], - }, - { - id: 'deprecation', - title: 'Deprecations', - labels: ['release_note:deprecation'], - }, - { - id: 'breaking', - title: 'Breaking Changes', - labels: ['release_note:breaking'], - }, -]; - -export const UNKNOWN_ASCIIDOC_SECTION: AsciidocSection = { - id: 'unknown', - title: 'Unknown', - labels: [], -}; diff --git a/packages/osd-release-notes/tsconfig.json b/packages/osd-release-notes/tsconfig.json deleted file mode 100644 index 02209a29e581..000000000000 --- a/packages/osd-release-notes/tsconfig.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "outDir": "./target", - "declaration": true, - "sourceMap": true, - "target": "ES2019" - }, - "include": [ - "src/**/*" - ] -} diff --git a/packages/osd-release-notes/yarn.lock b/packages/osd-release-notes/yarn.lock deleted file mode 120000 index 3f82ebc9cdba..000000000000 --- a/packages/osd-release-notes/yarn.lock +++ /dev/null @@ -1 +0,0 @@ -../../yarn.lock \ No newline at end of file diff --git a/scripts/backport.js b/scripts/backport.js deleted file mode 100644 index 67354d403001..000000000000 --- a/scripts/backport.js +++ /dev/null @@ -1,34 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -require('../src/setup_node_env/node_version_validator'); -require('backport'); diff --git a/scripts/release_notes.js b/scripts/release_notes.js deleted file mode 100644 index 5e50020445a2..000000000000 --- a/scripts/release_notes.js +++ /dev/null @@ -1,34 +0,0 @@ -/* - * SPDX-License-Identifier: Apache-2.0 - * - * The OpenSearch Contributors require contributions made to - * this file be licensed under the Apache-2.0 license or a - * compatible open source license. - */ - -/* - * Licensed to Elasticsearch B.V. under one or more contributor - * license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright - * ownership. Elasticsearch B.V. licenses this file to you under - * the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - -/* - * Modifications Copyright OpenSearch Contributors. See - * GitHub history for details. - */ - -require('../src/setup_node_env/no_transpilation'); -require('@osd/release-notes').runReleaseNotesCli(); diff --git a/yarn.lock b/yarn.lock index eede3138edb6..c96c5c299218 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1038,15 +1038,6 @@ exec-sh "^0.3.2" minimist "^1.2.0" -"@dabh/diagnostics@^2.0.2": - version "2.0.2" - resolved "https://registry.yarnpkg.com/@dabh/diagnostics/-/diagnostics-2.0.2.tgz#290d08f7b381b8f94607dc8f471a12c675f9db31" - integrity sha512-+A1YivoVDNNVCdfozHSR8v/jyuuLTMXwjWuxPFlFlUapXoGc+Gj9mDlTDDfrwl7rXCl2tNZ0kE8sIBO6YOn96Q== - dependencies: - colorspace "1.1.x" - enabled "2.0.x" - kuler "^2.0.0" - "@elastic/apm-rum-core@^5.7.0": version "5.7.0" resolved "https://registry.yarnpkg.com/@elastic/apm-rum-core/-/apm-rum-core-5.7.0.tgz#2213987285324781e2ebeca607f3a71245da5a84" @@ -2218,26 +2209,6 @@ jsonwebtoken "^8.3.0" lru-cache "^5.1.1" -"@octokit/auth-token@^2.4.4": - version "2.4.5" - resolved "https://registry.yarnpkg.com/@octokit/auth-token/-/auth-token-2.4.5.tgz#568ccfb8cb46f36441fac094ce34f7a875b197f3" - integrity sha512-BpGYsPgJt05M7/L/5FoE1PiAbdxXFZkX/3kDYcsvd1v6UhlnE5e96dTDr0ezX/EFwciQxf3cNV0loipsURU+WA== - dependencies: - "@octokit/types" "^6.0.3" - -"@octokit/core@^3.2.3": - version "3.4.0" - resolved "https://registry.yarnpkg.com/@octokit/core/-/core-3.4.0.tgz#b48aa27d755b339fe7550548b340dcc2b513b742" - integrity sha512-6/vlKPP8NF17cgYXqucdshWqmMZGXkuvtcrWCgU5NOI0Pl2GjlmZyWgBMrU8zJ3v2MJlM6++CiB45VKYmhiWWg== - dependencies: - "@octokit/auth-token" "^2.4.4" - "@octokit/graphql" "^4.5.8" - "@octokit/request" "^5.4.12" - "@octokit/request-error" "^2.0.5" - "@octokit/types" "^6.0.3" - before-after-hook "^2.2.0" - universal-user-agent "^6.0.0" - "@octokit/endpoint@^3.2.0": version "3.2.3" resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-3.2.3.tgz#bd9aea60cd94ce336656b57a5c9cb7f10be8f4f3" @@ -2248,49 +2219,6 @@ universal-user-agent "^2.0.1" url-template "^2.0.8" -"@octokit/endpoint@^6.0.1": - version "6.0.11" - resolved "https://registry.yarnpkg.com/@octokit/endpoint/-/endpoint-6.0.11.tgz#082adc2aebca6dcefa1fb383f5efb3ed081949d1" - integrity sha512-fUIPpx+pZyoLW4GCs3yMnlj2LfoXTWDUVPTC4V3MUEKZm48W+XYpeWSZCv+vYF1ZABUm2CqnDVf1sFtIYrj7KQ== - dependencies: - "@octokit/types" "^6.0.3" - is-plain-object "^5.0.0" - universal-user-agent "^6.0.0" - -"@octokit/graphql@^4.5.8": - version "4.6.2" - resolved "https://registry.yarnpkg.com/@octokit/graphql/-/graphql-4.6.2.tgz#ec44abdfa87f2b9233282136ae33e4ba446a04e7" - integrity sha512-WmsIR1OzOr/3IqfG9JIczI8gMJUMzzyx5j0XXQ4YihHtKlQc+u35VpVoOXhlKAlaBntvry1WpAzPl/a+s3n89Q== - dependencies: - "@octokit/request" "^5.3.0" - "@octokit/types" "^6.0.3" - universal-user-agent "^6.0.0" - -"@octokit/openapi-types@^7.2.3": - version "7.3.0" - resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-7.3.0.tgz#1d9ed79828513c57a95e6360b7c9b4749503e79d" - integrity sha512-o00X2FCLiEeXZkm1Ab5nvPUdVOlrpediwWZkpizUJ/xtZQsJ4FiQ2RB/dJEmb0Nk+NIz7zyDePcSCu/Y/0M3Ew== - -"@octokit/plugin-paginate-rest@^2.6.2": - version "2.13.3" - resolved "https://registry.yarnpkg.com/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.13.3.tgz#f0f1792230805108762d87906fb02d573b9e070a" - integrity sha512-46lptzM9lTeSmIBt/sVP/FLSTPGx6DCzAdSX3PfeJ3mTf4h9sGC26WpaQzMEq/Z44cOcmx8VsOhO+uEgE3cjYg== - dependencies: - "@octokit/types" "^6.11.0" - -"@octokit/plugin-request-log@^1.0.2": - version "1.0.3" - resolved "https://registry.yarnpkg.com/@octokit/plugin-request-log/-/plugin-request-log-1.0.3.tgz#70a62be213e1edc04bb8897ee48c311482f9700d" - integrity sha512-4RFU4li238jMJAzLgAwkBAw+4Loile5haQMQr+uhFq27BmyJXcXSKvoQKqh0agsZEiUlW6iSv3FAgvmGkur7OQ== - -"@octokit/plugin-rest-endpoint-methods@5.3.1": - version "5.3.1" - resolved "https://registry.yarnpkg.com/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.3.1.tgz#deddce769b4ec3179170709ab42e4e9e6195aaa9" - integrity sha512-3B2iguGmkh6bQQaVOtCsS0gixrz8Lg0v4JuXPqBcFqLKuJtxAUf3K88RxMEf/naDOI73spD+goJ/o7Ie7Cvdjg== - dependencies: - "@octokit/types" "^6.16.2" - deprecation "^2.3.1" - "@octokit/plugin-retry@^2.2.0": version "2.2.0" resolved "https://registry.yarnpkg.com/@octokit/plugin-retry/-/plugin-retry-2.2.0.tgz#11f3957a46ccdb7b7f33caabf8c17e57b25b80b2" @@ -2298,15 +2226,6 @@ dependencies: bottleneck "^2.15.3" -"@octokit/request-error@^2.0.0", "@octokit/request-error@^2.0.5": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@octokit/request-error/-/request-error-2.0.5.tgz#72cc91edc870281ad583a42619256b380c600143" - integrity sha512-T/2wcCFyM7SkXzNoyVNWjyVlUwBvW3igM3Btr/eKYiPmucXTtkxt2RBsf6gn3LTzaLSLTQtNmvg+dGsOxQrjZg== - dependencies: - "@octokit/types" "^6.0.3" - deprecation "^2.0.0" - once "^1.4.0" - "@octokit/request@2.4.2", "@octokit/request@^2.1.2", "@octokit/request@^2.4.2": version "2.4.2" resolved "https://registry.yarnpkg.com/@octokit/request/-/request-2.4.2.tgz#87c36e820dd1e43b1629f4f35c95b00cd456320b" @@ -2319,18 +2238,6 @@ once "^1.4.0" universal-user-agent "^2.0.1" -"@octokit/request@^5.3.0", "@octokit/request@^5.4.12": - version "5.5.0" - resolved "https://registry.yarnpkg.com/@octokit/request/-/request-5.5.0.tgz#6588c532255b8e71886cefa0d2b64b4ad73bf18c" - integrity sha512-jxbMLQdQ3heFMZUaTLSCqcKs2oAHEYh7SnLLXyxbZmlULExZ/RXai7QUWWFKowcGGPlCZuKTZg0gSKHWrfYEoQ== - dependencies: - "@octokit/endpoint" "^6.0.1" - "@octokit/request-error" "^2.0.0" - "@octokit/types" "^6.16.1" - is-plain-object "^5.0.0" - node-fetch "^2.6.1" - universal-user-agent "^6.0.0" - "@octokit/rest@^16.23.2": version "16.23.2" resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-16.23.2.tgz#975e84610427c4ab6c41bec77c24aed9b7563db4" @@ -2349,23 +2256,6 @@ universal-user-agent "^2.0.0" url-template "^2.0.8" -"@octokit/rest@^18.0.12": - version "18.5.6" - resolved "https://registry.yarnpkg.com/@octokit/rest/-/rest-18.5.6.tgz#8c9a7c9329c7bbf478af20df78ddeab0d21f6d89" - integrity sha512-8HdG6ZjQdZytU6tCt8BQ2XLC7EJ5m4RrbyU/EARSkAM1/HP3ceOzMG/9atEfe17EDMer3IVdHWLedz2wDi73YQ== - dependencies: - "@octokit/core" "^3.2.3" - "@octokit/plugin-paginate-rest" "^2.6.2" - "@octokit/plugin-request-log" "^1.0.2" - "@octokit/plugin-rest-endpoint-methods" "5.3.1" - -"@octokit/types@^6.0.3", "@octokit/types@^6.11.0", "@octokit/types@^6.16.1", "@octokit/types@^6.16.2": - version "6.16.2" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-6.16.2.tgz#62242e0565a3eb99ca2fd376283fe78b4ea057b4" - integrity sha512-wWPSynU4oLy3i4KGyk+J1BLwRKyoeW2TwRHgwbDz17WtVFzSK2GOErGliruIx8c+MaYtHSYTx36DSmLNoNbtgA== - dependencies: - "@octokit/openapi-types" "^7.2.3" - "@percy/cli-build@1.0.0-beta.74": version "1.0.0-beta.74" resolved "https://registry.yarnpkg.com/@percy/cli-build/-/cli-build-1.0.0-beta.74.tgz#228208ce21bd8c2fa663ebfcaad79a27b57f776e" @@ -3221,21 +3111,7 @@ "@types/node" "*" "@types/webpack" "*" -"@types/lodash.difference@^4.5.6": - version "4.5.6" - resolved "https://registry.yarnpkg.com/@types/lodash.difference/-/lodash.difference-4.5.6.tgz#41ec5c4e684eeacf543848a9a1b2a4856ccf9853" - integrity sha512-wXH53r+uoUCrKhmh7S5Gf6zo3vpsx/zH2R4pvkmDlmopmMTCROAUXDpPMXATGCWkCjE6ik3VZzZUxBgMjZho9Q== - dependencies: - "@types/lodash" "*" - -"@types/lodash.intersection@^4.4.6": - version "4.4.6" - resolved "https://registry.yarnpkg.com/@types/lodash.intersection/-/lodash.intersection-4.4.6.tgz#0fb241badf6edbb2a7d194a70c50e950e2486e68" - integrity sha512-6ewsKax7+HgT+7mEhzXT6tIyIHc/mjCwZJnarvLbCrtW21qmDQHWbaJj4Ht4DQDBmMdnvZe8APuVlsMpZ5E5mQ== - dependencies: - "@types/lodash" "*" - -"@types/lodash@*", "@types/lodash@^4.14.160", "@types/lodash@^4.14.170": +"@types/lodash@^4.14.160", "@types/lodash@^4.14.170": version "4.14.170" resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.14.170.tgz#0d67711d4bf7f4ca5147e9091b847479b87925d6" integrity sha512-bpcvu/MKHHeYX+qeEN8GE7DIravODWdACVA1ctevD8CN24RhPZIKMn9ntfAsrvLfSX3cR5RrBKAbYm9bGs0A+Q== @@ -4844,7 +4720,7 @@ async@^2.6.0, async@^2.6.1, async@^2.6.2, async@^2.6.3: dependencies: lodash "^4.17.14" -async@^3.1.0, async@^3.2.0, async@~3.2.0: +async@^3.2.0, async@~3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/async/-/async-3.2.0.tgz#b3a2685c5ebb641d3de02d161002c60fc9f85720" integrity sha512-TR2mEZFVOj2pLStYxLht7TyfuRzaydfpxr3k9RpHIzMgw7A64dzsdqCxH1WJyQdoe8T10nDXd9wnEigmiuHIZw== @@ -5082,32 +4958,6 @@ babel-runtime@^6.26.0: core-js "^2.4.0" regenerator-runtime "^0.11.0" -backport@^5.6.6: - version "5.6.6" - resolved "https://registry.yarnpkg.com/backport/-/backport-5.6.6.tgz#cb03f948a36386734fa491343b93f4ca280e00f3" - integrity sha512-8O7z0q6m5DfQgrhLDUOLcH2y/rXwSgqv5WIWSSoZpPyRdPpmd3xApIfohlJ3oBX9W0TdbO3aKzaV00qg3H9P7w== - dependencies: - "@octokit/rest" "^18.0.12" - "@types/lodash.difference" "^4.5.6" - "@types/lodash.intersection" "^4.4.6" - axios "^0.21.1" - dedent "^0.7.0" - del "^6.0.0" - find-up "^5.0.0" - inquirer "^7.3.3" - lodash.difference "^4.5.0" - lodash.flatmap "^4.5.0" - lodash.intersection "^4.4.0" - lodash.isempty "^4.4.0" - lodash.isstring "^4.0.1" - lodash.uniq "^4.5.0" - make-dir "^3.1.0" - ora "^5.3.0" - safe-json-stringify "^1.2.0" - strip-json-comments "^3.1.1" - winston "^3.3.3" - yargs "^16.2.0" - bail@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/bail/-/bail-1.0.2.tgz#f7d6c1731630a9f9f0d4d35ed1f962e2074a1764" @@ -5170,11 +5020,6 @@ before-after-hook@^1.4.0: resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-1.4.0.tgz#2b6bf23dca4f32e628fd2747c10a37c74a4b484d" integrity sha512-l5r9ir56nda3qu14nAXIlyq1MmUSs0meCIaFAh8HwkFwP1F8eToOuS3ah2VAHHcY04jaYD7FpJC5JTXHYRbkzg== -before-after-hook@^2.2.0: - version "2.2.2" - resolved "https://registry.yarnpkg.com/before-after-hook/-/before-after-hook-2.2.2.tgz#a6e8ca41028d90ee2c24222f201c90956091613e" - integrity sha512-3pZEU3NT5BFUo/AD5ERPWOgQOCZITni6iavr5AUw5AUwQjMlI0kzu5btnyD39AF0gUEsDPwJT+oY1ORBJijPjQ== - big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" @@ -5211,15 +5056,6 @@ bl@^4.0.1: inherits "^2.0.4" readable-stream "^3.4.0" -bl@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" - integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== - dependencies: - buffer "^5.5.0" - inherits "^2.0.4" - readable-stream "^3.4.0" - bluebird@3.5.5: version "3.5.5" resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f" @@ -6050,11 +5886,6 @@ cli-spinners@^2.2.0: resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.4.0.tgz#c6256db216b878cfba4720e719cec7cf72685d7f" integrity sha512-sJAofoarcm76ZGpuooaO0eDy8saEy+YoZBLjC4h8srt4jeBnkYeOgqxgsJQTpyt2LjI5PTfLJHSL+41Yu4fEJA== -cli-spinners@^2.5.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.6.0.tgz#36c7dc98fb6a9a76bd6238ec3f77e2425627e939" - integrity sha512-t+4/y50K/+4xcCRosKkA7W4gTr1MySvLV0q+PxmG7FJ5g+66ChKurYjxBCjHggHH3HA5Hh9cy+lcUGWDqVH+4Q== - cli-truncate@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" @@ -6100,15 +5931,6 @@ cliui@^7.0.0: strip-ansi "^6.0.0" wrap-ansi "^7.0.0" -cliui@^7.0.2: - version "7.0.4" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" - integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^7.0.0" - clone-buffer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" @@ -6195,7 +6017,7 @@ collection-visit@^1.0.0: map-visit "^1.0.0" object-visit "^1.0.0" -color-convert@^1.8.2, color-convert@^1.9.0, color-convert@^1.9.1: +color-convert@^1.8.2, 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== @@ -6224,7 +6046,7 @@ color-name@^1.0.0, color-name@~1.1.4: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== -color-string@^1.4.0, color-string@^1.5.2: +color-string@^1.4.0: version "1.5.5" resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.5.tgz#65474a8f0e7439625f3d27a6a19d89fc45223014" integrity sha512-jgIoum0OfQfq9Whcfc2z/VhCNcmQjWbey6qBX0vqt7YICflUmBCh9E9CiQD5GSJ+Uehixm3NUwHVhqUAWRivZg== @@ -6240,19 +6062,6 @@ color@1.0.3: color-convert "^1.8.2" color-string "^1.4.0" -color@3.0.x: - version "3.0.0" - resolved "https://registry.yarnpkg.com/color/-/color-3.0.0.tgz#d920b4328d534a3ac8295d68f7bd4ba6c427be9a" - integrity sha512-jCpd5+s0s0t7p3pHQKpnJ0TpQKKdleP71LWcA0aqiljpiuAkOSUFN/dyH8ZwF0hRmFlrIuRhufds1QyEP9EB+w== - dependencies: - color-convert "^1.9.1" - color-string "^1.5.2" - -colors@^1.2.1: - version "1.4.0" - resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" - integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== - colors@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/colors/-/colors-1.1.2.tgz#168a4701756b6a7f51a12ce0c97bfa28c084ed63" @@ -6263,14 +6072,6 @@ colors@~1.2.1: resolved "https://registry.yarnpkg.com/colors/-/colors-1.2.5.tgz#89c7ad9a374bc030df8013241f68136ed8835afc" integrity sha512-erNRLao/Y3Fv54qUa0LBB+//Uf3YwMUmdJinN20yMXm9zdKKqH9wt7R9IIVZ+K7ShzfpLV/Zg8+VyrBJYB4lpg== -colorspace@1.1.x: - version "1.1.1" - resolved "https://registry.yarnpkg.com/colorspace/-/colorspace-1.1.1.tgz#9ac2491e1bc6f8fb690e2176814f8d091636d972" - integrity sha512-pI3btWyiuz7Ken0BWh9Elzsmv2bM9AhA7psXib4anUXy/orfZ/E0MbQwhSOG/9L8hLlalqrU0UhOuqxW1YjmVw== - dependencies: - color "3.0.x" - text-hex "1.0.x" - combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -7496,11 +7297,6 @@ deprecation@^1.0.1: resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-1.0.1.tgz#2df79b79005752180816b7b6e079cbd80490d711" integrity sha512-ccVHpE72+tcIKaGMql33x5MAjKQIZrk+3x2GbJ7TeraUCZWHoT+KSZpoC+JQFsUBlSTXUrBaGiF0j6zVTepPLg== -deprecation@^2.0.0, deprecation@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/deprecation/-/deprecation-2.3.1.tgz#6368cbdb40abf3373b525ac87e4a260c3a700919" - integrity sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ== - des.js@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/des.js/-/des.js-1.0.0.tgz#c074d2e2aa6a8a9a07dbd61f9a15c2cd83ec8ecc" @@ -7948,11 +7744,6 @@ emoticon@^3.2.0: resolved "https://registry.yarnpkg.com/emoticon/-/emoticon-3.2.0.tgz#c008ca7d7620fac742fe1bf4af8ff8fed154ae7f" integrity sha512-SNujglcLTTg+lDAcApPNgEdudaqQFiAbJCqzjNxJkvN9vAwCGi0uu8IUVvx+f16h+V44KCY6Y2yboroc9pilHg== -enabled@2.0.x: - version "2.0.0" - resolved "https://registry.yarnpkg.com/enabled/-/enabled-2.0.0.tgz#f9dd92ec2d6f4bbc0d5d1e64e21d61cd4665e7c2" - integrity sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ== - encodeurl@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" @@ -8988,7 +8779,7 @@ fast-levenshtein@~2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= -fast-safe-stringify@2.x.x, fast-safe-stringify@^2.0.4, fast-safe-stringify@^2.0.7: +fast-safe-stringify@2.x.x, fast-safe-stringify@^2.0.7: version "2.0.7" resolved "https://registry.yarnpkg.com/fast-safe-stringify/-/fast-safe-stringify-2.0.7.tgz#124aa885899261f68aedb42a7c080de9da608743" integrity sha512-Utm6CdzT+6xsDk2m8S6uL8VHxNwI6Jub+e9NYTcAms28T84pTa25GJQV9j0CY0N1rM8hK4x6grpF2BQf+2qwVA== @@ -9064,11 +8855,6 @@ fd-slicer@~1.1.0: dependencies: pend "~1.2.0" -fecha@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/fecha/-/fecha-4.2.0.tgz#3ffb6395453e3f3efff850404f0a59b6747f5f41" - integrity sha512-aN3pcx/DSmtyoovUudctc8+6Hl4T+hI9GBBHLjA76jdZl7+b1sgh5g4k+u/GL3dTy1/pnYzKp69FpJ0OicE3Wg== - fetch-mock@^7.3.9: version "7.3.9" resolved "https://registry.yarnpkg.com/fetch-mock/-/fetch-mock-7.3.9.tgz#a80fd2a1728f72e0634ef7a9734bc61200096487" @@ -9234,14 +9020,6 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" -find-up@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" - integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== - dependencies: - locate-path "^6.0.0" - path-exists "^4.0.0" - findup-sync@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" @@ -9324,11 +9102,6 @@ flush-write-stream@^1.0.0, flush-write-stream@^1.0.2: inherits "^2.0.1" readable-stream "^2.0.4" -fn.name@1.x.x: - version "1.1.0" - resolved "https://registry.yarnpkg.com/fn.name/-/fn.name-1.1.0.tgz#26cad8017967aea8731bc42961d04a3d5988accc" - integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw== - focus-lock@^0.7.0: version "0.7.0" resolved "https://registry.yarnpkg.com/focus-lock/-/focus-lock-0.7.0.tgz#b2bfb0ca7beacc8710a1ff74275fe0dc60a1d88a" @@ -10022,18 +9795,6 @@ graceful-fs@4.X, graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.15, g resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== -graphql-tag@^2.10.3: - version "2.10.3" - resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.10.3.tgz#ea1baba5eb8fc6339e4c4cf049dabe522b0edf03" - integrity sha512-4FOv3ZKfA4WdOKJeHdz6B3F/vxBLSgmBcGeAFPf4n1F64ltJUvOOerNj0rsJxONQGdhUMynQIvd6LzB+1J5oKA== - -graphql@^0.13.2: - version "0.13.2" - resolved "https://registry.yarnpkg.com/graphql/-/graphql-0.13.2.tgz#4c740ae3c222823e7004096f832e7b93b2108270" - integrity sha512-QZ5BL8ZO/B20VA8APauGBg3GyEgZ19eduvpLWoq5x7gMmWnHoy8rlQWPLmWgFvo1yNgjSEFMesmS4R6pPr7xog== - dependencies: - iterall "^1.2.1" - growl@1.10.5: version "1.10.5" resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" @@ -11534,11 +11295,6 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" -is-plain-object@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" - integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== - is-potential-custom-element-name@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz#0c52e54bcca391bb2c494b21e8626d7336c6e397" @@ -11643,11 +11399,6 @@ is-unc-path@^1.0.0: dependencies: unc-path-regex "^0.1.2" -is-unicode-supported@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" - integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== - is-url@^1.2.2: version "1.2.4" resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" @@ -11856,11 +11607,6 @@ istanbul-reports@^3.0.2: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -iterall@^1.2.1: - version "1.2.2" - resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.2.2.tgz#92d70deb8028e0c39ff3164fdbf4d8b088130cd7" - integrity sha512-yynBb1g+RFUPY64fTrFv7nsjRrENBQJaX2UL+2Szc9REFrSNm1rpSXHGzhmAy7a9uv3vlvgBlXnf9RqmPH1/DA== - jake@^10.6.1: version "10.8.2" resolved "https://registry.yarnpkg.com/jake/-/jake-10.8.2.tgz#ebc9de8558160a66d82d0eadc6a2e58fbc500a7b" @@ -12716,11 +12462,6 @@ known-css-properties@^0.3.0: resolved "https://registry.yarnpkg.com/known-css-properties/-/known-css-properties-0.3.0.tgz#a3d135bbfc60ee8c6eacf2f7e7e6f2d4755e49a4" integrity sha512-QMQcnKAiQccfQTqtBh/qwquGZ2XK/DXND1jrcN9M8gMMy99Gwla7GQjndVUsEqIaRyP6bsFRuhwRj5poafBGJQ== -kuler@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/kuler/-/kuler-2.0.0.tgz#e2c570a3800388fb44407e851531c1d670b061b3" - integrity sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A== - latest-version@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/latest-version/-/latest-version-1.0.1.tgz#72cfc46e3e8d1be651e1ebb54ea9f6ea96f374bb" @@ -13060,13 +12801,6 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" -locate-path@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" - integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== - dependencies: - p-locate "^5.0.0" - lodash-es@^4.17.11: version "4.17.15" resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.15.tgz#21bd96839354412f23d7a10340e5eac6ee455d78" @@ -13137,11 +12871,6 @@ lodash.find@4.6.0: resolved "https://registry.yarnpkg.com/lodash.find/-/lodash.find-4.6.0.tgz#cb0704d47ab71789ffa0de8b97dd926fb88b13b1" integrity sha1-ywcE1Hq3F4n/oN6Ll92Sb7iLE7E= -lodash.flatmap@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/lodash.flatmap/-/lodash.flatmap-4.5.0.tgz#ef8cbf408f6e48268663345305c6acc0b778702e" - integrity sha1-74y/QI9uSCaGYzRTBcaswLd4cC4= - lodash.flatten@^4.2.0, lodash.flatten@^4.4.0: version "4.4.0" resolved "https://registry.yarnpkg.com/lodash.flatten/-/lodash.flatten-4.4.0.tgz#f31c22225a9632d2bbf8e4addbef240aa765a61f" @@ -13177,11 +12906,6 @@ lodash.isboolean@^3.0.3: resolved "https://registry.yarnpkg.com/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz#6c2e171db2a257cd96802fd43b01b20d5f5870f6" integrity sha1-bC4XHbKiV82WgC/UOwGyDV9YcPY= -lodash.isempty@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.isempty/-/lodash.isempty-4.4.0.tgz#6f86cbedd8be4ec987be9aaf33c9684db1b31e7e" - integrity sha1-b4bL7di+TsmHvpqvM8loTbGzHn4= - lodash.isequal@^4.0.0, lodash.isequal@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0" @@ -13338,14 +13062,6 @@ log-symbols@^4.0.0: dependencies: chalk "^4.0.0" -log-symbols@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" - integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== - dependencies: - chalk "^4.1.0" - is-unicode-supported "^0.1.0" - log-update@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/log-update/-/log-update-2.3.0.tgz#88328fd7d1ce7938b29283746f0b1bc126b24708" @@ -13355,17 +13071,6 @@ log-update@^2.3.0: cli-cursor "^2.0.0" wrap-ansi "^3.0.1" -logform@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/logform/-/logform-2.2.0.tgz#40f036d19161fc76b68ab50fdc7fe495544492f2" - integrity sha512-N0qPlqfypFx7UHNn4B3lzS/b0uLqt2hmuoa+PpuXNYgozdJYAyauF5Ky0BWVjrxDlMWiT3qN4zPq3vVAfZy7Yg== - dependencies: - colors "^1.2.1" - fast-safe-stringify "^2.0.4" - fecha "^4.2.0" - ms "^2.1.1" - triple-beam "^1.3.0" - loglevel@^1.6.8: version "1.6.8" resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.6.8.tgz#8a25fb75d092230ecd4457270d80b54e28011171" @@ -14808,13 +14513,6 @@ once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0: dependencies: wrappy "1" -one-time@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/one-time/-/one-time-1.0.0.tgz#e06bc174aed214ed58edede573b433bbf827cb45" - integrity sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g== - dependencies: - fn.name "1.x.x" - onetime@^1.0.0: version "1.1.0" resolved "https://registry.npmjs.org/onetime/-/onetime-1.1.0.tgz#a1f7838f8314c516f05ecefcbc4ccfe04b4ed789" @@ -14877,21 +14575,6 @@ ora@^4.0.4: strip-ansi "^6.0.0" wcwidth "^1.0.1" -ora@^5.3.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" - integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== - dependencies: - bl "^4.1.0" - chalk "^4.1.0" - cli-cursor "^3.1.0" - cli-spinners "^2.5.0" - is-interactive "^1.0.0" - is-unicode-supported "^0.1.0" - log-symbols "^4.1.0" - strip-ansi "^6.0.0" - wcwidth "^1.0.1" - ordered-binary@^1.0.0: version "1.1.3" resolved "https://registry.yarnpkg.com/ordered-binary/-/ordered-binary-1.1.3.tgz#11dbc0a4cb7f8248183b9845e031b443be82571e" @@ -15021,13 +14704,6 @@ p-limit@^2.0.0, p-limit@^2.2.0, p-limit@^2.3.0: dependencies: p-try "^2.0.0" -p-limit@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.0.2.tgz#1664e010af3cadc681baafd3e2a437be7b0fb5fe" - integrity sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg== - dependencies: - p-try "^2.0.0" - p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" @@ -15049,13 +14725,6 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" -p-locate@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" - integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== - dependencies: - p-limit "^3.0.2" - p-map@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/p-map/-/p-map-2.1.0.tgz#310928feef9c9ecc65b68b17693018a665cea175" @@ -16466,7 +16135,7 @@ read-pkg@^5.2.0: parse-json "^5.0.0" type-fest "^0.6.0" -"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@^2.3.7, readable-stream@~2.3.6: +"readable-stream@1 || 2", readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.4, readable-stream@^2.0.5, readable-stream@^2.0.6, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== @@ -17301,11 +16970,6 @@ safe-json-parse@~1.0.1: resolved "https://registry.yarnpkg.com/safe-json-parse/-/safe-json-parse-1.0.1.tgz#3e76723e38dfdda13c9b1d29a1e07ffee4b30b57" integrity sha1-PnZyPjjf3aE8mx0poeB//uSzC1c= -safe-json-stringify@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz#356e44bc98f1f93ce45df14bcd7c01cda86e0afd" - integrity sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg== - safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" @@ -18125,11 +17789,6 @@ stack-generator@^2.0.4: dependencies: stackframe "^1.1.0" -stack-trace@0.0.x: - version "0.0.10" - resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" - integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA= - stack-utils@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.1.tgz#d4f33ab54e8e38778b0ca5cfd3b3afb12db68620" @@ -18459,7 +18118,7 @@ strip-json-comments@2.0.1, strip-json-comments@~2.0.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= -strip-json-comments@^3.0.1, strip-json-comments@^3.1.1, strip-json-comments@~3.1.1: +strip-json-comments@^3.0.1, strip-json-comments@~3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== @@ -18734,7 +18393,7 @@ term-size@^2.1.0: resolved "https://registry.yarnpkg.com/term-size/-/term-size-2.2.0.tgz#1f16adedfe9bdc18800e1776821734086fcc6753" integrity sha512-a6sumDlzyHVJWb8+YofY4TW112G6p2FCPEAFk+59gIYHv3XHRhm9ltVQ9kli4hNWeQBwSpe8cRN25x0ROunMOw== -terminal-link@^2.0.0, terminal-link@^2.1.1: +terminal-link@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== @@ -18805,11 +18464,6 @@ text-diff@^1.0.1: resolved "https://registry.yarnpkg.com/text-diff/-/text-diff-1.0.1.tgz#6c105905435e337857375c9d2f6ca63e453ff565" integrity sha1-bBBZBUNeM3hXN1ydL2ymPkU/9WU= -text-hex@1.0.x: - version "1.0.0" - resolved "https://registry.yarnpkg.com/text-hex/-/text-hex-1.0.0.tgz#69dc9c1b17446ee79a92bf5b884bb4b9127506f5" - integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg== - text-table@^0.2.0, text-table@~0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" @@ -19142,11 +18796,6 @@ trim@0.0.1, trim@^0.0.3: resolved "https://registry.yarnpkg.com/trim/-/trim-0.0.3.tgz#05243a47a3a4113e6b49367880a9cca59697a20b" integrity sha512-h82ywcYhHK7veeelXrCScdH7HkWfbIT1D/CgYO+nmDarz3SGNssVBMws6jU16Ga60AJCRAvPV6w6RLuNerQqjg== -triple-beam@^1.2.0, triple-beam@^1.3.0: - version "1.3.0" - resolved "https://registry.yarnpkg.com/triple-beam/-/triple-beam-1.3.0.tgz#a595214c7298db8339eeeee083e4d10bd8cb8dd9" - integrity sha512-XrHUvV5HpdLmIj4uVMxHggLbFSZYIn7HEWsqePZcI50pco+MPqJ50wMGY794X7AOOhxOBAjbkqfAbEe/QMp2Lw== - trough@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/trough/-/trough-1.0.1.tgz#a9fd8b0394b0ae8fff82e0633a0a36ccad5b5f86" @@ -19547,11 +19196,6 @@ universal-user-agent@^2.0.0, universal-user-agent@^2.0.1: dependencies: os-name "^3.0.0" -universal-user-agent@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/universal-user-agent/-/universal-user-agent-6.0.0.tgz#3381f8503b251c0d9cd21bc1de939ec9df5480ee" - integrity sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w== - universalify@^0.1.0, universalify@^0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" @@ -20694,29 +20338,6 @@ windows-release@^3.1.0: dependencies: execa "^1.0.0" -winston-transport@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/winston-transport/-/winston-transport-4.4.0.tgz#17af518daa690d5b2ecccaa7acf7b20ca7925e59" - integrity sha512-Lc7/p3GtqtqPBYYtS6KCN3c77/2QCev51DvcJKbkFPQNoj1sinkGwLGFDxkXY9J6p9+EPnYs+D90uwbnaiURTw== - dependencies: - readable-stream "^2.3.7" - triple-beam "^1.2.0" - -winston@^3.3.3: - version "3.3.3" - resolved "https://registry.yarnpkg.com/winston/-/winston-3.3.3.tgz#ae6172042cafb29786afa3d09c8ff833ab7c9170" - integrity sha512-oEXTISQnC8VlSAKf1KYSSd7J6IWuRPQqDdo8eoRNaYKLvwSb5+79Z3Yi1lrl6KDpU6/VWaxpakDAtb1oQ4n9aw== - dependencies: - "@dabh/diagnostics" "^2.0.2" - async "^3.1.0" - is-stream "^2.0.0" - logform "^2.2.0" - one-time "^1.0.0" - readable-stream "^3.4.0" - stack-trace "0.0.x" - triple-beam "^1.3.0" - winston-transport "^4.4.0" - word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" @@ -20935,11 +20556,6 @@ y18n@^5.0.1: resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.5.tgz#8769ec08d03b1ea2df2500acef561743bbb9ab18" integrity sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg== -y18n@^5.0.5: - version "5.0.8" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" - integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== - yallist@^2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" @@ -20981,7 +20597,7 @@ yargs-parser@^20.0.0: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.0.tgz#944791ca2be2e08ddadd3d87e9de4c6484338605" integrity sha512-2agPoRFPoIcFzOIp6656gcvsg2ohtscpw2OINr/q46+Sq41xz2OYLqx5HRHabmFU1OARIPAYH5uteICE7mn/5A== -yargs-parser@^20.2.2, yargs-parser@^20.2.3: +yargs-parser@^20.2.3: version "20.2.9" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== @@ -21045,19 +20661,6 @@ yargs@^15.3.1: y18n "^4.0.0" yargs-parser "^18.1.2" -yargs@^16.2.0: - version "16.2.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" - integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== - dependencies: - cliui "^7.0.2" - escalade "^3.1.1" - get-caller-file "^2.0.5" - require-directory "^2.1.1" - string-width "^4.2.0" - y18n "^5.0.5" - yargs-parser "^20.2.2" - yargs@~16.0.3: version "16.0.3" resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.0.3.tgz#7a919b9e43c90f80d4a142a89795e85399a7e54c"