diff --git a/packages/cli/src/api/__snapshots__/catalog.test.ts.snap b/packages/cli/src/api/__snapshots__/catalog.test.ts.snap index fa062c2d6..47d1fb30d 100644 --- a/packages/cli/src/api/__snapshots__/catalog.test.ts.snap +++ b/packages/cli/src/api/__snapshots__/catalog.test.ts.snap @@ -853,27 +853,6 @@ exports[`Catalog readAll should read existing catalogs for all locales 1`] = ` } `; -exports[`Catalog should convert catalog format 1`] = ` -msgid "" -msgstr "" -"Project-Id-Version: \\n" -"Report-Msgid-Bugs-To: \\n" -"POT-Creation-Date: \\n" -"PO-Revision-Date: \\n" -"Last-Translator: \\n" -"Language: \\n" -"Language-Team: \\n" -"Content-Type: \\n" -"Content-Transfer-Encoding: \\n" -"Plural-Forms: \\n" - -msgid "static" -msgstr "Static message" - -msgid "veryLongString" -msgstr "One morning, when Gregor Samsa woke from troubled dreams, he found himself transformed in his bed into a horrible vermin. He lay on his armour-like back, and if he lifted his head a little he could see his brown belly, slightly domed and divided by arches into stiff sections. The bedding was hardly able to cover it and seemed ready to slide off any moment. His many legs, pitifully thin compared with the size of the rest of him, waved about helplessly as he looked. \\"What's happened to me?\\" he thought. It wasn't a dream. His room, a proper human" -`; - exports[`cleanObsolete should remove obsolete messages from catalog 1`] = ` { Label: { diff --git a/packages/cli/src/api/catalog.test.ts b/packages/cli/src/api/catalog.test.ts index cbc2cdf3e..2060bf2f2 100644 --- a/packages/cli/src/api/catalog.test.ts +++ b/packages/cli/src/api/catalog.test.ts @@ -4,7 +4,7 @@ import mockFs from "mock-fs" import { mockConsole } from "@lingui/jest-mocks" import { LinguiConfig, makeConfig } from "@lingui/conf" -import { Catalog, cleanObsolete, order, CatalogProps } from "./catalog" +import { Catalog, cleanObsolete, order } from "./catalog" import { createCompiledCatalog } from "./compile" import { @@ -58,10 +58,10 @@ describe("Catalog", () => { ) // Everything should be empty - expect(catalog.readAll()).toMatchSnapshot() + expect(await catalog.readAll()).toMatchSnapshot() await catalog.make(defaultMakeOptions) - expect(catalog.readAll()).toMatchSnapshot() + expect(await catalog.readAll()).toMatchSnapshot() }) it("should only update the specified locale", async () => { @@ -82,10 +82,10 @@ describe("Catalog", () => { ) // Everything should be empty - expect(catalog.readAll()).toMatchSnapshot() + expect(await catalog.readAll()).toMatchSnapshot() await catalog.make({ ...defaultMakeOptions, locale: "en" }) - expect(catalog.readAll()).toMatchSnapshot() + expect(await catalog.readAll()).toMatchSnapshot() }) it("should merge with existing catalogs", async () => { @@ -103,10 +103,10 @@ describe("Catalog", () => { ) // Everything should be empty - expect(catalog.readAll()).toMatchSnapshot() + expect(await catalog.readAll()).toMatchSnapshot() await catalog.make(defaultMakeOptions) - expect(catalog.readAll()).toMatchSnapshot() + expect(await catalog.readAll()).toMatchSnapshot() }) }) @@ -129,15 +129,15 @@ describe("Catalog", () => { ) // Everything should be empty - expect(catalog.readTemplate()).toMatchSnapshot() + expect(await catalog.readTemplate()).toMatchSnapshot() await catalog.makeTemplate(defaultMakeTemplateOptions) - expect(catalog.readTemplate()).toMatchSnapshot() + expect(await catalog.readTemplate()).toMatchSnapshot() }) }) describe("POT Flow", () => { - it("Should get translations from template if locale file not presented", () => { + it("Should get translations from template if locale file not presented", async () => { const catalog = new Catalog( { name: "messages", @@ -153,7 +153,7 @@ describe("Catalog", () => { }) ) - const translations = catalog.getTranslations("en", { + const translations = await catalog.getTranslations("en", { sourceLocale: "en", fallbackLocales: { default: "en", @@ -361,7 +361,7 @@ describe("Catalog", () => { }) describe("read", () => { - it("should return null if file does not exist", () => { + it("should return null if file does not exist", async () => { // mock empty filesystem mockFs() @@ -375,11 +375,11 @@ describe("Catalog", () => { mockConfig() ) - const messages = catalog.read("en") + const messages = await catalog.read("en") expect(messages).toBeNull() }) - it("should read file in given format", () => { + it("should read file in given format", async () => { mockFs({ en: { "messages.po": fs.readFileSync( @@ -396,13 +396,13 @@ describe("Catalog", () => { mockConfig() ) - const messages = catalog.read("en") + const messages = await catalog.read("en") mockFs.restore() expect(messages).toMatchSnapshot() }) - it("should read file in previous format", () => { + it("should read file in previous format", async () => { mockFs({ en: { "messages.json": fs.readFileSync( @@ -419,7 +419,7 @@ describe("Catalog", () => { mockConfig({ prevFormat: "minimal" }) ) - const messages = catalog.read("en") + const messages = await catalog.read("en") mockFs.restore() expect(messages).toMatchSnapshot() @@ -427,7 +427,7 @@ describe("Catalog", () => { }) describe("readAll", () => { - it("should read existing catalogs for all locales", () => { + it("should read existing catalogs for all locales", async () => { const catalog = new Catalog( { name: "messages", @@ -442,64 +442,10 @@ describe("Catalog", () => { }) ) - const messages = catalog.readAll() + const messages = await catalog.readAll() expect(messages).toMatchSnapshot() }) }) - - /** - * Convert JSON format to PO and then back to JSON. - * - Compare that original and converted JSON file are identical - * - Check the content of PO file - */ - it.skip("should convert catalog format", () => { - mockFs({ - en: { - "messages.json": fs.readFileSync( - path.resolve(__dirname, "formats/fixtures/messages.json") - ), - "messages.po": mockFs.file(), - }, - }) - - const fileContent = (format: string) => - fs - .readFileSync("./en/messages." + (format === "po" ? "po" : "json")) - .toString() - .trim() - - const catalogConfig: CatalogProps = { - name: "messages", - path: "{locale}/messages", - include: [], - } - - const originalJson = fileContent("json") - const po2json = new Catalog( - catalogConfig, - mockConfig({ - format: "po", - prevFormat: "minimal", - }) - ) - po2json.write("en", po2json.read("en")) - const convertedPo = fileContent("po") - - const json2po = new Catalog( - catalogConfig, - mockConfig({ - format: "minimal", - prevFormat: "po", - localeDir: ".", - }) - ) - json2po.write("en", json2po.read("en")) - const convertedJson = fileContent("json") - - mockFs.restore() - expect(originalJson).toEqual(convertedJson) - expect(convertedPo).toMatchSnapshot() - }) }) describe("cleanObsolete", () => { @@ -641,12 +587,12 @@ describe("writeCompiled", () => { { namespace: "global.test", extension: /\.js$/ }, ])( "Should save namespace $namespace in $extension extension", - ({ namespace, extension }) => { + async ({ namespace, extension }) => { const compiledCatalog = createCompiledCatalog("en", {}, { namespace }) // Test that the file extension of the compiled catalog is `.mjs` - expect(catalog.writeCompiled("en", compiledCatalog, namespace)).toMatch( - extension - ) + expect( + await catalog.writeCompiled("en", compiledCatalog, namespace) + ).toMatch(extension) } ) }) diff --git a/packages/cli/src/api/catalog.ts b/packages/cli/src/api/catalog.ts index 544024498..67120c38b 100644 --- a/packages/cli/src/api/catalog.ts +++ b/packages/cli/src/api/catalog.ts @@ -6,11 +6,7 @@ import normalize from "normalize-path" import { LinguiConfigNormalized, OrderBy } from "@lingui/conf" -import { - getFormat, - CatalogFormatOptionsInternal, - CatalogFormatter, -} from "./formats" +import { FormatterWrapper, getFormat } from "./formats" import { CliExtractOptions } from "../lingui-extract" import { CliExtractTemplateOptions } from "../lingui-extract-template" import { CompiledCatalogNamespace } from "./compile" @@ -62,7 +58,7 @@ export class Catalog { path: string include: Array exclude: Array - format: CatalogFormatter + format: FormatterWrapper templateFile?: string constructor( @@ -73,14 +69,16 @@ export class Catalog { this.path = normalizeRelativePath(path) this.include = include.map(normalizeRelativePath) this.exclude = [this.localeDir, ...exclude.map(normalizeRelativePath)] - this.format = getFormat(config.format) - this.templateFile = templatePath || getTemplatePath(this.format, this.path) + this.format = getFormat(config.format, config.formatOptions) + this.templateFile = + templatePath || + getTemplatePath(this.format.getTemplateExtension(), this.path) } async make(options: MakeOptions): Promise { const nextCatalog = await this.collect({ files: options.files }) if (!nextCatalog) return false - const prevCatalogs = this.readAll() + const prevCatalogs = await this.readAll() const catalogs = this.merge(prevCatalogs, nextCatalog, { overwrite: options.overwrite, @@ -100,7 +98,9 @@ export class Catalog { const sortedCatalogs = cleanAndSort(catalogs) const locales = options.locale ? [options.locale] : this.locales - locales.forEach((locale) => this.write(locale, sortedCatalogs[locale])) + await Promise.all( + locales.map((locale) => this.write(locale, sortedCatalogs[locale])) + ) return sortedCatalogs } @@ -112,7 +112,7 @@ export class Catalog { if (!catalog) return false const sorted = order(options.orderBy)(catalog as CatalogType) - this.writeTemplate(sorted) + await this.writeTemplate(sorted) return sorted } @@ -167,34 +167,30 @@ export class Catalog { }, prevCatalogs) } - getTranslations(locale: string, options: GetTranslationsOptions) { - return getTranslationsForCatalog(this, locale, options) + async getTranslations(locale: string, options: GetTranslationsOptions) { + return await getTranslationsForCatalog(this, locale, options) } - write( + async write( locale: string, messages: CatalogType - ): [created: boolean, filename: string] { + ): Promise<[created: boolean, filename: string]> { const filename = - replacePlaceholders(this.path, { locale }) + this.format.catalogExtension + replacePlaceholders(this.path, { locale }) + + this.format.getCatalogExtension() const created = !fs.existsSync(filename) - const options = { ...this.config.formatOptions, locale } - this.format.write(filename, messages, options) + await this.format.write(filename, messages, locale) return [created, filename] } - writeTemplate(messages: CatalogType) { + async writeTemplate(messages: CatalogType): Promise { const filename = this.templateFile - const options: CatalogFormatOptionsInternal = { - ...this.config.formatOptions, - locale: undefined, - } - this.format.write(filename, messages, options) + await this.format.write(filename, messages, undefined) } - writeCompiled( + async writeCompiled( locale: string, compiledCatalog: string, namespace?: CompiledCatalogNamespace @@ -209,28 +205,38 @@ export class Catalog { } const filename = `${replacePlaceholders(this.path, { locale })}.${ext}` - writeFile(filename, compiledCatalog) + await writeFile(filename, compiledCatalog) return filename } - read(locale: string) { + async read(locale: string): Promise { const filename = - replacePlaceholders(this.path, { locale }) + this.format.catalogExtension + replacePlaceholders(this.path, { locale }) + + this.format.getCatalogExtension() - return this.format.read(filename) + return await this.format.read(filename, locale) } - readAll(): AllCatalogsType { - return R.mergeAll( - this.locales.map((locale) => ({ - [locale]: this.read(locale), - })) - ) as AllCatalogsType + async readAll(): Promise { + const res: AllCatalogsType = {} + + await Promise.all( + this.locales.map( + async (locale) => (res[locale] = await this.read(locale)) + ) + ) + + // statement above will save locales in object in undetermined order + // resort here to have keys order the same as in locales definition + return this.locales.reduce((acc, locale: string) => { + acc[locale] = res[locale] + return acc + }, {}) } - readTemplate(): CatalogType { + async readTemplate(): Promise { const filename = this.templateFile - return this.format.read(filename) + return await this.format.read(filename, undefined) } get sourcePaths() { @@ -269,8 +275,7 @@ export class Catalog { } } -function getTemplatePath(format: CatalogFormatter, path: string) { - const ext = format.templateExtension || format.catalogExtension +function getTemplatePath(ext: string, path: string) { return path.replace(LOCALE_SUFFIX_RE, "messages" + ext) } diff --git a/packages/cli/src/api/catalog/getCatalogs.test.ts b/packages/cli/src/api/catalog/getCatalogs.test.ts index 0a2128559..2012706e6 100644 --- a/packages/cli/src/api/catalog/getCatalogs.test.ts +++ b/packages/cli/src/api/catalog/getCatalogs.test.ts @@ -33,17 +33,19 @@ describe("getCatalogs", () => { }, ], }) - expect(getCatalogs(config)).toEqual([ - new Catalog( - { - name: null, - path: "src/locales/{locale}", - include: ["src/"], - exclude: [], - }, - config - ), - ]) + expect(cleanCatalog(getCatalogs(config)[0])).toEqual( + cleanCatalog( + new Catalog( + { + name: null, + path: "src/locales/{locale}", + include: ["src/"], + exclude: [], + }, + config + ) + ) + ) }) it("should have catalog name and ignore patterns", () => { @@ -56,17 +58,19 @@ describe("getCatalogs", () => { }, ], }) - expect(getCatalogs(config)).toEqual([ - new Catalog( - { - name: "all", - path: "src/locales/{locale}/all", - include: ["src/", "/absolute/path/"], - exclude: ["node_modules/"], - }, - config - ), - ]) + expect(cleanCatalog(getCatalogs(config)[0])).toEqual( + cleanCatalog( + new Catalog( + { + name: "all", + path: "src/locales/{locale}/all", + include: ["src/", "/absolute/path/"], + exclude: ["node_modules/"], + }, + config + ) + ) + ) }) it("should expand {name} for matching directories", () => { @@ -87,24 +91,31 @@ describe("getCatalogs", () => { }, ], }) - expect(getCatalogs(config)).toEqual([ - new Catalog( - { - name: "componentA", - path: "componentA/locales/{locale}", - include: ["componentA/"], - exclude: [], - }, - config + expect([ + cleanCatalog(getCatalogs(config)[0]), + cleanCatalog(getCatalogs(config)[1]), + ]).toEqual([ + cleanCatalog( + new Catalog( + { + name: "componentA", + path: "componentA/locales/{locale}", + include: ["componentA/"], + exclude: [], + }, + config + ) ), - new Catalog( - { - name: "componentB", - path: "componentB/locales/{locale}", - include: ["componentB/"], - exclude: [], - }, - config + cleanCatalog( + new Catalog( + { + name: "componentB", + path: "componentB/locales/{locale}", + include: ["componentB/"], + exclude: [], + }, + config + ) ), ]) }) @@ -124,17 +135,19 @@ describe("getCatalogs", () => { }, ], }) - expect(getCatalogs(config)).toEqual([ - new Catalog( - { - name: "componentA", - path: "componentA/locales/{locale}/componentA_messages_{locale}", - include: ["componentA/"], - exclude: [], - }, - config - ), - ]) + expect(cleanCatalog(getCatalogs(config)[0])).toEqual( + cleanCatalog( + new Catalog( + { + name: "componentA", + path: "componentA/locales/{locale}/componentA_messages_{locale}", + include: ["componentA/"], + exclude: [], + }, + config + ) + ) + ) }) it("shouldn't expand {name} for ignored directories", () => { @@ -156,17 +169,19 @@ describe("getCatalogs", () => { }, ], }) - expect(getCatalogs(config)).toEqual([ - new Catalog( - { - name: "componentA", - path: "componentA/locales/{locale}", - include: ["componentA/"], - exclude: ["componentB/"], - }, - config - ), - ]) + expect(cleanCatalog(getCatalogs(config)[0])).toEqual( + cleanCatalog( + new Catalog( + { + name: "componentA", + path: "componentA/locales/{locale}", + include: ["componentA/"], + exclude: ["componentB/"], + }, + config + ) + ) + ) }) it("should warn if catalogPath is a directory", () => { @@ -216,6 +231,12 @@ describe("getCatalogs", () => { }) }) +// remove non-serializable properties, which are not subject of a test +function cleanCatalog(catalog: Catalog) { + delete catalog.config + delete catalog.format + return catalog +} describe("getCatalogForMerge", () => { afterEach(() => { mockFs.restore() @@ -225,15 +246,17 @@ describe("getCatalogForMerge", () => { const config = mockConfig({ catalogsMergePath: "locales/{locale}", }) - expect(getCatalogForMerge(config)).toEqual( - new Catalog( - { - name: null, - path: "locales/{locale}", - include: [], - exclude: [], - }, - config + expect(cleanCatalog(getCatalogForMerge(config))).toEqual( + cleanCatalog( + new Catalog( + { + name: null, + path: "locales/{locale}", + include: [], + exclude: [], + }, + config + ) ) ) }) @@ -242,15 +265,17 @@ describe("getCatalogForMerge", () => { const config = mockConfig({ catalogsMergePath: "locales/{locale}/my/dir", }) - expect(getCatalogForMerge(config)).toEqual( - new Catalog( - { - name: "dir", - path: "locales/{locale}/my/dir", - include: [], - exclude: [], - }, - config + expect(cleanCatalog(getCatalogForMerge(config))).toStrictEqual( + cleanCatalog( + new Catalog( + { + name: "dir", + path: "locales/{locale}/my/dir", + include: [], + exclude: [], + }, + config + ) ) ) }) diff --git a/packages/cli/src/api/catalog/getCatalogs.ts b/packages/cli/src/api/catalog/getCatalogs.ts index cc7c3fa5c..3881268cb 100644 --- a/packages/cli/src/api/catalog/getCatalogs.ts +++ b/packages/cli/src/api/catalog/getCatalogs.ts @@ -114,7 +114,7 @@ export function getCatalogForMerge(config: LinguiConfigNormalized) { export function getCatalogForFile(file: string, catalogs: Catalog[]) { for (const catalog of catalogs) { - const catalogFile = `${catalog.path}${catalog.format.catalogExtension}` + const catalogFile = `${catalog.path}${catalog.format.getCatalogExtension()}` const catalogGlob = replacePlaceholders(catalogFile, { locale: "*" }) const match = micromatch.capture( normalizeRelativePath(path.relative(catalog.config.rootDir, catalogGlob)), @@ -139,7 +139,10 @@ function validateCatalogPath(path: string, config: LinguiConfigNormalized) { return } - const extension = getFormat(config.format).catalogExtension + const extension = getFormat( + config.format, + config.formatOptions + ).getCatalogExtension() const correctPath = path.slice(0, -1) const examplePath = replacePlaceholders(correctPath, { diff --git a/packages/cli/src/api/catalog/getTranslationsForCatalog.test.ts b/packages/cli/src/api/catalog/getTranslationsForCatalog.test.ts index 5731ecfec..5dac3ac18 100644 --- a/packages/cli/src/api/catalog/getTranslationsForCatalog.test.ts +++ b/packages/cli/src/api/catalog/getTranslationsForCatalog.test.ts @@ -7,11 +7,11 @@ function getCatalogStub( template: CatalogType = {} ): Catalog { const catalogStub: Partial = { - readAll(): AllCatalogsType { + async readAll(): Promise { return catalogs }, - readTemplate(): CatalogType { + async readTemplate(): Promise { return template }, } @@ -43,7 +43,7 @@ function message(id: string, source: string, noTranslation = false) { } describe("getTranslationsForCatalog", () => { - it("Should return translated catalog if all translation exists", () => { + it("Should return translated catalog if all translation exists", async () => { // prettier-ignore const catalogStub = getCatalogStub({ ...lang("pl", [ @@ -52,7 +52,7 @@ describe("getTranslationsForCatalog", () => { }) const missingSpy = jest.fn() - const actual = getTranslationsForCatalog(catalogStub, "pl", { + const actual = await getTranslationsForCatalog(catalogStub, "pl", { sourceLocale: "en", fallbackLocales: {}, onMissing: missingSpy, @@ -64,7 +64,7 @@ describe("getTranslationsForCatalog", () => { }) }) - it("Should fallback to fallbackLocales.default", () => { + it("Should fallback to fallbackLocales.default", async () => { // prettier-ignore const catalogStub = getCatalogStub({ ...lang("pl", [ @@ -78,7 +78,7 @@ describe("getTranslationsForCatalog", () => { }) const missingSpy = jest.fn() - const actual = getTranslationsForCatalog(catalogStub, "ru", { + const actual = await getTranslationsForCatalog(catalogStub, "ru", { sourceLocale: "en", fallbackLocales: { default: "pl", @@ -94,7 +94,7 @@ describe("getTranslationsForCatalog", () => { }) }) - it("Should fallback to single fallbackLocales", () => { + it("Should fallback to single fallbackLocales", async () => { // prettier-ignore const catalogStub = getCatalogStub({ ...lang("pl", [ @@ -108,7 +108,7 @@ describe("getTranslationsForCatalog", () => { }) const missingSpy = jest.fn() - const actual = getTranslationsForCatalog(catalogStub, "ru", { + const actual = await getTranslationsForCatalog(catalogStub, "ru", { sourceLocale: "en", fallbackLocales: { ru: "pl", @@ -124,7 +124,7 @@ describe("getTranslationsForCatalog", () => { }) }) - it("Should fallback to multiple fallbacks and then to default", () => { + it("Should fallback to multiple fallbacks and then to default", async () => { // prettier-ignore const catalogStub = getCatalogStub({ ...lang("pl", [ @@ -154,7 +154,7 @@ describe("getTranslationsForCatalog", () => { }) const missingSpy = jest.fn() - const actual = getTranslationsForCatalog(catalogStub, "ru", { + const actual = await getTranslationsForCatalog(catalogStub, "ru", { sourceLocale: "en", fallbackLocales: { ru: ["de", "es"], @@ -179,7 +179,7 @@ describe("getTranslationsForCatalog", () => { it( "Should fallback to source messages and don't call onMissing" + " when target locale == sourceLocale", - () => { + async () => { // prettier-ignore const catalogStub = getCatalogStub({ ...lang("en", [ @@ -189,7 +189,7 @@ describe("getTranslationsForCatalog", () => { }) const missingSpy = jest.fn() - const actual = getTranslationsForCatalog(catalogStub, "en", { + const actual = await getTranslationsForCatalog(catalogStub, "en", { sourceLocale: "en", fallbackLocales: {}, onMissing: missingSpy, @@ -203,7 +203,7 @@ describe("getTranslationsForCatalog", () => { } ) - it("Should fallback to source locale if no other fallbacks and report missing", () => { + it("Should fallback to source locale if no other fallbacks and report missing", async () => { // prettier-ignore const catalogStub = getCatalogStub({ ...lang("en", [ @@ -216,7 +216,7 @@ describe("getTranslationsForCatalog", () => { }) const missingSpy = jest.fn() - const actual = getTranslationsForCatalog(catalogStub, "pl", { + const actual = await getTranslationsForCatalog(catalogStub, "pl", { sourceLocale: "en", fallbackLocales: {}, onMissing: missingSpy, @@ -231,7 +231,7 @@ describe("getTranslationsForCatalog", () => { }) }) - it("Should add keys from source locale", () => { + it("Should add keys from source locale", async () => { // prettier-ignore const catalogStub = getCatalogStub({ ...lang("en", [ @@ -247,7 +247,7 @@ describe("getTranslationsForCatalog", () => { }) const missingSpy = jest.fn() - const actual = getTranslationsForCatalog(catalogStub, "pl", { + const actual = await getTranslationsForCatalog(catalogStub, "pl", { sourceLocale: "en", fallbackLocales: {}, onMissing: missingSpy, @@ -262,7 +262,7 @@ describe("getTranslationsForCatalog", () => { expect(missingSpy).toBeCalledTimes(2) }) - it("Should not fail if sourceLocale is not set", () => { + it("Should not fail if sourceLocale is not set", async () => { // prettier-ignore const catalogStub = getCatalogStub({ ...lang("en", [ @@ -278,7 +278,7 @@ describe("getTranslationsForCatalog", () => { }) const missingSpy = jest.fn() - const actual = getTranslationsForCatalog(catalogStub, "pl", { + const actual = await getTranslationsForCatalog(catalogStub, "pl", { sourceLocale: null, fallbackLocales: {}, onMissing: missingSpy, @@ -291,7 +291,7 @@ describe("getTranslationsForCatalog", () => { expect(missingSpy).toBeCalledTimes(0) }) - it("Should add keys from template", () => { + it("Should add keys from template", async () => { // prettier-ignore const catalogStub = getCatalogStub({ ...lang("pl", [ @@ -306,7 +306,7 @@ describe("getTranslationsForCatalog", () => { ]).tpl) const missingSpy = jest.fn() - const actual = getTranslationsForCatalog(catalogStub, "pl", { + const actual = await getTranslationsForCatalog(catalogStub, "pl", { sourceLocale: "en", fallbackLocales: {}, onMissing: missingSpy, @@ -321,14 +321,14 @@ describe("getTranslationsForCatalog", () => { expect(missingSpy).toBeCalledTimes(2) }) - it("Should not fail if catalog for requested locale does not exists", () => { + it("Should not fail if catalog for requested locale does not exists", async () => { // prettier-ignore const catalogStub = getCatalogStub({}, lang("tpl", [ message("hashid1", "Lorem", true), ]).tpl) const missingSpy = jest.fn() - const actual = getTranslationsForCatalog(catalogStub, "pl", { + const actual = await getTranslationsForCatalog(catalogStub, "pl", { sourceLocale: "en", fallbackLocales: {}, onMissing: missingSpy, diff --git a/packages/cli/src/api/catalog/getTranslationsForCatalog.ts b/packages/cli/src/api/catalog/getTranslationsForCatalog.ts index f26801a28..1a45af900 100644 --- a/packages/cli/src/api/catalog/getTranslationsForCatalog.ts +++ b/packages/cli/src/api/catalog/getTranslationsForCatalog.ts @@ -12,13 +12,13 @@ export type GetTranslationsOptions = { onMissing?: (message: TranslationMissingEvent) => void } -export function getTranslationsForCatalog( +export async function getTranslationsForCatalog( catalog: Catalog, locale: string, options: GetTranslationsOptions ) { - const catalogs = catalog.readAll() - const template = catalog.readTemplate() || {} + const catalogs = await catalog.readAll() + const template = (await catalog.readTemplate()) || {} const sourceLocaleCatalog = catalogs[options.sourceLocale] || {} diff --git a/packages/cli/src/api/formats/__snapshots__/lingui.test.ts.snap b/packages/cli/src/api/formats/__snapshots__/lingui.test.ts.snap index b682c66ac..34c1c2cf4 100644 --- a/packages/cli/src/api/formats/__snapshots__/lingui.test.ts.snap +++ b/packages/cli/src/api/formats/__snapshots__/lingui.test.ts.snap @@ -62,4 +62,5 @@ exports[`lingui format should write catalog in lingui format 1`] = ` "translation": "One morning, when Gregor Samsa woke from troubled dreams, he found himself transformed in his bed into a horrible vermin. He lay on his armour-like back, and if he lifted his head a little he could see his brown belly, slightly domed and divided by arches into stiff sections. The bedding was hardly able to cover it and seemed ready to slide off any moment. His many legs, pitifully thin compared with the size of the rest of him, waved about helplessly as he looked. \\"What's happened to me?\\" he thought. It wasn't a dream. His room, a proper human" } } + `; diff --git a/packages/cli/src/api/formats/__snapshots__/minimal.test.ts.snap b/packages/cli/src/api/formats/__snapshots__/minimal.test.ts.snap new file mode 100644 index 000000000..b46d3c7b0 --- /dev/null +++ b/packages/cli/src/api/formats/__snapshots__/minimal.test.ts.snap @@ -0,0 +1,60 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`minimal format should read catalog in minimal format 1`] = ` +{ + obsolete: { + message: null, + obsolete: false, + origin: [], + translation: Obsolete message, + }, + static: { + message: null, + obsolete: false, + origin: [], + translation: Static message, + }, + withComments: { + message: null, + obsolete: false, + origin: [], + translation: Support translator comments separately, + }, + withDescription: { + message: null, + obsolete: false, + origin: [], + translation: Message with description, + }, + withFlags: { + message: null, + obsolete: false, + origin: [], + translation: Keeps any flags that are defined, + }, + withMultipleOrigins: { + message: null, + obsolete: false, + origin: [], + translation: Message with multiple origin, + }, + withOrigin: { + message: null, + obsolete: false, + origin: [], + translation: Message with origin, + }, +} +`; + +exports[`minimal format should write catalog in minimal format 1`] = ` +{ + "static": "Static message", + "withOrigin": "Message with origin", + "withDescription": "Message with description", + "withComments": "Support translator comments separately", + "obsolete": "Obsolete message", + "withFlags": "Keeps any flags that are defined" +} + +`; diff --git a/packages/cli/src/api/formats/api/formatterWrapper.test.ts b/packages/cli/src/api/formats/api/formatterWrapper.test.ts new file mode 100644 index 000000000..671c35fdc --- /dev/null +++ b/packages/cli/src/api/formats/api/formatterWrapper.test.ts @@ -0,0 +1,199 @@ +import { FormatterWrapper } from "./formatterWrapper" +import mockFs from "mock-fs" +import fs from "fs" + +describe("FormatterWrapper", () => { + it("should return template and catalog extension", () => { + const wrapper = new FormatterWrapper({ + serialize: () => "", + parse: () => ({}), + catalogExtension: ".po", + templateExtension: ".pot", + }) + + expect(wrapper.getCatalogExtension()).toBe(".po") + expect(wrapper.getTemplateExtension()).toBe(".pot") + }) + it("should return catalog extension for templateExtension if not defined", () => { + const wrapper = new FormatterWrapper({ + serialize: () => "", + parse: () => ({}), + catalogExtension: ".po", + templateExtension: null, + }) + + expect(wrapper.getCatalogExtension()).toBe(".po") + expect(wrapper.getTemplateExtension()).toBe(".po") + }) + + describe("read", () => { + it("should not throw if file not exists", async () => { + const format = new FormatterWrapper({ + serialize: () => "", + parse: () => ({}), + catalogExtension: ".po", + templateExtension: ".pot", + }) + + mockFs({}) + + const actual = await format.read("locale/en/messages.json", "en") + mockFs.restore() + expect(actual).toBeNull() + }) + + it("should read file from FS and parse using provided formatter", async () => { + const parseMock = jest + .fn() + .mockImplementation((content: string) => content.split(",") as any) + const format = new FormatterWrapper({ + serialize: () => "", + parse: parseMock, + catalogExtension: ".po", + templateExtension: ".pot", + }) + + mockFs({ + "test.file": "red,green,blue", + }) + + const actual = await format.read("test.file", "en") + mockFs.restore() + expect(parseMock.mock.calls[0]).toMatchInlineSnapshot(` + [ + red,green,blue, + { + filename: test.file, + locale: en, + }, + ] + `) + expect(actual).toStrictEqual(["red", "green", "blue"]) + }) + + it("should rethrow error with filename if failed to parse file", async () => { + const format = new FormatterWrapper({ + serialize: () => "", + parse: () => { + throw new Error("Unable to parse") + }, + catalogExtension: ".po", + templateExtension: ".pot", + }) + + mockFs({ + "test.file": "blabla", + }) + + expect.assertions(1) + + await format.read("test.file", "en").catch((e) => { + expect(e.message).toContain("Cannot read test.file Unable to parse") + }) + + mockFs.restore() + }) + }) + + describe("write", () => { + it("should write to FS and serialize catalog using provided formatter", async () => { + const format = new FormatterWrapper({ + serialize: (catalog) => JSON.stringify(catalog), + parse: () => ({}), + catalogExtension: ".po", + templateExtension: ".pot", + }) + + mockFs({}) + + const catalog = { + static: { + translation: "Static message", + }, + } + + const filename = "locale/en/messages.json" + await format.write(filename, catalog, "en") + const content = fs.readFileSync(filename).toString() + mockFs.restore() + expect(content).toMatchInlineSnapshot( + `{"static":{"translation":"Static message"}}` + ) + }) + + it("should pass context to the formatter", async () => { + const serializeMock = jest + .fn() + .mockImplementation((catalog) => JSON.stringify(catalog)) + + const format = new FormatterWrapper({ + serialize: serializeMock, + parse: () => ({}), + catalogExtension: ".po", + templateExtension: ".pot", + }) + + mockFs({ + "messages.json": `{"existing":{"translation":"Existing message"}}`, + }) + + const catalog = { + static: { + translation: "Static message", + }, + } + + const filename = "messages.json" + await format.write(filename, catalog, "en") + const content = fs.readFileSync(filename).toString() + mockFs.restore() + + expect(serializeMock.mock.calls[0]).toMatchInlineSnapshot(` + [ + { + static: { + translation: Static message, + }, + }, + { + existing: {"existing":{"translation":"Existing message"}}, + filename: messages.json, + locale: en, + }, + ] + `) + expect(content).toMatchInlineSnapshot( + `{"static":{"translation":"Static message"}}` + ) + }) + + it("should write only if file was changed", async () => { + const format = new FormatterWrapper({ + serialize: (catalog) => JSON.stringify(catalog), + parse: () => ({}), + catalogExtension: ".po", + templateExtension: ".pot", + }) + + const catalog = { + static: { + translation: "Static message", + }, + } + + mockFs({ + "messages.json": JSON.stringify(catalog), + }) + + const filename = "messages.json" + const origStat = fs.statSync(filename) + + await format.write(filename, catalog, "en") + const afterWriteStat = fs.statSync(filename) + + mockFs.restore() + + expect(origStat.mtime).toStrictEqual(afterWriteStat.mtime) + }) + }) +}) diff --git a/packages/cli/src/api/formats/api/formatterWrapper.ts b/packages/cli/src/api/formats/api/formatterWrapper.ts new file mode 100644 index 000000000..8d27acc9e --- /dev/null +++ b/packages/cli/src/api/formats/api/formatterWrapper.ts @@ -0,0 +1,46 @@ +import { CatalogFormatter, CatalogType } from "@lingui/conf" +import { readFile, writeFileIfChanged } from "../../utils" +import { RethrownError } from "../../rethrownError" + +export class FormatterWrapper { + constructor(private f: CatalogFormatter) {} + + getCatalogExtension() { + return this.f.catalogExtension + } + + getTemplateExtension() { + return this.f.templateExtension || this.f.catalogExtension + } + + async write( + filename: string, + catalog: CatalogType, + locale: string + ): Promise { + const content = await this.f.serialize(catalog, { + locale, + existing: await readFile(filename), + filename, + }) + + await writeFileIfChanged(filename, content) + } + + async read(filename: string, locale: string): Promise { + const content = await readFile(filename) + + if (!content) { + return null + } + + try { + return this.f.parse(content, { + locale, + filename, + }) + } catch (e) { + throw new RethrownError(`Cannot read ${filename}`, e as Error) + } + } +} diff --git a/packages/cli/src/api/formats/csv.test.ts b/packages/cli/src/api/formats/csv.test.ts index 8483208ff..a269d4769 100644 --- a/packages/cli/src/api/formats/csv.test.ts +++ b/packages/cli/src/api/formats/csv.test.ts @@ -1,21 +1,12 @@ import fs from "fs" import path from "path" -import mockFs from "mock-fs" -import format from "./csv" +import createFormatter from "./csv" -describe("csv format", function () { - afterEach(() => { - mockFs.restore() - }) +describe("csv format", () => { + const format = createFormatter() - it("should write catalog in csv format", function () { - mockFs({ - locale: { - en: mockFs.directory(), - }, - }) - const filename = path.join("locale", "en", "messages.csv") + it("should write catalog in csv format", async () => { const catalog = { static: { translation: "Static message", @@ -28,79 +19,16 @@ describe("csv format", function () { }, } - format.write(filename, catalog) - const csv = fs.readFileSync(filename).toString() - mockFs.restore() + const csv = await format.serialize(catalog, {} as any) expect(csv).toMatchSnapshot() }) - it("should not throw if directory not exists", function () { - mockFs({}) - const filename = path.join("locale", "en", "messages.csv") - const catalog = { - static: { - translation: "Static message", - }, - } - - format.write(filename, catalog) - const content = fs.readFileSync(filename).toString() - mockFs.restore() - expect(content).toBeTruthy() - }) - - it("should read catalog in csv format", function () { + it("should read catalog in csv format", async () => { const csv = fs - .readFileSync( - path.join(path.resolve(__dirname), "fixtures", "messages.csv") - ) + .readFileSync(path.join(__dirname, "fixtures/messages.csv")) .toString() - mockFs({ - locale: { - en: { - "messages.csv": csv, - }, - }, - }) - - const filename = path.join("locale", "en", "messages.csv") - const actual = format.read(filename) - mockFs.restore() + const actual = await format.parse(csv, {} as any) expect(actual).toMatchSnapshot() }) - - it("should not throw if file not exists", () => { - mockFs({}) - - const filename = path.join("locale", "en", "messages.csv") - const actual = format.read(filename) - mockFs.restore() - expect(actual).toBeNull() - }) - - it("should write the same catalog as it was read", function () { - const csv = fs - .readFileSync( - path.join(path.resolve(__dirname), "fixtures", "messages.csv") - ) - .toString() - - mockFs({ - locale: { - en: { - "messages.csv": csv, - }, - }, - }) - - const filename = path.join("locale", "en", "messages.csv") - const catalog = format.read(filename) - format.write(filename, catalog) - const actual = fs.readFileSync(filename).toString() - mockFs.restore() - expect(actual.replace(/(\r\n|\n|\r)/gm, "")).toEqual( - csv.replace(/(\r\n|\n|\r)/gm, "") - ) - }) }) diff --git a/packages/cli/src/api/formats/csv.ts b/packages/cli/src/api/formats/csv.ts index a5d8dc263..8c557e188 100644 --- a/packages/cli/src/api/formats/csv.ts +++ b/packages/cli/src/api/formats/csv.ts @@ -1,8 +1,6 @@ import Papa from "papaparse" -import { readFile, writeFileIfChanged } from "../utils" -import type { CatalogFormatter } from "." -import { CatalogType, MessageType } from "../types" +import type { CatalogFormatter, CatalogType, MessageType } from "@lingui/conf" const serialize = (catalog: CatalogType) => { const rawArr = Object.keys(catalog).map((key) => [ @@ -31,31 +29,16 @@ const deserialize = (raw: string): { [key: string]: MessageType } => { return messages } -const csv: CatalogFormatter = { - catalogExtension: ".csv", +export default function (): CatalogFormatter { + return { + catalogExtension: ".csv", - write(filename, catalog) { - const messages = serialize(catalog) - writeFileIfChanged(filename, messages) - }, + parse(content: string): CatalogType { + return deserialize(content) + }, - read(filename) { - const raw = readFile(filename) - - if (!raw) { - return null - } - - try { - return deserialize(raw) - } catch (e) { - throw new Error(`Cannot read ${filename}: ${(e as Error).message}`) - } - }, - - parse(content: string) { - return deserialize(content) - }, + serialize(catalog) { + return serialize(catalog) + }, + } } - -export default csv diff --git a/packages/cli/src/api/formats/index.ts b/packages/cli/src/api/formats/index.ts index 2a48d2cc0..a7215e917 100644 --- a/packages/cli/src/api/formats/index.ts +++ b/packages/cli/src/api/formats/index.ts @@ -1,53 +1,37 @@ -import { CatalogFormat, CatalogFormatOptions } from "@lingui/conf" +import type { CatalogFormat, CatalogFormatter } from "@lingui/conf" +import { CatalogFormatOptions } from "@lingui/conf" +import { FormatterWrapper } from "./api/formatterWrapper" -import { CatalogType } from "../types" -import csv from "./csv" -import lingui from "./lingui" -import minimal from "./minimal" -import po from "./po" -import poGettext from "./po-gettext" - -const formats: Record = { - lingui, - minimal, - po, - csv, - "po-gettext": poGettext, +const formats: Record< + CatalogFormat, + () => (options: CatalogFormatOptions) => CatalogFormatter +> = { + lingui: () => require("./lingui").default, + minimal: () => require("./minimal").default, + po: () => require("./po").default, + csv: () => require("./csv").default, + "po-gettext": () => require("./po-gettext").default, } -/** - * @internal - */ -export type CatalogFormatOptionsInternal = { - locale?: string -} & CatalogFormatOptions +export { FormatterWrapper } -export type CatalogFormatter = { - catalogExtension: string - /** - * Set extension used when extract to template - * Omit if the extension is the same as catalogExtension - */ - templateExtension?: string - write( - filename: string, - catalog: CatalogType, - options?: CatalogFormatOptionsInternal - ): void - read(filename: string): CatalogType | null - parse(content: unknown): CatalogType | null -} +export function getFormat( + _format: CatalogFormat | CatalogFormatter, + options: CatalogFormatOptions +): FormatterWrapper { + if (typeof _format !== "string") { + return new FormatterWrapper(_format) + } -export function getFormat(name: CatalogFormat): CatalogFormatter { - const format = formats[name] + const format = formats[_format] if (!format) { throw new Error( - `Unknown format "${name}". Use one of following: ${Object.keys( + `Unknown format "${_format}". Use one of following: ${Object.keys( formats ).join(", ")}` ) } - return format + return new FormatterWrapper(format()(options)) } diff --git a/packages/cli/src/api/formats/lingui.test.ts b/packages/cli/src/api/formats/lingui.test.ts index 16b3bfb3d..15e9026fc 100644 --- a/packages/cli/src/api/formats/lingui.test.ts +++ b/packages/cli/src/api/formats/lingui.test.ts @@ -1,24 +1,12 @@ import fs from "fs" import path from "path" -import mockFs from "mock-fs" -import mockDate from "mockdate" -import format from "./lingui" +import createFormat from "./lingui" import { CatalogType } from "../types" describe("lingui format", () => { - afterEach(() => { - mockFs.restore() - mockDate.reset() - }) - - it("should write catalog in lingui format", () => { - mockFs({ - locale: { - en: mockFs.directory(), - }, - }) - mockDate.set("2018-08-27T10:00Z") + it("should write catalog in lingui format", async () => { + const format = createFormat({ origins: true }) const filename = path.join("locale", "en", "messages.json") const catalog: CatalogType = { @@ -67,63 +55,28 @@ describe("lingui format", () => { }, } - format.write(filename, catalog, { origins: true, locale: "en" }) - const lingui = fs.readFileSync(filename).toString() - mockFs.restore() - expect(lingui).toMatchSnapshot() - }) - - it("should not throw if directory not exists", () => { - mockFs({}) - const filename = path.join("locale", "en", "messages.json") - const catalog = { - static: { - translation: "Static message", - }, - } - - format.write(filename, catalog, {}) - const content = fs.readFileSync(filename).toString() - mockFs.restore() - expect(content).toBeTruthy() + const actual = await format.serialize(catalog, { + locale: "en", + filename, + existing: null, + }) + expect(actual).toMatchSnapshot() }) it("should read catalog in lingui format", () => { + const format = createFormat() + const lingui = fs - .readFileSync( - path.join(path.resolve(__dirname), "fixtures", "messages.json") - ) + .readFileSync(path.join(__dirname, "fixtures/messages.json")) .toString() - mockFs({ - locale: { - en: { - "messages.json": lingui, - }, - }, - }) - const filename = path.join("locale", "en", "messages.json") - const actual = format.read(filename) - mockFs.restore() + const actual = format.parse(lingui, { locale: "en", filename }) expect(actual).toMatchSnapshot() }) - it("should not throw if file not exists", () => { - mockFs({}) - - const filename = path.join("locale", "en", "messages.json") - const actual = format.read(filename) - mockFs.restore() - expect(actual).toBeNull() - }) - - it("should not include origins if origins option is false", () => { - mockFs({ - locale: { - en: mockFs.directory(), - }, - }) + it("should not include origins if origins option is false", async () => { + const format = createFormat({ origins: false }) const filename = path.join("locale", "en", "messages.json") const catalog: CatalogType = { @@ -142,19 +95,18 @@ describe("lingui format", () => { ], }, } - format.write(filename, catalog, { origins: false, locale: "en" }) - const lingui = fs.readFileSync(filename).toString() - mockFs.restore() + + const actual = await format.serialize(catalog, { + locale: "en", + filename, + existing: null, + }) const linguiOriginProperty = '"origin"' - expect(lingui).toEqual(expect.not.stringContaining(linguiOriginProperty)) + expect(actual).toEqual(expect.not.stringContaining(linguiOriginProperty)) }) - it("should not include lineNumbers if lineNumbers option is false", () => { - mockFs({ - locale: { - en: mockFs.directory(), - }, - }) + it("should not include lineNumbers if lineNumbers option is false", async () => { + const format = createFormat({ lineNumbers: false }) const filename = path.join("locale", "en", "messages.json") const catalog: CatalogType = { @@ -173,10 +125,12 @@ describe("lingui format", () => { ], }, } - format.write(filename, catalog, { lineNumbers: false, locale: "en" }) - const lingui = fs.readFileSync(filename).toString() - mockFs.restore() - expect(lingui).toMatchInlineSnapshot(` + const actual = await format.serialize(catalog, { + locale: "en", + filename, + existing: null, + }) + expect(actual).toMatchInlineSnapshot(` { "static": { "translation": "Static message" @@ -201,6 +155,7 @@ describe("lingui format", () => { ] } } + `) }) }) diff --git a/packages/cli/src/api/formats/lingui.ts b/packages/cli/src/api/formats/lingui.ts index e2cc429cd..9999c8a7e 100644 --- a/packages/cli/src/api/formats/lingui.ts +++ b/packages/cli/src/api/formats/lingui.ts @@ -1,8 +1,15 @@ import * as R from "ramda" -import { readFile, writeFileIfChanged } from "../utils" -import { CatalogType, ExtractedMessageType } from "../types" -import { CatalogFormatter } from "." +import { + CatalogFormatter, + CatalogType, + ExtractedMessageType, +} from "@lingui/conf" + +export type LinguiFormatterOptions = { + origins?: boolean + lineNumbers?: boolean +} type NoOriginsCatalogType = { [P in keyof CatalogType]: Omit @@ -14,45 +21,41 @@ const removeOrigins = R.map(({ origin, ...message }) => message) as unknown as ( const removeLineNumbers = R.map((message: ExtractedMessageType) => { if (message.origin) { - message.origin.map((originValue) => { - originValue.pop() - return originValue - }) + message.origin = message.origin.map(([file]) => [file]) } return message }) as unknown as (catalog: ExtractedMessageType) => NoOriginsCatalogType -const lingui: CatalogFormatter = { - catalogExtension: ".json", - - write(filename, catalog, options) { - let outputCatalog: CatalogType | NoOriginsCatalogType = catalog - if (options.origins === false) { - outputCatalog = removeOrigins(catalog) - } - if (options.origins !== false && options.lineNumbers === false) { - outputCatalog = removeLineNumbers(outputCatalog) - } - writeFileIfChanged(filename, JSON.stringify(outputCatalog, null, 2)) - }, - - read(filename) { - const raw = readFile(filename) - - if (!raw) { - return null - } - - try { - return JSON.parse(raw) - } catch (e) { - throw new Error(`Cannot read ${filename}: ${(e as Error).message}`) - } - }, - - parse(content) { - return content as CatalogType - }, -} +export default function ( + options: LinguiFormatterOptions = {} +): CatalogFormatter { + options = { + origins: true, + lineNumbers: true, + ...options, + } + return { + catalogExtension: ".json", + + serialize(catalog, { existing }) { + let outputCatalog: CatalogType | NoOriginsCatalogType = catalog + + if (options.origins === false) { + outputCatalog = removeOrigins(outputCatalog) + } + if (options.origins !== false && options.lineNumbers === false) { + outputCatalog = removeLineNumbers(outputCatalog) + } -export default lingui + const shouldUseTrailingNewline = + existing === null || existing?.endsWith("\n") + const trailingNewLine = shouldUseTrailingNewline ? "\n" : "" + + return JSON.stringify(outputCatalog, null, 2) + trailingNewLine + }, + + parse(content) { + return JSON.parse(content) + }, + } +} diff --git a/packages/cli/src/api/formats/minimal.test.ts b/packages/cli/src/api/formats/minimal.test.ts new file mode 100644 index 000000000..ddaaf0be7 --- /dev/null +++ b/packages/cli/src/api/formats/minimal.test.ts @@ -0,0 +1,64 @@ +import path from "path" + +import createFormat from "./minimal" +import { CatalogType } from "../types" + +describe("minimal format", () => { + it("should write catalog in minimal format", async () => { + const format = createFormat() + + const filename = path.join("locale", "en", "messages.json") + const catalog: CatalogType = { + static: { + translation: "Static message", + }, + withOrigin: { + translation: "Message with origin", + origin: [["src/App.js", 4]], + }, + withDescription: { + translation: "Message with description", + extractedComments: [ + "Description is comment from developers to translators", + ], + }, + withComments: { + comments: ["Translator comment", "This one might come from developer"], + translation: "Support translator comments separately", + }, + obsolete: { + translation: "Obsolete message", + obsolete: true, + }, + withFlags: { + flags: ["fuzzy", "otherFlag"], + translation: "Keeps any flags that are defined", + }, + } + + const actual = await format.serialize(catalog, { + locale: "en", + filename, + existing: null, + }) + expect(actual).toMatchSnapshot() + }) + + it("should read catalog in minimal format", () => { + const format = createFormat() + + const content = `{ + "static": "Static message", + "withOrigin": "Message with origin", + "withMultipleOrigins": "Message with multiple origin", + "withDescription": "Message with description", + "withComments": "Support translator comments separately", + "obsolete": "Obsolete message", + "withFlags": "Keeps any flags that are defined" +}` + + const filename = path.join("locale", "en", "messages.json") + const actual = format.parse(content, { locale: "en", filename }) + expect(actual).toMatchSnapshot() + }) +}) diff --git a/packages/cli/src/api/formats/minimal.ts b/packages/cli/src/api/formats/minimal.ts index f640c69e5..48d747948 100644 --- a/packages/cli/src/api/formats/minimal.ts +++ b/packages/cli/src/api/formats/minimal.ts @@ -1,8 +1,6 @@ import * as R from "ramda" -import { CatalogFormatter } from "." -import type { CatalogType, MessageType } from "../types" -import { readFile, writeFile } from "../utils" +import type { CatalogFormatter, CatalogType, MessageType } from "@lingui/conf" type MinimalCatalogType = Record @@ -17,39 +15,20 @@ const deserialize = R.map((translation: string) => ({ origin: [], })) as unknown as (minimalCatalog: MinimalCatalogType) => CatalogType -const minimal: CatalogFormatter = { - catalogExtension: ".json", - - write(filename, catalog) { - const messages = serialize(catalog) - let file = readFile(filename) - - const shouldUseTrailingNewline = file === null || file?.endsWith("\n") - const trailingNewLine = shouldUseTrailingNewline ? "\n" : "" - writeFile( - filename, - `${JSON.stringify(messages, null, 2)}${trailingNewLine}` - ) - }, - - read(filename) { - const raw = readFile(filename) - - if (!raw) { - return null - } - - try { - const rawCatalog: Record = JSON.parse(raw) - return deserialize(rawCatalog) - } catch (e) { - throw new Error(`Cannot read ${filename}: ${(e as Error).message}`) - } - }, - - parse(content: Record) { - return deserialize(content) - }, -} +export default function (): CatalogFormatter { + return { + catalogExtension: ".json", + + serialize(catalog: CatalogType, { existing }) { + const shouldUseTrailingNewline = + existing === null || existing?.endsWith("\n") + const trailingNewLine = shouldUseTrailingNewline ? "\n" : "" -export default minimal + return JSON.stringify(serialize(catalog), null, 2) + trailingNewLine + }, + + parse(content) { + return deserialize(JSON.parse(content)) + }, + } +} diff --git a/packages/cli/src/api/formats/po-gettext.test.ts b/packages/cli/src/api/formats/po-gettext.test.ts index 9d607e608..45921ccd3 100644 --- a/packages/cli/src/api/formats/po-gettext.test.ts +++ b/packages/cli/src/api/formats/po-gettext.test.ts @@ -1,53 +1,21 @@ import { mockConsole } from "@lingui/jest-mocks" import fs from "fs" -import mockFs from "mock-fs" import mockDate from "mockdate" import path from "path" import { CatalogType } from "../types" -import format, { serialize } from "./po-gettext" +import createFormat, { serialize, parse } from "./po-gettext" describe("po-gettext format", () => { afterEach(() => { - mockFs.restore() mockDate.reset() }) - it("should not throw if directory not exists", function () { - mockFs({}) - const filename = path.join("locale", "en", "messages.po") - const catalog = { - static: { - message: "Static message", - translation: "Static message", - }, - } - - format.write(filename, catalog, { locale: "en" }) - const content = fs.readFileSync(filename).toString() - mockFs.restore() - expect(content).toBeTruthy() - }) - - it("should not throw if file not exists", () => { - mockFs({}) - - const filename = path.join("locale", "en", "messages.po") - const actual = format.read(filename) - mockFs.restore() - expect(actual).toBeNull() - }) + it("should convert ICU plural messages to gettext plurals", () => { + const format = createFormat() - it("should convert ICU plural messages to gettext plurals", function () { - mockFs({ - locale: { - en: mockFs.directory(), - }, - }) mockDate.set("2018-08-27T10:00Z") - const filename = path.join("locale", "en", "messages.po") - const catalog: CatalogType = { message_with_id_and_octothorpe: { message: "{count, plural, one {Singular} other {Number is #}}", @@ -83,22 +51,20 @@ describe("po-gettext format", () => { }, } - format.write(filename, catalog, { + const pofile = format.serialize(catalog, { locale: "en", + existing: null, }) - const pofile = fs.readFileSync(filename).toString() - mockFs.restore() + expect(pofile).toMatchSnapshot() }) - it("should convert gettext plurals to ICU plural messages", function () { + it("should convert gettext plurals to ICU plural messages", () => { const pofile = fs - .readFileSync( - path.join(path.resolve(__dirname), "fixtures", "messages_plural.po") - ) + .readFileSync(path.join(__dirname, "fixtures/messages_plural.po")) .toString() - const catalog = format.parse(pofile) + const catalog = parse(pofile) expect(catalog).toMatchSnapshot() }) @@ -153,7 +119,7 @@ msgstr[1] "# dny" msgstr[2] "# dní" ` - const parsed = format.parse(po) + const parsed = parse(po) expect(parsed).toEqual({ Y8Xw2Y: { @@ -229,15 +195,11 @@ msgstr[2] "# dní" it("convertPluralsToIco handle correctly locales with 4-letter", () => { const pofile = fs .readFileSync( - path.join( - path.resolve(__dirname), - "fixtures", - "messages_plural-4-letter.po" - ) + path.join(__dirname, "fixtures/messages_plural-4-letter.po") ) .toString() - const catalog = format.parse(pofile) + const catalog = parse(pofile) expect(catalog).toMatchSnapshot() }) }) diff --git a/packages/cli/src/api/formats/po-gettext.ts b/packages/cli/src/api/formats/po-gettext.ts index 988b6e510..138ee5c50 100644 --- a/packages/cli/src/api/formats/po-gettext.ts +++ b/packages/cli/src/api/formats/po-gettext.ts @@ -6,21 +6,25 @@ import PO from "pofile" import gettextPlurals from "node-gettext/lib/plurals" import { CatalogType, MessageType } from "../types" -import { readFile, writeFileIfChanged } from "../utils" -import type { CatalogFormatOptionsInternal, CatalogFormatter } from "./" +import type { CatalogFormatter } from "@lingui/conf" import { deserialize, serialize as serializePo } from "./po" -// Workaround because pofile doesn't support es6 modules, see https://github.com/rubenv/pofile/pull/38#issuecomment-623119284 type POItem = InstanceType -function getCreateHeaders(language = "no"): PO["headers"] { +export type PoGettextFormatterOptions = { + origins?: boolean + lineNumbers?: boolean + disableSelectWarning?: boolean +} + +function getCreateHeaders(language: string): PO["headers"] { return { "POT-Creation-Date": formatDate(new Date(), "yyyy-MM-dd HH:mmxxxx"), "MIME-Version": "1.0", "Content-Type": "text/plain; charset=utf-8", "Content-Transfer-Encoding": "8bit", "X-Generator": "@lingui/cli", - Language: language, + ...(language ? { Language: language } : {}), } } @@ -56,7 +60,7 @@ function serializePlurals( message: MessageType, id: string, isGeneratedId: boolean, - options: CatalogFormatOptionsInternal + options: PoGettextFormatterOptions ): POItem { // Depending on whether custom ids are used by the developer, the (potential plural) "original", untranslated ICU // message can be found in `message.message` or in the item's `key` itself. @@ -149,7 +153,7 @@ function serializePlurals( export const serialize = ( catalog: CatalogType, - options: CatalogFormatOptionsInternal + options: PoGettextFormatterOptions ) => { return serializePo(catalog, options, (item, message, id, isGeneratedId) => serializePlurals(item, message, id, isGeneratedId, options) @@ -256,50 +260,50 @@ const convertPluralsToICU = ( item.msgstr = ["{" + pluralizeOn + ", plural, " + pluralClauses + "}"] } -const poGettext: CatalogFormatter = { - catalogExtension: ".po", - templateExtension: ".pot", - - write(filename, catalog: CatalogType, options) { - let po: PO - - const raw = readFile(filename) - if (raw) { - po = PO.parse(raw) - } else { - po = new PO() - po.headers = getCreateHeaders(options.locale) - if (options.locale === undefined) { - delete po.headers.Language - } - // accessing private property - ;(po as any).headerOrder = Object.keys(po.headers) - } - po.items = serialize(catalog, options) - writeFileIfChanged(filename, po.toString()) - }, - - read(filename) { - const raw = readFile(filename) - if (!raw) { - return null - } +export function parse(raw: string) { + const po = PO.parse(raw) - return this.parse(raw) - }, + // .po plurals are numbered 0-N and need to be mapped to ICU plural classes ("one", "few", "many"...). Different + // languages can have different plural classes (some start with "zero", some with "one"), so read that data from CLDR. + // `pluralForms` may be `null` if lang is not found. As long as no plural is used, don't report an error. + let pluralForms = getPluralCases(po.headers.Language) - parse(raw: string) { - const po = PO.parse(raw) + return deserialize(po.items, (item) => { + convertPluralsToICU(item, pluralForms, po.headers.Language) + }) +} - // .po plurals are numbered 0-N and need to be mapped to ICU plural classes ("one", "few", "many"...). Different - // languages can have different plural classes (some start with "zero", some with "one"), so read that data from CLDR. - // `pluralForms` may be `null` if lang is not found. As long as no plural is used, don't report an error. - let pluralForms = getPluralCases(po.headers.Language) +export default function (options: PoGettextFormatterOptions = {}) { + options = { + origins: true, + lineNumbers: true, + ...options, + } - return deserialize(po.items, (item) => { - convertPluralsToICU(item, pluralForms, po.headers.Language) - }) - }, -} + return { + catalogExtension: ".po", + templateExtension: ".pot", + + parse(content): CatalogType { + return parse(content) + }, + + serialize( + catalog: CatalogType, + ctx: { locale: string; existing: string } + ): string { + let po: PO -export default poGettext + if (ctx.existing) { + po = PO.parse(ctx.existing) + } else { + po = new PO() + po.headers = getCreateHeaders(ctx.locale) + // accessing private property + ;(po as any).headerOrder = Object.keys(po.headers) + } + po.items = serialize(catalog, options) + return po.toString() + }, + } satisfies CatalogFormatter +} diff --git a/packages/cli/src/api/formats/po.test.ts b/packages/cli/src/api/formats/po.test.ts index 033f7d5b5..fd2d1ab3b 100644 --- a/packages/cli/src/api/formats/po.test.ts +++ b/packages/cli/src/api/formats/po.test.ts @@ -1,29 +1,21 @@ import fs from "fs" import path from "path" -import mockFs from "mock-fs" import mockDate from "mockdate" -import PO from "pofile" import { mockConsole } from "@lingui/jest-mocks" -import format from "./po" +import createFormatter from "./po" import { CatalogType } from "../types" -import { normalizeLineEndings } from "../../tests" describe("pofile format", () => { afterEach(() => { - mockFs.restore() mockDate.reset() }) it("should write catalog in pofile format", () => { - mockFs({ - locale: { - en: mockFs.directory(), - }, - }) - mockDate.set(new Date(2018, 7, 27, 10, 0, 0).toUTCString()) + const format = createFormatter({ origins: true }) + + mockDate.set("2018-08-27T10:00Z") - const filename = path.join("locale", "en", "messages.po") const catalog: CatalogType = { static: { translation: "Static message", @@ -79,63 +71,26 @@ describe("pofile format", () => { }, } - format.write(filename, catalog, { origins: true, locale: "en" }) - const pofile = fs.readFileSync(filename).toString() - mockFs.restore() + const pofile = format.serialize(catalog, { + locale: "en", + existing: null, + }) expect(pofile).toMatchSnapshot() }) - it("should not throw if directory not exists", function () { - mockFs({}) - const filename = path.join("locale", "en", "messages.po") - const catalog = { - static: { - translation: "Static message", - }, - } - - format.write(filename, catalog, {}) - const content = fs.readFileSync(filename).toString() - mockFs.restore() - expect(content).toBeTruthy() - }) - it("should read catalog in pofile format", () => { + const format = createFormatter() + const pofile = fs - .readFileSync( - path.join(path.resolve(__dirname), "fixtures", "messages.po") - ) + .readFileSync(path.join(__dirname, "fixtures/messages.po")) .toString() - mockFs({ - locale: { - en: { - "messages.po": pofile, - }, - }, - }) - - const filename = path.join("locale", "en", "messages.po") - const actual = format.read(filename) - mockFs.restore() + const actual = format.parse(pofile) expect(actual).toMatchSnapshot() }) - it("should not throw if file not exists", () => { - mockFs({}) - - const filename = path.join("locale", "en", "messages.po") - const actual = format.read(filename) - mockFs.restore() - expect(actual).toBeNull() - }) - it("should serialize and deserialize messages with generated id", () => { - mockFs({ - locale: { - en: mockFs.directory(), - }, - }) + const format = createFormatter({ origins: true }) const catalog: CatalogType = { // with generated id @@ -146,16 +101,19 @@ describe("pofile format", () => { }, } - const filename = path.join("locale", "en", "messages.po") - format.write(filename, catalog, { origins: true, locale: "en" }) + const serialized = format.serialize(catalog, { + locale: "en", + existing: null, + }) - const actual = format.read(filename) - mockFs.restore() + const actual = format.parse(serialized) expect(actual).toMatchObject(catalog) }) it("should correct badly used comments", () => { - const po = PO.parse(` + const format = createFormatter() + + const po = ` #. First description #. Second comment #. Third comment @@ -169,83 +127,36 @@ describe("pofile format", () => { #, explicit-id msgid "withDescriptionAndComments" msgstr "Second description joins translator comments" - `) - - mockFs({ - locale: { - en: { - "messages.po": po.toString(), - }, - }, - }) + ` - const filename = path.join("locale", "en", "messages.po") - const actual = format.read(filename) - mockFs.restore() + const actual = format.parse(po) expect(actual).toMatchSnapshot() }) it("should throw away additional msgstr if present", () => { - const po = PO.parse(` + const format = createFormatter() + + const po = ` #, explicit-id msgid "withMultipleTranslation" msgstr[0] "This is just fine" msgstr[1] "Throw away that one" - `) - - mockFs({ - locale: { - en: { - "messages.po": po.toString(), - }, - }, - }) + ` - const filename = path.join("locale", "en", "messages.po") mockConsole((console) => { - const actual = format.read(filename) + const actual = format.parse(po) expect(console.warn).toHaveBeenCalledWith( expect.stringContaining( "Multiple translations for item with key withMultipleTranslation is not supported and it will be ignored." ) ) - mockFs.restore() expect(actual).toMatchSnapshot() }) }) - it("should write the same catalog as it was read", () => { - const pofile = fs - .readFileSync( - path.join(path.resolve(__dirname), "fixtures", "messages.po") - ) - .toString() - - mockFs({ - locale: { - en: { - "messages.po": pofile, - }, - }, - }) - - const filename = path.join("locale", "en", "messages.po") - const catalog = format.read(filename) - format.write(filename, catalog, { origins: true, locale: "en" }) - const actual = fs.readFileSync(filename).toString() - mockFs.restore() - - expect(normalizeLineEndings(actual)).toEqual(normalizeLineEndings(pofile)) - }) - it("should not include origins if origins option is false", () => { - mockFs({ - locale: { - en: mockFs.directory(), - }, - }) + const format = createFormatter({ origins: false }) - const filename = path.join("locale", "en", "messages.po") const catalog: CatalogType = { static: { translation: "Static message", @@ -262,23 +173,17 @@ describe("pofile format", () => { ], }, } - format.write(filename, catalog, { origins: false, locale: "en" }) - const pofile = fs.readFileSync(filename).toString() - mockFs.restore() + + const actual = format.serialize(catalog, { locale: "en", existing: null }) const pofileOriginPrefix = "#:" - expect(pofile).toEqual(expect.not.stringContaining(pofileOriginPrefix)) + expect(actual).toEqual(expect.not.stringContaining(pofileOriginPrefix)) }) it("should not include lineNumbers if lineNumbers option is false", () => { - mockDate.set(new Date(2018, 7, 27, 10, 0, 0).toUTCString()) + const format = createFormatter({ origins: true, lineNumbers: false }) - mockFs({ - locale: { - en: mockFs.directory(), - }, - }) + mockDate.set(new Date(2018, 7, 27, 10, 0, 0).toUTCString()) - const filename = path.join("locale", "en", "messages.po") const catalog: CatalogType = { static: { translation: "Static message", @@ -295,14 +200,12 @@ describe("pofile format", () => { ], }, } - format.write(filename, catalog, { - origins: true, - lineNumbers: false, + const actual = format.serialize(catalog, { locale: "en", + existing: null, }) - const pofile = fs.readFileSync(filename).toString() - mockFs.restore() - expect(pofile).toMatchInlineSnapshot(` + + expect(actual).toMatchInlineSnapshot(` msgid "" msgstr "" "POT-Creation-Date: 2018-08-27 10:00+0000\\n" @@ -331,15 +234,10 @@ describe("pofile format", () => { }) it("should not include lineNumbers if lineNumbers option is false and already excluded", () => { - mockDate.set(new Date(2018, 7, 27, 10, 0, 0).toUTCString()) + const format = createFormatter({ origins: true, lineNumbers: false }) - mockFs({ - locale: { - en: mockFs.directory(), - }, - }) + mockDate.set(new Date(2018, 7, 27, 10, 0, 0).toUTCString()) - const filename = path.join("locale", "en", "messages.po") const catalog: CatalogType = { static: { translation: "Static message", @@ -353,14 +251,13 @@ describe("pofile format", () => { origin: [["src/App.js"], ["src/Component.js"]], }, } - format.write(filename, catalog, { - origins: true, - lineNumbers: false, + + const actual = format.serialize(catalog, { locale: "en", + existing: null, }) - const pofile = fs.readFileSync(filename).toString() - mockFs.restore() - expect(pofile).toMatchInlineSnapshot(` + + expect(actual).toMatchInlineSnapshot(` msgid "" msgstr "" "POT-Creation-Date: 2018-08-27 10:00+0000\\n" diff --git a/packages/cli/src/api/formats/po.ts b/packages/cli/src/api/formats/po.ts index 30d7a4467..3af87f397 100644 --- a/packages/cli/src/api/formats/po.ts +++ b/packages/cli/src/api/formats/po.ts @@ -1,24 +1,29 @@ import { format as formatDate } from "date-fns" import PO from "pofile" -import { joinOrigin, readFile, splitOrigin, writeFileIfChanged } from "../utils" +import { joinOrigin, splitOrigin } from "../utils" import { CatalogType, MessageType } from "../types" -import { CatalogFormatOptionsInternal, CatalogFormatter } from "." +import { CatalogFormatter } from "@lingui/conf" import { generateMessageId } from "../generateMessageId" type POItem = InstanceType +export type PoFormatterOptions = { + origins?: boolean + lineNumbers?: boolean +} + function isGeneratedId(id: string, message: MessageType): boolean { return id === generateMessageId(message.message, message.context) } -function getCreateHeaders(language = "no"): PO["headers"] { +function getCreateHeaders(language: string): PO["headers"] { return { "POT-Creation-Date": formatDate(new Date(), "yyyy-MM-dd HH:mmxxxx"), "MIME-Version": "1.0", "Content-Type": "text/plain; charset=utf-8", "Content-Transfer-Encoding": "8bit", "X-Generator": "@lingui/cli", - Language: language, + ...(language ? { Language: language } : {}), } } @@ -26,7 +31,7 @@ const EXPLICIT_ID_FLAG = "explicit-id" export const serialize = ( catalog: CatalogType, - options: CatalogFormatOptionsInternal, + options: PoFormatterOptions, postProcessItem?: ( item: POItem, message: MessageType, @@ -123,41 +128,39 @@ function validateItem(item: POItem): void { } } -const po: CatalogFormatter = { - catalogExtension: ".po", - templateExtension: ".pot", - - write(filename, catalog, options) { - let po: PO +export default function (options: PoFormatterOptions = {}) { + options = { + origins: true, + lineNumbers: true, + ...options, + } - const raw = readFile(filename) - if (raw) { - po = PO.parse(raw) - } else { - po = new PO() - po.headers = getCreateHeaders(options.locale) - if (options.locale === undefined) { - delete po.headers.Language + return { + catalogExtension: ".po", + templateExtension: ".pot", + + parse(content: string): CatalogType { + const po = PO.parse(content) + return deserialize(po.items, validateItem) + }, + + serialize( + catalog: CatalogType, + ctx: { locale: string; existing: string } + ): string { + let po: PO + + if (ctx.existing) { + po = PO.parse(ctx.existing) + } else { + po = new PO() + po.headers = getCreateHeaders(ctx.locale) + // accessing private property + ;(po as any).headerOrder = Object.keys(po.headers) } - // accessing private property - ;(po as any).headerOrder = Object.keys(po.headers) - } - po.items = serialize(catalog, options) - writeFileIfChanged(filename, po.toString()) - }, - - read(filename) { - const raw = readFile(filename) - if (!raw) { - return null - } - return this.parse(raw) - }, - parse(raw: string) { - const po = PO.parse(raw) - return deserialize(po.items, validateItem) - }, + po.items = serialize(catalog, options) + return po.toString() + }, + } satisfies CatalogFormatter } - -export default po diff --git a/packages/cli/src/api/rethrownError.ts b/packages/cli/src/api/rethrownError.ts new file mode 100644 index 000000000..4f7aefb3a --- /dev/null +++ b/packages/cli/src/api/rethrownError.ts @@ -0,0 +1,10 @@ +export class RethrownError extends Error { + public message: string + + constructor(message: string, originalError: Error) { + super() + + this.message = message + " " + originalError.message + this.stack = `Error: ${message} \nOriginal: ` + originalError.stack + } +} diff --git a/packages/cli/src/api/types.ts b/packages/cli/src/api/types.ts index 60229fd2f..22709ecd3 100644 --- a/packages/cli/src/api/types.ts +++ b/packages/cli/src/api/types.ts @@ -1,22 +1,12 @@ -export type MessageOrigin = [filename: string, line?: number] -export type ExtractedMessageType = { - message?: string - origin?: MessageOrigin[] - comments?: string[] - extractedComments?: string[] - obsolete?: boolean - flags?: string[] - context?: string -} -export type MessageType = ExtractedMessageType & { - translation: string -} -export type ExtractedCatalogType = { - [msgId: string]: ExtractedMessageType -} -export type CatalogType = { - [msgId: string]: MessageType -} +import type { CatalogType } from "@lingui/conf" +export type { + MessageOrigin, + ExtractedMessageType, + MessageType, + ExtractedCatalogType, + CatalogType, +} from "@lingui/conf" + export type AllCatalogsType = { [locale: string]: CatalogType } diff --git a/packages/cli/src/api/utils.ts b/packages/cli/src/api/utils.ts index 58b81e7c9..8c258f346 100644 --- a/packages/cli/src/api/utils.ts +++ b/packages/cli/src/api/utils.ts @@ -29,9 +29,9 @@ export const splitOrigin = (origin: string) => { export const joinOrigin = (origin: [file: string, line?: number]): string => origin.join(":") -export function readFile(fileName: string): string { +export async function readFile(fileName: string): Promise { try { - return fs.readFileSync(fileName).toString() + return (await fs.promises.readFile(fileName)).toString() } catch (err) { if ((err as NodeJS.ErrnoException).code != "ENOENT") { throw err @@ -39,9 +39,9 @@ export function readFile(fileName: string): string { } } -function mkdirp(dir: string): void { +async function mkdirp(dir: string): Promise { try { - fs.mkdirSync(dir, { + await fs.promises.mkdir(dir, { recursive: true, }) } catch (err) { @@ -61,20 +61,26 @@ export function isDirectory(filePath: string) { } } -export function writeFile(fileName: string, content: string): void { - mkdirp(path.dirname(fileName)) - fs.writeFileSync(fileName, content) +export async function writeFile( + fileName: string, + content: string +): Promise { + await mkdirp(path.dirname(fileName)) + await fs.promises.writeFile(fileName, content) } -export function writeFileIfChanged(filename: string, newContent: string) { - const raw = readFile(filename) +export async function writeFileIfChanged( + filename: string, + newContent: string +): Promise { + const raw = await readFile(filename) if (raw) { if (newContent !== raw) { - writeFile(filename, newContent) + await writeFile(filename, newContent) } } else { - writeFile(filename, newContent) + await writeFile(filename, newContent) } } diff --git a/packages/cli/src/extract-experimental/getExperimentalCatalogs.ts b/packages/cli/src/extract-experimental/getExperimentalCatalogs.ts index eeb1218ba..4226af046 100644 --- a/packages/cli/src/extract-experimental/getExperimentalCatalogs.ts +++ b/packages/cli/src/extract-experimental/getExperimentalCatalogs.ts @@ -18,12 +18,12 @@ export function getExperimentalCatalogs(linguiConfig: LinguiConfigNormalized) { "" ) - const format = getFormat(linguiConfig.format) + const format = getFormat(linguiConfig.format, linguiConfig.formatOptions) const templatePath = resolveTemplatePath( entryPoint, config.output, linguiConfig.rootDir, - format.templateExtension || format.catalogExtension + format.getTemplateExtension() ) return new Catalog( diff --git a/packages/cli/src/extract-experimental/writeCatalogs.ts b/packages/cli/src/extract-experimental/writeCatalogs.ts index 5dbf56f3b..c5cecf620 100644 --- a/packages/cli/src/extract-experimental/writeCatalogs.ts +++ b/packages/cli/src/extract-experimental/writeCatalogs.ts @@ -6,10 +6,10 @@ import { mergeCatalog } from "../api/catalog/mergeCatalog" import { printStats } from "../api/stats" import { LinguiConfigNormalized, OrderBy } from "@lingui/conf" import { cleanObsolete, order } from "../api/catalog" -import { CatalogFormatter } from "../api/formats" +import { FormatterWrapper } from "../api/formats" type ExtractTemplateParams = { - format: CatalogFormatter + format: FormatterWrapper clean: boolean entryPoint: string outputPattern: string @@ -55,22 +55,20 @@ export async function writeCatalogs( entryPoint, linguiConfig.rootDir, locale, - format.catalogExtension + format.getCatalogExtension() ) const catalog = mergeCatalog( - format.read(catalogOutput), + await format.read(catalogOutput, locale), messages, locale === linguiConfig.sourceLocale, { overwrite } ) - format.write( + await format.write( catalogOutput, cleanAndSort(catalog, clean, linguiConfig.orderBy), - { - locale, - } + locale ) stat[locale] = catalog @@ -91,15 +89,13 @@ export async function writeTemplate( entryPoint, outputPattern, linguiConfig.rootDir, - format.templateExtension || format.catalogExtension + format.getTemplateExtension() ) - format.write( + await format.write( catalogOutput, cleanAndSort(messages as CatalogType, clean, linguiConfig.orderBy), - { - locale: undefined, - } + undefined ) return { diff --git a/packages/cli/src/lingui-compile.ts b/packages/cli/src/lingui-compile.ts index 48ff22f24..75be35986 100644 --- a/packages/cli/src/lingui-compile.ts +++ b/packages/cli/src/lingui-compile.ts @@ -10,6 +10,8 @@ import { helpRun } from "./api/help" import { getCatalogs, getFormat } from "./api" import { TranslationMissingEvent } from "./api/catalog/getTranslationsForCatalog" import { getCatalogForMerge } from "./api/catalog/getCatalogs" +import { normalizeSlashes } from "./api/utils" +import nodepath from "path" export type CliCompileOptions = { verbose?: boolean @@ -19,7 +21,7 @@ export type CliCompileOptions = { namespace?: string } -export function command( +export async function command( config: LinguiConfigNormalized, options: CliCompileOptions ) { @@ -35,7 +37,7 @@ export function command( for (const catalog of catalogs) { const missingMessages: TranslationMissingEvent[] = [] - const messages = catalog.getTranslations(locale, { + const messages = await catalog.getTranslations(locale, { fallbackLocales: config.fallbackLocales, sourceLocale: config.sourceLocale, onMissing: (missing) => { @@ -82,7 +84,7 @@ export function command( compilerBabelOptions: config.compilerBabelOptions, }) - const compiledPath = catalog.writeCompiled( + let compiledPath = await catalog.writeCompiled( locale, compiledCatalog, namespace @@ -99,6 +101,10 @@ export function command( ) } + compiledPath = normalizeSlashes( + nodepath.relative(config.rootDir, compiledPath) + ) + options.verbose && console.error(chalk.green(`${locale} ⇒ ${compiledPath}`)) } @@ -113,11 +119,16 @@ export function command( pseudoLocale: config.pseudoLocale, compilerBabelOptions: config.compilerBabelOptions, }) - const compiledPath = compileCatalog.writeCompiled( + let compiledPath = await compileCatalog.writeCompiled( locale, compiledCatalog, namespace ) + + compiledPath = normalizeSlashes( + nodepath.relative(config.rootDir, compiledPath) + ) + options.verbose && console.log(chalk.green(`${locale} ⇒ ${compiledPath}`)) } } @@ -171,19 +182,27 @@ if (require.main === module) { const config = getConfig({ configPath: options.config }) - const compile = () => - command(config, { - verbose: options.watch || options.verbose || false, - allowEmpty: !options.strict, - typescript: - options.typescript || config.compileNamespace === "ts" || false, - namespace: options.namespace, // we want this to be undefined if user does not specify so default can be used - }) + let previousRun = Promise.resolve(true) + + const compile = () => { + previousRun = previousRun.then(() => + command(config, { + verbose: options.watch || options.verbose || false, + allowEmpty: !options.strict, + typescript: + options.typescript || config.compileNamespace === "ts" || false, + namespace: options.namespace, // we want this to be undefined if user does not specify so default can be used + }) + ) + + return previousRun + } let debounceTimer: NodeJS.Timer + const dispatchCompile = () => { // Skip debouncing if not enabled - if (!options.debounce) return compile() + if (!options.debounce) compile() // CLear the previous timer if there is any, and schedule the next debounceTimer && clearTimeout(debounceTimer) @@ -196,7 +215,10 @@ if (require.main === module) { const catalogs = getCatalogs(config) let paths: string[] = [] - const catalogExtension = getFormat(config.format).catalogExtension + const catalogExtension = getFormat( + config.format, + config.formatOptions + ).getCatalogExtension() config.locales.forEach((locale) => { catalogs.forEach((catalog) => { @@ -221,12 +243,12 @@ if (require.main === module) { watcher.on("ready", () => onReady()) } else { - const results = compile() - - if (!results) { - process.exit(1) - } + compile().then((results) => { + if (!results) { + process.exit(1) + } - console.log("Done!") + console.log("Done!") + }) } } diff --git a/packages/cli/src/lingui-extract-experimental.ts b/packages/cli/src/lingui-extract-experimental.ts index 8b23fdb2d..5877b03a2 100644 --- a/packages/cli/src/lingui-extract-experimental.ts +++ b/packages/cli/src/lingui-extract-experimental.ts @@ -64,7 +64,7 @@ export default async function command( let commandSuccess = true - const format = getFormat(linguiConfig.format) + const format = getFormat(linguiConfig.format, linguiConfig.formatOptions) for (const outFile of Object.keys(bundleResult.metafile.outputs)) { const messages = await extractFromFiles([outFile], linguiConfig) diff --git a/packages/cli/src/test/__snapshots__/compile.test.ts.snap b/packages/cli/src/test/__snapshots__/compile.test.ts.snap index b4f0b0134..96c5aee63 100644 --- a/packages/cli/src/test/__snapshots__/compile.test.ts.snap +++ b/packages/cli/src/test/__snapshots__/compile.test.ts.snap @@ -20,7 +20,7 @@ Missing 1 translation(s) `; exports[`CLI Command: Compile allowEmpty = false Should show missing messages verbosely when verbose = true 1`] = ` -en ⇒ /test/en.js +en ⇒ en.js Error: Failed to compile catalog for locale pl! Missing translations: mY42CM: (Hello World) diff --git a/packages/cli/src/test/compile.test.ts b/packages/cli/src/test/compile.test.ts index 53f4713ca..4406301bc 100644 --- a/packages/cli/src/test/compile.test.ts +++ b/packages/cli/src/test/compile.test.ts @@ -1,19 +1,18 @@ import { command } from "../lingui-compile" import { makeConfig } from "@lingui/conf" import { getConsoleMockCalls, mockConsole } from "@lingui/jest-mocks" -import mockFs from "mock-fs" -import { readFsToJson } from "../tests" +import { createFixtures, readFsToJson } from "../tests" describe("CLI Command: Compile", () => { describe("Merge Catalogs", () => { // todo }) - describe("allowEmpty = false", () => { - const config = makeConfig({ + function getConfig(rootDir: string) { + return makeConfig({ locales: ["en", "pl"], sourceLocale: "en", - rootDir: "/test", + rootDir: rootDir, catalogs: [ { path: "/{locale}", @@ -22,12 +21,16 @@ describe("CLI Command: Compile", () => { }, ], }) + } + describe("allowEmpty = false", () => { it( "Should show error and stop compilation of catalog " + "if message doesnt have a translation (no template)", - () => { - mockFs({ + async () => { + expect.assertions(4) + + const rootDir = await createFixtures({ "/test": { "en.po": ` msgid "Hello World" @@ -43,15 +46,16 @@ msgstr "" }, }) - mockConsole((console) => { - const result = command(config, { + const config = getConfig(rootDir) + + await mockConsole(async (console) => { + const result = await command(config, { allowEmpty: false, }) - const actualFiles = readFsToJson("/test") + const actualFiles = readFsToJson(config.rootDir) expect(actualFiles["pl.js"]).toBeFalsy() expect(actualFiles["en.js"]).toBeTruthy() - mockFs.restore() const log = getConsoleMockCalls(console.error) expect(log).toMatchSnapshot() @@ -63,8 +67,9 @@ msgstr "" it( "Should show error and stop compilation of catalog " + "if message doesnt have a translation (with template)", - () => { - mockFs({ + async () => { + expect.assertions(3) + const rootDir = await createFixtures({ "/test": { "messages.pot": ` msgid "Hello World" @@ -74,14 +79,14 @@ msgstr "" }, }) - mockConsole((console) => { - const result = command(config, { + const config = getConfig(rootDir) + + await mockConsole(async (console) => { + const result = await command(config, { allowEmpty: false, }) - const actualFiles = readFsToJson("/test") - - mockFs.restore() + const actualFiles = readFsToJson(rootDir) expect({ pl: actualFiles["pl.js"], @@ -95,8 +100,9 @@ msgstr "" } ) - it("Should show missing messages verbosely when verbose = true", () => { - mockFs({ + it("Should show missing messages verbosely when verbose = true", async () => { + expect.assertions(2) + const rootDir = await createFixtures({ "/test": { "pl.po": ` msgid "Hello World" @@ -108,14 +114,14 @@ msgstr "" }, }) - mockConsole((console) => { - const result = command(config, { + const config = getConfig(rootDir) + + await mockConsole(async (console) => { + const result = await command(config, { allowEmpty: false, verbose: true, }) - mockFs.restore() - const log = getConsoleMockCalls(console.error) expect(log).toMatchSnapshot() expect(result).toBeFalsy() diff --git a/packages/cli/src/tests.ts b/packages/cli/src/tests.ts index 66358fa8d..aeae95d1d 100644 --- a/packages/cli/src/tests.ts +++ b/packages/cli/src/tests.ts @@ -96,6 +96,30 @@ export function listingToHumanReadable(listing: Listing): string { return output.join("\n") } +/** + * Create fixtures from provided listing in temp folder + * Alternative for mock-fs which is also mocking nodejs require calls + * @param listing + */ +export async function createFixtures(listing: Listing) { + const tmpDir = await fs.promises.mkdtemp( + path.join(os.tmpdir(), `lingui-test-${process.pid}`) + ) + + async function create(listing: Listing) { + for (const [filename, value] of Object.entries(listing)) { + if (typeof value === "string") { + await fs.promises.writeFile(path.join(tmpDir, filename), value) + } else { + await create(value) + } + } + } + + await create(listing) + return tmpDir +} + export function readFsToJson( directory: string, filter?: (filename: string) => boolean diff --git a/packages/conf/__typetests__/tsconfig.json b/packages/conf/__typetests__/tsconfig.json index 11eb5686c..f2b20f3ad 100644 --- a/packages/conf/__typetests__/tsconfig.json +++ b/packages/conf/__typetests__/tsconfig.json @@ -1,4 +1,6 @@ { - "compilerOptions": {}, - "paths": {}, + "compilerOptions": { + "skipLibCheck": true + }, + "paths": {} } diff --git a/packages/conf/src/types.ts b/packages/conf/src/types.ts index fde8c40e5..00bf14b64 100644 --- a/packages/conf/src/types.ts +++ b/packages/conf/src/types.ts @@ -1,4 +1,4 @@ -import { GeneratorOptions } from "@babel/core" +import type { GeneratorOptions } from "@babel/core" export type CatalogFormat = "lingui" | "minimal" | "po" | "csv" | "po-gettext" @@ -11,6 +11,26 @@ export type ExtractorCtx = { linguiConfig: LinguiConfigNormalized } +export type MessageOrigin = [filename: string, line?: number] +export type ExtractedMessageType = { + message?: string + origin?: MessageOrigin[] + comments?: string[] + extractedComments?: string[] + obsolete?: boolean + flags?: string[] + context?: string +} +export type MessageType = ExtractedMessageType & { + translation: string +} +export type ExtractedCatalogType = { + [msgId: string]: ExtractedMessageType +} +export type CatalogType = { + [msgId: string]: MessageType +} + export type ExtractorType = { match(filename: string): boolean extract( @@ -21,6 +41,23 @@ export type ExtractorType = { ): Promise | void } +export type CatalogFormatter = { + catalogExtension: string + /** + * Set extension used when extract to template + * Omit if the extension is the same as catalogExtension + */ + templateExtension?: string + parse( + content: string, + ctx: { locale: string | null; filename: string } + ): Promise | CatalogType + serialize( + catalog: CatalogType, + ctx: { locale: string | null; filename: string; existing: string | null } + ): Promise | string +} + export type ExtractedMessage = { id: string @@ -142,7 +179,7 @@ export type LinguiConfig = { extractors?: (string | ExtractorType)[] prevFormat?: CatalogFormat localeDir?: string - format?: CatalogFormat + format?: CatalogFormat | CatalogFormatter formatOptions?: CatalogFormatOptions locales: string[] catalogsMergePath?: string diff --git a/packages/conf/tsconfig.json b/packages/conf/tsconfig.json index 486cb9bf5..05a4d9c98 100644 --- a/packages/conf/tsconfig.json +++ b/packages/conf/tsconfig.json @@ -7,7 +7,8 @@ "declaration": true, "outDir": "./build", "esModuleInterop": true, - "resolveJsonModule": true + "resolveJsonModule": true, + "skipLibCheck": true }, "files": [ "./src/index.ts" diff --git a/packages/loader/package.json b/packages/loader/package.json index fa216d2e7..9709db322 100644 --- a/packages/loader/package.json +++ b/packages/loader/package.json @@ -41,10 +41,9 @@ "loader-utils": "^2.0.0" }, "devDependencies": { - "memory-fs": "^0.5.0", - "webpack": "^4.44.2" + "webpack": "^5.76.1" }, "peerDependencies": { - "webpack": "^4.0.0 || ^5.0.0" + "webpack": "^5.0.0" } } diff --git a/packages/loader/src/webpackLoader.ts b/packages/loader/src/webpackLoader.ts index 06bfc2ac2..6f5f51977 100644 --- a/packages/loader/src/webpackLoader.ts +++ b/packages/loader/src/webpackLoader.ts @@ -1,5 +1,5 @@ import path from "path" -import { getConfig } from "@lingui/conf" +import { CatalogFormat, getConfig } from "@lingui/conf" import { createCompiledCatalog, getCatalogs, @@ -23,7 +23,9 @@ try { const requiredType = "javascript/auto" -export default function (source) { +export default async function (source) { + const callback = this.async() + const options = loaderUtils.getOptions(this) || {} if (!isWebpack5 && JavascriptParser && JavascriptGenerator) { @@ -56,7 +58,7 @@ export default function (source) { throw new Error( `File extension is mandatory, for ex: import("@lingui/loader!./${catalogRelativePath.replace( ".js", - formats[config.format] + formats[config.format as CatalogFormat] )}")` ) } @@ -66,7 +68,7 @@ export default function (source) { getCatalogs(config) ) - const messages = catalog.getTranslations(locale, { + const messages = await catalog.getTranslations(locale, { fallbackLocales: config.fallbackLocales, sourceLocale: config.sourceLocale, }) @@ -77,9 +79,11 @@ export default function (source) { // of I18nProvider (React) or setupI18n (core) and therefore we need to get // empty translations if missing. const strict = process.env.NODE_ENV !== "production" - return createCompiledCatalog(locale, messages, { + const compiled = createCompiledCatalog(locale, messages, { strict, namespace: config.compileNamespace, pseudoLocale: config.pseudoLocale, }) + + callback(null, compiled) } diff --git a/packages/loader/test/.linguirc b/packages/loader/test/.linguirc index 91779e893..01d77326d 100644 --- a/packages/loader/test/.linguirc +++ b/packages/loader/test/.linguirc @@ -1,7 +1,7 @@ { "locales": ["en"], "catalogs": [{ - "path": "locale/{locale}/messages" + "path": "/locale/{locale}/messages" }], "format": "po" } diff --git a/packages/loader/test/__snapshots__/loader.test.ts.snap b/packages/loader/test/__snapshots__/loader.test.ts.snap new file mode 100644 index 000000000..632c4169a --- /dev/null +++ b/packages/loader/test/__snapshots__/loader.test.ts.snap @@ -0,0 +1,13 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`lingui-loader should compile catalog 1`] = ` +{ + mVmaLu: [ + My name is , + [ + name, + ], + ], + mY42CM: Hello World, +} +`; diff --git a/packages/loader/test/compiler.js b/packages/loader/test/compiler.js deleted file mode 100644 index 00cebbd87..000000000 --- a/packages/loader/test/compiler.js +++ /dev/null @@ -1,37 +0,0 @@ -import path from "path" -import webpack from "webpack" -import MemoryFS from "memory-fs" - -export default (fixture, options) => { - const compiler = webpack({ - mode: "none", - context: __dirname, - entry: "." + path.sep + fixture, - output: { - path: path.resolve(__dirname), - filename: "bundle.js", - }, - module: { - rules: [ - { - test: /\.po$/, - use: { - loader: path.resolve(__dirname, "../src/index.js"), - options, - }, - }, - ], - }, - }) - - compiler.outputFileSystem = new MemoryFS() - - return new Promise((resolve, reject) => { - compiler.run((err, stats) => { - if (err) reject(err) - if (stats.hasErrors()) reject(new Error(stats.toJson().errors)) - - resolve(stats) - }) - }) -} diff --git a/packages/loader/test/compiler.ts b/packages/loader/test/compiler.ts new file mode 100644 index 000000000..c380b627c --- /dev/null +++ b/packages/loader/test/compiler.ts @@ -0,0 +1,40 @@ +import path from "path" +import webpack from "webpack" +import { mkdtempSync } from "fs" +import os from "os" + +export default async ( + entryPoint: string, + options?: any +): Promise => { + const compiler = webpack({ + mode: "development", + target: "node", + entry: entryPoint, + output: { + path: mkdtempSync(path.join(os.tmpdir(), `lingui-test-${process.pid}`)), + filename: "bundle.js", + libraryTarget: "commonjs", + }, + module: { + rules: [ + { + test: /\.po$/, + use: { + loader: path.resolve(__dirname, "../src/webpackLoader.ts"), + options, + }, + }, + ], + }, + }) + + return new Promise((resolve, reject) => { + compiler.run((err, stats) => { + if (err) reject(err) + if (stats.hasErrors()) reject(stats.toJson().errors) + + resolve(stats.toJson()) + }) + }) +} diff --git a/packages/loader/test/customConfig.json b/packages/loader/test/customConfig.json deleted file mode 100644 index e26676336..000000000 --- a/packages/loader/test/customConfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "locales": ["en"], - "catalogs": [ - { - "path": "locale/{locale}/messages" - } - ], - "compileNamespace": "window.really_long_namespace" -} diff --git a/packages/loader/test/entrypoint.js b/packages/loader/test/entrypoint.js new file mode 100644 index 000000000..ba0c747cf --- /dev/null +++ b/packages/loader/test/entrypoint.js @@ -0,0 +1,3 @@ +export async function load() { + return import("./locale/en/messages.po") +} diff --git a/packages/loader/test/loader.test.ts b/packages/loader/test/loader.test.ts index c1426077d..5ef701693 100644 --- a/packages/loader/test/loader.test.ts +++ b/packages/loader/test/loader.test.ts @@ -1,32 +1,14 @@ import path from "path" -import compiler from "./compiler.js" +import compiler from "./compiler" -jest.useFakeTimers() -jest.setTimeout(20000) - -const skipOnWindows = /^win/.test(process.platform) ? it.skip : it - -// Compilation fails with timeout randomly -describe.skip("lingui-loader", function () { - // skip on windows for now - skipOnWindows("should compile catalog", async () => { +describe("lingui-loader", () => { + it("should compile catalog", async () => { expect.assertions(2) - const stats = await compiler(path.join("locale", "en", "messages.po")) - const output = stats.toJson() - expect(output.errors).toEqual([]) - expect(output.modules[0].source).toMatchSnapshot() - }) - - skipOnWindows("should allow config option", async () => { - const stats = await compiler( - path.join(".", "locale", "en", "messages.po"), - { config: path.join(path.dirname(module.filename), "customConfig.json") } - ) - - const output = stats.toJson() + const stats = await compiler(path.join(__dirname, "entrypoint.js")) - // customconfig contains this namespace - expect(output.modules[0].source).toMatch(/window\.really_long_namespace=/) + const data = await import(path.join(stats.outputPath, "bundle.js")) + expect(stats.errors).toEqual([]) + expect((await data.load()).messages).toMatchSnapshot() }) }) diff --git a/packages/macro/__typetests__/tsconfig.json b/packages/macro/__typetests__/tsconfig.json index 4c701ebe2..bb01d834e 100644 --- a/packages/macro/__typetests__/tsconfig.json +++ b/packages/macro/__typetests__/tsconfig.json @@ -1,7 +1,8 @@ { "compilerOptions": { "jsx": "react", - "esModuleInterop": true + "esModuleInterop": true, + "skipLibCheck": true }, "paths": {} } diff --git a/packages/snowpack-plugin/src/index.ts b/packages/snowpack-plugin/src/index.ts index 231ce8873..4fbb8b134 100644 --- a/packages/snowpack-plugin/src/index.ts +++ b/packages/snowpack-plugin/src/index.ts @@ -1,5 +1,5 @@ import path from "path" -import { getConfig } from "@lingui/conf" +import { CatalogFormat, getConfig } from "@lingui/conf" import { createCompiledCatalog, getCatalogs, @@ -40,7 +40,7 @@ export default function compileLinguiMessages( } throw new Error( `@lingui/snowpack-plugin: File extension is mandatory, for ex: import('./locales/en/messages${ - formats[config.format] + formats[config.format as CatalogFormat] }')` ) } @@ -52,7 +52,7 @@ export default function compileLinguiMessages( const { locale, catalog } = fileCatalog - const messages = catalog.getTranslations(locale, { + const messages = await catalog.getTranslations(locale, { fallbackLocales: config.fallbackLocales, sourceLocale: config.sourceLocale, }) diff --git a/packages/vite-plugin/src/index.ts b/packages/vite-plugin/src/index.ts index 56a2577d2..35efd65a6 100644 --- a/packages/vite-plugin/src/index.ts +++ b/packages/vite-plugin/src/index.ts @@ -27,7 +27,7 @@ export function lingui(linguiConfig: LinguiConfigOpts = {}): Plugin { config.optimizeDeps.exclude.push("@lingui/macro") }, - transform(src, id) { + async transform(src, id) { if (fileRegex.test(id)) { const catalogRelativePath = path.relative(config.rootDir, id) @@ -38,7 +38,7 @@ export function lingui(linguiConfig: LinguiConfigOpts = {}): Plugin { const { locale, catalog } = fileCatalog - const messages = catalog.getTranslations(locale, { + const messages = await catalog.getTranslations(locale, { fallbackLocales: config.fallbackLocales, sourceLocale: config.sourceLocale, }) diff --git a/packages/vite-plugin/tsconfig.json b/packages/vite-plugin/tsconfig.json index 6a44210eb..ea9db40bb 100644 --- a/packages/vite-plugin/tsconfig.json +++ b/packages/vite-plugin/tsconfig.json @@ -7,7 +7,8 @@ "declaration": true, "outDir": "./build", "esModuleInterop": true, - "resolveJsonModule": true + "resolveJsonModule": true, + "skipLibCheck": true }, "include": [ "src" diff --git a/tsconfig.json b/tsconfig.json index 93f0f78c7..e7f079801 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -9,6 +9,7 @@ "stripInternal": true, "noUnusedLocals": true, "resolveJsonModule": true, + "skipLibCheck": true, "target": "es2017", "paths": { "@lingui/babel-plugin-extract-messages": ["./packages/babel-plugin-extract-messages/src"], diff --git a/yarn.lock b/yarn.lock index 969d8c967..322e4dd1f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2243,7 +2243,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/gen-mapping@npm:^0.3.2": +"@jridgewell/gen-mapping@npm:^0.3.0, @jridgewell/gen-mapping@npm:^0.3.2": version: 0.3.2 resolution: "@jridgewell/gen-mapping@npm:0.3.2" dependencies: @@ -2268,6 +2268,16 @@ __metadata: languageName: node linkType: hard +"@jridgewell/source-map@npm:^0.3.2": + version: 0.3.2 + resolution: "@jridgewell/source-map@npm:0.3.2" + dependencies: + "@jridgewell/gen-mapping": ^0.3.0 + "@jridgewell/trace-mapping": ^0.3.9 + checksum: 1b83f0eb944e77b70559a394d5d3b3f98a81fcc186946aceb3ef42d036762b52ef71493c6c0a3b7c1d2f08785f53ba2df1277fe629a06e6109588ff4cdcf7482 + languageName: node + linkType: hard + "@jridgewell/sourcemap-codec@npm:1.4.14, @jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.13": version: 1.4.14 resolution: "@jridgewell/sourcemap-codec@npm:1.4.14" @@ -2425,10 +2435,9 @@ __metadata: "@lingui/cli": 4.0.0-next.1 "@lingui/conf": 4.0.0-next.1 loader-utils: ^2.0.0 - memory-fs: ^0.5.0 - webpack: ^4.44.2 + webpack: ^5.76.1 peerDependencies: - webpack: ^4.0.0 || ^5.0.0 + webpack: ^5.0.0 languageName: unknown linkType: soft @@ -3416,6 +3425,26 @@ __metadata: languageName: node linkType: hard +"@types/eslint-scope@npm:^3.7.3": + version: 3.7.4 + resolution: "@types/eslint-scope@npm:3.7.4" + dependencies: + "@types/eslint": "*" + "@types/estree": "*" + checksum: ea6a9363e92f301cd3888194469f9ec9d0021fe0a397a97a6dd689e7545c75de0bd2153dfb13d3ab532853a278b6572c6f678ce846980669e41029d205653460 + languageName: node + linkType: hard + +"@types/eslint@npm:*": + version: 8.21.2 + resolution: "@types/eslint@npm:8.21.2" + dependencies: + "@types/estree": "*" + "@types/json-schema": "*" + checksum: a48864c837137ee5b3f4f934a5468dc00456c998a2479f8f7ba1c2c34e1fc08414d9f49157f90814a9e843b1dd2cd824b4660cba9425e23d109250ec7ae0a259 + languageName: node + linkType: hard + "@types/eslint@npm:^7.2.13": version: 7.29.0 resolution: "@types/eslint@npm:7.29.0" @@ -3433,6 +3462,13 @@ __metadata: languageName: node linkType: hard +"@types/estree@npm:^0.0.51": + version: 0.0.51 + resolution: "@types/estree@npm:0.0.51" + checksum: e56a3bcf759fd9185e992e7fdb3c6a5f81e8ff120e871641607581fb3728d16c811702a7d40fa5f869b7f7b4437ab6a87eb8d98ffafeee51e85bbe955932a189 + languageName: node + linkType: hard + "@types/glob@npm:*": version: 8.0.1 resolution: "@types/glob@npm:8.0.1" @@ -3498,7 +3534,7 @@ __metadata: languageName: node linkType: hard -"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.7, @types/json-schema@npm:^7.0.9": +"@types/json-schema@npm:*, @types/json-schema@npm:^7.0.7, @types/json-schema@npm:^7.0.8, @types/json-schema@npm:^7.0.9": version: 7.0.11 resolution: "@types/json-schema@npm:7.0.11" checksum: 527bddfe62db9012fccd7627794bd4c71beb77601861055d87e3ee464f2217c85fca7a4b56ae677478367bbd248dbde13553312b7d4dbc702a2f2bbf60c4018d @@ -3888,184 +3924,154 @@ __metadata: languageName: node linkType: hard -"@webassemblyjs/ast@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/ast@npm:1.9.0" +"@webassemblyjs/ast@npm:1.11.1": + version: 1.11.1 + resolution: "@webassemblyjs/ast@npm:1.11.1" dependencies: - "@webassemblyjs/helper-module-context": 1.9.0 - "@webassemblyjs/helper-wasm-bytecode": 1.9.0 - "@webassemblyjs/wast-parser": 1.9.0 - checksum: 8a9838dc7fdac358aee8daa75eefa35934ab18dafb594092ff7be79c467ebe9dabb2543e58313c905fd802bdcc3cb8320e4e19af7444e49853a7a24e25138f75 - languageName: node - linkType: hard - -"@webassemblyjs/floating-point-hex-parser@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.9.0" - checksum: d3aeb19bc30da26f639698daa28e44e0c18d5aa135359ef3c54148e194eec46451a912d0506099d479a71a94bc3eef6ef52d6ec234799528a25a9744789852de - languageName: node - linkType: hard - -"@webassemblyjs/helper-api-error@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/helper-api-error@npm:1.9.0" - checksum: 9179d3148639cc202e89a118145b485cf834613260679a99af6ec487bbc15f238566ca713207394b336160a41bf8c1b75cf2e853b3e96f0cc73c1e5c735b3f64 + "@webassemblyjs/helper-numbers": 1.11.1 + "@webassemblyjs/helper-wasm-bytecode": 1.11.1 + checksum: 1eee1534adebeece635362f8e834ae03e389281972611408d64be7895fc49f48f98fddbbb5339bf8a72cb101bcb066e8bca3ca1bf1ef47dadf89def0395a8d87 languageName: node linkType: hard -"@webassemblyjs/helper-buffer@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/helper-buffer@npm:1.9.0" - checksum: dcb85f630f8a2e22b7346ad4dd58c3237a2cad1457699423e8fd19592a0bd3eacbc2639178a1b9a873c3ac217bfc7a23a134ff440a099496b590e82c7a4968d5 +"@webassemblyjs/floating-point-hex-parser@npm:1.11.1": + version: 1.11.1 + resolution: "@webassemblyjs/floating-point-hex-parser@npm:1.11.1" + checksum: b8efc6fa08e4787b7f8e682182d84dfdf8da9d9c77cae5d293818bc4a55c1f419a87fa265ab85252b3e6c1fd323d799efea68d825d341a7c365c64bc14750e97 languageName: node linkType: hard -"@webassemblyjs/helper-code-frame@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/helper-code-frame@npm:1.9.0" - dependencies: - "@webassemblyjs/wast-printer": 1.9.0 - checksum: a28fa057f7beff0fd14bff716561520f8edb8c9c56c7a5559451e6765acfb70aaeb8af718ea2bd2262e7baeba597545af407e28eb2eff8329235afe8605f20d1 +"@webassemblyjs/helper-api-error@npm:1.11.1": + version: 1.11.1 + resolution: "@webassemblyjs/helper-api-error@npm:1.11.1" + checksum: 0792813f0ed4a0e5ee0750e8b5d0c631f08e927f4bdfdd9fe9105dc410c786850b8c61bff7f9f515fdfb149903bec3c976a1310573a4c6866a94d49bc7271959 languageName: node linkType: hard -"@webassemblyjs/helper-fsm@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/helper-fsm@npm:1.9.0" - checksum: 374cc510c8f5a7a07d4fe9eb7036cc475a96a670b5d25c31f16757ac8295be8d03a2f29657ff53eaefa9e8315670a48824d430ed910e7c1835788ac79f93124e +"@webassemblyjs/helper-buffer@npm:1.11.1": + version: 1.11.1 + resolution: "@webassemblyjs/helper-buffer@npm:1.11.1" + checksum: a337ee44b45590c3a30db5a8b7b68a717526cf967ada9f10253995294dbd70a58b2da2165222e0b9830cd4fc6e4c833bf441a721128d1fe2e9a7ab26b36003ce languageName: node linkType: hard -"@webassemblyjs/helper-module-context@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/helper-module-context@npm:1.9.0" +"@webassemblyjs/helper-numbers@npm:1.11.1": + version: 1.11.1 + resolution: "@webassemblyjs/helper-numbers@npm:1.11.1" dependencies: - "@webassemblyjs/ast": 1.9.0 - checksum: 55e8f89c7ea1beaa78fad88403f3753b8413b0f3b6bb32d898ce95078b3e1d1b48ade0919c00b82fc2e3813c0ab6901e415f7a4d4fa9be50944e2431adde75a5 + "@webassemblyjs/floating-point-hex-parser": 1.11.1 + "@webassemblyjs/helper-api-error": 1.11.1 + "@xtuc/long": 4.2.2 + checksum: 44d2905dac2f14d1e9b5765cf1063a0fa3d57295c6d8930f6c59a36462afecc6e763e8a110b97b342a0f13376166c5d41aa928e6ced92e2f06b071fd0db59d3a languageName: node linkType: hard -"@webassemblyjs/helper-wasm-bytecode@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.9.0" - checksum: 280da4df3c556f73a1a02053277f8a4be481de32df4aa21050b015c8f4d27c46af89f0417eb88e486df117e5df4bccffae593f78cb1e79f212d3b3d4f3ed0f04 +"@webassemblyjs/helper-wasm-bytecode@npm:1.11.1": + version: 1.11.1 + resolution: "@webassemblyjs/helper-wasm-bytecode@npm:1.11.1" + checksum: eac400113127832c88f5826bcc3ad1c0db9b3dbd4c51a723cfdb16af6bfcbceb608170fdaac0ab7731a7e18b291be7af68a47fcdb41cfe0260c10857e7413d97 languageName: node linkType: hard -"@webassemblyjs/helper-wasm-section@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/helper-wasm-section@npm:1.9.0" +"@webassemblyjs/helper-wasm-section@npm:1.11.1": + version: 1.11.1 + resolution: "@webassemblyjs/helper-wasm-section@npm:1.11.1" dependencies: - "@webassemblyjs/ast": 1.9.0 - "@webassemblyjs/helper-buffer": 1.9.0 - "@webassemblyjs/helper-wasm-bytecode": 1.9.0 - "@webassemblyjs/wasm-gen": 1.9.0 - checksum: b8f7bb45d4194074c82210211a5d3e402a5b5fa63ecae26d2c356ae3978af5a530e91192fb260f32f9d561b18e2828b3da2e2f41c59efadb5f3c6d72446807f0 + "@webassemblyjs/ast": 1.11.1 + "@webassemblyjs/helper-buffer": 1.11.1 + "@webassemblyjs/helper-wasm-bytecode": 1.11.1 + "@webassemblyjs/wasm-gen": 1.11.1 + checksum: 617696cfe8ecaf0532763162aaf748eb69096fb27950219bb87686c6b2e66e11cd0614d95d319d0ab1904bc14ebe4e29068b12c3e7c5e020281379741fe4bedf languageName: node linkType: hard -"@webassemblyjs/ieee754@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/ieee754@npm:1.9.0" +"@webassemblyjs/ieee754@npm:1.11.1": + version: 1.11.1 + resolution: "@webassemblyjs/ieee754@npm:1.11.1" dependencies: "@xtuc/ieee754": ^1.2.0 - checksum: 7fe4a217ba0f7051e2cfef92919d4a64fac1a63c65411763779bd50907820f33f440255231a474fe3ba03bd1d9ee0328662d1eae3fce4c59b91549d6b62b839b + checksum: 23a0ac02a50f244471631802798a816524df17e56b1ef929f0c73e3cde70eaf105a24130105c60aff9d64a24ce3b640dad443d6f86e5967f922943a7115022ec languageName: node linkType: hard -"@webassemblyjs/leb128@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/leb128@npm:1.9.0" +"@webassemblyjs/leb128@npm:1.11.1": + version: 1.11.1 + resolution: "@webassemblyjs/leb128@npm:1.11.1" dependencies: "@xtuc/long": 4.2.2 - checksum: 4ca7cbb869530d78d42a414f34ae53249364cb1ecebbfb6ed5d562c2f209fce857502f088822ee82a23876f653a262ddc34ab64e45a7962510a263d39bb3f51a + checksum: 33ccc4ade2f24de07bf31690844d0b1ad224304ee2062b0e464a610b0209c79e0b3009ac190efe0e6bd568b0d1578d7c3047fc1f9d0197c92fc061f56224ff4a languageName: node linkType: hard -"@webassemblyjs/utf8@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/utf8@npm:1.9.0" - checksum: e328a30ac8a503bbd015d32e75176e0dedcb45a21d4be051c25dfe89a00035ca7a6dbd8937b442dd5b4b334de3959d4f5fe0b330037bd226a28b9814cd49e84f - languageName: node - linkType: hard - -"@webassemblyjs/wasm-edit@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/wasm-edit@npm:1.9.0" - dependencies: - "@webassemblyjs/ast": 1.9.0 - "@webassemblyjs/helper-buffer": 1.9.0 - "@webassemblyjs/helper-wasm-bytecode": 1.9.0 - "@webassemblyjs/helper-wasm-section": 1.9.0 - "@webassemblyjs/wasm-gen": 1.9.0 - "@webassemblyjs/wasm-opt": 1.9.0 - "@webassemblyjs/wasm-parser": 1.9.0 - "@webassemblyjs/wast-printer": 1.9.0 - checksum: 1997e0c2f4051c33239587fb143242919320bc861a0af03a873c7150a27d6404bd2e063c658193288b0aa88c35aadbe0c4fde601fe642bae0743a8c8eda52717 +"@webassemblyjs/utf8@npm:1.11.1": + version: 1.11.1 + resolution: "@webassemblyjs/utf8@npm:1.11.1" + checksum: 972c5cfc769d7af79313a6bfb96517253a270a4bf0c33ba486aa43cac43917184fb35e51dfc9e6b5601548cd5931479a42e42c89a13bb591ffabebf30c8a6a0b languageName: node linkType: hard -"@webassemblyjs/wasm-gen@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/wasm-gen@npm:1.9.0" +"@webassemblyjs/wasm-edit@npm:1.11.1": + version: 1.11.1 + resolution: "@webassemblyjs/wasm-edit@npm:1.11.1" dependencies: - "@webassemblyjs/ast": 1.9.0 - "@webassemblyjs/helper-wasm-bytecode": 1.9.0 - "@webassemblyjs/ieee754": 1.9.0 - "@webassemblyjs/leb128": 1.9.0 - "@webassemblyjs/utf8": 1.9.0 - checksum: 2456e84e8e6bedb7ab47f6333a0ee170f7ef62842c90862ca787c08528ca8041061f3f8bc257fc2a01bf6e8d1a76fddaddd43418c738f681066e5b50f88fe7df + "@webassemblyjs/ast": 1.11.1 + "@webassemblyjs/helper-buffer": 1.11.1 + "@webassemblyjs/helper-wasm-bytecode": 1.11.1 + "@webassemblyjs/helper-wasm-section": 1.11.1 + "@webassemblyjs/wasm-gen": 1.11.1 + "@webassemblyjs/wasm-opt": 1.11.1 + "@webassemblyjs/wasm-parser": 1.11.1 + "@webassemblyjs/wast-printer": 1.11.1 + checksum: 6d7d9efaec1227e7ef7585a5d7ff0be5f329f7c1c6b6c0e906b18ed2e9a28792a5635e450aca2d136770d0207225f204eff70a4b8fd879d3ac79e1dcc26dbeb9 languageName: node linkType: hard -"@webassemblyjs/wasm-opt@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/wasm-opt@npm:1.9.0" +"@webassemblyjs/wasm-gen@npm:1.11.1": + version: 1.11.1 + resolution: "@webassemblyjs/wasm-gen@npm:1.11.1" dependencies: - "@webassemblyjs/ast": 1.9.0 - "@webassemblyjs/helper-buffer": 1.9.0 - "@webassemblyjs/wasm-gen": 1.9.0 - "@webassemblyjs/wasm-parser": 1.9.0 - checksum: 91242205bdbd1aa8045364a5338bfb34880cb2c65f56db8dd19382894209673699fb31a0e5279f25c7e5bcd8f3097d6c9ca84d8969d9613ef2cf166450cc3515 + "@webassemblyjs/ast": 1.11.1 + "@webassemblyjs/helper-wasm-bytecode": 1.11.1 + "@webassemblyjs/ieee754": 1.11.1 + "@webassemblyjs/leb128": 1.11.1 + "@webassemblyjs/utf8": 1.11.1 + checksum: 1f6921e640293bf99fb16b21e09acb59b340a79f986c8f979853a0ae9f0b58557534b81e02ea2b4ef11e929d946708533fd0693c7f3712924128fdafd6465f5b languageName: node linkType: hard -"@webassemblyjs/wasm-parser@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/wasm-parser@npm:1.9.0" +"@webassemblyjs/wasm-opt@npm:1.11.1": + version: 1.11.1 + resolution: "@webassemblyjs/wasm-opt@npm:1.11.1" dependencies: - "@webassemblyjs/ast": 1.9.0 - "@webassemblyjs/helper-api-error": 1.9.0 - "@webassemblyjs/helper-wasm-bytecode": 1.9.0 - "@webassemblyjs/ieee754": 1.9.0 - "@webassemblyjs/leb128": 1.9.0 - "@webassemblyjs/utf8": 1.9.0 - checksum: 493f6cfc63a5e16073056c81ff0526a9936f461327379ef3c83cc841000e03623b6352704f6bf9f7cb5b3610f0032020a61f9cca78c91b15b8e995854b29c098 + "@webassemblyjs/ast": 1.11.1 + "@webassemblyjs/helper-buffer": 1.11.1 + "@webassemblyjs/wasm-gen": 1.11.1 + "@webassemblyjs/wasm-parser": 1.11.1 + checksum: 21586883a20009e2b20feb67bdc451bbc6942252e038aae4c3a08e6f67b6bae0f5f88f20bfc7bd0452db5000bacaf5ab42b98cf9aa034a6c70e9fc616142e1db languageName: node linkType: hard -"@webassemblyjs/wast-parser@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/wast-parser@npm:1.9.0" +"@webassemblyjs/wasm-parser@npm:1.11.1": + version: 1.11.1 + resolution: "@webassemblyjs/wasm-parser@npm:1.11.1" dependencies: - "@webassemblyjs/ast": 1.9.0 - "@webassemblyjs/floating-point-hex-parser": 1.9.0 - "@webassemblyjs/helper-api-error": 1.9.0 - "@webassemblyjs/helper-code-frame": 1.9.0 - "@webassemblyjs/helper-fsm": 1.9.0 - "@xtuc/long": 4.2.2 - checksum: 705dd48fbbceec7f6bed299b8813631b242fd9312f9594dbb2985dda86c9688048692357d684f6080fc2c5666287cefaa26b263d01abadb6a9049d4c8978b9db + "@webassemblyjs/ast": 1.11.1 + "@webassemblyjs/helper-api-error": 1.11.1 + "@webassemblyjs/helper-wasm-bytecode": 1.11.1 + "@webassemblyjs/ieee754": 1.11.1 + "@webassemblyjs/leb128": 1.11.1 + "@webassemblyjs/utf8": 1.11.1 + checksum: 1521644065c360e7b27fad9f4bb2df1802d134dd62937fa1f601a1975cde56bc31a57b6e26408b9ee0228626ff3ba1131ae6f74ffb7d718415b6528c5a6dbfc2 languageName: node linkType: hard -"@webassemblyjs/wast-printer@npm:1.9.0": - version: 1.9.0 - resolution: "@webassemblyjs/wast-printer@npm:1.9.0" +"@webassemblyjs/wast-printer@npm:1.11.1": + version: 1.11.1 + resolution: "@webassemblyjs/wast-printer@npm:1.11.1" dependencies: - "@webassemblyjs/ast": 1.9.0 - "@webassemblyjs/wast-parser": 1.9.0 + "@webassemblyjs/ast": 1.11.1 "@xtuc/long": 4.2.2 - checksum: 3d1e1b2e84745a963f69acd1c02425b321dd2e608e11dabc467cae0c9a808962bc769ec9afc46fbcea7188cc1e47d72370da762d258f716fb367cb1a7865c54b + checksum: f15ae4c2441b979a3b4fce78f3d83472fb22350c6dc3fd34bfe7c3da108e0b2360718734d961bba20e7716cb8578e964b870da55b035e209e50ec9db0378a3f7 languageName: node linkType: hard @@ -4157,6 +4163,15 @@ __metadata: languageName: node linkType: hard +"acorn-import-assertions@npm:^1.7.6": + version: 1.8.0 + resolution: "acorn-import-assertions@npm:1.8.0" + peerDependencies: + acorn: ^8 + checksum: 5c4cf7c850102ba7ae0eeae0deb40fb3158c8ca5ff15c0bca43b5c47e307a1de3d8ef761788f881343680ea374631ae9e9615ba8876fee5268dbe068c98bcba6 + languageName: node + linkType: hard + "acorn-jsx@npm:^5.3.1": version: 5.3.2 resolution: "acorn-jsx@npm:5.3.2" @@ -4180,15 +4195,6 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^6.4.1": - version: 6.4.2 - resolution: "acorn@npm:6.4.2" - bin: - acorn: bin/acorn - checksum: 44b07053729db7f44d28343eed32247ed56dc4a6ec6dff2b743141ecd6b861406bbc1c20bf9d4f143ea7dd08add5dc8c290582756539bc03a8db605050ce2fb4 - languageName: node - linkType: hard - "acorn@npm:^7.1.1, acorn@npm:^7.4.0": version: 7.4.1 resolution: "acorn@npm:7.4.1" @@ -4198,7 +4204,7 @@ __metadata: languageName: node linkType: hard -"acorn@npm:^8.1.0, acorn@npm:^8.2.4, acorn@npm:^8.5.0, acorn@npm:^8.8.1": +"acorn@npm:^8.1.0, acorn@npm:^8.2.4, acorn@npm:^8.5.0, acorn@npm:^8.7.1, acorn@npm:^8.8.1": version: 8.8.2 resolution: "acorn@npm:8.8.2" bin: @@ -4244,16 +4250,7 @@ __metadata: languageName: node linkType: hard -"ajv-errors@npm:^1.0.0": - version: 1.0.1 - resolution: "ajv-errors@npm:1.0.1" - peerDependencies: - ajv: ">=5.0.0" - checksum: 2c9fc02cf58f9aae5bace61ebd1b162e1ea372ae9db5999243ba5e32a9a78c0d635d29ae085f652c61c941a43af0b2b1acdb255e29d44dc43a6e021085716d8c - languageName: node - linkType: hard - -"ajv-keywords@npm:^3.1.0, ajv-keywords@npm:^3.4.1": +"ajv-keywords@npm:^3.5.2": version: 3.5.2 resolution: "ajv-keywords@npm:3.5.2" peerDependencies: @@ -4262,7 +4259,7 @@ __metadata: languageName: node linkType: hard -"ajv@npm:^6.1.0, ajv@npm:^6.10.0, ajv@npm:^6.10.2, ajv@npm:^6.12.3, ajv@npm:^6.12.4": +"ajv@npm:^6.10.0, ajv@npm:^6.12.3, ajv@npm:^6.12.4, ajv@npm:^6.12.5": version: 6.12.6 resolution: "ajv@npm:6.12.6" dependencies: @@ -4355,16 +4352,6 @@ __metadata: languageName: node linkType: hard -"anymatch@npm:^2.0.0": - version: 2.0.0 - resolution: "anymatch@npm:2.0.0" - dependencies: - micromatch: ^3.1.4 - normalize-path: ^2.1.1 - checksum: f7bb1929842b4585cdc28edbb385767d499ce7d673f96a8f11348d2b2904592ffffc594fe9229b9a1e9e4dccb9329b7692f9f45e6a11dcefbb76ecdc9ab740f6 - languageName: node - linkType: hard - "anymatch@npm:^3.0.3, anymatch@npm:~3.1.1, anymatch@npm:~3.1.2": version: 3.1.3 resolution: "anymatch@npm:3.1.3" @@ -4375,6 +4362,13 @@ __metadata: languageName: node linkType: hard +"aproba@npm:^1.0.3": + version: 1.2.0 + resolution: "aproba@npm:1.2.0" + checksum: 0fca141966559d195072ed047658b6e6c4fe92428c385dd38e288eacfc55807e7b4989322f030faff32c0f46bb0bc10f1e0ac32ec22d25315a1e5bbc0ebb76dc + languageName: node + linkType: hard + "aproba@npm:^1.0.3 || ^2.0.0, aproba@npm:^2.0.0": version: 2.0.0 resolution: "aproba@npm:2.0.0" @@ -4382,13 +4376,6 @@ __metadata: languageName: node linkType: hard -"aproba@npm:^1.0.3, aproba@npm:^1.1.1": - version: 1.2.0 - resolution: "aproba@npm:1.2.0" - checksum: 0fca141966559d195072ed047658b6e6c4fe92428c385dd38e288eacfc55807e7b4989322f030faff32c0f46bb0bc10f1e0ac32ec22d25315a1e5bbc0ebb76dc - languageName: node - linkType: hard - "are-we-there-yet@npm:^3.0.0": version: 3.0.1 resolution: "are-we-there-yet@npm:3.0.1" @@ -4442,27 +4429,6 @@ __metadata: languageName: node linkType: hard -"arr-diff@npm:^4.0.0": - version: 4.0.0 - resolution: "arr-diff@npm:4.0.0" - checksum: ea7c8834842ad3869297f7915689bef3494fd5b102ac678c13ffccab672d3d1f35802b79e90c4cfec2f424af3392e44112d1ccf65da34562ed75e049597276a0 - languageName: node - linkType: hard - -"arr-flatten@npm:^1.1.0": - version: 1.1.0 - resolution: "arr-flatten@npm:1.1.0" - checksum: 963fe12564fca2f72c055f3f6c206b9e031f7c433a0c66ca9858b484821f248c5b1e5d53c8e4989d80d764cd776cf6d9b160ad05f47bdc63022bfd63b5455e22 - languageName: node - linkType: hard - -"arr-union@npm:^3.1.0": - version: 3.1.0 - resolution: "arr-union@npm:3.1.0" - checksum: b5b0408c6eb7591143c394f3be082fee690ddd21f0fdde0a0a01106799e847f67fcae1b7e56b0a0c173290e29c6aca9562e82b300708a268bc8f88f3d6613cb9 - languageName: node - linkType: hard - "array-differ@npm:^3.0.0": version: 3.0.0 resolution: "array-differ@npm:3.0.0" @@ -4497,13 +4463,6 @@ __metadata: languageName: node linkType: hard -"array-unique@npm:^0.3.2": - version: 0.3.2 - resolution: "array-unique@npm:0.3.2" - checksum: da344b89cfa6b0a5c221f965c21638bfb76b57b45184a01135382186924f55973cd9b171d4dad6bf606c6d9d36b0d721d091afdc9791535ead97ccbe78f8a888 - languageName: node - linkType: hard - "array.prototype.flat@npm:^1.3.1": version: 1.3.1 resolution: "array.prototype.flat@npm:1.3.1" @@ -4562,18 +4521,6 @@ __metadata: languageName: node linkType: hard -"asn1.js@npm:^5.2.0": - version: 5.4.1 - resolution: "asn1.js@npm:5.4.1" - dependencies: - bn.js: ^4.0.0 - inherits: ^2.0.1 - minimalistic-assert: ^1.0.0 - safer-buffer: ^2.1.0 - checksum: 3786a101ac6f304bd4e9a7df79549a7561950a13d4bcaec0c7790d44c80d147c1a94ba3d4e663673406064642a40b23fcd6c82a9952468e386c1a1376d747f9a - languageName: node - linkType: hard - "asn1@npm:~0.2.3": version: 0.2.6 resolution: "asn1@npm:0.2.6" @@ -4590,23 +4537,6 @@ __metadata: languageName: node linkType: hard -"assert@npm:^1.1.1": - version: 1.5.0 - resolution: "assert@npm:1.5.0" - dependencies: - object-assign: ^4.1.1 - util: 0.10.3 - checksum: 9be48435f726029ae7020c5888a3566bf4d617687aab280827f2e4029644b6515a9519ea10d018b342147c02faf73d9e9419e780e8937b3786ee4945a0ca71e5 - languageName: node - linkType: hard - -"assign-symbols@npm:^1.0.0": - version: 1.0.0 - resolution: "assign-symbols@npm:1.0.0" - checksum: c0eb895911d05b6b2d245154f70461c5e42c107457972e5ebba38d48967870dee53bcdf6c7047990586daa80fab8dab3cc6300800fbd47b454247fdedd859a2c - languageName: node - linkType: hard - "astral-regex@npm:^2.0.0": version: 2.0.0 resolution: "astral-regex@npm:2.0.0" @@ -4614,13 +4544,6 @@ __metadata: languageName: node linkType: hard -"async-each@npm:^1.0.1": - version: 1.0.3 - resolution: "async-each@npm:1.0.3" - checksum: 868651cfeb209970b367fbb96df1e1c8dc0b22c681cda7238417005ab2a5fbd944ee524b43f2692977259a57b7cc2547e03ff68f2b5113dbdf953d48cc078dc3 - languageName: node - linkType: hard - "async@npm:^3.2.3": version: 3.2.4 resolution: "async@npm:3.2.4" @@ -4642,15 +4565,6 @@ __metadata: languageName: node linkType: hard -"atob@npm:^2.1.2": - version: 2.1.2 - resolution: "atob@npm:2.1.2" - bin: - atob: bin/atob.js - checksum: dfeeeb70090c5ebea7be4b9f787f866686c645d9f39a0d184c817252d0cf08455ed25267d79c03254d3be1f03ac399992a792edcd5ffb9c91e097ab5ef42833a - languageName: node - linkType: hard - "available-typed-arrays@npm:^1.0.5": version: 1.0.5 resolution: "available-typed-arrays@npm:1.0.5" @@ -4829,28 +4743,13 @@ __metadata: languageName: node linkType: hard -"base64-js@npm:^1.0.2, base64-js@npm:^1.3.1": +"base64-js@npm:^1.3.1": version: 1.5.1 resolution: "base64-js@npm:1.5.1" checksum: 669632eb3745404c2f822a18fc3a0122d2f9a7a13f7fb8b5823ee19d1d2ff9ee5b52c53367176ea4ad093c332fd5ab4bd0ebae5a8e27917a4105a4cfc86b1005 languageName: node linkType: hard -"base@npm:^0.11.1": - version: 0.11.2 - resolution: "base@npm:0.11.2" - dependencies: - cache-base: ^1.0.1 - class-utils: ^0.3.5 - component-emitter: ^1.2.1 - define-property: ^1.0.0 - isobject: ^3.0.1 - mixin-deep: ^1.2.0 - pascalcase: ^0.1.1 - checksum: a4a146b912e27eea8f66d09cb0c9eab666f32ce27859a7dfd50f38cd069a2557b39f16dba1bc2aecb3b44bf096738dd207b7970d99b0318423285ab1b1994edd - languageName: node - linkType: hard - "bcrypt-pbkdf@npm:^1.0.0": version: 1.0.2 resolution: "bcrypt-pbkdf@npm:1.0.2" @@ -4888,13 +4787,6 @@ __metadata: languageName: node linkType: hard -"binary-extensions@npm:^1.0.0": - version: 1.13.1 - resolution: "binary-extensions@npm:1.13.1" - checksum: ad7747f33c07e94ba443055de130b50c8b8b130a358bca064c580d91769ca6a69c7ac65ca008ff044ed4541d2c6ad45496e1fadbef5218a68770996b6a2194d7 - languageName: node - linkType: hard - "binary-extensions@npm:^2.0.0": version: 2.2.0 resolution: "binary-extensions@npm:2.2.0" @@ -4902,15 +4794,6 @@ __metadata: languageName: node linkType: hard -"bindings@npm:^1.5.0": - version: 1.5.0 - resolution: "bindings@npm:1.5.0" - dependencies: - file-uri-to-path: 1.0.0 - checksum: 65b6b48095717c2e6105a021a7da4ea435aa8d3d3cd085cb9e85bcb6e5773cf318c4745c3f7c504412855940b585bdf9b918236612a1c7a7942491de176f1ae7 - languageName: node - linkType: hard - "bl@npm:^4.0.3, bl@npm:^4.1.0": version: 4.1.0 resolution: "bl@npm:4.1.0" @@ -4922,27 +4805,6 @@ __metadata: languageName: node linkType: hard -"bluebird@npm:^3.5.5": - version: 3.7.2 - resolution: "bluebird@npm:3.7.2" - checksum: 869417503c722e7dc54ca46715f70e15f4d9c602a423a02c825570862d12935be59ed9c7ba34a9b31f186c017c23cac6b54e35446f8353059c101da73eac22ef - languageName: node - linkType: hard - -"bn.js@npm:^4.0.0, bn.js@npm:^4.1.0, bn.js@npm:^4.11.9": - version: 4.12.0 - resolution: "bn.js@npm:4.12.0" - checksum: 39afb4f15f4ea537b55eaf1446c896af28ac948fdcf47171961475724d1bb65118cca49fa6e3d67706e4790955ec0e74de584e45c8f1ef89f46c812bee5b5a12 - languageName: node - linkType: hard - -"bn.js@npm:^5.0.0, bn.js@npm:^5.1.1": - version: 5.2.1 - resolution: "bn.js@npm:5.2.1" - checksum: 3dd8c8d38055fedfa95c1d5fc3c99f8dd547b36287b37768db0abab3c239711f88ff58d18d155dd8ad902b0b0cee973747b7ae20ea12a09473272b0201c9edd3 - languageName: node - linkType: hard - "brace-expansion@npm:^1.1.7": version: 1.1.11 resolution: "brace-expansion@npm:1.1.11" @@ -4962,24 +4824,6 @@ __metadata: languageName: node linkType: hard -"braces@npm:^2.3.1, braces@npm:^2.3.2": - version: 2.3.2 - resolution: "braces@npm:2.3.2" - dependencies: - arr-flatten: ^1.1.0 - array-unique: ^0.3.2 - extend-shallow: ^2.0.1 - fill-range: ^4.0.0 - isobject: ^3.0.1 - repeat-element: ^1.1.2 - snapdragon: ^0.8.1 - snapdragon-node: ^2.0.1 - split-string: ^3.0.2 - to-regex: ^3.0.1 - checksum: e30dcb6aaf4a31c8df17d848aa283a65699782f75ad61ae93ec25c9729c66cf58e66f0000a9fec84e4add1135bb7da40f7cb9601b36bebcfa9ca58e8d5c07de0 - languageName: node - linkType: hard - "braces@npm:^3.0.1, braces@npm:^3.0.2, braces@npm:~3.0.2": version: 3.0.2 resolution: "braces@npm:3.0.2" @@ -4989,13 +4833,6 @@ __metadata: languageName: node linkType: hard -"brorand@npm:^1.0.1, brorand@npm:^1.1.0": - version: 1.1.0 - resolution: "brorand@npm:1.1.0" - checksum: 8a05c9f3c4b46572dec6ef71012b1946db6cae8c7bb60ccd4b7dd5a84655db49fe043ecc6272e7ef1f69dc53d6730b9e2a3a03a8310509a3d797a618cbee52be - languageName: node - linkType: hard - "browser-process-hrtime@npm:^1.0.0": version: 1.0.0 resolution: "browser-process-hrtime@npm:1.0.0" @@ -5003,76 +4840,17 @@ __metadata: languageName: node linkType: hard -"browserify-aes@npm:^1.0.0, browserify-aes@npm:^1.0.4": - version: 1.2.0 - resolution: "browserify-aes@npm:1.2.0" - dependencies: - buffer-xor: ^1.0.3 - cipher-base: ^1.0.0 - create-hash: ^1.1.0 - evp_bytestokey: ^1.0.3 - inherits: ^2.0.1 - safe-buffer: ^5.0.1 - checksum: 4a17c3eb55a2aa61c934c286f34921933086bf6d67f02d4adb09fcc6f2fc93977b47d9d884c25619144fccd47b3b3a399e1ad8b3ff5a346be47270114bcf7104 - languageName: node - linkType: hard - -"browserify-cipher@npm:^1.0.0": - version: 1.0.1 - resolution: "browserify-cipher@npm:1.0.1" - dependencies: - browserify-aes: ^1.0.4 - browserify-des: ^1.0.0 - evp_bytestokey: ^1.0.0 - checksum: 2d8500acf1ee535e6bebe808f7a20e4c3a9e2ed1a6885fff1facbfd201ac013ef030422bec65ca9ece8ffe82b03ca580421463f9c45af6c8415fd629f4118c13 - languageName: node - linkType: hard - -"browserify-des@npm:^1.0.0": - version: 1.0.2 - resolution: "browserify-des@npm:1.0.2" - dependencies: - cipher-base: ^1.0.1 - des.js: ^1.0.0 - inherits: ^2.0.1 - safe-buffer: ^5.1.2 - checksum: b15a3e358a1d78a3b62ddc06c845d02afde6fc826dab23f1b9c016e643e7b1fda41de628d2110b712f6a44fb10cbc1800bc6872a03ddd363fb50768e010395b7 - languageName: node - linkType: hard - -"browserify-rsa@npm:^4.0.0, browserify-rsa@npm:^4.0.1": - version: 4.1.0 - resolution: "browserify-rsa@npm:4.1.0" - dependencies: - bn.js: ^5.0.0 - randombytes: ^2.0.1 - checksum: 155f0c135873efc85620571a33d884aa8810e40176125ad424ec9d85016ff105a07f6231650914a760cca66f29af0494087947b7be34880dd4599a0cd3c38e54 - languageName: node - linkType: hard - -"browserify-sign@npm:^4.0.0": - version: 4.2.1 - resolution: "browserify-sign@npm:4.2.1" - dependencies: - bn.js: ^5.1.1 - browserify-rsa: ^4.0.1 - create-hash: ^1.2.0 - create-hmac: ^1.1.7 - elliptic: ^6.5.3 - inherits: ^2.0.4 - parse-asn1: ^5.1.5 - readable-stream: ^3.6.0 - safe-buffer: ^5.2.0 - checksum: 0221f190e3f5b2d40183fa51621be7e838d9caa329fe1ba773406b7637855f37b30f5d83e52ff8f244ed12ffe6278dd9983638609ed88c841ce547e603855707 - languageName: node - linkType: hard - -"browserify-zlib@npm:^0.2.0": - version: 0.2.0 - resolution: "browserify-zlib@npm:0.2.0" +"browserslist@npm:^4.14.5": + version: 4.21.5 + resolution: "browserslist@npm:4.21.5" dependencies: - pako: ~1.0.5 - checksum: 5cd9d6a665190fedb4a97dfbad8dabc8698d8a507298a03f42c734e96d58ca35d3c7d4085e283440bbca1cd1938cff85031728079bedb3345310c58ab1ec92d6 + caniuse-lite: ^1.0.30001449 + electron-to-chromium: ^1.4.284 + node-releases: ^2.0.8 + update-browserslist-db: ^1.0.10 + bin: + browserslist: cli.js + checksum: 9755986b22e73a6a1497fd8797aedd88e04270be33ce66ed5d85a1c8a798292a65e222b0f251bafa1c2522261e237d73b08b58689d4920a607e5a53d56dc4706 languageName: node linkType: hard @@ -5115,24 +4893,6 @@ __metadata: languageName: node linkType: hard -"buffer-xor@npm:^1.0.3": - version: 1.0.3 - resolution: "buffer-xor@npm:1.0.3" - checksum: 10c520df29d62fa6e785e2800e586a20fc4f6dfad84bcdbd12e1e8a83856de1cb75c7ebd7abe6d036bbfab738a6cf18a3ae9c8e5a2e2eb3167ca7399ce65373a - languageName: node - linkType: hard - -"buffer@npm:^4.3.0": - version: 4.9.2 - resolution: "buffer@npm:4.9.2" - dependencies: - base64-js: ^1.0.2 - ieee754: ^1.1.4 - isarray: ^1.0.0 - checksum: 8801bc1ba08539f3be70eee307a8b9db3d40f6afbfd3cf623ab7ef41dffff1d0a31de0addbe1e66e0ca5f7193eeb667bfb1ecad3647f8f1b0750de07c13295c3 - languageName: node - linkType: hard - "buffer@npm:^5.5.0": version: 5.7.1 resolution: "buffer@npm:5.7.1" @@ -5150,13 +4910,6 @@ __metadata: languageName: node linkType: hard -"builtin-status-codes@npm:^3.0.0": - version: 3.0.0 - resolution: "builtin-status-codes@npm:3.0.0" - checksum: 1119429cf4b0d57bf76b248ad6f529167d343156ebbcc4d4e4ad600484f6bc63002595cbb61b67ad03ce55cd1d3c4711c03bbf198bf24653b8392420482f3773 - languageName: node - linkType: hard - "builtins@npm:^1.0.3": version: 1.0.3 resolution: "builtins@npm:1.0.3" @@ -5187,29 +4940,6 @@ __metadata: languageName: node linkType: hard -"cacache@npm:^12.0.2": - version: 12.0.4 - resolution: "cacache@npm:12.0.4" - dependencies: - bluebird: ^3.5.5 - chownr: ^1.1.1 - figgy-pudding: ^3.5.1 - glob: ^7.1.4 - graceful-fs: ^4.1.15 - infer-owner: ^1.0.3 - lru-cache: ^5.1.1 - mississippi: ^3.0.0 - mkdirp: ^0.5.1 - move-concurrently: ^1.0.1 - promise-inflight: ^1.0.1 - rimraf: ^2.6.3 - ssri: ^6.0.1 - unique-filename: ^1.1.1 - y18n: ^4.0.0 - checksum: c88a72f36939b2523533946ffb27828443db5bf5995d761b35ae17af1eb6c8e20ac55b00b74c2ca900b2e1e917f0afba6847bf8cc16bee05ccca6aa150e0830c - languageName: node - linkType: hard - "cacache@npm:^16.0.0, cacache@npm:^16.0.6, cacache@npm:^16.1.0": version: 16.1.3 resolution: "cacache@npm:16.1.3" @@ -5236,23 +4966,6 @@ __metadata: languageName: node linkType: hard -"cache-base@npm:^1.0.1": - version: 1.0.1 - resolution: "cache-base@npm:1.0.1" - dependencies: - collection-visit: ^1.0.0 - component-emitter: ^1.2.1 - get-value: ^2.0.6 - has-value: ^1.0.0 - isobject: ^3.0.1 - set-value: ^2.0.0 - to-object-path: ^0.3.0 - union-value: ^1.0.0 - unset-value: ^1.0.0 - checksum: 9114b8654fe2366eedc390bad0bcf534e2f01b239a888894e2928cb58cdc1e6ea23a73c6f3450dcfd2058aa73a8a981e723cd1e7c670c047bf11afdc65880107 - languageName: node - linkType: hard - "call-bind@npm:^1.0.0, call-bind@npm:^1.0.2": version: 1.0.2 resolution: "call-bind@npm:1.0.2" @@ -5302,6 +5015,13 @@ __metadata: languageName: node linkType: hard +"caniuse-lite@npm:^1.0.30001449": + version: 1.0.30001466 + resolution: "caniuse-lite@npm:1.0.30001466" + checksum: d81d0801f72162ebb7edb222cb48702f351e1a2d6acc9f340913f5b07e28c2105d1d2de9f0633c9b89e1aa1cd14f5d9154e270bf7b61296a7209745b32bdb01c + languageName: node + linkType: hard + "caseless@npm:~0.12.0": version: 0.12.0 resolution: "caseless@npm:0.12.0" @@ -5373,30 +5093,7 @@ __metadata: languageName: node linkType: hard -"chokidar@npm:^2.1.8": - version: 2.1.8 - resolution: "chokidar@npm:2.1.8" - dependencies: - anymatch: ^2.0.0 - async-each: ^1.0.1 - braces: ^2.3.2 - fsevents: ^1.2.7 - glob-parent: ^3.1.0 - inherits: ^2.0.3 - is-binary-path: ^1.0.0 - is-glob: ^4.0.0 - normalize-path: ^3.0.0 - path-is-absolute: ^1.0.0 - readdirp: ^2.2.1 - upath: ^1.1.1 - dependenciesMeta: - fsevents: - optional: true - checksum: 0c43e89cbf0268ef1e1f41ce8ec5233c7ba022c6f3282c2ef6530e351d42396d389a1148c5a040f291cf1f4083a4c6b2f51dad3f31c726442ea9a337de316bcf - languageName: node - linkType: hard - -"chokidar@npm:^3.4.1, chokidar@npm:^3.5.3": +"chokidar@npm:^3.5.3": version: 3.5.3 resolution: "chokidar@npm:3.5.3" dependencies: @@ -5415,13 +5112,6 @@ __metadata: languageName: node linkType: hard -"chownr@npm:^1.1.1": - version: 1.1.4 - resolution: "chownr@npm:1.1.4" - checksum: 115648f8eb38bac5e41c3857f3e663f9c39ed6480d1349977c4d96c95a47266fcacc5a5aabf3cb6c481e22d72f41992827db47301851766c4fd77ac21a4f081d - languageName: node - linkType: hard - "chownr@npm:^2.0.0": version: 2.0.0 resolution: "chownr@npm:2.0.0" @@ -5450,16 +5140,6 @@ __metadata: languageName: node linkType: hard -"cipher-base@npm:^1.0.0, cipher-base@npm:^1.0.1, cipher-base@npm:^1.0.3": - version: 1.0.4 - resolution: "cipher-base@npm:1.0.4" - dependencies: - inherits: ^2.0.1 - safe-buffer: ^5.0.1 - checksum: 47d3568dbc17431a339bad1fe7dff83ac0891be8206911ace3d3b818fc695f376df809bea406e759cdea07fff4b454fa25f1013e648851bec790c1d75763032e - languageName: node - linkType: hard - "cjs-module-lexer@npm:^1.0.0": version: 1.2.2 resolution: "cjs-module-lexer@npm:1.2.2" @@ -5467,18 +5147,6 @@ __metadata: languageName: node linkType: hard -"class-utils@npm:^0.3.5": - version: 0.3.6 - resolution: "class-utils@npm:0.3.6" - dependencies: - arr-union: ^3.1.0 - define-property: ^0.2.5 - isobject: ^3.0.0 - static-extend: ^0.1.1 - checksum: be108900801e639e50f96a7e4bfa8867c753a7750a7603879f3981f8b0a89cba657497a2d5f40cd4ea557ff15d535a100818bb486baf6e26fe5d7872e75f1078 - languageName: node - linkType: hard - "clean-stack@npm:^2.0.0": version: 2.2.0 resolution: "clean-stack@npm:2.2.0" @@ -5630,16 +5298,6 @@ __metadata: languageName: node linkType: hard -"collection-visit@npm:^1.0.0": - version: 1.0.0 - resolution: "collection-visit@npm:1.0.0" - dependencies: - map-visit: ^1.0.0 - object-visit: ^1.0.0 - checksum: 15d9658fe6eb23594728346adad5433b86bb7a04fd51bbab337755158722f9313a5376ef479de5b35fbc54140764d0d39de89c339f5d25b959ed221466981da9 - languageName: node - linkType: hard - "color-convert@npm:^1.9.0": version: 1.9.3 resolution: "color-convert@npm:1.9.3" @@ -5759,13 +5417,6 @@ __metadata: languageName: node linkType: hard -"component-emitter@npm:^1.2.1": - version: 1.3.0 - resolution: "component-emitter@npm:1.3.0" - checksum: b3c46de38ffd35c57d1c02488355be9f218e582aec72d72d1b8bbec95a3ac1b38c96cd6e03ff015577e68f550fbb361a3bfdbd9bb248be9390b7b3745691be6b - languageName: node - linkType: hard - "concat-map@npm:0.0.1": version: 0.0.1 resolution: "concat-map@npm:0.0.1" @@ -5773,7 +5424,7 @@ __metadata: languageName: node linkType: hard -"concat-stream@npm:^1.5.0, concat-stream@npm:^1.5.2": +"concat-stream@npm:^1.5.2": version: 1.6.2 resolution: "concat-stream@npm:1.6.2" dependencies: @@ -5807,13 +5458,6 @@ __metadata: languageName: node linkType: hard -"console-browserify@npm:^1.1.0": - version: 1.2.0 - resolution: "console-browserify@npm:1.2.0" - checksum: 226591eeff8ed68e451dffb924c1fb750c654d54b9059b3b261d360f369d1f8f70650adecf2c7136656236a4bfeb55c39281b5d8a55d792ebbb99efd3d848d52 - languageName: node - linkType: hard - "console-control-strings@npm:^1.0.0, console-control-strings@npm:^1.1.0, console-control-strings@npm:~1.1.0": version: 1.1.0 resolution: "console-control-strings@npm:1.1.0" @@ -5821,13 +5465,6 @@ __metadata: languageName: node linkType: hard -"constants-browserify@npm:^1.0.0": - version: 1.0.0 - resolution: "constants-browserify@npm:1.0.0" - checksum: f7ac8c6d0b6e4e0c77340a1d47a3574e25abd580bfd99ad707b26ff7618596cf1a5e5ce9caf44715e9e01d4a5d12cb3b4edaf1176f34c19adb2874815a56e64f - languageName: node - linkType: hard - "conventional-changelog-angular@npm:5.0.12": version: 5.0.12 resolution: "conventional-changelog-angular@npm:5.0.12" @@ -5944,27 +5581,6 @@ __metadata: languageName: node linkType: hard -"copy-concurrently@npm:^1.0.0": - version: 1.0.5 - resolution: "copy-concurrently@npm:1.0.5" - dependencies: - aproba: ^1.1.1 - fs-write-stream-atomic: ^1.0.8 - iferr: ^0.1.5 - mkdirp: ^0.5.1 - rimraf: ^2.5.4 - run-queue: ^1.0.0 - checksum: 63c169f582e09445260988f697b2d07793d439dfc31e97c8999707bd188dd94d1c7f2ca3533c7786fb75f03a3f2f54ad1ee08055f95f61bb8d2e862498c1d460 - languageName: node - linkType: hard - -"copy-descriptor@npm:^0.1.0": - version: 0.1.1 - resolution: "copy-descriptor@npm:0.1.1" - checksum: d4b7b57b14f1d256bb9aa0b479241048afd7f5bcf22035fc7b94e8af757adeae247ea23c1a774fe44869fd5694efba4a969b88d966766c5245fdee59837fe45b - languageName: node - linkType: hard - "core-js-compat@npm:^3.25.1": version: 3.27.2 resolution: "core-js-compat@npm:3.27.2" @@ -6033,43 +5649,6 @@ __metadata: languageName: node linkType: hard -"create-ecdh@npm:^4.0.0": - version: 4.0.4 - resolution: "create-ecdh@npm:4.0.4" - dependencies: - bn.js: ^4.1.0 - elliptic: ^6.5.3 - checksum: 0dd7fca9711d09e152375b79acf1e3f306d1a25ba87b8ff14c2fd8e68b83aafe0a7dd6c4e540c9ffbdd227a5fa1ad9b81eca1f233c38bb47770597ba247e614b - languageName: node - linkType: hard - -"create-hash@npm:^1.1.0, create-hash@npm:^1.1.2, create-hash@npm:^1.2.0": - version: 1.2.0 - resolution: "create-hash@npm:1.2.0" - dependencies: - cipher-base: ^1.0.1 - inherits: ^2.0.1 - md5.js: ^1.3.4 - ripemd160: ^2.0.1 - sha.js: ^2.4.0 - checksum: 02a6ae3bb9cd4afee3fabd846c1d8426a0e6b495560a977ba46120c473cb283be6aa1cace76b5f927cf4e499c6146fb798253e48e83d522feba807d6b722eaa9 - languageName: node - linkType: hard - -"create-hmac@npm:^1.1.0, create-hmac@npm:^1.1.4, create-hmac@npm:^1.1.7": - version: 1.1.7 - resolution: "create-hmac@npm:1.1.7" - dependencies: - cipher-base: ^1.0.3 - create-hash: ^1.1.0 - inherits: ^2.0.1 - ripemd160: ^2.0.0 - safe-buffer: ^5.0.1 - sha.js: ^2.4.8 - checksum: ba12bb2257b585a0396108c72830e85f882ab659c3320c83584b1037f8ab72415095167ced80dc4ce8e446a8ecc4b2acf36d87befe0707d73b26cf9dc77440ed - languageName: node - linkType: hard - "create-jest-runner@npm:^0.12.0": version: 0.12.3 resolution: "create-jest-runner@npm:0.12.3" @@ -6114,25 +5693,6 @@ __metadata: languageName: node linkType: hard -"crypto-browserify@npm:^3.11.0": - version: 3.12.0 - resolution: "crypto-browserify@npm:3.12.0" - dependencies: - browserify-cipher: ^1.0.0 - browserify-sign: ^4.0.0 - create-ecdh: ^4.0.0 - create-hash: ^1.1.0 - create-hmac: ^1.1.0 - diffie-hellman: ^5.0.0 - inherits: ^2.0.1 - pbkdf2: ^3.0.3 - public-encrypt: ^4.0.0 - randombytes: ^2.0.0 - randomfill: ^1.0.3 - checksum: c1609af82605474262f3eaa07daa0b2140026bd264ab316d4bf1170272570dbe02f0c49e29407fe0d3634f96c507c27a19a6765fb856fed854a625f9d15618e2 - languageName: node - linkType: hard - "cssom@npm:^0.4.4": version: 0.4.4 resolution: "cssom@npm:0.4.4" @@ -6170,13 +5730,6 @@ __metadata: languageName: node linkType: hard -"cyclist@npm:^1.0.1": - version: 1.0.1 - resolution: "cyclist@npm:1.0.1" - checksum: 3cc2fdeb358599ca0ea96f5ecf2fc530ccab7ed1f8aa1a894aebfacd2009281bd7380cb9b30db02a18cdd00b3ed1d7ce81a3b11fe56e33a6a0fe4424dc592fbe - languageName: node - linkType: hard - "dargs@npm:^7.0.0": version: 7.0.0 resolution: "dargs@npm:7.0.0" @@ -6241,15 +5794,6 @@ __metadata: languageName: node linkType: hard -"debug@npm:^2.2.0, debug@npm:^2.3.3": - version: 2.6.9 - resolution: "debug@npm:2.6.9" - dependencies: - ms: 2.0.0 - checksum: d2f51589ca66df60bf36e1fa6e4386b318c3f1e06772280eea5b1ae9fd3d05e9c2b7fd8a7d862457d00853c75b00451aa2d7459b924629ee385287a650f58fe6 - languageName: node - linkType: hard - "debug@npm:^3.2.7": version: 3.2.7 resolution: "debug@npm:3.2.7" @@ -6290,13 +5834,6 @@ __metadata: languageName: node linkType: hard -"decode-uri-component@npm:^0.2.0": - version: 0.2.2 - resolution: "decode-uri-component@npm:0.2.2" - checksum: 95476a7d28f267292ce745eac3524a9079058bbb35767b76e3ee87d42e34cd0275d2eb19d9d08c3e167f97556e8a2872747f5e65cbebcac8b0c98d83e285f139 - languageName: node - linkType: hard - "dedent@npm:0.7.0, dedent@npm:^0.7.0": version: 0.7.0 resolution: "dedent@npm:0.7.0" @@ -6344,34 +5881,6 @@ __metadata: languageName: node linkType: hard -"define-property@npm:^0.2.5": - version: 0.2.5 - resolution: "define-property@npm:0.2.5" - dependencies: - is-descriptor: ^0.1.0 - checksum: 85af107072b04973b13f9e4128ab74ddfda48ec7ad2e54b193c0ffb57067c4ce5b7786a7b4ae1f24bd03e87c5d18766b094571810b314d7540f86d4354dbd394 - languageName: node - linkType: hard - -"define-property@npm:^1.0.0": - version: 1.0.0 - resolution: "define-property@npm:1.0.0" - dependencies: - is-descriptor: ^1.0.0 - checksum: 5fbed11dace44dd22914035ba9ae83ad06008532ca814d7936a53a09e897838acdad5b108dd0688cc8d2a7cf0681acbe00ee4136cf36743f680d10517379350a - languageName: node - linkType: hard - -"define-property@npm:^2.0.2": - version: 2.0.2 - resolution: "define-property@npm:2.0.2" - dependencies: - is-descriptor: ^1.0.2 - isobject: ^3.0.1 - checksum: 3217ed53fc9eed06ba8da6f4d33e28c68a82e2f2a8ab4d562c4920d8169a166fe7271453675e6c69301466f36a65d7f47edf0cf7f474b9aa52a5ead9c1b13c99 - languageName: node - linkType: hard - "delayed-stream@npm:~1.0.0": version: 1.0.0 resolution: "delayed-stream@npm:1.0.0" @@ -6400,16 +5909,6 @@ __metadata: languageName: node linkType: hard -"des.js@npm:^1.0.0": - version: 1.0.1 - resolution: "des.js@npm:1.0.1" - dependencies: - inherits: ^2.0.1 - minimalistic-assert: ^1.0.0 - checksum: 1ec2eedd7ed6bd61dd5e0519fd4c96124e93bb22de8a9d211b02d63e5dd152824853d919bb2090f965cc0e3eb9c515950a9836b332020d810f9c71feb0fd7df4 - languageName: node - linkType: hard - "detect-indent@npm:^5.0.0": version: 5.0.0 resolution: "detect-indent@npm:5.0.0" @@ -6448,17 +5947,6 @@ __metadata: languageName: node linkType: hard -"diffie-hellman@npm:^5.0.0": - version: 5.0.3 - resolution: "diffie-hellman@npm:5.0.3" - dependencies: - bn.js: ^4.1.0 - miller-rabin: ^4.0.0 - randombytes: ^2.0.0 - checksum: 0e620f322170c41076e70181dd1c24e23b08b47dbb92a22a644f3b89b6d3834b0f8ee19e37916164e5eb1ee26d2aa836d6129f92723995267250a0b541811065 - languageName: node - linkType: hard - "dir-glob@npm:^3.0.1": version: 3.0.1 resolution: "dir-glob@npm:3.0.1" @@ -6493,13 +5981,6 @@ __metadata: languageName: node linkType: hard -"domain-browser@npm:^1.1.1": - version: 1.2.0 - resolution: "domain-browser@npm:1.2.0" - checksum: 8f1235c7f49326fb762f4675795246a6295e7dd566b4697abec24afdba2460daa7dfbd1a73d31efbf5606b3b7deadb06ce47cf06f0a476e706153d62a4ff2b90 - languageName: node - linkType: hard - "domexception@npm:^2.0.1": version: 2.0.1 resolution: "domexception@npm:2.0.1" @@ -6550,18 +6031,6 @@ __metadata: languageName: node linkType: hard -"duplexify@npm:^3.4.2, duplexify@npm:^3.6.0": - version: 3.7.1 - resolution: "duplexify@npm:3.7.1" - dependencies: - end-of-stream: ^1.0.0 - inherits: ^2.0.1 - readable-stream: ^2.0.0 - stream-shift: ^1.0.0 - checksum: 3c2ed2223d956a5da713dae12ba8295acb61d9acd966ccbba938090d04f4574ca4dca75cca089b5077c2d7e66101f32e6ea9b36a78ca213eff574e7a8b8accf2 - languageName: node - linkType: hard - "eastasianwidth@npm:^0.2.0": version: 0.2.0 resolution: "eastasianwidth@npm:0.2.0" @@ -6597,18 +6066,10 @@ __metadata: languageName: node linkType: hard -"elliptic@npm:^6.5.3": - version: 6.5.4 - resolution: "elliptic@npm:6.5.4" - dependencies: - bn.js: ^4.11.9 - brorand: ^1.1.0 - hash.js: ^1.0.0 - hmac-drbg: ^1.0.1 - inherits: ^2.0.4 - minimalistic-assert: ^1.0.1 - minimalistic-crypto-utils: ^1.0.1 - checksum: d56d21fd04e97869f7ffcc92e18903b9f67f2d4637a23c860492fbbff5a3155fd9ca0184ce0c865dd6eb2487d234ce9551335c021c376cd2d3b7cb749c7d10f4 +"electron-to-chromium@npm:^1.4.284": + version: 1.4.328 + resolution: "electron-to-chromium@npm:1.4.328" + checksum: 82c1617a77e40ac4ca5011749318a2fee8f8c75f8b517fcff7602219c85fd97a9fab2d5a1353ea10fb7f9c7d18acb90c9ed58c2292256f81e2ffa42ee66c4b0b languageName: node linkType: hard @@ -6649,7 +6110,7 @@ __metadata: languageName: node linkType: hard -"end-of-stream@npm:^1.0.0, end-of-stream@npm:^1.1.0, end-of-stream@npm:^1.4.1": +"end-of-stream@npm:^1.4.1": version: 1.4.4 resolution: "end-of-stream@npm:1.4.4" dependencies: @@ -6658,17 +6119,6 @@ __metadata: languageName: node linkType: hard -"enhanced-resolve@npm:^4.5.0": - version: 4.5.0 - resolution: "enhanced-resolve@npm:4.5.0" - dependencies: - graceful-fs: ^4.1.2 - memory-fs: ^0.5.0 - tapable: ^1.0.0 - checksum: 4d87488584c4d67d356ef4ba04978af4b2d4d18190cb859efac8e8475a34d5d6c069df33faa5a0a22920b0586dbf330f6a08d52bb15a8771a9ce4d70a2da74ba - languageName: node - linkType: hard - "enhanced-resolve@npm:^5.10.0": version: 5.12.0 resolution: "enhanced-resolve@npm:5.12.0" @@ -6718,7 +6168,7 @@ __metadata: languageName: node linkType: hard -"errno@npm:^0.1.3, errno@npm:~0.1.7": +"errno@npm:^0.1.3": version: 0.1.8 resolution: "errno@npm:0.1.8" dependencies: @@ -6779,6 +6229,13 @@ __metadata: languageName: node linkType: hard +"es-module-lexer@npm:^0.9.0": + version: 0.9.3 + resolution: "es-module-lexer@npm:0.9.3" + checksum: 84bbab23c396281db2c906c766af58b1ae2a1a2599844a504df10b9e8dc77ec800b3211fdaa133ff700f5703d791198807bba25d9667392d27a5e9feda344da8 + languageName: node + linkType: hard + "es-set-tostringtag@npm:^2.0.1": version: 2.0.1 resolution: "es-set-tostringtag@npm:2.0.1" @@ -7392,17 +6849,7 @@ __metadata: languageName: node linkType: hard -"eslint-scope@npm:^4.0.3": - version: 4.0.3 - resolution: "eslint-scope@npm:4.0.3" - dependencies: - esrecurse: ^4.1.0 - estraverse: ^4.1.1 - checksum: c5f835f681884469991fe58d76a554688d9c9e50811299ccd4a8f79993a039f5bcb0ee6e8de2b0017d97c794b5832ef3b21c9aac66228e3aa0f7a0485bcfb65b - languageName: node - linkType: hard - -"eslint-scope@npm:^5.1.1": +"eslint-scope@npm:5.1.1, eslint-scope@npm:^5.1.1": version: 5.1.1 resolution: "eslint-scope@npm:5.1.1" dependencies: @@ -7542,7 +6989,7 @@ __metadata: languageName: node linkType: hard -"esrecurse@npm:^4.1.0, esrecurse@npm:^4.3.0": +"esrecurse@npm:^4.3.0": version: 4.3.0 resolution: "esrecurse@npm:4.3.0" dependencies: @@ -7586,24 +7033,13 @@ __metadata: languageName: node linkType: hard -"events@npm:^3.0.0": +"events@npm:^3.2.0": version: 3.3.0 resolution: "events@npm:3.3.0" checksum: f6f487ad2198aa41d878fa31452f1a3c00958f46e9019286ff4787c84aac329332ab45c9cdc8c445928fc6d7ded294b9e005a7fce9426488518017831b272780 languageName: node linkType: hard -"evp_bytestokey@npm:^1.0.0, evp_bytestokey@npm:^1.0.3": - version: 1.0.3 - resolution: "evp_bytestokey@npm:1.0.3" - dependencies: - md5.js: ^1.3.4 - node-gyp: latest - safe-buffer: ^5.1.1 - checksum: ad4e1577f1a6b721c7800dcc7c733fe01f6c310732bb5bf2240245c2a5b45a38518b91d8be2c610611623160b9d1c0e91f1ce96d639f8b53e8894625cf20fa45 - languageName: node - linkType: hard - "execa@npm:5.0.0": version: 5.0.0 resolution: "execa@npm:5.0.0" @@ -7662,21 +7098,6 @@ __metadata: languageName: node linkType: hard -"expand-brackets@npm:^2.1.4": - version: 2.1.4 - resolution: "expand-brackets@npm:2.1.4" - dependencies: - debug: ^2.3.3 - define-property: ^0.2.5 - extend-shallow: ^2.0.1 - posix-character-classes: ^0.1.0 - regex-not: ^1.0.0 - snapdragon: ^0.8.1 - to-regex: ^3.0.1 - checksum: 1781d422e7edfa20009e2abda673cadb040a6037f0bd30fcd7357304f4f0c284afd420d7622722ca4a016f39b6d091841ab57b401c1f7e2e5131ac65b9f14fa1 - languageName: node - linkType: hard - "expect@npm:^29.0.0, expect@npm:^29.4.3": version: 29.4.3 resolution: "expect@npm:29.4.3" @@ -7690,25 +7111,6 @@ __metadata: languageName: node linkType: hard -"extend-shallow@npm:^2.0.1": - version: 2.0.1 - resolution: "extend-shallow@npm:2.0.1" - dependencies: - is-extendable: ^0.1.0 - checksum: 8fb58d9d7a511f4baf78d383e637bd7d2e80843bd9cd0853649108ea835208fb614da502a553acc30208e1325240bb7cc4a68473021612496bb89725483656d8 - languageName: node - linkType: hard - -"extend-shallow@npm:^3.0.0, extend-shallow@npm:^3.0.2": - version: 3.0.2 - resolution: "extend-shallow@npm:3.0.2" - dependencies: - assign-symbols: ^1.0.0 - is-extendable: ^1.0.1 - checksum: a920b0cd5838a9995ace31dfd11ab5e79bf6e295aa566910ce53dff19f4b1c0fda2ef21f26b28586c7a2450ca2b42d97bd8c0f5cec9351a819222bf861e02461 - languageName: node - linkType: hard - "extend@npm:~3.0.2": version: 3.0.2 resolution: "extend@npm:3.0.2" @@ -7727,22 +7129,6 @@ __metadata: languageName: node linkType: hard -"extglob@npm:^2.0.4": - version: 2.0.4 - resolution: "extglob@npm:2.0.4" - dependencies: - array-unique: ^0.3.2 - define-property: ^1.0.0 - expand-brackets: ^2.1.4 - extend-shallow: ^2.0.1 - fragment-cache: ^0.2.1 - regex-not: ^1.0.0 - snapdragon: ^0.8.1 - to-regex: ^3.0.1 - checksum: a41531b8934735b684cef5e8c5a01d0f298d7d384500ceca38793a9ce098125aab04ee73e2d75d5b2901bc5dddd2b64e1b5e3bf19139ea48bac52af4a92f1d00 - languageName: node - linkType: hard - "extsprintf@npm:1.3.0": version: 1.3.0 resolution: "extsprintf@npm:1.3.0" @@ -7831,13 +7217,6 @@ __metadata: languageName: node linkType: hard -"figgy-pudding@npm:^3.5.1": - version: 3.5.2 - resolution: "figgy-pudding@npm:3.5.2" - checksum: 4090bd66193693dcda605e44d6b8715d8fb5c92a67acd57826e55cf816a342f550d57e5638f822b39366e1b2fdb244e99b3068a37213aa1d6c1bf602b8fde5ae - languageName: node - linkType: hard - "figures@npm:3.2.0, figures@npm:^3.0.0": version: 3.2.0 resolution: "figures@npm:3.2.0" @@ -7856,13 +7235,6 @@ __metadata: languageName: node linkType: hard -"file-uri-to-path@npm:1.0.0": - version: 1.0.0 - resolution: "file-uri-to-path@npm:1.0.0" - checksum: b648580bdd893a008c92c7ecc96c3ee57a5e7b6c4c18a9a09b44fb5d36d79146f8e442578bc0e173dc027adf3987e254ba1dfd6e3ec998b7c282873010502144 - languageName: node - linkType: hard - "filelist@npm:^1.0.1": version: 1.0.4 resolution: "filelist@npm:1.0.4" @@ -7872,18 +7244,6 @@ __metadata: languageName: node linkType: hard -"fill-range@npm:^4.0.0": - version: 4.0.0 - resolution: "fill-range@npm:4.0.0" - dependencies: - extend-shallow: ^2.0.1 - is-number: ^3.0.0 - repeat-string: ^1.6.1 - to-regex-range: ^2.1.0 - checksum: dbb5102467786ab42bc7a3ec7380ae5d6bfd1b5177b2216de89e4a541193f8ba599a6db84651bd2c58c8921db41b8cc3d699ea83b477342d3ce404020f73c298 - languageName: node - linkType: hard - "fill-range@npm:^7.0.1": version: 7.0.1 resolution: "fill-range@npm:7.0.1" @@ -7893,17 +7253,6 @@ __metadata: languageName: node linkType: hard -"find-cache-dir@npm:^2.1.0": - version: 2.1.0 - resolution: "find-cache-dir@npm:2.1.0" - dependencies: - commondir: ^1.0.1 - make-dir: ^2.0.0 - pkg-dir: ^3.0.0 - checksum: 60ad475a6da9f257df4e81900f78986ab367d4f65d33cf802c5b91e969c28a8762f098693d7a571b6e4dd4c15166c2da32ae2d18b6766a18e2071079448fdce4 - languageName: node - linkType: hard - "find-up@npm:^2.0.0": version: 2.1.0 resolution: "find-up@npm:2.1.0" @@ -7958,16 +7307,6 @@ __metadata: languageName: node linkType: hard -"flush-write-stream@npm:^1.0.0": - version: 1.1.1 - resolution: "flush-write-stream@npm:1.1.1" - dependencies: - inherits: ^2.0.3 - readable-stream: ^2.3.6 - checksum: 42e07747f83bcd4e799da802e621d6039787749ffd41f5517f8c4f786ee967e31ba32b09f8b28a9c6f67bd4f5346772e604202df350e8d99f4141771bae31279 - languageName: node - linkType: hard - "follow-redirects@npm:^1.15.0": version: 1.15.2 resolution: "follow-redirects@npm:1.15.2" @@ -7987,13 +7326,6 @@ __metadata: languageName: node linkType: hard -"for-in@npm:^1.0.2": - version: 1.0.2 - resolution: "for-in@npm:1.0.2" - checksum: 09f4ae93ce785d253ac963d94c7f3432d89398bf25ac7a24ed034ca393bf74380bdeccc40e0f2d721a895e54211b07c8fad7132e8157827f6f7f059b70b4043d - languageName: node - linkType: hard - "forever-agent@npm:~0.6.1": version: 0.6.1 resolution: "forever-agent@npm:0.6.1" @@ -8034,25 +7366,6 @@ __metadata: languageName: node linkType: hard -"fragment-cache@npm:^0.2.1": - version: 0.2.1 - resolution: "fragment-cache@npm:0.2.1" - dependencies: - map-cache: ^0.2.2 - checksum: 1cbbd0b0116b67d5790175de0038a11df23c1cd2e8dcdbade58ebba5594c2d641dade6b4f126d82a7b4a6ffc2ea12e3d387dbb64ea2ae97cf02847d436f60fdc - languageName: node - linkType: hard - -"from2@npm:^2.1.0": - version: 2.3.0 - resolution: "from2@npm:2.3.0" - dependencies: - inherits: ^2.0.1 - readable-stream: ^2.0.0 - checksum: 6080eba0793dce32f475141fb3d54cc15f84ee52e420ee22ac3ab0ad639dc95a1875bc6eb9c0e1140e94972a36a89dc5542491b85f1ab8df0c126241e0f1a61b - languageName: node - linkType: hard - "fs-constants@npm:^1.0.0": version: 1.0.0 resolution: "fs-constants@npm:1.0.0" @@ -8103,18 +7416,6 @@ __metadata: languageName: node linkType: hard -"fs-write-stream-atomic@npm:^1.0.8": - version: 1.0.10 - resolution: "fs-write-stream-atomic@npm:1.0.10" - dependencies: - graceful-fs: ^4.1.2 - iferr: ^0.1.5 - imurmurhash: ^0.1.4 - readable-stream: 1 || 2 - checksum: 43c2d6817b72127793abc811ebf87a135b03ac7cbe41cdea9eeacf59b23e6e29b595739b083e9461303d525687499a1aaefcec3e5ff9bc82b170edd3dc467ccc - languageName: node - linkType: hard - "fs.realpath@npm:^1.0.0": version: 1.0.0 resolution: "fs.realpath@npm:1.0.0" @@ -8122,17 +7423,6 @@ __metadata: languageName: node linkType: hard -"fsevents@npm:^1.2.7": - version: 1.2.13 - resolution: "fsevents@npm:1.2.13" - dependencies: - bindings: ^1.5.0 - nan: ^2.12.1 - checksum: ae855aa737aaa2f9167e9f70417cf6e45a5cd11918e1fee9923709a0149be52416d765433b4aeff56c789b1152e718cd1b13ddec6043b78cdda68260d86383c1 - conditions: os=darwin - languageName: node - linkType: hard - "fsevents@npm:^2.3.2, fsevents@npm:~2.3.1, fsevents@npm:~2.3.2": version: 2.3.2 resolution: "fsevents@npm:2.3.2" @@ -8143,16 +7433,6 @@ __metadata: languageName: node linkType: hard -"fsevents@patch:fsevents@^1.2.7#~builtin": - version: 1.2.13 - resolution: "fsevents@patch:fsevents@npm%3A1.2.13#~builtin::version=1.2.13&hash=d11327" - dependencies: - bindings: ^1.5.0 - nan: ^2.12.1 - conditions: os=darwin - languageName: node - linkType: hard - "fsevents@patch:fsevents@^2.3.2#~builtin, fsevents@patch:fsevents@~2.3.1#~builtin, fsevents@patch:fsevents@~2.3.2#~builtin": version: 2.3.2 resolution: "fsevents@patch:fsevents@npm%3A2.3.2#~builtin::version=2.3.2&hash=df0bf1" @@ -8311,13 +7591,6 @@ __metadata: languageName: node linkType: hard -"get-value@npm:^2.0.3, get-value@npm:^2.0.6": - version: 2.0.6 - resolution: "get-value@npm:2.0.6" - checksum: 5c3b99cb5398ea8016bf46ff17afc5d1d286874d2ad38ca5edb6e87d75c0965b0094cb9a9dddef2c59c23d250702323539a7fbdd870620db38c7e7d7ec87c1eb - languageName: node - linkType: hard - "getpass@npm:^0.1.1": version: 0.1.7 resolution: "getpass@npm:0.1.7" @@ -8401,13 +7674,10 @@ __metadata: languageName: node linkType: hard -"glob-parent@npm:^3.1.0": - version: 3.1.0 - resolution: "glob-parent@npm:3.1.0" - dependencies: - is-glob: ^3.1.0 - path-dirname: ^1.0.0 - checksum: 653d559237e89a11b9934bef3f392ec42335602034c928590544d383ff5ef449f7b12f3cfa539708e74bc0a6c28ab1fe51d663cc07463cdf899ba92afd85a855 +"glob-to-regexp@npm:^0.4.1": + version: 0.4.1 + resolution: "glob-to-regexp@npm:0.4.1" + checksum: e795f4e8f06d2a15e86f76e4d92751cf8bbfcf0157cea5c2f0f35678a8195a750b34096b1256e436f0cebc1883b5ff0888c47348443e69546a5a87f9e1eb1167 languageName: node linkType: hard @@ -8643,45 +7913,6 @@ __metadata: languageName: node linkType: hard -"has-value@npm:^0.3.1": - version: 0.3.1 - resolution: "has-value@npm:0.3.1" - dependencies: - get-value: ^2.0.3 - has-values: ^0.1.4 - isobject: ^2.0.0 - checksum: 29e2a1e6571dad83451b769c7ce032fce6009f65bccace07c2962d3ad4d5530b6743d8f3229e4ecf3ea8e905d23a752c5f7089100c1f3162039fa6dc3976558f - languageName: node - linkType: hard - -"has-value@npm:^1.0.0": - version: 1.0.0 - resolution: "has-value@npm:1.0.0" - dependencies: - get-value: ^2.0.6 - has-values: ^1.0.0 - isobject: ^3.0.0 - checksum: b9421d354e44f03d3272ac39fd49f804f19bc1e4fa3ceef7745df43d6b402053f828445c03226b21d7d934a21ac9cf4bc569396dc312f496ddff873197bbd847 - languageName: node - linkType: hard - -"has-values@npm:^0.1.4": - version: 0.1.4 - resolution: "has-values@npm:0.1.4" - checksum: ab1c4bcaf811ccd1856c11cfe90e62fca9e2b026ebe474233a3d282d8d67e3b59ed85b622c7673bac3db198cb98bd1da2b39300a2f98e453729b115350af49bc - languageName: node - linkType: hard - -"has-values@npm:^1.0.0": - version: 1.0.0 - resolution: "has-values@npm:1.0.0" - dependencies: - is-number: ^3.0.0 - kind-of: ^4.0.0 - checksum: 77e6693f732b5e4cf6c38dfe85fdcefad0fab011af74995c3e83863fabf5e3a836f406d83565816baa0bc0a523c9410db8b990fe977074d61aeb6d8f4fcffa11 - languageName: node - linkType: hard - "has@npm:^1.0.3": version: 1.0.3 resolution: "has@npm:1.0.3" @@ -8691,38 +7922,6 @@ __metadata: languageName: node linkType: hard -"hash-base@npm:^3.0.0": - version: 3.1.0 - resolution: "hash-base@npm:3.1.0" - dependencies: - inherits: ^2.0.4 - readable-stream: ^3.6.0 - safe-buffer: ^5.2.0 - checksum: 26b7e97ac3de13cb23fc3145e7e3450b0530274a9562144fc2bf5c1e2983afd0e09ed7cc3b20974ba66039fad316db463da80eb452e7373e780cbee9a0d2f2dc - languageName: node - linkType: hard - -"hash.js@npm:^1.0.0, hash.js@npm:^1.0.3": - version: 1.1.7 - resolution: "hash.js@npm:1.1.7" - dependencies: - inherits: ^2.0.3 - minimalistic-assert: ^1.0.1 - checksum: e350096e659c62422b85fa508e4b3669017311aa4c49b74f19f8e1bc7f3a54a584fdfd45326d4964d6011f2b2d882e38bea775a96046f2a61b7779a979629d8f - languageName: node - linkType: hard - -"hmac-drbg@npm:^1.0.1": - version: 1.0.1 - resolution: "hmac-drbg@npm:1.0.1" - dependencies: - hash.js: ^1.0.3 - minimalistic-assert: ^1.0.0 - minimalistic-crypto-utils: ^1.0.1 - checksum: bd30b6a68d7f22d63f10e1888aee497d7c2c5c0bb469e66bbdac99f143904d1dfe95f8131f95b3e86c86dd239963c9d972fcbe147e7cffa00e55d18585c43fe0 - languageName: node - linkType: hard - "hosted-git-info@npm:^2.1.4, hosted-git-info@npm:^2.7.1": version: 2.8.9 resolution: "hosted-git-info@npm:2.8.9" @@ -8822,13 +8021,6 @@ __metadata: languageName: node linkType: hard -"https-browserify@npm:^1.0.0": - version: 1.0.0 - resolution: "https-browserify@npm:1.0.0" - checksum: 09b35353e42069fde2435760d13f8a3fb7dd9105e358270e2e225b8a94f811b461edd17cb57594e5f36ec1218f121c160ddceeec6e8be2d55e01dcbbbed8cbae - languageName: node - linkType: hard - "https-proxy-agent@npm:^5.0.0, https-proxy-agent@npm:^5.0.1": version: 5.0.1 resolution: "https-proxy-agent@npm:5.0.1" @@ -8889,20 +8081,13 @@ __metadata: languageName: node linkType: hard -"ieee754@npm:^1.1.13, ieee754@npm:^1.1.4": +"ieee754@npm:^1.1.13": version: 1.2.1 resolution: "ieee754@npm:1.2.1" checksum: 5144c0c9815e54ada181d80a0b810221a253562422e7c6c3a60b1901154184f49326ec239d618c416c1c5945a2e197107aee8d986a3dd836b53dffefd99b5e7e languageName: node linkType: hard -"iferr@npm:^0.1.5": - version: 0.1.5 - resolution: "iferr@npm:0.1.5" - checksum: a18d19b6ad06a2d5412c0d37f6364869393ef6d1688d59d00082c1f35c92399094c031798340612458cd832f4f2e8b13bc9615934a7d8b0c53061307a3816aa1 - languageName: node - linkType: hard - "ignore-walk@npm:3.0.4, ignore-walk@npm:^3.0.3": version: 3.0.4 resolution: "ignore-walk@npm:3.0.4" @@ -8971,7 +8156,7 @@ __metadata: languageName: node linkType: hard -"infer-owner@npm:^1.0.3, infer-owner@npm:^1.0.4": +"infer-owner@npm:^1.0.4": version: 1.0.4 resolution: "infer-owner@npm:1.0.4" checksum: 181e732764e4a0611576466b4b87dac338972b839920b2a8cde43642e4ed6bd54dc1fb0b40874728f2a2df9a1b097b8ff83b56d5f8f8e3927f837fdcb47d8a89 @@ -8988,27 +8173,13 @@ __metadata: languageName: node linkType: hard -"inherits@npm:2, inherits@npm:^2.0.1, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.1, inherits@npm:~2.0.3": +"inherits@npm:2, inherits@npm:^2.0.3, inherits@npm:^2.0.4, inherits@npm:~2.0.3": version: 2.0.4 resolution: "inherits@npm:2.0.4" checksum: 4a48a733847879d6cf6691860a6b1e3f0f4754176e4d71494c41f3475553768b10f84b5ce1d40fbd0e34e6bfbb864ee35858ad4dd2cf31e02fc4a154b724d7f1 languageName: node linkType: hard -"inherits@npm:2.0.1": - version: 2.0.1 - resolution: "inherits@npm:2.0.1" - checksum: 6536b9377296d4ce8ee89c5c543cb75030934e61af42dba98a428e7d026938c5985ea4d1e3b87743a5b834f40ed1187f89c2d7479e9d59e41d2d1051aefba07b - languageName: node - linkType: hard - -"inherits@npm:2.0.3": - version: 2.0.3 - resolution: "inherits@npm:2.0.3" - checksum: 78cb8d7d850d20a5e9a7f3620db31483aa00ad5f722ce03a55b110e5a723539b3716a3b463e2b96ce3fe286f33afc7c131fa2f91407528ba80cea98a7545d4c0 - languageName: node - linkType: hard - "ini@npm:^1.3.2, ini@npm:^1.3.4": version: 1.3.8 resolution: "ini@npm:1.3.8" @@ -9107,24 +8278,6 @@ __metadata: languageName: node linkType: hard -"is-accessor-descriptor@npm:^0.1.6": - version: 0.1.6 - resolution: "is-accessor-descriptor@npm:0.1.6" - dependencies: - kind-of: ^3.0.2 - checksum: 3d629a086a9585bc16a83a8e8a3416f400023301855cafb7ccc9a1d63145b7480f0ad28877dcc2cce09492c4ec1c39ef4c071996f24ee6ac626be4217b8ffc8a - languageName: node - linkType: hard - -"is-accessor-descriptor@npm:^1.0.0": - version: 1.0.0 - resolution: "is-accessor-descriptor@npm:1.0.0" - dependencies: - kind-of: ^6.0.0 - checksum: 8e475968e9b22f9849343c25854fa24492dbe8ba0dea1a818978f9f1b887339190b022c9300d08c47fe36f1b913d70ce8cbaca00369c55a56705fdb7caed37fe - languageName: node - linkType: hard - "is-array-buffer@npm:^3.0.1": version: 3.0.1 resolution: "is-array-buffer@npm:3.0.1" @@ -9152,15 +8305,6 @@ __metadata: languageName: node linkType: hard -"is-binary-path@npm:^1.0.0": - version: 1.0.1 - resolution: "is-binary-path@npm:1.0.1" - dependencies: - binary-extensions: ^1.0.0 - checksum: a803c99e9d898170c3b44a86fbdc0736d3d7fcbe737345433fb78e810b9fe30c982657782ad0e676644ba4693ddf05601a7423b5611423218663d6b533341ac9 - languageName: node - linkType: hard - "is-binary-path@npm:~2.1.0": version: 2.1.0 resolution: "is-binary-path@npm:2.1.0" @@ -9180,13 +8324,6 @@ __metadata: languageName: node linkType: hard -"is-buffer@npm:^1.1.5": - version: 1.1.6 - resolution: "is-buffer@npm:1.1.6" - checksum: 4a186d995d8bbf9153b4bd9ff9fd04ae75068fe695d29025d25e592d9488911eeece84eefbd8fa41b8ddcc0711058a71d4c466dcf6f1f6e1d83830052d8ca707 - languageName: node - linkType: hard - "is-builtin-module@npm:^3.2.0": version: 3.2.1 resolution: "is-builtin-module@npm:3.2.1" @@ -9223,24 +8360,6 @@ __metadata: languageName: node linkType: hard -"is-data-descriptor@npm:^0.1.4": - version: 0.1.4 - resolution: "is-data-descriptor@npm:0.1.4" - dependencies: - kind-of: ^3.0.2 - checksum: 5c622e078ba933a78338ae398a3d1fc5c23332b395312daf4f74bab4afb10d061cea74821add726cb4db8b946ba36217ee71a24fe71dd5bca4632edb7f6aad87 - languageName: node - linkType: hard - -"is-data-descriptor@npm:^1.0.0": - version: 1.0.0 - resolution: "is-data-descriptor@npm:1.0.0" - dependencies: - kind-of: ^6.0.0 - checksum: e705e6816241c013b05a65dc452244ee378d1c3e3842bd140beabe6e12c0d700ef23c91803f971aa7b091fb0573c5da8963af34a2b573337d87bc3e1f53a4e6d - languageName: node - linkType: hard - "is-date-object@npm:^1.0.1": version: 1.0.5 resolution: "is-date-object@npm:1.0.5" @@ -9250,28 +8369,6 @@ __metadata: languageName: node linkType: hard -"is-descriptor@npm:^0.1.0": - version: 0.1.6 - resolution: "is-descriptor@npm:0.1.6" - dependencies: - is-accessor-descriptor: ^0.1.6 - is-data-descriptor: ^0.1.4 - kind-of: ^5.0.0 - checksum: 0f780c1b46b465f71d970fd7754096ffdb7b69fd8797ca1f5069c163eaedcd6a20ec4a50af669075c9ebcfb5266d2e53c8b227e485eefdb0d1fee09aa1dd8ab6 - languageName: node - linkType: hard - -"is-descriptor@npm:^1.0.0, is-descriptor@npm:^1.0.2": - version: 1.0.2 - resolution: "is-descriptor@npm:1.0.2" - dependencies: - is-accessor-descriptor: ^1.0.0 - is-data-descriptor: ^1.0.0 - kind-of: ^6.0.2 - checksum: 2ed623560bee035fb67b23e32ce885700bef8abe3fbf8c909907d86507b91a2c89a9d3a4d835a4d7334dd5db0237a0aeae9ca109c1e4ef1c0e7b577c0846ab5a - languageName: node - linkType: hard - "is-docker@npm:^2.0.0, is-docker@npm:^2.1.1": version: 2.2.1 resolution: "is-docker@npm:2.2.1" @@ -9281,23 +8378,7 @@ __metadata: languageName: node linkType: hard -"is-extendable@npm:^0.1.0, is-extendable@npm:^0.1.1": - version: 0.1.1 - resolution: "is-extendable@npm:0.1.1" - checksum: 3875571d20a7563772ecc7a5f36cb03167e9be31ad259041b4a8f73f33f885441f778cee1f1fe0085eb4bc71679b9d8c923690003a36a6a5fdf8023e6e3f0672 - languageName: node - linkType: hard - -"is-extendable@npm:^1.0.1": - version: 1.0.1 - resolution: "is-extendable@npm:1.0.1" - dependencies: - is-plain-object: ^2.0.4 - checksum: db07bc1e9de6170de70eff7001943691f05b9d1547730b11be01c0ebfe67362912ba743cf4be6fd20a5e03b4180c685dad80b7c509fe717037e3eee30ad8e84f - languageName: node - linkType: hard - -"is-extglob@npm:^2.1.0, is-extglob@npm:^2.1.1": +"is-extglob@npm:^2.1.1": version: 2.1.1 resolution: "is-extglob@npm:2.1.1" checksum: df033653d06d0eb567461e58a7a8c9f940bd8c22274b94bf7671ab36df5719791aae15eef6d83bbb5e23283967f2f984b8914559d4449efda578c775c4be6f85 @@ -9334,15 +8415,6 @@ __metadata: languageName: node linkType: hard -"is-glob@npm:^3.1.0": - version: 3.1.0 - resolution: "is-glob@npm:3.1.0" - dependencies: - is-extglob: ^2.1.0 - checksum: 9d483bca84f16f01230f7c7c8c63735248fe1064346f292e0f6f8c76475fd20c6f50fc19941af5bec35f85d6bf26f4b7768f39a48a5f5fdc72b408dc74e07afc - languageName: node - linkType: hard - "is-glob@npm:^4.0.0, is-glob@npm:^4.0.1, is-glob@npm:^4.0.3, is-glob@npm:~4.0.1": version: 4.0.3 resolution: "is-glob@npm:4.0.3" @@ -9389,15 +8461,6 @@ __metadata: languageName: node linkType: hard -"is-number@npm:^3.0.0": - version: 3.0.0 - resolution: "is-number@npm:3.0.0" - dependencies: - kind-of: ^3.0.2 - checksum: 0c62bf8e9d72c4dd203a74d8cfc751c746e75513380fef420cda8237e619a988ee43e678ddb23c87ac24d91ac0fe9f22e4ffb1301a50310c697e9d73ca3994e9 - languageName: node - linkType: hard - "is-number@npm:^7.0.0": version: 7.0.0 resolution: "is-number@npm:7.0.0" @@ -9419,7 +8482,7 @@ __metadata: languageName: node linkType: hard -"is-plain-object@npm:^2.0.3, is-plain-object@npm:^2.0.4": +"is-plain-object@npm:^2.0.4": version: 2.0.4 resolution: "is-plain-object@npm:2.0.4" dependencies: @@ -9563,20 +8626,6 @@ __metadata: languageName: node linkType: hard -"is-windows@npm:^1.0.2": - version: 1.0.2 - resolution: "is-windows@npm:1.0.2" - checksum: 438b7e52656fe3b9b293b180defb4e448088e7023a523ec21a91a80b9ff8cdb3377ddb5b6e60f7c7de4fa8b63ab56e121b6705fe081b3cf1b828b0a380009ad7 - languageName: node - linkType: hard - -"is-wsl@npm:^1.1.0": - version: 1.1.0 - resolution: "is-wsl@npm:1.1.0" - checksum: ea157d232351e68c92bd62fc541771096942fe72f69dff452dd26dcc31466258c570a3b04b8cda2e01cd2968255b02951b8670d08ea4ed76d6b1a646061ac4fe - languageName: node - linkType: hard - "is-wsl@npm:^2.2.0": version: 2.2.0 resolution: "is-wsl@npm:2.2.0" @@ -9586,7 +8635,7 @@ __metadata: languageName: node linkType: hard -"isarray@npm:1.0.0, isarray@npm:^1.0.0, isarray@npm:~1.0.0": +"isarray@npm:~1.0.0": version: 1.0.0 resolution: "isarray@npm:1.0.0" checksum: f032df8e02dce8ec565cf2eb605ea939bdccea528dbcf565cdf92bfa2da9110461159d86a537388ef1acef8815a330642d7885b29010e8f7eac967c9993b65ab @@ -9600,16 +8649,7 @@ __metadata: languageName: node linkType: hard -"isobject@npm:^2.0.0": - version: 2.1.0 - resolution: "isobject@npm:2.1.0" - dependencies: - isarray: 1.0.0 - checksum: 811c6f5a866877d31f0606a88af4a45f282544de886bf29f6a34c46616a1ae2ed17076cc6bf34c0128f33eecf7e1fcaa2c82cf3770560d3e26810894e96ae79f - languageName: node - linkType: hard - -"isobject@npm:^3.0.0, isobject@npm:^3.0.1": +"isobject@npm:^3.0.1": version: 3.0.1 resolution: "isobject@npm:3.0.1" checksum: db85c4c970ce30693676487cca0e61da2ca34e8d4967c2e1309143ff910c207133a969f9e4ddb2dc6aba670aabce4e0e307146c310350b298e74a31f7d464703 @@ -10149,6 +9189,17 @@ __metadata: languageName: node linkType: hard +"jest-worker@npm:^27.4.5": + version: 27.5.1 + resolution: "jest-worker@npm:27.5.1" + dependencies: + "@types/node": "*" + merge-stream: ^2.0.0 + supports-color: ^8.0.0 + checksum: 98cd68b696781caed61c983a3ee30bf880b5bd021c01d98f47b143d4362b85d0737f8523761e2713d45e18b4f9a2b98af1eaee77afade4111bb65c77d6f7c980 + languageName: node + linkType: hard + "jest-worker@npm:^29.4.3": version: 29.4.3 resolution: "jest-worker@npm:29.4.3" @@ -10403,7 +9454,7 @@ __metadata: languageName: node linkType: hard -"json-parse-better-errors@npm:^1.0.1, json-parse-better-errors@npm:^1.0.2": +"json-parse-better-errors@npm:^1.0.1": version: 1.0.2 resolution: "json-parse-better-errors@npm:1.0.2" checksum: ff2b5ba2a70e88fd97a3cb28c1840144c5ce8fae9cbeeddba15afa333a5c407cf0e42300cd0a2885dbb055227fe68d405070faad941beeffbfde9cf3b2c78c5d @@ -10554,32 +9605,7 @@ __metadata: languageName: node linkType: hard -"kind-of@npm:^3.0.2, kind-of@npm:^3.0.3, kind-of@npm:^3.2.0": - version: 3.2.2 - resolution: "kind-of@npm:3.2.2" - dependencies: - is-buffer: ^1.1.5 - checksum: e898df8ca2f31038f27d24f0b8080da7be274f986bc6ed176f37c77c454d76627619e1681f6f9d2e8d2fd7557a18ecc419a6bb54e422abcbb8da8f1a75e4b386 - languageName: node - linkType: hard - -"kind-of@npm:^4.0.0": - version: 4.0.0 - resolution: "kind-of@npm:4.0.0" - dependencies: - is-buffer: ^1.1.5 - checksum: 1b9e7624a8771b5a2489026e820f3bbbcc67893e1345804a56b23a91e9069965854d2a223a7c6ee563c45be9d8c6ff1ef87f28ed5f0d1a8d00d9dcbb067c529f - languageName: node - linkType: hard - -"kind-of@npm:^5.0.0": - version: 5.1.0 - resolution: "kind-of@npm:5.1.0" - checksum: f2a0102ae0cf19c4a953397e552571bad2b588b53282874f25fca7236396e650e2db50d41f9f516bd402536e4df968dbb51b8e69e4d5d4a7173def78448f7bab - languageName: node - linkType: hard - -"kind-of@npm:^6.0.0, kind-of@npm:^6.0.2, kind-of@npm:^6.0.3": +"kind-of@npm:^6.0.2, kind-of@npm:^6.0.3": version: 6.0.3 resolution: "kind-of@npm:6.0.3" checksum: 3ab01e7b1d440b22fe4c31f23d8d38b4d9b91d9f291df683476576493d5dfd2e03848a8b05813dd0c3f0e835bc63f433007ddeceb71f05cb25c45ae1b19c6d3b @@ -10820,21 +9846,10 @@ __metadata: languageName: node linkType: hard -"loader-runner@npm:^2.4.0": - version: 2.4.0 - resolution: "loader-runner@npm:2.4.0" - checksum: e27eebbca5347a03f6b1d1bce5b2736a4984fb742f872c0a4d68e62de10f7637613e79a464d3bcd77c246d9c70fcac112bb4a3123010eb527e8b203a614647db - languageName: node - linkType: hard - -"loader-utils@npm:^1.2.3": - version: 1.4.2 - resolution: "loader-utils@npm:1.4.2" - dependencies: - big.js: ^5.2.2 - emojis-list: ^3.0.0 - json5: ^1.0.1 - checksum: eb6fb622efc0ffd1abdf68a2022f9eac62bef8ec599cf8adb75e94d1d338381780be6278534170e99edc03380a6d29bc7eb1563c89ce17c5fed3a0b17f1ad804 +"loader-runner@npm:^4.2.0": + version: 4.3.0 + resolution: "loader-runner@npm:4.3.0" + checksum: a90e00dee9a16be118ea43fec3192d0b491fe03a32ed48a4132eb61d498f5536a03a1315531c19d284392a8726a4ecad71d82044c28d7f22ef62e029bf761569 languageName: node linkType: hard @@ -11019,7 +10034,7 @@ __metadata: languageName: node linkType: hard -"make-dir@npm:^2.0.0, make-dir@npm:^2.1.0": +"make-dir@npm:^2.1.0": version: 2.1.0 resolution: "make-dir@npm:2.1.0" dependencies: @@ -11069,13 +10084,6 @@ __metadata: languageName: node linkType: hard -"map-cache@npm:^0.2.2": - version: 0.2.2 - resolution: "map-cache@npm:0.2.2" - checksum: 3067cea54285c43848bb4539f978a15dedc63c03022abeec6ef05c8cb6829f920f13b94bcaf04142fc6a088318e564c4785704072910d120d55dbc2e0c421969 - languageName: node - linkType: hard - "map-obj@npm:^1.0.0": version: 1.0.1 resolution: "map-obj@npm:1.0.1" @@ -11090,36 +10098,6 @@ __metadata: languageName: node linkType: hard -"map-visit@npm:^1.0.0": - version: 1.0.0 - resolution: "map-visit@npm:1.0.0" - dependencies: - object-visit: ^1.0.0 - checksum: c27045a5021c344fc19b9132eb30313e441863b2951029f8f8b66f79d3d8c1e7e5091578075a996f74e417479506fe9ede28c44ca7bc351a61c9d8073daec36a - languageName: node - linkType: hard - -"md5.js@npm:^1.3.4": - version: 1.3.5 - resolution: "md5.js@npm:1.3.5" - dependencies: - hash-base: ^3.0.0 - inherits: ^2.0.1 - safe-buffer: ^5.1.2 - checksum: 098494d885684bcc4f92294b18ba61b7bd353c23147fbc4688c75b45cb8590f5a95fd4584d742415dcc52487f7a1ef6ea611cfa1543b0dc4492fe026357f3f0c - languageName: node - linkType: hard - -"memory-fs@npm:^0.4.1": - version: 0.4.1 - resolution: "memory-fs@npm:0.4.1" - dependencies: - errno: ^0.1.3 - readable-stream: ^2.0.1 - checksum: 6db6c8682eff836664ca9b5b6052ae38d21713dda9d0ef4700fa5c0599a8bc16b2093bee75ac3dedbe59fb2222d368f25bafaa62ba143c41051359cbcb005044 - languageName: node - linkType: hard - "memory-fs@npm:^0.5.0": version: 0.5.0 resolution: "memory-fs@npm:0.5.0" @@ -11193,27 +10171,6 @@ __metadata: languageName: node linkType: hard -"micromatch@npm:^3.1.10, micromatch@npm:^3.1.4": - version: 3.1.10 - resolution: "micromatch@npm:3.1.10" - dependencies: - arr-diff: ^4.0.0 - array-unique: ^0.3.2 - braces: ^2.3.1 - define-property: ^2.0.2 - extend-shallow: ^3.0.2 - extglob: ^2.0.4 - fragment-cache: ^0.2.1 - kind-of: ^6.0.2 - nanomatch: ^1.2.9 - object.pick: ^1.3.0 - regex-not: ^1.0.0 - snapdragon: ^0.8.1 - to-regex: ^3.0.2 - checksum: ad226cba4daa95b4eaf47b2ca331c8d2e038d7b41ae7ed0697cde27f3f1d6142881ab03d4da51b65d9d315eceb5e4cdddb3fbb55f5f72cfa19cf3ea469d054dc - languageName: node - linkType: hard - "micromatch@npm:^4.0.4, micromatch@npm:^4.0.5": version: 4.0.5 resolution: "micromatch@npm:4.0.5" @@ -11224,18 +10181,6 @@ __metadata: languageName: node linkType: hard -"miller-rabin@npm:^4.0.0": - version: 4.0.1 - resolution: "miller-rabin@npm:4.0.1" - dependencies: - bn.js: ^4.0.0 - brorand: ^1.0.1 - bin: - miller-rabin: bin/miller-rabin - checksum: 00cd1ab838ac49b03f236cc32a14d29d7d28637a53096bf5c6246a032a37749c9bd9ce7360cbf55b41b89b7d649824949ff12bc8eee29ac77c6b38eada619ece - languageName: node - linkType: hard - "mime-db@npm:1.52.0": version: 1.52.0 resolution: "mime-db@npm:1.52.0" @@ -11243,7 +10188,7 @@ __metadata: languageName: node linkType: hard -"mime-types@npm:^2.1.12, mime-types@npm:~2.1.19": +"mime-types@npm:^2.1.12, mime-types@npm:^2.1.27, mime-types@npm:~2.1.19": version: 2.1.35 resolution: "mime-types@npm:2.1.35" dependencies: @@ -11273,20 +10218,6 @@ __metadata: languageName: node linkType: hard -"minimalistic-assert@npm:^1.0.0, minimalistic-assert@npm:^1.0.1": - version: 1.0.1 - resolution: "minimalistic-assert@npm:1.0.1" - checksum: cc7974a9268fbf130fb055aff76700d7e2d8be5f761fb5c60318d0ed010d839ab3661a533ad29a5d37653133385204c503bfac995aaa4236f4e847461ea32ba7 - languageName: node - linkType: hard - -"minimalistic-crypto-utils@npm:^1.0.1": - version: 1.0.1 - resolution: "minimalistic-crypto-utils@npm:1.0.1" - checksum: 6e8a0422b30039406efd4c440829ea8f988845db02a3299f372fceba56ffa94994a9c0f2fd70c17f9969eedfbd72f34b5070ead9656a34d3f71c0bd72583a0ed - languageName: node - linkType: hard - "minimatch@npm:3.0.5": version: 3.0.5 resolution: "minimatch@npm:3.0.5" @@ -11419,34 +10350,6 @@ __metadata: languageName: node linkType: hard -"mississippi@npm:^3.0.0": - version: 3.0.0 - resolution: "mississippi@npm:3.0.0" - dependencies: - concat-stream: ^1.5.0 - duplexify: ^3.4.2 - end-of-stream: ^1.1.0 - flush-write-stream: ^1.0.0 - from2: ^2.1.0 - parallel-transform: ^1.1.0 - pump: ^3.0.0 - pumpify: ^1.3.3 - stream-each: ^1.1.0 - through2: ^2.0.0 - checksum: 84b3d9889621d293f9a596bafe60df863b330c88fc19215ced8f603c605fc7e1bf06f8e036edf301bd630a03fd5d9d7d23d5d6b9a4802c30ca864d800f0bd9f8 - languageName: node - linkType: hard - -"mixin-deep@npm:^1.2.0": - version: 1.3.2 - resolution: "mixin-deep@npm:1.3.2" - dependencies: - for-in: ^1.0.2 - is-extendable: ^1.0.1 - checksum: 820d5a51fcb7479f2926b97f2c3bb223546bc915e6b3a3eb5d906dda871bba569863595424a76682f2b15718252954644f3891437cb7e3f220949bed54b1750d - languageName: node - linkType: hard - "mkdirp-infer-owner@npm:^2.0.0": version: 2.0.0 resolution: "mkdirp-infer-owner@npm:2.0.0" @@ -11458,17 +10361,6 @@ __metadata: languageName: node linkType: hard -"mkdirp@npm:^0.5.1, mkdirp@npm:^0.5.3": - version: 0.5.6 - resolution: "mkdirp@npm:0.5.6" - dependencies: - minimist: ^1.2.6 - bin: - mkdirp: bin/cmd.js - checksum: 0c91b721bb12c3f9af4b77ebf73604baf350e64d80df91754dc509491ae93bf238581e59c7188360cec7cb62fc4100959245a42cfe01834efedc5e9d068376c2 - languageName: node - linkType: hard - "mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4": version: 1.0.4 resolution: "mkdirp@npm:1.0.4" @@ -11506,27 +10398,6 @@ __metadata: languageName: node linkType: hard -"move-concurrently@npm:^1.0.1": - version: 1.0.1 - resolution: "move-concurrently@npm:1.0.1" - dependencies: - aproba: ^1.1.1 - copy-concurrently: ^1.0.0 - fs-write-stream-atomic: ^1.0.8 - mkdirp: ^0.5.1 - rimraf: ^2.5.4 - run-queue: ^1.0.3 - checksum: 4ea3296c150b09e798177847f673eb5783f8ca417ba806668d2c631739f653e1a735f19fb9b6e2f5e25ee2e4c0a6224732237a8e4f84c764e99d7462d258209e - languageName: node - linkType: hard - -"ms@npm:2.0.0": - version: 2.0.0 - resolution: "ms@npm:2.0.0" - checksum: 0e6a22b8b746d2e0b65a430519934fefd41b6db0682e3477c10f60c76e947c4c0ad06f63ffdf1d78d335f83edee8c0aa928aa66a36c7cd95b69b26f468d527f4 - languageName: node - linkType: hard - "ms@npm:2.1.2": version: 2.1.2 resolution: "ms@npm:2.1.2" @@ -11561,15 +10432,6 @@ __metadata: languageName: node linkType: hard -"nan@npm:^2.12.1": - version: 2.17.0 - resolution: "nan@npm:2.17.0" - dependencies: - node-gyp: latest - checksum: ec609aeaf7e68b76592a3ba96b372aa7f5df5b056c1e37410b0f1deefbab5a57a922061e2c5b369bae9c7c6b5e6eecf4ad2dac8833a1a7d3a751e0a7c7f849ed - languageName: node - linkType: hard - "nanoid@npm:^3.3.4": version: 3.3.4 resolution: "nanoid@npm:3.3.4" @@ -11579,25 +10441,6 @@ __metadata: languageName: node linkType: hard -"nanomatch@npm:^1.2.9": - version: 1.2.13 - resolution: "nanomatch@npm:1.2.13" - dependencies: - arr-diff: ^4.0.0 - array-unique: ^0.3.2 - define-property: ^2.0.2 - extend-shallow: ^3.0.2 - fragment-cache: ^0.2.1 - is-windows: ^1.0.2 - kind-of: ^6.0.2 - object.pick: ^1.3.0 - regex-not: ^1.0.0 - snapdragon: ^0.8.1 - to-regex: ^3.0.1 - checksum: 54d4166d6ef08db41252eb4e96d4109ebcb8029f0374f9db873bd91a1f896c32ec780d2a2ea65c0b2d7caf1f28d5e1ea33746a470f32146ac8bba821d80d38d8 - languageName: node - linkType: hard - "nanospinner@npm:^1.1.0": version: 1.1.0 resolution: "nanospinner@npm:1.1.0" @@ -11637,7 +10480,7 @@ __metadata: languageName: node linkType: hard -"neo-async@npm:^2.5.0, neo-async@npm:^2.6.0, neo-async@npm:^2.6.1": +"neo-async@npm:^2.6.0, neo-async@npm:^2.6.2": version: 2.6.2 resolution: "neo-async@npm:2.6.2" checksum: deac9f8d00eda7b2e5cd1b2549e26e10a0faa70adaa6fdadca701cc55f49ee9018e427f424bac0c790b7c7e2d3068db97f3093f1093975f2acb8f8818b936ed9 @@ -11737,37 +10580,6 @@ __metadata: languageName: node linkType: hard -"node-libs-browser@npm:^2.2.1": - version: 2.2.1 - resolution: "node-libs-browser@npm:2.2.1" - dependencies: - assert: ^1.1.1 - browserify-zlib: ^0.2.0 - buffer: ^4.3.0 - console-browserify: ^1.1.0 - constants-browserify: ^1.0.0 - crypto-browserify: ^3.11.0 - domain-browser: ^1.1.1 - events: ^3.0.0 - https-browserify: ^1.0.0 - os-browserify: ^0.3.0 - path-browserify: 0.0.1 - process: ^0.11.10 - punycode: ^1.2.4 - querystring-es3: ^0.2.0 - readable-stream: ^2.3.3 - stream-browserify: ^2.0.1 - stream-http: ^2.7.2 - string_decoder: ^1.0.0 - timers-browserify: ^2.0.4 - tty-browserify: 0.0.0 - url: ^0.11.0 - util: ^0.11.0 - vm-browserify: ^1.0.1 - checksum: 41fa7927378edc0cb98a8cc784d3f4a47e43378d3b42ec57a23f81125baa7287c4b54d6d26d062072226160a3ce4d8b7a62e873d2fb637aceaddf71f5a26eca0 - languageName: node - linkType: hard - "node-releases@npm:^2.0.6": version: 2.0.8 resolution: "node-releases@npm:2.0.8" @@ -11775,6 +10587,13 @@ __metadata: languageName: node linkType: hard +"node-releases@npm:^2.0.8": + version: 2.0.10 + resolution: "node-releases@npm:2.0.10" + checksum: d784ecde25696a15d449c4433077f5cce620ed30a1656c4abf31282bfc691a70d9618bae6868d247a67914d1be5cc4fde22f65a05f4398cdfb92e0fc83cadfbc + languageName: node + linkType: hard + "nopt@npm:^5.0.0": version: 5.0.0 resolution: "nopt@npm:5.0.0" @@ -11833,15 +10652,6 @@ __metadata: languageName: node linkType: hard -"normalize-path@npm:^2.1.1": - version: 2.1.1 - resolution: "normalize-path@npm:2.1.1" - dependencies: - remove-trailing-separator: ^1.0.1 - checksum: 7e9cbdcf7f5b8da7aa191fbfe33daf290cdcd8c038f422faf1b8a83c972bf7a6d94c5be34c4326cb00fb63bc0fd97d9fbcfaf2e5d6142332c2cd36d2e1b86cea - languageName: node - linkType: hard - "normalize-path@npm:^3.0.0, normalize-path@npm:~3.0.0": version: 3.0.0 resolution: "normalize-path@npm:3.0.0" @@ -12195,17 +11005,6 @@ __metadata: languageName: node linkType: hard -"object-copy@npm:^0.1.0": - version: 0.1.0 - resolution: "object-copy@npm:0.1.0" - dependencies: - copy-descriptor: ^0.1.0 - define-property: ^0.2.5 - kind-of: ^3.0.3 - checksum: a9e35f07e3a2c882a7e979090360d1a20ab51d1fa19dfdac3aa8873b328a7c4c7683946ee97c824ae40079d848d6740a3788fa14f2185155dab7ed970a72c783 - languageName: node - linkType: hard - "object-inspect@npm:^1.12.2, object-inspect@npm:^1.9.0": version: 1.12.3 resolution: "object-inspect@npm:1.12.3" @@ -12220,15 +11019,6 @@ __metadata: languageName: node linkType: hard -"object-visit@npm:^1.0.0": - version: 1.0.1 - resolution: "object-visit@npm:1.0.1" - dependencies: - isobject: ^3.0.0 - checksum: b0ee07f5bf3bb881b881ff53b467ebbde2b37ebb38649d6944a6cd7681b32eedd99da9bd1e01c55facf81f54ed06b13af61aba6ad87f0052982995e09333f790 - languageName: node - linkType: hard - "object.assign@npm:^4.1.3, object.assign@npm:^4.1.4": version: 4.1.4 resolution: "object.assign@npm:4.1.4" @@ -12273,15 +11063,6 @@ __metadata: languageName: node linkType: hard -"object.pick@npm:^1.3.0": - version: 1.3.0 - resolution: "object.pick@npm:1.3.0" - dependencies: - isobject: ^3.0.1 - checksum: 77fb6eed57c67adf75e9901187e37af39f052ef601cb4480386436561357eb9e459e820762f01fd02c5c1b42ece839ad393717a6d1850d848ee11fbabb3e580a - languageName: node - linkType: hard - "object.values@npm:^1.1.6": version: 1.1.6 resolution: "object.values@npm:1.1.6" @@ -12293,7 +11074,7 @@ __metadata: languageName: node linkType: hard -"once@npm:^1.3.0, once@npm:^1.3.1, once@npm:^1.3.3, once@npm:^1.4.0": +"once@npm:^1.3.0, once@npm:^1.3.3, once@npm:^1.4.0": version: 1.4.0 resolution: "once@npm:1.4.0" dependencies: @@ -12376,13 +11157,6 @@ __metadata: languageName: node linkType: hard -"os-browserify@npm:^0.3.0": - version: 0.3.0 - resolution: "os-browserify@npm:0.3.0" - checksum: 16e37ba3c0e6a4c63443c7b55799ce4066d59104143cb637ecb9fce586d5da319cdca786ba1c867abbe3890d2cbf37953f2d51eea85e20dd6c4570d6c54bfebf - languageName: node - linkType: hard - "os-homedir@npm:^1.0.0": version: 1.0.2 resolution: "os-homedir@npm:1.0.2" @@ -12602,13 +11376,6 @@ __metadata: languageName: node linkType: hard -"pako@npm:~1.0.5": - version: 1.0.11 - resolution: "pako@npm:1.0.11" - checksum: 1be2bfa1f807608c7538afa15d6f25baa523c30ec870a3228a89579e474a4d992f4293859524e46d5d87fd30fa17c5edf34dbef0671251d9749820b488660b16 - languageName: node - linkType: hard - "papaparse@npm:^5.3.0": version: 5.3.2 resolution: "papaparse@npm:5.3.2" @@ -12616,17 +11383,6 @@ __metadata: languageName: node linkType: hard -"parallel-transform@npm:^1.1.0": - version: 1.2.0 - resolution: "parallel-transform@npm:1.2.0" - dependencies: - cyclist: ^1.0.1 - inherits: ^2.0.3 - readable-stream: ^2.1.5 - checksum: ab6ddc1a662cefcfb3d8d546a111763d3b223f484f2e9194e33aefd8f6760c319d0821fd22a00a3adfbd45929b50d2c84cc121389732f013c2ae01c226269c27 - languageName: node - linkType: hard - "parent-module@npm:^1.0.0": version: 1.0.1 resolution: "parent-module@npm:1.0.1" @@ -12636,19 +11392,6 @@ __metadata: languageName: node linkType: hard -"parse-asn1@npm:^5.0.0, parse-asn1@npm:^5.1.5": - version: 5.1.6 - resolution: "parse-asn1@npm:5.1.6" - dependencies: - asn1.js: ^5.2.0 - browserify-aes: ^1.0.0 - evp_bytestokey: ^1.0.0 - pbkdf2: ^3.0.3 - safe-buffer: ^5.1.1 - checksum: 9243311d1f88089bc9f2158972aa38d1abd5452f7b7cabf84954ed766048fe574d434d82c6f5a39b988683e96fb84cd933071dda38927e03469dc8c8d14463c7 - languageName: node - linkType: hard - "parse-conflict-json@npm:^2.0.1": version: 2.0.2 resolution: "parse-conflict-json@npm:2.0.2" @@ -12716,27 +11459,6 @@ __metadata: languageName: node linkType: hard -"pascalcase@npm:^0.1.1": - version: 0.1.1 - resolution: "pascalcase@npm:0.1.1" - checksum: f83681c3c8ff75fa473a2bb2b113289952f802ff895d435edd717e7cb898b0408cbdb247117a938edcbc5d141020909846cc2b92c47213d764e2a94d2ad2b925 - languageName: node - linkType: hard - -"path-browserify@npm:0.0.1": - version: 0.0.1 - resolution: "path-browserify@npm:0.0.1" - checksum: ae8dcd45d0d3cfbaf595af4f206bf3ed82d77f72b4877ae7e77328079e1468c84f9386754bb417d994d5a19bf47882fd253565c18441cd5c5c90ae5187599e35 - languageName: node - linkType: hard - -"path-dirname@npm:^1.0.0": - version: 1.0.2 - resolution: "path-dirname@npm:1.0.2" - checksum: 0d2f6604ae05a252a0025318685f290e2764ecf9c5436f203cdacfc8c0b17c24cdedaa449d766beb94ab88cc7fc70a09ec21e7933f31abc2b719180883e5e33f - languageName: node - linkType: hard - "path-exists@npm:4.0.0, path-exists@npm:^4.0.0": version: 4.0.0 resolution: "path-exists@npm:4.0.0" @@ -12795,19 +11517,6 @@ __metadata: languageName: node linkType: hard -"pbkdf2@npm:^3.0.3": - version: 3.1.2 - resolution: "pbkdf2@npm:3.1.2" - dependencies: - create-hash: ^1.1.2 - create-hmac: ^1.1.4 - ripemd160: ^2.0.1 - safe-buffer: ^5.0.1 - sha.js: ^2.4.8 - checksum: 2c950a100b1da72123449208e231afc188d980177d021d7121e96a2de7f2abbc96ead2b87d03d8fe5c318face097f203270d7e27908af9f471c165a4e8e69c92 - languageName: node - linkType: hard - "performance-now@npm:^2.1.0": version: 2.1.0 resolution: "performance-now@npm:2.1.0" @@ -12873,15 +11582,6 @@ __metadata: languageName: node linkType: hard -"pkg-dir@npm:^3.0.0": - version: 3.0.0 - resolution: "pkg-dir@npm:3.0.0" - dependencies: - find-up: ^3.0.0 - checksum: 70c9476ffefc77552cc6b1880176b71ad70bfac4f367604b2b04efd19337309a4eec985e94823271c7c0e83946fa5aeb18cd360d15d10a5d7533e19344bfa808 - languageName: node - linkType: hard - "pkg-dir@npm:^4.2.0": version: 4.2.0 resolution: "pkg-dir@npm:4.2.0" @@ -12923,13 +11623,6 @@ __metadata: languageName: node linkType: hard -"posix-character-classes@npm:^0.1.0": - version: 0.1.1 - resolution: "posix-character-classes@npm:0.1.1" - checksum: dedb99913c60625a16050cfed2fb5c017648fc075be41ac18474e1c6c3549ef4ada201c8bd9bd006d36827e289c571b6092e1ef6e756cdbab2fd7046b25c6442 - languageName: node - linkType: hard - "postcss@npm:^8.4.18": version: 8.4.21 resolution: "postcss@npm:8.4.21" @@ -13001,13 +11694,6 @@ __metadata: languageName: node linkType: hard -"process@npm:^0.11.10": - version: 0.11.10 - resolution: "process@npm:0.11.10" - checksum: bfcce49814f7d172a6e6a14d5fa3ac92cc3d0c3b9feb1279774708a719e19acd673995226351a082a9ae99978254e320ccda4240ddc474ba31a76c79491ca7c3 - languageName: node - linkType: hard - "progress@npm:^2.0.0": version: 2.0.3 resolution: "progress@npm:2.0.3" @@ -13120,76 +11806,24 @@ __metadata: languageName: node linkType: hard -"public-encrypt@npm:^4.0.0": - version: 4.0.3 - resolution: "public-encrypt@npm:4.0.3" - dependencies: - bn.js: ^4.1.0 - browserify-rsa: ^4.0.0 - create-hash: ^1.1.0 - parse-asn1: ^5.0.0 - randombytes: ^2.0.1 - safe-buffer: ^5.1.2 - checksum: 215d446e43cef021a20b67c1df455e5eea134af0b1f9b8a35f9e850abf32991b0c307327bc5b9bc07162c288d5cdb3d4a783ea6c6640979ed7b5017e3e0c9935 +"punycode@npm:^1.3.2": + version: 1.4.1 + resolution: "punycode@npm:1.4.1" + checksum: fa6e698cb53db45e4628559e557ddaf554103d2a96a1d62892c8f4032cd3bc8871796cae9eabc1bc700e2b6677611521ce5bb1d9a27700086039965d0cf34518 languageName: node linkType: hard -"pump@npm:^2.0.0": - version: 2.0.1 - resolution: "pump@npm:2.0.1" - dependencies: - end-of-stream: ^1.1.0 - once: ^1.3.1 - checksum: e9f26a17be00810bff37ad0171edb35f58b242487b0444f92fb7d78bc7d61442fa9b9c5bd93a43fd8fd8ddd3cc75f1221f5e04c790f42907e5baab7cf5e2b931 +"punycode@npm:^2.1.0, punycode@npm:^2.1.1": + version: 2.3.0 + resolution: "punycode@npm:2.3.0" + checksum: 39f760e09a2a3bbfe8f5287cf733ecdad69d6af2fe6f97ca95f24b8921858b91e9ea3c9eeec6e08cede96181b3bb33f95c6ffd8c77e63986508aa2e8159fa200 languageName: node linkType: hard -"pump@npm:^3.0.0": - version: 3.0.0 - resolution: "pump@npm:3.0.0" - dependencies: - end-of-stream: ^1.1.0 - once: ^1.3.1 - checksum: e42e9229fba14732593a718b04cb5e1cfef8254544870997e0ecd9732b189a48e1256e4e5478148ecb47c8511dca2b09eae56b4d0aad8009e6fac8072923cfc9 - languageName: node - linkType: hard - -"pumpify@npm:^1.3.3": - version: 1.5.1 - resolution: "pumpify@npm:1.5.1" - dependencies: - duplexify: ^3.6.0 - inherits: ^2.0.3 - pump: ^2.0.0 - checksum: 26ca412ec8d665bd0d5e185c1b8f627728eff603440d75d22a58e421e3c66eaf86ec6fc6a6efc54808ecef65979279fa8e99b109a23ec1fa8d79f37e6978c9bd - languageName: node - linkType: hard - -"punycode@npm:1.3.2": - version: 1.3.2 - resolution: "punycode@npm:1.3.2" - checksum: b8807fd594b1db33335692d1f03e8beeddde6fda7fbb4a2e32925d88d20a3aa4cd8dcc0c109ccaccbd2ba761c208dfaaada83007087ea8bfb0129c9ef1b99ed6 - languageName: node - linkType: hard - -"punycode@npm:^1.2.4, punycode@npm:^1.3.2": - version: 1.4.1 - resolution: "punycode@npm:1.4.1" - checksum: fa6e698cb53db45e4628559e557ddaf554103d2a96a1d62892c8f4032cd3bc8871796cae9eabc1bc700e2b6677611521ce5bb1d9a27700086039965d0cf34518 - languageName: node - linkType: hard - -"punycode@npm:^2.1.0, punycode@npm:^2.1.1": - version: 2.3.0 - resolution: "punycode@npm:2.3.0" - checksum: 39f760e09a2a3bbfe8f5287cf733ecdad69d6af2fe6f97ca95f24b8921858b91e9ea3c9eeec6e08cede96181b3bb33f95c6ffd8c77e63986508aa2e8159fa200 - languageName: node - linkType: hard - -"q@npm:^1.5.1": - version: 1.5.1 - resolution: "q@npm:1.5.1" - checksum: 147baa93c805bc1200ed698bdf9c72e9e42c05f96d007e33a558b5fdfd63e5ea130e99313f28efc1783e90e6bdb4e48b67a36fcc026b7b09202437ae88a1fb12 +"q@npm:^1.5.1": + version: 1.5.1 + resolution: "q@npm:1.5.1" + checksum: 147baa93c805bc1200ed698bdf9c72e9e42c05f96d007e33a558b5fdfd63e5ea130e99313f28efc1783e90e6bdb4e48b67a36fcc026b7b09202437ae88a1fb12 languageName: node linkType: hard @@ -13200,20 +11834,6 @@ __metadata: languageName: node linkType: hard -"querystring-es3@npm:^0.2.0": - version: 0.2.1 - resolution: "querystring-es3@npm:0.2.1" - checksum: 691e8d6b8b157e7cd49ae8e83fcf86de39ab3ba948c25abaa94fba84c0986c641aa2f597770848c64abce290ed17a39c9df6df737dfa7e87c3b63acc7d225d61 - languageName: node - linkType: hard - -"querystring@npm:0.2.0": - version: 0.2.0 - resolution: "querystring@npm:0.2.0" - checksum: 8258d6734f19be27e93f601758858c299bdebe71147909e367101ba459b95446fbe5b975bf9beb76390156a592b6f4ac3a68b6087cea165c259705b8b4e56a69 - languageName: node - linkType: hard - "querystringify@npm:^2.1.1": version: 2.2.0 resolution: "querystringify@npm:2.2.0" @@ -13242,7 +11862,7 @@ __metadata: languageName: node linkType: hard -"randombytes@npm:^2.0.0, randombytes@npm:^2.0.1, randombytes@npm:^2.0.5, randombytes@npm:^2.1.0": +"randombytes@npm:^2.1.0": version: 2.1.0 resolution: "randombytes@npm:2.1.0" dependencies: @@ -13251,16 +11871,6 @@ __metadata: languageName: node linkType: hard -"randomfill@npm:^1.0.3": - version: 1.0.4 - resolution: "randomfill@npm:1.0.4" - dependencies: - randombytes: ^2.0.5 - safe-buffer: ^5.1.0 - checksum: 33734bb578a868d29ee1b8555e21a36711db084065d94e019a6d03caa67debef8d6a1bfd06a2b597e32901ddc761ab483a85393f0d9a75838f1912461d4dbfc7 - languageName: node - linkType: hard - "react-dom@npm:^16.13.1": version: 16.14.0 resolution: "react-dom@npm:16.14.0" @@ -13408,7 +12018,18 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:1 || 2, readable-stream@npm:^2.0.0, readable-stream@npm:^2.0.1, readable-stream@npm:^2.0.2, readable-stream@npm:^2.0.6, readable-stream@npm:^2.1.5, readable-stream@npm:^2.2.2, readable-stream@npm:^2.3.3, readable-stream@npm:^2.3.6, readable-stream@npm:~2.3.6": +"readable-stream@npm:3, readable-stream@npm:^3.0.0, readable-stream@npm:^3.0.2, readable-stream@npm:^3.4.0, readable-stream@npm:^3.6.0": + version: 3.6.0 + resolution: "readable-stream@npm:3.6.0" + dependencies: + inherits: ^2.0.3 + string_decoder: ^1.1.1 + util-deprecate: ^1.0.1 + checksum: d4ea81502d3799439bb955a3a5d1d808592cf3133350ed352aeaa499647858b27b1c4013984900238b0873ec8d0d8defce72469fb7a83e61d53f5ad61cb80dc8 + languageName: node + linkType: hard + +"readable-stream@npm:^2.0.1, readable-stream@npm:^2.0.6, readable-stream@npm:^2.2.2, readable-stream@npm:~2.3.6": version: 2.3.7 resolution: "readable-stream@npm:2.3.7" dependencies: @@ -13423,17 +12044,6 @@ __metadata: languageName: node linkType: hard -"readable-stream@npm:3, readable-stream@npm:^3.0.0, readable-stream@npm:^3.0.2, readable-stream@npm:^3.4.0, readable-stream@npm:^3.6.0": - version: 3.6.0 - resolution: "readable-stream@npm:3.6.0" - dependencies: - inherits: ^2.0.3 - string_decoder: ^1.1.1 - util-deprecate: ^1.0.1 - checksum: d4ea81502d3799439bb955a3a5d1d808592cf3133350ed352aeaa499647858b27b1c4013984900238b0873ec8d0d8defce72469fb7a83e61d53f5ad61cb80dc8 - languageName: node - linkType: hard - "readable-stream@npm:^3.1.1": version: 3.6.1 resolution: "readable-stream@npm:3.6.1" @@ -13457,17 +12067,6 @@ __metadata: languageName: node linkType: hard -"readdirp@npm:^2.2.1": - version: 2.2.1 - resolution: "readdirp@npm:2.2.1" - dependencies: - graceful-fs: ^4.1.11 - micromatch: ^3.1.10 - readable-stream: ^2.0.2 - checksum: 3879b20f1a871e0e004a14fbf1776e65ee0b746a62f5a416010808b37c272ac49b023c47042c7b1e281cba75a449696635bc64c397ed221ea81d853a8f2ed79a - languageName: node - linkType: hard - "readdirp@npm:~3.5.0": version: 3.5.0 resolution: "readdirp@npm:3.5.0" @@ -13528,16 +12127,6 @@ __metadata: languageName: node linkType: hard -"regex-not@npm:^1.0.0, regex-not@npm:^1.0.2": - version: 1.0.2 - resolution: "regex-not@npm:1.0.2" - dependencies: - extend-shallow: ^3.0.2 - safe-regex: ^1.1.0 - checksum: 3081403de79559387a35ef9d033740e41818a559512668cef3d12da4e8a29ef34ee13c8ed1256b07e27ae392790172e8a15c8a06b72962fd4550476cde3d8f77 - languageName: node - linkType: hard - "regexp.prototype.flags@npm:^1.4.3": version: 1.4.3 resolution: "regexp.prototype.flags@npm:1.4.3" @@ -13588,27 +12177,6 @@ __metadata: languageName: node linkType: hard -"remove-trailing-separator@npm:^1.0.1": - version: 1.1.0 - resolution: "remove-trailing-separator@npm:1.1.0" - checksum: d3c20b5a2d987db13e1cca9385d56ecfa1641bae143b620835ac02a6b70ab88f68f117a0021838db826c57b31373d609d52e4f31aca75fc490c862732d595419 - languageName: node - linkType: hard - -"repeat-element@npm:^1.1.2": - version: 1.1.4 - resolution: "repeat-element@npm:1.1.4" - checksum: 1edd0301b7edad71808baad226f0890ba709443f03a698224c9ee4f2494c317892dc5211b2ba8cbea7194a9ddbcac01e283bd66de0467ab24ee1fc1a3711d8a9 - languageName: node - linkType: hard - -"repeat-string@npm:^1.6.1": - version: 1.6.1 - resolution: "repeat-string@npm:1.6.1" - checksum: 1b809fc6db97decdc68f5b12c4d1a671c8e3f65ec4a40c238bc5200e44e85bcc52a54f78268ab9c29fcf5fe4f1343e805420056d1f30fa9a9ee4c2d93e3cc6c0 - languageName: node - linkType: hard - "request@npm:^2.74.0": version: 2.88.2 resolution: "request@npm:2.88.2" @@ -13681,13 +12249,6 @@ __metadata: languageName: node linkType: hard -"resolve-url@npm:^0.2.1": - version: 0.2.1 - resolution: "resolve-url@npm:0.2.1" - checksum: 7b7035b9ed6e7bc7d289e90aef1eab5a43834539695dac6416ca6e91f1a94132ae4796bbd173cdacfdc2ade90b5f38a3fb6186bebc1b221cd157777a23b9ad14 - languageName: node - linkType: hard - "resolve.exports@npm:^2.0.0": version: 2.0.0 resolution: "resolve.exports@npm:2.0.0" @@ -13757,13 +12318,6 @@ __metadata: languageName: node linkType: hard -"ret@npm:~0.1.10": - version: 0.1.15 - resolution: "ret@npm:0.1.15" - checksum: d76a9159eb8c946586567bd934358dfc08a36367b3257f7a3d7255fdd7b56597235af23c6afa0d7f0254159e8051f93c918809962ebd6df24ca2a83dbe4d4151 - languageName: node - linkType: hard - "retry@npm:^0.10.0": version: 0.10.1 resolution: "retry@npm:0.10.1" @@ -13792,17 +12346,6 @@ __metadata: languageName: node linkType: hard -"rimraf@npm:^2.5.4, rimraf@npm:^2.6.3": - version: 2.7.1 - resolution: "rimraf@npm:2.7.1" - dependencies: - glob: ^7.1.3 - bin: - rimraf: ./bin.js - checksum: cdc7f6eacb17927f2a075117a823e1c5951792c6498ebcce81ca8203454a811d4cf8900314154d3259bb8f0b42ab17f67396a8694a54cae3283326e57ad250cd - languageName: node - linkType: hard - "rimraf@npm:^3.0.0, rimraf@npm:^3.0.2": version: 3.0.2 resolution: "rimraf@npm:3.0.2" @@ -13814,16 +12357,6 @@ __metadata: languageName: node linkType: hard -"ripemd160@npm:^2.0.0, ripemd160@npm:^2.0.1": - version: 2.0.2 - resolution: "ripemd160@npm:2.0.2" - dependencies: - hash-base: ^3.0.0 - inherits: ^2.0.1 - checksum: 006accc40578ee2beae382757c4ce2908a826b27e2b079efdcd2959ee544ddf210b7b5d7d5e80467807604244e7388427330f5c6d4cd61e6edaddc5773ccc393 - languageName: node - linkType: hard - "rollup-plugin-dts@npm:^5.1.1": version: 5.1.1 resolution: "rollup-plugin-dts@npm:5.1.1" @@ -13884,15 +12417,6 @@ __metadata: languageName: node linkType: hard -"run-queue@npm:^1.0.0, run-queue@npm:^1.0.3": - version: 1.0.3 - resolution: "run-queue@npm:1.0.3" - dependencies: - aproba: ^1.1.1 - checksum: c4541e18b5e056af60f398f2f1b3d89aae5c093d1524bf817c5ee68bcfa4851ad9976f457a9aea135b1d0d72ee9a91c386e3d136bcd95b699c367cd09c70be53 - languageName: node - linkType: hard - "rxjs@npm:^6.6.0": version: 6.6.7 resolution: "rxjs@npm:6.6.7" @@ -13911,7 +12435,7 @@ __metadata: languageName: node linkType: hard -"safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:^5.2.0, safe-buffer@npm:~5.2.0": +"safe-buffer@npm:^5.0.1, safe-buffer@npm:^5.1.0, safe-buffer@npm:^5.1.1, safe-buffer@npm:^5.1.2, safe-buffer@npm:~5.2.0": version: 5.2.1 resolution: "safe-buffer@npm:5.2.1" checksum: b99c4b41fdd67a6aaf280fcd05e9ffb0813654894223afb78a31f14a19ad220bba8aba1cb14eddce1fcfb037155fe6de4e861784eb434f7d11ed58d1e70dd491 @@ -13936,15 +12460,6 @@ __metadata: languageName: node linkType: hard -"safe-regex@npm:^1.1.0": - version: 1.1.0 - resolution: "safe-regex@npm:1.1.0" - dependencies: - ret: ~0.1.10 - checksum: 9a8bba57c87a841f7997b3b951e8e403b1128c1a4fd1182f40cc1a20e2d490593d7c2a21030fadfea320c8e859219019e136f678c6689ed5960b391b822f01d5 - languageName: node - linkType: hard - "safer-buffer@npm:>= 2.1.2 < 3, safer-buffer@npm:>= 2.1.2 < 3.0.0, safer-buffer@npm:^2.0.2, safer-buffer@npm:^2.1.0, safer-buffer@npm:~2.1.0": version: 2.1.2 resolution: "safer-buffer@npm:2.1.2" @@ -13980,14 +12495,14 @@ __metadata: languageName: node linkType: hard -"schema-utils@npm:^1.0.0": - version: 1.0.0 - resolution: "schema-utils@npm:1.0.0" +"schema-utils@npm:^3.1.0, schema-utils@npm:^3.1.1": + version: 3.1.1 + resolution: "schema-utils@npm:3.1.1" dependencies: - ajv: ^6.1.0 - ajv-errors: ^1.0.0 - ajv-keywords: ^3.1.0 - checksum: e8273b4f6eff9ddf4a4f4c11daf7b96b900237bf8859c86fa1e9b4fab416b72d7ea92468f8db89c18a3499a1070206e1c8a750c83b42d5325fc659cbb55eee88 + "@types/json-schema": ^7.0.8 + ajv: ^6.12.5 + ajv-keywords: ^3.5.2 + checksum: fb73f3d759d43ba033c877628fe9751620a26879f6301d3dbeeb48cf2a65baec5cdf99da65d1bf3b4ff5444b2e59cbe4f81c2456b5e0d2ba7d7fd4aed5da29ce languageName: node linkType: hard @@ -14031,12 +12546,12 @@ __metadata: languageName: node linkType: hard -"serialize-javascript@npm:^4.0.0": - version: 4.0.0 - resolution: "serialize-javascript@npm:4.0.0" +"serialize-javascript@npm:^6.0.1": + version: 6.0.1 + resolution: "serialize-javascript@npm:6.0.1" dependencies: randombytes: ^2.1.0 - checksum: 3273b3394b951671fcf388726e9577021870dfbf85e742a1183fb2e91273e6101bdccea81ff230724f6659a7ee4cef924b0ff9baca32b79d9384ec37caf07302 + checksum: 3c4f4cb61d0893b988415bdb67243637333f3f574e9e9cc9a006a2ced0b390b0b3b44aef8d51c951272a9002ec50885eefdc0298891bc27eb2fe7510ea87dc4f languageName: node linkType: hard @@ -14047,37 +12562,6 @@ __metadata: languageName: node linkType: hard -"set-value@npm:^2.0.0, set-value@npm:^2.0.1": - version: 2.0.1 - resolution: "set-value@npm:2.0.1" - dependencies: - extend-shallow: ^2.0.1 - is-extendable: ^0.1.1 - is-plain-object: ^2.0.3 - split-string: ^3.0.1 - checksum: 09a4bc72c94641aeae950eb60dc2755943b863780fcc32e441eda964b64df5e3f50603d5ebdd33394ede722528bd55ed43aae26e9df469b4d32e2292b427b601 - languageName: node - linkType: hard - -"setimmediate@npm:^1.0.4": - version: 1.0.5 - resolution: "setimmediate@npm:1.0.5" - checksum: c9a6f2c5b51a2dabdc0247db9c46460152ffc62ee139f3157440bd48e7c59425093f42719ac1d7931f054f153e2d26cf37dfeb8da17a794a58198a2705e527fd - languageName: node - linkType: hard - -"sha.js@npm:^2.4.0, sha.js@npm:^2.4.8": - version: 2.4.11 - resolution: "sha.js@npm:2.4.11" - dependencies: - inherits: ^2.0.1 - safe-buffer: ^5.0.1 - bin: - sha.js: ./bin.js - checksum: ebd3f59d4b799000699097dadb831c8e3da3eb579144fd7eb7a19484cbcbb7aca3c68ba2bb362242eb09e33217de3b4ea56e4678184c334323eca24a58e3ad07 - languageName: node - linkType: hard - "shallow-clone@npm:^3.0.0": version: 3.0.1 resolution: "shallow-clone@npm:3.0.1" @@ -14204,42 +12688,6 @@ __metadata: languageName: node linkType: hard -"snapdragon-node@npm:^2.0.1": - version: 2.1.1 - resolution: "snapdragon-node@npm:2.1.1" - dependencies: - define-property: ^1.0.0 - isobject: ^3.0.0 - snapdragon-util: ^3.0.1 - checksum: 9bb57d759f9e2a27935dbab0e4a790137adebace832b393e350a8bf5db461ee9206bb642d4fe47568ee0b44080479c8b4a9ad0ebe3712422d77edf9992a672fd - languageName: node - linkType: hard - -"snapdragon-util@npm:^3.0.1": - version: 3.0.1 - resolution: "snapdragon-util@npm:3.0.1" - dependencies: - kind-of: ^3.2.0 - checksum: 684997dbe37ec995c03fd3f412fba2b711fc34cb4010452b7eb668be72e8811a86a12938b511e8b19baf853b325178c56d8b78d655305e5cfb0bb8b21677e7b7 - languageName: node - linkType: hard - -"snapdragon@npm:^0.8.1": - version: 0.8.2 - resolution: "snapdragon@npm:0.8.2" - dependencies: - base: ^0.11.1 - debug: ^2.2.0 - define-property: ^0.2.5 - extend-shallow: ^2.0.1 - map-cache: ^0.2.2 - source-map: ^0.5.6 - source-map-resolve: ^0.5.0 - use: ^3.1.0 - checksum: a197f242a8f48b11036563065b2487e9b7068f50a20dd81d9161eca6af422174fc158b8beeadbe59ce5ef172aa5718143312b3aebaae551c124b7824387c8312 - languageName: node - linkType: hard - "snyk@npm:^1.91.0": version: 1.1090.0 resolution: "snyk@npm:1.1090.0" @@ -14279,13 +12727,6 @@ __metadata: languageName: node linkType: hard -"source-list-map@npm:^2.0.0": - version: 2.0.1 - resolution: "source-list-map@npm:2.0.1" - checksum: 806efc6f75e7cd31e4815e7a3aaf75a45c704871ea4075cb2eb49882c6fca28998f44fc5ac91adb6de03b2882ee6fb02f951fdc85e6a22b338c32bfe19557938 - languageName: node - linkType: hard - "source-map-js@npm:^1.0.2": version: 1.0.2 resolution: "source-map-js@npm:1.0.2" @@ -14293,19 +12734,6 @@ __metadata: languageName: node linkType: hard -"source-map-resolve@npm:^0.5.0": - version: 0.5.3 - resolution: "source-map-resolve@npm:0.5.3" - dependencies: - atob: ^2.1.2 - decode-uri-component: ^0.2.0 - resolve-url: ^0.2.1 - source-map-url: ^0.4.0 - urix: ^0.1.0 - checksum: c73fa44ac00783f025f6ad9e038ab1a2e007cd6a6b86f47fe717c3d0765b4a08d264f6966f3bd7cd9dbcd69e4832783d5472e43247775b2a550d6f2155d24bae - languageName: node - linkType: hard - "source-map-support@npm:0.5.13": version: 0.5.13 resolution: "source-map-support@npm:0.5.13" @@ -14316,7 +12744,7 @@ __metadata: languageName: node linkType: hard -"source-map-support@npm:^0.5.21, source-map-support@npm:~0.5.12": +"source-map-support@npm:^0.5.21, source-map-support@npm:~0.5.20": version: 0.5.21 resolution: "source-map-support@npm:0.5.21" dependencies: @@ -14326,20 +12754,6 @@ __metadata: languageName: node linkType: hard -"source-map-url@npm:^0.4.0": - version: 0.4.1 - resolution: "source-map-url@npm:0.4.1" - checksum: 64c5c2c77aff815a6e61a4120c309ae4cac01298d9bcbb3deb1b46a4dd4c46d4a1eaeda79ec9f684766ae80e8dc86367b89326ce9dd2b89947bd9291fc1ac08c - languageName: node - linkType: hard - -"source-map@npm:^0.5.6": - version: 0.5.7 - resolution: "source-map@npm:0.5.7" - checksum: 5dc2043b93d2f194142c7f38f74a24670cd7a0063acdaf4bf01d2964b402257ae843c2a8fa822ad5b71013b5fcafa55af7421383da919752f22ff488bc553f4d - languageName: node - linkType: hard - "source-map@npm:^0.6.0, source-map@npm:^0.6.1, source-map@npm:~0.6.1": version: 0.6.1 resolution: "source-map@npm:0.6.1" @@ -14390,15 +12804,6 @@ __metadata: languageName: node linkType: hard -"split-string@npm:^3.0.1, split-string@npm:^3.0.2": - version: 3.1.0 - resolution: "split-string@npm:3.1.0" - dependencies: - extend-shallow: ^3.0.0 - checksum: ae5af5c91bdc3633628821bde92fdf9492fa0e8a63cf6a0376ed6afde93c701422a1610916f59be61972717070119e848d10dfbbd5024b7729d6a71972d2a84c - languageName: node - linkType: hard - "split2@npm:^3.0.0": version: 3.2.2 resolution: "split2@npm:3.2.2" @@ -14463,15 +12868,6 @@ __metadata: languageName: node linkType: hard -"ssri@npm:^6.0.1": - version: 6.0.2 - resolution: "ssri@npm:6.0.2" - dependencies: - figgy-pudding: ^3.5.1 - checksum: 7c2e5d442f6252559c8987b7114bcf389fe5614bf65de09ba3e6f9a57b9b65b2967de348fcc3acccff9c069adb168140dd2c5fc2f6f4a779e604a27ef1f7d551 - languageName: node - linkType: hard - "stack-utils@npm:^2.0.3": version: 2.0.6 resolution: "stack-utils@npm:2.0.6" @@ -14481,36 +12877,6 @@ __metadata: languageName: node linkType: hard -"static-extend@npm:^0.1.1": - version: 0.1.2 - resolution: "static-extend@npm:0.1.2" - dependencies: - define-property: ^0.2.5 - object-copy: ^0.1.0 - checksum: 8657485b831f79e388a437260baf22784540417a9b29e11572c87735df24c22b84eda42107403a64b30861b2faf13df9f7fc5525d51f9d1d2303aba5cbf4e12c - languageName: node - linkType: hard - -"stream-browserify@npm:^2.0.1": - version: 2.0.2 - resolution: "stream-browserify@npm:2.0.2" - dependencies: - inherits: ~2.0.1 - readable-stream: ^2.0.2 - checksum: 8de7bcab5582e9a931ae1a4768be7efe8fa4b0b95fd368d16d8cf3e494b897d6b0a7238626de5d71686e53bddf417fd59d106cfa3af0ec055f61a8d1f8fc77b3 - languageName: node - linkType: hard - -"stream-each@npm:^1.1.0": - version: 1.2.3 - resolution: "stream-each@npm:1.2.3" - dependencies: - end-of-stream: ^1.1.0 - stream-shift: ^1.0.0 - checksum: f243de78e9fcc60757994efc4e8ecae9f01a4b2c6a505d786b11fcaa68b1a75ca54afc1669eac9e08f19ff0230792fc40d0f3e3e2935d76971b4903af18b76ab - languageName: node - linkType: hard - "stream-events@npm:^1.0.5": version: 1.0.5 resolution: "stream-events@npm:1.0.5" @@ -14520,26 +12886,6 @@ __metadata: languageName: node linkType: hard -"stream-http@npm:^2.7.2": - version: 2.8.3 - resolution: "stream-http@npm:2.8.3" - dependencies: - builtin-status-codes: ^3.0.0 - inherits: ^2.0.1 - readable-stream: ^2.3.6 - to-arraybuffer: ^1.0.0 - xtend: ^4.0.0 - checksum: f57dfaa21a015f72e6ce6b199cf1762074cfe8acf0047bba8f005593754f1743ad0a91788f95308d9f3829ad55742399ad27b4624432f2752a08e62ef4346e05 - languageName: node - linkType: hard - -"stream-shift@npm:^1.0.0": - version: 1.0.1 - resolution: "stream-shift@npm:1.0.1" - checksum: 59b82b44b29ec3699b5519a49b3cedcc6db58c72fb40c04e005525dfdcab1c75c4e0c180b923c380f204bed78211b9bad8faecc7b93dece4d004c3f6ec75737b - languageName: node - linkType: hard - "string-argv@npm:^0.3.1": version: 0.3.1 resolution: "string-argv@npm:0.3.1" @@ -14628,7 +12974,7 @@ __metadata: languageName: node linkType: hard -"string_decoder@npm:^1.0.0, string_decoder@npm:^1.1.1": +"string_decoder@npm:^1.1.1": version: 1.3.0 resolution: "string_decoder@npm:1.3.0" dependencies: @@ -14822,14 +13168,7 @@ __metadata: languageName: node linkType: hard -"tapable@npm:^1.0.0, tapable@npm:^1.1.3": - version: 1.1.3 - resolution: "tapable@npm:1.1.3" - checksum: 53ff4e7c3900051c38cc4faab428ebfd7e6ad0841af5a7ac6d5f3045c5b50e88497bfa8295b4b3fbcadd94993c9e358868b78b9fb249a76cb8b018ac8dccafd7 - languageName: node - linkType: hard - -"tapable@npm:^2.2.0": +"tapable@npm:^2.1.1, tapable@npm:^2.2.0": version: 2.2.1 resolution: "tapable@npm:2.2.1" checksum: 3b7a1b4d86fa940aad46d9e73d1e8739335efd4c48322cb37d073eb6f80f5281889bf0320c6d8ffcfa1a0dd5bfdbd0f9d037e252ef972aca595330538aac4d51 @@ -14897,35 +13236,39 @@ __metadata: languageName: node linkType: hard -"terser-webpack-plugin@npm:^1.4.3": - version: 1.4.5 - resolution: "terser-webpack-plugin@npm:1.4.5" +"terser-webpack-plugin@npm:^5.1.3": + version: 5.3.7 + resolution: "terser-webpack-plugin@npm:5.3.7" dependencies: - cacache: ^12.0.2 - find-cache-dir: ^2.1.0 - is-wsl: ^1.1.0 - schema-utils: ^1.0.0 - serialize-javascript: ^4.0.0 - source-map: ^0.6.1 - terser: ^4.1.2 - webpack-sources: ^1.4.0 - worker-farm: ^1.7.0 + "@jridgewell/trace-mapping": ^0.3.17 + jest-worker: ^27.4.5 + schema-utils: ^3.1.1 + serialize-javascript: ^6.0.1 + terser: ^5.16.5 peerDependencies: - webpack: ^4.0.0 - checksum: 02aada80927d3c8105d69cb00384d307b73aed67d180db5d20023a8d649149f3803ad50f9cd2ef9eb2622005de87e677198ecc5088f51422bfac5d4d57472d0e + webpack: ^5.1.0 + peerDependenciesMeta: + "@swc/core": + optional: true + esbuild: + optional: true + uglify-js: + optional: true + checksum: 095e699fdeeb553cdf2c6f75f983949271b396d9c201d7ae9fc633c45c1c1ad14c7257ef9d51ccc62213dd3e97f875870ba31550f6d4f1b6674f2615562da7f7 languageName: node linkType: hard -"terser@npm:^4.1.2": - version: 4.8.1 - resolution: "terser@npm:4.8.1" +"terser@npm:^5.16.5": + version: 5.16.6 + resolution: "terser@npm:5.16.6" dependencies: + "@jridgewell/source-map": ^0.3.2 + acorn: ^8.5.0 commander: ^2.20.0 - source-map: ~0.6.1 - source-map-support: ~0.5.12 + source-map-support: ~0.5.20 bin: terser: bin/terser - checksum: b342819bf7e82283059aaa3f22bb74deb1862d07573ba5a8947882190ad525fd9b44a15074986be083fd379c58b9a879457a330b66dcdb77b485c44267f9a55a + checksum: f763a7bcc7b98cb2bfc41434f7b92bfe8a701a12c92ea6049377736c8e6de328240d654a20dfe15ce170fd783491b9873fad9f4cd8fee4f6c6fb8ca407859dee languageName: node linkType: hard @@ -14980,15 +13323,6 @@ __metadata: languageName: node linkType: hard -"timers-browserify@npm:^2.0.4": - version: 2.0.12 - resolution: "timers-browserify@npm:2.0.12" - dependencies: - setimmediate: ^1.0.4 - checksum: ec37ae299066bef6c464dcac29c7adafba1999e7227a9bdc4e105a459bee0f0b27234a46bfd7ab4041da79619e06a58433472867a913d01c26f8a203f87cee70 - languageName: node - linkType: hard - "tiny-glob@npm:^0.2.9": version: 0.2.9 resolution: "tiny-glob@npm:0.2.9" @@ -15024,13 +13358,6 @@ __metadata: languageName: node linkType: hard -"to-arraybuffer@npm:^1.0.0": - version: 1.0.1 - resolution: "to-arraybuffer@npm:1.0.1" - checksum: 31433c10b388722729f5da04c6b2a06f40dc84f797bb802a5a171ced1e599454099c6c5bc5118f4b9105e7d049d3ad9d0f71182b77650e4fdb04539695489941 - languageName: node - linkType: hard - "to-fast-properties@npm:^2.0.0": version: 2.0.0 resolution: "to-fast-properties@npm:2.0.0" @@ -15038,25 +13365,6 @@ __metadata: languageName: node linkType: hard -"to-object-path@npm:^0.3.0": - version: 0.3.0 - resolution: "to-object-path@npm:0.3.0" - dependencies: - kind-of: ^3.0.2 - checksum: 9425effee5b43e61d720940fa2b889623f77473d459c2ce3d4a580a4405df4403eec7be6b857455908070566352f9e2417304641ed158dda6f6a365fe3e66d70 - languageName: node - linkType: hard - -"to-regex-range@npm:^2.1.0": - version: 2.1.1 - resolution: "to-regex-range@npm:2.1.1" - dependencies: - is-number: ^3.0.0 - repeat-string: ^1.6.1 - checksum: 46093cc14be2da905cc931e442d280b2e544e2bfdb9a24b3cf821be8d342f804785e5736c108d5be026021a05d7b38144980a61917eee3c88de0a5e710e10320 - languageName: node - linkType: hard - "to-regex-range@npm:^5.0.1": version: 5.0.1 resolution: "to-regex-range@npm:5.0.1" @@ -15066,18 +13374,6 @@ __metadata: languageName: node linkType: hard -"to-regex@npm:^3.0.1, to-regex@npm:^3.0.2": - version: 3.0.2 - resolution: "to-regex@npm:3.0.2" - dependencies: - define-property: ^2.0.2 - extend-shallow: ^3.0.2 - regex-not: ^1.0.2 - safe-regex: ^1.1.0 - checksum: 4ed4a619059b64e204aad84e4e5f3ea82d97410988bcece7cf6cbfdbf193d11bff48cf53842d88b8bb00b1bfc0d048f61f20f0709e6f393fd8fe0122662d9db4 - languageName: node - linkType: hard - "tough-cookie@npm:^4.0.0, tough-cookie@npm:^4.1.2": version: 4.1.2 resolution: "tough-cookie@npm:4.1.2" @@ -15268,13 +13564,6 @@ __metadata: languageName: node linkType: hard -"tty-browserify@npm:0.0.0": - version: 0.0.0 - resolution: "tty-browserify@npm:0.0.0" - checksum: a06f746acc419cb2527ba19b6f3bd97b4a208c03823bfb37b2982629d2effe30ebd17eaed0d7e2fc741f3c4f2a0c43455bd5fb4194354b378e78cfb7ca687f59 - languageName: node - linkType: hard - "tunnel-agent@npm:^0.6.0": version: 0.6.0 resolution: "tunnel-agent@npm:0.6.0" @@ -15458,27 +13747,6 @@ __metadata: languageName: node linkType: hard -"union-value@npm:^1.0.0": - version: 1.0.1 - resolution: "union-value@npm:1.0.1" - dependencies: - arr-union: ^3.1.0 - get-value: ^2.0.6 - is-extendable: ^0.1.1 - set-value: ^2.0.1 - checksum: a3464097d3f27f6aa90cf103ed9387541bccfc006517559381a10e0dffa62f465a9d9a09c9b9c3d26d0f4cbe61d4d010e2fbd710fd4bf1267a768ba8a774b0ba - languageName: node - linkType: hard - -"unique-filename@npm:^1.1.1": - version: 1.1.1 - resolution: "unique-filename@npm:1.1.1" - dependencies: - unique-slug: ^2.0.0 - checksum: cf4998c9228cc7647ba7814e255dec51be43673903897b1786eff2ac2d670f54d4d733357eb08dea969aa5e6875d0e1bd391d668fbdb5a179744e7c7551a6f80 - languageName: node - linkType: hard - "unique-filename@npm:^2.0.0": version: 2.0.1 resolution: "unique-filename@npm:2.0.1" @@ -15488,15 +13756,6 @@ __metadata: languageName: node linkType: hard -"unique-slug@npm:^2.0.0": - version: 2.0.2 - resolution: "unique-slug@npm:2.0.2" - dependencies: - imurmurhash: ^0.1.4 - checksum: 5b6876a645da08d505dedb970d1571f6cebdf87044cb6b740c8dbb24f0d6e1dc8bdbf46825fd09f994d7cf50760e6f6e063cfa197d51c5902c00a861702eb75a - languageName: node - linkType: hard - "unique-slug@npm:^3.0.0": version: 3.0.0 resolution: "unique-slug@npm:3.0.0" @@ -15534,23 +13793,6 @@ __metadata: languageName: node linkType: hard -"unset-value@npm:^1.0.0": - version: 1.0.0 - resolution: "unset-value@npm:1.0.0" - dependencies: - has-value: ^0.3.1 - isobject: ^3.0.0 - checksum: 5990ecf660672be2781fc9fb322543c4aa592b68ed9a3312fa4df0e9ba709d42e823af090fc8f95775b4cd2c9a5169f7388f0cec39238b6d0d55a69fc2ab6b29 - languageName: node - linkType: hard - -"upath@npm:^1.1.1": - version: 1.2.0 - resolution: "upath@npm:1.2.0" - checksum: 4c05c094797cb733193a0784774dbea5b1889d502fc9f0572164177e185e4a59ba7099bf0b0adf945b232e2ac60363f9bf18aac9b2206fb99cbef971a8455445 - languageName: node - linkType: hard - "upath@npm:^2.0.1": version: 2.0.1 resolution: "upath@npm:2.0.1" @@ -15558,7 +13800,7 @@ __metadata: languageName: node linkType: hard -"update-browserslist-db@npm:^1.0.9": +"update-browserslist-db@npm:^1.0.10, update-browserslist-db@npm:^1.0.9": version: 1.0.10 resolution: "update-browserslist-db@npm:1.0.10" dependencies: @@ -15581,13 +13823,6 @@ __metadata: languageName: node linkType: hard -"urix@npm:^0.1.0": - version: 0.1.0 - resolution: "urix@npm:0.1.0" - checksum: 4c076ecfbf3411e888547fe844e52378ab5ada2d2f27625139011eada79925e77f7fbf0e4016d45e6a9e9adb6b7e64981bd49b22700c7c401c5fc15f423303b3 - languageName: node - linkType: hard - "url-parse@npm:^1.5.3": version: 1.5.10 resolution: "url-parse@npm:1.5.10" @@ -15598,16 +13833,6 @@ __metadata: languageName: node linkType: hard -"url@npm:^0.11.0": - version: 0.11.0 - resolution: "url@npm:0.11.0" - dependencies: - punycode: 1.3.2 - querystring: 0.2.0 - checksum: 50d100d3dd2d98b9fe3ada48cadb0b08aa6be6d3ac64112b867b56b19be4bfcba03c2a9a0d7922bfd7ac17d4834e88537749fe182430dfd9b68e520175900d90 - languageName: node - linkType: hard - "urlgrey@npm:1.0.0": version: 1.0.0 resolution: "urlgrey@npm:1.0.0" @@ -15617,13 +13842,6 @@ __metadata: languageName: node linkType: hard -"use@npm:^3.1.0": - version: 3.1.1 - resolution: "use@npm:3.1.1" - checksum: 08a130289f5238fcbf8f59a18951286a6e660d17acccc9d58d9b69dfa0ee19aa038e8f95721b00b432c36d1629a9e32a464bf2e7e0ae6a244c42ddb30bdd8b33 - languageName: node - linkType: hard - "util-deprecate@npm:^1.0.1, util-deprecate@npm:~1.0.1": version: 1.0.2 resolution: "util-deprecate@npm:1.0.2" @@ -15631,24 +13849,6 @@ __metadata: languageName: node linkType: hard -"util@npm:0.10.3": - version: 0.10.3 - resolution: "util@npm:0.10.3" - dependencies: - inherits: 2.0.1 - checksum: bd800f5d237a82caddb61723a6cbe45297d25dd258651a31335a4d5d981fd033cb4771f82db3d5d59b582b187cb69cfe727dc6f4d8d7826f686ee6c07ce611e0 - languageName: node - linkType: hard - -"util@npm:^0.11.0": - version: 0.11.1 - resolution: "util@npm:0.11.1" - dependencies: - inherits: 2.0.3 - checksum: 80bee6a2edf5ab08dcb97bfe55ca62289b4e66f762ada201f2c5104cb5e46474c8b334f6504d055c0e6a8fda10999add9bcbd81ba765e7f37b17dc767331aa55 - languageName: node - linkType: hard - "uuid@npm:8.3.2, uuid@npm:^8.0.0": version: 8.3.2 resolution: "uuid@npm:8.3.2" @@ -15762,13 +13962,6 @@ __metadata: languageName: node linkType: hard -"vm-browserify@npm:^1.0.1": - version: 1.1.2 - resolution: "vm-browserify@npm:1.1.2" - checksum: 10a1c50aab54ff8b4c9042c15fc64aefccce8d2fb90c0640403242db0ee7fb269f9b102bdb69cfb435d7ef3180d61fd4fb004a043a12709abaf9056cfd7e039d - languageName: node - linkType: hard - "w3c-hr-time@npm:^1.0.2": version: 1.0.2 resolution: "w3c-hr-time@npm:1.0.2" @@ -15812,29 +14005,13 @@ __metadata: languageName: node linkType: hard -"watchpack-chokidar2@npm:^2.0.1": - version: 2.0.1 - resolution: "watchpack-chokidar2@npm:2.0.1" - dependencies: - chokidar: ^2.1.8 - checksum: acf0f9ebca0c0b2fd1fe87ba557670477a6c0410bf1a653a726e68eb0620aa94fd9a43027a160a76bc793a21ea12e215e1e87dafe762682c13ef92ad4daf7b58 - languageName: node - linkType: hard - -"watchpack@npm:^1.7.4": - version: 1.7.5 - resolution: "watchpack@npm:1.7.5" +"watchpack@npm:^2.4.0": + version: 2.4.0 + resolution: "watchpack@npm:2.4.0" dependencies: - chokidar: ^3.4.1 + glob-to-regexp: ^0.4.1 graceful-fs: ^4.1.2 - neo-async: ^2.5.0 - watchpack-chokidar2: ^2.0.1 - dependenciesMeta: - chokidar: - optional: true - watchpack-chokidar2: - optional: true - checksum: 8b7cb8c8df8f4dd0e8ac47693c0141c4f020a4b031411247d600eca31522fde6f1f9a3a6f6518b46e71f7971b0ed5734c08c60d7fdd2530e7262776286f69236 + checksum: 23d4bc58634dbe13b86093e01c6a68d8096028b664ab7139d58f0c37d962d549a940e98f2f201cecdabd6f9c340338dc73ef8bf094a2249ef582f35183d1a131 languageName: node linkType: hard @@ -15882,51 +14059,47 @@ __metadata: languageName: node linkType: hard -"webpack-sources@npm:^1.4.0, webpack-sources@npm:^1.4.1": - version: 1.4.3 - resolution: "webpack-sources@npm:1.4.3" - dependencies: - source-list-map: ^2.0.0 - source-map: ~0.6.1 - checksum: 37463dad8d08114930f4bc4882a9602941f07c9f0efa9b6bc78738cd936275b990a596d801ef450d022bb005b109b9f451dd087db2f3c9baf53e8e22cf388f79 +"webpack-sources@npm:^3.2.3": + version: 3.2.3 + resolution: "webpack-sources@npm:3.2.3" + checksum: 989e401b9fe3536529e2a99dac8c1bdc50e3a0a2c8669cbafad31271eadd994bc9405f88a3039cd2e29db5e6d9d0926ceb7a1a4e7409ece021fe79c37d9c4607 languageName: node linkType: hard -"webpack@npm:^4.44.2": - version: 4.46.0 - resolution: "webpack@npm:4.46.0" +"webpack@npm:^5.76.1": + version: 5.76.1 + resolution: "webpack@npm:5.76.1" dependencies: - "@webassemblyjs/ast": 1.9.0 - "@webassemblyjs/helper-module-context": 1.9.0 - "@webassemblyjs/wasm-edit": 1.9.0 - "@webassemblyjs/wasm-parser": 1.9.0 - acorn: ^6.4.1 - ajv: ^6.10.2 - ajv-keywords: ^3.4.1 + "@types/eslint-scope": ^3.7.3 + "@types/estree": ^0.0.51 + "@webassemblyjs/ast": 1.11.1 + "@webassemblyjs/wasm-edit": 1.11.1 + "@webassemblyjs/wasm-parser": 1.11.1 + acorn: ^8.7.1 + acorn-import-assertions: ^1.7.6 + browserslist: ^4.14.5 chrome-trace-event: ^1.0.2 - enhanced-resolve: ^4.5.0 - eslint-scope: ^4.0.3 - json-parse-better-errors: ^1.0.2 - loader-runner: ^2.4.0 - loader-utils: ^1.2.3 - memory-fs: ^0.4.1 - micromatch: ^3.1.10 - mkdirp: ^0.5.3 - neo-async: ^2.6.1 - node-libs-browser: ^2.2.1 - schema-utils: ^1.0.0 - tapable: ^1.1.3 - terser-webpack-plugin: ^1.4.3 - watchpack: ^1.7.4 - webpack-sources: ^1.4.1 + enhanced-resolve: ^5.10.0 + es-module-lexer: ^0.9.0 + eslint-scope: 5.1.1 + events: ^3.2.0 + glob-to-regexp: ^0.4.1 + graceful-fs: ^4.2.9 + json-parse-even-better-errors: ^2.3.1 + loader-runner: ^4.2.0 + mime-types: ^2.1.27 + neo-async: ^2.6.2 + schema-utils: ^3.1.0 + tapable: ^2.1.1 + terser-webpack-plugin: ^5.1.3 + watchpack: ^2.4.0 + webpack-sources: ^3.2.3 peerDependenciesMeta: webpack-cli: optional: true - webpack-command: - optional: true bin: webpack: bin/webpack.js - checksum: 013fa24c00d4261e16ebca60353fa6f848e417b5a44bdf28c16ebebd67fa61e960420bb314c8df05cfe2dad9b90efabcf38fd6875f2361922769a0384085ef1e + checksum: b01fe0bc2dbca0e10d290ddb0bf81e807a031de48028176e2b21afd696b4d3f25ab9accdad888ef4a1f7c7f4d41f13d5bf2395b7653fdf3e5e3dafa54e56dab2 languageName: node linkType: hard @@ -16065,15 +14238,6 @@ __metadata: languageName: node linkType: hard -"worker-farm@npm:^1.7.0": - version: 1.7.0 - resolution: "worker-farm@npm:1.7.0" - dependencies: - errno: ~0.1.7 - checksum: eab917530e1feddf157ec749e9c91b73a886142daa7fdf3490bccbf7b548b2576c43ab8d0a98e72ac755cbc101ca8647a7b1ff2485fddb9e8f53c40c77f5a719 - languageName: node - linkType: hard - "wrap-ansi@npm:^6.2.0": version: 6.2.0 resolution: "wrap-ansi@npm:6.2.0" @@ -16210,20 +14374,13 @@ __metadata: languageName: node linkType: hard -"xtend@npm:^4.0.0, xtend@npm:~4.0.1": +"xtend@npm:~4.0.1": version: 4.0.2 resolution: "xtend@npm:4.0.2" checksum: ac5dfa738b21f6e7f0dd6e65e1b3155036d68104e67e5d5d1bde74892e327d7e5636a076f625599dc394330a731861e87343ff184b0047fef1360a7ec0a5a36a languageName: node linkType: hard -"y18n@npm:^4.0.0": - version: 4.0.3 - resolution: "y18n@npm:4.0.3" - checksum: 014dfcd9b5f4105c3bb397c1c8c6429a9df004aa560964fb36732bfb999bfe83d45ae40aeda5b55d21b1ee53d8291580a32a756a443e064317953f08025b1aa4 - languageName: node - linkType: hard - "y18n@npm:^5.0.5": version: 5.0.8 resolution: "y18n@npm:5.0.8"