From 1e19133602661dfc74bf901a29f3f9b76057704a Mon Sep 17 00:00:00 2001 From: jorenbroekema Date: Thu, 9 Nov 2023 16:40:38 +0100 Subject: [PATCH 1/6] chore: fix unit tests --- .babelrc | 3 - .eslintrc.json | 8 +- .github/workflows/verify.yml | 12 +- .npmignore | 2 +- .prettierignore | 3 +- CONTRIBUTING.md | 2 +- __integration__/css.test.js | 2 +- __integration__/customFileHeader.test.js | 4 +- __integration__/customFormats.test.js | 16 +- __integration__/logging/config.test.js | 2 +- __integration__/logging/file.test.js | 4 +- __integration__/logging/platform.test.js | 6 +- __integration__/nameCollisions.test.js | 6 +- __integration__/objectValues.test.js | 2 +- .../cliBuild.test.js | 27 +- __tests__/StyleDictionary.test.js | 286 + __tests__/__configs/test.js | 98 +- __tests__/__configs/test.json | 27 +- __tests__/__configs/test.json5 | 20 +- __tests__/__configs/test.jsonc | 12 +- __tests__/__helpers.js | 62 +- __tests__/__json_files/broken/broken.json | 2 +- .../__json_files/module_exports_object.js | 2 +- __tests__/__properties/font.json | 9 - __tests__/__properties/paddings.1.json | 24 - __tests__/__setup.js | 54 +- .../{__properties => __tokens}/borders.json | 0 .../{__properties => __tokens}/colors.json | 0 .../{__properties => __tokens}/comment.json | 0 __tests__/__tokens/font.json | 9 + .../font_sizes.json | 0 .../{__properties => __tokens}/icons.json | 0 .../images/flags/us.json | 2 +- .../nonPropertyNode.json | 0 .../{__properties => __tokens}/nonString.json | 0 .../{__properties => __tokens}/paddings.json | 0 __tests__/buildAllPlatforms.test.js | 30 +- __tests__/buildFile.test.js | 95 +- __tests__/buildFiles.test.js | 54 +- __tests__/buildPlatform.test.js | 150 +- __tests__/cleanAction.test.js | 30 +- __tests__/cleanAllPlatforms.test.js | 23 +- __tests__/cleanDir.test.js | 18 +- __tests__/cleanDirs.test.js | 36 +- __tests__/cleanFile.test.js | 16 +- __tests__/cleanFiles.test.js | 28 +- __tests__/cleanPlatform.test.js | 58 +- __tests__/common/filters.test.js | 10 +- .../createPropertyFormatter.test.snap.js | 36 + .../createPropertyFormatter.test.js | 388 +- .../common/formatHelpers/fileHeader.test.js | 18 +- .../formatHelpers/getTypeScriptType.test.js | 30 +- .../setSwiftFileProperties.test.js | 20 +- __tests__/common/transforms.test.js | 247 +- __tests__/exportPlatform.test.js | 436 +- __tests__/extend.test.js | 266 - ...roperties.test.js => filterTokens.test.js} | 91 +- __tests__/formats/__constants.js | 35 +- .../formats/__snapshots__/all.test.js.snap | 802 - .../formats/__snapshots__/all.test.snap.js | 752 + .../androidResources.test.js.snap | 50 - .../androidResources.test.snap.js | 49 + .../__snapshots__/es6Constants.test.snap.js | 13 + .../javascriptModule.test.snap.js | 19 + .../javascriptModuleFlat.test.snap.js | 15 + .../javascriptObject.test.snap.js | 19 + .../__snapshots__/javascriptUmd.test.snap.js | 31 + .../formats/__snapshots__/json.test.snap.js | 14 + .../__snapshots__/jsonFlat.test.snap.js | 10 + .../__snapshots__/jsonNested.test.snap.js | 25 + .../__snapshots__/lessIcons.test.snap.js | 19 + .../__snapshots__/lessVariables.test.snap.js | 17 + .../__snapshots__/scssIcons.test.snap.js | 18 + .../__snapshots__/scssMaps.test.js.snap | 54 - .../__snapshots__/scssMaps.test.snap.js | 55 + .../__snapshots__/scssVariables.test.snap.js | 16 + .../__snapshots__/stylusVariable.test.snap.js | 12 + ...le.test.js.snap => swiftFile.test.snap.js} | 52 +- .../typeScriptEs6Declarations.test.js.snap | 12 - .../typeScriptEs6Declarations.test.snap.js | 14 + __tests__/formats/all.test.js | 27 +- __tests__/formats/androidResources.test.js | 34 +- __tests__/formats/es6Constants.test.js | 34 +- __tests__/formats/javascriptModule.test.js | 35 +- .../formats/javascriptModuleFlat.test.js | 39 +- __tests__/formats/javascriptObject.test.js | 26 +- __tests__/formats/javascriptUmd.test.js | 35 +- __tests__/formats/json.test.js | 35 +- __tests__/formats/jsonFlat.test.js | 31 +- __tests__/formats/jsonNested.test.js | 61 +- __tests__/formats/lessIcons.test.js | 55 +- __tests__/formats/lessVariables.test.js | 53 +- __tests__/formats/scssIcons.test.js | 47 +- __tests__/formats/scssMaps.test.js | 37 +- __tests__/formats/scssVariables.test.js | 70 +- __tests__/formats/stylusVariable.test.js | 44 +- __tests__/formats/swiftFile.test.js | 40 +- .../formats/typeScriptEs6Declarations.test.js | 30 +- .../typeScriptModuleDeclarations.test.js | 17 +- __tests__/performAction.test.js | 25 +- __tests__/register/action.test.js | 91 +- __tests__/register/fileHeader.test.js | 89 +- __tests__/register/filter.test.js | 89 +- __tests__/register/format.test.js | 89 +- __tests__/register/parser.test.js | 89 +- __tests__/register/template.test.js | 87 - __tests__/register/transform.test.js | 69 +- __tests__/register/transformGroup.test.js | 121 +- __tests__/transform/config.test.js | 8 +- __tests__/transform/object.test.js | 14 +- __tests__/transform/property.test.js | 12 +- __tests__/transform/propertySetup.test.js | 51 +- __tests__/utils/combineJSON.test.js | 118 +- __tests__/utils/convertToBase64.test.js | 16 +- __tests__/utils/deepExtend.test.js | 69 +- __tests__/utils/flattenProperties.test.js | 39 +- .../utils/reference/getReferences.test.js | 31 +- .../utils/reference/resolveReference.test.js | 18 +- .../utils/reference/usesReference.test.js | 26 +- __tests__/utils/resolveObject.test.js | 234 +- bin/{style-dictionary => style-dictionary.js} | 26 +- docs/config.md | 22 +- docs/formats.md | 6 +- docs/using_the_npm_module.md | 4 +- docs/version_3.md | 4 +- .../auto-rebuild-watcher/package.json | 2 +- fs-node.js | 6 + index-node.js | 7 - index.js | 84 - lib/StyleDictionary.js | 436 + lib/buildAllPlatforms.js | 6 +- lib/buildFile.js | 70 +- lib/buildPlatform.js | 6 +- lib/cleanDir.js | 2 +- lib/cleanDirs.js | 4 +- lib/cleanFile.js | 2 +- lib/cleanPlatform.js | 6 +- lib/common/actions.js | 19 +- lib/common/formatHelpers/getTypeScriptType.js | 2 +- lib/common/formats.js | 12 +- .../templates/compose/object.kt.template.js | 2 +- .../templates/css/fonts.css.template.js | 2 +- .../templates/ios/singleton.m.template.js | 20 +- .../templates/scss/map-deep.template.js | 6 +- lib/exportPlatform.js | 4 +- lib/extend.js | 162 - lib/{filterProperties.js => filterTokens.js} | 38 +- lib/register/action.js | 2 +- lib/register/fileHeader.js | 2 +- lib/register/filter.js | 2 +- lib/register/format.js | 2 +- lib/register/parser.js | 2 +- lib/register/transform.js | 3 +- lib/register/transformGroup.js | 4 +- lib/transform/config.js | 16 +- lib/transform/object.js | 10 +- lib/transform/{property.js => token.js} | 0 .../{propertySetup.js => tokenSetup.js} | 26 +- lib/utils/combineJSON.js | 34 +- lib/utils/convertToBase64.js | 6 +- lib/utils/createDictionary.js | 24 +- lib/utils/createFormatArgs.js | 6 +- lib/utils/deepExtend.js | 2 + lib/utils/deepmerge.js | 14 + ...{flattenProperties.js => flattenTokens.js} | 18 +- lib/utils/references/getReferences.js | 14 +- mocha-hooks.mjs | 21 + package-lock.json | 18563 ++++++---------- package.json | 46 +- .../@esm-bundle+chai-as-promised+7.1.1.patch | 16 + patches/@web+test-runner-commands+0.9.0.patch | 74 + snapshot-plugin/chai-wtr-snapshot.js | 169 + types/Config.d.ts | 3 +- types/Dictionary.d.ts | 2 - types/index.d.ts | 2 - web-test-runner.config.mjs | 54 + 176 files changed, 12022 insertions(+), 15099 deletions(-) delete mode 100644 .babelrc rename {__tests__ => __node_tests__}/cliBuild.test.js (52%) create mode 100644 __tests__/StyleDictionary.test.js delete mode 100644 __tests__/__properties/font.json delete mode 100644 __tests__/__properties/paddings.1.json rename __tests__/{__properties => __tokens}/borders.json (100%) rename __tests__/{__properties => __tokens}/colors.json (100%) rename __tests__/{__properties => __tokens}/comment.json (100%) create mode 100644 __tests__/__tokens/font.json rename __tests__/{__properties => __tokens}/font_sizes.json (100%) rename __tests__/{__properties => __tokens}/icons.json (100%) rename __tests__/{__properties => __tokens}/images/flags/us.json (99%) rename __tests__/{__properties => __tokens}/nonPropertyNode.json (100%) rename __tests__/{__properties => __tokens}/nonString.json (100%) rename __tests__/{__properties => __tokens}/paddings.json (100%) create mode 100644 __tests__/common/formatHelpers/__snapshots__/createPropertyFormatter.test.snap.js delete mode 100644 __tests__/extend.test.js rename __tests__/{filterProperties.test.js => filterTokens.test.js} (51%) delete mode 100644 __tests__/formats/__snapshots__/all.test.js.snap create mode 100644 __tests__/formats/__snapshots__/all.test.snap.js delete mode 100644 __tests__/formats/__snapshots__/androidResources.test.js.snap create mode 100644 __tests__/formats/__snapshots__/androidResources.test.snap.js create mode 100644 __tests__/formats/__snapshots__/es6Constants.test.snap.js create mode 100644 __tests__/formats/__snapshots__/javascriptModule.test.snap.js create mode 100644 __tests__/formats/__snapshots__/javascriptModuleFlat.test.snap.js create mode 100644 __tests__/formats/__snapshots__/javascriptObject.test.snap.js create mode 100644 __tests__/formats/__snapshots__/javascriptUmd.test.snap.js create mode 100644 __tests__/formats/__snapshots__/json.test.snap.js create mode 100644 __tests__/formats/__snapshots__/jsonFlat.test.snap.js create mode 100644 __tests__/formats/__snapshots__/jsonNested.test.snap.js create mode 100644 __tests__/formats/__snapshots__/lessIcons.test.snap.js create mode 100644 __tests__/formats/__snapshots__/lessVariables.test.snap.js create mode 100644 __tests__/formats/__snapshots__/scssIcons.test.snap.js delete mode 100644 __tests__/formats/__snapshots__/scssMaps.test.js.snap create mode 100644 __tests__/formats/__snapshots__/scssMaps.test.snap.js create mode 100644 __tests__/formats/__snapshots__/scssVariables.test.snap.js create mode 100644 __tests__/formats/__snapshots__/stylusVariable.test.snap.js rename __tests__/formats/__snapshots__/{swiftFile.test.js.snap => swiftFile.test.snap.js} (54%) delete mode 100644 __tests__/formats/__snapshots__/typeScriptEs6Declarations.test.js.snap create mode 100644 __tests__/formats/__snapshots__/typeScriptEs6Declarations.test.snap.js delete mode 100644 __tests__/register/template.test.js rename bin/{style-dictionary => style-dictionary.js} (84%) create mode 100644 fs-node.js delete mode 100644 index-node.js delete mode 100644 index.js create mode 100644 lib/StyleDictionary.js delete mode 100644 lib/extend.js rename lib/{filterProperties.js => filterTokens.js} (69%) rename lib/transform/{property.js => token.js} (100%) rename lib/transform/{propertySetup.js => tokenSetup.js} (66%) create mode 100644 lib/utils/deepmerge.js rename lib/utils/{flattenProperties.js => flattenTokens.js} (64%) create mode 100644 mocha-hooks.mjs create mode 100644 patches/@esm-bundle+chai-as-promised+7.1.1.patch create mode 100644 patches/@web+test-runner-commands+0.9.0.patch create mode 100644 snapshot-plugin/chai-wtr-snapshot.js create mode 100644 web-test-runner.config.mjs diff --git a/.babelrc b/.babelrc deleted file mode 100644 index 1320b9a32..000000000 --- a/.babelrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "presets": ["@babel/preset-env"] -} diff --git a/.eslintrc.json b/.eslintrc.json index 3a96275b4..178d34929 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -3,23 +3,21 @@ "ecmaVersion": "latest", "sourceType": "module" }, - "plugins": ["jest"], "env": { "node": true, "mocha": true, - "jest": true + "es6": true }, "globals": { "Buffer": true, "escape": true }, - "extends": ["eslint:recommended", "plugin:jest/recommended"], + "extends": ["eslint:recommended"], "rules": { "no-console": 0, "no-unused-vars": 1, "no-control-regex": 0, "comma-dangle": 0, - "no-prototype-builtins": 0, - "jest/valid-title": 0 + "no-prototype-builtins": 0 } } diff --git a/.github/workflows/verify.yml b/.github/workflows/verify.yml index 578d9639b..79e39dd9b 100644 --- a/.github/workflows/verify.yml +++ b/.github/workflows/verify.yml @@ -24,9 +24,11 @@ jobs: - name: Linting & Formatting run: npm run lint - - name: Tests - run: npm run test + - name: Tests Node + run: npm run test:node - # in case we use playwright & @web/test-runner in the future - # - name: Install chromium - # run: npx playwright install-deps chromium + - name: Install chromium + run: npx playwright install-deps chromium + + - name: Tests Chromium + run: npm run test:unit diff --git a/.npmignore b/.npmignore index 70895556b..6d4977120 100644 --- a/.npmignore +++ b/.npmignore @@ -2,4 +2,4 @@ .eslintrc.json .editorconfig images/ -test/ +__tests__/ diff --git a/.prettierignore b/.prettierignore index c7247fa34..0e03cbe42 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1 +1,2 @@ -.changeset/ \ No newline at end of file +.changeset/ +**/*.snap.js diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index c6f2bd23c..3aa5f6a49 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -58,7 +58,7 @@ We separate each function/method into its own file and group them into directori Any new features should implement the proper unit tests. We use Jest to test our framework. -If you are adding a new transform, action, or format: please add new unit tests. You can see examples in test/formats. +If you are adding a new transform, action, or format: please add new unit tests. You can see examples in __tests__/formats. ## Documentation diff --git a/__integration__/css.test.js b/__integration__/css.test.js index 51e7fcff9..23d70da72 100644 --- a/__integration__/css.test.js +++ b/__integration__/css.test.js @@ -22,7 +22,7 @@ describe('integration', () => { // Testing proper string interpolation with multiple references here. // This is a CSS/web-specific thing so only including them in this // integration test. - properties: { + tokens: { breakpoint: { xs: { value: '304px' }, sm: { value: '768px' }, diff --git a/__integration__/customFileHeader.test.js b/__integration__/customFileHeader.test.js index 6c9f65eed..e28320452 100644 --- a/__integration__/customFileHeader.test.js +++ b/__integration__/customFileHeader.test.js @@ -33,8 +33,8 @@ describe(`integration`, () => { }, // only testing the file header in these tests so we are - // using a small properties object with a single token - properties: { + // using a small tokens object with a single token + tokens: { color: { red: { value: '#ff0000' }, }, diff --git a/__integration__/customFormats.test.js b/__integration__/customFormats.test.js index 752287b54..77d0c27e2 100644 --- a/__integration__/customFormats.test.js +++ b/__integration__/customFormats.test.js @@ -109,8 +109,8 @@ describe('integration', () => { it(`should receive proper arguments`, () => { const { dictionary, platform, file } = JSON.parse(output); - expect(dictionary).toHaveProperty(`properties`); - expect(dictionary).toHaveProperty(`allProperties`); + expect(dictionary).toHaveProperty(`tokens`); + expect(dictionary).toHaveProperty(`allTokens`); expect(platform).toHaveProperty(`options.otherOption`, `platform option`); expect(file).toHaveProperty(`options.otherOption`, `Test`); }); @@ -126,8 +126,8 @@ describe('integration', () => { it(`should receive proper arguments`, () => { const { dictionary, platform, file, options } = JSON.parse(output); - expect(dictionary).toHaveProperty(`properties`); - expect(dictionary).toHaveProperty(`allProperties`); + expect(dictionary).toHaveProperty(`tokens`); + expect(dictionary).toHaveProperty(`allTokens`); expect(platform).toHaveProperty(`options.otherOption`, `platform option`); expect(file).toHaveProperty(`options.otherOption`, `Test`); expect(options).toHaveProperty(`otherOption`, `Test`); @@ -145,8 +145,8 @@ describe('integration', () => { it(`should receive proper arguments`, () => { const { dictionary, platform, file } = JSON.parse(output); - expect(dictionary).toHaveProperty(`properties`); - expect(dictionary).toHaveProperty(`allProperties`); + expect(dictionary).toHaveProperty(`tokens`); + expect(dictionary).toHaveProperty(`allTokens`); expect(platform).toHaveProperty(`options.otherOption`, `platform option`); expect(file).toHaveProperty(`options.otherOption`, `Test`); }); @@ -163,8 +163,8 @@ describe('integration', () => { it(`should receive proper arguments`, () => { const { dictionary, platform, file, options } = JSON.parse(output); - expect(dictionary).toHaveProperty(`properties`); - expect(dictionary).toHaveProperty(`allProperties`); + expect(dictionary).toHaveProperty(`tokens`); + expect(dictionary).toHaveProperty(`allTokens`); expect(platform).toHaveProperty(`options.otherOption`, `platform option`); expect(file).toHaveProperty(`options.otherOption`, `Test`); expect(options).toHaveProperty(`otherOption`, `Test`); diff --git a/__integration__/logging/config.test.js b/__integration__/logging/config.test.js index afc1f3614..0979bed3e 100644 --- a/__integration__/logging/config.test.js +++ b/__integration__/logging/config.test.js @@ -24,7 +24,7 @@ const log = jest.spyOn(console, 'log').mockImplementation((message) => consoleOu * level. These messages happen when `.extend()` is called to verify * proper configuration such as source being an array. This will also check * for collisions in source files and any errors that happen when parsing - * and merging properties. This is the first of 3 phases of logging, the + * and merging tokens. This is the first of 3 phases of logging, the * next two are: platform and file. */ describe(`integration >`, () => { diff --git a/__integration__/logging/file.test.js b/__integration__/logging/file.test.js index 56be75f37..9b7890293 100644 --- a/__integration__/logging/file.test.js +++ b/__integration__/logging/file.test.js @@ -35,7 +35,7 @@ describe(`integration`, () => { describe(`logging`, () => { describe(`file`, () => { - it(`should warn user empty properties`, () => { + it(`should warn user empty tokens`, () => { StyleDictionary.extend({ source: [`__integration__/tokens/**/*.json?(c)`], platforms: { @@ -55,7 +55,7 @@ describe(`integration`, () => { expect(consoleOutput.map(cleanConsoleOutput).join('\n')).toMatchSnapshot(); }); - it(`should not warn user of empty properties with log level set to error`, () => { + it(`should not warn user of empty tokens with log level set to error`, () => { StyleDictionary.extend({ logLevel: `error`, source: [`__integration__/tokens/**/*.json?(c)`], diff --git a/__integration__/logging/platform.test.js b/__integration__/logging/platform.test.js index 28c834f26..d46903d55 100644 --- a/__integration__/logging/platform.test.js +++ b/__integration__/logging/platform.test.js @@ -41,7 +41,7 @@ describe(`integration`, () => { // unknown actions should throw expect(() => { StyleDictionary.extend({ - properties: {}, + tokens: {}, platforms: { css: { actions: [`foo`], @@ -82,7 +82,7 @@ describe(`integration`, () => { it(`should throw and notify users of unknown references`, () => { expect(() => { StyleDictionary.extend({ - properties: { + tokens: { color: { danger: { value: '{color.red.value}' }, }, @@ -98,7 +98,7 @@ describe(`integration`, () => { it(`circular references should throw notify users`, () => { expect(() => { StyleDictionary.extend({ - properties: { + tokens: { color: { foo: { value: '{color.foo.value}' }, teal: { value: '{color.blue.value}' }, diff --git a/__integration__/nameCollisions.test.js b/__integration__/nameCollisions.test.js index 52c1a26c6..ad929a89a 100644 --- a/__integration__/nameCollisions.test.js +++ b/__integration__/nameCollisions.test.js @@ -16,7 +16,7 @@ const chalk = require('chalk'); const StyleDictionary = require('../index'); const { buildPath } = require('./_constants'); -const properties = { +const tokens = { color: { red: { value: '#f00' }, background: { @@ -32,7 +32,7 @@ describe('integration', () => { StyleDictionary.extend({ // we are only testing name collision warnings options so we don't need // the full source. - properties, + tokens, platforms: { web: { buildPath, @@ -53,7 +53,7 @@ describe('integration', () => { StyleDictionary.extend({ // we are only testing name collision warnings options so we don't need // the full source. - properties, + tokens, platforms: { web: { buildPath, diff --git a/__integration__/objectValues.test.js b/__integration__/objectValues.test.js index fe2367a4a..711be9feb 100644 --- a/__integration__/objectValues.test.js +++ b/__integration__/objectValues.test.js @@ -23,7 +23,7 @@ const options = { describe('integration', () => { describe('object values', () => { StyleDictionary.extend({ - properties: { + tokens: { hue: `120`, saturation: `50%`, lightness: `50%`, diff --git a/__tests__/cliBuild.test.js b/__node_tests__/cliBuild.test.js similarity index 52% rename from __tests__/cliBuild.test.js rename to __node_tests__/cliBuild.test.js index d01be35cb..300b5461e 100644 --- a/__tests__/cliBuild.test.js +++ b/__node_tests__/cliBuild.test.js @@ -10,29 +10,28 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ - -var childProcess = require('child_process'); -var helpers = require('./__helpers'); +import { expect } from 'chai'; +import childProcess from 'child_process'; +import fs from 'node:fs'; +import { clearOutput, fileExists } from '../__tests__/__helpers.js'; describe('cliBuildWithJsConfig', () => { - beforeAll(() => { - helpers.clearOutput(); - childProcess.execSync( - 'node ./bin/style-dictionary build --config ./__tests__/__configs/test.js', - ); + beforeEach(() => { + clearOutput(undefined, fs); + childProcess.execSync('node ./bin/style-dictionary build --config __tests__/__configs/test.js'); }); - afterAll(() => { - helpers.clearOutput(); + afterEach(() => { + clearOutput(); }); it('should work with json config', () => { - expect(helpers.fileExists('./__tests__/__output/web/_icons.css')).toBeTruthy(); - expect(helpers.fileExists('./__tests__/__output/android/colors.xml')).toBeTruthy(); + expect(fileExists('__tests__/__output/web/_icons.css', fs)).to.be.true; + expect(fileExists('__tests__/__output/android/colors.xml', fs)).to.be.true; }); it('should work with javascript config', () => { - expect(helpers.fileExists('./__tests__/__output/web/_icons.css')).toBeTruthy(); - expect(helpers.fileExists('./__tests__/__output/android/colors.xml')).toBeTruthy(); + expect(fileExists('__tests__/__output/web/_icons.css', fs)).to.be.true; + expect(fileExists('__tests__/__output/android/colors.xml', fs)).to.be.true; }); }); diff --git a/__tests__/StyleDictionary.test.js b/__tests__/StyleDictionary.test.js new file mode 100644 index 000000000..ec9091ea4 --- /dev/null +++ b/__tests__/StyleDictionary.test.js @@ -0,0 +1,286 @@ +/* + * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with + * the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR + * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ +import { expect } from 'chai'; +import StyleDictionary from 'style-dictionary'; +import { fileToJSON } from './__helpers.js'; + +function traverseObj(obj, fn) { + for (let key in obj) { + fn.apply(this, [obj, key, obj[key]]); + if (obj[key] && typeof obj[key] === 'object') { + traverseObj(obj[key], fn); + } + } +} + +const test_props = { + size: { + padding: { + tiny: { value: '0' }, + }, + }, +}; + +// extend method is called by StyleDictionary constructor, therefore we're basically testing both things here +describe('StyleDictionary class + extend method', () => { + describe('method signature', () => { + it('should accept a string as a path to a JSON file', () => { + const StyleDictionaryExtended = new StyleDictionary('__tests__/__configs/test.json'); + expect(StyleDictionaryExtended).to.have.nested.property('platforms.web'); + }); + + it('should accept an object as options', () => { + const config = fileToJSON('__tests__/__configs/test.json'); + const StyleDictionaryExtended = new StyleDictionary(config); + expect(StyleDictionaryExtended).to.have.nested.property('platforms.web'); + }); + + it('should override attributes', () => { + const StyleDictionaryExtended = new StyleDictionary({ + tokens: { + foo: 'bar', + }, + }); + expect(StyleDictionaryExtended).to.have.nested.property('tokens.foo', 'bar'); + }); + }); + + describe('includes', () => { + it('should throw if include isnt an array', async () => { + const sd = new StyleDictionary({ include: {} }, { init: false }); + await expect(sd.init()).to.eventually.be.rejectedWith('include must be an array'); + }); + + it('should not update tokens if include glob paths dont resolve to anything', () => { + const StyleDictionaryExtended = new StyleDictionary({ + include: ['foo'], + }); + expect(typeof StyleDictionaryExtended.tokens.size).to.equal('undefined'); + }); + + it('should properly glob paths', async () => { + const StyleDictionaryExtended = new StyleDictionary({ + include: ['__tests__/__tokens/*.json'], + }); + await StyleDictionaryExtended.hasInitialized; + expect(typeof StyleDictionaryExtended.tokens.size.padding.tiny).to.equal('object'); + }); + + it('should build the tokens object if an include is given', async () => { + const StyleDictionaryExtended = new StyleDictionary({ + include: ['__tests__/__tokens/paddings.json'], + }); + const output = fileToJSON('__tests__/__tokens/paddings.json'); + traverseObj(output, (obj) => { + if (obj.hasOwnProperty('value') && !obj.filePath) { + obj.filePath = '__tests__/__tokens/paddings.json'; + obj.isSource = false; + } + }); + await StyleDictionaryExtended.hasInitialized; + expect(StyleDictionaryExtended.tokens).to.eql(output); + }); + + it('should override existing tokens if include is given', async () => { + const StyleDictionaryExtended = new StyleDictionary({ + tokens: test_props, + include: ['__tests__/__tokens/paddings.json'], + }); + const output = fileToJSON('__tests__/__tokens/paddings.json'); + traverseObj(output, (obj) => { + if (obj.hasOwnProperty('value') && !obj.filePath) { + obj.filePath = '__tests__/__tokens/paddings.json'; + obj.isSource = false; + } + }); + await StyleDictionaryExtended.hasInitialized; + expect(StyleDictionaryExtended.tokens).to.eql(output); + }); + + it('should update tokens if there are includes', async () => { + const StyleDictionaryExtended = new StyleDictionary({ + include: ['__tests__/__configs/include.json'], + }); + await StyleDictionaryExtended.hasInitialized; + expect(typeof StyleDictionaryExtended.tokens.size.padding.tiny).to.equal('object'); + }); + + it('should override existing tokens if there are includes', async () => { + const StyleDictionaryExtended = new StyleDictionary({ + tokens: test_props, + include: ['__tests__/__configs/include.json'], + }); + await StyleDictionaryExtended.hasInitialized; + expect(StyleDictionaryExtended).to.have.nested.property( + 'tokens.size.padding.tiny.value', + '3', + ); + }); + }); + + describe('source', () => { + it('should throw if source isnt an array', async () => { + const sd = new StyleDictionary({ source: {} }, { init: false }); + await expect(sd.init()).to.eventually.be.rejectedWith('source must be an array'); + }); + + it("should not update tokens if source glob paths don't resolve to anything", async () => { + const StyleDictionaryExtended = new StyleDictionary({ + source: ['foo'], + }); + await StyleDictionaryExtended.hasInitialized; + expect(typeof StyleDictionaryExtended.tokens.size).to.equal('undefined'); + }); + + it('should build the tokens object if a source is given', async () => { + const StyleDictionaryExtended = new StyleDictionary({ + source: ['__tests__/__tokens/paddings.json'], + }); + const output = fileToJSON('__tests__/__tokens/paddings.json'); + traverseObj(output, (obj) => { + if (obj.hasOwnProperty('value') && !obj.filePath) { + obj.filePath = '__tests__/__tokens/paddings.json'; + obj.isSource = true; + } + }); + await StyleDictionaryExtended.hasInitialized; + expect(StyleDictionaryExtended.tokens).to.eql(output); + }); + + it('should use relative filePaths for the filePath property', async () => { + const filePath = '__tests__/__tokens/paddings.json'; + const StyleDictionaryExtended = new StyleDictionary({ + source: [filePath], + }); + const output = fileToJSON('__tests__/__tokens/paddings.json'); + traverseObj(output, (obj) => { + if (obj.hasOwnProperty('value') && !obj.filePath) { + obj.filePath = filePath; + obj.isSource = true; + } + }); + await StyleDictionaryExtended.hasInitialized; + expect(StyleDictionaryExtended.tokens).to.eql(output); + }); + + it('should override existing tokens source is given', async () => { + const StyleDictionaryExtended = new StyleDictionary({ + tokens: test_props, + source: ['__tests__/__tokens/paddings.json'], + }); + const output = fileToJSON('__tests__/__tokens/paddings.json'); + traverseObj(output, (obj) => { + if (obj.hasOwnProperty('value') && !obj.filePath) { + obj.filePath = '__tests__/__tokens/paddings.json'; + obj.isSource = true; + } + }); + await StyleDictionaryExtended.hasInitialized; + expect(StyleDictionaryExtended.tokens).to.eql(output); + }); + }); + + // This is to allow style dictionaries to depend on other style dictionaries and + // override tokens. Useful for skinning + it('should not throw a collision error if a source file collides with an include', async () => { + const StyleDictionaryExtended = new StyleDictionary({ + include: ['__tests__/__tokens/paddings.json'], + source: ['__tests__/__tokens/paddings.json'], + log: 'error', + }); + const output = fileToJSON('__tests__/__tokens/paddings.json'); + traverseObj(output, (obj) => { + if (obj.hasOwnProperty('value') && !obj.filePath) { + obj.filePath = '__tests__/__tokens/paddings.json'; + obj.isSource = true; + } + }); + await StyleDictionaryExtended.hasInitialized; + expect(StyleDictionaryExtended.tokens).to.eql(output); + }); + + it('should throw a error if the collision is in source files and log is set to error', async () => { + const sd = new StyleDictionary( + { + source: ['__tests__/__tokens/paddings.json', '__tests__/__tokens/paddings.json'], + log: 'error', + }, + { init: false }, + ); + + await expect(sd.init()).to.eventually.be.rejectedWith('Collisions detected'); + }); + + it('should throw a warning if the collision is in source files and log is set to warn', async () => { + const sd = new StyleDictionary( + { + source: ['__tests__/__tokens/paddings.json', '__tests__/__tokens/paddings.json'], + log: 'warn', + }, + { init: false }, + ); + await expect(sd.init()).to.eventually.be.fulfilled; + }); + + it('should accept a string as a path to a JSON5 file', async () => { + const StyleDictionaryExtended = new StyleDictionary('__tests__/__configs/test.json5'); + await StyleDictionaryExtended.hasInitialized; + expect(StyleDictionaryExtended).to.have.nested.property('platforms.web'); + }); + + it('should accept a string as a path to a JSONC file', async () => { + const StyleDictionaryExtended = new StyleDictionary('__tests__/__configs/test.jsonc'); + await StyleDictionaryExtended.hasInitialized; + expect(StyleDictionaryExtended).to.have.nested.property('platforms.web'); + }); + + it('should allow for chained extends and not mutate the original', async () => { + const StyleDictionary1 = new StyleDictionary({ + foo: 'bar', + bar: 'other', + }); + const StyleDictionary2 = await StyleDictionary1.extend({ + foo: 'baz', + }); + const StyleDictionary3 = await ( + await StyleDictionary2.extend({ + foo: 'bar', + }) + ).extend({ + foo: 'boo', + }); + expect(StyleDictionary1.foo).to.equal('bar'); + expect(StyleDictionary2.foo).to.equal('baz'); + expect(StyleDictionary3.foo).to.equal('boo'); + // check that the bar prop from SD1 is not lost in SD3 + expect(StyleDictionary3.bar).to.equal('other'); + expect(StyleDictionary).not.to.have.property('foo'); + }); + + it(`should not pollute the prototype`, async () => { + const obj = {}; + // method 1 + new StyleDictionary(JSON.parse('{"__proto__":{"polluted":"yes"}}')); + // method 2, which executes a deepmerge under the hood + // this verifies that this deepmerge util is also protected against prototype pollution + const sd = new StyleDictionary(); + await sd.hasInitialized; + await sd.extend(JSON.parse('{"__proto__":{"polluted":"yes"}}')); + + // FIXME: method 3, by putting it into a design token, currently not tested + // for these we use our own deepExtend utility, which must be prototype pollution protected + // however, we don't actually test this here.. + + expect(obj.polluted).to.be.undefined; + }); +}); diff --git a/__tests__/__configs/test.js b/__tests__/__configs/test.js index 8e1ad4a39..a2f1a357f 100644 --- a/__tests__/__configs/test.js +++ b/__tests__/__configs/test.js @@ -1 +1,97 @@ -module.exports = require('./test.json'); +export default { + source: ['__tests__/__tokens/**/*.json'], + platforms: { + web: { + transformGroup: 'web', + prefix: 'smop', + buildPath: '__tests__/__output/web/', + files: [ + { + destination: '_icons.css', + format: 'scss/icons', + }, + { + destination: '_variables.css', + format: 'scss/variables', + }, + { + destination: '_styles.js', + format: 'javascript/module', + }, + ], + }, + scss: { + transformGroup: 'scss', + prefix: 'smop', + buildPath: '__tests__/__output/scss/', + files: [ + { + destination: '_icons.scss', + format: 'scss/icons', + }, + { + destination: '_variables.scss', + format: 'scss/variables', + }, + ], + }, + less: { + transformGroup: 'less', + prefix: 'smop', + buildPath: '__tests__/__output/less/', + files: [ + { + destination: '_icons.less', + format: 'less/icons', + }, + { + destination: '_variables.less', + format: 'less/variables', + }, + ], + }, + android: { + transformGroup: 'android', + buildPath: '__tests__/__output/', + files: [ + { + destination: 'android/colors.xml', + format: 'android/colors', + }, + { + destination: 'android/font_dimen.xml', + format: 'android/fontDimens', + }, + { + destination: 'android/dimens.xml', + format: 'android/dimens', + }, + ], + actions: ['android/copyImages'], + }, + ios: { + transformGroup: 'ios', + buildPath: '__tests__/__output/ios/', + files: [ + { + destination: 'style_dictionary.plist', + format: 'ios/plist', + }, + { + destination: 'style_dictionary.h', + format: 'ios/macros', + }, + ], + }, + 'react-native': { + transformGroup: 'react-native', + buildPath: '__tests__/__output/react-native/', + files: [ + { + destination: 'style_dictionary.js', + format: 'javascript/es6', + }, + ], + }, + }, +}; diff --git a/__tests__/__configs/test.json b/__tests__/__configs/test.json index b5240d53c..eeb2ed61f 100644 --- a/__tests__/__configs/test.json +++ b/__tests__/__configs/test.json @@ -1,5 +1,5 @@ { - "source": ["__tests__/__properties/**/*.json"], + "source": ["__tests__/__tokens/**/*.json"], "platforms": { "web": { "transformGroup": "web", @@ -9,10 +9,12 @@ { "destination": "_icons.css", "format": "scss/icons" - },{ + }, + { "destination": "_variables.css", "format": "scss/variables" - },{ + }, + { "destination": "_styles.js", "format": "javascript/module" } @@ -26,7 +28,8 @@ { "destination": "_icons.scss", "format": "scss/icons" - },{ + }, + { "destination": "_variables.scss", "format": "scss/variables" } @@ -40,7 +43,8 @@ { "destination": "_icons.less", "format": "less/icons" - },{ + }, + { "destination": "_variables.less", "format": "less/variables" } @@ -53,17 +57,17 @@ { "destination": "android/colors.xml", "format": "android/colors" - },{ + }, + { "destination": "android/font_dimen.xml", "format": "android/fontDimens" - },{ + }, + { "destination": "android/dimens.xml", "format": "android/dimens" } ], - "actions": [ - "android/copyImages" - ] + "actions": ["android/copyImages"] }, "ios": { "transformGroup": "ios", @@ -72,7 +76,8 @@ { "destination": "style_dictionary.plist", "format": "ios/plist" - },{ + }, + { "destination": "style_dictionary.h", "format": "ios/macros" } diff --git a/__tests__/__configs/test.json5 b/__tests__/__configs/test.json5 index 062efc323..d352b5dc6 100644 --- a/__tests__/__configs/test.json5 +++ b/__tests__/__configs/test.json5 @@ -1,11 +1,11 @@ { // some comment - source: ['test/properties/**/*.json'], + source: ['__tests__/__tokens/**/*.json'], platforms: { web: { transformGroup: 'web', prefix: 'smop', - buildPath: 'test/output/web/', + buildPath: '__tests__/output/web/', files: [ { destination: '_icons.css', @@ -24,7 +24,7 @@ scss: { transformGroup: 'scss', prefix: 'smop', - buildPath: 'test/output/scss/', + buildPath: '__tests__/output/scss/', files: [ { destination: '_icons.scss', @@ -39,7 +39,7 @@ less: { transformGroup: 'less', prefix: 'smop', - buildPath: 'test/output/less/', + buildPath: '__tests__/output/less/', files: [ { destination: '_icons.less', @@ -53,7 +53,7 @@ }, android: { transformGroup: 'android', - buildPath: 'test/output/', + buildPath: '__tests__/output/', files: [ { destination: 'android/colors.xml', @@ -72,7 +72,7 @@ }, ios: { transformGroup: 'ios', - buildPath: 'test/output/ios/', + buildPath: '__tests__/output/ios/', files: [ { destination: 'style_dictionary.plist', @@ -90,9 +90,9 @@ files: [ { destination: 'style_dictionary.js', - format: 'javascript/es6' - } - ] - } + format: 'javascript/es6', + }, + ], + }, }, } diff --git a/__tests__/__configs/test.jsonc b/__tests__/__configs/test.jsonc index 4dea5a66a..fce1aec79 100644 --- a/__tests__/__configs/test.jsonc +++ b/__tests__/__configs/test.jsonc @@ -1,11 +1,11 @@ { // some comment - "source": ["test/properties/**/*.json"], + "source": ["__tests__/__tokens/**/*.json"], "platforms": { "web": { "transformGroup": "web", "prefix": "smop", - "buildPath": "test/output/web/", + "buildPath": "__tests__/output/web/", "files": [ { "destination": "_icons.css", @@ -24,7 +24,7 @@ "scss": { "transformGroup": "scss", "prefix": "smop", - "buildPath": "test/output/scss/", + "buildPath": "__tests__/output/scss/", "files": [ { "destination": "_icons.scss", @@ -39,7 +39,7 @@ "less": { "transformGroup": "less", "prefix": "smop", - "buildPath": "test/output/less/", + "buildPath": "__tests__/output/less/", "files": [ { "destination": "_icons.less", @@ -53,7 +53,7 @@ }, "android": { "transformGroup": "android", - "buildPath": "test/output/", + "buildPath": "__tests__/output/", "files": [ { "destination": "android/colors.xml", @@ -72,7 +72,7 @@ }, "ios": { "transformGroup": "ios", - "buildPath": "test/output/ios/", + "buildPath": "__tests__/output/ios/", "files": [ { "destination": "style_dictionary.plist", diff --git a/__tests__/__helpers.js b/__tests__/__helpers.js index 0665d3421..5b026dd0c 100644 --- a/__tests__/__helpers.js +++ b/__tests__/__helpers.js @@ -11,38 +11,42 @@ * and limitations under the License. */ -var fs = require('fs-extra'); +import { expect } from 'chai'; +import { fs } from 'style-dictionary/fs'; -module.exports = { - clearOutput: function () { - fs.emptyDirSync('__tests__/__output'); - }, - - fileToJSON: function (path) { - return fs.readJsonSync(path); - }, +export const expectThrowsAsync = async (method, errorMessage) => { + let error = null; + try { + await method(); + } catch (err) { + error = err; + } + expect(error).to.be.an('Error'); + if (errorMessage) { + expect(error.message).to.equal(errorMessage); + } +}; - fileExists: function (filePath) { - try { - return fs.statSync(filePath).isFile(); - } catch (err) { - return false; - } - }, +export const fileToJSON = (path, _fs = fs) => { + return JSON.parse(_fs.readFileSync(path, 'utf-8')); +}; - pathDoesNotExist: function (path) { - try { - return !fs.existsSync(path); - } catch (err) { - return false; - } - }, +export const clearOutput = (outputFolder = '__tests__/__output', _fs = fs) => { + try { + _fs.rmdirSync(outputFolder); + } catch (e) { + // + } +}; - dirDoesNotExist: function (dirPath) { - return this.pathDoesNotExist(dirPath); - }, +export const fileExists = (filePath, _fs = fs) => { + try { + return _fs.statSync(filePath).isFile(); + } catch (err) { + return false; + } +}; - fileDoesNotExist: function (filePath) { - return this.pathDoesNotExist(filePath); - }, +export const dirExists = (dirPath, _fs = fs) => { + return _fs.existsSync(dirPath); }; diff --git a/__tests__/__json_files/broken/broken.json b/__tests__/__json_files/broken/broken.json index 89d342f63..ddda1a212 100644 --- a/__tests__/__json_files/broken/broken.json +++ b/__tests__/__json_files/broken/broken.json @@ -1,3 +1,3 @@ { - invalid: "json", + invalid: "json"!!, } diff --git a/__tests__/__json_files/module_exports_object.js b/__tests__/__json_files/module_exports_object.js index a82905750..d44eaa66b 100644 --- a/__tests__/__json_files/module_exports_object.js +++ b/__tests__/__json_files/module_exports_object.js @@ -1,4 +1,4 @@ -module.exports = { +export default { foo: 'bar', bar: '{foo}', }; diff --git a/__tests__/__properties/font.json b/__tests__/__properties/font.json deleted file mode 100644 index 3a961ac39..000000000 --- a/__tests__/__properties/font.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "asset": { - "font": { - "icon": { - "value": "./test/__assets/fonts/scapp_icons-regular.ttf" - } - } - } -} \ No newline at end of file diff --git a/__tests__/__properties/paddings.1.json b/__tests__/__properties/paddings.1.json deleted file mode 100644 index 4ca03cfcc..000000000 --- a/__tests__/__properties/paddings.1.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "size": { - "padding": { - "tiny": { - "value": "3" - }, - "small": { - "value": "5" - }, - "base": { - "value": "10" - }, - "large": { - "value": "15" - }, - "xl": { - "value": "20" - }, - "xxl": { - "value": "30" - } - } - } -} \ No newline at end of file diff --git a/__tests__/__setup.js b/__tests__/__setup.js index 4c4e0dffb..389a03537 100644 --- a/__tests__/__setup.js +++ b/__tests__/__setup.js @@ -1,7 +1,47 @@ -const constantDate = new Date('2000-01-01'); -global.Date = function () { - return constantDate; -}; -global.Date.now = function () { - return constantDate; -}; +import { use } from 'chai'; +import chaiAsPromised from '@esm-bundle/chai-as-promised'; +import path from '@bundled-es-modules/path-browserify'; +import { fs } from 'style-dictionary/fs'; +import { chaiWtrSnapshot } from '../snapshot-plugin/chai-wtr-snapshot.js'; + +/** + * We have a bunch of files that we use a mock data for our tests + * Since we run tests in the browser, we will have to mirror these mock files + * to the browser-filesystem which uses memfs by default. + * This will allow the tests to run with the mock files. + * + * We also use a custom WTR + Chai snapshot plugin for snapshot testing, + * which needs to be initialized client-side + */ + +function ensureDirectoryExistence(filePath) { + const dirname = path.dirname(filePath); + if (fs.existsSync(dirname)) { + return true; + } + fs.mkdirSync(dirname, { recursive: true }); +} + +function mirrorFile(file, contents) { + ensureDirectoryExistence(file); + fs.writeFileSync(file, contents, 'utf-8'); +} + +export function setup(filesToMirror) { + use(chaiAsPromised); + use(chaiWtrSnapshot); + + const constantDate = new Date('2000-01-01'); + // eslint-disable-next-line no-undef + window.Date = function () { + return constantDate; + }; + // eslint-disable-next-line no-undef + window.Date.now = function () { + return constantDate; + }; + + filesToMirror.forEach(([file, contents]) => { + mirrorFile(file, contents); + }); +} diff --git a/__tests__/__properties/borders.json b/__tests__/__tokens/borders.json similarity index 100% rename from __tests__/__properties/borders.json rename to __tests__/__tokens/borders.json diff --git a/__tests__/__properties/colors.json b/__tests__/__tokens/colors.json similarity index 100% rename from __tests__/__properties/colors.json rename to __tests__/__tokens/colors.json diff --git a/__tests__/__properties/comment.json b/__tests__/__tokens/comment.json similarity index 100% rename from __tests__/__properties/comment.json rename to __tests__/__tokens/comment.json diff --git a/__tests__/__tokens/font.json b/__tests__/__tokens/font.json new file mode 100644 index 000000000..b50f1f563 --- /dev/null +++ b/__tests__/__tokens/font.json @@ -0,0 +1,9 @@ +{ + "asset": { + "font": { + "icon": { + "value": "__tests__/__assets/fonts/scapp_icons-regular.ttf" + } + } + } +} diff --git a/__tests__/__properties/font_sizes.json b/__tests__/__tokens/font_sizes.json similarity index 100% rename from __tests__/__properties/font_sizes.json rename to __tests__/__tokens/font_sizes.json diff --git a/__tests__/__properties/icons.json b/__tests__/__tokens/icons.json similarity index 100% rename from __tests__/__properties/icons.json rename to __tests__/__tokens/icons.json diff --git a/__tests__/__properties/images/flags/us.json b/__tests__/__tokens/images/flags/us.json similarity index 99% rename from __tests__/__properties/images/flags/us.json rename to __tests__/__tokens/images/flags/us.json index b6fa75b75..c4f951d39 100644 --- a/__tests__/__properties/images/flags/us.json +++ b/__tests__/__tokens/images/flags/us.json @@ -19,4 +19,4 @@ } } } -} \ No newline at end of file +} diff --git a/__tests__/__properties/nonPropertyNode.json b/__tests__/__tokens/nonPropertyNode.json similarity index 100% rename from __tests__/__properties/nonPropertyNode.json rename to __tests__/__tokens/nonPropertyNode.json diff --git a/__tests__/__properties/nonString.json b/__tests__/__tokens/nonString.json similarity index 100% rename from __tests__/__properties/nonString.json rename to __tests__/__tokens/nonString.json diff --git a/__tests__/__properties/paddings.json b/__tests__/__tokens/paddings.json similarity index 100% rename from __tests__/__properties/paddings.json rename to __tests__/__tokens/paddings.json diff --git a/__tests__/buildAllPlatforms.test.js b/__tests__/buildAllPlatforms.test.js index 40bc70467..c932a19af 100644 --- a/__tests__/buildAllPlatforms.test.js +++ b/__tests__/buildAllPlatforms.test.js @@ -10,30 +10,30 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ - -var helpers = require('./__helpers'); -var StyleDictionary = require('../index'); +import { expect } from 'chai'; +import StyleDictionary from 'style-dictionary'; +import { clearOutput, fileExists } from './__helpers.js'; describe('buildAllPlatforms', () => { beforeEach(() => { - helpers.clearOutput(); + clearOutput(); }); afterEach(() => { - helpers.clearOutput(); + clearOutput(); }); - it('should work with json config', () => { - var StyleDictionaryExtended = StyleDictionary.extend(__dirname + '/__configs/test.json'); - StyleDictionaryExtended.buildAllPlatforms(); - expect(helpers.fileExists('./__tests__/__output/web/_icons.css')).toBeTruthy(); - expect(helpers.fileExists('./__tests__/__output/android/colors.xml')).toBeTruthy(); + it('should work with json config', async () => { + const StyleDictionaryExtended = new StyleDictionary('__tests__/__configs/test.json'); + await StyleDictionaryExtended.buildAllPlatforms(); + expect(fileExists('__tests__/__output/web/_icons.css')).to.be.true; + expect(fileExists('__tests__/__output/android/colors.xml')).to.be.true; }); - it('should work with js config', () => { - var StyleDictionaryExtended = StyleDictionary.extend(__dirname + '/__configs/test.js'); - StyleDictionaryExtended.buildAllPlatforms(); - expect(helpers.fileExists('./__tests__/__output/web/_icons.css')).toBeTruthy(); - expect(helpers.fileExists('./__tests__/__output/android/colors.xml')).toBeTruthy(); + it('should work with js config', async () => { + const StyleDictionaryExtended = new StyleDictionary('__tests__/__configs/test.js'); + await StyleDictionaryExtended.buildAllPlatforms(); + expect(fileExists('__tests__/__output/web/_icons.css')).to.be.true; + expect(fileExists('__tests__/__output/android/colors.xml')).to.be.true; }); }); diff --git a/__tests__/buildFile.test.js b/__tests__/buildFile.test.js index ac2c6a2bf..523720056 100644 --- a/__tests__/buildFile.test.js +++ b/__tests__/buildFile.test.js @@ -10,11 +10,12 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ - -var buildFile = require('../lib/buildFile'); -var helpers = require('./__helpers'); -var GroupMessages = require('../lib/utils/groupMessages'); -var chalk = require('chalk'); +import { expect } from 'chai'; +import { stubMethod, restore } from 'hanbi'; +import chalk from 'chalk'; +import buildFile from '../lib/buildFile.js'; +import { clearOutput, fileExists } from './__helpers.js'; +import GroupMessages from '../lib/utils/groupMessages.js'; function format() { return 'hi'; @@ -28,42 +29,43 @@ nestedFormat.nested = true; describe('buildFile', () => { beforeEach(() => { - helpers.clearOutput(); + clearOutput(); + restore(); }); afterEach(() => { - helpers.clearOutput(); + clearOutput(); + restore(); }); it('should error if format doesnt exist or isnt a function', () => { - expect(buildFile.bind(null, { destination: '__tests__/__output/test.txt' }, {}, {})).toThrow( + expect(buildFile.bind(null, { destination: '__tests__output/test.txt' }, {}, {})).to.throw( 'Please enter a valid file format', ); expect( - buildFile.bind(null, { destination: '__tests__/__output/test.txt', format: {} }, {}, {}), - ).toThrow('Please enter a valid file format'); + buildFile.bind(null, { destination: '__tests__output/test.txt', format: {} }, {}, {}), + ).to.throw('Please enter a valid file format'); expect( buildFile.bind(null, { destination: '__tests__/__output/test.txt', format: [] }, {}, {}), - ).toThrow('Please enter a valid file format'); + ).to.throw('Please enter a valid file format'); }); it('should error if destination doesnt exist or isnt a string', () => { - expect(buildFile.bind(null, { format }, {}, {})).toThrow('Please enter a valid destination'); - expect(buildFile.bind(null, { format, destination: [] }, {}, {})).toThrow( + expect(buildFile.bind(null, { format }, {}, {})).to.throw('Please enter a valid destination'); + expect(buildFile.bind(null, { format, destination: [] }, {}, {})).to.throw( 'Please enter a valid destination', ); - expect(buildFile.bind(null, { format, destination: {} }, {}, {})).toThrow( + expect(buildFile.bind(null, { format, destination: {} }, {}, {})).to.throw( 'Please enter a valid destination', ); }); describe('name collisions', () => { - let destination = './__tests__/__output/test.collisions'; - let PROPERTY_NAME_COLLISION_WARNINGS = - GroupMessages.GROUP.PropertyNameCollisionWarnings + ':' + destination; - let name = 'someName'; - let properties = { - allProperties: [ + const destination = '__tests__/__output/test.collisions'; + const PROPERTY_NAME_COLLISION_WARNINGS = `${GroupMessages.GROUP.PropertyNameCollisionWarnings}:${destination}`; + const name = 'someName'; + const dictionary = { + allTokens: [ { name: name, path: ['some', 'name', 'path1'], @@ -76,39 +78,44 @@ describe('buildFile', () => { }, ], }; + it('should generate warning messages for output name collisions', () => { GroupMessages.clear(PROPERTY_NAME_COLLISION_WARNINGS); - buildFile({ destination, format }, {}, properties); - - let collisions = properties.allProperties - .map((properties) => { - let propertyPathText = chalk.keyword('orangered')(properties.path.join('.')); - let valueText = chalk.keyword('darkorange')(properties.value); - return propertyPathText + ' ' + valueText; - }) + buildFile({ destination, format }, {}, dictionary); + + const collisions = dictionary.allTokens + .map( + (tokens) => + `${chalk.rgb(255, 69, 0)(tokens.path.join('.'))} ${chalk.rgb( + 255, + 140, + 0, + )(tokens.value)}`, + ) .join('\n '); - let output = `Output name ${chalk - .keyword('orangered') + + const output = `Output name ${chalk + .rgb(255, 69, 0) .bold(name)} was generated by:\n ${collisions}`; - let expectJSON = JSON.stringify([output]); + const expectJSON = JSON.stringify([output]); - expect(GroupMessages.count(PROPERTY_NAME_COLLISION_WARNINGS)).toBe(1); - expect(JSON.stringify(GroupMessages.fetchMessages(PROPERTY_NAME_COLLISION_WARNINGS))).toBe( + expect(GroupMessages.count(PROPERTY_NAME_COLLISION_WARNINGS)).to.equal(1); + expect(JSON.stringify(GroupMessages.fetchMessages(PROPERTY_NAME_COLLISION_WARNINGS))).to.eql( expectJSON, ); }); it('should not warn users if the format is a nested format', () => { - console.log = jest.fn(); - buildFile({ destination, format: nestedFormat }, {}, properties); - expect(console.log).toHaveBeenCalledWith(chalk.bold.green(`✔︎ ${destination}`)); + const consoleStub = stubMethod(console, 'log'); + buildFile({ destination, format: nestedFormat }, {}, dictionary); + expect(consoleStub.calledWith(chalk.bold.green(`✔︎ ${destination}`))).to.be.true; }); }); - let destEmptyProperties = './__tests__/__output/test.emptyProperties'; - it('should warn when a file is not created because of empty properties', () => { - let dictionary = { - allProperties: [ + const destEmptyTokens = '__tests__/__output/test.emptyTokens'; + it('should warn when a file is not created because of empty tokens', () => { + const dictionary = { + allTokens: [ { name: 'someName', attributes: { category: 'category1' }, @@ -118,20 +125,20 @@ describe('buildFile', () => { ], }; - let filter = function (prop) { + const filter = function (prop) { return prop.attributes.category === 'category2'; }; buildFile( { - destination: destEmptyProperties, + destination: destEmptyTokens, format, filter, }, {}, dictionary, ); - expect(helpers.fileExists('./__tests__/__output/test.emptyProperties')).toBeFalsy(); + expect(fileExists('__tests__/__output/test.emptyTokens')).to.be.false; }); it('should write to a file properly', () => { @@ -145,6 +152,6 @@ describe('buildFile', () => { }, {}, ); - expect(helpers.fileExists('./__tests__/__output/test.txt')).toBeTruthy(); + expect(fileExists('__tests__/__output/test.txt')).to.be.true; }); }); diff --git a/__tests__/buildFiles.test.js b/__tests__/buildFiles.test.js index 1d30f8b64..3178b8ba1 100644 --- a/__tests__/buildFiles.test.js +++ b/__tests__/buildFiles.test.js @@ -10,42 +10,42 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ +import { expect } from 'chai'; +import { fs } from 'style-dictionary/fs'; +import buildFiles from '../lib/buildFiles.js'; +import { clearOutput, fileExists } from './__helpers.js'; -var buildFiles = require('../lib/buildFiles'); -var helpers = require('./__helpers'); -var _ = require('../lib/utils/es6_'); - -var dictionary = { - properties: { +const dictionary = { + tokens: { foo: { value: 'bar' }, bingo: { value: 'bango' }, }, }; -var platform = { +const platform = { files: [ { destination: '__tests__/__output/test.json', format: function (dictionary) { - return JSON.stringify(dictionary.properties); + return JSON.stringify(dictionary.tokens); }, }, ], }; -var platformWithBuildPath = { +const platformWithBuildPath = { buildPath: '__tests__/__output/', files: [ { destination: 'test.json', format: function (dictionary) { - return JSON.stringify(dictionary.properties); + return JSON.stringify(dictionary.tokens); }, }, ], }; -var platformWithFilter = { +const platformWithFilter = { buildPath: '__tests__/__output/', files: [ { @@ -54,13 +54,13 @@ var platformWithFilter = { return property.value === 'bango'; }, format: function (dictionary) { - return JSON.stringify(dictionary.properties); + return JSON.stringify(dictionary.tokens); }, }, ], }; -var platformWithoutFormatter = { +const platformWithoutFormatter = { buildPath: '__tests__/__output/', files: [ { @@ -69,13 +69,13 @@ var platformWithoutFormatter = { ], }; -var platformWithBadBuildPath = { +const platformWithBadBuildPath = { buildPath: '__tests__/__output', files: [ { destination: 'test.json', format: function (dictionary) { - return JSON.stringify(dictionary.properties); + return JSON.stringify(dictionary.tokens); }, }, ], @@ -83,43 +83,43 @@ var platformWithBadBuildPath = { describe('buildFiles', () => { beforeEach(() => { - helpers.clearOutput(); + clearOutput(); }); afterEach(() => { - helpers.clearOutput(); + clearOutput(); }); it("should throw if build path doesn't have a trailing slash", () => { - expect(buildFiles.bind(null, dictionary, platformWithBadBuildPath)).toThrow( + expect(buildFiles.bind(null, dictionary, platformWithBadBuildPath)).to.throw( 'Build path must end in a trailing slash or you will get weird file names.', ); }); it('should throw if missing a format', () => { - expect(buildFiles.bind(null, dictionary, platformWithoutFormatter)).toThrow( + expect(buildFiles.bind(null, dictionary, platformWithoutFormatter)).to.throw( 'Please supply a format', ); }); it('should work without buildPath', () => { buildFiles(dictionary, platform); - expect(helpers.fileExists('./__tests__/__output/test.json')).toBeTruthy(); + expect(fileExists('__tests__/__output/test.json')).to.be.true; }); it('should work with buildPath', () => { buildFiles(dictionary, platformWithBuildPath); - expect(helpers.fileExists('./__tests__/__output/test.json')).toBeTruthy(); + expect(fileExists('__tests__/__output/test.json')).to.be.true; }); it('should work with a filter', () => { buildFiles(dictionary, platformWithFilter); - expect(helpers.fileExists('./__tests__/__output/test.json')).toBeTruthy(); - var output = require('./__output/test.json'); - expect(output).toHaveProperty('bingo'); - expect(output).not.toHaveProperty('foo'); - _.each(output, function (property) { - expect(property.value).toBe('bango'); + expect(fileExists('__tests__/__output/test.json')).to.be.true; + const output = JSON.parse(fs.readFileSync('__tests__/__output/test.json')); + expect(output).to.have.property('bingo'); + expect(output).to.not.have.property('foo'); + Object.values(output).forEach((property) => { + expect(property.value).to.equal('bango'); }); }); }); diff --git a/__tests__/buildPlatform.test.js b/__tests__/buildPlatform.test.js index a4be81785..8876e4d0e 100644 --- a/__tests__/buildPlatform.test.js +++ b/__tests__/buildPlatform.test.js @@ -10,68 +10,63 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ +import { expect } from 'chai'; +import StyleDictionary from 'style-dictionary'; +import { fileToJSON, clearOutput, fileExists } from './__helpers.js'; -var helpers = require('./__helpers'); -var config = helpers.fileToJSON(__dirname + '/__configs/test.json'); -var StyleDictionary = require('../index'); -var StyleDictionaryExtended = StyleDictionary.extend(config); +const config = fileToJSON('__tests__/__configs/test.json'); +const StyleDictionaryExtended = new StyleDictionary(config); describe('buildPlatform', () => { beforeEach(() => { - helpers.clearOutput(); + clearOutput(); }); - it("should throw if passed a platform that doesn't exist", () => { - expect(StyleDictionaryExtended.buildPlatform.bind(test, 'foobar')).toThrow( + it("should throw if passed a platform that doesn't exist", async () => { + await expect(StyleDictionaryExtended.buildPlatform('foobar')).to.eventually.rejectedWith( 'Platform "foobar" does not exist', ); - expect(function () { - StyleDictionaryExtended.buildPlatform('web'); - }).not.toThrow(); + await expect(StyleDictionaryExtended.buildPlatform('web')).to.eventually.be.fulfilled; }); - it('should build web platform files', () => { - StyleDictionaryExtended.buildPlatform('web'); - expect(helpers.fileExists('./__tests__/__output/web/_icons.css')).toBeTruthy(); - expect(helpers.fileExists('./__tests__/__output/web/_styles.js')).toBeTruthy(); - expect(helpers.fileExists('./__tests__/__output/web/_variables.css')).toBeTruthy(); + it('should build web platform files', async () => { + await StyleDictionaryExtended.buildPlatform('web'); + expect(fileExists('__tests__/__output/web/_icons.css')).to.be.true; + expect(fileExists('__tests__/__output/web/_styles.js')).to.be.true; + expect(fileExists('__tests__/__output/web/_variables.css')).to.be.true; }); - it('should build scss platform files', () => { - StyleDictionaryExtended.buildPlatform('scss'); - expect(helpers.fileExists('./__tests__/__output/scss/_icons.scss')).toBeTruthy(); - expect(helpers.fileExists('./__tests__/__output/scss/_variables.scss')).toBeTruthy(); + it('should build scss platform files', async () => { + await StyleDictionaryExtended.buildPlatform('scss'); + expect(fileExists('__tests__/__output/scss/_icons.scss')).to.be.true; + expect(fileExists('__tests__/__output/scss/_variables.scss')).to.be.true; }); - it('should build less platform files', () => { - StyleDictionaryExtended.buildPlatform('less'); - expect(helpers.fileExists('./__tests__/__output/less/_icons.less')).toBeTruthy(); - expect(helpers.fileExists('./__tests__/__output/less/_variables.less')).toBeTruthy(); + it('should build less platform files', async () => { + await StyleDictionaryExtended.buildPlatform('less'); + expect(fileExists('__tests__/__output/less/_icons.less')).to.be.true; + expect(fileExists('__tests__/__output/less/_variables.less')).to.be.true; }); - it('should do android stuff', () => { - StyleDictionaryExtended.buildPlatform('android'); - expect( - helpers.fileExists('./__tests__/__output/android/main/res/drawable-hdpi/flag_us.png'), - ).toBeTruthy(); - expect( - helpers.fileExists('./__tests__/__output/android/main/res/drawable-xhdpi/flag_us.png'), - ).toBeTruthy(); - expect(helpers.fileExists('./__tests__/__output/android/colors.xml')).toBeTruthy(); - expect(helpers.fileExists('./__tests__/__output/android/dimens.xml')).toBeTruthy(); - expect(helpers.fileExists('./__tests__/__output/android/font_dimen.xml')).toBeTruthy(); + it('should do android stuff', async () => { + await StyleDictionaryExtended.buildPlatform('android'); + expect(fileExists('__tests__/__output/android/main/res/drawable-hdpi/flag_us.png')).to.be.true; + expect(fileExists('__tests__/__output/android/main/res/drawable-xhdpi/flag_us.png')).to.be.true; + expect(fileExists('__tests__/__output/android/colors.xml')).to.be.true; + expect(fileExists('__tests__/__output/android/dimens.xml')).to.be.true; + expect(fileExists('__tests__/__output/android/font_dimen.xml')).to.be.true; }); - it('should do ios stuff', () => { - StyleDictionaryExtended.buildPlatform('ios'); - expect(helpers.fileExists('./__tests__/__output/ios/style_dictionary.plist')).toBeTruthy(); - expect(helpers.fileExists('./__tests__/__output/ios/style_dictionary.h')).toBeTruthy(); + it('should do ios stuff', async () => { + await StyleDictionaryExtended.buildPlatform('ios'); + expect(fileExists('__tests__/__output/ios/style_dictionary.plist')).to.be.true; + expect(fileExists('__tests__/__output/ios/style_dictionary.h')).to.be.true; }); - it('should handle non-string values in properties', () => { - var StyleDictionaryExtended = StyleDictionary.extend({ - source: ['__tests__/__properties/nonString.json'], + it('should handle non-string values in tokens', async () => { + const StyleDictionaryExtended = new StyleDictionary({ + source: ['__tests__/__tokens/nonString.json'], platforms: { test: { buildPath: '__tests__/__output/', @@ -85,28 +80,27 @@ describe('buildPlatform', () => { }, }, }); - StyleDictionaryExtended.buildPlatform('test'); - expect(helpers.fileExists('./__tests__/__output/output.json')).toBeTruthy(); - // var input = helpers.fileToJSON('./__tests__/__properties/nonString.json'); - var output = helpers.fileToJSON('./__tests__/__output/output.json'); + await StyleDictionaryExtended.buildPlatform('test'); + expect(fileExists('__tests__/__output/output.json')).to.be.true; + const output = fileToJSON('__tests__/__output/output.json'); // Make sure transforms run on non-string values as they normally would - expect(output).toHaveProperty('color.red.value', output.color.otherRed.value); - expect(output).toHaveProperty('color.red.value', '#ff0000'); - expect(output).toHaveProperty('size.large.value', output.size.otherLarge.value); - expect(output).toHaveProperty('size.large.value', '20px'); - - expect(output.number.test.value).toEqual(output.number.otherTest.value); - expect(typeof output.number.otherTest.value).toBe('number'); - expect(output.array.test.value).toEqual(output.array.otherTest.value); - expect(Array.isArray(output.array.otherTest.value)).toBeTruthy(); - expect(output.object.test.value).toMatchObject(output.object.otherTest.value); - expect(typeof output.object.otherTest.value).toBe('object'); + expect(output).to.have.nested.property('color.red.value', output.color.otherRed.value); + expect(output).to.have.nested.property('color.red.value', '#ff0000'); + expect(output).to.have.nested.property('size.large.value', output.size.otherLarge.value); + expect(output).to.have.nested.property('size.large.value', '20px'); + + expect(output.number.test.value).to.eql(output.number.otherTest.value); + expect(typeof output.number.otherTest.value).to.equal('number'); + expect(output.array.test.value).to.eql(output.array.otherTest.value); + expect(Array.isArray(output.array.otherTest.value)).to.be.true; + expect(output.object.test.value).to.eql(output.object.otherTest.value); + expect(typeof output.object.otherTest.value).to.equal('object'); }); - it('should handle non-property nodes', () => { - var StyleDictionaryExtended = StyleDictionary.extend({ - source: ['__tests__/__properties/nonPropertyNode.json'], + it('should handle non-property nodes', async () => { + const StyleDictionaryExtended = new StyleDictionary({ + source: ['__tests__/__tokens/nonPropertyNode.json'], platforms: { test: { buildPath: '__tests__/__output/', @@ -120,18 +114,18 @@ describe('buildPlatform', () => { }, }, }); - StyleDictionaryExtended.buildPlatform('test'); - expect(helpers.fileExists('./__tests__/__output/output.json')).toBeTruthy(); - var input = helpers.fileToJSON('./__tests__/__properties/nonPropertyNode.json'); - var output = helpers.fileToJSON('./__tests__/__output/output.json'); - expect(output.color.key1).toEqual(input.color.key1); - expect(output.color.base.red.key2).toEqual(input.color.base.red.key2); - expect(output.color.base.attributes.key3).toEqual(input.color.base.attributes.key3); + await StyleDictionaryExtended.buildPlatform('test'); + expect(fileExists('__tests__/__output/output.json')).to.be.true; + const input = fileToJSON('__tests__/__tokens/nonPropertyNode.json'); + const output = fileToJSON('__tests__/__output/output.json'); + expect(output.color.key1).to.eql(input.color.key1); + expect(output.color.base.red.key2).to.eql(input.color.base.red.key2); + expect(output.color.base.attributes.key3).to.eql(input.color.base.attributes.key3); }); - it('should handle comments', () => { - var StyleDictionaryExtended = StyleDictionary.extend({ - source: ['__tests__/__properties/comment.json'], + it('should handle comments', async () => { + const StyleDictionaryExtended = new StyleDictionary({ + source: ['__tests__/__tokens/comment.json'], platforms: { test: { buildPath: '__tests__/__output/', @@ -145,16 +139,16 @@ describe('buildPlatform', () => { }, }, }); - StyleDictionaryExtended.buildPlatform('test'); - expect(helpers.fileExists('./__tests__/__output/output.json')).toBeTruthy(); - var input = helpers.fileToJSON('./__tests__/__properties/comment.json'); - var output = helpers.fileToJSON('./__tests__/__output/output.json'); - expect(output.size.large.comment).toEqual(input.size.large.comment); + await StyleDictionaryExtended.buildPlatform('test'); + expect(fileExists('__tests__/__output/output.json')).to.be.true; + const input = fileToJSON('__tests__/__tokens/comment.json'); + const output = fileToJSON('__tests__/__output/output.json'); + expect(output.size.large.comment).to.eql(input.size.large.comment); }); - it("should throw an error if given a transformGroup that doesn't exist", () => { - var StyleDictionaryExtended = StyleDictionary.extend({ - source: ['__properties/**/*.json'], + it("should throw an error if given a transformGroup that doesn't exist", async () => { + const StyleDictionaryExtended = new StyleDictionary({ + source: ['__tokens/**/*.json'], platforms: { foo: { transformGroup: 'bar', @@ -173,6 +167,6 @@ Unknown transformGroup "bar" found in platform "foo": "bar" does not match the name of a registered transformGroup. `; - expect(StyleDictionaryExtended.buildPlatform.bind(StyleDictionaryExtended, 'foo')).toThrow(err); + await expect(StyleDictionaryExtended.buildPlatform('foo')).to.eventually.rejectedWith(err); }); }); diff --git a/__tests__/cleanAction.test.js b/__tests__/cleanAction.test.js index 5572b5c41..cbe24f4e8 100644 --- a/__tests__/cleanAction.test.js +++ b/__tests__/cleanAction.test.js @@ -10,42 +10,44 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ +import { expect } from 'chai'; +import { fs } from 'style-dictionary/fs'; +import StyleDictionary from 'style-dictionary'; +import { fileExists, clearOutput } from './__helpers.js'; -var helpers = require('./__helpers'); -var fs = require('fs-extra'); -var StyleDictionary = require('../index'); -var StyleDictionaryExtended = StyleDictionary.extend({ +const StyleDictionaryExtended = new StyleDictionary({ platforms: { android: { - actions: ['test'], + actions: ['cleanAction.test.js'], }, }, }); StyleDictionaryExtended.registerAction({ - name: 'test', + name: 'cleanAction.test.js', do: function () { - fs.writeFileSync('./__tests__/__output/action.txt', 'hi'); + fs.mkdirSync('__tests__/__output', { recursive: true }); + fs.writeFileSync('__tests__/__output/action.txt', 'hi'); }, undo: function () { - fs.removeSync('./__tests__/__output/action.txt'); + fs.unlinkSync('__tests__/__output/action.txt'); }, }); describe('cleanAction', () => { describe('clean actions', () => { beforeEach(() => { - helpers.clearOutput(); + clearOutput(); }); afterEach(() => { - helpers.clearOutput(); + clearOutput(); }); - it('should delete a file properly', () => { - StyleDictionaryExtended.buildPlatform('android'); - StyleDictionaryExtended.cleanPlatform('android'); - expect(helpers.fileDoesNotExist('./__tests__/__output/action.txt')).toBeTruthy(); + it('should delete a file properly', async () => { + await StyleDictionaryExtended.buildPlatform('android'); + await StyleDictionaryExtended.cleanPlatform('android'); + expect(fileExists('__tests__/__output/action.txt')).to.be.false; }); }); }); diff --git a/__tests__/cleanAllPlatforms.test.js b/__tests__/cleanAllPlatforms.test.js index 834affd97..d91e06e7d 100644 --- a/__tests__/cleanAllPlatforms.test.js +++ b/__tests__/cleanAllPlatforms.test.js @@ -10,25 +10,26 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ +import { expect } from 'chai'; +import StyleDictionary from 'style-dictionary'; +import { fileToJSON, clearOutput, fileExists } from './__helpers.js'; -var helpers = require('./__helpers'); -var config = helpers.fileToJSON(__dirname + '/__configs/test.json'); -var StyleDictionary = require('../index'); -var StyleDictionaryExtended = StyleDictionary.extend(config); +const config = fileToJSON('__tests__/__configs/test.json'); +const StyleDictionaryExtended = new StyleDictionary(config); describe('cleanAllPlatforms', () => { beforeEach(() => { - helpers.clearOutput(); + clearOutput(); }); afterEach(() => { - helpers.clearOutput(); + clearOutput(); }); - it('should work', () => { - StyleDictionaryExtended.buildAllPlatforms(); - StyleDictionaryExtended.cleanAllPlatforms(); - expect(helpers.fileDoesNotExist('./__tests__/__output/web/_icons.scss')).toBeTruthy(); - expect(helpers.fileDoesNotExist('./__tests__/__output/android/colors.xml')).toBeTruthy(); + it('should work', async () => { + await StyleDictionaryExtended.buildAllPlatforms(); + await StyleDictionaryExtended.cleanAllPlatforms(); + expect(fileExists('__tests__/__output/web/_icons.css')).to.be.false; + expect(fileExists('__tests__/__output/android/colors.xml')).to.be.false; }); }); diff --git a/__tests__/cleanDir.test.js b/__tests__/cleanDir.test.js index c000b3298..6f363f97d 100644 --- a/__tests__/cleanDir.test.js +++ b/__tests__/cleanDir.test.js @@ -10,11 +10,11 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ - -var helpers = require('./__helpers'); -var buildFile = require('../lib/buildFile'); -var cleanFile = require('../lib/cleanFile'); -var cleanDir = require('../lib/cleanDir'); +import { expect } from 'chai'; +import { clearOutput, dirExists } from './__helpers.js'; +import buildFile from '../lib/buildFile.js'; +import cleanFile from '../lib/cleanFile.js'; +import cleanDir from '../lib/cleanDir.js'; function format() { return 'hi'; @@ -22,11 +22,11 @@ function format() { describe('cleanDir', () => { beforeEach(() => { - helpers.clearOutput(); + clearOutput(); }); afterEach(() => { - helpers.clearOutput(); + clearOutput(); }); it('should delete a dir properly', () => { @@ -45,7 +45,7 @@ describe('cleanDir', () => { { buildPath: '__tests__/__output/extradir1/extradir2/' }, {}, ); - expect(helpers.dirDoesNotExist('./__tests__/__output/extradir1/extradir2')).toBeTruthy(); - expect(helpers.dirDoesNotExist('./__tests__/__output/extradir1')).toBeTruthy(); + expect(dirExists('__tests__/__output/extradir1/extradir2')).to.be.false; + expect(dirExists('__tests__/__output/extradir1')).to.be.false; }); }); diff --git a/__tests__/cleanDirs.test.js b/__tests__/cleanDirs.test.js index 8389cb0c2..33104240b 100644 --- a/__tests__/cleanDirs.test.js +++ b/__tests__/cleanDirs.test.js @@ -10,36 +10,36 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ +import { expect } from 'chai'; +import { clearOutput, dirExists } from './__helpers.js'; +import buildFiles from '../lib/buildFiles.js'; +import cleanFiles from '../lib/cleanFiles.js'; +import cleanDirs from '../lib/cleanDirs.js'; -var helpers = require('./__helpers'); -var buildFiles = require('../lib/buildFiles'); -var cleanFiles = require('../lib/cleanFiles'); -var cleanDirs = require('../lib/cleanDirs'); - -var dictionary = { - properties: { +const dictionary = { + tokens: { foo: 'bar', }, }; -var platform = { +const platform = { files: [ { destination: '__tests__/__output/extradir1/extradir2/extradir1/extradir2/test.json', format: function (dictionary) { - return JSON.stringify(dictionary.properties); + return JSON.stringify(dictionary.tokens); }, }, ], }; -var platformWithBuildPath = { +const platformWithBuildPath = { buildPath: '__tests__/__output/extradir1/extradir2/', files: [ { destination: 'test.json', format: function (dictionary) { - return JSON.stringify(dictionary.properties); + return JSON.stringify(dictionary.tokens); }, }, ], @@ -47,27 +47,27 @@ var platformWithBuildPath = { describe('cleanDirs', () => { beforeEach(() => { - helpers.clearOutput(); + clearOutput(); }); afterEach(() => { - helpers.clearOutput(); + clearOutput(); }); it('should delete without buildPath', () => { buildFiles(dictionary, platform); cleanFiles(dictionary, platform); cleanDirs(dictionary, platform); - expect(helpers.dirDoesNotExist('./__tests__/__output/extradir1/extradir2')).toBeTruthy(); - expect(helpers.dirDoesNotExist('./__tests__/__output/extradir1')).toBeTruthy(); + expect(dirExists('__tests__/__output/extradir1/extradir2')).to.be.false; + expect(dirExists('__tests__/__output/extradir1')).to.be.false; }); it('should delete with buildPath', () => { buildFiles(dictionary, platformWithBuildPath); cleanFiles(dictionary, platformWithBuildPath); cleanDirs(dictionary, platformWithBuildPath); - expect(helpers.dirDoesNotExist('./__tests__/__output/extradir1/extradir2')).toBeTruthy(); - expect(helpers.dirDoesNotExist('./__tests__/__output/extradir1')).toBeTruthy(); + expect(dirExists('__tests__/__output/extradir1/extradir2')).to.be.false; + expect(dirExists('__tests__/t__/__output/extradir1')).to.be.false; }); it('should throw if buildPath does not end in a trailing slash', () => { @@ -78,6 +78,6 @@ describe('cleanDirs', () => { buildPath: 'foo', }, ); - }).toThrow('Build path must end in a trailing slash or you will get weird file names.'); + }).to.throw('Build path must end in a trailing slash or you will get weird file names.'); }); }); diff --git a/__tests__/cleanFile.test.js b/__tests__/cleanFile.test.js index 039c20305..036b3e8ea 100644 --- a/__tests__/cleanFile.test.js +++ b/__tests__/cleanFile.test.js @@ -10,10 +10,10 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ - -var helpers = require('./__helpers'); -var buildFile = require('../lib/buildFile'); -var cleanFile = require('../lib/cleanFile'); +import { expect } from 'chai'; +import { fileExists, clearOutput } from './__helpers.js'; +import buildFile from '../lib/buildFile.js'; +import cleanFile from '../lib/cleanFile.js'; function format() { return 'hi'; @@ -21,17 +21,17 @@ function format() { describe('cleanFile', () => { beforeEach(() => { - helpers.clearOutput(); + clearOutput(); }); afterEach(() => { - helpers.clearOutput(); + clearOutput(); }); it('should delete a file properly', () => { buildFile({ destination: 'test.txt', format }, { buildPath: '__tests__/__output/' }, {}); cleanFile({ destination: 'test.txt', format }, { buildPath: '__tests__/__output/' }, {}); - expect(helpers.fileDoesNotExist('./__tests__/__output/test.txt')).toBeTruthy(); + expect(fileExists('__tests__/__output/test.txt')).to.be.false; }); describe('if a file does not exist', () => { @@ -42,7 +42,7 @@ describe('cleanFile', () => { { buildPath: '__tests__/__output/' }, {}, ), - ).not.toThrow(); + ).to.not.throw(); }); }); }); diff --git a/__tests__/cleanFiles.test.js b/__tests__/cleanFiles.test.js index f8b75d944..888027c22 100644 --- a/__tests__/cleanFiles.test.js +++ b/__tests__/cleanFiles.test.js @@ -10,35 +10,35 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ +import { expect } from 'chai'; +import { clearOutput, fileExists } from './__helpers.js'; +import buildFiles from '../lib/buildFiles.js'; +import cleanFiles from '../lib/cleanFiles.js'; -var helpers = require('./__helpers'); -var buildFiles = require('../lib/buildFiles'); -var cleanFiles = require('../lib/cleanFiles'); - -var dictionary = { - properties: { +const dictionary = { + tokens: { foo: 'bar', }, }; -var platform = { +const platform = { files: [ { destination: '__tests__/__output/test.json', format: function (dictionary) { - return JSON.stringify(dictionary.properties); + return JSON.stringify(dictionary.tokens); }, }, ], }; -var platformWithBuildPath = { +const platformWithBuildPath = { buildPath: '__tests__/__output/', files: [ { destination: 'test.json', format: function (dictionary) { - return JSON.stringify(dictionary.properties); + return JSON.stringify(dictionary.tokens); }, }, ], @@ -46,22 +46,22 @@ var platformWithBuildPath = { describe('cleanFiles', () => { beforeEach(() => { - helpers.clearOutput(); + clearOutput(); }); afterEach(() => { - helpers.clearOutput(); + clearOutput(); }); it('should delete without buildPath', () => { buildFiles(dictionary, platform); cleanFiles(dictionary, platform); - expect(helpers.fileDoesNotExist('./__tests__/__output/test.json')).toBeTruthy(); + expect(fileExists('__tests__/__output/test.json')).to.be.false; }); it('should delete with buildPath', () => { buildFiles(dictionary, platformWithBuildPath); cleanFiles(dictionary, platformWithBuildPath); - expect(helpers.fileDoesNotExist('./__tests__/__output/test.json')).toBeTruthy(); + expect(fileExists('__tests__/t__/__output/test.json')).to.be.false; }); }); diff --git a/__tests__/cleanPlatform.test.js b/__tests__/cleanPlatform.test.js index 4cbe67cb0..43a2170d5 100644 --- a/__tests__/cleanPlatform.test.js +++ b/__tests__/cleanPlatform.test.js @@ -10,49 +10,45 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ +import { expect } from 'chai'; +import StyleDictionary from 'style-dictionary'; +import { fileToJSON, clearOutput, fileExists } from './__helpers.js'; -var helpers = require('./__helpers'); -var config = helpers.fileToJSON(__dirname + '/__configs/test.json'); -var StyleDictionary = require('../index'); -var StyleDictionaryExtended = StyleDictionary.extend(config); +const config = fileToJSON('__tests__/__configs/test.json'); +const StyleDictionaryExtended = new StyleDictionary(config); describe('cleanPlatform', () => { beforeEach(() => { - helpers.clearOutput(); + clearOutput(); }); afterEach(() => { - helpers.clearOutput(); + clearOutput(); }); - it('should delete the proper files', () => { - StyleDictionaryExtended.buildPlatform('web'); - StyleDictionaryExtended.cleanPlatform('web'); - expect(helpers.fileDoesNotExist('./__tests__/__output/web/_icons.scss')).toBeTruthy(); - expect(helpers.fileDoesNotExist('./__tests__/__output/web/_styles.js')).toBeTruthy(); - expect(helpers.fileDoesNotExist('./__tests__/__output/web/_variables.scss')).toBeTruthy(); + it('should delete the proper files', async () => { + await StyleDictionaryExtended.buildPlatform('web'); + await StyleDictionaryExtended.cleanPlatform('web'); + expect(fileExists('__tests__/__output/web/_icons.scss')).to.be.false; + expect(fileExists('__tests__/__output/web/_styles.js')).to.be.false; + expect(fileExists('__tests__/__output/web/_variables.scss')).to.be.false; }); - it('should delete android stuff', () => { - StyleDictionaryExtended.buildPlatform('android'); - StyleDictionaryExtended.cleanPlatform('android'); - expect( - helpers.fileDoesNotExist('./__tests__/__output/android/main/res/drawable-hdpi/flag_us.png'), - ).toBeTruthy(); - expect( - helpers.fileDoesNotExist('./__tests__/__output/android/main/res/drawable-xhdpi/flag_us.png'), - ).toBeTruthy(); - expect(helpers.fileDoesNotExist('./__tests__/__output/android/colors.xml')).toBeTruthy(); - expect(helpers.fileDoesNotExist('./__tests__/__output/android/dimens.xml')).toBeTruthy(); - expect(helpers.fileDoesNotExist('./__tests__/__output/android/font_dimen.xml')).toBeTruthy(); + it('should delete android stuff', async () => { + await StyleDictionaryExtended.buildPlatform('android'); + await StyleDictionaryExtended.cleanPlatform('android'); + expect(fileExists('__tests__/__output/android/main/res/drawable-hdpi/flag_us.png')).to.be.false; + expect(fileExists('__tests__/__output/android/main/res/drawable-xhdpi/flag_us.png')).to.be + .false; + expect(fileExists('__tests__/__output/android/colors.xml')).to.be.false; + expect(fileExists('__tests__/__output/android/dimens.xml')).to.be.false; + expect(fileExists('__tests__/__output/android/font_dimen.xml')).to.be.false; }); - it('should delete ios stuff', () => { - StyleDictionaryExtended.buildPlatform('ios'); - StyleDictionaryExtended.cleanPlatform('ios'); - expect( - helpers.fileDoesNotExist('./__tests__/__output/ios/style_dictionary.plist'), - ).toBeTruthy(); - expect(helpers.fileDoesNotExist('./__tests__/__output/ios/style_dictionary.h')).toBeTruthy(); + it('should delete ios stuff', async () => { + await StyleDictionaryExtended.buildPlatform('ios'); + await StyleDictionaryExtended.cleanPlatform('ios'); + expect(fileExists('__tests__/__output/ios/style_dictionary.plist')).to.be.false; + expect(fileExists('__tests__/__output/ios/style_dictionary.h')).to.be.false; }); }); diff --git a/__tests__/common/filters.test.js b/__tests__/common/filters.test.js index 99b92c7d6..a6caf8cd5 100644 --- a/__tests__/common/filters.test.js +++ b/__tests__/common/filters.test.js @@ -10,8 +10,8 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ - -var filters = require('../../lib/common/filters'); +import { expect } from 'chai'; +import filters from '../../lib/common/filters.js'; describe('common', () => { describe('filters', () => { @@ -22,7 +22,7 @@ describe('common', () => { value: '#1a1aed', }; - expect(filters['removePrivate'](regularToken)).toEqual(true); + expect(filters['removePrivate'](regularToken)).to.be.true; }); it('should keep an unfiltered token in for distribution', () => { @@ -32,7 +32,7 @@ describe('common', () => { private: false, }; - expect(filters['removePrivate'](unfilteredToken)).toEqual(true); + expect(filters['removePrivate'](unfilteredToken)).to.be.true; }); it('should remove a filtered token from the distribution output', () => { @@ -42,7 +42,7 @@ describe('common', () => { private: true, }; - expect(filters['removePrivate'](filteredToken)).toEqual(false); + expect(filters['removePrivate'](filteredToken)).to.be.false; }); }); }); diff --git a/__tests__/common/formatHelpers/__snapshots__/createPropertyFormatter.test.snap.js b/__tests__/common/formatHelpers/__snapshots__/createPropertyFormatter.test.snap.js new file mode 100644 index 000000000..8862a3c36 --- /dev/null +++ b/__tests__/common/formatHelpers/__snapshots__/createPropertyFormatter.test.snap.js @@ -0,0 +1,36 @@ +/* @web/test-runner snapshot v1 */ +export const snapshots = {}; +snapshots["common formatHelpers createPropertyFormatter commentStyle should default to putting comment next to the output value 1"] = +` --color-red: #FF0000; /* Foo bar qux */`; +/* end snapshot common formatHelpers createPropertyFormatter commentStyle should default to putting comment next to the output value 1 */ + +snapshots["common formatHelpers createPropertyFormatter commentStyle should default to putting comment next to the output value 2"] = +` /** + * Foo + * bar + * qux + */ + --color-blue: #0000FF;`; +/* end snapshot common formatHelpers createPropertyFormatter commentStyle should default to putting comment next to the output value 2 */ + +snapshots["common formatHelpers createPropertyFormatter commentStyle should default to putting comment next to the output value 3"] = +`$color-red: #FF0000; // Foo bar qux`; +/* end snapshot common formatHelpers createPropertyFormatter commentStyle should default to putting comment next to the output value 3 */ + +snapshots["common formatHelpers createPropertyFormatter commentStyle should default to putting comment next to the output value 4"] = +`// Foo +// bar +// qux +$color-blue: #0000FF;`; +/* end snapshot common formatHelpers createPropertyFormatter commentStyle should default to putting comment next to the output value 4 */ + +snapshots["common formatHelpers createPropertyFormatter commentStyle allows overriding formatting commentStyle 1"] = +` /* Foo bar qux */ + --color-green: #00FF00;`; +/* end snapshot common formatHelpers createPropertyFormatter commentStyle allows overriding formatting commentStyle 1 */ + +snapshots["common formatHelpers createPropertyFormatter commentStyle allows overriding formatting commentStyle 2"] = +`// Foo bar qux +$color-green: #00FF00;`; +/* end snapshot common formatHelpers createPropertyFormatter commentStyle allows overriding formatting commentStyle 2 */ + diff --git a/__tests__/common/formatHelpers/createPropertyFormatter.test.js b/__tests__/common/formatHelpers/createPropertyFormatter.test.js index 4c4cbe12c..2282c21f5 100644 --- a/__tests__/common/formatHelpers/createPropertyFormatter.test.js +++ b/__tests__/common/formatHelpers/createPropertyFormatter.test.js @@ -10,226 +10,204 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ -const createPropertyFormatter = require('../../../lib/common/formatHelpers/createPropertyFormatter'); -const createDictionary = require('../../../lib/utils/createDictionary'); +import { expect } from 'chai'; +import createPropertyFormatter from '../../../lib/common/formatHelpers/createPropertyFormatter.js'; +import createDictionary from '../../../lib/utils/createDictionary.js'; const dictionary = createDictionary({ - properties: { - tokens: { - foo: { - original: { - value: '5px', - type: 'spacing', - }, - attributes: { - category: 'tokens', - type: 'foo', - }, - name: 'tokens-foo', - path: ['tokens', 'foo'], + tokens: { + foo: { + original: { value: '5px', type: 'spacing', }, - ref: { - original: { - value: '{tokens.foo}', - type: 'spacing', - }, - attributes: { - category: 'tokens', - type: 'ref', - }, - name: 'tokens-ref', - path: ['tokens', 'ref'], - value: '5px', + attributes: { + category: 'foo', + }, + name: 'foo', + path: ['foo'], + value: '5px', + type: 'spacing', + }, + ref: { + original: { + value: '{foo}', type: 'spacing', }, + attributes: { + category: 'ref', + }, + name: 'ref', + path: ['ref'], + value: '5px', + type: 'spacing', }, }, }); const transformedDictionary = createDictionary({ - properties: { - tokens: { - foo: { - original: { - value: '5px', - type: 'spacing', - }, - attributes: { - category: 'tokens', - type: 'foo', - }, - name: 'tokens-foo', - path: ['tokens', 'foo'], + tokens: { + foo: { + original: { value: '5px', type: 'spacing', }, - ref: { - original: { - value: '{tokens.foo}', - type: 'spacing', - }, - attributes: { - category: 'tokens', - type: 'ref', - }, - name: 'tokens-ref', - path: ['tokens', 'ref'], - value: 'changed by transitive transform', + attributes: { + category: 'foo', + }, + name: 'foo', + path: ['foo'], + value: '5px', + type: 'spacing', + }, + ref: { + original: { + value: '{foo}', type: 'spacing', }, + attributes: { + category: 'ref', + }, + name: 'ref', + path: ['ref'], + value: 'changed by transitive transform', + type: 'spacing', }, }, }); const numberDictionary = createDictionary({ - properties: { - tokens: { - foo: { - original: { - value: 10, - type: 'dimension', - }, - attributes: { - category: 'tokens', - type: 'foo', - }, - name: 'tokens-foo', - path: ['tokens', 'foo'], + tokens: { + foo: { + original: { value: 10, type: 'dimension', }, - ref: { - original: { - value: '{tokens.foo}', - type: 'dimension', - }, - attributes: { - category: 'tokens', - type: 'ref', - }, - name: 'tokens-ref', - path: ['tokens', 'ref'], - value: 10, + attributes: { + category: 'foo', + }, + name: 'foo', + path: ['foo'], + value: 10, + type: 'dimension', + }, + ref: { + original: { + value: '{foo}', type: 'dimension', }, - zero: { - original: { - value: 0, - type: 'dimension', - }, - attributes: { - category: 'tokens', - type: 'zero', - }, - name: 'tokens-zero', - path: ['tokens', 'zero'], + attributes: { + category: 'ref', + }, + name: 'ref', + path: ['ref'], + value: 10, + type: 'dimension', + }, + zero: { + original: { value: 0, type: 'dimension', }, - 'ref-zero': { - original: { - value: '{tokens.zero}', - type: 'dimension', - }, - attributes: { - category: 'tokens', - type: 'ref-zero', - }, - name: 'tokens-ref-zero', - path: ['tokens', 'ref-zero'], - value: 0, + attributes: { + category: 'zero', + }, + name: 'zero', + path: ['zero'], + value: 0, + type: 'dimension', + }, + 'ref-zero': { + original: { + value: '{zero}', type: 'dimension', }, + attributes: { + category: 'ref-zero', + }, + name: 'ref-zero', + path: ['ref-zero'], + value: 0, + type: 'dimension', }, }, }); const multiDictionary = createDictionary({ - properties: { - tokens: { - foo: { - original: { - value: '10px', - type: 'spacing', - }, - attributes: { - category: 'tokens', - type: 'foo', - }, - name: 'tokens-foo', - path: ['tokens', 'foo'], + tokens: { + foo: { + original: { value: '10px', type: 'spacing', }, - bar: { - original: { - value: '15px', - type: 'spacing', - }, - attributes: { - category: 'tokens', - type: 'bar', - }, - name: 'tokens-bar', - path: ['tokens', 'bar'], + attributes: { + category: 'foo', + }, + name: 'foo', + path: ['foo'], + value: '10px', + type: 'spacing', + }, + bar: { + original: { value: '15px', type: 'spacing', }, - ref: { - original: { - value: '{tokens.foo} 5px {tokens.bar}', - type: 'spacing', - }, - attributes: { - category: 'tokens', - type: 'ref', - }, - name: 'tokens-ref', - path: ['tokens', 'ref'], - value: '10px 5px 15px', + attributes: { + category: 'bar', + }, + name: 'bar', + path: ['bar'], + value: '15px', + type: 'spacing', + }, + ref: { + original: { + value: '{foo} 5px {bar}', type: 'spacing', }, + attributes: { + category: 'ref', + }, + name: 'ref', + path: ['ref'], + value: '10px 5px 15px', + type: 'spacing', }, }, }); const objectDictionary = createDictionary({ - properties: { - tokens: { - foo: { - original: { - value: '5px', - type: 'spacing', - }, - attributes: { - category: 'tokens', - type: 'foo', - }, - name: 'tokens-foo', - path: ['tokens', 'foo'], + tokens: { + foo: { + original: { value: '5px', type: 'spacing', }, - ref: { - original: { - value: { - width: '{tokens.foo}', - style: 'dashed', - color: '#FF00FF', - }, - type: 'border', - }, - attributes: { - category: 'tokens', - type: 'ref', + attributes: { + category: 'foo', + }, + name: 'foo', + path: ['foo'], + value: '5px', + type: 'spacing', + }, + ref: { + original: { + value: { + width: '{foo}', + style: 'dashed', + color: '#FF00FF', }, - name: 'tokens-ref', - path: ['tokens', 'ref'], - value: '5px dashed #FF00FF', type: 'border', }, + attributes: { + category: 'ref', + }, + name: 'ref', + path: ['ref'], + value: '5px dashed #FF00FF', + type: 'border', }, }, }); @@ -244,10 +222,8 @@ describe('common', () => { dictionary, format: 'css', }); - expect(propFormatter(dictionary.tokens.tokens.foo)).toEqual(' --tokens-foo: 5px;'); - expect(propFormatter(dictionary.tokens.tokens.ref)).toEqual( - ' --tokens-ref: var(--tokens-foo);', - ); + // expect(propFormatter(dictionary.tokens.foo)).to.equal(' --foo: 5px;'); + expect(propFormatter(dictionary.tokens.ref)).to.equal(' --ref: var(--foo);'); }); it('should support outputReferences when values are transformed by (transitive) "value" transforms', () => { @@ -256,12 +232,8 @@ describe('common', () => { dictionary: transformedDictionary, format: 'css', }); - expect(propFormatter(transformedDictionary.tokens.tokens.foo)).toEqual( - ' --tokens-foo: 5px;', - ); - expect(propFormatter(transformedDictionary.tokens.tokens.ref)).toEqual( - ' --tokens-ref: var(--tokens-foo);', - ); + expect(propFormatter(transformedDictionary.tokens.foo)).to.equal(' --foo: 5px;'); + expect(propFormatter(transformedDictionary.tokens.ref)).to.equal(' --ref: var(--foo);'); }); it('should support number values for outputReferences', () => { @@ -270,10 +242,8 @@ describe('common', () => { dictionary: numberDictionary, format: 'css', }); - expect(propFormatter(numberDictionary.tokens.tokens.foo)).toEqual(' --tokens-foo: 10;'); - expect(propFormatter(numberDictionary.tokens.tokens.ref)).toEqual( - ' --tokens-ref: var(--tokens-foo);', - ); + expect(propFormatter(numberDictionary.tokens.foo)).to.equal(' --foo: 10;'); + expect(propFormatter(numberDictionary.tokens.ref)).to.equal(' --ref: var(--foo);'); }); it('should support valid falsy values for outputReferences', () => { @@ -282,9 +252,9 @@ describe('common', () => { dictionary: numberDictionary, format: 'css', }); - expect(propFormatter(numberDictionary.tokens.tokens.zero)).toEqual(' --tokens-zero: 0;'); - expect(propFormatter(numberDictionary.tokens.tokens['ref-zero'])).toEqual( - ' --tokens-ref-zero: var(--tokens-zero);', + expect(propFormatter(numberDictionary.tokens.zero)).to.equal(' --zero: 0;'); + expect(propFormatter(numberDictionary.tokens['ref-zero'])).to.equal( + ' --ref-zero: var(--zero);', ); }); @@ -294,10 +264,10 @@ describe('common', () => { dictionary: multiDictionary, format: 'css', }); - expect(propFormatter(multiDictionary.tokens.tokens.foo)).toEqual(' --tokens-foo: 10px;'); - expect(propFormatter(multiDictionary.tokens.tokens.bar)).toEqual(' --tokens-bar: 15px;'); - expect(propFormatter(multiDictionary.tokens.tokens.ref)).toEqual( - ' --tokens-ref: var(--tokens-foo) 5px var(--tokens-bar);', + expect(propFormatter(multiDictionary.tokens.foo)).to.equal(' --foo: 10px;'); + expect(propFormatter(multiDictionary.tokens.bar)).to.equal(' --bar: 15px;'); + expect(propFormatter(multiDictionary.tokens.ref)).to.equal( + ' --ref: var(--foo) 5px var(--bar);', ); }); @@ -310,15 +280,16 @@ describe('common', () => { dictionary: objectDictionary, format: 'css', }); - expect(propFormatter(objectDictionary.tokens.tokens.foo)).toEqual(' --tokens-foo: 5px;'); - expect(propFormatter(objectDictionary.tokens.tokens.ref)).toEqual( - ' --tokens-ref: var(--tokens-foo) dashed #FF00FF;', + // expect(propFormatter(objectDictionary.tokens.foo)).to.equal(' --foo: 5px;'); + + expect(propFormatter(objectDictionary.tokens.ref)).to.equal( + ' --ref: var(--foo) dashed #FF00FF;', ); }); }); describe('commentStyle', () => { - const commentProperties = { + const commentTokens = { color: { red: { name: 'color-red', @@ -354,10 +325,10 @@ describe('common', () => { }; const commentDictionary = createDictionary({ - properties: commentProperties, + tokens: commentTokens, }); - it('should default to putting comment next to the output value', () => { + it('should default to putting comment next to the output value', async () => { // long commentStyle const cssFormatter = createPropertyFormatter({ format: 'css', @@ -375,29 +346,14 @@ describe('common', () => { const sassRed = sassFormatter(commentDictionary.tokens.color.red); const sassBlue = sassFormatter(commentDictionary.tokens.color.blue); - // Note that since CSS puts it inside a selector, there is an indentation of 2 spaces as well - // CSS also has commentStyle long, whereas sass uses short - expect(cssRed).toMatchInlineSnapshot(`" --color-red: #FF0000; /* Foo bar qux */"`); - - expect(cssBlue).toMatchInlineSnapshot(` -" /** - * Foo - * bar - * qux - */ - --color-blue: #0000FF;" -`); + await expect(cssRed).to.matchSnapshot(1); + await expect(cssBlue).to.matchSnapshot(2); - expect(sassRed).toMatchInlineSnapshot(`"$color-red: #FF0000; // Foo bar qux"`); - expect(sassBlue).toMatchInlineSnapshot(` -"// Foo -// bar -// qux -$color-blue: #0000FF;" -`); + await expect(sassRed).to.matchSnapshot(3); + await expect(sassBlue).to.matchSnapshot(4); }); - it('allows overriding formatting commentStyle', () => { + it('allows overriding formatting commentStyle', async () => { // long commentStyle const cssFormatter = createPropertyFormatter({ format: 'css', @@ -414,15 +370,9 @@ $color-blue: #0000FF;" const cssRed = cssFormatter(commentDictionary.tokens.color.green); const sassRed = sassFormatter(commentDictionary.tokens.color.green); - expect(cssRed).toMatchInlineSnapshot(` -" /* Foo bar qux */ - --color-green: #00FF00;" -`); + await expect(cssRed).to.matchSnapshot(1); - expect(sassRed).toMatchInlineSnapshot(` -"// Foo bar qux -$color-green: #00FF00;" -`); + await expect(sassRed).to.matchSnapshot(2); }); }); }); diff --git a/__tests__/common/formatHelpers/fileHeader.test.js b/__tests__/common/formatHelpers/fileHeader.test.js index a5a59f393..f421918cd 100644 --- a/__tests__/common/formatHelpers/fileHeader.test.js +++ b/__tests__/common/formatHelpers/fileHeader.test.js @@ -10,8 +10,8 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ - -const fileHeader = require('../../../lib/common/formatHelpers/fileHeader'); +import { expect } from 'chai'; +import fileHeader from '../../../lib/common/formatHelpers/fileHeader.js'; const defaultLine1 = `Do not edit directly`; const defaultLine2 = `Generated on Sat, 01 Jan 2000 00:00:00 GMT`; @@ -21,7 +21,7 @@ describe('common', () => { describe('fileHeader', () => { it(`should default to /**/ comment style`, () => { const comment = fileHeader({}); - expect(comment).toEqual( + expect(comment).to.equal( `/** * ${defaultLine1} * ${defaultLine2} @@ -33,7 +33,7 @@ describe('common', () => { it(`should handle commentStyle short`, () => { const comment = fileHeader({ commentStyle: 'short' }); - expect(comment).toEqual( + expect(comment).to.equal( ` // ${defaultLine1} // ${defaultLine2} @@ -44,7 +44,7 @@ describe('common', () => { it(`should handle commentStyle xml`, () => { const comment = fileHeader({ commentStyle: 'xml' }); - expect(comment).toEqual( + expect(comment).to.equal( ` - - #FF0000 - - -" -`; - -exports[`formats all should match android/dimens snapshot 1`] = ` -" - - - - - -" -`; - -exports[`formats all should match android/fontDimens snapshot 1`] = ` -" - - - - - -" -`; - -exports[`formats all should match android/integers snapshot 1`] = ` -" - - - - - -" -`; - -exports[`formats all should match android/resources snapshot 1`] = ` -" - - - - #FF0000 - - -" -`; - -exports[`formats all should match android/strings snapshot 1`] = ` -" - - - - - -" -`; - -exports[`formats all should match compose/object snapshot 1`] = ` -" - -// Do not edit directly -// Generated on Sat, 01 Jan 2000 00:00:00 GMT - - - -package ; - -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.unit.* - -object { - /** comment */ - val color_red = #FF0000 -} -" -`; - -exports[`formats all should match css/fonts.css snapshot 1`] = ` -" -" -`; - -exports[`formats all should match css/variables snapshot 1`] = ` -"/** - * Do not edit directly - * Generated on Sat, 01 Jan 2000 00:00:00 GMT - */ - -:root { - --color_red: #FF0000; /* comment */ -} -" -`; - -exports[`formats all should match flutter/class.dart snapshot 1`] = ` -" -// -// __output/ -// - -// Do not edit directly -// Generated on Sat, 01 Jan 2000 00:00:00 GMT - - - -import 'dart:ui'; - -class { - ._(); - - static const color_red = #FF0000; /* comment */ -} -" -`; - -exports[`formats all should match ios/colors.h snapshot 1`] = ` -" -// -// __output/ -// - -// Do not edit directly -// Generated on Sat, 01 Jan 2000 00:00:00 GMT - - -#import - -typedef NS_ENUM(NSInteger, ) { -color_red -}; - -@interface : NSObject -+ (NSArray *)values; -+ (UIColor *)color:()color; -@end -" -`; - -exports[`formats all should match ios/colors.m snapshot 1`] = ` -" -// -// __output/ -// - -// Do not edit directly -// Generated on Sat, 01 Jan 2000 00:00:00 GMT - - -#import \\".h\\" - -@implementation - -+ (UIColor *)color:()colorEnum{ - return [[self values] objectAtIndex:colorEnum]; -} - -+ (NSArray *)values { - static NSArray* colorArray; - static dispatch_once_t onceToken; - - dispatch_once(&onceToken, ^{ - colorArray = @[ -#FF0000 - ]; - }); - - return colorArray; -} - -@end -" -`; - -exports[`formats all should match ios/macros snapshot 1`] = ` -" -// -// __output/ -// - -// Do not edit directly -// Generated on Sat, 01 Jan 2000 00:00:00 GMT - - -#import -#import - -#define color_red #FF0000 - -" -`; - -exports[`formats all should match ios/plist snapshot 1`] = ` -" - - - - - - color_red - - r - NaN - g - NaN - b - NaN - a - 1 - - - - -" -`; - -exports[`formats all should match ios/singleton.h snapshot 1`] = ` -" -// -// __output/ -// - -// Do not edit directly -// Generated on Sat, 01 Jan 2000 00:00:00 GMT - - -#import -#import - -@interface : NSObject - -+ (NSDictionary *)properties; -+ (NSDictionary *)getProperty:(NSString *)keyPath; -+ (nonnull)getValue:(NSString *)keyPath; - -@end -" -`; - -exports[`formats all should match ios/singleton.m snapshot 1`] = ` -" -// -// __output/ -// - -// Do not edit directly -// Generated on Sat, 01 Jan 2000 00:00:00 GMT - - -#import \\".h\\" - -@implementation - -+ (NSDictionary *)getProperty:(NSString *)keyPath { - return [[self properties] valueForKeyPath:keyPath]; -} - -+ (nonnull)getValue:(NSString *)keyPath { - return [[self properties] valueForKeyPath:[NSString stringWithFormat:@\\"%@.value\\", keyPath]]; -} - -+ (NSDictionary *)properties { - static NSDictionary * dictionary; - static dispatch_once_t onceToken; - - dispatch_once(&onceToken, ^{ - dictionary = @{ - @\\"color\\": @{ - @\\"red\\": @{ - @\\"value\\": #FF0000, - @\\"name\\": @\\"color_red\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"red\\" - } - } - }; - }); - - return dictionary; -} - -@end - - -" -`; - -exports[`formats all should match ios/static.h snapshot 1`] = ` -" -// __output/ -// - -// Do not edit directly -// Generated on Sat, 01 Jan 2000 00:00:00 GMT - - -#import - - -extern const color_red; -" -`; - -exports[`formats all should match ios/static.m snapshot 1`] = ` -" -// -// __output/ -// - -// Do not edit directly -// Generated on Sat, 01 Jan 2000 00:00:00 GMT - - -#import \\".h\\" - - - const color_red = #FF0000; -" -`; - -exports[`formats all should match ios/strings.h snapshot 1`] = ` -" -// -// __output/ -// - -// Do not edit directly -// Generated on Sat, 01 Jan 2000 00:00:00 GMT - - -#import - - -extern NSString * const color_red; - -@interface : NSObject -+ (NSArray *)values; -@end -" -`; - -exports[`formats all should match ios/strings.m snapshot 1`] = ` -" -// -// __output/ -// - -// Do not edit directly -// Generated on Sat, 01 Jan 2000 00:00:00 GMT - - -#import \\".h\\" - - -NSString * const color_red = #FF0000; - -@implementation - -+ (NSArray *)values { - static NSArray* array; - static dispatch_once_t onceToken; - - dispatch_once(&onceToken, ^{ - array = @[ - @{ - @\\"value\\": #FF0000, - @\\"name\\": @\\"color_red\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"red\\" - } - ]; - }); - - return array; -} - -@end - - -" -`; - -exports[`formats all should match ios-swift/any.swift snapshot 1`] = ` -" -// -// __output/ -// - -// Do not edit directly -// Generated on Sat, 01 Jan 2000 00:00:00 GMT - - -import UIKit - -public class { - public static let color_red = #FF0000 /* comment */ -} -" -`; - -exports[`formats all should match ios-swift/class.swift snapshot 1`] = ` -" -// -// __output/ -// - -// Do not edit directly -// Generated on Sat, 01 Jan 2000 00:00:00 GMT - - -import UIKit - -public class { - public static let color_red = #FF0000 /* comment */ -} -" -`; - -exports[`formats all should match ios-swift/enum.swift snapshot 1`] = ` -" -// -// __output/ -// - -// Do not edit directly -// Generated on Sat, 01 Jan 2000 00:00:00 GMT - - -import UIKit - -public enum { - public static let color_red = #FF0000 /* comment */ -} -" -`; - -exports[`formats all should match javascript/es6 snapshot 1`] = ` -"/** - * Do not edit directly - * Generated on Sat, 01 Jan 2000 00:00:00 GMT - */ - -export const color_red = \\"#FF0000\\"; // comment -" -`; - -exports[`formats all should match javascript/module snapshot 1`] = ` -"/** - * Do not edit directly - * Generated on Sat, 01 Jan 2000 00:00:00 GMT - */ - -module.exports = { - \\"color\\": { - \\"red\\": { - \\"value\\": \\"#FF0000\\", - \\"original\\": { - \\"value\\": \\"#FF0000\\" - }, - \\"name\\": \\"color_red\\", - \\"comment\\": \\"comment\\", - \\"attributes\\": { - \\"category\\": \\"color\\", - \\"type\\": \\"red\\" - }, - \\"path\\": [ - \\"color\\", - \\"red\\" - ] - } - } -}; -" -`; - -exports[`formats all should match javascript/module-flat snapshot 1`] = ` -"/** - * Do not edit directly - * Generated on Sat, 01 Jan 2000 00:00:00 GMT - */ - -module.exports = { - \\"color_red\\": \\"#FF0000\\" -}; -" -`; - -exports[`formats all should match javascript/object snapshot 1`] = ` -"/** - * Do not edit directly - * Generated on Sat, 01 Jan 2000 00:00:00 GMT - */ - -var _styleDictionary = { - \\"color\\": { - \\"red\\": { - \\"value\\": \\"#FF0000\\", - \\"original\\": { - \\"value\\": \\"#FF0000\\" - }, - \\"name\\": \\"color_red\\", - \\"comment\\": \\"comment\\", - \\"attributes\\": { - \\"category\\": \\"color\\", - \\"type\\": \\"red\\" - }, - \\"path\\": [ - \\"color\\", - \\"red\\" - ] - } - } -}; -" -`; - -exports[`formats all should match javascript/umd snapshot 1`] = ` -"/** - * Do not edit directly - * Generated on Sat, 01 Jan 2000 00:00:00 GMT - */ - -(function(root, factory) { - if (typeof module === \\"object\\" && module.exports) { - module.exports = factory(); - } else if (typeof exports === \\"object\\") { - exports[\\"_styleDictionary\\"] = factory(); - } else if (typeof define === \\"function\\" && define.amd) { - define([], factory); - } else { - root[\\"_styleDictionary\\"] = factory(); - } -}(this, function() { - return { - \\"color\\": { - \\"red\\": { - \\"value\\": \\"#FF0000\\", - \\"original\\": { - \\"value\\": \\"#FF0000\\" - }, - \\"name\\": \\"color_red\\", - \\"comment\\": \\"comment\\", - \\"attributes\\": { - \\"category\\": \\"color\\", - \\"type\\": \\"red\\" - }, - \\"path\\": [ - \\"color\\", - \\"red\\" - ] - } - } -}; -})) -" -`; - -exports[`formats all should match json snapshot 1`] = ` -"{ - \\"color\\": { - \\"red\\": { - \\"value\\": \\"#FF0000\\", - \\"original\\": { - \\"value\\": \\"#FF0000\\" - }, - \\"name\\": \\"color_red\\", - \\"comment\\": \\"comment\\", - \\"attributes\\": { - \\"category\\": \\"color\\", - \\"type\\": \\"red\\" - }, - \\"path\\": [ - \\"color\\", - \\"red\\" - ] - } - } -} -" -`; - -exports[`formats all should match json/asset snapshot 1`] = `"{}"`; - -exports[`formats all should match json/flat snapshot 1`] = ` -"{ - \\"color_red\\": \\"#FF0000\\" -} -" -`; - -exports[`formats all should match json/nested snapshot 1`] = ` -"{ - \\"color\\": { - \\"red\\": \\"#FF0000\\" - } -} -" -`; - -exports[`formats all should match less/icons snapshot 1`] = ` -" -// Do not edit directly -// Generated on Sat, 01 Jan 2000 00:00:00 GMT - -" -`; - -exports[`formats all should match less/variables snapshot 1`] = ` -" -// Do not edit directly -// Generated on Sat, 01 Jan 2000 00:00:00 GMT - -@color_red: #FF0000; // comment -" -`; - -exports[`formats all should match sass/map-deep snapshot 1`] = ` -" -/** - * Do not edit directly - * Generated on Sat, 01 Jan 2000 00:00:00 GMT - */ - -$color_red: #FF0000 !default; // comment - -$tokens: ( - 'color': ( - 'red': $color_red - ) -); -" -`; - -exports[`formats all should match sass/map-flat snapshot 1`] = ` -" -/** - * Do not edit directly - * Generated on Sat, 01 Jan 2000 00:00:00 GMT - */ - -$tokens: ( - // comment - 'color_red': #FF0000 -); -" -`; - -exports[`formats all should match scss/icons snapshot 1`] = ` -" -// Do not edit directly -// Generated on Sat, 01 Jan 2000 00:00:00 GMT - -" -`; - -exports[`formats all should match scss/map-deep snapshot 1`] = ` -" -/** - * Do not edit directly - * Generated on Sat, 01 Jan 2000 00:00:00 GMT - */ - -$color_red: #FF0000 !default; // comment - -$tokens: ( - 'color': ( - 'red': $color_red - ) -); -" -`; - -exports[`formats all should match scss/map-flat snapshot 1`] = ` -" -/** - * Do not edit directly - * Generated on Sat, 01 Jan 2000 00:00:00 GMT - */ - -$tokens: ( - // comment - 'color_red': #FF0000 -); -" -`; - -exports[`formats all should match scss/variables snapshot 1`] = ` -" -// Do not edit directly -// Generated on Sat, 01 Jan 2000 00:00:00 GMT - -$color_red: #FF0000; // comment -" -`; - -exports[`formats all should match sketch/palette snapshot 1`] = ` -"{ - \\"compatibleVersion\\": \\"1.0\\", - \\"pluginVersion\\": \\"1.1\\", - \\"colors\\": [] -} -" -`; - -exports[`formats all should match sketch/palette/v2 snapshot 1`] = ` -"{ - \\"compatibleVersion\\": \\"2.0\\", - \\"pluginVersion\\": \\"2.2\\", - \\"colors\\": [ - { - \\"0\\": \\"#\\", - \\"1\\": \\"F\\", - \\"2\\": \\"F\\", - \\"3\\": \\"0\\", - \\"4\\": \\"0\\", - \\"5\\": \\"0\\", - \\"6\\": \\"0\\", - \\"name\\": \\"color_red\\" - } - ] -} -" -`; - -exports[`formats all should match stylus/variables snapshot 1`] = ` -" -// Do not edit directly -// Generated on Sat, 01 Jan 2000 00:00:00 GMT - -$color_red= #FF0000; // comment -" -`; - -exports[`formats all should match typescript/es6-declarations snapshot 1`] = ` -"/** - * Do not edit directly - * Generated on Sat, 01 Jan 2000 00:00:00 GMT - */ - -/** comment */ -export const color_red : string; -" -`; - -exports[`formats all should match typescript/module-declarations snapshot 1`] = ` -"/** - * Do not edit directly - * Generated on Sat, 01 Jan 2000 00:00:00 GMT - */ - -export default tokens; - -declare interface DesignToken { - value: any; - name?: string; - comment?: string; - themeable?: boolean; - attributes?: { - category?: string; - type?: string; - item?: string; - subitem?: string; - state?: string; - [key: string]: any; - }; - [key: string]: any; -} - -declare const tokens: { - \\"color\\": { - \\"red\\": DesignToken - } -} -" -`; diff --git a/__tests__/formats/__snapshots__/all.test.snap.js b/__tests__/formats/__snapshots__/all.test.snap.js new file mode 100644 index 000000000..1a4a43089 --- /dev/null +++ b/__tests__/formats/__snapshots__/all.test.snap.js @@ -0,0 +1,752 @@ +/* @web/test-runner snapshot v1 */ +export const snapshots = {}; + +snapshots["formats all should match css/variables snapshot"] = +`/** + * Do not edit directly + * Generated on Sat, 01 Jan 2000 00:00:00 GMT + */ + +:root { + --color_red: #FF0000; /* comment */ +} +`; +/* end snapshot formats all should match css/variables snapshot */ + +snapshots["formats all should match scss/map-flat snapshot"] = +` +/** + * Do not edit directly + * Generated on Sat, 01 Jan 2000 00:00:00 GMT + */ + +$tokens: ( + // comment + 'color_red': #FF0000 +);`; +/* end snapshot formats all should match scss/map-flat snapshot */ + +snapshots["formats all should match scss/map-deep snapshot"] = +` +/** + * Do not edit directly + * Generated on Sat, 01 Jan 2000 00:00:00 GMT + */ + +$color_red: #FF0000 !default; // comment + +$tokens: ( + 'color': ( + 'red': $color_red + ) +); +`; +/* end snapshot formats all should match scss/map-deep snapshot */ + +snapshots["formats all should match scss/variables snapshot"] = +` +// Do not edit directly +// Generated on Sat, 01 Jan 2000 00:00:00 GMT + +$color_red: #FF0000; // comment +`; +/* end snapshot formats all should match scss/variables snapshot */ + +snapshots["formats all should match scss/icons snapshot"] = +` +// Do not edit directly +// Generated on Sat, 01 Jan 2000 00:00:00 GMT + +`; +/* end snapshot formats all should match scss/icons snapshot */ + +snapshots["formats all should match less/variables snapshot"] = +` +// Do not edit directly +// Generated on Sat, 01 Jan 2000 00:00:00 GMT + +@color_red: #FF0000; // comment +`; +/* end snapshot formats all should match less/variables snapshot */ + +snapshots["formats all should match less/icons snapshot"] = +` +// Do not edit directly +// Generated on Sat, 01 Jan 2000 00:00:00 GMT + +`; +/* end snapshot formats all should match less/icons snapshot */ + +snapshots["formats all should match stylus/variables snapshot"] = +` +// Do not edit directly +// Generated on Sat, 01 Jan 2000 00:00:00 GMT + +$color_red= #FF0000; // comment +`; +/* end snapshot formats all should match stylus/variables snapshot */ + +snapshots["formats all should match javascript/module snapshot"] = +`/** + * Do not edit directly + * Generated on Sat, 01 Jan 2000 00:00:00 GMT + */ + +module.exports = { + "color": { + "red": { + "value": "#FF0000", + "original": { + "value": "#FF0000" + }, + "name": "color_red", + "comment": "comment", + "attributes": { + "category": "color", + "type": "red" + }, + "path": [ + "color", + "red" + ] + } + } +}; +`; +/* end snapshot formats all should match javascript/module snapshot */ + +snapshots["formats all should match javascript/module-flat snapshot"] = +`/** + * Do not edit directly + * Generated on Sat, 01 Jan 2000 00:00:00 GMT + */ + +module.exports = { + "color_red": "#FF0000" +}; +`; +/* end snapshot formats all should match javascript/module-flat snapshot */ + +snapshots["formats all should match javascript/object snapshot"] = +`/** + * Do not edit directly + * Generated on Sat, 01 Jan 2000 00:00:00 GMT + */ + +var _styleDictionary = { + "color": { + "red": { + "value": "#FF0000", + "original": { + "value": "#FF0000" + }, + "name": "color_red", + "comment": "comment", + "attributes": { + "category": "color", + "type": "red" + }, + "path": [ + "color", + "red" + ] + } + } +}; +`; +/* end snapshot formats all should match javascript/object snapshot */ + +snapshots["formats all should match javascript/umd snapshot"] = +`/** + * Do not edit directly + * Generated on Sat, 01 Jan 2000 00:00:00 GMT + */ + +(function(root, factory) { + if (typeof module === "object" && module.exports) { + module.exports = factory(); + } else if (typeof exports === "object") { + exports["_styleDictionary"] = factory(); + } else if (typeof define === "function" && define.amd) { + define([], factory); + } else { + root["_styleDictionary"] = factory(); + } +}(this, function() { + return { + "color": { + "red": { + "value": "#FF0000", + "original": { + "value": "#FF0000" + }, + "name": "color_red", + "comment": "comment", + "attributes": { + "category": "color", + "type": "red" + }, + "path": [ + "color", + "red" + ] + } + } +}; +})) +`; +/* end snapshot formats all should match javascript/umd snapshot */ + +snapshots["formats all should match javascript/es6 snapshot"] = +`/** + * Do not edit directly + * Generated on Sat, 01 Jan 2000 00:00:00 GMT + */ + +export const color_red = "#FF0000"; // comment +`; +/* end snapshot formats all should match javascript/es6 snapshot */ + +snapshots["formats all should match typescript/es6-declarations snapshot"] = +`/** + * Do not edit directly + * Generated on Sat, 01 Jan 2000 00:00:00 GMT + */ + +/** comment */ +export const color_red : string; +`; +/* end snapshot formats all should match typescript/es6-declarations snapshot */ + +snapshots["formats all should match typescript/module-declarations snapshot"] = +`/** + * Do not edit directly + * Generated on Sat, 01 Jan 2000 00:00:00 GMT + */ + +export default tokens; + +declare interface DesignToken { + value: any; + name?: string; + comment?: string; + themeable?: boolean; + attributes?: { + category?: string; + type?: string; + item?: string; + subitem?: string; + state?: string; + [key: string]: any; + }; + [key: string]: any; + } + +declare const tokens: { + "color": { + "red": DesignToken + } +} +`; +/* end snapshot formats all should match typescript/module-declarations snapshot */ + +snapshots["formats all should match android/resources snapshot"] = +` + + + + #FF0000 + +`; +/* end snapshot formats all should match android/resources snapshot */ + +snapshots["formats all should match android/colors snapshot"] = +` + + + + #FF0000 + +`; +/* end snapshot formats all should match android/colors snapshot */ + +snapshots["formats all should match android/dimens snapshot"] = +`xml version="1.0" encoding="UTF-8"?> + + + + +`; +/* end snapshot formats all should match android/dimens snapshot */ + +snapshots["formats all should match android/fontDimens snapshot"] = +` + + + + +`; +/* end snapshot formats all should match android/fontDimens snapshot */ + +snapshots["formats all should match android/integers snapshot"] = +` + + + + +`; +/* end snapshot formats all should match android/integers snapshot */ + +snapshots["formats all should match android/strings snapshot"] = +` + + + + +`; +/* end snapshot formats all should match android/strings snapshot */ + +snapshots["formats all should match compose/object snapshot"] = +` + +// Do not edit directly +// Generated on Sat, 01 Jan 2000 00:00:00 GMT + + + +package ; + +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.unit.* + +object { + /** comment */ + val color_red = #FF0000 +}`; +/* end snapshot formats all should match compose/object snapshot */ + +snapshots["formats all should match ios/macros snapshot"] = +` +// +// __output/ +// + +// Do not edit directly +// Generated on Sat, 01 Jan 2000 00:00:00 GMT + + +#import +#import + +#define color_red #FF0000 +`; +/* end snapshot formats all should match ios/macros snapshot */ + +snapshots["formats all should match ios/plist snapshot"] = +` + + + + + + color_red + + r + NaN + g + NaN + b + NaN + a + 1 + + + +`; +/* end snapshot formats all should match ios/plist snapshot */ + +snapshots["formats all should match ios/singleton.m snapshot"] = +` +// +// __output/ +// + +// Do not edit directly +// Generated on Sat, 01 Jan 2000 00:00:00 GMT + + +#import ".h" + +@implementation + ++ (NSDictionary *)getProperty:(NSString *)keyPath { + return [[self properties] valueForKeyPath:keyPath]; +} + ++ (nonnull)getValue:(NSString *)keyPath { + return [[self properties] valueForKeyPath:[NSString stringWithFormat:@"%@.value", keyPath]]; +} + ++ (NSDictionary *)properties { + static NSDictionary * dictionary; + static dispatch_once_t onceToken; + + dispatch_once(&onceToken, ^{ + dictionary = @{ + @"color": @{ + @"red": @{ + @"value": #FF0000, + @"name": @"color_red", + @"category": @"color", + @"type": @"red" + } + } + }; + }); + + return dictionary; +} + +@end + +`; +/* end snapshot formats all should match ios/singleton.m snapshot */ + +snapshots["formats all should match ios/singleton.h snapshot"] = +` +// +// __output/ +// + +// Do not edit directly +// Generated on Sat, 01 Jan 2000 00:00:00 GMT + + +#import +#import + +@interface : NSObject + ++ (NSDictionary *)properties; ++ (NSDictionary *)getProperty:(NSString *)keyPath; ++ (nonnull)getValue:(NSString *)keyPath; + +@end`; +/* end snapshot formats all should match ios/singleton.h snapshot */ + +snapshots["formats all should match ios/static.h snapshot"] = +` +// __output/ +// + +// Do not edit directly +// Generated on Sat, 01 Jan 2000 00:00:00 GMT + + +#import + + +extern const color_red;`; +/* end snapshot formats all should match ios/static.h snapshot */ + +snapshots["formats all should match ios/static.m snapshot"] = +` +// +// __output/ +// + +// Do not edit directly +// Generated on Sat, 01 Jan 2000 00:00:00 GMT + + +#import ".h" + + + const color_red = #FF0000;`; +/* end snapshot formats all should match ios/static.m snapshot */ + +snapshots["formats all should match ios/colors.h snapshot"] = +` +// +// __output/ +// + +// Do not edit directly +// Generated on Sat, 01 Jan 2000 00:00:00 GMT + + +#import + +typedef NS_ENUM(NSInteger, ) { +color_red +}; + +@interface : NSObject ++ (NSArray *)values; ++ (UIColor *)color:()color; +@end`; +/* end snapshot formats all should match ios/colors.h snapshot */ + +snapshots["formats all should match ios/colors.m snapshot"] = +` +// +// __output/ +// + +// Do not edit directly +// Generated on Sat, 01 Jan 2000 00:00:00 GMT + + +#import ".h" + +@implementation + ++ (UIColor *)color:()colorEnum{ + return [[self values] objectAtIndex:colorEnum]; +} + ++ (NSArray *)values { + static NSArray* colorArray; + static dispatch_once_t onceToken; + + dispatch_once(&onceToken, ^{ + colorArray = @[ +#FF0000 + ]; + }); + + return colorArray; +} + +@end`; +/* end snapshot formats all should match ios/colors.m snapshot */ + +snapshots["formats all should match ios/strings.h snapshot"] = +` +// +// __output/ +// + +// Do not edit directly +// Generated on Sat, 01 Jan 2000 00:00:00 GMT + + +#import + + +extern NSString * const color_red; + +@interface : NSObject ++ (NSArray *)values; +@end`; +/* end snapshot formats all should match ios/strings.h snapshot */ + +snapshots["formats all should match ios/strings.m snapshot"] = +` +// +// __output/ +// + +// Do not edit directly +// Generated on Sat, 01 Jan 2000 00:00:00 GMT + + +#import ".h" + + +NSString * const color_red = #FF0000; + +@implementation + ++ (NSArray *)values { + static NSArray* array; + static dispatch_once_t onceToken; + + dispatch_once(&onceToken, ^{ + array = @[ + @{ + @"value": #FF0000, + @"name": @"color_red", + @"category": @"color", + @"type": @"red" + } + ]; + }); + + return array; +} + +@end + +`; +/* end snapshot formats all should match ios/strings.m snapshot */ + +snapshots["formats all should match ios-swift/class.swift snapshot"] = +` +// +// __output/ +// + +// Do not edit directly +// Generated on Sat, 01 Jan 2000 00:00:00 GMT + + +import UIKit + +public class { + public static let color_red = #FF0000 /* comment */ +}`; +/* end snapshot formats all should match ios-swift/class.swift snapshot */ + +snapshots["formats all should match ios-swift/enum.swift snapshot"] = +` +// +// __output/ +// + +// Do not edit directly +// Generated on Sat, 01 Jan 2000 00:00:00 GMT + + +import UIKit + +public enum { + public static let color_red = #FF0000 /* comment */ +}`; +/* end snapshot formats all should match ios-swift/enum.swift snapshot */ + +snapshots["formats all should match ios-swift/any.swift snapshot"] = +` +// +// __output/ +// + +// Do not edit directly +// Generated on Sat, 01 Jan 2000 00:00:00 GMT + + +import UIKit + +public class { + public static let color_red = #FF0000 /* comment */ +}`; +/* end snapshot formats all should match ios-swift/any.swift snapshot */ + +snapshots["formats all should match json snapshot"] = +`{ + "color": { + "red": { + "value": "#FF0000", + "original": { + "value": "#FF0000" + }, + "name": "color_red", + "comment": "comment", + "attributes": { + "category": "color", + "type": "red" + }, + "path": [ + "color", + "red" + ] + } + } +} +`; +/* end snapshot formats all should match json snapshot */ + +snapshots["formats all should match json/asset snapshot"] = +`{}`; +/* end snapshot formats all should match json/asset snapshot */ + +snapshots["formats all should match json/nested snapshot"] = +`{ + "color": { + "red": "#FF0000" + } +} +`; +/* end snapshot formats all should match json/nested snapshot */ + +snapshots["formats all should match json/flat snapshot"] = +`{ + "color_red": "#FF0000" +} +`; +/* end snapshot formats all should match json/flat snapshot */ + +snapshots["formats all should match sketch/palette snapshot"] = +`{ + "compatibleVersion": "1.0", + "pluginVersion": "1.1", + "colors": [] +} +`; +/* end snapshot formats all should match sketch/palette snapshot */ + +snapshots["formats all should match sketch/palette/v2 snapshot"] = +`{ + "compatibleVersion": "2.0", + "pluginVersion": "2.2", + "colors": [ + { + "0": "#", + "1": "F", + "2": "F", + "3": "0", + "4": "0", + "5": "0", + "6": "0", + "name": "color_red" + } + ] +} +`; +/* end snapshot formats all should match sketch/palette/v2 snapshot */ + +snapshots["formats all should match flutter/class.dart snapshot"] = +` +// +// __output/ +// + +// Do not edit directly +// Generated on Sat, 01 Jan 2000 00:00:00 GMT + + + +import 'dart:ui'; + +class { + ._(); + + static const color_red = #FF0000; /* comment */ +}`; +/* end snapshot formats all should match flutter/class.dart snapshot */ + +snapshots["formats all should match css/fonts.css snapshot"] = +``; +/* end snapshot formats all should match css/fonts.css snapshot */ + diff --git a/__tests__/formats/__snapshots__/androidResources.test.js.snap b/__tests__/formats/__snapshots__/androidResources.test.js.snap deleted file mode 100644 index b172aa532..000000000 --- a/__tests__/formats/__snapshots__/androidResources.test.js.snap +++ /dev/null @@ -1,50 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`formats android/resources should match default snapshot 1`] = ` -" - - - - 12rem - 18rem - #ff0000 - #ffffff - - -" -`; - -exports[`formats android/resources with resourceMap override should match snapshot 1`] = ` -" - - - - #F2F3F4 - #000000 - - -" -`; - -exports[`formats android/resources with resourceType override should match snapshot 1`] = ` -" - - - - 12rem - 18rem - #ff0000 - #ffffff - - -" -`; diff --git a/__tests__/formats/__snapshots__/androidResources.test.snap.js b/__tests__/formats/__snapshots__/androidResources.test.snap.js new file mode 100644 index 000000000..d00b81e3c --- /dev/null +++ b/__tests__/formats/__snapshots__/androidResources.test.snap.js @@ -0,0 +1,49 @@ +/* @web/test-runner snapshot v1 */ +export const snapshots = {}; + +snapshots["formats android/resources should match default snapshot"] = +` + + + + 12rem + 18rem + #ff0000 + #ffffff + +`; +/* end snapshot formats android/resources should match default snapshot */ + +snapshots["formats android/resources with resourceType override should match snapshot"] = +` + + + + 12rem + 18rem + #ff0000 + #ffffff + +`; +/* end snapshot formats android/resources with resourceType override should match snapshot */ + +snapshots["formats android/resources with resourceMap override should match snapshot"] = +` + + + + #F2F3F4 + #000000 + +`; +/* end snapshot formats android/resources with resourceMap override should match snapshot */ + diff --git a/__tests__/formats/__snapshots__/es6Constants.test.snap.js b/__tests__/formats/__snapshots__/es6Constants.test.snap.js new file mode 100644 index 000000000..e0b5693f5 --- /dev/null +++ b/__tests__/formats/__snapshots__/es6Constants.test.snap.js @@ -0,0 +1,13 @@ +/* @web/test-runner snapshot v1 */ +export const snapshots = {}; + +snapshots["formats javascript/es6 should be a valid JS file and match snapshot"] = +`/** + * Do not edit directly + * Generated on Sat, 01 Jan 2000 00:00:00 GMT + */ + +export const red = "#EF5350"; +`; +/* end snapshot formats javascript/es6 should be a valid JS file and match snapshot */ + diff --git a/__tests__/formats/__snapshots__/javascriptModule.test.snap.js b/__tests__/formats/__snapshots__/javascriptModule.test.snap.js new file mode 100644 index 000000000..73f12280e --- /dev/null +++ b/__tests__/formats/__snapshots__/javascriptModule.test.snap.js @@ -0,0 +1,19 @@ +/* @web/test-runner snapshot v1 */ +export const snapshots = {}; + +snapshots["formats javascript/module should be a valid JS file and match snapshot"] = +`/** + * Do not edit directly + * Generated on Sat, 01 Jan 2000 00:00:00 GMT + */ + +module.exports = { + "color": { + "red": { + "value": "#FF0000" + } + } +}; +`; +/* end snapshot formats javascript/module should be a valid JS file and match snapshot */ + diff --git a/__tests__/formats/__snapshots__/javascriptModuleFlat.test.snap.js b/__tests__/formats/__snapshots__/javascriptModuleFlat.test.snap.js new file mode 100644 index 000000000..3340f1d0b --- /dev/null +++ b/__tests__/formats/__snapshots__/javascriptModuleFlat.test.snap.js @@ -0,0 +1,15 @@ +/* @web/test-runner snapshot v1 */ +export const snapshots = {}; + +snapshots["formats javascript/module-flat should be a valid JS file and match snapshot"] = +`/** + * Do not edit directly + * Generated on Sat, 01 Jan 2000 00:00:00 GMT + */ + +module.exports = { + "ColorRed": "#EF5350" +}; +`; +/* end snapshot formats javascript/module-flat should be a valid JS file and match snapshot */ + diff --git a/__tests__/formats/__snapshots__/javascriptObject.test.snap.js b/__tests__/formats/__snapshots__/javascriptObject.test.snap.js new file mode 100644 index 000000000..d78ad82da --- /dev/null +++ b/__tests__/formats/__snapshots__/javascriptObject.test.snap.js @@ -0,0 +1,19 @@ +/* @web/test-runner snapshot v1 */ +export const snapshots = {}; + +snapshots["formats javascript/object should be valid JS syntax and match snapshot"] = +`/** + * Do not edit directly + * Generated on Sat, 01 Jan 2000 00:00:00 GMT + */ + +var foo = { + "color": { + "red": { + "value": "#FF0000" + } + } +}; +`; +/* end snapshot formats javascript/object should be valid JS syntax and match snapshot */ + diff --git a/__tests__/formats/__snapshots__/javascriptUmd.test.snap.js b/__tests__/formats/__snapshots__/javascriptUmd.test.snap.js new file mode 100644 index 000000000..b9b139613 --- /dev/null +++ b/__tests__/formats/__snapshots__/javascriptUmd.test.snap.js @@ -0,0 +1,31 @@ +/* @web/test-runner snapshot v1 */ +export const snapshots = {}; + +snapshots["formats javascript/umd should be a valid JS file and match snapshot"] = +`/** + * Do not edit directly + * Generated on Sat, 01 Jan 2000 00:00:00 GMT + */ + +(function(root, factory) { + if (typeof module === "object" && module.exports) { + module.exports = factory(); + } else if (typeof exports === "object") { + exports["_styleDictionary"] = factory(); + } else if (typeof define === "function" && define.amd) { + define([], factory); + } else { + root["_styleDictionary"] = factory(); + } +}(this, function() { + return { + "color": { + "red": { + "value": "#FF0000" + } + } +}; +})) +`; +/* end snapshot formats javascript/umd should be a valid JS file and match snapshot */ + diff --git a/__tests__/formats/__snapshots__/json.test.snap.js b/__tests__/formats/__snapshots__/json.test.snap.js new file mode 100644 index 000000000..64e11b458 --- /dev/null +++ b/__tests__/formats/__snapshots__/json.test.snap.js @@ -0,0 +1,14 @@ +/* @web/test-runner snapshot v1 */ +export const snapshots = {}; + +snapshots["formats json should be a valid JSON file and match snapshot"] = +`{ + "color": { + "red": { + "value": "#FF0000" + } + } +} +`; +/* end snapshot formats json should be a valid JSON file and match snapshot */ + diff --git a/__tests__/formats/__snapshots__/jsonFlat.test.snap.js b/__tests__/formats/__snapshots__/jsonFlat.test.snap.js new file mode 100644 index 000000000..390899621 --- /dev/null +++ b/__tests__/formats/__snapshots__/jsonFlat.test.snap.js @@ -0,0 +1,10 @@ +/* @web/test-runner snapshot v1 */ +export const snapshots = {}; + +snapshots["formats json/flat should be a valid JSON file and match snapshot"] = +`{ + "color-base-red-400": "#EF5350" +} +`; +/* end snapshot formats json/flat should be a valid JSON file and match snapshot */ + diff --git a/__tests__/formats/__snapshots__/jsonNested.test.snap.js b/__tests__/formats/__snapshots__/jsonNested.test.snap.js new file mode 100644 index 000000000..e4a6762d4 --- /dev/null +++ b/__tests__/formats/__snapshots__/jsonNested.test.snap.js @@ -0,0 +1,25 @@ +/* @web/test-runner snapshot v1 */ +export const snapshots = {}; + +snapshots["formats json/nested should be a valid JSON file and match snapshot"] = +`{ + "color": { + "base": { + "comment": "This is a comment", + "metadata": [ + 1, + 2, + 3 + ], + "red": { + "primary": "#611D1C", + "secondary": { + "inverse": "#000000" + } + } + } + } +} +`; +/* end snapshot formats json/nested should be a valid JSON file and match snapshot */ + diff --git a/__tests__/formats/__snapshots__/lessIcons.test.snap.js b/__tests__/formats/__snapshots__/lessIcons.test.snap.js new file mode 100644 index 000000000..64438b2a3 --- /dev/null +++ b/__tests__/formats/__snapshots__/lessIcons.test.snap.js @@ -0,0 +1,19 @@ +/* @web/test-runner snapshot v1 */ +export const snapshots = {}; + +snapshots["formats less/icons should have a valid less syntax and match snapshot 1"] = +` +// Do not edit directly +// Generated on Sat, 01 Jan 2000 00:00:00 GMT + +@content-icon-email: '\\E001'; +.sd-icon.3d_rotation:before { content: @content-icon-email; }`; +/* end snapshot formats less/icons should have a valid less syntax and match snapshot 1 */ + +snapshots["formats less/icons should have a valid less syntax and match snapshot 2"] = +`.sd-icon.3d_rotation:before { + content: '\\E001'; +} +`; +/* end snapshot formats less/icons should have a valid less syntax and match snapshot 2 */ + diff --git a/__tests__/formats/__snapshots__/lessVariables.test.snap.js b/__tests__/formats/__snapshots__/lessVariables.test.snap.js new file mode 100644 index 000000000..7de711e6e --- /dev/null +++ b/__tests__/formats/__snapshots__/lessVariables.test.snap.js @@ -0,0 +1,17 @@ +/* @web/test-runner snapshot v1 */ +export const snapshots = {}; + + +snapshots["formats less/variables should have a valid less syntax and match snapshot 1"] = +` +// Do not edit directly +// Generated on Sat, 01 Jan 2000 00:00:00 GMT + +@color-base-red-400: #EF5350; +`; +/* end snapshot formats less/variables should have a valid less syntax and match snapshot 1 */ + +snapshots["formats less/variables should have a valid less syntax and match snapshot 2"] = +``; +/* end snapshot formats less/variables should have a valid less syntax and match snapshot 2 */ + diff --git a/__tests__/formats/__snapshots__/scssIcons.test.snap.js b/__tests__/formats/__snapshots__/scssIcons.test.snap.js new file mode 100644 index 000000000..58ec198e0 --- /dev/null +++ b/__tests__/formats/__snapshots__/scssIcons.test.snap.js @@ -0,0 +1,18 @@ +/* @web/test-runner snapshot v1 */ +export const snapshots = {}; + +snapshots["formats scss/icons should have a valid scss syntax and match snapshot 1"] = +` +// Do not edit directly +// Generated on Sat, 01 Jan 2000 00:00:00 GMT + +$content-icon-email: '\\E001'; +.sd-icon.three-d_rotation:before { content: $content-icon-email; }`; +/* end snapshot formats scss/icons should have a valid scss syntax and match snapshot 1 */ + +snapshots["formats scss/icons should have a valid scss syntax and match snapshot 2"] = +`.sd-icon.three-d_rotation:before { + content: "\\e001"; +}`; +/* end snapshot formats scss/icons should have a valid scss syntax and match snapshot 2 */ + diff --git a/__tests__/formats/__snapshots__/scssMaps.test.js.snap b/__tests__/formats/__snapshots__/scssMaps.test.js.snap deleted file mode 100644 index 8a24215f5..000000000 --- a/__tests__/formats/__snapshots__/scssMaps.test.js.snap +++ /dev/null @@ -1,54 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`formats scss/map-deep scss/map-deep snapshot 1`] = ` -" -/** - * Do not edit directly - * Generated on Sat, 01 Jan 2000 00:00:00 GMT - */ - -$size-font-small: 12rem !default; -$size-font-large: 18rem !default; -$color-base-red: #ff0000 !default; // comment -$color-white: #ffffff !default; -$asset-icon-book: \\"PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJmZWF0aGVyIGZlYXRoZXItYm9vayI+PHBhdGggZD0iTTQgMTkuNUEyLjUgMi41IDAgMCAxIDYuNSAxN0gyMCI+PC9wYXRoPjxwYXRoIGQ9Ik02LjUgMkgyMHYyMEg2LjVBMi41IDIuNSAwIDAgMSA0IDE5LjV2LTE1QTIuNSAyLjUgMCAwIDEgNi41IDJ6Ij48L3BhdGg+PC9zdmc+\\" !default; - -$tokens: ( - 'size': ( - 'font': ( - 'small': $size-font-small, - 'large': $size-font-large - ) - ), - 'color': ( - 'base': ( - 'red': $color-base-red - ), - 'white': $color-white - ), - 'asset': ( - 'icon': ( - 'book': $asset-icon-book - ) - ) -); -" -`; - -exports[`formats scss/map-flat scss/map-flat snapshot 1`] = ` -" -/** - * Do not edit directly - * Generated on Sat, 01 Jan 2000 00:00:00 GMT - */ - -$tokens: ( - 'size-font-small': 12rem, - 'size-font-large': 18rem, - // comment - 'color-base-red': #ff0000, - 'color-white': #ffffff, - 'asset-icon-book': \\"PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJmZWF0aGVyIGZlYXRoZXItYm9vayI+PHBhdGggZD0iTTQgMTkuNUEyLjUgMi41IDAgMCAxIDYuNSAxN0gyMCI+PC9wYXRoPjxwYXRoIGQ9Ik02LjUgMkgyMHYyMEg2LjVBMi41IDIuNSAwIDAgMSA0IDE5LjV2LTE1QTIuNSAyLjUgMCAwIDEgNi41IDJ6Ij48L3BhdGg+PC9zdmc+\\" -); -" -`; diff --git a/__tests__/formats/__snapshots__/scssMaps.test.snap.js b/__tests__/formats/__snapshots__/scssMaps.test.snap.js new file mode 100644 index 000000000..99db4774b --- /dev/null +++ b/__tests__/formats/__snapshots__/scssMaps.test.snap.js @@ -0,0 +1,55 @@ +/* @web/test-runner snapshot v1 */ +export const snapshots = {}; + +snapshots["formats scss/map-flat scss/map-flat snapshot"] = +` +/** + * Do not edit directly + * Generated on Sat, 01 Jan 2000 00:00:00 GMT + */ + +$tokens: ( + 'size-font-small': 12rem, + 'size-font-large': 18rem, + // comment + 'color-base-red': #ff0000, + 'color-white': #ffffff, + 'asset-icon-book': "PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJmZWF0aGVyIGZlYXRoZXItYm9vayI+PHBhdGggZD0iTTQgMTkuNUEyLjUgMi41IDAgMCAxIDYuNSAxN0gyMCI+PC9wYXRoPjxwYXRoIGQ9Ik02LjUgMkgyMHYyMEg2LjVBMi41IDIuNSAwIDAgMSA0IDE5LjV2LTE1QTIuNSAyLjUgMCAwIDEgNi41IDJ6Ij48L3BhdGg+PC9zdmc+" +);`; +/* end snapshot formats scss/map-flat scss/map-flat snapshot */ + +snapshots["formats scss/map-deep scss/map-deep snapshot"] = +` +/** + * Do not edit directly + * Generated on Sat, 01 Jan 2000 00:00:00 GMT + */ + +$size-font-small: 12rem !default; +$size-font-large: 18rem !default; +$color-base-red: #ff0000 !default; // comment +$color-white: #ffffff !default; +$asset-icon-book: "PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJmZWF0aGVyIGZlYXRoZXItYm9vayI+PHBhdGggZD0iTTQgMTkuNUEyLjUgMi41IDAgMCAxIDYuNSAxN0gyMCI+PC9wYXRoPjxwYXRoIGQ9Ik02LjUgMkgyMHYyMEg2LjVBMi41IDIuNSAwIDAgMSA0IDE5LjV2LTE1QTIuNSAyLjUgMCAwIDEgNi41IDJ6Ij48L3BhdGg+PC9zdmc+" !default; + +$tokens: ( + 'size': ( + 'font': ( + 'small': $size-font-small, + 'large': $size-font-large + ) + ), + 'color': ( + 'base': ( + 'red': $color-base-red + ), + 'white': $color-white + ), + 'asset': ( + 'icon': ( + 'book': $asset-icon-book + ) + ) +); +`; +/* end snapshot formats scss/map-deep scss/map-deep snapshot */ + diff --git a/__tests__/formats/__snapshots__/scssVariables.test.snap.js b/__tests__/formats/__snapshots__/scssVariables.test.snap.js new file mode 100644 index 000000000..4d3a38d99 --- /dev/null +++ b/__tests__/formats/__snapshots__/scssVariables.test.snap.js @@ -0,0 +1,16 @@ +/* @web/test-runner snapshot v1 */ +export const snapshots = {}; + +snapshots["formats scss/variables should have a valid scss syntax and match snapshot 1"] = +` +// Do not edit directly +// Generated on Sat, 01 Jan 2000 00:00:00 GMT + +$color-base-red-400: #EF5350; +`; +/* end snapshot formats scss/variables should have a valid scss syntax and match snapshot 1 */ + +snapshots["formats scss/variables should have a valid scss syntax and match snapshot 2"] = +``; +/* end snapshot formats scss/variables should have a valid scss syntax and match snapshot 2 */ + diff --git a/__tests__/formats/__snapshots__/stylusVariable.test.snap.js b/__tests__/formats/__snapshots__/stylusVariable.test.snap.js new file mode 100644 index 000000000..81630c8ff --- /dev/null +++ b/__tests__/formats/__snapshots__/stylusVariable.test.snap.js @@ -0,0 +1,12 @@ +/* @web/test-runner snapshot v1 */ +export const snapshots = {}; + +snapshots["formats stylus/variables should have a valid stylus syntax and match snapshot 1"] = +` +// Do not edit directly +// Generated on Sat, 01 Jan 2000 00:00:00 GMT + +$color-base-red-400= #EF5350; +`; +/* end snapshot formats stylus/variables should have a valid stylus syntax and match snapshot 1 */ + diff --git a/__tests__/formats/__snapshots__/swiftFile.test.js.snap b/__tests__/formats/__snapshots__/swiftFile.test.snap.js similarity index 54% rename from __tests__/formats/__snapshots__/swiftFile.test.js.snap rename to __tests__/formats/__snapshots__/swiftFile.test.snap.js index acee8fe60..240f8a84e 100644 --- a/__tests__/formats/__snapshots__/swiftFile.test.js.snap +++ b/__tests__/formats/__snapshots__/swiftFile.test.snap.js @@ -1,7 +1,8 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +/* @web/test-runner snapshot v1 */ +export const snapshots = {}; -exports[`formats ios-swift/any.swift should match default snapshot 1`] = ` -" +snapshots["formats ios-swift/any.swift should match default snapshot"] = +` // // __output/ // @@ -14,12 +15,11 @@ import UIKit public class StyleDictionary { public static let colorBaseRed = UIColor(red: 1.000, green: 0.000, blue: 0.000, alpha: 1) -} -" -`; +}`; +/* end snapshot formats ios-swift/any.swift should match default snapshot */ -exports[`formats ios-swift/any.swift with access control override should match snapshot 1`] = ` -" +snapshots["formats ios-swift/any.swift with import override should match snapshot"] = +` // // __output/ // @@ -29,15 +29,15 @@ exports[`formats ios-swift/any.swift with access control override should match s import UIKit +import AnotherModule -internal class StyleDictionary { - internal static let colorBaseRed = UIColor(red: 1.000, green: 0.000, blue: 0.000, alpha: 1) -} -" -`; +public class StyleDictionary { + public static let colorBaseRed = UIColor(red: 1.000, green: 0.000, blue: 0.000, alpha: 1) +}`; +/* end snapshot formats ios-swift/any.swift with import override should match snapshot */ -exports[`formats ios-swift/any.swift with import override should match snapshot 1`] = ` -" +snapshots["formats ios-swift/any.swift with objectType override should match snapshot"] = +` // // __output/ // @@ -47,16 +47,14 @@ exports[`formats ios-swift/any.swift with import override should match snapshot import UIKit -import AnotherModule -public class StyleDictionary { +public struct StyleDictionary { public static let colorBaseRed = UIColor(red: 1.000, green: 0.000, blue: 0.000, alpha: 1) -} -" -`; +}`; +/* end snapshot formats ios-swift/any.swift with objectType override should match snapshot */ -exports[`formats ios-swift/any.swift with objectType override should match snapshot 1`] = ` -" +snapshots["formats ios-swift/any.swift with access control override should match snapshot"] = +` // // __output/ // @@ -67,8 +65,8 @@ exports[`formats ios-swift/any.swift with objectType override should match snaps import UIKit -public struct StyleDictionary { - public static let colorBaseRed = UIColor(red: 1.000, green: 0.000, blue: 0.000, alpha: 1) -} -" -`; +internal class StyleDictionary { + internal static let colorBaseRed = UIColor(red: 1.000, green: 0.000, blue: 0.000, alpha: 1) +}`; +/* end snapshot formats ios-swift/any.swift with access control override should match snapshot */ + diff --git a/__tests__/formats/__snapshots__/typeScriptEs6Declarations.test.js.snap b/__tests__/formats/__snapshots__/typeScriptEs6Declarations.test.js.snap deleted file mode 100644 index 8d567211b..000000000 --- a/__tests__/formats/__snapshots__/typeScriptEs6Declarations.test.js.snap +++ /dev/null @@ -1,12 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`formats typescript/es6-declarations with outputStringLiterals should match snapshot 1`] = ` -"/** - * Do not edit directly - * Generated on Sat, 01 Jan 2000 00:00:00 GMT - */ - -/** Used for errors */ -export const colorRed : \\"#FF0000\\"; -" -`; diff --git a/__tests__/formats/__snapshots__/typeScriptEs6Declarations.test.snap.js b/__tests__/formats/__snapshots__/typeScriptEs6Declarations.test.snap.js new file mode 100644 index 000000000..cafe3cbf9 --- /dev/null +++ b/__tests__/formats/__snapshots__/typeScriptEs6Declarations.test.snap.js @@ -0,0 +1,14 @@ +/* @web/test-runner snapshot v1 */ +export const snapshots = {}; + +snapshots["formats typescript/es6-declarations with outputStringLiterals should match snapshot"] = +`/** + * Do not edit directly + * Generated on Sat, 01 Jan 2000 00:00:00 GMT + */ + +/** Used for errors */ +export const colorRed : "#FF0000"; +`; +/* end snapshot formats typescript/es6-declarations with outputStringLiterals should match snapshot */ + diff --git a/__tests__/formats/all.test.js b/__tests__/formats/all.test.js index a5b8f059d..429ecb64e 100644 --- a/__tests__/formats/all.test.js +++ b/__tests__/formats/all.test.js @@ -10,13 +10,12 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ +import { expect } from 'chai'; +import formats from '../../lib/common/formats.js'; +import createDictionary from '../../lib/utils/createDictionary.js'; +import createFormatArgs from '../../lib/utils/createFormatArgs.js'; -var formats = require('../../lib/common/formats'); -var createDictionary = require('../../lib/utils/createDictionary'); -var createFormatArgs = require('../../lib/utils/createFormatArgs'); -var _ = require('../../lib/utils/es6_'); - -var file = { +const file = { destination: '__output/', format: 'javascript/es6', filter: { @@ -26,7 +25,7 @@ var file = { }, }; -var properties = { +const tokens = { color: { red: { value: '#FF0000', @@ -46,10 +45,10 @@ var properties = { }; describe('formats', () => { - _.each(_.keys(formats), function (key) { - var formatter = formats[key].bind(file); - const dictionary = createDictionary({ properties }); - var output = formatter( + Object.keys(formats).forEach((key) => { + const formatter = formats[key].bind(file); + const dictionary = createDictionary({ tokens }); + const output = formatter( createFormatArgs({ dictionary, file, @@ -60,12 +59,12 @@ describe('formats', () => { ); describe('all', () => { - it('should match ' + key + ' snapshot', () => { - expect(output).toMatchSnapshot(); + it('should match ' + key + ' snapshot', async () => { + await expect(output).to.matchSnapshot(); }); it('should return ' + key + ' as a string', () => { - expect(typeof output).toBe('string'); + expect(typeof output).to.equal('string'); }); }); }); diff --git a/__tests__/formats/androidResources.test.js b/__tests__/formats/androidResources.test.js index 7f2247c0b..defcd10f0 100644 --- a/__tests__/formats/androidResources.test.js +++ b/__tests__/formats/androidResources.test.js @@ -10,12 +10,12 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ +import { expect } from 'chai'; +import formats from '../../lib/common/formats.js'; +import createDictionary from '../../lib/utils/createDictionary.js'; +import createFormatArgs from '../../lib/utils/createFormatArgs.js'; -const formats = require('../../lib/common/formats'); -const createDictionary = require('../../lib/utils/createDictionary'); -const createFormatArgs = require('../../lib/utils/createFormatArgs'); - -const properties = { +const tokens = { size: { font: { small: { @@ -79,7 +79,7 @@ const properties = { }, }; -const customProperties = { +const customTokens = { backgroundColor: { secondary: { name: 'backgroundColorSecondary', @@ -106,13 +106,13 @@ const file = { format: 'android/resources', }; -const dictionary = createDictionary({ properties }); -const customDictionary = createDictionary({ properties: customProperties }); +const dictionary = createDictionary({ tokens }); +const customDictionary = createDictionary({ tokens: customTokens }); describe('formats', () => { describe(`android/resources`, () => { - it('should match default snapshot', () => { - expect( + it('should match default snapshot', async () => { + await expect( format( createFormatArgs({ dictionary, @@ -122,12 +122,12 @@ describe('formats', () => { {}, file, ), - ).toMatchSnapshot(); + ).to.matchSnapshot(); }); - it('with resourceType override should match snapshot', () => { + it('with resourceType override should match snapshot', async () => { const file = { resourceType: 'dimen' }; - expect( + await expect( format( createFormatArgs({ dictionary, @@ -137,10 +137,10 @@ describe('formats', () => { {}, file, ), - ).toMatchSnapshot(); + ).to.matchSnapshot(); }); - it('with resourceMap override should match snapshot', () => { + it('with resourceMap override should match snapshot', async () => { const file = { resourceMap: { color: 'color', @@ -148,7 +148,7 @@ describe('formats', () => { backgroundColor: 'color', }, }; - expect( + await expect( format( createFormatArgs({ dictionary: customDictionary, @@ -158,7 +158,7 @@ describe('formats', () => { {}, file, ), - ).toMatchSnapshot(); + ).to.matchSnapshot(); }); }); }); diff --git a/__tests__/formats/es6Constants.test.js b/__tests__/formats/es6Constants.test.js index 00dbbe30c..a75630673 100644 --- a/__tests__/formats/es6Constants.test.js +++ b/__tests__/formats/es6Constants.test.js @@ -10,11 +10,10 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ -const fs = require('fs-extra'); -const helpers = require('../__helpers'); -const formats = require('../../lib/common/formats'); -const createDictionary = require('../../lib/utils/createDictionary'); -const createFormatArgs = require('../../lib/utils/createFormatArgs'); +import { expect } from 'chai'; +import formats from '../../lib/common/formats.js'; +import createDictionary from '../../lib/utils/createDictionary.js'; +import createFormatArgs from '../../lib/utils/createFormatArgs.js'; const file = { destination: '__output/', @@ -26,7 +25,7 @@ const file = { }, }; -const properties = { +const tokens = { color: { red: { name: 'red', @@ -45,23 +44,14 @@ const properties = { }, }; -const formatter = formats['javascript/es6'].bind(file); -const dictionary = createDictionary({ properties }); +const format = formats['javascript/es6']; +const dictionary = createDictionary({ tokens }); describe('formats', () => { describe('javascript/es6', () => { - beforeEach(() => { - helpers.clearOutput(); - }); - - afterEach(() => { - helpers.clearOutput(); - }); - - it('should be a valid JS file', () => { - fs.writeFileSync( - './__tests__/__output/output.js', - formatter( + it('should be a valid JS file and match snapshot', async () => { + await expect( + format( createFormatArgs({ dictionary, file, @@ -70,9 +60,7 @@ describe('formats', () => { {}, file, ), - ); - const test = require('../__output/output.js'); - expect(test.red).toEqual(dictionary.allProperties[0].value); + ).to.matchSnapshot(); }); }); }); diff --git a/__tests__/formats/javascriptModule.test.js b/__tests__/formats/javascriptModule.test.js index 91b243f2e..1b578c904 100644 --- a/__tests__/formats/javascriptModule.test.js +++ b/__tests__/formats/javascriptModule.test.js @@ -10,12 +10,10 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ - -const fs = require('fs-extra'); -const helpers = require('../__helpers'); -const formats = require('../../lib/common/formats'); -const createDictionary = require('../../lib/utils/createDictionary'); -const createFormatArgs = require('../../lib/utils/createFormatArgs'); +import { expect } from 'chai'; +import formats from '../../lib/common/formats.js'; +import createDictionary from '../../lib/utils/createDictionary.js'; +import createFormatArgs from '../../lib/utils/createFormatArgs.js'; const file = { destination: '__output/', @@ -27,29 +25,20 @@ const file = { }, }; -const properties = { +const tokens = { color: { red: { value: '#FF0000' }, }, }; -const formatter = formats['javascript/module'].bind(file); -const dictionary = createDictionary({ properties }); +const format = formats['javascript/module']; +const dictionary = createDictionary({ tokens }); describe('formats', () => { describe('javascript/module', () => { - beforeEach(() => { - helpers.clearOutput(); - }); - - afterEach(() => { - helpers.clearOutput(); - }); - - it('should be a valid JS file', () => { - fs.writeFileSync( - './__tests__/__output/output.js', - formatter( + it('should be a valid JS file and match snapshot', async () => { + await expect( + format( createFormatArgs({ dictionary, file, @@ -58,9 +47,7 @@ describe('formats', () => { {}, file, ), - ); - const test = require('../__output/output.js'); - expect(test.color.red.value).toEqual(dictionary.properties.color.red.value); + ).to.matchSnapshot(); }); }); }); diff --git a/__tests__/formats/javascriptModuleFlat.test.js b/__tests__/formats/javascriptModuleFlat.test.js index 687efcc90..42c1f42f0 100644 --- a/__tests__/formats/javascriptModuleFlat.test.js +++ b/__tests__/formats/javascriptModuleFlat.test.js @@ -10,18 +10,16 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ - -const fs = require('fs-extra'); -const helpers = require('../__helpers'); -const formats = require('../../lib/common/formats'); -const createDictionary = require('../../lib/utils/createDictionary'); -const createFormatArgs = require('../../lib/utils/createFormatArgs'); +import { expect } from 'chai'; +import formats from '../../lib/common/formats.js'; +import createDictionary from '../../lib/utils/createDictionary.js'; +import createFormatArgs from '../../lib/utils/createFormatArgs.js'; const file = { destination: '__output/', format: 'javascript/module-flat', }; -const properties = { +const tokens = { color: { red: { value: '#EF5350', @@ -38,34 +36,23 @@ const properties = { }, }; -const formatter = formats['javascript/module-flat'].bind(file); -const dictionary = createDictionary({ properties }); +const format = formats['javascript/module-flat']; +const dictionary = createDictionary({ tokens }); describe('formats', () => { describe('javascript/module-flat', () => { - beforeEach(() => { - helpers.clearOutput(); - }); - - afterEach(() => { - helpers.clearOutput(); - }); - - it('should be a valid JS file', () => { - fs.writeFileSync( - './__tests__/__output/output.js', - formatter( + it('should be a valid JS file and match snapshot', async () => { + await expect( + format( createFormatArgs({ dictionary, - file: {}, + file, platform: {}, }), {}, - {}, + file, ), - ); - const test = require('../__output/output.js'); - expect(test.ColorRed).toEqual(dictionary.allProperties[0].value); + ).to.matchSnapshot(); }); }); }); diff --git a/__tests__/formats/javascriptObject.test.js b/__tests__/formats/javascriptObject.test.js index f6f27d483..2d65aa937 100644 --- a/__tests__/formats/javascriptObject.test.js +++ b/__tests__/formats/javascriptObject.test.js @@ -10,11 +10,10 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ - -const formats = require('../../lib/common/formats'); -const vm = require('vm'); -const createDictionary = require('../../lib/utils/createDictionary'); -const createFormatArgs = require('../../lib/utils/createFormatArgs'); +import { expect } from 'chai'; +import formats from '../../lib/common/formats.js'; +import createDictionary from '../../lib/utils/createDictionary.js'; +import createFormatArgs from '../../lib/utils/createFormatArgs.js'; const file = { destination: '__output/', @@ -22,20 +21,20 @@ const file = { name: 'foo', }; -const properties = { +const tokens = { color: { red: { value: '#FF0000' }, }, }; -const formatter = formats['javascript/object'].bind(file); -const dictionary = createDictionary({ properties }); +const format = formats['javascript/object']; +const dictionary = createDictionary({ tokens }); describe('formats', () => { describe('javascript/object', () => { - it('should be valid JS syntax', () => { - const script = new vm.Script( - formatter( + it('should be valid JS syntax and match snapshot', async () => { + await expect( + format( createFormatArgs({ dictionary, file, @@ -44,10 +43,7 @@ describe('formats', () => { {}, file, ), - ); - const context = {}; - script.runInNewContext(context); - expect(context.foo.color.red.value).toEqual(dictionary.properties.color.red.value); + ).to.matchSnapshot(); }); }); }); diff --git a/__tests__/formats/javascriptUmd.test.js b/__tests__/formats/javascriptUmd.test.js index 55dd2a152..a3c262a34 100644 --- a/__tests__/formats/javascriptUmd.test.js +++ b/__tests__/formats/javascriptUmd.test.js @@ -10,12 +10,10 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ - -const formats = require('../../lib/common/formats'); -const fs = require('fs-extra'); -const helpers = require('../__helpers'); -const createDictionary = require('../../lib/utils/createDictionary'); -const createFormatArgs = require('../../lib/utils/createFormatArgs'); +import { expect } from 'chai'; +import formats from '../../lib/common/formats.js'; +import createDictionary from '../../lib/utils/createDictionary.js'; +import createFormatArgs from '../../lib/utils/createFormatArgs.js'; const file = { destination: '__output/', @@ -27,29 +25,20 @@ const file = { }, }; -const properties = { +const tokens = { color: { red: { value: '#FF0000' }, }, }; -const formatter = formats['javascript/umd'].bind(file); -const dictionary = createDictionary({ properties }); +const format = formats['javascript/umd']; +const dictionary = createDictionary({ tokens }); describe('formats', () => { describe('javascript/umd', () => { - beforeEach(() => { - helpers.clearOutput(); - }); - - afterEach(() => { - helpers.clearOutput(); - }); - - it('should be a valid JS file', () => { - fs.writeFileSync( - './__tests__/__output/umd.js', - formatter( + it('should be a valid JS file and match snapshot', async () => { + await expect( + format( createFormatArgs({ dictionary, file, @@ -58,9 +47,7 @@ describe('formats', () => { {}, file, ), - ); - const test = require('../__output/umd.js'); - expect(test.color.red.value).toEqual(dictionary.properties.color.red.value); + ).to.matchSnapshot(); }); }); }); diff --git a/__tests__/formats/json.test.js b/__tests__/formats/json.test.js index e59230bbf..83e12f918 100644 --- a/__tests__/formats/json.test.js +++ b/__tests__/formats/json.test.js @@ -10,41 +10,30 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ - -const formats = require('../../lib/common/formats'); -const fs = require('fs-extra'); -const helpers = require('../__helpers'); -const createDictionary = require('../../lib/utils/createDictionary'); -const createFormatArgs = require('../../lib/utils/createFormatArgs'); +import { expect } from 'chai'; +import formats from '../../lib/common/formats.js'; +import createDictionary from '../../lib/utils/createDictionary.js'; +import createFormatArgs from '../../lib/utils/createFormatArgs.js'; const file = { destination: '__output/', format: 'json', }; -const properties = { +const tokens = { color: { red: { value: '#FF0000' }, }, }; -const formatter = formats['json'].bind(file); -const dictionary = createDictionary({ properties }); +const format = formats['json']; +const dictionary = createDictionary({ tokens }); describe('formats', () => { describe('json', () => { - beforeEach(() => { - helpers.clearOutput(); - }); - - afterEach(() => { - helpers.clearOutput(); - }); - - it('should be a valid JSON file', () => { - fs.writeFileSync( - './__tests__/__output/output.json', - formatter( + it('should be a valid JSON file and match snapshot', async () => { + await expect( + format( createFormatArgs({ dictionary, file, @@ -53,9 +42,7 @@ describe('formats', () => { {}, file, ), - ); - const test = require('../__output/output.json'); - expect(test.color.red.value).toEqual(dictionary.properties.color.red.value); + ).to.matchSnapshot(); }); }); }); diff --git a/__tests__/formats/jsonFlat.test.js b/__tests__/formats/jsonFlat.test.js index 01db5f647..9fcb682c6 100644 --- a/__tests__/formats/jsonFlat.test.js +++ b/__tests__/formats/jsonFlat.test.js @@ -10,34 +10,23 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ - -const formats = require('../../lib/common/formats'); -const fs = require('fs-extra'); -const helpers = require('../__helpers'); -const { colorDictionary } = require('./__constants'); -const createFormatArgs = require('../../lib/utils/createFormatArgs'); +import { expect } from 'chai'; +import formats from '../../lib/common/formats.js'; +import { colorDictionary } from './__constants.js'; +import createFormatArgs from '../../lib/utils/createFormatArgs.js'; const file = { destination: '__output/', format: 'json/flat', }; -const formatter = formats['json/flat'].bind(file); +const format = formats['json/flat']; describe('formats', () => { describe('json/flat', () => { - beforeEach(() => { - helpers.clearOutput(); - }); - - afterEach(() => { - helpers.clearOutput(); - }); - - it('should be a valid JSON file', () => { - fs.writeFileSync( - './__tests__/__output/output.flat.json', - formatter( + it('should be a valid JSON file and match snapshot', async () => { + await expect( + format( createFormatArgs({ dictionary: colorDictionary, file, @@ -46,9 +35,7 @@ describe('formats', () => { {}, file, ), - ); - const test = require('../__output/output.flat.json'); - expect(test['color-base-red-400']).toEqual(colorDictionary.allProperties[0].value); + ).to.matchSnapshot(); }); }); }); diff --git a/__tests__/formats/jsonNested.test.js b/__tests__/formats/jsonNested.test.js index ecc96b7aa..105828529 100644 --- a/__tests__/formats/jsonNested.test.js +++ b/__tests__/formats/jsonNested.test.js @@ -10,19 +10,17 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ - -const formats = require('../../lib/common/formats'); -const fs = require('fs-extra'); -const helpers = require('../__helpers'); -const createDictionary = require('../../lib/utils/createDictionary'); -const createFormatArgs = require('../../lib/utils/createFormatArgs'); +import { expect } from 'chai'; +import formats from '../../lib/common/formats.js'; +import createDictionary from '../../lib/utils/createDictionary.js'; +import createFormatArgs from '../../lib/utils/createFormatArgs.js'; const file = { destination: 'output/', format: 'json/nested', }; -const properties = { +const tokens = { color: { base: { comment: 'This is a comment', @@ -37,48 +35,14 @@ const properties = { }, }; -const formatter = formats['json/nested'].bind(file); -const dictionary = createDictionary({ properties }); +const format = formats['json/nested']; +const dictionary = createDictionary({ tokens }); describe('formats', function () { describe('json/nested', function () { - beforeEach(() => { - helpers.clearOutput(); - }); - - afterEach(() => { - helpers.clearOutput(); - }); - - it('should be a valid JSON file', function () { - fs.writeFileSync( - './__tests__/__output/json-nested.json', - formatter( - createFormatArgs({ - dictionary, - file, - platform: {}, - }), - {}, - file, - ), - ); - const test = require('../__output/json-nested.json'); - expect(test.color.base.red.primary).toEqual( - dictionary.properties.color.base.red.primary.value, - ); - expect(test.color.base.red.secondary.inverse).toEqual( - dictionary.properties.color.base.red.secondary.inverse.value, - ); - }); - - it('should handle non-token data', function () { - // non-token data is anything in the dictionary object that is not a token object - // i.e. anything in the rest of the object that doesn't have a 'value' - - fs.writeFileSync( - './__tests__/__output/json-nested.json', - formatter( + it('should be a valid JSON file and match snapshot', async () => { + await expect( + format( createFormatArgs({ dictionary, file, @@ -87,10 +51,7 @@ describe('formats', function () { {}, file, ), - ); - const test = require('../__output/json-nested.json'); - expect(test.color.base.comment).toEqual(dictionary.properties.color.base.comment); - expect(test.color.base.metadata).toEqual(dictionary.properties.color.base.metadata); + ).to.matchSnapshot(); }); }); }); diff --git a/__tests__/formats/lessIcons.test.js b/__tests__/formats/lessIcons.test.js index f974c8567..38e54241b 100644 --- a/__tests__/formats/lessIcons.test.js +++ b/__tests__/formats/lessIcons.test.js @@ -10,11 +10,10 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ - -const formats = require('../../lib/common/formats'); -const less = require('less'); -const createDictionary = require('../../lib/utils/createDictionary'); -const createFormatArgs = require('../../lib/utils/createFormatArgs'); +import { expect } from 'chai'; +import formats from '../../lib/common/formats.js'; +import createDictionary from '../../lib/utils/createDictionary.js'; +import createFormatArgs from '../../lib/utils/createFormatArgs.js'; const file = { destination: '__output/', @@ -26,7 +25,7 @@ const propertyName = 'content-icon-email'; const propertyValue = "'\\E001'"; const itemClass = '3d_rotation'; -const properties = { +const tokens = { content: { icon: { email: { @@ -48,28 +47,38 @@ const properties = { const platform = { prefix: 'sd', // Style-Dictionary Prefix + // FIXME: check why createFormatArgs requires this prefix to be wrapped inside + // an options object for it to be properly set as option? + options: { + prefix: 'sd', + }, }; -const formatter = formats['less/icons'].bind(file); -const dictionary = createDictionary({ properties }); +const format = formats['less/icons']; +const dictionary = createDictionary({ tokens }); describe('formats', () => { describe('less/icons', () => { - it('should have a valid less syntax', () => { - expect.assertions(1); - return expect( - less.render( - formatter( - createFormatArgs({ - dictionary, - file, - platform, - }), - platform, - file, - ), - ), - ).resolves.toBeDefined(); + it('should have a valid less syntax and match snapshot', async () => { + const result = format( + createFormatArgs({ + dictionary, + file, + platform, + }), + ); + + let _less; + if (typeof window === 'object') { + await import('less/dist/less.js'); + // eslint-disable-next-line no-undef + _less = less; + } else { + _less = (await import('less')).default; + } + const lessResult = await _less.render(result); + await expect(result).to.matchSnapshot(1); + await expect(lessResult.css).to.matchSnapshot(2); }); }); }); diff --git a/__tests__/formats/lessVariables.test.js b/__tests__/formats/lessVariables.test.js index 4d3881b9e..492241e78 100644 --- a/__tests__/formats/lessVariables.test.js +++ b/__tests__/formats/lessVariables.test.js @@ -10,13 +10,12 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ +import { expect } from 'chai'; +import formats from '../../lib/common/formats.js'; +import createDictionary from '../../lib/utils/createDictionary.js'; +import createFormatArgs from '../../lib/utils/createFormatArgs.js'; -var formats = require('../../lib/common/formats'); -var less = require('less'); -const createDictionary = require('../../lib/utils/createDictionary'); -const createFormatArgs = require('../../lib/utils/createFormatArgs'); - -var file = { +const file = { destination: '__output/', format: 'less/variables', name: 'foo', @@ -25,7 +24,7 @@ var file = { const propertyName = 'color-base-red-400'; const propertyValue = '#EF5350'; -const properties = { +const tokens = { color: { base: { red: { @@ -48,26 +47,32 @@ const properties = { }, }; -const formatter = formats['less/variables'].bind(file); -const dictionary = createDictionary({ properties }); +const format = formats['less/variables']; +const dictionary = createDictionary({ tokens }); describe('formats', () => { describe('less/variables', () => { - it('should have a valid less syntax', () => { - expect.assertions(1); - return expect( - less.render( - formatter( - createFormatArgs({ - dictionary, - file, - platform: {}, - }), - {}, - file, - ), - ), - ).resolves.toBeDefined(); + it('should have a valid less syntax and match snapshot', async () => { + const result = format( + createFormatArgs({ + dictionary, + file, + platform: {}, + }), + {}, + file, + ); + let _less; + if (typeof window === 'object') { + await import('less/dist/less.js'); + // eslint-disable-next-line no-undef + _less = less; + } else { + _less = (await import('less')).default; + } + const lessResult = await _less.render(result); + await expect(result).to.matchSnapshot(1); + await expect(lessResult.css).to.matchSnapshot(2); }); }); }); diff --git a/__tests__/formats/scssIcons.test.js b/__tests__/formats/scssIcons.test.js index 695874920..ecb8272d1 100644 --- a/__tests__/formats/scssIcons.test.js +++ b/__tests__/formats/scssIcons.test.js @@ -10,11 +10,11 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ - -const formats = require('../../lib/common/formats'); -const scss = require('node-sass'); -const createDictionary = require('../../lib/utils/createDictionary'); -const createFormatArgs = require('../../lib/utils/createFormatArgs'); +import { expect } from 'chai'; +import { compileString } from 'sass'; +import formats from '../../lib/common/formats.js'; +import createDictionary from '../../lib/utils/createDictionary.js'; +import createFormatArgs from '../../lib/utils/createFormatArgs.js'; const file = { destination: '__output/', @@ -24,9 +24,9 @@ const file = { const propertyName = 'content-icon-email'; const propertyValue = "'\\E001'"; -const itemClass = '3d_rotation'; +const itemClass = 'three-d_rotation'; -const properties = { +const tokens = { content: { icon: { email: { @@ -48,26 +48,31 @@ const properties = { const platform = { prefix: 'sd', // Style-Dictionary Prefix + // FIXME: check why createFormatArgs requires this prefix to be wrapped inside + // an options object for it to be properly set as option? + options: { + prefix: 'sd', + }, }; -const formatter = formats['scss/icons'].bind(file); -const dictionary = createDictionary({ properties }); +const format = formats['scss/icons']; +const dictionary = createDictionary({ tokens }); describe('formats', () => { describe('scss/icons', () => { - it('should have a valid scss syntax', () => { - const result = scss.renderSync({ - data: formatter( - createFormatArgs({ - dictionary, - file, - platform, - }), - platform, + it('should have a valid scss syntax and match snapshot', async () => { + const result = format( + createFormatArgs({ + dictionary, file, - ), - }); - expect(result.css).toBeDefined(); + platform, + }), + platform, + file, + ); + const scssResult = compileString(result); + await expect(result).to.matchSnapshot(1); + await expect(scssResult.css).to.matchSnapshot(2); }); }); }); diff --git a/__tests__/formats/scssMaps.test.js b/__tests__/formats/scssMaps.test.js index d2f2fd951..4ccc16688 100644 --- a/__tests__/formats/scssMaps.test.js +++ b/__tests__/formats/scssMaps.test.js @@ -10,14 +10,13 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ +import { expect } from 'chai'; +import { compileString } from 'sass'; +import formats from '../../lib/common/formats.js'; +import createDictionary from '../../lib/utils/createDictionary.js'; +import createFormatArgs from '../../lib/utils/createFormatArgs.js'; -var formats = require('../../lib/common/formats'); -var scss = require('node-sass'); -var _ = require('../../lib/utils/es6_'); -var createDictionary = require('../../lib/utils/createDictionary'); -var createFormatArgs = require('../../lib/utils/createFormatArgs'); - -var properties = { +const tokens = { size: { font: { small: { @@ -85,7 +84,7 @@ var properties = { value: 'PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJmZWF0aGVyIGZlYXRoZXItYm9vayI+PHBhdGggZD0iTTQgMTkuNUEyLjUgMi41IDAgMCAxIDYuNSAxN0gyMCI+PC9wYXRoPjxwYXRoIGQ9Ik02LjUgMkgyMHYyMEg2LjVBMi41IDIuNSAwIDAgMSA0IDE5LjV2LTE1QTIuNSAyLjUgMCAwIDEgNi41IDJ6Ij48L3BhdGg+PC9zdmc+', original: { - value: './test/__assets/icons/book.svg', + value: '__tests__/__assets/icons/book.svg', }, name: 'asset-icon-book', attributes: { @@ -100,16 +99,16 @@ var properties = { }; describe('formats', () => { - _.each(['scss/map-flat', 'scss/map-deep'], function (key) { + ['scss/map-flat', 'scss/map-deep'].forEach((key) => { describe(key, () => { - var file = { + const file = { destination: '__output/', format: key, }; - var formatter = formats[key].bind(file); - const dictionary = createDictionary({ properties }); - var output = formatter( + const formatter = formats[key].bind(file); + const dictionary = createDictionary({ tokens }); + const output = formatter( createFormatArgs({ dictionary, file, @@ -120,18 +119,16 @@ describe('formats', () => { ); it('should return ' + key + ' as a string', () => { - expect(typeof output).toBe('string'); + expect(typeof output).to.equal('string'); }); it('should have a valid scss syntax', () => { - const result = scss.renderSync({ - data: output, - }); - expect(result.css).toBeDefined(); + const result = compileString(output); + expect(result.css).to.not.be.undefined; }); - it(key + ' snapshot', () => { - expect(output).toMatchSnapshot(); + it(key + ' snapshot', async () => { + await expect(output).to.matchSnapshot(); }); }); }); diff --git a/__tests__/formats/scssVariables.test.js b/__tests__/formats/scssVariables.test.js index b1bf203e8..ba2ae57ef 100644 --- a/__tests__/formats/scssVariables.test.js +++ b/__tests__/formats/scssVariables.test.js @@ -10,14 +10,13 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ +import { expect } from 'chai'; +import { compileString } from 'sass'; +import formats from '../../lib/common/formats.js'; +import createDictionary from '../../lib/utils/createDictionary.js'; +import createFormatArgs from '../../lib/utils/createFormatArgs.js'; -var formats = require('../../lib/common/formats'); -var scss = require('node-sass'); -const createDictionary = require('../../lib/utils/createDictionary'); -const createFormatArgs = require('../../lib/utils/createFormatArgs'); -var _ = require('../../lib/utils/es6_'); - -var file = { +const file = { destination: '__output/', format: 'scss/variables', name: 'foo', @@ -26,7 +25,7 @@ var file = { const propertyName = 'color-base-red-400'; const propertyValue = '#EF5350'; -const properties = { +const tokens = { color: { base: { red: { @@ -49,43 +48,42 @@ const properties = { }, }; -var formatter = formats['scss/variables'].bind(file); -const dictionary = createDictionary({ properties }); +const format = formats['scss/variables']; +const dictionary = createDictionary({ tokens }); describe('formats', () => { describe('scss/variables', () => { - it('should have a valid scss syntax', () => { - const result = scss.renderSync({ - data: formatter( - createFormatArgs({ - dictionary, - file, - platform: {}, - }), - {}, + it('should have a valid scss syntax and match snapshot', async () => { + const result = format( + createFormatArgs({ + dictionary, file, - ), - }); - expect(result.css).toBeDefined(); + platform: {}, + }), + {}, + file, + ); + const scssResult = compileString(result); + await expect(result).to.matchSnapshot(1); + await expect(scssResult.css).to.matchSnapshot(2); }); - it('should optionally use !default', () => { - var themeableDictionary = _.cloneDeep(dictionary), - formattedScss = formatter( - createFormatArgs({ - dictionary, - file, - platform: {}, - }), - {}, + it('should optionally use !default', async () => { + const themeableDictionary = { ...dictionary }; + const formattedScss = format( + createFormatArgs({ + dictionary, file, - ), - themeableScss = ''; + platform: {}, + }), + {}, + file, + ); - expect(formattedScss).not.toMatch('!default'); + expect(formattedScss).not.to.match(new RegExp('!default;')); themeableDictionary.allTokens[0].themeable = true; - themeableScss = formatter( + const themeableScss = format( createFormatArgs({ dictionary: themeableDictionary, file, @@ -95,7 +93,7 @@ describe('formats', () => { file, ); - expect(themeableScss).toMatch('#EF5350 !default;'); + expect(themeableScss).to.match(new RegExp('#EF5350 !default;')); }); }); }); diff --git a/__tests__/formats/stylusVariable.test.js b/__tests__/formats/stylusVariable.test.js index f08eab6c3..0cdf5448e 100644 --- a/__tests__/formats/stylusVariable.test.js +++ b/__tests__/formats/stylusVariable.test.js @@ -10,13 +10,13 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ +import { expect } from 'chai'; +// import stylus from 'stylus'; see comment in test below +import formats from '../../lib/common/formats.js'; +import createDictionary from '../../lib/utils/createDictionary.js'; +import createFormatArgs from '../../lib/utils/createFormatArgs.js'; -var formats = require('../../lib/common/formats'); -var stylus = require('stylus'); -const createDictionary = require('../../lib/utils/createDictionary'); -const createFormatArgs = require('../../lib/utils/createFormatArgs'); - -var file = { +const file = { destination: '__output/', format: 'stylus/variables', name: 'foo', @@ -25,7 +25,7 @@ var file = { const propertyName = 'color-base-red-400'; const propertyValue = '#EF5350'; -const properties = { +const tokens = { color: { base: { red: { @@ -48,23 +48,27 @@ const properties = { }, }; -const formatter = formats['stylus/variables'].bind(file); -const dictionary = createDictionary({ properties }); +const format = formats['stylus/variables']; +const dictionary = createDictionary({ tokens }); describe('formats', () => { describe('stylus/variables', () => { - it('should have a valid stylus syntax', () => { - const stylusArguments = createFormatArgs({ - dictionary, + it('should have a valid stylus syntax and match snapshot', async () => { + const result = format( + createFormatArgs({ + dictionary, + file, + platform: {}, + }), + {}, file, - platform: {}, - }); - stylus.render(formatter(stylusArguments, {}, file), function (err, css) { - if (err) { - throw new Error(err); - } - expect(css).toBeDefined(); - }); + ); + expect(result).to.matchSnapshot(1); + + // Unfortunately, stylus has not followed less and scss in exposing + // a browser compatible version of the package to run client-side. + // const stylusResult = stylus.render(result); + // expect(stylusResult).to.matchSnapshot(2); }); }); }); diff --git a/__tests__/formats/swiftFile.test.js b/__tests__/formats/swiftFile.test.js index 7effa6b9b..a07f0d63b 100644 --- a/__tests__/formats/swiftFile.test.js +++ b/__tests__/formats/swiftFile.test.js @@ -10,10 +10,10 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ -const formats = require('../../lib/common/formats'); -const createDictionary = require('../../lib/utils/createDictionary'); -const createFormatArgs = require('../../lib/utils/createFormatArgs'); -const _ = require('../../lib/utils/es6_'); +import { expect } from 'chai'; +import formats from '../../lib/common/formats.js'; +import createDictionary from '../../lib/utils/createDictionary.js'; +import createFormatArgs from '../../lib/utils/createFormatArgs.js'; const originalFile = { destination: '__output/', @@ -27,9 +27,9 @@ const originalFile = { options: {}, }; -var file = {}; +let file = {}; -const properties = { +const tokens = { color: { base: { red: { @@ -45,16 +45,16 @@ const properties = { }; const format = formats['ios-swift/any.swift']; -const dictionary = createDictionary({ properties }); +const dictionary = createDictionary({ tokens }); describe('formats', () => { describe('ios-swift/any.swift', () => { beforeEach(() => { - file = _.cloneDeep(originalFile); + file = structuredClone(originalFile); }); - it('should match default snapshot', () => { - expect( + it('should match default snapshot', async () => { + await expect( format( createFormatArgs({ dictionary, @@ -64,12 +64,12 @@ describe('formats', () => { {}, file, ), - ).toMatchSnapshot(); + ).to.matchSnapshot(); }); - it('with import override should match snapshot', () => { + it('with import override should match snapshot', async () => { file.options.import = ['UIKit', 'AnotherModule']; - expect( + await expect( format( createFormatArgs({ dictionary, @@ -79,12 +79,12 @@ describe('formats', () => { {}, file, ), - ).toMatchSnapshot(); + ).to.matchSnapshot(); }); - it('with objectType override should match snapshot', () => { + it('with objectType override should match snapshot', async () => { file.options.objectType = 'struct'; - expect( + await expect( format( createFormatArgs({ dictionary, @@ -94,12 +94,12 @@ describe('formats', () => { {}, file, ), - ).toMatchSnapshot(); + ).to.matchSnapshot(); }); - it('with access control override should match snapshot', () => { + it('with access control override should match snapshot', async () => { file.options.accessControl = 'internal'; - expect( + await expect( format( createFormatArgs({ dictionary, @@ -109,7 +109,7 @@ describe('formats', () => { {}, file, ), - ).toMatchSnapshot(); + ).to.matchSnapshot(); }); }); }); diff --git a/__tests__/formats/typeScriptEs6Declarations.test.js b/__tests__/formats/typeScriptEs6Declarations.test.js index 16a073bda..cd9bd4a60 100644 --- a/__tests__/formats/typeScriptEs6Declarations.test.js +++ b/__tests__/formats/typeScriptEs6Declarations.test.js @@ -10,16 +10,17 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ -const formats = require('../../lib/common/formats'); -const createDictionary = require('../../lib/utils/createDictionary'); -const createFormatArgs = require('../../lib/utils/createFormatArgs'); +import { expect } from 'chai'; +import formats from '../../lib/common/formats.js'; +import createDictionary from '../../lib/utils/createDictionary.js'; +import createFormatArgs from '../../lib/utils/createFormatArgs.js'; const file = { destination: '__output/', format: 'typescript/es6-declarations', }; -const properties = { +const tokens = { color: { red: { comment: 'Used for errors', @@ -29,13 +30,13 @@ const properties = { }, }; -const formatter = formats['typescript/es6-declarations'].bind(file); +const format = formats['typescript/es6-declarations']; describe('formats', () => { describe('typescript/es6-declarations', () => { it('should be a valid TS file', () => { - const dictionary = createDictionary({ properties }); - const output = formatter( + const dictionary = createDictionary({ tokens }); + const output = format( createFormatArgs({ dictionary, file, @@ -48,19 +49,20 @@ describe('formats', () => { // assert that any lines have a string type definition lines.forEach((l) => { - expect(l.match(/^export.* : string;$/g).length).toEqual(1); + expect(l.match(/^export.* : string;$/g).length).to.equal(1); }); }); - it('with outputStringLiterals should match snapshot', () => { - const customFile = Object.assign({}, file, { + it('with outputStringLiterals should match snapshot', async () => { + const customFile = { + ...file, options: { outputStringLiterals: true, }, - }); + }; - const dictionary = createDictionary({ properties }); - const output = formatter( + const dictionary = createDictionary({ tokens }); + const output = format( createFormatArgs({ dictionary, file: customFile, @@ -68,7 +70,7 @@ describe('formats', () => { }), ); - expect(output).toMatchSnapshot(); + await expect(output).to.matchSnapshot(); }); }); }); diff --git a/__tests__/formats/typeScriptModuleDeclarations.test.js b/__tests__/formats/typeScriptModuleDeclarations.test.js index 95271b1a6..e065a2caf 100644 --- a/__tests__/formats/typeScriptModuleDeclarations.test.js +++ b/__tests__/formats/typeScriptModuleDeclarations.test.js @@ -10,9 +10,10 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ -const formats = require('../../lib/common/formats'); -const createDictionary = require('../../lib/utils/createDictionary'); -const createFormatArgs = require('../../lib/utils/createFormatArgs'); +import { expect } from 'chai'; +import formats from '../../lib/common/formats.js'; +import createDictionary from '../../lib/utils/createDictionary.js'; +import createFormatArgs from '../../lib/utils/createFormatArgs.js'; const file = { destination: '__output/', @@ -24,19 +25,19 @@ const file = { }, }; -const properties = { +const tokens = { color: { red: { value: '#FF0000' }, }, }; -var formatter = formats['typescript/module-declarations'].bind(file); +const format = formats['typescript/module-declarations'].bind(file); describe('formats', () => { describe('typescript/module-declarations', () => { it('should be a valid TS file', () => { - const dictionary = createDictionary({ properties }); - const output = formatter( + const dictionary = createDictionary({ tokens }); + const output = format( createFormatArgs({ dictionary, file, @@ -51,7 +52,7 @@ describe('formats', () => { // assert that any lines have a DesignToken type definition lines.forEach((l) => { - expect(l.match(/^.*: DesignToken$/g).length).toEqual(1); + expect(l.match(/^.*: DesignToken$/g).length).to.equal(1); }); }); }); diff --git a/__tests__/performAction.test.js b/__tests__/performAction.test.js index 5e5d69b2f..4049544c2 100644 --- a/__tests__/performAction.test.js +++ b/__tests__/performAction.test.js @@ -10,41 +10,44 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ +import { expect } from 'chai'; +import { fs } from 'style-dictionary/fs'; +import StyleDictionary from 'style-dictionary'; +import { clearOutput, fileExists } from './__helpers.js'; -var StyleDictionary = require('../index'); -var StyleDictionaryExtended = StyleDictionary.extend({ +const StyleDictionaryExtended = new StyleDictionary({ platforms: { android: { actions: ['test'], }, }, }); -var helpers = require('./__helpers'); -var fs = require('fs-extra'); +await StyleDictionaryExtended.hasInitialized; StyleDictionaryExtended.registerAction({ name: 'test', do: function () { - fs.writeFileSync('./__tests__/__output/action.txt', 'hi'); + fs.mkdirSync('__tests__/__output', { recursive: true }); + fs.writeFileSync('__tests__/__output/action.txt', 'hi', 'utf-8'); }, undo: function () { - fs.removeSync('./__tests__/__output/action.txt'); + fs.unlinkSync('__tests__/__output/action.txt'); }, }); describe('performAction', () => { beforeEach(() => { - helpers.clearOutput(); + clearOutput(); }); afterEach(() => { - helpers.clearOutput(); + clearOutput(); }); describe('handle actions', () => { - it('should write to a file properly', () => { - StyleDictionaryExtended.buildPlatform('android'); - expect(helpers.fileExists('./__tests__/__output/action.txt')).toBeTruthy(); + it('should write to a file properly', async () => { + await StyleDictionaryExtended.buildPlatform('android'); + expect(fileExists('__tests__/__output/action.txt')).to.be.true; }); }); }); diff --git a/__tests__/register/action.test.js b/__tests__/register/action.test.js index 455f2ebad..b7acb47a0 100644 --- a/__tests__/register/action.test.js +++ b/__tests__/register/action.test.js @@ -10,75 +10,76 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ - -var StyleDictionary = require('../../index'); -var StyleDictionaryExtended = StyleDictionary.extend({}); +import { expect } from 'chai'; +import StyleDictionary from 'style-dictionary'; describe('register', () => { - describe('action', () => { + describe('action', async () => { + const StyleDictionaryExtended = new StyleDictionary({}); + it('should error if name is not a string', () => { - expect( - StyleDictionaryExtended.registerAction.bind(null, { + expect(() => { + StyleDictionaryExtended.registerAction({ do: function () {}, - }), - ).toThrow('name must be a string'); + }); + }).to.throw('name must be a string'); - expect( - StyleDictionaryExtended.registerAction.bind(null, { + expect(() => { + StyleDictionaryExtended.registerAction({ name: 1, do: function () {}, - }), - ).toThrow('name must be a string'); + }); + }).to.throw('name must be a string'); - expect( - StyleDictionaryExtended.registerAction.bind(null, { + expect(() => { + StyleDictionaryExtended.registerAction({ name: [], do: function () {}, - }), - ).toThrow('name must be a string'); + }); + }).to.throw('name must be a string'); - expect( - StyleDictionaryExtended.registerAction.bind(null, { + expect(() => { + StyleDictionaryExtended.registerAction({ name: {}, do: function () {}, - }), - ).toThrow('name must be a string'); + }); + }).to.throw('name must be a string'); }); it('should error if do is not a function', () => { - expect( - StyleDictionaryExtended.registerAction.bind(null, { + expect(() => { + StyleDictionaryExtended.registerAction({ name: 'test', - }), - ).toThrow('do must be a function'); + }); + }).to.throw('do must be a function'); - expect( - StyleDictionaryExtended.registerAction.bind(null, { + expect(() => { + StyleDictionaryExtended.registerAction({ name: 'test', do: 1, - }), - ).toThrow('do must be a function'); + }); + }).to.throw('do must be a function'); - expect( - StyleDictionaryExtended.registerAction.bind(null, { + expect(() => { + StyleDictionaryExtended.registerAction({ name: 'test', do: 'name', - }), - ).toThrow('do must be a function'); + }); + }).to.throw('do must be a function'); - expect( - StyleDictionaryExtended.registerAction.bind(null, { + expect(() => { + StyleDictionaryExtended.registerAction({ name: 'test', do: [], - }), - ).toThrow('do must be a function'); + }); + }).to.throw('do must be a function'); - expect( - StyleDictionaryExtended.registerAction.bind(null, { + expect(() => { + StyleDictionaryExtended.registerAction({ name: 'test', do: {}, - }), - ).toThrow('do must be a function'); + }); + }).to.throw('do must be a function'); }); it('should work if name and do are good', () => { @@ -86,7 +87,7 @@ describe('register', () => { name: 'scss', do: function () {}, }); - expect(typeof StyleDictionaryExtended.action['scss'].do).toBe('function'); + expect(typeof StyleDictionaryExtended.action['scss'].do).to.equal('function'); }); it('should handle an undo function', () => { @@ -95,12 +96,12 @@ describe('register', () => { do: function () {}, undo: function () {}, }); - expect(typeof StyleDictionaryExtended.action['scss'].undo).toBe('function'); + expect(typeof StyleDictionaryExtended.action['scss'].undo).to.equal('function'); }); - it('should properly pass the registered format to instances', () => { - var SDE2 = StyleDictionaryExtended.extend({}); - expect(typeof SDE2.action['scss'].do).toBe('function'); + it('should properly pass the registered format to instances', async () => { + const SDE2 = await StyleDictionaryExtended.extend({}); + expect(typeof SDE2.action['scss'].do).to.equal('function'); }); }); }); diff --git a/__tests__/register/fileHeader.test.js b/__tests__/register/fileHeader.test.js index 05beee6be..51eaa65b6 100644 --- a/__tests__/register/fileHeader.test.js +++ b/__tests__/register/fileHeader.test.js @@ -10,75 +10,76 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ - -var StyleDictionary = require('../../index'); -var StyleDictionaryExtended = StyleDictionary.extend({}); +import { expect } from 'chai'; +import StyleDictionary from 'style-dictionary'; describe('register', () => { - describe('fileHeader', () => { + describe('fileHeader', async () => { + const StyleDictionaryExtended = new StyleDictionary({}); + it('should error if name is not a string', () => { - expect( - StyleDictionaryExtended.registerFileHeader.bind(null, { + expect(() => { + StyleDictionaryExtended.registerFileHeader({ fileHeader: function () {}, - }), - ).toThrow('name must be a string'); + }); + }).to.throw('name must be a string'); - expect( - StyleDictionaryExtended.registerFileHeader.bind(null, { + expect(() => { + StyleDictionaryExtended.registerFileHeader({ name: 1, fileHeader: function () {}, - }), - ).toThrow('name must be a string'); + }); + }).to.throw('name must be a string'); - expect( - StyleDictionaryExtended.registerFileHeader.bind(null, { + expect(() => { + StyleDictionaryExtended.registerFileHeader({ name: [], fileHeader: function () {}, - }), - ).toThrow('name must be a string'); + }); + }).to.throw('name must be a string'); - expect( - StyleDictionaryExtended.registerFilter.bind(null, { + expect(() => { + StyleDictionaryExtended.registerFilter({ name: {}, matcher: function () {}, - }), - ).toThrow('name must be a string'); + }); + }).to.throw('name must be a string'); }); it('should error if fileHeader is not a function', () => { - expect( - StyleDictionaryExtended.registerFileHeader.bind(null, { + expect(() => { + StyleDictionaryExtended.registerFileHeader({ name: 'myCustomHeader', - }), - ).toThrow('fileHeader must be a function'); + }); + }).to.throw('fileHeader must be a function'); - expect( - StyleDictionaryExtended.registerFileHeader.bind(null, { + expect(() => { + StyleDictionaryExtended.registerFileHeader({ name: 'myCustomHeader', fileHeader: 1, - }), - ).toThrow('fileHeader must be a function'); + }); + }).to.throw('fileHeader must be a function'); - expect( - StyleDictionaryExtended.registerFileHeader.bind(null, { + expect(() => { + StyleDictionaryExtended.registerFileHeader({ name: 'myCustomHeader', fileHeader: 'name', - }), - ).toThrow('fileHeader must be a function'); + }); + }).to.throw('fileHeader must be a function'); - expect( - StyleDictionaryExtended.registerFileHeader.bind(null, { + expect(() => { + StyleDictionaryExtended.registerFileHeader({ name: 'myCustomHeader', fileHeader: [], - }), - ).toThrow('fileHeader must be a function'); + }); + }).to.throw('fileHeader must be a function'); - expect( - StyleDictionaryExtended.registerFileHeader.bind(null, { + expect(() => { + StyleDictionaryExtended.registerFileHeader({ name: 'myCustomHeader', fileHeader: {}, - }), - ).toThrow('fileHeader must be a function'); + }); + }).to.throw('fileHeader must be a function'); }); it('should work if name and matcher are good', () => { @@ -86,12 +87,12 @@ describe('register', () => { name: 'myCustomHeader', fileHeader: function () {}, }); - expect(typeof StyleDictionaryExtended.fileHeader['myCustomHeader']).toBe('function'); + expect(typeof StyleDictionaryExtended.fileHeader['myCustomHeader']).to.equal('function'); }); - it('should properly pass the registered fileHeader to instances', () => { - var SDE2 = StyleDictionaryExtended.extend({}); - expect(typeof SDE2.fileHeader['myCustomHeader']).toBe('function'); + it('should properly pass the registered fileHeader to instances', async () => { + const SDE2 = await StyleDictionaryExtended.extend({}); + expect(typeof SDE2.fileHeader['myCustomHeader']).to.equal('function'); }); }); }); diff --git a/__tests__/register/filter.test.js b/__tests__/register/filter.test.js index 83b6bcb66..d6e3013b2 100644 --- a/__tests__/register/filter.test.js +++ b/__tests__/register/filter.test.js @@ -10,75 +10,76 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ - -var StyleDictionary = require('../../index'); -var StyleDictionaryExtended = StyleDictionary.extend({}); +import { expect } from 'chai'; +import StyleDictionary from 'style-dictionary'; describe('register', () => { - describe('filter', () => { + describe('filter', async () => { + const StyleDictionaryExtended = new StyleDictionary({}); + it('should error if name is not a string', () => { - expect( - StyleDictionaryExtended.registerFilter.bind(null, { + expect(() => { + StyleDictionaryExtended.registerFilter({ matcher: function () {}, - }), - ).toThrow('name must be a string'); + }); + }).to.throw('name must be a string'); - expect( - StyleDictionaryExtended.registerFilter.bind(null, { + expect(() => { + StyleDictionaryExtended.registerFilter({ name: 1, matcher: function () {}, - }), - ).toThrow('name must be a string'); + }); + }).to.throw('name must be a string'); - expect( - StyleDictionaryExtended.registerFilter.bind(null, { + expect(() => { + StyleDictionaryExtended.registerFilter({ name: [], matcher: function () {}, - }), - ).toThrow('name must be a string'); + }); + }).to.throw('name must be a string'); - expect( - StyleDictionaryExtended.registerFilter.bind(null, { + expect(() => { + StyleDictionaryExtended.registerFilter({ name: {}, matcher: function () {}, - }), - ).toThrow('name must be a string'); + }); + }).to.throw('name must be a string'); }); it('should error if matcher is not a function', () => { - expect( - StyleDictionaryExtended.registerFilter.bind(null, { + expect(() => { + StyleDictionaryExtended.registerFilter({ name: 'test', - }), - ).toThrow('matcher must be a function'); + }); + }).to.throw('matcher must be a function'); - expect( - StyleDictionaryExtended.registerFilter.bind(null, { + expect(() => { + StyleDictionaryExtended.registerFilter({ name: 'test', matcher: 1, - }), - ).toThrow('matcher must be a function'); + }); + }).to.throw('matcher must be a function'); - expect( - StyleDictionaryExtended.registerFilter.bind(null, { + expect(() => { + StyleDictionaryExtended.registerFilter({ name: 'test', matcher: 'name', - }), - ).toThrow('matcher must be a function'); + }); + }).to.throw('matcher must be a function'); - expect( - StyleDictionaryExtended.registerFilter.bind(null, { + expect(() => { + StyleDictionaryExtended.registerFilter({ name: 'test', matcher: [], - }), - ).toThrow('matcher must be a function'); + }); + }).to.throw('matcher must be a function'); - expect( - StyleDictionaryExtended.registerFilter.bind(null, { + expect(() => { + StyleDictionaryExtended.registerFilter({ name: 'test', matcher: {}, - }), - ).toThrow('matcher must be a function'); + }); + }).to.throw('matcher must be a function'); }); it('should work if name and matcher are good', () => { @@ -86,12 +87,12 @@ describe('register', () => { name: 'scss', matcher: function () {}, }); - expect(typeof StyleDictionaryExtended.filter['scss']).toBe('function'); + expect(typeof StyleDictionaryExtended.filter['scss']).to.equal('function'); }); - it('should properly pass the registered filter to instances', () => { - var SDE2 = StyleDictionaryExtended.extend({}); - expect(typeof SDE2.filter['scss']).toBe('function'); + it('should properly pass the registered filter to instances', async () => { + const SDE2 = await StyleDictionaryExtended.extend({}); + expect(typeof SDE2.filter['scss']).to.equal('function'); }); }); }); diff --git a/__tests__/register/format.test.js b/__tests__/register/format.test.js index 4e3906104..a65006477 100644 --- a/__tests__/register/format.test.js +++ b/__tests__/register/format.test.js @@ -10,77 +10,78 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ - -var StyleDictionary = require('../../index'); -var StyleDictionaryExtended = StyleDictionary.extend({}); +import { expect } from 'chai'; +import StyleDictionary from 'style-dictionary'; describe('register', () => { - describe('format', () => { + describe('format', async () => { + const StyleDictionaryExtended = new StyleDictionary({}); + it('should error if name is not a string', () => { const errorMessage = `Can't register format; format.name must be a string`; - expect( - StyleDictionaryExtended.registerFormat.bind(null, { + expect(() => { + StyleDictionaryExtended.registerFormat({ formatter: function () {}, - }), - ).toThrow(errorMessage); + }); + }).to.throw(errorMessage); - expect( - StyleDictionaryExtended.registerFormat.bind(null, { + expect(() => { + StyleDictionaryExtended.registerFormat({ name: 1, formatter: function () {}, - }), - ).toThrow(errorMessage); + }); + }).to.throw(errorMessage); - expect( - StyleDictionaryExtended.registerFormat.bind(null, { + expect(() => { + StyleDictionaryExtended.registerFormat({ name: [], formatter: function () {}, - }), - ).toThrow(errorMessage); + }); + }).to.throw(errorMessage); - expect( - StyleDictionaryExtended.registerFormat.bind(null, { + expect(() => { + StyleDictionaryExtended.registerFormat({ name: {}, formatter: function () {}, - }), - ).toThrow(errorMessage); + }); + }).to.throw(errorMessage); }); it('should error if format is not a function', () => { const errorMessage = `Can't register format; format.formatter must be a function`; - expect( - StyleDictionaryExtended.registerFormat.bind(null, { + expect(() => { + StyleDictionaryExtended.registerFormat({ name: 'test', - }), - ).toThrow(errorMessage); + }); + }).to.throw(errorMessage); - expect( - StyleDictionaryExtended.registerFormat.bind(null, { + expect(() => { + StyleDictionaryExtended.registerFormat({ name: 'test', formatter: 1, - }), - ).toThrow(errorMessage); + }); + }).to.throw(errorMessage); - expect( - StyleDictionaryExtended.registerFormat.bind(null, { + expect(() => { + StyleDictionaryExtended.registerFormat({ name: 'test', formatter: 'name', - }), - ).toThrow(errorMessage); + }); + }).to.throw(errorMessage); - expect( - StyleDictionaryExtended.registerFormat.bind(null, { + expect(() => { + StyleDictionaryExtended.registerFormat({ name: 'test', formatter: [], - }), - ).toThrow(errorMessage); + }); + }).to.throw(errorMessage); - expect( - StyleDictionaryExtended.registerFormat.bind(null, { + expect(() => { + StyleDictionaryExtended.registerFormat({ name: 'test', formatter: {}, - }), - ).toThrow(errorMessage); + }); + }).to.throw(errorMessage); }); it('should work if name and format are good', () => { @@ -88,12 +89,12 @@ describe('register', () => { name: 'scss', formatter: function () {}, }); - expect(typeof StyleDictionaryExtended.format['scss']).toBe('function'); + expect(typeof StyleDictionaryExtended.format['scss']).to.equal('function'); }); - it('should properly pass the registered format to instances', () => { - var SDE2 = StyleDictionaryExtended.extend({}); - expect(typeof SDE2.format['scss']).toBe('function'); + it('should properly pass the registered format to instances', async () => { + const SDE2 = await StyleDictionaryExtended.extend({}); + expect(typeof SDE2.format['scss']).to.equal('function'); }); }); }); diff --git a/__tests__/register/parser.test.js b/__tests__/register/parser.test.js index 86f540f7b..a284a4006 100644 --- a/__tests__/register/parser.test.js +++ b/__tests__/register/parser.test.js @@ -10,75 +10,76 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ - -var StyleDictionary = require('../../index'); -var StyleDictionaryExtended = StyleDictionary.extend({}); +import { expect } from 'chai'; +import StyleDictionary from 'style-dictionary'; describe('register', () => { - describe('parser', () => { + describe('parser', async () => { + const StyleDictionaryExtended = new StyleDictionary({}); + it('should error if pattern is not a regex', () => { - expect( - StyleDictionaryExtended.registerParser.bind(null, { + expect(() => { + StyleDictionaryExtended.registerParser({ parse: function () {}, - }), - ).toThrow('pattern must be a regular expression'); + }); + }).to.throw('pattern must be a regular expression'); - expect( - StyleDictionaryExtended.registerParser.bind(null, { + expect(() => { + StyleDictionaryExtended.registerParser({ pattern: 1, parse: function () {}, - }), - ).toThrow('pattern must be a regular expression'); + }); + }).to.throw('pattern must be a regular expression'); - expect( - StyleDictionaryExtended.registerParser.bind(null, { + expect(() => { + StyleDictionaryExtended.registerParser({ pattern: [], parse: function () {}, - }), - ).toThrow('pattern must be a regular expression'); + }); + }).to.throw('pattern must be a regular expression'); - expect( - StyleDictionaryExtended.registerParser.bind(null, { + expect(() => { + StyleDictionaryExtended.registerParser({ pattern: {}, parse: function () {}, - }), - ).toThrow('pattern must be a regular expression'); + }); + }).to.throw('pattern must be a regular expression'); }); it('should error if parser is not a function', () => { - expect( - StyleDictionaryExtended.registerParser.bind(null, { + expect(() => { + StyleDictionaryExtended.registerParser({ pattern: /$.json/, - }), - ).toThrow('parse must be a function'); + }); + }).to.throw('parse must be a function'); - expect( - StyleDictionaryExtended.registerParser.bind(null, { + expect(() => { + StyleDictionaryExtended.registerParser({ pattern: /$.json/, parse: 1, - }), - ).toThrow('parse must be a function'); + }); + }).to.throw('parse must be a function'); - expect( - StyleDictionaryExtended.registerParser.bind(null, { + expect(() => { + StyleDictionaryExtended.registerParser({ pattern: /$.json/, parse: 'name', - }), - ).toThrow('parse must be a function'); + }); + }).to.throw('parse must be a function'); - expect( - StyleDictionaryExtended.registerParser.bind(null, { + expect(() => { + StyleDictionaryExtended.registerParser({ pattern: /$.json/, parse: [], - }), - ).toThrow('parse must be a function'); + }); + }).to.throw('parse must be a function'); - expect( - StyleDictionaryExtended.registerParser.bind(null, { + expect(() => { + StyleDictionaryExtended.registerParser({ pattern: /$.json/, parse: {}, - }), - ).toThrow('parse must be a function'); + }); + }).to.throw('parse must be a function'); }); it('should work if pattern and parser are good', () => { @@ -86,12 +87,12 @@ describe('register', () => { pattern: /$.json/, parse: function () {}, }); - expect(typeof StyleDictionaryExtended.parsers[0].parse).toBe('function'); + expect(typeof StyleDictionaryExtended.parsers[0].parse).to.equal('function'); }); - it('should properly pass the registered filter to instances', () => { - var SDE2 = StyleDictionaryExtended.extend({}); - expect(typeof SDE2.parsers[0].parse).toBe('function'); + it('should properly pass the registered filter to instances', async () => { + const SDE2 = await StyleDictionaryExtended.extend({}); + expect(typeof SDE2.parsers[0].parse).to.equal('function'); }); }); }); diff --git a/__tests__/register/template.test.js b/__tests__/register/template.test.js deleted file mode 100644 index 58a2eca9c..000000000 --- a/__tests__/register/template.test.js +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with - * the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR - * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - -var StyleDictionary = require('../../index').extend({}); - -describe('registerTemplate', function () { - it('should error if name is not a string', function () { - expect(StyleDictionary.registerTemplate.bind(null, {})).toThrow( - /Template name must be a string:/, - ); - - expect( - StyleDictionary.registerTemplate.bind(null, { - name: 1, - }), - ).toThrow(/Template name must be a string:/); - - expect( - StyleDictionary.registerTemplate.bind(null, { - name: [], - }), - ).toThrow(/Template name must be a string:/); - - expect( - StyleDictionary.registerTemplate.bind(null, { - name: {}, - }), - ).toThrow(/Template name must be a string:/); - }); - - it('should error if path is not a string', function () { - expect( - StyleDictionary.registerTemplate.bind(null, { - name: 'data', - }), - ).toThrow(/Template path must be a string:/); - - expect( - StyleDictionary.registerTemplate.bind(null, { - name: 'data', - template: 1, - }), - ).toThrow(/Template path must be a string:/); - - expect( - StyleDictionary.registerTemplate.bind(null, { - name: 'data', - template: [], - }), - ).toThrow(/Template path must be a string:/); - - expect( - StyleDictionary.registerTemplate.bind(null, { - name: 'data', - template: {}, - }), - ).toThrow(/Template path must be a string:/); - }); - - it('should error if path is not a file', function () { - expect( - StyleDictionary.registerTemplate.bind(null, { - name: 'data', - template: 'non_existent_file', - }), - ).toThrow(/Can't find template: /); - }); - - it('should return StyleDictionary', function () { - expect( - StyleDictionary.registerTemplate({ - name: 'data', - template: 'index.js', - }), - ).toMatchObject(StyleDictionary); - }); -}); diff --git a/__tests__/register/transform.test.js b/__tests__/register/transform.test.js index e4d8a6a40..a203af92a 100644 --- a/__tests__/register/transform.test.js +++ b/__tests__/register/transform.test.js @@ -10,57 +10,58 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ - -var StyleDictionary = require('../../index'); -var StyleDictionaryExtended = StyleDictionary.extend({}); +import { expect } from 'chai'; +import StyleDictionary from 'style-dictionary'; describe('register', () => { - describe('transform', () => { + describe('transform', async () => { + const StyleDictionaryExtended = new StyleDictionary({}); + it('should error if type is not a string', () => { - expect( - StyleDictionaryExtended.registerTransform.bind(null, { + expect(() => { + StyleDictionaryExtended.registerTransform({ type: 3, - }), - ).toThrow('type must be a string'); + }); + }).to.throw('type must be a string'); }); it('should error if type is not a valid type', () => { - expect( - StyleDictionaryExtended.registerTransform.bind(null, { + expect(() => { + StyleDictionaryExtended.registerTransform({ type: 'foo', - }), - ).toThrow('foo type is not one of: name, value, attribute'); + }); + }).to.throw('foo type is not one of: name, value, attribute'); }); it('should error if name is not a string', () => { - expect( - StyleDictionaryExtended.registerTransform.bind(null, { + expect(() => { + StyleDictionaryExtended.registerTransform({ type: 'name', - }), - ).toThrow('name must be a string'); + }); + }).to.throw('name must be a string'); }); it('should error if matcher is not a function', () => { - expect( - StyleDictionaryExtended.registerTransform.bind(null, { + expect(() => { + StyleDictionaryExtended.registerTransform({ type: 'name', name: 'name', matcher: 'foo', - }), - ).toThrow('matcher must be a function'); + }); + }).to.throw('matcher must be a function'); }); it('should error if transformer is not a function', () => { - expect( - StyleDictionaryExtended.registerTransform.bind(null, { + expect(() => { + StyleDictionaryExtended.registerTransform({ type: 'name', name: 'name', matcher: function () { return true; }, transformer: 'foo', - }), - ).toThrow('transformer must be a function'); + }); + }).to.throw('transformer must be a function'); }); it('should work if type, matcher, and transformer are all proper', () => { @@ -74,18 +75,18 @@ describe('register', () => { return true; }, }); - expect(typeof StyleDictionaryExtended.transform.foo).toBe('object'); - expect(StyleDictionaryExtended).toHaveProperty('transform.foo.type', 'name'); - expect(typeof StyleDictionaryExtended.transform.foo.matcher).toBe('function'); - expect(typeof StyleDictionaryExtended.transform.foo.transformer).toBe('function'); + expect(typeof StyleDictionaryExtended.transform.foo).to.equal('object'); + expect(StyleDictionaryExtended).to.have.nested.property('transform.foo.type', 'name'); + expect(typeof StyleDictionaryExtended.transform.foo.matcher).to.equal('function'); + expect(typeof StyleDictionaryExtended.transform.foo.transformer).to.equal('function'); }); - it('should properly pass the registered transform to instances', () => { - var SDE2 = StyleDictionaryExtended.extend({}); - expect(typeof SDE2.transform.foo).toBe('object'); - expect(SDE2).toHaveProperty('transform.foo.type', 'name'); - expect(typeof SDE2.transform.foo.matcher).toBe('function'); - expect(typeof SDE2.transform.foo.transformer).toBe('function'); + it('should properly pass the registered transform to instances', async () => { + const SDE2 = await StyleDictionaryExtended.extend({}); + expect(typeof SDE2.transform.foo).to.equal('object'); + expect(SDE2).to.have.nested.property('transform.foo.type', 'name'); + expect(typeof SDE2.transform.foo.matcher).to.equal('function'); + expect(typeof SDE2.transform.foo.transformer).to.equal('function'); }); }); }); diff --git a/__tests__/register/transformGroup.test.js b/__tests__/register/transformGroup.test.js index e27af8a9a..8c17fa2c3 100644 --- a/__tests__/register/transformGroup.test.js +++ b/__tests__/register/transformGroup.test.js @@ -10,83 +10,86 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ +import { expect } from 'chai'; +import StyleDictionary from 'style-dictionary'; -var StyleDictionary = require('../../index'); -var StyleDictionaryExtended = StyleDictionary.extend({}); +const dummyTransformName = 'transformGroup.test.js'; + +describe('register/transformGroup', async () => { + const StyleDictionaryExtended = new StyleDictionary({}); -describe('register/transformGroup', () => { it('should error if name is not a string', () => { - expect( - StyleDictionaryExtended.registerTransformGroup.bind(null, { - transforms: ['foo'], - }), - ).toThrow('transform name must be a string'); + expect(() => { + StyleDictionaryExtended.registerTransformGroup({ + transforms: [dummyTransformName], + }); + }).to.throw('transform name must be a string'); - expect( - StyleDictionaryExtended.registerTransformGroup.bind(null, { + expect(() => { + StyleDictionaryExtended.registerTransformGroup({ name: 1, - transforms: ['foo'], - }), - ).toThrow('transform name must be a string'); + transforms: [dummyTransformName], + }); + }).to.throw('transform name must be a string'); - expect( - StyleDictionaryExtended.registerTransformGroup.bind(null, { + expect(() => { + StyleDictionaryExtended.registerTransformGroup({ name: [], - transforms: ['foo'], - }), - ).toThrow('transform name must be a string'); + transforms: [dummyTransformName], + }); + }).to.throw('transform name must be a string'); - expect( - StyleDictionaryExtended.registerTransformGroup.bind(null, { + expect(() => { + StyleDictionaryExtended.registerTransformGroup({ name: {}, - transforms: ['foo'], - }), - ).toThrow('transform name must be a string'); + transforms: [dummyTransformName], + }); + }).to.throw('transform name must be a string'); - expect( - StyleDictionaryExtended.registerTransformGroup.bind(null, { + expect(() => { + StyleDictionaryExtended.registerTransformGroup({ name: function () {}, - transforms: ['foo'], - }), - ).toThrow('transform name must be a string'); + transforms: [dummyTransformName], + }); + }).to.throw('transform name must be a string'); }); - it('should error if transforms isnt an array', () => { - expect( - StyleDictionaryExtended.registerTransformGroup.bind(null, { + it("should error if transforms isn't an array", () => { + expect(() => { + StyleDictionaryExtended.registerTransformGroup({ name: 'foo', - }), - ).toThrow('transforms must be an array of registered value transforms'); + }); + }).to.throw('transforms must be an array of registered value transforms'); - expect( - StyleDictionaryExtended.registerTransformGroup.bind(null, { + expect(() => { + StyleDictionaryExtended.registerTransformGroup({ name: 'foo', - transforms: 'foo', - }), - ).toThrow('transforms must be an array of registered value transforms'); + transforms: dummyTransformName, + }); + }).to.throw('transforms must be an array of registered value transforms'); - expect( - StyleDictionaryExtended.registerTransformGroup.bind(null, { + expect(() => { + StyleDictionaryExtended.registerTransformGroup({ name: 'foo', transforms: {}, - }), - ).toThrow('transforms must be an array of registered value transforms'); + }); + }).to.throw('transforms must be an array of registered value transforms'); - expect( - StyleDictionaryExtended.registerTransformGroup.bind(null, { + expect(() => { + StyleDictionaryExtended.registerTransformGroup({ name: 'foo', transforms: function () {}, - }), - ).toThrow('transforms must be an array of registered value transforms'); + }); + }).to.throw('transforms must be an array of registered value transforms'); }); it('should error if transforms arent registered', () => { - expect( - StyleDictionaryExtended.registerTransformGroup.bind(StyleDictionary, { + expect(() => { + StyleDictionaryExtended.registerTransformGroup({ name: 'foo', - transforms: ['foo'], - }), - ).toThrow('transforms must be an array of registered value transforms'); + transforms: [dummyTransformName], + }); + }).to.throw('transforms must be an array of registered value transforms'); }); it('should work if everything is good', () => { @@ -94,15 +97,15 @@ describe('register/transformGroup', () => { name: 'foo', transforms: ['size/px'], }); - expect(Array.isArray(StyleDictionaryExtended.transformGroup.foo)).toBeTruthy(); - expect(typeof StyleDictionaryExtended.transformGroup.foo[0]).toBe('string'); - expect(StyleDictionaryExtended.transformGroup.foo[0]).toBe('size/px'); + expect(Array.isArray(StyleDictionaryExtended.transformGroup.foo)).to.be.true; + expect(typeof StyleDictionaryExtended.transformGroup.foo[0]).to.equal('string'); + expect(StyleDictionaryExtended.transformGroup.foo[0]).to.equal('size/px'); }); - it('should properly pass the registered format to instances', () => { - var SDE2 = StyleDictionaryExtended.extend({}); - expect(Array.isArray(SDE2.transformGroup.foo)).toBeTruthy(); - expect(typeof SDE2.transformGroup.foo[0]).toBe('string'); - expect(SDE2.transformGroup.foo[0]).toBe('size/px'); + it('should properly pass the registered format to instances', async () => { + const SDE2 = await StyleDictionaryExtended.extend({}); + expect(Array.isArray(SDE2.transformGroup.foo)).to.be.true; + expect(typeof SDE2.transformGroup.foo[0]).to.equal('string'); + expect(SDE2.transformGroup.foo[0]).to.equal('size/px'); }); }); diff --git a/__tests__/transform/config.test.js b/__tests__/transform/config.test.js index d2ba03cf6..4718215ae 100644 --- a/__tests__/transform/config.test.js +++ b/__tests__/transform/config.test.js @@ -10,8 +10,8 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ - -var transformConfig = require('../../lib/transform/config'); +import { expect } from 'chai'; +import transformConfig from '../../lib/transform/config.js'; const dictionary = { transformGroup: { @@ -39,7 +39,7 @@ Unknown transformGroup "barTransformGroup" found in platform "test": "barTransformGroup" does not match the name of a registered transformGroup. `; - expect(transformConfig.bind(null, noTransformGroupCfg, dictionary, 'test')).toThrow(err); + expect(transformConfig.bind(null, noTransformGroupCfg, dictionary, 'test')).to.throw(err); }); it('Emits errors when called with a transform that does not exist', () => { @@ -52,7 +52,7 @@ Unknown transforms "barTransform", "bazTransform" found in platform "test": None of "barTransform", "bazTransform" match the name of a registered transform. `; - expect(transformConfig.bind(null, noTransformCfg, dictionary, 'test')).toThrow(err); + expect(transformConfig.bind(null, noTransformCfg, dictionary, 'test')).to.throw(err); }); }); }); diff --git a/__tests__/transform/object.test.js b/__tests__/transform/object.test.js index 61abda563..07f005a01 100644 --- a/__tests__/transform/object.test.js +++ b/__tests__/transform/object.test.js @@ -10,8 +10,8 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ - -var transformObject = require('../../lib/transform/object'); +import { expect } from 'chai'; +import transformObject from '../../lib/transform/object.js'; const options = { transforms: [ @@ -51,7 +51,7 @@ const options = { describe('transform', () => { describe('object', () => { it('does not crash when called without parameters', () => { - expect(transformObject()).toEqual({}); + expect(transformObject()).to.eql({}); }); it('returns expected result when called with an object without value property', () => { @@ -64,7 +64,7 @@ describe('transform', () => { }; const actual = transformObject(objectToTransform, options); - expect(actual).toEqual(expected); + expect(actual).to.eql(expected); }); it('returns expected result when called with an with value leaf', () => { @@ -94,7 +94,7 @@ describe('transform', () => { }; const actual = transformObject(objectToTransform, options); - expect(actual).toEqual(expected); + expect(actual).to.eql(expected); }); it('fills the transformationContext with transformed and deferred transforms', () => { @@ -118,8 +118,8 @@ describe('transform', () => { transformObject(objectToTransform, options, transformationContext); - expect(transformedPropRefs).toEqual(['spacing.base']); - expect(deferredPropValueTransforms).toEqual(['spacing.medium']); + expect(transformedPropRefs).to.eql(['spacing.base']); + expect(deferredPropValueTransforms).to.eql(['spacing.medium']); }); }); }); diff --git a/__tests__/transform/property.test.js b/__tests__/transform/property.test.js index 8faf1019c..c3a7c6ea5 100644 --- a/__tests__/transform/property.test.js +++ b/__tests__/transform/property.test.js @@ -10,8 +10,8 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ - -var property = require('../../lib/transform/property'); +import { expect } from 'chai'; +import token from '../../lib/transform/token.js'; var options = { transforms: [ @@ -42,11 +42,11 @@ var options = { }; describe('transform', () => { - describe('property', () => { + describe('token', () => { it('should work', () => { - var test = property({ attributes: { baz: 'blah' } }, options); - expect(test).toHaveProperty('attributes.bar', 'foo'); - expect(test).toHaveProperty('name', 'hello'); + const test = token({ attributes: { baz: 'blah' } }, options); + expect(test).to.have.nested.property('attributes.bar', 'foo'); + expect(test).to.have.property('name', 'hello'); }); // Add more tests diff --git a/__tests__/transform/propertySetup.test.js b/__tests__/transform/propertySetup.test.js index 4999a6199..587676627 100644 --- a/__tests__/transform/propertySetup.test.js +++ b/__tests__/transform/propertySetup.test.js @@ -10,62 +10,57 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ - -var propertySetup = require('../../lib/transform/propertySetup'); +import { expect } from 'chai'; +import tokenSetup from '../../lib/transform/tokenSetup.js'; describe('transform', () => { - describe('propertySetup', () => { + describe('tokenSetup', () => { it('should error if property is not an object', () => { - expect(propertySetup.bind(null, null, 'foo', [])).toThrow( - 'Property object must be an object', - ); + expect(tokenSetup.bind(null, null, 'foo', [])).to.throw('Property object must be an object'); }); it('should error if name in not a string', () => { - expect(propertySetup.bind(null, {}, null, [])).toThrow('Name must be a string'); + expect(tokenSetup.bind(null, {}, null, [])).to.throw('Name must be a string'); }); it('should error path is not an array', () => { - expect(propertySetup.bind(null, {}, 'name', null)).toThrow('Path must be an array'); + expect(tokenSetup.bind(null, {}, 'name', null)).to.throw('Path must be an array'); }); it('should work if all the args are proper', () => { - var test = propertySetup({ value: '#fff' }, 'white', ['color', 'base']); - expect(typeof test).toBe('object'); - expect(test).toHaveProperty('value'); - expect(test).toHaveProperty('original'); - expect(test).toHaveProperty('attributes'); - expect(test).toHaveProperty('path'); + var test = tokenSetup({ value: '#fff' }, 'white', ['color', 'base']); + expect(typeof test).to.equal('object'); + expect(test).to.have.property('value'); + expect(test).to.have.property('original'); + expect(test).to.have.property('attributes'); + expect(test).to.have.property('path'); }); it('should not do anything and return the property if it has been setup previously', () => { var original = { value: '#fff', original: {} }; - var test = propertySetup(original, 'white', ['color', 'base']); - expect(test).toMatchObject(original); + var test = tokenSetup(original, 'white', ['color', 'base']); + expect(test).to.eql(original); }); it('should use attributes if already set', () => { var attributes = { foo: 'bar' }; - var test = propertySetup({ value: '#fff', attributes: attributes }, 'white', [ - 'color', - 'base', - ]); - expect(test.attributes).toMatchObject(attributes); + var test = tokenSetup({ value: '#fff', attributes: attributes }, 'white', ['color', 'base']); + expect(test.attributes).to.eql(attributes); }); it('should use the name on the property if set', () => { var name = 'name'; - var test = propertySetup({ value: '#fff', name: name }, 'white', ['color', 'base']); - expect(test).toHaveProperty('name', name); + var test = tokenSetup({ value: '#fff', name: name }, 'white', ['color', 'base']); + expect(test).to.have.property('name', name); }); it('should use the name passed in if not set on the property', () => { - var test = propertySetup({ value: '#fff' }, 'white', ['color', 'base']); - expect(test).toHaveProperty('name', 'white'); + var test = tokenSetup({ value: '#fff' }, 'white', ['color', 'base']); + expect(test).to.have.property('name', 'white'); }); it('should handle objects', () => { - const test = propertySetup( + const test = tokenSetup( { value: { h: 20, @@ -76,8 +71,8 @@ describe('transform', () => { 'red', ['color', 'red'], ); - expect(test).toHaveProperty('value.h', 20); - expect(test).toHaveProperty('original.value.h', 20); + expect(test).to.have.nested.property('value.h', 20); + expect(test).to.have.nested.property('original.value.h', 20); }); }); }); diff --git a/__tests__/utils/combineJSON.test.js b/__tests__/utils/combineJSON.test.js index fcb033809..1dcbb38b3 100644 --- a/__tests__/utils/combineJSON.test.js +++ b/__tests__/utils/combineJSON.test.js @@ -10,84 +10,82 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ - -var combineJSON = require('../../lib/utils/combineJSON'); -var path = require('path'); -var yaml = require('yaml'); +import { expect } from 'chai'; +import path from '@bundled-es-modules/path-browserify'; +import yaml from 'yaml'; +import { expectThrowsAsync } from '../__helpers.js'; +import combineJSON from '../../lib/utils/combineJSON.js'; describe('utils', () => { describe('combineJSON', () => { - it('should return an object', () => { - var test = combineJSON(['__tests__/__json_files/*.json']); - expect(typeof test).toBe('object'); + it('should return an object', async () => { + const test = await combineJSON(['__tests__/__json_files/*.json']); + expect(typeof test).to.equal('object'); }); - it('should handle wildcards', () => { - var test = combineJSON(['__tests__/__json_files/*.json']); - expect(typeof test).toBe('object'); + it('should handle wildcards', async () => { + const test = await combineJSON(['__tests__/__json_files/*.json']); + expect(typeof test).to.equal('object'); }); - it('should handle js modules that export objects', () => { - var absPath = path.join(process.cwd(), 'test', 'json_files', '*.js'); - var relativePath = '__tests__/__json_files/*.js'; - var test = combineJSON([absPath, relativePath]); - expect(typeof test).toBe('object'); + it('should handle js modules that export objects', async () => { + const absPath = path.join('__tests__', '__json_files', '*.js'); + const relativePath = '__tests__/__json_files/*.js'; + const test = await combineJSON([absPath, relativePath]); + expect(typeof test).to.equal('object'); }); - it('should do a deep merge', () => { - var test = combineJSON(['__tests__/__json_files/shallow/*.json'], true); - expect(test).toHaveProperty('a', 2); - expect(test.b).toMatchObject({ a: 1, c: 2 }); - expect(test).toHaveProperty('d.e.f.g', 1); - expect(test).toHaveProperty('d.e.f.h', 2); + it('should do a deep merge', async () => { + const test = await combineJSON(['__tests__/__json_files/shallow/*.json'], true); + expect(test).to.have.property('a', 2); + expect(test.b).to.eql({ a: 1, c: 2 }); + expect(test).to.have.nested.property('d.e.f.g', 1); + expect(test).to.have.nested.property('d.e.f.h', 2); }); - it('should do a shallow merge', () => { - var test = combineJSON(['__tests__/__json_files/shallow/*.json']); - expect(test).toHaveProperty('a', 2); - expect(test.b).toMatchObject({ c: 2 }); - expect(test).toHaveProperty('c', [3, 4]); - expect(test).not.toHaveProperty('d.e.f.g'); - expect(test).toHaveProperty('d.e.f.h', 2); + it('should do a shallow merge', async () => { + const test = await combineJSON(['__tests__/__json_files/shallow/*.json']); + expect(test).to.have.property('a', 2); + expect(test.b).to.eql({ c: 2 }); + expect(test).to.have.deep.property('c', [3, 4]); + expect(test).not.to.have.nested.property('d.e.f.g'); + expect(test).to.have.nested.property('d.e.f.h', 2); }); - it('should fail on invalid JSON', () => { - expect(combineJSON.bind(null, ['__tests__/__json_files/broken/*.json'], true)).toThrow( - /Failed to load or parse/, + it('should fail on invalid JSON', async () => { + await expectThrowsAsync( + () => combineJSON(['__tests__/__json_files/broken/*.json']), + "Failed to load or parse JSON or JS Object: JSON5: invalid character '!' at 2:18", ); }); - it('should fail if there is a collision and it is passed a collision function', () => { - expect( - combineJSON.bind( - null, - ['__tests__/__json_files/shallow/*.json'], - true, - function Collision(opts) { - expect(opts).toHaveProperty('key', 'a'); - expect(opts.target[opts.key]).toBe(1); - expect(opts.copy[opts.key]).toBe(2); + it('should fail if there is a collision and it is passed a collision function', async () => { + await expectThrowsAsync( + () => + combineJSON(['__tests__/__json_files/shallow/*.json'], true, function Collision(opts) { + expect(opts).to.have.property('key', 'a'); + expect(opts.target[opts.key]).to.equal(1); + expect(opts.copy[opts.key]).to.equal(2); throw new Error('test'); - }, - true, - ), - ).toThrow(/test/); + }), + 'test', + ); }); - it('should support json5', () => { - var test = combineJSON(['__tests__/__json_files/shallow/*.json5']); - expect(test).toHaveProperty('json5A', 5); - expect(test.d).toHaveProperty('json5e', 1); + it('should support json5', async () => { + const test = await combineJSON(['__tests__/__json_files/shallow/*.json5']); + expect(test).to.have.property('json5A', 5); + expect(test.d).to.have.property('json5e', 1); }); - it('should support jsonc', () => { - var test = combineJSON(['__tests__/__json_files/shallow/*.jsonc']); - expect(test).toHaveProperty('jsonCA', 5); - expect(test.d).toHaveProperty('jsonCe', 1); + it('should support jsonc', async () => { + const test = await combineJSON(['__tests__/__json_files/shallow/*.jsonc']); + expect(test).to.have.property('jsonCA', 5); + expect(test.d).to.have.property('jsonCe', 1); }); describe('custom parsers', () => { - it('should support yaml.parse', () => { + it('should support yaml.parse', async () => { const parsers = [ { pattern: /\.yaml$/, @@ -95,18 +93,18 @@ describe('utils', () => { parse: ({ contents }) => yaml.parse(contents), }, ]; - const output = combineJSON( + const output = await combineJSON( [`__tests__/__json_files/yaml.yaml`], false, null, false, parsers, ); - expect(output).toHaveProperty('foo', 'bar'); - expect(output).toHaveProperty('bar', '{foo}'); + expect(output).to.have.property('foo', 'bar'); + expect(output).to.have.property('bar', '{foo}'); }); - it('should multiple parsers on the same file', () => { + it('should multiple parsers on the same file', async () => { const testOutput = { test: 'test' }; const parsers = [ { @@ -122,14 +120,14 @@ describe('utils', () => { }, }, ]; - const output = combineJSON( + const output = await combineJSON( [`__tests__/__json_files/simple.json`], false, null, false, parsers, ); - expect(output).toHaveProperty('test', 'test'); + expect(output).to.have.property('test', 'test'); }); }); }); diff --git a/__tests__/utils/convertToBase64.test.js b/__tests__/utils/convertToBase64.test.js index d698bc21f..1d18f4a50 100644 --- a/__tests__/utils/convertToBase64.test.js +++ b/__tests__/utils/convertToBase64.test.js @@ -10,29 +10,29 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ - -var convertToBase64 = require('../../lib/utils/convertToBase64.js'); +import { expect } from 'chai'; +import convertToBase64 from '../../lib/utils/convertToBase64.js'; describe('utils', () => { describe('convertToBase64', () => { it('should error if filePath isnt a string', () => { - expect(convertToBase64.bind(null)).toThrow('filePath name must be a string'); - expect(convertToBase64.bind(null, [])).toThrow('filePath name must be a string'); - expect(convertToBase64.bind(null, {})).toThrow('filePath name must be a string'); + expect(convertToBase64.bind(null)).to.throw('filePath name must be a string'); + expect(convertToBase64.bind(null, [])).to.throw('filePath name must be a string'); + expect(convertToBase64.bind(null, {})).to.throw('filePath name must be a string'); }); it('should error if filePath isnt a file', () => { - expect(convertToBase64.bind(null, 'foo')).toThrow( + expect(convertToBase64.bind(null, 'foo')).to.throw( "ENOENT: no such file or directory, open 'foo'", ); }); it('should return a string', () => { - expect(typeof convertToBase64('__tests__/__configs/test.json')).toBe('string'); + expect(typeof convertToBase64('__tests__/__configs/test.json')).to.equal('string'); }); it('should be a valid base64 string', () => { - expect(convertToBase64('__tests__/__json_files/simple.json')).toEqual( + expect(convertToBase64('__tests__/__json_files/simple.json')).to.equal( 'ewogICJmb28iOiAiYmFyIiwKICAiYmFyIjogIntmb299Igp9', ); }); diff --git a/__tests__/utils/deepExtend.test.js b/__tests__/utils/deepExtend.test.js index 395df604f..4de40db25 100644 --- a/__tests__/utils/deepExtend.test.js +++ b/__tests__/utils/deepExtend.test.js @@ -10,55 +10,55 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ - -var deepExtend = require('../../lib/utils/deepExtend'); +import { expect } from 'chai'; +import deepExtend from '../../lib/utils/deepExtend.js'; describe('utils', () => { describe('deepExtend', () => { it('should return an object', () => { - var test = deepExtend(); - expect(typeof test).toBe('object'); + const test = deepExtend(); + expect(typeof test).to.equal('object'); }); - it('should override properties from right to left', () => { - var test = deepExtend([{ foo: 'bar' }, { foo: 'baz' }]); - expect(test).toHaveProperty('foo', 'baz'); + it('should override tokens from right to left', () => { + const test = deepExtend([{ foo: 'bar' }, { foo: 'baz' }]); + expect(test).to.have.property('foo', 'baz'); - var test2 = deepExtend([{ foo: 'bar' }, { foo: 'baz' }, { foo: 'blah' }]); - expect(test2).toHaveProperty('foo', 'blah'); + const test2 = deepExtend([{ foo: 'bar' }, { foo: 'baz' }, { foo: 'blah' }]); + expect(test2).to.have.property('foo', 'blah'); }); - it('overrides nested properties', () => { - var test = deepExtend([{ foo: { foo: 'bar' } }, { foo: { foo: 'baz' } }]); - expect(test).toHaveProperty('foo.foo', 'baz'); + it('overrides nested tokens', () => { + const test = deepExtend([{ foo: { foo: 'bar' } }, { foo: { foo: 'baz' } }]); + expect(test).to.have.nested.property('foo.foo', 'baz'); - var test2 = deepExtend([ + const test2 = deepExtend([ { foo: { foo: 'bar' } }, { foo: { foo: 'baz' } }, { foo: { foo: 'blah' } }, ]); - expect(test2).toHaveProperty('foo.foo', 'blah'); + expect(test2).to.have.nested.property('foo.foo', 'blah'); }); - it('properly merges nested properties', () => { - var test = deepExtend([{ foo: { bar: 'bar' } }, { foo: { baz: 'baz' } }]); - expect(test).toHaveProperty('foo.baz', 'baz'); - expect(test).toHaveProperty('foo.bar', 'bar'); + it('properly merges nested tokens', () => { + const test = deepExtend([{ foo: { bar: 'bar' } }, { foo: { baz: 'baz' } }]); + expect(test).to.have.nested.property('foo.baz', 'baz'); + expect(test).to.have.nested.property('foo.bar', 'bar'); - var test2 = deepExtend([ + const test2 = deepExtend([ { foo: { bar: 'bar' } }, { foo: { baz: 'baz' } }, { foo: { blah: 'blah' } }, ]); - expect(test2).toHaveProperty('foo.baz', 'baz'); - expect(test2).toHaveProperty('foo.bar', 'bar'); - expect(test2).toHaveProperty('foo.blah', 'blah'); + expect(test2).to.have.nested.property('foo.baz', 'baz'); + expect(test2).to.have.nested.property('foo.bar', 'bar'); + expect(test2).to.have.nested.property('foo.blah', 'blah'); }); it("shouldn't fail loudly if it is a normal deep extend", () => { - var test = deepExtend([{ foo: { bar: 'bar' } }, { foo: { baz: 'baz' } }], function () {}); - expect(test).toHaveProperty('foo.baz', 'baz'); - expect(test).toHaveProperty('foo.bar', 'bar'); + const test = deepExtend([{ foo: { bar: 'bar' } }, { foo: { baz: 'baz' } }], function () {}); + expect(test).to.have.nested.property('foo.baz', 'baz'); + expect(test).to.have.nested.property('foo.bar', 'bar'); }); describe('collision detection', () => { @@ -67,17 +67,20 @@ describe('utils', () => { deepExtend.bind(null, [{ foo: { bar: 'bar' } }, { foo: { bar: 'baz' } }], function () { throw new Error('danger danger. high voltage.'); }), - ).toThrow('danger danger. high voltage.'); + ).to.throw('danger danger. high voltage.'); }); it('the collision function should have the proper arguments', () => { - var test = deepExtend([{ foo: { bar: 'bar' } }, { foo: { bar: 'baz' } }], function (opts) { - expect(opts).toHaveProperty('target.bar', 'bar'); - expect(opts).toHaveProperty('copy.bar', 'baz'); - expect(opts.path[0]).toBe('foo'); - expect(opts).toHaveProperty('key', 'bar'); - }); - expect(test).toHaveProperty('foo.bar', 'baz'); + const test = deepExtend( + [{ foo: { bar: 'bar' } }, { foo: { bar: 'baz' } }], + function (opts) { + expect(opts).to.have.nested.property('target.bar', 'bar'); + expect(opts).to.have.nested.property('copy.bar', 'baz'); + expect(opts.path[0]).to.equal('foo'); + expect(opts).to.have.property('key', 'bar'); + }, + ); + expect(test).to.have.nested.property('foo.bar', 'baz'); }); }); }); diff --git a/__tests__/utils/flattenProperties.test.js b/__tests__/utils/flattenProperties.test.js index 5bfb3bbf1..2c0cbe902 100644 --- a/__tests__/utils/flattenProperties.test.js +++ b/__tests__/utils/flattenProperties.test.js @@ -10,27 +10,28 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ +import { expect } from 'chai'; +import flattenTokens from '../../lib/utils/flattenTokens.js'; -var flattenProperties = require('../../lib/utils/flattenProperties'); const sortBy = (key) => { return (a, b) => (a[key] > b[key] ? 1 : b[key] > a[key] ? -1 : 0); }; describe('utils', () => { - describe('flattenProperties', () => { + describe('flattenTokens', () => { it('should return an empty array', () => { - var ret = flattenProperties({}); - expect(ret).toEqual([]); + const ret = flattenTokens({}); + expect(ret).to.eql([]); }); it('should return the same array', () => { - var to_ret = []; - var ret = flattenProperties({}, to_ret); - expect(ret).toBe(ret); + const to_ret = []; + const ret = flattenTokens({}, to_ret); + expect(ret).to.equal(ret); }); it('should return leaf node values as an array', () => { - var properties = { + const tokens = { black: { value: '#000000', }, @@ -39,16 +40,16 @@ describe('utils', () => { }, }; - var expected_ret = [properties.black, properties.white]; + const expected_ret = [tokens.black, tokens.white]; - var sortedExpectedRet = expected_ret.sort(sortBy('value')); - var ret = flattenProperties(properties); - var sortedRet = ret.sort(sortBy('value')); - expect(sortedRet).toEqual(sortedExpectedRet); + const sortedExpectedRet = expected_ret.sort(sortBy('value')); + const ret = flattenTokens(tokens); + const sortedRet = ret.sort(sortBy('value')); + expect(sortedRet).to.eql(sortedExpectedRet); }); it('should return nested leaf node values as an array', () => { - var properties = { + const tokens = { color: { black: { value: '#000000', @@ -59,12 +60,12 @@ describe('utils', () => { }, }; - var expected_ret = [properties.color.black, properties.color.white]; + const expected_ret = [tokens.color.black, tokens.color.white]; - var sortedExpectedRet = expected_ret.sort(sortBy('value')); - var ret = flattenProperties(properties); - var sortedRet = ret.sort(sortBy('value')); - expect(sortedRet).toEqual(sortedExpectedRet); + const sortedExpectedRet = expected_ret.sort(sortBy('value')); + const ret = flattenTokens(tokens); + const sortedRet = ret.sort(sortBy('value')); + expect(sortedRet).to.eql(sortedExpectedRet); }); }); }); diff --git a/__tests__/utils/reference/getReferences.test.js b/__tests__/utils/reference/getReferences.test.js index e495bb7ed..861ca5250 100644 --- a/__tests__/utils/reference/getReferences.test.js +++ b/__tests__/utils/reference/getReferences.test.js @@ -11,11 +11,12 @@ * and limitations under the License. */ +import { expect } from 'chai'; // `.getReferences` is bound to a dictionary object, so to test it we will // create a dictionary object and then call `.getReferences` on it. -const createDictionary = require('../../../lib/utils/createDictionary'); +import createDictionary from '../../../lib/utils/createDictionary.js'; -const properties = { +const tokens = { color: { red: { value: '#f00' }, danger: { value: '{color.red.value}' }, @@ -47,37 +48,35 @@ const properties = { }, }; -const dictionary = createDictionary({ properties }); +const dictionary = createDictionary({ tokens }); describe('utils', () => { describe('reference', () => { describe('getReferences()', () => { it(`should return an empty array if the value has no references`, () => { - expect(dictionary.getReferences(properties.color.red.value)).toEqual([]); + expect(dictionary.getReferences(tokens.color.red.value)).to.eql([]); }); it(`should work with a single reference`, () => { - expect(dictionary.getReferences(properties.color.danger.value)).toEqual( - expect.arrayContaining([{ value: '#f00' }]), - ); + expect(dictionary.getReferences(tokens.color.danger.value)).to.eql([{ value: '#f00' }]); }); it(`should work with object values`, () => { - expect(dictionary.getReferences(properties.border.primary.value)).toEqual( - expect.arrayContaining([{ value: '2px' }, { value: '#f00' }]), - ); + expect(dictionary.getReferences(tokens.border.primary.value)).to.eql([ + { value: '#f00' }, + { value: '2px' }, + ]); }); it(`should work with objects that have numbers`, () => { - expect(dictionary.getReferences(properties.border.secondary.value)).toEqual( - expect.arrayContaining([{ value: '#f00' }]), - ); + expect(dictionary.getReferences(tokens.border.secondary.value)).to.eql([{ value: '#f00' }]); }); it(`should work with interpolated values`, () => { - expect(dictionary.getReferences(properties.border.tertiary.value)).toEqual( - expect.arrayContaining([{ value: '2px' }, { value: '#f00' }]), - ); + expect(dictionary.getReferences(tokens.border.tertiary.value)).to.eql([ + { value: '2px' }, + { value: '#f00' }, + ]); }); }); }); diff --git a/__tests__/utils/reference/resolveReference.test.js b/__tests__/utils/reference/resolveReference.test.js index f317be4f4..36f7a8461 100644 --- a/__tests__/utils/reference/resolveReference.test.js +++ b/__tests__/utils/reference/resolveReference.test.js @@ -10,8 +10,8 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ - -const resolveReference = require('../../../lib/utils/references/resolveReference'); +import { expect } from 'chai'; +import resolveReference from '../../../lib/utils/references/resolveReference.js'; const dictionary = { color: { @@ -30,26 +30,26 @@ const dictionary = { describe('resolveReference()', () => { it(`returns undefined for non-strings`, () => { - expect(resolveReference(42, dictionary)).toBe(undefined); + expect(resolveReference(42, dictionary)).to.be.undefined; }); it(`returns undefined if it does not find the path in the object`, () => { - expect(resolveReference(['color', 'foo'], dictionary)).toBe(undefined); - expect(resolveReference(['color', 'foo', 'bar'], dictionary)).toBe(undefined); + expect(resolveReference(['color', 'foo'], dictionary)).to.be.undefined; + expect(resolveReference(['color', 'foo', 'bar'], dictionary)).to.be.undefined; }); it(`returns the part of the object if referenced path exists`, () => { - expect(resolveReference(['color', 'palette', 'neutral', '0', 'value'], dictionary)).toEqual( + expect(resolveReference(['color', 'palette', 'neutral', '0', 'value'], dictionary)).to.equal( dictionary.color.palette.neutral['0'].value, ); - expect(resolveReference(['color'], dictionary)).toEqual(dictionary.color); + expect(resolveReference(['color'], dictionary)).to.equal(dictionary.color); }); it(`works with arrays`, () => { - expect(resolveReference(['arr'], dictionary)).toEqual(dictionary.arr); + expect(resolveReference(['arr'], dictionary)).to.equal(dictionary.arr); }); it(`works with array indices`, () => { - expect(resolveReference(['arr', '0'], dictionary)).toEqual(dictionary.arr[0]); + expect(resolveReference(['arr', '0'], dictionary)).to.equal(dictionary.arr[0]); }); }); diff --git a/__tests__/utils/reference/usesReference.test.js b/__tests__/utils/reference/usesReference.test.js index cf7ca9763..3a132adc4 100644 --- a/__tests__/utils/reference/usesReference.test.js +++ b/__tests__/utils/reference/usesReference.test.js @@ -10,55 +10,55 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ - -const usesReference = require('../../../lib/utils/references/usesReference'); +import { expect } from 'chai'; +import usesReference from '../../../lib/utils/references/usesReference.js'; describe('usesReference()', () => { it(`returns false for non-strings`, () => { - expect(usesReference(42)).toBe(false); + expect(usesReference(42)).to.be.false; }); it(`returns false if value uses no reference`, () => { - expect(usesReference('foo.bar')).toBe(false); + expect(usesReference('foo.bar')).to.be.false; }); it(`returns true if value is a reference`, () => { - expect(usesReference('{foo.bar}')).toBe(true); + expect(usesReference('{foo.bar}')).to.be.true; }); it(`should return true if value uses a reference`, () => { - expect(usesReference('baz {foo.bar}')).toBe(true); + expect(usesReference('baz {foo.bar}')).to.be.true; }); it(`returns true if an object uses a reference`, () => { - expect(usesReference({ foo: '{bar}' })).toBe(true); + expect(usesReference({ foo: '{bar}' })).to.be.true; }); it(`returns false if an object doesn't have a reference`, () => { - expect(usesReference({ foo: 'bar' })).toBe(false); + expect(usesReference({ foo: 'bar' })).to.be.false; }); it(`returns true if a nested object has a reference`, () => { - expect(usesReference({ foo: { bar: '{bar}' } })).toBe(true); + expect(usesReference({ foo: { bar: '{bar}' } })).to.be.true; }); it(`returns true if an array uses a reference`, () => { - expect(usesReference(['foo', '{bar}'])).toBe(true); + expect(usesReference(['foo', '{bar}'])).to.be.true; }); it(`returns false if an array doesn't use a reference`, () => { - expect(usesReference(['foo', 'bar'])).toBe(false); + expect(usesReference(['foo', 'bar'])).to.be.false; }); describe(`with custom options`, () => { - test(`returns true if value is reference`, () => { + it(`returns true if value is reference`, () => { const customOpts = { opening_character: '(', closing_character: ')', separator: '|', }; - expect(usesReference('(foo|bar)', customOpts)).toBe(true); + expect(usesReference('(foo|bar)', customOpts)).to.be.true; }); }); }); diff --git a/__tests__/utils/resolveObject.test.js b/__tests__/utils/resolveObject.test.js index 2fea0ce44..c8f6f8a85 100644 --- a/__tests__/utils/resolveObject.test.js +++ b/__tests__/utils/resolveObject.test.js @@ -10,131 +10,117 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ +import { expect } from 'chai'; +import { fileToJSON } from '../__helpers.js'; +import resolveObject from '../../lib/utils/resolveObject.js'; +import GroupMessages from '../../lib/utils/groupMessages.js'; -var resolveObject = require('../../lib/utils/resolveObject'); -var helpers = require('../__helpers'); -var GroupMessages = require('../../lib/utils/groupMessages'); - -var PROPERTY_REFERENCE_WARNINGS = GroupMessages.GROUP.PropertyReferenceWarnings; +const PROPERTY_REFERENCE_WARNINGS = GroupMessages.GROUP.PropertyReferenceWarnings; describe('utils', () => { describe('resolveObject', () => { it('should error on non-objects', () => { - expect(resolveObject.bind(null)).toThrow('Please pass an object in'); - expect(resolveObject.bind(null, 'foo')).toThrow('Please pass an object in'); - expect(resolveObject.bind(null, 0)).toThrow('Please pass an object in'); + expect(resolveObject.bind(null)).to.throw('Please pass an object in'); + expect(resolveObject.bind(null, 'foo')).to.throw('Please pass an object in'); + expect(resolveObject.bind(null, 0)).to.throw('Please pass an object in'); }); it('should not mutate the original object', () => { - var original = helpers.fileToJSON(__dirname + '/../__json_files/nested_references.json'); - var test = resolveObject(original); - expect(original).toHaveProperty('a.b.d', '{e.f.g}'); - expect(test).toHaveProperty('a.b.d', 2); + const original = fileToJSON('__tests__/__json_files/nested_references.json'); + const test = resolveObject(original); + expect(original).to.have.nested.property('a.b.d', '{e.f.g}'); + expect(test).to.have.nested.property('a.b.d', 2); }); it('should do simple references', () => { - var test = resolveObject(helpers.fileToJSON(__dirname + '/../__json_files/simple.json')); - expect(test).toHaveProperty('bar', 'bar'); + const test = resolveObject(fileToJSON('__tests__/__json_files/simple.json')); + expect(test).to.have.property('bar', 'bar'); }); it('should do simple interpolation for both strings and numbers', () => { - var test = resolveObject( - helpers.fileToJSON(__dirname + '/../__json_files/interpolation.json'), - ); - expect(test).toHaveProperty('c', 'test1 value text after'); - expect(test).toHaveProperty('d', 'text before test1 value'); - expect(test).toHaveProperty('e', 'text before test1 value text after'); - expect(test).toHaveProperty('f', '123 text after'); - expect(test).toHaveProperty('g', 'text before 123'); - expect(test).toHaveProperty('h', 'text before 123 text after'); + const test = resolveObject(fileToJSON('__tests__/__json_files/interpolation.json')); + expect(test).to.have.property('c', 'test1 value text after'); + expect(test).to.have.property('d', 'text before test1 value'); + expect(test).to.have.property('e', 'text before test1 value text after'); + expect(test).to.have.property('f', '123 text after'); + expect(test).to.have.property('g', 'text before 123'); + expect(test).to.have.property('h', 'text before 123 text after'); }); it('should do nested references', () => { - var obj = helpers.fileToJSON(__dirname + '/../__json_files/nested_references.json'); - var test = resolveObject(obj); - expect(test).toHaveProperty('i', 2); - expect(test).toHaveProperty('a.b.d', 2); - expect(test).toHaveProperty('e.f.h', 1); + const obj = fileToJSON('__tests__/__json_files/nested_references.json'); + const test = resolveObject(obj); + expect(test).to.have.property('i', 2); + expect(test).to.have.nested.property('a.b.d', 2); + expect(test).to.have.nested.property('e.f.h', 1); }); it('should handle nested pointers', () => { - var test = resolveObject( - helpers.fileToJSON(__dirname + '/../__json_files/nested_pointers.json'), - ); - expect(test).toHaveProperty('b', 1); - expect(test).toHaveProperty('c', 1); + const test = resolveObject(fileToJSON('__tests__/__json_files/nested_pointers.json')); + expect(test).to.have.property('b', 1); + expect(test).to.have.property('c', 1); }); it('should handle deep nested pointers', () => { - var test = resolveObject( - helpers.fileToJSON(__dirname + '/../__json_files/nested_pointers_2.json'), - ); - expect(test).toHaveProperty('a', 1); - expect(test).toHaveProperty('b', 1); - expect(test).toHaveProperty('c', 1); - expect(test).toHaveProperty('d', 1); - expect(test).toHaveProperty('e', 1); - expect(test).toHaveProperty('f', 1); - expect(test).toHaveProperty('g', 1); + const test = resolveObject(fileToJSON('__tests__/__json_files/nested_pointers_2.json')); + expect(test).to.have.property('a', 1); + expect(test).to.have.property('b', 1); + expect(test).to.have.property('c', 1); + expect(test).to.have.property('d', 1); + expect(test).to.have.property('e', 1); + expect(test).to.have.property('f', 1); + expect(test).to.have.property('g', 1); }); it('should handle deep nested pointers with string interpolation', () => { - var test = resolveObject( - helpers.fileToJSON(__dirname + '/../__json_files/nested_pointers_3.json'), - ); - expect(test).toHaveProperty('a', 'foo bon bee bae boo bla baz bar'); - expect(test).toHaveProperty('b', 'foo bon bee bae boo bla baz'); - expect(test).toHaveProperty('c', 'foo bon bee bae boo bla'); - expect(test).toHaveProperty('d', 'foo bon bee bae boo'); - expect(test).toHaveProperty('e', 'foo bon bee bae'); - expect(test).toHaveProperty('f', 'foo bon bee'); - expect(test).toHaveProperty('g', 'foo bon'); + const test = resolveObject(fileToJSON('__tests__/__json_files/nested_pointers_3.json')); + expect(test).to.have.property('a', 'foo bon bee bae boo bla baz bar'); + expect(test).to.have.property('b', 'foo bon bee bae boo bla baz'); + expect(test).to.have.property('c', 'foo bon bee bae boo bla'); + expect(test).to.have.property('d', 'foo bon bee bae boo'); + expect(test).to.have.property('e', 'foo bon bee bae'); + expect(test).to.have.property('f', 'foo bon bee'); + expect(test).to.have.property('g', 'foo bon'); }); it('should handle deep nested pointers and nested references', () => { - var test = resolveObject( - helpers.fileToJSON(__dirname + '/../__json_files/nested_pointers_4.json'), - ); - expect(test).toHaveProperty('a.a.a', 1); - expect(test).toHaveProperty('b.b.b', 1); - expect(test).toHaveProperty('c.c.c', 1); - expect(test).toHaveProperty('d.d.d', 1); - expect(test).toHaveProperty('e.e.e', 1); - expect(test).toHaveProperty('f.f.f', 1); - expect(test).toHaveProperty('g.g.g', 1); + const test = resolveObject(fileToJSON('__tests__/__json_files/nested_pointers_4.json')); + expect(test).to.have.nested.property('a.a.a', 1); + expect(test).to.have.nested.property('b.b.b', 1); + expect(test).to.have.nested.property('c.c.c', 1); + expect(test).to.have.nested.property('d.d.d', 1); + expect(test).to.have.nested.property('e.e.e', 1); + expect(test).to.have.nested.property('f.f.f', 1); + expect(test).to.have.nested.property('g.g.g', 1); }); it('should keep the type of the referenced property', () => { - var test = resolveObject( - helpers.fileToJSON(__dirname + '/../__json_files/reference_type.json'), - ); - expect(test).toHaveProperty('d', 1); - expect(typeof test.d).toBe('number'); - expect(typeof test.e).toBe('object'); - expect(Array.isArray(test.f)).toBeTruthy(); - expect(test).toHaveProperty('e.c', 2); + const test = resolveObject(fileToJSON('__tests__/__json_files/reference_type.json')); + expect(test).to.have.property('d', 1); + expect(typeof test.d).to.equal('number'); + expect(typeof test.e).to.equal('object'); + expect(Array.isArray(test.f)).to.be.true; + expect(test).to.have.nested.property('e.c', 2); }); it('should handle and evaluate items in an array', () => { - var test = resolveObject(helpers.fileToJSON(__dirname + '/../__json_files/array.json')); - expect(test.d[0]).toBe(2); - expect(test.d[1]).toBe(1); - expect(test.e[0].a).toBe(1); - expect(test.e[1].a).toBe(2); + const test = resolveObject(fileToJSON('__tests__/__json_files/array.json')); + expect(test.d[0]).to.equal(2); + expect(test.d[1]).to.equal(1); + expect(test.e[0].a).to.equal(1); + expect(test.e[1].a).to.equal(2); }); it("should throw if pointers don't exist", () => { - expect( - resolveObject.bind(helpers.fileToJSON(__dirname + '/../__json_files/non_existent.json')), - ).toThrow(); + expect(resolveObject.bind(fileToJSON('__tests__/__json_files/non_existent.json'))).to.throw(); }); it('should gracefully handle basic circular references', () => { GroupMessages.clear(PROPERTY_REFERENCE_WARNINGS); - resolveObject(helpers.fileToJSON(__dirname + '/../__json_files/circular.json')); - expect(GroupMessages.count(PROPERTY_REFERENCE_WARNINGS)).toBe(1); - expect(JSON.stringify(GroupMessages.fetchMessages(PROPERTY_REFERENCE_WARNINGS))).toBe( + resolveObject(fileToJSON('__tests__/__json_files/circular.json')); + expect(GroupMessages.count(PROPERTY_REFERENCE_WARNINGS)).to.equal(1); + expect(JSON.stringify(GroupMessages.fetchMessages(PROPERTY_REFERENCE_WARNINGS))).to.equal( JSON.stringify(['Circular definition cycle: a, b, c, d, a']), ); }); @@ -142,9 +128,9 @@ describe('utils', () => { it('should gracefully handle basic and nested circular references', () => { GroupMessages.clear(PROPERTY_REFERENCE_WARNINGS); - resolveObject(helpers.fileToJSON(__dirname + '/../__json_files/circular_2.json')); - expect(GroupMessages.count(PROPERTY_REFERENCE_WARNINGS)).toBe(1); - expect(JSON.stringify(GroupMessages.fetchMessages(PROPERTY_REFERENCE_WARNINGS))).toBe( + resolveObject(fileToJSON('__tests__/__json_files/circular_2.json')); + expect(GroupMessages.count(PROPERTY_REFERENCE_WARNINGS)).to.equal(1); + expect(JSON.stringify(GroupMessages.fetchMessages(PROPERTY_REFERENCE_WARNINGS))).to.equal( JSON.stringify(['Circular definition cycle: a.b.c, j, a.b.c']), ); }); @@ -152,9 +138,9 @@ describe('utils', () => { it('should gracefully handle nested circular references', () => { GroupMessages.clear(PROPERTY_REFERENCE_WARNINGS); - resolveObject(helpers.fileToJSON(__dirname + '/../__json_files/circular_3.json')); - expect(GroupMessages.count(PROPERTY_REFERENCE_WARNINGS)).toBe(1); - expect(JSON.stringify(GroupMessages.fetchMessages(PROPERTY_REFERENCE_WARNINGS))).toBe( + resolveObject(fileToJSON('__tests__/__json_files/circular_3.json')); + expect(GroupMessages.count(PROPERTY_REFERENCE_WARNINGS)).to.equal(1); + expect(JSON.stringify(GroupMessages.fetchMessages(PROPERTY_REFERENCE_WARNINGS))).to.equal( JSON.stringify(['Circular definition cycle: a.b, c.d.e, a.b']), ); }); @@ -162,9 +148,9 @@ describe('utils', () => { it('should gracefully handle multiple nested circular references', () => { GroupMessages.clear(PROPERTY_REFERENCE_WARNINGS); - resolveObject(helpers.fileToJSON(__dirname + '/../__json_files/circular_4.json')); - expect(GroupMessages.count(PROPERTY_REFERENCE_WARNINGS)).toBe(1); - expect(JSON.stringify(GroupMessages.fetchMessages(PROPERTY_REFERENCE_WARNINGS))).toBe( + resolveObject(fileToJSON('__tests__/__json_files/circular_4.json')); + expect(GroupMessages.count(PROPERTY_REFERENCE_WARNINGS)).to.equal(1); + expect(JSON.stringify(GroupMessages.fetchMessages(PROPERTY_REFERENCE_WARNINGS))).to.equal( JSON.stringify(['Circular definition cycle: a.b.c.d, e.f.g, h.i, a.b.c.d']), ); }); @@ -172,9 +158,9 @@ describe('utils', () => { it('should gracefully handle down-chain circular references', () => { GroupMessages.clear(PROPERTY_REFERENCE_WARNINGS); - resolveObject(helpers.fileToJSON(__dirname + '/../__json_files/circular_5.json')); - expect(GroupMessages.count(PROPERTY_REFERENCE_WARNINGS)).toBe(1); - expect(JSON.stringify(GroupMessages.fetchMessages(PROPERTY_REFERENCE_WARNINGS))).toBe( + resolveObject(fileToJSON('__tests__/__json_files/circular_5.json')); + expect(GroupMessages.count(PROPERTY_REFERENCE_WARNINGS)).to.equal(1); + expect(JSON.stringify(GroupMessages.fetchMessages(PROPERTY_REFERENCE_WARNINGS))).to.equal( JSON.stringify(['Circular definition cycle: l, m, l']), ); }); @@ -182,9 +168,9 @@ describe('utils', () => { it('should correctly replace multiple references without reference errors', function () { GroupMessages.clear(PROPERTY_REFERENCE_WARNINGS); - var obj = resolveObject(helpers.fileToJSON(__dirname + '/../__json_files/not_circular.json')); - expect(GroupMessages.count(PROPERTY_REFERENCE_WARNINGS)).toBe(0); - expect(JSON.stringify(obj)).toBe( + const obj = resolveObject(fileToJSON('__tests__/__json_files/not_circular.json')); + expect(GroupMessages.count(PROPERTY_REFERENCE_WARNINGS)).to.equal(0); + expect(JSON.stringify(obj)).to.equal( JSON.stringify({ prop1: { value: 'test1 value' }, prop2: { value: 'test2 value' }, @@ -204,7 +190,7 @@ describe('utils', () => { }); describe('ignorePaths', () => { - it('should not resolve values containing variables in ignored paths', () => { + it('should not resolve values containing constiables in ignored paths', () => { const test = resolveObject( { foo: { value: 'bar' }, @@ -215,24 +201,24 @@ describe('utils', () => { { ignorePaths: ['foo.value'] }, ); - expect(test).toHaveProperty('bar.value', '{foo.value}'); + expect(test).to.have.nested.property('bar.value', '{foo.value}'); }); }); describe('ignoreKeys', () => { it('should handle default value of original', () => { - var test = resolveObject({ + const test = resolveObject({ foo: { value: 'bar' }, bar: { value: '{foo.value}', original: '{foo.value}', }, }); - expect(test).toHaveProperty('bar.original', '{foo.value}'); + expect(test).to.have.nested.property('bar.original', '{foo.value}'); }); it('should handle any nested keys under the ignoreKey', () => { - var test = resolveObject({ + const test = resolveObject({ foo: { value: 'bar' }, bar: { value: '{foo.value}', @@ -244,12 +230,12 @@ describe('utils', () => { }, }, }); - expect(test).toHaveProperty('bar.original.value', '{foo.value}'); - expect(test).toHaveProperty('bar.original.foo.bar', '{foo.value}'); + expect(test).to.have.nested.property('bar.original.value', '{foo.value}'); + expect(test).to.have.nested.property('bar.original.foo.bar', '{foo.value}'); }); it('should handle passing in custom ignoreKeys', () => { - var test = resolveObject( + const test = resolveObject( { foo: { value: 'bar' }, bar: { @@ -261,11 +247,11 @@ describe('utils', () => { ignoreKeys: ['baz'], }, ); - expect(test).toHaveProperty('bar.baz', '{foo.value}'); + expect(test).to.have.nested.property('bar.baz', '{foo.value}'); }); it('should handle multiple keys', () => { - var test = resolveObject( + const test = resolveObject( { foo: { value: 'bar' }, bar: { @@ -278,12 +264,12 @@ describe('utils', () => { ignoreKeys: ['baz', 'original'], }, ); - expect(test).toHaveProperty('bar.original', '{foo.value}'); - expect(test).toHaveProperty('bar.baz', '{foo.value}'); + expect(test).to.have.nested.property('bar.original', '{foo.value}'); + expect(test).to.have.nested.property('bar.baz', '{foo.value}'); }); it('should not ignore anything if set to null or empty array', () => { - var test = resolveObject( + const test = resolveObject( { foo: { value: 'bar' }, bar: { @@ -295,9 +281,9 @@ describe('utils', () => { ignoreKeys: [], }, ); - expect(test).toHaveProperty('bar.original', 'bar'); + expect(test).to.have.nested.property('bar.original', 'bar'); - var test2 = resolveObject( + const test2 = resolveObject( { foo: { value: 'bar' }, bar: { @@ -309,9 +295,9 @@ describe('utils', () => { ignoreKeys: null, }, ); - expect(test2).toHaveProperty('bar.original', 'bar'); + expect(test2).to.have.nested.property('bar.original', 'bar'); - var test3 = resolveObject( + const test3 = resolveObject( { foo: { value: 'bar' }, bar: { @@ -323,26 +309,24 @@ describe('utils', () => { ignoreKeys: undefined, }, ); - expect(test3).toHaveProperty('bar.original', 'bar'); + expect(test3).to.have.nested.property('bar.original', 'bar'); }); }); it('should handle spaces', () => { - var test = resolveObject({ + const test = resolveObject({ foo: { value: 'bar' }, bar: { value: '{ foo.value }' }, }); - expect(test).toHaveProperty('foo.value', test.bar.value); + expect(test).to.have.nested.property('foo.value', test.bar.value); }); it('should collect multiple reference errors', () => { GroupMessages.clear(PROPERTY_REFERENCE_WARNINGS); - resolveObject( - helpers.fileToJSON(__dirname + '/../__json_files/multiple_reference_errors.json'), - ); - expect(GroupMessages.count(PROPERTY_REFERENCE_WARNINGS)).toBe(3); - expect(JSON.stringify(GroupMessages.fetchMessages(PROPERTY_REFERENCE_WARNINGS))).toBe( + resolveObject(fileToJSON('__tests__/__json_files/multiple_reference_errors.json')); + expect(GroupMessages.count(PROPERTY_REFERENCE_WARNINGS)).to.equal(3); + expect(JSON.stringify(GroupMessages.fetchMessages(PROPERTY_REFERENCE_WARNINGS))).to.equal( JSON.stringify([ "Reference doesn't exist: a.b tries to reference b.a, which is not defined", "Reference doesn't exist: a.c tries to reference b.c, which is not defined", @@ -353,12 +337,12 @@ describe('utils', () => { it('should handle 0', () => { GroupMessages.clear(PROPERTY_REFERENCE_WARNINGS); - var test = resolveObject({ + const test = resolveObject({ test: { value: '{zero.value}' }, zero: { value: 0 }, }); - expect(GroupMessages.fetchMessages(PROPERTY_REFERENCE_WARNINGS).length).toBe(0); - expect(test.test.value).toBe(0); + expect(GroupMessages.fetchMessages(PROPERTY_REFERENCE_WARNINGS).length).to.equal(0); + expect(test.test.value).to.equal(0); }); }); }); diff --git a/bin/style-dictionary b/bin/style-dictionary.js similarity index 84% rename from bin/style-dictionary rename to bin/style-dictionary.js index fc123efe3..d28156152 100755 --- a/bin/style-dictionary +++ b/bin/style-dictionary.js @@ -8,8 +8,8 @@ import path from 'path'; import { fileURLToPath } from 'url'; import node_fs from 'node:fs'; // usually also node:fs in this context, but can be customized by user -import { fs } from '../fs.js'; -import StyleDictionary from '../index.js'; +import { fs } from 'style-dictionary/fs'; +import StyleDictionary from 'style-dictionary'; const __dirname = path.dirname(fileURLToPath(import.meta.url)); @@ -34,7 +34,7 @@ function getConfigPath(options) { } } - return configPath; + return path.resolve(configPath); } program.version(pkg.version).description(pkg.description).usage('[command] [options]'); @@ -98,14 +98,14 @@ async function styleDictionaryBuild(options) { const configPath = getConfigPath(options); // Create a style dictionary object with the config - const styleDictionary = await StyleDictionary.extend(configPath); + const styleDictionary = new StyleDictionary(configPath); if (options.platform && options.platform.length > 0) { - options.platform.forEach(function (platform) { - styleDictionary.buildPlatform(platform); - }); + return Promise.all( + options.platforms.map((platform) => styleDictionary.buildPlatform(platform)), + ); } else { - styleDictionary.buildAllPlatforms(); + return styleDictionary.buildAllPlatforms(); } } @@ -114,14 +114,14 @@ async function styleDictionaryClean(options) { const configPath = getConfigPath(options); // Create a style dictionary object with the config - const styleDictionary = await StyleDictionary.extend(configPath); + const styleDictionary = new StyleDictionary(configPath); if (options.platform && options.platform.length > 0) { - options.platform.forEach(function (platform) { - styleDictionary.cleanPlatform(platform); - }); + return Promise.all( + options.platforms.map((platform) => styleDictionary.cleanPlatform(platform)), + ); } else { - styleDictionary.cleanAllPlatforms(); + return styleDictionary.cleanAllPlatforms(); } } diff --git a/docs/config.md b/docs/config.md index 70a34f9d3..45f7f79cf 100644 --- a/docs/config.md +++ b/docs/config.md @@ -145,17 +145,17 @@ You would then change your npm script or CLI command to run that file with Node: ## Attributes -| Attribute | Type | Description | -| :--------- | :----------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| transform | Object (optional) | Custom [transforms](transforms.md) you can include inline rather than using `.registerTransform`. The keys in this object will be the transform's name, the value should be an object with `type` | -| format | Object (optional) | Custom [formats](formats.md) you can include inline in the configuration rather than using `.registerFormat`. The keys in this object will be for format's name and value should be the formatter function. | -| action | Object (optional) | Custom inline [actions](actions.md). The keys in this object will be the action's name and the value should be an object containing `do` and `undo` methods. | -| parsers | Array[Parser] (optional) | Custom [file parsers](parsers.md) to run on input files | -| include | Array[String] (optional) | An array of file path [globs](https://github.com/isaacs/node-glob) to design token files that contain default styles. Style Dictionary uses this as a base collection of design tokens. The tokens found using the "source" attribute will overwrite tokens found using include. | -| source | Array[String] | An array of file path [globs](https://github.com/isaacs/node-glob) to design token files. Style Dictionary will do a deep merge of all of the token files, allowing you to organize your files however you want. | -| tokens | Object | The tokens object is a way to include inline design tokens as opposed to using the `source` and `include` arrays. | -| properties | Object | **DEPRECATED** The properties object has been renamed to `tokens`. Using the `properties` object will still work for backwards compatibility. | -| platforms | Object[Platform] | An object containing [platform](#platform) config objects that describe how the Style Dictionary should build for that platform. You can add any arbitrary attributes on this object that will get passed to formats and actions (more on these in a bit). This is useful for things like build paths, name prefixes, variable names, etc. | +| Attribute | Type | Description | +| :-------- | :----------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| transform | Object (optional) | Custom [transforms](transforms.md) you can include inline rather than using `.registerTransform`. The keys in this object will be the transform's name, the value should be an object with `type` | +| format | Object (optional) | Custom [formats](formats.md) you can include inline in the configuration rather than using `.registerFormat`. The keys in this object will be for format's name and value should be the formatter function. | +| action | Object (optional) | Custom inline [actions](actions.md). The keys in this object will be the action's name and the value should be an object containing `do` and `undo` methods. | +| parsers | Array[Parser] (optional) | Custom [file parsers](parsers.md) to run on input files | +| include | Array[String] (optional) | An array of file path [globs](https://github.com/isaacs/node-glob) to design token files that contain default styles. Style Dictionary uses this as a base collection of design tokens. The tokens found using the "source" attribute will overwrite tokens found using include. | +| source | Array[String] | An array of file path [globs](https://github.com/isaacs/node-glob) to design token files. Style Dictionary will do a deep merge of all of the token files, allowing you to organize your files however you want. | +| tokens | Object | The tokens object is a way to include inline design tokens as opposed to using the `source` and `include` arrays. | + +| platforms | Object[Platform] | An object containing [platform](#platform) config objects that describe how the Style Dictionary should build for that platform. You can add any arbitrary attributes on this object that will get passed to formats and actions (more on these in a bit). This is useful for things like build paths, name prefixes, variable names, etc. | ### Platform diff --git a/docs/formats.md b/docs/formats.md index de3a43656..4d9f0d1ab 100644 --- a/docs/formats.md +++ b/docs/formats.md @@ -393,7 +393,7 @@ which uses: prefix, indentation, separator, suffix, and commentStyle. options.formattingObject

Custom formatting properties that define parts of a declaration line in code. The configurable strings are: prefix, indentation, separator, suffix, and commentStyle. Those are used to generate a line like this: ${indentation}${prefix}${prop.name}${separator} ${prop.value}${suffix}

- options.themeableBoolean

[false] - Whether tokens should default to being themeable.

+ options.themeableBoolean

[false] - Whether properties should default to being themeable.

@@ -441,7 +441,7 @@ default file header. options.commentStyleString

The only options are 'short' and 'xml', which will use the // or <!-- --> style comments respectively. Anything else will use /* style comments.

- options.formattingObject

Custom formatting properties that define parts of a comment in code. The configurable strings are: prefix, lineSeparator, header, and footer.

+ options.formattingObject

Custom formatting tokens that define parts of a comment in code. The configurable strings are: prefix, lineSeparator, header, and footer.

@@ -545,7 +545,7 @@ Supports numbers, strings, booleans, arrays and objects of any of those types. StyleDictionary.registerFormat({ name: 'myCustomFormat', formatter: function ({ dictionary, options }) { - return dictionary.allProperties + return dictionary.allTokens .map(function (prop) { var to_ret_prop = 'export const ' + prop.name + ' : ' + getTypeScriptType(prop.value) + ';'; if (prop.comment) to_ret_prop = to_ret_prop.concat(' // ' + prop.comment); diff --git a/docs/using_the_npm_module.md b/docs/using_the_npm_module.md index cda810780..c86d47eb5 100644 --- a/docs/using_the_npm_module.md +++ b/docs/using_the_npm_module.md @@ -15,7 +15,7 @@ $ npm install -D style-dictionary To use the style dictionary build system in node, there are generally three steps: 1. Require/import the StyleDictionary module -1. Extend the module with a configuration, creating the fully defined dictionary (importing all properties and intended outputs) +1. Extend the module with a configuration, creating the fully defined dictionary (importing all tokens and intended outputs) 1. Call one or more build calls for various platforms To use the NPM module you will need to update your NPM script that runs Style Dictionary from using the CLI command to running Node on the file you are using. @@ -50,7 +50,7 @@ Alternatively, you can pass in a [configuration](config.md) object to the extend ```javascript const StyleDictionary = require('style-dictionary').extend({ - source: ['properties/**/*.json'], + source: ['tokens/**/*.json'], platforms: { scss: { transformGroup: 'scss', diff --git a/docs/version_3.md b/docs/version_3.md index 57d7f0eba..6c02d560b 100644 --- a/docs/version_3.md +++ b/docs/version_3.md @@ -31,9 +31,9 @@ If you have an existing project, you can upgrade to 3.0 by updating the version ### Style Properties → Design Tokens -Style Dictionary is moving to the term "design tokens", both in documentation and in code. This has become the industry standard term for a while and it is time we respect that. Until now, Style Dictionary had called these "style properties" or just "properties", with some parts of the documentation also mentioning "design tokens". We want to be consistent with the direction of the community as well as in our documentation and code. We use the terms `properties` and `allProperties` in different APIs in Style Dictionary. To be consistent in documentation as well as code, we will be moving to using `tokens` and `allTokens`. +Style Dictionary has moved to the term "design tokens", both in documentation and in code. This has become the industry standard term for a while and it is time we respect that. Before, Style Dictionary had called these "style properties" or just "properties", with some parts of the documentation also mentioning "design tokens". We want to be consistent with the direction of the community as well as in our documentation and code. We now use the terms `tokens` and `allTokens` in different APIs in Style Dictionary. -Don't worry! This change is backwards-compatible; you will still be able to use `properties` and `allProperties` wherever you currently do in your code. If you want, you can update those to tokens and allTokens and everything will work as expected. Moving forward, all examples and documentation will use the term "design tokens" and "tokens" rather than "style properties" and "properties". We do recommend using `tokens` and `allTokens` in new code from here on out! +This change was backwards-compatible in Style Dictionary v3, but no longer is in v4. ### Transitive transforms diff --git a/examples/advanced/auto-rebuild-watcher/package.json b/examples/advanced/auto-rebuild-watcher/package.json index 0b06472ab..262cf3236 100644 --- a/examples/advanced/auto-rebuild-watcher/package.json +++ b/examples/advanced/auto-rebuild-watcher/package.json @@ -19,4 +19,4 @@ "chokidar-cli": "^1.2.0", "style-dictionary": "3.8.0" } -} \ No newline at end of file +} diff --git a/fs-node.js b/fs-node.js new file mode 100644 index 000000000..277944dfe --- /dev/null +++ b/fs-node.js @@ -0,0 +1,6 @@ +import _fs from 'node:fs'; +import { setFs, fs } from './fs.js'; + +setFs(_fs); + +export { fs, setFs }; diff --git a/index-node.js b/index-node.js deleted file mode 100644 index af7acdd79..000000000 --- a/index-node.js +++ /dev/null @@ -1,7 +0,0 @@ -import fs from 'node:fs'; -import StyleDictionary from './index.js'; -import { setFs } from './fs.js'; - -setFs(fs); - -export default StyleDictionary; diff --git a/index.js b/index.js deleted file mode 100644 index 269615ad7..000000000 --- a/index.js +++ /dev/null @@ -1,84 +0,0 @@ -/* - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with - * the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR - * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - -import extend from './lib/extend.js'; -import transform from './lib/common/transforms.js'; -import transformGroup from './lib/common/transformGroups.js'; -import format from './lib/common/formats.js'; -import action from './lib/common/actions.js'; -import * as formatHelpers from './lib/common/formatHelpers/index.js'; -import filter from './lib/common/filters.js'; -import registerTransform from './lib/register/transform.js'; -import registerTransformGroup from './lib/register/transformGroup.js'; -import registerFormat from './lib/register/format.js'; -import registerAction from './lib/register/action.js'; -import registerFilter from './lib/register/filter.js'; -import registerParser from './lib/register/parser.js'; -import registerFileHeader from './lib/register/fileHeader.js'; -import exportPlatform from './lib/exportPlatform.js'; -import buildPlatform from './lib/buildPlatform.js'; -import buildAllPlatforms from './lib/buildAllPlatforms.js'; -import cleanPlatform from './lib/cleanPlatform.js'; -import cleanAllPlatforms from './lib/cleanAllPlatforms.js'; - -// const TEMPLATE_DEPRECATION_WARNINGS = GroupMessages.GROUP.TemplateDeprecationWarnings; -// const REGISTER_TEMPLATE_DEPRECATION_WARNINGS = GroupMessages.GROUP.RegisterTemplateDeprecationWarnings; -// const SASS_MAP_FORMAT_DEPRECATION_WARNINGS = GroupMessages.GROUP.SassMapFormatDeprecationWarnings; - -/** - * Style Dictionary module - * - * @module style-dictionary - * @typicalname StyleDictionary - * @example - * ```js - * import StyleDictionary from 'style-dictionary'; - * (await StyleDictionary.extend('config.json')).buildAllPlatforms(); - * ``` - */ - -export default { - // Placeholder is transformed on prepublish -> see scripts/inject-version.js - // Another option might be import pkg from './package.json' with { "type": "json" } which would work in both browser and node, but support is not there yet. - // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import#browser_compatibility - VERSION: '', - tokens: {}, - allTokens: [], - options: {}, - - transform, - transformGroup, - format, - action, - formatHelpers, - filter, - parsers: [], // we need to initialise the array, since we don't have built-in parsers - fileHeader: {}, - - registerTransform, - registerTransformGroup, - registerFormat, - registerAction, - registerFilter, - registerParser, - registerFileHeader, - - exportPlatform, - buildPlatform, - buildAllPlatforms, - - cleanPlatform, - cleanAllPlatforms, - - extend, -}; diff --git a/lib/StyleDictionary.js b/lib/StyleDictionary.js new file mode 100644 index 000000000..8c4bfb399 --- /dev/null +++ b/lib/StyleDictionary.js @@ -0,0 +1,436 @@ +/* + * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with + * the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR + * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +import JSON5 from 'json5'; +import path from '@bundled-es-modules/path-browserify'; +import { fs } from 'style-dictionary/fs'; +import { deepmerge } from './utils/deepmerge.js'; + +import transform from './common/transforms.js'; +import transformGroup from './common/transformGroups.js'; +import format from './common/formats.js'; +import action from './common/actions.js'; +import * as formatHelpers from './common/formatHelpers/index.js'; +import filter from './common/filters.js'; + +import registerTransform from './register/transform.js'; +import registerTransformGroup from './register/transformGroup.js'; +import registerFormat from './register/format.js'; +import registerAction from './register/action.js'; +import registerFilter from './register/filter.js'; +import registerParser from './register/parser.js'; +import registerFileHeader from './register/fileHeader.js'; + +import combineJSON from './utils/combineJSON.js'; +import deepExtend from './utils/deepExtend.js'; +import resolveObject from './utils/resolveObject.js'; +import getName from './utils/references/getName.js'; +import createDictionary from './utils/createDictionary.js'; +import GroupMessages from './utils/groupMessages.js'; + +import transformObject from './transform/object.js'; +import transformConfig from './transform/config.js'; +import performActions from './performActions.js'; +import buildFiles from './buildFiles.js'; +import cleanFiles from './cleanFiles.js'; +import cleanDirs from './cleanDirs.js'; +import cleanActions from './cleanActions.js'; + +const PROPERTY_VALUE_COLLISIONS = GroupMessages.GROUP.PropertyValueCollisions; +const PROPERTY_REFERENCE_WARNINGS = GroupMessages.GROUP.PropertyReferenceWarnings; + +// const TEMPLATE_DEPRECATION_WARNINGS = GroupMessages.GROUP.TemplateDeprecationWarnings; +// const REGISTER_TEMPLATE_DEPRECATION_WARNINGS = GroupMessages.GROUP.RegisterTemplateDeprecationWarnings; +// const SASS_MAP_FORMAT_DEPRECATION_WARNINGS = GroupMessages.GROUP.SassMapFormatDeprecationWarnings; + +/** + * Style Dictionary module + * + * @module style-dictionary + * @typicalname StyleDictionary + * @example + * ```js + * import StyleDictionary from 'style-dictionary'; + * new StyleDictionary.extend('config.json').buildAllPlatforms(); + * ``` + */ + +export default class StyleDictionary { + // Placeholder is transformed on prepublish -> see scripts/inject-version.js + // Another option might be import pkg from './package.json' with { "type": "json" } which would work in both browser and node, but support is not there yet. + // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import#browser_compatibility + static VERSION = ''; + static formatHelpers = formatHelpers; + + /** + * Below is a ton of boilerplate. Explanation: + * + * You can register things on the StyleDictionary class level e.g. StyleDictionary.registerFormat() + * You can also register these things on StyleDictionary instance (through config) or on StyleDictionary instance's platform property. + * + * Therefore, we have to make use of static props vs instance props and use getters and setters to merge these together. + * In the extend() method is where we merge config props into the SD instance. + * Platform specific options are handled and merged by exportPlatform -> transformConfig + */ + static _transform = transform; + static _transformGroup = transformGroup; + static _format = format; + static _action = action; + static _filter = filter; + static _fileHeader = {}; + static _parsers = []; // we need to initialise the array, since we don't have built-in parsers + + static registerTransform(...args) { + return registerTransform.call(this, ...args); + } + + static registerTransformGroup(...args) { + return registerTransformGroup.call(this, ...args); + } + + static registerFormat(...args) { + return registerFormat.call(this, ...args); + } + + static registerAction(...args) { + return registerAction.call(this, ...args); + } + + static registerFilter(...args) { + return registerFilter.call(this, ...args); + } + + static registerParser(...args) { + return registerParser.call(this, ...args); + } + + static registerFileHeader(...args) { + return registerFileHeader.call(this, ...args); + } + + constructor(config = {}, { init = true } = {}) { + // dynamically add these instance methods to delegate to class methods for register + ['transform', 'transformGroup', 'format', 'action', 'filter', 'fileHeader', 'parser'].forEach( + (prop) => { + Object.defineProperty(this, `register${prop.charAt(0).toUpperCase() + prop.slice(1)}`, { + value: (...args) => { + this.constructor[`register${prop.charAt(0).toUpperCase() + prop.slice(1)}`](...args); + }, + }); + + // Dynamically add getter/setter pairs so we can act as a gateway, merging + // the SD class options with SD instance options + const _prop = prop === 'parser' ? 'parsers' : prop; + Object.defineProperty(this, _prop, { + get: function () { + if (prop === 'parser') { + return [...this.constructor[`_${_prop}`], ...this[`__${_prop}`]]; + } + return { ...this.constructor[`_${_prop}`], ...this[`__${_prop}`] }; + }, + set: function (v) { + this[`__${_prop}`] = v; + }, + }); + }, + ); + + this.config = config; + this.options = {}; + this.tokens = {}; + this.allTokens = {}; + this.parsers = []; + this.hasInitialized = new Promise((resolve) => { + this.hasInitializedResolve = resolve; + }); + + // By default, always call async extend function when constructing new SD instance + // However, for testability and managing error handling, + // you can call constructor with { init: false } + // and call SDInstance.extend() manually (and catch the error). + if (init) { + this.init(config); + } + } + + async init() { + return this.extend(undefined, true); + } + + async extend(config = this.config, mutateOriginal = false) { + // by default, if extend is called it means extending the current instance + // with a new instance without mutating the original + if (!mutateOriginal) { + const newSD = new StyleDictionary(deepmerge(this.options, config), { init: false }); + return newSD.init(); + } + + let options; + let inlineTokens = {}; + let includeTokens = {}; + let sourceTokens = {}; + // Overloaded method, can accept a string as a path that points to a JS or + // JSON file or a plain object. Potentially refactor. + if (typeof config === 'string') { + // get ext name without leading . + const ext = path.extname(config).replace(/^\./, ''); + if (['json', 'json5', 'jsonc'].includes(ext)) { + options = JSON5.parse(fs.readFileSync(config, 'utf-8')); + } else { + // import path in Node has to be relative to cwd, in browser to root + const fileToImport = path.resolve(typeof window === 'object' ? '' : process.cwd(), config); + options = (await import(/* webpackIgnore: true */ fileToImport)).default; + } + } else { + options = config; + } + + // SD Config options should be passed to class instance as well + Object.entries(options).forEach(([key, val]) => { + this[key] = val; + }); + this.options = options; + + // Creating a new object and copying over the options + // Also keeping an options object in case + + // grab the inline tokens, ones either defined in the configuration object + // or that already exist from extending another style dictionary instance + // with `tokens` keys + inlineTokens = deepExtend([{}, this.tokens || {}]); + + // Update tokens with includes from dependencies + if (this.options.include) { + if (!Array.isArray(this.options.include)) throw new Error('include must be an array'); + + includeTokens = await combineJSON(this.options.include, true, null, false, this.parsers); + this.include = null; // We don't want to carry over include references + } + + // Update tokens with current package's source + // These highest precedence + if (this.options.source) { + if (!Array.isArray(this.options.source)) throw new Error('source must be an array'); + sourceTokens = await combineJSON( + this.options.source, + true, + function Collision(prop) { + GroupMessages.add( + PROPERTY_VALUE_COLLISIONS, + `Collision detected at: ${prop.path.join('.')}! Original value: ${ + prop.target[prop.key] + }, New value: ${prop.copy[prop.key]}`, + ); + }, + true, + this.parsers, + ); + + if (GroupMessages.count(PROPERTY_VALUE_COLLISIONS) > 0) { + const collisions = GroupMessages.flush(PROPERTY_VALUE_COLLISIONS).join('\n'); + console.log(`\n${PROPERTY_VALUE_COLLISIONS}:\n${collisions}\n\n`); + if (options.log === 'error') { + throw new Error('Collisions detected'); + } + } + + this.source = null; // We don't want to carry over the source references + } + + // Merge inline, include, and source tokens + this.tokens = deepExtend([{}, inlineTokens, includeTokens, sourceTokens]); + this.hasInitializedResolve(); + + // For chaining + return this; + } + + async exportPlatform(platform) { + await this.hasInitialized; + + if (!platform || !this.options.platforms[platform]) { + throw new Error('Please supply a valid platform'); + } + + // We don't want to mutate the original object + const platformConfig = transformConfig(this.options.platforms[platform], this, platform); + + let exportableResult = this.tokens; + + // list keeping paths of props with applied value transformations + const transformedPropRefs = []; + // list keeping paths of props that had references in it, and therefore + // could not (yet) have transformed + const deferredPropValueTransforms = []; + + const transformationContext = { + transformedPropRefs, + deferredPropValueTransforms, + }; + + let deferredPropCount = 0; + let finished; + + while (typeof finished === 'undefined') { + // We keep up transforming and resolving until all props are resolved + // and every defined transformation was executed. Remember: transformations + // can only be executed, if the value to be transformed, has no references + // in it. So resolving may lead to enable further transformations, and sub + // sequent resolving may enable even more transformations - and so on. + // So we keep this loop running until sub sequent transformations are ineffective. + // + // Take the following example: + // + // color.brand = { + // value: "{color.base.green}" + // } + // + // color.background.button.primary.base = { + // value: "{color.brand.value}", + // color: { + // desaturate: 0.5 + // } + // } + // + // color.background.button.primary.hover = { + // value: "{color.background.button.primary.base}", + // color: { + // darken: 0.2 + // } + // } + // + // As you can see 'color.background.button.primary.hover' is a variation + // of 'color.background.button.primary.base' which is a variation of + // 'color.base.green'. These transitive references are solved by running + // this loop until all tokens are transformed and resolved. + + // We need to transform the object before we resolve the + // variable names because if a value contains concatenated + // values like "1px solid {color.border.base}" we want to + // transform the original value (color.border.base) before + // replacing that value in the string. + const transformed = transformObject(exportableResult, platformConfig, transformationContext); + + // referenced values, that have not (yet) been transformed should be excluded from resolving + const ignorePathsToResolve = deferredPropValueTransforms.map((p) => getName([p, 'value'])); + exportableResult = resolveObject(transformed, { + ignorePaths: ignorePathsToResolve, + }); + + const newDeferredPropCount = deferredPropValueTransforms.length; + + // nothing left to transform -> ready + if (newDeferredPropCount === 0) { + finished = true; + // or deferred count doesn't go down, that means there + // is a circular reference -> ready (but errored) + } else if (deferredPropCount === newDeferredPropCount) { + // if we didn't resolve any deferred references then we have a circular reference + // the resolveObject method will find the circular references + // we do this in case there are multiple circular references + resolveObject(transformed); + finished = true; + } else { + // neither of these things, keep going. + deferredPropCount = newDeferredPropCount; + } + } + + if (GroupMessages.count(PROPERTY_REFERENCE_WARNINGS) > 0) { + const warnings = GroupMessages.flush(PROPERTY_REFERENCE_WARNINGS).join('\n'); + console.log(`\n${PROPERTY_REFERENCE_WARNINGS}:\n${warnings}\n\n`); + throw new Error('Problems were found when trying to resolve property references'); + } + + return exportableResult; + } + + async buildPlatform(platform) { + await this.hasInitialized; + + console.log('\n' + platform); + + if (!this.options || !(platform in (this.options.platforms || {}))) { + throw new Error(`Platform "${platform}" does not exist`); + } + + let tokens; + // We don't want to mutate the original object + const platformConfig = transformConfig(this.options.platforms[platform], this, platform); + + // We need to transform the object before we resolve the + // variable names because if a value contains concatenated + // values like "1px solid {color.border.base}" we want to + // transform the original value (color.border.base) before + // replacing that value in the string. + tokens = await this.exportPlatform(platform); + + // This is the dictionary object we pass to the file + // building and action methods. + const dictionary = createDictionary({ tokens }); + + buildFiles(dictionary, platformConfig); + performActions(dictionary, platformConfig); + + // For chaining + return this; + } + + async buildAllPlatforms() { + await this.hasInitialized; + await Promise.all(Object.keys(this.options.platforms).map((key) => this.buildPlatform(key))); + + // For chaining + return this; + } + + async cleanPlatform(platform) { + await this.hasInitialized; + + console.log('\n' + platform); + + if (!this.options || !(platform in (this.options.platforms || {}))) { + throw new Error('Platform ' + platform + " doesn't exist"); + } + + let tokens; + // We don't want to mutate the original object + const platformConfig = transformConfig(this.options.platforms[platform], this, platform); + + // We need to transform the object before we resolve the + // variable names because if a value contains concatenated + // values like "1px solid {color.border.base}" we want to + // transform the original value (color.border.base) before + // replacing that value in the string. + tokens = await this.exportPlatform(platform); + + // This is the dictionary object we pass to the file + // cleaning and action methods. + const dictionary = createDictionary({ tokens }); + + // We clean files first, then actions, ...and then directories? + cleanFiles(dictionary, platformConfig); + cleanActions(dictionary, platformConfig); + cleanDirs(dictionary, platformConfig); + + // For chaining + return this; + } + + async cleanAllPlatforms() { + await this.hasInitialized; + await Promise.all(Object.keys(this.options.platforms).map((key) => this.cleanPlatform(key))); + // For chaining + return this; + } +} diff --git a/lib/buildAllPlatforms.js b/lib/buildAllPlatforms.js index 7744d4a99..3a90781f7 100644 --- a/lib/buildAllPlatforms.js +++ b/lib/buildAllPlatforms.js @@ -26,10 +26,8 @@ * ``` */ export default function buildAllPlatforms() { - var self = this; - - Object.keys(this.options.platforms).forEach(function (key) { - self.buildPlatform(key); + Object.keys(this.options.platforms).forEach((key) => { + this.buildPlatform(key); }); // For chaining diff --git a/lib/buildFile.js b/lib/buildFile.js index 555ea9fb1..df55e0372 100644 --- a/lib/buildFile.js +++ b/lib/buildFile.js @@ -13,14 +13,14 @@ import path from '@bundled-es-modules/path-browserify'; import chalk from 'chalk'; -import { fs } from '../fs.js'; -import filterProperties from './filterProperties.js'; +import { fs } from 'style-dictionary/fs'; +import filterTokens from './filterTokens.js'; import GroupMessages from './utils/groupMessages.js'; import createFormatArgs from './utils/createFormatArgs.js'; /** - * Takes the style property object and a format and returns a + * Takes the style token object and a format and returns a * string that can be written to a file. * @memberOf StyleDictionary * @param {Object} file @@ -50,60 +50,58 @@ export default function buildFile(file = {}, platform = {}, dictionary = {}) { const dirname = path.dirname(fullDestination); if (!fs.existsSync(dirname)) fs.mkdirSync(dirname, { recursive: true }); - const filteredProperties = filterProperties(dictionary, filter); + const filteredTokens = filterTokens(dictionary, filter); const filteredDictionary = Object.assign({}, dictionary, { - properties: filteredProperties.properties, - allProperties: filteredProperties.allProperties, - tokens: filteredProperties.properties, - allTokens: filteredProperties.allProperties, - // keep the unfiltered properties object for reference resolution - _properties: dictionary.properties, + tokens: filteredTokens.tokens, + allTokens: filteredTokens.allTokens, + // keep the unfiltered tokens object for reference resolution + _tokens: dictionary.tokens, }); - // if properties object is empty, return without creating a file + // if tokens object is empty, return without creating a file if ( - filteredProperties.hasOwnProperty('properties') && - Object.keys(filteredProperties.properties).length === 0 && - filteredProperties.properties.constructor === Object + filteredTokens.hasOwnProperty('tokens') && + Object.keys(filteredTokens.tokens).length === 0 && + filteredTokens.tokens.constructor === Object ) { - let warnNoFile = `No properties for ${destination}. File not created.`; + let warnNoFile = `No tokens for ${destination}. File not created.`; console.log(chalk.rgb(255, 140, 0)(warnNoFile)); return null; } - // Check for property name Collisions + // Check for token name Collisions const nameCollisionObj = {}; - filteredProperties.allTokens && - filteredProperties.allTokens.forEach((propertyData) => { - let propertyName = propertyData.name; - if (!nameCollisionObj[propertyName]) { - nameCollisionObj[propertyName] = []; + filteredTokens.allTokens && + filteredTokens.allTokens.forEach((tokenData) => { + let tokenName = tokenData.name; + if (!nameCollisionObj[tokenName]) { + nameCollisionObj[tokenName] = []; } - nameCollisionObj[propertyName].push(propertyData); + nameCollisionObj[tokenName].push(tokenData); }); const PROPERTY_NAME_COLLISION_WARNINGS = GroupMessages.GROUP.PropertyNameCollisionWarnings + ':' + destination; GroupMessages.clear(PROPERTY_NAME_COLLISION_WARNINGS); - Object.keys(nameCollisionObj).forEach((propertyName) => { - if (nameCollisionObj[propertyName].length > 1) { - let collisions = nameCollisionObj[propertyName] - .map((properties) => { - let propertyPathText = chalk.rgb(255, 69, 0)(properties.path.join('.')); - let valueText = chalk.rgb(255, 140, 0)(properties.value); - return propertyPathText + ' ' + valueText; + Object.keys(nameCollisionObj).forEach((tokenName) => { + if (nameCollisionObj[tokenName].length > 1) { + let collisions = nameCollisionObj[tokenName] + .map((tokens) => { + let tokenPathText = chalk.rgb(255, 69, 0)(tokens.path.join('.')); + let valueText = chalk.rgb(255, 140, 0)(tokens.value); + return tokenPathText + ' ' + valueText; }) .join('\n '); GroupMessages.add( PROPERTY_NAME_COLLISION_WARNINGS, `Output name ${chalk .rgb(255, 69, 0) - .bold(propertyName)} was generated by:\n ${collisions}`, + .bold(tokenName)} was generated by:\n ${collisions}`, ); } }); - let propertyNamesCollisionCount = GroupMessages.count(PROPERTY_NAME_COLLISION_WARNINGS); + let tokenNamesCollisionCount = GroupMessages.count(PROPERTY_NAME_COLLISION_WARNINGS); fs.writeFileSync( fullDestination, format( @@ -121,12 +119,12 @@ export default function buildFile(file = {}, platform = {}, dictionary = {}) { // don't show name collision warnings for nested type formats // because they are not relevant. - if ((nested || propertyNamesCollisionCount === 0) && filteredReferencesCount === 0) { + if ((nested || tokenNamesCollisionCount === 0) && filteredReferencesCount === 0) { console.log(chalk.bold.green(`✔︎ ${fullDestination}`)); } else { console.log(`⚠️ ${fullDestination}`); - if (propertyNamesCollisionCount > 0) { - let propertyNamesCollisionWarnings = GroupMessages.fetchMessages( + if (tokenNamesCollisionCount > 0) { + let tokenNamesCollisionWarnings = GroupMessages.fetchMessages( PROPERTY_NAME_COLLISION_WARNINGS, ).join('\n '); let title = `While building ${chalk @@ -139,12 +137,12 @@ export default function buildFile(file = {}, platform = {}, dictionary = {}) { )( [ 'This many-to-one issue is usually caused by some combination of:', - '* conflicting or similar paths/names in property definitions', + '* conflicting or similar paths/names in token definitions', '* platform transforms/transformGroups affecting names, especially when removing specificity', '* overly inclusive file filters', ].join('\n '), ); - let warn = `${title}\n ${propertyNamesCollisionWarnings}\n${help}`; + let warn = `${title}\n ${tokenNamesCollisionWarnings}\n${help}`; console.log(chalk.rgb(255, 140, 0).bold(warn)); } diff --git a/lib/buildPlatform.js b/lib/buildPlatform.js index 18c6e0857..8e03aa109 100644 --- a/lib/buildPlatform.js +++ b/lib/buildPlatform.js @@ -44,7 +44,7 @@ export default function buildPlatform(platform) { throw new Error(`Platform "${platform}" does not exist`); } - let properties; + let tokens; // We don't want to mutate the original object const platformConfig = transformConfig(this.options.platforms[platform], this, platform); @@ -53,11 +53,11 @@ export default function buildPlatform(platform) { // values like "1px solid {color.border.base}" we want to // transform the original value (color.border.base) before // replacing that value in the string. - properties = this.exportPlatform(platform); + tokens = this.exportPlatform(platform); // This is the dictionary object we pass to the file // building and action methods. - const dictionary = createDictionary({ properties }); + const dictionary = createDictionary({ tokens }); buildFiles(dictionary, platformConfig); performActions(dictionary, platformConfig); diff --git a/lib/cleanDir.js b/lib/cleanDir.js index 9cb13e562..0b609f81a 100644 --- a/lib/cleanDir.js +++ b/lib/cleanDir.js @@ -13,7 +13,7 @@ import chalk from 'chalk'; import path from '@bundled-es-modules/path-browserify'; -import { fs } from '../fs.js'; +import { fs } from 'style-dictionary/fs'; /** * Takes the style property object and a format and returns a diff --git a/lib/cleanDirs.js b/lib/cleanDirs.js index b9bc09908..c18b563e3 100644 --- a/lib/cleanDirs.js +++ b/lib/cleanDirs.js @@ -14,8 +14,8 @@ import cleanDir from './cleanDir.js'; /** - * Takes a platform config object and a properties - * object and cleans all the files. Properties object + * Takes a platform config object and a tokens + * object and cleans all the files. Tokens object * should have been transformed and resolved before this * point. * @memberOf StyleDictionary diff --git a/lib/cleanFile.js b/lib/cleanFile.js index 9b4e92e08..81c85ce9d 100644 --- a/lib/cleanFile.js +++ b/lib/cleanFile.js @@ -12,7 +12,7 @@ */ import chalk from 'chalk'; -import { fs } from '../fs.js'; +import { fs } from 'style-dictionary/fs'; /** * Takes the style property object and a format and returns a diff --git a/lib/cleanPlatform.js b/lib/cleanPlatform.js index 03ee2c7bc..0ba339ea6 100644 --- a/lib/cleanPlatform.js +++ b/lib/cleanPlatform.js @@ -34,7 +34,7 @@ export default function cleanPlatform(platform) { throw new Error('Platform ' + platform + " doesn't exist"); } - let properties; + let tokens; // We don't want to mutate the original object const platformConfig = transformConfig(this.options.platforms[platform], this, platform); @@ -43,11 +43,11 @@ export default function cleanPlatform(platform) { // values like "1px solid {color.border.base}" we want to // transform the original value (color.border.base) before // replacing that value in the string. - properties = this.exportPlatform(platform); + tokens = this.exportPlatform(platform); // This is the dictionary object we pass to the file // cleaning and action methods. - const dictionary = createDictionary({ properties }); + const dictionary = createDictionary({ tokens }); // We clean files first, then actions, ...and then directories? cleanFiles(dictionary, platformConfig); diff --git a/lib/common/actions.js b/lib/common/actions.js index 7fe7cff9e..6dfdf82b3 100644 --- a/lib/common/actions.js +++ b/lib/common/actions.js @@ -11,7 +11,7 @@ * and limitations under the License. */ -import { fs } from '../../fs.js'; +import { fs } from 'style-dictionary/fs'; /** * @namespace Actions @@ -25,20 +25,25 @@ export default { */ 'android/copyImages': { do: function (dictionary, config) { - var imagesDir = config.buildPath + 'android/main/res/drawable-'; + const imagesDir = `${config.buildPath}android/main/res/drawable-`; dictionary.allTokens.forEach(function (token) { if (token.attributes.category === 'asset' && token.attributes.type === 'image') { - var name = token.path.slice(2, 4).join('_'); - fs.copyFileSync(token.value, imagesDir + token.attributes.state + '/' + name + '.png'); + const name = token.path.slice(2, 4).join('_'); + const dir = `${imagesDir}${token.attributes.state}`; + const path = `${dir}/${name}.png`; + fs.mkdirSync(dir, { recursive: true }); + fs.copyFileSync(token.value, path); } }); }, undo: function (dictionary, config) { - var imagesDir = config.buildPath + 'android/main/res/drawable-'; + const imagesDir = `${config.buildPath}android/main/res/drawable-`; dictionary.allTokens.forEach(function (token) { if (token.attributes.category === 'asset' && token.attributes.type === 'image') { - var name = token.path.slice(2, 4).join('_'); - fs.unlinkSync(imagesDir + token.attributes.state + '/' + name + '.png'); + const name = token.path.slice(2, 4).join('_'); + const dir = `${imagesDir}${token.attributes.state}`; + const path = `${dir}/${name}.png`; + fs.unlinkSync(path); } }); }, diff --git a/lib/common/formatHelpers/getTypeScriptType.js b/lib/common/formatHelpers/getTypeScriptType.js index 68de6b3e0..3c81768d9 100644 --- a/lib/common/formatHelpers/getTypeScriptType.js +++ b/lib/common/formatHelpers/getTypeScriptType.js @@ -22,7 +22,7 @@ import { unique } from '../../utils/es6_.js'; * StyleDictionary.registerFormat({ * name: 'myCustomFormat', * formatter: function({ dictionary, options }) { - * return dictionary.allProperties.map(function(prop) { + * return dictionary.allTokens.map(function(prop) { * var to_ret_prop = 'export const ' + prop.name + ' : ' + getTypeScriptType(prop.value) + ';'; * if (prop.comment) * to_ret_prop = to_ret_prop.concat(' // ' + prop.comment); diff --git a/lib/common/formats.js b/lib/common/formats.js index ddea392bb..49d8cd80d 100644 --- a/lib/common/formats.js +++ b/lib/common/formats.js @@ -468,7 +468,7 @@ const formats = { 'typescript/es6-declarations': function ({ dictionary, file, options }) { return ( fileHeader({ file }) + - dictionary.allProperties + dictionary.allTokens .map(function (prop) { let to_ret_prop = ''; if (prop.comment) to_ret_prop += '/** ' + prop.comment + ' */\n'; @@ -529,7 +529,7 @@ const formats = { * formatter: function({ dictionary }) { * return 'declare const root: RootObject\n' + * 'export default root\n' + - * JsonToTS(dictionary.properties).join('\n'); + * JsonToTS(dictionary.tokens).join('\n'); * }, * }); * ``` @@ -788,7 +788,7 @@ declare const ${moduleName}: ${JSON.stringify(treeWalker(dictionary.tokens), nul */ 'compose/object': function ({ dictionary, options, file }) { const template = _template(composeObject); - let allProperties; + let allTokens; const { outputReferences } = options; const formatProperty = createPropertyFormatter({ outputReferences, @@ -800,14 +800,14 @@ declare const ${moduleName}: ${JSON.stringify(treeWalker(dictionary.tokens), nul }); if (outputReferences) { - allProperties = [...dictionary.allProperties].sort(sortByReference(dictionary)); + allTokens = [...dictionary.allTokens].sort(sortByReference(dictionary)); } else { - allProperties = [...dictionary.allProperties].sort(sortByName); + allTokens = [...dictionary.allTokens].sort(sortByName); } options = setComposeObjectProperties(options); - return template({ allProperties, file, options, formatProperty, fileHeader }); + return template({ allTokens, file, options, formatProperty, fileHeader }); }, // iOS templates diff --git a/lib/common/templates/compose/object.kt.template.js b/lib/common/templates/compose/object.kt.template.js index 91f413717..c927c5f6e 100644 --- a/lib/common/templates/compose/object.kt.template.js +++ b/lib/common/templates/compose/object.kt.template.js @@ -23,7 +23,7 @@ package <%= file.packageName %>; %> object <%= file.className %> { - <%= allProperties.map(function(prop) { + <%= allTokens.map(function(prop) { let comment = ""; if (prop.comment) { comment = \`/** \${prop.comment} */\\n \` diff --git a/lib/common/templates/css/fonts.css.template.js b/lib/common/templates/css/fonts.css.template.js index 17ed9ca27..1581326b5 100644 --- a/lib/common/templates/css/fonts.css.template.js +++ b/lib/common/templates/css/fonts.css.template.js @@ -1,4 +1,4 @@ -export default `<% Object.values(properties && properties.asset && properties.asset.font || {}).forEach(function(font) { +export default `<% Object.values(tokens && tokens.asset && tokens.asset.font || {}).forEach(function(font) { var fileFormatArr = []; if (font.eot) { fileFormatArr.push("url('../" + font.eot.value + "');\\n\\tsrc: url('../" + font.eot.value + "?#iefix') format('embedded-opentype')"); diff --git a/lib/common/templates/ios/singleton.m.template.js b/lib/common/templates/ios/singleton.m.template.js index 9db1acb84..a1e1d66ba 100644 --- a/lib/common/templates/ios/singleton.m.template.js +++ b/lib/common/templates/ios/singleton.m.template.js @@ -34,7 +34,7 @@ export default `<% static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ - dictionary = <%= buildDictionary(dictionary.properties) %>; + dictionary = <%= buildDictionary(dictionary.tokens) %>; }); return dictionary; @@ -42,25 +42,25 @@ export default `<% @end -<% function buildDictionary(props, indent) { +<% function buildDictionary(tokens, indent) { indent = indent || ' '; var to_ret = '@{\\n'; - if (props.hasOwnProperty('value')) { - var value = props.attributes.category === 'size' || props.attributes.category === 'time' ? '@' + props.value : props.value; + if (tokens.hasOwnProperty('value')) { + var value = tokens.attributes.category === 'size' || tokens.attributes.category === 'time' ? '@' + tokens.value : tokens.value; to_ret += indent + '@"value": ' + value + ',\\n'; - to_ret += indent + '@"name": @"' + props.name + '",\\n'; + to_ret += indent + '@"name": @"' + tokens.name + '",\\n'; - for(var name in props.attributes) { - if (props.attributes[name]) { - to_ret += indent + '@"' + name + '": @"' + props.attributes[name] + '",\\n'; + for(var name in tokens.attributes) { + if (tokens.attributes[name]) { + to_ret += indent + '@"' + name + '": @"' + tokens.attributes[name] + '",\\n'; } } // remove last comma return to_ret.slice(0, -2) + '\\n' + indent + '}'; } else { - for(var name in props) { - to_ret += indent + '@"' + name + '": ' + buildDictionary(props[name], indent + ' ') + ',\\n'; + for(var name in tokens) { + to_ret += indent + '@"' + name + '": ' + buildDictionary(tokens[name], indent + ' ') + ',\\n'; } // remove last comma return to_ret.slice(0, -2) + '\\n' + indent + '}'; diff --git a/lib/common/templates/scss/map-deep.template.js b/lib/common/templates/scss/map-deep.template.js index 6115395bb..42fc32cdd 100644 --- a/lib/common/templates/scss/map-deep.template.js +++ b/lib/common/templates/scss/map-deep.template.js @@ -17,9 +17,9 @@ export default `<% // output the list of tokens as a Sass nested map // (the values are pointing to the variables) // - print(\`$\${file.mapName||'tokens'}: \${processJsonNode(dictionary.properties, 0)};\\n\`); + print(\`$\${file.mapName||'tokens'}: \${processJsonNode(dictionary.tokens, 0)};\\n\`); - // recursive function to process a properties JSON node + // recursive function to process a tokens JSON node // function processJsonNode(obj, depth) { var output = ''; @@ -31,7 +31,7 @@ export default `<% // if we have found a leaf (a property with a value) append the value output += \`$\${obj.name}\`; } else { - // if we have found a group of properties, use the Sass group "(...)" syntax and loop -recursively- on the children + // if we have found a group of tokens, use the Sass group "(...)" syntax and loop -recursively- on the children output += '(\\n' output += Object.keys(obj).map(function(newKey) { var newProp = obj[newKey]; diff --git a/lib/exportPlatform.js b/lib/exportPlatform.js index 54a198c72..86c05a072 100644 --- a/lib/exportPlatform.js +++ b/lib/exportPlatform.js @@ -40,7 +40,7 @@ export default function exportPlatform(platform) { // We don't want to mutate the original object const platformConfig = transformConfig(this.options.platforms[platform], this); - let exportableResult = this.properties; + let exportableResult = this.tokens; // list keeping paths of props with applied value transformations const transformedPropRefs = []; @@ -87,7 +87,7 @@ export default function exportPlatform(platform) { // As you can see 'color.background.button.primary.hover' is a variation // of 'color.background.button.primary.base' which is a variation of // 'color.base.green'. These transitive references are solved by running - // this loop until all properties are transformed and resolved. + // this loop until all tokens are transformed and resolved. // We need to transform the object before we resolve the // variable names because if a value contains concatenated diff --git a/lib/extend.js b/lib/extend.js deleted file mode 100644 index b8223f243..000000000 --- a/lib/extend.js +++ /dev/null @@ -1,162 +0,0 @@ -/* - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with - * the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR - * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - -import JSON5 from 'json5'; - -import path from '@bundled-es-modules/path-browserify'; -import { fs } from '../fs.js'; -import combineJSON from './utils/combineJSON.js'; -import deepExtend from './utils/deepExtend.js'; -import { isString, isArray } from './utils/es6_.js'; - -import GroupMessages from './utils/groupMessages.js'; - -const PROPERTY_VALUE_COLLISIONS = GroupMessages.GROUP.PropertyValueCollisions; - -/** - * Either a string to a JSON file that contains configuration for the style dictionary or a plain Javascript object - * that contains the configuration. - * @typedef {(object|string)} Config - * @prop {String[]} source - Paths to token files - * @prop {Platform} platforms.platform - A platform - * @example - * ```json - * { - * "source": ["tokens/*.json"], - * "platforms": { - * "scss": { - * "transformGroup": "scss", - * "buildPath": "web/sass/", - * "files": [ - * { - * "format": "scss/variables", - * "destination": "_variables.scss" - * } - * ], - * "actions": ["copy_assets"] - * } - * } - * } - * ``` - */ - -/** - * An object representing a platform - * @typedef {Object} Platform - * @prop {String} transformGroup - * @prop {String} transforms - */ - -/** - * Create a Style Dictionary - * @static - * @memberof module:style-dictionary - * @param {Config} config - Configuration options to build your style dictionary. If you pass a string, - * it will be used as a path to a JSON config file. You can also pass an object with the configuration. - * @returns {module:style-dictionary} - * @example - * ```js - * import StyleDictionary from 'style-dictionary'; - * const sd = await StyleDictionary.extend('config.json'); - * - * const sd = await StyleDictionary.extend({ - * source: ['tokens/*.json'], - * platforms: { - * scss: { - * transformGroup: 'scss', - * buildPath: 'build/', - * files: [{ - * destination: 'variables.scss', - * format: 'scss/variables' - * }] - * } - * // ... - * } - * }); - * ``` - */ -export default async function extend(cfg) { - let options, to_ret; - let inlineTokens = {}; - let includeTokens = {}; - let sourceTokens = {}; - - // Overloaded method, can accept a string as a path that points to a JS or - // JSON file or a plain object. Potentially refactor. - if (isString(cfg)) { - if (path.extname(cfg) === 'json') { - options = JSON5.parse(fs.readFileSync(path.resolve(cfg), 'utf-8')); - } else { - options = (await import(/** webpackIgnore: true */ cfg)).default; - } - } else { - options = cfg; - } - - // Creating a new object and copying over the options - // Also keeping an options object in case - to_ret = deepExtend([{}, this, { options: options }, options]); - - // grab the inline tokens, ones either defined in the configuration object - // or that already exist from extending another style dictionary instance - // with `properties` or `tokens` keys - inlineTokens = deepExtend([{}, to_ret.tokens || {}, to_ret.properties || {}]); - - // Update tokens with includes from dependencies - if (options.include) { - if (!isArray(options.include)) throw new Error('include must be an array'); - - includeTokens = combineJSON(options.include, true, null, false, to_ret.parsers); - - to_ret.include = null; // We don't want to carry over include references - } - - // Update tokens with current package's source - // These highest precedence - if (options.source) { - if (!isArray(options.source)) throw new Error('source must be an array'); - sourceTokens = combineJSON( - options.source, - true, - function Collision(prop) { - GroupMessages.add( - PROPERTY_VALUE_COLLISIONS, - `Collision detected at: ${prop.path.join('.')}! Original value: ${ - prop.target[prop.key] - }, New value: ${prop.copy[prop.key]}`, - ); - }, - true, - to_ret.parsers, - ); - - if (GroupMessages.count(PROPERTY_VALUE_COLLISIONS) > 0) { - const collisions = GroupMessages.flush(PROPERTY_VALUE_COLLISIONS).join('\n'); - console.log(`\n${PROPERTY_VALUE_COLLISIONS}:\n${collisions}\n\n`); - if (options.log === 'error') { - throw new Error('Collisions detected'); - } - } - - to_ret.source = null; // We don't want to carry over the source references - } - - // Merge inline, include, and source tokens - const tokens = deepExtend([{}, inlineTokens, includeTokens, sourceTokens]); - - // Add tokens to both .tokens and .properties - to_ret.tokens = tokens; - to_ret.properties = tokens; - - return to_ret; -} diff --git a/lib/filterProperties.js b/lib/filterTokens.js similarity index 69% rename from lib/filterProperties.js rename to lib/filterTokens.js index 2dcbe8280..ce9e390ac 100644 --- a/lib/filterProperties.js +++ b/lib/filterTokens.js @@ -14,21 +14,21 @@ import { reduce, isObject, filter as filterUtil, assign, isEmpty } from './utils/es6_.js'; /** - * Takes a nested object of properties and filters them using the provided + * Takes a nested object of tokens and filters them using the provided * function. * - * @param {Object} properties + * @param {Object} tokens * @param {Function} filter - A function that receives a property object and * returns `true` if the property should be included in the output or `false` * if the property should be excluded from the output. - * @returns {Object[]} properties - A new object containing only the properties + * @returns {Object[]} tokens - A new object containing only the tokens * that matched the filter. */ -function filterPropertyObject(properties, filter) { - // Use reduce to generate a new object with the unwanted properties filtered +function filterTokenObject(tokens, filter) { + // Use reduce to generate a new object with the unwanted tokens filtered // out return reduce( - properties, + tokens, (result, value, key) => { // If the value is not an object, we don't know what it is. We return it as-is. if (!isObject(value)) { @@ -39,10 +39,10 @@ function filterPropertyObject(properties, filter) { } else if (typeof value.value !== 'undefined') { return filter(value) ? assign(result, { [key]: value }) : result; // If we got here we have an object that is not a property. We'll assume - // it's an object containing multiple properties and recursively filter it - // using the `filterPropertyObject` function. + // it's an object containing multiple tokens and recursively filter it + // using the `filterTokenObject` function. } else { - const filtered = filterPropertyObject(value, filter); + const filtered = filterTokenObject(value, filter); // If the filtered object is not empty then add it to the final `result` // object. If it is empty then every property inside of it was filtered // out, then exclude it entirely from the final `result` object. @@ -54,22 +54,22 @@ function filterPropertyObject(properties, filter) { } /** - * Takes an array of properties and filters them using the provided function. + * Takes an array of tokens and filters them using the provided function. * - * @param {Object[]} properties + * @param {Object[]} tokens * @param {Function} filter - A function that receives a property object and * returns `true` if the property should be included in the output or `false` * if the property should be excluded from the output. - * @returns {Object[]} properties - A new array containing only the properties + * @returns {Object[]} tokens - A new array containing only the tokens * that matched the filter. */ -function filterPropertyArray(properties, filter) { +function filterTokenArray(tokens, filter) { // Go lodash! - return filterUtil(properties, filter); + return filterUtil(tokens, filter); } /** - * Takes a dictionary and filters the `allProperties` array and the `properties` + * Takes a dictionary and filters the `allTokens` array and the `tokens` * object using a function provided by the user. * * @param {Object} dictionary @@ -77,16 +77,16 @@ function filterPropertyArray(properties, filter) { * and returns `true` if the token should be included in the output * or `false` if the token should be excluded from the output * @returns {Object} dictionary - A new dictionary containing only the - * properties that matched the filter (or the original dictionary if no filter + * tokens that matched the filter (or the original dictionary if no filter * function was provided). */ -export default function filterProperties(dictionary, filter) { +export default function filterTokens(dictionary, filter) { if (!filter) { return dictionary; } else { return { - allProperties: filterPropertyArray(dictionary.allProperties, filter), - properties: filterPropertyObject(dictionary.properties, filter), + allTokens: filterTokenArray(dictionary.allTokens, filter), + tokens: filterTokenObject(dictionary.tokens, filter), }; } } diff --git a/lib/register/action.js b/lib/register/action.js index 55c666fb4..11c2ea501 100644 --- a/lib/register/action.js +++ b/lib/register/action.js @@ -50,7 +50,7 @@ export default function registerAction(action) { if (typeof action.name !== 'string') throw new Error('name must be a string'); if (typeof action.do !== 'function') throw new Error('do must be a function'); - this.action[action.name] = { + this._action[action.name] = { do: action.do, undo: action.undo, }; diff --git a/lib/register/fileHeader.js b/lib/register/fileHeader.js index 82cbcd841..1ee679da8 100644 --- a/lib/register/fileHeader.js +++ b/lib/register/fileHeader.js @@ -40,7 +40,7 @@ export default function registerFileHeader(options) { if (typeof options.fileHeader !== 'function') throw new Error("Can't register file header; options.fileHeader must be a function"); - this.fileHeader[options.name] = options.fileHeader; + this._fileHeader[options.name] = options.fileHeader; return this; } diff --git a/lib/register/filter.js b/lib/register/filter.js index 79bcac785..104fef2e3 100644 --- a/lib/register/filter.js +++ b/lib/register/filter.js @@ -35,7 +35,7 @@ export default function registerFilter(filter) { if (typeof filter.matcher !== 'function') throw new Error("Can't register filter; filter.matcher must be a function"); - this.filter[filter.name] = filter.matcher; + this._filter[filter.name] = filter.matcher; return this; } diff --git a/lib/register/format.js b/lib/register/format.js index 40b11d925..6efc43a2b 100644 --- a/lib/register/format.js +++ b/lib/register/format.js @@ -66,7 +66,7 @@ export default function registerFormat(format) { if (typeof format.formatter !== 'function') throw new Error("Can't register format; format.formatter must be a function"); - this.format[format.name] = format.formatter; + this._format[format.name] = format.formatter; return this; } diff --git a/lib/register/parser.js b/lib/register/parser.js index b778082fd..2e8ec17ed 100644 --- a/lib/register/parser.js +++ b/lib/register/parser.js @@ -34,7 +34,7 @@ export default function registerParser(options) { if (typeof options.parse !== 'function') throw new Error("Can't register parser; parser.parse must be a function"); - this.parsers.push(options); + this._parsers.push(options); return this; } diff --git a/lib/register/transform.js b/lib/register/transform.js index 5c7f31484..e7c60ab9a 100644 --- a/lib/register/transform.js +++ b/lib/register/transform.js @@ -54,12 +54,13 @@ export default function registerTransform(options) { throw new Error('matcher must be a function'); if (typeof options.transformer !== 'function') throw new Error('transformer must be a function'); - this.transform[options.name] = { + const transform = { type: options.type, matcher: options.matcher, transitive: !!options.transitive, transformer: options.transformer, }; + this._transform[options.name] = transform; return this; } diff --git a/lib/register/transformGroup.js b/lib/register/transformGroup.js index 479396b63..6295bcc73 100644 --- a/lib/register/transformGroup.js +++ b/lib/register/transformGroup.js @@ -41,11 +41,11 @@ export default function registerTransformGroup(options) { options.transforms.forEach( function (t) { - if (!(t in this.transform)) + if (!(t in this._transform)) throw new Error('transforms must be an array of registered value transforms'); }.bind(this), ); - this.transformGroup[options.name] = options.transforms; + this._transformGroup[options.name] = options.transforms; return this; } diff --git a/lib/transform/config.js b/lib/transform/config.js index 18addea79..18d7fa106 100644 --- a/lib/transform/config.js +++ b/lib/transform/config.js @@ -19,17 +19,17 @@ const TEMPLATE_DEPRECATION_WARNINGS = GroupMessages.GROUP.TemplateDeprecationWar const MISSING_TRANSFORM_ERRORS = GroupMessages.GROUP.MissingRegisterTransformErrors; /** - * Takes a platform config object and returns a new one + * Takes a platform platformConfig object and returns a new one * that has filters, transforms, formats, and actions * mapped properly. * @private - * @param {Object} config + * @param {Object} platformConfig * @param {Object} dictionary * @param {Object} platformName (only used for error messaging) * @returns {Object} */ -export default function transformConfig(config, dictionary, platformName) { - const to_ret = clone(config); +export default function transformConfig(platformConfig, dictionary, platformName) { + const to_ret = clone(platformConfig); // The platform can define either a transformGroup or an array // of transforms. If given a transformGroup that doesn't exist, @@ -82,8 +82,8 @@ None of ${transform_warnings} match the name of a registered transform. } // Apply registered fileHeaders onto the platform options - if (config.options && config.options.fileHeader) { - const fileHeader = config.options.fileHeader; + if (platformConfig.options && platformConfig.options.fileHeader) { + const fileHeader = platformConfig.options.fileHeader; if (typeof fileHeader === 'string') { if (dictionary.fileHeader[fileHeader]) { to_ret.options.fileHeader = dictionary.fileHeader[fileHeader]; @@ -97,7 +97,7 @@ None of ${transform_warnings} match the name of a registered transform. } } - to_ret.files = (config.files || []).map(function (file) { + to_ret.files = (platformConfig.files || []).map(function (file) { const ext = { options: {} }; if (file.options && file.options.fileHeader) { const fileHeader = file.options.fileHeader; @@ -152,7 +152,7 @@ None of ${transform_warnings} match the name of a registered transform. return deepExtend([{}, file, ext]); }); - to_ret.actions = (config.actions || []).map(function (action) { + to_ret.actions = (platformConfig.actions || []).map(function (action) { if (typeof dictionary.action[action].undo !== 'function') { console.warn(action + ' action does not have a clean function!'); } diff --git a/lib/transform/object.js b/lib/transform/object.js index bb91ca348..1b0c296b9 100644 --- a/lib/transform/object.js +++ b/lib/transform/object.js @@ -14,8 +14,8 @@ import { isPlainObject, pull } from '../utils/es6_.js'; import usesValueReference from '../utils/references/usesReference.js'; import getName from '../utils/references/getName.js'; -import transformProperty from './property.js'; -import propertySetup from './propertySetup.js'; +import transformToken from './token.js'; +import tokenSetup from './tokenSetup.js'; /** * Applies transforms on all tokens. This @@ -68,9 +68,9 @@ export default function transformObject( continue; } - // Note: propertySetup won't re-run if property has already been setup + // Note: tokenSetup won't re-run if property has already been setup // it is safe to run this multiple times on the same property. - const setupProperty = propertySetup(objProp, name, path); + const setupProperty = tokenSetup(objProp, name, path); // If property has a reference, defer its transformations until later if (usesValueReference(setupProperty.value, options)) { @@ -86,7 +86,7 @@ export default function transformObject( // If we got here, the property hasn't been transformed yet and // does not use a value reference. Transform the property now and assign it. - transformedObj[name] = transformProperty(setupProperty, options); + transformedObj[name] = transformToken(setupProperty, options); // Remove the property path from the deferred transform list pull(deferredPropValueTransforms, pathName); // Add the property path to the transformed list so we don't transform it again. diff --git a/lib/transform/property.js b/lib/transform/token.js similarity index 100% rename from lib/transform/property.js rename to lib/transform/token.js diff --git a/lib/transform/propertySetup.js b/lib/transform/tokenSetup.js similarity index 66% rename from lib/transform/propertySetup.js rename to lib/transform/tokenSetup.js index 3688432d3..8bf6e6c48 100644 --- a/lib/transform/propertySetup.js +++ b/lib/transform/tokenSetup.js @@ -15,30 +15,30 @@ import deepExtend from '../utils/deepExtend.js'; import { isPlainObject, isString, isArray, clone } from '../utils/es6_.js'; /** - * Takes a property object, a leaf node in a properties object, and - * returns a new object that has some properties set. It clones the + * Takes a token object, a leaf node in a tokens object, and + * returns a new object that has some tokens set. It clones the * original object for safekeeping, adds a name, adds an attributes object, * and a path array. * @private - * @param {Object} property - the property object to setup - * @param {String} name - The name of the property, which will should be its key in the object. - * @param {Array} path - The path of keys to get to the property from the top level of the properties object. + * @param {Object} token - the token object to setup + * @param {String} name - The name of the token, which will should be its key in the object. + * @param {Array} path - The path of keys to get to the token from the top level of the tokens object. * @returns {Object} - A new object that is setup and ready to go. */ -export default function propertySetup(property, name, path) { - if (!property && !isPlainObject(property)) throw new Error('Property object must be an object'); +export default function tokenSetup(token, name, path) { + if (!token && !isPlainObject(token)) throw new Error('Property object must be an object'); if (!name || !isString(name)) throw new Error('Name must be a string'); if (!path || !isArray(path)) throw new Error('Path must be an array'); - let to_ret = property; + let to_ret = token; // Only do this once - if (!property.original) { - // Initial property setup - // Keep the original object properties like it was in file (whitout additional data) + if (!token.original) { + // Initial token setup + // Keep the original object tokens like it was in file (whitout additional data) // so we can key off them in the transforms - to_ret = deepExtend([{}, property]); - let to_ret_original = deepExtend([{}, property]); + to_ret = deepExtend([{}, token]); + let to_ret_original = deepExtend([{}, token]); delete to_ret_original.filePath; delete to_ret_original.isSource; diff --git a/lib/utils/combineJSON.js b/lib/utils/combineJSON.js index a5383484f..00a883880 100644 --- a/lib/utils/combineJSON.js +++ b/lib/utils/combineJSON.js @@ -14,8 +14,8 @@ import JSON5 from 'json5'; import glob from '@bundled-es-modules/glob'; import path from '@bundled-es-modules/path-browserify'; +import { fs } from 'style-dictionary/fs'; import deepExtend from './deepExtend.js'; -import { fs } from '../../fs.js'; function traverseObj(obj, fn) { for (let key in obj) { @@ -33,41 +33,51 @@ function traverseObj(obj, fn) { * @param {String[]} arr - Array of paths to json (or node modules that export objects) files * @param {Boolean} [deep=false] - If it should perform a deep merge * @param {Function} collision - A function to be called when a name collision happens that isn't a normal deep merge of objects - * @param {Boolean} [source=true] - If json files are "sources", tag properties + * @param {Boolean} [source=true] - If json files are "sources", tag tokens * @param {Object[]} [parsers=[]] - Custom file parsers * @returns {Object} */ -export default function combineJSON(arr, deep, collision, source, parsers = []) { +export default async function combineJSON(arr, deep, collision, source, parsers = []) { const to_ret = {}; let files = []; for (let i = 0; i < arr.length; i++) { - const new_files = glob.sync(arr[i], { fs }); + const new_files = glob.sync(arr[i], { fs }).sort(); files = files.concat(new_files); } + // adjust for browser env glob results have leading slash + files = files.map((f) => f.replace(/^\//, '')); + for (let i = 0; i < files.length; i++) { const filePath = files[i]; - const resolvedPath = path.isAbsolute(files[i]) - ? files[i] - : path.resolve(process.cwd(), files[i]); let file_content = null; - try { // Iterate over custom parsers, if the file path matches the parser's // pattern regex, use it's parse function to generate the object parsers.forEach(({ pattern, parse }) => { - if (resolvedPath.match(pattern)) { + if (filePath.match(pattern)) { file_content = parse({ - contents: fs.readFileSync(resolvedPath, { encoding: 'UTF-8' }), - filePath: resolvedPath, + contents: fs.readFileSync(filePath, { encoding: 'UTF-8' }), + filePath, }); } }); // If there is no file_content then no custom parser ran on that file if (!file_content) { - file_content = deepExtend([file_content, JSON5.parse(fs.readFileSync(resolvedPath))]); + let parsedFile; + if (['.js', '.mjs'].includes(path.extname(filePath))) { + const fileToImport = path.resolve( + typeof window === 'object' ? '' : process.cwd(), + filePath, + ); + parsedFile = (await import(fileToImport)).default; + } else { + parsedFile = JSON5.parse(fs.readFileSync(filePath)); + } + + file_content = deepExtend([file_content, parsedFile]); } } catch (e) { e.message = 'Failed to load or parse JSON or JS Object: ' + e.message; diff --git a/lib/utils/convertToBase64.js b/lib/utils/convertToBase64.js index f02063e08..cc2ec5014 100644 --- a/lib/utils/convertToBase64.js +++ b/lib/utils/convertToBase64.js @@ -11,7 +11,7 @@ * and limitations under the License. */ -import { fs } from '../../fs.js'; +import { fs } from 'style-dictionary/fs'; /** * Takes a file and converts it to a base64 string. @@ -22,6 +22,6 @@ import { fs } from '../../fs.js'; export default function convertToBase64(filePath) { if (typeof filePath !== 'string') throw new Error('filePath name must be a string'); - const body = fs.readFileSync(filePath, 'binary'); - return Buffer.from(body, 'binary').toString('base64'); + const body = fs.readFileSync(filePath); + return btoa(body); } diff --git a/lib/utils/createDictionary.js b/lib/utils/createDictionary.js index 16e43036d..29e8636f9 100644 --- a/lib/utils/createDictionary.js +++ b/lib/utils/createDictionary.js @@ -11,15 +11,15 @@ * and limitations under the License. */ -import flattenProperties from './flattenProperties.js'; +import flattenTokens from './flattenTokens.js'; import getReferences from './references/getReferences.js'; import usesReference from './references/usesReference.js'; /** * * @typedef Dictionary - * @property {Object} tokens - Replacement for `properties` - * @property {Array} allTokens - Replacement for `allProperties` + * @property {Object} $tokens + * @property {Array} allTokens * @property {Dictionary.getReferences} getReferences * @property {Dictionary.usesReference} usesReference */ @@ -27,19 +27,15 @@ import usesReference from './references/usesReference.js'; /** * Creates the dictionary object that is passed to formats and actions. * @param {Object} args - * @param {Object} args.properties + * @param {Object} args.tokens * @returns {Dictionary} */ -export default function createDictionary({ properties }) { - const allProperties = flattenProperties(properties); +export default function createDictionary({ tokens }) { + const allTokens = flattenTokens(tokens); return { - properties, - allProperties, - // adding tokens and allTokens as the new way starting in v3, - // keeping properties and allProperties around for backwards-compatibility - tokens: properties, - allTokens: allProperties, - getReferences: getReferences, - usesReference: usesReference, + tokens, + allTokens, + getReferences, + usesReference, }; } diff --git a/lib/utils/createFormatArgs.js b/lib/utils/createFormatArgs.js index 4062a5aa8..bc136327b 100644 --- a/lib/utils/createFormatArgs.js +++ b/lib/utils/createFormatArgs.js @@ -14,7 +14,7 @@ import deepExtend from './deepExtend.js'; export default function createFormatArgs({ dictionary, platform, file = {} }) { - const { allProperties, properties, allTokens, tokens, usesReference, getReferences } = dictionary; + const { allTokens, tokens, usesReference, getReferences } = dictionary; // This will merge platform and file-level configuration // where the file configuration takes precedence const { options } = platform; @@ -24,10 +24,6 @@ export default function createFormatArgs({ dictionary, platform, file = {} }) { dictionary, usesReference, getReferences, - allProperties, - properties, - // adding tokens and allTokens as the new way starting in v3, - // keeping properties and allProperties around for backwards-compatibility allTokens, tokens, platform, diff --git a/lib/utils/deepExtend.js b/lib/utils/deepExtend.js index b83fc3f7e..174c526e3 100644 --- a/lib/utils/deepExtend.js +++ b/lib/utils/deepExtend.js @@ -14,6 +14,8 @@ import { isPlainObject, isArray } from './es6_.js'; /** + * TODO: see if we can use deepmerge instead of maintaining our own utility + * * Performs an deep extend on the objects, from right to left. * @private * @param {Object[]} objects - An array of JS objects diff --git a/lib/utils/deepmerge.js b/lib/utils/deepmerge.js new file mode 100644 index 000000000..5520b7937 --- /dev/null +++ b/lib/utils/deepmerge.js @@ -0,0 +1,14 @@ +import _deepmerge from '@bundled-es-modules/deepmerge'; +import { isPlainObject } from 'is-plain-object'; + +/** + * Wrapper around deepmerge that merges only plain objects and arrays + * @param {Object} target + * @param {Object} source + */ +export const deepmerge = (target, source) => { + return _deepmerge(target, source, { + // Merge if object is array or a plain object (so not merging functions/class instances together) + isMergeableObject: (obj) => Array.isArray(obj) || isPlainObject(obj), + }); +}; diff --git a/lib/utils/flattenProperties.js b/lib/utils/flattenTokens.js similarity index 64% rename from lib/utils/flattenProperties.js rename to lib/utils/flattenTokens.js index 933033183..1cdae2d8b 100644 --- a/lib/utils/flattenProperties.js +++ b/lib/utils/flattenTokens.js @@ -18,20 +18,20 @@ import { isPlainObject } from './es6_.js'; * A leaf node in this context has a 'value' property. Potentially refactor this to * be more generic. * @private - * @param {Object} properties - The plain object you want flattened into an array. - * @param {Array} [to_ret=[]] - Properties array. This function is recursive therefore this is what gets passed along. + * @param {Object} tokens - The plain object you want flattened into an array. + * @param {Array} [to_ret=[]] - Tokens array. This function is recursive therefore this is what gets passed along. * @return {Array} */ -export default function flattenProperties(properties, to_ret) { +export default function flattenTokens(tokens, to_ret) { to_ret = to_ret || []; - for (var name in properties) { - if (properties.hasOwnProperty(name)) { + for (var name in tokens) { + if (tokens.hasOwnProperty(name)) { // TODO: this is a bit fragile and arbitrary to stop when we get to a 'value' property. - if (isPlainObject(properties[name]) && 'value' in properties[name]) { - to_ret.push(properties[name]); - } else if (isPlainObject(properties[name])) { - flattenProperties(properties[name], to_ret); + if (isPlainObject(tokens[name]) && 'value' in tokens[name]) { + to_ret.push(tokens[name]); + } else if (isPlainObject(tokens[name])) { + flattenTokens(tokens[name], to_ret); } } } diff --git a/lib/utils/references/getReferences.js b/lib/utils/references/getReferences.js index ee909f074..27517007f 100644 --- a/lib/utils/references/getReferences.js +++ b/lib/utils/references/getReferences.js @@ -33,7 +33,6 @@ import GroupMessages from '../groupMessages.js'; */ export default function getReferences(value, references = []) { // `this` is the dictionary object passed to formats and actions - const self = this; const regex = createReferenceRegex({}); // this will update the references array with the referenced tokens it finds. @@ -44,10 +43,11 @@ export default function getReferences(value, references = []) { // Find what the value is referencing const pathName = getPath(variable); - let ref = resolveReference(pathName, self.properties); + let ref = resolveReference(pathName, this.tokens); + if (!ref) { - // fall back on _properties as it is unfiltered - ref = resolveReference(pathName, self._properties); + // fall back on _tokens as it is unfiltered + ref = resolveReference(pathName, this._tokens); // and warn the user about this GroupMessages.add(GroupMessages.GROUP.FilteredOutputReferences, variable); } @@ -56,7 +56,7 @@ export default function getReferences(value, references = []) { if (typeof value === 'string') { // function inside .replace runs multiple times if there are multiple matches - value.replace(regex, findReference); + value.replace(regex, findReference.bind(this)); } // If the token's value is an object, run the replace reference @@ -65,11 +65,11 @@ export default function getReferences(value, references = []) { if (typeof value === 'object') { for (const key in value) { if (value.hasOwnProperty(key) && typeof value[key] === 'string') { - value[key].replace(regex, findReference); + value[key].replace(regex, findReference.bind(this)); } // if it is an object, we go further down the rabbit hole if (value.hasOwnProperty(key) && typeof value[key] === 'object') { - self.getReferences(value[key], references); + this.getReferences(value[key], references); } } } diff --git a/mocha-hooks.mjs b/mocha-hooks.mjs new file mode 100644 index 000000000..1e63082d8 --- /dev/null +++ b/mocha-hooks.mjs @@ -0,0 +1,21 @@ +import { use } from 'chai'; +import chaiAsPromised from '@esm-bundle/chai-as-promised'; +import { chaiWtrSnapshot } from './snapshot-plugin/chai-wtr-snapshot.js'; + +const constantDate = new Date('2000-01-01'); +// eslint-disable-next-line no-undef +globalThis.Date = function () { + return constantDate; +}; +// eslint-disable-next-line no-undef +globalThis.Date.now = function () { + return constantDate; +}; + +export const mochaHooks = { + beforeAll(done) { + use(chaiAsPromised); + use(chaiWtrSnapshot); + done(); + }, +}; diff --git a/package-lock.json b/package-lock.json index 57542ef46..e857ca12a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,14 +1,16 @@ { "name": "style-dictionary", - "version": "4.0.0-prerelease.0", + "version": "4.0.0-prerelease.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "style-dictionary", - "version": "4.0.0-prerelease.0", + "version": "4.0.0-prerelease.1", + "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { + "@bundled-es-modules/deepmerge": "^4.3.1", "@bundled-es-modules/glob": "^10.3.5", "@bundled-es-modules/memfs": "^4.2.3", "@bundled-es-modules/path-browserify": "^1.0.2", @@ -16,6 +18,7 @@ "change-case": "^4.1.2", "commander": "^8.3.0", "fs-extra": "^10.0.0", + "is-plain-object": "^5.0.0", "json5": "^2.2.2", "jsonc-parser": "^3.0.0", "lodash": "^4.17.15", @@ -27,396 +30,78 @@ "style-dictionary": "bin/style-dictionary" }, "devDependencies": { - "@babel/preset-env": "^7.16.11", "@changesets/cli": "^2.26.2", "@commitlint/cli": "^16.1.0", "@commitlint/config-conventional": "^16.0.0", - "babel-jest": "^27.4.6", - "babel-preset-env": "^1.7.0", + "@esm-bundle/chai-as-promised": "^7.1.1", + "@types/chai": "^4.3.9", + "@web/test-runner": "^0.18.0", + "@web/test-runner-commands": "^0.9.0", + "@web/test-runner-playwright": "^0.11.0", + "chai": "^5.0.0-alpha.2", + "chai-as-promised": "npm:@esm-bundle/chai-as-promised@^7.1.1", "docsify": "^4.12.2", "docsify-cli": "^4.4.3", "eslint": "^8.7.0", "eslint-plugin-jest": "^26.0.0", + "hanbi": "^1.0.1", "husky": "^8.0.3", - "istanbul": "^0.4.5", - "jest": "^27.4.7", "jsdoc-escape-at": "^1.0.1", "jsdoc-to-markdown": "^7.1.0", "json5-jest": "^1.0.1", "less": "^4.1.2", "lint-staged": "^12.3.1", - "node-sass": "^9.0.0", + "mocha": "^10.2.0", "npm-run-all": "^4.1.5", + "patch-package": "^8.0.0", "prettier": "^3.0.3", + "sass": "^1.69.5", "standard-version": "^9.3.2", "stylus": "^0.56.0", - "tsd": "^0.19.1", - "yaml": "^1.10.2" + "yaml": "^2.3.4" }, "engines": { "node": ">=18.0.0" } }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.8.tgz", - "integrity": "sha512-m7OkX0IdKLKPpBlJtF561YJal5y/jyI5fNfWbPxh2D/nbzzGI4qRyrD8xO2jB24u7l+5I2a43scCG2IrfjC50Q==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/core": { - "version": "7.14.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.14.3.tgz", - "integrity": "sha512-jB5AmTKOCSJIZ72sd78ECEhuPiDMKlQdDI/4QRI6lzYATx5SSogS1oQA2AoPecRCknm30gHi2l+QVvNUu3wZAg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.14.3", - "@babel/helper-compilation-targets": "^7.13.16", - "@babel/helper-module-transforms": "^7.14.2", - "@babel/helpers": "^7.14.0", - "@babel/parser": "^7.14.3", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.14.2", - "@babel/types": "^7.14.2", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/babel" - } - }, - "node_modules/@babel/generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.8.tgz", - "integrity": "sha512-1ojZwE9+lOXzcWdWmO6TbUzDfqLD39CmEhN8+2cX9XkDo5yW1OpgfejfliysR2AWLpMamTiOiAp/mtroaymhpw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.8", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", - "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", - "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", - "dev": true, - "dependencies": { - "@babel/helper-explode-assignable-expression": "^7.16.7", - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-compilation-targets": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.7.tgz", - "integrity": "sha512-mGojBwIWcwGD6rfqgRXVlVYmPAv7eOpIemUG3dGnDdCY4Pae70ROij3XmfrH6Fa1h1aiDylpglbZyktfzyo/hA==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.16.4", - "@babel/helper-validator-option": "^7.16.7", - "browserslist": "^4.17.5", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.16.10", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.16.10.tgz", - "integrity": "sha512-wDeej0pu3WN/ffTxMNCPW5UCiOav8IcLRxSIyp/9+IF2xJUM9h/OYjg0IJLHaL6F8oU8kqMz9nc1vryXhMsgXg==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-member-expression-to-functions": "^7.16.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.16.7.tgz", - "integrity": "sha512-fk5A6ymfp+O5+p2yCkXAu5Kyj6v0xh0RBeNcAkYUMDvvAAoxvSKXn+Jb37t/yWFiQVDFK1ELpUTD8/aLhCPu+g==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "regexpu-core": "^4.7.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", - "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", - "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0-0" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", - "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-explode-assignable-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", - "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", - "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", - "dev": true, - "dependencies": { - "@babel/helper-get-function-arity": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-get-function-arity": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", - "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-hoist-variables": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", - "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.16.7.tgz", - "integrity": "sha512-VtJ/65tYiU/6AbMTDwyoXGPKHgTsfRarivm+YbB5uAzKUyuPjgZSgAFeG87FCigc7KNHu2Pegh1XIT3lXjvz3Q==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-imports": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", - "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.7.tgz", - "integrity": "sha512-gaqtLDxJEFCeQbYp9aLAefjhkKdjKcdh6DB7jniIGU3Pz52WAmP268zK0VgPz9hUNkMSYeH976K2/Y6yPadpng==", - "dev": true, - "dependencies": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-simple-access": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", - "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", - "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", - "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-wrap-function": "^7.16.8", - "@babel/types": "^7.16.8" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", - "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", + "node_modules/@75lb/deep-merge": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@75lb/deep-merge/-/deep-merge-1.1.1.tgz", + "integrity": "sha512-xvgv6pkMGBA6GwdyJbNAnDmfAIR/DfWhrj9jgWh3TY7gRm3KO46x/GPjRg6wJ0nOepwqrNxFfojebh0Df4h4Tw==", "dev": true, "dependencies": { - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-member-expression-to-functions": "^7.16.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/traverse": "^7.16.7", - "@babel/types": "^7.16.7" + "lodash.assignwith": "^4.2.0", + "typical": "^7.1.1" }, "engines": { - "node": ">=6.9.0" + "node": ">=12.17" } }, - "node_modules/@babel/helper-simple-access": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.7.tgz", - "integrity": "sha512-ZIzHVyoeLMvXMN/vok/a4LWRy8G2v205mNP0XOuf9XRLyX5/u9CnVulUtDgUTama3lT+bf/UqucuZjqiGuTS1g==", + "node_modules/@75lb/deep-merge/node_modules/typical": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/typical/-/typical-7.1.1.tgz", + "integrity": "sha512-T+tKVNs6Wu7IWiAce5BgMd7OZfNYUndHwc5MknN+UHOudi7sGZzuHdCadllRuqJ3fPtgFtIH9+lt9qRv6lmpfA==", "dev": true, - "dependencies": { - "@babel/types": "^7.16.7" - }, "engines": { - "node": ">=6.9.0" + "node": ">=12.17" } }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.16.0", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", - "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", "dev": true, - "dependencies": { - "@babel/types": "^7.16.0" - }, "engines": { - "node": ">=6.9.0" + "node": ">=0.10.0" } }, - "node_modules/@babel/helper-split-export-declaration": { + "node_modules/@babel/code-frame": { "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", - "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", "dev": true, "dependencies": { - "@babel/types": "^7.16.7" + "@babel/highlight": "^7.16.7" }, "engines": { "node": ">=6.9.0" @@ -431,41 +116,6 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-validator-option": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", - "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", - "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", - "dev": true, - "dependencies": { - "@babel/helper-function-name": "^7.16.7", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.16.8", - "@babel/types": "^7.16.8" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.14.0.tgz", - "integrity": "sha512-+ufuXprtQ1D1iZTO/K9+EBRn+qPWMJjZSw/S0KlFrxCw4tkrzv9grgpDHkY9MeQTjTY8i2sp7Jep8DfU6tN9Mg==", - "dev": true, - "dependencies": { - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.14.0", - "@babel/types": "^7.14.0" - } - }, "node_modules/@babel/highlight": { "version": "7.16.10", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", @@ -554,1317 +204,1078 @@ "node": ">=6.0.0" } }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz", - "integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz", - "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==", + "node_modules/@babel/runtime": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz", + "integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-proposal-optional-chaining": "^7.16.7" + "regenerator-runtime": "^0.14.0" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.13.0" } }, - "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz", - "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==", - "dev": true, + "node_modules/@bundled-es-modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/@bundled-es-modules/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-Rk453EklPUPC3NRWc3VUNI/SSUjdBaFoaQvFRmNBNtMHVtOFD5AntiWg5kEE1hqcPqedYFDzxE3ZcMYPcA195w==", "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-remap-async-to-generator": "^7.16.8", - "@babel/plugin-syntax-async-generators": "^7.8.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "deepmerge": "^4.3.1" } }, - "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", - "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", - "dev": true, + "node_modules/@bundled-es-modules/glob": { + "version": "10.3.5", + "resolved": "https://registry.npmjs.org/@bundled-es-modules/glob/-/glob-10.3.5.tgz", + "integrity": "sha512-Jn0WAgPKHfOm81mmF9RpzjTr/rdsOESoW9MVvaBBkXDhPhmeeqBugzfXlF0y56atlicKERqrXvW3D6jTQHU7Dw==", + "hasInstallScript": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "buffer": "^6.0.3", + "events": "^3.3.0", + "glob": "^10.3.3", + "patch-package": "^8.0.0", + "path": "^0.12.7", + "stream": "^0.0.2", + "string_decoder": "^1.3.0", + "url": "^0.11.1" } }, - "node_modules/@babel/plugin-proposal-class-static-block": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.16.7.tgz", - "integrity": "sha512-dgqJJrcZoG/4CkMopzhPJjGxsIe9A8RlkQLnL/Vhhx8AA9ZuaRwGSlscSh42hazc7WSrya/IK7mTeoF0DP9tEw==", - "dev": true, + "node_modules/@bundled-es-modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-class-static-block": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.12.0" + "balanced-match": "^1.0.0" } }, - "node_modules/@babel/plugin-proposal-dynamic-import": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", - "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", - "dev": true, + "node_modules/@bundled-es-modules/glob/node_modules/glob": { + "version": "10.3.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.4.tgz", + "integrity": "sha512-6LFElP3A+i/Q8XQKEvZjkEWEOTgAIALR9AO2rwT8bgPhDd1anmqDJDZ6lLddI4ehxxxR1S5RIqKe1uapMQfYaQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" + "foreground-child": "^3.1.0", + "jackspeak": "^2.0.3", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/cjs/src/bin.js" }, "engines": { - "node": ">=6.9.0" + "node": ">=16 || 14 >=14.17" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@babel/plugin-proposal-export-namespace-from": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", - "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", - "dev": true, + "node_modules/@bundled-es-modules/glob/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=6.9.0" + "node": ">=16 || 14 >=14.17" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/@babel/plugin-proposal-json-strings": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz", - "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-json-strings": "^7.8.3" - }, + "node_modules/@bundled-es-modules/glob/node_modules/minipass": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.3.tgz", + "integrity": "sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==", "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=16 || 14 >=14.17" } }, - "node_modules/@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", - "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", - "dev": true, + "node_modules/@bundled-es-modules/glob/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/@bundled-es-modules/glob/node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "safe-buffer": "~5.2.0" } }, - "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", - "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", - "dev": true, + "node_modules/@bundled-es-modules/memfs": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/@bundled-es-modules/memfs/-/memfs-4.2.3.tgz", + "integrity": "sha512-staos4ByDNS0Ikx2fHYMgluoDdbN5yEpB1hobjDkU7b946+NXAik50pLhWWZ/JC3wXqYW4B00ul1tNxgDz4TOQ==", "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "assert": "^2.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "memfs": "^4.2.1", + "path": "^0.12.7", + "process": "^0.11.10", + "stream": "^0.0.2", + "util": "^0.12.5" } }, - "node_modules/@babel/plugin-proposal-numeric-separator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", - "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", - "dev": true, + "node_modules/@bundled-es-modules/path-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@bundled-es-modules/path-browserify/-/path-browserify-1.0.2.tgz", + "integrity": "sha512-wC1f5y1etCEOO/3zUKlro5JCDKqZ3TAvjXUu9lSpaYHiKTyn0Iwlyfum789+V+DIAH32AJBb3JsWPalDvpvi6Q==", "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "path-browserify": "^1.0.1" } }, - "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.16.7.tgz", - "integrity": "sha512-3O0Y4+dw94HA86qSg9IHfyPktgR7q3gpNVAeiKQd+8jBKFaU5NQS1Yatgo4wY+UFNuLjvxcSmzcsHqrhgTyBUA==", + "node_modules/@changesets/apply-release-plan": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/@changesets/apply-release-plan/-/apply-release-plan-6.1.4.tgz", + "integrity": "sha512-FMpKF1fRlJyCZVYHr3CbinpZZ+6MwvOtWUuO8uo+svcATEoc1zRDcj23pAurJ2TZ/uVz1wFHH6K3NlACy0PLew==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.16.4", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/runtime": "^7.20.1", + "@changesets/config": "^2.3.1", + "@changesets/get-version-range-type": "^0.3.2", + "@changesets/git": "^2.0.0", + "@changesets/types": "^5.2.1", + "@manypkg/get-packages": "^1.1.3", + "detect-indent": "^6.0.0", + "fs-extra": "^7.0.1", + "lodash.startcase": "^4.4.0", + "outdent": "^0.5.0", + "prettier": "^2.7.1", + "resolve-from": "^5.0.0", + "semver": "^7.5.3" } }, - "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", - "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", + "node_modules/@changesets/apply-release-plan/node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=6 <7 || >=8" } }, - "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", - "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", + "node_modules/@changesets/apply-release-plan/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/@babel/plugin-proposal-private-methods": { - "version": "7.16.11", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz", - "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==", + "node_modules/@changesets/apply-release-plan/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.16.10", - "@babel/helper-plugin-utils": "^7.16.7" + "yallist": "^4.0.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=10" } }, - "node_modules/@babel/plugin-proposal-private-property-in-object": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", - "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", + "node_modules/@changesets/apply-release-plan/node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-create-class-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + "bin": { + "prettier": "bin-prettier.js" }, "engines": { - "node": ">=6.9.0" + "node": ">=10.13.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/@babel/plugin-proposal-unicode-property-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz", - "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==", + "node_modules/@changesets/apply-release-plan/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "lru-cache": "^6.0.0" }, - "engines": { - "node": ">=4" + "bin": { + "semver": "bin/semver.js" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=10" } }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "node_modules/@changesets/apply-release-plan/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">= 4.0.0" } }, - "node_modules/@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "node_modules/@changesets/apply-release-plan/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@changesets/assemble-release-plan": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/@changesets/assemble-release-plan/-/assemble-release-plan-5.2.4.tgz", + "integrity": "sha512-xJkWX+1/CUaOUWTguXEbCDTyWJFECEhmdtbkjhn5GVBGxdP/JwaHBIU9sW3FR6gD07UwZ7ovpiPclQZs+j+mvg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/runtime": "^7.20.1", + "@changesets/errors": "^0.1.4", + "@changesets/get-dependents-graph": "^1.3.6", + "@changesets/types": "^5.2.1", + "@manypkg/get-packages": "^1.1.3", + "semver": "^7.5.3" } }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "node_modules/@changesets/assemble-release-plan/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" + "yallist": "^4.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=10" } }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "node_modules/@changesets/assemble-release-plan/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=10" } }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "node_modules/@changesets/assemble-release-plan/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@changesets/changelog-git": { + "version": "0.1.14", + "resolved": "https://registry.npmjs.org/@changesets/changelog-git/-/changelog-git-0.1.14.tgz", + "integrity": "sha512-+vRfnKtXVWsDDxGctOfzJsPhaCdXRYoe+KyWYoq5X/GqoISREiat0l3L8B0a453B2B4dfHGcZaGyowHbp9BSaA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@changesets/types": "^5.2.1" } }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "node_modules/@changesets/cli": { + "version": "2.26.2", + "resolved": "https://registry.npmjs.org/@changesets/cli/-/cli-2.26.2.tgz", + "integrity": "sha512-dnWrJTmRR8bCHikJHl9b9HW3gXACCehz4OasrXpMp7sx97ECuBGGNjJhjPhdZNCvMy9mn4BWdplI323IbqsRig==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" + "@babel/runtime": "^7.20.1", + "@changesets/apply-release-plan": "^6.1.4", + "@changesets/assemble-release-plan": "^5.2.4", + "@changesets/changelog-git": "^0.1.14", + "@changesets/config": "^2.3.1", + "@changesets/errors": "^0.1.4", + "@changesets/get-dependents-graph": "^1.3.6", + "@changesets/get-release-plan": "^3.0.17", + "@changesets/git": "^2.0.0", + "@changesets/logger": "^0.0.5", + "@changesets/pre": "^1.0.14", + "@changesets/read": "^0.5.9", + "@changesets/types": "^5.2.1", + "@changesets/write": "^0.2.3", + "@manypkg/get-packages": "^1.1.3", + "@types/is-ci": "^3.0.0", + "@types/semver": "^7.5.0", + "ansi-colors": "^4.1.3", + "chalk": "^2.1.0", + "enquirer": "^2.3.0", + "external-editor": "^3.1.0", + "fs-extra": "^7.0.1", + "human-id": "^1.0.2", + "is-ci": "^3.0.1", + "meow": "^6.0.0", + "outdent": "^0.5.0", + "p-limit": "^2.2.0", + "preferred-pm": "^3.0.0", + "resolve-from": "^5.0.0", + "semver": "^7.5.3", + "spawndamnit": "^2.0.0", + "term-size": "^2.1.0", + "tty-table": "^4.1.5" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "bin": { + "changeset": "bin.js" } }, - "node_modules/@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "node_modules/@changesets/cli/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "color-convert": "^1.9.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=4" } }, - "node_modules/@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "node_modules/@changesets/cli/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=4" } }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "node_modules/@changesets/cli/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" } }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "node_modules/@changesets/cli/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "color-name": "1.1.3" } }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "node_modules/@changesets/cli/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@changesets/cli/node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=6 <7 || >=8" } }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "node_modules/@changesets/cli/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=4" } }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "node_modules/@changesets/cli/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/@changesets/cli/node_modules/is-ci": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "ci-info": "^3.2.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "bin": { + "is-ci": "bin.js" } }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "node_modules/@changesets/cli/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "node_modules/@changesets/cli/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "yallist": "^4.0.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=10" } }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "node_modules/@changesets/cli/node_modules/meow": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-6.1.1.tgz", + "integrity": "sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "^4.0.2", + "normalize-package-data": "^2.5.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.13.1", + "yargs-parser": "^18.1.3" }, "engines": { - "node": ">=6.9.0" + "node": ">=8" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.7.tgz", - "integrity": "sha512-YhUIJHHGkqPgEcMYkPCKTyGUdoGKWtopIycQyjJH8OjvRgOYsXsaKehLVPScKJWAULPxMa4N1vCe6szREFlZ7A==", + "node_modules/@changesets/cli/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz", - "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==", + "node_modules/@changesets/cli/node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "bin": { + "semver": "bin/semver" } }, - "node_modules/@babel/plugin-transform-async-to-generator": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz", - "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==", + "node_modules/@changesets/cli/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-remap-async-to-generator": "^7.16.8" + "p-try": "^2.0.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=6" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@babel/plugin-transform-block-scoped-functions": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", - "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", + "node_modules/@changesets/cli/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "lru-cache": "^6.0.0" }, - "engines": { - "node": ">=6.9.0" + "bin": { + "semver": "bin/semver.js" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=10" } }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz", - "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==", + "node_modules/@changesets/cli/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "has-flag": "^3.0.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=4" } }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz", - "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==", + "node_modules/@changesets/cli/node_modules/type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.16.7", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-optimise-call-expression": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "globals": "^11.1.0" - }, "engines": { - "node": ">=6.9.0" + "node": ">=10" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz", - "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==", + "node_modules/@changesets/cli/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">= 4.0.0" } }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.16.7.tgz", - "integrity": "sha512-VqAwhTHBnu5xBVDCvrvqJbtLUa++qZaWC0Fgr2mqokBlulZARGyIvZDoqbPlPaKImQ9dKAcCzbv+ul//uqu70A==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "node_modules/@changesets/cli/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, - "node_modules/@babel/plugin-transform-dotall-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", - "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", + "node_modules/@changesets/cli/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=6" } }, - "node_modules/@babel/plugin-transform-duplicate-keys": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz", - "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==", + "node_modules/@changesets/config": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@changesets/config/-/config-2.3.1.tgz", + "integrity": "sha512-PQXaJl82CfIXddUOppj4zWu+987GCw2M+eQcOepxN5s+kvnsZOwjEJO3DH9eVy+OP6Pg/KFEWdsECFEYTtbg6w==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@changesets/errors": "^0.1.4", + "@changesets/get-dependents-graph": "^1.3.6", + "@changesets/logger": "^0.0.5", + "@changesets/types": "^5.2.1", + "@manypkg/get-packages": "^1.1.3", + "fs-extra": "^7.0.1", + "micromatch": "^4.0.2" } }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", - "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", + "node_modules/@changesets/config/node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", "dev": true, "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=6 <7 || >=8" } }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz", - "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==", + "node_modules/@changesets/config/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", - "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", + "node_modules/@changesets/config/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, - "dependencies": { - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">= 4.0.0" } }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz", - "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==", + "node_modules/@changesets/errors": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@changesets/errors/-/errors-0.1.4.tgz", + "integrity": "sha512-HAcqPF7snsUJ/QzkWoKfRfXushHTu+K5KZLJWPb34s4eCZShIf8BFO3fwq6KU8+G7L5KdtN2BzQAXOSXEyiY9Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "extendable-error": "^0.1.5" } }, - "node_modules/@babel/plugin-transform-member-expression-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", - "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", + "node_modules/@changesets/get-dependents-graph": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@changesets/get-dependents-graph/-/get-dependents-graph-1.3.6.tgz", + "integrity": "sha512-Q/sLgBANmkvUm09GgRsAvEtY3p1/5OCzgBE5vX3vgb5CvW0j7CEljocx5oPXeQSNph6FXulJlXV3Re/v3K3P3Q==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@changesets/types": "^5.2.1", + "@manypkg/get-packages": "^1.1.3", + "chalk": "^2.1.0", + "fs-extra": "^7.0.1", + "semver": "^7.5.3" } }, - "node_modules/@babel/plugin-transform-modules-amd": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz", - "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==", + "node_modules/@changesets/get-dependents-graph/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "babel-plugin-dynamic-import-node": "^2.3.3" + "color-convert": "^1.9.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=4" } }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.16.8.tgz", - "integrity": "sha512-oflKPvsLT2+uKQopesJt3ApiaIS2HW+hzHFcwRNtyDGieAeC/dIHZX8buJQ2J2X1rxGPy4eRcUijm3qcSPjYcA==", + "node_modules/@changesets/get-dependents-graph/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "dependencies": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-simple-access": "^7.16.7", - "babel-plugin-dynamic-import-node": "^2.3.3" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=4" } }, - "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.16.7.tgz", - "integrity": "sha512-DuK5E3k+QQmnOqBR9UkusByy5WZWGRxfzV529s9nPra1GE7olmxfqO2FHobEOYSPIjPBTr4p66YDcjQnt8cBmw==", + "node_modules/@changesets/get-dependents-graph/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "dependencies": { - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-validator-identifier": "^7.16.7", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "color-name": "1.1.3" } }, - "node_modules/@babel/plugin-transform-modules-umd": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz", - "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==", - "dev": true, - "dependencies": { - "@babel/helper-module-transforms": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "node_modules/@changesets/get-dependents-graph/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true }, - "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz", - "integrity": "sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==", + "node_modules/@changesets/get-dependents-graph/node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7" + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "node": ">=6 <7 || >=8" } }, - "node_modules/@babel/plugin-transform-new-target": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz", - "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==", + "node_modules/@changesets/get-dependents-graph/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=4" } }, - "node_modules/@babel/plugin-transform-object-super": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", - "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", + "node_modules/@changesets/get-dependents-graph/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-replace-supers": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz", - "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==", + "node_modules/@changesets/get-dependents-graph/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "yallist": "^4.0.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=10" } }, - "node_modules/@babel/plugin-transform-property-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", - "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", + "node_modules/@changesets/get-dependents-graph/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "lru-cache": "^6.0.0" }, - "engines": { - "node": ">=6.9.0" + "bin": { + "semver": "bin/semver.js" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=10" } }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.16.7.tgz", - "integrity": "sha512-mF7jOgGYCkSJagJ6XCujSQg+6xC1M77/03K2oBmVJWoFGNUtnVJO4WHKJk3dnPC8HCcj4xBQP1Egm8DWh3Pb3Q==", + "node_modules/@changesets/get-dependents-graph/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "dependencies": { - "regenerator-transform": "^0.14.2" + "has-flag": "^3.0.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=4" } }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz", - "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==", + "node_modules/@changesets/get-dependents-graph/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">= 4.0.0" } }, - "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", - "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", + "node_modules/@changesets/get-dependents-graph/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@changesets/get-release-plan": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/@changesets/get-release-plan/-/get-release-plan-3.0.17.tgz", + "integrity": "sha512-6IwKTubNEgoOZwDontYc2x2cWXfr6IKxP3IhKeK+WjyD6y3M4Gl/jdQvBw+m/5zWILSOCAaGLu2ZF6Q+WiPniw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/runtime": "^7.20.1", + "@changesets/assemble-release-plan": "^5.2.4", + "@changesets/config": "^2.3.1", + "@changesets/pre": "^1.0.14", + "@changesets/read": "^0.5.9", + "@changesets/types": "^5.2.1", + "@manypkg/get-packages": "^1.1.3" } }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz", - "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==", - "dev": true, + "node_modules/@changesets/get-version-range-type": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@changesets/get-version-range-type/-/get-version-range-type-0.3.2.tgz", + "integrity": "sha512-SVqwYs5pULYjYT4op21F2pVbcrca4qA/bAA3FmFXKMN7Y+HcO8sbZUTx3TAy2VXulP2FACd1aC7f2nTuqSPbqg==", + "dev": true + }, + "node_modules/@changesets/git": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@changesets/git/-/git-2.0.0.tgz", + "integrity": "sha512-enUVEWbiqUTxqSnmesyJGWfzd51PY4H7mH9yUw0hPVpZBJ6tQZFMU3F3mT/t9OJ/GjyiM4770i+sehAn6ymx6A==", + "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@babel/runtime": "^7.20.1", + "@changesets/errors": "^0.1.4", + "@changesets/types": "^5.2.1", + "@manypkg/get-packages": "^1.1.3", + "is-subdir": "^1.1.1", + "micromatch": "^4.0.2", + "spawndamnit": "^2.0.0" } }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", - "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", + "node_modules/@changesets/logger": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@changesets/logger/-/logger-0.0.5.tgz", + "integrity": "sha512-gJyZHomu8nASHpaANzc6bkQMO9gU/ib20lqew1rVx753FOxffnCrJlGIeQVxNWCqM+o6OOleCo/ivL8UAO5iFw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "chalk": "^2.1.0" } }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz", - "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==", + "node_modules/@changesets/logger/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "color-convert": "^1.9.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=4" } }, - "node_modules/@babel/plugin-transform-typeof-symbol": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz", - "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==", + "node_modules/@changesets/logger/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=4" } }, - "node_modules/@babel/plugin-transform-unicode-escapes": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", - "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", + "node_modules/@changesets/logger/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" - }, + "color-name": "1.1.3" + } + }, + "node_modules/@changesets/logger/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@changesets/logger/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=4" } }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", - "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", + "node_modules/@changesets/logger/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/preset-env": { - "version": "7.16.11", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.11.tgz", - "integrity": "sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==", - "dev": true, - "dependencies": { - "@babel/compat-data": "^7.16.8", - "@babel/helper-compilation-targets": "^7.16.7", - "@babel/helper-plugin-utils": "^7.16.7", - "@babel/helper-validator-option": "^7.16.7", - "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7", - "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7", - "@babel/plugin-proposal-async-generator-functions": "^7.16.8", - "@babel/plugin-proposal-class-properties": "^7.16.7", - "@babel/plugin-proposal-class-static-block": "^7.16.7", - "@babel/plugin-proposal-dynamic-import": "^7.16.7", - "@babel/plugin-proposal-export-namespace-from": "^7.16.7", - "@babel/plugin-proposal-json-strings": "^7.16.7", - "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7", - "@babel/plugin-proposal-numeric-separator": "^7.16.7", - "@babel/plugin-proposal-object-rest-spread": "^7.16.7", - "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", - "@babel/plugin-proposal-optional-chaining": "^7.16.7", - "@babel/plugin-proposal-private-methods": "^7.16.11", - "@babel/plugin-proposal-private-property-in-object": "^7.16.7", - "@babel/plugin-proposal-unicode-property-regex": "^7.16.7", - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-class-properties": "^7.12.13", - "@babel/plugin-syntax-class-static-block": "^7.14.5", - "@babel/plugin-syntax-dynamic-import": "^7.8.3", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-private-property-in-object": "^7.14.5", - "@babel/plugin-syntax-top-level-await": "^7.14.5", - "@babel/plugin-transform-arrow-functions": "^7.16.7", - "@babel/plugin-transform-async-to-generator": "^7.16.8", - "@babel/plugin-transform-block-scoped-functions": "^7.16.7", - "@babel/plugin-transform-block-scoping": "^7.16.7", - "@babel/plugin-transform-classes": "^7.16.7", - "@babel/plugin-transform-computed-properties": "^7.16.7", - "@babel/plugin-transform-destructuring": "^7.16.7", - "@babel/plugin-transform-dotall-regex": "^7.16.7", - "@babel/plugin-transform-duplicate-keys": "^7.16.7", - "@babel/plugin-transform-exponentiation-operator": "^7.16.7", - "@babel/plugin-transform-for-of": "^7.16.7", - "@babel/plugin-transform-function-name": "^7.16.7", - "@babel/plugin-transform-literals": "^7.16.7", - "@babel/plugin-transform-member-expression-literals": "^7.16.7", - "@babel/plugin-transform-modules-amd": "^7.16.7", - "@babel/plugin-transform-modules-commonjs": "^7.16.8", - "@babel/plugin-transform-modules-systemjs": "^7.16.7", - "@babel/plugin-transform-modules-umd": "^7.16.7", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.8", - "@babel/plugin-transform-new-target": "^7.16.7", - "@babel/plugin-transform-object-super": "^7.16.7", - "@babel/plugin-transform-parameters": "^7.16.7", - "@babel/plugin-transform-property-literals": "^7.16.7", - "@babel/plugin-transform-regenerator": "^7.16.7", - "@babel/plugin-transform-reserved-words": "^7.16.7", - "@babel/plugin-transform-shorthand-properties": "^7.16.7", - "@babel/plugin-transform-spread": "^7.16.7", - "@babel/plugin-transform-sticky-regex": "^7.16.7", - "@babel/plugin-transform-template-literals": "^7.16.7", - "@babel/plugin-transform-typeof-symbol": "^7.16.7", - "@babel/plugin-transform-unicode-escapes": "^7.16.7", - "@babel/plugin-transform-unicode-regex": "^7.16.7", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.16.8", - "babel-plugin-polyfill-corejs2": "^0.3.0", - "babel-plugin-polyfill-corejs3": "^0.5.0", - "babel-plugin-polyfill-regenerator": "^0.3.0", - "core-js-compat": "^3.20.2", - "semver": "^6.3.0" + "has-flag": "^3.0.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=4" } }, - "node_modules/@babel/preset-modules": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", - "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "node_modules/@changesets/parse": { + "version": "0.3.16", + "resolved": "https://registry.npmjs.org/@changesets/parse/-/parse-0.3.16.tgz", + "integrity": "sha512-127JKNd167ayAuBjUggZBkmDS5fIKsthnr9jr6bdnuUljroiERW7FBTDNnNVyJ4l69PzR57pk6mXQdtJyBCJKg==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", - "@babel/plugin-transform-dotall-regex": "^7.4.4", - "@babel/types": "^7.4.4", - "esutils": "^2.0.2" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@changesets/types": "^5.2.1", + "js-yaml": "^3.13.1" } }, - "node_modules/@babel/runtime": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz", - "integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==", + "node_modules/@changesets/pre": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/@changesets/pre/-/pre-1.0.14.tgz", + "integrity": "sha512-dTsHmxQWEQekHYHbg+M1mDVYFvegDh9j/kySNuDKdylwfMEevTeDouR7IfHNyVodxZXu17sXoJuf2D0vi55FHQ==", "dev": true, "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" + "@babel/runtime": "^7.20.1", + "@changesets/errors": "^0.1.4", + "@changesets/types": "^5.2.1", + "@manypkg/get-packages": "^1.1.3", + "fs-extra": "^7.0.1" } }, - "node_modules/@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "node_modules/@changesets/pre/node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=6 <7 || >=8" } }, - "node_modules/@babel/traverse": { - "version": "7.16.10", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.10.tgz", - "integrity": "sha512-yzuaYXoRJBGMlBhsMJoUW7G1UmSb/eXr/JHYM/MsOJgavJibLwASijW7oXBdw3NQ6T0bW7Ty5P/VarOs9cHmqw==", + "node_modules/@changesets/pre/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, - "dependencies": { - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.16.8", - "@babel/helper-environment-visitor": "^7.16.7", - "@babel/helper-function-name": "^7.16.7", - "@babel/helper-hoist-variables": "^7.16.7", - "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.16.10", - "@babel/types": "^7.16.8", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/@babel/types": { - "version": "7.16.8", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.8.tgz", - "integrity": "sha512-smN2DQc5s4M7fntyjGtyIPbRJv6wW4rU/94fmYJ7PKQuZkC0qGMHXJbg6sNGt12JmVr4k5YaptI/XtiLJBnmIg==", + "node_modules/@changesets/pre/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "to-fast-properties": "^2.0.0" - }, "engines": { - "node": ">=6.9.0" + "node": ">= 4.0.0" } }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "node_modules/@bundled-es-modules/glob": { - "version": "10.3.5", - "resolved": "https://registry.npmjs.org/@bundled-es-modules/glob/-/glob-10.3.5.tgz", - "integrity": "sha512-Jn0WAgPKHfOm81mmF9RpzjTr/rdsOESoW9MVvaBBkXDhPhmeeqBugzfXlF0y56atlicKERqrXvW3D6jTQHU7Dw==", - "hasInstallScript": true, + "node_modules/@changesets/read": { + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/@changesets/read/-/read-0.5.9.tgz", + "integrity": "sha512-T8BJ6JS6j1gfO1HFq50kU3qawYxa4NTbI/ASNVVCBTsKquy2HYwM9r7ZnzkiMe8IEObAJtUVGSrePCOxAK2haQ==", + "dev": true, "dependencies": { - "buffer": "^6.0.3", - "events": "^3.3.0", - "glob": "^10.3.3", - "patch-package": "^8.0.0", - "path": "^0.12.7", - "stream": "^0.0.2", - "string_decoder": "^1.3.0", - "url": "^0.11.1" + "@babel/runtime": "^7.20.1", + "@changesets/git": "^2.0.0", + "@changesets/logger": "^0.0.5", + "@changesets/parse": "^0.3.16", + "@changesets/types": "^5.2.1", + "chalk": "^2.1.0", + "fs-extra": "^7.0.1", + "p-filter": "^2.1.0" } }, - "node_modules/@bundled-es-modules/glob/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "node_modules/@changesets/read/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "dependencies": { - "balanced-match": "^1.0.0" + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/@bundled-es-modules/glob/node_modules/glob": { - "version": "10.3.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.4.tgz", - "integrity": "sha512-6LFElP3A+i/Q8XQKEvZjkEWEOTgAIALR9AO2rwT8bgPhDd1anmqDJDZ6lLddI4ehxxxR1S5RIqKe1uapMQfYaQ==", + "node_modules/@changesets/read/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.0.3", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/cjs/src/bin.js" + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=4" } }, - "node_modules/@bundled-es-modules/glob/node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "node_modules/@changesets/read/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "dependencies": { - "brace-expansion": "^2.0.1" + "color-name": "1.1.3" + } + }, + "node_modules/@changesets/read/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@changesets/read/node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" }, "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=6 <7 || >=8" } }, - "node_modules/@bundled-es-modules/glob/node_modules/minipass": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.3.tgz", - "integrity": "sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==", + "node_modules/@changesets/read/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=4" } }, - "node_modules/@bundled-es-modules/glob/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/@bundled-es-modules/glob/node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dependencies": { - "safe-buffer": "~5.2.0" + "node_modules/@changesets/read/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/@bundled-es-modules/memfs": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/@bundled-es-modules/memfs/-/memfs-4.2.3.tgz", - "integrity": "sha512-staos4ByDNS0Ikx2fHYMgluoDdbN5yEpB1hobjDkU7b946+NXAik50pLhWWZ/JC3wXqYW4B00ul1tNxgDz4TOQ==", + "node_modules/@changesets/read/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "dependencies": { - "assert": "^2.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "memfs": "^4.2.1", - "path": "^0.12.7", - "process": "^0.11.10", - "stream": "^0.0.2", - "util": "^0.12.5" + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/@bundled-es-modules/path-browserify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@bundled-es-modules/path-browserify/-/path-browserify-1.0.2.tgz", - "integrity": "sha512-wC1f5y1etCEOO/3zUKlro5JCDKqZ3TAvjXUu9lSpaYHiKTyn0Iwlyfum789+V+DIAH32AJBb3JsWPalDvpvi6Q==", - "dependencies": { - "path-browserify": "^1.0.1" + "node_modules/@changesets/read/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" } }, - "node_modules/@changesets/apply-release-plan": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/@changesets/apply-release-plan/-/apply-release-plan-6.1.4.tgz", - "integrity": "sha512-FMpKF1fRlJyCZVYHr3CbinpZZ+6MwvOtWUuO8uo+svcATEoc1zRDcj23pAurJ2TZ/uVz1wFHH6K3NlACy0PLew==", + "node_modules/@changesets/types": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@changesets/types/-/types-5.2.1.tgz", + "integrity": "sha512-myLfHbVOqaq9UtUKqR/nZA/OY7xFjQMdfgfqeZIBK4d0hA6pgxArvdv8M+6NUzzBsjWLOtvApv8YHr4qM+Kpfg==", + "dev": true + }, + "node_modules/@changesets/write": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@changesets/write/-/write-0.2.3.tgz", + "integrity": "sha512-Dbamr7AIMvslKnNYsLFafaVORx4H0pvCA2MHqgtNCySMe1blImEyAEOzDmcgKAkgz4+uwoLz7demIrX+JBr/Xw==", "dev": true, "dependencies": { "@babel/runtime": "^7.20.1", - "@changesets/config": "^2.3.1", - "@changesets/get-version-range-type": "^0.3.2", - "@changesets/git": "^2.0.0", "@changesets/types": "^5.2.1", - "@manypkg/get-packages": "^1.1.3", - "detect-indent": "^6.0.0", "fs-extra": "^7.0.1", - "lodash.startcase": "^4.4.0", - "outdent": "^0.5.0", - "prettier": "^2.7.1", - "resolve-from": "^5.0.0", - "semver": "^7.5.3" + "human-id": "^1.0.2", + "prettier": "^2.7.1" } }, - "node_modules/@changesets/apply-release-plan/node_modules/fs-extra": { + "node_modules/@changesets/write/node_modules/fs-extra": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", @@ -1878,7 +1289,7 @@ "node": ">=6 <7 || >=8" } }, - "node_modules/@changesets/apply-release-plan/node_modules/jsonfile": { + "node_modules/@changesets/write/node_modules/jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", @@ -1887,19 +1298,7 @@ "graceful-fs": "^4.1.6" } }, - "node_modules/@changesets/apply-release-plan/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@changesets/apply-release-plan/node_modules/prettier": { + "node_modules/@changesets/write/node_modules/prettier": { "version": "2.8.8", "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", @@ -1914,715 +1313,757 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/@changesets/apply-release-plan/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "node_modules/@changesets/write/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/@commitlint/cli": { + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-16.1.0.tgz", + "integrity": "sha512-x5L1knvA3isRWBRVQx+Q6D45pA9139a2aZQYpxkljMG0dj4UHZkCnsYWpnGalxPxASI7nrI0KedKfS2YeQ55cQ==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" + "@commitlint/format": "^16.0.0", + "@commitlint/lint": "^16.0.0", + "@commitlint/load": "^16.1.0", + "@commitlint/read": "^16.0.0", + "@commitlint/types": "^16.0.0", + "lodash": "^4.17.19", + "resolve-from": "5.0.0", + "resolve-global": "1.0.0", + "yargs": "^17.0.0" }, "bin": { - "semver": "bin/semver.js" + "commitlint": "cli.js" }, "engines": { - "node": ">=10" + "node": ">=v12" } }, - "node_modules/@changesets/apply-release-plan/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "node_modules/@commitlint/config-conventional": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-16.0.0.tgz", + "integrity": "sha512-mN7J8KlKFn0kROd+q9PB01sfDx/8K/R25yITspL1No8PB4oj9M1p77xWjP80hPydqZG9OvQq+anXK3ZWeR7s3g==", "dev": true, + "dependencies": { + "conventional-changelog-conventionalcommits": "^4.3.1" + }, "engines": { - "node": ">= 4.0.0" + "node": ">=v12" } }, - "node_modules/@changesets/apply-release-plan/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/@changesets/assemble-release-plan": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/@changesets/assemble-release-plan/-/assemble-release-plan-5.2.4.tgz", - "integrity": "sha512-xJkWX+1/CUaOUWTguXEbCDTyWJFECEhmdtbkjhn5GVBGxdP/JwaHBIU9sW3FR6gD07UwZ7ovpiPclQZs+j+mvg==", + "node_modules/@commitlint/config-validator": { + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-16.1.0.tgz", + "integrity": "sha512-2cHeZPNTuf1JWbMqyA46MkExor5HMSgv8JrdmzEakUbJHUreh35/wN00FJf57qGs134exQW2thiSQ1IJUsVx2Q==", "dev": true, "dependencies": { - "@babel/runtime": "^7.20.1", - "@changesets/errors": "^0.1.4", - "@changesets/get-dependents-graph": "^1.3.6", - "@changesets/types": "^5.2.1", - "@manypkg/get-packages": "^1.1.3", - "semver": "^7.5.3" + "@commitlint/types": "^16.0.0", + "ajv": "^6.12.6" + }, + "engines": { + "node": ">=v12" } }, - "node_modules/@changesets/assemble-release-plan/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/@commitlint/ensure": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-16.0.0.tgz", + "integrity": "sha512-WdMySU8DCTaq3JPf0tZFCKIUhqxaL54mjduNhu8v4D2AMUVIIQKYMGyvXn94k8begeW6iJkTf9cXBArayskE7Q==", "dev": true, "dependencies": { - "yallist": "^4.0.0" + "@commitlint/types": "^16.0.0", + "lodash": "^4.17.19" }, "engines": { - "node": ">=10" + "node": ">=v12" } }, - "node_modules/@changesets/assemble-release-plan/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "node_modules/@commitlint/execute-rule": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-16.0.0.tgz", + "integrity": "sha512-8edcCibmBb386x5JTHSPHINwA5L0xPkHQFY8TAuDEt5QyRZY/o5DF8OPHSa5Hx2xJvGaxxuIz4UtAT6IiRDYkw==", + "dev": true, + "engines": { + "node": ">=v12" + } + }, + "node_modules/@commitlint/format": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-16.0.0.tgz", + "integrity": "sha512-9yp5NCquXL1jVMKL0ZkRwJf/UHdebvCcMvICuZV00NQGYSAL89O398nhqrqxlbjBhM5EZVq0VGcV5+7r3D4zAA==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "@commitlint/types": "^16.0.0", + "chalk": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=v12" } }, - "node_modules/@changesets/assemble-release-plan/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/@changesets/changelog-git": { - "version": "0.1.14", - "resolved": "https://registry.npmjs.org/@changesets/changelog-git/-/changelog-git-0.1.14.tgz", - "integrity": "sha512-+vRfnKtXVWsDDxGctOfzJsPhaCdXRYoe+KyWYoq5X/GqoISREiat0l3L8B0a453B2B4dfHGcZaGyowHbp9BSaA==", + "node_modules/@commitlint/format/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "@changesets/types": "^5.2.1" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@changesets/cli": { - "version": "2.26.2", - "resolved": "https://registry.npmjs.org/@changesets/cli/-/cli-2.26.2.tgz", - "integrity": "sha512-dnWrJTmRR8bCHikJHl9b9HW3gXACCehz4OasrXpMp7sx97ECuBGGNjJhjPhdZNCvMy9mn4BWdplI323IbqsRig==", + "node_modules/@commitlint/is-ignored": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-16.0.0.tgz", + "integrity": "sha512-gmAQcwIGC/R/Lp0CEb2b5bfGC7MT5rPe09N8kOGjO/NcdNmfFSZMquwrvNJsq9hnAP0skRdHIsqwlkENkN4Lag==", "dev": true, "dependencies": { - "@babel/runtime": "^7.20.1", - "@changesets/apply-release-plan": "^6.1.4", - "@changesets/assemble-release-plan": "^5.2.4", - "@changesets/changelog-git": "^0.1.14", - "@changesets/config": "^2.3.1", - "@changesets/errors": "^0.1.4", - "@changesets/get-dependents-graph": "^1.3.6", - "@changesets/get-release-plan": "^3.0.17", - "@changesets/git": "^2.0.0", - "@changesets/logger": "^0.0.5", - "@changesets/pre": "^1.0.14", - "@changesets/read": "^0.5.9", - "@changesets/types": "^5.2.1", - "@changesets/write": "^0.2.3", - "@manypkg/get-packages": "^1.1.3", - "@types/is-ci": "^3.0.0", - "@types/semver": "^7.5.0", - "ansi-colors": "^4.1.3", - "chalk": "^2.1.0", - "enquirer": "^2.3.0", - "external-editor": "^3.1.0", - "fs-extra": "^7.0.1", - "human-id": "^1.0.2", - "is-ci": "^3.0.1", - "meow": "^6.0.0", - "outdent": "^0.5.0", - "p-limit": "^2.2.0", - "preferred-pm": "^3.0.0", - "resolve-from": "^5.0.0", - "semver": "^7.5.3", - "spawndamnit": "^2.0.0", - "term-size": "^2.1.0", - "tty-table": "^4.1.5" + "@commitlint/types": "^16.0.0", + "semver": "7.3.5" }, - "bin": { - "changeset": "bin.js" + "engines": { + "node": ">=v12" } }, - "node_modules/@changesets/cli/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/@commitlint/is-ignored/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "dependencies": { - "color-convert": "^1.9.0" + "yallist": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/@changesets/cli/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/@commitlint/is-ignored/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/@changesets/cli/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "node_modules/@commitlint/is-ignored/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@commitlint/lint": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-16.0.0.tgz", + "integrity": "sha512-HNl15bRC0h+pLzbMzQC3tM0j1aESXsLYhElqKnXcf5mnCBkBkHzu6WwJW8rZbfxX+YwJmNljN62cPhmdBo8x0A==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], + "dependencies": { + "@commitlint/is-ignored": "^16.0.0", + "@commitlint/parse": "^16.0.0", + "@commitlint/rules": "^16.0.0", + "@commitlint/types": "^16.0.0" + }, "engines": { - "node": ">=8" + "node": ">=v12" } }, - "node_modules/@changesets/cli/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "node_modules/@commitlint/load": { + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-16.1.0.tgz", + "integrity": "sha512-MtlEhKjP8jAF85jjX4mw8DUUwCxKsCgAc865hhpnwxjrfBcmGP7Up2AFE/M3ZMGDmSl1X1TMybQk/zohj8Cqdg==", "dev": true, "dependencies": { - "color-name": "1.1.3" + "@commitlint/config-validator": "^16.1.0", + "@commitlint/execute-rule": "^16.0.0", + "@commitlint/resolve-extends": "^16.1.0", + "@commitlint/types": "^16.0.0", + "chalk": "^4.0.0", + "cosmiconfig": "^7.0.0", + "cosmiconfig-typescript-loader": "^1.0.0", + "lodash": "^4.17.19", + "resolve-from": "^5.0.0", + "typescript": "^4.4.3" + }, + "engines": { + "node": ">=v12" } }, - "node_modules/@changesets/cli/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/@changesets/cli/node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "node_modules/@commitlint/load/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=6 <7 || >=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@changesets/cli/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "node_modules/@commitlint/message": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-16.0.0.tgz", + "integrity": "sha512-CmK2074SH1Ws6kFMEKOKH/7hMekGVbOD6vb4alCOo2+33ZSLUIX8iNkDYyrw38Jwg6yWUhLjyQLUxREeV+QIUA==", "dev": true, "engines": { - "node": ">=4" + "node": ">=v12" } }, - "node_modules/@changesets/cli/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/@changesets/cli/node_modules/is-ci": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", - "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "node_modules/@commitlint/parse": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-16.0.0.tgz", + "integrity": "sha512-F9EjFlMw4MYgBEqoRrWZZKQBzdiJzPBI0qFDFqwUvfQsMmXEREZ242T4R5bFwLINWaALFLHEIa/FXEPa6QxCag==", "dev": true, "dependencies": { - "ci-info": "^3.2.0" + "@commitlint/types": "^16.0.0", + "conventional-changelog-angular": "^5.0.11", + "conventional-commits-parser": "^3.2.2" }, - "bin": { - "is-ci": "bin.js" + "engines": { + "node": ">=v12" } }, - "node_modules/@changesets/cli/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "node_modules/@commitlint/read": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-16.0.0.tgz", + "integrity": "sha512-H4T2zsfmYQK9B+JtoQaCXWBHUhgIJyOzWZjSfuIV9Ce69/OgHoffNpLZPF2lX6yKuDrS1SQFhI/kUCjVc/e4ew==", "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "dependencies": { + "@commitlint/top-level": "^16.0.0", + "@commitlint/types": "^16.0.0", + "fs-extra": "^10.0.0", + "git-raw-commits": "^2.0.0" + }, + "engines": { + "node": ">=v12" } }, - "node_modules/@changesets/cli/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/@commitlint/resolve-extends": { + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-16.1.0.tgz", + "integrity": "sha512-8182s6AFoUFX6+FT1PgQDt15nO2ogdR/EN8SYVAdhNXw1rLz8kT5saB/ICw567GuRAUgFTUMGCXy3ctMOXPEDg==", "dev": true, "dependencies": { - "yallist": "^4.0.0" + "@commitlint/config-validator": "^16.1.0", + "@commitlint/types": "^16.0.0", + "import-fresh": "^3.0.0", + "lodash": "^4.17.19", + "resolve-from": "^5.0.0", + "resolve-global": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">=v12" } }, - "node_modules/@changesets/cli/node_modules/meow": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/meow/-/meow-6.1.1.tgz", - "integrity": "sha512-3YffViIt2QWgTy6Pale5QpopX/IvU3LPL03jOTqp6pGj3VjesdO/U8CuHMKpnQr4shCNCM5fd5XFFvIIl6JBHg==", + "node_modules/@commitlint/rules": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-16.0.0.tgz", + "integrity": "sha512-AOl0y2SBTdJ1bvIv8nwHvQKRT/jC1xb09C5VZwzHoT8sE8F54KDeEzPCwHQFgUcWdGLyS10kkOTAH2MyA8EIlg==", "dev": true, "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "^4.0.2", - "normalize-package-data": "^2.5.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.13.1", - "yargs-parser": "^18.1.3" + "@commitlint/ensure": "^16.0.0", + "@commitlint/message": "^16.0.0", + "@commitlint/to-lines": "^16.0.0", + "@commitlint/types": "^16.0.0", + "execa": "^5.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=v12" } }, - "node_modules/@changesets/cli/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "node_modules/@commitlint/to-lines": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-16.0.0.tgz", + "integrity": "sha512-iN/qU38TCKU7uKOg6RXLpD49wNiuI0TqMqybHbjefUeP/Jmzxa8ishryj0uLyVdrAl1ZjGeD1ukXGMTtvqz8iA==", "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "engines": { + "node": ">=v12" } }, - "node_modules/@changesets/cli/node_modules/normalize-package-data/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/@changesets/cli/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/@commitlint/top-level": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-16.0.0.tgz", + "integrity": "sha512-/Jt6NLxyFkpjL5O0jxurZPCHURZAm7cQCqikgPCwqPAH0TLgwqdHjnYipl8J+AGnAMGDip4FNLoYrtgIpZGBYw==", "dev": true, "dependencies": { - "p-try": "^2.0.0" + "find-up": "^5.0.0" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=v12" } }, - "node_modules/@changesets/cli/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "node_modules/@commitlint/types": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-16.0.0.tgz", + "integrity": "sha512-+0FvYOAS39bJ4aKjnYn/7FD4DfWkmQ6G/06I4F0Gvu4KS5twirEg8mIcLhmeRDOOKn4Tp8PwpLwBiSA6npEMQA==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "chalk": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=v12" } }, - "node_modules/@changesets/cli/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/@commitlint/types/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "has-flag": "^3.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@changesets/cli/node_modules/type-fest": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", - "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", - "dev": true, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@changesets/cli/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "node_modules/@cspotcode/source-map-consumer": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", + "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", "dev": true, "engines": { - "node": ">= 4.0.0" + "node": ">= 12" } }, - "node_modules/@changesets/cli/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/@changesets/cli/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "node_modules/@cspotcode/source-map-support": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", + "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", "dev": true, "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "@cspotcode/source-map-consumer": "0.8.0" }, "engines": { - "node": ">=6" - } - }, - "node_modules/@changesets/config": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@changesets/config/-/config-2.3.1.tgz", - "integrity": "sha512-PQXaJl82CfIXddUOppj4zWu+987GCw2M+eQcOepxN5s+kvnsZOwjEJO3DH9eVy+OP6Pg/KFEWdsECFEYTtbg6w==", - "dev": true, - "dependencies": { - "@changesets/errors": "^0.1.4", - "@changesets/get-dependents-graph": "^1.3.6", - "@changesets/logger": "^0.0.5", - "@changesets/types": "^5.2.1", - "@manypkg/get-packages": "^1.1.3", - "fs-extra": "^7.0.1", - "micromatch": "^4.0.2" + "node": ">=12" } }, - "node_modules/@changesets/config/node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", "dev": true, "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "eslint-visitor-keys": "^3.3.0" }, "engines": { - "node": ">=6 <7 || >=8" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@changesets/config/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "node_modules/@eslint-community/regexpp": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.1.tgz", + "integrity": "sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ==", "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@changesets/config/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "node_modules/@eslint/eslintrc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", + "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, "engines": { - "node": ">= 4.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@changesets/errors": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@changesets/errors/-/errors-0.1.4.tgz", - "integrity": "sha512-HAcqPF7snsUJ/QzkWoKfRfXushHTu+K5KZLJWPb34s4eCZShIf8BFO3fwq6KU8+G7L5KdtN2BzQAXOSXEyiY9Q==", + "node_modules/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.21.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", + "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", "dev": true, "dependencies": { - "extendable-error": "^0.1.5" + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@changesets/get-dependents-graph": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/@changesets/get-dependents-graph/-/get-dependents-graph-1.3.6.tgz", - "integrity": "sha512-Q/sLgBANmkvUm09GgRsAvEtY3p1/5OCzgBE5vX3vgb5CvW0j7CEljocx5oPXeQSNph6FXulJlXV3Re/v3K3P3Q==", + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "dependencies": { - "@changesets/types": "^5.2.1", - "@manypkg/get-packages": "^1.1.3", - "chalk": "^2.1.0", - "fs-extra": "^7.0.1", - "semver": "^7.5.3" + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@changesets/get-dependents-graph/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { - "color-convert": "^1.9.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=4" + "node": "*" } }, - "node_modules/@changesets/get-dependents-graph/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/@eslint/eslintrc/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@changesets/get-dependents-graph/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "node_modules/@eslint/js": { + "version": "8.49.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.49.0.tgz", + "integrity": "sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w==", "dev": true, - "dependencies": { - "color-name": "1.1.3" + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@changesets/get-dependents-graph/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "node_modules/@esm-bundle/chai-as-promised": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@esm-bundle/chai-as-promised/-/chai-as-promised-7.1.1.tgz", + "integrity": "sha512-qhDeW3gK3ITAzzhZj8QfvuhX7iNqyzooVZJnoW5bjIotxxJM92O9EKxdxBg4B35hjh3tV1chlEgC/pfR9cVRlA==", "dev": true }, - "node_modules/@changesets/get-dependents-graph/node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", + "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", "dev": true, "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" }, "engines": { - "node": ">=6 <7 || >=8" + "node": ">=10.10.0" } }, - "node_modules/@changesets/get-dependents-graph/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, "engines": { - "node": ">=4" + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@changesets/get-dependents-graph/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@hutson/parse-repository-url": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz", + "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==", "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "engines": { + "node": ">=6.9.0" } }, - "node_modules/@changesets/get-dependents-graph/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dependencies": { - "yallist": "^4.0.0" + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" }, "engines": { - "node": ">=10" + "node": ">=12" } }, - "node_modules/@changesets/get-dependents-graph/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "engines": { - "node": ">=10" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@changesets/get-dependents-graph/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dependencies": { - "has-flag": "^3.0.0" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@changesets/get-dependents-graph/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, "engines": { - "node": ">= 4.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/@changesets/get-dependents-graph/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } }, - "node_modules/@changesets/get-release-plan": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/@changesets/get-release-plan/-/get-release-plan-3.0.17.tgz", - "integrity": "sha512-6IwKTubNEgoOZwDontYc2x2cWXfr6IKxP3IhKeK+WjyD6y3M4Gl/jdQvBw+m/5zWILSOCAaGLu2ZF6Q+WiPniw==", + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", "dev": true, - "dependencies": { - "@babel/runtime": "^7.20.1", - "@changesets/assemble-release-plan": "^5.2.4", - "@changesets/config": "^2.3.1", - "@changesets/pre": "^1.0.14", - "@changesets/read": "^0.5.9", - "@changesets/types": "^5.2.1", - "@manypkg/get-packages": "^1.1.3" + "engines": { + "node": ">=6.0.0" } }, - "node_modules/@changesets/get-version-range-type": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@changesets/get-version-range-type/-/get-version-range-type-0.3.2.tgz", - "integrity": "sha512-SVqwYs5pULYjYT4op21F2pVbcrca4qA/bAA3FmFXKMN7Y+HcO8sbZUTx3TAy2VXulP2FACd1aC7f2nTuqSPbqg==", + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", "dev": true }, - "node_modules/@changesets/git": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@changesets/git/-/git-2.0.0.tgz", - "integrity": "sha512-enUVEWbiqUTxqSnmesyJGWfzd51PY4H7mH9yUw0hPVpZBJ6tQZFMU3F3mT/t9OJ/GjyiM4770i+sehAn6ymx6A==", + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.20", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", "dev": true, "dependencies": { - "@babel/runtime": "^7.20.1", - "@changesets/errors": "^0.1.4", - "@changesets/types": "^5.2.1", - "@manypkg/get-packages": "^1.1.3", - "is-subdir": "^1.1.1", - "micromatch": "^4.0.2", - "spawndamnit": "^2.0.0" + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@changesets/logger": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/@changesets/logger/-/logger-0.0.5.tgz", - "integrity": "sha512-gJyZHomu8nASHpaANzc6bkQMO9gU/ib20lqew1rVx753FOxffnCrJlGIeQVxNWCqM+o6OOleCo/ivL8UAO5iFw==", + "node_modules/@manypkg/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@manypkg/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==", "dev": true, "dependencies": { - "chalk": "^2.1.0" + "@babel/runtime": "^7.5.5", + "@types/node": "^12.7.1", + "find-up": "^4.1.0", + "fs-extra": "^8.1.0" } }, - "node_modules/@changesets/logger/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/@manypkg/find-root/node_modules/@types/node": { + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", + "dev": true + }, + "node_modules/@manypkg/find-root/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "dependencies": { - "color-convert": "^1.9.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/@changesets/logger/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/@manypkg/find-root/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" }, "engines": { - "node": ">=4" - } - }, - "node_modules/@changesets/logger/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" + "node": ">=6 <7 || >=8" } }, - "node_modules/@changesets/logger/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/@changesets/logger/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "node_modules/@manypkg/find-root/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, - "engines": { - "node": ">=4" + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/@changesets/logger/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/@manypkg/find-root/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "dependencies": { - "has-flag": "^3.0.0" + "p-locate": "^4.1.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/@changesets/parse": { - "version": "0.3.16", - "resolved": "https://registry.npmjs.org/@changesets/parse/-/parse-0.3.16.tgz", - "integrity": "sha512-127JKNd167ayAuBjUggZBkmDS5fIKsthnr9jr6bdnuUljroiERW7FBTDNnNVyJ4l69PzR57pk6mXQdtJyBCJKg==", + "node_modules/@manypkg/find-root/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "dependencies": { - "@changesets/types": "^5.2.1", - "js-yaml": "^3.13.1" + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@changesets/pre": { - "version": "1.0.14", - "resolved": "https://registry.npmjs.org/@changesets/pre/-/pre-1.0.14.tgz", - "integrity": "sha512-dTsHmxQWEQekHYHbg+M1mDVYFvegDh9j/kySNuDKdylwfMEevTeDouR7IfHNyVodxZXu17sXoJuf2D0vi55FHQ==", + "node_modules/@manypkg/find-root/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "dependencies": { - "@babel/runtime": "^7.20.1", - "@changesets/errors": "^0.1.4", - "@changesets/types": "^5.2.1", - "@manypkg/get-packages": "^1.1.3", - "fs-extra": "^7.0.1" + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@changesets/pre/node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "node_modules/@manypkg/find-root/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/@manypkg/get-packages": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@manypkg/get-packages/-/get-packages-1.1.3.tgz", + "integrity": "sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==", "dev": true, "dependencies": { - "graceful-fs": "^4.1.2", + "@babel/runtime": "^7.5.5", + "@changesets/types": "^4.0.1", + "@manypkg/find-root": "^1.1.0", + "fs-extra": "^8.1.0", + "globby": "^11.0.0", + "read-yaml-file": "^1.1.0" + } + }, + "node_modules/@manypkg/get-packages/node_modules/@changesets/types": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@changesets/types/-/types-4.1.0.tgz", + "integrity": "sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==", + "dev": true + }, + "node_modules/@manypkg/get-packages/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", "universalify": "^0.1.0" }, @@ -2630,7 +2071,7 @@ "node": ">=6 <7 || >=8" } }, - "node_modules/@changesets/pre/node_modules/jsonfile": { + "node_modules/@manypkg/get-packages/node_modules/jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", @@ -2639,7 +2080,7 @@ "graceful-fs": "^4.1.6" } }, - "node_modules/@changesets/pre/node_modules/universalify": { + "node_modules/@manypkg/get-packages/node_modules/universalify": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", @@ -2648,6908 +2089,4508 @@ "node": ">= 4.0.0" } }, - "node_modules/@changesets/read": { - "version": "0.5.9", - "resolved": "https://registry.npmjs.org/@changesets/read/-/read-0.5.9.tgz", - "integrity": "sha512-T8BJ6JS6j1gfO1HFq50kU3qawYxa4NTbI/ASNVVCBTsKquy2HYwM9r7ZnzkiMe8IEObAJtUVGSrePCOxAK2haQ==", + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "dependencies": { - "@babel/runtime": "^7.20.1", - "@changesets/git": "^2.0.0", - "@changesets/logger": "^0.0.5", - "@changesets/parse": "^0.3.16", - "@changesets/types": "^5.2.1", - "chalk": "^2.1.0", - "fs-extra": "^7.0.1", - "p-filter": "^2.1.0" + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/@changesets/read/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, "engines": { - "node": ">=4" + "node": ">= 8" } }, - "node_modules/@changesets/read/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" }, "engines": { - "node": ">=4" + "node": ">= 8" } }, - "node_modules/@changesets/read/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true, + "engines": { + "node": ">=14" } }, - "node_modules/@changesets/read/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/@changesets/read/node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "node_modules/@rollup/plugin-node-resolve": { + "version": "15.2.3", + "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz", + "integrity": "sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==", "dev": true, "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "@rollup/pluginutils": "^5.0.1", + "@types/resolve": "1.20.2", + "deepmerge": "^4.2.2", + "is-builtin-module": "^3.2.1", + "is-module": "^1.0.0", + "resolve": "^1.22.1" }, "engines": { - "node": ">=6 <7 || >=8" + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^2.78.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } } }, - "node_modules/@changesets/read/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "node_modules/@rollup/pluginutils": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.5.tgz", + "integrity": "sha512-6aEYR910NyP73oHiJglti74iRyOwgFU4x3meH/H8OJx6Ry0j6cOVZ5X/wTvub7G7Ao6qaHBEaNsV3GLJkSsF+Q==", "dev": true, + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^2.0.2", + "picomatch": "^2.3.1" + }, "engines": { - "node": ">=4" + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } } }, - "node_modules/@changesets/read/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "node_modules/@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "engines": { + "node": ">=6" } }, - "node_modules/@changesets/read/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", "dev": true, "dependencies": { - "has-flag": "^3.0.0" + "defer-to-connect": "^1.0.1" }, "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/@changesets/read/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "node_modules/@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", + "dev": true + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", + "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", + "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", + "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", + "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", + "dev": true + }, + "node_modules/@types/accepts": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@types/accepts/-/accepts-1.3.6.tgz", + "integrity": "sha512-6+qlUg57yfE9OO63wnsJXLeq9cG3gSHBBIxNMOjNrbDRlDnm/NaR7RctfYcVCPq+j7d+MwOxqVEludH5+FKrlg==", "dev": true, - "engines": { - "node": ">= 4.0.0" + "dependencies": { + "@types/node": "*" } }, - "node_modules/@changesets/types": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@changesets/types/-/types-5.2.1.tgz", - "integrity": "sha512-myLfHbVOqaq9UtUKqR/nZA/OY7xFjQMdfgfqeZIBK4d0hA6pgxArvdv8M+6NUzzBsjWLOtvApv8YHr4qM+Kpfg==", + "node_modules/@types/babel__code-frame": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/@types/babel__code-frame/-/babel__code-frame-7.0.5.tgz", + "integrity": "sha512-tE88HnYMl5iJAB1V9nJCrE1udmwGCoNvx2ayTa8nwkE3UMMRRljANO+sX8D321hIrqf1DlvhAPAo5G6DWaMQNg==", "dev": true }, - "node_modules/@changesets/write": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@changesets/write/-/write-0.2.3.tgz", - "integrity": "sha512-Dbamr7AIMvslKnNYsLFafaVORx4H0pvCA2MHqgtNCySMe1blImEyAEOzDmcgKAkgz4+uwoLz7demIrX+JBr/Xw==", + "node_modules/@types/body-parser": { + "version": "1.19.4", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.4.tgz", + "integrity": "sha512-N7UDG0/xiPQa2D/XrVJXjkWbpqHCd2sBaB32ggRF2l83RhPfamgKGF8gwwqyksS95qUS5ZYF9aF+lLPRlwI2UA==", "dev": true, "dependencies": { - "@babel/runtime": "^7.20.1", - "@changesets/types": "^5.2.1", - "fs-extra": "^7.0.1", - "human-id": "^1.0.2", - "prettier": "^2.7.1" + "@types/connect": "*", + "@types/node": "*" } }, - "node_modules/@changesets/write/node_modules/fs-extra": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", - "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "node_modules/@types/chai": { + "version": "4.3.9", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.9.tgz", + "integrity": "sha512-69TtiDzu0bcmKQv3yg1Zx409/Kd7r0b5F1PfpYJfSHzLGtB53547V4u+9iqKYsTu/O2ai6KTb0TInNpvuQ3qmg==", + "dev": true + }, + "node_modules/@types/co-body": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@types/co-body/-/co-body-6.1.2.tgz", + "integrity": "sha512-eUqBFu8mNW56oZAP0aEmGm+4qFeYjkxVThQ1F/8jFOBiSNM+gib3pYFzjnQsQRUZ501Eg8qOc7Nn76GcZo6Uvg==", "dev": true, "dependencies": { - "graceful-fs": "^4.1.2", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" + "@types/node": "*", + "@types/qs": "*" } }, - "node_modules/@changesets/write/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } + "node_modules/@types/command-line-args": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@types/command-line-args/-/command-line-args-5.2.2.tgz", + "integrity": "sha512-9aZ7KzLDOBYyqH5J2bvB9edvsMXusX+H/aS8idAJOpWNmscZG5RqO1CVJPFa4Q0/1xKgvxcweXunFVx2l/dYFA==", + "dev": true }, - "node_modules/@changesets/write/node_modules/prettier": { - "version": "2.8.8", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", - "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "node_modules/@types/connect": { + "version": "3.4.37", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.37.tgz", + "integrity": "sha512-zBUSRqkfZ59OcwXon4HVxhx5oWCJmc0OtBTK05M+p0dYjgN6iTwIL2T/WbsQZrEsdnwaF9cWQ+azOnpPvIqY3Q==", "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" + "dependencies": { + "@types/node": "*" } }, - "node_modules/@changesets/write/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } + "node_modules/@types/content-disposition": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.7.tgz", + "integrity": "sha512-V9/5u21RHFR1zfdm3rQ6pJUKV+zSSVQt+yq16i1YhdivVzWgPEoKedc3GdT8aFjsqQbakdxuy3FnEdePUQOamQ==", + "dev": true }, - "node_modules/@commitlint/cli": { - "version": "16.1.0", - "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-16.1.0.tgz", - "integrity": "sha512-x5L1knvA3isRWBRVQx+Q6D45pA9139a2aZQYpxkljMG0dj4UHZkCnsYWpnGalxPxASI7nrI0KedKfS2YeQ55cQ==", + "node_modules/@types/convert-source-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@types/convert-source-map/-/convert-source-map-2.0.2.tgz", + "integrity": "sha512-M8jHZquUkvyaHtNVCKNoCqGmbbNFgRJ2JL607SPmcNUWqhU1spBaEJD7qlW3kMiQjKPlyyT4ZUbPG6vO4SYLBg==", + "dev": true + }, + "node_modules/@types/cookies": { + "version": "0.7.9", + "resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.7.9.tgz", + "integrity": "sha512-SrGYvhKohd/WSOII0WpflC73RgdJhQoqpwq9q+n/qugNGiDSGYXfHy3QvB4+X+J/gYe27j2fSRnK4B+1A3nvsw==", "dev": true, "dependencies": { - "@commitlint/format": "^16.0.0", - "@commitlint/lint": "^16.0.0", - "@commitlint/load": "^16.1.0", - "@commitlint/read": "^16.0.0", - "@commitlint/types": "^16.0.0", - "lodash": "^4.17.19", - "resolve-from": "5.0.0", - "resolve-global": "1.0.0", - "yargs": "^17.0.0" - }, - "bin": { - "commitlint": "cli.js" - }, - "engines": { - "node": ">=v12" + "@types/connect": "*", + "@types/express": "*", + "@types/keygrip": "*", + "@types/node": "*" } }, - "node_modules/@commitlint/config-conventional": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-16.0.0.tgz", - "integrity": "sha512-mN7J8KlKFn0kROd+q9PB01sfDx/8K/R25yITspL1No8PB4oj9M1p77xWjP80hPydqZG9OvQq+anXK3ZWeR7s3g==", + "node_modules/@types/debounce": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/@types/debounce/-/debounce-1.2.3.tgz", + "integrity": "sha512-97mx7gWt4e+kd0wPa1pNEvE4tYGhgBVa4ExWOLcfFohAjF9wERfJ+3qrn7I1e76oHupOvRs4UyYe9xzy0i4TUw==", + "dev": true + }, + "node_modules/@types/estree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", + "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", + "dev": true + }, + "node_modules/@types/express": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.20.tgz", + "integrity": "sha512-rOaqlkgEvOW495xErXMsmyX3WKBInbhG5eqojXYi3cGUaLoRDlXa5d52fkfWZT963AZ3v2eZ4MbKE6WpDAGVsw==", "dev": true, "dependencies": { - "conventional-changelog-conventionalcommits": "^4.3.1" - }, - "engines": { - "node": ">=v12" + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" } }, - "node_modules/@commitlint/config-validator": { - "version": "16.1.0", - "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-16.1.0.tgz", - "integrity": "sha512-2cHeZPNTuf1JWbMqyA46MkExor5HMSgv8JrdmzEakUbJHUreh35/wN00FJf57qGs134exQW2thiSQ1IJUsVx2Q==", + "node_modules/@types/express-serve-static-core": { + "version": "4.17.39", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.39.tgz", + "integrity": "sha512-BiEUfAiGCOllomsRAZOiMFP7LAnrifHpt56pc4Z7l9K6ACyN06Ns1JLMBxwkfLOjJRlSf06NwWsT7yzfpaVpyQ==", "dev": true, "dependencies": { - "@commitlint/types": "^16.0.0", - "ajv": "^6.12.6" - }, - "engines": { - "node": ">=v12" + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" } }, - "node_modules/@commitlint/ensure": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-16.0.0.tgz", - "integrity": "sha512-WdMySU8DCTaq3JPf0tZFCKIUhqxaL54mjduNhu8v4D2AMUVIIQKYMGyvXn94k8begeW6iJkTf9cXBArayskE7Q==", + "node_modules/@types/http-assert": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.4.tgz", + "integrity": "sha512-/6M9aaVk+avzCsrv1lt39AlFw4faCNI6aGll91Rxj38ZE5JI8AxApyQIRy+i1McjiJiuQ0sfuoMLxqq374ZIbA==", + "dev": true + }, + "node_modules/@types/http-errors": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.3.tgz", + "integrity": "sha512-pP0P/9BnCj1OVvQR2lF41EkDG/lWWnDyA203b/4Fmi2eTyORnBtcDoKDwjWQthELrBvWkMOrvSOnZ8OVlW6tXA==", + "dev": true + }, + "node_modules/@types/is-ci": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/is-ci/-/is-ci-3.0.2.tgz", + "integrity": "sha512-9PyP1rgCro6xO3R7zOEoMgx5U9HpLhIg1FFb9p2mWX/x5QI8KMuCWWYtCT1dUQpicp84OsxEAw3iqwIKQY5Pog==", "dev": true, "dependencies": { - "@commitlint/types": "^16.0.0", - "lodash": "^4.17.19" - }, - "engines": { - "node": ">=v12" + "ci-info": "^3.1.0" } }, - "node_modules/@commitlint/execute-rule": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-16.0.0.tgz", - "integrity": "sha512-8edcCibmBb386x5JTHSPHINwA5L0xPkHQFY8TAuDEt5QyRZY/o5DF8OPHSa5Hx2xJvGaxxuIz4UtAT6IiRDYkw==", + "node_modules/@types/is-ci/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], "engines": { - "node": ">=v12" + "node": ">=8" } }, - "node_modules/@commitlint/format": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-16.0.0.tgz", - "integrity": "sha512-9yp5NCquXL1jVMKL0ZkRwJf/UHdebvCcMvICuZV00NQGYSAL89O398nhqrqxlbjBhM5EZVq0VGcV5+7r3D4zAA==", - "dev": true, - "dependencies": { - "@commitlint/types": "^16.0.0", - "chalk": "^4.0.0" - }, - "engines": { - "node": ">=v12" - } + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", + "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "dev": true }, - "node_modules/@commitlint/format/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", + "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "@types/istanbul-lib-coverage": "*" } }, - "node_modules/@commitlint/is-ignored": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-16.0.0.tgz", - "integrity": "sha512-gmAQcwIGC/R/Lp0CEb2b5bfGC7MT5rPe09N8kOGjO/NcdNmfFSZMquwrvNJsq9hnAP0skRdHIsqwlkENkN4Lag==", + "node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", + "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", "dev": true, "dependencies": { - "@commitlint/types": "^16.0.0", - "semver": "7.3.5" - }, - "engines": { - "node": ">=v12" + "@types/istanbul-lib-report": "*" } }, - "node_modules/@commitlint/is-ignored/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/@types/json-schema": { + "version": "7.0.9", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", + "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", + "dev": true + }, + "node_modules/@types/keygrip": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.4.tgz", + "integrity": "sha512-/tjWYD8StMrINelsrHNmpXceo9s3/Y22AzePH1qCvXIgmz/aQp2YFFr6HqhNQVIOdcvaVyp5GS+yjHGuF7Rwsg==", + "dev": true + }, + "node_modules/@types/koa": { + "version": "2.13.10", + "resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.13.10.tgz", + "integrity": "sha512-weKc5IBeORLDGwD1FMgPjaZIg0/mtP7KxXAXEzPRCN78k274D9U2acmccDNPL1MwyV40Jj+hQQ5N2eaV6O0z8g==", "dev": true, "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" + "@types/accepts": "*", + "@types/content-disposition": "*", + "@types/cookies": "*", + "@types/http-assert": "*", + "@types/http-errors": "*", + "@types/keygrip": "*", + "@types/koa-compose": "*", + "@types/node": "*" } }, - "node_modules/@commitlint/is-ignored/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "node_modules/@types/koa-compose": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/@types/koa-compose/-/koa-compose-3.2.7.tgz", + "integrity": "sha512-smtvSL/oLICPuenxy73OmxKGh42VVfn2o2eutReH1yjij0LmxADBpGcAJbp4N+yJjPapPN7jAX9p7Ue0JMQ/Ag==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "@types/koa": "*" } }, - "node_modules/@commitlint/is-ignored/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "node_modules/@types/linkify-it": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.2.tgz", + "integrity": "sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==", "dev": true }, - "node_modules/@commitlint/lint": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-16.0.0.tgz", - "integrity": "sha512-HNl15bRC0h+pLzbMzQC3tM0j1aESXsLYhElqKnXcf5mnCBkBkHzu6WwJW8rZbfxX+YwJmNljN62cPhmdBo8x0A==", + "node_modules/@types/markdown-it": { + "version": "12.2.3", + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.2.3.tgz", + "integrity": "sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==", "dev": true, "dependencies": { - "@commitlint/is-ignored": "^16.0.0", - "@commitlint/parse": "^16.0.0", - "@commitlint/rules": "^16.0.0", - "@commitlint/types": "^16.0.0" - }, - "engines": { - "node": ">=v12" + "@types/linkify-it": "*", + "@types/mdurl": "*" } }, - "node_modules/@commitlint/load": { - "version": "16.1.0", - "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-16.1.0.tgz", - "integrity": "sha512-MtlEhKjP8jAF85jjX4mw8DUUwCxKsCgAc865hhpnwxjrfBcmGP7Up2AFE/M3ZMGDmSl1X1TMybQk/zohj8Cqdg==", - "dev": true, - "dependencies": { - "@commitlint/config-validator": "^16.1.0", - "@commitlint/execute-rule": "^16.0.0", - "@commitlint/resolve-extends": "^16.1.0", - "@commitlint/types": "^16.0.0", - "chalk": "^4.0.0", - "cosmiconfig": "^7.0.0", - "cosmiconfig-typescript-loader": "^1.0.0", - "lodash": "^4.17.19", - "resolve-from": "^5.0.0", - "typescript": "^4.4.3" - }, - "engines": { - "node": ">=v12" - } + "node_modules/@types/mdurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.2.tgz", + "integrity": "sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==", + "dev": true }, - "node_modules/@commitlint/load/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } + "node_modules/@types/mime": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.4.tgz", + "integrity": "sha512-1Gjee59G25MrQGk8bsNvC6fxNiRgUlGn2wlhGf95a59DrprnnHk80FIMMFG9XHMdrfsuA119ht06QPDXA1Z7tw==", + "dev": true }, - "node_modules/@commitlint/message": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-16.0.0.tgz", - "integrity": "sha512-CmK2074SH1Ws6kFMEKOKH/7hMekGVbOD6vb4alCOo2+33ZSLUIX8iNkDYyrw38Jwg6yWUhLjyQLUxREeV+QIUA==", + "node_modules/@types/minimist": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.1.tgz", + "integrity": "sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg==", + "dev": true + }, + "node_modules/@types/node": { + "version": "17.0.12", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.12.tgz", + "integrity": "sha512-4YpbAsnJXWYK/fpTVFlMIcUIho2AYCi4wg5aNPrG1ng7fn/1/RZfCIpRCiBX+12RVa34RluilnvCqD+g3KiSiA==", + "dev": true + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", + "dev": true + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "node_modules/@types/parse5": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/parse5/-/parse5-6.0.3.tgz", + "integrity": "sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==", + "dev": true + }, + "node_modules/@types/qs": { + "version": "6.9.9", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.9.tgz", + "integrity": "sha512-wYLxw35euwqGvTDx6zfY1vokBFnsK0HNrzc6xNHchxfO2hpuRg74GbkEW7e3sSmPvj0TjCDT1VCa6OtHXnubsg==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.6.tgz", + "integrity": "sha512-+0autS93xyXizIYiyL02FCY8N+KkKPhILhcUSA276HxzreZ16kl+cmwvV2qAM/PuCCwPXzOXOWhiPcw20uSFcA==", + "dev": true + }, + "node_modules/@types/resolve": { + "version": "1.20.2", + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", + "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", + "dev": true + }, + "node_modules/@types/semver": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==", + "dev": true + }, + "node_modules/@types/send": { + "version": "0.17.3", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.3.tgz", + "integrity": "sha512-/7fKxvKUoETxjFUsuFlPB9YndePpxxRAOfGC/yJdc9kTjTeP5kRCTzfnE8kPUKCeyiyIZu0YQ76s50hCedI1ug==", "dev": true, - "engines": { - "node": ">=v12" + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" } }, - "node_modules/@commitlint/parse": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-16.0.0.tgz", - "integrity": "sha512-F9EjFlMw4MYgBEqoRrWZZKQBzdiJzPBI0qFDFqwUvfQsMmXEREZ242T4R5bFwLINWaALFLHEIa/FXEPa6QxCag==", + "node_modules/@types/serve-static": { + "version": "1.15.4", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.4.tgz", + "integrity": "sha512-aqqNfs1XTF0HDrFdlY//+SGUxmdSUbjeRXb5iaZc3x0/vMbYmdw9qvOgHWOyyLFxSSRnUuP5+724zBgfw8/WAw==", "dev": true, "dependencies": { - "@commitlint/types": "^16.0.0", - "conventional-changelog-angular": "^5.0.11", - "conventional-commits-parser": "^3.2.2" - }, - "engines": { - "node": ">=v12" + "@types/http-errors": "*", + "@types/mime": "*", + "@types/node": "*" } }, - "node_modules/@commitlint/read": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-16.0.0.tgz", - "integrity": "sha512-H4T2zsfmYQK9B+JtoQaCXWBHUhgIJyOzWZjSfuIV9Ce69/OgHoffNpLZPF2lX6yKuDrS1SQFhI/kUCjVc/e4ew==", + "node_modules/@types/ws": { + "version": "7.4.7", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", + "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", "dev": true, "dependencies": { - "@commitlint/top-level": "^16.0.0", - "@commitlint/types": "^16.0.0", - "fs-extra": "^10.0.0", - "git-raw-commits": "^2.0.0" - }, - "engines": { - "node": ">=v12" + "@types/node": "*" } }, - "node_modules/@commitlint/resolve-extends": { - "version": "16.1.0", - "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-16.1.0.tgz", - "integrity": "sha512-8182s6AFoUFX6+FT1PgQDt15nO2ogdR/EN8SYVAdhNXw1rLz8kT5saB/ICw567GuRAUgFTUMGCXy3ctMOXPEDg==", + "node_modules/@types/yauzl": { + "version": "2.10.2", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.2.tgz", + "integrity": "sha512-Km7XAtUIduROw7QPgvcft0lIupeG8a8rdKL8RiSyKvlE7dYY31fEn41HVuQsRFDuROA8tA4K2UVL+WdfFmErBA==", "dev": true, + "optional": true, "dependencies": { - "@commitlint/config-validator": "^16.1.0", - "@commitlint/types": "^16.0.0", - "import-fresh": "^3.0.0", - "lodash": "^4.17.19", - "resolve-from": "^5.0.0", - "resolve-global": "^1.0.0" - }, - "engines": { - "node": ">=v12" + "@types/node": "*" } }, - "node_modules/@commitlint/rules": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-16.0.0.tgz", - "integrity": "sha512-AOl0y2SBTdJ1bvIv8nwHvQKRT/jC1xb09C5VZwzHoT8sE8F54KDeEzPCwHQFgUcWdGLyS10kkOTAH2MyA8EIlg==", + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.10.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.10.1.tgz", + "integrity": "sha512-Lyvi559Gvpn94k7+ElXNMEnXu/iundV5uFmCUNnftbFrUbAJ1WBoaGgkbOBm07jVZa682oaBU37ao/NGGX4ZDg==", "dev": true, "dependencies": { - "@commitlint/ensure": "^16.0.0", - "@commitlint/message": "^16.0.0", - "@commitlint/to-lines": "^16.0.0", - "@commitlint/types": "^16.0.0", - "execa": "^5.0.0" + "@typescript-eslint/types": "5.10.1", + "@typescript-eslint/visitor-keys": "5.10.1" }, "engines": { - "node": ">=v12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@commitlint/to-lines": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-16.0.0.tgz", - "integrity": "sha512-iN/qU38TCKU7uKOg6RXLpD49wNiuI0TqMqybHbjefUeP/Jmzxa8ishryj0uLyVdrAl1ZjGeD1ukXGMTtvqz8iA==", + "node_modules/@typescript-eslint/types": { + "version": "5.10.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.10.1.tgz", + "integrity": "sha512-ZvxQ2QMy49bIIBpTqFiOenucqUyjTQ0WNLhBM6X1fh1NNlYAC6Kxsx8bRTY3jdYsYg44a0Z/uEgQkohbR0H87Q==", "dev": true, "engines": { - "node": ">=v12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@commitlint/top-level": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-16.0.0.tgz", - "integrity": "sha512-/Jt6NLxyFkpjL5O0jxurZPCHURZAm7cQCqikgPCwqPAH0TLgwqdHjnYipl8J+AGnAMGDip4FNLoYrtgIpZGBYw==", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.10.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.10.1.tgz", + "integrity": "sha512-PwIGnH7jIueXv4opcwEbVGDATjGPO1dx9RkUl5LlHDSe+FXxPwFL5W/qYd5/NHr7f6lo/vvTrAzd0KlQtRusJQ==", "dev": true, "dependencies": { - "find-up": "^5.0.0" + "@typescript-eslint/types": "5.10.1", + "@typescript-eslint/visitor-keys": "5.10.1", + "debug": "^4.3.2", + "globby": "^11.0.4", + "is-glob": "^4.0.3", + "semver": "^7.3.5", + "tsutils": "^3.21.0" }, "engines": { - "node": ">=v12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@commitlint/types": { - "version": "16.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-16.0.0.tgz", - "integrity": "sha512-+0FvYOAS39bJ4aKjnYn/7FD4DfWkmQ6G/06I4F0Gvu4KS5twirEg8mIcLhmeRDOOKn4Tp8PwpLwBiSA6npEMQA==", + "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "dependencies": { - "chalk": "^4.0.0" + "yallist": "^4.0.0" }, "engines": { - "node": ">=v12" + "node": ">=10" } }, - "node_modules/@commitlint/types/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/@cspotcode/source-map-consumer": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", - "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", - "dev": true, - "engines": { - "node": ">= 12" - } + "node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", - "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", + "node_modules/@typescript-eslint/utils": { + "version": "5.10.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.10.1.tgz", + "integrity": "sha512-RRmlITiUbLuTRtn/gcPRi4202niF+q7ylFLCKu4c+O/PcpRvZ/nAUwQ2G00bZgpWkhrNLNnvhZLbDn8Ml0qsQw==", "dev": true, "dependencies": { - "@cspotcode/source-map-consumer": "0.8.0" + "@types/json-schema": "^7.0.9", + "@typescript-eslint/scope-manager": "5.10.1", + "@typescript-eslint/types": "5.10.1", + "@typescript-eslint/typescript-estree": "5.10.1", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0" }, "engines": { - "node": ">=12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.10.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.10.1.tgz", + "integrity": "sha512-NjQ0Xinhy9IL979tpoTRuLKxMc0zJC7QVSdeerXs2/QvOy2yRkzX5dRb10X5woNUdJgU8G3nYRDlI33sq1K4YQ==", "dev": true, "dependencies": { - "eslint-visitor-keys": "^3.3.0" + "@typescript-eslint/types": "5.10.1", + "eslint-visitor-keys": "^3.0.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/@eslint-community/regexpp": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.1.tgz", - "integrity": "sha512-PWiOzLIUAjN/w5K17PoF4n6sKBw0gqLHPhywmYHP4t1VFQQVYeb1yWsJwnMVEMl3tUHME7X/SJPZLmtG7XBDxQ==", + "node_modules/@web/browser-logs": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@web/browser-logs/-/browser-logs-0.4.0.tgz", + "integrity": "sha512-/EBiDAUCJ2DzZhaFxTPRIznEPeafdLbXShIL6aTu7x73x7ZoxSDv7DGuTsh2rWNMUa4+AKli4UORrpyv6QBOiA==", "dev": true, + "dependencies": { + "errorstacks": "^2.2.0" + }, "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=18.0.0" } }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", - "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", + "node_modules/@web/config-loader": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@web/config-loader/-/config-loader-0.3.0.tgz", + "integrity": "sha512-OOhltaFpMzt1dG66yPoXgGvjwaUxy2SrOXd+o6CjOEFfjeKBI9QoHlagUvYiLAcMZrGGGL+Rl+mdqH+GUji0vQ==", "dev": true, "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" + "semver": "^7.3.4" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=18.0.0" } }, - "node_modules/@eslint/eslintrc/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/@eslint/eslintrc/node_modules/globals": { - "version": "13.21.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", - "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", + "node_modules/@web/config-loader/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "dependencies": { - "type-fest": "^0.20.2" + "yallist": "^4.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=10" } }, - "node_modules/@eslint/eslintrc/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "node_modules/@web/config-loader/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { - "argparse": "^2.0.1" + "lru-cache": "^6.0.0" }, "bin": { - "js-yaml": "bin/js-yaml.js" + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/@web/config-loader/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@web/dev-server": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@web/dev-server/-/dev-server-0.4.0.tgz", + "integrity": "sha512-xBV+mYLZnmIu47l0VWG4wSIl9FVF1c1+R0r3P4zWPkqh0qCoWPKv/ZwdEiKozmZib1QAHMB+7yYZr8ygYi/meA==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "@babel/code-frame": "^7.12.11", + "@types/command-line-args": "^5.0.0", + "@web/config-loader": "^0.3.0", + "@web/dev-server-core": "^0.7.0", + "@web/dev-server-rollup": "^0.6.0", + "camelcase": "^6.2.0", + "command-line-args": "^5.1.1", + "command-line-usage": "^7.0.1", + "debounce": "^1.2.0", + "deepmerge": "^4.2.2", + "ip": "^1.1.5", + "nanocolors": "^0.2.1", + "open": "^8.0.2", + "portfinder": "^1.0.32" + }, + "bin": { + "wds": "dist/bin.js", + "web-dev-server": "dist/bin.js" }, "engines": { - "node": "*" + "node": ">=18.0.0" } }, - "node_modules/@eslint/eslintrc/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "node_modules/@web/dev-server-core": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@web/dev-server-core/-/dev-server-core-0.7.0.tgz", + "integrity": "sha512-1FJe6cJ3r0x0ZmxY/FnXVduQD4lKX7QgYhyS6N+VmIpV+tBU4sGRbcrmeoYeY+nlnPa6p2oNuonk3X5ln/W95g==", "dev": true, - "engines": { - "node": ">=10" + "dependencies": { + "@types/koa": "^2.11.6", + "@types/ws": "^7.4.0", + "@web/parse5-utils": "^2.1.0", + "chokidar": "^3.4.3", + "clone": "^2.1.2", + "es-module-lexer": "^1.0.0", + "get-stream": "^6.0.0", + "is-stream": "^2.0.0", + "isbinaryfile": "^5.0.0", + "koa": "^2.13.0", + "koa-etag": "^4.0.0", + "koa-send": "^5.0.1", + "koa-static": "^5.0.0", + "lru-cache": "^8.0.4", + "mime-types": "^2.1.27", + "parse5": "^6.0.1", + "picomatch": "^2.2.2", + "ws": "^7.4.2" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/js": { - "version": "8.49.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.49.0.tgz", - "integrity": "sha512-1S8uAY/MTJqVx0SC4epBq+N2yhuwtNwLbJYNZyhL2pO1ZVKn5HFXav5T41Ryzy9K9V7ZId2JB2oy/W4aCd9/2w==", - "dev": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=18.0.0" } }, - "node_modules/@gar/promisify": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", - "dev": true - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.11", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", - "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", + "node_modules/@web/dev-server-core/node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - }, "engines": { - "node": ">=10.10.0" + "node": ">=0.8" } }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "node_modules/@web/dev-server-core/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, "engines": { - "node": ">=12.22" + "node": ">=10" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "node_modules/@hutson/parse-repository-url": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-3.0.2.tgz", - "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==", + "node_modules/@web/dev-server-core/node_modules/lru-cache": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz", + "integrity": "sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==", "dev": true, "engines": { - "node": ">=6.9.0" + "node": ">=16.14" } }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "node_modules/@web/dev-server-rollup": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@web/dev-server-rollup/-/dev-server-rollup-0.6.0.tgz", + "integrity": "sha512-3cSLo/H8AGrJH7BRY/s7W3g38gzaBj3jcLiT1iUXPNFVn4hQJDO8mZEHqe02/XcO5p6wE65w6GrH0NAjOu1gUg==", + "dev": true, "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + "@rollup/plugin-node-resolve": "^15.0.1", + "@web/dev-server-core": "^0.7.0", + "nanocolors": "^0.2.1", + "parse5": "^6.0.1", + "rollup": "^3.15.0", + "whatwg-url": "^11.0.0" }, "engines": { - "node": ">=12" + "node": ">=18.0.0" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "node_modules/@web/dev-server-rollup/node_modules/tr46": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", + "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", + "dev": true, + "dependencies": { + "punycode": "^2.1.1" + }, "engines": { "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "node_modules/@web/dev-server-rollup/node_modules/webidl-conversions": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", + "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==", + "dev": true, "engines": { "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" - }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "node_modules/@web/dev-server-rollup/node_modules/whatwg-url": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", + "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", + "dev": true, "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" }, "engines": { "node": ">=12" + } + }, + "node_modules/@web/dev-server/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "node_modules/@web/dev-server/node_modules/command-line-usage": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-7.0.1.tgz", + "integrity": "sha512-NCyznE//MuTjwi3y84QVUGEOT+P5oto1e1Pk/jFPVdPPfsG03qpTIl3yw6etR+v73d0lXsoojRpvbru2sqePxQ==", + "dev": true, "dependencies": { - "ansi-regex": "^6.0.1" + "array-back": "^6.2.2", + "chalk-template": "^0.4.0", + "table-layout": "^3.0.0", + "typical": "^7.1.1" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": ">=12.20.0" } }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "node_modules/@web/dev-server/node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "dev": true, "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" }, "engines": { "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "node_modules/@web/dev-server/node_modules/table-layout": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-3.0.2.tgz", + "integrity": "sha512-rpyNZYRw+/C+dYkcQ3Pr+rLxW4CfHpXjPDnG7lYhdRoUcZTUt+KEsX+94RGp/aVp/MQU35JCITv2T/beY4m+hw==", "dev": true, "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" + "@75lb/deep-merge": "^1.1.1", + "array-back": "^6.2.2", + "command-line-args": "^5.2.1", + "command-line-usage": "^7.0.0", + "stream-read-all": "^3.0.1", + "typical": "^7.1.1", + "wordwrapjs": "^5.1.0" + }, + "bin": { + "table-layout": "bin/cli.js" }, "engines": { - "node": ">=8" + "node": ">=12.17" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/@web/dev-server/node_modules/typical": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/typical/-/typical-7.1.1.tgz", + "integrity": "sha512-T+tKVNs6Wu7IWiAce5BgMd7OZfNYUndHwc5MknN+UHOudi7sGZzuHdCadllRuqJ3fPtgFtIH9+lt9qRv6lmpfA==", "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": ">=12.17" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/@web/dev-server/node_modules/wordwrapjs": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-5.1.0.tgz", + "integrity": "sha512-JNjcULU2e4KJwUNv6CHgI46UvDGitb6dGryHajXTDiLgg1/RiGoPSDw4kZfYnwGtEXf2ZMeIewDQgFGzkCB2Sg==", "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, "engines": { - "node": ">=8" + "node": ">=12.17" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/@web/parse5-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@web/parse5-utils/-/parse5-utils-2.1.0.tgz", + "integrity": "sha512-GzfK5disEJ6wEjoPwx8AVNwUe9gYIiwc+x//QYxYDAFKUp4Xb1OJAGLc2l2gVrSQmtPGLKrTRcW90Hv4pEq1qA==", "dev": true, "dependencies": { - "p-try": "^2.0.0" + "@types/parse5": "^6.0.1", + "parse5": "^6.0.1" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=18.0.0" } }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/@web/test-runner": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@web/test-runner/-/test-runner-0.18.0.tgz", + "integrity": "sha512-aAlQrdSqwCie1mxuSK5kM0RYDJZL4Q0Hd5LeXn1on3OtHLtgztL4dZzzNSuAWablR2/Vuve3ChwDDxmYSTqXRg==", "dev": true, "dependencies": { - "p-limit": "^2.2.0" + "@web/browser-logs": "^0.4.0", + "@web/config-loader": "^0.3.0", + "@web/dev-server": "^0.4.0", + "@web/test-runner-chrome": "^0.15.0", + "@web/test-runner-commands": "^0.9.0", + "@web/test-runner-core": "^0.13.0", + "@web/test-runner-mocha": "^0.9.0", + "camelcase": "^6.2.0", + "command-line-args": "^5.1.1", + "command-line-usage": "^7.0.1", + "convert-source-map": "^2.0.0", + "diff": "^5.0.0", + "globby": "^11.0.1", + "nanocolors": "^0.2.1", + "portfinder": "^1.0.32", + "source-map": "^0.7.3" + }, + "bin": { + "web-test-runner": "dist/bin.js", + "wtr": "dist/bin.js" }, "engines": { - "node": ">=8" + "node": ">=18.0.0" } }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "node_modules/@web/test-runner-chrome": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/@web/test-runner-chrome/-/test-runner-chrome-0.15.0.tgz", + "integrity": "sha512-ZqkTJGQ57FDz3lWw+9CKfHuTV64S9GzBy5+0siSQulEVPfGiTzpksx9DohtA3BCLXdbEq4OHg40/XIQJomlc9w==", "dev": true, + "dependencies": { + "@web/test-runner-core": "^0.13.0", + "@web/test-runner-coverage-v8": "^0.8.0", + "async-mutex": "0.4.0", + "chrome-launcher": "^0.15.0", + "puppeteer-core": "^20.0.0" + }, "engines": { - "node": ">=8" + "node": ">=18.0.0" } }, - "node_modules/@jest/console": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.4.6.tgz", - "integrity": "sha512-jauXyacQD33n47A44KrlOVeiXHEXDqapSdfb9kTekOchH/Pd18kBIO1+xxJQRLuG+LUuljFCwTG92ra4NW7SpA==", + "node_modules/@web/test-runner-chrome/node_modules/@puppeteer/browsers": { + "version": "1.4.6", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-1.4.6.tgz", + "integrity": "sha512-x4BEjr2SjOPowNeiguzjozQbsc6h437ovD/wu+JpaenxVLm3jkgzHY2xOslMTp50HoTvQreMjiexiGQw1sqZlQ==", "dev": true, "dependencies": { - "@jest/types": "^27.4.2", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^27.4.6", - "jest-util": "^27.4.2", - "slash": "^3.0.0" + "debug": "4.3.4", + "extract-zip": "2.0.1", + "progress": "2.0.3", + "proxy-agent": "6.3.0", + "tar-fs": "3.0.4", + "unbzip2-stream": "1.4.3", + "yargs": "17.7.1" }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/@jest/console/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "bin": { + "browsers": "lib/cjs/main-cli.js" }, "engines": { - "node": ">=10" + "node": ">=16.3.0" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "peerDependencies": { + "typescript": ">= 4.7.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/@jest/core": { - "version": "27.4.7", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.4.7.tgz", - "integrity": "sha512-n181PurSJkVMS+kClIFSX/LLvw9ExSb+4IMtD6YnfxZVerw9ANYtW0bPrm0MJu2pfe9SY9FJ9FtQ+MdZkrZwjg==", + "node_modules/@web/test-runner-chrome/node_modules/puppeteer-core": { + "version": "20.9.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-20.9.0.tgz", + "integrity": "sha512-H9fYZQzMTRrkboEfPmf7m3CLDN6JvbxXA3qTtS+dFt27tR+CsFHzPsT6pzp6lYL6bJbAPaR0HaPO6uSi+F94Pg==", "dev": true, "dependencies": { - "@jest/console": "^27.4.6", - "@jest/reporters": "^27.4.6", - "@jest/test-result": "^27.4.6", - "@jest/transform": "^27.4.6", - "@jest/types": "^27.4.2", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-changed-files": "^27.4.2", - "jest-config": "^27.4.7", - "jest-haste-map": "^27.4.6", - "jest-message-util": "^27.4.6", - "jest-regex-util": "^27.4.0", - "jest-resolve": "^27.4.6", - "jest-resolve-dependencies": "^27.4.6", - "jest-runner": "^27.4.6", - "jest-runtime": "^27.4.6", - "jest-snapshot": "^27.4.6", - "jest-util": "^27.4.2", - "jest-validate": "^27.4.6", - "jest-watcher": "^27.4.6", - "micromatch": "^4.0.4", - "rimraf": "^3.0.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" + "@puppeteer/browsers": "1.4.6", + "chromium-bidi": "0.4.16", + "cross-fetch": "4.0.0", + "debug": "4.3.4", + "devtools-protocol": "0.0.1147663", + "ws": "8.13.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=16.3.0" }, "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + "typescript": ">= 4.7.4" }, "peerDependenciesMeta": { - "node-notifier": { + "typescript": { "optional": true } } }, - "node_modules/@jest/core/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@web/test-runner-chrome/node_modules/typescript": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.2.2.tgz", + "integrity": "sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==", "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "optional": true, + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=14.17" } }, - "node_modules/@jest/environment": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.4.6.tgz", - "integrity": "sha512-E6t+RXPfATEEGVidr84WngLNWZ8ffCPky8RqqRK6u1Bn0LK92INe0MDttyPl/JOzaq92BmDzOeuqk09TvM22Sg==", + "node_modules/@web/test-runner-chrome/node_modules/ws": { + "version": "8.13.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz", + "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==", "dev": true, - "dependencies": { - "@jest/fake-timers": "^27.4.6", - "@jest/types": "^27.4.2", - "@types/node": "*", - "jest-mock": "^27.4.6" - }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, - "node_modules/@jest/fake-timers": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.4.6.tgz", - "integrity": "sha512-mfaethuYF8scV8ntPpiVGIHQgS0XIALbpY2jt2l7wb/bvq4Q5pDLk4EP4D7SAvYT1QrPOPVZAtbdGAOOyIgs7A==", + "node_modules/@web/test-runner-commands": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@web/test-runner-commands/-/test-runner-commands-0.9.0.tgz", + "integrity": "sha512-zeLI6QdH0jzzJMDV5O42Pd8WLJtYqovgdt0JdytgHc0d1EpzXDsc7NTCJSImboc2NcayIsWAvvGGeRF69SMMYg==", "dev": true, "dependencies": { - "@jest/types": "^27.4.2", - "@sinonjs/fake-timers": "^8.0.1", - "@types/node": "*", - "jest-message-util": "^27.4.6", - "jest-mock": "^27.4.6", - "jest-util": "^27.4.2" + "@web/test-runner-core": "^0.13.0", + "mkdirp": "^1.0.4" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=18.0.0" } }, - "node_modules/@jest/globals": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.4.6.tgz", - "integrity": "sha512-kAiwMGZ7UxrgPzu8Yv9uvWmXXxsy0GciNejlHvfPIfWkSxChzv6bgTS3YqBkGuHcis+ouMFI2696n2t+XYIeFw==", + "node_modules/@web/test-runner-commands/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, - "dependencies": { - "@jest/environment": "^27.4.6", - "@jest/types": "^27.4.2", - "expect": "^27.4.6" + "bin": { + "mkdirp": "bin/cmd.js" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=10" } }, - "node_modules/@jest/reporters": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.4.6.tgz", - "integrity": "sha512-+Zo9gV81R14+PSq4wzee4GC2mhAN9i9a7qgJWL90Gpx7fHYkWpTBvwWNZUXvJByYR9tAVBdc8VxDWqfJyIUrIQ==", + "node_modules/@web/test-runner-core": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@web/test-runner-core/-/test-runner-core-0.13.0.tgz", + "integrity": "sha512-mUrETPg9n4dHWEk+D46BU3xVhQf+ljT4cG7FSpmF7AIOsXWgWHoaXp6ReeVcEmM5fmznXec2O/apTb9hpGrP3w==", "dev": true, "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^27.4.6", - "@jest/test-result": "^27.4.6", - "@jest/transform": "^27.4.6", - "@jest/types": "^27.4.2", - "@types/node": "*", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.2.4", + "@babel/code-frame": "^7.12.11", + "@types/babel__code-frame": "^7.0.2", + "@types/co-body": "^6.1.0", + "@types/convert-source-map": "^2.0.0", + "@types/debounce": "^1.2.0", + "@types/istanbul-lib-coverage": "^2.0.3", + "@types/istanbul-reports": "^3.0.0", + "@web/browser-logs": "^0.4.0", + "@web/dev-server-core": "^0.7.0", + "chokidar": "^3.4.3", + "cli-cursor": "^3.1.0", + "co-body": "^6.1.0", + "convert-source-map": "^2.0.0", + "debounce": "^1.2.0", + "dependency-graph": "^0.11.0", + "globby": "^11.0.1", + "ip": "^1.1.5", "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.1.3", - "jest-haste-map": "^27.4.6", - "jest-resolve": "^27.4.6", - "jest-util": "^27.4.2", - "jest-worker": "^27.4.6", - "slash": "^3.0.0", - "source-map": "^0.6.0", - "string-length": "^4.0.1", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^8.1.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + "istanbul-lib-report": "^3.0.1", + "istanbul-reports": "^3.0.2", + "log-update": "^4.0.0", + "nanocolors": "^0.2.1", + "nanoid": "^3.1.25", + "open": "^8.0.2", + "picomatch": "^2.2.2", + "source-map": "^0.7.3" }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "engines": { + "node": ">=18.0.0" } }, - "node_modules/@jest/reporters/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@web/test-runner-core/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/@web/test-runner-core/node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@jest/reporters/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/@web/test-runner-core/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">= 8" } }, - "node_modules/@jest/source-map": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-27.4.0.tgz", - "integrity": "sha512-Ntjx9jzP26Bvhbm93z/AKcPRj/9wrkI88/gK60glXDx1q+IeI0rf7Lw2c89Ch6ofonB0On/iRDreQuQ6te9pgQ==", + "node_modules/@web/test-runner-coverage-v8": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@web/test-runner-coverage-v8/-/test-runner-coverage-v8-0.8.0.tgz", + "integrity": "sha512-PskiucYpjUtgNfR2zF2AWqWwjXL7H3WW/SnCAYmzUrtob7X9o/+BjdyZ4wKbOxWWSbJO4lEdGIDLu+8X2Xw+lA==", "dev": true, "dependencies": { - "callsites": "^3.0.0", - "graceful-fs": "^4.2.4", - "source-map": "^0.6.0" + "@web/test-runner-core": "^0.13.0", + "istanbul-lib-coverage": "^3.0.0", + "lru-cache": "^8.0.4", + "picomatch": "^2.2.2", + "v8-to-istanbul": "^9.0.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=18.0.0" } }, - "node_modules/@jest/source-map/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/@web/test-runner-coverage-v8/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/@web/test-runner-coverage-v8/node_modules/lru-cache": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz", + "integrity": "sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=16.14" } }, - "node_modules/@jest/test-result": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.4.6.tgz", - "integrity": "sha512-fi9IGj3fkOrlMmhQqa/t9xum8jaJOOAi/lZlm6JXSc55rJMXKHxNDN1oCP39B0/DhNOa2OMupF9BcKZnNtXMOQ==", + "node_modules/@web/test-runner-coverage-v8/node_modules/v8-to-istanbul": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.1.3.tgz", + "integrity": "sha512-9lDD+EVI2fjFsMWXc6dy5JJzBsVTcQ2fVkfBvncZ6xJWG9wtBhOldG+mHkSL0+V1K/xgZz0JDO5UT5hFwHUghg==", "dev": true, "dependencies": { - "@jest/console": "^27.4.6", - "@jest/types": "^27.4.2", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=10.12.0" } }, - "node_modules/@jest/test-sequencer": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.4.6.tgz", - "integrity": "sha512-3GL+nsf6E1PsyNsJuvPyIz+DwFuCtBdtvPpm/LMXVkBJbdFvQYCDpccYT56qq5BGniXWlE81n2qk1sdXfZebnw==", + "node_modules/@web/test-runner-mocha": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@web/test-runner-mocha/-/test-runner-mocha-0.9.0.tgz", + "integrity": "sha512-ZL9F6FXd0DBQvo/h/+mSfzFTSRVxzV9st/AHhpgABtUtV/AIpVE9to6+xdkpu6827kwjezdpuadPfg+PlrBWqQ==", "dev": true, "dependencies": { - "@jest/test-result": "^27.4.6", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.4.6", - "jest-runtime": "^27.4.6" + "@web/test-runner-core": "^0.13.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=18.0.0" } }, - "node_modules/@jest/transform": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.4.6.tgz", - "integrity": "sha512-9MsufmJC8t5JTpWEQJ0OcOOAXaH5ioaIX6uHVBLBMoCZPfKKQF+EqP8kACAvCZ0Y1h2Zr3uOccg8re+Dr5jxyw==", + "node_modules/@web/test-runner-playwright": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@web/test-runner-playwright/-/test-runner-playwright-0.11.0.tgz", + "integrity": "sha512-s+f43DSAcssKYVOD9SuzueUcctJdHzq1by45gAnSCKa9FQcaTbuYe8CzmxA21g+NcL5+ayo4z+MA9PO4H+PssQ==", "dev": true, "dependencies": { - "@babel/core": "^7.1.0", - "@jest/types": "^27.4.2", - "babel-plugin-istanbul": "^6.1.1", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.4.6", - "jest-regex-util": "^27.4.0", - "jest-util": "^27.4.2", - "micromatch": "^4.0.4", - "pirates": "^4.0.4", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" + "@web/test-runner-core": "^0.13.0", + "@web/test-runner-coverage-v8": "^0.8.0", + "playwright": "^1.22.2" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=18.0.0" } }, - "node_modules/@jest/transform/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@web/test-runner/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/@jest/transform/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@jest/types": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.4.2.tgz", - "integrity": "sha512-j35yw0PMTPpZsUoOBiuHzr1zTYoad1cVIE0ajEjcrJONxxrko/IRGKkXx3os0Nsi4Hu3+5VmDbVfq5WhG/pWAg==", + "node_modules/@web/test-runner/node_modules/command-line-usage": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-7.0.1.tgz", + "integrity": "sha512-NCyznE//MuTjwi3y84QVUGEOT+P5oto1e1Pk/jFPVdPPfsG03qpTIl3yw6etR+v73d0lXsoojRpvbru2sqePxQ==", "dev": true, "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^16.0.0", - "chalk": "^4.0.0" + "array-back": "^6.2.2", + "chalk-template": "^0.4.0", + "table-layout": "^3.0.0", + "typical": "^7.1.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=12.20.0" } }, - "node_modules/@jest/types/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/@web/test-runner/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/@web/test-runner/node_modules/diff": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.1.0.tgz", + "integrity": "sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==", "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=0.3.1" } }, - "node_modules/@manypkg/find-root": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@manypkg/find-root/-/find-root-1.1.0.tgz", - "integrity": "sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==", + "node_modules/@web/test-runner/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "dev": true, - "dependencies": { - "@babel/runtime": "^7.5.5", - "@types/node": "^12.7.1", - "find-up": "^4.1.0", - "fs-extra": "^8.1.0" + "engines": { + "node": ">= 8" } }, - "node_modules/@manypkg/find-root/node_modules/@types/node": { - "version": "12.20.55", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", - "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", - "dev": true - }, - "node_modules/@manypkg/find-root/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/@web/test-runner/node_modules/table-layout": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-3.0.2.tgz", + "integrity": "sha512-rpyNZYRw+/C+dYkcQ3Pr+rLxW4CfHpXjPDnG7lYhdRoUcZTUt+KEsX+94RGp/aVp/MQU35JCITv2T/beY4m+hw==", "dev": true, "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "@75lb/deep-merge": "^1.1.1", + "array-back": "^6.2.2", + "command-line-args": "^5.2.1", + "command-line-usage": "^7.0.0", + "stream-read-all": "^3.0.1", + "typical": "^7.1.1", + "wordwrapjs": "^5.1.0" + }, + "bin": { + "table-layout": "bin/cli.js" }, "engines": { - "node": ">=8" + "node": ">=12.17" } }, - "node_modules/@manypkg/find-root/node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "node_modules/@web/test-runner/node_modules/typical": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/typical/-/typical-7.1.1.tgz", + "integrity": "sha512-T+tKVNs6Wu7IWiAce5BgMd7OZfNYUndHwc5MknN+UHOudi7sGZzuHdCadllRuqJ3fPtgFtIH9+lt9qRv6lmpfA==", "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, "engines": { - "node": ">=6 <7 || >=8" + "node": ">=12.17" } }, - "node_modules/@manypkg/find-root/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "node_modules/@web/test-runner/node_modules/wordwrapjs": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wordwrapjs/-/wordwrapjs-5.1.0.tgz", + "integrity": "sha512-JNjcULU2e4KJwUNv6CHgI46UvDGitb6dGryHajXTDiLgg1/RiGoPSDw4kZfYnwGtEXf2ZMeIewDQgFGzkCB2Sg==", "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "engines": { + "node": ">=12.17" } }, - "node_modules/@manypkg/find-root/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/@yarnpkg/lockfile": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", + "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==" + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dev": true, "dependencies": { - "p-locate": "^4.1.0" + "mime-types": "~2.1.34", + "negotiator": "0.6.3" }, "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "node_modules/@manypkg/find-root/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", "dev": true, - "dependencies": { - "p-try": "^2.0.0" + "bin": { + "acorn": "bin/acorn" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.4.0" } }, - "node_modules/@manypkg/find-root/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/@manypkg/find-root/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } + "node_modules/add-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", + "integrity": "sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==", + "dev": true }, - "node_modules/@manypkg/get-packages": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@manypkg/get-packages/-/get-packages-1.1.3.tgz", - "integrity": "sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==", + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, "dependencies": { - "@babel/runtime": "^7.5.5", - "@changesets/types": "^4.0.1", - "@manypkg/find-root": "^1.1.0", - "fs-extra": "^8.1.0", - "globby": "^11.0.0", - "read-yaml-file": "^1.1.0" + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@manypkg/get-packages/node_modules/@changesets/types": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@changesets/types/-/types-4.1.0.tgz", - "integrity": "sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==", - "dev": true - }, - "node_modules/@manypkg/get-packages/node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" }, - "engines": { - "node": ">=6 <7 || >=8" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@manypkg/get-packages/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "node_modules/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "dependencies": { + "string-width": "^4.1.0" } }, - "node_modules/@manypkg/get-packages/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true, "engines": { - "node": ">= 4.0.0" + "node": ">=6" } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "node_modules/ansi-escape-sequences": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-escape-sequences/-/ansi-escape-sequences-4.1.0.tgz", + "integrity": "sha512-dzW9kHxH011uBsidTXd14JXgzye/YLb2LzeKZ4bsgl/Knwx8AtbSFkkGxagdNOoh0DlqHCmfiEjWKBaqjOanVw==", "dev": true, "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "array-back": "^3.0.1" }, "engines": { - "node": ">= 8" + "node": ">=8.0.0" } }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "node_modules/ansi-escape-sequences/node_modules/array-back": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", + "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", "dev": true, "engines": { - "node": ">= 8" + "node": ">=6" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "type-fest": "^0.21.3" }, "engines": { - "node": ">= 8" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@npmcli/fs": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.0.tgz", - "integrity": "sha512-VhP1qZLXcrXRIaPoqb4YA55JQxLNF3jNR4T55IdOJa3+IFJKNYHtPvtXx8slmeMavj37vCzCfrqQM1vWLsYKLA==", - "dev": true, - "dependencies": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" - }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": ">=8" } }, - "node_modules/@npmcli/fs/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { - "yallist": "^4.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=10" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@npmcli/fs/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" }, "engines": { - "node": ">=10" + "node": ">= 8" } }, - "node_modules/@npmcli/fs/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", "dev": true }, - "node_modules/@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dev": true, "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@npmcli/move-file/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "optional": true, - "engines": { - "node": ">=14" + "sprintf-js": "~1.0.2" } }, - "node_modules/@sindresorhus/is": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", - "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "node_modules/array-back": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.2.tgz", + "integrity": "sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==", "dev": true, "engines": { - "node": ">=6" + "node": ">=12.17" } }, - "node_modules/@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", + "node_modules/array-buffer-byte-length": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", "dev": true, "dependencies": { - "type-detect": "4.0.8" + "call-bind": "^1.0.2", + "is-array-buffer": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@sinonjs/fake-timers": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-8.1.0.tgz", - "integrity": "sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==", + "node_modules/array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, - "dependencies": { - "@sinonjs/commons": "^1.7.0" + "engines": { + "node": ">=8" } }, - "node_modules/@szmarczak/http-timer": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", - "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", "dev": true, "dependencies": { - "defer-to-connect": "^1.0.1" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" }, "engines": { - "node": ">=6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", + "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.8.tgz", - "integrity": "sha512-6XFfSQmMgq0CFLY1MslA/CPUfhIL919M1rMsa5lP2P097N2Wd1sSX0tx1u4olM16fLNhtHZpRhedZJphNJqmZg==", - "dev": true - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.9.tgz", - "integrity": "sha512-/yBMcem+fbvhSREH+s14YJi18sp7J9jpuhYByADT2rypfajMZZN4WQ6zBGgBKp53NKmqI36wFYDb3yaMPurITw==", - "dev": true + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-array-buffer": "^3.0.2", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/@tsconfig/node14": { + "node_modules/arrify": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.1.tgz", - "integrity": "sha512-509r2+yARFfHHE7T6Puu2jjkoycftovhXRqW328PDXTVGKihlb1P8Z9mMZH04ebyajfRY7dedfGynlrFHJUQCg==", - "dev": true + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/@tsconfig/node16": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.2.tgz", - "integrity": "sha512-eZxlbI8GZscaGS7kkc/trHTT5xgrjH3/1n2JDwusC9iahPKWMRvRjJSAN5mCXviuTGQ/lHnhvv8Q1YTpnfz9gA==", - "dev": true + "node_modules/assert": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", + "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", + "dependencies": { + "call-bind": "^1.0.2", + "is-nan": "^1.3.2", + "object-is": "^1.1.5", + "object.assign": "^4.1.4", + "util": "^0.12.5" + } }, - "node_modules/@tsd/typescript": { - "version": "4.5.5", - "resolved": "https://registry.npmjs.org/@tsd/typescript/-/typescript-4.5.5.tgz", - "integrity": "sha512-TxQ9QiUT94ZjKu++ta/iwTMVHsix4ApohnaHPTSd58WQuTjPIELP0tUYcW7lT6psz7yZiU4eRw+X4v/XV830Sw==", + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", "dev": true, - "bin": { - "tsc": "typescript/bin/tsc", - "tsserver": "typescript/bin/tsserver" + "engines": { + "node": ">=12" } }, - "node_modules/@types/babel__core": { - "version": "7.1.18", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.18.tgz", - "integrity": "sha512-S7unDjm/C7z2A2R9NzfKCK1I+BAALDtxEmsJBwlB3EzNfb929ykjL++1CK9LO++EIp2fQrC8O+BwjKvz6UeDyQ==", + "node_modules/ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", "dev": true, "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" } }, - "node_modules/@types/babel__generator": { - "version": "7.6.4", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", - "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true, - "dependencies": { - "@babel/types": "^7.0.0" + "engines": { + "node": ">=8" } }, - "node_modules/@types/babel__template": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", - "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "node_modules/async-mutex": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.4.0.tgz", + "integrity": "sha512-eJFZ1YhRR8UN8eBLoNzcDPcy/jqjsg6I1AP+KvWQX80BqOSW1oJPJXDylPUEeMr2ZQvHgnQ//Lp6f3RQ1zI7HA==", "dev": true, "dependencies": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" + "tslib": "^2.4.0" } }, - "node_modules/@types/babel__traverse": { - "version": "7.14.2", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.14.2.tgz", - "integrity": "sha512-K2waXdXBi2302XUdcHcR1jCeU0LL4TD9HRs/gk0N2Xvrht+G/BfJa4QObBQZfhMdxiCpV3COl5Nfq4uKTeTnJA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.3.0" + "node_modules/at-least-node": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", + "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", + "engines": { + "node": ">= 4.0.0" } }, - "node_modules/@types/eslint": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.29.0.tgz", - "integrity": "sha512-VNcvioYDH8/FxaeTKkM4/TiTwt6pBV9E3OfGmvaw8tPl0rrHCJ4Ll15HRT+pMiFAf/MLQvAzC+6RzUMEL9Ceng==", + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", "dev": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" } }, - "node_modules/@types/estree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.1.tgz", - "integrity": "sha512-LG4opVs2ANWZ1TJoKc937iMmNstM/d0ae1vNbnBvBhqCSezgVUOzcLCqbI5elV8Vy6WKwKjaqR+zO9VKirBBCA==", + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/b4a": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", + "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==", "dev": true }, - "node_modules/@types/graceful-fs": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", - "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/basic-ftp": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.3.tgz", + "integrity": "sha512-QHX8HLlncOLpy54mh+k/sWIFd0ThmRqwe9ZjELybGZK+tZ8rUb9VO0saKJUROTbE+KhzDUT7xziGpGrW8Kmd+g==", "dev": true, - "dependencies": { - "@types/node": "*" + "engines": { + "node": ">=10.0.0" } }, - "node_modules/@types/is-ci": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/is-ci/-/is-ci-3.0.2.tgz", - "integrity": "sha512-9PyP1rgCro6xO3R7zOEoMgx5U9HpLhIg1FFb9p2mWX/x5QI8KMuCWWYtCT1dUQpicp84OsxEAw3iqwIKQY5Pog==", + "node_modules/better-path-resolve": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/better-path-resolve/-/better-path-resolve-1.0.0.tgz", + "integrity": "sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==", "dev": true, "dependencies": { - "ci-info": "^3.1.0" + "is-windows": "^1.0.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/@types/is-ci/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], "engines": { "node": ">=8" } }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz", - "integrity": "sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==", + "node_modules/bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", "dev": true }, - "node_modules/@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", + "node_modules/boxen": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", + "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", "dev": true, "dependencies": { - "@types/istanbul-lib-coverage": "*" + "ansi-align": "^3.0.0", + "camelcase": "^5.3.1", + "chalk": "^3.0.0", + "cli-boxes": "^2.2.0", + "string-width": "^4.1.0", + "term-size": "^2.1.0", + "type-fest": "^0.8.1", + "widest-line": "^3.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@types/istanbul-reports": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz", - "integrity": "sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==", + "node_modules/boxen/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", "dev": true, "dependencies": { - "@types/istanbul-lib-report": "*" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@types/json-schema": { - "version": "7.0.9", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.9.tgz", - "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", - "dev": true + "node_modules/boxen/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } }, - "node_modules/@types/linkify-it": { + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.2.tgz", - "integrity": "sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==", - "dev": true + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } }, - "node_modules/@types/markdown-it": { - "version": "12.2.3", - "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.2.3.tgz", - "integrity": "sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==", + "node_modules/breakword": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/breakword/-/breakword-1.0.6.tgz", + "integrity": "sha512-yjxDAYyK/pBvws9H4xKYpLDpYKEH6CzrBPAuXq3x18I+c/2MkVtT3qAr7Oloi6Dss9qNhPVueAAVU1CSeNDIXw==", "dev": true, "dependencies": { - "@types/linkify-it": "*", - "@types/mdurl": "*" + "wcwidth": "^1.0.1" } }, - "node_modules/@types/mdurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.2.tgz", - "integrity": "sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==", + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", "dev": true }, - "node_modules/@types/minimist": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.1.tgz", - "integrity": "sha512-fZQQafSREFyuZcdWFAExYjBiCL7AUCdgsk80iO0q4yihYYdcIiH28CcuPTGFgLOCC8RlW49GSQxdHwZP+I7CNg==", - "dev": true - }, - "node_modules/@types/node": { - "version": "17.0.12", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.12.tgz", - "integrity": "sha512-4YpbAsnJXWYK/fpTVFlMIcUIho2AYCi4wg5aNPrG1ng7fn/1/RZfCIpRCiBX+12RVa34RluilnvCqD+g3KiSiA==", - "dev": true - }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", - "dev": true - }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, - "node_modules/@types/prettier": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.3.tgz", - "integrity": "sha512-QzSuZMBuG5u8HqYz01qtMdg/Jfctlnvj1z/lYnIDXs/golxw0fxtRAHd9KrzjR7Yxz1qVeI00o0kiO3PmVdJ9w==", - "dev": true - }, - "node_modules/@types/semver": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.3.tgz", - "integrity": "sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==", - "dev": true - }, - "node_modules/@types/stack-utils": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz", - "integrity": "sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==", - "dev": true - }, - "node_modules/@types/yargs": { - "version": "16.0.4", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz", - "integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==", - "dev": true, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "dependencies": { - "@types/yargs-parser": "*" + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" } }, - "node_modules/@types/yargs-parser": { - "version": "20.2.1", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.1.tgz", - "integrity": "sha512-7tFImggNeNBVMsn0vLrpn1H1uPrUBdnARPTpZoitY37ZrdJREzf7I16tMrlK3hen349gr1NYh8CmZQa7CTG6Aw==", - "dev": true - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "5.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.10.1.tgz", - "integrity": "sha512-Lyvi559Gvpn94k7+ElXNMEnXu/iundV5uFmCUNnftbFrUbAJ1WBoaGgkbOBm07jVZa682oaBU37ao/NGGX4ZDg==", + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.10.1", - "@typescript-eslint/visitor-keys": "5.10.1" - }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": "*" } }, - "node_modules/@typescript-eslint/types": { - "version": "5.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.10.1.tgz", - "integrity": "sha512-ZvxQ2QMy49bIIBpTqFiOenucqUyjTQ0WNLhBM6X1fh1NNlYAC6Kxsx8bRTY3jdYsYg44a0Z/uEgQkohbR0H87Q==", + "node_modules/buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "node_modules/builtin-modules": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", + "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", "dev": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=6" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.10.1.tgz", - "integrity": "sha512-PwIGnH7jIueXv4opcwEbVGDATjGPO1dx9RkUl5LlHDSe+FXxPwFL5W/qYd5/NHr7f6lo/vvTrAzd0KlQtRusJQ==", + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true, - "dependencies": { - "@typescript-eslint/types": "5.10.1", - "@typescript-eslint/visitor-keys": "5.10.1", - "debug": "^4.3.2", - "globby": "^11.0.4", - "is-glob": "^4.0.3", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">= 0.8" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/cache-content-type": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-content-type/-/cache-content-type-1.0.1.tgz", + "integrity": "sha512-IKufZ1o4Ut42YUrZSo8+qnMTrFuKkvyoLXUywKz9GJ5BrhOFGhLdkx9sG4KAnVvbY6kEcSFjLQul+DVmBm2bgA==", "dev": true, "dependencies": { - "yallist": "^4.0.0" + "mime-types": "^2.1.18", + "ylru": "^1.2.0" }, "engines": { - "node": ">=10" + "node": ">= 6.0.0" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "node_modules/cache-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cache-point/-/cache-point-2.0.0.tgz", + "integrity": "sha512-4gkeHlFpSKgm3vm2gJN5sPqfmijYRFYCQ6tv5cLw0xVmT6r1z1vd4FNnpuOREco3cBs1G709sZ72LdgddKvL5w==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "array-back": "^4.0.1", + "fs-then-native": "^2.0.0", + "mkdirp2": "^1.0.4" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/@typescript-eslint/utils": { - "version": "5.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.10.1.tgz", - "integrity": "sha512-RRmlITiUbLuTRtn/gcPRi4202niF+q7ylFLCKu4c+O/PcpRvZ/nAUwQ2G00bZgpWkhrNLNnvhZLbDn8Ml0qsQw==", + "node_modules/cache-point/node_modules/array-back": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", + "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.10.1", - "@typescript-eslint/types": "5.10.1", - "@typescript-eslint/typescript-estree": "5.10.1", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + "node": ">=8" } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.10.1.tgz", - "integrity": "sha512-NjQ0Xinhy9IL979tpoTRuLKxMc0zJC7QVSdeerXs2/QvOy2yRkzX5dRb10X5woNUdJgU8G3nYRDlI33sq1K4YQ==", + "node_modules/cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.10.1", - "eslint-visitor-keys": "^3.0.0" + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": ">=8" } }, - "node_modules/@yarnpkg/lockfile": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", - "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==" - }, - "node_modules/abab": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", - "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", - "dev": true - }, - "node_modules/abbrev": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", - "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=", - "dev": true - }, - "node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "node_modules/cacheable-request/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", "dev": true, - "bin": { - "acorn": "bin/acorn" - }, "engines": { - "node": ">=0.4.0" + "node": ">=8" } }, - "node_modules/acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "dev": true, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", "dependencies": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/acorn-globals/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, - "bin": { - "acorn": "bin/acorn" - }, "engines": { - "node": ">=0.4.0" + "node": ">=6" } }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" } }, - "node_modules/acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, "engines": { - "node": ">=0.4.0" + "node": ">=6" } }, - "node_modules/add-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", - "integrity": "sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==", - "dev": true - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "node_modules/camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", "dev": true, "dependencies": { - "debug": "4" + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" }, "engines": { - "node": ">= 6.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/agentkeepalive": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", - "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", - "dev": true, + "node_modules/capital-case": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", + "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", "dependencies": { - "humanize-ms": "^1.2.1" - }, - "engines": { - "node": ">= 8.0.0" + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case-first": "^2.0.2" } }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "node_modules/catharsis": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz", + "integrity": "sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==", "dev": true, "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" + "lodash": "^4.17.15" }, "engines": { - "node": ">=8" + "node": ">= 10" } }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/chai": { + "version": "5.0.0-alpha.2", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.0.0-alpha.2.tgz", + "integrity": "sha512-oYU0k+frrqcS+wGucSy2kzx2a+f6znUHvPN/bBcQke+oQzEQWmGVysw2oiv417oz5Xg6/9qwJsOlsUDYZ5y6Vw==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "assertion-error": "^2.0.1", + "check-error": "^2.0.0", + "deep-eql": "^5.0.1", + "loupe": "^3.0.0", + "pathval": "^2.0.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "dev": true, - "optional": true, "engines": { - "node": ">=0.4.2" + "node": ">=12" } }, - "node_modules/ansi-align": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", - "dev": true, - "dependencies": { - "string-width": "^4.1.0" - } + "node_modules/chai-as-promised": { + "name": "@esm-bundle/chai-as-promised", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/@esm-bundle/chai-as-promised/-/chai-as-promised-7.1.1.tgz", + "integrity": "sha512-qhDeW3gK3ITAzzhZj8QfvuhX7iNqyzooVZJnoW5bjIotxxJM92O9EKxdxBg4B35hjh3tV1chlEgC/pfR9cVRlA==", + "dev": true }, - "node_modules/ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "dev": true, + "node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", "engines": { - "node": ">=6" + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/ansi-escape-sequences": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-escape-sequences/-/ansi-escape-sequences-4.1.0.tgz", - "integrity": "sha512-dzW9kHxH011uBsidTXd14JXgzye/YLb2LzeKZ4bsgl/Knwx8AtbSFkkGxagdNOoh0DlqHCmfiEjWKBaqjOanVw==", + "node_modules/chalk-template": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-0.4.0.tgz", + "integrity": "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==", "dev": true, "dependencies": { - "array-back": "^3.0.1" + "chalk": "^4.1.2" }, "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/ansi-escape-sequences/node_modules/array-back": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", - "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", - "dev": true, - "engines": { - "node": ">=6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/chalk-template?sponsor=1" } }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "node_modules/chalk-template/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "type-fest": "^0.21.3" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/change-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", + "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", + "dependencies": { + "camel-case": "^4.1.2", + "capital-case": "^1.0.4", + "constant-case": "^3.0.4", + "dot-case": "^3.0.4", + "header-case": "^2.0.4", + "no-case": "^3.0.4", + "param-case": "^3.0.4", + "pascal-case": "^3.1.2", + "path-case": "^3.0.4", + "sentence-case": "^3.0.4", + "snake-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "node_modules/check-error": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.0.0.tgz", + "integrity": "sha512-tjLAOBHKVxtPoHe/SA7kNOMvhCRdCJ3vETdeY0RuAc9popf+hyaSV6ZEg9hr4cpWF7jmo/JSWEnLDrnijS9Tog==", + "dev": true, "engines": { - "node": ">=8" + "node": ">= 16" } }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], "dependencies": { - "color-convert": "^2.0.1" + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" }, "engines": { - "node": ">=8" + "node": ">= 8.10.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "node_modules/chrome-launcher": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/chrome-launcher/-/chrome-launcher-0.15.2.tgz", + "integrity": "sha512-zdLEwNo3aUVzIhKhTtXfxhdvZhUghrnmkvcAq2NoDd+LeOHKf03H5jwZ8T/STsAlzyALkBVK552iaG1fGf1xVQ==", "dev": true, "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" + "@types/node": "*", + "escape-string-regexp": "^4.0.0", + "is-wsl": "^2.2.0", + "lighthouse-logger": "^1.0.0" + }, + "bin": { + "print-chrome-path": "bin/print-chrome-path.js" }, "engines": { - "node": ">= 8" + "node": ">=12.13.0" } }, - "node_modules/aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", - "dev": true - }, - "node_modules/are-we-there-yet": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-2.0.0.tgz", - "integrity": "sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==", + "node_modules/chrome-launcher/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/are-we-there-yet/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "node_modules/chromium-bidi": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.4.16.tgz", + "integrity": "sha512-7ZbXdWERxRxSwo3txsBjjmc/NLxqb1Bk30mRb0BMS4YIaiV6zvKZqL/UAH+DdqcDYayDWk2n/y8klkBDODrPvA==", "dev": true, "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "mitt": "3.0.0" }, - "engines": { - "node": ">= 6" + "peerDependencies": { + "devtools-protocol": "*" } }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", "dev": true }, - "node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" + "engines": { + "node": ">=6" } }, - "node_modules/array-back": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.2.tgz", - "integrity": "sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==", + "node_modules/cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", "dev": true, "engines": { - "node": ">=12.17" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", - "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", + "node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "is-array-buffer": "^3.0.1" + "restore-cursor": "^3.1.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=8" } }, - "node_modules/array-ify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", - "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=", - "dev": true - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "node_modules/cli-truncate": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", + "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", "dev": true, + "dependencies": { + "slice-ansi": "^5.0.0", + "string-width": "^5.0.0" + }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/array.prototype.flat": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", - "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "node_modules/cli-truncate/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, "engines": { - "node": ">= 0.4" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", - "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", + "node_modules/cli-truncate/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/cli-truncate/node_modules/string-width": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.0.tgz", + "integrity": "sha512-7x54QnN21P+XL/v8SuNKvfgsUre6PXpN7mc77N3HlZv+f1SBRGmjxtOud2Z6FZ8DmdkD/IdjCaf9XXbnqmTZGQ==", "dev": true, "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "get-intrinsic": "^1.2.1", - "is-array-buffer": "^3.0.2", - "is-shared-array-buffer": "^1.0.2" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "node_modules/cli-truncate/node_modules/strip-ansi": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", + "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/assert": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", - "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "is-nan": "^1.3.2", - "object-is": "^1.1.5", - "object.assign": "^4.1.4", - "util": "^0.12.5" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" } }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", "dev": true, "engines": { - "node": ">=8" + "node": ">=0.8" } }, - "node_modules/async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=", - "dev": true - }, - "node_modules/async-foreach": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", - "integrity": "sha1-NhIfhFwFeBct5Bmpfb6x0W7DRUI=", + "node_modules/clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "engines": { - "node": ">= 4.0.0" + "dependencies": { + "mimic-response": "^1.0.0" } }, - "node_modules/atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", "dev": true, - "bin": { - "atob": "bin/atob.js" - }, - "engines": { - "node": ">= 4.5.0" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" } }, - "node_modules/babel-code-frame": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", - "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "node_modules/co-body": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/co-body/-/co-body-6.1.0.tgz", + "integrity": "sha512-m7pOT6CdLN7FuXUcpuz/8lfQ/L77x8SchHCF4G0RBTJO20Wzmhn5Sp4/5WsKy8OSpifBSUrmg83qEqaDHdyFuQ==", "dev": true, "dependencies": { - "chalk": "^1.1.3", - "esutils": "^2.0.2", - "js-tokens": "^3.0.2" - } - }, - "node_modules/babel-code-frame/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" + "inflation": "^2.0.0", + "qs": "^6.5.2", + "raw-body": "^2.3.3", + "type-is": "^1.6.16" } }, - "node_modules/babel-code-frame/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "node_modules/collect-all": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/collect-all/-/collect-all-1.0.4.tgz", + "integrity": "sha512-RKZhRwJtJEP5FWul+gkSMEnaK6H3AGPTTWOiRimCcs+rc/OmQE3Yhy1Q7A7KsdkG3ZXVdZq68Y6ONSdvkeEcKA==", "dev": true, + "dependencies": { + "stream-connect": "^1.0.2", + "stream-via": "^1.0.4" + }, "engines": { "node": ">=0.10.0" } }, - "node_modules/babel-code-frame/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "color-name": "~1.1.4" }, "engines": { - "node": ">=0.10.0" + "node": ">=7.0.0" } }, - "node_modules/babel-code-frame/node_modules/js-tokens": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", - "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", "dev": true }, - "node_modules/babel-code-frame/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "node_modules/command-line-args": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", + "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", "dev": true, "dependencies": { - "ansi-regex": "^2.0.0" + "array-back": "^3.1.0", + "find-replace": "^3.0.0", + "lodash.camelcase": "^4.3.0", + "typical": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=4.0.0" } }, - "node_modules/babel-code-frame/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "node_modules/command-line-args/node_modules/array-back": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", + "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", "dev": true, "engines": { - "node": ">=0.8.0" + "node": ">=6" } }, - "node_modules/babel-helper-builder-binary-assignment-operator-visitor": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", - "integrity": "sha1-zORReto1b0IgvK6KAsKzRvmlZmQ=", + "node_modules/command-line-args/node_modules/typical": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", + "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", "dev": true, - "dependencies": { - "babel-helper-explode-assignable-expression": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "engines": { + "node": ">=8" } }, - "node_modules/babel-helper-call-delegate": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", - "integrity": "sha1-7Oaqzdx25Bw0YfiL/Fdb0Nqi340=", + "node_modules/command-line-tool": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/command-line-tool/-/command-line-tool-0.8.0.tgz", + "integrity": "sha512-Xw18HVx/QzQV3Sc5k1vy3kgtOeGmsKIqwtFFoyjI4bbcpSgnw2CWVULvtakyw4s6fhyAdI6soQQhXc2OzJy62g==", "dev": true, "dependencies": { - "babel-helper-hoist-variables": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "ansi-escape-sequences": "^4.0.0", + "array-back": "^2.0.0", + "command-line-args": "^5.0.0", + "command-line-usage": "^4.1.0", + "typical": "^2.6.1" + }, + "engines": { + "node": ">=4.0.0" } }, - "node_modules/babel-helper-define-map": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", - "integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=", + "node_modules/command-line-tool/node_modules/array-back": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz", + "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==", "dev": true, "dependencies": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" + "typical": "^2.6.1" + }, + "engines": { + "node": ">=4" } }, - "node_modules/babel-helper-explode-assignable-expression": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", - "integrity": "sha1-8luCz33BBDPFX3BZLVdGQArCLKo=", + "node_modules/command-line-usage": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-4.1.0.tgz", + "integrity": "sha512-MxS8Ad995KpdAC0Jopo/ovGIroV/m0KHwzKfXxKag6FHOkGsH8/lv5yjgablcRxCJJC0oJeUMuO/gmaq+Wq46g==", "dev": true, "dependencies": { - "babel-runtime": "^6.22.0", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "node_modules/babel-helper-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", - "integrity": "sha1-00dbjAPtmCQqJbSDUasYOZ01gKk=", - "dev": true, - "dependencies": { - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } - }, - "node_modules/babel-helper-get-function-arity": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", - "integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=", - "dev": true, - "dependencies": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "ansi-escape-sequences": "^4.0.0", + "array-back": "^2.0.0", + "table-layout": "^0.4.2", + "typical": "^2.6.1" + }, + "engines": { + "node": ">=4.0.0" } }, - "node_modules/babel-helper-hoist-variables": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", - "integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=", + "node_modules/command-line-usage/node_modules/array-back": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz", + "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==", "dev": true, "dependencies": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "typical": "^2.6.1" + }, + "engines": { + "node": ">=4" } }, - "node_modules/babel-helper-optimise-call-expression": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", - "integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=", - "dev": true, - "dependencies": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "engines": { + "node": ">= 12" } }, - "node_modules/babel-helper-regex": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", - "integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=", + "node_modules/common-sequence": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/common-sequence/-/common-sequence-2.0.2.tgz", + "integrity": "sha512-jAg09gkdkrDO9EWTdXfv80WWH3yeZl5oT69fGfedBNS9pXUKYInVJ1bJ+/ht2+Moeei48TmSbQDYMc8EOx9G0g==", "dev": true, - "dependencies": { - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" + "engines": { + "node": ">=8" } }, - "node_modules/babel-helper-remap-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", - "integrity": "sha1-XsWBgnrXI/7N04HxySg5BnbkVRs=", + "node_modules/compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", "dev": true, "dependencies": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" } }, - "node_modules/babel-helper-replace-supers": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", - "integrity": "sha1-v22/5Dk40XNpohPKiov3S2qQqxo=", - "dev": true, - "dependencies": { - "babel-helper-optimise-call-expression": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" - } + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, - "node_modules/babel-jest": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.4.6.tgz", - "integrity": "sha512-qZL0JT0HS1L+lOuH+xC2DVASR3nunZi/ozGhpgauJHgmI7f8rudxf6hUjEHympdQ/J64CdKmPkgfJ+A3U6QCrg==", + "node_modules/concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", "dev": true, + "engines": [ + "node >= 6.0" + ], "dependencies": { - "@jest/transform": "^27.4.6", - "@jest/types": "^27.4.2", - "@types/babel__core": "^7.1.14", - "babel-plugin-istanbul": "^6.1.1", - "babel-preset-jest": "^27.4.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "slash": "^3.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "@babel/core": "^7.8.0" + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" } }, - "node_modules/babel-jest/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/concat-stream/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/babel-messages": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", - "integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=", - "dev": true, - "dependencies": { - "babel-runtime": "^6.22.0" + "node": ">= 6" } }, - "node_modules/babel-plugin-check-es2015-constants": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", - "integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=", + "node_modules/config-master": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/config-master/-/config-master-3.1.0.tgz", + "integrity": "sha1-ZnZjWQUFooO/JqSE1oSJ10xUhdo=", "dev": true, "dependencies": { - "babel-runtime": "^6.22.0" + "walk-back": "^2.0.1" } }, - "node_modules/babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "node_modules/config-master/node_modules/walk-back": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/walk-back/-/walk-back-2.0.1.tgz", + "integrity": "sha1-VU4qnYdPrEeoywBr9EwvDEmYoKQ=", "dev": true, - "dependencies": { - "object.assign": "^4.1.0" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "node_modules/configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^5.0.4", - "test-exclude": "^6.0.0" + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/babel-plugin-jest-hoist": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-27.4.0.tgz", - "integrity": "sha512-Jcu7qS4OX5kTWBc45Hz7BMmgXuJqRnhatqpUhnzGC3OBYpOmf2tv6jFNwZpwM7wU7MUuv2r9IPS/ZlYOuburVw==", + "node_modules/connect": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", "dev": true, "dependencies": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", - "@types/babel__traverse": "^7.0.6" + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 0.10.0" } }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", - "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", + "node_modules/connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", "dev": true, - "dependencies": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.3.1", - "semver": "^6.1.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=0.8" } }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.1.tgz", - "integrity": "sha512-TihqEe4sQcb/QcPJvxe94/9RZuLQuF1+To4WqQcRvc+3J3gLCPIPgDKzGLG6zmQLfH3nn25heRuDNkS2KR4I8A==", + "node_modules/connect-livereload": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/connect-livereload/-/connect-livereload-0.6.1.tgz", + "integrity": "sha512-3R0kMOdL7CjJpU66fzAkCe6HNtd3AavCS4m+uW4KtJjrdGPT0SQEZieAYd+cm+lJoBznNQ4lqipYWkhBMgk00g==", "dev": true, - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.1", - "core-js-compat": "^3.20.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": "*" } }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", - "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", + "node_modules/connect/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.3.1" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "ms": "2.0.0" } }, - "node_modules/babel-plugin-syntax-async-functions": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", - "integrity": "sha1-ytnK0RkbWtY0vzCuCHI5HgZHvpU=", - "dev": true - }, - "node_modules/babel-plugin-syntax-exponentiation-operator": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", - "integrity": "sha1-nufoM3KQ2pUoggGmpX9BcDF4MN4=", - "dev": true - }, - "node_modules/babel-plugin-syntax-trailing-function-commas": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", - "integrity": "sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM=", + "node_modules/connect/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, - "node_modules/babel-plugin-transform-async-to-generator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", - "integrity": "sha1-ZTbjeK/2yx1VF6wOQOs+n8jQh2E=", - "dev": true, + "node_modules/constant-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", + "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", "dependencies": { - "babel-helper-remap-async-to-generator": "^6.24.1", - "babel-plugin-syntax-async-functions": "^6.8.0", - "babel-runtime": "^6.22.0" + "no-case": "^3.0.4", + "tslib": "^2.0.3", + "upper-case": "^2.0.2" } }, - "node_modules/babel-plugin-transform-es2015-arrow-functions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", - "integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=", + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dev": true, "dependencies": { - "babel-runtime": "^6.22.0" + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" } }, - "node_modules/babel-plugin-transform-es2015-block-scoped-functions": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", - "integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=", + "node_modules/content-disposition/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "dev": true, - "dependencies": { - "babel-runtime": "^6.22.0" - } + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "node_modules/babel-plugin-transform-es2015-block-scoping": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", - "integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=", + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "dev": true, - "dependencies": { - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "lodash": "^4.17.4" + "engines": { + "node": ">= 0.6" } }, - "node_modules/babel-plugin-transform-es2015-classes": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", - "integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=", + "node_modules/conventional-changelog": { + "version": "3.1.25", + "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-3.1.25.tgz", + "integrity": "sha512-ryhi3fd1mKf3fSjbLXOfK2D06YwKNic1nC9mWqybBHdObPd8KJ2vjaXZfYj1U23t+V8T8n0d7gwnc9XbIdFbyQ==", "dev": true, "dependencies": { - "babel-helper-define-map": "^6.24.1", - "babel-helper-function-name": "^6.24.1", - "babel-helper-optimise-call-expression": "^6.24.1", - "babel-helper-replace-supers": "^6.24.1", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "conventional-changelog-angular": "^5.0.12", + "conventional-changelog-atom": "^2.0.8", + "conventional-changelog-codemirror": "^2.0.8", + "conventional-changelog-conventionalcommits": "^4.5.0", + "conventional-changelog-core": "^4.2.1", + "conventional-changelog-ember": "^2.0.9", + "conventional-changelog-eslint": "^3.0.9", + "conventional-changelog-express": "^2.0.6", + "conventional-changelog-jquery": "^3.0.11", + "conventional-changelog-jshint": "^2.0.9", + "conventional-changelog-preset-loader": "^2.3.4" + }, + "engines": { + "node": ">=10" } }, - "node_modules/babel-plugin-transform-es2015-computed-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", - "integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=", + "node_modules/conventional-changelog-angular": { + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.12.tgz", + "integrity": "sha512-5GLsbnkR/7A89RyHLvvoExbiGbd9xKdKqDTrArnPbOqBqG/2wIosu0fHwpeIRI8Tl94MhVNBXcLJZl92ZQ5USw==", "dev": true, "dependencies": { - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" + "compare-func": "^2.0.0", + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" } }, - "node_modules/babel-plugin-transform-es2015-destructuring": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", - "integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=", + "node_modules/conventional-changelog-atom": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-2.0.8.tgz", + "integrity": "sha512-xo6v46icsFTK3bb7dY/8m2qvc8sZemRgdqLb/bjpBsH2UyOS8rKNTgcb5025Hri6IpANPApbXMg15QLb1LJpBw==", "dev": true, "dependencies": { - "babel-runtime": "^6.22.0" + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" } }, - "node_modules/babel-plugin-transform-es2015-duplicate-keys": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", - "integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=", + "node_modules/conventional-changelog-codemirror": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.8.tgz", + "integrity": "sha512-z5DAsn3uj1Vfp7po3gpt2Boc+Bdwmw2++ZHa5Ak9k0UKsYAO5mH1UBTN0qSCuJZREIhX6WU4E1p3IW2oRCNzQw==", "dev": true, "dependencies": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" } }, - "node_modules/babel-plugin-transform-es2015-for-of": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", - "integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=", - "dev": true, - "dependencies": { - "babel-runtime": "^6.22.0" - } + "node_modules/conventional-changelog-config-spec": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-config-spec/-/conventional-changelog-config-spec-2.1.0.tgz", + "integrity": "sha512-IpVePh16EbbB02V+UA+HQnnPIohgXvJRxHcS5+Uwk4AT5LjzCZJm5sp/yqs5C6KZJ1jMsV4paEV13BN1pvDuxQ==", + "dev": true }, - "node_modules/babel-plugin-transform-es2015-function-name": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", - "integrity": "sha1-g0yJhTvDaxrw86TF26qU/Y6sqos=", + "node_modules/conventional-changelog-conventionalcommits": { + "version": "4.6.3", + "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.6.3.tgz", + "integrity": "sha512-LTTQV4fwOM4oLPad317V/QNQ1FY4Hju5qeBIM1uTHbrnCE+Eg4CdRZ3gO2pUeR+tzWdp80M2j3qFFEDWVqOV4g==", "dev": true, "dependencies": { - "babel-helper-function-name": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "compare-func": "^2.0.0", + "lodash": "^4.17.15", + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" } }, - "node_modules/babel-plugin-transform-es2015-literals": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", - "integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=", + "node_modules/conventional-changelog-core": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz", + "integrity": "sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==", "dev": true, "dependencies": { - "babel-runtime": "^6.22.0" - } - }, - "node_modules/babel-plugin-transform-es2015-modules-amd": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", - "integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=", - "dev": true, - "dependencies": { - "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" + "add-stream": "^1.0.0", + "conventional-changelog-writer": "^5.0.0", + "conventional-commits-parser": "^3.2.0", + "dateformat": "^3.0.0", + "get-pkg-repo": "^4.0.0", + "git-raw-commits": "^2.0.8", + "git-remote-origin-url": "^2.0.0", + "git-semver-tags": "^4.1.1", + "lodash": "^4.17.15", + "normalize-package-data": "^3.0.0", + "q": "^1.5.1", + "read-pkg": "^3.0.0", + "read-pkg-up": "^3.0.0", + "through2": "^4.0.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/babel-plugin-transform-es2015-modules-commonjs": { - "version": "6.26.2", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", - "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", + "node_modules/conventional-changelog-core/node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", "dev": true, "dependencies": { - "babel-plugin-transform-strict-mode": "^6.24.1", - "babel-runtime": "^6.26.0", - "babel-template": "^6.26.0", - "babel-types": "^6.26.0" + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/babel-plugin-transform-es2015-modules-systemjs": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", - "integrity": "sha1-/4mhQrkRmpBhlfXxBuzzBdlAfSM=", + "node_modules/conventional-changelog-core/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/conventional-changelog-core/node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", "dev": true, "dependencies": { - "babel-helper-hoist-variables": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/babel-plugin-transform-es2015-modules-umd": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", - "integrity": "sha1-rJl+YoXNGO1hdq22B9YCNErThGg=", + "node_modules/conventional-changelog-core/node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", "dev": true, "dependencies": { - "babel-plugin-transform-es2015-modules-amd": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1" + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/babel-plugin-transform-es2015-object-super": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", - "integrity": "sha1-JM72muIcuDp/hgPa0CH1cusnj40=", + "node_modules/conventional-changelog-core/node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", "dev": true, "dependencies": { - "babel-helper-replace-supers": "^6.24.1", - "babel-runtime": "^6.22.0" + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/babel-plugin-transform-es2015-parameters": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", - "integrity": "sha1-V6w1GrScrxSpfNE7CfZv3wpiXys=", + "node_modules/conventional-changelog-core/node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", "dev": true, - "dependencies": { - "babel-helper-call-delegate": "^6.24.1", - "babel-helper-get-function-arity": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-template": "^6.24.1", - "babel-traverse": "^6.24.1", - "babel-types": "^6.24.1" + "engines": { + "node": ">=4" } }, - "node_modules/babel-plugin-transform-es2015-shorthand-properties": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", - "integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=", + "node_modules/conventional-changelog-core/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true, - "dependencies": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "engines": { + "node": ">=4" } }, - "node_modules/babel-plugin-transform-es2015-spread": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", - "integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=", + "node_modules/conventional-changelog-core/node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", "dev": true, "dependencies": { - "babel-runtime": "^6.22.0" + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/babel-plugin-transform-es2015-sticky-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", - "integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=", + "node_modules/conventional-changelog-core/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "dev": true, - "dependencies": { - "babel-helper-regex": "^6.24.1", - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "engines": { + "node": ">=4" } }, - "node_modules/babel-plugin-transform-es2015-template-literals": { - "version": "6.22.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", - "integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=", + "node_modules/conventional-changelog-core/node_modules/read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", "dev": true, "dependencies": { - "babel-runtime": "^6.22.0" + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/babel-plugin-transform-es2015-typeof-symbol": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", - "integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=", + "node_modules/conventional-changelog-core/node_modules/read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==", "dev": true, "dependencies": { - "babel-runtime": "^6.22.0" + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/babel-plugin-transform-es2015-unicode-regex": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", - "integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=", + "node_modules/conventional-changelog-core/node_modules/read-pkg/node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, "dependencies": { - "babel-helper-regex": "^6.24.1", - "babel-runtime": "^6.22.0", - "regexpu-core": "^2.0.0" + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, - "node_modules/babel-plugin-transform-es2015-unicode-regex/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "node_modules/conventional-changelog-core/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", "dev": true, "bin": { - "jsesc": "bin/jsesc" + "semver": "bin/semver" } }, - "node_modules/babel-plugin-transform-es2015-unicode-regex/node_modules/regexpu-core": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", - "integrity": "sha1-SdA4g3uNz4v6W5pCE5k45uoq4kA=", + "node_modules/conventional-changelog-ember": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-2.0.9.tgz", + "integrity": "sha512-ulzIReoZEvZCBDhcNYfDIsLTHzYHc7awh+eI44ZtV5cx6LVxLlVtEmcO+2/kGIHGtw+qVabJYjdI5cJOQgXh1A==", "dev": true, "dependencies": { - "regenerate": "^1.2.1", - "regjsgen": "^0.2.0", - "regjsparser": "^0.1.4" + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" } }, - "node_modules/babel-plugin-transform-es2015-unicode-regex/node_modules/regjsgen": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", - "integrity": "sha1-bAFq3qxVT3WCP+N6wFuS1aTtsfc=", - "dev": true - }, - "node_modules/babel-plugin-transform-es2015-unicode-regex/node_modules/regjsparser": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", - "integrity": "sha1-fuj4Tcb6eS0/0K4ijSS9lJ6tIFw=", + "node_modules/conventional-changelog-eslint": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.9.tgz", + "integrity": "sha512-6NpUCMgU8qmWmyAMSZO5NrRd7rTgErjrm4VASam2u5jrZS0n38V7Y9CzTtLT2qwz5xEChDR4BduoWIr8TfwvXA==", "dev": true, "dependencies": { - "jsesc": "~0.5.0" + "q": "^1.5.1" }, - "bin": { - "regjsparser": "bin/parser" + "engines": { + "node": ">=10" } }, - "node_modules/babel-plugin-transform-exponentiation-operator": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", - "integrity": "sha1-KrDJx/MJj6SJB3cruBP+QejeOg4=", + "node_modules/conventional-changelog-express": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-2.0.6.tgz", + "integrity": "sha512-SDez2f3iVJw6V563O3pRtNwXtQaSmEfTCaTBPCqn0oG0mfkq0rX4hHBq5P7De2MncoRixrALj3u3oQsNK+Q0pQ==", "dev": true, "dependencies": { - "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", - "babel-plugin-syntax-exponentiation-operator": "^6.8.0", - "babel-runtime": "^6.22.0" + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" } }, - "node_modules/babel-plugin-transform-regenerator": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", - "integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=", + "node_modules/conventional-changelog-jquery": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.11.tgz", + "integrity": "sha512-x8AWz5/Td55F7+o/9LQ6cQIPwrCjfJQ5Zmfqi8thwUEKHstEn4kTIofXub7plf1xvFA2TqhZlq7fy5OmV6BOMw==", "dev": true, "dependencies": { - "regenerator-transform": "^0.10.0" + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" } }, - "node_modules/babel-plugin-transform-regenerator/node_modules/regenerator-transform": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", - "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", + "node_modules/conventional-changelog-jshint": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.9.tgz", + "integrity": "sha512-wMLdaIzq6TNnMHMy31hql02OEQ8nCQfExw1SE0hYL5KvU+JCTuPaDO+7JiogGT2gJAxiUGATdtYYfh+nT+6riA==", "dev": true, "dependencies": { - "babel-runtime": "^6.18.0", - "babel-types": "^6.19.0", - "private": "^0.1.6" + "compare-func": "^2.0.0", + "q": "^1.5.1" + }, + "engines": { + "node": ">=10" } }, - "node_modules/babel-plugin-transform-strict-mode": { - "version": "6.24.1", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", - "integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=", + "node_modules/conventional-changelog-preset-loader": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz", + "integrity": "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==", "dev": true, - "dependencies": { - "babel-runtime": "^6.22.0", - "babel-types": "^6.24.1" + "engines": { + "node": ">=10" } }, - "node_modules/babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, - "dependencies": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/babel-preset-env": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.7.0.tgz", - "integrity": "sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg==", - "dev": true, - "dependencies": { - "babel-plugin-check-es2015-constants": "^6.22.0", - "babel-plugin-syntax-trailing-function-commas": "^6.22.0", - "babel-plugin-transform-async-to-generator": "^6.22.0", - "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", - "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", - "babel-plugin-transform-es2015-block-scoping": "^6.23.0", - "babel-plugin-transform-es2015-classes": "^6.23.0", - "babel-plugin-transform-es2015-computed-properties": "^6.22.0", - "babel-plugin-transform-es2015-destructuring": "^6.23.0", - "babel-plugin-transform-es2015-duplicate-keys": "^6.22.0", - "babel-plugin-transform-es2015-for-of": "^6.23.0", - "babel-plugin-transform-es2015-function-name": "^6.22.0", - "babel-plugin-transform-es2015-literals": "^6.22.0", - "babel-plugin-transform-es2015-modules-amd": "^6.22.0", - "babel-plugin-transform-es2015-modules-commonjs": "^6.23.0", - "babel-plugin-transform-es2015-modules-systemjs": "^6.23.0", - "babel-plugin-transform-es2015-modules-umd": "^6.23.0", - "babel-plugin-transform-es2015-object-super": "^6.22.0", - "babel-plugin-transform-es2015-parameters": "^6.23.0", - "babel-plugin-transform-es2015-shorthand-properties": "^6.22.0", - "babel-plugin-transform-es2015-spread": "^6.22.0", - "babel-plugin-transform-es2015-sticky-regex": "^6.22.0", - "babel-plugin-transform-es2015-template-literals": "^6.22.0", - "babel-plugin-transform-es2015-typeof-symbol": "^6.23.0", - "babel-plugin-transform-es2015-unicode-regex": "^6.22.0", - "babel-plugin-transform-exponentiation-operator": "^6.22.0", - "babel-plugin-transform-regenerator": "^6.22.0", - "browserslist": "^3.2.6", - "invariant": "^2.2.2", - "semver": "^5.3.0" - } - }, - "node_modules/babel-preset-env/node_modules/browserslist": { - "version": "3.2.8", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz", - "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==", - "dev": true, - "dependencies": { - "caniuse-lite": "^1.0.30000844", - "electron-to-chromium": "^1.3.47" + "node_modules/conventional-changelog-writer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz", + "integrity": "sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==", + "dev": true, + "dependencies": { + "conventional-commits-filter": "^2.0.7", + "dateformat": "^3.0.0", + "handlebars": "^4.7.7", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "semver": "^6.0.0", + "split": "^1.0.0", + "through2": "^4.0.0" }, "bin": { - "browserslist": "cli.js" + "conventional-changelog-writer": "cli.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/babel-preset-env/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "node_modules/conventional-commits-filter": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz", + "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==", "dev": true, - "bin": { - "semver": "bin/semver" + "dependencies": { + "lodash.ismatch": "^4.4.0", + "modify-values": "^1.0.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/babel-preset-jest": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-27.4.0.tgz", - "integrity": "sha512-NK4jGYpnBvNxcGo7/ZpZJr51jCGT+3bwwpVIDY2oNfTxJJldRtB4VAcYdgp1loDE50ODuTu+yBjpMAswv5tlpg==", + "node_modules/conventional-commits-parser": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz", + "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==", "dev": true, "dependencies": { - "babel-plugin-jest-hoist": "^27.4.0", - "babel-preset-current-node-syntax": "^1.0.0" + "is-text-path": "^1.0.1", + "JSONStream": "^1.0.4", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "bin": { + "conventional-commits-parser": "cli.js" }, - "peerDependencies": { - "@babel/core": "^7.0.0" + "engines": { + "node": ">=10" } }, - "node_modules/babel-runtime": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", - "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "node_modules/conventional-recommended-bump": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz", + "integrity": "sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw==", "dev": true, "dependencies": { - "core-js": "^2.4.0", - "regenerator-runtime": "^0.11.0" + "concat-stream": "^2.0.0", + "conventional-changelog-preset-loader": "^2.3.4", + "conventional-commits-filter": "^2.0.7", + "conventional-commits-parser": "^3.2.0", + "git-raw-commits": "^2.0.8", + "git-semver-tags": "^4.1.1", + "meow": "^8.0.0", + "q": "^1.5.1" + }, + "bin": { + "conventional-recommended-bump": "cli.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/babel-runtime/node_modules/core-js": { - "version": "2.6.12", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", - "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", - "deprecated": "core-js@<3.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Please, upgrade your dependencies to the actual version of core-js.", - "dev": true, - "hasInstallScript": true - }, - "node_modules/babel-runtime/node_modules/regenerator-runtime": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", - "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", - "dev": true - }, - "node_modules/babel-template": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", - "integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=", + "node_modules/cookies": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz", + "integrity": "sha512-8aPsApQfebXnuI+537McwYsDtjVxGm8gTIzQI3FDW6t5t/DAhERxtnbEPN/8RX+uZthoz4eCOgloXaE5cYyNow==", "dev": true, "dependencies": { - "babel-runtime": "^6.26.0", - "babel-traverse": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "lodash": "^4.17.4" + "depd": "~2.0.0", + "keygrip": "~1.1.0" + }, + "engines": { + "node": ">= 0.8" } }, - "node_modules/babel-traverse": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", - "integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=", + "node_modules/cookies/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "dev": true, - "dependencies": { - "babel-code-frame": "^6.26.0", - "babel-messages": "^6.23.0", - "babel-runtime": "^6.26.0", - "babel-types": "^6.26.0", - "babylon": "^6.18.0", - "debug": "^2.6.8", - "globals": "^9.18.0", - "invariant": "^2.2.2", - "lodash": "^4.17.4" + "engines": { + "node": ">= 0.8" } }, - "node_modules/babel-traverse/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/copy-anything": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.3.tgz", + "integrity": "sha512-GK6QUtisv4fNS+XcI7shX0Gx9ORg7QqIznyfho79JTnX1XhLiyZHfftvGiziqzRiEi/Bjhgpi+D2o7HxJFPnDQ==", "dev": true, "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/babel-traverse/node_modules/globals": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", - "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" + "is-what": "^3.12.0" } }, - "node_modules/babel-traverse/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", "dev": true }, - "node_modules/babel-types": { - "version": "6.26.0", - "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", - "integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=", + "node_modules/cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", "dev": true, "dependencies": { - "babel-runtime": "^6.26.0", - "esutils": "^2.0.2", - "lodash": "^4.17.4", - "to-fast-properties": "^1.0.3" + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" } }, - "node_modules/babel-types/node_modules/to-fast-properties": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", - "integrity": "sha1-uDVx+k2MJbguIxsG46MFXeTKGkc=", + "node_modules/cosmiconfig-typescript-loader": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-1.0.4.tgz", + "integrity": "sha512-ulv2dvwurP/MZAIthXm69bO7EzzIUThZ6RJ1qXhdlXM6to3F+IKBL/17EnhYSG52A5N1KcAUu66vSG/3/77KrA==", "dev": true, + "dependencies": { + "cosmiconfig": "^7", + "ts-node": "^10.4.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=12", + "npm": ">=6" + }, + "peerDependencies": { + "@types/node": "*", + "cosmiconfig": ">=7", + "typescript": ">=3" } }, - "node_modules/babylon": { - "version": "6.18.0", - "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", - "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "node_modules/cosmiconfig/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true, - "bin": { - "babylon": "bin/babylon.js" + "engines": { + "node": ">= 6" } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/better-path-resolve": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/better-path-resolve/-/better-path-resolve-1.0.0.tgz", - "integrity": "sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==", + "node_modules/cp-file": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-7.0.0.tgz", + "integrity": "sha512-0Cbj7gyvFVApzpK/uhCtQ/9kE9UnYpxMzaq5nQQC/Dh4iaj5fxp7iEFIullrYwzj8nf0qnsI1Qsx34hAeAebvw==", "dev": true, "dependencies": { - "is-windows": "^1.0.0" + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "nested-error-stacks": "^2.0.0", + "p-event": "^4.1.0" }, - "engines": { - "node": ">=4" - } - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, "engines": { "node": ">=8" } }, - "node_modules/bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", "dev": true }, - "node_modules/boxen": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.2.0.tgz", - "integrity": "sha512-eB4uT9RGzg2odpER62bBwSLvUeGC+WbRjjyyFhGsKnc8wp/m0+hQsMUvUe3H2V0D5vw0nBdO1hCJoZo5mKeuIQ==", + "node_modules/cross-fetch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", + "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", "dev": true, "dependencies": { - "ansi-align": "^3.0.0", - "camelcase": "^5.3.1", - "chalk": "^3.0.0", - "cli-boxes": "^2.2.0", - "string-width": "^4.1.0", - "term-size": "^2.1.0", - "type-fest": "^0.8.1", - "widest-line": "^3.1.0" + "node-fetch": "^2.6.12" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 8" } }, - "node_modules/boxen/node_modules/chalk": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", - "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", - "dev": true, + "node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" }, "engines": { - "node": ">=8" + "node": ">= 8" } }, - "node_modules/boxen/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", "dev": true, "engines": { "node": ">=8" } }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/css": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", + "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", + "dev": true, "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "inherits": "^2.0.4", + "source-map": "^0.6.1", + "source-map-resolve": "^0.6.0" } }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dependencies": { - "fill-range": "^7.0.1" - }, + "node_modules/css/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/breakword": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/breakword/-/breakword-1.0.6.tgz", - "integrity": "sha512-yjxDAYyK/pBvws9H4xKYpLDpYKEH6CzrBPAuXq3x18I+c/2MkVtT3qAr7Oloi6Dss9qNhPVueAAVU1CSeNDIXw==", + "node_modules/csv": { + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/csv/-/csv-5.5.3.tgz", + "integrity": "sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==", "dev": true, "dependencies": { - "wcwidth": "^1.0.1" + "csv-generate": "^3.4.3", + "csv-parse": "^4.16.3", + "csv-stringify": "^5.6.5", + "stream-transform": "^2.1.3" + }, + "engines": { + "node": ">= 0.1.90" } }, - "node_modules/browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "node_modules/csv-generate": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/csv-generate/-/csv-generate-3.4.3.tgz", + "integrity": "sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==", + "dev": true + }, + "node_modules/csv-parse": { + "version": "4.16.3", + "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-4.16.3.tgz", + "integrity": "sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==", + "dev": true + }, + "node_modules/csv-stringify": { + "version": "5.6.5", + "resolved": "https://registry.npmjs.org/csv-stringify/-/csv-stringify-5.6.5.tgz", + "integrity": "sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==", "dev": true }, - "node_modules/browserslist": { - "version": "4.19.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.19.1.tgz", - "integrity": "sha512-u2tbbG5PdKRTUoctO3NBD8FQ5HdPh1ZXPHzp1rwaa5jTc+RV9/+RlWiAIKmjRPQF+xbGM9Kklj5bZQFa2s/38A==", + "node_modules/dargs": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", + "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", "dev": true, - "dependencies": { - "caniuse-lite": "^1.0.30001286", - "electron-to-chromium": "^1.4.17", - "escalade": "^3.1.1", - "node-releases": "^2.0.1", - "picocolors": "^1.0.0" - }, - "bin": { - "browserslist": "cli.js" - }, "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" + "node": ">=8" } }, - "node_modules/bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "node_modules/data-uri-to-buffer": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.1.tgz", + "integrity": "sha512-MZd3VlchQkp8rdend6vrx7MmVDJzSNTBvghvKjirLkD+WTChA3KUf0jkE68Q4UyctNqI11zZO9/x2Yx+ub5Cvg==", "dev": true, - "dependencies": { - "node-int64": "^0.4.0" + "engines": { + "node": ">= 14" } }, - "node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" + "node_modules/dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "dev": true, + "engines": { + "node": "*" } }, - "node_modules/buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "node_modules/debounce": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", + "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==", "dev": true }, - "node_modules/cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "dev": true, - "dependencies": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" }, "engines": { - "node": ">= 10" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/cacache/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", "dev": true, "dependencies": { - "yallist": "^4.0.0" + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/cacache/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "node_modules/decamelize-keys/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/cacache/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "node_modules/decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "dev": true, + "engines": { + "node": ">=0.10" + } }, - "node_modules/cache-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/cache-point/-/cache-point-2.0.0.tgz", - "integrity": "sha512-4gkeHlFpSKgm3vm2gJN5sPqfmijYRFYCQ6tv5cLw0xVmT6r1z1vd4FNnpuOREco3cBs1G709sZ72LdgddKvL5w==", + "node_modules/decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", "dev": true, "dependencies": { - "array-back": "^4.0.1", - "fs-then-native": "^2.0.0", - "mkdirp2": "^1.0.4" + "mimic-response": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/cache-point/node_modules/array-back": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-4.0.2.tgz", - "integrity": "sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==", + "node_modules/deep-eql": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.1.tgz", + "integrity": "sha512-nwQCf6ne2gez3o1MxWifqkciwt0zhl0LO1/UwVu4uMBuPmflWM4oQ70XMqHqnBJA+nhzncaqL9HVL6KkHJ28lw==", "dev": true, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/cacheable-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", - "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "node_modules/deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==", + "dev": true + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "dev": true, - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, "engines": { - "node": ">=8" + "node": ">=4.0.0" } }, - "node_modules/cacheable-request/node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true, + "node_modules/deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" + "clone": "^1.0.2" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } + "node_modules/defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", + "dev": true }, - "node_modules/camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "node_modules/define-data-property": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", + "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" } }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", "dev": true, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", - "dev": true, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dependencies": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/caniuse-lite": { - "version": "1.0.30001301", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001301.tgz", - "integrity": "sha512-csfD/GpHMqgEL3V3uIgosvh+SVIQvCh43SNu9HRbP1lnxkKm1kjDG4f32PP571JplkLjfS+mg2p1gxR7MYrrIA==", + "node_modules/degenerator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" + "dependencies": { + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" + }, + "engines": { + "node": ">= 14" } }, - "node_modules/capital-case": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", - "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", + "node_modules/degenerator/node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dev": true, "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case-first": "^2.0.2" + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" } }, - "node_modules/catharsis": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz", - "integrity": "sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==", + "node_modules/degenerator/node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "dev": true, - "dependencies": { - "lodash": "^4.17.15" + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" }, "engines": { - "node": ">= 10" + "node": ">=4" } }, - "node_modules/chalk": { + "node_modules/degenerator/node_modules/estraverse": { "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=4.0" } }, - "node_modules/change-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", - "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", - "dependencies": { - "camel-case": "^4.1.2", - "capital-case": "^1.0.4", - "constant-case": "^3.0.4", - "dot-case": "^3.0.4", - "header-case": "^2.0.4", - "no-case": "^3.0.4", - "param-case": "^3.0.4", - "pascal-case": "^3.1.2", - "path-case": "^3.0.4", - "sentence-case": "^3.0.4", - "snake-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "node_modules/degenerator/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "optional": true, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", "dev": true }, - "node_modules/chokidar": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", - "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", + "node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", "dev": true, - "dependencies": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.5.0" - }, "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.1" + "node": ">= 0.6" } }, - "node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "node_modules/dependency-graph": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", + "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", "dev": true, "engines": { - "node": ">=10" + "node": ">= 0.6.0" } }, - "node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "node_modules/destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", "dev": true }, - "node_modules/cjs-module-lexer": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", - "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", - "dev": true + "node_modules/detect-indent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.0.0.tgz", + "integrity": "sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA==", + "dev": true, + "engines": { + "node": ">=8" + } }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/cli-boxes": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", - "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "node_modules/devtools-protocol": { + "version": "0.0.1147663", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1147663.tgz", + "integrity": "sha512-hyWmRrexdhbZ1tcJUGpO95ivbRhWXz++F4Ko+n21AY5PNln2ovoJw+8ZMNDTtip+CNFQfrtLVh/w4009dXO/eQ==", + "dev": true + }, + "node_modules/diff": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", + "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", "dev": true, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.3.1" } }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, "dependencies": { - "restore-cursor": "^3.1.0" + "path-type": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/cli-truncate": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-3.1.0.tgz", - "integrity": "sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==", + "node_modules/dmd": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/dmd/-/dmd-6.1.0.tgz", + "integrity": "sha512-0zQIJ873gay1scCTFZvHPWM9mVJBnaylB2NQDI8O9u8O32m00Jb6uxDKexZm8hjTRM7RiWe0FJ32pExHoXdwoQ==", "dev": true, "dependencies": { - "slice-ansi": "^5.0.0", - "string-width": "^5.0.0" + "array-back": "^6.2.2", + "cache-point": "^2.0.0", + "common-sequence": "^2.0.2", + "file-set": "^4.0.2", + "handlebars": "^4.7.7", + "marked": "^4.0.12", + "object-get": "^2.1.1", + "reduce-flatten": "^3.0.1", + "reduce-unique": "^2.0.1", + "reduce-without": "^1.0.1", + "test-value": "^3.0.0", + "walk-back": "^5.1.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12" } }, - "node_modules/cli-truncate/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "node_modules/dmd/node_modules/marked": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.1.0.tgz", + "integrity": "sha512-+Z6KDjSPa6/723PQYyc1axYZpYYpDnECDaU6hkaf5gqBieBkMKYReL5hteF2QizhlMbgbo8umXl/clZ67+GlsA==", "dev": true, - "engines": { - "node": ">=12" + "bin": { + "marked": "bin/marked.js" }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "engines": { + "node": ">= 12" } }, - "node_modules/cli-truncate/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true + "node_modules/docsify": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/docsify/-/docsify-4.12.2.tgz", + "integrity": "sha512-hpRez5upcvkYigT2zD8P5kH5t9HpSWL8yn/ZU/g04/WfAfxVNW6CPUVOOF1EsQUDxTRuyNTFOb6uUv+tPij3tg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "dompurify": "^2.3.1", + "marked": "^1.2.9", + "medium-zoom": "^1.0.6", + "opencollective-postinstall": "^2.0.2", + "prismjs": "^1.23.0", + "strip-indent": "^3.0.0", + "tinydate": "^1.3.0", + "tweezer.js": "^1.4.0" + } }, - "node_modules/cli-truncate/node_modules/string-width": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.0.tgz", - "integrity": "sha512-7x54QnN21P+XL/v8SuNKvfgsUre6PXpN7mc77N3HlZv+f1SBRGmjxtOud2Z6FZ8DmdkD/IdjCaf9XXbnqmTZGQ==", + "node_modules/docsify-cli": { + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/docsify-cli/-/docsify-cli-4.4.4.tgz", + "integrity": "sha512-NAZgg6b0BsDuq/Pe+P19Qb2J1d+ZVbS0eGkeCNxyu4F9/CQSsRqZqAvPJ9/0I+BCHn4sgftA2jluqhQVzKzrSA==", "dev": true, "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "chalk": "^2.4.2", + "connect": "^3.6.0", + "connect-history-api-fallback": "^1.6.0", + "connect-livereload": "^0.6.0", + "cp-file": "^7.0.0", + "docsify": "^4.12.2", + "docsify-server-renderer": ">=4.10.0", + "enquirer": "^2.3.6", + "fs-extra": "^8.1.0", + "get-port": "^5.0.0", + "livereload": "^0.9.2", + "lru-cache": "^5.1.1", + "open": "^6.4.0", + "serve-static": "^1.12.1", + "update-notifier": "^4.1.0", + "yargonaut": "^1.1.2", + "yargs": "^15.3.0" }, - "engines": { - "node": ">=12" + "bin": { + "docsify": "bin/docsify" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">= 10", + "npm": ">= 6" } }, - "node_modules/cli-truncate/node_modules/strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "node_modules/docsify-cli/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dev": true, "dependencies": { - "ansi-regex": "^6.0.1" + "color-convert": "^1.9.0" }, "engines": { - "node": ">=12" + "node": ">=4" + } + }, + "node_modules/docsify-cli/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "engines": { + "node": ">=4" } }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "node_modules/docsify-cli/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "dev": true, "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "wrap-ansi": "^6.2.0" } }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "node_modules/docsify-cli/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "dev": true, - "engines": { - "node": ">=0.8" + "dependencies": { + "color-name": "1.1.3" } }, - "node_modules/clone-response": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", - "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "node_modules/docsify-cli/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/docsify-cli/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, "dependencies": { - "mimic-response": "^1.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", + "node_modules/docsify-cli/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, "engines": { - "iojs": ">= 1.0.0", - "node": ">= 0.12.0" + "node": ">=6 <7 || >=8" } }, - "node_modules/collect-all": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/collect-all/-/collect-all-1.0.4.tgz", - "integrity": "sha512-RKZhRwJtJEP5FWul+gkSMEnaK6H3AGPTTWOiRimCcs+rc/OmQE3Yhy1Q7A7KsdkG3ZXVdZq68Y6ONSdvkeEcKA==", + "node_modules/docsify-cli/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true, - "dependencies": { - "stream-connect": "^1.0.2", - "stream-via": "^1.0.4" - }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/collect-v8-coverage": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", - "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", - "dev": true + "node_modules/docsify-cli/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/docsify-cli/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, "dependencies": { - "color-name": "~1.1.4" + "p-locate": "^4.1.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=8" } }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "node_modules/docsify-cli/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, - "bin": { - "color-support": "bin.js" + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/colorette": { - "version": "2.0.16", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", - "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", - "dev": true - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "node_modules/docsify-cli/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "dependencies": { - "delayed-stream": "~1.0.0" + "p-limit": "^2.2.0" }, "engines": { - "node": ">= 0.8" + "node": ">=8" } }, - "node_modules/command-line-args": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", - "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", + "node_modules/docsify-cli/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "dependencies": { - "array-back": "^3.1.0", - "find-replace": "^3.0.0", - "lodash.camelcase": "^4.3.0", - "typical": "^4.0.0" + "has-flag": "^3.0.0" }, "engines": { - "node": ">=4.0.0" + "node": ">=4" } }, - "node_modules/command-line-args/node_modules/array-back": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", - "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", + "node_modules/docsify-cli/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "dev": true, "engines": { - "node": ">=6" + "node": ">= 4.0.0" } }, - "node_modules/command-line-args/node_modules/typical": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-4.0.0.tgz", - "integrity": "sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==", + "node_modules/docsify-cli/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, "engines": { "node": ">=8" } }, - "node_modules/command-line-tool": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/command-line-tool/-/command-line-tool-0.8.0.tgz", - "integrity": "sha512-Xw18HVx/QzQV3Sc5k1vy3kgtOeGmsKIqwtFFoyjI4bbcpSgnw2CWVULvtakyw4s6fhyAdI6soQQhXc2OzJy62g==", + "node_modules/docsify-cli/node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "ansi-escape-sequences": "^4.0.0", - "array-back": "^2.0.0", - "command-line-args": "^5.0.0", - "command-line-usage": "^4.1.0", - "typical": "^2.6.1" + "color-convert": "^2.0.1" }, "engines": { - "node": ">=4.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/command-line-tool/node_modules/array-back": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz", - "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==", + "node_modules/docsify-cli/node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "typical": "^2.6.1" + "color-name": "~1.1.4" }, "engines": { - "node": ">=4" + "node": ">=7.0.0" } }, - "node_modules/command-line-usage": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-4.1.0.tgz", - "integrity": "sha512-MxS8Ad995KpdAC0Jopo/ovGIroV/m0KHwzKfXxKag6FHOkGsH8/lv5yjgablcRxCJJC0oJeUMuO/gmaq+Wq46g==", + "node_modules/docsify-cli/node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/docsify-cli/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", "dev": true, "dependencies": { - "ansi-escape-sequences": "^4.0.0", - "array-back": "^2.0.0", - "table-layout": "^0.4.2", - "typical": "^2.6.1" + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" }, "engines": { - "node": ">=4.0.0" + "node": ">=8" } }, - "node_modules/command-line-usage/node_modules/array-back": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-2.0.0.tgz", - "integrity": "sha512-eJv4pLLufP3g5kcZry0j6WXpIbzYw9GUB4mVJZno9wfwiBxbizTnHCw3VJb07cBihbFX48Y7oSrW9y+gt4glyw==", + "node_modules/docsify-cli/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "dev": true, "dependencies": { - "typical": "^2.6.1" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" }, "engines": { - "node": ">=4" - } - }, - "node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "engines": { - "node": ">= 12" + "node": ">=6" } }, - "node_modules/common-sequence": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/common-sequence/-/common-sequence-2.0.2.tgz", - "integrity": "sha512-jAg09gkdkrDO9EWTdXfv80WWH3yeZl5oT69fGfedBNS9pXUKYInVJ1bJ+/ht2+Moeei48TmSbQDYMc8EOx9G0g==", + "node_modules/docsify-server-renderer": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/docsify-server-renderer/-/docsify-server-renderer-4.12.2.tgz", + "integrity": "sha512-/sCq0U0iGvc8mNN6VC5SeodiHUsA98rMsMFYXtQbWsS/jWArkSee8ATlH5KzGDJ/zjf9QOFrkjoanHCNaFWiPQ==", "dev": true, - "engines": { - "node": ">=8" + "dependencies": { + "debug": "^4.3.3", + "docsify": "^4.12.1", + "dompurify": "^2.3.2", + "node-fetch": "^2.6.6", + "resolve-pathname": "^3.0.0" } }, - "node_modules/compare-func": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", - "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "dependencies": { - "array-ify": "^1.0.0", - "dot-prop": "^5.1.0" + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" } }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + "node_modules/dompurify": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.3.4.tgz", + "integrity": "sha512-6BVcgOAVFXjI0JTjEvZy901Rghm+7fDQOrNIcxB4+gdhj6Kwp6T9VBhBY/AbagKHJocRkDYGd6wvI+p4/10xtQ==", + "dev": true }, - "node_modules/concat-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", - "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", - "dev": true, - "engines": [ - "node >= 6.0" - ], + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.0.2", - "typedarray": "^0.0.6" + "no-case": "^3.0.4", + "tslib": "^2.0.3" } }, - "node_modules/concat-stream/node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", "dev": true, "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "is-obj": "^2.0.0" }, "engines": { - "node": ">= 6" + "node": ">=8" } }, - "node_modules/config-master": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/config-master/-/config-master-3.1.0.tgz", - "integrity": "sha1-ZnZjWQUFooO/JqSE1oSJ10xUhdo=", + "node_modules/dotgitignore": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/dotgitignore/-/dotgitignore-2.1.0.tgz", + "integrity": "sha512-sCm11ak2oY6DglEPpCB8TixLjWAxd3kJTs6UIcSasNYxXdFPV+YKlye92c8H4kKFqV5qYMIh7d+cYecEg0dIkA==", "dev": true, "dependencies": { - "walk-back": "^2.0.1" - } - }, - "node_modules/config-master/node_modules/walk-back": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/walk-back/-/walk-back-2.0.1.tgz", - "integrity": "sha1-VU4qnYdPrEeoywBr9EwvDEmYoKQ=", - "dev": true, + "find-up": "^3.0.0", + "minimatch": "^3.0.4" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/configstore": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", - "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "node_modules/dotgitignore/node_modules/find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dev": true, "dependencies": { - "dot-prop": "^5.2.0", - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "unique-string": "^2.0.0", - "write-file-atomic": "^3.0.0", - "xdg-basedir": "^4.0.0" + "locate-path": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/connect": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", - "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", + "node_modules/dotgitignore/node_modules/locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", "dev": true, "dependencies": { - "debug": "2.6.9", - "finalhandler": "1.1.2", - "parseurl": "~1.3.3", - "utils-merge": "1.0.1" + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" }, "engines": { - "node": ">= 0.10.0" + "node": ">=6" } }, - "node_modules/connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "node_modules/dotgitignore/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, "engines": { - "node": ">=0.8" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/connect-livereload": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/connect-livereload/-/connect-livereload-0.6.1.tgz", - "integrity": "sha512-3R0kMOdL7CjJpU66fzAkCe6HNtd3AavCS4m+uW4KtJjrdGPT0SQEZieAYd+cm+lJoBznNQ4lqipYWkhBMgk00g==", + "node_modules/dotgitignore/node_modules/p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", "dev": true, + "dependencies": { + "p-limit": "^2.0.0" + }, "engines": { - "node": "*" + "node": ">=6" } }, - "node_modules/connect/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "node_modules/dotgitignore/node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true, - "dependencies": { - "ms": "2.0.0" + "engines": { + "node": ">=4" } }, - "node_modules/connect/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "node_modules/duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", "dev": true }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", "dev": true }, - "node_modules/constant-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", - "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case": "^2.0.2" + "node_modules/emitter-component": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/emitter-component/-/emitter-component-1.1.1.tgz", + "integrity": "sha512-G+mpdiAySMuB7kesVRLuyvYRqDmshB7ReKEVuyBPkzQlmiDiLrt7hHHIy4Aff552bgknVN7B2/d3lzhGO5dvpQ==" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true, + "engines": { + "node": ">= 0.8" } }, - "node_modules/conventional-changelog": { - "version": "3.1.25", - "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-3.1.25.tgz", - "integrity": "sha512-ryhi3fd1mKf3fSjbLXOfK2D06YwKNic1nC9mWqybBHdObPd8KJ2vjaXZfYj1U23t+V8T8n0d7gwnc9XbIdFbyQ==", + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "dev": true, + "optional": true, + "peer": true, "dependencies": { - "conventional-changelog-angular": "^5.0.12", - "conventional-changelog-atom": "^2.0.8", - "conventional-changelog-codemirror": "^2.0.8", - "conventional-changelog-conventionalcommits": "^4.5.0", - "conventional-changelog-core": "^4.2.1", - "conventional-changelog-ember": "^2.0.9", - "conventional-changelog-eslint": "^3.0.9", - "conventional-changelog-express": "^2.0.6", - "conventional-changelog-jquery": "^3.0.11", - "conventional-changelog-jshint": "^2.0.9", - "conventional-changelog-preset-loader": "^2.3.4" - }, - "engines": { - "node": ">=10" + "iconv-lite": "^0.6.2" } }, - "node_modules/conventional-changelog-angular": { - "version": "5.0.12", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.12.tgz", - "integrity": "sha512-5GLsbnkR/7A89RyHLvvoExbiGbd9xKdKqDTrArnPbOqBqG/2wIosu0fHwpeIRI8Tl94MhVNBXcLJZl92ZQ5USw==", + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, + "optional": true, + "peer": true, "dependencies": { - "compare-func": "^2.0.0", - "q": "^1.5.1" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/conventional-changelog-atom": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-2.0.8.tgz", - "integrity": "sha512-xo6v46icsFTK3bb7dY/8m2qvc8sZemRgdqLb/bjpBsH2UyOS8rKNTgcb5025Hri6IpANPApbXMg15QLb1LJpBw==", + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dev": true, "dependencies": { - "q": "^1.5.1" - }, - "engines": { - "node": ">=10" + "once": "^1.4.0" } }, - "node_modules/conventional-changelog-codemirror": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-2.0.8.tgz", - "integrity": "sha512-z5DAsn3uj1Vfp7po3gpt2Boc+Bdwmw2++ZHa5Ak9k0UKsYAO5mH1UBTN0qSCuJZREIhX6WU4E1p3IW2oRCNzQw==", + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", "dev": true, "dependencies": { - "q": "^1.5.1" + "ansi-colors": "^4.1.1" }, "engines": { - "node": ">=10" + "node": ">=8.6" } }, - "node_modules/conventional-changelog-config-spec": { + "node_modules/entities": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-config-spec/-/conventional-changelog-config-spec-2.1.0.tgz", - "integrity": "sha512-IpVePh16EbbB02V+UA+HQnnPIohgXvJRxHcS5+Uwk4AT5LjzCZJm5sp/yqs5C6KZJ1jMsV4paEV13BN1pvDuxQ==", - "dev": true - }, - "node_modules/conventional-changelog-conventionalcommits": { - "version": "4.6.3", - "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-4.6.3.tgz", - "integrity": "sha512-LTTQV4fwOM4oLPad317V/QNQ1FY4Hju5qeBIM1uTHbrnCE+Eg4CdRZ3gO2pUeR+tzWdp80M2j3qFFEDWVqOV4g==", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", "dev": true, - "dependencies": { - "compare-func": "^2.0.0", - "lodash": "^4.17.15", - "q": "^1.5.1" - }, - "engines": { - "node": ">=10" + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/conventional-changelog-core": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-4.2.4.tgz", - "integrity": "sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==", + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", "dev": true, + "optional": true, "dependencies": { - "add-stream": "^1.0.0", - "conventional-changelog-writer": "^5.0.0", - "conventional-commits-parser": "^3.2.0", - "dateformat": "^3.0.0", - "get-pkg-repo": "^4.0.0", - "git-raw-commits": "^2.0.8", - "git-remote-origin-url": "^2.0.0", - "git-semver-tags": "^4.1.1", - "lodash": "^4.17.15", - "normalize-package-data": "^3.0.0", - "q": "^1.5.1", - "read-pkg": "^3.0.0", - "read-pkg-up": "^3.0.0", - "through2": "^4.0.0" + "prr": "~1.0.1" }, - "engines": { - "node": ">=10" + "bin": { + "errno": "cli.js" } }, - "node_modules/conventional-changelog-core/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dev": true, "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" + "is-arrayish": "^0.2.1" } }, - "node_modules/conventional-changelog-core/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "node_modules/errorstacks": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/errorstacks/-/errorstacks-2.4.0.tgz", + "integrity": "sha512-5ecWhU5gt0a5G05nmQcgCxP5HperSMxLDzvWlT5U+ZSKkuDK0rJ3dbCQny6/vSCIXjwrhwSecXBbw1alr295hQ==", "dev": true }, - "node_modules/conventional-changelog-core/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "node_modules/es-abstract": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", + "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", "dev": true, "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" + "array-buffer-byte-length": "^1.0.0", + "arraybuffer.prototype.slice": "^1.0.2", + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.1", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "is-array-buffer": "^3.0.2", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.12", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "safe-array-concat": "^1.0.1", + "safe-regex-test": "^1.0.0", + "string.prototype.trim": "^1.2.8", + "string.prototype.trimend": "^1.0.7", + "string.prototype.trimstart": "^1.0.7", + "typed-array-buffer": "^1.0.0", + "typed-array-byte-length": "^1.0.0", + "typed-array-byte-offset": "^1.0.0", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.11" }, "engines": { - "node": ">=4" - } - }, - "node_modules/conventional-changelog-core/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", - "dev": true, - "dependencies": { - "p-try": "^1.0.0" + "node": ">= 0.4" }, - "engines": { - "node": ">=4" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/conventional-changelog-core/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "node_modules/es-module-lexer": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.1.tgz", + "integrity": "sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==", + "dev": true + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", "dev": true, "dependencies": { - "p-limit": "^1.1.0" + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=4" + "node": ">= 0.4" } }, - "node_modules/conventional-changelog-core/node_modules/p-try": { + "node_modules/es-shim-unscopables": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/conventional-changelog-core/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/conventional-changelog-core/node_modules/path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", "dev": true, "dependencies": { - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/conventional-changelog-core/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "dev": true, - "engines": { - "node": ">=4" + "has": "^1.0.3" } }, - "node_modules/conventional-changelog-core/node_modules/read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, "dependencies": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" }, "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/conventional-changelog-core/node_modules/read-pkg-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", - "integrity": "sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==", + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true, - "dependencies": { - "find-up": "^2.0.0", - "read-pkg": "^3.0.0" - }, "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/conventional-changelog-core/node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "node_modules/escape-goat": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "engines": { + "node": ">=8" } }, - "node_modules/conventional-changelog-core/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "bin": { - "semver": "bin/semver" - } + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true }, - "node_modules/conventional-changelog-ember": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-2.0.9.tgz", - "integrity": "sha512-ulzIReoZEvZCBDhcNYfDIsLTHzYHc7awh+eI44ZtV5cx6LVxLlVtEmcO+2/kGIHGtw+qVabJYjdI5cJOQgXh1A==", + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true, - "dependencies": { - "q": "^1.5.1" - }, "engines": { - "node": ">=10" + "node": ">=0.8.0" } }, - "node_modules/conventional-changelog-eslint": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-3.0.9.tgz", - "integrity": "sha512-6NpUCMgU8qmWmyAMSZO5NrRd7rTgErjrm4VASam2u5jrZS0n38V7Y9CzTtLT2qwz5xEChDR4BduoWIr8TfwvXA==", + "node_modules/eslint": { + "version": "8.49.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.49.0.tgz", + "integrity": "sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ==", "dev": true, "dependencies": { - "q": "^1.5.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-express": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-2.0.6.tgz", - "integrity": "sha512-SDez2f3iVJw6V563O3pRtNwXtQaSmEfTCaTBPCqn0oG0mfkq0rX4hHBq5P7De2MncoRixrALj3u3oQsNK+Q0pQ==", - "dev": true, - "dependencies": { - "q": "^1.5.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-jquery": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-3.0.11.tgz", - "integrity": "sha512-x8AWz5/Td55F7+o/9LQ6cQIPwrCjfJQ5Zmfqi8thwUEKHstEn4kTIofXub7plf1xvFA2TqhZlq7fy5OmV6BOMw==", - "dev": true, - "dependencies": { - "q": "^1.5.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-jshint": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-2.0.9.tgz", - "integrity": "sha512-wMLdaIzq6TNnMHMy31hql02OEQ8nCQfExw1SE0hYL5KvU+JCTuPaDO+7JiogGT2gJAxiUGATdtYYfh+nT+6riA==", - "dev": true, - "dependencies": { - "compare-func": "^2.0.0", - "q": "^1.5.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-preset-loader": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz", - "integrity": "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-writer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz", - "integrity": "sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==", - "dev": true, - "dependencies": { - "conventional-commits-filter": "^2.0.7", - "dateformat": "^3.0.0", - "handlebars": "^4.7.7", - "json-stringify-safe": "^5.0.1", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "semver": "^6.0.0", - "split": "^1.0.0", - "through2": "^4.0.0" - }, - "bin": { - "conventional-changelog-writer": "cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-commits-filter": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz", - "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==", - "dev": true, - "dependencies": { - "lodash.ismatch": "^4.4.0", - "modify-values": "^1.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-commits-parser": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz", - "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==", - "dev": true, - "dependencies": { - "is-text-path": "^1.0.1", - "JSONStream": "^1.0.4", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "split2": "^3.0.0", - "through2": "^4.0.0" - }, - "bin": { - "conventional-commits-parser": "cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-recommended-bump": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-6.1.0.tgz", - "integrity": "sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw==", - "dev": true, - "dependencies": { - "concat-stream": "^2.0.0", - "conventional-changelog-preset-loader": "^2.3.4", - "conventional-commits-filter": "^2.0.7", - "conventional-commits-parser": "^3.2.0", - "git-raw-commits": "^2.0.8", - "git-semver-tags": "^4.1.1", - "meow": "^8.0.0", - "q": "^1.5.1" + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.2", + "@eslint/js": "8.49.0", + "@humanwhocodes/config-array": "^0.11.11", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" }, "bin": { - "conventional-recommended-bump": "cli.js" + "eslint": "bin/eslint.js" }, "engines": { - "node": ">=10" - } - }, - "node_modules/convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.1" - } - }, - "node_modules/copy-anything": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.3.tgz", - "integrity": "sha512-GK6QUtisv4fNS+XcI7shX0Gx9ORg7QqIznyfho79JTnX1XhLiyZHfftvGiziqzRiEi/Bjhgpi+D2o7HxJFPnDQ==", - "dev": true, - "dependencies": { - "is-what": "^3.12.0" - } - }, - "node_modules/core-js-compat": { - "version": "3.20.3", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.20.3.tgz", - "integrity": "sha512-c8M5h0IkNZ+I92QhIpuSijOxGAcj3lgpsWdkCqmUTZNwidujF4r3pi6x1DCN+Vcs5qTS2XWWMfWSuCqyupX8gw==", - "dev": true, - "dependencies": { - "browserslist": "^4.19.1", - "semver": "7.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-js-compat/node_modules/semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "node_modules/cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", - "dev": true, - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - }, - "engines": { - "node": ">=10" + "url": "https://opencollective.com/eslint" } }, - "node_modules/cosmiconfig-typescript-loader": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-1.0.4.tgz", - "integrity": "sha512-ulv2dvwurP/MZAIthXm69bO7EzzIUThZ6RJ1qXhdlXM6to3F+IKBL/17EnhYSG52A5N1KcAUu66vSG/3/77KrA==", + "node_modules/eslint-plugin-jest": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-26.0.0.tgz", + "integrity": "sha512-Fvs0YgJ/nw9FTrnqTuMGVrkozkd07jkQzWm0ajqyHlfcsdkxGfAuv30fgfWHOnHiCr9+1YQ365CcDX7vrNhqQg==", "dev": true, "dependencies": { - "cosmiconfig": "^7", - "ts-node": "^10.4.0" + "@typescript-eslint/utils": "^5.10.0" }, "engines": { - "node": ">=12", - "npm": ">=6" + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" }, "peerDependencies": { - "@types/node": "*", - "cosmiconfig": ">=7", - "typescript": ">=3" + "@typescript-eslint/eslint-plugin": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + }, + "jest": { + "optional": true + } } }, - "node_modules/cp-file": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-7.0.0.tgz", - "integrity": "sha512-0Cbj7gyvFVApzpK/uhCtQ/9kE9UnYpxMzaq5nQQC/Dh4iaj5fxp7iEFIullrYwzj8nf0qnsI1Qsx34hAeAebvw==", + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, "dependencies": { - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "nested-error-stacks": "^2.0.0", - "p-event": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cross-spawn/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/css": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", - "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", - "dev": true, - "dependencies": { - "inherits": "^2.0.4", - "source-map": "^0.6.1", - "source-map-resolve": "^0.6.0" - } - }, - "node_modules/css/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "dev": true - }, - "node_modules/cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, - "dependencies": { - "cssom": "~0.3.6" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cssstyle/node_modules/cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - }, - "node_modules/csv": { - "version": "5.5.3", - "resolved": "https://registry.npmjs.org/csv/-/csv-5.5.3.tgz", - "integrity": "sha512-QTaY0XjjhTQOdguARF0lGKm5/mEq9PD9/VhZZegHDIBq2tQwgNpHc3dneD4mGo2iJs+fTKv5Bp0fZ+BRuY3Z0g==", - "dev": true, - "dependencies": { - "csv-generate": "^3.4.3", - "csv-parse": "^4.16.3", - "csv-stringify": "^5.6.5", - "stream-transform": "^2.1.3" - }, - "engines": { - "node": ">= 0.1.90" - } - }, - "node_modules/csv-generate": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/csv-generate/-/csv-generate-3.4.3.tgz", - "integrity": "sha512-w/T+rqR0vwvHqWs/1ZyMDWtHHSJaN06klRqJXBEpDJaM/+dZkso0OKh1VcuuYvK3XM53KysVNq8Ko/epCK8wOw==", - "dev": true - }, - "node_modules/csv-parse": { - "version": "4.16.3", - "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-4.16.3.tgz", - "integrity": "sha512-cO1I/zmz4w2dcKHVvpCr7JVRu8/FymG5OEpmvsZYlccYolPBLoVGKUHgNoc4ZGkFeFlWGEDmMyBM+TTqRdW/wg==", - "dev": true - }, - "node_modules/csv-stringify": { - "version": "5.6.5", - "resolved": "https://registry.npmjs.org/csv-stringify/-/csv-stringify-5.6.5.tgz", - "integrity": "sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==", - "dev": true - }, - "node_modules/dargs": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", - "integrity": "sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", - "dev": true, - "dependencies": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/dateformat": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", - "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dev": true, - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decamelize-keys": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", - "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", - "dev": true, - "dependencies": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decamelize-keys/node_modules/map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decimal.js": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.3.1.tgz", - "integrity": "sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ==", - "dev": true - }, - "node_modules/decode-uri-component": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", - "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/decompress-response": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", - "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", - "dev": true, - "dependencies": { - "mimic-response": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", - "dev": true - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "node_modules/deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/defaults": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "dev": true, - "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/defer-to-connect": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", - "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==", - "dev": true - }, - "node_modules/define-data-property": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.0.tgz", - "integrity": "sha512-UzGwzcjyv3OtAvolTj1GoyNYzfFR+iqbGjcnBEENZVCpM4/Ng1yhGNvS3lR/xDS74Tb2wGG9WzNSNIOS9UVb2g==", - "dependencies": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", - "dev": true - }, - "node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/destroy": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", - "dev": true - }, - "node_modules/detect-indent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-6.0.0.tgz", - "integrity": "sha512-oSyFlqaTHCItVRGK5RmrmjB+CmaMOW7IaNA/kdxqhoa6d17j/5ce9O9eWXmV/KEdRwqpQA+Vqe8a8Bsybu4YnA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/diff-sequences": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.4.0.tgz", - "integrity": "sha512-YqiQzkrsmHMH5uuh8OdQFU9/ZpADnwzml8z0O5HvRNda+5UZsaX/xN+AAxfR2hWq1Y7HZnAzO9J5lJXOuDz2Ww==", - "dev": true, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dmd": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/dmd/-/dmd-6.1.0.tgz", - "integrity": "sha512-0zQIJ873gay1scCTFZvHPWM9mVJBnaylB2NQDI8O9u8O32m00Jb6uxDKexZm8hjTRM7RiWe0FJ32pExHoXdwoQ==", - "dev": true, - "dependencies": { - "array-back": "^6.2.2", - "cache-point": "^2.0.0", - "common-sequence": "^2.0.2", - "file-set": "^4.0.2", - "handlebars": "^4.7.7", - "marked": "^4.0.12", - "object-get": "^2.1.1", - "reduce-flatten": "^3.0.1", - "reduce-unique": "^2.0.1", - "reduce-without": "^1.0.1", - "test-value": "^3.0.0", - "walk-back": "^5.1.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/dmd/node_modules/marked": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.1.0.tgz", - "integrity": "sha512-+Z6KDjSPa6/723PQYyc1axYZpYYpDnECDaU6hkaf5gqBieBkMKYReL5hteF2QizhlMbgbo8umXl/clZ67+GlsA==", - "dev": true, - "bin": { - "marked": "bin/marked.js" - }, - "engines": { - "node": ">= 12" - } - }, - "node_modules/docsify": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/docsify/-/docsify-4.12.2.tgz", - "integrity": "sha512-hpRez5upcvkYigT2zD8P5kH5t9HpSWL8yn/ZU/g04/WfAfxVNW6CPUVOOF1EsQUDxTRuyNTFOb6uUv+tPij3tg==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "dompurify": "^2.3.1", - "marked": "^1.2.9", - "medium-zoom": "^1.0.6", - "opencollective-postinstall": "^2.0.2", - "prismjs": "^1.23.0", - "strip-indent": "^3.0.0", - "tinydate": "^1.3.0", - "tweezer.js": "^1.4.0" - } - }, - "node_modules/docsify-cli": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/docsify-cli/-/docsify-cli-4.4.4.tgz", - "integrity": "sha512-NAZgg6b0BsDuq/Pe+P19Qb2J1d+ZVbS0eGkeCNxyu4F9/CQSsRqZqAvPJ9/0I+BCHn4sgftA2jluqhQVzKzrSA==", - "dev": true, - "dependencies": { - "chalk": "^2.4.2", - "connect": "^3.6.0", - "connect-history-api-fallback": "^1.6.0", - "connect-livereload": "^0.6.0", - "cp-file": "^7.0.0", - "docsify": "^4.12.2", - "docsify-server-renderer": ">=4.10.0", - "enquirer": "^2.3.6", - "fs-extra": "^8.1.0", - "get-port": "^5.0.0", - "livereload": "^0.9.2", - "lru-cache": "^5.1.1", - "open": "^6.4.0", - "serve-static": "^1.12.1", - "update-notifier": "^4.1.0", - "yargonaut": "^1.1.2", - "yargs": "^15.3.0" - }, - "bin": { - "docsify": "bin/docsify" - }, - "engines": { - "node": ">= 10", - "npm": ">= 6" - } - }, - "node_modules/docsify-cli/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/docsify-cli/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/docsify-cli/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "node_modules/docsify-cli/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/docsify-cli/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/docsify-cli/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/docsify-cli/node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/docsify-cli/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/docsify-cli/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/docsify-cli/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/docsify-cli/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/docsify-cli/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/docsify-cli/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/docsify-cli/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/docsify-cli/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/docsify-cli/node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/docsify-cli/node_modules/wrap-ansi/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/docsify-cli/node_modules/wrap-ansi/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/docsify-cli/node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/docsify-cli/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/docsify-server-renderer": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/docsify-server-renderer/-/docsify-server-renderer-4.12.2.tgz", - "integrity": "sha512-/sCq0U0iGvc8mNN6VC5SeodiHUsA98rMsMFYXtQbWsS/jWArkSee8ATlH5KzGDJ/zjf9QOFrkjoanHCNaFWiPQ==", - "dev": true, - "dependencies": { - "debug": "^4.3.3", - "docsify": "^4.12.1", - "dompurify": "^2.3.2", - "node-fetch": "^2.6.6", - "resolve-pathname": "^3.0.0" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/domexception": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", - "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", - "dev": true, - "dependencies": { - "webidl-conversions": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/domexception/node_modules/webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/dompurify": { - "version": "2.3.4", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.3.4.tgz", - "integrity": "sha512-6BVcgOAVFXjI0JTjEvZy901Rghm+7fDQOrNIcxB4+gdhj6Kwp6T9VBhBY/AbagKHJocRkDYGd6wvI+p4/10xtQ==", - "dev": true - }, - "node_modules/dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "dev": true, - "dependencies": { - "is-obj": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dotgitignore": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/dotgitignore/-/dotgitignore-2.1.0.tgz", - "integrity": "sha512-sCm11ak2oY6DglEPpCB8TixLjWAxd3kJTs6UIcSasNYxXdFPV+YKlye92c8H4kKFqV5qYMIh7d+cYecEg0dIkA==", - "dev": true, - "dependencies": { - "find-up": "^3.0.0", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/dotgitignore/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/dotgitignore/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/dotgitignore/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/dotgitignore/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/dotgitignore/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/duplexer3": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", - "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=", - "dev": true - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true - }, - "node_modules/electron-to-chromium": { - "version": "1.4.53", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.53.tgz", - "integrity": "sha512-rFveSKQczlcav+H3zkKqykU6ANseFwXwkl855jOIap5/0gnEcuIhv2ecz6aoTrXavF6I/CEBeRnBnkB51k06ew==", - "dev": true - }, - "node_modules/emitter-component": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/emitter-component/-/emitter-component-1.1.1.tgz", - "integrity": "sha512-G+mpdiAySMuB7kesVRLuyvYRqDmshB7ReKEVuyBPkzQlmiDiLrt7hHHIy4Aff552bgknVN7B2/d3lzhGO5dvpQ==" - }, - "node_modules/emittery": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.8.1.tgz", - "integrity": "sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/emittery?sponsor=1" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "dev": true, - "optional": true, - "dependencies": { - "iconv-lite": "^0.6.2" - } - }, - "node_modules/encoding/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dev": true, - "optional": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/enquirer": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", - "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", - "dev": true, - "dependencies": { - "ansi-colors": "^4.1.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", - "dev": true, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/err-code": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "dev": true - }, - "node_modules/errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "optional": true, - "dependencies": { - "prr": "~1.0.1" - }, - "bin": { - "errno": "cli.js" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-abstract": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.2.tgz", - "integrity": "sha512-YoxfFcDmhjOgWPWsV13+2RNjq1F6UQnfs+8TftwNqtzlmFzEXvlUwdrNrYeaizfjQzRMxkZ6ElWMOJIFKdVqwA==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "arraybuffer.prototype.slice": "^1.0.2", - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.1", - "get-symbol-description": "^1.0.0", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.5", - "is-array-buffer": "^3.0.2", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.12", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.3", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.1", - "safe-array-concat": "^1.0.1", - "safe-regex-test": "^1.0.0", - "string.prototype.trim": "^1.2.8", - "string.prototype.trimend": "^1.0.7", - "string.prototype.trimstart": "^1.0.7", - "typed-array-buffer": "^1.0.0", - "typed-array-byte-length": "^1.0.0", - "typed-array-byte-offset": "^1.0.0", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.11" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", - "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", - "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-goat": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", - "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/escodegen": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", - "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", - "dev": true, - "dependencies": { - "esprima": "^2.7.1", - "estraverse": "^1.9.1", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=0.12.0" - }, - "optionalDependencies": { - "source-map": "~0.2.0" - } - }, - "node_modules/escodegen/node_modules/estraverse": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", - "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/escodegen/node_modules/source-map": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", - "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", - "dev": true, - "optional": true, - "dependencies": { - "amdefine": ">=0.0.4" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/eslint": { - "version": "8.49.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.49.0.tgz", - "integrity": "sha512-jw03ENfm6VJI0jA9U+8H5zfl5b+FvuU3YYvZRdZHOlU2ggJkxrlkJH4HcDrZpj6YwD8kuYqvQM8LyesoazrSOQ==", - "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.2", - "@eslint/js": "8.49.0", - "@humanwhocodes/config-array": "^0.11.11", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-formatter-pretty": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/eslint-formatter-pretty/-/eslint-formatter-pretty-4.1.0.tgz", - "integrity": "sha512-IsUTtGxF1hrH6lMWiSl1WbGaiP01eT6kzywdY1U+zLc0MP+nwEnUiS9UI8IaOTUhTeQJLlCEWIbXINBH4YJbBQ==", - "dev": true, - "dependencies": { - "@types/eslint": "^7.2.13", - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "eslint-rule-docs": "^1.1.5", - "log-symbols": "^4.0.0", - "plur": "^4.0.0", - "string-width": "^4.2.0", - "supports-hyperlinks": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint-formatter-pretty/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/eslint-plugin-jest": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-26.0.0.tgz", - "integrity": "sha512-Fvs0YgJ/nw9FTrnqTuMGVrkozkd07jkQzWm0ajqyHlfcsdkxGfAuv30fgfWHOnHiCr9+1YQ365CcDX7vrNhqQg==", - "dev": true, - "dependencies": { - "@typescript-eslint/utils": "^5.10.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - }, - "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "@typescript-eslint/eslint-plugin": { - "optional": true - }, - "jest": { - "optional": true - } - } - }, - "node_modules/eslint-rule-docs": { - "version": "1.1.231", - "resolved": "https://registry.npmjs.org/eslint-rule-docs/-/eslint-rule-docs-1.1.231.tgz", - "integrity": "sha512-egHz9A1WG7b8CS0x1P6P/Rj5FqZOjray/VjpJa14tMZalfRKvpE2ONJ3plCM7+PcinmU4tcmbPLv0VtwzSdLVA==", - "dev": true - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "dev": true, - "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/eslint/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/eslint/node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/eslint/node_modules/globals": { - "version": "13.21.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", - "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", - "dev": true, - "dependencies": { - "type-fest": "^0.20.2" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", - "dev": true, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/eslint/node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/eslint/node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", - "dev": true, - "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/eslint/node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/eslint/node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/eslint/node_modules/type-fest": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", - "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "dev": true, - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/esquery": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", - "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", - "dev": true, - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/execa/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/expect": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/expect/-/expect-27.4.6.tgz", - "integrity": "sha512-1M/0kAALIaj5LaG66sFJTbRsWTADnylly82cu4bspI0nl+pgP4E6Bh/aqdHlTUjul06K7xQnnrAoqfxVU0+/ag==", - "dev": true, - "dependencies": { - "@jest/types": "^27.4.2", - "jest-get-type": "^27.4.0", - "jest-matcher-utils": "^27.4.6", - "jest-message-util": "^27.4.6" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/extendable-error": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/extendable-error/-/extendable-error-0.1.7.tgz", - "integrity": "sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==", - "dev": true - }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-diff": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", - "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", - "peer": true - }, - "node_modules/fast-glob": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", - "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fb-watchman": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", - "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", - "dev": true, - "dependencies": { - "bser": "2.1.1" - } - }, - "node_modules/figlet": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/figlet/-/figlet-1.5.0.tgz", - "integrity": "sha512-ZQJM4aifMpz6H19AW1VqvZ7l4pOE9p7i/3LyxgO2kp+PO/VcDYNqIHEMtkccqIhTXMKci4kjueJr/iCQEaT/Ww==", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "dev": true, - "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/file-set": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/file-set/-/file-set-4.0.2.tgz", - "integrity": "sha512-fuxEgzk4L8waGXaAkd8cMr73Pm0FxOVkn8hztzUW7BAHhOGH90viQNXbiOsnecCWmfInqU6YmAMwxRMdKETceQ==", - "dev": true, - "dependencies": { - "array-back": "^5.0.0", - "glob": "^7.1.6" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/file-set/node_modules/array-back": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-5.0.0.tgz", - "integrity": "sha512-kgVWwJReZWmVuWOQKEOohXKJX+nD02JAZ54D1RRWlv8L0NebauKAaFxACKzB74RTclt1+WNz5KHaLRDAPZbDEw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "node_modules/find-replace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", - "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", - "dev": true, - "dependencies": { - "array-back": "^3.0.1" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/find-replace/node_modules/array-back": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", - "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/find-yarn-workspace-root": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz", - "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==", - "dependencies": { - "micromatch": "^4.0.2" - } - }, - "node_modules/find-yarn-workspace-root2": { - "version": "1.2.16", - "resolved": "https://registry.npmjs.org/find-yarn-workspace-root2/-/find-yarn-workspace-root2-1.2.16.tgz", - "integrity": "sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==", - "dev": true, - "dependencies": { - "micromatch": "^4.0.2", - "pkg-dir": "^4.2.0" - } - }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", - "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/flatted": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz", - "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==", - "dev": true - }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/foreground-child/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs-extra": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", - "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/fs-then-native": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/fs-then-native/-/fs-then-native-2.0.0.tgz", - "integrity": "sha1-GaEk2U2QwiyOBF8ujdbr6jbUjGc=", - "dev": true, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" - }, - "node_modules/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gaze": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", - "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", - "dev": true, - "dependencies": { - "globule": "^1.0.0" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", - "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-pkg-repo": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz", - "integrity": "sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==", - "dev": true, - "dependencies": { - "@hutson/parse-repository-url": "^3.0.0", - "hosted-git-info": "^4.0.0", - "through2": "^2.0.0", - "yargs": "^16.2.0" - }, - "bin": { - "get-pkg-repo": "src/cli.js" + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" }, "engines": { - "node": ">=6.9.0" + "node": ">=8.0.0" } }, - "node_modules/get-pkg-repo/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", "dev": true, "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" } }, - "node_modules/get-pkg-repo/node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", "dev": true, "engines": { "node": ">=10" } }, - "node_modules/get-pkg-repo/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, "engines": { - "node": ">=10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/get-port": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", - "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", + "node_modules/eslint/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": ">= 0.4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://opencollective.com/eslint" } }, - "node_modules/git-raw-commits": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.10.tgz", - "integrity": "sha512-sHhX5lsbG9SOO6yXdlwgEMQ/ljIn7qMpAbJZCGfXX2fq5T8M5SrDnpYk9/4HswTildcIqatsWa91vty6VhWSaQ==", + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "dependencies": { - "dargs": "^7.0.0", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "split2": "^3.0.0", - "through2": "^4.0.0" - }, - "bin": { - "git-raw-commits": "cli.js" - }, "engines": { - "node": ">=10" + "node": ">=4.0" } }, - "node_modules/git-remote-origin-url": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", - "integrity": "sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==", + "node_modules/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "dependencies": { - "gitconfiglocal": "^1.0.0", - "pify": "^2.3.0" + "is-glob": "^4.0.3" }, "engines": { - "node": ">=4" + "node": ">=10.13.0" } }, - "node_modules/git-semver-tags": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz", - "integrity": "sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==", + "node_modules/eslint/node_modules/globals": { + "version": "13.21.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", + "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", "dev": true, "dependencies": { - "meow": "^8.0.0", - "semver": "^6.0.0" - }, - "bin": { - "git-semver-tags": "cli.js" + "type-fest": "^0.20.2" }, "engines": { - "node": ">=10" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/gitconfiglocal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", - "integrity": "sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==", + "node_modules/eslint/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, "dependencies": { - "ini": "^1.3.2" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" + "argparse": "^2.0.1" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "node_modules/eslint/node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "dependencies": { - "is-glob": "^4.0.1" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" }, "engines": { - "node": ">= 6" + "node": ">= 0.8.0" } }, - "node_modules/glob/node_modules/minimatch": { + "node_modules/eslint/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "dependencies": { "brace-expansion": "^1.1.7" }, @@ -9557,55 +6598,49 @@ "node": "*" } }, - "node_modules/global-dirs": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", - "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", + "node_modules/eslint/node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, "dependencies": { - "ini": "^1.3.4" + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" }, "engines": { - "node": ">=4" + "node": ">= 0.8.0" } }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "node_modules/eslint/node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, "engines": { - "node": ">=4" + "node": ">= 0.8.0" } }, - "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "node_modules/eslint/node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "dependencies": { - "define-properties": "^1.1.3" + "prelude-ls": "^1.2.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.8.0" } }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, + "node_modules/eslint/node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, "engines": { "node": ">=10" }, @@ -9613,770 +6648,841 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/globule": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.2.tgz", - "integrity": "sha512-7IDTQTIu2xzXkT+6mlluidnWo+BypnbSoEVVQCGfzqnl5Ik8d3e1d4wycb8Rj9tWW+Z39uPWsdlquqiqPCd/pA==", + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "dependencies": { - "glob": "~7.1.1", - "lodash": "~4.17.10", - "minimatch": "~3.0.2" + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": ">= 0.10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/globule/node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "node_modules/esquery": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", "dev": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "estraverse": "^5.1.0" }, "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=0.10" } }, - "node_modules/globule/node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, "engines": { - "node": "*" + "node": ">=4.0" } }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, "dependencies": { - "get-intrinsic": "^1.1.3" + "estraverse": "^5.2.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=4.0" } }, - "node_modules/got": { - "version": "9.6.0", - "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", - "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", "dev": true, - "dependencies": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - }, "engines": { - "node": ">=8.6" + "node": ">=4.0" } }, - "node_modules/got/node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, "engines": { - "node": ">=6" + "node": ">=4.0" } }, - "node_modules/graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==" - }, - "node_modules/grapheme-splitter": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", - "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "dev": true }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/handlebars": { - "version": "4.7.7", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", - "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.0", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" }, "engines": { - "node": ">=0.4.7" + "node": ">=10" }, - "optionalDependencies": { - "uglify-js": "^3.1.4" + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/handlebars/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/execa/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "node_modules/extendable-error": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/extendable-error/-/extendable-error-0.1.7.tgz", + "integrity": "sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==", + "dev": true + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", "dev": true, + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, "engines": { - "node": ">=6" + "node": ">=4" } }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, "dependencies": { - "function-bind": "^1.1.1" + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" }, "engines": { - "node": ">= 0.4.0" + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" } }, - "node_modules/has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "peer": true + }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", "dev": true, "dependencies": { - "ansi-regex": "^2.0.0" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" }, "engines": { - "node": ">=0.10.0" + "node": ">=8.6.0" } }, - "node_modules/has-ansi/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", "dev": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "reusify": "^1.0.4" } }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "dependencies": { + "pend": "~1.2.0" } }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/figlet": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/figlet/-/figlet-1.5.0.tgz", + "integrity": "sha512-ZQJM4aifMpz6H19AW1VqvZ7l4pOE9p7i/3LyxgO2kp+PO/VcDYNqIHEMtkccqIhTXMKci4kjueJr/iCQEaT/Ww==", + "dev": true, "engines": { - "node": ">=8" + "node": ">= 0.4.0" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, "dependencies": { - "get-intrinsic": "^1.1.1" + "escape-string-regexp": "^1.0.5" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "engines": { - "node": ">= 0.4" + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "node_modules/file-set": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/file-set/-/file-set-4.0.2.tgz", + "integrity": "sha512-fuxEgzk4L8waGXaAkd8cMr73Pm0FxOVkn8hztzUW7BAHhOGH90viQNXbiOsnecCWmfInqU6YmAMwxRMdKETceQ==", + "dev": true, "dependencies": { - "has-symbols": "^1.0.2" + "array-back": "^5.0.0", + "glob": "^7.1.6" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=10" } }, - "node_modules/has-unicode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", - "dev": true - }, - "node_modules/has-yarn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", - "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", + "node_modules/file-set/node_modules/array-back": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-5.0.0.tgz", + "integrity": "sha512-kgVWwJReZWmVuWOQKEOohXKJX+nD02JAZ54D1RRWlv8L0NebauKAaFxACKzB74RTclt1+WNz5KHaLRDAPZbDEw==", "dev": true, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/header-case": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", - "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dependencies": { - "capital-case": "^1.0.4", - "tslib": "^2.0.3" + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/hosted-git-info": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", - "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" }, "engines": { - "node": ">=10" + "node": ">= 0.8" } }, - "node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" + "ms": "2.0.0" } }, - "node_modules/hosted-git-info/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", "dev": true }, - "node_modules/html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "node_modules/find-replace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", + "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", "dev": true, "dependencies": { - "whatwg-encoding": "^1.0.5" + "array-back": "^3.0.1" }, "engines": { - "node": ">=10" + "node": ">=4.0.0" } }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "node_modules/http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "dev": true - }, - "node_modules/http-errors": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", - "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", + "node_modules/find-replace/node_modules/array-back": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", + "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", "dev": true, - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, "engines": { - "node": ">= 0.6" + "node": ">=6" } }, - "node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">= 6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/https-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.0.tgz", - "integrity": "sha512-EkYm5BcKUGiduxzSt3Eppko+PiNWNEpa4ySk9vTC6wDsQJW9rHSa+UhGNJoRYp7bz6Ht1eaRIa6QaJqO5rCFbA==", + "node_modules/find-yarn-workspace-root": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz", + "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==", + "dependencies": { + "micromatch": "^4.0.2" + } + }, + "node_modules/find-yarn-workspace-root2": { + "version": "1.2.16", + "resolved": "https://registry.npmjs.org/find-yarn-workspace-root2/-/find-yarn-workspace-root2-1.2.16.tgz", + "integrity": "sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==", "dev": true, "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" + "micromatch": "^4.0.2", + "pkg-dir": "^4.2.0" } }, - "node_modules/human-id": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/human-id/-/human-id-1.0.2.tgz", - "integrity": "sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==", - "dev": true + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" + } }, - "node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, "engines": { - "node": ">=10.17.0" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", - "dev": true, + "node_modules/flatted": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.4.tgz", + "integrity": "sha512-8/sOawo8tJ4QOBX8YlQBMxL8+RLZfxMQOif9o0KUKTNTjMYElWPE0r/m5VNFxTRd0NSw8qSy8dajrwX4RYI1Hw==", + "dev": true + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dependencies": { - "ms": "^2.0.0" + "is-callable": "^1.1.3" } }, - "node_modules/husky": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", - "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", - "dev": true, - "bin": { - "husky": "lib/bin.js" + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" }, "engines": { "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/typicode" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/hyperdyperid": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", - "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "engines": { - "node": ">=10.18" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.0.tgz", + "integrity": "sha512-C5owb14u9eJwizKGdchcDUQeFtlSHHthBk8pbX9Vc1PFZrLombudjDnNns88aYslCyF6IY5SUw3Roz6xShcEIQ==", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "node_modules/fs-then-native": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fs-then-native/-/fs-then-native-2.0.0.tgz", + "integrity": "sha1-GaEk2U2QwiyOBF8ujdbr6jbUjGc=", "dev": true, "engines": { - "node": ">= 4" + "node": ">=4.0.0" } }, - "node_modules/image-size": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", - "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, + "hasInstallScript": true, "optional": true, - "bin": { - "image-size": "bin/image-size.js" - }, + "os": [ + "darwin" + ], "engines": { - "node": ">=0.10.0" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", "dev": true, "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" }, "engines": { - "node": ">=6" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/import-fresh/node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true, - "engines": { - "node": ">=4" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/import-lazy": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", - "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, "engines": { - "node": ">=4" + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/import-local": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", - "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "node_modules/get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", "dev": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, "engines": { - "node": ">=8" + "node": "*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.1.tgz", + "integrity": "sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "node_modules/get-pkg-repo": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz", + "integrity": "sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==", "dev": true, + "dependencies": { + "@hutson/parse-repository-url": "^3.0.0", + "hosted-git-info": "^4.0.0", + "through2": "^2.0.0", + "yargs": "^16.2.0" + }, + "bin": { + "get-pkg-repo": "src/cli.js" + }, "engines": { - "node": ">=0.8.19" + "node": ">=6.9.0" } }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "node_modules/get-pkg-repo/node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "dev": true - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "node_modules/internal-slot": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", - "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", + "node_modules/get-pkg-repo/node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.0", - "has": "^1.0.3", - "side-channel": "^1.0.4" - }, "engines": { - "node": ">= 0.4" + "node": ">=10" } }, - "node_modules/invariant": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", - "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "node_modules/get-pkg-repo/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "dependencies": { - "loose-envify": "^1.0.0" + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" } }, - "node_modules/irregular-plurals": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-3.3.0.tgz", - "integrity": "sha512-MVBLKUTangM3EfRPFROhmWQQKRDsrgI83J8GS3jXy+OwYqiR2/aoWndYQ5416jLE3uaGgLH7ncme3X9y09gZ3g==", + "node_modules/get-port": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-5.1.1.tgz", + "integrity": "sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==", "dev": true, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "pump": "^3.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-array-buffer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", - "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.0", - "is-typed-array": "^1.1.10" + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "node_modules/get-uri": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.2.tgz", + "integrity": "sha512-5KLucCJobh8vBY1K07EFV4+cPZH3mrV9YeAruUseCQKHB58SGjjT2l9/eA9LD082IiuMjSlFJEcdJ27TXvbZNw==", "dev": true, "dependencies": { - "has-bigints": "^1.0.1" + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^6.0.0", + "debug": "^4.3.4", + "fs-extra": "^8.1.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">= 14" } }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "node_modules/get-uri/node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "dev": true, "dependencies": { - "binary-extensions": "^2.0.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" }, "engines": { - "node": ">=8" + "node": ">=6 <7 || >=8" } }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "node_modules/get-uri/node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "node_modules/get-uri/node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 4.0.0" } }, - "node_modules/is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "node_modules/git-raw-commits": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.10.tgz", + "integrity": "sha512-sHhX5lsbG9SOO6yXdlwgEMQ/ljIn7qMpAbJZCGfXX2fq5T8M5SrDnpYk9/4HswTildcIqatsWa91vty6VhWSaQ==", "dev": true, "dependencies": { - "ci-info": "^2.0.0" + "dargs": "^7.0.0", + "lodash": "^4.17.15", + "meow": "^8.0.0", + "split2": "^3.0.0", + "through2": "^4.0.0" }, "bin": { - "is-ci": "bin.js" + "git-raw-commits": "cli.js" + }, + "engines": { + "node": ">=10" } }, - "node_modules/is-core-module": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "node_modules/git-remote-origin-url": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", + "integrity": "sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==", "dev": true, "dependencies": { - "has": "^1.0.3" + "gitconfiglocal": "^1.0.0", + "pify": "^2.3.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=4" } }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "node_modules/git-semver-tags": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-4.1.1.tgz", + "integrity": "sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==", "dev": true, "dependencies": { - "has-tostringtag": "^1.0.0" + "meow": "^8.0.0", + "semver": "^6.0.0" }, - "engines": { - "node": ">= 0.4" + "bin": { + "git-semver-tags": "cli.js" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=10" } }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "bin": { - "is-docker": "cli.js" + "node_modules/gitconfiglocal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", + "integrity": "sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==", + "dev": true, + "dependencies": { + "ini": "^1.3.2" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=8" + "node": "*" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 6" } }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, "engines": { - "node": ">=8" + "node": "*" } }, - "node_modules/is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "node_modules/global-dirs": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", + "integrity": "sha1-sxnA3UYH81PzvpzKTHL8FIxJ9EU=", "dev": true, + "dependencies": { + "ini": "^1.3.4" + }, "engines": { - "node": ">=6" + "node": ">=4" } }, - "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, "dependencies": { - "has-tostringtag": "^1.0.0" + "define-properties": "^1.1.3" }, "engines": { "node": ">= 0.4" @@ -10385,200 +7491,221 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", "dev": true, "dependencies": { - "is-extglob": "^2.1.1" + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=8.6" } }, - "node_modules/is-installed-globally": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", - "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", + "node_modules/got/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", "dev": true, "dependencies": { - "global-dirs": "^2.0.1", - "is-path-inside": "^3.0.1" + "pump": "^3.0.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, - "node_modules/is-installed-globally/node_modules/global-dirs": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz", - "integrity": "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==", - "dev": true, - "dependencies": { - "ini": "1.3.7" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "node_modules/graceful-fs": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==" }, - "node_modules/is-installed-globally/node_modules/ini": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", - "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==", + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", "dev": true }, - "node_modules/is-lambda": { + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/hanbi": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha1-PZh3iZ5qU+/AFgUEzeFfgubwYdU=", + "resolved": "https://registry.npmjs.org/hanbi/-/hanbi-1.0.1.tgz", + "integrity": "sha512-ygE4dxg+khS7BZBZTVqaaq+X3oCQX6q4Z2LvNzRpPdZLmzbmL7xu6KCdjWoRiRlYfyZN9R+gMztf4MftiCH0Mw==", "dev": true }, - "node_modules/is-nan": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", - "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", + "node_modules/handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "dev": true, "dependencies": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3" + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" }, "engines": { - "node": ">= 0.4" + "node": ">=0.4.7" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "optionalDependencies": { + "uglify-js": "^3.1.4" } }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "node_modules/handlebars/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10.0" } }, - "node_modules/is-npm": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", - "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==", + "node_modules/hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", "dev": true, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, "engines": { - "node": ">=0.12.0" + "node": ">= 0.4.0" } }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "node_modules/has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", "dev": true, "dependencies": { - "has-tostringtag": "^1.0.0" + "ansi-regex": "^2.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10.0" } }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "node_modules/has-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", "dev": true, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "dev": true, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", - "dev": true, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "dev": true, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" + "get-intrinsic": "^1.1.1" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2" + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", "dependencies": { - "has-tostringtag": "^1.0.0" + "has-symbols": "^1.0.2" }, "engines": { "node": ">= 0.4" @@ -10587,1223 +7714,961 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-subdir": { + "node_modules/has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/he": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-subdir/-/is-subdir-1.2.0.tgz", - "integrity": "sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/header-case": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", + "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", "dependencies": { - "better-path-resolve": "1.0.0" - }, - "engines": { - "node": ">=4" + "capital-case": "^1.0.4", + "tslib": "^2.0.3" } }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "node_modules/hosted-git-info": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.0.2.tgz", + "integrity": "sha512-c9OGXbZ3guC/xOlCg1Ci/VgWlwsqDv1yMQL1CWqXDL0hDjXuNcq0zuR4xqPSuasI3kqFDhqSyTjREz5gzq0fXg==", "dev": true, "dependencies": { - "has-symbols": "^1.0.2" + "lru-cache": "^6.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=10" } }, - "node_modules/is-text-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", - "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=", + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "dependencies": { - "text-extensions": "^1.0.0" + "yallist": "^4.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/is-typed-array": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", - "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", - "dependencies": { - "which-typed-array": "^1.1.11" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "node_modules/hosted-git-info/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", "dev": true }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "node_modules/http-assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz", + "integrity": "sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==", "dev": true, - "engines": { - "node": ">=10" + "dependencies": { + "deep-equal": "~1.0.1", + "http-errors": "~1.8.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">= 0.8" } }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "node_modules/http-assert/node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", "dev": true, "dependencies": { - "call-bind": "^1.0.2" + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">= 0.6" } }, - "node_modules/is-what": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", - "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "node_modules/http-assert/node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", "dev": true }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "node_modules/http-assert/node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=0.6" } }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true + }, + "node_modules/http-errors": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.3.tgz", + "integrity": "sha512-ZTTX0MWrsQ2ZAhA1cejAwDLycFsd7I7nVtnkT3Ol0aqodaKW+0CTZDQ1uBv5whptCnc8e8HeRRJxRs0kmm/Qfw==", + "dev": true, "dependencies": { - "is-docker": "^2.0.0" + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.1.1", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.0" }, "engines": { - "node": ">=8" + "node": ">= 0.6" } }, - "node_modules/is-yarn-global": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", - "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", - "dev": true - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "node_modules/human-id": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/human-id/-/human-id-1.0.2.tgz", + "integrity": "sha512-UNopramDEhHJD+VR+ehk8rOslwSfByxPIZyJRfV739NDhN5LF1fa1MqnzKm2lGTQRjNrjK19Q5fhkgIfjlVUKw==", "dev": true }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "node_modules/istanbul": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz", - "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=", - "deprecated": "This module is no longer maintained, try this instead:\n npm i nyc\nVisit https://istanbul.js.org/integrations for other alternatives.", - "dev": true, - "dependencies": { - "abbrev": "1.0.x", - "async": "1.x", - "escodegen": "1.8.x", - "esprima": "2.7.x", - "glob": "^5.0.15", - "handlebars": "^4.0.1", - "js-yaml": "3.x", - "mkdirp": "0.5.x", - "nopt": "3.x", - "once": "1.x", - "resolve": "1.1.x", - "supports-color": "^3.1.0", - "which": "^1.1.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "istanbul": "lib/cli.js" - } - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "dev": true, "engines": { - "node": ">=8" + "node": ">=10.17.0" } }, - "node_modules/istanbul-lib-instrument": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.1.0.tgz", - "integrity": "sha512-czwUz525rkOFDJxfKK6mYfIs9zBKILyrZQxjz3ABhjQXhbhFsSbo1HW/BFcsDnfJYJWA6thRR5/TUY2qs5W99Q==", + "node_modules/husky": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/husky/-/husky-8.0.3.tgz", + "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", "dev": true, - "dependencies": { - "@babel/core": "^7.12.3", - "@babel/parser": "^7.14.7", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.2.0", - "semver": "^6.3.0" + "bin": { + "husky": "lib/bin.js" }, "engines": { - "node": ">=8" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" } }, - "node_modules/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dev": true, - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - }, + "node_modules/hyperdyperid": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hyperdyperid/-/hyperdyperid-1.2.0.tgz", + "integrity": "sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==", "engines": { - "node": ">=8" + "node": ">=10.18" } }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dev": true, "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" + "safer-buffer": ">= 2.1.2 < 3" }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/istanbul-lib-source-maps/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">= 4" } }, - "node_modules/istanbul-reports": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.3.tgz", - "integrity": "sha512-x9LtDVtfm/t1GFiLl3NffC7hz+I1ragvgX1P/Lg1NlIagifZDKUkuuaAxH/qpwj2IuEfD8G2Bs/UKp+sZ/pKkg==", + "node_modules/image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", "dev": true, - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" + "optional": true, + "bin": { + "image-size": "bin/image-size.js" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/istanbul/node_modules/glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", + "node_modules/immutable": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.4.tgz", + "integrity": "sha512-fsXeu4J4i6WNWSikpI88v/PcVflZz+6kMhUfIwc5SY+poQRPnaf5V7qds6SUyUN3cVxEzuCab7QIoLOQ+DQ1wA==", + "dev": true + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, "dependencies": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" }, "engines": { - "node": "*" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/istanbul/node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/istanbul/node_modules/resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=", - "dev": true - }, - "node_modules/istanbul/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "node_modules/import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", "dev": true, - "dependencies": { - "has-flag": "^1.0.0" - }, "engines": { - "node": ">=0.8.0" + "node": ">=4" } }, - "node_modules/jackspeak": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.3.tgz", - "integrity": "sha512-R2bUw+kVZFS/h1AZqBKrSgDmdmjApzgY0AlCPumopFiAlbUxE2gf+SCuBzQ0cP5hHmUmFYF5yw55T97Th5Kstg==", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true, "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" + "node": ">=0.8.19" } }, - "node_modules/jest": { - "version": "27.4.7", - "resolved": "https://registry.npmjs.org/jest/-/jest-27.4.7.tgz", - "integrity": "sha512-8heYvsx7nV/m8m24Vk26Y87g73Ba6ueUd0MWed/NXMhSZIm62U/llVbS0PJe1SHunbyXjJ/BqG1z9bFjGUIvTg==", + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, - "dependencies": { - "@jest/core": "^27.4.7", - "import-local": "^3.0.2", - "jest-cli": "^27.4.7" - }, - "bin": { - "jest": "bin/jest.js" - }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" - }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "node": ">=8" } }, - "node_modules/jest-changed-files": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-27.4.2.tgz", - "integrity": "sha512-/9x8MjekuzUQoPjDHbBiXbNEBauhrPU2ct7m8TfCg69ywt1y/N+yYwGh3gCpnqUS3klYWDU/lSNgv+JhoD2k1A==", + "node_modules/inflation": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/inflation/-/inflation-2.1.0.tgz", + "integrity": "sha512-t54PPJHG1Pp7VQvxyVCJ9mBbjG3Hqryges9bXoOO6GExCPa+//i/d5GSuFtpx3ALLd7lgIAur6zrIlBQyJuMlQ==", "dev": true, - "dependencies": { - "@jest/types": "^27.4.2", - "execa": "^5.0.0", - "throat": "^6.0.1" - }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 0.8.0" } }, - "node_modules/jest-circus": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.4.6.tgz", - "integrity": "sha512-UA7AI5HZrW4wRM72Ro80uRR2Fg+7nR0GESbSI/2M+ambbzVuA63mn5T1p3Z/wlhntzGpIG1xx78GP2YIkf6PhQ==", - "dev": true, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dependencies": { - "@jest/environment": "^27.4.6", - "@jest/test-result": "^27.4.6", - "@jest/types": "^27.4.2", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "expect": "^27.4.6", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.4.6", - "jest-matcher-utils": "^27.4.6", - "jest-message-util": "^27.4.6", - "jest-runtime": "^27.4.6", - "jest-snapshot": "^27.4.6", - "jest-util": "^27.4.2", - "pretty-format": "^27.4.6", - "slash": "^3.0.0", - "stack-utils": "^2.0.3", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "once": "^1.3.0", + "wrappy": "1" } }, - "node_modules/jest-circus/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/internal-slot": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.5.tgz", + "integrity": "sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "get-intrinsic": "^1.2.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">= 0.4" } }, - "node_modules/jest-cli": { - "version": "27.4.7", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.4.7.tgz", - "integrity": "sha512-zREYhvjjqe1KsGV15mdnxjThKNDgza1fhDT+iUsXWLCq3sxe9w5xnvyctcYVT5PcdLSjv7Y5dCwTS3FCF1tiuw==", - "dev": true, + "node_modules/ip": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", + "dev": true + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", "dependencies": { - "@jest/core": "^27.4.7", - "@jest/test-result": "^27.4.6", - "@jest/types": "^27.4.2", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "import-local": "^3.0.2", - "jest-config": "^27.4.7", - "jest-util": "^27.4.2", - "jest-validate": "^27.4.6", - "prompts": "^2.0.1", - "yargs": "^16.2.0" - }, - "bin": { - "jest": "bin/jest.js" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + "node": ">= 0.4" }, - "peerDependenciesMeta": { - "node-notifier": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-cli/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/is-array-buffer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.0", + "is-typed-array": "^1.1.10" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-cli/node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true }, - "node_modules/jest-cli/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "dev": true, "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "has-bigints": "^1.0.1" }, - "engines": { - "node": ">=10" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-config": { - "version": "27.4.7", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.4.7.tgz", - "integrity": "sha512-xz/o/KJJEedHMrIY9v2ParIoYSrSVY6IVeE4z5Z3i101GoA5XgfbJz+1C8EYPsv7u7f39dS8F9v46BHDhn0vlw==", + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, "dependencies": { - "@babel/core": "^7.8.0", - "@jest/test-sequencer": "^27.4.6", - "@jest/types": "^27.4.2", - "babel-jest": "^27.4.6", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.1", - "graceful-fs": "^4.2.4", - "jest-circus": "^27.4.6", - "jest-environment-jsdom": "^27.4.6", - "jest-environment-node": "^27.4.6", - "jest-get-type": "^27.4.0", - "jest-jasmine2": "^27.4.6", - "jest-regex-util": "^27.4.0", - "jest-resolve": "^27.4.6", - "jest-runner": "^27.4.6", - "jest-util": "^27.4.2", - "jest-validate": "^27.4.6", - "micromatch": "^4.0.4", - "pretty-format": "^27.4.6", - "slash": "^3.0.0" + "binary-extensions": "^2.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - }, - "peerDependencies": { - "ts-node": ">=9.0.0" - }, - "peerDependenciesMeta": { - "ts-node": { - "optional": true - } + "node": ">=8" } }, - "node_modules/jest-config/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-config/node_modules/ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", - "dev": true - }, - "node_modules/jest-diff": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.4.6.tgz", - "integrity": "sha512-zjaB0sh0Lb13VyPsd92V7HkqF6yKRH9vm33rwBt7rPYrpQvS1nCvlIy2pICbKta+ZjWngYLNn4cCK4nyZkjS/w==", + "node_modules/is-builtin-module": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", + "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", "dev": true, "dependencies": { - "chalk": "^4.0.0", - "diff-sequences": "^27.4.0", - "jest-get-type": "^27.4.0", - "pretty-format": "^27.4.6" + "builtin-modules": "^3.3.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-diff/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-docblock": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-27.4.0.tgz", - "integrity": "sha512-7TBazUdCKGV7svZ+gh7C8esAnweJoG+SvcF6Cjqj4l17zA2q1cMwx2JObSioubk317H+cjcHgP+7fTs60paulg==", + "node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", "dev": true, "dependencies": { - "detect-newline": "^3.0.0" + "ci-info": "^2.0.0" }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "bin": { + "is-ci": "bin.js" } }, - "node_modules/jest-each": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.4.6.tgz", - "integrity": "sha512-n6QDq8y2Hsmn22tRkgAk+z6MCX7MeVlAzxmZDshfS2jLcaBlyhpF3tZSJLR+kXmh23GEvS0ojMR8i6ZeRvpQcA==", + "node_modules/is-core-module": { + "version": "2.13.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", + "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", "dev": true, "dependencies": { - "@jest/types": "^27.4.2", - "chalk": "^4.0.0", - "jest-get-type": "^27.4.0", - "jest-util": "^27.4.2", - "pretty-format": "^27.4.6" + "has": "^1.0.3" }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-each/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-environment-jsdom": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.4.6.tgz", - "integrity": "sha512-o3dx5p/kHPbUlRvSNjypEcEtgs6LmvESMzgRFQE6c+Prwl2JLA4RZ7qAnxc5VM8kutsGRTB15jXeeSbJsKN9iA==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.4.6", - "@jest/fake-timers": "^27.4.6", - "@jest/types": "^27.4.2", - "@types/node": "*", - "jest-mock": "^27.4.6", - "jest-util": "^27.4.2", - "jsdom": "^16.6.0" + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "bin": { + "is-docker": "cli.js" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-environment-node": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.4.6.tgz", - "integrity": "sha512-yfHlZ9m+kzTKZV0hVfhVu6GuDxKAYeFHrfulmy7Jxwsq4V7+ZK7f+c0XP/tbVDMQW7E4neG2u147hFkuVz0MlQ==", + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true, - "dependencies": { - "@jest/environment": "^27.4.6", - "@jest/fake-timers": "^27.4.6", - "@jest/types": "^27.4.2", - "@types/node": "*", - "jest-mock": "^27.4.6", - "jest-util": "^27.4.2" - }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-get-type": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.4.0.tgz", - "integrity": "sha512-tk9o+ld5TWq41DkK14L4wox4s2D9MtTpKaAVzXfr5CUKm5ZK2ExcaFE0qls2W71zE/6R2TxxrK9w2r6svAFDBQ==", - "dev": true, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=8" } }, - "node_modules/jest-haste-map": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.4.6.tgz", - "integrity": "sha512-0tNpgxg7BKurZeFkIOvGCkbmOHbLFf4LUQOxrQSMjvrQaQe3l6E8x6jYC1NuWkGo5WDdbr8FEzUxV2+LWNawKQ==", - "dev": true, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", "dependencies": { - "@jest/types": "^27.4.2", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^27.4.0", - "jest-serializer": "^27.4.0", - "jest-util": "^27.4.2", - "jest-worker": "^27.4.6", - "micromatch": "^4.0.4", - "walker": "^1.0.7" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 0.4" }, - "optionalDependencies": { - "fsevents": "^2.3.2" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-jasmine2": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.4.6.tgz", - "integrity": "sha512-uAGNXF644I/whzhsf7/qf74gqy9OuhvJ0XYp8SDecX2ooGeaPnmJMjXjKt0mqh1Rl5dtRGxJgNrHlBQIBfS5Nw==", + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "dependencies": { - "@jest/environment": "^27.4.6", - "@jest/source-map": "^27.4.0", - "@jest/test-result": "^27.4.6", - "@jest/types": "^27.4.2", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^27.4.6", - "is-generator-fn": "^2.0.0", - "jest-each": "^27.4.6", - "jest-matcher-utils": "^27.4.6", - "jest-message-util": "^27.4.6", - "jest-runtime": "^27.4.6", - "jest-snapshot": "^27.4.6", - "jest-util": "^27.4.2", - "pretty-format": "^27.4.6", - "throat": "^6.0.1" + "is-extglob": "^2.1.1" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-jasmine2/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/is-installed-globally": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.3.2.tgz", + "integrity": "sha512-wZ8x1js7Ia0kecP/CHM/3ABkAmujX7WPvQk6uu3Fly/Mk44pySulQpnHG46OMjHGXApINnV4QhY3SWnECO2z5g==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "global-dirs": "^2.0.1", + "is-path-inside": "^3.0.1" }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-leak-detector": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.4.6.tgz", - "integrity": "sha512-kkaGixDf9R7CjHm2pOzfTxZTQQQ2gHTIWKY/JZSiYTc90bZp8kSZnUMS3uLAfwTZwc0tcMRoEX74e14LG1WapA==", + "node_modules/is-installed-globally/node_modules/global-dirs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-2.1.0.tgz", + "integrity": "sha512-MG6kdOUh/xBnyo9cJFeIKkLEc1AyFq42QTU4XiX51i2NEdxLxLWXIjEjmqKeSuKR7pAZjTqUVoT2b2huxVLgYQ==", "dev": true, "dependencies": { - "jest-get-type": "^27.4.0", - "pretty-format": "^27.4.6" + "ini": "1.3.7" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-matcher-utils": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.4.6.tgz", - "integrity": "sha512-XD4PKT3Wn1LQnRAq7ZsTI0VRuEc9OrCPFiO1XL7bftTGmfNF0DcEwMHRgqiu7NGf8ZoZDREpGrCniDkjt79WbA==", - "dev": true, + "node_modules/is-installed-globally/node_modules/ini": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.7.tgz", + "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==", + "dev": true + }, + "node_modules/is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", + "dev": true + }, + "node_modules/is-nan": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/is-nan/-/is-nan-1.3.2.tgz", + "integrity": "sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==", "dependencies": { - "chalk": "^4.0.0", - "jest-diff": "^27.4.6", - "jest-get-type": "^27.4.0", - "pretty-format": "^27.4.6" + "call-bind": "^1.0.0", + "define-properties": "^1.1.3" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-matcher-utils/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-message-util": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.4.6.tgz", - "integrity": "sha512-0p5szriFU0U74czRSFjH6RyS7UYIAkn/ntwMuOwTGWrQIOh5NzXXrq72LOqIkJKKvFbPq+byZKuBz78fjBERBA==", + "node_modules/is-npm": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-4.0.0.tgz", + "integrity": "sha512-96ECIfh9xtDDlPylNPXhzjsykHsMJZ18ASpaWzQyBr4YRTcVjUvzaHayDAES2oU/3KpljhHUjtSRNiDwi0F0ig==", "dev": true, - "dependencies": { - "@babel/code-frame": "^7.12.13", - "@jest/types": "^27.4.2", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "micromatch": "^4.0.4", - "pretty-format": "^27.4.6", - "slash": "^3.0.0", - "stack-utils": "^2.0.3" - }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=8" } }, - "node_modules/jest-message-util/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-mock": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.4.6.tgz", - "integrity": "sha512-kvojdYRkst8iVSZ1EJ+vc1RRD9llueBjKzXzeCytH3dMM7zvPV/ULcfI2nr0v0VUgm3Bjt3hBCQvOeaBz+ZTHw==", + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", "dev": true, - "dependencies": { - "@jest/types": "^27.4.2", - "@types/node": "*" - }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=8" } }, - "node_modules/jest-pnp-resolver": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", - "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, "engines": { - "node": ">=6" - }, - "peerDependencies": { - "jest-resolve": "*" - }, - "peerDependenciesMeta": { - "jest-resolve": { - "optional": true - } + "node": ">=8" } }, - "node_modules/jest-regex-util": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.4.0.tgz", - "integrity": "sha512-WeCpMpNnqJYMQoOjm1nTtsgbR4XHAk1u00qDoNBQoykM280+/TmgA5Qh5giC1ecy6a5d4hbSsHzpBtu5yvlbEg==", + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", "dev": true, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-resolve": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.4.6.tgz", - "integrity": "sha512-SFfITVApqtirbITKFAO7jOVN45UgFzcRdQanOFzjnbd+CACDoyeX7206JyU92l4cRr73+Qy/TlW51+4vHGt+zw==", - "dev": true, - "dependencies": { - "@jest/types": "^27.4.2", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.4.6", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^27.4.2", - "jest-validate": "^27.4.6", - "resolve": "^1.20.0", - "resolve.exports": "^1.1.0", - "slash": "^3.0.0" - }, + "node_modules/is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-resolve-dependencies": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.4.6.tgz", - "integrity": "sha512-W85uJZcFXEVZ7+MZqIPCscdjuctruNGXUZ3OHSXOfXR9ITgbUKeHj+uGcies+0SsvI5GtUfTw4dY7u9qjTvQOw==", + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "dependencies": { - "@jest/types": "^27.4.2", - "jest-regex-util": "^27.4.0", - "jest-snapshot": "^27.4.6" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-resolve/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "call-bind": "^1.0.2" }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-runner": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.4.6.tgz", - "integrity": "sha512-IDeFt2SG4DzqalYBZRgbbPmpwV3X0DcntjezPBERvnhwKGWTW7C5pbbA5lVkmvgteeNfdd/23gwqv3aiilpYPg==", - "dev": true, - "dependencies": { - "@jest/console": "^27.4.6", - "@jest/environment": "^27.4.6", - "@jest/test-result": "^27.4.6", - "@jest/transform": "^27.4.6", - "@jest/types": "^27.4.2", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.8.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-docblock": "^27.4.0", - "jest-environment-jsdom": "^27.4.6", - "jest-environment-node": "^27.4.6", - "jest-haste-map": "^27.4.6", - "jest-leak-detector": "^27.4.6", - "jest-message-util": "^27.4.6", - "jest-resolve": "^27.4.6", - "jest-runtime": "^27.4.6", - "jest-util": "^27.4.2", - "jest-worker": "^27.4.6", - "source-map-support": "^0.5.6", - "throat": "^6.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runner/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-runtime": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.4.6.tgz", - "integrity": "sha512-eXYeoR/MbIpVDrjqy5d6cGCFOYBFFDeKaNWqTp0h6E74dK0zLHzASQXJpl5a2/40euBmKnprNLJ0Kh0LCndnWQ==", - "dev": true, - "dependencies": { - "@jest/environment": "^27.4.6", - "@jest/fake-timers": "^27.4.6", - "@jest/globals": "^27.4.6", - "@jest/source-map": "^27.4.0", - "@jest/test-result": "^27.4.6", - "@jest/transform": "^27.4.6", - "@jest/types": "^27.4.2", - "chalk": "^4.0.0", - "cjs-module-lexer": "^1.0.0", - "collect-v8-coverage": "^1.0.0", - "execa": "^5.0.0", - "glob": "^7.1.3", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^27.4.6", - "jest-message-util": "^27.4.6", - "jest-mock": "^27.4.6", - "jest-regex-util": "^27.4.0", - "jest-resolve": "^27.4.6", - "jest-snapshot": "^27.4.6", - "jest-util": "^27.4.2", - "slash": "^3.0.0", - "strip-bom": "^4.0.0" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/jest-runtime/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/is-subdir": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-subdir/-/is-subdir-1.2.0.tgz", + "integrity": "sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "better-path-resolve": "1.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=4" } }, - "node_modules/jest-serializer": { - "version": "27.4.0", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-27.4.0.tgz", - "integrity": "sha512-RDhpcn5f1JYTX2pvJAGDcnsNTnsV9bjYPU8xcV+xPwOXnUPOQwf4ZEuiU6G9H1UztH+OapMgu/ckEVwO87PwnQ==", + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dev": true, "dependencies": { - "@types/node": "*", - "graceful-fs": "^4.2.4" + "has-symbols": "^1.0.2" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-snapshot": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.4.6.tgz", - "integrity": "sha512-fafUCDLQfzuNP9IRcEqaFAMzEe7u5BF7mude51wyWv7VRex60WznZIC7DfKTgSIlJa8aFzYmXclmN328aqSDmQ==", + "node_modules/is-text-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", + "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=", "dev": true, "dependencies": { - "@babel/core": "^7.7.2", - "@babel/generator": "^7.7.2", - "@babel/plugin-syntax-typescript": "^7.7.2", - "@babel/traverse": "^7.7.2", - "@babel/types": "^7.0.0", - "@jest/transform": "^27.4.6", - "@jest/types": "^27.4.2", - "@types/babel__traverse": "^7.0.4", - "@types/prettier": "^2.1.5", - "babel-preset-current-node-syntax": "^1.0.0", - "chalk": "^4.0.0", - "expect": "^27.4.6", - "graceful-fs": "^4.2.4", - "jest-diff": "^27.4.6", - "jest-get-type": "^27.4.0", - "jest-haste-map": "^27.4.6", - "jest-matcher-utils": "^27.4.6", - "jest-message-util": "^27.4.6", - "jest-util": "^27.4.2", - "natural-compare": "^1.4.0", - "pretty-format": "^27.4.6", - "semver": "^7.3.2" + "text-extensions": "^1.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-snapshot/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, + "node_modules/is-typed-array": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "which-typed-array": "^1.1.11" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-snapshot/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" + "call-bind": "^1.0.2" }, - "engines": { - "node": ">=10" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jest-snapshot/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "node_modules/is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", "dev": true }, - "node_modules/jest-util": { - "version": "27.4.2", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.4.2.tgz", - "integrity": "sha512-YuxxpXU6nlMan9qyLuxHaMMOzXAl5aGZWCSzben5DhLHemYQxCc4YK+4L3ZrCutT8GPQ+ui9k5D8rUJoDioMnA==", + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", "dev": true, - "dependencies": { - "@jest/types": "^27.4.2", - "@types/node": "*", - "chalk": "^4.0.0", - "ci-info": "^3.2.0", - "graceful-fs": "^4.2.4", - "picomatch": "^2.2.3" - }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=0.10.0" } }, - "node_modules/jest-util/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "is-docker": "^2.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=8" } }, - "node_modules/jest-util/node_modules/ci-info": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.3.0.tgz", - "integrity": "sha512-riT/3vI5YpVH6/qomlDnJow6TBee2PBKSEpx3O32EGPYbWGIRsIlGRms3Sm74wYE1JMo8RnO04Hb12+v1J5ICw==", + "node_modules/is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==", "dev": true }, - "node_modules/jest-validate": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.4.6.tgz", - "integrity": "sha512-872mEmCPVlBqbA5dToC57vA3yJaMRfIdpCoD3cyHWJOMx+SJwLNw0I71EkWs41oza/Er9Zno9XuTkRYCPDUJXQ==", + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "node_modules/isbinaryfile": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.0.tgz", + "integrity": "sha512-UDdnyGvMajJUWCkib7Cei/dvyJrrvo4FIrsvSFWdPpXSUorzXrDJ0S+X5Q4ZlasfPjca4yqCNNsjbCeiy8FFeg==", "dev": true, - "dependencies": { - "@jest/types": "^27.4.2", - "camelcase": "^6.2.0", - "chalk": "^4.0.0", - "jest-get-type": "^27.4.0", - "leven": "^3.1.0", - "pretty-format": "^27.4.6" - }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" } }, - "node_modules/jest-validate/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", + "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/jest-validate/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", "supports-color": "^7.1.0" }, "engines": { "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/jest-watcher": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.4.6.tgz", - "integrity": "sha512-yKQ20OMBiCDigbD0quhQKLkBO+ObGN79MO4nT7YaCuQ5SM+dkBNWE8cZX0FjU6czwMvWw6StWbe+Wv4jJPJ+fw==", + "node_modules/istanbul-lib-report/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, "dependencies": { - "@jest/test-result": "^27.4.6", - "@jest/types": "^27.4.2", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "jest-util": "^27.4.2", - "string-length": "^4.0.1" + "yallist": "^4.0.0" }, "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + "node": ">=10" } }, - "node_modules/jest-watcher/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/istanbul-lib-report/node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "semver": "^7.5.3" }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jest-worker": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.6.tgz", - "integrity": "sha512-gHWJF/6Xi5CTG5QCvROr6GcmpIqNYpDJyc8A1h/DyXqH1tD6SnRCM0d3U5msV31D2LB/U+E0M+W4oyvKV44oNw==", + "node_modules/istanbul-lib-report/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" }, "engines": { - "node": ">= 10.13.0" + "node": ">=10" } }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "node_modules/istanbul-lib-report/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/istanbul-reports": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.3.tgz", + "integrity": "sha512-x9LtDVtfm/t1GFiLl3NffC7hz+I1ragvgX1P/Lg1NlIagifZDKUkuuaAxH/qpwj2IuEfD8G2Bs/UKp+sZ/pKkg==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" }, "engines": { - "node": ">=10" + "node": ">=8" + } + }, + "node_modules/jackspeak": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.3.tgz", + "integrity": "sha512-R2bUw+kVZFS/h1AZqBKrSgDmdmjApzgY0AlCPumopFiAlbUxE2gf+SCuBzQ0cP5hHmUmFYF5yw55T97Th5Kstg==", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" }, "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/js-base64": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", - "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", - "dev": true - }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -11930,171 +8795,45 @@ "jsdoc-api": "^7.1.0", "jsdoc-parse": "^6.0.1", "walk-back": "^5.1.0" - }, - "bin": { - "jsdoc2md": "bin/cli.js" - }, - "engines": { - "node": ">=12.17" - } - }, - "node_modules/jsdoc/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/jsdoc/node_modules/marked": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.10.tgz", - "integrity": "sha512-+QvuFj0nGgO970fySghXGmuw+Fd0gD2x3+MqCWLIPf5oxdv1Ka6b2q+z9RP01P/IaKPMEramy+7cNy/Lw8c3hw==", - "dev": true, - "bin": { - "marked": "bin/marked.js" - }, - "engines": { - "node": ">= 12" - } - }, - "node_modules/jsdoc/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jsdom": { - "version": "16.7.0", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", - "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", - "dev": true, - "dependencies": { - "abab": "^2.0.5", - "acorn": "^8.2.4", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", - "escodegen": "^2.0.0", - "form-data": "^3.0.0", - "html-encoding-sniffer": "^2.0.1", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-potential-custom-element-name": "^1.0.1", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.5.0", - "ws": "^7.4.6", - "xml-name-validator": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "canvas": "^2.5.0" - }, - "peerDependenciesMeta": { - "canvas": { - "optional": true - } - } - }, - "node_modules/jsdom/node_modules/escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", - "dev": true, - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/jsdom/node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, + }, "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" + "jsdoc2md": "bin/cli.js" }, "engines": { - "node": ">=4" + "node": ">=12.17" } }, - "node_modules/jsdom/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "node_modules/jsdoc/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "dev": true, "engines": { - "node": ">=4.0" + "node": ">=8" } }, - "node_modules/jsdom/node_modules/form-data": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", - "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "node_modules/jsdoc/node_modules/marked": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.10.tgz", + "integrity": "sha512-+QvuFj0nGgO970fySghXGmuw+Fd0gD2x3+MqCWLIPf5oxdv1Ka6b2q+z9RP01P/IaKPMEramy+7cNy/Lw8c3hw==", "dev": true, - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "bin": { + "marked": "bin/marked.js" }, "engines": { - "node": ">= 6" - } - }, - "node_modules/jsdom/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" + "node": ">= 12" } }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "node_modules/jsdoc/node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, "bin": { - "jsesc": "bin/jsesc" + "mkdirp": "bin/cmd.js" }, "engines": { - "node": ">=4" + "node": ">=10" } }, "node_modules/json-buffer": { @@ -12173,1772 +8912,1488 @@ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", "dev": true }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, - "node_modules/json5": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.2.tgz", - "integrity": "sha512-46Tk9JiOL2z7ytNQWFLpj99RZkVgeHf87yGQKsIkaPz1qSH9UczKH1rO7K3wgRselo0tYMUNfecYpm/p1vC7tQ==", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/json5-jest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5-jest/-/json5-jest-1.0.1.tgz", - "integrity": "sha512-3LwSMrhlQtbQQUUa6cImz+Aga8xs7LZCmS/Ke+Kgu6ZmyWOaGBnoUI1jnhEEJ3AM90k40oTGr/EnFchtv261mQ==", - "dev": true, - "dependencies": { - "json5": "^1.0.1" - }, - "engines": { - "node": ">= 6.9.0", - "npm": ">= 2.x" - } - }, - "node_modules/json5-jest/node_modules/json5": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", - "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", - "dev": true, - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/jsonc-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", - "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==" - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz", - "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", - "dev": true, - "engines": [ - "node >= 0.2.0" - ] - }, - "node_modules/JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", - "dev": true, - "dependencies": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - }, - "bin": { - "JSONStream": "bin.js" - }, - "engines": { - "node": "*" - } - }, - "node_modules/keyv": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", - "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", - "dev": true, - "dependencies": { - "json-buffer": "3.0.0" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/klaw": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/klaw/-/klaw-4.0.1.tgz", - "integrity": "sha512-pgsE40/SvC7st04AHiISNewaIMUbY5V/K8b21ekiPiFoYs/EYSdsGa+FJArB1d441uq4Q8zZyIxvAzkGNlBdRw==", - "dev": true, - "engines": { - "node": ">=14.14.0" - } - }, - "node_modules/klaw-sync": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz", - "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==", - "dependencies": { - "graceful-fs": "^4.1.11" - } - }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/latest-version": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", - "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", - "dev": true, - "dependencies": { - "package-json": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/less": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/less/-/less-4.1.2.tgz", - "integrity": "sha512-EoQp/Et7OSOVu0aJknJOtlXZsnr8XE8KwuzTHOLeVSEx8pVWUICc8Q0VYRHgzyjX78nMEyC/oztWFbgyhtNfDA==", - "dev": true, - "dependencies": { - "copy-anything": "^2.0.1", - "parse-node-version": "^1.0.1", - "tslib": "^2.3.0" - }, - "bin": { - "lessc": "bin/lessc" - }, - "engines": { - "node": ">=6" - }, - "optionalDependencies": { - "errno": "^0.1.1", - "graceful-fs": "^4.1.2", - "image-size": "~0.5.0", - "make-dir": "^2.1.0", - "mime": "^1.4.1", - "needle": "^2.5.2", - "source-map": "~0.6.0" - } - }, - "node_modules/less/node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", - "dev": true, - "optional": true, - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/less/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true, - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/less/node_modules/semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true, - "optional": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/less/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/less/node_modules/tslib": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", - "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", "dev": true }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, + "node_modules/json5": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.2.tgz", + "integrity": "sha512-46Tk9JiOL2z7ytNQWFLpj99RZkVgeHf87yGQKsIkaPz1qSH9UczKH1rO7K3wgRselo0tYMUNfecYpm/p1vC7tQ==", + "bin": { + "json5": "lib/cli.js" + }, "engines": { "node": ">=6" } }, - "node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "node_modules/json5-jest": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5-jest/-/json5-jest-1.0.1.tgz", + "integrity": "sha512-3LwSMrhlQtbQQUUa6cImz+Aga8xs7LZCmS/Ke+Kgu6ZmyWOaGBnoUI1jnhEEJ3AM90k40oTGr/EnFchtv261mQ==", "dev": true, "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" + "json5": "^1.0.1" }, "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lilconfig": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz", - "integrity": "sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", - "dev": true - }, - "node_modules/linkify-it": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", - "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", - "dev": true, - "dependencies": { - "uc.micro": "^1.0.1" + "node": ">= 6.9.0", + "npm": ">= 2.x" } }, - "node_modules/lint-staged": { - "version": "12.3.1", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.3.1.tgz", - "integrity": "sha512-Ocht/eT+4/siWOZDJpNUKcKX2UeWW/pDbohJ4gRsrafAjBi79JK8kiNVk2ciIVNKdw0Q4ABptl2nr6uQAlRImw==", + "node_modules/json5-jest/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", "dev": true, "dependencies": { - "cli-truncate": "^3.1.0", - "colorette": "^2.0.16", - "commander": "^8.3.0", - "debug": "^4.3.3", - "execa": "^5.1.1", - "lilconfig": "2.0.4", - "listr2": "^4.0.1", - "micromatch": "^4.0.4", - "normalize-path": "^3.0.0", - "object-inspect": "^1.12.0", - "string-argv": "^0.3.1", - "supports-color": "^9.2.1", - "yaml": "^1.10.2" + "minimist": "^1.2.0" }, "bin": { - "lint-staged": "bin/lint-staged.js" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/lint-staged" + "json5": "lib/cli.js" } }, - "node_modules/lint-staged/node_modules/supports-color": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.2.1.tgz", - "integrity": "sha512-Obv7ycoCTG51N7y175StI9BlAXrmgZrFhZOb0/PyjHBher/NmsdBgbbQ1Inhq+gIhz6+7Gb+jWF2Vqi7Mf1xnQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } + "node_modules/jsonc-parser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", + "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==" }, - "node_modules/listr2": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-4.0.1.tgz", - "integrity": "sha512-D65Nl+zyYHL2jQBGmxtH/pU8koPZo5C8iCNE8EoB04RwPgQG1wuaKwVbeZv9LJpiH4Nxs0FCp+nNcG8OqpniiA==", - "dev": true, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dependencies": { - "cli-truncate": "^2.1.0", - "colorette": "^2.0.16", - "log-update": "^4.0.0", - "p-map": "^4.0.0", - "rfdc": "^1.3.0", - "rxjs": "^7.5.2", - "through": "^2.3.8", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "enquirer": ">= 2.3.0 < 3" + "universalify": "^2.0.0" }, - "peerDependenciesMeta": { - "enquirer": { - "optional": true - } + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/listr2/node_modules/cli-truncate": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", - "dev": true, - "dependencies": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" - }, - "engines": { - "node": ">=8" - }, + "node_modules/jsonify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.1.tgz", + "integrity": "sha512-2/Ki0GcmuqSrgFyelQq9M05y7PS0mEwuIzrf3f1fPqkVDVRvZrPZtVSMHxdgo8Aq0sxAOb/cr2aqqA3LeWHVPg==", "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/listr2/node_modules/slice-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=8" - } + "engines": [ + "node >= 0.2.0" + ] }, - "node_modules/livereload": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/livereload/-/livereload-0.9.3.tgz", - "integrity": "sha512-q7Z71n3i4X0R9xthAryBdNGVGAO2R5X+/xXpmKeuPMrteg+W2U8VusTKV3YiJbXZwKsOlFlHe+go6uSNjfxrZw==", + "node_modules/JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", "dev": true, "dependencies": { - "chokidar": "^3.5.0", - "livereload-js": "^3.3.1", - "opts": ">= 1.2.0", - "ws": "^7.4.3" + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" }, "bin": { - "livereload": "bin/livereload.js" + "JSONStream": "bin.js" }, "engines": { - "node": ">=8.0.0" + "node": "*" } }, - "node_modules/livereload-js": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-3.3.2.tgz", - "integrity": "sha512-w677WnINxFkuixAoUEXOStewzLYGI76XVag+0JWMMEyjJQKs0ibWZMxkTlB96Lm3EjZ7IeOxVziBEbtxVQqQZA==", - "dev": true - }, - "node_modules/load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "node_modules/keygrip": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", + "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", "dev": true, "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" + "tsscmp": "1.0.6" }, "engines": { - "node": ">=4" + "node": ">= 0.6" } }, - "node_modules/load-json-file/node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "node_modules/keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", "dev": true, "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" + "json-buffer": "3.0.0" } }, - "node_modules/load-json-file/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/load-json-file/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "node_modules/klaw": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-4.0.1.tgz", + "integrity": "sha512-pgsE40/SvC7st04AHiISNewaIMUbY5V/K8b21ekiPiFoYs/EYSdsGa+FJArB1d441uq4Q8zZyIxvAzkGNlBdRw==", "dev": true, "engines": { - "node": ">=4" + "node": ">=14.14.0" } }, - "node_modules/load-yaml-file": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/load-yaml-file/-/load-yaml-file-0.2.0.tgz", - "integrity": "sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==", + "node_modules/klaw-sync": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz", + "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==", + "dependencies": { + "graceful-fs": "^4.1.11" + } + }, + "node_modules/koa": { + "version": "2.14.2", + "resolved": "https://registry.npmjs.org/koa/-/koa-2.14.2.tgz", + "integrity": "sha512-VFI2bpJaodz6P7x2uyLiX6RLYpZmOJqNmoCst/Yyd7hQlszyPwG/I9CQJ63nOtKSxpt5M7NH67V6nJL2BwCl7g==", "dev": true, "dependencies": { - "graceful-fs": "^4.1.5", - "js-yaml": "^3.13.0", - "pify": "^4.0.1", - "strip-bom": "^3.0.0" + "accepts": "^1.3.5", + "cache-content-type": "^1.0.0", + "content-disposition": "~0.5.2", + "content-type": "^1.0.4", + "cookies": "~0.8.0", + "debug": "^4.3.2", + "delegates": "^1.0.0", + "depd": "^2.0.0", + "destroy": "^1.0.4", + "encodeurl": "^1.0.2", + "escape-html": "^1.0.3", + "fresh": "~0.5.2", + "http-assert": "^1.3.0", + "http-errors": "^1.6.3", + "is-generator-function": "^1.0.7", + "koa-compose": "^4.1.0", + "koa-convert": "^2.0.0", + "on-finished": "^2.3.0", + "only": "~0.0.2", + "parseurl": "^1.3.2", + "statuses": "^1.5.0", + "type-is": "^1.6.16", + "vary": "^1.1.2" }, "engines": { - "node": ">=6" + "node": "^4.8.4 || ^6.10.1 || ^7.10.1 || >= 8.1.4" } }, - "node_modules/load-yaml-file/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "node_modules/koa-compose": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz", + "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==", + "dev": true + }, + "node_modules/koa-convert": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/koa-convert/-/koa-convert-2.0.0.tgz", + "integrity": "sha512-asOvN6bFlSnxewce2e/DK3p4tltyfC4VM7ZwuTuepI7dEQVcvpyFuBcEARu1+Hxg8DIwytce2n7jrZtRlPrARA==", "dev": true, + "dependencies": { + "co": "^4.6.0", + "koa-compose": "^4.1.0" + }, "engines": { - "node": ">=6" + "node": ">= 10" } }, - "node_modules/load-yaml-file/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "node_modules/koa-etag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/koa-etag/-/koa-etag-4.0.0.tgz", + "integrity": "sha512-1cSdezCkBWlyuB9l6c/IFoe1ANCDdPBxkDkRiaIup40xpUub6U/wwRXoKBZw/O5BifX9OlqAjYnDyzM6+l+TAg==", "dev": true, - "engines": { - "node": ">=4" + "dependencies": { + "etag": "^1.8.1" } }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "node_modules/koa-send": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/koa-send/-/koa-send-5.0.1.tgz", + "integrity": "sha512-tmcyQ/wXXuxpDxyNXv5yNNkdAMdFRqwtegBXUaowiQzUKqJehttS0x2j0eOZDQAyloAth5w6wwBImnFzkUz3pQ==", "dev": true, "dependencies": { - "p-locate": "^5.0.0" + "debug": "^4.1.1", + "http-errors": "^1.7.3", + "resolve-path": "^1.4.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 8" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" - }, - "node_modules/lodash-es": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" - }, - "node_modules/lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", - "dev": true - }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", - "peer": true - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", - "dev": true - }, - "node_modules/lodash.isequal": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", - "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", - "peer": true - }, - "node_modules/lodash.ismatch": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", - "integrity": "sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc=", - "dev": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/lodash.omit": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz", - "integrity": "sha1-brGa5aHuHdnfC5aeZs4Lf6MLXmA=", - "dev": true - }, - "node_modules/lodash.padend": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz", - "integrity": "sha1-U8y6BH0G4VjTEfRdpiX05J5vFm4=", - "dev": true - }, - "node_modules/lodash.pick": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", - "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=", - "dev": true - }, - "node_modules/lodash.startcase": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz", - "integrity": "sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==", - "dev": true - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "node_modules/koa-static": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/koa-static/-/koa-static-5.0.0.tgz", + "integrity": "sha512-UqyYyH5YEXaJrf9S8E23GoJFQZXkBVJ9zYYMPGz919MSX1KuvAcycIuS0ci150HCoPf4XQVhQ84Qf8xRPWxFaQ==", "dev": true, "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" + "debug": "^3.1.0", + "koa-send": "^5.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 7.6.0" } }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/koa-static/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, + "ms": "^2.1.1" + } + }, + "node_modules/koa/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">= 0.8" } }, - "node_modules/log-update": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", - "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "node_modules/latest-version": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", "dev": true, "dependencies": { - "ansi-escapes": "^4.3.0", - "cli-cursor": "^3.1.0", - "slice-ansi": "^4.0.0", - "wrap-ansi": "^6.2.0" + "package-json": "^6.3.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/log-update/node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "node_modules/less": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/less/-/less-4.1.2.tgz", + "integrity": "sha512-EoQp/Et7OSOVu0aJknJOtlXZsnr8XE8KwuzTHOLeVSEx8pVWUICc8Q0VYRHgzyjX78nMEyC/oztWFbgyhtNfDA==", "dev": true, "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" + "copy-anything": "^2.0.1", + "parse-node-version": "^1.0.1", + "tslib": "^2.3.0" + }, + "bin": { + "lessc": "bin/lessc" }, "engines": { - "node": ">=10" + "node": ">=6" }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" + "optionalDependencies": { + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^2.5.2", + "source-map": "~0.6.0" } }, - "node_modules/log-update/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "node_modules/less/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, + "optional": true, "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "pify": "^4.0.1", + "semver": "^5.6.0" }, "engines": { - "node": ">=8" + "node": ">=6" } }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "node_modules/less/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true, - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" + "optional": true, + "engines": { + "node": ">=6" } }, - "node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dependencies": { - "tslib": "^2.0.3" + "node_modules/less/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "optional": true, + "bin": { + "semver": "bin/semver" } }, - "node_modules/lowercase-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", - "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "node_modules/less/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, + "optional": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "node_modules/lighthouse-logger": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/lighthouse-logger/-/lighthouse-logger-1.4.2.tgz", + "integrity": "sha512-gPWxznF6TKmUHrOQjlVo2UbaL2EJ71mb2CCeRs/2qBpi4L/g4LUVc9+3lKQ6DTUZwJswfM7ainGrLO1+fOqa2g==", "dev": true, "dependencies": { - "yallist": "^3.0.2" + "debug": "^2.6.9", + "marky": "^1.2.2" } }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "node_modules/lighthouse-logger/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "ms": "2.0.0" } }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "node_modules/lighthouse-logger/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "dev": true - }, - "node_modules/make-fetch-happen": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", - "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", - "dev": true, - "dependencies": { - "agentkeepalive": "^4.1.3", - "cacache": "^15.2.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^6.0.0", - "minipass": "^3.1.3", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.3.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.2", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.0.0", - "ssri": "^8.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/make-fetch-happen/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + }, + "node_modules/lilconfig": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.4.tgz", + "integrity": "sha512-bfTIN7lEsiooCocSISTWXkiWJkRqtL9wYtYy+8EK3Y41qh3mpwPU0ycTOgjdY9ErwXCc8QyrQp82bdL0Xkm9yA==", "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, "engines": { "node": ">=10" } }, - "node_modules/make-fetch-happen/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "node_modules/lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", "dev": true }, - "node_modules/makeerror": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", - "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "node_modules/linkify-it": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", + "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", "dev": true, "dependencies": { - "tmpl": "1.0.5" + "uc.micro": "^1.0.1" } }, - "node_modules/map-obj": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.2.1.tgz", - "integrity": "sha512-+WA2/1sPmDj1dlvvJmB5G6JKfY9dpn7EVBUL06+y6PoljPkh+6V1QihwxNkbcGxCRjt2b0F9K0taiCuo7MbdFQ==", + "node_modules/lint-staged": { + "version": "12.3.1", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-12.3.1.tgz", + "integrity": "sha512-Ocht/eT+4/siWOZDJpNUKcKX2UeWW/pDbohJ4gRsrafAjBi79JK8kiNVk2ciIVNKdw0Q4ABptl2nr6uQAlRImw==", "dev": true, + "dependencies": { + "cli-truncate": "^3.1.0", + "colorette": "^2.0.16", + "commander": "^8.3.0", + "debug": "^4.3.3", + "execa": "^5.1.1", + "lilconfig": "2.0.4", + "listr2": "^4.0.1", + "micromatch": "^4.0.4", + "normalize-path": "^3.0.0", + "object-inspect": "^1.12.0", + "string-argv": "^0.3.1", + "supports-color": "^9.2.1", + "yaml": "^1.10.2" + }, + "bin": { + "lint-staged": "bin/lint-staged.js" + }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/lint-staged" } }, - "node_modules/markdown-it": { - "version": "12.3.2", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", - "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", + "node_modules/lint-staged/node_modules/supports-color": { + "version": "9.2.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.2.1.tgz", + "integrity": "sha512-Obv7ycoCTG51N7y175StI9BlAXrmgZrFhZOb0/PyjHBher/NmsdBgbbQ1Inhq+gIhz6+7Gb+jWF2Vqi7Mf1xnQ==", "dev": true, - "dependencies": { - "argparse": "^2.0.1", - "entities": "~2.1.0", - "linkify-it": "^3.0.1", - "mdurl": "^1.0.1", - "uc.micro": "^1.0.5" + "engines": { + "node": ">=12" }, - "bin": { - "markdown-it": "bin/markdown-it.js" + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/markdown-it-anchor": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.4.1.tgz", - "integrity": "sha512-sLODeRetZ/61KkKLJElaU3NuU2z7MhXf12Ml1WJMSdwpngeofneCRF+JBbat8HiSqhniOMuTemXMrsI7hA6XyA==", + "node_modules/lint-staged/node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "dev": true, - "peerDependencies": { - "@types/markdown-it": "*", - "markdown-it": "*" + "engines": { + "node": ">= 6" } }, - "node_modules/markdown-it/node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "node_modules/marked": { - "version": "1.2.9", - "resolved": "https://registry.npmjs.org/marked/-/marked-1.2.9.tgz", - "integrity": "sha512-H8lIX2SvyitGX+TRdtS06m1jHMijKN/XjfH6Ooii9fvxMlh8QdqBfBDkGUpMWH2kQNrtixjzYUa3SH8ROTgRRw==", + "node_modules/listr2": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-4.0.1.tgz", + "integrity": "sha512-D65Nl+zyYHL2jQBGmxtH/pU8koPZo5C8iCNE8EoB04RwPgQG1wuaKwVbeZv9LJpiH4Nxs0FCp+nNcG8OqpniiA==", "dev": true, - "bin": { - "marked": "bin/marked" + "dependencies": { + "cli-truncate": "^2.1.0", + "colorette": "^2.0.16", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rfdc": "^1.3.0", + "rxjs": "^7.5.2", + "through": "^2.3.8", + "wrap-ansi": "^7.0.0" }, "engines": { - "node": ">= 8.16.2" + "node": ">=12" + }, + "peerDependencies": { + "enquirer": ">= 2.3.0 < 3" + }, + "peerDependenciesMeta": { + "enquirer": { + "optional": true + } } }, - "node_modules/mdurl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", - "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", - "dev": true - }, - "node_modules/medium-zoom": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/medium-zoom/-/medium-zoom-1.0.6.tgz", - "integrity": "sha512-UdiUWfvz9fZMg1pzf4dcuqA0W079o0mpqbTnOz5ip4VGYX96QjmbM+OgOU/0uOzAytxC0Ny4z+VcYQnhdifimg==", - "dev": true - }, - "node_modules/memfs": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.3.0.tgz", - "integrity": "sha512-bOMyYalKCLeEkd5l3sYv0XIsVPQW+2oGhYm8LwD1htXS637VmIdoXVrWPxZdbJlEogDIrTnm6wqqZBrYb7ZFPw==", + "node_modules/listr2/node_modules/cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, "dependencies": { - "json-joy": "^9.2.0", - "thingies": "^1.11.1" + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" }, "engines": { - "node": ">= 4.0.0" + "node": ">=8" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/streamich" - }, - "peerDependencies": { - "tslib": "2" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "node_modules/listr2/node_modules/slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, "engines": { - "node": ">= 0.10.0" + "node": ">=8" } }, - "node_modules/meow": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", - "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "node_modules/livereload": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/livereload/-/livereload-0.9.3.tgz", + "integrity": "sha512-q7Z71n3i4X0R9xthAryBdNGVGAO2R5X+/xXpmKeuPMrteg+W2U8VusTKV3YiJbXZwKsOlFlHe+go6uSNjfxrZw==", "dev": true, "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" + "chokidar": "^3.5.0", + "livereload-js": "^3.3.1", + "opts": ">= 1.2.0", + "ws": "^7.4.3" }, - "engines": { - "node": ">=10" + "bin": { + "livereload": "bin/livereload.js" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", - "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8.0.0" } }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "node_modules/livereload-js": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-3.3.2.tgz", + "integrity": "sha512-w677WnINxFkuixAoUEXOStewzLYGI76XVag+0JWMMEyjJQKs0ibWZMxkTlB96Lm3EjZ7IeOxVziBEbtxVQqQZA==", "dev": true }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, "engines": { - "node": ">= 8" + "node": ">=4" } }, - "node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "node_modules/load-json-file/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" }, "engines": { - "node": ">=8.6" + "node": ">=4" } }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "bin": { - "mime": "cli.js" - }, + "node_modules/load-json-file/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, "engines": { "node": ">=4" } }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "node_modules/load-json-file/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, "engines": { - "node": ">= 0.6" + "node": ">=4" } }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "node_modules/load-yaml-file": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/load-yaml-file/-/load-yaml-file-0.2.0.tgz", + "integrity": "sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==", "dev": true, "dependencies": { - "mime-db": "1.52.0" + "graceful-fs": "^4.1.5", + "js-yaml": "^3.13.0", + "pify": "^4.0.1", + "strip-bom": "^3.0.0" }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, "engines": { "node": ">=6" } }, - "node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "node_modules/load-yaml-file/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true, "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "node_modules/load-yaml-file/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, "engines": { "node": ">=4" } }, - "node_modules/minimatch": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", - "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "p-locate": "^5.0.0" }, "engines": { - "node": "*" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, - "node_modules/minimist-options": { + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, + "node_modules/lodash.assignwith": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.assignwith/-/lodash.assignwith-4.2.0.tgz", + "integrity": "sha512-ZznplvbvtjK2gMvnQ1BR/zqPFZmS6jbK4p+6Up4xcRYA7yMIwxHCfbTcrYxXKzzqLsQ05eJPVznEW3tuwV7k1g==", + "dev": true + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", + "dev": true + }, + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "peer": true + }, + "node_modules/lodash.isequal": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", + "integrity": "sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==", + "peer": true + }, + "node_modules/lodash.ismatch": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", + "integrity": "sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc=", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.omit": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz", + "integrity": "sha1-brGa5aHuHdnfC5aeZs4Lf6MLXmA=", + "dev": true + }, + "node_modules/lodash.padend": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/lodash.padend/-/lodash.padend-4.6.1.tgz", + "integrity": "sha1-U8y6BH0G4VjTEfRdpiX05J5vFm4=", + "dev": true + }, + "node_modules/lodash.pick": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.pick/-/lodash.pick-4.4.0.tgz", + "integrity": "sha1-UvBWEP/53tQiYRRB7R/BI6AwAbM=", + "dev": true + }, + "node_modules/lodash.startcase": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz", + "integrity": "sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==", + "dev": true + }, + "node_modules/log-symbols": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dev": true, "dependencies": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" }, "engines": { - "node": ">= 6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/minipass": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.6.tgz", - "integrity": "sha512-rty5kpw9/z8SX9dmxblFA6edItUmwJgMeYDZRrwlIVN27i8gysGbznJwUggw2V/FVqFSDdWy040ZPS811DYAqQ==", + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "yallist": "^4.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "node_modules/log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", "dev": true, "dependencies": { - "minipass": "^3.0.0" + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" }, "engines": { - "node": ">= 8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/minipass-fetch": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", - "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", + "node_modules/log-update/node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, "dependencies": { - "minipass": "^3.1.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.0.0" + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, - "optionalDependencies": { - "encoding": "^0.1.12" + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "dev": true, "dependencies": { - "minipass": "^3.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">= 8" + "node": ">=8" } }, - "node_modules/minipass-pipeline": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "node_modules/loupe": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.0.1.tgz", + "integrity": "sha512-phbaE2fPsRe8cQ7Cy5Ze5p9JLmpiaqGT45RCUWYYjZgYPBoeC3vqrlYPj4BQ82ln60ZtM3Iq00PPC3FyUdS4Kw==", "dev": true, "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" + "get-func-name": "^2.0.1" } }, - "node_modules/minipass-sized": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", - "dev": true, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", "dependencies": { - "minipass": "^3.0.0" - }, + "tslib": "^2.0.3" + } + }, + "node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "dev": true, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/minipass/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } }, - "node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" + "semver": "^6.0.0" }, "engines": { - "node": ">= 8" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/minizlib/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", "dev": true }, - "node_modules/mixme": { - "version": "0.5.9", - "resolved": "https://registry.npmjs.org/mixme/-/mixme-0.5.9.tgz", - "integrity": "sha512-VC5fg6ySUscaWUpI4gxCBTQMH2RdUpNrk+MsbpCYtIvf9SBJdiUey4qE7BXviJsJR4nDQxCZ+3yaYNW3guz/Pw==", + "node_modules/map-obj": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.2.1.tgz", + "integrity": "sha512-+WA2/1sPmDj1dlvvJmB5G6JKfY9dpn7EVBUL06+y6PoljPkh+6V1QihwxNkbcGxCRjt2b0F9K0taiCuo7MbdFQ==", "dev": true, "engines": { - "node": ">= 8.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "node_modules/markdown-it": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", + "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", "dev": true, "dependencies": { - "minimist": "^1.2.6" + "argparse": "^2.0.1", + "entities": "~2.1.0", + "linkify-it": "^3.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" }, "bin": { - "mkdirp": "bin/cmd.js" + "markdown-it": "bin/markdown-it.js" } }, - "node_modules/mkdirp2": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/mkdirp2/-/mkdirp2-1.0.5.tgz", - "integrity": "sha512-xOE9xbICroUDmG1ye2h4bZ8WBie9EGmACaco8K8cx6RlkJJrxGIqjGqztAI+NMhexXBcdGbSEzI6N3EJPevxZw==", + "node_modules/markdown-it-anchor": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.4.1.tgz", + "integrity": "sha512-sLODeRetZ/61KkKLJElaU3NuU2z7MhXf12Ml1WJMSdwpngeofneCRF+JBbat8HiSqhniOMuTemXMrsI7hA6XyA==", + "dev": true, + "peerDependencies": { + "@types/markdown-it": "*", + "markdown-it": "*" + } + }, + "node_modules/markdown-it/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, - "node_modules/modify-values": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", - "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", + "node_modules/marked": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/marked/-/marked-1.2.9.tgz", + "integrity": "sha512-H8lIX2SvyitGX+TRdtS06m1jHMijKN/XjfH6Ooii9fvxMlh8QdqBfBDkGUpMWH2kQNrtixjzYUa3SH8ROTgRRw==", "dev": true, + "bin": { + "marked": "bin/marked" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 8.16.2" } }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "node_modules/marky": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/marky/-/marky-1.2.5.tgz", + "integrity": "sha512-q9JtQJKjpsVxCRVgQ+WapguSbKC3SQ5HEzFGPAJMStgh3QjCawp00UKv3MTTAArTmGmmPUvllHZoNbZ3gs0I+Q==", "dev": true }, - "node_modules/nan": { - "version": "2.18.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", - "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==", + "node_modules/mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4=", "dev": true }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/medium-zoom": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/medium-zoom/-/medium-zoom-1.0.6.tgz", + "integrity": "sha512-UdiUWfvz9fZMg1pzf4dcuqA0W079o0mpqbTnOz5ip4VGYX96QjmbM+OgOU/0uOzAytxC0Ny4z+VcYQnhdifimg==", "dev": true }, - "node_modules/needle": { - "version": "2.9.1", - "resolved": "https://registry.npmjs.org/needle/-/needle-2.9.1.tgz", - "integrity": "sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==", - "dev": true, - "optional": true, + "node_modules/memfs": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-4.3.0.tgz", + "integrity": "sha512-bOMyYalKCLeEkd5l3sYv0XIsVPQW+2oGhYm8LwD1htXS637VmIdoXVrWPxZdbJlEogDIrTnm6wqqZBrYb7ZFPw==", "dependencies": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" + "json-joy": "^9.2.0", + "thingies": "^1.11.1" }, - "bin": { - "needle": "bin/needle" + "engines": { + "node": ">= 4.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/streamich" }, + "peerDependencies": { + "tslib": "2" + } + }, + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true, "engines": { - "node": ">= 4.4.x" + "node": ">= 0.10.0" } }, - "node_modules/needle/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/meow": { + "version": "8.1.2", + "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", + "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", "dev": true, - "optional": true, "dependencies": { - "ms": "^2.1.1" + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^3.0.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.18.0", + "yargs-parser": "^20.2.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "node_modules/meow/node_modules/type-fest": { + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", "dev": true, "engines": { - "node": ">= 0.6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node_modules/nested-error-stacks": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz", - "integrity": "sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug==", + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", "dev": true }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } }, - "node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "node_modules/micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" + "braces": "^3.0.1", + "picomatch": "^2.2.3" + }, + "engines": { + "node": ">=8.6" } }, - "node_modules/node-fetch": { - "version": "2.6.7", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz", - "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==", + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "dev": true, - "dependencies": { - "whatwg-url": "^5.0.0" + "bin": { + "mime": "cli.js" }, "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "node": ">=4" } }, - "node_modules/node-fetch/node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", - "dev": true - }, - "node_modules/node-fetch/node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", - "dev": true - }, - "node_modules/node-fetch/node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "dev": true, - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" + "engines": { + "node": ">= 0.6" } }, - "node_modules/node-gyp": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", - "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dev": true, "dependencies": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^9.1.0", - "nopt": "^5.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" + "mime-db": "1.52.0" }, "engines": { - "node": ">= 10.12.0" + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" } }, - "node_modules/node-gyp/node_modules/gauge": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.0.tgz", - "integrity": "sha512-F8sU45yQpjQjxKkm1UOAhf0U/O0aFt//Fl7hsrNVto+patMHjs7dPI9mFOGUKbhrgKm0S3EjW3scMFuQmWSROw==", + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1", - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.2", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.2" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": ">=4" } }, - "node_modules/node-gyp/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/min-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, "engines": { - "node": ">=10" + "node": ">=4" } }, - "node_modules/node-gyp/node_modules/nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "node_modules/minimatch": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", + "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", "dev": true, "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=6" + "node": "*" } }, - "node_modules/node-gyp/node_modules/npmlog": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.0.tgz", - "integrity": "sha512-03ppFRGlsyUaQFbGC2C8QWJN/C/K7PsfyD9aQdhVKAQIH4sQBc8WASqFBP7O+Ut4d2oo5LoeoboB3cGdBZSp6Q==", + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + }, + "node_modules/minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", "dev": true, "dependencies": { - "are-we-there-yet": "^2.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.0", - "set-blocking": "^2.0.0" + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "node": ">= 6" } }, - "node_modules/node-gyp/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "node_modules/mitt": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.0.tgz", + "integrity": "sha512-7dX2/10ITVyqh4aOSVI9gdape+t9l2/8QxHrFmUXu4EEUpdlxl6RudZUPZoc+zuY2hk1j7XxVroIVIan/pD/SQ==", + "dev": true + }, + "node_modules/mixme": { + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/mixme/-/mixme-0.5.9.tgz", + "integrity": "sha512-VC5fg6ySUscaWUpI4gxCBTQMH2RdUpNrk+MsbpCYtIvf9SBJdiUey4qE7BXviJsJR4nDQxCZ+3yaYNW3guz/Pw==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, "engines": { - "node": ">=10" + "node": ">= 8.0.0" } }, - "node_modules/node-gyp/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "dev": true, "dependencies": { - "isexe": "^2.0.0" + "minimist": "^1.2.6" }, "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" + "mkdirp": "bin/cmd.js" } }, - "node_modules/node-gyp/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", "dev": true }, - "node_modules/node-releases": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.1.tgz", - "integrity": "sha512-CqyzN6z7Q6aMeF/ktcMVTzhAHCEpf8SOarwpzpf8pNBY2k5/oM34UHldUwp8VKI7uxct2HxSRdJjBaZeESzcxA==", + "node_modules/mkdirp2": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/mkdirp2/-/mkdirp2-1.0.5.tgz", + "integrity": "sha512-xOE9xbICroUDmG1ye2h4bZ8WBie9EGmACaco8K8cx6RlkJJrxGIqjGqztAI+NMhexXBcdGbSEzI6N3EJPevxZw==", "dev": true }, - "node_modules/node-sass": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-9.0.0.tgz", - "integrity": "sha512-yltEuuLrfH6M7Pq2gAj5B6Zm7m+gdZoG66wTqG6mIZV/zijq3M2OO2HswtT6oBspPyFhHDcaxWpsBm0fRNDHPg==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "async-foreach": "^0.1.3", - "chalk": "^4.1.2", - "cross-spawn": "^7.0.3", - "gaze": "^1.0.0", - "get-stdin": "^4.0.1", - "glob": "^7.0.3", - "lodash": "^4.17.15", - "make-fetch-happen": "^10.0.4", - "meow": "^9.0.0", - "nan": "^2.17.0", - "node-gyp": "^8.4.1", - "sass-graph": "^4.0.1", - "stdout-stream": "^1.4.0", - "true-case-path": "^2.2.1" + "node_modules/mocha": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", + "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", + "dev": true, + "dependencies": { + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.4", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "5.0.1", + "ms": "2.1.3", + "nanoid": "3.3.3", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "workerpool": "6.2.1", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" }, "bin": { - "node-sass": "bin/node-sass" + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" }, "engines": { - "node": ">=16" + "node": ">= 14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mochajs" } }, - "node_modules/node-sass/node_modules/@npmcli/fs": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", - "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", + "node_modules/mocha/node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", "dev": true, - "dependencies": { - "@gar/promisify": "^1.1.3", - "semver": "^7.3.5" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=6" } }, - "node_modules/node-sass/node_modules/@npmcli/move-file": { + "node_modules/mocha/node_modules/argparse": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", - "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", - "deprecated": "This functionality has been moved to @npmcli/fs", - "dev": true, - "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true }, - "node_modules/node-sass/node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "node_modules/mocha/node_modules/diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", "dev": true, "engines": { - "node": ">= 10" - } - }, - "node_modules/node-sass/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" + "node": ">=0.3.1" } }, - "node_modules/node-sass/node_modules/cacache": { - "version": "16.1.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", - "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", + "node_modules/mocha/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, - "dependencies": { - "@npmcli/fs": "^2.1.0", - "@npmcli/move-file": "^2.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "glob": "^8.0.1", - "infer-owner": "^1.0.4", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", - "tar": "^6.1.11", - "unique-filename": "^2.0.0" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/node-sass/node_modules/cacache/node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "node_modules/mocha/node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=12" + "node": "*" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/node-sass/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/mocha/node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": "*" } }, - "node_modules/node-sass/node_modules/get-stdin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", - "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "node_modules/mocha/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/node-sass/node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "node_modules/mocha/node_modules/minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", "dev": true, "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">= 6" + "node": ">=10" } }, - "node_modules/node-sass/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "node_modules/mocha/node_modules/minimatch/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "engines": { - "node": ">=12" + "dependencies": { + "balanced-match": "^1.0.0" } }, - "node_modules/node-sass/node_modules/make-fetch-happen": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", - "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", + "node_modules/mocha/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/mocha/node_modules/nanoid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", "dev": true, - "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^16.1.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^2.0.3", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^9.0.0" + "bin": { + "nanoid": "bin/nanoid.cjs" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/node-sass/node_modules/meow": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", - "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", + "node_modules/mocha/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize": "^1.2.0", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" + "has-flag": "^4.0.0" }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/node-sass/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "node_modules/mocha/node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, "engines": { "node": ">=10" } }, - "node_modules/node-sass/node_modules/minipass-fetch": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", - "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", + "node_modules/mocha/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "dev": true, "dependencies": { - "minipass": "^3.1.6", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" + "node": ">=10" + } + }, + "node_modules/mocha/node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/modify-values": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", + "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/node-sass/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nanocolors": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/nanocolors/-/nanocolors-0.2.13.tgz", + "integrity": "sha512-0n3mSAQLPpGLV9ORXT5+C/D4mwew7Ebws69Hx4E2sgz2ZA5+32Q80B9tL8PbL7XHnRDiAxH/pnrUJ9a4fkTNTA==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "bin": { - "mkdirp": "bin/cmd.js" + "nanoid": "bin/nanoid.cjs" }, "engines": { - "node": ">=10" + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/node-sass/node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "node_modules/needle": { + "version": "2.9.1", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.9.1.tgz", + "integrity": "sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==", "dev": true, + "optional": true, "dependencies": { - "lru-cache": "^6.0.0" + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" }, "bin": { - "semver": "bin/semver.js" + "needle": "bin/needle" }, "engines": { - "node": ">=10" + "node": ">= 4.4.x" } }, - "node_modules/node-sass/node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/needle/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "optional": true, "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" + "ms": "^2.1.1" } }, - "node_modules/node-sass/node_modules/socks-proxy-agent": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", - "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "dev": true, - "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - }, "engines": { - "node": ">= 10" + "node": ">= 0.6" } }, - "node_modules/node-sass/node_modules/ssri": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", - "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", - "dev": true, - "dependencies": { - "minipass": "^3.1.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true }, - "node_modules/node-sass/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "node_modules/nested-error-stacks": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.0.tgz", + "integrity": "sha512-AO81vsIO1k1sM4Zrd6Hu7regmJN1NSiAja10gc4bX3F0wd+9rQmcuHQaHVQCYIEC8iFXnE+mavh23GOt7wBgug==", + "dev": true + }, + "node_modules/netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.4.0" } }, - "node_modules/node-sass/node_modules/unique-filename": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", - "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", - "dev": true, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", "dependencies": { - "unique-slug": "^3.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "lower-case": "^2.0.2", + "tslib": "^2.0.3" } }, - "node_modules/node-sass/node_modules/unique-slug": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", - "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dev": true, "dependencies": { - "imurmurhash": "^0.1.4" + "whatwg-url": "^5.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } } }, - "node_modules/node-sass/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "node_modules/node-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=", + "dev": true + }, + "node_modules/node-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=", "dev": true }, - "node_modules/nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", + "node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", "dev": true, "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" } }, "node_modules/normalize-package-data": { @@ -14214,12 +10669,6 @@ "node": ">=8" } }, - "node_modules/nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", - "dev": true - }, "node_modules/object-get": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/object-get/-/object-get-2.1.1.tgz", @@ -14318,6 +10767,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/only": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/only/-/only-0.0.2.tgz", + "integrity": "sha512-Fvw+Jemq5fjjyWz6CpKx6w9s7xxqo3+JCyM0WXWeCSOboZ8ABkyvP8ID4CZuChA/wxSx+XSJmdOm8rGVyJ1hdQ==", + "dev": true + }, "node_modules/open": { "version": "6.4.0", "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", @@ -14348,23 +10803,6 @@ "opencollective-postinstall": "index.js" } }, - "node_modules/optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - }, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/opts": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/opts/-/opts-2.0.2.tgz", @@ -14505,6 +10943,91 @@ "node": ">=6" } }, + "node_modules/pac-proxy-agent": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.1.tgz", + "integrity": "sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A==", + "dev": true, + "dependencies": { + "@tootallnate/quickjs-emscripten": "^0.23.0", + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.2", + "pac-resolver": "^7.0.0", + "socks-proxy-agent": "^8.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-proxy-agent/node_modules/agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "dev": true, + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-proxy-agent/node_modules/http-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", + "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", + "dev": true, + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-proxy-agent/node_modules/https-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", + "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", + "dev": true, + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-proxy-agent/node_modules/socks-proxy-agent": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz", + "integrity": "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==", + "dev": true, + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "socks": "^2.7.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-resolver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.0.tgz", + "integrity": "sha512-Fd9lT9vJbHYRACT8OhCbZBbxr6KRSawSovFpy8nDGshaK99S/EBhVIHp9+crhxrsZOuvLpgL1n23iyPg6Rl2hg==", + "dev": true, + "dependencies": { + "degenerator": "^5.0.0", + "ip": "^1.1.8", + "netmask": "^2.0.2" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/package-json": { "version": "6.5.0", "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", @@ -14737,14 +11260,6 @@ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, - "node_modules/patch-package/node_modules/yaml": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.2.tgz", - "integrity": "sha512-N/lyzTPaJasoDmfV7YTrYCI0G/3ivm/9wdG0aHuheKowWQwGTsK0Eoiw6utmzAnI6pkJa0DUVygvp3spqqEKXg==", - "engines": { - "node": ">= 14" - } - }, "node_modules/path": { "version": "0.12.7", "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", @@ -14852,10 +11367,19 @@ "inherits": "2.0.3" } }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "node_modules/pathval": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", + "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", + "dev": true, + "engines": { + "node": ">= 14.16" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", "dev": true }, "node_modules/picomatch": { @@ -14890,15 +11414,6 @@ "node": ">=0.10.0" } }, - "node_modules/pirates": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", - "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, "node_modules/pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", @@ -14963,19 +11478,80 @@ "node": ">=8" } }, - "node_modules/plur": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/plur/-/plur-4.0.0.tgz", - "integrity": "sha512-4UGewrYgqDFw9vV6zNV+ADmPAUAfJPKtGvb/VdpQAx25X5f3xXdGdyOEVFwkl8Hl/tl7+xbeHqSEM+D5/TirUg==", + "node_modules/playwright": { + "version": "1.39.0", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.39.0.tgz", + "integrity": "sha512-naE5QT11uC/Oiq0BwZ50gDmy8c8WLPRTEWuSSFVG2egBka/1qMoSqYQcROMT9zLwJ86oPofcTH2jBY/5wWOgIw==", + "dev": true, + "dependencies": { + "playwright-core": "1.39.0" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=16" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.39.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.39.0.tgz", + "integrity": "sha512-+k4pdZgs1qiM+OUkSjx96YiKsXsmb59evFoqv8SKO067qBA+Z2s/dCzJij/ZhdQcs2zlTAgRKfeiiLm8PQ2qvw==", + "dev": true, + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/playwright/node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/portfinder": { + "version": "1.0.32", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz", + "integrity": "sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==", + "dev": true, + "dependencies": { + "async": "^2.6.4", + "debug": "^3.2.7", + "mkdirp": "^0.5.6" + }, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/portfinder/node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/portfinder/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "dependencies": { - "irregular-plurals": "^3.2.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "ms": "^2.1.1" } }, "node_modules/preferred-pm": { @@ -14993,15 +11569,6 @@ "node": ">=10" } }, - "node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, "node_modules/prepend-http": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", @@ -15026,32 +11593,6 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/pretty-format": { - "version": "27.4.6", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.4.6.tgz", - "integrity": "sha512-NblstegA1y/RJW2VyML+3LlpFjzx62cUrtBIKIWDXEDkjNeleA7Od7nrzcs/VLQvAeV4CgSYhrN39DRN88Qi/g==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1", - "ansi-styles": "^5.0.0", - "react-is": "^17.0.1" - }, - "engines": { - "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/prismjs": { "version": "1.27.0", "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.27.0.tgz", @@ -15061,15 +11602,6 @@ "node": ">=6" } }, - "node_modules/private": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", - "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/process": { "version": "0.11.10", "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", @@ -15084,38 +11616,101 @@ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", "dev": true }, - "node_modules/promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", - "dev": true + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } }, - "node_modules/promise-retry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", - "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "node_modules/proxy-agent": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.3.0.tgz", + "integrity": "sha512-0LdR757eTj/JfuU7TL2YCuAZnxWXu3tkJbg4Oq3geW/qFNT/32T0sp2HnZ9O0lMR4q3vwAt0+xCA8SR0WAD0og==", "dev": true, "dependencies": { - "err-code": "^2.0.2", - "retry": "^0.12.0" + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.0.0", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.1" }, "engines": { - "node": ">=10" + "node": ">= 14" } }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "node_modules/proxy-agent/node_modules/agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", "dev": true, "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" + "debug": "^4.3.4" }, "engines": { - "node": ">= 6" + "node": ">= 14" + } + }, + "node_modules/proxy-agent/node_modules/http-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.0.tgz", + "integrity": "sha512-+ZT+iBxVUQ1asugqnD6oWoRiS25AkjNfG085dKJGtGxkdwLQrMKU5wJr2bOOFAXzKcTuqq+7fZlTMgG3SRfIYQ==", + "dev": true, + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-agent/node_modules/https-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", + "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", + "dev": true, + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-agent/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/proxy-agent/node_modules/socks-proxy-agent": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz", + "integrity": "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==", + "dev": true, + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "socks": "^2.7.1" + }, + "engines": { + "node": ">= 14" } }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, "node_modules/prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", @@ -15129,12 +11724,6 @@ "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", "dev": true }, - "node_modules/psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true - }, "node_modules/pump": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", @@ -15210,6 +11799,12 @@ } ] }, + "node_modules/queue-tick": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==", + "dev": true + }, "node_modules/quick-lru": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", @@ -15233,6 +11828,15 @@ "node": ">= 12.0.0" } }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, "node_modules/range-parser": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", @@ -15242,6 +11846,70 @@ "node": ">= 0.6" } }, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/raw-body/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, "node_modules/rc": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", @@ -15266,12 +11934,6 @@ "node": ">=0.10.0" } }, - "node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - }, "node_modules/read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", @@ -15450,9 +12112,9 @@ } }, "node_modules/readdirp": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", - "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "dependencies": { "picomatch": "^2.2.1" @@ -15566,39 +12228,12 @@ "node": ">=0.10.0" } }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "dev": true - }, - "node_modules/regenerate-unicode-properties": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-9.0.0.tgz", - "integrity": "sha512-3E12UeNSPfjrgwjkR81m5J7Aw/T55Tu7nUyZVQYCKEOs+2dkxEY+DpPtZzO4YruuiPb7NkYLVcyJC4+zCbk5pA==", - "dev": true, - "dependencies": { - "regenerate": "^1.4.2" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/regenerator-runtime": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==", "dev": true }, - "node_modules/regenerator-transform": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", - "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, "node_modules/regexp.prototype.flags": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", @@ -15616,23 +12251,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/regexpu-core": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.8.0.tgz", - "integrity": "sha512-1F6bYsoYiz6is+oz70NWur2Vlh9KWtswuRuzJOfeYUrfPX2o8n74AnUVaOGDbUqVGO9fNHu48/pjJO4sNVwsOg==", - "dev": true, - "dependencies": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^9.0.0", - "regjsgen": "^0.5.2", - "regjsparser": "^0.7.0", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/registry-auth-token": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", @@ -15657,33 +12275,6 @@ "node": ">=8" } }, - "node_modules/regjsgen": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", - "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", - "dev": true - }, - "node_modules/regjsparser": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.7.0.tgz", - "integrity": "sha512-A4pcaORqmNMDVwUjWoTzuhwMGpP+NykpfqAsEgI1FSH/EzC7lrN5TMd+kN8YCovX+jMpu8eaqXgXPCa0g8FQNQ==", - "dev": true, - "dependencies": { - "jsesc": "~0.5.0" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - } - }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -15725,18 +12316,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", @@ -15758,21 +12337,52 @@ "node": ">=8" } }, + "node_modules/resolve-path": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/resolve-path/-/resolve-path-1.4.0.tgz", + "integrity": "sha512-i1xevIst/Qa+nA9olDxLWnLk8YZbi8R/7JPbCMcgyWaFR6bKWaexgJgEB5oc2PKMjYdrHynyz0NY+if+H98t1w==", + "dev": true, + "dependencies": { + "http-errors": "~1.6.2", + "path-is-absolute": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/resolve-path/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/resolve-path/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "node_modules/resolve-path/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, "node_modules/resolve-pathname": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/resolve-pathname/-/resolve-pathname-3.0.0.tgz", "integrity": "sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng==", "dev": true }, - "node_modules/resolve.exports": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", - "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "node_modules/responselike": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", @@ -15795,15 +12405,6 @@ "node": ">=8" } }, - "node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", - "dev": true, - "engines": { - "node": ">= 4" - } - }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -15835,6 +12436,22 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/rollup": { + "version": "3.29.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", + "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=14.18.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, "node_modules/run-parallel": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", @@ -15913,64 +12530,32 @@ "node_modules/safer-buffer": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/sass-graph": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-4.0.1.tgz", - "integrity": "sha512-5YCfmGBmxoIRYHnKK2AKzrAkCoQ8ozO+iumT8K4tXJXRVCPf+7s1/9KxTSW3Rbvf+7Y7b4FR3mWyLnQr3PHocA==", - "dev": true, - "dependencies": { - "glob": "^7.0.0", - "lodash": "^4.17.11", - "scss-tokenizer": "^0.4.3", - "yargs": "^17.2.1" - }, - "bin": { - "sassgraph": "bin/sassgraph" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "node_modules/saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", - "dev": true, - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/scss-tokenizer": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.4.3.tgz", - "integrity": "sha512-raKLgf1LI5QMQnG+RxHz6oK0sL3x3I4FN2UDLqgLOGO8hodECNnNh5BXn7fAyBxrA8zVzdQizQ6XjNJQ+uBwMw==", - "dev": true, - "dependencies": { - "js-base64": "^2.4.9", - "source-map": "^0.7.3" - } + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true }, - "node_modules/scss-tokenizer/node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "node_modules/sass": { + "version": "1.69.5", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.69.5.tgz", + "integrity": "sha512-qg2+UCJibLr2LCVOt3OlPhr/dqVHWOa9XtZf2OjbLs/T4VPSJ00udtgJxH3neXZm+QqX8B+3cU7RaLqp1iVfcQ==", "dev": true, + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, "engines": { - "node": ">= 8" + "node": ">=14.0.0" } }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, "node_modules/semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", @@ -16047,6 +12632,15 @@ "upper-case-first": "^2.0.2" } }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, "node_modules/serve-static": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz", @@ -16135,12 +12729,6 @@ "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", "dev": true }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -16355,20 +12943,6 @@ "npm": ">= 3.0.0" } }, - "node_modules/socks-proxy-agent": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.1.1.tgz", - "integrity": "sha512-t8J0kG3csjA4g6FTbsMOWws+7R7vuRC8aQ/wy3/1OWmsgwA68zs/+cExQ0koSitUDXqhufF/YJr9wtNMZHw5Ew==", - "dev": true, - "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.1", - "socks": "^2.6.1" - }, - "engines": { - "node": ">= 10" - } - }, "node_modules/socks/node_modules/ip": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", @@ -16406,10 +12980,10 @@ "node": ">=10" } }, - "node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", "dev": true, "engines": { "node": ">=0.10.0" @@ -16426,25 +13000,6 @@ "decode-uri-component": "^0.2.0" } }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/spawndamnit": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/spawndamnit/-/spawndamnit-2.0.0.tgz", @@ -16576,39 +13131,6 @@ "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, - "node_modules/ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "dev": true, - "dependencies": { - "minipass": "^3.1.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/stack-utils": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz", - "integrity": "sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/stack-utils/node_modules/escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/standard-version": { "version": "9.5.0", "resolved": "https://registry.npmjs.org/standard-version/-/standard-version-9.5.0.tgz", @@ -16768,15 +13290,6 @@ "node": ">= 0.6" } }, - "node_modules/stdout-stream": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", - "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", - "dev": true, - "dependencies": { - "readable-stream": "^2.0.1" - } - }, "node_modules/stream": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/stream/-/stream-0.0.2.tgz", @@ -16809,6 +13322,15 @@ "node": ">=0.12.0" } }, + "node_modules/stream-read-all": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/stream-read-all/-/stream-read-all-3.0.1.tgz", + "integrity": "sha512-EWZT9XOceBPlVJRrYcykW8jyRSZYbkb/0ZK36uLEmoWVO5gxBOnntNTseNzfREsqxqdfEGQrD8SXQ3QWbBmq8A==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/stream-transform": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/stream-transform/-/stream-transform-2.1.3.tgz", @@ -16827,6 +13349,16 @@ "node": ">=0.10.0" } }, + "node_modules/streamx": { + "version": "2.15.2", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.15.2.tgz", + "integrity": "sha512-b62pAV/aeMjUoRN2C/9F0n+G8AfcJjNC0zw/ZmOHeFsIe4m4GzjVW9m6VHXVjk536NbdU9JRwKMJRfkc+zUFTg==", + "dev": true, + "dependencies": { + "fast-fifo": "^1.1.0", + "queue-tick": "^1.0.1" + } + }, "node_modules/string_decoder": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", @@ -16845,19 +13377,6 @@ "node": ">=0.6.19" } }, - "node_modules/string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "dependencies": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -16976,15 +13495,6 @@ "node": ">=8" } }, - "node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", @@ -17058,19 +13568,6 @@ "node": ">=8" } }, - "node_modules/supports-hyperlinks": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", - "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", @@ -17083,12 +13580,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, "node_modules/table-layout": { "version": "0.4.5", "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-0.4.5.tgz", @@ -17123,41 +13614,28 @@ "integrity": "sha1-fLy2S1oUG2ou/CxdLGe04VCyomg=", "dev": true }, - "node_modules/tar": { - "version": "6.1.11", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", + "node_modules/tar-fs": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.4.tgz", + "integrity": "sha512-5AFQU8b9qLfZCX9zp2duONhPmZv0hGYiBPJsyUdqMjzq/mqVpy/rEUSeHk1+YitmxugaptgBh5oDGU3VsAJq4w==", "dev": true, "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 10" + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^3.1.5" } }, - "node_modules/tar/node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "node_modules/tar-stream": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.6.tgz", + "integrity": "sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==", "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" + "dependencies": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" } }, - "node_modules/tar/node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, "node_modules/temp-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/temp-path/-/temp-path-1.0.0.tgz", @@ -17176,48 +13654,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", - "dev": true, - "dependencies": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/test-exclude/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/test-value": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/test-value/-/test-value-3.0.0.tgz", @@ -17269,12 +13705,6 @@ "tslib": "^2" } }, - "node_modules/throat": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/throat/-/throat-6.0.1.tgz", - "integrity": "sha512-8hmiGIJMDlwjg7dlJ4yKGLK8EsYqKgPWbG3b4wjJddKNwc7N7Dpn08Df4szr/sZdMVeOstrdYSsqzX6BYbcB+w==", - "dev": true - }, "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -17329,21 +13759,6 @@ "node": ">=0.6.0" } }, - "node_modules/tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true - }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/to-readable-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", @@ -17373,41 +13788,6 @@ "node": ">=0.6" } }, - "node_modules/tough-cookie": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", - "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", - "dev": true, - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.1.2" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tough-cookie/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/tr46": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", - "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", - "dev": true, - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/trim-newlines": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", @@ -17417,12 +13797,6 @@ "node": ">=8" } }, - "node_modules/true-case-path": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-2.2.1.tgz", - "integrity": "sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q==", - "dev": true - }, "node_modules/ts-node": { "version": "10.4.0", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.4.0.tgz", @@ -17445,96 +13819,47 @@ "bin": { "ts-node": "dist/bin.js", "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "node_modules/ts-node/node_modules/acorn-walk": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", - "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/tsd": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/tsd/-/tsd-0.19.1.tgz", - "integrity": "sha512-pSwchclr+ADdxlahRUQXUrdAIOjXx1T1PQV+fLfVLuo/S4z+T00YU84fH8iPlZxyA2pWgJjo42BG1p9SDb4NOw==", - "dev": true, - "dependencies": { - "@tsd/typescript": "~4.5.2", - "eslint-formatter-pretty": "^4.1.0", - "globby": "^11.0.1", - "meow": "^9.0.0", - "path-exists": "^4.0.0", - "read-pkg-up": "^7.0.0" - }, - "bin": { - "tsd": "dist/cli.js" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/tsd/node_modules/meow": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", - "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", - "dev": true, - "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize": "^1.2.0", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" }, - "engines": { - "node": ">=10" + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } } }, - "node_modules/tsd/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", + "node_modules/ts-node/node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.4.0" } }, "node_modules/tslib": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.2.0.tgz", - "integrity": "sha512-gS9GVHRU+RGn5KQM2rllAlR3dU6m7AcpJKdtH8gFvQiC4Otgk98XnmMU+nZenHt/+VhnBPWwgrJsyrdcw6i23w==" + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/tsscmp": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", + "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==", + "dev": true, + "engines": { + "node": ">=0.6.x" + } }, "node_modules/tsutils": { "version": "3.21.0", @@ -17659,27 +13984,6 @@ "integrity": "sha512-aSiJz7rGWNAQq7hjMK9ZYDuEawXupcCWgl3woQQSoDP2Oh8O4srWb/uO1PzzHIsrPEOqrjJ2sUb9FERfzuBabQ==", "dev": true }, - "node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/type-fest": { "version": "0.21.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", @@ -17692,6 +13996,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/typed-array-buffer": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", @@ -17825,69 +14142,45 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/underscore": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.2.tgz", - "integrity": "sha512-ekY1NhRzq0B08g4bGuX4wd2jZx5GnKz6mKSqFL4nqBlfyMGiG10gDFhDTMEfYmDL6Jy0FUIZp7wiRB+0BP7J2g==", - "dev": true - }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "node_modules/unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", "dev": true, "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", - "dev": true, - "engines": { - "node": ">=4" + "buffer": "^5.2.1", + "through": "^2.3.8" } }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", - "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/unique-filename": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", - "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "node_modules/unbzip2-stream/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "dependencies": { - "unique-slug": "^2.0.0" + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, - "node_modules/unique-slug": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", - "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", - "dev": true, - "dependencies": { - "imurmurhash": "^0.1.4" - } + "node_modules/underscore": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.2.tgz", + "integrity": "sha512-ekY1NhRzq0B08g4bGuX4wd2jZx5GnKz6mKSqFL4nqBlfyMGiG10gDFhDTMEfYmDL6Jy0FUIZp7wiRB+0BP7J2g==", + "dev": true }, "node_modules/unique-string": { "version": "2.0.0", @@ -18036,29 +14329,6 @@ "node": ">= 0.4.0" } }, - "node_modules/v8-to-istanbul": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.1.tgz", - "integrity": "sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==", - "dev": true, - "dependencies": { - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/v8-to-istanbul/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, "node_modules/validate-npm-package-license": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", @@ -18069,25 +14339,13 @@ "spdx-expression-parse": "^3.0.0" } }, - "node_modules/w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "dev": true, - "dependencies": { - "browser-process-hrtime": "^1.0.0" - } - }, - "node_modules/w3c-xmlserializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "dev": true, - "dependencies": { - "xml-name-validator": "^3.0.0" - }, "engines": { - "node": ">=10" + "node": ">= 0.8" } }, "node_modules/walk-back": { @@ -18099,15 +14357,6 @@ "node": ">=12.17" } }, - "node_modules/walker": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", - "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", - "dev": true, - "dependencies": { - "makeerror": "1.0.12" - } - }, "node_modules/wcwidth": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", @@ -18117,44 +14366,6 @@ "defaults": "^1.0.3" } }, - "node_modules/webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true, - "engines": { - "node": ">=10.4" - } - }, - "node_modules/whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, - "dependencies": { - "iconv-lite": "0.4.24" - } - }, - "node_modules/whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true - }, - "node_modules/whatwg-url": { - "version": "8.7.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", - "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", - "dev": true, - "dependencies": { - "lodash": "^4.7.0", - "tr46": "^2.1.0", - "webidl-conversions": "^6.1.0" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/which": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", @@ -18220,15 +14431,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/wide-align": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", - "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", - "dev": true, - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" - } - }, "node_modules/widest-line": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", @@ -18241,15 +14443,6 @@ "node": ">=8" } }, - "node_modules/word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", @@ -18278,6 +14471,12 @@ "node": ">=0.10.0" } }, + "node_modules/workerpool": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", + "dev": true + }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -18359,18 +14558,6 @@ "node": ">=8" } }, - "node_modules/xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, - "node_modules/xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, "node_modules/xmlcreate": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz", @@ -18399,12 +14586,11 @@ "dev": true }, "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", + "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", "engines": { - "node": ">= 6" + "node": ">= 14" } }, "node_modules/yargonaut": { @@ -18474,18 +14660,18 @@ } }, "node_modules/yargs": { - "version": "17.3.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.3.1.tgz", - "integrity": "sha512-WUANQeVgjLbNsEmGk20f+nlHgOqzRFpiGWVaBrYGYIGANIIu3lWjoyi0fNlFmJkvfhCZ6BXINe7/W2O2bV4iaA==", + "version": "17.7.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.1.tgz", + "integrity": "sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==", "dev": true, "dependencies": { - "cliui": "^7.0.2", + "cliui": "^8.0.1", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", "require-directory": "^2.1.1", "string-width": "^4.2.3", "y18n": "^5.0.5", - "yargs-parser": "^21.0.0" + "yargs-parser": "^21.1.1" }, "engines": { "node": ">=12" @@ -18500,6 +14686,68 @@ "node": ">=10" } }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yargs-unparser/node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yargs-unparser/node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/yargs/node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -18510,14 +14758,33 @@ } }, "node_modules/yargs/node_modules/yargs-parser": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.0.tgz", - "integrity": "sha512-z9kApYUOCwoeZ78rfRYYWdiU/iNL6mwwYlkkZfJoyMR1xps+NEBX5X7XmRpxkZHhXJ6+Ey00IwKxBBSW9FIjyA==", + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "dev": true, "engines": { "node": ">=12" } }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/ylru": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/ylru/-/ylru-1.3.2.tgz", + "integrity": "sha512-RXRJzMiK6U2ye0BlGGZnmpwJDPgakn6aNQ0A7gHRbD4I0uvK4TW6UqkK1V0pp9jskjJBAXd3dRrbzWkqJ+6cxA==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, "node_modules/yn": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", diff --git a/package.json b/package.json index 3886060b2..492da5423 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,6 @@ "amazon", "css", "design", - "properties", "tokens", "sass", "scss", @@ -23,10 +22,12 @@ "exports": { ".": { "types": "./types/index.d.ts", - "node": "./index-node.js", - "default": "./index.js" + "default": "./lib/StyleDictionary.js" }, - "./fs": "./fs.js" + "./fs": { + "node": "./fs-node.js", + "default": "./fs.js" + } }, "bin": { "style-dictionary": "./bin/style-dictionary" @@ -52,14 +53,19 @@ "lint": "run-p lint:*", "lint:eslint": "eslint index.js \"lib/**/*.js\" \"__tests__/**/*.js\"", "lint:prettier": "prettier \"**/*.{js,md}\" \"package.json\" --list-different || (echo '↑↑ these files are not prettier formatted ↑↑' && exit 1)", - "test": "run-p test:*", - "test:unit": "jest --runInBand --silent --coverage", - "test:types": "tsd", + "test": "npm run test:unit && npm run test:node", + "test:unit": "web-test-runner --coverage", + "test:unit:coverage": "cd coverage/lcov-report && npx http-server -o -c-1", + "test:unit:watch": "web-test-runner --watch", + "test:unit:update-snapshots": "web-test-runner --update-snapshots", + "test:node": "mocha -r mocha-hooks.mjs './__node_tests__/**/*.test.js' './__tests__/**/*.test.js'", + "test:node:old": "mocha -r mocha-hooks.mjs -p './__node_tests__/**/*.test.js' './__tests__/common/formatHelpers/createPropertyFormatter.test.js'", "generate-docs": "node ./scripts/generateDocs.js", "serve-docs": "docsify serve docs -p 3000 -P 12345", "install-cli": "npm install -g $(npm pack)", "release": "node scripts/inject-version.js && changeset publish", - "prepare": "husky install" + "prepare": "husky install", + "postinstall": "patch-package" }, "standard-version": { "scripts": { @@ -88,7 +94,7 @@ "/__tests__/__assets/", "/__tests__/__configs/", "/__tests__/__json_files/", - "/__tests__/__properties/", + "/__tests__/__tokens/", "/__tests__/__output/", "/__tests__/formats/__constants.js" ], @@ -134,6 +140,7 @@ ], "homepage": "https://github.com/amzn/style-dictionary", "dependencies": { + "@bundled-es-modules/deepmerge": "^4.3.1", "@bundled-es-modules/glob": "^10.3.5", "@bundled-es-modules/memfs": "^4.2.3", "@bundled-es-modules/path-browserify": "^1.0.2", @@ -141,6 +148,7 @@ "change-case": "^4.1.2", "commander": "^8.3.0", "fs-extra": "^10.0.0", + "is-plain-object": "^5.0.0", "json5": "^2.2.2", "jsonc-parser": "^3.0.0", "lodash": "^4.17.15", @@ -149,30 +157,34 @@ "url": "^0.11.1" }, "devDependencies": { - "@babel/preset-env": "^7.16.11", "@changesets/cli": "^2.26.2", "@commitlint/cli": "^16.1.0", "@commitlint/config-conventional": "^16.0.0", - "babel-jest": "^27.4.6", - "babel-preset-env": "^1.7.0", + "@esm-bundle/chai-as-promised": "^7.1.1", + "@types/chai": "^4.3.9", + "@web/test-runner": "^0.18.0", + "@web/test-runner-commands": "^0.9.0", + "@web/test-runner-playwright": "^0.11.0", + "chai": "^5.0.0-alpha.2", + "chai-as-promised": "npm:@esm-bundle/chai-as-promised@^7.1.1", "docsify": "^4.12.2", "docsify-cli": "^4.4.3", "eslint": "^8.7.0", "eslint-plugin-jest": "^26.0.0", + "hanbi": "^1.0.1", "husky": "^8.0.3", - "istanbul": "^0.4.5", - "jest": "^27.4.7", "jsdoc-escape-at": "^1.0.1", "jsdoc-to-markdown": "^7.1.0", "json5-jest": "^1.0.1", "less": "^4.1.2", "lint-staged": "^12.3.1", - "node-sass": "^9.0.0", + "mocha": "^10.2.0", "npm-run-all": "^4.1.5", + "patch-package": "^8.0.0", "prettier": "^3.0.3", + "sass": "^1.69.5", "standard-version": "^9.3.2", "stylus": "^0.56.0", - "tsd": "^0.19.1", - "yaml": "^1.10.2" + "yaml": "^2.3.4" } } diff --git a/patches/@esm-bundle+chai-as-promised+7.1.1.patch b/patches/@esm-bundle+chai-as-promised+7.1.1.patch new file mode 100644 index 000000000..9966f2dcb --- /dev/null +++ b/patches/@esm-bundle+chai-as-promised+7.1.1.patch @@ -0,0 +1,16 @@ +diff --git a/node_modules/@esm-bundle/chai-as-promised/index.js b/node_modules/@esm-bundle/chai-as-promised/index.js +new file mode 100644 +index 0000000..f327f74 +--- /dev/null ++++ b/node_modules/@esm-bundle/chai-as-promised/index.js +@@ -0,0 +1,2 @@ ++var t={exports:{}};var e=/\s*function(?:\s|\s*\/\*[^(?:*\/)]+\*\/\s*)*([^\(\/]+)/;function r(t){var r="";if(void 0===t.name){var n=String(t).match(e);n&&(r=n[1])}else r=t.name;return r}var n={compatibleInstance:function(t,e){return e instanceof Error&&t===e},compatibleConstructor:function(t,e){return e instanceof Error?t.constructor===e.constructor||t instanceof e.constructor:(e.prototype instanceof Error||e===Error)&&(t.constructor===e||t instanceof e)},compatibleMessage:function(t,e){var r="string"==typeof t?t:t.message;return e instanceof RegExp?e.test(r):"string"==typeof e&&-1!==r.indexOf(e)},getMessage:function(t){var e="";return t&&t.message?e=t.message:"string"==typeof t&&(e=t),e},getConstructorName:function(t){var e=t;return t instanceof Error?e=r(t.constructor):"function"==typeof t&&(e=r(t).trim()||r(new t)),e}};!function(t){let e=n;t.exports=(r,n)=>{const o=r.Assertion,i=r.assert,s=n.proxify;function c(t){if("function"!=typeof t._obj.then)throw new TypeError(n.inspect(t._obj)+" is not a thenable.");if("function"!=typeof(e=t._obj).catch&&"function"==typeof e.always&&"function"==typeof e.done&&"function"==typeof e.fail&&"function"==typeof e.pipe&&"function"==typeof e.progress&&"function"==typeof e.state)throw new TypeError("Chai as Promised is incompatible with thenables of jQuery<3.0.0, sorry! Please upgrade jQuery or use another Promises/A+ compatible library (see http://promisesaplus.com/).");var e}function a(t){return void 0===s?t:s(t)}function u(t,e){n.addMethod(o.prototype,t,(function(){return c(this),e.apply(this,arguments)}))}function f(t,e){n.addProperty(o.prototype,t,(function(){return c(this),a(e.apply(this,arguments))}))}function p(t,e){t.then((()=>e()),e)}function l(t,e,r){t.assert(!0,null,e,r.expected,r.actual)}function h(t,e,r){t.assert(!1,e,null,r.expected,r.actual)}function d(t){return"function"==typeof t.then?t:t._obj}function y(t){return t instanceof Error?t.toString():e.getConstructorName(t)}n.checkError&&(e=n.checkError);const b=Object.getOwnPropertyNames(o.prototype),m={};for(const t of b)m[t]=Object.getOwnPropertyDescriptor(o.prototype,t);f("fulfilled",(function(){const e=d(this).then((t=>(l(this,"expected promise not to be fulfilled but it was fulfilled with #{act}",{actual:t}),t)),(t=>(h(this,"expected promise to be fulfilled but it was rejected with #{act}",{actual:y(t)}),t)));return t.exports.transferPromiseness(this,e),this})),f("rejected",(function(){const e=d(this).then((t=>(h(this,"expected promise to be rejected but it was fulfilled with #{act}",{actual:t}),t)),(t=>(l(this,"expected promise not to be rejected but it was rejected with #{act}",{actual:y(t)}),t)));return t.exports.transferPromiseness(this,e),this})),u("rejectedWith",(function(r,o,i){let s=null;const c=n.flag(this,"negate")||!1;if(void 0===r&&void 0===o&&void 0===i)return this.rejected;void 0!==i&&n.flag(this,"message",i),r instanceof RegExp||"string"==typeof r?(o=r,r=null):r&&r instanceof Error?s=r.toString():"function"==typeof r?s=e.getConstructorName(r):r=null;const a=Boolean(r&&o);let u="including";o instanceof RegExp&&(u="matching");const f=d(this).then((t=>{let e=null,n=null;return r?(e="expected promise to be rejected with #{exp} but it was fulfilled with #{act}",n=s):o&&(e=`expected promise to be rejected with an error ${u} #{exp} but it was fulfilled with #{act}`,n=o),h(this,e,{expected:n,actual:t}),t}),(t=>{const n=r&&(r instanceof Error?e.compatibleInstance(t,r):e.compatibleConstructor(t,r)),i=o&&e.compatibleMessage(t,o),f=y(t);return c&&a?n&&i&&this.assert(!0,null,"expected promise not to be rejected with #{exp} but it was rejected with #{act}",s,f):(r&&this.assert(n,"expected promise to be rejected with #{exp} but it was rejected with #{act}","expected promise not to be rejected with #{exp} but it was rejected with #{act}",s,f),o&&this.assert(i,`expected promise to be rejected with an error ${u} #{exp} but got #{act}`,`expected promise not to be rejected with an error ${u} #{exp}`,o,e.getMessage(t))),t}));return t.exports.transferPromiseness(this,f),this})),f("eventually",(function(){return n.flag(this,"eventually",!0),this})),u("notify",(function(t){return p(d(this),t),this})),u("become",(function(t,e){return this.eventually.deep.equal(t,e)}));b.filter((t=>"assert"!==t&&"function"==typeof m[t].value)).forEach((t=>{o.overwriteMethod(t,(t=>function(){return g(t,this,arguments)}))}));function g(e,r,o){if(!n.flag(r,"eventually"))return e.apply(r,o),r;const i=d(r).then((e=>(r._obj=e,n.flag(r,"eventually",!1),o?t.exports.transformAsserterArgs(o):o))).then((t=>(e.apply(r,t),r._obj)));return t.exports.transferPromiseness(r,i),r}b.filter((t=>"_obj"!==t&&"function"==typeof m[t].get)).forEach((t=>{o.prototype.__methods.hasOwnProperty(t)?o.overwriteChainableMethod(t,(t=>function(){return g(t,this,arguments)}),(t=>function(){return g(t,this)})):o.overwriteProperty(t,(t=>function(){return a(g(t,this))}))}));const w=Object.getOwnPropertyNames(i).filter((t=>"function"==typeof i[t]));i.isFulfilled=(t,e)=>new o(t,e).to.be.fulfilled,i.isRejected=(t,e,r,n)=>new o(t,n).to.be.rejectedWith(e,r,n),i.becomes=(t,e,r)=>i.eventually.deepEqual(t,e,r),i.doesNotBecome=(t,e,r)=>i.eventually.notDeepEqual(t,e,r),i.eventually={},w.forEach((t=>{i.eventually[t]=function(e){const o=Array.prototype.slice.call(arguments,1);let s;const c=arguments[i[t].length-1];"string"==typeof c&&(s=t=>{throw new r.AssertionError(`${c}\n\nOriginal reason: ${n.inspect(t)}`)});const a=e.then((e=>i[t].apply(i,[e].concat(o))),s);return a.notify=t=>{p(a,t)},a}}))},t.exports.transferPromiseness=(t,e)=>{t.then=e.then.bind(e)},t.exports.transformAsserterArgs=t=>t}(t);var o=t.exports;export{o as default}; ++//# sourceMappingURL=index.js.map +diff --git a/node_modules/@esm-bundle/chai-as-promised/index.js.map b/node_modules/@esm-bundle/chai-as-promised/index.js.map +new file mode 100644 +index 0000000..172dee6 +--- /dev/null ++++ b/node_modules/@esm-bundle/chai-as-promised/index.js.map +@@ -0,0 +1 @@ ++{"version":3,"file":"index.js","sources":["../node_modules/.pnpm/check-error@1.0.2/node_modules/check-error/index.js","../node_modules/.pnpm/chai-as-promised@7.1.1_chai@4.3.4/node_modules/chai-as-promised/lib/chai-as-promised.js"],"sourcesContent":["'use strict';\n\n/* !\n * Chai - checkError utility\n * Copyright(c) 2012-2016 Jake Luer \n * MIT Licensed\n */\n\n/**\n * ### .checkError\n *\n * Checks that an error conforms to a given set of criteria and/or retrieves information about it.\n *\n * @api public\n */\n\n/**\n * ### .compatibleInstance(thrown, errorLike)\n *\n * Checks if two instances are compatible (strict equal).\n * Returns false if errorLike is not an instance of Error, because instances\n * can only be compatible if they're both error instances.\n *\n * @name compatibleInstance\n * @param {Error} thrown error\n * @param {Error|ErrorConstructor} errorLike object to compare against\n * @namespace Utils\n * @api public\n */\n\nfunction compatibleInstance(thrown, errorLike) {\n return errorLike instanceof Error && thrown === errorLike;\n}\n\n/**\n * ### .compatibleConstructor(thrown, errorLike)\n *\n * Checks if two constructors are compatible.\n * This function can receive either an error constructor or\n * an error instance as the `errorLike` argument.\n * Constructors are compatible if they're the same or if one is\n * an instance of another.\n *\n * @name compatibleConstructor\n * @param {Error} thrown error\n * @param {Error|ErrorConstructor} errorLike object to compare against\n * @namespace Utils\n * @api public\n */\n\nfunction compatibleConstructor(thrown, errorLike) {\n if (errorLike instanceof Error) {\n // If `errorLike` is an instance of any error we compare their constructors\n return thrown.constructor === errorLike.constructor || thrown instanceof errorLike.constructor;\n } else if (errorLike.prototype instanceof Error || errorLike === Error) {\n // If `errorLike` is a constructor that inherits from Error, we compare `thrown` to `errorLike` directly\n return thrown.constructor === errorLike || thrown instanceof errorLike;\n }\n\n return false;\n}\n\n/**\n * ### .compatibleMessage(thrown, errMatcher)\n *\n * Checks if an error's message is compatible with a matcher (String or RegExp).\n * If the message contains the String or passes the RegExp test,\n * it is considered compatible.\n *\n * @name compatibleMessage\n * @param {Error} thrown error\n * @param {String|RegExp} errMatcher to look for into the message\n * @namespace Utils\n * @api public\n */\n\nfunction compatibleMessage(thrown, errMatcher) {\n var comparisonString = typeof thrown === 'string' ? thrown : thrown.message;\n if (errMatcher instanceof RegExp) {\n return errMatcher.test(comparisonString);\n } else if (typeof errMatcher === 'string') {\n return comparisonString.indexOf(errMatcher) !== -1; // eslint-disable-line no-magic-numbers\n }\n\n return false;\n}\n\n/**\n * ### .getFunctionName(constructorFn)\n *\n * Returns the name of a function.\n * This also includes a polyfill function if `constructorFn.name` is not defined.\n *\n * @name getFunctionName\n * @param {Function} constructorFn\n * @namespace Utils\n * @api private\n */\n\nvar functionNameMatch = /\\s*function(?:\\s|\\s*\\/\\*[^(?:*\\/)]+\\*\\/\\s*)*([^\\(\\/]+)/;\nfunction getFunctionName(constructorFn) {\n var name = '';\n if (typeof constructorFn.name === 'undefined') {\n // Here we run a polyfill if constructorFn.name is not defined\n var match = String(constructorFn).match(functionNameMatch);\n if (match) {\n name = match[1];\n }\n } else {\n name = constructorFn.name;\n }\n\n return name;\n}\n\n/**\n * ### .getConstructorName(errorLike)\n *\n * Gets the constructor name for an Error instance or constructor itself.\n *\n * @name getConstructorName\n * @param {Error|ErrorConstructor} errorLike\n * @namespace Utils\n * @api public\n */\n\nfunction getConstructorName(errorLike) {\n var constructorName = errorLike;\n if (errorLike instanceof Error) {\n constructorName = getFunctionName(errorLike.constructor);\n } else if (typeof errorLike === 'function') {\n // If `err` is not an instance of Error it is an error constructor itself or another function.\n // If we've got a common function we get its name, otherwise we may need to create a new instance\n // of the error just in case it's a poorly-constructed error. Please see chaijs/chai/issues/45 to know more.\n constructorName = getFunctionName(errorLike).trim() ||\n getFunctionName(new errorLike()); // eslint-disable-line new-cap\n }\n\n return constructorName;\n}\n\n/**\n * ### .getMessage(errorLike)\n *\n * Gets the error message from an error.\n * If `err` is a String itself, we return it.\n * If the error has no message, we return an empty string.\n *\n * @name getMessage\n * @param {Error|String} errorLike\n * @namespace Utils\n * @api public\n */\n\nfunction getMessage(errorLike) {\n var msg = '';\n if (errorLike && errorLike.message) {\n msg = errorLike.message;\n } else if (typeof errorLike === 'string') {\n msg = errorLike;\n }\n\n return msg;\n}\n\nmodule.exports = {\n compatibleInstance: compatibleInstance,\n compatibleConstructor: compatibleConstructor,\n compatibleMessage: compatibleMessage,\n getMessage: getMessage,\n getConstructorName: getConstructorName,\n};\n","\"use strict\";\n/* eslint-disable no-invalid-this */\nlet checkError = require(\"check-error\");\n\nmodule.exports = (chai, utils) => {\n const Assertion = chai.Assertion;\n const assert = chai.assert;\n const proxify = utils.proxify;\n\n // If we are using a version of Chai that has checkError on it,\n // we want to use that version to be consistent. Otherwise, we use\n // what was passed to the factory.\n if (utils.checkError) {\n checkError = utils.checkError;\n }\n\n function isLegacyJQueryPromise(thenable) {\n // jQuery promises are Promises/A+-compatible since 3.0.0. jQuery 3.0.0 is also the first version\n // to define the catch method.\n return typeof thenable.catch !== \"function\" &&\n typeof thenable.always === \"function\" &&\n typeof thenable.done === \"function\" &&\n typeof thenable.fail === \"function\" &&\n typeof thenable.pipe === \"function\" &&\n typeof thenable.progress === \"function\" &&\n typeof thenable.state === \"function\";\n }\n\n function assertIsAboutPromise(assertion) {\n if (typeof assertion._obj.then !== \"function\") {\n throw new TypeError(utils.inspect(assertion._obj) + \" is not a thenable.\");\n }\n if (isLegacyJQueryPromise(assertion._obj)) {\n throw new TypeError(\"Chai as Promised is incompatible with thenables of jQuery<3.0.0, sorry! Please \" +\n \"upgrade jQuery or use another Promises/A+ compatible library (see \" +\n \"http://promisesaplus.com/).\");\n }\n }\n\n function proxifyIfSupported(assertion) {\n return proxify === undefined ? assertion : proxify(assertion);\n }\n\n function method(name, asserter) {\n utils.addMethod(Assertion.prototype, name, function () {\n assertIsAboutPromise(this);\n return asserter.apply(this, arguments);\n });\n }\n\n function property(name, asserter) {\n utils.addProperty(Assertion.prototype, name, function () {\n assertIsAboutPromise(this);\n return proxifyIfSupported(asserter.apply(this, arguments));\n });\n }\n\n function doNotify(promise, done) {\n promise.then(() => done(), done);\n }\n\n // These are for clarity and to bypass Chai refusing to allow `undefined` as actual when used with `assert`.\n function assertIfNegated(assertion, message, extra) {\n assertion.assert(true, null, message, extra.expected, extra.actual);\n }\n\n function assertIfNotNegated(assertion, message, extra) {\n assertion.assert(false, message, null, extra.expected, extra.actual);\n }\n\n function getBasePromise(assertion) {\n // We need to chain subsequent asserters on top of ones in the chain already (consider\n // `eventually.have.property(\"foo\").that.equals(\"bar\")`), only running them after the existing ones pass.\n // So the first base-promise is `assertion._obj`, but after that we use the assertions themselves, i.e.\n // previously derived promises, to chain off of.\n return typeof assertion.then === \"function\" ? assertion : assertion._obj;\n }\n\n function getReasonName(reason) {\n return reason instanceof Error ? reason.toString() : checkError.getConstructorName(reason);\n }\n\n // Grab these first, before we modify `Assertion.prototype`.\n\n const propertyNames = Object.getOwnPropertyNames(Assertion.prototype);\n\n const propertyDescs = {};\n for (const name of propertyNames) {\n propertyDescs[name] = Object.getOwnPropertyDescriptor(Assertion.prototype, name);\n }\n\n property(\"fulfilled\", function () {\n const derivedPromise = getBasePromise(this).then(\n value => {\n assertIfNegated(this,\n \"expected promise not to be fulfilled but it was fulfilled with #{act}\",\n { actual: value });\n return value;\n },\n reason => {\n assertIfNotNegated(this,\n \"expected promise to be fulfilled but it was rejected with #{act}\",\n { actual: getReasonName(reason) });\n return reason;\n }\n );\n\n module.exports.transferPromiseness(this, derivedPromise);\n return this;\n });\n\n property(\"rejected\", function () {\n const derivedPromise = getBasePromise(this).then(\n value => {\n assertIfNotNegated(this,\n \"expected promise to be rejected but it was fulfilled with #{act}\",\n { actual: value });\n return value;\n },\n reason => {\n assertIfNegated(this,\n \"expected promise not to be rejected but it was rejected with #{act}\",\n { actual: getReasonName(reason) });\n\n // Return the reason, transforming this into a fulfillment, to allow further assertions, e.g.\n // `promise.should.be.rejected.and.eventually.equal(\"reason\")`.\n return reason;\n }\n );\n\n module.exports.transferPromiseness(this, derivedPromise);\n return this;\n });\n\n method(\"rejectedWith\", function (errorLike, errMsgMatcher, message) {\n let errorLikeName = null;\n const negate = utils.flag(this, \"negate\") || false;\n\n // rejectedWith with that is called without arguments is\n // the same as a plain \".rejected\" use.\n if (errorLike === undefined && errMsgMatcher === undefined &&\n message === undefined) {\n /* eslint-disable no-unused-expressions */\n return this.rejected;\n /* eslint-enable no-unused-expressions */\n }\n\n if (message !== undefined) {\n utils.flag(this, \"message\", message);\n }\n\n if (errorLike instanceof RegExp || typeof errorLike === \"string\") {\n errMsgMatcher = errorLike;\n errorLike = null;\n } else if (errorLike && errorLike instanceof Error) {\n errorLikeName = errorLike.toString();\n } else if (typeof errorLike === \"function\") {\n errorLikeName = checkError.getConstructorName(errorLike);\n } else {\n errorLike = null;\n }\n const everyArgIsDefined = Boolean(errorLike && errMsgMatcher);\n\n let matcherRelation = \"including\";\n if (errMsgMatcher instanceof RegExp) {\n matcherRelation = \"matching\";\n }\n\n const derivedPromise = getBasePromise(this).then(\n value => {\n let assertionMessage = null;\n let expected = null;\n\n if (errorLike) {\n assertionMessage = \"expected promise to be rejected with #{exp} but it was fulfilled with #{act}\";\n expected = errorLikeName;\n } else if (errMsgMatcher) {\n assertionMessage = `expected promise to be rejected with an error ${matcherRelation} #{exp} but ` +\n `it was fulfilled with #{act}`;\n expected = errMsgMatcher;\n }\n\n assertIfNotNegated(this, assertionMessage, { expected, actual: value });\n return value;\n },\n reason => {\n const errorLikeCompatible = errorLike && (errorLike instanceof Error ?\n checkError.compatibleInstance(reason, errorLike) :\n checkError.compatibleConstructor(reason, errorLike));\n\n const errMsgMatcherCompatible = errMsgMatcher && checkError.compatibleMessage(reason, errMsgMatcher);\n\n const reasonName = getReasonName(reason);\n\n if (negate && everyArgIsDefined) {\n if (errorLikeCompatible && errMsgMatcherCompatible) {\n this.assert(true,\n null,\n \"expected promise not to be rejected with #{exp} but it was rejected \" +\n \"with #{act}\",\n errorLikeName,\n reasonName);\n }\n } else {\n if (errorLike) {\n this.assert(errorLikeCompatible,\n \"expected promise to be rejected with #{exp} but it was rejected with #{act}\",\n \"expected promise not to be rejected with #{exp} but it was rejected \" +\n \"with #{act}\",\n errorLikeName,\n reasonName);\n }\n\n if (errMsgMatcher) {\n this.assert(errMsgMatcherCompatible,\n `expected promise to be rejected with an error ${matcherRelation} #{exp} but got ` +\n `#{act}`,\n `expected promise not to be rejected with an error ${matcherRelation} #{exp}`,\n errMsgMatcher,\n checkError.getMessage(reason));\n }\n }\n\n return reason;\n }\n );\n\n module.exports.transferPromiseness(this, derivedPromise);\n return this;\n });\n\n property(\"eventually\", function () {\n utils.flag(this, \"eventually\", true);\n return this;\n });\n\n method(\"notify\", function (done) {\n doNotify(getBasePromise(this), done);\n return this;\n });\n\n method(\"become\", function (value, message) {\n return this.eventually.deep.equal(value, message);\n });\n\n // ### `eventually`\n\n // We need to be careful not to trigger any getters, thus `Object.getOwnPropertyDescriptor` usage.\n const methodNames = propertyNames.filter(name => {\n return name !== \"assert\" && typeof propertyDescs[name].value === \"function\";\n });\n\n methodNames.forEach(methodName => {\n Assertion.overwriteMethod(methodName, originalMethod => function () {\n return doAsserterAsyncAndAddThen(originalMethod, this, arguments);\n });\n });\n\n const getterNames = propertyNames.filter(name => {\n return name !== \"_obj\" && typeof propertyDescs[name].get === \"function\";\n });\n\n getterNames.forEach(getterName => {\n // Chainable methods are things like `an`, which can work both for `.should.be.an.instanceOf` and as\n // `should.be.an(\"object\")`. We need to handle those specially.\n const isChainableMethod = Assertion.prototype.__methods.hasOwnProperty(getterName);\n\n if (isChainableMethod) {\n Assertion.overwriteChainableMethod(\n getterName,\n originalMethod => function () {\n return doAsserterAsyncAndAddThen(originalMethod, this, arguments);\n },\n originalGetter => function () {\n return doAsserterAsyncAndAddThen(originalGetter, this);\n }\n );\n } else {\n Assertion.overwriteProperty(getterName, originalGetter => function () {\n return proxifyIfSupported(doAsserterAsyncAndAddThen(originalGetter, this));\n });\n }\n });\n\n function doAsserterAsyncAndAddThen(asserter, assertion, args) {\n // Since we're intercepting all methods/properties, we need to just pass through if they don't want\n // `eventually`, or if we've already fulfilled the promise (see below).\n if (!utils.flag(assertion, \"eventually\")) {\n asserter.apply(assertion, args);\n return assertion;\n }\n\n const derivedPromise = getBasePromise(assertion).then(value => {\n // Set up the environment for the asserter to actually run: `_obj` should be the fulfillment value, and\n // now that we have the value, we're no longer in \"eventually\" mode, so we won't run any of this code,\n // just the base Chai code that we get to via the short-circuit above.\n assertion._obj = value;\n utils.flag(assertion, \"eventually\", false);\n\n return args ? module.exports.transformAsserterArgs(args) : args;\n }).then(newArgs => {\n asserter.apply(assertion, newArgs);\n\n // Because asserters, for example `property`, can change the value of `_obj` (i.e. change the \"object\"\n // flag), we need to communicate this value change to subsequent chained asserters. Since we build a\n // promise chain paralleling the asserter chain, we can use it to communicate such changes.\n return assertion._obj;\n });\n\n module.exports.transferPromiseness(assertion, derivedPromise);\n return assertion;\n }\n\n // ### Now use the `Assertion` framework to build an `assert` interface.\n const originalAssertMethods = Object.getOwnPropertyNames(assert).filter(propName => {\n return typeof assert[propName] === \"function\";\n });\n\n assert.isFulfilled = (promise, message) => (new Assertion(promise, message)).to.be.fulfilled;\n\n assert.isRejected = (promise, errorLike, errMsgMatcher, message) => {\n const assertion = new Assertion(promise, message);\n return assertion.to.be.rejectedWith(errorLike, errMsgMatcher, message);\n };\n\n assert.becomes = (promise, value, message) => assert.eventually.deepEqual(promise, value, message);\n\n assert.doesNotBecome = (promise, value, message) => assert.eventually.notDeepEqual(promise, value, message);\n\n assert.eventually = {};\n originalAssertMethods.forEach(assertMethodName => {\n assert.eventually[assertMethodName] = function (promise) {\n const otherArgs = Array.prototype.slice.call(arguments, 1);\n\n let customRejectionHandler;\n const message = arguments[assert[assertMethodName].length - 1];\n if (typeof message === \"string\") {\n customRejectionHandler = reason => {\n throw new chai.AssertionError(`${message}\\n\\nOriginal reason: ${utils.inspect(reason)}`);\n };\n }\n\n const returnedPromise = promise.then(\n fulfillmentValue => assert[assertMethodName].apply(assert, [fulfillmentValue].concat(otherArgs)),\n customRejectionHandler\n );\n\n returnedPromise.notify = done => {\n doNotify(returnedPromise, done);\n };\n\n return returnedPromise;\n };\n });\n};\n\nmodule.exports.transferPromiseness = (assertion, promise) => {\n assertion.then = promise.then.bind(promise);\n};\n\nmodule.exports.transformAsserterArgs = values => values;\n"],"names":["functionNameMatch","getFunctionName","constructorFn","name","match","String","checkError","compatibleInstance","thrown","errorLike","Error","compatibleConstructor","constructor","prototype","compatibleMessage","errMatcher","comparisonString","message","RegExp","test","indexOf","getMessage","msg","getConstructorName","constructorName","trim","require$$0","module","chai","utils","Assertion","assert","proxify","assertIsAboutPromise","assertion","_obj","then","TypeError","inspect","thenable","catch","always","done","fail","pipe","progress","state","proxifyIfSupported","undefined","method","asserter","addMethod","this","apply","arguments","property","addProperty","doNotify","promise","assertIfNegated","extra","expected","actual","assertIfNotNegated","getBasePromise","getReasonName","reason","toString","propertyNames","Object","getOwnPropertyNames","propertyDescs","getOwnPropertyDescriptor","derivedPromise","value","exports","transferPromiseness","errMsgMatcher","errorLikeName","negate","flag","rejected","everyArgIsDefined","Boolean","matcherRelation","assertionMessage","errorLikeCompatible","errMsgMatcherCompatible","reasonName","eventually","deep","equal","filter","forEach","methodName","overwriteMethod","originalMethod","doAsserterAsyncAndAddThen","args","transformAsserterArgs","newArgs","get","getterName","__methods","hasOwnProperty","overwriteChainableMethod","originalGetter","overwriteProperty","originalAssertMethods","propName","isFulfilled","to","be","fulfilled","isRejected","rejectedWith","becomes","deepEqual","doesNotBecome","notDeepEqual","assertMethodName","otherArgs","Array","slice","call","customRejectionHandler","length","AssertionError","returnedPromise","fulfillmentValue","concat","notify","bind","values"],"mappings":"mBAmGA,IAAIA,EAAoB,yDACxB,SAASC,EAAgBC,GACvB,IAAIC,EAAO,GACX,QAAkC,IAAvBD,EAAcC,KAAsB,CAE7C,IAAIC,EAAQC,OAAOH,GAAeE,MAAMJ,GACpCI,IACFD,EAAOC,EAAM,SAGfD,EAAOD,EAAcC,KAGvB,OAAOA,MAqDTG,EAAiB,CACfC,mBAxIF,SAA4BC,EAAQC,GAClC,OAAOA,aAAqBC,OAASF,IAAWC,GAwIhDE,sBArHF,SAA+BH,EAAQC,GACrC,OAAIA,aAAqBC,MAEhBF,EAAOI,cAAgBH,EAAUG,aAAeJ,aAAkBC,EAAUG,aAC1EH,EAAUI,qBAAqBH,OAASD,IAAcC,SAExDF,EAAOI,cAAgBH,GAAaD,aAAkBC,IAgH/DK,kBA5FF,SAA2BN,EAAQO,GACjC,IAAIC,EAAqC,iBAAXR,EAAsBA,EAASA,EAAOS,QACpE,OAAIF,aAAsBG,OACjBH,EAAWI,KAAKH,GACQ,iBAAfD,IACiC,IAA1CC,EAAiBI,QAAQL,IAwFlCM,WAfF,SAAoBZ,GAClB,IAAIa,EAAM,GAOV,OANIb,GAAaA,EAAUQ,QACzBK,EAAMb,EAAUQ,QACc,iBAAdR,IAChBa,EAAMb,GAGDa,GAQPC,mBA5CF,SAA4Bd,GAC1B,IAAIe,EAAkBf,EAWtB,OAVIA,aAAqBC,MACvBc,EAAkBvB,EAAgBQ,EAAUG,aACd,mBAAdH,IAIhBe,EAAkBvB,EAAgBQ,GAAWgB,QACzCxB,EAAgB,IAAIQ,IAGnBe,iBCxIT,IAAIlB,EAAaoB,EAEjBC,UAAiB,CAACC,EAAMC,KACpB,MAAMC,EAAYF,EAAKE,UACjBC,EAASH,EAAKG,OACdC,EAAUH,EAAMG,QAqBtB,SAASC,EAAqBC,GAC1B,GAAmC,mBAAxBA,EAAUC,KAAKC,KACtB,MAAM,IAAIC,UAAUR,EAAMS,QAAQJ,EAAUC,MAAQ,uBAExD,GAbiC,mBAHNI,EAgBDL,EAAUC,MAbbK,OACW,mBAApBD,EAASE,QACS,mBAAlBF,EAASG,MACS,mBAAlBH,EAASI,MACS,mBAAlBJ,EAASK,MACa,mBAAtBL,EAASM,UACU,mBAAnBN,EAASO,MAQnB,MAAM,IAAIT,UAAU,gLAjB5B,IAA+BE,EAuB/B,SAASQ,EAAmBb,GACxB,YAAmBc,IAAZhB,EAAwBE,EAAYF,EAAQE,GAGvD,SAASe,EAAO9C,EAAM+C,GAClBrB,EAAMsB,UAAUrB,EAAUjB,UAAWV,GAAM,WAEvC,OADA8B,EAAqBmB,MACdF,EAASG,MAAMD,KAAME,cAIpC,SAASC,EAASpD,EAAM+C,GACpBrB,EAAM2B,YAAY1B,EAAUjB,UAAWV,GAAM,WAEzC,OADA8B,EAAqBmB,MACdL,EAAmBG,EAASG,MAAMD,KAAME,eAIvD,SAASG,EAASC,EAAShB,GACvBgB,EAAQtB,MAAK,IAAMM,KAAQA,GAI/B,SAASiB,EAAgBzB,EAAWjB,EAAS2C,GACzC1B,EAAUH,QAAO,EAAM,KAAMd,EAAS2C,EAAMC,SAAUD,EAAME,QAGhE,SAASC,EAAmB7B,EAAWjB,EAAS2C,GAC5C1B,EAAUH,QAAO,EAAOd,EAAS,KAAM2C,EAAMC,SAAUD,EAAME,QAGjE,SAASE,EAAe9B,GAKpB,MAAiC,mBAAnBA,EAAUE,KAAsBF,EAAYA,EAAUC,KAGxE,SAAS8B,EAAcC,GACnB,OAAOA,aAAkBxD,MAAQwD,EAAOC,WAAa7D,EAAWiB,mBAAmB2C,GAnEnFrC,EAAMvB,aACNA,EAAauB,EAAMvB,YAuEvB,MAAM8D,EAAgBC,OAAOC,oBAAoBxC,EAAUjB,WAErD0D,EAAgB,GACtB,IAAK,MAAMpE,KAAQiE,EACfG,EAAcpE,GAAQkE,OAAOG,yBAAyB1C,EAAUjB,UAAWV,GAG/EoD,EAAS,aAAa,WAClB,MAAMkB,EAAiBT,EAAeZ,MAAMhB,MACxCsC,IACIf,EAAgBP,KACA,wEACA,CAAEU,OAAQY,IACnBA,KAEXR,IACIH,EAAmBX,KACA,mEACA,CAAEU,OAAQG,EAAcC,KACpCA,KAKf,OADAvC,EAAOgD,QAAQC,oBAAoBxB,KAAMqB,GAClCrB,QAGXG,EAAS,YAAY,WACjB,MAAMkB,EAAiBT,EAAeZ,MAAMhB,MACxCsC,IACIX,EAAmBX,KACA,mEACA,CAAEU,OAAQY,IACtBA,KAEXR,IACIP,EAAgBP,KACA,sEACA,CAAEU,OAAQG,EAAcC,KAIjCA,KAKf,OADAvC,EAAOgD,QAAQC,oBAAoBxB,KAAMqB,GAClCrB,QAGXH,EAAO,gBAAgB,SAAUxC,EAAWoE,EAAe5D,GACvD,IAAI6D,EAAgB,KACpB,MAAMC,EAASlD,EAAMmD,KAAK5B,KAAM,YAAa,EAI7C,QAAkBJ,IAAdvC,QAA6CuC,IAAlB6B,QACf7B,IAAZ/B,EAEA,OAAOmC,KAAK6B,cAIAjC,IAAZ/B,GACAY,EAAMmD,KAAK5B,KAAM,UAAWnC,GAG5BR,aAAqBS,QAA+B,iBAAdT,GACtCoE,EAAgBpE,EAChBA,EAAY,MACLA,GAAaA,aAAqBC,MACzCoE,EAAgBrE,EAAU0D,WACE,mBAAd1D,EACdqE,EAAgBxE,EAAWiB,mBAAmBd,GAE9CA,EAAY,KAEhB,MAAMyE,EAAoBC,QAAQ1E,GAAaoE,GAE/C,IAAIO,EAAkB,YAClBP,aAAyB3D,SACzBkE,EAAkB,YAGtB,MAAMX,EAAiBT,EAAeZ,MAAMhB,MACxCsC,IACI,IAAIW,EAAmB,KACnBxB,EAAW,KAYf,OAVIpD,GACA4E,EAAmB,+EACnBxB,EAAWiB,GACJD,IACPQ,EAAmB,iDAAiDD,4CAEpEvB,EAAWgB,GAGfd,EAAmBX,KAAMiC,EAAkB,CAAExB,SAAAA,EAAUC,OAAQY,IACxDA,KAEXR,IACI,MAAMoB,EAAsB7E,IAAcA,aAAqBC,MACvBJ,EAAWC,mBAAmB2D,EAAQzD,GACtCH,EAAWK,sBAAsBuD,EAAQzD,IAE3E8E,EAA0BV,GAAiBvE,EAAWQ,kBAAkBoD,EAAQW,GAEhFW,EAAavB,EAAcC,GA+BjC,OA7BIa,GAAUG,EACNI,GAAuBC,GACvBnC,KAAKrB,QAAO,EACA,KACA,kFAEA+C,EACAU,IAGZ/E,GACA2C,KAAKrB,OAAOuD,EACA,8EACA,kFAEAR,EACAU,GAGZX,GACAzB,KAAKrB,OAAOwD,EACA,iDAAiDH,0BAEjD,qDAAqDA,WACrDP,EACAvE,EAAWe,WAAW6C,KAInCA,KAKf,OADAvC,EAAOgD,QAAQC,oBAAoBxB,KAAMqB,GAClCrB,QAGXG,EAAS,cAAc,WAEnB,OADA1B,EAAMmD,KAAK5B,KAAM,cAAc,GACxBA,QAGXH,EAAO,UAAU,SAAUP,GAEvB,OADAe,EAASO,EAAeZ,MAAOV,GACxBU,QAGXH,EAAO,UAAU,SAAUyB,EAAOzD,GAC9B,OAAOmC,KAAKqC,WAAWC,KAAKC,MAAMjB,EAAOzD,MAMzBmD,EAAcwB,QAAOzF,GACrB,WAATA,GAA0D,mBAA9BoE,EAAcpE,GAAMuE,QAG/CmB,SAAQC,IAChBhE,EAAUiE,gBAAgBD,GAAYE,GAAkB,WACpD,OAAOC,EAA0BD,EAAgB5C,KAAME,iBA8B/D,SAAS2C,EAA0B/C,EAAUhB,EAAWgE,GAGpD,IAAKrE,EAAMmD,KAAK9C,EAAW,cAEvB,OADAgB,EAASG,MAAMnB,EAAWgE,GACnBhE,EAGX,MAAMuC,EAAiBT,EAAe9B,GAAWE,MAAKsC,IAIlDxC,EAAUC,KAAOuC,EACjB7C,EAAMmD,KAAK9C,EAAW,cAAc,GAE7BgE,EAAOvE,EAAOgD,QAAQwB,sBAAsBD,GAAQA,KAC5D9D,MAAKgE,IACJlD,EAASG,MAAMnB,EAAWkE,GAKnBlE,EAAUC,QAIrB,OADAR,EAAOgD,QAAQC,oBAAoB1C,EAAWuC,GACvCvC,EApDSkC,EAAcwB,QAAOzF,GACrB,SAATA,GAAsD,mBAA5BoE,EAAcpE,GAAMkG,MAG7CR,SAAQS,IAGUxE,EAAUjB,UAAU0F,UAAUC,eAAeF,GAGnExE,EAAU2E,yBACNH,GACAN,GAAkB,WACd,OAAOC,EAA0BD,EAAgB5C,KAAME,cAE3DoD,GAAkB,WACd,OAAOT,EAA0BS,EAAgBtD,SAIzDtB,EAAU6E,kBAAkBL,GAAYI,GAAkB,WACtD,OAAO3D,EAAmBkD,EAA0BS,EAAgBtD,aAmChF,MAAMwD,EAAwBvC,OAAOC,oBAAoBvC,GAAQ6D,QAAOiB,GACjC,mBAArB9E,EAAO8E,KAGzB9E,EAAO+E,YAAc,CAACpD,EAASzC,IAAY,IAAKa,EAAU4B,EAASzC,GAAU8F,GAAGC,GAAGC,UAEnFlF,EAAOmF,WAAa,CAACxD,EAASjD,EAAWoE,EAAe5D,IAClC,IAAIa,EAAU4B,EAASzC,GACxB8F,GAAGC,GAAGG,aAAa1G,EAAWoE,EAAe5D,GAGlEc,EAAOqF,QAAU,CAAC1D,EAASgB,EAAOzD,IAAYc,EAAO0D,WAAW4B,UAAU3D,EAASgB,EAAOzD,GAE1Fc,EAAOuF,cAAgB,CAAC5D,EAASgB,EAAOzD,IAAYc,EAAO0D,WAAW8B,aAAa7D,EAASgB,EAAOzD,GAEnGc,EAAO0D,WAAa,GACpBmB,EAAsBf,SAAQ2B,IAC1BzF,EAAO0D,WAAW+B,GAAoB,SAAU9D,GAC5C,MAAM+D,EAAYC,MAAM7G,UAAU8G,MAAMC,KAAKtE,UAAW,GAExD,IAAIuE,EACJ,MAAM5G,EAAUqC,UAAUvB,EAAOyF,GAAkBM,OAAS,GACrC,iBAAZ7G,IACP4G,EAAyB3D,IACrB,MAAM,IAAItC,EAAKmG,eAAe,GAAG9G,yBAA+BY,EAAMS,QAAQ4B,QAItF,MAAM8D,EAAkBtE,EAAQtB,MAC5B6F,GAAoBlG,EAAOyF,GAAkBnE,MAAMtB,EAAQ,CAACkG,GAAkBC,OAAOT,KACrFI,GAOJ,OAJAG,EAAgBG,OAASzF,IACrBe,EAASuE,EAAiBtF,IAGvBsF,OAKnBrG,8BAAqC,CAACO,EAAWwB,KAC7CxB,EAAUE,KAAOsB,EAAQtB,KAAKgG,KAAK1E,IAGvC/B,gCAAuC0G,GAAUA"} +\ No newline at end of file diff --git a/patches/@web+test-runner-commands+0.9.0.patch b/patches/@web+test-runner-commands+0.9.0.patch new file mode 100644 index 000000000..97c9745f3 --- /dev/null +++ b/patches/@web+test-runner-commands+0.9.0.patch @@ -0,0 +1,74 @@ +diff --git a/node_modules/@web/test-runner-commands/dist/index.js b/node_modules/@web/test-runner-commands/dist/index.js +index 86ca323..9f4c9b0 100644 +--- a/node_modules/@web/test-runner-commands/dist/index.js ++++ b/node_modules/@web/test-runner-commands/dist/index.js +@@ -19,4 +19,7 @@ var filePlugin_1 = require("./filePlugin"); + Object.defineProperty(exports, "filePlugin", { enumerable: true, get: function () { return filePlugin_1.filePlugin; } }); + var snapshotPlugin_1 = require("./snapshotPlugin"); + Object.defineProperty(exports, "snapshotPlugin", { enumerable: true, get: function () { return snapshotPlugin_1.snapshotPlugin; } }); ++Object.defineProperty(exports, "SnapshotStore", { enumerable: true, get: function () { return snapshotPlugin_1.SnapshotStore; } }); ++Object.defineProperty(exports, "getSnapshotPath", { enumerable: true, get: function () { return snapshotPlugin_1.getSnapshotPath; } }); ++Object.defineProperty(exports, "isSaveSnapshotPayload", { enumerable: true, get: function () { return snapshotPlugin_1.isSaveSnapshotPayload; } }); + //# sourceMappingURL=index.js.map +\ No newline at end of file +diff --git a/node_modules/@web/test-runner-commands/dist/snapshotPlugin.js b/node_modules/@web/test-runner-commands/dist/snapshotPlugin.js +index 6606c7e..9d49140 100644 +--- a/node_modules/@web/test-runner-commands/dist/snapshotPlugin.js ++++ b/node_modules/@web/test-runner-commands/dist/snapshotPlugin.js +@@ -33,6 +33,7 @@ function isSaveSnapshotPayload(payload) { + throw new Error('You must provide a content option'); + return true; + } ++exports.isSaveSnapshotPayload = isSaveSnapshotPayload; + function getSnapshotPath(testFile) { + const testDir = path_1.default.dirname(testFile); + const testFileName = path_1.default.basename(testFile); +@@ -40,6 +41,7 @@ function getSnapshotPath(testFile) { + const fileWithoutExt = testFileName.substring(0, testFileName.length - ext.length); + return path_1.default.join(testDir, '__snapshots__', `${fileWithoutExt}.snap.js`); + } ++exports.getSnapshotPath = getSnapshotPath; + class SnapshotStore { + constructor() { + this.snapshots = new Map(); +@@ -78,9 +80,7 @@ class SnapshotStore { + const nameStr = JSON.stringify(name); + const startMarker = `snapshots[${nameStr}]`; + const endMarker = `/* end snapshot ${name} */\n\n`; +- const replacement = updatedSnapshot +- ? `${startMarker} = \n\`${updatedSnapshot}\`;\n${endMarker}` +- : ''; ++ const replacement = `${startMarker} = \n\`${updatedSnapshot}\`;\n${endMarker}`; + const content = await this.get(testFilePath); + let updatedContent; + const startIndex = content.indexOf(startMarker); +@@ -127,6 +127,7 @@ class SnapshotStore { + } + } + } ++exports.SnapshotStore = SnapshotStore; + function snapshotPlugin(config) { + const updateSnapshots = config && config.updateSnapshots; + const snapshots = new SnapshotStore(); +diff --git a/node_modules/@web/test-runner-commands/plugins.mjs b/node_modules/@web/test-runner-commands/plugins.mjs +index 88bc3da..4fb6254 100644 +--- a/node_modules/@web/test-runner-commands/plugins.mjs ++++ b/node_modules/@web/test-runner-commands/plugins.mjs +@@ -11,6 +11,9 @@ const { + a11ySnapshotPlugin, + filePlugin, + snapshotPlugin, ++ SnapshotStore, ++ getSnapshotPath, ++ isSaveSnapshotPayload, + } = cjsEntrypoint; + + export { +@@ -23,4 +26,7 @@ export { + a11ySnapshotPlugin, + filePlugin, + snapshotPlugin, ++ SnapshotStore, ++ getSnapshotPath, ++ isSaveSnapshotPayload, + }; diff --git a/snapshot-plugin/chai-wtr-snapshot.js b/snapshot-plugin/chai-wtr-snapshot.js new file mode 100644 index 000000000..18bacdc2d --- /dev/null +++ b/snapshot-plugin/chai-wtr-snapshot.js @@ -0,0 +1,169 @@ +/** + * TODO: allow inline snapshots (requires update to @web/test-runner-commands snapshot plugin) + * TODO: contribute feature to WTR snapshot plugin to allow Javascript complex values as snapshots + * e.g. with https://www.npmjs.com/package/pretty-format + */ + +/** + * @typedef {import('@types/chai')} Chai + */ + +const isBrowser = typeof window === 'object'; + +async function blobToDataUrl(blob) { + let buffer = Buffer.from(await blob.text()); + return 'data:' + blob.type + ';base64,' + buffer.toString('base64'); +} + +function getTestPath(runnable, index) { + let path = []; + let node; + if (!runnable) { + return undefined; + } + if (runnable.type === 'hook') { + node = runnable.ctx.currentTest; + } else { + node = runnable; + } + + while (node && node.parent) { + if (node.title) { + path.push(node.title); + } + node = node.parent; + } + path = path.reverse(); + if (Number.isInteger(index)) { + if (index < 0) { + throw new Error('Please use positive integers for matchSnapshot calls'); + } + path.push(index); + } + return path.join(' '); +} + +let currentTest; +let snapshotStore; +const writeSnapshotsSet = new Set(); + +/** + * @type {Chai.ChaiPlugin} + */ +export function chaiWtrSnapshot(chai, utils) { + /** + * Base HTML snapshot assertion for `assert` interface. + * @this {Chai.AssertionStatic} + * @param {string|Node} actual + * @param {boolean} negate + */ + async function assertMatchSnapshot(actual, negate, index) { + const snapshot = actual; + let updateSnapshots = false; + let currentSnapshot; + let name; + if (isBrowser) { + // WTR ENV + const { getSnapshot, getSnapshotConfig } = await import('@web/test-runner-commands'); + // eslint-disable-next-line no-undef + name = getTestPath(window.__WTR_MOCHA_RUNNER__.test, index); + if (!name) { + return; + } + currentSnapshot = await getSnapshot({ name }); + updateSnapshots = (await getSnapshotConfig()).updateSnapshots; + } else { + // Node ENV + name = getTestPath(currentTest, index); + const snapshotString = await snapshotStore.get(currentTest.file); + const blob = new Blob([snapshotString], { type: 'text/javascript' }); + const url = await blobToDataUrl(blob); + currentSnapshot = (await import(url)).snapshots[name]; + // TODO: get --update-snapshots flag + // updateSnapshots = (await getSnapshotConfig()).updateSnapshots; + } + + if (currentSnapshot && !updateSnapshots) { + if (negate ? currentSnapshot === snapshot : currentSnapshot !== snapshot) { + throw new chai.AssertionError( + `Snapshot "${name}" ${negate ? 'matches' : 'does not match'} the saved snapshot on disk`, + { + actual: snapshot, + expected: currentSnapshot, + showDiff: !negate, + }, + chai.util.flag(this, 'ssfi'), + ); + } + } else if (currentSnapshot !== snapshot) { + if (isBrowser) { + const { saveSnapshot: saveSnapshotWTR } = await import('@web/test-runner-commands'); + await saveSnapshotWTR({ name, content: snapshot }); + } else { + const { isSaveSnapshotPayload } = await import('@web/test-runner-commands/plugins'); + const payload = { name, content: snapshot }; + if (!isSaveSnapshotPayload(payload)) { + throw new Error('Invalid save snapshot payload'); + } + await snapshotStore.saveSnapshot('session_id_dummy', currentTest.file, name, snapshot); + } + } + } + + /** + * Snapshot assertion for `should` and `expect` interfaces. + * @this {Chai.AssertionStatic} + */ + function matchSnapshot(index) { + const value = chai.util.flag(this, 'object'); + const negate = utils.flag(this, 'negate'); + return assertMatchSnapshot.call(this, value, negate, index); + } + + utils.addMethod(chai.Assertion.prototype, 'matchSnapshot', matchSnapshot); + + /** @type {Chai.Assert} */ + chai.assert = { + matchSnapshot(actualEl) { + const negate = false; + return assertMatchSnapshot.call(this, actualEl, negate); + }, + notMatchSnapshot(actualEl) { + const negate = true; + return assertMatchSnapshot.call(this, actualEl, negate); + }, + }; + + if (isBrowser) { + return; + } + + before(async () => { + const { SnapshotStore } = await import('@web/test-runner-commands/plugins'); + snapshotStore = new SnapshotStore(); + }); + + beforeEach(function () { + currentTest = this.currentTest; + }); + + afterEach(async function () { + const { getSnapshotPath } = await import('@web/test-runner-commands/plugins'); + if ( + snapshotStore.snapshots.size > 0 && + Array.from(snapshotStore.snapshots).some(([key]) => { + return key === getSnapshotPath(this.currentTest.file); + }) + ) { + writeSnapshotsSet.add(getSnapshotPath(this.currentTest.file)); + } + }); + + after(async () => { + await Promise.all( + Array.from(writeSnapshotsSet).map((file) => { + return snapshotStore.writeSnapshot(file); + }), + ); + }); +} diff --git a/types/Config.d.ts b/types/Config.d.ts index 4f09ce185..c249f81e7 100644 --- a/types/Config.d.ts +++ b/types/Config.d.ts @@ -32,6 +32,5 @@ export interface Config { include?: string[]; source?: string[]; tokens?: DesignTokens; - properties?: DesignTokens; platforms: Record; -} \ No newline at end of file +} diff --git a/types/Dictionary.d.ts b/types/Dictionary.d.ts index bf6e85a56..8a249048f 100644 --- a/types/Dictionary.d.ts +++ b/types/Dictionary.d.ts @@ -16,8 +16,6 @@ import { TransformedToken, TransformedTokens } from './TransformedToken'; export interface Dictionary { allTokens: TransformedToken[]; tokens: TransformedTokens; - allProperties: TransformedToken[]; - properties: TransformedTokens; usesReference: (value: any) => boolean; getReferences: (value: any) => TransformedToken[]; } diff --git a/types/index.d.ts b/types/index.d.ts index caf22084e..d6b79de45 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -63,8 +63,6 @@ declare namespace StyleDictionary { VERSION: string; tokens: DesignTokens | TransformedTokens; allTokens: TransformedTokens[]; - properties: DesignTokens | TransformedTokens; - allProperties: TransformedTokens[]; options: Config; transform: Record; diff --git a/web-test-runner.config.mjs b/web-test-runner.config.mjs new file mode 100644 index 000000000..1e4ad495d --- /dev/null +++ b/web-test-runner.config.mjs @@ -0,0 +1,54 @@ +import { playwrightLauncher } from '@web/test-runner-playwright'; +import { snapshotPlugin } from '@web/test-runner-commands/plugins'; +import fs from 'node:fs'; +import glob from '@bundled-es-modules/glob'; + +const filesToMirror = glob + .sync( + [ + '__tests__/__assets/**/*', + '__tests__/__configs/**/*', + '__tests__/__json_files/**/*', + '__tests__/__tokens/**/*', + ], + { + fs, + nodir: true, + }, + ) // sort because for some reason glob result is not sorted like filesystem is (alphabetically) + .sort() + .map((filePath) => [filePath, fs.readFileSync(filePath, 'utf-8')]); + +export default { + nodeResolve: true, + // browserLogs: false, + files: ['__tests__/**/*.test.js'], + coverageConfig: { + report: true, + reportDir: 'coverage', + threshold: { + statements: 96, + branches: 99, + functions: 92, + lines: 96, + }, + }, + browsers: [ + playwrightLauncher({ + product: 'chromium', + }), + ], + plugins: [snapshotPlugin()], + testRunnerHtml: (testFramework) => ` + + + + + + +`, +}; From 984a71e07383a345951108eea1473062d61a27f6 Mon Sep 17 00:00:00 2001 From: jorenbroekema Date: Tue, 21 Nov 2023 13:46:11 +0100 Subject: [PATCH 2/6] fix: logging to respect log level option, fix integration tests --- .github/workflows/verify.yml | 11 +- CONTRIBUTING.md | 2 +- .../__snapshots__/android.test.js.snap | 517 --- .../__snapshots__/android.test.snap.js | 516 +++ ...pose.test.js.snap => compose.test.snap.js} | 22 +- .../{css.test.js.snap => css.test.snap.js} | 22 +- .../customFileHeader.test.js.snap | 117 - .../customFileHeader.test.snap.js | 119 + .../__snapshots__/customFormats.test.js.snap | 3207 -------------- .../__snapshots__/customFormats.test.snap.js | 1929 +++++++++ ...tter.test.js.snap => flutter.test.snap.js} | 367 +- .../__snapshots__/iOSObjectiveC.test.js.snap | 1975 --------- .../__snapshots__/iOSObjectiveC.test.snap.js | 1970 +++++++++ .../__snapshots__/nameCollisions.test.snap.js | 15 + .../__snapshots__/objectValues.test.js.snap | 121 - .../__snapshots__/objectValues.test.snap.js | 123 + .../outputReferences.test.snap.js | 16 + .../{scss.test.js.snap => scss.test.snap.js} | 2959 ++++++------- .../__snapshots__/showFileHeader.test.js.snap | 51 - .../__snapshots__/showFileHeader.test.snap.js | 53 + .../__snapshots__/swift.test.snap.js | 359 ++ __integration__/_constants.js | 29 +- __integration__/android.test.js | 36 +- __integration__/compose.test.js | 32 +- __integration__/css.test.js | 36 +- __integration__/customFileHeader.test.js | 84 +- __integration__/customFormats.test.js | 81 +- __integration__/flutter.test.js | 36 +- __integration__/iOSObjectiveC.test.js | 52 +- ...onfig.test.js.snap => config.test.snap.js} | 17 +- .../{file.test.js.snap => file.test.snap.js} | 98 +- .../__snapshots__/platform.test.js.snap | 37 - .../__snapshots__/platform.test.snap.js | 37 + __integration__/logging/config.test.js | 68 +- __integration__/logging/file.test.js | 118 +- __integration__/logging/platform.test.js | 189 +- __integration__/nameCollisions.test.js | 46 +- __integration__/objectValues.test.js | 66 +- __integration__/outputReferences.test.js | 36 +- __integration__/scss.test.js | 100 +- __integration__/showFileHeader.test.js | 40 +- __integration__/swift.test.js | 36 +- __tests__/StyleDictionary.test.js | 11 +- __tests__/__setup.js | 20 +- .../StyleDictionary.test.snap.js | 30 + .../formats/__snapshots__/all.test.snap.js | 200 + .../advanced/create-react-app/package.json | 3 +- .../create-react-native-app/package.json | 6 +- examples/advanced/s3/upload.js | 2 +- examples/advanced/yaml-tokens/sd.config.js | 2 +- lib/StyleDictionary.js | 31 +- lib/buildAllPlatforms.js | 35 - lib/buildFile.js | 18 +- lib/buildPlatform.js | 67 - lib/cleanAllPlatforms.js | 32 - lib/cleanPlatform.js | 59 - lib/exportPlatform.js | 131 - lib/register/action.js | 2 +- lib/register/fileHeader.js | 2 +- lib/register/filter.js | 2 +- lib/register/format.js | 2 +- lib/register/parser.js | 2 +- lib/register/transform.js | 2 +- lib/register/transformGroup.js | 4 +- lib/transform/config.js | 1 + lib/utils/es6_.js | 1 - lib/utils/resolveObject.js | 6 +- package-lock.json | 3758 ++++++++++++++++- package.json | 17 +- snapshot-plugin/chai-wtr-snapshot.js | 19 +- web-test-runner.config.mjs | 12 +- 71 files changed, 11335 insertions(+), 8887 deletions(-) delete mode 100644 __integration__/__snapshots__/android.test.js.snap create mode 100644 __integration__/__snapshots__/android.test.snap.js rename __integration__/__snapshots__/{compose.test.js.snap => compose.test.snap.js} (97%) rename __integration__/__snapshots__/{css.test.js.snap => css.test.snap.js} (97%) delete mode 100644 __integration__/__snapshots__/customFileHeader.test.js.snap create mode 100644 __integration__/__snapshots__/customFileHeader.test.snap.js delete mode 100644 __integration__/__snapshots__/customFormats.test.js.snap create mode 100644 __integration__/__snapshots__/customFormats.test.snap.js rename __integration__/__snapshots__/{flutter.test.js.snap => flutter.test.snap.js} (98%) delete mode 100644 __integration__/__snapshots__/iOSObjectiveC.test.js.snap create mode 100644 __integration__/__snapshots__/iOSObjectiveC.test.snap.js create mode 100644 __integration__/__snapshots__/nameCollisions.test.snap.js delete mode 100644 __integration__/__snapshots__/objectValues.test.js.snap create mode 100644 __integration__/__snapshots__/objectValues.test.snap.js create mode 100644 __integration__/__snapshots__/outputReferences.test.snap.js rename __integration__/__snapshots__/{scss.test.js.snap => scss.test.snap.js} (98%) delete mode 100644 __integration__/__snapshots__/showFileHeader.test.js.snap create mode 100644 __integration__/__snapshots__/showFileHeader.test.snap.js create mode 100644 __integration__/__snapshots__/swift.test.snap.js rename __integration__/logging/__snapshots__/{config.test.js.snap => config.test.snap.js} (81%) rename __integration__/logging/__snapshots__/{file.test.js.snap => file.test.snap.js} (90%) delete mode 100644 __integration__/logging/__snapshots__/platform.test.js.snap create mode 100644 __integration__/logging/__snapshots__/platform.test.snap.js create mode 100644 __tests__/__snapshots__/StyleDictionary.test.snap.js delete mode 100644 lib/buildAllPlatforms.js delete mode 100644 lib/buildPlatform.js delete mode 100644 lib/cleanAllPlatforms.js delete mode 100644 lib/cleanPlatform.js delete mode 100644 lib/exportPlatform.js diff --git a/.github/workflows/verify.yml b/.github/workflows/verify.yml index 79e39dd9b..f9c9b2907 100644 --- a/.github/workflows/verify.yml +++ b/.github/workflows/verify.yml @@ -13,10 +13,9 @@ jobs: - uses: actions/checkout@v2 - name: Setup Node ${{ matrix.node-version }} - uses: actions/setup-node@v2 + uses: actions/setup-node@v1 with: node-version: ${{ matrix.node-version }} - cache: 'npm' - name: Install Dependencies run: npm ci @@ -24,11 +23,11 @@ jobs: - name: Linting & Formatting run: npm run lint - - name: Tests Node + - name: Node tests run: npm run test:node - name: Install chromium - run: npx playwright install-deps chromium + run: npx playwright install --with-deps chromium - - name: Tests Chromium - run: npm run test:unit + - name: Browser tests + run: npm run test:browser diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3aa5f6a49..2f4d7bc15 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -58,7 +58,7 @@ We separate each function/method into its own file and group them into directori Any new features should implement the proper unit tests. We use Jest to test our framework. -If you are adding a new transform, action, or format: please add new unit tests. You can see examples in __tests__/formats. +If you are adding a new transform, action, or format: please add new unit tests. You can see examples in **tests**/formats. ## Documentation diff --git a/__integration__/__snapshots__/android.test.js.snap b/__integration__/__snapshots__/android.test.js.snap deleted file mode 100644 index 8d8a33582..000000000 --- a/__integration__/__snapshots__/android.test.js.snap +++ /dev/null @@ -1,517 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`integration android android/resources should match snapshot 1`] = ` -" - - - - #ffffffff - #fff3f4f4 - #ffdee1e1 - #ffffeae9 - #ffffede3 - #ffebf9eb - #ffe9f8ff - #ffdee1e1 - #ffc8cccc - #ff0b8599 - #ff6f5ed3 - #ffebf9eb - #ffd7f4d7 - #ffc2f2bd - #ff98e58e - #ff75dd66 - #ff59cb59 - #ff2bb656 - #ff0ca750 - #ff008b46 - #ff006b40 - #ff08422f - #ff002b20 - #ffe5f9f5 - #ffcdf7ef - #ffb3f2e6 - #ff7dead5 - #ff24e0c5 - #ff08c4b2 - #ff00a99c - #ff0b968f - #ff067c7c - #ff026661 - #ff083f3f - #ff002528 - #ffd9fcfb - #ffc5f9f9 - #ffa5f2f2 - #ff76e5e2 - #ff33d6e2 - #ff17b8ce - #ff0797ae - #ff0b8599 - #ff0f6e84 - #ff035e73 - #ff083d4f - #ff002838 - #ffe9f8ff - #ffdcf2ff - #ffc7e4f9 - #ffa1d2f8 - #ff56adf5 - #ff3896e3 - #ff2b87d3 - #ff2079c3 - #ff116daa - #ff0c5689 - #ff0a3960 - #ff002138 - #fff2f2f9 - #ffeaeaf9 - #ffd8d7f9 - #ffc1c1f7 - #ffa193f2 - #ff9180f4 - #ff816fea - #ff6f5ed3 - #ff5e4eba - #ff483a9c - #ff2d246b - #ff1d1d38 - #fffef0ff - #fff9e3fc - #fff4c4f7 - #ffedadf2 - #fff282f5 - #ffdb61db - #ffc44eb9 - #ffac44a8 - #ff8f3896 - #ff6c2277 - #ff451551 - #ff29192d - #ffffe9f3 - #fffcdbeb - #ffffb5d5 - #ffff95c1 - #ffff76ae - #ffef588b - #ffe0447c - #ffce3665 - #ffb22f5b - #ff931847 - #ff561231 - #ff2b1721 - #ffffeae9 - #ffffd5d2 - #ffffb8b1 - #ffff9c8f - #ffff7f6e - #fff76054 - #ffed4c42 - #ffdb3e3e - #ffc63434 - #ff992222 - #ff6d1313 - #ff2b1111 - #ffffede3 - #fffcdccc - #ffffc6a4 - #ffffb180 - #ffff9c5d - #fffc8943 - #fff57d33 - #ffed7024 - #ffce5511 - #ff962c0b - #ff601700 - #ff2d130e - #ffffffff - #fff3f4f4 - #ffdee1e1 - #ffc8cccc - #ffb0b6b7 - #ff929a9b - #ff6e797a - #ff515e5f - #ff364141 - #ff273333 - #ff162020 - #ff040404 - #fffff8e2 - #fffdefcd - #ffffe99a - #ffffe16e - #ffffd943 - #ffffcd1c - #ffffbc00 - #ffdd9903 - #ffba7506 - #ff944c0c - #ff542a00 - #ff2d1a05 - #ff040404 - #ff273333 - #ff364141 - #ff0b8599 - #ff0b8599 - #ff6f5ed3 - #ff364141 - #ff6d1313 - #ff601700 - #ff08422f - 480.00dp - 12.00sp - 16.00sp - 24.00sp - 36.00sp - 8.00dp - 16.00dp - 16.00dp - 16.00dp - - -" -`; - -exports[`integration android android/resources with filter should match snapshot 1`] = ` -" - - - - #ffffffff - #fff3f4f4 - #ffdee1e1 - #ffffeae9 - #ffffede3 - #ffebf9eb - #ffe9f8ff - #ffdee1e1 - #ffc8cccc - #ff0b8599 - #ff6f5ed3 - #ffebf9eb - #ffd7f4d7 - #ffc2f2bd - #ff98e58e - #ff75dd66 - #ff59cb59 - #ff2bb656 - #ff0ca750 - #ff008b46 - #ff006b40 - #ff08422f - #ff002b20 - #ffe5f9f5 - #ffcdf7ef - #ffb3f2e6 - #ff7dead5 - #ff24e0c5 - #ff08c4b2 - #ff00a99c - #ff0b968f - #ff067c7c - #ff026661 - #ff083f3f - #ff002528 - #ffd9fcfb - #ffc5f9f9 - #ffa5f2f2 - #ff76e5e2 - #ff33d6e2 - #ff17b8ce - #ff0797ae - #ff0b8599 - #ff0f6e84 - #ff035e73 - #ff083d4f - #ff002838 - #ffe9f8ff - #ffdcf2ff - #ffc7e4f9 - #ffa1d2f8 - #ff56adf5 - #ff3896e3 - #ff2b87d3 - #ff2079c3 - #ff116daa - #ff0c5689 - #ff0a3960 - #ff002138 - #fff2f2f9 - #ffeaeaf9 - #ffd8d7f9 - #ffc1c1f7 - #ffa193f2 - #ff9180f4 - #ff816fea - #ff6f5ed3 - #ff5e4eba - #ff483a9c - #ff2d246b - #ff1d1d38 - #fffef0ff - #fff9e3fc - #fff4c4f7 - #ffedadf2 - #fff282f5 - #ffdb61db - #ffc44eb9 - #ffac44a8 - #ff8f3896 - #ff6c2277 - #ff451551 - #ff29192d - #ffffe9f3 - #fffcdbeb - #ffffb5d5 - #ffff95c1 - #ffff76ae - #ffef588b - #ffe0447c - #ffce3665 - #ffb22f5b - #ff931847 - #ff561231 - #ff2b1721 - #ffffeae9 - #ffffd5d2 - #ffffb8b1 - #ffff9c8f - #ffff7f6e - #fff76054 - #ffed4c42 - #ffdb3e3e - #ffc63434 - #ff992222 - #ff6d1313 - #ff2b1111 - #ffffede3 - #fffcdccc - #ffffc6a4 - #ffffb180 - #ffff9c5d - #fffc8943 - #fff57d33 - #ffed7024 - #ffce5511 - #ff962c0b - #ff601700 - #ff2d130e - #ffffffff - #fff3f4f4 - #ffdee1e1 - #ffc8cccc - #ffb0b6b7 - #ff929a9b - #ff6e797a - #ff515e5f - #ff364141 - #ff273333 - #ff162020 - #ff040404 - #fffff8e2 - #fffdefcd - #ffffe99a - #ffffe16e - #ffffd943 - #ffffcd1c - #ffffbc00 - #ffdd9903 - #ffba7506 - #ff944c0c - #ff542a00 - #ff2d1a05 - #ff040404 - #ff273333 - #ff364141 - #ff0b8599 - #ff0b8599 - #ff6f5ed3 - #ff364141 - #ff6d1313 - #ff601700 - #ff08422f - - -" -`; - -exports[`integration android android/resources with references should match snapshot 1`] = ` -" - - - - @color/color_core_neutral_0 - @color/color_core_neutral_100 - @color/color_core_neutral_200 - @color/color_core_red_0 - @color/color_core_orange_0 - @color/color_core_green_0 - @color/color_core_blue_0 - @color/color_background_tertiary - @color/color_core_neutral_300 - @color/color_core_aqua_700 - @color/color_core_purple_700 - #ffebf9eb - #ffd7f4d7 - #ffc2f2bd - #ff98e58e - #ff75dd66 - #ff59cb59 - #ff2bb656 - #ff0ca750 - #ff008b46 - #ff006b40 - #ff08422f - #ff002b20 - #ffe5f9f5 - #ffcdf7ef - #ffb3f2e6 - #ff7dead5 - #ff24e0c5 - #ff08c4b2 - #ff00a99c - #ff0b968f - #ff067c7c - #ff026661 - #ff083f3f - #ff002528 - #ffd9fcfb - #ffc5f9f9 - #ffa5f2f2 - #ff76e5e2 - #ff33d6e2 - #ff17b8ce - #ff0797ae - #ff0b8599 - #ff0f6e84 - #ff035e73 - #ff083d4f - #ff002838 - #ffe9f8ff - #ffdcf2ff - #ffc7e4f9 - #ffa1d2f8 - #ff56adf5 - #ff3896e3 - #ff2b87d3 - #ff2079c3 - #ff116daa - #ff0c5689 - #ff0a3960 - #ff002138 - #fff2f2f9 - #ffeaeaf9 - #ffd8d7f9 - #ffc1c1f7 - #ffa193f2 - #ff9180f4 - #ff816fea - #ff6f5ed3 - #ff5e4eba - #ff483a9c - #ff2d246b - #ff1d1d38 - #fffef0ff - #fff9e3fc - #fff4c4f7 - #ffedadf2 - #fff282f5 - #ffdb61db - #ffc44eb9 - #ffac44a8 - #ff8f3896 - #ff6c2277 - #ff451551 - #ff29192d - #ffffe9f3 - #fffcdbeb - #ffffb5d5 - #ffff95c1 - #ffff76ae - #ffef588b - #ffe0447c - #ffce3665 - #ffb22f5b - #ff931847 - #ff561231 - #ff2b1721 - #ffffeae9 - #ffffd5d2 - #ffffb8b1 - #ffff9c8f - #ffff7f6e - #fff76054 - #ffed4c42 - #ffdb3e3e - #ffc63434 - #ff992222 - #ff6d1313 - #ff2b1111 - #ffffede3 - #fffcdccc - #ffffc6a4 - #ffffb180 - #ffff9c5d - #fffc8943 - #fff57d33 - #ffed7024 - #ffce5511 - #ff962c0b - #ff601700 - #ff2d130e - #ffffffff - #fff3f4f4 - #ffdee1e1 - #ffc8cccc - #ffb0b6b7 - #ff929a9b - #ff6e797a - #ff515e5f - #ff364141 - #ff273333 - #ff162020 - #ff040404 - #fffff8e2 - #fffdefcd - #ffffe99a - #ffffe16e - #ffffd943 - #ffffcd1c - #ffffbc00 - #ffdd9903 - #ffba7506 - #ff944c0c - #ff542a00 - #ff2d1a05 - @color/color_core_neutral_1100 - @color/color_core_neutral_900 - @color/color_core_neutral_800 - @color/color_brand_primary - @color/color_brand_primary - @color/color_brand_secondary - @color/color_font_tertiary - @color/color_core_red_1000 - @color/color_core_orange_1000 - @color/color_core_green_1000 - 480.00dp - 12.00sp - 16.00sp - 24.00sp - 36.00sp - 8.00dp - 16.00dp - 16.00dp - 16.00dp - - -" -`; diff --git a/__integration__/__snapshots__/android.test.snap.js b/__integration__/__snapshots__/android.test.snap.js new file mode 100644 index 000000000..cbad02561 --- /dev/null +++ b/__integration__/__snapshots__/android.test.snap.js @@ -0,0 +1,516 @@ +/* @web/test-runner snapshot v1 */ +export const snapshots = {}; + +snapshots["android/resources should match snapshot"] = +` + + + + #ffffffff + #fff3f4f4 + #ffdee1e1 + #ffffeae9 + #ffffede3 + #ffebf9eb + #ffe9f8ff + #ffdee1e1 + #ffc8cccc + #ff0b8599 + #ff6f5ed3 + #ffebf9eb + #ffd7f4d7 + #ffc2f2bd + #ff98e58e + #ff75dd66 + #ff59cb59 + #ff2bb656 + #ff0ca750 + #ff008b46 + #ff006b40 + #ff08422f + #ff002b20 + #ffe5f9f5 + #ffcdf7ef + #ffb3f2e6 + #ff7dead5 + #ff24e0c5 + #ff08c4b2 + #ff00a99c + #ff0b968f + #ff067c7c + #ff026661 + #ff083f3f + #ff002528 + #ffd9fcfb + #ffc5f9f9 + #ffa5f2f2 + #ff76e5e2 + #ff33d6e2 + #ff17b8ce + #ff0797ae + #ff0b8599 + #ff0f6e84 + #ff035e73 + #ff083d4f + #ff002838 + #ffe9f8ff + #ffdcf2ff + #ffc7e4f9 + #ffa1d2f8 + #ff56adf5 + #ff3896e3 + #ff2b87d3 + #ff2079c3 + #ff116daa + #ff0c5689 + #ff0a3960 + #ff002138 + #fff2f2f9 + #ffeaeaf9 + #ffd8d7f9 + #ffc1c1f7 + #ffa193f2 + #ff9180f4 + #ff816fea + #ff6f5ed3 + #ff5e4eba + #ff483a9c + #ff2d246b + #ff1d1d38 + #fffef0ff + #fff9e3fc + #fff4c4f7 + #ffedadf2 + #fff282f5 + #ffdb61db + #ffc44eb9 + #ffac44a8 + #ff8f3896 + #ff6c2277 + #ff451551 + #ff29192d + #ffffe9f3 + #fffcdbeb + #ffffb5d5 + #ffff95c1 + #ffff76ae + #ffef588b + #ffe0447c + #ffce3665 + #ffb22f5b + #ff931847 + #ff561231 + #ff2b1721 + #ffffeae9 + #ffffd5d2 + #ffffb8b1 + #ffff9c8f + #ffff7f6e + #fff76054 + #ffed4c42 + #ffdb3e3e + #ffc63434 + #ff992222 + #ff6d1313 + #ff2b1111 + #ffffede3 + #fffcdccc + #ffffc6a4 + #ffffb180 + #ffff9c5d + #fffc8943 + #fff57d33 + #ffed7024 + #ffce5511 + #ff962c0b + #ff601700 + #ff2d130e + #ffffffff + #fff3f4f4 + #ffdee1e1 + #ffc8cccc + #ffb0b6b7 + #ff929a9b + #ff6e797a + #ff515e5f + #ff364141 + #ff273333 + #ff162020 + #ff040404 + #fffff8e2 + #fffdefcd + #ffffe99a + #ffffe16e + #ffffd943 + #ffffcd1c + #ffffbc00 + #ffdd9903 + #ffba7506 + #ff944c0c + #ff542a00 + #ff2d1a05 + #ff040404 + #ff273333 + #ff364141 + #ff0b8599 + #ff0b8599 + #ff6f5ed3 + #ff364141 + #ff6d1313 + #ff601700 + #ff08422f + 480.00dp + 12.00sp + 16.00sp + 24.00sp + 36.00sp + 8.00dp + 16.00dp + 16.00dp + 16.00dp + +`; +/* end snapshot android/resources should match snapshot */ + +snapshots["android/resources with references should match snapshot"] = +` + + + + @color/color_core_neutral_0 + @color/color_core_neutral_100 + @color/color_core_neutral_200 + @color/color_core_red_0 + @color/color_core_orange_0 + @color/color_core_green_0 + @color/color_core_blue_0 + @color/color_background_tertiary + @color/color_core_neutral_300 + @color/color_core_aqua_700 + @color/color_core_purple_700 + #ffebf9eb + #ffd7f4d7 + #ffc2f2bd + #ff98e58e + #ff75dd66 + #ff59cb59 + #ff2bb656 + #ff0ca750 + #ff008b46 + #ff006b40 + #ff08422f + #ff002b20 + #ffe5f9f5 + #ffcdf7ef + #ffb3f2e6 + #ff7dead5 + #ff24e0c5 + #ff08c4b2 + #ff00a99c + #ff0b968f + #ff067c7c + #ff026661 + #ff083f3f + #ff002528 + #ffd9fcfb + #ffc5f9f9 + #ffa5f2f2 + #ff76e5e2 + #ff33d6e2 + #ff17b8ce + #ff0797ae + #ff0b8599 + #ff0f6e84 + #ff035e73 + #ff083d4f + #ff002838 + #ffe9f8ff + #ffdcf2ff + #ffc7e4f9 + #ffa1d2f8 + #ff56adf5 + #ff3896e3 + #ff2b87d3 + #ff2079c3 + #ff116daa + #ff0c5689 + #ff0a3960 + #ff002138 + #fff2f2f9 + #ffeaeaf9 + #ffd8d7f9 + #ffc1c1f7 + #ffa193f2 + #ff9180f4 + #ff816fea + #ff6f5ed3 + #ff5e4eba + #ff483a9c + #ff2d246b + #ff1d1d38 + #fffef0ff + #fff9e3fc + #fff4c4f7 + #ffedadf2 + #fff282f5 + #ffdb61db + #ffc44eb9 + #ffac44a8 + #ff8f3896 + #ff6c2277 + #ff451551 + #ff29192d + #ffffe9f3 + #fffcdbeb + #ffffb5d5 + #ffff95c1 + #ffff76ae + #ffef588b + #ffe0447c + #ffce3665 + #ffb22f5b + #ff931847 + #ff561231 + #ff2b1721 + #ffffeae9 + #ffffd5d2 + #ffffb8b1 + #ffff9c8f + #ffff7f6e + #fff76054 + #ffed4c42 + #ffdb3e3e + #ffc63434 + #ff992222 + #ff6d1313 + #ff2b1111 + #ffffede3 + #fffcdccc + #ffffc6a4 + #ffffb180 + #ffff9c5d + #fffc8943 + #fff57d33 + #ffed7024 + #ffce5511 + #ff962c0b + #ff601700 + #ff2d130e + #ffffffff + #fff3f4f4 + #ffdee1e1 + #ffc8cccc + #ffb0b6b7 + #ff929a9b + #ff6e797a + #ff515e5f + #ff364141 + #ff273333 + #ff162020 + #ff040404 + #fffff8e2 + #fffdefcd + #ffffe99a + #ffffe16e + #ffffd943 + #ffffcd1c + #ffffbc00 + #ffdd9903 + #ffba7506 + #ff944c0c + #ff542a00 + #ff2d1a05 + @color/color_core_neutral_1100 + @color/color_core_neutral_900 + @color/color_core_neutral_800 + @color/color_brand_primary + @color/color_brand_primary + @color/color_brand_secondary + @color/color_font_tertiary + @color/color_core_red_1000 + @color/color_core_orange_1000 + @color/color_core_green_1000 + 480.00dp + 12.00sp + 16.00sp + 24.00sp + 36.00sp + 8.00dp + 16.00dp + 16.00dp + 16.00dp + +`; +/* end snapshot android/resources with references should match snapshot */ + +snapshots["android/resources with filter should match snapshot"] = +` + + + + #ffffffff + #fff3f4f4 + #ffdee1e1 + #ffffeae9 + #ffffede3 + #ffebf9eb + #ffe9f8ff + #ffdee1e1 + #ffc8cccc + #ff0b8599 + #ff6f5ed3 + #ffebf9eb + #ffd7f4d7 + #ffc2f2bd + #ff98e58e + #ff75dd66 + #ff59cb59 + #ff2bb656 + #ff0ca750 + #ff008b46 + #ff006b40 + #ff08422f + #ff002b20 + #ffe5f9f5 + #ffcdf7ef + #ffb3f2e6 + #ff7dead5 + #ff24e0c5 + #ff08c4b2 + #ff00a99c + #ff0b968f + #ff067c7c + #ff026661 + #ff083f3f + #ff002528 + #ffd9fcfb + #ffc5f9f9 + #ffa5f2f2 + #ff76e5e2 + #ff33d6e2 + #ff17b8ce + #ff0797ae + #ff0b8599 + #ff0f6e84 + #ff035e73 + #ff083d4f + #ff002838 + #ffe9f8ff + #ffdcf2ff + #ffc7e4f9 + #ffa1d2f8 + #ff56adf5 + #ff3896e3 + #ff2b87d3 + #ff2079c3 + #ff116daa + #ff0c5689 + #ff0a3960 + #ff002138 + #fff2f2f9 + #ffeaeaf9 + #ffd8d7f9 + #ffc1c1f7 + #ffa193f2 + #ff9180f4 + #ff816fea + #ff6f5ed3 + #ff5e4eba + #ff483a9c + #ff2d246b + #ff1d1d38 + #fffef0ff + #fff9e3fc + #fff4c4f7 + #ffedadf2 + #fff282f5 + #ffdb61db + #ffc44eb9 + #ffac44a8 + #ff8f3896 + #ff6c2277 + #ff451551 + #ff29192d + #ffffe9f3 + #fffcdbeb + #ffffb5d5 + #ffff95c1 + #ffff76ae + #ffef588b + #ffe0447c + #ffce3665 + #ffb22f5b + #ff931847 + #ff561231 + #ff2b1721 + #ffffeae9 + #ffffd5d2 + #ffffb8b1 + #ffff9c8f + #ffff7f6e + #fff76054 + #ffed4c42 + #ffdb3e3e + #ffc63434 + #ff992222 + #ff6d1313 + #ff2b1111 + #ffffede3 + #fffcdccc + #ffffc6a4 + #ffffb180 + #ffff9c5d + #fffc8943 + #fff57d33 + #ffed7024 + #ffce5511 + #ff962c0b + #ff601700 + #ff2d130e + #ffffffff + #fff3f4f4 + #ffdee1e1 + #ffc8cccc + #ffb0b6b7 + #ff929a9b + #ff6e797a + #ff515e5f + #ff364141 + #ff273333 + #ff162020 + #ff040404 + #fffff8e2 + #fffdefcd + #ffffe99a + #ffffe16e + #ffffd943 + #ffffcd1c + #ffffbc00 + #ffdd9903 + #ffba7506 + #ff944c0c + #ff542a00 + #ff2d1a05 + #ff040404 + #ff273333 + #ff364141 + #ff0b8599 + #ff0b8599 + #ff6f5ed3 + #ff364141 + #ff6d1313 + #ff601700 + #ff08422f + +`; +/* end snapshot android/resources with filter should match snapshot */ + diff --git a/__integration__/__snapshots__/compose.test.js.snap b/__integration__/__snapshots__/compose.test.snap.js similarity index 97% rename from __integration__/__snapshots__/compose.test.js.snap rename to __integration__/__snapshots__/compose.test.snap.js index 08bd16106..bc0c80a75 100644 --- a/__integration__/__snapshots__/compose.test.js.snap +++ b/__integration__/__snapshots__/compose.test.snap.js @@ -1,7 +1,8 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +/* @web/test-runner snapshot v1 */ +export const snapshots = {}; -exports[`integration compose compose/object should match snapshot 1`] = ` -" +snapshots["compose/object should match snapshot"] = +` // Do not edit directly // Generated on Sat, 01 Jan 2000 00:00:00 GMT @@ -176,12 +177,11 @@ object StyleDictionary { val sizePaddingMedium = 16.00.dp val sizePaddingSmall = 8.00.dp val sizePaddingXl = 16.00.dp -} -" -`; +}`; +/* end snapshot compose/object should match snapshot */ -exports[`integration compose compose/object with references should match snapshot 1`] = ` -" +snapshots["compose/object with references should match snapshot"] = +` // Do not edit directly // Generated on Sat, 01 Jan 2000 00:00:00 GMT @@ -356,6 +356,6 @@ object StyleDictionary { val colorFontInteractiveHover = colorBrandPrimary val colorFontInteractive = colorBrandPrimary val colorBackgroundDisabled = colorBackgroundTertiary -} -" -`; +}`; +/* end snapshot compose/object with references should match snapshot */ + diff --git a/__integration__/__snapshots__/css.test.js.snap b/__integration__/__snapshots__/css.test.snap.js similarity index 97% rename from __integration__/__snapshots__/css.test.js.snap rename to __integration__/__snapshots__/css.test.snap.js index 7733336e8..469a6e5dc 100644 --- a/__integration__/__snapshots__/css.test.js.snap +++ b/__integration__/__snapshots__/css.test.snap.js @@ -1,7 +1,8 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +/* @web/test-runner snapshot v1 */ +export const snapshots = {}; -exports[`integration css css/variables should match snapshot 1`] = ` -"/** +snapshots["css/variables should match snapshot"] = +`/** * Do not edit directly * Generated on Sat, 01 Jan 2000 00:00:00 GMT */ @@ -173,11 +174,11 @@ exports[`integration css css/variables should match snapshot 1`] = ` --size-padding-large: 1rem; --size-padding-xl: 1rem; } -" `; +/* end snapshot css/variables should match snapshot */ -exports[`integration css css/variables with references should match snapshot 1`] = ` -"/** +snapshots["css/variables with references should match snapshot"] = +`/** * Do not edit directly * Generated on Sat, 01 Jan 2000 00:00:00 GMT */ @@ -349,11 +350,11 @@ exports[`integration css css/variables with references should match snapshot 1`] --color-font-interactive: var(--color-brand-primary); --color-background-disabled: var(--color-background-tertiary); } -" `; +/* end snapshot css/variables with references should match snapshot */ -exports[`integration css css/variables with selector should match snapshot 1`] = ` -"/** +snapshots["css/variables with selector should match snapshot"] = +`/** * Do not edit directly * Generated on Sat, 01 Jan 2000 00:00:00 GMT */ @@ -525,5 +526,6 @@ exports[`integration css css/variables with selector should match snapshot 1`] = --size-padding-large: 1rem; --size-padding-xl: 1rem; } -" `; +/* end snapshot css/variables with selector should match snapshot */ + diff --git a/__integration__/__snapshots__/customFileHeader.test.js.snap b/__integration__/__snapshots__/customFileHeader.test.js.snap deleted file mode 100644 index 4108afcab..000000000 --- a/__integration__/__snapshots__/customFileHeader.test.js.snap +++ /dev/null @@ -1,117 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`integration valid custom file headers file options config file header should match snapshot 1`] = ` -"/** - * Do not edit directly - * Generated on Sat, 01 Jan 2000 00:00:00 GMT - * hello, world! - */ - -:root { - --color-red: #ff0000; -} -" -`; - -exports[`integration valid custom file headers file options inline file header should match snapshot 1`] = ` -"/** - * build version 1.0.0 - */ - -:root { - --color-red: #ff0000; -} -" -`; - -exports[`integration valid custom file headers file options registered file header should match snapshot 1`] = ` -"/** - * hello - * Do not edit directly - * Generated on Sat, 01 Jan 2000 00:00:00 GMT - */ - -:root { - --color-red: #ff0000; -} -" -`; - -exports[`integration valid custom file headers platform options file header override should match snapshot 1`] = ` -"/** - * Header overridden - */ - -module.exports = { - \\"color\\": { - \\"red\\": { - \\"value\\": \\"#ff0000\\", - \\"original\\": { - \\"value\\": \\"#ff0000\\" - }, - \\"name\\": \\"ColorRed\\", - \\"attributes\\": { - \\"category\\": \\"color\\", - \\"type\\": \\"red\\" - }, - \\"path\\": [ - \\"color\\", - \\"red\\" - ] - } - } -}; -" -`; - -exports[`integration valid custom file headers platform options no file options should match snapshot 1`] = ` -"/** - * Do not edit directly - * Generated on Sat, 01 Jan 2000 00:00:00 GMT - * hello, world! - */ - -module.exports = { - \\"color\\": { - \\"red\\": { - \\"value\\": \\"#ff0000\\", - \\"original\\": { - \\"value\\": \\"#ff0000\\" - }, - \\"name\\": \\"ColorRed\\", - \\"attributes\\": { - \\"category\\": \\"color\\", - \\"type\\": \\"red\\" - }, - \\"path\\": [ - \\"color\\", - \\"red\\" - ] - } - } -}; -" -`; - -exports[`integration valid custom file headers platform options showFileHeader should match snapshot 1`] = ` -"module.exports = { - \\"color\\": { - \\"red\\": { - \\"value\\": \\"#ff0000\\", - \\"original\\": { - \\"value\\": \\"#ff0000\\" - }, - \\"name\\": \\"ColorRed\\", - \\"attributes\\": { - \\"category\\": \\"color\\", - \\"type\\": \\"red\\" - }, - \\"path\\": [ - \\"color\\", - \\"red\\" - ] - } - } -}; -" -`; diff --git a/__integration__/__snapshots__/customFileHeader.test.snap.js b/__integration__/__snapshots__/customFileHeader.test.snap.js new file mode 100644 index 000000000..dc3efe13e --- /dev/null +++ b/__integration__/__snapshots__/customFileHeader.test.snap.js @@ -0,0 +1,119 @@ +/* @web/test-runner snapshot v1 */ +export const snapshots = {}; + +snapshots["file options registered file header should match snapshot"] = +`/** + * hello + * Do not edit directly + * Generated on Sat, 01 Jan 2000 00:00:00 GMT + */ + +:root { + --color-red: #ff0000; +} +`; +/* end snapshot file options registered file header should match snapshot */ + +snapshots["file options config file header should match snapshot"] = +`/** + * Do not edit directly + * Generated on Sat, 01 Jan 2000 00:00:00 GMT + * hello, world! + */ + +:root { + --color-red: #ff0000; +} +`; +/* end snapshot file options config file header should match snapshot */ + +snapshots["file options inline file header should match snapshot"] = +`/** + * build version 1.0.0 + */ + +:root { + --color-red: #ff0000; +} +`; +/* end snapshot file options inline file header should match snapshot */ + +snapshots["platform options no file options should match snapshot"] = +`/** + * Do not edit directly + * Generated on Sat, 01 Jan 2000 00:00:00 GMT + * hello, world! + */ + +module.exports = { + "color": { + "red": { + "value": "#ff0000", + "original": { + "value": "#ff0000" + }, + "name": "ColorRed", + "attributes": { + "category": "color", + "type": "red" + }, + "path": [ + "color", + "red" + ] + } + } +}; +`; +/* end snapshot platform options no file options should match snapshot */ + +snapshots["platform options showFileHeader should match snapshot"] = +`module.exports = { + "color": { + "red": { + "value": "#ff0000", + "original": { + "value": "#ff0000" + }, + "name": "ColorRed", + "attributes": { + "category": "color", + "type": "red" + }, + "path": [ + "color", + "red" + ] + } + } +}; +`; +/* end snapshot platform options showFileHeader should match snapshot */ + +snapshots["platform options file header override should match snapshot"] = +`/** + * Header overridden + */ + +module.exports = { + "color": { + "red": { + "value": "#ff0000", + "original": { + "value": "#ff0000" + }, + "name": "ColorRed", + "attributes": { + "category": "color", + "type": "red" + }, + "path": [ + "color", + "red" + ] + } + } +}; +`; +/* end snapshot platform options file header override should match snapshot */ + diff --git a/__integration__/__snapshots__/customFormats.test.js.snap b/__integration__/__snapshots__/customFormats.test.js.snap deleted file mode 100644 index efb4a37f9..000000000 --- a/__integration__/__snapshots__/customFormats.test.js.snap +++ /dev/null @@ -1,3207 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`integration custom formats inline custom with new args should match snapshot 1`] = ` -"{ - \\"dictionary\\": { - \\"properties\\": { - \\"size\\": { - \\"padding\\": { - \\"small\\": { - \\"value\\": \\"0.5rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 0.5 - }, - \\"name\\": \\"SizePaddingSmall\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"small\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"small\\" - ] - }, - \\"medium\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingMedium\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"medium\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"medium\\" - ] - }, - \\"large\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingLarge\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"large\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"large\\" - ] - }, - \\"xl\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingXl\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"xl\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"xl\\" - ] - } - } - } - }, - \\"allProperties\\": [ - { - \\"value\\": \\"0.5rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 0.5 - }, - \\"name\\": \\"SizePaddingSmall\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"small\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"small\\" - ] - }, - { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingMedium\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"medium\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"medium\\" - ] - }, - { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingLarge\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"large\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"large\\" - ] - }, - { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingXl\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"xl\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"xl\\" - ] - } - ], - \\"tokens\\": { - \\"size\\": { - \\"padding\\": { - \\"small\\": { - \\"value\\": \\"0.5rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 0.5 - }, - \\"name\\": \\"SizePaddingSmall\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"small\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"small\\" - ] - }, - \\"medium\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingMedium\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"medium\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"medium\\" - ] - }, - \\"large\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingLarge\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"large\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"large\\" - ] - }, - \\"xl\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingXl\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"xl\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"xl\\" - ] - } - } - } - }, - \\"allTokens\\": [ - { - \\"value\\": \\"0.5rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 0.5 - }, - \\"name\\": \\"SizePaddingSmall\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"small\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"small\\" - ] - }, - { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingMedium\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"medium\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"medium\\" - ] - }, - { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingLarge\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"large\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"large\\" - ] - }, - { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingXl\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"xl\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"xl\\" - ] - } - ], - \\"_properties\\": { - \\"size\\": { - \\"padding\\": { - \\"small\\": { - \\"value\\": \\"0.5rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 0.5 - }, - \\"name\\": \\"SizePaddingSmall\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"small\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"small\\" - ] - }, - \\"medium\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingMedium\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"medium\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"medium\\" - ] - }, - \\"large\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingLarge\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"large\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"large\\" - ] - }, - \\"xl\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingXl\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"xl\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"xl\\" - ] - } - } - } - } - }, - \\"allProperties\\": [ - { - \\"value\\": \\"0.5rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 0.5 - }, - \\"name\\": \\"SizePaddingSmall\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"small\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"small\\" - ] - }, - { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingMedium\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"medium\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"medium\\" - ] - }, - { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingLarge\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"large\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"large\\" - ] - }, - { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingXl\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"xl\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"xl\\" - ] - } - ], - \\"properties\\": { - \\"size\\": { - \\"padding\\": { - \\"small\\": { - \\"value\\": \\"0.5rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 0.5 - }, - \\"name\\": \\"SizePaddingSmall\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"small\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"small\\" - ] - }, - \\"medium\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingMedium\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"medium\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"medium\\" - ] - }, - \\"large\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingLarge\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"large\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"large\\" - ] - }, - \\"xl\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingXl\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"xl\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"xl\\" - ] - } - } - } - }, - \\"allTokens\\": [ - { - \\"value\\": \\"0.5rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 0.5 - }, - \\"name\\": \\"SizePaddingSmall\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"small\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"small\\" - ] - }, - { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingMedium\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"medium\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"medium\\" - ] - }, - { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingLarge\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"large\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"large\\" - ] - }, - { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingXl\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"xl\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"xl\\" - ] - } - ], - \\"tokens\\": { - \\"size\\": { - \\"padding\\": { - \\"small\\": { - \\"value\\": \\"0.5rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 0.5 - }, - \\"name\\": \\"SizePaddingSmall\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"small\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"small\\" - ] - }, - \\"medium\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingMedium\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"medium\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"medium\\" - ] - }, - \\"large\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingLarge\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"large\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"large\\" - ] - }, - \\"xl\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingXl\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"xl\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"xl\\" - ] - } - } - } - }, - \\"platform\\": { - \\"transformGroup\\": \\"js\\", - \\"buildPath\\": \\"__integration__/build/\\", - \\"options\\": { - \\"otherOption\\": \\"platform option\\" - }, - \\"files\\": [ - { - \\"destination\\": \\"inlineCustomFormatWithOldArgs.json\\", - \\"options\\": { - \\"showFileHeader\\": true, - \\"otherOption\\": \\"Test\\" - } - }, - { - \\"destination\\": \\"inlineCustomFormatWithNewArgs.json\\", - \\"options\\": { - \\"showFileHeader\\": true, - \\"otherOption\\": \\"Test\\" - } - } - ], - \\"transforms\\": [ - { - \\"type\\": \\"attribute\\" - }, - { - \\"type\\": \\"name\\" - }, - { - \\"type\\": \\"value\\" - }, - { - \\"type\\": \\"value\\" - } - ], - \\"actions\\": [] - }, - \\"file\\": { - \\"options\\": { - \\"otherOption\\": \\"Test\\", - \\"showFileHeader\\": true - }, - \\"destination\\": \\"inlineCustomFormatWithNewArgs.json\\" - }, - \\"options\\": { - \\"otherOption\\": \\"Test\\", - \\"showFileHeader\\": true - } -}" -`; - -exports[`integration custom formats inline custom with old args should match snapshot 1`] = ` -"{ - \\"dictionary\\": { - \\"dictionary\\": { - \\"properties\\": { - \\"size\\": { - \\"padding\\": { - \\"small\\": { - \\"value\\": \\"0.5rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 0.5 - }, - \\"name\\": \\"SizePaddingSmall\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"small\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"small\\" - ] - }, - \\"medium\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingMedium\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"medium\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"medium\\" - ] - }, - \\"large\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingLarge\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"large\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"large\\" - ] - }, - \\"xl\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingXl\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"xl\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"xl\\" - ] - } - } - } - }, - \\"allProperties\\": [ - { - \\"value\\": \\"0.5rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 0.5 - }, - \\"name\\": \\"SizePaddingSmall\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"small\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"small\\" - ] - }, - { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingMedium\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"medium\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"medium\\" - ] - }, - { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingLarge\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"large\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"large\\" - ] - }, - { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingXl\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"xl\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"xl\\" - ] - } - ], - \\"tokens\\": { - \\"size\\": { - \\"padding\\": { - \\"small\\": { - \\"value\\": \\"0.5rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 0.5 - }, - \\"name\\": \\"SizePaddingSmall\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"small\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"small\\" - ] - }, - \\"medium\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingMedium\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"medium\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"medium\\" - ] - }, - \\"large\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingLarge\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"large\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"large\\" - ] - }, - \\"xl\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingXl\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"xl\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"xl\\" - ] - } - } - } - }, - \\"allTokens\\": [ - { - \\"value\\": \\"0.5rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 0.5 - }, - \\"name\\": \\"SizePaddingSmall\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"small\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"small\\" - ] - }, - { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingMedium\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"medium\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"medium\\" - ] - }, - { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingLarge\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"large\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"large\\" - ] - }, - { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingXl\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"xl\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"xl\\" - ] - } - ], - \\"_properties\\": { - \\"size\\": { - \\"padding\\": { - \\"small\\": { - \\"value\\": \\"0.5rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 0.5 - }, - \\"name\\": \\"SizePaddingSmall\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"small\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"small\\" - ] - }, - \\"medium\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingMedium\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"medium\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"medium\\" - ] - }, - \\"large\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingLarge\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"large\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"large\\" - ] - }, - \\"xl\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingXl\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"xl\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"xl\\" - ] - } - } - } - } - }, - \\"allProperties\\": [ - { - \\"value\\": \\"0.5rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 0.5 - }, - \\"name\\": \\"SizePaddingSmall\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"small\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"small\\" - ] - }, - { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingMedium\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"medium\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"medium\\" - ] - }, - { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingLarge\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"large\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"large\\" - ] - }, - { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingXl\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"xl\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"xl\\" - ] - } - ], - \\"properties\\": { - \\"size\\": { - \\"padding\\": { - \\"small\\": { - \\"value\\": \\"0.5rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 0.5 - }, - \\"name\\": \\"SizePaddingSmall\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"small\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"small\\" - ] - }, - \\"medium\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingMedium\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"medium\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"medium\\" - ] - }, - \\"large\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingLarge\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"large\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"large\\" - ] - }, - \\"xl\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingXl\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"xl\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"xl\\" - ] - } - } - } - }, - \\"allTokens\\": [ - { - \\"value\\": \\"0.5rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 0.5 - }, - \\"name\\": \\"SizePaddingSmall\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"small\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"small\\" - ] - }, - { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingMedium\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"medium\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"medium\\" - ] - }, - { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingLarge\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"large\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"large\\" - ] - }, - { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingXl\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"xl\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"xl\\" - ] - } - ], - \\"tokens\\": { - \\"size\\": { - \\"padding\\": { - \\"small\\": { - \\"value\\": \\"0.5rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 0.5 - }, - \\"name\\": \\"SizePaddingSmall\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"small\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"small\\" - ] - }, - \\"medium\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingMedium\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"medium\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"medium\\" - ] - }, - \\"large\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingLarge\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"large\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"large\\" - ] - }, - \\"xl\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingXl\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"xl\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"xl\\" - ] - } - } - } - }, - \\"platform\\": { - \\"transformGroup\\": \\"js\\", - \\"buildPath\\": \\"__integration__/build/\\", - \\"options\\": { - \\"otherOption\\": \\"platform option\\" - }, - \\"files\\": [ - { - \\"destination\\": \\"inlineCustomFormatWithOldArgs.json\\", - \\"options\\": { - \\"showFileHeader\\": true, - \\"otherOption\\": \\"Test\\" - } - }, - { - \\"destination\\": \\"inlineCustomFormatWithNewArgs.json\\", - \\"options\\": { - \\"showFileHeader\\": true, - \\"otherOption\\": \\"Test\\" - } - } - ], - \\"transforms\\": [ - { - \\"type\\": \\"attribute\\" - }, - { - \\"type\\": \\"name\\" - }, - { - \\"type\\": \\"value\\" - }, - { - \\"type\\": \\"value\\" - } - ], - \\"actions\\": [] - }, - \\"file\\": { - \\"options\\": { - \\"otherOption\\": \\"Test\\", - \\"showFileHeader\\": true - }, - \\"destination\\": \\"inlineCustomFormatWithOldArgs.json\\" - }, - \\"options\\": { - \\"otherOption\\": \\"Test\\", - \\"showFileHeader\\": true - } - }, - \\"platform\\": { - \\"transformGroup\\": \\"js\\", - \\"buildPath\\": \\"__integration__/build/\\", - \\"options\\": { - \\"otherOption\\": \\"platform option\\" - }, - \\"files\\": [ - { - \\"destination\\": \\"inlineCustomFormatWithOldArgs.json\\", - \\"options\\": { - \\"showFileHeader\\": true, - \\"otherOption\\": \\"Test\\" - } - }, - { - \\"destination\\": \\"inlineCustomFormatWithNewArgs.json\\", - \\"options\\": { - \\"showFileHeader\\": true, - \\"otherOption\\": \\"Test\\" - } - } - ], - \\"transforms\\": [ - { - \\"type\\": \\"attribute\\" - }, - { - \\"type\\": \\"name\\" - }, - { - \\"type\\": \\"value\\" - }, - { - \\"type\\": \\"value\\" - } - ], - \\"actions\\": [] - }, - \\"file\\": { - \\"destination\\": \\"inlineCustomFormatWithOldArgs.json\\", - \\"options\\": { - \\"showFileHeader\\": true, - \\"otherOption\\": \\"Test\\" - } - } -}" -`; - -exports[`integration custom formats register custom format with new args should match snapshot 1`] = ` -"{ - \\"dictionary\\": { - \\"properties\\": { - \\"size\\": { - \\"padding\\": { - \\"small\\": { - \\"value\\": \\"0.5rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 0.5 - }, - \\"name\\": \\"SizePaddingSmall\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"small\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"small\\" - ] - }, - \\"medium\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingMedium\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"medium\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"medium\\" - ] - }, - \\"large\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingLarge\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"large\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"large\\" - ] - }, - \\"xl\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingXl\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"xl\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"xl\\" - ] - } - } - } - }, - \\"allProperties\\": [ - { - \\"value\\": \\"0.5rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 0.5 - }, - \\"name\\": \\"SizePaddingSmall\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"small\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"small\\" - ] - }, - { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingMedium\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"medium\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"medium\\" - ] - }, - { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingLarge\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"large\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"large\\" - ] - }, - { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingXl\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"xl\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"xl\\" - ] - } - ], - \\"tokens\\": { - \\"size\\": { - \\"padding\\": { - \\"small\\": { - \\"value\\": \\"0.5rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 0.5 - }, - \\"name\\": \\"SizePaddingSmall\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"small\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"small\\" - ] - }, - \\"medium\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingMedium\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"medium\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"medium\\" - ] - }, - \\"large\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingLarge\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"large\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"large\\" - ] - }, - \\"xl\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingXl\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"xl\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"xl\\" - ] - } - } - } - }, - \\"allTokens\\": [ - { - \\"value\\": \\"0.5rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 0.5 - }, - \\"name\\": \\"SizePaddingSmall\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"small\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"small\\" - ] - }, - { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingMedium\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"medium\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"medium\\" - ] - }, - { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingLarge\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"large\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"large\\" - ] - }, - { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingXl\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"xl\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"xl\\" - ] - } - ], - \\"_properties\\": { - \\"size\\": { - \\"padding\\": { - \\"small\\": { - \\"value\\": \\"0.5rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 0.5 - }, - \\"name\\": \\"SizePaddingSmall\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"small\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"small\\" - ] - }, - \\"medium\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingMedium\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"medium\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"medium\\" - ] - }, - \\"large\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingLarge\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"large\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"large\\" - ] - }, - \\"xl\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingXl\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"xl\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"xl\\" - ] - } - } - } - } - }, - \\"allProperties\\": [ - { - \\"value\\": \\"0.5rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 0.5 - }, - \\"name\\": \\"SizePaddingSmall\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"small\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"small\\" - ] - }, - { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingMedium\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"medium\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"medium\\" - ] - }, - { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingLarge\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"large\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"large\\" - ] - }, - { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingXl\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"xl\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"xl\\" - ] - } - ], - \\"properties\\": { - \\"size\\": { - \\"padding\\": { - \\"small\\": { - \\"value\\": \\"0.5rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 0.5 - }, - \\"name\\": \\"SizePaddingSmall\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"small\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"small\\" - ] - }, - \\"medium\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingMedium\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"medium\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"medium\\" - ] - }, - \\"large\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingLarge\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"large\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"large\\" - ] - }, - \\"xl\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingXl\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"xl\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"xl\\" - ] - } - } - } - }, - \\"allTokens\\": [ - { - \\"value\\": \\"0.5rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 0.5 - }, - \\"name\\": \\"SizePaddingSmall\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"small\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"small\\" - ] - }, - { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingMedium\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"medium\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"medium\\" - ] - }, - { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingLarge\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"large\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"large\\" - ] - }, - { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingXl\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"xl\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"xl\\" - ] - } - ], - \\"tokens\\": { - \\"size\\": { - \\"padding\\": { - \\"small\\": { - \\"value\\": \\"0.5rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 0.5 - }, - \\"name\\": \\"SizePaddingSmall\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"small\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"small\\" - ] - }, - \\"medium\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingMedium\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"medium\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"medium\\" - ] - }, - \\"large\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingLarge\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"large\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"large\\" - ] - }, - \\"xl\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingXl\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"xl\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"xl\\" - ] - } - } - } - }, - \\"platform\\": { - \\"transformGroup\\": \\"js\\", - \\"buildPath\\": \\"__integration__/build/\\", - \\"options\\": { - \\"otherOption\\": \\"platform option\\" - }, - \\"files\\": [ - { - \\"destination\\": \\"registerCustomFormatWithOldArgs.json\\", - \\"options\\": { - \\"showFileHeader\\": true, - \\"otherOption\\": \\"Test\\" - } - }, - { - \\"destination\\": \\"registerCustomFormatWithNewArgs.json\\", - \\"options\\": { - \\"showFileHeader\\": true, - \\"otherOption\\": \\"Test\\" - } - } - ], - \\"transforms\\": [ - { - \\"type\\": \\"attribute\\" - }, - { - \\"type\\": \\"name\\" - }, - { - \\"type\\": \\"value\\" - }, - { - \\"type\\": \\"value\\" - } - ], - \\"actions\\": [] - }, - \\"file\\": { - \\"options\\": { - \\"otherOption\\": \\"Test\\", - \\"showFileHeader\\": true - }, - \\"destination\\": \\"registerCustomFormatWithNewArgs.json\\" - }, - \\"options\\": { - \\"otherOption\\": \\"Test\\", - \\"showFileHeader\\": true - } -}" -`; - -exports[`integration custom formats register custom format with old args should match snapshot 1`] = ` -"{ - \\"dictionary\\": { - \\"dictionary\\": { - \\"properties\\": { - \\"size\\": { - \\"padding\\": { - \\"small\\": { - \\"value\\": \\"0.5rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 0.5 - }, - \\"name\\": \\"SizePaddingSmall\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"small\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"small\\" - ] - }, - \\"medium\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingMedium\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"medium\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"medium\\" - ] - }, - \\"large\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingLarge\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"large\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"large\\" - ] - }, - \\"xl\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingXl\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"xl\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"xl\\" - ] - } - } - } - }, - \\"allProperties\\": [ - { - \\"value\\": \\"0.5rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 0.5 - }, - \\"name\\": \\"SizePaddingSmall\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"small\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"small\\" - ] - }, - { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingMedium\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"medium\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"medium\\" - ] - }, - { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingLarge\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"large\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"large\\" - ] - }, - { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingXl\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"xl\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"xl\\" - ] - } - ], - \\"tokens\\": { - \\"size\\": { - \\"padding\\": { - \\"small\\": { - \\"value\\": \\"0.5rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 0.5 - }, - \\"name\\": \\"SizePaddingSmall\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"small\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"small\\" - ] - }, - \\"medium\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingMedium\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"medium\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"medium\\" - ] - }, - \\"large\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingLarge\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"large\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"large\\" - ] - }, - \\"xl\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingXl\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"xl\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"xl\\" - ] - } - } - } - }, - \\"allTokens\\": [ - { - \\"value\\": \\"0.5rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 0.5 - }, - \\"name\\": \\"SizePaddingSmall\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"small\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"small\\" - ] - }, - { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingMedium\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"medium\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"medium\\" - ] - }, - { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingLarge\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"large\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"large\\" - ] - }, - { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingXl\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"xl\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"xl\\" - ] - } - ], - \\"_properties\\": { - \\"size\\": { - \\"padding\\": { - \\"small\\": { - \\"value\\": \\"0.5rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 0.5 - }, - \\"name\\": \\"SizePaddingSmall\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"small\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"small\\" - ] - }, - \\"medium\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingMedium\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"medium\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"medium\\" - ] - }, - \\"large\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingLarge\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"large\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"large\\" - ] - }, - \\"xl\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingXl\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"xl\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"xl\\" - ] - } - } - } - } - }, - \\"allProperties\\": [ - { - \\"value\\": \\"0.5rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 0.5 - }, - \\"name\\": \\"SizePaddingSmall\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"small\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"small\\" - ] - }, - { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingMedium\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"medium\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"medium\\" - ] - }, - { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingLarge\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"large\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"large\\" - ] - }, - { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingXl\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"xl\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"xl\\" - ] - } - ], - \\"properties\\": { - \\"size\\": { - \\"padding\\": { - \\"small\\": { - \\"value\\": \\"0.5rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 0.5 - }, - \\"name\\": \\"SizePaddingSmall\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"small\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"small\\" - ] - }, - \\"medium\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingMedium\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"medium\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"medium\\" - ] - }, - \\"large\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingLarge\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"large\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"large\\" - ] - }, - \\"xl\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingXl\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"xl\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"xl\\" - ] - } - } - } - }, - \\"allTokens\\": [ - { - \\"value\\": \\"0.5rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 0.5 - }, - \\"name\\": \\"SizePaddingSmall\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"small\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"small\\" - ] - }, - { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingMedium\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"medium\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"medium\\" - ] - }, - { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingLarge\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"large\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"large\\" - ] - }, - { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingXl\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"xl\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"xl\\" - ] - } - ], - \\"tokens\\": { - \\"size\\": { - \\"padding\\": { - \\"small\\": { - \\"value\\": \\"0.5rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 0.5 - }, - \\"name\\": \\"SizePaddingSmall\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"small\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"small\\" - ] - }, - \\"medium\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingMedium\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"medium\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"medium\\" - ] - }, - \\"large\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingLarge\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"large\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"large\\" - ] - }, - \\"xl\\": { - \\"value\\": \\"1rem\\", - \\"filePath\\": \\"__integration__/tokens/size/padding.json\\", - \\"isSource\\": true, - \\"original\\": { - \\"value\\": 1 - }, - \\"name\\": \\"SizePaddingXl\\", - \\"attributes\\": { - \\"category\\": \\"size\\", - \\"type\\": \\"padding\\", - \\"item\\": \\"xl\\" - }, - \\"path\\": [ - \\"size\\", - \\"padding\\", - \\"xl\\" - ] - } - } - } - }, - \\"platform\\": { - \\"transformGroup\\": \\"js\\", - \\"buildPath\\": \\"__integration__/build/\\", - \\"options\\": { - \\"otherOption\\": \\"platform option\\" - }, - \\"files\\": [ - { - \\"destination\\": \\"registerCustomFormatWithOldArgs.json\\", - \\"options\\": { - \\"showFileHeader\\": true, - \\"otherOption\\": \\"Test\\" - } - }, - { - \\"destination\\": \\"registerCustomFormatWithNewArgs.json\\", - \\"options\\": { - \\"showFileHeader\\": true, - \\"otherOption\\": \\"Test\\" - } - } - ], - \\"transforms\\": [ - { - \\"type\\": \\"attribute\\" - }, - { - \\"type\\": \\"name\\" - }, - { - \\"type\\": \\"value\\" - }, - { - \\"type\\": \\"value\\" - } - ], - \\"actions\\": [] - }, - \\"file\\": { - \\"options\\": { - \\"otherOption\\": \\"Test\\", - \\"showFileHeader\\": true - }, - \\"destination\\": \\"registerCustomFormatWithOldArgs.json\\" - }, - \\"options\\": { - \\"otherOption\\": \\"Test\\", - \\"showFileHeader\\": true - } - }, - \\"platform\\": { - \\"transformGroup\\": \\"js\\", - \\"buildPath\\": \\"__integration__/build/\\", - \\"options\\": { - \\"otherOption\\": \\"platform option\\" - }, - \\"files\\": [ - { - \\"destination\\": \\"registerCustomFormatWithOldArgs.json\\", - \\"options\\": { - \\"showFileHeader\\": true, - \\"otherOption\\": \\"Test\\" - } - }, - { - \\"destination\\": \\"registerCustomFormatWithNewArgs.json\\", - \\"options\\": { - \\"showFileHeader\\": true, - \\"otherOption\\": \\"Test\\" - } - } - ], - \\"transforms\\": [ - { - \\"type\\": \\"attribute\\" - }, - { - \\"type\\": \\"name\\" - }, - { - \\"type\\": \\"value\\" - }, - { - \\"type\\": \\"value\\" - } - ], - \\"actions\\": [] - }, - \\"file\\": { - \\"destination\\": \\"registerCustomFormatWithOldArgs.json\\", - \\"options\\": { - \\"showFileHeader\\": true, - \\"otherOption\\": \\"Test\\" - } - } -}" -`; diff --git a/__integration__/__snapshots__/customFormats.test.snap.js b/__integration__/__snapshots__/customFormats.test.snap.js new file mode 100644 index 000000000..b02f9f46b --- /dev/null +++ b/__integration__/__snapshots__/customFormats.test.snap.js @@ -0,0 +1,1929 @@ +/* @web/test-runner snapshot v1 */ +export const snapshots = {}; + +snapshots["inline custom with old args should match snapshot"] = +`{ + "dictionary": { + "dictionary": { + "tokens": { + "size": { + "padding": { + "small": { + "value": "0.5rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 0.5 + }, + "name": "SizePaddingSmall", + "attributes": { + "category": "size", + "type": "padding", + "item": "small" + }, + "path": [ + "size", + "padding", + "small" + ] + }, + "medium": { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingMedium", + "attributes": { + "category": "size", + "type": "padding", + "item": "medium" + }, + "path": [ + "size", + "padding", + "medium" + ] + }, + "large": { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingLarge", + "attributes": { + "category": "size", + "type": "padding", + "item": "large" + }, + "path": [ + "size", + "padding", + "large" + ] + }, + "xl": { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingXl", + "attributes": { + "category": "size", + "type": "padding", + "item": "xl" + }, + "path": [ + "size", + "padding", + "xl" + ] + } + } + } + }, + "allTokens": [ + { + "value": "0.5rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 0.5 + }, + "name": "SizePaddingSmall", + "attributes": { + "category": "size", + "type": "padding", + "item": "small" + }, + "path": [ + "size", + "padding", + "small" + ] + }, + { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingMedium", + "attributes": { + "category": "size", + "type": "padding", + "item": "medium" + }, + "path": [ + "size", + "padding", + "medium" + ] + }, + { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingLarge", + "attributes": { + "category": "size", + "type": "padding", + "item": "large" + }, + "path": [ + "size", + "padding", + "large" + ] + }, + { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingXl", + "attributes": { + "category": "size", + "type": "padding", + "item": "xl" + }, + "path": [ + "size", + "padding", + "xl" + ] + } + ], + "_tokens": { + "size": { + "padding": { + "small": { + "value": "0.5rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 0.5 + }, + "name": "SizePaddingSmall", + "attributes": { + "category": "size", + "type": "padding", + "item": "small" + }, + "path": [ + "size", + "padding", + "small" + ] + }, + "medium": { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingMedium", + "attributes": { + "category": "size", + "type": "padding", + "item": "medium" + }, + "path": [ + "size", + "padding", + "medium" + ] + }, + "large": { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingLarge", + "attributes": { + "category": "size", + "type": "padding", + "item": "large" + }, + "path": [ + "size", + "padding", + "large" + ] + }, + "xl": { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingXl", + "attributes": { + "category": "size", + "type": "padding", + "item": "xl" + }, + "path": [ + "size", + "padding", + "xl" + ] + } + } + } + } + }, + "allTokens": [ + { + "value": "0.5rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 0.5 + }, + "name": "SizePaddingSmall", + "attributes": { + "category": "size", + "type": "padding", + "item": "small" + }, + "path": [ + "size", + "padding", + "small" + ] + }, + { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingMedium", + "attributes": { + "category": "size", + "type": "padding", + "item": "medium" + }, + "path": [ + "size", + "padding", + "medium" + ] + }, + { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingLarge", + "attributes": { + "category": "size", + "type": "padding", + "item": "large" + }, + "path": [ + "size", + "padding", + "large" + ] + }, + { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingXl", + "attributes": { + "category": "size", + "type": "padding", + "item": "xl" + }, + "path": [ + "size", + "padding", + "xl" + ] + } + ], + "tokens": { + "size": { + "padding": { + "small": { + "value": "0.5rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 0.5 + }, + "name": "SizePaddingSmall", + "attributes": { + "category": "size", + "type": "padding", + "item": "small" + }, + "path": [ + "size", + "padding", + "small" + ] + }, + "medium": { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingMedium", + "attributes": { + "category": "size", + "type": "padding", + "item": "medium" + }, + "path": [ + "size", + "padding", + "medium" + ] + }, + "large": { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingLarge", + "attributes": { + "category": "size", + "type": "padding", + "item": "large" + }, + "path": [ + "size", + "padding", + "large" + ] + }, + "xl": { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingXl", + "attributes": { + "category": "size", + "type": "padding", + "item": "xl" + }, + "path": [ + "size", + "padding", + "xl" + ] + } + } + } + }, + "platform": { + "transformGroup": "js", + "buildPath": "__integration__/build/", + "options": { + "otherOption": "platform option" + }, + "files": [ + { + "destination": "inlineCustomFormatWithOldArgs.json", + "options": { + "showFileHeader": true, + "otherOption": "Test" + } + }, + { + "destination": "inlineCustomFormatWithNewArgs.json", + "options": { + "showFileHeader": true, + "otherOption": "Test" + } + } + ], + "transforms": [ + { + "type": "attribute" + }, + { + "type": "name" + }, + { + "type": "value" + }, + { + "type": "value" + } + ], + "actions": [] + }, + "file": { + "options": { + "otherOption": "Test", + "showFileHeader": true + }, + "destination": "inlineCustomFormatWithOldArgs.json" + }, + "options": { + "otherOption": "Test", + "showFileHeader": true + } + }, + "platform": { + "transformGroup": "js", + "buildPath": "__integration__/build/", + "options": { + "otherOption": "platform option" + }, + "files": [ + { + "destination": "inlineCustomFormatWithOldArgs.json", + "options": { + "showFileHeader": true, + "otherOption": "Test" + } + }, + { + "destination": "inlineCustomFormatWithNewArgs.json", + "options": { + "showFileHeader": true, + "otherOption": "Test" + } + } + ], + "transforms": [ + { + "type": "attribute" + }, + { + "type": "name" + }, + { + "type": "value" + }, + { + "type": "value" + } + ], + "actions": [] + }, + "file": { + "destination": "inlineCustomFormatWithOldArgs.json", + "options": { + "showFileHeader": true, + "otherOption": "Test" + } + } +}`; +/* end snapshot inline custom with old args should match snapshot */ + +snapshots["inline custom with new args should match snapshot"] = +`{ + "dictionary": { + "tokens": { + "size": { + "padding": { + "small": { + "value": "0.5rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 0.5 + }, + "name": "SizePaddingSmall", + "attributes": { + "category": "size", + "type": "padding", + "item": "small" + }, + "path": [ + "size", + "padding", + "small" + ] + }, + "medium": { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingMedium", + "attributes": { + "category": "size", + "type": "padding", + "item": "medium" + }, + "path": [ + "size", + "padding", + "medium" + ] + }, + "large": { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingLarge", + "attributes": { + "category": "size", + "type": "padding", + "item": "large" + }, + "path": [ + "size", + "padding", + "large" + ] + }, + "xl": { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingXl", + "attributes": { + "category": "size", + "type": "padding", + "item": "xl" + }, + "path": [ + "size", + "padding", + "xl" + ] + } + } + } + }, + "allTokens": [ + { + "value": "0.5rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 0.5 + }, + "name": "SizePaddingSmall", + "attributes": { + "category": "size", + "type": "padding", + "item": "small" + }, + "path": [ + "size", + "padding", + "small" + ] + }, + { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingMedium", + "attributes": { + "category": "size", + "type": "padding", + "item": "medium" + }, + "path": [ + "size", + "padding", + "medium" + ] + }, + { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingLarge", + "attributes": { + "category": "size", + "type": "padding", + "item": "large" + }, + "path": [ + "size", + "padding", + "large" + ] + }, + { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingXl", + "attributes": { + "category": "size", + "type": "padding", + "item": "xl" + }, + "path": [ + "size", + "padding", + "xl" + ] + } + ], + "_tokens": { + "size": { + "padding": { + "small": { + "value": "0.5rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 0.5 + }, + "name": "SizePaddingSmall", + "attributes": { + "category": "size", + "type": "padding", + "item": "small" + }, + "path": [ + "size", + "padding", + "small" + ] + }, + "medium": { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingMedium", + "attributes": { + "category": "size", + "type": "padding", + "item": "medium" + }, + "path": [ + "size", + "padding", + "medium" + ] + }, + "large": { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingLarge", + "attributes": { + "category": "size", + "type": "padding", + "item": "large" + }, + "path": [ + "size", + "padding", + "large" + ] + }, + "xl": { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingXl", + "attributes": { + "category": "size", + "type": "padding", + "item": "xl" + }, + "path": [ + "size", + "padding", + "xl" + ] + } + } + } + } + }, + "allTokens": [ + { + "value": "0.5rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 0.5 + }, + "name": "SizePaddingSmall", + "attributes": { + "category": "size", + "type": "padding", + "item": "small" + }, + "path": [ + "size", + "padding", + "small" + ] + }, + { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingMedium", + "attributes": { + "category": "size", + "type": "padding", + "item": "medium" + }, + "path": [ + "size", + "padding", + "medium" + ] + }, + { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingLarge", + "attributes": { + "category": "size", + "type": "padding", + "item": "large" + }, + "path": [ + "size", + "padding", + "large" + ] + }, + { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingXl", + "attributes": { + "category": "size", + "type": "padding", + "item": "xl" + }, + "path": [ + "size", + "padding", + "xl" + ] + } + ], + "tokens": { + "size": { + "padding": { + "small": { + "value": "0.5rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 0.5 + }, + "name": "SizePaddingSmall", + "attributes": { + "category": "size", + "type": "padding", + "item": "small" + }, + "path": [ + "size", + "padding", + "small" + ] + }, + "medium": { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingMedium", + "attributes": { + "category": "size", + "type": "padding", + "item": "medium" + }, + "path": [ + "size", + "padding", + "medium" + ] + }, + "large": { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingLarge", + "attributes": { + "category": "size", + "type": "padding", + "item": "large" + }, + "path": [ + "size", + "padding", + "large" + ] + }, + "xl": { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingXl", + "attributes": { + "category": "size", + "type": "padding", + "item": "xl" + }, + "path": [ + "size", + "padding", + "xl" + ] + } + } + } + }, + "platform": { + "transformGroup": "js", + "buildPath": "__integration__/build/", + "options": { + "otherOption": "platform option" + }, + "files": [ + { + "destination": "inlineCustomFormatWithOldArgs.json", + "options": { + "showFileHeader": true, + "otherOption": "Test" + } + }, + { + "destination": "inlineCustomFormatWithNewArgs.json", + "options": { + "showFileHeader": true, + "otherOption": "Test" + } + } + ], + "transforms": [ + { + "type": "attribute" + }, + { + "type": "name" + }, + { + "type": "value" + }, + { + "type": "value" + } + ], + "actions": [] + }, + "file": { + "options": { + "otherOption": "Test", + "showFileHeader": true + }, + "destination": "inlineCustomFormatWithNewArgs.json" + }, + "options": { + "otherOption": "Test", + "showFileHeader": true + } +}`; +/* end snapshot inline custom with new args should match snapshot */ + +snapshots["register custom format with old args should match snapshot"] = +`{ + "dictionary": { + "dictionary": { + "tokens": { + "size": { + "padding": { + "small": { + "value": "0.5rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 0.5 + }, + "name": "SizePaddingSmall", + "attributes": { + "category": "size", + "type": "padding", + "item": "small" + }, + "path": [ + "size", + "padding", + "small" + ] + }, + "medium": { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingMedium", + "attributes": { + "category": "size", + "type": "padding", + "item": "medium" + }, + "path": [ + "size", + "padding", + "medium" + ] + }, + "large": { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingLarge", + "attributes": { + "category": "size", + "type": "padding", + "item": "large" + }, + "path": [ + "size", + "padding", + "large" + ] + }, + "xl": { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingXl", + "attributes": { + "category": "size", + "type": "padding", + "item": "xl" + }, + "path": [ + "size", + "padding", + "xl" + ] + } + } + } + }, + "allTokens": [ + { + "value": "0.5rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 0.5 + }, + "name": "SizePaddingSmall", + "attributes": { + "category": "size", + "type": "padding", + "item": "small" + }, + "path": [ + "size", + "padding", + "small" + ] + }, + { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingMedium", + "attributes": { + "category": "size", + "type": "padding", + "item": "medium" + }, + "path": [ + "size", + "padding", + "medium" + ] + }, + { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingLarge", + "attributes": { + "category": "size", + "type": "padding", + "item": "large" + }, + "path": [ + "size", + "padding", + "large" + ] + }, + { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingXl", + "attributes": { + "category": "size", + "type": "padding", + "item": "xl" + }, + "path": [ + "size", + "padding", + "xl" + ] + } + ], + "_tokens": { + "size": { + "padding": { + "small": { + "value": "0.5rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 0.5 + }, + "name": "SizePaddingSmall", + "attributes": { + "category": "size", + "type": "padding", + "item": "small" + }, + "path": [ + "size", + "padding", + "small" + ] + }, + "medium": { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingMedium", + "attributes": { + "category": "size", + "type": "padding", + "item": "medium" + }, + "path": [ + "size", + "padding", + "medium" + ] + }, + "large": { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingLarge", + "attributes": { + "category": "size", + "type": "padding", + "item": "large" + }, + "path": [ + "size", + "padding", + "large" + ] + }, + "xl": { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingXl", + "attributes": { + "category": "size", + "type": "padding", + "item": "xl" + }, + "path": [ + "size", + "padding", + "xl" + ] + } + } + } + } + }, + "allTokens": [ + { + "value": "0.5rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 0.5 + }, + "name": "SizePaddingSmall", + "attributes": { + "category": "size", + "type": "padding", + "item": "small" + }, + "path": [ + "size", + "padding", + "small" + ] + }, + { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingMedium", + "attributes": { + "category": "size", + "type": "padding", + "item": "medium" + }, + "path": [ + "size", + "padding", + "medium" + ] + }, + { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingLarge", + "attributes": { + "category": "size", + "type": "padding", + "item": "large" + }, + "path": [ + "size", + "padding", + "large" + ] + }, + { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingXl", + "attributes": { + "category": "size", + "type": "padding", + "item": "xl" + }, + "path": [ + "size", + "padding", + "xl" + ] + } + ], + "tokens": { + "size": { + "padding": { + "small": { + "value": "0.5rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 0.5 + }, + "name": "SizePaddingSmall", + "attributes": { + "category": "size", + "type": "padding", + "item": "small" + }, + "path": [ + "size", + "padding", + "small" + ] + }, + "medium": { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingMedium", + "attributes": { + "category": "size", + "type": "padding", + "item": "medium" + }, + "path": [ + "size", + "padding", + "medium" + ] + }, + "large": { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingLarge", + "attributes": { + "category": "size", + "type": "padding", + "item": "large" + }, + "path": [ + "size", + "padding", + "large" + ] + }, + "xl": { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingXl", + "attributes": { + "category": "size", + "type": "padding", + "item": "xl" + }, + "path": [ + "size", + "padding", + "xl" + ] + } + } + } + }, + "platform": { + "transformGroup": "js", + "buildPath": "__integration__/build/", + "options": { + "otherOption": "platform option" + }, + "files": [ + { + "destination": "registerCustomFormatWithOldArgs.json", + "options": { + "showFileHeader": true, + "otherOption": "Test" + } + }, + { + "destination": "registerCustomFormatWithNewArgs.json", + "options": { + "showFileHeader": true, + "otherOption": "Test" + } + } + ], + "transforms": [ + { + "type": "attribute" + }, + { + "type": "name" + }, + { + "type": "value" + }, + { + "type": "value" + } + ], + "actions": [] + }, + "file": { + "options": { + "otherOption": "Test", + "showFileHeader": true + }, + "destination": "registerCustomFormatWithOldArgs.json" + }, + "options": { + "otherOption": "Test", + "showFileHeader": true + } + }, + "platform": { + "transformGroup": "js", + "buildPath": "__integration__/build/", + "options": { + "otherOption": "platform option" + }, + "files": [ + { + "destination": "registerCustomFormatWithOldArgs.json", + "options": { + "showFileHeader": true, + "otherOption": "Test" + } + }, + { + "destination": "registerCustomFormatWithNewArgs.json", + "options": { + "showFileHeader": true, + "otherOption": "Test" + } + } + ], + "transforms": [ + { + "type": "attribute" + }, + { + "type": "name" + }, + { + "type": "value" + }, + { + "type": "value" + } + ], + "actions": [] + }, + "file": { + "destination": "registerCustomFormatWithOldArgs.json", + "options": { + "showFileHeader": true, + "otherOption": "Test" + } + } +}`; +/* end snapshot register custom format with old args should match snapshot */ + +snapshots["register custom format with new args should match snapshot"] = +`{ + "dictionary": { + "tokens": { + "size": { + "padding": { + "small": { + "value": "0.5rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 0.5 + }, + "name": "SizePaddingSmall", + "attributes": { + "category": "size", + "type": "padding", + "item": "small" + }, + "path": [ + "size", + "padding", + "small" + ] + }, + "medium": { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingMedium", + "attributes": { + "category": "size", + "type": "padding", + "item": "medium" + }, + "path": [ + "size", + "padding", + "medium" + ] + }, + "large": { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingLarge", + "attributes": { + "category": "size", + "type": "padding", + "item": "large" + }, + "path": [ + "size", + "padding", + "large" + ] + }, + "xl": { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingXl", + "attributes": { + "category": "size", + "type": "padding", + "item": "xl" + }, + "path": [ + "size", + "padding", + "xl" + ] + } + } + } + }, + "allTokens": [ + { + "value": "0.5rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 0.5 + }, + "name": "SizePaddingSmall", + "attributes": { + "category": "size", + "type": "padding", + "item": "small" + }, + "path": [ + "size", + "padding", + "small" + ] + }, + { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingMedium", + "attributes": { + "category": "size", + "type": "padding", + "item": "medium" + }, + "path": [ + "size", + "padding", + "medium" + ] + }, + { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingLarge", + "attributes": { + "category": "size", + "type": "padding", + "item": "large" + }, + "path": [ + "size", + "padding", + "large" + ] + }, + { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingXl", + "attributes": { + "category": "size", + "type": "padding", + "item": "xl" + }, + "path": [ + "size", + "padding", + "xl" + ] + } + ], + "_tokens": { + "size": { + "padding": { + "small": { + "value": "0.5rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 0.5 + }, + "name": "SizePaddingSmall", + "attributes": { + "category": "size", + "type": "padding", + "item": "small" + }, + "path": [ + "size", + "padding", + "small" + ] + }, + "medium": { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingMedium", + "attributes": { + "category": "size", + "type": "padding", + "item": "medium" + }, + "path": [ + "size", + "padding", + "medium" + ] + }, + "large": { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingLarge", + "attributes": { + "category": "size", + "type": "padding", + "item": "large" + }, + "path": [ + "size", + "padding", + "large" + ] + }, + "xl": { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingXl", + "attributes": { + "category": "size", + "type": "padding", + "item": "xl" + }, + "path": [ + "size", + "padding", + "xl" + ] + } + } + } + } + }, + "allTokens": [ + { + "value": "0.5rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 0.5 + }, + "name": "SizePaddingSmall", + "attributes": { + "category": "size", + "type": "padding", + "item": "small" + }, + "path": [ + "size", + "padding", + "small" + ] + }, + { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingMedium", + "attributes": { + "category": "size", + "type": "padding", + "item": "medium" + }, + "path": [ + "size", + "padding", + "medium" + ] + }, + { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingLarge", + "attributes": { + "category": "size", + "type": "padding", + "item": "large" + }, + "path": [ + "size", + "padding", + "large" + ] + }, + { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingXl", + "attributes": { + "category": "size", + "type": "padding", + "item": "xl" + }, + "path": [ + "size", + "padding", + "xl" + ] + } + ], + "tokens": { + "size": { + "padding": { + "small": { + "value": "0.5rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 0.5 + }, + "name": "SizePaddingSmall", + "attributes": { + "category": "size", + "type": "padding", + "item": "small" + }, + "path": [ + "size", + "padding", + "small" + ] + }, + "medium": { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingMedium", + "attributes": { + "category": "size", + "type": "padding", + "item": "medium" + }, + "path": [ + "size", + "padding", + "medium" + ] + }, + "large": { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingLarge", + "attributes": { + "category": "size", + "type": "padding", + "item": "large" + }, + "path": [ + "size", + "padding", + "large" + ] + }, + "xl": { + "value": "1rem", + "filePath": "__integration__/tokens/size/padding.json", + "isSource": true, + "original": { + "value": 1 + }, + "name": "SizePaddingXl", + "attributes": { + "category": "size", + "type": "padding", + "item": "xl" + }, + "path": [ + "size", + "padding", + "xl" + ] + } + } + } + }, + "platform": { + "transformGroup": "js", + "buildPath": "__integration__/build/", + "options": { + "otherOption": "platform option" + }, + "files": [ + { + "destination": "registerCustomFormatWithOldArgs.json", + "options": { + "showFileHeader": true, + "otherOption": "Test" + } + }, + { + "destination": "registerCustomFormatWithNewArgs.json", + "options": { + "showFileHeader": true, + "otherOption": "Test" + } + } + ], + "transforms": [ + { + "type": "attribute" + }, + { + "type": "name" + }, + { + "type": "value" + }, + { + "type": "value" + } + ], + "actions": [] + }, + "file": { + "options": { + "otherOption": "Test", + "showFileHeader": true + }, + "destination": "registerCustomFormatWithNewArgs.json" + }, + "options": { + "otherOption": "Test", + "showFileHeader": true + } +}`; +/* end snapshot register custom format with new args should match snapshot */ + diff --git a/__integration__/__snapshots__/flutter.test.js.snap b/__integration__/__snapshots__/flutter.test.snap.js similarity index 98% rename from __integration__/__snapshots__/flutter.test.js.snap rename to __integration__/__snapshots__/flutter.test.snap.js index fdb6fbc35..fff00d6e7 100644 --- a/__integration__/__snapshots__/flutter.test.js.snap +++ b/__integration__/__snapshots__/flutter.test.snap.js @@ -1,180 +1,8 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +/* @web/test-runner snapshot v1 */ +export const snapshots = {}; -exports[`integration flutter flutter/class.dart separate should match snapshot 1`] = ` -" -// -// style_dictionary_color.dart -// - -// Do not edit directly -// Generated on Sat, 01 Jan 2000 00:00:00 GMT - - - -import 'dart:ui'; - -class StyleDictionaryColor { - StyleDictionaryColor._(); - - static const backgroundDanger = Color(0xFFFFEAE9); - static const backgroundDisabled = Color(0xFFDEE1E1); - static const backgroundInfo = Color(0xFFE9F8FF); - static const backgroundPrimary = Color(0xFFFFFFFF); - static const backgroundSecondary = Color(0xFFF3F4F4); - static const backgroundSuccess = Color(0xFFEBF9EB); - static const backgroundTertiary = Color(0xFFDEE1E1); - static const backgroundWarning = Color(0xFFFFEDE3); - static const borderPrimary = Color(0xFFC8CCCC); - static const brandPrimary = Color(0xFF0B8599); - static const brandSecondary = Color(0xFF6F5ED3); - static const coreAqua0 = Color(0xFFD9FCFB); - static const coreAqua100 = Color(0xFFC5F9F9); - static const coreAqua1000 = Color(0xFF083D4F); - static const coreAqua1100 = Color(0xFF002838); - static const coreAqua200 = Color(0xFFA5F2F2); - static const coreAqua300 = Color(0xFF76E5E2); - static const coreAqua400 = Color(0xFF33D6E2); - static const coreAqua500 = Color(0xFF17B8CE); - static const coreAqua600 = Color(0xFF0797AE); - static const coreAqua700 = Color(0xFF0B8599); - static const coreAqua800 = Color(0xFF0F6E84); - static const coreAqua900 = Color(0xFF035E73); - static const coreBlue0 = Color(0xFFE9F8FF); - static const coreBlue100 = Color(0xFFDCF2FF); - static const coreBlue1000 = Color(0xFF0A3960); - static const coreBlue1100 = Color(0xFF002138); - static const coreBlue200 = Color(0xFFC7E4F9); - static const coreBlue300 = Color(0xFFA1D2F8); - static const coreBlue400 = Color(0xFF56ADF5); - static const coreBlue500 = Color(0xFF3896E3); - static const coreBlue600 = Color(0xFF2B87D3); - static const coreBlue700 = Color(0xFF2079C3); - static const coreBlue800 = Color(0xFF116DAA); - static const coreBlue900 = Color(0xFF0C5689); - static const coreGreen0 = Color(0xFFEBF9EB); - static const coreGreen100 = Color(0xFFD7F4D7); - static const coreGreen1000 = Color(0xFF08422F); - static const coreGreen1100 = Color(0xFF002B20); - static const coreGreen200 = Color(0xFFC2F2BD); - static const coreGreen300 = Color(0xFF98E58E); - static const coreGreen400 = Color(0xFF75DD66); - static const coreGreen500 = Color(0xFF59CB59); - static const coreGreen600 = Color(0xFF2BB656); - static const coreGreen700 = Color(0xFF0CA750); - static const coreGreen800 = Color(0xFF008B46); - static const coreGreen900 = Color(0xFF006B40); - static const coreMagenta0 = Color(0xFFFEF0FF); - static const coreMagenta100 = Color(0xFFF9E3FC); - static const coreMagenta1000 = Color(0xFF451551); - static const coreMagenta1100 = Color(0xFF29192D); - static const coreMagenta200 = Color(0xFFF4C4F7); - static const coreMagenta300 = Color(0xFFEDADF2); - static const coreMagenta400 = Color(0xFFF282F5); - static const coreMagenta500 = Color(0xFFDB61DB); - static const coreMagenta600 = Color(0xFFC44EB9); - static const coreMagenta700 = Color(0xFFAC44A8); - static const coreMagenta800 = Color(0xFF8F3896); - static const coreMagenta900 = Color(0xFF6C2277); - static const coreNeutral0 = Color(0xFFFFFFFF); - static const coreNeutral100 = Color(0xFFF3F4F4); - static const coreNeutral1000 = Color(0xFF162020); - static const coreNeutral1100 = Color(0xFF040404); - static const coreNeutral200 = Color(0xFFDEE1E1); - static const coreNeutral300 = Color(0xFFC8CCCC); - static const coreNeutral400 = Color(0xFFB0B6B7); - static const coreNeutral500 = Color(0xFF929A9B); - static const coreNeutral600 = Color(0xFF6E797A); - static const coreNeutral700 = Color(0xFF515E5F); - static const coreNeutral800 = Color(0xFF364141); - static const coreNeutral900 = Color(0xFF273333); - static const coreOrange0 = Color(0xFFFFEDE3); - static const coreOrange100 = Color(0xFFFCDCCC); - static const coreOrange1000 = Color(0xFF601700); - static const coreOrange1100 = Color(0xFF2D130E); - static const coreOrange200 = Color(0xFFFFC6A4); - static const coreOrange300 = Color(0xFFFFB180); - static const coreOrange400 = Color(0xFFFF9C5D); - static const coreOrange500 = Color(0xFFFC8943); - static const coreOrange600 = Color(0xFFF57D33); - static const coreOrange700 = Color(0xFFED7024); - static const coreOrange800 = Color(0xFFCE5511); - static const coreOrange900 = Color(0xFF962C0B); - static const corePink0 = Color(0xFFFFE9F3); - static const corePink100 = Color(0xFFFCDBEB); - static const corePink1000 = Color(0xFF561231); - static const corePink1100 = Color(0xFF2B1721); - static const corePink200 = Color(0xFFFFB5D5); - static const corePink300 = Color(0xFFFF95C1); - static const corePink400 = Color(0xFFFF76AE); - static const corePink500 = Color(0xFFEF588B); - static const corePink600 = Color(0xFFE0447C); - static const corePink700 = Color(0xFFCE3665); - static const corePink800 = Color(0xFFB22F5B); - static const corePink900 = Color(0xFF931847); - static const corePurple0 = Color(0xFFF2F2F9); - static const corePurple100 = Color(0xFFEAEAF9); - static const corePurple1000 = Color(0xFF2D246B); - static const corePurple1100 = Color(0xFF1D1D38); - static const corePurple200 = Color(0xFFD8D7F9); - static const corePurple300 = Color(0xFFC1C1F7); - static const corePurple400 = Color(0xFFA193F2); - static const corePurple500 = Color(0xFF9180F4); - static const corePurple600 = Color(0xFF816FEA); - static const corePurple700 = Color(0xFF6F5ED3); - static const corePurple800 = Color(0xFF5E4EBA); - static const corePurple900 = Color(0xFF483A9C); - static const coreRed0 = Color(0xFFFFEAE9); - static const coreRed100 = Color(0xFFFFD5D2); - static const coreRed1000 = Color(0xFF6D1313); - static const coreRed1100 = Color(0xFF2B1111); - static const coreRed200 = Color(0xFFFFB8B1); - static const coreRed300 = Color(0xFFFF9C8F); - static const coreRed400 = Color(0xFFFF7F6E); - static const coreRed500 = Color(0xFFF76054); - static const coreRed600 = Color(0xFFED4C42); - static const coreRed700 = Color(0xFFDB3E3E); - static const coreRed800 = Color(0xFFC63434); - static const coreRed900 = Color(0xFF992222); - static const coreTeal0 = Color(0xFFE5F9F5); - static const coreTeal100 = Color(0xFFCDF7EF); - static const coreTeal1000 = Color(0xFF083F3F); - static const coreTeal1100 = Color(0xFF002528); - static const coreTeal200 = Color(0xFFB3F2E6); - static const coreTeal300 = Color(0xFF7DEAD5); - static const coreTeal400 = Color(0xFF24E0C5); - static const coreTeal500 = Color(0xFF08C4B2); - static const coreTeal600 = Color(0xFF00A99C); - static const coreTeal700 = Color(0xFF0B968F); - static const coreTeal800 = Color(0xFF067C7C); - static const coreTeal900 = Color(0xFF026661); - static const coreYellow0 = Color(0xFFFFF8E2); - static const coreYellow100 = Color(0xFFFDEFCD); - static const coreYellow1000 = Color(0xFF542A00); - static const coreYellow1100 = Color(0xFF2D1A05); - static const coreYellow200 = Color(0xFFFFE99A); - static const coreYellow300 = Color(0xFFFFE16E); - static const coreYellow400 = Color(0xFFFFD943); - static const coreYellow500 = Color(0xFFFFCD1C); - static const coreYellow600 = Color(0xFFFFBC00); - static const coreYellow700 = Color(0xFFDD9903); - static const coreYellow800 = Color(0xFFBA7506); - static const coreYellow900 = Color(0xFF944C0C); - static const fontDanger = Color(0xFF6D1313); - static const fontInteractive = Color(0xFF0B8599); - static const fontInteractiveActive = Color(0xFF6F5ED3); - static const fontInteractiveDisabled = Color(0xFF364141); - static const fontInteractiveHover = Color(0xFF0B8599); - static const fontPrimary = Color(0xFF040404); - static const fontSecondary = Color(0xFF273333); - static const fontSuccess = Color(0xFF08422F); - static const fontTertiary = Color(0xFF364141); - static const fontWarning = Color(0xFF601700); -} -" -`; - -exports[`integration flutter flutter/class.dart should match snapshot 1`] = ` -" +snapshots["flutter/class.dart should match snapshot"] = +` // // style_dictionary.dart // @@ -351,12 +179,11 @@ class StyleDictionary { static const sizePaddingMedium = 16.00; static const sizePaddingSmall = 8.00; static const sizePaddingXl = 16.00; -} -" -`; +}`; +/* end snapshot flutter/class.dart should match snapshot */ -exports[`integration flutter flutter/class.dart with references should match snapshot 1`] = ` -" +snapshots["flutter/class.dart with references should match snapshot"] = +` // // style_dictionary_with_references.dart // @@ -533,6 +360,178 @@ class StyleDictionary { static const colorFontInteractiveHover = colorBrandPrimary; static const colorFontInteractive = colorBrandPrimary; static const colorBackgroundDisabled = colorBackgroundTertiary; -} -" -`; +}`; +/* end snapshot flutter/class.dart with references should match snapshot */ + +snapshots["flutter/class.dart separate should match snapshot"] = +` +// +// style_dictionary_color.dart +// + +// Do not edit directly +// Generated on Sat, 01 Jan 2000 00:00:00 GMT + + + +import 'dart:ui'; + +class StyleDictionaryColor { + StyleDictionaryColor._(); + + static const backgroundDanger = Color(0xFFFFEAE9); + static const backgroundDisabled = Color(0xFFDEE1E1); + static const backgroundInfo = Color(0xFFE9F8FF); + static const backgroundPrimary = Color(0xFFFFFFFF); + static const backgroundSecondary = Color(0xFFF3F4F4); + static const backgroundSuccess = Color(0xFFEBF9EB); + static const backgroundTertiary = Color(0xFFDEE1E1); + static const backgroundWarning = Color(0xFFFFEDE3); + static const borderPrimary = Color(0xFFC8CCCC); + static const brandPrimary = Color(0xFF0B8599); + static const brandSecondary = Color(0xFF6F5ED3); + static const coreAqua0 = Color(0xFFD9FCFB); + static const coreAqua100 = Color(0xFFC5F9F9); + static const coreAqua1000 = Color(0xFF083D4F); + static const coreAqua1100 = Color(0xFF002838); + static const coreAqua200 = Color(0xFFA5F2F2); + static const coreAqua300 = Color(0xFF76E5E2); + static const coreAqua400 = Color(0xFF33D6E2); + static const coreAqua500 = Color(0xFF17B8CE); + static const coreAqua600 = Color(0xFF0797AE); + static const coreAqua700 = Color(0xFF0B8599); + static const coreAqua800 = Color(0xFF0F6E84); + static const coreAqua900 = Color(0xFF035E73); + static const coreBlue0 = Color(0xFFE9F8FF); + static const coreBlue100 = Color(0xFFDCF2FF); + static const coreBlue1000 = Color(0xFF0A3960); + static const coreBlue1100 = Color(0xFF002138); + static const coreBlue200 = Color(0xFFC7E4F9); + static const coreBlue300 = Color(0xFFA1D2F8); + static const coreBlue400 = Color(0xFF56ADF5); + static const coreBlue500 = Color(0xFF3896E3); + static const coreBlue600 = Color(0xFF2B87D3); + static const coreBlue700 = Color(0xFF2079C3); + static const coreBlue800 = Color(0xFF116DAA); + static const coreBlue900 = Color(0xFF0C5689); + static const coreGreen0 = Color(0xFFEBF9EB); + static const coreGreen100 = Color(0xFFD7F4D7); + static const coreGreen1000 = Color(0xFF08422F); + static const coreGreen1100 = Color(0xFF002B20); + static const coreGreen200 = Color(0xFFC2F2BD); + static const coreGreen300 = Color(0xFF98E58E); + static const coreGreen400 = Color(0xFF75DD66); + static const coreGreen500 = Color(0xFF59CB59); + static const coreGreen600 = Color(0xFF2BB656); + static const coreGreen700 = Color(0xFF0CA750); + static const coreGreen800 = Color(0xFF008B46); + static const coreGreen900 = Color(0xFF006B40); + static const coreMagenta0 = Color(0xFFFEF0FF); + static const coreMagenta100 = Color(0xFFF9E3FC); + static const coreMagenta1000 = Color(0xFF451551); + static const coreMagenta1100 = Color(0xFF29192D); + static const coreMagenta200 = Color(0xFFF4C4F7); + static const coreMagenta300 = Color(0xFFEDADF2); + static const coreMagenta400 = Color(0xFFF282F5); + static const coreMagenta500 = Color(0xFFDB61DB); + static const coreMagenta600 = Color(0xFFC44EB9); + static const coreMagenta700 = Color(0xFFAC44A8); + static const coreMagenta800 = Color(0xFF8F3896); + static const coreMagenta900 = Color(0xFF6C2277); + static const coreNeutral0 = Color(0xFFFFFFFF); + static const coreNeutral100 = Color(0xFFF3F4F4); + static const coreNeutral1000 = Color(0xFF162020); + static const coreNeutral1100 = Color(0xFF040404); + static const coreNeutral200 = Color(0xFFDEE1E1); + static const coreNeutral300 = Color(0xFFC8CCCC); + static const coreNeutral400 = Color(0xFFB0B6B7); + static const coreNeutral500 = Color(0xFF929A9B); + static const coreNeutral600 = Color(0xFF6E797A); + static const coreNeutral700 = Color(0xFF515E5F); + static const coreNeutral800 = Color(0xFF364141); + static const coreNeutral900 = Color(0xFF273333); + static const coreOrange0 = Color(0xFFFFEDE3); + static const coreOrange100 = Color(0xFFFCDCCC); + static const coreOrange1000 = Color(0xFF601700); + static const coreOrange1100 = Color(0xFF2D130E); + static const coreOrange200 = Color(0xFFFFC6A4); + static const coreOrange300 = Color(0xFFFFB180); + static const coreOrange400 = Color(0xFFFF9C5D); + static const coreOrange500 = Color(0xFFFC8943); + static const coreOrange600 = Color(0xFFF57D33); + static const coreOrange700 = Color(0xFFED7024); + static const coreOrange800 = Color(0xFFCE5511); + static const coreOrange900 = Color(0xFF962C0B); + static const corePink0 = Color(0xFFFFE9F3); + static const corePink100 = Color(0xFFFCDBEB); + static const corePink1000 = Color(0xFF561231); + static const corePink1100 = Color(0xFF2B1721); + static const corePink200 = Color(0xFFFFB5D5); + static const corePink300 = Color(0xFFFF95C1); + static const corePink400 = Color(0xFFFF76AE); + static const corePink500 = Color(0xFFEF588B); + static const corePink600 = Color(0xFFE0447C); + static const corePink700 = Color(0xFFCE3665); + static const corePink800 = Color(0xFFB22F5B); + static const corePink900 = Color(0xFF931847); + static const corePurple0 = Color(0xFFF2F2F9); + static const corePurple100 = Color(0xFFEAEAF9); + static const corePurple1000 = Color(0xFF2D246B); + static const corePurple1100 = Color(0xFF1D1D38); + static const corePurple200 = Color(0xFFD8D7F9); + static const corePurple300 = Color(0xFFC1C1F7); + static const corePurple400 = Color(0xFFA193F2); + static const corePurple500 = Color(0xFF9180F4); + static const corePurple600 = Color(0xFF816FEA); + static const corePurple700 = Color(0xFF6F5ED3); + static const corePurple800 = Color(0xFF5E4EBA); + static const corePurple900 = Color(0xFF483A9C); + static const coreRed0 = Color(0xFFFFEAE9); + static const coreRed100 = Color(0xFFFFD5D2); + static const coreRed1000 = Color(0xFF6D1313); + static const coreRed1100 = Color(0xFF2B1111); + static const coreRed200 = Color(0xFFFFB8B1); + static const coreRed300 = Color(0xFFFF9C8F); + static const coreRed400 = Color(0xFFFF7F6E); + static const coreRed500 = Color(0xFFF76054); + static const coreRed600 = Color(0xFFED4C42); + static const coreRed700 = Color(0xFFDB3E3E); + static const coreRed800 = Color(0xFFC63434); + static const coreRed900 = Color(0xFF992222); + static const coreTeal0 = Color(0xFFE5F9F5); + static const coreTeal100 = Color(0xFFCDF7EF); + static const coreTeal1000 = Color(0xFF083F3F); + static const coreTeal1100 = Color(0xFF002528); + static const coreTeal200 = Color(0xFFB3F2E6); + static const coreTeal300 = Color(0xFF7DEAD5); + static const coreTeal400 = Color(0xFF24E0C5); + static const coreTeal500 = Color(0xFF08C4B2); + static const coreTeal600 = Color(0xFF00A99C); + static const coreTeal700 = Color(0xFF0B968F); + static const coreTeal800 = Color(0xFF067C7C); + static const coreTeal900 = Color(0xFF026661); + static const coreYellow0 = Color(0xFFFFF8E2); + static const coreYellow100 = Color(0xFFFDEFCD); + static const coreYellow1000 = Color(0xFF542A00); + static const coreYellow1100 = Color(0xFF2D1A05); + static const coreYellow200 = Color(0xFFFFE99A); + static const coreYellow300 = Color(0xFFFFE16E); + static const coreYellow400 = Color(0xFFFFD943); + static const coreYellow500 = Color(0xFFFFCD1C); + static const coreYellow600 = Color(0xFFFFBC00); + static const coreYellow700 = Color(0xFFDD9903); + static const coreYellow800 = Color(0xFFBA7506); + static const coreYellow900 = Color(0xFF944C0C); + static const fontDanger = Color(0xFF6D1313); + static const fontInteractive = Color(0xFF0B8599); + static const fontInteractiveActive = Color(0xFF6F5ED3); + static const fontInteractiveDisabled = Color(0xFF364141); + static const fontInteractiveHover = Color(0xFF0B8599); + static const fontPrimary = Color(0xFF040404); + static const fontSecondary = Color(0xFF273333); + static const fontSuccess = Color(0xFF08422F); + static const fontTertiary = Color(0xFF364141); + static const fontWarning = Color(0xFF601700); +}`; +/* end snapshot flutter/class.dart separate should match snapshot */ + diff --git a/__integration__/__snapshots__/iOSObjectiveC.test.js.snap b/__integration__/__snapshots__/iOSObjectiveC.test.js.snap deleted file mode 100644 index 2b1d7a3d3..000000000 --- a/__integration__/__snapshots__/iOSObjectiveC.test.js.snap +++ /dev/null @@ -1,1975 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`integration ios objective-c ios/color.h should match snapshot 1`] = ` -" -// -// color.h -// - -// Do not edit directly -// Generated on Sat, 01 Jan 2000 00:00:00 GMT - - -#import - -typedef NS_ENUM(NSInteger, StyleDictionaryColorName) { -ColorBackgroundPrimary, -ColorBackgroundSecondary, -ColorBackgroundTertiary, -ColorBackgroundDanger, -ColorBackgroundWarning, -ColorBackgroundSuccess, -ColorBackgroundInfo, -ColorBackgroundDisabled, -ColorBorderPrimary, -ColorBrandPrimary, -ColorBrandSecondary, -ColorCoreGreen0, -ColorCoreGreen100, -ColorCoreGreen200, -ColorCoreGreen300, -ColorCoreGreen400, -ColorCoreGreen500, -ColorCoreGreen600, -ColorCoreGreen700, -ColorCoreGreen800, -ColorCoreGreen900, -ColorCoreGreen1000, -ColorCoreGreen1100, -ColorCoreTeal0, -ColorCoreTeal100, -ColorCoreTeal200, -ColorCoreTeal300, -ColorCoreTeal400, -ColorCoreTeal500, -ColorCoreTeal600, -ColorCoreTeal700, -ColorCoreTeal800, -ColorCoreTeal900, -ColorCoreTeal1000, -ColorCoreTeal1100, -ColorCoreAqua0, -ColorCoreAqua100, -ColorCoreAqua200, -ColorCoreAqua300, -ColorCoreAqua400, -ColorCoreAqua500, -ColorCoreAqua600, -ColorCoreAqua700, -ColorCoreAqua800, -ColorCoreAqua900, -ColorCoreAqua1000, -ColorCoreAqua1100, -ColorCoreBlue0, -ColorCoreBlue100, -ColorCoreBlue200, -ColorCoreBlue300, -ColorCoreBlue400, -ColorCoreBlue500, -ColorCoreBlue600, -ColorCoreBlue700, -ColorCoreBlue800, -ColorCoreBlue900, -ColorCoreBlue1000, -ColorCoreBlue1100, -ColorCorePurple0, -ColorCorePurple100, -ColorCorePurple200, -ColorCorePurple300, -ColorCorePurple400, -ColorCorePurple500, -ColorCorePurple600, -ColorCorePurple700, -ColorCorePurple800, -ColorCorePurple900, -ColorCorePurple1000, -ColorCorePurple1100, -ColorCoreMagenta0, -ColorCoreMagenta100, -ColorCoreMagenta200, -ColorCoreMagenta300, -ColorCoreMagenta400, -ColorCoreMagenta500, -ColorCoreMagenta600, -ColorCoreMagenta700, -ColorCoreMagenta800, -ColorCoreMagenta900, -ColorCoreMagenta1000, -ColorCoreMagenta1100, -ColorCorePink0, -ColorCorePink100, -ColorCorePink200, -ColorCorePink300, -ColorCorePink400, -ColorCorePink500, -ColorCorePink600, -ColorCorePink700, -ColorCorePink800, -ColorCorePink900, -ColorCorePink1000, -ColorCorePink1100, -ColorCoreRed0, -ColorCoreRed100, -ColorCoreRed200, -ColorCoreRed300, -ColorCoreRed400, -ColorCoreRed500, -ColorCoreRed600, -ColorCoreRed700, -ColorCoreRed800, -ColorCoreRed900, -ColorCoreRed1000, -ColorCoreRed1100, -ColorCoreOrange0, -ColorCoreOrange100, -ColorCoreOrange200, -ColorCoreOrange300, -ColorCoreOrange400, -ColorCoreOrange500, -ColorCoreOrange600, -ColorCoreOrange700, -ColorCoreOrange800, -ColorCoreOrange900, -ColorCoreOrange1000, -ColorCoreOrange1100, -ColorCoreNeutral0, -ColorCoreNeutral100, -ColorCoreNeutral200, -ColorCoreNeutral300, -ColorCoreNeutral400, -ColorCoreNeutral500, -ColorCoreNeutral600, -ColorCoreNeutral700, -ColorCoreNeutral800, -ColorCoreNeutral900, -ColorCoreNeutral1000, -ColorCoreNeutral1100, -ColorCoreYellow0, -ColorCoreYellow100, -ColorCoreYellow200, -ColorCoreYellow300, -ColorCoreYellow400, -ColorCoreYellow500, -ColorCoreYellow600, -ColorCoreYellow700, -ColorCoreYellow800, -ColorCoreYellow900, -ColorCoreYellow1000, -ColorCoreYellow1100, -ColorFontPrimary, -ColorFontSecondary, -ColorFontTertiary, -ColorFontInteractive, -ColorFontInteractiveHover, -ColorFontInteractiveActive, -ColorFontInteractiveDisabled, -ColorFontDanger, -ColorFontWarning, -ColorFontSuccess -}; - -@interface StyleDictionaryColor : NSObject -+ (NSArray *)values; -+ (UIColor *)color:(StyleDictionaryColorName)color; -@end -" -`; - -exports[`integration ios objective-c ios/color.m should match snapshot 1`] = ` -" -// -// color.m -// - -// Do not edit directly -// Generated on Sat, 01 Jan 2000 00:00:00 GMT - - -#import \\"StyleDictionaryColor.h\\" - -@implementation StyleDictionaryColor - -+ (UIColor *)color:(StyleDictionaryColorName)colorEnum{ - return [[self values] objectAtIndex:colorEnum]; -} - -+ (NSArray *)values { - static NSArray* colorArray; - static dispatch_once_t onceToken; - - dispatch_once(&onceToken, ^{ - colorArray = @[ -[UIColor colorWithRed:1.000f green:1.000f blue:1.000f alpha:1.000f], -[UIColor colorWithRed:0.953f green:0.957f blue:0.957f alpha:1.000f], -[UIColor colorWithRed:0.871f green:0.882f blue:0.882f alpha:1.000f], -[UIColor colorWithRed:1.000f green:0.918f blue:0.914f alpha:1.000f], -[UIColor colorWithRed:1.000f green:0.929f blue:0.890f alpha:1.000f], -[UIColor colorWithRed:0.922f green:0.976f blue:0.922f alpha:1.000f], -[UIColor colorWithRed:0.914f green:0.973f blue:1.000f alpha:1.000f], -[UIColor colorWithRed:0.871f green:0.882f blue:0.882f alpha:1.000f], -[UIColor colorWithRed:0.784f green:0.800f blue:0.800f alpha:1.000f], -[UIColor colorWithRed:0.043f green:0.522f blue:0.600f alpha:1.000f], -[UIColor colorWithRed:0.435f green:0.369f blue:0.827f alpha:1.000f], -[UIColor colorWithRed:0.922f green:0.976f blue:0.922f alpha:1.000f], -[UIColor colorWithRed:0.843f green:0.957f blue:0.843f alpha:1.000f], -[UIColor colorWithRed:0.761f green:0.949f blue:0.741f alpha:1.000f], -[UIColor colorWithRed:0.596f green:0.898f blue:0.557f alpha:1.000f], -[UIColor colorWithRed:0.459f green:0.867f blue:0.400f alpha:1.000f], -[UIColor colorWithRed:0.349f green:0.796f blue:0.349f alpha:1.000f], -[UIColor colorWithRed:0.169f green:0.714f blue:0.337f alpha:1.000f], -[UIColor colorWithRed:0.047f green:0.655f blue:0.314f alpha:1.000f], -[UIColor colorWithRed:0.000f green:0.545f blue:0.275f alpha:1.000f], -[UIColor colorWithRed:0.000f green:0.420f blue:0.251f alpha:1.000f], -[UIColor colorWithRed:0.031f green:0.259f blue:0.184f alpha:1.000f], -[UIColor colorWithRed:0.000f green:0.169f blue:0.125f alpha:1.000f], -[UIColor colorWithRed:0.898f green:0.976f blue:0.961f alpha:1.000f], -[UIColor colorWithRed:0.804f green:0.969f blue:0.937f alpha:1.000f], -[UIColor colorWithRed:0.702f green:0.949f blue:0.902f alpha:1.000f], -[UIColor colorWithRed:0.490f green:0.918f blue:0.835f alpha:1.000f], -[UIColor colorWithRed:0.141f green:0.878f blue:0.773f alpha:1.000f], -[UIColor colorWithRed:0.031f green:0.769f blue:0.698f alpha:1.000f], -[UIColor colorWithRed:0.000f green:0.663f blue:0.612f alpha:1.000f], -[UIColor colorWithRed:0.043f green:0.588f blue:0.561f alpha:1.000f], -[UIColor colorWithRed:0.024f green:0.486f blue:0.486f alpha:1.000f], -[UIColor colorWithRed:0.008f green:0.400f blue:0.380f alpha:1.000f], -[UIColor colorWithRed:0.031f green:0.247f blue:0.247f alpha:1.000f], -[UIColor colorWithRed:0.000f green:0.145f blue:0.157f alpha:1.000f], -[UIColor colorWithRed:0.851f green:0.988f blue:0.984f alpha:1.000f], -[UIColor colorWithRed:0.773f green:0.976f blue:0.976f alpha:1.000f], -[UIColor colorWithRed:0.647f green:0.949f blue:0.949f alpha:1.000f], -[UIColor colorWithRed:0.463f green:0.898f blue:0.886f alpha:1.000f], -[UIColor colorWithRed:0.200f green:0.839f blue:0.886f alpha:1.000f], -[UIColor colorWithRed:0.090f green:0.722f blue:0.808f alpha:1.000f], -[UIColor colorWithRed:0.027f green:0.592f blue:0.682f alpha:1.000f], -[UIColor colorWithRed:0.043f green:0.522f blue:0.600f alpha:1.000f], -[UIColor colorWithRed:0.059f green:0.431f blue:0.518f alpha:1.000f], -[UIColor colorWithRed:0.012f green:0.369f blue:0.451f alpha:1.000f], -[UIColor colorWithRed:0.031f green:0.239f blue:0.310f alpha:1.000f], -[UIColor colorWithRed:0.000f green:0.157f blue:0.220f alpha:1.000f], -[UIColor colorWithRed:0.914f green:0.973f blue:1.000f alpha:1.000f], -[UIColor colorWithRed:0.863f green:0.949f blue:1.000f alpha:1.000f], -[UIColor colorWithRed:0.780f green:0.894f blue:0.976f alpha:1.000f], -[UIColor colorWithRed:0.631f green:0.824f blue:0.973f alpha:1.000f], -[UIColor colorWithRed:0.337f green:0.678f blue:0.961f alpha:1.000f], -[UIColor colorWithRed:0.220f green:0.588f blue:0.890f alpha:1.000f], -[UIColor colorWithRed:0.169f green:0.529f blue:0.827f alpha:1.000f], -[UIColor colorWithRed:0.125f green:0.475f blue:0.765f alpha:1.000f], -[UIColor colorWithRed:0.067f green:0.427f blue:0.667f alpha:1.000f], -[UIColor colorWithRed:0.047f green:0.337f blue:0.537f alpha:1.000f], -[UIColor colorWithRed:0.039f green:0.224f blue:0.376f alpha:1.000f], -[UIColor colorWithRed:0.000f green:0.129f blue:0.220f alpha:1.000f], -[UIColor colorWithRed:0.949f green:0.949f blue:0.976f alpha:1.000f], -[UIColor colorWithRed:0.918f green:0.918f blue:0.976f alpha:1.000f], -[UIColor colorWithRed:0.847f green:0.843f blue:0.976f alpha:1.000f], -[UIColor colorWithRed:0.757f green:0.757f blue:0.969f alpha:1.000f], -[UIColor colorWithRed:0.631f green:0.576f blue:0.949f alpha:1.000f], -[UIColor colorWithRed:0.569f green:0.502f blue:0.957f alpha:1.000f], -[UIColor colorWithRed:0.506f green:0.435f blue:0.918f alpha:1.000f], -[UIColor colorWithRed:0.435f green:0.369f blue:0.827f alpha:1.000f], -[UIColor colorWithRed:0.369f green:0.306f blue:0.729f alpha:1.000f], -[UIColor colorWithRed:0.282f green:0.227f blue:0.612f alpha:1.000f], -[UIColor colorWithRed:0.176f green:0.141f blue:0.420f alpha:1.000f], -[UIColor colorWithRed:0.114f green:0.114f blue:0.220f alpha:1.000f], -[UIColor colorWithRed:0.996f green:0.941f blue:1.000f alpha:1.000f], -[UIColor colorWithRed:0.976f green:0.890f blue:0.988f alpha:1.000f], -[UIColor colorWithRed:0.957f green:0.769f blue:0.969f alpha:1.000f], -[UIColor colorWithRed:0.929f green:0.678f blue:0.949f alpha:1.000f], -[UIColor colorWithRed:0.949f green:0.510f blue:0.961f alpha:1.000f], -[UIColor colorWithRed:0.859f green:0.380f blue:0.859f alpha:1.000f], -[UIColor colorWithRed:0.769f green:0.306f blue:0.725f alpha:1.000f], -[UIColor colorWithRed:0.675f green:0.267f blue:0.659f alpha:1.000f], -[UIColor colorWithRed:0.561f green:0.220f blue:0.588f alpha:1.000f], -[UIColor colorWithRed:0.424f green:0.133f blue:0.467f alpha:1.000f], -[UIColor colorWithRed:0.271f green:0.082f blue:0.318f alpha:1.000f], -[UIColor colorWithRed:0.161f green:0.098f blue:0.176f alpha:1.000f], -[UIColor colorWithRed:1.000f green:0.914f blue:0.953f alpha:1.000f], -[UIColor colorWithRed:0.988f green:0.859f blue:0.922f alpha:1.000f], -[UIColor colorWithRed:1.000f green:0.710f blue:0.835f alpha:1.000f], -[UIColor colorWithRed:1.000f green:0.584f blue:0.757f alpha:1.000f], -[UIColor colorWithRed:1.000f green:0.463f blue:0.682f alpha:1.000f], -[UIColor colorWithRed:0.937f green:0.345f blue:0.545f alpha:1.000f], -[UIColor colorWithRed:0.878f green:0.267f blue:0.486f alpha:1.000f], -[UIColor colorWithRed:0.808f green:0.212f blue:0.396f alpha:1.000f], -[UIColor colorWithRed:0.698f green:0.184f blue:0.357f alpha:1.000f], -[UIColor colorWithRed:0.576f green:0.094f blue:0.278f alpha:1.000f], -[UIColor colorWithRed:0.337f green:0.071f blue:0.192f alpha:1.000f], -[UIColor colorWithRed:0.169f green:0.090f blue:0.129f alpha:1.000f], -[UIColor colorWithRed:1.000f green:0.918f blue:0.914f alpha:1.000f], -[UIColor colorWithRed:1.000f green:0.835f blue:0.824f alpha:1.000f], -[UIColor colorWithRed:1.000f green:0.722f blue:0.694f alpha:1.000f], -[UIColor colorWithRed:1.000f green:0.612f blue:0.561f alpha:1.000f], -[UIColor colorWithRed:1.000f green:0.498f blue:0.431f alpha:1.000f], -[UIColor colorWithRed:0.969f green:0.376f blue:0.329f alpha:1.000f], -[UIColor colorWithRed:0.929f green:0.298f blue:0.259f alpha:1.000f], -[UIColor colorWithRed:0.859f green:0.243f blue:0.243f alpha:1.000f], -[UIColor colorWithRed:0.776f green:0.204f blue:0.204f alpha:1.000f], -[UIColor colorWithRed:0.600f green:0.133f blue:0.133f alpha:1.000f], -[UIColor colorWithRed:0.427f green:0.075f blue:0.075f alpha:1.000f], -[UIColor colorWithRed:0.169f green:0.067f blue:0.067f alpha:1.000f], -[UIColor colorWithRed:1.000f green:0.929f blue:0.890f alpha:1.000f], -[UIColor colorWithRed:0.988f green:0.863f blue:0.800f alpha:1.000f], -[UIColor colorWithRed:1.000f green:0.776f blue:0.643f alpha:1.000f], -[UIColor colorWithRed:1.000f green:0.694f blue:0.502f alpha:1.000f], -[UIColor colorWithRed:1.000f green:0.612f blue:0.365f alpha:1.000f], -[UIColor colorWithRed:0.988f green:0.537f blue:0.263f alpha:1.000f], -[UIColor colorWithRed:0.961f green:0.490f blue:0.200f alpha:1.000f], -[UIColor colorWithRed:0.929f green:0.439f blue:0.141f alpha:1.000f], -[UIColor colorWithRed:0.808f green:0.333f blue:0.067f alpha:1.000f], -[UIColor colorWithRed:0.588f green:0.173f blue:0.043f alpha:1.000f], -[UIColor colorWithRed:0.376f green:0.090f blue:0.000f alpha:1.000f], -[UIColor colorWithRed:0.176f green:0.075f blue:0.055f alpha:1.000f], -[UIColor colorWithRed:1.000f green:1.000f blue:1.000f alpha:1.000f], -[UIColor colorWithRed:0.953f green:0.957f blue:0.957f alpha:1.000f], -[UIColor colorWithRed:0.871f green:0.882f blue:0.882f alpha:1.000f], -[UIColor colorWithRed:0.784f green:0.800f blue:0.800f alpha:1.000f], -[UIColor colorWithRed:0.690f green:0.714f blue:0.718f alpha:1.000f], -[UIColor colorWithRed:0.573f green:0.604f blue:0.608f alpha:1.000f], -[UIColor colorWithRed:0.431f green:0.475f blue:0.478f alpha:1.000f], -[UIColor colorWithRed:0.318f green:0.369f blue:0.373f alpha:1.000f], -[UIColor colorWithRed:0.212f green:0.255f blue:0.255f alpha:1.000f], -[UIColor colorWithRed:0.153f green:0.200f blue:0.200f alpha:1.000f], -[UIColor colorWithRed:0.086f green:0.125f blue:0.125f alpha:1.000f], -[UIColor colorWithRed:0.016f green:0.016f blue:0.016f alpha:1.000f], -[UIColor colorWithRed:1.000f green:0.973f blue:0.886f alpha:1.000f], -[UIColor colorWithRed:0.992f green:0.937f blue:0.804f alpha:1.000f], -[UIColor colorWithRed:1.000f green:0.914f blue:0.604f alpha:1.000f], -[UIColor colorWithRed:1.000f green:0.882f blue:0.431f alpha:1.000f], -[UIColor colorWithRed:1.000f green:0.851f blue:0.263f alpha:1.000f], -[UIColor colorWithRed:1.000f green:0.804f blue:0.110f alpha:1.000f], -[UIColor colorWithRed:1.000f green:0.737f blue:0.000f alpha:1.000f], -[UIColor colorWithRed:0.867f green:0.600f blue:0.012f alpha:1.000f], -[UIColor colorWithRed:0.729f green:0.459f blue:0.024f alpha:1.000f], -[UIColor colorWithRed:0.580f green:0.298f blue:0.047f alpha:1.000f], -[UIColor colorWithRed:0.329f green:0.165f blue:0.000f alpha:1.000f], -[UIColor colorWithRed:0.176f green:0.102f blue:0.020f alpha:1.000f], -[UIColor colorWithRed:0.016f green:0.016f blue:0.016f alpha:1.000f], -[UIColor colorWithRed:0.153f green:0.200f blue:0.200f alpha:1.000f], -[UIColor colorWithRed:0.212f green:0.255f blue:0.255f alpha:1.000f], -[UIColor colorWithRed:0.043f green:0.522f blue:0.600f alpha:1.000f], -[UIColor colorWithRed:0.043f green:0.522f blue:0.600f alpha:1.000f], -[UIColor colorWithRed:0.435f green:0.369f blue:0.827f alpha:1.000f], -[UIColor colorWithRed:0.212f green:0.255f blue:0.255f alpha:1.000f], -[UIColor colorWithRed:0.427f green:0.075f blue:0.075f alpha:1.000f], -[UIColor colorWithRed:0.376f green:0.090f blue:0.000f alpha:1.000f], -[UIColor colorWithRed:0.031f green:0.259f blue:0.184f alpha:1.000f] - ]; - }); - - return colorArray; -} - -@end -" -`; - -exports[`integration ios objective-c ios/macros.h should match snapshot 1`] = ` -" -// -// macros.h -// - -// Do not edit directly -// Generated on Sat, 01 Jan 2000 00:00:00 GMT - - -#import -#import - -#define ColorBackgroundPrimary [UIColor colorWithRed:1.000f green:1.000f blue:1.000f alpha:1.000f] -#define ColorBackgroundSecondary [UIColor colorWithRed:0.953f green:0.957f blue:0.957f alpha:1.000f] -#define ColorBackgroundTertiary [UIColor colorWithRed:0.871f green:0.882f blue:0.882f alpha:1.000f] -#define ColorBackgroundDanger [UIColor colorWithRed:1.000f green:0.918f blue:0.914f alpha:1.000f] -#define ColorBackgroundWarning [UIColor colorWithRed:1.000f green:0.929f blue:0.890f alpha:1.000f] -#define ColorBackgroundSuccess [UIColor colorWithRed:0.922f green:0.976f blue:0.922f alpha:1.000f] -#define ColorBackgroundInfo [UIColor colorWithRed:0.914f green:0.973f blue:1.000f alpha:1.000f] -#define ColorBackgroundDisabled [UIColor colorWithRed:0.871f green:0.882f blue:0.882f alpha:1.000f] -#define ColorBorderPrimary [UIColor colorWithRed:0.784f green:0.800f blue:0.800f alpha:1.000f] -#define ColorBrandPrimary [UIColor colorWithRed:0.043f green:0.522f blue:0.600f alpha:1.000f] -#define ColorBrandSecondary [UIColor colorWithRed:0.435f green:0.369f blue:0.827f alpha:1.000f] -#define ColorCoreGreen0 [UIColor colorWithRed:0.922f green:0.976f blue:0.922f alpha:1.000f] -#define ColorCoreGreen100 [UIColor colorWithRed:0.843f green:0.957f blue:0.843f alpha:1.000f] -#define ColorCoreGreen200 [UIColor colorWithRed:0.761f green:0.949f blue:0.741f alpha:1.000f] -#define ColorCoreGreen300 [UIColor colorWithRed:0.596f green:0.898f blue:0.557f alpha:1.000f] -#define ColorCoreGreen400 [UIColor colorWithRed:0.459f green:0.867f blue:0.400f alpha:1.000f] -#define ColorCoreGreen500 [UIColor colorWithRed:0.349f green:0.796f blue:0.349f alpha:1.000f] -#define ColorCoreGreen600 [UIColor colorWithRed:0.169f green:0.714f blue:0.337f alpha:1.000f] -#define ColorCoreGreen700 [UIColor colorWithRed:0.047f green:0.655f blue:0.314f alpha:1.000f] -#define ColorCoreGreen800 [UIColor colorWithRed:0.000f green:0.545f blue:0.275f alpha:1.000f] -#define ColorCoreGreen900 [UIColor colorWithRed:0.000f green:0.420f blue:0.251f alpha:1.000f] -#define ColorCoreGreen1000 [UIColor colorWithRed:0.031f green:0.259f blue:0.184f alpha:1.000f] -#define ColorCoreGreen1100 [UIColor colorWithRed:0.000f green:0.169f blue:0.125f alpha:1.000f] -#define ColorCoreTeal0 [UIColor colorWithRed:0.898f green:0.976f blue:0.961f alpha:1.000f] -#define ColorCoreTeal100 [UIColor colorWithRed:0.804f green:0.969f blue:0.937f alpha:1.000f] -#define ColorCoreTeal200 [UIColor colorWithRed:0.702f green:0.949f blue:0.902f alpha:1.000f] -#define ColorCoreTeal300 [UIColor colorWithRed:0.490f green:0.918f blue:0.835f alpha:1.000f] -#define ColorCoreTeal400 [UIColor colorWithRed:0.141f green:0.878f blue:0.773f alpha:1.000f] -#define ColorCoreTeal500 [UIColor colorWithRed:0.031f green:0.769f blue:0.698f alpha:1.000f] -#define ColorCoreTeal600 [UIColor colorWithRed:0.000f green:0.663f blue:0.612f alpha:1.000f] -#define ColorCoreTeal700 [UIColor colorWithRed:0.043f green:0.588f blue:0.561f alpha:1.000f] -#define ColorCoreTeal800 [UIColor colorWithRed:0.024f green:0.486f blue:0.486f alpha:1.000f] -#define ColorCoreTeal900 [UIColor colorWithRed:0.008f green:0.400f blue:0.380f alpha:1.000f] -#define ColorCoreTeal1000 [UIColor colorWithRed:0.031f green:0.247f blue:0.247f alpha:1.000f] -#define ColorCoreTeal1100 [UIColor colorWithRed:0.000f green:0.145f blue:0.157f alpha:1.000f] -#define ColorCoreAqua0 [UIColor colorWithRed:0.851f green:0.988f blue:0.984f alpha:1.000f] -#define ColorCoreAqua100 [UIColor colorWithRed:0.773f green:0.976f blue:0.976f alpha:1.000f] -#define ColorCoreAqua200 [UIColor colorWithRed:0.647f green:0.949f blue:0.949f alpha:1.000f] -#define ColorCoreAqua300 [UIColor colorWithRed:0.463f green:0.898f blue:0.886f alpha:1.000f] -#define ColorCoreAqua400 [UIColor colorWithRed:0.200f green:0.839f blue:0.886f alpha:1.000f] -#define ColorCoreAqua500 [UIColor colorWithRed:0.090f green:0.722f blue:0.808f alpha:1.000f] -#define ColorCoreAqua600 [UIColor colorWithRed:0.027f green:0.592f blue:0.682f alpha:1.000f] -#define ColorCoreAqua700 [UIColor colorWithRed:0.043f green:0.522f blue:0.600f alpha:1.000f] -#define ColorCoreAqua800 [UIColor colorWithRed:0.059f green:0.431f blue:0.518f alpha:1.000f] -#define ColorCoreAqua900 [UIColor colorWithRed:0.012f green:0.369f blue:0.451f alpha:1.000f] -#define ColorCoreAqua1000 [UIColor colorWithRed:0.031f green:0.239f blue:0.310f alpha:1.000f] -#define ColorCoreAqua1100 [UIColor colorWithRed:0.000f green:0.157f blue:0.220f alpha:1.000f] -#define ColorCoreBlue0 [UIColor colorWithRed:0.914f green:0.973f blue:1.000f alpha:1.000f] -#define ColorCoreBlue100 [UIColor colorWithRed:0.863f green:0.949f blue:1.000f alpha:1.000f] -#define ColorCoreBlue200 [UIColor colorWithRed:0.780f green:0.894f blue:0.976f alpha:1.000f] -#define ColorCoreBlue300 [UIColor colorWithRed:0.631f green:0.824f blue:0.973f alpha:1.000f] -#define ColorCoreBlue400 [UIColor colorWithRed:0.337f green:0.678f blue:0.961f alpha:1.000f] -#define ColorCoreBlue500 [UIColor colorWithRed:0.220f green:0.588f blue:0.890f alpha:1.000f] -#define ColorCoreBlue600 [UIColor colorWithRed:0.169f green:0.529f blue:0.827f alpha:1.000f] -#define ColorCoreBlue700 [UIColor colorWithRed:0.125f green:0.475f blue:0.765f alpha:1.000f] -#define ColorCoreBlue800 [UIColor colorWithRed:0.067f green:0.427f blue:0.667f alpha:1.000f] -#define ColorCoreBlue900 [UIColor colorWithRed:0.047f green:0.337f blue:0.537f alpha:1.000f] -#define ColorCoreBlue1000 [UIColor colorWithRed:0.039f green:0.224f blue:0.376f alpha:1.000f] -#define ColorCoreBlue1100 [UIColor colorWithRed:0.000f green:0.129f blue:0.220f alpha:1.000f] -#define ColorCorePurple0 [UIColor colorWithRed:0.949f green:0.949f blue:0.976f alpha:1.000f] -#define ColorCorePurple100 [UIColor colorWithRed:0.918f green:0.918f blue:0.976f alpha:1.000f] -#define ColorCorePurple200 [UIColor colorWithRed:0.847f green:0.843f blue:0.976f alpha:1.000f] -#define ColorCorePurple300 [UIColor colorWithRed:0.757f green:0.757f blue:0.969f alpha:1.000f] -#define ColorCorePurple400 [UIColor colorWithRed:0.631f green:0.576f blue:0.949f alpha:1.000f] -#define ColorCorePurple500 [UIColor colorWithRed:0.569f green:0.502f blue:0.957f alpha:1.000f] -#define ColorCorePurple600 [UIColor colorWithRed:0.506f green:0.435f blue:0.918f alpha:1.000f] -#define ColorCorePurple700 [UIColor colorWithRed:0.435f green:0.369f blue:0.827f alpha:1.000f] -#define ColorCorePurple800 [UIColor colorWithRed:0.369f green:0.306f blue:0.729f alpha:1.000f] -#define ColorCorePurple900 [UIColor colorWithRed:0.282f green:0.227f blue:0.612f alpha:1.000f] -#define ColorCorePurple1000 [UIColor colorWithRed:0.176f green:0.141f blue:0.420f alpha:1.000f] -#define ColorCorePurple1100 [UIColor colorWithRed:0.114f green:0.114f blue:0.220f alpha:1.000f] -#define ColorCoreMagenta0 [UIColor colorWithRed:0.996f green:0.941f blue:1.000f alpha:1.000f] -#define ColorCoreMagenta100 [UIColor colorWithRed:0.976f green:0.890f blue:0.988f alpha:1.000f] -#define ColorCoreMagenta200 [UIColor colorWithRed:0.957f green:0.769f blue:0.969f alpha:1.000f] -#define ColorCoreMagenta300 [UIColor colorWithRed:0.929f green:0.678f blue:0.949f alpha:1.000f] -#define ColorCoreMagenta400 [UIColor colorWithRed:0.949f green:0.510f blue:0.961f alpha:1.000f] -#define ColorCoreMagenta500 [UIColor colorWithRed:0.859f green:0.380f blue:0.859f alpha:1.000f] -#define ColorCoreMagenta600 [UIColor colorWithRed:0.769f green:0.306f blue:0.725f alpha:1.000f] -#define ColorCoreMagenta700 [UIColor colorWithRed:0.675f green:0.267f blue:0.659f alpha:1.000f] -#define ColorCoreMagenta800 [UIColor colorWithRed:0.561f green:0.220f blue:0.588f alpha:1.000f] -#define ColorCoreMagenta900 [UIColor colorWithRed:0.424f green:0.133f blue:0.467f alpha:1.000f] -#define ColorCoreMagenta1000 [UIColor colorWithRed:0.271f green:0.082f blue:0.318f alpha:1.000f] -#define ColorCoreMagenta1100 [UIColor colorWithRed:0.161f green:0.098f blue:0.176f alpha:1.000f] -#define ColorCorePink0 [UIColor colorWithRed:1.000f green:0.914f blue:0.953f alpha:1.000f] -#define ColorCorePink100 [UIColor colorWithRed:0.988f green:0.859f blue:0.922f alpha:1.000f] -#define ColorCorePink200 [UIColor colorWithRed:1.000f green:0.710f blue:0.835f alpha:1.000f] -#define ColorCorePink300 [UIColor colorWithRed:1.000f green:0.584f blue:0.757f alpha:1.000f] -#define ColorCorePink400 [UIColor colorWithRed:1.000f green:0.463f blue:0.682f alpha:1.000f] -#define ColorCorePink500 [UIColor colorWithRed:0.937f green:0.345f blue:0.545f alpha:1.000f] -#define ColorCorePink600 [UIColor colorWithRed:0.878f green:0.267f blue:0.486f alpha:1.000f] -#define ColorCorePink700 [UIColor colorWithRed:0.808f green:0.212f blue:0.396f alpha:1.000f] -#define ColorCorePink800 [UIColor colorWithRed:0.698f green:0.184f blue:0.357f alpha:1.000f] -#define ColorCorePink900 [UIColor colorWithRed:0.576f green:0.094f blue:0.278f alpha:1.000f] -#define ColorCorePink1000 [UIColor colorWithRed:0.337f green:0.071f blue:0.192f alpha:1.000f] -#define ColorCorePink1100 [UIColor colorWithRed:0.169f green:0.090f blue:0.129f alpha:1.000f] -#define ColorCoreRed0 [UIColor colorWithRed:1.000f green:0.918f blue:0.914f alpha:1.000f] -#define ColorCoreRed100 [UIColor colorWithRed:1.000f green:0.835f blue:0.824f alpha:1.000f] -#define ColorCoreRed200 [UIColor colorWithRed:1.000f green:0.722f blue:0.694f alpha:1.000f] -#define ColorCoreRed300 [UIColor colorWithRed:1.000f green:0.612f blue:0.561f alpha:1.000f] -#define ColorCoreRed400 [UIColor colorWithRed:1.000f green:0.498f blue:0.431f alpha:1.000f] -#define ColorCoreRed500 [UIColor colorWithRed:0.969f green:0.376f blue:0.329f alpha:1.000f] -#define ColorCoreRed600 [UIColor colorWithRed:0.929f green:0.298f blue:0.259f alpha:1.000f] -#define ColorCoreRed700 [UIColor colorWithRed:0.859f green:0.243f blue:0.243f alpha:1.000f] -#define ColorCoreRed800 [UIColor colorWithRed:0.776f green:0.204f blue:0.204f alpha:1.000f] -#define ColorCoreRed900 [UIColor colorWithRed:0.600f green:0.133f blue:0.133f alpha:1.000f] -#define ColorCoreRed1000 [UIColor colorWithRed:0.427f green:0.075f blue:0.075f alpha:1.000f] -#define ColorCoreRed1100 [UIColor colorWithRed:0.169f green:0.067f blue:0.067f alpha:1.000f] -#define ColorCoreOrange0 [UIColor colorWithRed:1.000f green:0.929f blue:0.890f alpha:1.000f] -#define ColorCoreOrange100 [UIColor colorWithRed:0.988f green:0.863f blue:0.800f alpha:1.000f] -#define ColorCoreOrange200 [UIColor colorWithRed:1.000f green:0.776f blue:0.643f alpha:1.000f] -#define ColorCoreOrange300 [UIColor colorWithRed:1.000f green:0.694f blue:0.502f alpha:1.000f] -#define ColorCoreOrange400 [UIColor colorWithRed:1.000f green:0.612f blue:0.365f alpha:1.000f] -#define ColorCoreOrange500 [UIColor colorWithRed:0.988f green:0.537f blue:0.263f alpha:1.000f] -#define ColorCoreOrange600 [UIColor colorWithRed:0.961f green:0.490f blue:0.200f alpha:1.000f] -#define ColorCoreOrange700 [UIColor colorWithRed:0.929f green:0.439f blue:0.141f alpha:1.000f] -#define ColorCoreOrange800 [UIColor colorWithRed:0.808f green:0.333f blue:0.067f alpha:1.000f] -#define ColorCoreOrange900 [UIColor colorWithRed:0.588f green:0.173f blue:0.043f alpha:1.000f] -#define ColorCoreOrange1000 [UIColor colorWithRed:0.376f green:0.090f blue:0.000f alpha:1.000f] -#define ColorCoreOrange1100 [UIColor colorWithRed:0.176f green:0.075f blue:0.055f alpha:1.000f] -#define ColorCoreNeutral0 [UIColor colorWithRed:1.000f green:1.000f blue:1.000f alpha:1.000f] -#define ColorCoreNeutral100 [UIColor colorWithRed:0.953f green:0.957f blue:0.957f alpha:1.000f] -#define ColorCoreNeutral200 [UIColor colorWithRed:0.871f green:0.882f blue:0.882f alpha:1.000f] -#define ColorCoreNeutral300 [UIColor colorWithRed:0.784f green:0.800f blue:0.800f alpha:1.000f] -#define ColorCoreNeutral400 [UIColor colorWithRed:0.690f green:0.714f blue:0.718f alpha:1.000f] -#define ColorCoreNeutral500 [UIColor colorWithRed:0.573f green:0.604f blue:0.608f alpha:1.000f] -#define ColorCoreNeutral600 [UIColor colorWithRed:0.431f green:0.475f blue:0.478f alpha:1.000f] -#define ColorCoreNeutral700 [UIColor colorWithRed:0.318f green:0.369f blue:0.373f alpha:1.000f] -#define ColorCoreNeutral800 [UIColor colorWithRed:0.212f green:0.255f blue:0.255f alpha:1.000f] -#define ColorCoreNeutral900 [UIColor colorWithRed:0.153f green:0.200f blue:0.200f alpha:1.000f] -#define ColorCoreNeutral1000 [UIColor colorWithRed:0.086f green:0.125f blue:0.125f alpha:1.000f] -#define ColorCoreNeutral1100 [UIColor colorWithRed:0.016f green:0.016f blue:0.016f alpha:1.000f] -#define ColorCoreYellow0 [UIColor colorWithRed:1.000f green:0.973f blue:0.886f alpha:1.000f] -#define ColorCoreYellow100 [UIColor colorWithRed:0.992f green:0.937f blue:0.804f alpha:1.000f] -#define ColorCoreYellow200 [UIColor colorWithRed:1.000f green:0.914f blue:0.604f alpha:1.000f] -#define ColorCoreYellow300 [UIColor colorWithRed:1.000f green:0.882f blue:0.431f alpha:1.000f] -#define ColorCoreYellow400 [UIColor colorWithRed:1.000f green:0.851f blue:0.263f alpha:1.000f] -#define ColorCoreYellow500 [UIColor colorWithRed:1.000f green:0.804f blue:0.110f alpha:1.000f] -#define ColorCoreYellow600 [UIColor colorWithRed:1.000f green:0.737f blue:0.000f alpha:1.000f] -#define ColorCoreYellow700 [UIColor colorWithRed:0.867f green:0.600f blue:0.012f alpha:1.000f] -#define ColorCoreYellow800 [UIColor colorWithRed:0.729f green:0.459f blue:0.024f alpha:1.000f] -#define ColorCoreYellow900 [UIColor colorWithRed:0.580f green:0.298f blue:0.047f alpha:1.000f] -#define ColorCoreYellow1000 [UIColor colorWithRed:0.329f green:0.165f blue:0.000f alpha:1.000f] -#define ColorCoreYellow1100 [UIColor colorWithRed:0.176f green:0.102f blue:0.020f alpha:1.000f] -#define ColorFontPrimary [UIColor colorWithRed:0.016f green:0.016f blue:0.016f alpha:1.000f] -#define ColorFontSecondary [UIColor colorWithRed:0.153f green:0.200f blue:0.200f alpha:1.000f] -#define ColorFontTertiary [UIColor colorWithRed:0.212f green:0.255f blue:0.255f alpha:1.000f] -#define ColorFontInteractive [UIColor colorWithRed:0.043f green:0.522f blue:0.600f alpha:1.000f] -#define ColorFontInteractiveHover [UIColor colorWithRed:0.043f green:0.522f blue:0.600f alpha:1.000f] -#define ColorFontInteractiveActive [UIColor colorWithRed:0.435f green:0.369f blue:0.827f alpha:1.000f] -#define ColorFontInteractiveDisabled [UIColor colorWithRed:0.212f green:0.255f blue:0.255f alpha:1.000f] -#define ColorFontDanger [UIColor colorWithRed:0.427f green:0.075f blue:0.075f alpha:1.000f] -#define ColorFontWarning [UIColor colorWithRed:0.376f green:0.090f blue:0.000f alpha:1.000f] -#define ColorFontSuccess [UIColor colorWithRed:0.031f green:0.259f blue:0.184f alpha:1.000f] -#define SizeBorderRadiusLarge 480.00f -#define SizeFontSmall 12.00f -#define SizeFontMedium 16.00f -#define SizeFontLarge 24.00f -#define SizeFontXl 36.00f -#define SizePaddingSmall 8.00f -#define SizePaddingMedium 16.00f -#define SizePaddingLarge 16.00f -#define SizePaddingXl 16.00f - -" -`; - -exports[`integration ios objective-c ios/singleton.h should match snapshot 1`] = ` -" -// -// singleton.h -// - -// Do not edit directly -// Generated on Sat, 01 Jan 2000 00:00:00 GMT - - -#import -#import - -@interface StyleDictionary : NSObject - -+ (NSDictionary *)properties; -+ (NSDictionary *)getProperty:(NSString *)keyPath; -+ (nonnull)getValue:(NSString *)keyPath; - -@end -" -`; - -exports[`integration ios objective-c ios/singleton.m should match snapshot 1`] = ` -" -// -// singleton.m -// - -// Do not edit directly -// Generated on Sat, 01 Jan 2000 00:00:00 GMT - - -#import \\"StyleDictionary.h\\" - -@implementation StyleDictionary - -+ (NSDictionary *)getProperty:(NSString *)keyPath { - return [[self properties] valueForKeyPath:keyPath]; -} - -+ (nonnull)getValue:(NSString *)keyPath { - return [[self properties] valueForKeyPath:[NSString stringWithFormat:@\\"%@.value\\", keyPath]]; -} - -+ (NSDictionary *)properties { - static NSDictionary * dictionary; - static dispatch_once_t onceToken; - - dispatch_once(&onceToken, ^{ - dictionary = @{ - @\\"color\\": @{ - @\\"background\\": @{ - @\\"primary\\": @{ - @\\"value\\": [UIColor colorWithRed:1.000f green:1.000f blue:1.000f alpha:1.000f], - @\\"name\\": @\\"ColorBackgroundPrimary\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"background\\", - @\\"item\\": @\\"primary\\" - }, - @\\"secondary\\": @{ - @\\"value\\": [UIColor colorWithRed:0.953f green:0.957f blue:0.957f alpha:1.000f], - @\\"name\\": @\\"ColorBackgroundSecondary\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"background\\", - @\\"item\\": @\\"secondary\\" - }, - @\\"tertiary\\": @{ - @\\"value\\": [UIColor colorWithRed:0.871f green:0.882f blue:0.882f alpha:1.000f], - @\\"name\\": @\\"ColorBackgroundTertiary\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"background\\", - @\\"item\\": @\\"tertiary\\" - }, - @\\"danger\\": @{ - @\\"value\\": [UIColor colorWithRed:1.000f green:0.918f blue:0.914f alpha:1.000f], - @\\"name\\": @\\"ColorBackgroundDanger\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"background\\", - @\\"item\\": @\\"danger\\" - }, - @\\"warning\\": @{ - @\\"value\\": [UIColor colorWithRed:1.000f green:0.929f blue:0.890f alpha:1.000f], - @\\"name\\": @\\"ColorBackgroundWarning\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"background\\", - @\\"item\\": @\\"warning\\" - }, - @\\"success\\": @{ - @\\"value\\": [UIColor colorWithRed:0.922f green:0.976f blue:0.922f alpha:1.000f], - @\\"name\\": @\\"ColorBackgroundSuccess\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"background\\", - @\\"item\\": @\\"success\\" - }, - @\\"info\\": @{ - @\\"value\\": [UIColor colorWithRed:0.914f green:0.973f blue:1.000f alpha:1.000f], - @\\"name\\": @\\"ColorBackgroundInfo\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"background\\", - @\\"item\\": @\\"info\\" - }, - @\\"disabled\\": @{ - @\\"value\\": [UIColor colorWithRed:0.871f green:0.882f blue:0.882f alpha:1.000f], - @\\"name\\": @\\"ColorBackgroundDisabled\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"background\\", - @\\"item\\": @\\"disabled\\" - } - }, - @\\"border\\": @{ - @\\"primary\\": @{ - @\\"value\\": [UIColor colorWithRed:0.784f green:0.800f blue:0.800f alpha:1.000f], - @\\"name\\": @\\"ColorBorderPrimary\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"border\\", - @\\"item\\": @\\"primary\\" - }, - @\\"secondary\\": @ - }, - @\\"tertiary\\": @ - } - }, - @\\"brand\\": @{ - @\\"primary\\": @{ - @\\"value\\": [UIColor colorWithRed:0.043f green:0.522f blue:0.600f alpha:1.000f], - @\\"name\\": @\\"ColorBrandPrimary\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"brand\\", - @\\"item\\": @\\"primary\\" - }, - @\\"secondary\\": @{ - @\\"value\\": [UIColor colorWithRed:0.435f green:0.369f blue:0.827f alpha:1.000f], - @\\"name\\": @\\"ColorBrandSecondary\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"brand\\", - @\\"item\\": @\\"secondary\\" - } - }, - @\\"core\\": @{ - @\\"green\\": @{ - @\\"0\\": @{ - @\\"value\\": [UIColor colorWithRed:0.922f green:0.976f blue:0.922f alpha:1.000f], - @\\"name\\": @\\"ColorCoreGreen0\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"green\\", - @\\"subitem\\": @\\"0\\" - }, - @\\"100\\": @{ - @\\"value\\": [UIColor colorWithRed:0.843f green:0.957f blue:0.843f alpha:1.000f], - @\\"name\\": @\\"ColorCoreGreen100\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"green\\", - @\\"subitem\\": @\\"100\\" - }, - @\\"200\\": @{ - @\\"value\\": [UIColor colorWithRed:0.761f green:0.949f blue:0.741f alpha:1.000f], - @\\"name\\": @\\"ColorCoreGreen200\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"green\\", - @\\"subitem\\": @\\"200\\" - }, - @\\"300\\": @{ - @\\"value\\": [UIColor colorWithRed:0.596f green:0.898f blue:0.557f alpha:1.000f], - @\\"name\\": @\\"ColorCoreGreen300\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"green\\", - @\\"subitem\\": @\\"300\\" - }, - @\\"400\\": @{ - @\\"value\\": [UIColor colorWithRed:0.459f green:0.867f blue:0.400f alpha:1.000f], - @\\"name\\": @\\"ColorCoreGreen400\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"green\\", - @\\"subitem\\": @\\"400\\" - }, - @\\"500\\": @{ - @\\"value\\": [UIColor colorWithRed:0.349f green:0.796f blue:0.349f alpha:1.000f], - @\\"name\\": @\\"ColorCoreGreen500\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"green\\", - @\\"subitem\\": @\\"500\\" - }, - @\\"600\\": @{ - @\\"value\\": [UIColor colorWithRed:0.169f green:0.714f blue:0.337f alpha:1.000f], - @\\"name\\": @\\"ColorCoreGreen600\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"green\\", - @\\"subitem\\": @\\"600\\" - }, - @\\"700\\": @{ - @\\"value\\": [UIColor colorWithRed:0.047f green:0.655f blue:0.314f alpha:1.000f], - @\\"name\\": @\\"ColorCoreGreen700\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"green\\", - @\\"subitem\\": @\\"700\\" - }, - @\\"800\\": @{ - @\\"value\\": [UIColor colorWithRed:0.000f green:0.545f blue:0.275f alpha:1.000f], - @\\"name\\": @\\"ColorCoreGreen800\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"green\\", - @\\"subitem\\": @\\"800\\" - }, - @\\"900\\": @{ - @\\"value\\": [UIColor colorWithRed:0.000f green:0.420f blue:0.251f alpha:1.000f], - @\\"name\\": @\\"ColorCoreGreen900\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"green\\", - @\\"subitem\\": @\\"900\\" - }, - @\\"1000\\": @{ - @\\"value\\": [UIColor colorWithRed:0.031f green:0.259f blue:0.184f alpha:1.000f], - @\\"name\\": @\\"ColorCoreGreen1000\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"green\\", - @\\"subitem\\": @\\"1000\\" - }, - @\\"1100\\": @{ - @\\"value\\": [UIColor colorWithRed:0.000f green:0.169f blue:0.125f alpha:1.000f], - @\\"name\\": @\\"ColorCoreGreen1100\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"green\\", - @\\"subitem\\": @\\"1100\\" - } - }, - @\\"teal\\": @{ - @\\"0\\": @{ - @\\"value\\": [UIColor colorWithRed:0.898f green:0.976f blue:0.961f alpha:1.000f], - @\\"name\\": @\\"ColorCoreTeal0\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"teal\\", - @\\"subitem\\": @\\"0\\" - }, - @\\"100\\": @{ - @\\"value\\": [UIColor colorWithRed:0.804f green:0.969f blue:0.937f alpha:1.000f], - @\\"name\\": @\\"ColorCoreTeal100\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"teal\\", - @\\"subitem\\": @\\"100\\" - }, - @\\"200\\": @{ - @\\"value\\": [UIColor colorWithRed:0.702f green:0.949f blue:0.902f alpha:1.000f], - @\\"name\\": @\\"ColorCoreTeal200\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"teal\\", - @\\"subitem\\": @\\"200\\" - }, - @\\"300\\": @{ - @\\"value\\": [UIColor colorWithRed:0.490f green:0.918f blue:0.835f alpha:1.000f], - @\\"name\\": @\\"ColorCoreTeal300\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"teal\\", - @\\"subitem\\": @\\"300\\" - }, - @\\"400\\": @{ - @\\"value\\": [UIColor colorWithRed:0.141f green:0.878f blue:0.773f alpha:1.000f], - @\\"name\\": @\\"ColorCoreTeal400\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"teal\\", - @\\"subitem\\": @\\"400\\" - }, - @\\"500\\": @{ - @\\"value\\": [UIColor colorWithRed:0.031f green:0.769f blue:0.698f alpha:1.000f], - @\\"name\\": @\\"ColorCoreTeal500\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"teal\\", - @\\"subitem\\": @\\"500\\" - }, - @\\"600\\": @{ - @\\"value\\": [UIColor colorWithRed:0.000f green:0.663f blue:0.612f alpha:1.000f], - @\\"name\\": @\\"ColorCoreTeal600\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"teal\\", - @\\"subitem\\": @\\"600\\" - }, - @\\"700\\": @{ - @\\"value\\": [UIColor colorWithRed:0.043f green:0.588f blue:0.561f alpha:1.000f], - @\\"name\\": @\\"ColorCoreTeal700\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"teal\\", - @\\"subitem\\": @\\"700\\" - }, - @\\"800\\": @{ - @\\"value\\": [UIColor colorWithRed:0.024f green:0.486f blue:0.486f alpha:1.000f], - @\\"name\\": @\\"ColorCoreTeal800\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"teal\\", - @\\"subitem\\": @\\"800\\" - }, - @\\"900\\": @{ - @\\"value\\": [UIColor colorWithRed:0.008f green:0.400f blue:0.380f alpha:1.000f], - @\\"name\\": @\\"ColorCoreTeal900\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"teal\\", - @\\"subitem\\": @\\"900\\" - }, - @\\"1000\\": @{ - @\\"value\\": [UIColor colorWithRed:0.031f green:0.247f blue:0.247f alpha:1.000f], - @\\"name\\": @\\"ColorCoreTeal1000\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"teal\\", - @\\"subitem\\": @\\"1000\\" - }, - @\\"1100\\": @{ - @\\"value\\": [UIColor colorWithRed:0.000f green:0.145f blue:0.157f alpha:1.000f], - @\\"name\\": @\\"ColorCoreTeal1100\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"teal\\", - @\\"subitem\\": @\\"1100\\" - } - }, - @\\"aqua\\": @{ - @\\"0\\": @{ - @\\"value\\": [UIColor colorWithRed:0.851f green:0.988f blue:0.984f alpha:1.000f], - @\\"name\\": @\\"ColorCoreAqua0\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"aqua\\", - @\\"subitem\\": @\\"0\\" - }, - @\\"100\\": @{ - @\\"value\\": [UIColor colorWithRed:0.773f green:0.976f blue:0.976f alpha:1.000f], - @\\"name\\": @\\"ColorCoreAqua100\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"aqua\\", - @\\"subitem\\": @\\"100\\" - }, - @\\"200\\": @{ - @\\"value\\": [UIColor colorWithRed:0.647f green:0.949f blue:0.949f alpha:1.000f], - @\\"name\\": @\\"ColorCoreAqua200\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"aqua\\", - @\\"subitem\\": @\\"200\\" - }, - @\\"300\\": @{ - @\\"value\\": [UIColor colorWithRed:0.463f green:0.898f blue:0.886f alpha:1.000f], - @\\"name\\": @\\"ColorCoreAqua300\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"aqua\\", - @\\"subitem\\": @\\"300\\" - }, - @\\"400\\": @{ - @\\"value\\": [UIColor colorWithRed:0.200f green:0.839f blue:0.886f alpha:1.000f], - @\\"name\\": @\\"ColorCoreAqua400\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"aqua\\", - @\\"subitem\\": @\\"400\\" - }, - @\\"500\\": @{ - @\\"value\\": [UIColor colorWithRed:0.090f green:0.722f blue:0.808f alpha:1.000f], - @\\"name\\": @\\"ColorCoreAqua500\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"aqua\\", - @\\"subitem\\": @\\"500\\" - }, - @\\"600\\": @{ - @\\"value\\": [UIColor colorWithRed:0.027f green:0.592f blue:0.682f alpha:1.000f], - @\\"name\\": @\\"ColorCoreAqua600\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"aqua\\", - @\\"subitem\\": @\\"600\\" - }, - @\\"700\\": @{ - @\\"value\\": [UIColor colorWithRed:0.043f green:0.522f blue:0.600f alpha:1.000f], - @\\"name\\": @\\"ColorCoreAqua700\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"aqua\\", - @\\"subitem\\": @\\"700\\" - }, - @\\"800\\": @{ - @\\"value\\": [UIColor colorWithRed:0.059f green:0.431f blue:0.518f alpha:1.000f], - @\\"name\\": @\\"ColorCoreAqua800\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"aqua\\", - @\\"subitem\\": @\\"800\\" - }, - @\\"900\\": @{ - @\\"value\\": [UIColor colorWithRed:0.012f green:0.369f blue:0.451f alpha:1.000f], - @\\"name\\": @\\"ColorCoreAqua900\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"aqua\\", - @\\"subitem\\": @\\"900\\" - }, - @\\"1000\\": @{ - @\\"value\\": [UIColor colorWithRed:0.031f green:0.239f blue:0.310f alpha:1.000f], - @\\"name\\": @\\"ColorCoreAqua1000\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"aqua\\", - @\\"subitem\\": @\\"1000\\" - }, - @\\"1100\\": @{ - @\\"value\\": [UIColor colorWithRed:0.000f green:0.157f blue:0.220f alpha:1.000f], - @\\"name\\": @\\"ColorCoreAqua1100\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"aqua\\", - @\\"subitem\\": @\\"1100\\" - } - }, - @\\"blue\\": @{ - @\\"0\\": @{ - @\\"value\\": [UIColor colorWithRed:0.914f green:0.973f blue:1.000f alpha:1.000f], - @\\"name\\": @\\"ColorCoreBlue0\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"blue\\", - @\\"subitem\\": @\\"0\\" - }, - @\\"100\\": @{ - @\\"value\\": [UIColor colorWithRed:0.863f green:0.949f blue:1.000f alpha:1.000f], - @\\"name\\": @\\"ColorCoreBlue100\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"blue\\", - @\\"subitem\\": @\\"100\\" - }, - @\\"200\\": @{ - @\\"value\\": [UIColor colorWithRed:0.780f green:0.894f blue:0.976f alpha:1.000f], - @\\"name\\": @\\"ColorCoreBlue200\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"blue\\", - @\\"subitem\\": @\\"200\\" - }, - @\\"300\\": @{ - @\\"value\\": [UIColor colorWithRed:0.631f green:0.824f blue:0.973f alpha:1.000f], - @\\"name\\": @\\"ColorCoreBlue300\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"blue\\", - @\\"subitem\\": @\\"300\\" - }, - @\\"400\\": @{ - @\\"value\\": [UIColor colorWithRed:0.337f green:0.678f blue:0.961f alpha:1.000f], - @\\"name\\": @\\"ColorCoreBlue400\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"blue\\", - @\\"subitem\\": @\\"400\\" - }, - @\\"500\\": @{ - @\\"value\\": [UIColor colorWithRed:0.220f green:0.588f blue:0.890f alpha:1.000f], - @\\"name\\": @\\"ColorCoreBlue500\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"blue\\", - @\\"subitem\\": @\\"500\\" - }, - @\\"600\\": @{ - @\\"value\\": [UIColor colorWithRed:0.169f green:0.529f blue:0.827f alpha:1.000f], - @\\"name\\": @\\"ColorCoreBlue600\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"blue\\", - @\\"subitem\\": @\\"600\\" - }, - @\\"700\\": @{ - @\\"value\\": [UIColor colorWithRed:0.125f green:0.475f blue:0.765f alpha:1.000f], - @\\"name\\": @\\"ColorCoreBlue700\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"blue\\", - @\\"subitem\\": @\\"700\\" - }, - @\\"800\\": @{ - @\\"value\\": [UIColor colorWithRed:0.067f green:0.427f blue:0.667f alpha:1.000f], - @\\"name\\": @\\"ColorCoreBlue800\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"blue\\", - @\\"subitem\\": @\\"800\\" - }, - @\\"900\\": @{ - @\\"value\\": [UIColor colorWithRed:0.047f green:0.337f blue:0.537f alpha:1.000f], - @\\"name\\": @\\"ColorCoreBlue900\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"blue\\", - @\\"subitem\\": @\\"900\\" - }, - @\\"1000\\": @{ - @\\"value\\": [UIColor colorWithRed:0.039f green:0.224f blue:0.376f alpha:1.000f], - @\\"name\\": @\\"ColorCoreBlue1000\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"blue\\", - @\\"subitem\\": @\\"1000\\" - }, - @\\"1100\\": @{ - @\\"value\\": [UIColor colorWithRed:0.000f green:0.129f blue:0.220f alpha:1.000f], - @\\"name\\": @\\"ColorCoreBlue1100\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"blue\\", - @\\"subitem\\": @\\"1100\\" - } - }, - @\\"purple\\": @{ - @\\"0\\": @{ - @\\"value\\": [UIColor colorWithRed:0.949f green:0.949f blue:0.976f alpha:1.000f], - @\\"name\\": @\\"ColorCorePurple0\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"purple\\", - @\\"subitem\\": @\\"0\\" - }, - @\\"100\\": @{ - @\\"value\\": [UIColor colorWithRed:0.918f green:0.918f blue:0.976f alpha:1.000f], - @\\"name\\": @\\"ColorCorePurple100\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"purple\\", - @\\"subitem\\": @\\"100\\" - }, - @\\"200\\": @{ - @\\"value\\": [UIColor colorWithRed:0.847f green:0.843f blue:0.976f alpha:1.000f], - @\\"name\\": @\\"ColorCorePurple200\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"purple\\", - @\\"subitem\\": @\\"200\\" - }, - @\\"300\\": @{ - @\\"value\\": [UIColor colorWithRed:0.757f green:0.757f blue:0.969f alpha:1.000f], - @\\"name\\": @\\"ColorCorePurple300\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"purple\\", - @\\"subitem\\": @\\"300\\" - }, - @\\"400\\": @{ - @\\"value\\": [UIColor colorWithRed:0.631f green:0.576f blue:0.949f alpha:1.000f], - @\\"name\\": @\\"ColorCorePurple400\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"purple\\", - @\\"subitem\\": @\\"400\\" - }, - @\\"500\\": @{ - @\\"value\\": [UIColor colorWithRed:0.569f green:0.502f blue:0.957f alpha:1.000f], - @\\"name\\": @\\"ColorCorePurple500\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"purple\\", - @\\"subitem\\": @\\"500\\" - }, - @\\"600\\": @{ - @\\"value\\": [UIColor colorWithRed:0.506f green:0.435f blue:0.918f alpha:1.000f], - @\\"name\\": @\\"ColorCorePurple600\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"purple\\", - @\\"subitem\\": @\\"600\\" - }, - @\\"700\\": @{ - @\\"value\\": [UIColor colorWithRed:0.435f green:0.369f blue:0.827f alpha:1.000f], - @\\"name\\": @\\"ColorCorePurple700\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"purple\\", - @\\"subitem\\": @\\"700\\" - }, - @\\"800\\": @{ - @\\"value\\": [UIColor colorWithRed:0.369f green:0.306f blue:0.729f alpha:1.000f], - @\\"name\\": @\\"ColorCorePurple800\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"purple\\", - @\\"subitem\\": @\\"800\\" - }, - @\\"900\\": @{ - @\\"value\\": [UIColor colorWithRed:0.282f green:0.227f blue:0.612f alpha:1.000f], - @\\"name\\": @\\"ColorCorePurple900\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"purple\\", - @\\"subitem\\": @\\"900\\" - }, - @\\"1000\\": @{ - @\\"value\\": [UIColor colorWithRed:0.176f green:0.141f blue:0.420f alpha:1.000f], - @\\"name\\": @\\"ColorCorePurple1000\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"purple\\", - @\\"subitem\\": @\\"1000\\" - }, - @\\"1100\\": @{ - @\\"value\\": [UIColor colorWithRed:0.114f green:0.114f blue:0.220f alpha:1.000f], - @\\"name\\": @\\"ColorCorePurple1100\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"purple\\", - @\\"subitem\\": @\\"1100\\" - } - }, - @\\"magenta\\": @{ - @\\"0\\": @{ - @\\"value\\": [UIColor colorWithRed:0.996f green:0.941f blue:1.000f alpha:1.000f], - @\\"name\\": @\\"ColorCoreMagenta0\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"magenta\\", - @\\"subitem\\": @\\"0\\" - }, - @\\"100\\": @{ - @\\"value\\": [UIColor colorWithRed:0.976f green:0.890f blue:0.988f alpha:1.000f], - @\\"name\\": @\\"ColorCoreMagenta100\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"magenta\\", - @\\"subitem\\": @\\"100\\" - }, - @\\"200\\": @{ - @\\"value\\": [UIColor colorWithRed:0.957f green:0.769f blue:0.969f alpha:1.000f], - @\\"name\\": @\\"ColorCoreMagenta200\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"magenta\\", - @\\"subitem\\": @\\"200\\" - }, - @\\"300\\": @{ - @\\"value\\": [UIColor colorWithRed:0.929f green:0.678f blue:0.949f alpha:1.000f], - @\\"name\\": @\\"ColorCoreMagenta300\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"magenta\\", - @\\"subitem\\": @\\"300\\" - }, - @\\"400\\": @{ - @\\"value\\": [UIColor colorWithRed:0.949f green:0.510f blue:0.961f alpha:1.000f], - @\\"name\\": @\\"ColorCoreMagenta400\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"magenta\\", - @\\"subitem\\": @\\"400\\" - }, - @\\"500\\": @{ - @\\"value\\": [UIColor colorWithRed:0.859f green:0.380f blue:0.859f alpha:1.000f], - @\\"name\\": @\\"ColorCoreMagenta500\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"magenta\\", - @\\"subitem\\": @\\"500\\" - }, - @\\"600\\": @{ - @\\"value\\": [UIColor colorWithRed:0.769f green:0.306f blue:0.725f alpha:1.000f], - @\\"name\\": @\\"ColorCoreMagenta600\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"magenta\\", - @\\"subitem\\": @\\"600\\" - }, - @\\"700\\": @{ - @\\"value\\": [UIColor colorWithRed:0.675f green:0.267f blue:0.659f alpha:1.000f], - @\\"name\\": @\\"ColorCoreMagenta700\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"magenta\\", - @\\"subitem\\": @\\"700\\" - }, - @\\"800\\": @{ - @\\"value\\": [UIColor colorWithRed:0.561f green:0.220f blue:0.588f alpha:1.000f], - @\\"name\\": @\\"ColorCoreMagenta800\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"magenta\\", - @\\"subitem\\": @\\"800\\" - }, - @\\"900\\": @{ - @\\"value\\": [UIColor colorWithRed:0.424f green:0.133f blue:0.467f alpha:1.000f], - @\\"name\\": @\\"ColorCoreMagenta900\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"magenta\\", - @\\"subitem\\": @\\"900\\" - }, - @\\"1000\\": @{ - @\\"value\\": [UIColor colorWithRed:0.271f green:0.082f blue:0.318f alpha:1.000f], - @\\"name\\": @\\"ColorCoreMagenta1000\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"magenta\\", - @\\"subitem\\": @\\"1000\\" - }, - @\\"1100\\": @{ - @\\"value\\": [UIColor colorWithRed:0.161f green:0.098f blue:0.176f alpha:1.000f], - @\\"name\\": @\\"ColorCoreMagenta1100\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"magenta\\", - @\\"subitem\\": @\\"1100\\" - } - }, - @\\"pink\\": @{ - @\\"0\\": @{ - @\\"value\\": [UIColor colorWithRed:1.000f green:0.914f blue:0.953f alpha:1.000f], - @\\"name\\": @\\"ColorCorePink0\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"pink\\", - @\\"subitem\\": @\\"0\\" - }, - @\\"100\\": @{ - @\\"value\\": [UIColor colorWithRed:0.988f green:0.859f blue:0.922f alpha:1.000f], - @\\"name\\": @\\"ColorCorePink100\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"pink\\", - @\\"subitem\\": @\\"100\\" - }, - @\\"200\\": @{ - @\\"value\\": [UIColor colorWithRed:1.000f green:0.710f blue:0.835f alpha:1.000f], - @\\"name\\": @\\"ColorCorePink200\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"pink\\", - @\\"subitem\\": @\\"200\\" - }, - @\\"300\\": @{ - @\\"value\\": [UIColor colorWithRed:1.000f green:0.584f blue:0.757f alpha:1.000f], - @\\"name\\": @\\"ColorCorePink300\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"pink\\", - @\\"subitem\\": @\\"300\\" - }, - @\\"400\\": @{ - @\\"value\\": [UIColor colorWithRed:1.000f green:0.463f blue:0.682f alpha:1.000f], - @\\"name\\": @\\"ColorCorePink400\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"pink\\", - @\\"subitem\\": @\\"400\\" - }, - @\\"500\\": @{ - @\\"value\\": [UIColor colorWithRed:0.937f green:0.345f blue:0.545f alpha:1.000f], - @\\"name\\": @\\"ColorCorePink500\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"pink\\", - @\\"subitem\\": @\\"500\\" - }, - @\\"600\\": @{ - @\\"value\\": [UIColor colorWithRed:0.878f green:0.267f blue:0.486f alpha:1.000f], - @\\"name\\": @\\"ColorCorePink600\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"pink\\", - @\\"subitem\\": @\\"600\\" - }, - @\\"700\\": @{ - @\\"value\\": [UIColor colorWithRed:0.808f green:0.212f blue:0.396f alpha:1.000f], - @\\"name\\": @\\"ColorCorePink700\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"pink\\", - @\\"subitem\\": @\\"700\\" - }, - @\\"800\\": @{ - @\\"value\\": [UIColor colorWithRed:0.698f green:0.184f blue:0.357f alpha:1.000f], - @\\"name\\": @\\"ColorCorePink800\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"pink\\", - @\\"subitem\\": @\\"800\\" - }, - @\\"900\\": @{ - @\\"value\\": [UIColor colorWithRed:0.576f green:0.094f blue:0.278f alpha:1.000f], - @\\"name\\": @\\"ColorCorePink900\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"pink\\", - @\\"subitem\\": @\\"900\\" - }, - @\\"1000\\": @{ - @\\"value\\": [UIColor colorWithRed:0.337f green:0.071f blue:0.192f alpha:1.000f], - @\\"name\\": @\\"ColorCorePink1000\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"pink\\", - @\\"subitem\\": @\\"1000\\" - }, - @\\"1100\\": @{ - @\\"value\\": [UIColor colorWithRed:0.169f green:0.090f blue:0.129f alpha:1.000f], - @\\"name\\": @\\"ColorCorePink1100\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"pink\\", - @\\"subitem\\": @\\"1100\\" - } - }, - @\\"red\\": @{ - @\\"0\\": @{ - @\\"value\\": [UIColor colorWithRed:1.000f green:0.918f blue:0.914f alpha:1.000f], - @\\"name\\": @\\"ColorCoreRed0\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"red\\", - @\\"subitem\\": @\\"0\\" - }, - @\\"100\\": @{ - @\\"value\\": [UIColor colorWithRed:1.000f green:0.835f blue:0.824f alpha:1.000f], - @\\"name\\": @\\"ColorCoreRed100\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"red\\", - @\\"subitem\\": @\\"100\\" - }, - @\\"200\\": @{ - @\\"value\\": [UIColor colorWithRed:1.000f green:0.722f blue:0.694f alpha:1.000f], - @\\"name\\": @\\"ColorCoreRed200\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"red\\", - @\\"subitem\\": @\\"200\\" - }, - @\\"300\\": @{ - @\\"value\\": [UIColor colorWithRed:1.000f green:0.612f blue:0.561f alpha:1.000f], - @\\"name\\": @\\"ColorCoreRed300\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"red\\", - @\\"subitem\\": @\\"300\\" - }, - @\\"400\\": @{ - @\\"value\\": [UIColor colorWithRed:1.000f green:0.498f blue:0.431f alpha:1.000f], - @\\"name\\": @\\"ColorCoreRed400\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"red\\", - @\\"subitem\\": @\\"400\\" - }, - @\\"500\\": @{ - @\\"value\\": [UIColor colorWithRed:0.969f green:0.376f blue:0.329f alpha:1.000f], - @\\"name\\": @\\"ColorCoreRed500\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"red\\", - @\\"subitem\\": @\\"500\\" - }, - @\\"600\\": @{ - @\\"value\\": [UIColor colorWithRed:0.929f green:0.298f blue:0.259f alpha:1.000f], - @\\"name\\": @\\"ColorCoreRed600\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"red\\", - @\\"subitem\\": @\\"600\\" - }, - @\\"700\\": @{ - @\\"value\\": [UIColor colorWithRed:0.859f green:0.243f blue:0.243f alpha:1.000f], - @\\"name\\": @\\"ColorCoreRed700\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"red\\", - @\\"subitem\\": @\\"700\\" - }, - @\\"800\\": @{ - @\\"value\\": [UIColor colorWithRed:0.776f green:0.204f blue:0.204f alpha:1.000f], - @\\"name\\": @\\"ColorCoreRed800\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"red\\", - @\\"subitem\\": @\\"800\\" - }, - @\\"900\\": @{ - @\\"value\\": [UIColor colorWithRed:0.600f green:0.133f blue:0.133f alpha:1.000f], - @\\"name\\": @\\"ColorCoreRed900\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"red\\", - @\\"subitem\\": @\\"900\\" - }, - @\\"1000\\": @{ - @\\"value\\": [UIColor colorWithRed:0.427f green:0.075f blue:0.075f alpha:1.000f], - @\\"name\\": @\\"ColorCoreRed1000\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"red\\", - @\\"subitem\\": @\\"1000\\" - }, - @\\"1100\\": @{ - @\\"value\\": [UIColor colorWithRed:0.169f green:0.067f blue:0.067f alpha:1.000f], - @\\"name\\": @\\"ColorCoreRed1100\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"red\\", - @\\"subitem\\": @\\"1100\\" - } - }, - @\\"orange\\": @{ - @\\"0\\": @{ - @\\"value\\": [UIColor colorWithRed:1.000f green:0.929f blue:0.890f alpha:1.000f], - @\\"name\\": @\\"ColorCoreOrange0\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"orange\\", - @\\"subitem\\": @\\"0\\" - }, - @\\"100\\": @{ - @\\"value\\": [UIColor colorWithRed:0.988f green:0.863f blue:0.800f alpha:1.000f], - @\\"name\\": @\\"ColorCoreOrange100\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"orange\\", - @\\"subitem\\": @\\"100\\" - }, - @\\"200\\": @{ - @\\"value\\": [UIColor colorWithRed:1.000f green:0.776f blue:0.643f alpha:1.000f], - @\\"name\\": @\\"ColorCoreOrange200\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"orange\\", - @\\"subitem\\": @\\"200\\" - }, - @\\"300\\": @{ - @\\"value\\": [UIColor colorWithRed:1.000f green:0.694f blue:0.502f alpha:1.000f], - @\\"name\\": @\\"ColorCoreOrange300\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"orange\\", - @\\"subitem\\": @\\"300\\" - }, - @\\"400\\": @{ - @\\"value\\": [UIColor colorWithRed:1.000f green:0.612f blue:0.365f alpha:1.000f], - @\\"name\\": @\\"ColorCoreOrange400\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"orange\\", - @\\"subitem\\": @\\"400\\" - }, - @\\"500\\": @{ - @\\"value\\": [UIColor colorWithRed:0.988f green:0.537f blue:0.263f alpha:1.000f], - @\\"name\\": @\\"ColorCoreOrange500\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"orange\\", - @\\"subitem\\": @\\"500\\" - }, - @\\"600\\": @{ - @\\"value\\": [UIColor colorWithRed:0.961f green:0.490f blue:0.200f alpha:1.000f], - @\\"name\\": @\\"ColorCoreOrange600\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"orange\\", - @\\"subitem\\": @\\"600\\" - }, - @\\"700\\": @{ - @\\"value\\": [UIColor colorWithRed:0.929f green:0.439f blue:0.141f alpha:1.000f], - @\\"name\\": @\\"ColorCoreOrange700\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"orange\\", - @\\"subitem\\": @\\"700\\" - }, - @\\"800\\": @{ - @\\"value\\": [UIColor colorWithRed:0.808f green:0.333f blue:0.067f alpha:1.000f], - @\\"name\\": @\\"ColorCoreOrange800\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"orange\\", - @\\"subitem\\": @\\"800\\" - }, - @\\"900\\": @{ - @\\"value\\": [UIColor colorWithRed:0.588f green:0.173f blue:0.043f alpha:1.000f], - @\\"name\\": @\\"ColorCoreOrange900\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"orange\\", - @\\"subitem\\": @\\"900\\" - }, - @\\"1000\\": @{ - @\\"value\\": [UIColor colorWithRed:0.376f green:0.090f blue:0.000f alpha:1.000f], - @\\"name\\": @\\"ColorCoreOrange1000\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"orange\\", - @\\"subitem\\": @\\"1000\\" - }, - @\\"1100\\": @{ - @\\"value\\": [UIColor colorWithRed:0.176f green:0.075f blue:0.055f alpha:1.000f], - @\\"name\\": @\\"ColorCoreOrange1100\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"orange\\", - @\\"subitem\\": @\\"1100\\" - } - }, - @\\"neutral\\": @{ - @\\"0\\": @{ - @\\"value\\": [UIColor colorWithRed:1.000f green:1.000f blue:1.000f alpha:1.000f], - @\\"name\\": @\\"ColorCoreNeutral0\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"neutral\\", - @\\"subitem\\": @\\"0\\" - }, - @\\"100\\": @{ - @\\"value\\": [UIColor colorWithRed:0.953f green:0.957f blue:0.957f alpha:1.000f], - @\\"name\\": @\\"ColorCoreNeutral100\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"neutral\\", - @\\"subitem\\": @\\"100\\" - }, - @\\"200\\": @{ - @\\"value\\": [UIColor colorWithRed:0.871f green:0.882f blue:0.882f alpha:1.000f], - @\\"name\\": @\\"ColorCoreNeutral200\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"neutral\\", - @\\"subitem\\": @\\"200\\" - }, - @\\"300\\": @{ - @\\"value\\": [UIColor colorWithRed:0.784f green:0.800f blue:0.800f alpha:1.000f], - @\\"name\\": @\\"ColorCoreNeutral300\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"neutral\\", - @\\"subitem\\": @\\"300\\" - }, - @\\"400\\": @{ - @\\"value\\": [UIColor colorWithRed:0.690f green:0.714f blue:0.718f alpha:1.000f], - @\\"name\\": @\\"ColorCoreNeutral400\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"neutral\\", - @\\"subitem\\": @\\"400\\" - }, - @\\"500\\": @{ - @\\"value\\": [UIColor colorWithRed:0.573f green:0.604f blue:0.608f alpha:1.000f], - @\\"name\\": @\\"ColorCoreNeutral500\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"neutral\\", - @\\"subitem\\": @\\"500\\" - }, - @\\"600\\": @{ - @\\"value\\": [UIColor colorWithRed:0.431f green:0.475f blue:0.478f alpha:1.000f], - @\\"name\\": @\\"ColorCoreNeutral600\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"neutral\\", - @\\"subitem\\": @\\"600\\" - }, - @\\"700\\": @{ - @\\"value\\": [UIColor colorWithRed:0.318f green:0.369f blue:0.373f alpha:1.000f], - @\\"name\\": @\\"ColorCoreNeutral700\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"neutral\\", - @\\"subitem\\": @\\"700\\" - }, - @\\"800\\": @{ - @\\"value\\": [UIColor colorWithRed:0.212f green:0.255f blue:0.255f alpha:1.000f], - @\\"name\\": @\\"ColorCoreNeutral800\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"neutral\\", - @\\"subitem\\": @\\"800\\" - }, - @\\"900\\": @{ - @\\"value\\": [UIColor colorWithRed:0.153f green:0.200f blue:0.200f alpha:1.000f], - @\\"name\\": @\\"ColorCoreNeutral900\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"neutral\\", - @\\"subitem\\": @\\"900\\" - }, - @\\"1000\\": @{ - @\\"value\\": [UIColor colorWithRed:0.086f green:0.125f blue:0.125f alpha:1.000f], - @\\"name\\": @\\"ColorCoreNeutral1000\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"neutral\\", - @\\"subitem\\": @\\"1000\\" - }, - @\\"1100\\": @{ - @\\"value\\": [UIColor colorWithRed:0.016f green:0.016f blue:0.016f alpha:1.000f], - @\\"name\\": @\\"ColorCoreNeutral1100\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"neutral\\", - @\\"subitem\\": @\\"1100\\" - } - }, - @\\"yellow\\": @{ - @\\"0\\": @{ - @\\"value\\": [UIColor colorWithRed:1.000f green:0.973f blue:0.886f alpha:1.000f], - @\\"name\\": @\\"ColorCoreYellow0\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"yellow\\", - @\\"subitem\\": @\\"0\\" - }, - @\\"100\\": @{ - @\\"value\\": [UIColor colorWithRed:0.992f green:0.937f blue:0.804f alpha:1.000f], - @\\"name\\": @\\"ColorCoreYellow100\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"yellow\\", - @\\"subitem\\": @\\"100\\" - }, - @\\"200\\": @{ - @\\"value\\": [UIColor colorWithRed:1.000f green:0.914f blue:0.604f alpha:1.000f], - @\\"name\\": @\\"ColorCoreYellow200\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"yellow\\", - @\\"subitem\\": @\\"200\\" - }, - @\\"300\\": @{ - @\\"value\\": [UIColor colorWithRed:1.000f green:0.882f blue:0.431f alpha:1.000f], - @\\"name\\": @\\"ColorCoreYellow300\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"yellow\\", - @\\"subitem\\": @\\"300\\" - }, - @\\"400\\": @{ - @\\"value\\": [UIColor colorWithRed:1.000f green:0.851f blue:0.263f alpha:1.000f], - @\\"name\\": @\\"ColorCoreYellow400\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"yellow\\", - @\\"subitem\\": @\\"400\\" - }, - @\\"500\\": @{ - @\\"value\\": [UIColor colorWithRed:1.000f green:0.804f blue:0.110f alpha:1.000f], - @\\"name\\": @\\"ColorCoreYellow500\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"yellow\\", - @\\"subitem\\": @\\"500\\" - }, - @\\"600\\": @{ - @\\"value\\": [UIColor colorWithRed:1.000f green:0.737f blue:0.000f alpha:1.000f], - @\\"name\\": @\\"ColorCoreYellow600\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"yellow\\", - @\\"subitem\\": @\\"600\\" - }, - @\\"700\\": @{ - @\\"value\\": [UIColor colorWithRed:0.867f green:0.600f blue:0.012f alpha:1.000f], - @\\"name\\": @\\"ColorCoreYellow700\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"yellow\\", - @\\"subitem\\": @\\"700\\" - }, - @\\"800\\": @{ - @\\"value\\": [UIColor colorWithRed:0.729f green:0.459f blue:0.024f alpha:1.000f], - @\\"name\\": @\\"ColorCoreYellow800\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"yellow\\", - @\\"subitem\\": @\\"800\\" - }, - @\\"900\\": @{ - @\\"value\\": [UIColor colorWithRed:0.580f green:0.298f blue:0.047f alpha:1.000f], - @\\"name\\": @\\"ColorCoreYellow900\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"yellow\\", - @\\"subitem\\": @\\"900\\" - }, - @\\"1000\\": @{ - @\\"value\\": [UIColor colorWithRed:0.329f green:0.165f blue:0.000f alpha:1.000f], - @\\"name\\": @\\"ColorCoreYellow1000\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"yellow\\", - @\\"subitem\\": @\\"1000\\" - }, - @\\"1100\\": @{ - @\\"value\\": [UIColor colorWithRed:0.176f green:0.102f blue:0.020f alpha:1.000f], - @\\"name\\": @\\"ColorCoreYellow1100\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"core\\", - @\\"item\\": @\\"yellow\\", - @\\"subitem\\": @\\"1100\\" - } - } - }, - @\\"font\\": @{ - @\\"primary\\": @{ - @\\"value\\": [UIColor colorWithRed:0.016f green:0.016f blue:0.016f alpha:1.000f], - @\\"name\\": @\\"ColorFontPrimary\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"font\\", - @\\"item\\": @\\"primary\\" - }, - @\\"secondary\\": @{ - @\\"value\\": [UIColor colorWithRed:0.153f green:0.200f blue:0.200f alpha:1.000f], - @\\"name\\": @\\"ColorFontSecondary\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"font\\", - @\\"item\\": @\\"secondary\\" - }, - @\\"tertiary\\": @{ - @\\"value\\": [UIColor colorWithRed:0.212f green:0.255f blue:0.255f alpha:1.000f], - @\\"name\\": @\\"ColorFontTertiary\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"font\\", - @\\"item\\": @\\"tertiary\\" - }, - @\\"interactive\\": @{ - @\\"_\\": @{ - @\\"value\\": [UIColor colorWithRed:0.043f green:0.522f blue:0.600f alpha:1.000f], - @\\"name\\": @\\"ColorFontInteractive\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"font\\", - @\\"item\\": @\\"interactive\\", - @\\"subitem\\": @\\"_\\" - }, - @\\"hover\\": @{ - @\\"value\\": [UIColor colorWithRed:0.043f green:0.522f blue:0.600f alpha:1.000f], - @\\"name\\": @\\"ColorFontInteractiveHover\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"font\\", - @\\"item\\": @\\"interactive\\", - @\\"subitem\\": @\\"hover\\" - }, - @\\"active\\": @{ - @\\"value\\": [UIColor colorWithRed:0.435f green:0.369f blue:0.827f alpha:1.000f], - @\\"name\\": @\\"ColorFontInteractiveActive\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"font\\", - @\\"item\\": @\\"interactive\\", - @\\"subitem\\": @\\"active\\" - }, - @\\"disabled\\": @{ - @\\"value\\": [UIColor colorWithRed:0.212f green:0.255f blue:0.255f alpha:1.000f], - @\\"name\\": @\\"ColorFontInteractiveDisabled\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"font\\", - @\\"item\\": @\\"interactive\\", - @\\"subitem\\": @\\"disabled\\" - } - }, - @\\"danger\\": @{ - @\\"value\\": [UIColor colorWithRed:0.427f green:0.075f blue:0.075f alpha:1.000f], - @\\"name\\": @\\"ColorFontDanger\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"font\\", - @\\"item\\": @\\"danger\\" - }, - @\\"warning\\": @{ - @\\"value\\": [UIColor colorWithRed:0.376f green:0.090f blue:0.000f alpha:1.000f], - @\\"name\\": @\\"ColorFontWarning\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"font\\", - @\\"item\\": @\\"warning\\" - }, - @\\"success\\": @{ - @\\"value\\": [UIColor colorWithRed:0.031f green:0.259f blue:0.184f alpha:1.000f], - @\\"name\\": @\\"ColorFontSuccess\\", - @\\"category\\": @\\"color\\", - @\\"type\\": @\\"font\\", - @\\"item\\": @\\"success\\" - } - } - }, - @\\"size\\": @{ - @\\"border\\": @{ - @\\"radius\\": @{ - @\\"large\\": @{ - @\\"value\\": @480.00f, - @\\"name\\": @\\"SizeBorderRadiusLarge\\", - @\\"category\\": @\\"size\\", - @\\"type\\": @\\"border\\", - @\\"item\\": @\\"radius\\", - @\\"subitem\\": @\\"large\\" - } - } - }, - @\\"font\\": @{ - @\\"small\\": @{ - @\\"value\\": @12.00f, - @\\"name\\": @\\"SizeFontSmall\\", - @\\"category\\": @\\"size\\", - @\\"type\\": @\\"font\\", - @\\"item\\": @\\"small\\" - }, - @\\"medium\\": @{ - @\\"value\\": @16.00f, - @\\"name\\": @\\"SizeFontMedium\\", - @\\"category\\": @\\"size\\", - @\\"type\\": @\\"font\\", - @\\"item\\": @\\"medium\\" - }, - @\\"large\\": @{ - @\\"value\\": @24.00f, - @\\"name\\": @\\"SizeFontLarge\\", - @\\"category\\": @\\"size\\", - @\\"type\\": @\\"font\\", - @\\"item\\": @\\"large\\" - }, - @\\"xl\\": @{ - @\\"value\\": @36.00f, - @\\"name\\": @\\"SizeFontXl\\", - @\\"category\\": @\\"size\\", - @\\"type\\": @\\"font\\", - @\\"item\\": @\\"xl\\" - } - }, - @\\"padding\\": @{ - @\\"small\\": @{ - @\\"value\\": @8.00f, - @\\"name\\": @\\"SizePaddingSmall\\", - @\\"category\\": @\\"size\\", - @\\"type\\": @\\"padding\\", - @\\"item\\": @\\"small\\" - }, - @\\"medium\\": @{ - @\\"value\\": @16.00f, - @\\"name\\": @\\"SizePaddingMedium\\", - @\\"category\\": @\\"size\\", - @\\"type\\": @\\"padding\\", - @\\"item\\": @\\"medium\\" - }, - @\\"large\\": @{ - @\\"value\\": @16.00f, - @\\"name\\": @\\"SizePaddingLarge\\", - @\\"category\\": @\\"size\\", - @\\"type\\": @\\"padding\\", - @\\"item\\": @\\"large\\" - }, - @\\"xl\\": @{ - @\\"value\\": @16.00f, - @\\"name\\": @\\"SizePaddingXl\\", - @\\"category\\": @\\"size\\", - @\\"type\\": @\\"padding\\", - @\\"item\\": @\\"xl\\" - } - } - } - }; - }); - - return dictionary; -} - -@end - - -" -`; - -exports[`integration ios objective-c ios/static.h should match snapshot 1`] = ` -" -// static.h -// - -// Do not edit directly -// Generated on Sat, 01 Jan 2000 00:00:00 GMT - - -#import - - -extern CGFloat const SizeBorderRadiusLarge; -extern CGFloat const SizeFontSmall; -extern CGFloat const SizeFontMedium; -extern CGFloat const SizeFontLarge; -extern CGFloat const SizeFontXl; -extern CGFloat const SizePaddingSmall; -extern CGFloat const SizePaddingMedium; -extern CGFloat const SizePaddingLarge; -extern CGFloat const SizePaddingXl; -" -`; - -exports[`integration ios objective-c ios/static.m should match snapshot 1`] = ` -" -// -// static.m -// - -// Do not edit directly -// Generated on Sat, 01 Jan 2000 00:00:00 GMT - - -#import \\"StyleDictionaryStatic.h\\" - - -CGFloat const SizeBorderRadiusLarge = 480.00f; -CGFloat const SizeFontSmall = 12.00f; -CGFloat const SizeFontMedium = 16.00f; -CGFloat const SizeFontLarge = 24.00f; -CGFloat const SizeFontXl = 36.00f; -CGFloat const SizePaddingSmall = 8.00f; -CGFloat const SizePaddingMedium = 16.00f; -CGFloat const SizePaddingLarge = 16.00f; -CGFloat const SizePaddingXl = 16.00f; -" -`; diff --git a/__integration__/__snapshots__/iOSObjectiveC.test.snap.js b/__integration__/__snapshots__/iOSObjectiveC.test.snap.js new file mode 100644 index 000000000..e7d389748 --- /dev/null +++ b/__integration__/__snapshots__/iOSObjectiveC.test.snap.js @@ -0,0 +1,1970 @@ +/* @web/test-runner snapshot v1 */ +export const snapshots = {}; + +snapshots["ios/singleton.m should match snapshot"] = +` +// +// singleton.m +// + +// Do not edit directly +// Generated on Sat, 01 Jan 2000 00:00:00 GMT + + +#import "StyleDictionary.h" + +@implementation StyleDictionary + ++ (NSDictionary *)getProperty:(NSString *)keyPath { + return [[self properties] valueForKeyPath:keyPath]; +} + ++ (nonnull)getValue:(NSString *)keyPath { + return [[self properties] valueForKeyPath:[NSString stringWithFormat:@"%@.value", keyPath]]; +} + ++ (NSDictionary *)properties { + static NSDictionary * dictionary; + static dispatch_once_t onceToken; + + dispatch_once(&onceToken, ^{ + dictionary = @{ + @"color": @{ + @"background": @{ + @"primary": @{ + @"value": [UIColor colorWithRed:1.000f green:1.000f blue:1.000f alpha:1.000f], + @"name": @"ColorBackgroundPrimary", + @"category": @"color", + @"type": @"background", + @"item": @"primary" + }, + @"secondary": @{ + @"value": [UIColor colorWithRed:0.953f green:0.957f blue:0.957f alpha:1.000f], + @"name": @"ColorBackgroundSecondary", + @"category": @"color", + @"type": @"background", + @"item": @"secondary" + }, + @"tertiary": @{ + @"value": [UIColor colorWithRed:0.871f green:0.882f blue:0.882f alpha:1.000f], + @"name": @"ColorBackgroundTertiary", + @"category": @"color", + @"type": @"background", + @"item": @"tertiary" + }, + @"danger": @{ + @"value": [UIColor colorWithRed:1.000f green:0.918f blue:0.914f alpha:1.000f], + @"name": @"ColorBackgroundDanger", + @"category": @"color", + @"type": @"background", + @"item": @"danger" + }, + @"warning": @{ + @"value": [UIColor colorWithRed:1.000f green:0.929f blue:0.890f alpha:1.000f], + @"name": @"ColorBackgroundWarning", + @"category": @"color", + @"type": @"background", + @"item": @"warning" + }, + @"success": @{ + @"value": [UIColor colorWithRed:0.922f green:0.976f blue:0.922f alpha:1.000f], + @"name": @"ColorBackgroundSuccess", + @"category": @"color", + @"type": @"background", + @"item": @"success" + }, + @"info": @{ + @"value": [UIColor colorWithRed:0.914f green:0.973f blue:1.000f alpha:1.000f], + @"name": @"ColorBackgroundInfo", + @"category": @"color", + @"type": @"background", + @"item": @"info" + }, + @"disabled": @{ + @"value": [UIColor colorWithRed:0.871f green:0.882f blue:0.882f alpha:1.000f], + @"name": @"ColorBackgroundDisabled", + @"category": @"color", + @"type": @"background", + @"item": @"disabled" + } + }, + @"border": @{ + @"primary": @{ + @"value": [UIColor colorWithRed:0.784f green:0.800f blue:0.800f alpha:1.000f], + @"name": @"ColorBorderPrimary", + @"category": @"color", + @"type": @"border", + @"item": @"primary" + }, + @"secondary": @ + }, + @"tertiary": @ + } + }, + @"brand": @{ + @"primary": @{ + @"value": [UIColor colorWithRed:0.043f green:0.522f blue:0.600f alpha:1.000f], + @"name": @"ColorBrandPrimary", + @"category": @"color", + @"type": @"brand", + @"item": @"primary" + }, + @"secondary": @{ + @"value": [UIColor colorWithRed:0.435f green:0.369f blue:0.827f alpha:1.000f], + @"name": @"ColorBrandSecondary", + @"category": @"color", + @"type": @"brand", + @"item": @"secondary" + } + }, + @"core": @{ + @"green": @{ + @"0": @{ + @"value": [UIColor colorWithRed:0.922f green:0.976f blue:0.922f alpha:1.000f], + @"name": @"ColorCoreGreen0", + @"category": @"color", + @"type": @"core", + @"item": @"green", + @"subitem": @"0" + }, + @"100": @{ + @"value": [UIColor colorWithRed:0.843f green:0.957f blue:0.843f alpha:1.000f], + @"name": @"ColorCoreGreen100", + @"category": @"color", + @"type": @"core", + @"item": @"green", + @"subitem": @"100" + }, + @"200": @{ + @"value": [UIColor colorWithRed:0.761f green:0.949f blue:0.741f alpha:1.000f], + @"name": @"ColorCoreGreen200", + @"category": @"color", + @"type": @"core", + @"item": @"green", + @"subitem": @"200" + }, + @"300": @{ + @"value": [UIColor colorWithRed:0.596f green:0.898f blue:0.557f alpha:1.000f], + @"name": @"ColorCoreGreen300", + @"category": @"color", + @"type": @"core", + @"item": @"green", + @"subitem": @"300" + }, + @"400": @{ + @"value": [UIColor colorWithRed:0.459f green:0.867f blue:0.400f alpha:1.000f], + @"name": @"ColorCoreGreen400", + @"category": @"color", + @"type": @"core", + @"item": @"green", + @"subitem": @"400" + }, + @"500": @{ + @"value": [UIColor colorWithRed:0.349f green:0.796f blue:0.349f alpha:1.000f], + @"name": @"ColorCoreGreen500", + @"category": @"color", + @"type": @"core", + @"item": @"green", + @"subitem": @"500" + }, + @"600": @{ + @"value": [UIColor colorWithRed:0.169f green:0.714f blue:0.337f alpha:1.000f], + @"name": @"ColorCoreGreen600", + @"category": @"color", + @"type": @"core", + @"item": @"green", + @"subitem": @"600" + }, + @"700": @{ + @"value": [UIColor colorWithRed:0.047f green:0.655f blue:0.314f alpha:1.000f], + @"name": @"ColorCoreGreen700", + @"category": @"color", + @"type": @"core", + @"item": @"green", + @"subitem": @"700" + }, + @"800": @{ + @"value": [UIColor colorWithRed:0.000f green:0.545f blue:0.275f alpha:1.000f], + @"name": @"ColorCoreGreen800", + @"category": @"color", + @"type": @"core", + @"item": @"green", + @"subitem": @"800" + }, + @"900": @{ + @"value": [UIColor colorWithRed:0.000f green:0.420f blue:0.251f alpha:1.000f], + @"name": @"ColorCoreGreen900", + @"category": @"color", + @"type": @"core", + @"item": @"green", + @"subitem": @"900" + }, + @"1000": @{ + @"value": [UIColor colorWithRed:0.031f green:0.259f blue:0.184f alpha:1.000f], + @"name": @"ColorCoreGreen1000", + @"category": @"color", + @"type": @"core", + @"item": @"green", + @"subitem": @"1000" + }, + @"1100": @{ + @"value": [UIColor colorWithRed:0.000f green:0.169f blue:0.125f alpha:1.000f], + @"name": @"ColorCoreGreen1100", + @"category": @"color", + @"type": @"core", + @"item": @"green", + @"subitem": @"1100" + } + }, + @"teal": @{ + @"0": @{ + @"value": [UIColor colorWithRed:0.898f green:0.976f blue:0.961f alpha:1.000f], + @"name": @"ColorCoreTeal0", + @"category": @"color", + @"type": @"core", + @"item": @"teal", + @"subitem": @"0" + }, + @"100": @{ + @"value": [UIColor colorWithRed:0.804f green:0.969f blue:0.937f alpha:1.000f], + @"name": @"ColorCoreTeal100", + @"category": @"color", + @"type": @"core", + @"item": @"teal", + @"subitem": @"100" + }, + @"200": @{ + @"value": [UIColor colorWithRed:0.702f green:0.949f blue:0.902f alpha:1.000f], + @"name": @"ColorCoreTeal200", + @"category": @"color", + @"type": @"core", + @"item": @"teal", + @"subitem": @"200" + }, + @"300": @{ + @"value": [UIColor colorWithRed:0.490f green:0.918f blue:0.835f alpha:1.000f], + @"name": @"ColorCoreTeal300", + @"category": @"color", + @"type": @"core", + @"item": @"teal", + @"subitem": @"300" + }, + @"400": @{ + @"value": [UIColor colorWithRed:0.141f green:0.878f blue:0.773f alpha:1.000f], + @"name": @"ColorCoreTeal400", + @"category": @"color", + @"type": @"core", + @"item": @"teal", + @"subitem": @"400" + }, + @"500": @{ + @"value": [UIColor colorWithRed:0.031f green:0.769f blue:0.698f alpha:1.000f], + @"name": @"ColorCoreTeal500", + @"category": @"color", + @"type": @"core", + @"item": @"teal", + @"subitem": @"500" + }, + @"600": @{ + @"value": [UIColor colorWithRed:0.000f green:0.663f blue:0.612f alpha:1.000f], + @"name": @"ColorCoreTeal600", + @"category": @"color", + @"type": @"core", + @"item": @"teal", + @"subitem": @"600" + }, + @"700": @{ + @"value": [UIColor colorWithRed:0.043f green:0.588f blue:0.561f alpha:1.000f], + @"name": @"ColorCoreTeal700", + @"category": @"color", + @"type": @"core", + @"item": @"teal", + @"subitem": @"700" + }, + @"800": @{ + @"value": [UIColor colorWithRed:0.024f green:0.486f blue:0.486f alpha:1.000f], + @"name": @"ColorCoreTeal800", + @"category": @"color", + @"type": @"core", + @"item": @"teal", + @"subitem": @"800" + }, + @"900": @{ + @"value": [UIColor colorWithRed:0.008f green:0.400f blue:0.380f alpha:1.000f], + @"name": @"ColorCoreTeal900", + @"category": @"color", + @"type": @"core", + @"item": @"teal", + @"subitem": @"900" + }, + @"1000": @{ + @"value": [UIColor colorWithRed:0.031f green:0.247f blue:0.247f alpha:1.000f], + @"name": @"ColorCoreTeal1000", + @"category": @"color", + @"type": @"core", + @"item": @"teal", + @"subitem": @"1000" + }, + @"1100": @{ + @"value": [UIColor colorWithRed:0.000f green:0.145f blue:0.157f alpha:1.000f], + @"name": @"ColorCoreTeal1100", + @"category": @"color", + @"type": @"core", + @"item": @"teal", + @"subitem": @"1100" + } + }, + @"aqua": @{ + @"0": @{ + @"value": [UIColor colorWithRed:0.851f green:0.988f blue:0.984f alpha:1.000f], + @"name": @"ColorCoreAqua0", + @"category": @"color", + @"type": @"core", + @"item": @"aqua", + @"subitem": @"0" + }, + @"100": @{ + @"value": [UIColor colorWithRed:0.773f green:0.976f blue:0.976f alpha:1.000f], + @"name": @"ColorCoreAqua100", + @"category": @"color", + @"type": @"core", + @"item": @"aqua", + @"subitem": @"100" + }, + @"200": @{ + @"value": [UIColor colorWithRed:0.647f green:0.949f blue:0.949f alpha:1.000f], + @"name": @"ColorCoreAqua200", + @"category": @"color", + @"type": @"core", + @"item": @"aqua", + @"subitem": @"200" + }, + @"300": @{ + @"value": [UIColor colorWithRed:0.463f green:0.898f blue:0.886f alpha:1.000f], + @"name": @"ColorCoreAqua300", + @"category": @"color", + @"type": @"core", + @"item": @"aqua", + @"subitem": @"300" + }, + @"400": @{ + @"value": [UIColor colorWithRed:0.200f green:0.839f blue:0.886f alpha:1.000f], + @"name": @"ColorCoreAqua400", + @"category": @"color", + @"type": @"core", + @"item": @"aqua", + @"subitem": @"400" + }, + @"500": @{ + @"value": [UIColor colorWithRed:0.090f green:0.722f blue:0.808f alpha:1.000f], + @"name": @"ColorCoreAqua500", + @"category": @"color", + @"type": @"core", + @"item": @"aqua", + @"subitem": @"500" + }, + @"600": @{ + @"value": [UIColor colorWithRed:0.027f green:0.592f blue:0.682f alpha:1.000f], + @"name": @"ColorCoreAqua600", + @"category": @"color", + @"type": @"core", + @"item": @"aqua", + @"subitem": @"600" + }, + @"700": @{ + @"value": [UIColor colorWithRed:0.043f green:0.522f blue:0.600f alpha:1.000f], + @"name": @"ColorCoreAqua700", + @"category": @"color", + @"type": @"core", + @"item": @"aqua", + @"subitem": @"700" + }, + @"800": @{ + @"value": [UIColor colorWithRed:0.059f green:0.431f blue:0.518f alpha:1.000f], + @"name": @"ColorCoreAqua800", + @"category": @"color", + @"type": @"core", + @"item": @"aqua", + @"subitem": @"800" + }, + @"900": @{ + @"value": [UIColor colorWithRed:0.012f green:0.369f blue:0.451f alpha:1.000f], + @"name": @"ColorCoreAqua900", + @"category": @"color", + @"type": @"core", + @"item": @"aqua", + @"subitem": @"900" + }, + @"1000": @{ + @"value": [UIColor colorWithRed:0.031f green:0.239f blue:0.310f alpha:1.000f], + @"name": @"ColorCoreAqua1000", + @"category": @"color", + @"type": @"core", + @"item": @"aqua", + @"subitem": @"1000" + }, + @"1100": @{ + @"value": [UIColor colorWithRed:0.000f green:0.157f blue:0.220f alpha:1.000f], + @"name": @"ColorCoreAqua1100", + @"category": @"color", + @"type": @"core", + @"item": @"aqua", + @"subitem": @"1100" + } + }, + @"blue": @{ + @"0": @{ + @"value": [UIColor colorWithRed:0.914f green:0.973f blue:1.000f alpha:1.000f], + @"name": @"ColorCoreBlue0", + @"category": @"color", + @"type": @"core", + @"item": @"blue", + @"subitem": @"0" + }, + @"100": @{ + @"value": [UIColor colorWithRed:0.863f green:0.949f blue:1.000f alpha:1.000f], + @"name": @"ColorCoreBlue100", + @"category": @"color", + @"type": @"core", + @"item": @"blue", + @"subitem": @"100" + }, + @"200": @{ + @"value": [UIColor colorWithRed:0.780f green:0.894f blue:0.976f alpha:1.000f], + @"name": @"ColorCoreBlue200", + @"category": @"color", + @"type": @"core", + @"item": @"blue", + @"subitem": @"200" + }, + @"300": @{ + @"value": [UIColor colorWithRed:0.631f green:0.824f blue:0.973f alpha:1.000f], + @"name": @"ColorCoreBlue300", + @"category": @"color", + @"type": @"core", + @"item": @"blue", + @"subitem": @"300" + }, + @"400": @{ + @"value": [UIColor colorWithRed:0.337f green:0.678f blue:0.961f alpha:1.000f], + @"name": @"ColorCoreBlue400", + @"category": @"color", + @"type": @"core", + @"item": @"blue", + @"subitem": @"400" + }, + @"500": @{ + @"value": [UIColor colorWithRed:0.220f green:0.588f blue:0.890f alpha:1.000f], + @"name": @"ColorCoreBlue500", + @"category": @"color", + @"type": @"core", + @"item": @"blue", + @"subitem": @"500" + }, + @"600": @{ + @"value": [UIColor colorWithRed:0.169f green:0.529f blue:0.827f alpha:1.000f], + @"name": @"ColorCoreBlue600", + @"category": @"color", + @"type": @"core", + @"item": @"blue", + @"subitem": @"600" + }, + @"700": @{ + @"value": [UIColor colorWithRed:0.125f green:0.475f blue:0.765f alpha:1.000f], + @"name": @"ColorCoreBlue700", + @"category": @"color", + @"type": @"core", + @"item": @"blue", + @"subitem": @"700" + }, + @"800": @{ + @"value": [UIColor colorWithRed:0.067f green:0.427f blue:0.667f alpha:1.000f], + @"name": @"ColorCoreBlue800", + @"category": @"color", + @"type": @"core", + @"item": @"blue", + @"subitem": @"800" + }, + @"900": @{ + @"value": [UIColor colorWithRed:0.047f green:0.337f blue:0.537f alpha:1.000f], + @"name": @"ColorCoreBlue900", + @"category": @"color", + @"type": @"core", + @"item": @"blue", + @"subitem": @"900" + }, + @"1000": @{ + @"value": [UIColor colorWithRed:0.039f green:0.224f blue:0.376f alpha:1.000f], + @"name": @"ColorCoreBlue1000", + @"category": @"color", + @"type": @"core", + @"item": @"blue", + @"subitem": @"1000" + }, + @"1100": @{ + @"value": [UIColor colorWithRed:0.000f green:0.129f blue:0.220f alpha:1.000f], + @"name": @"ColorCoreBlue1100", + @"category": @"color", + @"type": @"core", + @"item": @"blue", + @"subitem": @"1100" + } + }, + @"purple": @{ + @"0": @{ + @"value": [UIColor colorWithRed:0.949f green:0.949f blue:0.976f alpha:1.000f], + @"name": @"ColorCorePurple0", + @"category": @"color", + @"type": @"core", + @"item": @"purple", + @"subitem": @"0" + }, + @"100": @{ + @"value": [UIColor colorWithRed:0.918f green:0.918f blue:0.976f alpha:1.000f], + @"name": @"ColorCorePurple100", + @"category": @"color", + @"type": @"core", + @"item": @"purple", + @"subitem": @"100" + }, + @"200": @{ + @"value": [UIColor colorWithRed:0.847f green:0.843f blue:0.976f alpha:1.000f], + @"name": @"ColorCorePurple200", + @"category": @"color", + @"type": @"core", + @"item": @"purple", + @"subitem": @"200" + }, + @"300": @{ + @"value": [UIColor colorWithRed:0.757f green:0.757f blue:0.969f alpha:1.000f], + @"name": @"ColorCorePurple300", + @"category": @"color", + @"type": @"core", + @"item": @"purple", + @"subitem": @"300" + }, + @"400": @{ + @"value": [UIColor colorWithRed:0.631f green:0.576f blue:0.949f alpha:1.000f], + @"name": @"ColorCorePurple400", + @"category": @"color", + @"type": @"core", + @"item": @"purple", + @"subitem": @"400" + }, + @"500": @{ + @"value": [UIColor colorWithRed:0.569f green:0.502f blue:0.957f alpha:1.000f], + @"name": @"ColorCorePurple500", + @"category": @"color", + @"type": @"core", + @"item": @"purple", + @"subitem": @"500" + }, + @"600": @{ + @"value": [UIColor colorWithRed:0.506f green:0.435f blue:0.918f alpha:1.000f], + @"name": @"ColorCorePurple600", + @"category": @"color", + @"type": @"core", + @"item": @"purple", + @"subitem": @"600" + }, + @"700": @{ + @"value": [UIColor colorWithRed:0.435f green:0.369f blue:0.827f alpha:1.000f], + @"name": @"ColorCorePurple700", + @"category": @"color", + @"type": @"core", + @"item": @"purple", + @"subitem": @"700" + }, + @"800": @{ + @"value": [UIColor colorWithRed:0.369f green:0.306f blue:0.729f alpha:1.000f], + @"name": @"ColorCorePurple800", + @"category": @"color", + @"type": @"core", + @"item": @"purple", + @"subitem": @"800" + }, + @"900": @{ + @"value": [UIColor colorWithRed:0.282f green:0.227f blue:0.612f alpha:1.000f], + @"name": @"ColorCorePurple900", + @"category": @"color", + @"type": @"core", + @"item": @"purple", + @"subitem": @"900" + }, + @"1000": @{ + @"value": [UIColor colorWithRed:0.176f green:0.141f blue:0.420f alpha:1.000f], + @"name": @"ColorCorePurple1000", + @"category": @"color", + @"type": @"core", + @"item": @"purple", + @"subitem": @"1000" + }, + @"1100": @{ + @"value": [UIColor colorWithRed:0.114f green:0.114f blue:0.220f alpha:1.000f], + @"name": @"ColorCorePurple1100", + @"category": @"color", + @"type": @"core", + @"item": @"purple", + @"subitem": @"1100" + } + }, + @"magenta": @{ + @"0": @{ + @"value": [UIColor colorWithRed:0.996f green:0.941f blue:1.000f alpha:1.000f], + @"name": @"ColorCoreMagenta0", + @"category": @"color", + @"type": @"core", + @"item": @"magenta", + @"subitem": @"0" + }, + @"100": @{ + @"value": [UIColor colorWithRed:0.976f green:0.890f blue:0.988f alpha:1.000f], + @"name": @"ColorCoreMagenta100", + @"category": @"color", + @"type": @"core", + @"item": @"magenta", + @"subitem": @"100" + }, + @"200": @{ + @"value": [UIColor colorWithRed:0.957f green:0.769f blue:0.969f alpha:1.000f], + @"name": @"ColorCoreMagenta200", + @"category": @"color", + @"type": @"core", + @"item": @"magenta", + @"subitem": @"200" + }, + @"300": @{ + @"value": [UIColor colorWithRed:0.929f green:0.678f blue:0.949f alpha:1.000f], + @"name": @"ColorCoreMagenta300", + @"category": @"color", + @"type": @"core", + @"item": @"magenta", + @"subitem": @"300" + }, + @"400": @{ + @"value": [UIColor colorWithRed:0.949f green:0.510f blue:0.961f alpha:1.000f], + @"name": @"ColorCoreMagenta400", + @"category": @"color", + @"type": @"core", + @"item": @"magenta", + @"subitem": @"400" + }, + @"500": @{ + @"value": [UIColor colorWithRed:0.859f green:0.380f blue:0.859f alpha:1.000f], + @"name": @"ColorCoreMagenta500", + @"category": @"color", + @"type": @"core", + @"item": @"magenta", + @"subitem": @"500" + }, + @"600": @{ + @"value": [UIColor colorWithRed:0.769f green:0.306f blue:0.725f alpha:1.000f], + @"name": @"ColorCoreMagenta600", + @"category": @"color", + @"type": @"core", + @"item": @"magenta", + @"subitem": @"600" + }, + @"700": @{ + @"value": [UIColor colorWithRed:0.675f green:0.267f blue:0.659f alpha:1.000f], + @"name": @"ColorCoreMagenta700", + @"category": @"color", + @"type": @"core", + @"item": @"magenta", + @"subitem": @"700" + }, + @"800": @{ + @"value": [UIColor colorWithRed:0.561f green:0.220f blue:0.588f alpha:1.000f], + @"name": @"ColorCoreMagenta800", + @"category": @"color", + @"type": @"core", + @"item": @"magenta", + @"subitem": @"800" + }, + @"900": @{ + @"value": [UIColor colorWithRed:0.424f green:0.133f blue:0.467f alpha:1.000f], + @"name": @"ColorCoreMagenta900", + @"category": @"color", + @"type": @"core", + @"item": @"magenta", + @"subitem": @"900" + }, + @"1000": @{ + @"value": [UIColor colorWithRed:0.271f green:0.082f blue:0.318f alpha:1.000f], + @"name": @"ColorCoreMagenta1000", + @"category": @"color", + @"type": @"core", + @"item": @"magenta", + @"subitem": @"1000" + }, + @"1100": @{ + @"value": [UIColor colorWithRed:0.161f green:0.098f blue:0.176f alpha:1.000f], + @"name": @"ColorCoreMagenta1100", + @"category": @"color", + @"type": @"core", + @"item": @"magenta", + @"subitem": @"1100" + } + }, + @"pink": @{ + @"0": @{ + @"value": [UIColor colorWithRed:1.000f green:0.914f blue:0.953f alpha:1.000f], + @"name": @"ColorCorePink0", + @"category": @"color", + @"type": @"core", + @"item": @"pink", + @"subitem": @"0" + }, + @"100": @{ + @"value": [UIColor colorWithRed:0.988f green:0.859f blue:0.922f alpha:1.000f], + @"name": @"ColorCorePink100", + @"category": @"color", + @"type": @"core", + @"item": @"pink", + @"subitem": @"100" + }, + @"200": @{ + @"value": [UIColor colorWithRed:1.000f green:0.710f blue:0.835f alpha:1.000f], + @"name": @"ColorCorePink200", + @"category": @"color", + @"type": @"core", + @"item": @"pink", + @"subitem": @"200" + }, + @"300": @{ + @"value": [UIColor colorWithRed:1.000f green:0.584f blue:0.757f alpha:1.000f], + @"name": @"ColorCorePink300", + @"category": @"color", + @"type": @"core", + @"item": @"pink", + @"subitem": @"300" + }, + @"400": @{ + @"value": [UIColor colorWithRed:1.000f green:0.463f blue:0.682f alpha:1.000f], + @"name": @"ColorCorePink400", + @"category": @"color", + @"type": @"core", + @"item": @"pink", + @"subitem": @"400" + }, + @"500": @{ + @"value": [UIColor colorWithRed:0.937f green:0.345f blue:0.545f alpha:1.000f], + @"name": @"ColorCorePink500", + @"category": @"color", + @"type": @"core", + @"item": @"pink", + @"subitem": @"500" + }, + @"600": @{ + @"value": [UIColor colorWithRed:0.878f green:0.267f blue:0.486f alpha:1.000f], + @"name": @"ColorCorePink600", + @"category": @"color", + @"type": @"core", + @"item": @"pink", + @"subitem": @"600" + }, + @"700": @{ + @"value": [UIColor colorWithRed:0.808f green:0.212f blue:0.396f alpha:1.000f], + @"name": @"ColorCorePink700", + @"category": @"color", + @"type": @"core", + @"item": @"pink", + @"subitem": @"700" + }, + @"800": @{ + @"value": [UIColor colorWithRed:0.698f green:0.184f blue:0.357f alpha:1.000f], + @"name": @"ColorCorePink800", + @"category": @"color", + @"type": @"core", + @"item": @"pink", + @"subitem": @"800" + }, + @"900": @{ + @"value": [UIColor colorWithRed:0.576f green:0.094f blue:0.278f alpha:1.000f], + @"name": @"ColorCorePink900", + @"category": @"color", + @"type": @"core", + @"item": @"pink", + @"subitem": @"900" + }, + @"1000": @{ + @"value": [UIColor colorWithRed:0.337f green:0.071f blue:0.192f alpha:1.000f], + @"name": @"ColorCorePink1000", + @"category": @"color", + @"type": @"core", + @"item": @"pink", + @"subitem": @"1000" + }, + @"1100": @{ + @"value": [UIColor colorWithRed:0.169f green:0.090f blue:0.129f alpha:1.000f], + @"name": @"ColorCorePink1100", + @"category": @"color", + @"type": @"core", + @"item": @"pink", + @"subitem": @"1100" + } + }, + @"red": @{ + @"0": @{ + @"value": [UIColor colorWithRed:1.000f green:0.918f blue:0.914f alpha:1.000f], + @"name": @"ColorCoreRed0", + @"category": @"color", + @"type": @"core", + @"item": @"red", + @"subitem": @"0" + }, + @"100": @{ + @"value": [UIColor colorWithRed:1.000f green:0.835f blue:0.824f alpha:1.000f], + @"name": @"ColorCoreRed100", + @"category": @"color", + @"type": @"core", + @"item": @"red", + @"subitem": @"100" + }, + @"200": @{ + @"value": [UIColor colorWithRed:1.000f green:0.722f blue:0.694f alpha:1.000f], + @"name": @"ColorCoreRed200", + @"category": @"color", + @"type": @"core", + @"item": @"red", + @"subitem": @"200" + }, + @"300": @{ + @"value": [UIColor colorWithRed:1.000f green:0.612f blue:0.561f alpha:1.000f], + @"name": @"ColorCoreRed300", + @"category": @"color", + @"type": @"core", + @"item": @"red", + @"subitem": @"300" + }, + @"400": @{ + @"value": [UIColor colorWithRed:1.000f green:0.498f blue:0.431f alpha:1.000f], + @"name": @"ColorCoreRed400", + @"category": @"color", + @"type": @"core", + @"item": @"red", + @"subitem": @"400" + }, + @"500": @{ + @"value": [UIColor colorWithRed:0.969f green:0.376f blue:0.329f alpha:1.000f], + @"name": @"ColorCoreRed500", + @"category": @"color", + @"type": @"core", + @"item": @"red", + @"subitem": @"500" + }, + @"600": @{ + @"value": [UIColor colorWithRed:0.929f green:0.298f blue:0.259f alpha:1.000f], + @"name": @"ColorCoreRed600", + @"category": @"color", + @"type": @"core", + @"item": @"red", + @"subitem": @"600" + }, + @"700": @{ + @"value": [UIColor colorWithRed:0.859f green:0.243f blue:0.243f alpha:1.000f], + @"name": @"ColorCoreRed700", + @"category": @"color", + @"type": @"core", + @"item": @"red", + @"subitem": @"700" + }, + @"800": @{ + @"value": [UIColor colorWithRed:0.776f green:0.204f blue:0.204f alpha:1.000f], + @"name": @"ColorCoreRed800", + @"category": @"color", + @"type": @"core", + @"item": @"red", + @"subitem": @"800" + }, + @"900": @{ + @"value": [UIColor colorWithRed:0.600f green:0.133f blue:0.133f alpha:1.000f], + @"name": @"ColorCoreRed900", + @"category": @"color", + @"type": @"core", + @"item": @"red", + @"subitem": @"900" + }, + @"1000": @{ + @"value": [UIColor colorWithRed:0.427f green:0.075f blue:0.075f alpha:1.000f], + @"name": @"ColorCoreRed1000", + @"category": @"color", + @"type": @"core", + @"item": @"red", + @"subitem": @"1000" + }, + @"1100": @{ + @"value": [UIColor colorWithRed:0.169f green:0.067f blue:0.067f alpha:1.000f], + @"name": @"ColorCoreRed1100", + @"category": @"color", + @"type": @"core", + @"item": @"red", + @"subitem": @"1100" + } + }, + @"orange": @{ + @"0": @{ + @"value": [UIColor colorWithRed:1.000f green:0.929f blue:0.890f alpha:1.000f], + @"name": @"ColorCoreOrange0", + @"category": @"color", + @"type": @"core", + @"item": @"orange", + @"subitem": @"0" + }, + @"100": @{ + @"value": [UIColor colorWithRed:0.988f green:0.863f blue:0.800f alpha:1.000f], + @"name": @"ColorCoreOrange100", + @"category": @"color", + @"type": @"core", + @"item": @"orange", + @"subitem": @"100" + }, + @"200": @{ + @"value": [UIColor colorWithRed:1.000f green:0.776f blue:0.643f alpha:1.000f], + @"name": @"ColorCoreOrange200", + @"category": @"color", + @"type": @"core", + @"item": @"orange", + @"subitem": @"200" + }, + @"300": @{ + @"value": [UIColor colorWithRed:1.000f green:0.694f blue:0.502f alpha:1.000f], + @"name": @"ColorCoreOrange300", + @"category": @"color", + @"type": @"core", + @"item": @"orange", + @"subitem": @"300" + }, + @"400": @{ + @"value": [UIColor colorWithRed:1.000f green:0.612f blue:0.365f alpha:1.000f], + @"name": @"ColorCoreOrange400", + @"category": @"color", + @"type": @"core", + @"item": @"orange", + @"subitem": @"400" + }, + @"500": @{ + @"value": [UIColor colorWithRed:0.988f green:0.537f blue:0.263f alpha:1.000f], + @"name": @"ColorCoreOrange500", + @"category": @"color", + @"type": @"core", + @"item": @"orange", + @"subitem": @"500" + }, + @"600": @{ + @"value": [UIColor colorWithRed:0.961f green:0.490f blue:0.200f alpha:1.000f], + @"name": @"ColorCoreOrange600", + @"category": @"color", + @"type": @"core", + @"item": @"orange", + @"subitem": @"600" + }, + @"700": @{ + @"value": [UIColor colorWithRed:0.929f green:0.439f blue:0.141f alpha:1.000f], + @"name": @"ColorCoreOrange700", + @"category": @"color", + @"type": @"core", + @"item": @"orange", + @"subitem": @"700" + }, + @"800": @{ + @"value": [UIColor colorWithRed:0.808f green:0.333f blue:0.067f alpha:1.000f], + @"name": @"ColorCoreOrange800", + @"category": @"color", + @"type": @"core", + @"item": @"orange", + @"subitem": @"800" + }, + @"900": @{ + @"value": [UIColor colorWithRed:0.588f green:0.173f blue:0.043f alpha:1.000f], + @"name": @"ColorCoreOrange900", + @"category": @"color", + @"type": @"core", + @"item": @"orange", + @"subitem": @"900" + }, + @"1000": @{ + @"value": [UIColor colorWithRed:0.376f green:0.090f blue:0.000f alpha:1.000f], + @"name": @"ColorCoreOrange1000", + @"category": @"color", + @"type": @"core", + @"item": @"orange", + @"subitem": @"1000" + }, + @"1100": @{ + @"value": [UIColor colorWithRed:0.176f green:0.075f blue:0.055f alpha:1.000f], + @"name": @"ColorCoreOrange1100", + @"category": @"color", + @"type": @"core", + @"item": @"orange", + @"subitem": @"1100" + } + }, + @"neutral": @{ + @"0": @{ + @"value": [UIColor colorWithRed:1.000f green:1.000f blue:1.000f alpha:1.000f], + @"name": @"ColorCoreNeutral0", + @"category": @"color", + @"type": @"core", + @"item": @"neutral", + @"subitem": @"0" + }, + @"100": @{ + @"value": [UIColor colorWithRed:0.953f green:0.957f blue:0.957f alpha:1.000f], + @"name": @"ColorCoreNeutral100", + @"category": @"color", + @"type": @"core", + @"item": @"neutral", + @"subitem": @"100" + }, + @"200": @{ + @"value": [UIColor colorWithRed:0.871f green:0.882f blue:0.882f alpha:1.000f], + @"name": @"ColorCoreNeutral200", + @"category": @"color", + @"type": @"core", + @"item": @"neutral", + @"subitem": @"200" + }, + @"300": @{ + @"value": [UIColor colorWithRed:0.784f green:0.800f blue:0.800f alpha:1.000f], + @"name": @"ColorCoreNeutral300", + @"category": @"color", + @"type": @"core", + @"item": @"neutral", + @"subitem": @"300" + }, + @"400": @{ + @"value": [UIColor colorWithRed:0.690f green:0.714f blue:0.718f alpha:1.000f], + @"name": @"ColorCoreNeutral400", + @"category": @"color", + @"type": @"core", + @"item": @"neutral", + @"subitem": @"400" + }, + @"500": @{ + @"value": [UIColor colorWithRed:0.573f green:0.604f blue:0.608f alpha:1.000f], + @"name": @"ColorCoreNeutral500", + @"category": @"color", + @"type": @"core", + @"item": @"neutral", + @"subitem": @"500" + }, + @"600": @{ + @"value": [UIColor colorWithRed:0.431f green:0.475f blue:0.478f alpha:1.000f], + @"name": @"ColorCoreNeutral600", + @"category": @"color", + @"type": @"core", + @"item": @"neutral", + @"subitem": @"600" + }, + @"700": @{ + @"value": [UIColor colorWithRed:0.318f green:0.369f blue:0.373f alpha:1.000f], + @"name": @"ColorCoreNeutral700", + @"category": @"color", + @"type": @"core", + @"item": @"neutral", + @"subitem": @"700" + }, + @"800": @{ + @"value": [UIColor colorWithRed:0.212f green:0.255f blue:0.255f alpha:1.000f], + @"name": @"ColorCoreNeutral800", + @"category": @"color", + @"type": @"core", + @"item": @"neutral", + @"subitem": @"800" + }, + @"900": @{ + @"value": [UIColor colorWithRed:0.153f green:0.200f blue:0.200f alpha:1.000f], + @"name": @"ColorCoreNeutral900", + @"category": @"color", + @"type": @"core", + @"item": @"neutral", + @"subitem": @"900" + }, + @"1000": @{ + @"value": [UIColor colorWithRed:0.086f green:0.125f blue:0.125f alpha:1.000f], + @"name": @"ColorCoreNeutral1000", + @"category": @"color", + @"type": @"core", + @"item": @"neutral", + @"subitem": @"1000" + }, + @"1100": @{ + @"value": [UIColor colorWithRed:0.016f green:0.016f blue:0.016f alpha:1.000f], + @"name": @"ColorCoreNeutral1100", + @"category": @"color", + @"type": @"core", + @"item": @"neutral", + @"subitem": @"1100" + } + }, + @"yellow": @{ + @"0": @{ + @"value": [UIColor colorWithRed:1.000f green:0.973f blue:0.886f alpha:1.000f], + @"name": @"ColorCoreYellow0", + @"category": @"color", + @"type": @"core", + @"item": @"yellow", + @"subitem": @"0" + }, + @"100": @{ + @"value": [UIColor colorWithRed:0.992f green:0.937f blue:0.804f alpha:1.000f], + @"name": @"ColorCoreYellow100", + @"category": @"color", + @"type": @"core", + @"item": @"yellow", + @"subitem": @"100" + }, + @"200": @{ + @"value": [UIColor colorWithRed:1.000f green:0.914f blue:0.604f alpha:1.000f], + @"name": @"ColorCoreYellow200", + @"category": @"color", + @"type": @"core", + @"item": @"yellow", + @"subitem": @"200" + }, + @"300": @{ + @"value": [UIColor colorWithRed:1.000f green:0.882f blue:0.431f alpha:1.000f], + @"name": @"ColorCoreYellow300", + @"category": @"color", + @"type": @"core", + @"item": @"yellow", + @"subitem": @"300" + }, + @"400": @{ + @"value": [UIColor colorWithRed:1.000f green:0.851f blue:0.263f alpha:1.000f], + @"name": @"ColorCoreYellow400", + @"category": @"color", + @"type": @"core", + @"item": @"yellow", + @"subitem": @"400" + }, + @"500": @{ + @"value": [UIColor colorWithRed:1.000f green:0.804f blue:0.110f alpha:1.000f], + @"name": @"ColorCoreYellow500", + @"category": @"color", + @"type": @"core", + @"item": @"yellow", + @"subitem": @"500" + }, + @"600": @{ + @"value": [UIColor colorWithRed:1.000f green:0.737f blue:0.000f alpha:1.000f], + @"name": @"ColorCoreYellow600", + @"category": @"color", + @"type": @"core", + @"item": @"yellow", + @"subitem": @"600" + }, + @"700": @{ + @"value": [UIColor colorWithRed:0.867f green:0.600f blue:0.012f alpha:1.000f], + @"name": @"ColorCoreYellow700", + @"category": @"color", + @"type": @"core", + @"item": @"yellow", + @"subitem": @"700" + }, + @"800": @{ + @"value": [UIColor colorWithRed:0.729f green:0.459f blue:0.024f alpha:1.000f], + @"name": @"ColorCoreYellow800", + @"category": @"color", + @"type": @"core", + @"item": @"yellow", + @"subitem": @"800" + }, + @"900": @{ + @"value": [UIColor colorWithRed:0.580f green:0.298f blue:0.047f alpha:1.000f], + @"name": @"ColorCoreYellow900", + @"category": @"color", + @"type": @"core", + @"item": @"yellow", + @"subitem": @"900" + }, + @"1000": @{ + @"value": [UIColor colorWithRed:0.329f green:0.165f blue:0.000f alpha:1.000f], + @"name": @"ColorCoreYellow1000", + @"category": @"color", + @"type": @"core", + @"item": @"yellow", + @"subitem": @"1000" + }, + @"1100": @{ + @"value": [UIColor colorWithRed:0.176f green:0.102f blue:0.020f alpha:1.000f], + @"name": @"ColorCoreYellow1100", + @"category": @"color", + @"type": @"core", + @"item": @"yellow", + @"subitem": @"1100" + } + } + }, + @"font": @{ + @"primary": @{ + @"value": [UIColor colorWithRed:0.016f green:0.016f blue:0.016f alpha:1.000f], + @"name": @"ColorFontPrimary", + @"category": @"color", + @"type": @"font", + @"item": @"primary" + }, + @"secondary": @{ + @"value": [UIColor colorWithRed:0.153f green:0.200f blue:0.200f alpha:1.000f], + @"name": @"ColorFontSecondary", + @"category": @"color", + @"type": @"font", + @"item": @"secondary" + }, + @"tertiary": @{ + @"value": [UIColor colorWithRed:0.212f green:0.255f blue:0.255f alpha:1.000f], + @"name": @"ColorFontTertiary", + @"category": @"color", + @"type": @"font", + @"item": @"tertiary" + }, + @"interactive": @{ + @"_": @{ + @"value": [UIColor colorWithRed:0.043f green:0.522f blue:0.600f alpha:1.000f], + @"name": @"ColorFontInteractive", + @"category": @"color", + @"type": @"font", + @"item": @"interactive", + @"subitem": @"_" + }, + @"hover": @{ + @"value": [UIColor colorWithRed:0.043f green:0.522f blue:0.600f alpha:1.000f], + @"name": @"ColorFontInteractiveHover", + @"category": @"color", + @"type": @"font", + @"item": @"interactive", + @"subitem": @"hover" + }, + @"active": @{ + @"value": [UIColor colorWithRed:0.435f green:0.369f blue:0.827f alpha:1.000f], + @"name": @"ColorFontInteractiveActive", + @"category": @"color", + @"type": @"font", + @"item": @"interactive", + @"subitem": @"active" + }, + @"disabled": @{ + @"value": [UIColor colorWithRed:0.212f green:0.255f blue:0.255f alpha:1.000f], + @"name": @"ColorFontInteractiveDisabled", + @"category": @"color", + @"type": @"font", + @"item": @"interactive", + @"subitem": @"disabled" + } + }, + @"danger": @{ + @"value": [UIColor colorWithRed:0.427f green:0.075f blue:0.075f alpha:1.000f], + @"name": @"ColorFontDanger", + @"category": @"color", + @"type": @"font", + @"item": @"danger" + }, + @"warning": @{ + @"value": [UIColor colorWithRed:0.376f green:0.090f blue:0.000f alpha:1.000f], + @"name": @"ColorFontWarning", + @"category": @"color", + @"type": @"font", + @"item": @"warning" + }, + @"success": @{ + @"value": [UIColor colorWithRed:0.031f green:0.259f blue:0.184f alpha:1.000f], + @"name": @"ColorFontSuccess", + @"category": @"color", + @"type": @"font", + @"item": @"success" + } + } + }, + @"size": @{ + @"border": @{ + @"radius": @{ + @"large": @{ + @"value": @480.00f, + @"name": @"SizeBorderRadiusLarge", + @"category": @"size", + @"type": @"border", + @"item": @"radius", + @"subitem": @"large" + } + } + }, + @"font": @{ + @"small": @{ + @"value": @12.00f, + @"name": @"SizeFontSmall", + @"category": @"size", + @"type": @"font", + @"item": @"small" + }, + @"medium": @{ + @"value": @16.00f, + @"name": @"SizeFontMedium", + @"category": @"size", + @"type": @"font", + @"item": @"medium" + }, + @"large": @{ + @"value": @24.00f, + @"name": @"SizeFontLarge", + @"category": @"size", + @"type": @"font", + @"item": @"large" + }, + @"xl": @{ + @"value": @36.00f, + @"name": @"SizeFontXl", + @"category": @"size", + @"type": @"font", + @"item": @"xl" + } + }, + @"padding": @{ + @"small": @{ + @"value": @8.00f, + @"name": @"SizePaddingSmall", + @"category": @"size", + @"type": @"padding", + @"item": @"small" + }, + @"medium": @{ + @"value": @16.00f, + @"name": @"SizePaddingMedium", + @"category": @"size", + @"type": @"padding", + @"item": @"medium" + }, + @"large": @{ + @"value": @16.00f, + @"name": @"SizePaddingLarge", + @"category": @"size", + @"type": @"padding", + @"item": @"large" + }, + @"xl": @{ + @"value": @16.00f, + @"name": @"SizePaddingXl", + @"category": @"size", + @"type": @"padding", + @"item": @"xl" + } + } + } + }; + }); + + return dictionary; +} + +@end + +`; +/* end snapshot ios/singleton.m should match snapshot */ + +snapshots["ios/singleton.h should match snapshot"] = +` +// +// singleton.h +// + +// Do not edit directly +// Generated on Sat, 01 Jan 2000 00:00:00 GMT + + +#import +#import + +@interface StyleDictionary : NSObject + ++ (NSDictionary *)properties; ++ (NSDictionary *)getProperty:(NSString *)keyPath; ++ (nonnull)getValue:(NSString *)keyPath; + +@end`; +/* end snapshot ios/singleton.h should match snapshot */ + +snapshots["ios/color.m should match snapshot"] = +` +// +// color.m +// + +// Do not edit directly +// Generated on Sat, 01 Jan 2000 00:00:00 GMT + + +#import "StyleDictionaryColor.h" + +@implementation StyleDictionaryColor + ++ (UIColor *)color:(StyleDictionaryColorName)colorEnum{ + return [[self values] objectAtIndex:colorEnum]; +} + ++ (NSArray *)values { + static NSArray* colorArray; + static dispatch_once_t onceToken; + + dispatch_once(&onceToken, ^{ + colorArray = @[ +[UIColor colorWithRed:1.000f green:1.000f blue:1.000f alpha:1.000f], +[UIColor colorWithRed:0.953f green:0.957f blue:0.957f alpha:1.000f], +[UIColor colorWithRed:0.871f green:0.882f blue:0.882f alpha:1.000f], +[UIColor colorWithRed:1.000f green:0.918f blue:0.914f alpha:1.000f], +[UIColor colorWithRed:1.000f green:0.929f blue:0.890f alpha:1.000f], +[UIColor colorWithRed:0.922f green:0.976f blue:0.922f alpha:1.000f], +[UIColor colorWithRed:0.914f green:0.973f blue:1.000f alpha:1.000f], +[UIColor colorWithRed:0.871f green:0.882f blue:0.882f alpha:1.000f], +[UIColor colorWithRed:0.784f green:0.800f blue:0.800f alpha:1.000f], +[UIColor colorWithRed:0.043f green:0.522f blue:0.600f alpha:1.000f], +[UIColor colorWithRed:0.435f green:0.369f blue:0.827f alpha:1.000f], +[UIColor colorWithRed:0.922f green:0.976f blue:0.922f alpha:1.000f], +[UIColor colorWithRed:0.843f green:0.957f blue:0.843f alpha:1.000f], +[UIColor colorWithRed:0.761f green:0.949f blue:0.741f alpha:1.000f], +[UIColor colorWithRed:0.596f green:0.898f blue:0.557f alpha:1.000f], +[UIColor colorWithRed:0.459f green:0.867f blue:0.400f alpha:1.000f], +[UIColor colorWithRed:0.349f green:0.796f blue:0.349f alpha:1.000f], +[UIColor colorWithRed:0.169f green:0.714f blue:0.337f alpha:1.000f], +[UIColor colorWithRed:0.047f green:0.655f blue:0.314f alpha:1.000f], +[UIColor colorWithRed:0.000f green:0.545f blue:0.275f alpha:1.000f], +[UIColor colorWithRed:0.000f green:0.420f blue:0.251f alpha:1.000f], +[UIColor colorWithRed:0.031f green:0.259f blue:0.184f alpha:1.000f], +[UIColor colorWithRed:0.000f green:0.169f blue:0.125f alpha:1.000f], +[UIColor colorWithRed:0.898f green:0.976f blue:0.961f alpha:1.000f], +[UIColor colorWithRed:0.804f green:0.969f blue:0.937f alpha:1.000f], +[UIColor colorWithRed:0.702f green:0.949f blue:0.902f alpha:1.000f], +[UIColor colorWithRed:0.490f green:0.918f blue:0.835f alpha:1.000f], +[UIColor colorWithRed:0.141f green:0.878f blue:0.773f alpha:1.000f], +[UIColor colorWithRed:0.031f green:0.769f blue:0.698f alpha:1.000f], +[UIColor colorWithRed:0.000f green:0.663f blue:0.612f alpha:1.000f], +[UIColor colorWithRed:0.043f green:0.588f blue:0.561f alpha:1.000f], +[UIColor colorWithRed:0.024f green:0.486f blue:0.486f alpha:1.000f], +[UIColor colorWithRed:0.008f green:0.400f blue:0.380f alpha:1.000f], +[UIColor colorWithRed:0.031f green:0.247f blue:0.247f alpha:1.000f], +[UIColor colorWithRed:0.000f green:0.145f blue:0.157f alpha:1.000f], +[UIColor colorWithRed:0.851f green:0.988f blue:0.984f alpha:1.000f], +[UIColor colorWithRed:0.773f green:0.976f blue:0.976f alpha:1.000f], +[UIColor colorWithRed:0.647f green:0.949f blue:0.949f alpha:1.000f], +[UIColor colorWithRed:0.463f green:0.898f blue:0.886f alpha:1.000f], +[UIColor colorWithRed:0.200f green:0.839f blue:0.886f alpha:1.000f], +[UIColor colorWithRed:0.090f green:0.722f blue:0.808f alpha:1.000f], +[UIColor colorWithRed:0.027f green:0.592f blue:0.682f alpha:1.000f], +[UIColor colorWithRed:0.043f green:0.522f blue:0.600f alpha:1.000f], +[UIColor colorWithRed:0.059f green:0.431f blue:0.518f alpha:1.000f], +[UIColor colorWithRed:0.012f green:0.369f blue:0.451f alpha:1.000f], +[UIColor colorWithRed:0.031f green:0.239f blue:0.310f alpha:1.000f], +[UIColor colorWithRed:0.000f green:0.157f blue:0.220f alpha:1.000f], +[UIColor colorWithRed:0.914f green:0.973f blue:1.000f alpha:1.000f], +[UIColor colorWithRed:0.863f green:0.949f blue:1.000f alpha:1.000f], +[UIColor colorWithRed:0.780f green:0.894f blue:0.976f alpha:1.000f], +[UIColor colorWithRed:0.631f green:0.824f blue:0.973f alpha:1.000f], +[UIColor colorWithRed:0.337f green:0.678f blue:0.961f alpha:1.000f], +[UIColor colorWithRed:0.220f green:0.588f blue:0.890f alpha:1.000f], +[UIColor colorWithRed:0.169f green:0.529f blue:0.827f alpha:1.000f], +[UIColor colorWithRed:0.125f green:0.475f blue:0.765f alpha:1.000f], +[UIColor colorWithRed:0.067f green:0.427f blue:0.667f alpha:1.000f], +[UIColor colorWithRed:0.047f green:0.337f blue:0.537f alpha:1.000f], +[UIColor colorWithRed:0.039f green:0.224f blue:0.376f alpha:1.000f], +[UIColor colorWithRed:0.000f green:0.129f blue:0.220f alpha:1.000f], +[UIColor colorWithRed:0.949f green:0.949f blue:0.976f alpha:1.000f], +[UIColor colorWithRed:0.918f green:0.918f blue:0.976f alpha:1.000f], +[UIColor colorWithRed:0.847f green:0.843f blue:0.976f alpha:1.000f], +[UIColor colorWithRed:0.757f green:0.757f blue:0.969f alpha:1.000f], +[UIColor colorWithRed:0.631f green:0.576f blue:0.949f alpha:1.000f], +[UIColor colorWithRed:0.569f green:0.502f blue:0.957f alpha:1.000f], +[UIColor colorWithRed:0.506f green:0.435f blue:0.918f alpha:1.000f], +[UIColor colorWithRed:0.435f green:0.369f blue:0.827f alpha:1.000f], +[UIColor colorWithRed:0.369f green:0.306f blue:0.729f alpha:1.000f], +[UIColor colorWithRed:0.282f green:0.227f blue:0.612f alpha:1.000f], +[UIColor colorWithRed:0.176f green:0.141f blue:0.420f alpha:1.000f], +[UIColor colorWithRed:0.114f green:0.114f blue:0.220f alpha:1.000f], +[UIColor colorWithRed:0.996f green:0.941f blue:1.000f alpha:1.000f], +[UIColor colorWithRed:0.976f green:0.890f blue:0.988f alpha:1.000f], +[UIColor colorWithRed:0.957f green:0.769f blue:0.969f alpha:1.000f], +[UIColor colorWithRed:0.929f green:0.678f blue:0.949f alpha:1.000f], +[UIColor colorWithRed:0.949f green:0.510f blue:0.961f alpha:1.000f], +[UIColor colorWithRed:0.859f green:0.380f blue:0.859f alpha:1.000f], +[UIColor colorWithRed:0.769f green:0.306f blue:0.725f alpha:1.000f], +[UIColor colorWithRed:0.675f green:0.267f blue:0.659f alpha:1.000f], +[UIColor colorWithRed:0.561f green:0.220f blue:0.588f alpha:1.000f], +[UIColor colorWithRed:0.424f green:0.133f blue:0.467f alpha:1.000f], +[UIColor colorWithRed:0.271f green:0.082f blue:0.318f alpha:1.000f], +[UIColor colorWithRed:0.161f green:0.098f blue:0.176f alpha:1.000f], +[UIColor colorWithRed:1.000f green:0.914f blue:0.953f alpha:1.000f], +[UIColor colorWithRed:0.988f green:0.859f blue:0.922f alpha:1.000f], +[UIColor colorWithRed:1.000f green:0.710f blue:0.835f alpha:1.000f], +[UIColor colorWithRed:1.000f green:0.584f blue:0.757f alpha:1.000f], +[UIColor colorWithRed:1.000f green:0.463f blue:0.682f alpha:1.000f], +[UIColor colorWithRed:0.937f green:0.345f blue:0.545f alpha:1.000f], +[UIColor colorWithRed:0.878f green:0.267f blue:0.486f alpha:1.000f], +[UIColor colorWithRed:0.808f green:0.212f blue:0.396f alpha:1.000f], +[UIColor colorWithRed:0.698f green:0.184f blue:0.357f alpha:1.000f], +[UIColor colorWithRed:0.576f green:0.094f blue:0.278f alpha:1.000f], +[UIColor colorWithRed:0.337f green:0.071f blue:0.192f alpha:1.000f], +[UIColor colorWithRed:0.169f green:0.090f blue:0.129f alpha:1.000f], +[UIColor colorWithRed:1.000f green:0.918f blue:0.914f alpha:1.000f], +[UIColor colorWithRed:1.000f green:0.835f blue:0.824f alpha:1.000f], +[UIColor colorWithRed:1.000f green:0.722f blue:0.694f alpha:1.000f], +[UIColor colorWithRed:1.000f green:0.612f blue:0.561f alpha:1.000f], +[UIColor colorWithRed:1.000f green:0.498f blue:0.431f alpha:1.000f], +[UIColor colorWithRed:0.969f green:0.376f blue:0.329f alpha:1.000f], +[UIColor colorWithRed:0.929f green:0.298f blue:0.259f alpha:1.000f], +[UIColor colorWithRed:0.859f green:0.243f blue:0.243f alpha:1.000f], +[UIColor colorWithRed:0.776f green:0.204f blue:0.204f alpha:1.000f], +[UIColor colorWithRed:0.600f green:0.133f blue:0.133f alpha:1.000f], +[UIColor colorWithRed:0.427f green:0.075f blue:0.075f alpha:1.000f], +[UIColor colorWithRed:0.169f green:0.067f blue:0.067f alpha:1.000f], +[UIColor colorWithRed:1.000f green:0.929f blue:0.890f alpha:1.000f], +[UIColor colorWithRed:0.988f green:0.863f blue:0.800f alpha:1.000f], +[UIColor colorWithRed:1.000f green:0.776f blue:0.643f alpha:1.000f], +[UIColor colorWithRed:1.000f green:0.694f blue:0.502f alpha:1.000f], +[UIColor colorWithRed:1.000f green:0.612f blue:0.365f alpha:1.000f], +[UIColor colorWithRed:0.988f green:0.537f blue:0.263f alpha:1.000f], +[UIColor colorWithRed:0.961f green:0.490f blue:0.200f alpha:1.000f], +[UIColor colorWithRed:0.929f green:0.439f blue:0.141f alpha:1.000f], +[UIColor colorWithRed:0.808f green:0.333f blue:0.067f alpha:1.000f], +[UIColor colorWithRed:0.588f green:0.173f blue:0.043f alpha:1.000f], +[UIColor colorWithRed:0.376f green:0.090f blue:0.000f alpha:1.000f], +[UIColor colorWithRed:0.176f green:0.075f blue:0.055f alpha:1.000f], +[UIColor colorWithRed:1.000f green:1.000f blue:1.000f alpha:1.000f], +[UIColor colorWithRed:0.953f green:0.957f blue:0.957f alpha:1.000f], +[UIColor colorWithRed:0.871f green:0.882f blue:0.882f alpha:1.000f], +[UIColor colorWithRed:0.784f green:0.800f blue:0.800f alpha:1.000f], +[UIColor colorWithRed:0.690f green:0.714f blue:0.718f alpha:1.000f], +[UIColor colorWithRed:0.573f green:0.604f blue:0.608f alpha:1.000f], +[UIColor colorWithRed:0.431f green:0.475f blue:0.478f alpha:1.000f], +[UIColor colorWithRed:0.318f green:0.369f blue:0.373f alpha:1.000f], +[UIColor colorWithRed:0.212f green:0.255f blue:0.255f alpha:1.000f], +[UIColor colorWithRed:0.153f green:0.200f blue:0.200f alpha:1.000f], +[UIColor colorWithRed:0.086f green:0.125f blue:0.125f alpha:1.000f], +[UIColor colorWithRed:0.016f green:0.016f blue:0.016f alpha:1.000f], +[UIColor colorWithRed:1.000f green:0.973f blue:0.886f alpha:1.000f], +[UIColor colorWithRed:0.992f green:0.937f blue:0.804f alpha:1.000f], +[UIColor colorWithRed:1.000f green:0.914f blue:0.604f alpha:1.000f], +[UIColor colorWithRed:1.000f green:0.882f blue:0.431f alpha:1.000f], +[UIColor colorWithRed:1.000f green:0.851f blue:0.263f alpha:1.000f], +[UIColor colorWithRed:1.000f green:0.804f blue:0.110f alpha:1.000f], +[UIColor colorWithRed:1.000f green:0.737f blue:0.000f alpha:1.000f], +[UIColor colorWithRed:0.867f green:0.600f blue:0.012f alpha:1.000f], +[UIColor colorWithRed:0.729f green:0.459f blue:0.024f alpha:1.000f], +[UIColor colorWithRed:0.580f green:0.298f blue:0.047f alpha:1.000f], +[UIColor colorWithRed:0.329f green:0.165f blue:0.000f alpha:1.000f], +[UIColor colorWithRed:0.176f green:0.102f blue:0.020f alpha:1.000f], +[UIColor colorWithRed:0.016f green:0.016f blue:0.016f alpha:1.000f], +[UIColor colorWithRed:0.153f green:0.200f blue:0.200f alpha:1.000f], +[UIColor colorWithRed:0.212f green:0.255f blue:0.255f alpha:1.000f], +[UIColor colorWithRed:0.043f green:0.522f blue:0.600f alpha:1.000f], +[UIColor colorWithRed:0.043f green:0.522f blue:0.600f alpha:1.000f], +[UIColor colorWithRed:0.435f green:0.369f blue:0.827f alpha:1.000f], +[UIColor colorWithRed:0.212f green:0.255f blue:0.255f alpha:1.000f], +[UIColor colorWithRed:0.427f green:0.075f blue:0.075f alpha:1.000f], +[UIColor colorWithRed:0.376f green:0.090f blue:0.000f alpha:1.000f], +[UIColor colorWithRed:0.031f green:0.259f blue:0.184f alpha:1.000f] + ]; + }); + + return colorArray; +} + +@end`; +/* end snapshot ios/color.m should match snapshot */ + +snapshots["ios/color.h should match snapshot"] = +` +// +// color.h +// + +// Do not edit directly +// Generated on Sat, 01 Jan 2000 00:00:00 GMT + + +#import + +typedef NS_ENUM(NSInteger, StyleDictionaryColorName) { +ColorBackgroundPrimary, +ColorBackgroundSecondary, +ColorBackgroundTertiary, +ColorBackgroundDanger, +ColorBackgroundWarning, +ColorBackgroundSuccess, +ColorBackgroundInfo, +ColorBackgroundDisabled, +ColorBorderPrimary, +ColorBrandPrimary, +ColorBrandSecondary, +ColorCoreGreen0, +ColorCoreGreen100, +ColorCoreGreen200, +ColorCoreGreen300, +ColorCoreGreen400, +ColorCoreGreen500, +ColorCoreGreen600, +ColorCoreGreen700, +ColorCoreGreen800, +ColorCoreGreen900, +ColorCoreGreen1000, +ColorCoreGreen1100, +ColorCoreTeal0, +ColorCoreTeal100, +ColorCoreTeal200, +ColorCoreTeal300, +ColorCoreTeal400, +ColorCoreTeal500, +ColorCoreTeal600, +ColorCoreTeal700, +ColorCoreTeal800, +ColorCoreTeal900, +ColorCoreTeal1000, +ColorCoreTeal1100, +ColorCoreAqua0, +ColorCoreAqua100, +ColorCoreAqua200, +ColorCoreAqua300, +ColorCoreAqua400, +ColorCoreAqua500, +ColorCoreAqua600, +ColorCoreAqua700, +ColorCoreAqua800, +ColorCoreAqua900, +ColorCoreAqua1000, +ColorCoreAqua1100, +ColorCoreBlue0, +ColorCoreBlue100, +ColorCoreBlue200, +ColorCoreBlue300, +ColorCoreBlue400, +ColorCoreBlue500, +ColorCoreBlue600, +ColorCoreBlue700, +ColorCoreBlue800, +ColorCoreBlue900, +ColorCoreBlue1000, +ColorCoreBlue1100, +ColorCorePurple0, +ColorCorePurple100, +ColorCorePurple200, +ColorCorePurple300, +ColorCorePurple400, +ColorCorePurple500, +ColorCorePurple600, +ColorCorePurple700, +ColorCorePurple800, +ColorCorePurple900, +ColorCorePurple1000, +ColorCorePurple1100, +ColorCoreMagenta0, +ColorCoreMagenta100, +ColorCoreMagenta200, +ColorCoreMagenta300, +ColorCoreMagenta400, +ColorCoreMagenta500, +ColorCoreMagenta600, +ColorCoreMagenta700, +ColorCoreMagenta800, +ColorCoreMagenta900, +ColorCoreMagenta1000, +ColorCoreMagenta1100, +ColorCorePink0, +ColorCorePink100, +ColorCorePink200, +ColorCorePink300, +ColorCorePink400, +ColorCorePink500, +ColorCorePink600, +ColorCorePink700, +ColorCorePink800, +ColorCorePink900, +ColorCorePink1000, +ColorCorePink1100, +ColorCoreRed0, +ColorCoreRed100, +ColorCoreRed200, +ColorCoreRed300, +ColorCoreRed400, +ColorCoreRed500, +ColorCoreRed600, +ColorCoreRed700, +ColorCoreRed800, +ColorCoreRed900, +ColorCoreRed1000, +ColorCoreRed1100, +ColorCoreOrange0, +ColorCoreOrange100, +ColorCoreOrange200, +ColorCoreOrange300, +ColorCoreOrange400, +ColorCoreOrange500, +ColorCoreOrange600, +ColorCoreOrange700, +ColorCoreOrange800, +ColorCoreOrange900, +ColorCoreOrange1000, +ColorCoreOrange1100, +ColorCoreNeutral0, +ColorCoreNeutral100, +ColorCoreNeutral200, +ColorCoreNeutral300, +ColorCoreNeutral400, +ColorCoreNeutral500, +ColorCoreNeutral600, +ColorCoreNeutral700, +ColorCoreNeutral800, +ColorCoreNeutral900, +ColorCoreNeutral1000, +ColorCoreNeutral1100, +ColorCoreYellow0, +ColorCoreYellow100, +ColorCoreYellow200, +ColorCoreYellow300, +ColorCoreYellow400, +ColorCoreYellow500, +ColorCoreYellow600, +ColorCoreYellow700, +ColorCoreYellow800, +ColorCoreYellow900, +ColorCoreYellow1000, +ColorCoreYellow1100, +ColorFontPrimary, +ColorFontSecondary, +ColorFontTertiary, +ColorFontInteractive, +ColorFontInteractiveHover, +ColorFontInteractiveActive, +ColorFontInteractiveDisabled, +ColorFontDanger, +ColorFontWarning, +ColorFontSuccess +}; + +@interface StyleDictionaryColor : NSObject ++ (NSArray *)values; ++ (UIColor *)color:(StyleDictionaryColorName)color; +@end`; +/* end snapshot ios/color.h should match snapshot */ + +snapshots["ios/macros.h should match snapshot"] = +` +// +// macros.h +// + +// Do not edit directly +// Generated on Sat, 01 Jan 2000 00:00:00 GMT + + +#import +#import + +#define ColorBackgroundPrimary [UIColor colorWithRed:1.000f green:1.000f blue:1.000f alpha:1.000f] +#define ColorBackgroundSecondary [UIColor colorWithRed:0.953f green:0.957f blue:0.957f alpha:1.000f] +#define ColorBackgroundTertiary [UIColor colorWithRed:0.871f green:0.882f blue:0.882f alpha:1.000f] +#define ColorBackgroundDanger [UIColor colorWithRed:1.000f green:0.918f blue:0.914f alpha:1.000f] +#define ColorBackgroundWarning [UIColor colorWithRed:1.000f green:0.929f blue:0.890f alpha:1.000f] +#define ColorBackgroundSuccess [UIColor colorWithRed:0.922f green:0.976f blue:0.922f alpha:1.000f] +#define ColorBackgroundInfo [UIColor colorWithRed:0.914f green:0.973f blue:1.000f alpha:1.000f] +#define ColorBackgroundDisabled [UIColor colorWithRed:0.871f green:0.882f blue:0.882f alpha:1.000f] +#define ColorBorderPrimary [UIColor colorWithRed:0.784f green:0.800f blue:0.800f alpha:1.000f] +#define ColorBrandPrimary [UIColor colorWithRed:0.043f green:0.522f blue:0.600f alpha:1.000f] +#define ColorBrandSecondary [UIColor colorWithRed:0.435f green:0.369f blue:0.827f alpha:1.000f] +#define ColorCoreGreen0 [UIColor colorWithRed:0.922f green:0.976f blue:0.922f alpha:1.000f] +#define ColorCoreGreen100 [UIColor colorWithRed:0.843f green:0.957f blue:0.843f alpha:1.000f] +#define ColorCoreGreen200 [UIColor colorWithRed:0.761f green:0.949f blue:0.741f alpha:1.000f] +#define ColorCoreGreen300 [UIColor colorWithRed:0.596f green:0.898f blue:0.557f alpha:1.000f] +#define ColorCoreGreen400 [UIColor colorWithRed:0.459f green:0.867f blue:0.400f alpha:1.000f] +#define ColorCoreGreen500 [UIColor colorWithRed:0.349f green:0.796f blue:0.349f alpha:1.000f] +#define ColorCoreGreen600 [UIColor colorWithRed:0.169f green:0.714f blue:0.337f alpha:1.000f] +#define ColorCoreGreen700 [UIColor colorWithRed:0.047f green:0.655f blue:0.314f alpha:1.000f] +#define ColorCoreGreen800 [UIColor colorWithRed:0.000f green:0.545f blue:0.275f alpha:1.000f] +#define ColorCoreGreen900 [UIColor colorWithRed:0.000f green:0.420f blue:0.251f alpha:1.000f] +#define ColorCoreGreen1000 [UIColor colorWithRed:0.031f green:0.259f blue:0.184f alpha:1.000f] +#define ColorCoreGreen1100 [UIColor colorWithRed:0.000f green:0.169f blue:0.125f alpha:1.000f] +#define ColorCoreTeal0 [UIColor colorWithRed:0.898f green:0.976f blue:0.961f alpha:1.000f] +#define ColorCoreTeal100 [UIColor colorWithRed:0.804f green:0.969f blue:0.937f alpha:1.000f] +#define ColorCoreTeal200 [UIColor colorWithRed:0.702f green:0.949f blue:0.902f alpha:1.000f] +#define ColorCoreTeal300 [UIColor colorWithRed:0.490f green:0.918f blue:0.835f alpha:1.000f] +#define ColorCoreTeal400 [UIColor colorWithRed:0.141f green:0.878f blue:0.773f alpha:1.000f] +#define ColorCoreTeal500 [UIColor colorWithRed:0.031f green:0.769f blue:0.698f alpha:1.000f] +#define ColorCoreTeal600 [UIColor colorWithRed:0.000f green:0.663f blue:0.612f alpha:1.000f] +#define ColorCoreTeal700 [UIColor colorWithRed:0.043f green:0.588f blue:0.561f alpha:1.000f] +#define ColorCoreTeal800 [UIColor colorWithRed:0.024f green:0.486f blue:0.486f alpha:1.000f] +#define ColorCoreTeal900 [UIColor colorWithRed:0.008f green:0.400f blue:0.380f alpha:1.000f] +#define ColorCoreTeal1000 [UIColor colorWithRed:0.031f green:0.247f blue:0.247f alpha:1.000f] +#define ColorCoreTeal1100 [UIColor colorWithRed:0.000f green:0.145f blue:0.157f alpha:1.000f] +#define ColorCoreAqua0 [UIColor colorWithRed:0.851f green:0.988f blue:0.984f alpha:1.000f] +#define ColorCoreAqua100 [UIColor colorWithRed:0.773f green:0.976f blue:0.976f alpha:1.000f] +#define ColorCoreAqua200 [UIColor colorWithRed:0.647f green:0.949f blue:0.949f alpha:1.000f] +#define ColorCoreAqua300 [UIColor colorWithRed:0.463f green:0.898f blue:0.886f alpha:1.000f] +#define ColorCoreAqua400 [UIColor colorWithRed:0.200f green:0.839f blue:0.886f alpha:1.000f] +#define ColorCoreAqua500 [UIColor colorWithRed:0.090f green:0.722f blue:0.808f alpha:1.000f] +#define ColorCoreAqua600 [UIColor colorWithRed:0.027f green:0.592f blue:0.682f alpha:1.000f] +#define ColorCoreAqua700 [UIColor colorWithRed:0.043f green:0.522f blue:0.600f alpha:1.000f] +#define ColorCoreAqua800 [UIColor colorWithRed:0.059f green:0.431f blue:0.518f alpha:1.000f] +#define ColorCoreAqua900 [UIColor colorWithRed:0.012f green:0.369f blue:0.451f alpha:1.000f] +#define ColorCoreAqua1000 [UIColor colorWithRed:0.031f green:0.239f blue:0.310f alpha:1.000f] +#define ColorCoreAqua1100 [UIColor colorWithRed:0.000f green:0.157f blue:0.220f alpha:1.000f] +#define ColorCoreBlue0 [UIColor colorWithRed:0.914f green:0.973f blue:1.000f alpha:1.000f] +#define ColorCoreBlue100 [UIColor colorWithRed:0.863f green:0.949f blue:1.000f alpha:1.000f] +#define ColorCoreBlue200 [UIColor colorWithRed:0.780f green:0.894f blue:0.976f alpha:1.000f] +#define ColorCoreBlue300 [UIColor colorWithRed:0.631f green:0.824f blue:0.973f alpha:1.000f] +#define ColorCoreBlue400 [UIColor colorWithRed:0.337f green:0.678f blue:0.961f alpha:1.000f] +#define ColorCoreBlue500 [UIColor colorWithRed:0.220f green:0.588f blue:0.890f alpha:1.000f] +#define ColorCoreBlue600 [UIColor colorWithRed:0.169f green:0.529f blue:0.827f alpha:1.000f] +#define ColorCoreBlue700 [UIColor colorWithRed:0.125f green:0.475f blue:0.765f alpha:1.000f] +#define ColorCoreBlue800 [UIColor colorWithRed:0.067f green:0.427f blue:0.667f alpha:1.000f] +#define ColorCoreBlue900 [UIColor colorWithRed:0.047f green:0.337f blue:0.537f alpha:1.000f] +#define ColorCoreBlue1000 [UIColor colorWithRed:0.039f green:0.224f blue:0.376f alpha:1.000f] +#define ColorCoreBlue1100 [UIColor colorWithRed:0.000f green:0.129f blue:0.220f alpha:1.000f] +#define ColorCorePurple0 [UIColor colorWithRed:0.949f green:0.949f blue:0.976f alpha:1.000f] +#define ColorCorePurple100 [UIColor colorWithRed:0.918f green:0.918f blue:0.976f alpha:1.000f] +#define ColorCorePurple200 [UIColor colorWithRed:0.847f green:0.843f blue:0.976f alpha:1.000f] +#define ColorCorePurple300 [UIColor colorWithRed:0.757f green:0.757f blue:0.969f alpha:1.000f] +#define ColorCorePurple400 [UIColor colorWithRed:0.631f green:0.576f blue:0.949f alpha:1.000f] +#define ColorCorePurple500 [UIColor colorWithRed:0.569f green:0.502f blue:0.957f alpha:1.000f] +#define ColorCorePurple600 [UIColor colorWithRed:0.506f green:0.435f blue:0.918f alpha:1.000f] +#define ColorCorePurple700 [UIColor colorWithRed:0.435f green:0.369f blue:0.827f alpha:1.000f] +#define ColorCorePurple800 [UIColor colorWithRed:0.369f green:0.306f blue:0.729f alpha:1.000f] +#define ColorCorePurple900 [UIColor colorWithRed:0.282f green:0.227f blue:0.612f alpha:1.000f] +#define ColorCorePurple1000 [UIColor colorWithRed:0.176f green:0.141f blue:0.420f alpha:1.000f] +#define ColorCorePurple1100 [UIColor colorWithRed:0.114f green:0.114f blue:0.220f alpha:1.000f] +#define ColorCoreMagenta0 [UIColor colorWithRed:0.996f green:0.941f blue:1.000f alpha:1.000f] +#define ColorCoreMagenta100 [UIColor colorWithRed:0.976f green:0.890f blue:0.988f alpha:1.000f] +#define ColorCoreMagenta200 [UIColor colorWithRed:0.957f green:0.769f blue:0.969f alpha:1.000f] +#define ColorCoreMagenta300 [UIColor colorWithRed:0.929f green:0.678f blue:0.949f alpha:1.000f] +#define ColorCoreMagenta400 [UIColor colorWithRed:0.949f green:0.510f blue:0.961f alpha:1.000f] +#define ColorCoreMagenta500 [UIColor colorWithRed:0.859f green:0.380f blue:0.859f alpha:1.000f] +#define ColorCoreMagenta600 [UIColor colorWithRed:0.769f green:0.306f blue:0.725f alpha:1.000f] +#define ColorCoreMagenta700 [UIColor colorWithRed:0.675f green:0.267f blue:0.659f alpha:1.000f] +#define ColorCoreMagenta800 [UIColor colorWithRed:0.561f green:0.220f blue:0.588f alpha:1.000f] +#define ColorCoreMagenta900 [UIColor colorWithRed:0.424f green:0.133f blue:0.467f alpha:1.000f] +#define ColorCoreMagenta1000 [UIColor colorWithRed:0.271f green:0.082f blue:0.318f alpha:1.000f] +#define ColorCoreMagenta1100 [UIColor colorWithRed:0.161f green:0.098f blue:0.176f alpha:1.000f] +#define ColorCorePink0 [UIColor colorWithRed:1.000f green:0.914f blue:0.953f alpha:1.000f] +#define ColorCorePink100 [UIColor colorWithRed:0.988f green:0.859f blue:0.922f alpha:1.000f] +#define ColorCorePink200 [UIColor colorWithRed:1.000f green:0.710f blue:0.835f alpha:1.000f] +#define ColorCorePink300 [UIColor colorWithRed:1.000f green:0.584f blue:0.757f alpha:1.000f] +#define ColorCorePink400 [UIColor colorWithRed:1.000f green:0.463f blue:0.682f alpha:1.000f] +#define ColorCorePink500 [UIColor colorWithRed:0.937f green:0.345f blue:0.545f alpha:1.000f] +#define ColorCorePink600 [UIColor colorWithRed:0.878f green:0.267f blue:0.486f alpha:1.000f] +#define ColorCorePink700 [UIColor colorWithRed:0.808f green:0.212f blue:0.396f alpha:1.000f] +#define ColorCorePink800 [UIColor colorWithRed:0.698f green:0.184f blue:0.357f alpha:1.000f] +#define ColorCorePink900 [UIColor colorWithRed:0.576f green:0.094f blue:0.278f alpha:1.000f] +#define ColorCorePink1000 [UIColor colorWithRed:0.337f green:0.071f blue:0.192f alpha:1.000f] +#define ColorCorePink1100 [UIColor colorWithRed:0.169f green:0.090f blue:0.129f alpha:1.000f] +#define ColorCoreRed0 [UIColor colorWithRed:1.000f green:0.918f blue:0.914f alpha:1.000f] +#define ColorCoreRed100 [UIColor colorWithRed:1.000f green:0.835f blue:0.824f alpha:1.000f] +#define ColorCoreRed200 [UIColor colorWithRed:1.000f green:0.722f blue:0.694f alpha:1.000f] +#define ColorCoreRed300 [UIColor colorWithRed:1.000f green:0.612f blue:0.561f alpha:1.000f] +#define ColorCoreRed400 [UIColor colorWithRed:1.000f green:0.498f blue:0.431f alpha:1.000f] +#define ColorCoreRed500 [UIColor colorWithRed:0.969f green:0.376f blue:0.329f alpha:1.000f] +#define ColorCoreRed600 [UIColor colorWithRed:0.929f green:0.298f blue:0.259f alpha:1.000f] +#define ColorCoreRed700 [UIColor colorWithRed:0.859f green:0.243f blue:0.243f alpha:1.000f] +#define ColorCoreRed800 [UIColor colorWithRed:0.776f green:0.204f blue:0.204f alpha:1.000f] +#define ColorCoreRed900 [UIColor colorWithRed:0.600f green:0.133f blue:0.133f alpha:1.000f] +#define ColorCoreRed1000 [UIColor colorWithRed:0.427f green:0.075f blue:0.075f alpha:1.000f] +#define ColorCoreRed1100 [UIColor colorWithRed:0.169f green:0.067f blue:0.067f alpha:1.000f] +#define ColorCoreOrange0 [UIColor colorWithRed:1.000f green:0.929f blue:0.890f alpha:1.000f] +#define ColorCoreOrange100 [UIColor colorWithRed:0.988f green:0.863f blue:0.800f alpha:1.000f] +#define ColorCoreOrange200 [UIColor colorWithRed:1.000f green:0.776f blue:0.643f alpha:1.000f] +#define ColorCoreOrange300 [UIColor colorWithRed:1.000f green:0.694f blue:0.502f alpha:1.000f] +#define ColorCoreOrange400 [UIColor colorWithRed:1.000f green:0.612f blue:0.365f alpha:1.000f] +#define ColorCoreOrange500 [UIColor colorWithRed:0.988f green:0.537f blue:0.263f alpha:1.000f] +#define ColorCoreOrange600 [UIColor colorWithRed:0.961f green:0.490f blue:0.200f alpha:1.000f] +#define ColorCoreOrange700 [UIColor colorWithRed:0.929f green:0.439f blue:0.141f alpha:1.000f] +#define ColorCoreOrange800 [UIColor colorWithRed:0.808f green:0.333f blue:0.067f alpha:1.000f] +#define ColorCoreOrange900 [UIColor colorWithRed:0.588f green:0.173f blue:0.043f alpha:1.000f] +#define ColorCoreOrange1000 [UIColor colorWithRed:0.376f green:0.090f blue:0.000f alpha:1.000f] +#define ColorCoreOrange1100 [UIColor colorWithRed:0.176f green:0.075f blue:0.055f alpha:1.000f] +#define ColorCoreNeutral0 [UIColor colorWithRed:1.000f green:1.000f blue:1.000f alpha:1.000f] +#define ColorCoreNeutral100 [UIColor colorWithRed:0.953f green:0.957f blue:0.957f alpha:1.000f] +#define ColorCoreNeutral200 [UIColor colorWithRed:0.871f green:0.882f blue:0.882f alpha:1.000f] +#define ColorCoreNeutral300 [UIColor colorWithRed:0.784f green:0.800f blue:0.800f alpha:1.000f] +#define ColorCoreNeutral400 [UIColor colorWithRed:0.690f green:0.714f blue:0.718f alpha:1.000f] +#define ColorCoreNeutral500 [UIColor colorWithRed:0.573f green:0.604f blue:0.608f alpha:1.000f] +#define ColorCoreNeutral600 [UIColor colorWithRed:0.431f green:0.475f blue:0.478f alpha:1.000f] +#define ColorCoreNeutral700 [UIColor colorWithRed:0.318f green:0.369f blue:0.373f alpha:1.000f] +#define ColorCoreNeutral800 [UIColor colorWithRed:0.212f green:0.255f blue:0.255f alpha:1.000f] +#define ColorCoreNeutral900 [UIColor colorWithRed:0.153f green:0.200f blue:0.200f alpha:1.000f] +#define ColorCoreNeutral1000 [UIColor colorWithRed:0.086f green:0.125f blue:0.125f alpha:1.000f] +#define ColorCoreNeutral1100 [UIColor colorWithRed:0.016f green:0.016f blue:0.016f alpha:1.000f] +#define ColorCoreYellow0 [UIColor colorWithRed:1.000f green:0.973f blue:0.886f alpha:1.000f] +#define ColorCoreYellow100 [UIColor colorWithRed:0.992f green:0.937f blue:0.804f alpha:1.000f] +#define ColorCoreYellow200 [UIColor colorWithRed:1.000f green:0.914f blue:0.604f alpha:1.000f] +#define ColorCoreYellow300 [UIColor colorWithRed:1.000f green:0.882f blue:0.431f alpha:1.000f] +#define ColorCoreYellow400 [UIColor colorWithRed:1.000f green:0.851f blue:0.263f alpha:1.000f] +#define ColorCoreYellow500 [UIColor colorWithRed:1.000f green:0.804f blue:0.110f alpha:1.000f] +#define ColorCoreYellow600 [UIColor colorWithRed:1.000f green:0.737f blue:0.000f alpha:1.000f] +#define ColorCoreYellow700 [UIColor colorWithRed:0.867f green:0.600f blue:0.012f alpha:1.000f] +#define ColorCoreYellow800 [UIColor colorWithRed:0.729f green:0.459f blue:0.024f alpha:1.000f] +#define ColorCoreYellow900 [UIColor colorWithRed:0.580f green:0.298f blue:0.047f alpha:1.000f] +#define ColorCoreYellow1000 [UIColor colorWithRed:0.329f green:0.165f blue:0.000f alpha:1.000f] +#define ColorCoreYellow1100 [UIColor colorWithRed:0.176f green:0.102f blue:0.020f alpha:1.000f] +#define ColorFontPrimary [UIColor colorWithRed:0.016f green:0.016f blue:0.016f alpha:1.000f] +#define ColorFontSecondary [UIColor colorWithRed:0.153f green:0.200f blue:0.200f alpha:1.000f] +#define ColorFontTertiary [UIColor colorWithRed:0.212f green:0.255f blue:0.255f alpha:1.000f] +#define ColorFontInteractive [UIColor colorWithRed:0.043f green:0.522f blue:0.600f alpha:1.000f] +#define ColorFontInteractiveHover [UIColor colorWithRed:0.043f green:0.522f blue:0.600f alpha:1.000f] +#define ColorFontInteractiveActive [UIColor colorWithRed:0.435f green:0.369f blue:0.827f alpha:1.000f] +#define ColorFontInteractiveDisabled [UIColor colorWithRed:0.212f green:0.255f blue:0.255f alpha:1.000f] +#define ColorFontDanger [UIColor colorWithRed:0.427f green:0.075f blue:0.075f alpha:1.000f] +#define ColorFontWarning [UIColor colorWithRed:0.376f green:0.090f blue:0.000f alpha:1.000f] +#define ColorFontSuccess [UIColor colorWithRed:0.031f green:0.259f blue:0.184f alpha:1.000f] +#define SizeBorderRadiusLarge 480.00f +#define SizeFontSmall 12.00f +#define SizeFontMedium 16.00f +#define SizeFontLarge 24.00f +#define SizeFontXl 36.00f +#define SizePaddingSmall 8.00f +#define SizePaddingMedium 16.00f +#define SizePaddingLarge 16.00f +#define SizePaddingXl 16.00f +`; +/* end snapshot ios/macros.h should match snapshot */ + +snapshots["ios/static.h should match snapshot"] = +` +// static.h +// + +// Do not edit directly +// Generated on Sat, 01 Jan 2000 00:00:00 GMT + + +#import + + +extern CGFloat const SizeBorderRadiusLarge; +extern CGFloat const SizeFontSmall; +extern CGFloat const SizeFontMedium; +extern CGFloat const SizeFontLarge; +extern CGFloat const SizeFontXl; +extern CGFloat const SizePaddingSmall; +extern CGFloat const SizePaddingMedium; +extern CGFloat const SizePaddingLarge; +extern CGFloat const SizePaddingXl;`; +/* end snapshot ios/static.h should match snapshot */ + +snapshots["ios/static.m should match snapshot"] = +` +// +// static.m +// + +// Do not edit directly +// Generated on Sat, 01 Jan 2000 00:00:00 GMT + + +#import "StyleDictionaryStatic.h" + + +CGFloat const SizeBorderRadiusLarge = 480.00f; +CGFloat const SizeFontSmall = 12.00f; +CGFloat const SizeFontMedium = 16.00f; +CGFloat const SizeFontLarge = 24.00f; +CGFloat const SizeFontXl = 36.00f; +CGFloat const SizePaddingSmall = 8.00f; +CGFloat const SizePaddingMedium = 16.00f; +CGFloat const SizePaddingLarge = 16.00f; +CGFloat const SizePaddingXl = 16.00f;`; +/* end snapshot ios/static.m should match snapshot */ + diff --git a/__integration__/__snapshots__/nameCollisions.test.snap.js b/__integration__/__snapshots__/nameCollisions.test.snap.js new file mode 100644 index 000000000..142208ef9 --- /dev/null +++ b/__integration__/__snapshots__/nameCollisions.test.snap.js @@ -0,0 +1,15 @@ +/* @web/test-runner snapshot v1 */ +export const snapshots = {}; + +snapshots["integration name collisions should warn users of name collisions for flat files"] = +`⚠️ __integration__/build/variables.css +While building variables.css, token collisions were found; output may be unexpected. +Output name red was generated by: +color.red #f00 +color.background.red #f00 +This many-to-one issue is usually caused by some combination of: +* conflicting or similar paths/names in token definitions +* platform transforms/transformGroups affecting names, especially when removing specificity +* overly inclusive file filters`; +/* end snapshot integration name collisions should warn users of name collisions for flat files */ + diff --git a/__integration__/__snapshots__/objectValues.test.js.snap b/__integration__/__snapshots__/objectValues.test.js.snap deleted file mode 100644 index 63e155095..000000000 --- a/__integration__/__snapshots__/objectValues.test.js.snap +++ /dev/null @@ -1,121 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`integration object values css/variables border should match snapshot 1`] = ` -"/** - * Do not edit directly - * Generated on Sat, 01 Jan 2000 00:00:00 GMT - */ - -:root { - --border-primary: 0.125rem solid #ff0000; -} -" -`; - -exports[`integration object values css/variables border with references should match snapshot 1`] = ` -"/** - * Do not edit directly - * Generated on Sat, 01 Jan 2000 00:00:00 GMT - */ - -:root { - --border-primary: var(--size-border) solid var(--color-red); -} -" -`; - -exports[`integration object values css/variables hex syntax should match snapshot 1`] = ` -"/** - * Do not edit directly - * Generated on Sat, 01 Jan 2000 00:00:00 GMT - */ - -:root { - --color-red: #ff0000; - --color-green: #40bf40; -} -" -`; - -exports[`integration object values css/variables hex syntax with references should match snapshot 1`] = ` -"/** - * Do not edit directly - * Generated on Sat, 01 Jan 2000 00:00:00 GMT - */ - -:root { - --color-red: #ff0000; - --color-green: #40bf40; -} -" -`; - -exports[`integration object values css/variables hsl syntax should match snapshot 1`] = ` -"/** - * Do not edit directly - * Generated on Sat, 01 Jan 2000 00:00:00 GMT - */ - -:root { - --color-red: #ff0000; - --color-green: hsl(120, 50%, 50%); -} -" -`; - -exports[`integration object values css/variables hsl syntax with references should match snapshot 1`] = ` -"/** - * Do not edit directly - * Generated on Sat, 01 Jan 2000 00:00:00 GMT - */ - -:root { - --color-red: #ff0000; - --color-green: hsl(120, 50%, 50%); -} -" -`; - -exports[`integration object values css/variables shadow should match snapshot 1`] = ` -"/** - * Do not edit directly - * Generated on Sat, 01 Jan 2000 00:00:00 GMT - */ - -:root { - --shadow-light: #ff0000, #40bf40; - --shadow-dark: #40bf40, #ff0000; -} -" -`; - -exports[`integration object values css/variables shadow should match snapshot with references 1`] = ` -"/** - * Do not edit directly - * Generated on Sat, 01 Jan 2000 00:00:00 GMT - */ - -:root { - --shadow-light: var(--color-red), var(--color-green); - --shadow-dark: var(--color-green), var(--color-red); -} -" -`; - -exports[`integration object values scss/variables should match snapshot 1`] = ` -" -// Do not edit directly -// Generated on Sat, 01 Jan 2000 00:00:00 GMT - -$border-primary: 0.125rem solid #ff0000; -" -`; - -exports[`integration object values scss/variables with references should match snapshot 1`] = ` -" -// Do not edit directly -// Generated on Sat, 01 Jan 2000 00:00:00 GMT - -$border-primary: $size-border solid $color-red; -" -`; diff --git a/__integration__/__snapshots__/objectValues.test.snap.js b/__integration__/__snapshots__/objectValues.test.snap.js new file mode 100644 index 000000000..627af2e87 --- /dev/null +++ b/__integration__/__snapshots__/objectValues.test.snap.js @@ -0,0 +1,123 @@ +/* @web/test-runner snapshot v1 */ +export const snapshots = {}; + +snapshots["css/variables hsl syntax should match snapshot"] = +`/** + * Do not edit directly + * Generated on Sat, 01 Jan 2000 00:00:00 GMT + */ + +:root { + --color-red: #ff0000; + --color-green: hsl(120, 50%, 50%); +} +`; +/* end snapshot css/variables hsl syntax should match snapshot */ + +snapshots["css/variables hsl syntax with references should match snapshot"] = +`/** + * Do not edit directly + * Generated on Sat, 01 Jan 2000 00:00:00 GMT + */ + +:root { + --color-red: #ff0000; + --color-green: hsl(120, 50%, 50%); +} +`; +/* end snapshot css/variables hsl syntax with references should match snapshot */ + +snapshots["css/variables hex syntax should match snapshot"] = +`/** + * Do not edit directly + * Generated on Sat, 01 Jan 2000 00:00:00 GMT + */ + +:root { + --color-red: #ff0000; + --color-green: #40bf40; +} +`; +/* end snapshot css/variables hex syntax should match snapshot */ + +snapshots["css/variables hex syntax with references should match snapshot"] = +`/** + * Do not edit directly + * Generated on Sat, 01 Jan 2000 00:00:00 GMT + */ + +:root { + --color-red: #ff0000; + --color-green: #40bf40; +} +`; +/* end snapshot css/variables hex syntax with references should match snapshot */ + +snapshots["css/variables border should match snapshot"] = +`/** + * Do not edit directly + * Generated on Sat, 01 Jan 2000 00:00:00 GMT + */ + +:root { + --border-primary: 0.125rem solid #ff0000; +} +`; +/* end snapshot css/variables border should match snapshot */ + +snapshots["css/variables border with references should match snapshot"] = +`/** + * Do not edit directly + * Generated on Sat, 01 Jan 2000 00:00:00 GMT + */ + +:root { + --border-primary: var(--size-border) solid var(--color-red); +} +`; +/* end snapshot css/variables border with references should match snapshot */ + +snapshots["css/variables shadow should match snapshot"] = +`/** + * Do not edit directly + * Generated on Sat, 01 Jan 2000 00:00:00 GMT + */ + +:root { + --shadow-light: #ff0000, #40bf40; + --shadow-dark: #40bf40, #ff0000; +} +`; +/* end snapshot css/variables shadow should match snapshot */ + +snapshots["css/variables shadow should match snapshot with references"] = +`/** + * Do not edit directly + * Generated on Sat, 01 Jan 2000 00:00:00 GMT + */ + +:root { + --shadow-light: var(--color-red), var(--color-green); + --shadow-dark: var(--color-green), var(--color-red); +} +`; +/* end snapshot css/variables shadow should match snapshot with references */ + +snapshots["scss/variables should match snapshot"] = +` +// Do not edit directly +// Generated on Sat, 01 Jan 2000 00:00:00 GMT + +$border-primary: 0.125rem solid #ff0000; +`; +/* end snapshot scss/variables should match snapshot */ + +snapshots["scss/variables with references should match snapshot"] = +` +// Do not edit directly +// Generated on Sat, 01 Jan 2000 00:00:00 GMT + +$border-primary: $size-border solid $color-red; +`; +/* end snapshot scss/variables with references should match snapshot */ + diff --git a/__integration__/__snapshots__/outputReferences.test.snap.js b/__integration__/__snapshots__/outputReferences.test.snap.js new file mode 100644 index 000000000..a70256704 --- /dev/null +++ b/__integration__/__snapshots__/outputReferences.test.snap.js @@ -0,0 +1,16 @@ +/* @web/test-runner snapshot v1 */ +export const snapshots = {}; + +snapshots["integration output references should warn the user if filters out references"] = +`⚠️ __integration__/build/filteredVariables.css +While building filteredVariables.css, filtered out token references were found; output may be unexpected. Here are the references that are used but not defined in the file +color.core.neutral.100 +color.core.neutral.0 +color.core.neutral.200 +color.core.red.0 +color.core.orange.0 +color.core.green.0 +color.core.blue.0 +This is caused when combining a filter and \`outputReferences\`.`; +/* end snapshot integration output references should warn the user if filters out references */ + diff --git a/__integration__/__snapshots__/scss.test.js.snap b/__integration__/__snapshots__/scss.test.snap.js similarity index 98% rename from __integration__/__snapshots__/scss.test.js.snap rename to __integration__/__snapshots__/scss.test.snap.js index 2fab321f8..f2e25764e 100644 --- a/__integration__/__snapshots__/scss.test.js.snap +++ b/__integration__/__snapshots__/scss.test.snap.js @@ -1,11 +1,180 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP +/* @web/test-runner snapshot v1 */ +export const snapshots = {}; -exports[`integration scss scss/map-deep should match snapshot 1`] = ` -" -/** - * Do not edit directly - * Generated on Sat, 01 Jan 2000 00:00:00 GMT - */ +snapshots["scss/variables should match snapshot"] = +` +// Do not edit directly +// Generated on Sat, 01 Jan 2000 00:00:00 GMT + +$color-background-primary: #ffffff !default; +$color-background-secondary: #f3f4f4; +$color-background-tertiary: #dee1e1; +$color-background-danger: #ffeae9; +$color-background-warning: #ffede3; +$color-background-success: #ebf9eb; +$color-background-info: #e9f8ff; +$color-background-disabled: #dee1e1; +$color-border-primary: #c8cccc; +$color-brand-primary: #0b8599; +$color-brand-secondary: #6f5ed3; +$color-core-green-0: #ebf9eb; +$color-core-green-100: #d7f4d7; +$color-core-green-200: #c2f2bd; +$color-core-green-300: #98e58e; +$color-core-green-400: #75dd66; +$color-core-green-500: #59cb59; +$color-core-green-600: #2bb656; +$color-core-green-700: #0ca750; +$color-core-green-800: #008b46; +$color-core-green-900: #006b40; +$color-core-green-1000: #08422f; +$color-core-green-1100: #002b20; +$color-core-teal-0: #e5f9f5; +$color-core-teal-100: #cdf7ef; +$color-core-teal-200: #b3f2e6; +$color-core-teal-300: #7dead5; +$color-core-teal-400: #24e0c5; +$color-core-teal-500: #08c4b2; +$color-core-teal-600: #00a99c; +$color-core-teal-700: #0b968f; +$color-core-teal-800: #067c7c; +$color-core-teal-900: #026661; +$color-core-teal-1000: #083f3f; +$color-core-teal-1100: #002528; +$color-core-aqua-0: #d9fcfb; +$color-core-aqua-100: #c5f9f9; +$color-core-aqua-200: #a5f2f2; +$color-core-aqua-300: #76e5e2; +$color-core-aqua-400: #33d6e2; +$color-core-aqua-500: #17b8ce; +$color-core-aqua-600: #0797ae; +$color-core-aqua-700: #0b8599; +$color-core-aqua-800: #0f6e84; +$color-core-aqua-900: #035e73; +$color-core-aqua-1000: #083d4f; +$color-core-aqua-1100: #002838; +$color-core-blue-0: #e9f8ff; +$color-core-blue-100: #dcf2ff; +$color-core-blue-200: #c7e4f9; +$color-core-blue-300: #a1d2f8; +$color-core-blue-400: #56adf5; +$color-core-blue-500: #3896e3; +$color-core-blue-600: #2b87d3; +$color-core-blue-700: #2079c3; +$color-core-blue-800: #116daa; +$color-core-blue-900: #0c5689; +$color-core-blue-1000: #0a3960; +$color-core-blue-1100: #002138; +$color-core-purple-0: #f2f2f9; +$color-core-purple-100: #eaeaf9; +$color-core-purple-200: #d8d7f9; +$color-core-purple-300: #c1c1f7; +$color-core-purple-400: #a193f2; +$color-core-purple-500: #9180f4; +$color-core-purple-600: #816fea; +$color-core-purple-700: #6f5ed3; +$color-core-purple-800: #5e4eba; +$color-core-purple-900: #483a9c; +$color-core-purple-1000: #2d246b; +$color-core-purple-1100: #1d1d38; +$color-core-magenta-0: #fef0ff; +$color-core-magenta-100: #f9e3fc; +$color-core-magenta-200: #f4c4f7; +$color-core-magenta-300: #edadf2; +$color-core-magenta-400: #f282f5; +$color-core-magenta-500: #db61db; +$color-core-magenta-600: #c44eb9; +$color-core-magenta-700: #ac44a8; +$color-core-magenta-800: #8f3896; +$color-core-magenta-900: #6c2277; +$color-core-magenta-1000: #451551; +$color-core-magenta-1100: #29192d; +$color-core-pink-0: #ffe9f3; +$color-core-pink-100: #fcdbeb; +$color-core-pink-200: #ffb5d5; +$color-core-pink-300: #ff95c1; +$color-core-pink-400: #ff76ae; +$color-core-pink-500: #ef588b; +$color-core-pink-600: #e0447c; +$color-core-pink-700: #ce3665; +$color-core-pink-800: #b22f5b; +$color-core-pink-900: #931847; +$color-core-pink-1000: #561231; +$color-core-pink-1100: #2b1721; +$color-core-red-0: #ffeae9; +$color-core-red-100: #ffd5d2; +$color-core-red-200: #ffb8b1; +$color-core-red-300: #ff9c8f; +$color-core-red-400: #ff7f6e; +$color-core-red-500: #f76054; +$color-core-red-600: #ed4c42; +$color-core-red-700: #db3e3e; +$color-core-red-800: #c63434; +$color-core-red-900: #992222; +$color-core-red-1000: #6d1313; +$color-core-red-1100: #2b1111; +$color-core-orange-0: #ffede3; +$color-core-orange-100: #fcdccc; +$color-core-orange-200: #ffc6a4; +$color-core-orange-300: #ffb180; +$color-core-orange-400: #ff9c5d; +$color-core-orange-500: #fc8943; +$color-core-orange-600: #f57d33; +$color-core-orange-700: #ed7024; +$color-core-orange-800: #ce5511; +$color-core-orange-900: #962c0b; +$color-core-orange-1000: #601700; +$color-core-orange-1100: #2d130e; +$color-core-neutral-0: #ffffff; +$color-core-neutral-100: #f3f4f4; +$color-core-neutral-200: #dee1e1; +$color-core-neutral-300: #c8cccc; +$color-core-neutral-400: #b0b6b7; +$color-core-neutral-500: #929a9b; +$color-core-neutral-600: #6e797a; +$color-core-neutral-700: #515e5f; +$color-core-neutral-800: #364141; +$color-core-neutral-900: #273333; +$color-core-neutral-1000: #162020; +$color-core-neutral-1100: #040404; +$color-core-yellow-0: #fff8e2; +$color-core-yellow-100: #fdefcd; +$color-core-yellow-200: #ffe99a; +$color-core-yellow-300: #ffe16e; +$color-core-yellow-400: #ffd943; +$color-core-yellow-500: #ffcd1c; +$color-core-yellow-600: #ffbc00; +$color-core-yellow-700: #dd9903; +$color-core-yellow-800: #ba7506; +$color-core-yellow-900: #944c0c; +$color-core-yellow-1000: #542a00; +$color-core-yellow-1100: #2d1a05; +$color-font-primary: #040404; +$color-font-secondary: #273333; +$color-font-tertiary: #364141; +$color-font-interactive: #0b8599; +$color-font-interactive-hover: #0b8599; +$color-font-interactive-active: #6f5ed3; +$color-font-interactive-disabled: #364141; +$color-font-danger: #6d1313; +$color-font-warning: #601700; +$color-font-success: #08422f; +$size-border-radius-large: 30rem; +$size-font-small: 0.75rem; +$size-font-medium: 1rem; +$size-font-large: 1.5rem; +$size-font-xl: 2.25rem; +$size-padding-small: 0.5rem; +$size-padding-medium: 1rem; +$size-padding-large: 1rem; +$size-padding-xl: 1rem; +`; +/* end snapshot scss/variables should match snapshot */ + +snapshots["scss/variables with themeable should match snapshot"] = +` +// Do not edit directly +// Generated on Sat, 01 Jan 2000 00:00:00 GMT $color-background-primary: #ffffff !default; $color-background-secondary: #f3f4f4 !default; @@ -169,784 +338,537 @@ $size-padding-small: 0.5rem !default; $size-padding-medium: 1rem !default; $size-padding-large: 1rem !default; $size-padding-xl: 1rem !default; +`; +/* end snapshot scss/variables with themeable should match snapshot */ -$design-system-tokens: ( - 'color': ( - 'background': ( - 'primary': $color-background-primary, - 'secondary': $color-background-secondary, - 'tertiary': $color-background-tertiary, - 'danger': $color-background-danger, - 'warning': $color-background-warning, - 'success': $color-background-success, - 'info': $color-background-info, - 'disabled': $color-background-disabled - ), - 'border': ( - 'primary': $color-border-primary, - 'secondary': ( - - ), - 'tertiary': ( +snapshots["scss/variables with outputReferences should match snapshot"] = +` +// Do not edit directly +// Generated on Sat, 01 Jan 2000 00:00:00 GMT - ) - ), - 'brand': ( - 'primary': $color-brand-primary, - 'secondary': $color-brand-secondary - ), - 'core': ( - 'green': ( - '0': $color-core-green-0, - '100': $color-core-green-100, - '200': $color-core-green-200, - '300': $color-core-green-300, - '400': $color-core-green-400, - '500': $color-core-green-500, - '600': $color-core-green-600, - '700': $color-core-green-700, - '800': $color-core-green-800, - '900': $color-core-green-900, - '1000': $color-core-green-1000, - '1100': $color-core-green-1100 - ), - 'teal': ( - '0': $color-core-teal-0, - '100': $color-core-teal-100, - '200': $color-core-teal-200, - '300': $color-core-teal-300, - '400': $color-core-teal-400, - '500': $color-core-teal-500, - '600': $color-core-teal-600, - '700': $color-core-teal-700, - '800': $color-core-teal-800, - '900': $color-core-teal-900, - '1000': $color-core-teal-1000, - '1100': $color-core-teal-1100 - ), - 'aqua': ( - '0': $color-core-aqua-0, - '100': $color-core-aqua-100, - '200': $color-core-aqua-200, - '300': $color-core-aqua-300, - '400': $color-core-aqua-400, - '500': $color-core-aqua-500, - '600': $color-core-aqua-600, - '700': $color-core-aqua-700, - '800': $color-core-aqua-800, - '900': $color-core-aqua-900, - '1000': $color-core-aqua-1000, - '1100': $color-core-aqua-1100 - ), - 'blue': ( - '0': $color-core-blue-0, - '100': $color-core-blue-100, - '200': $color-core-blue-200, - '300': $color-core-blue-300, - '400': $color-core-blue-400, - '500': $color-core-blue-500, - '600': $color-core-blue-600, - '700': $color-core-blue-700, - '800': $color-core-blue-800, - '900': $color-core-blue-900, - '1000': $color-core-blue-1000, - '1100': $color-core-blue-1100 - ), - 'purple': ( - '0': $color-core-purple-0, - '100': $color-core-purple-100, - '200': $color-core-purple-200, - '300': $color-core-purple-300, - '400': $color-core-purple-400, - '500': $color-core-purple-500, - '600': $color-core-purple-600, - '700': $color-core-purple-700, - '800': $color-core-purple-800, - '900': $color-core-purple-900, - '1000': $color-core-purple-1000, - '1100': $color-core-purple-1100 - ), - 'magenta': ( - '0': $color-core-magenta-0, - '100': $color-core-magenta-100, - '200': $color-core-magenta-200, - '300': $color-core-magenta-300, - '400': $color-core-magenta-400, - '500': $color-core-magenta-500, - '600': $color-core-magenta-600, - '700': $color-core-magenta-700, - '800': $color-core-magenta-800, - '900': $color-core-magenta-900, - '1000': $color-core-magenta-1000, - '1100': $color-core-magenta-1100 - ), - 'pink': ( - '0': $color-core-pink-0, - '100': $color-core-pink-100, - '200': $color-core-pink-200, - '300': $color-core-pink-300, - '400': $color-core-pink-400, - '500': $color-core-pink-500, - '600': $color-core-pink-600, - '700': $color-core-pink-700, - '800': $color-core-pink-800, - '900': $color-core-pink-900, - '1000': $color-core-pink-1000, - '1100': $color-core-pink-1100 - ), - 'red': ( - '0': $color-core-red-0, - '100': $color-core-red-100, - '200': $color-core-red-200, - '300': $color-core-red-300, - '400': $color-core-red-400, - '500': $color-core-red-500, - '600': $color-core-red-600, - '700': $color-core-red-700, - '800': $color-core-red-800, - '900': $color-core-red-900, - '1000': $color-core-red-1000, - '1100': $color-core-red-1100 - ), - 'orange': ( - '0': $color-core-orange-0, - '100': $color-core-orange-100, - '200': $color-core-orange-200, - '300': $color-core-orange-300, - '400': $color-core-orange-400, - '500': $color-core-orange-500, - '600': $color-core-orange-600, - '700': $color-core-orange-700, - '800': $color-core-orange-800, - '900': $color-core-orange-900, - '1000': $color-core-orange-1000, - '1100': $color-core-orange-1100 - ), - 'neutral': ( - '0': $color-core-neutral-0, - '100': $color-core-neutral-100, - '200': $color-core-neutral-200, - '300': $color-core-neutral-300, - '400': $color-core-neutral-400, - '500': $color-core-neutral-500, - '600': $color-core-neutral-600, - '700': $color-core-neutral-700, - '800': $color-core-neutral-800, - '900': $color-core-neutral-900, - '1000': $color-core-neutral-1000, - '1100': $color-core-neutral-1100 - ), - 'yellow': ( - '0': $color-core-yellow-0, - '100': $color-core-yellow-100, - '200': $color-core-yellow-200, - '300': $color-core-yellow-300, - '400': $color-core-yellow-400, - '500': $color-core-yellow-500, - '600': $color-core-yellow-600, - '700': $color-core-yellow-700, - '800': $color-core-yellow-800, - '900': $color-core-yellow-900, - '1000': $color-core-yellow-1000, - '1100': $color-core-yellow-1100 - ) - ), - 'font': ( - 'primary': $color-font-primary, - 'secondary': $color-font-secondary, - 'tertiary': $color-font-tertiary, - 'interactive': ( - '_': $color-font-interactive, - 'hover': $color-font-interactive-hover, - 'active': $color-font-interactive-active, - 'disabled': $color-font-interactive-disabled - ), - 'danger': $color-font-danger, - 'warning': $color-font-warning, - 'success': $color-font-success - ) - ), - 'size': ( - 'border': ( - 'radius': ( - 'large': $size-border-radius-large - ) - ), - 'font': ( - 'small': $size-font-small, - 'medium': $size-font-medium, - 'large': $size-font-large, - 'xl': $size-font-xl - ), - 'padding': ( - 'small': $size-padding-small, - 'medium': $size-padding-medium, - 'large': $size-padding-large, - 'xl': $size-padding-xl - ) - ) -); -" -`; - -exports[`integration scss scss/map-deep with outputReferences should match snapshot 1`] = ` -" -/** - * Do not edit directly - * Generated on Sat, 01 Jan 2000 00:00:00 GMT - */ - -$size-padding-xl: 1rem !default; -$size-padding-large: 1rem !default; -$size-padding-medium: 1rem !default; -$size-padding-small: 0.5rem !default; -$size-font-xl: 2.25rem !default; -$size-font-large: 1.5rem !default; -$size-font-medium: 1rem !default; -$size-font-small: 0.75rem !default; -$size-border-radius-large: 30rem !default; -$color-core-yellow-1100: #2d1a05 !default; -$color-core-yellow-1000: #542a00 !default; -$color-core-yellow-900: #944c0c !default; -$color-core-yellow-800: #ba7506 !default; -$color-core-yellow-700: #dd9903 !default; -$color-core-yellow-600: #ffbc00 !default; -$color-core-yellow-500: #ffcd1c !default; -$color-core-yellow-400: #ffd943 !default; -$color-core-yellow-300: #ffe16e !default; -$color-core-yellow-200: #ffe99a !default; -$color-core-yellow-100: #fdefcd !default; -$color-core-yellow-0: #fff8e2 !default; -$color-core-neutral-1100: #040404 !default; -$color-core-neutral-1000: #162020 !default; -$color-core-neutral-900: #273333 !default; -$color-core-neutral-800: #364141 !default; -$color-core-neutral-700: #515e5f !default; -$color-core-neutral-600: #6e797a !default; -$color-core-neutral-500: #929a9b !default; -$color-core-neutral-400: #b0b6b7 !default; -$color-core-neutral-300: #c8cccc !default; -$color-core-neutral-200: #dee1e1 !default; -$color-core-neutral-100: #f3f4f4 !default; -$color-core-neutral-0: #ffffff !default; -$color-core-orange-1100: #2d130e !default; -$color-core-orange-1000: #601700 !default; -$color-core-orange-900: #962c0b !default; -$color-core-orange-800: #ce5511 !default; -$color-core-orange-700: #ed7024 !default; -$color-core-orange-600: #f57d33 !default; -$color-core-orange-500: #fc8943 !default; -$color-core-orange-400: #ff9c5d !default; -$color-core-orange-300: #ffb180 !default; -$color-core-orange-200: #ffc6a4 !default; -$color-core-orange-100: #fcdccc !default; -$color-core-orange-0: #ffede3 !default; -$color-core-red-1100: #2b1111 !default; -$color-core-red-1000: #6d1313 !default; -$color-core-red-900: #992222 !default; -$color-core-red-800: #c63434 !default; -$color-core-red-700: #db3e3e !default; -$color-core-red-600: #ed4c42 !default; -$color-core-red-500: #f76054 !default; -$color-core-red-400: #ff7f6e !default; -$color-core-red-300: #ff9c8f !default; -$color-core-red-200: #ffb8b1 !default; -$color-core-red-100: #ffd5d2 !default; -$color-core-red-0: #ffeae9 !default; -$color-core-pink-1100: #2b1721 !default; -$color-core-pink-1000: #561231 !default; -$color-core-pink-900: #931847 !default; -$color-core-pink-800: #b22f5b !default; -$color-core-pink-700: #ce3665 !default; -$color-core-pink-600: #e0447c !default; -$color-core-pink-500: #ef588b !default; -$color-core-pink-400: #ff76ae !default; -$color-core-pink-300: #ff95c1 !default; -$color-core-pink-200: #ffb5d5 !default; -$color-core-pink-100: #fcdbeb !default; -$color-core-pink-0: #ffe9f3 !default; -$color-core-magenta-1100: #29192d !default; -$color-core-magenta-1000: #451551 !default; -$color-core-magenta-900: #6c2277 !default; -$color-core-magenta-800: #8f3896 !default; -$color-core-magenta-700: #ac44a8 !default; -$color-core-magenta-600: #c44eb9 !default; -$color-core-magenta-500: #db61db !default; -$color-core-magenta-400: #f282f5 !default; -$color-core-magenta-300: #edadf2 !default; -$color-core-magenta-200: #f4c4f7 !default; -$color-core-magenta-100: #f9e3fc !default; -$color-core-magenta-0: #fef0ff !default; -$color-core-purple-1100: #1d1d38 !default; -$color-core-purple-1000: #2d246b !default; -$color-core-purple-900: #483a9c !default; -$color-core-purple-800: #5e4eba !default; -$color-core-purple-700: #6f5ed3 !default; -$color-core-purple-600: #816fea !default; -$color-core-purple-500: #9180f4 !default; -$color-core-purple-400: #a193f2 !default; -$color-core-purple-300: #c1c1f7 !default; -$color-core-purple-200: #d8d7f9 !default; -$color-core-purple-100: #eaeaf9 !default; -$color-core-purple-0: #f2f2f9 !default; -$color-core-blue-1100: #002138 !default; -$color-core-blue-1000: #0a3960 !default; -$color-core-blue-900: #0c5689 !default; -$color-core-blue-800: #116daa !default; -$color-core-blue-700: #2079c3 !default; -$color-core-blue-600: #2b87d3 !default; -$color-core-blue-500: #3896e3 !default; -$color-core-blue-400: #56adf5 !default; -$color-core-blue-300: #a1d2f8 !default; -$color-core-blue-200: #c7e4f9 !default; -$color-core-blue-100: #dcf2ff !default; -$color-core-blue-0: #e9f8ff !default; -$color-core-aqua-1100: #002838 !default; -$color-core-aqua-1000: #083d4f !default; -$color-core-aqua-900: #035e73 !default; -$color-core-aqua-800: #0f6e84 !default; -$color-core-aqua-700: #0b8599 !default; -$color-core-aqua-600: #0797ae !default; -$color-core-aqua-500: #17b8ce !default; -$color-core-aqua-400: #33d6e2 !default; -$color-core-aqua-300: #76e5e2 !default; -$color-core-aqua-200: #a5f2f2 !default; -$color-core-aqua-100: #c5f9f9 !default; -$color-core-aqua-0: #d9fcfb !default; -$color-core-teal-1100: #002528 !default; -$color-core-teal-1000: #083f3f !default; -$color-core-teal-900: #026661 !default; -$color-core-teal-800: #067c7c !default; -$color-core-teal-700: #0b968f !default; -$color-core-teal-600: #00a99c !default; -$color-core-teal-500: #08c4b2 !default; -$color-core-teal-400: #24e0c5 !default; -$color-core-teal-300: #7dead5 !default; -$color-core-teal-200: #b3f2e6 !default; -$color-core-teal-100: #cdf7ef !default; -$color-core-teal-0: #e5f9f5 !default; -$color-core-green-1100: #002b20 !default; -$color-core-green-1000: #08422f !default; -$color-core-green-900: #006b40 !default; -$color-core-green-800: #008b46 !default; -$color-core-green-700: #0ca750 !default; -$color-core-green-600: #2bb656 !default; -$color-core-green-500: #59cb59 !default; -$color-core-green-400: #75dd66 !default; -$color-core-green-300: #98e58e !default; -$color-core-green-200: #c2f2bd !default; -$color-core-green-100: #d7f4d7 !default; -$color-core-green-0: #ebf9eb !default; -$color-font-success: $color-core-green-1000 !default; -$color-font-warning: $color-core-orange-1000 !default; -$color-font-danger: $color-core-red-1000 !default; -$color-font-tertiary: $color-core-neutral-800 !default; -$color-font-secondary: $color-core-neutral-900 !default; -$color-font-primary: $color-core-neutral-1100 !default; -$color-brand-secondary: $color-core-purple-700 !default; -$color-brand-primary: $color-core-aqua-700 !default; -$color-border-primary: $color-core-neutral-300 !default; -$color-background-info: $color-core-blue-0 !default; -$color-background-success: $color-core-green-0 !default; -$color-background-warning: $color-core-orange-0 !default; -$color-background-danger: $color-core-red-0 !default; -$color-background-tertiary: $color-core-neutral-200 !default; -$color-background-secondary: $color-core-neutral-100 !default; -$color-background-primary: $color-core-neutral-0 !default; -$color-font-interactive-disabled: $color-font-tertiary !default; -$color-font-interactive-active: $color-brand-secondary !default; -$color-font-interactive-hover: $color-brand-primary !default; -$color-font-interactive: $color-brand-primary !default; -$color-background-disabled: $color-background-tertiary !default; - -$design-system-tokens: ( - 'color': ( - 'background': ( - 'primary': $color-background-primary, - 'secondary': $color-background-secondary, - 'tertiary': $color-background-tertiary, - 'danger': $color-background-danger, - 'warning': $color-background-warning, - 'success': $color-background-success, - 'info': $color-background-info, - 'disabled': $color-background-disabled - ), - 'border': ( - 'primary': $color-border-primary, - 'secondary': ( - - ), - 'tertiary': ( - - ) - ), - 'brand': ( - 'primary': $color-brand-primary, - 'secondary': $color-brand-secondary - ), - 'core': ( - 'green': ( - '0': $color-core-green-0, - '100': $color-core-green-100, - '200': $color-core-green-200, - '300': $color-core-green-300, - '400': $color-core-green-400, - '500': $color-core-green-500, - '600': $color-core-green-600, - '700': $color-core-green-700, - '800': $color-core-green-800, - '900': $color-core-green-900, - '1000': $color-core-green-1000, - '1100': $color-core-green-1100 - ), - 'teal': ( - '0': $color-core-teal-0, - '100': $color-core-teal-100, - '200': $color-core-teal-200, - '300': $color-core-teal-300, - '400': $color-core-teal-400, - '500': $color-core-teal-500, - '600': $color-core-teal-600, - '700': $color-core-teal-700, - '800': $color-core-teal-800, - '900': $color-core-teal-900, - '1000': $color-core-teal-1000, - '1100': $color-core-teal-1100 - ), - 'aqua': ( - '0': $color-core-aqua-0, - '100': $color-core-aqua-100, - '200': $color-core-aqua-200, - '300': $color-core-aqua-300, - '400': $color-core-aqua-400, - '500': $color-core-aqua-500, - '600': $color-core-aqua-600, - '700': $color-core-aqua-700, - '800': $color-core-aqua-800, - '900': $color-core-aqua-900, - '1000': $color-core-aqua-1000, - '1100': $color-core-aqua-1100 - ), - 'blue': ( - '0': $color-core-blue-0, - '100': $color-core-blue-100, - '200': $color-core-blue-200, - '300': $color-core-blue-300, - '400': $color-core-blue-400, - '500': $color-core-blue-500, - '600': $color-core-blue-600, - '700': $color-core-blue-700, - '800': $color-core-blue-800, - '900': $color-core-blue-900, - '1000': $color-core-blue-1000, - '1100': $color-core-blue-1100 - ), - 'purple': ( - '0': $color-core-purple-0, - '100': $color-core-purple-100, - '200': $color-core-purple-200, - '300': $color-core-purple-300, - '400': $color-core-purple-400, - '500': $color-core-purple-500, - '600': $color-core-purple-600, - '700': $color-core-purple-700, - '800': $color-core-purple-800, - '900': $color-core-purple-900, - '1000': $color-core-purple-1000, - '1100': $color-core-purple-1100 - ), - 'magenta': ( - '0': $color-core-magenta-0, - '100': $color-core-magenta-100, - '200': $color-core-magenta-200, - '300': $color-core-magenta-300, - '400': $color-core-magenta-400, - '500': $color-core-magenta-500, - '600': $color-core-magenta-600, - '700': $color-core-magenta-700, - '800': $color-core-magenta-800, - '900': $color-core-magenta-900, - '1000': $color-core-magenta-1000, - '1100': $color-core-magenta-1100 - ), - 'pink': ( - '0': $color-core-pink-0, - '100': $color-core-pink-100, - '200': $color-core-pink-200, - '300': $color-core-pink-300, - '400': $color-core-pink-400, - '500': $color-core-pink-500, - '600': $color-core-pink-600, - '700': $color-core-pink-700, - '800': $color-core-pink-800, - '900': $color-core-pink-900, - '1000': $color-core-pink-1000, - '1100': $color-core-pink-1100 - ), - 'red': ( - '0': $color-core-red-0, - '100': $color-core-red-100, - '200': $color-core-red-200, - '300': $color-core-red-300, - '400': $color-core-red-400, - '500': $color-core-red-500, - '600': $color-core-red-600, - '700': $color-core-red-700, - '800': $color-core-red-800, - '900': $color-core-red-900, - '1000': $color-core-red-1000, - '1100': $color-core-red-1100 - ), - 'orange': ( - '0': $color-core-orange-0, - '100': $color-core-orange-100, - '200': $color-core-orange-200, - '300': $color-core-orange-300, - '400': $color-core-orange-400, - '500': $color-core-orange-500, - '600': $color-core-orange-600, - '700': $color-core-orange-700, - '800': $color-core-orange-800, - '900': $color-core-orange-900, - '1000': $color-core-orange-1000, - '1100': $color-core-orange-1100 - ), - 'neutral': ( - '0': $color-core-neutral-0, - '100': $color-core-neutral-100, - '200': $color-core-neutral-200, - '300': $color-core-neutral-300, - '400': $color-core-neutral-400, - '500': $color-core-neutral-500, - '600': $color-core-neutral-600, - '700': $color-core-neutral-700, - '800': $color-core-neutral-800, - '900': $color-core-neutral-900, - '1000': $color-core-neutral-1000, - '1100': $color-core-neutral-1100 - ), - 'yellow': ( - '0': $color-core-yellow-0, - '100': $color-core-yellow-100, - '200': $color-core-yellow-200, - '300': $color-core-yellow-300, - '400': $color-core-yellow-400, - '500': $color-core-yellow-500, - '600': $color-core-yellow-600, - '700': $color-core-yellow-700, - '800': $color-core-yellow-800, - '900': $color-core-yellow-900, - '1000': $color-core-yellow-1000, - '1100': $color-core-yellow-1100 - ) - ), - 'font': ( - 'primary': $color-font-primary, - 'secondary': $color-font-secondary, - 'tertiary': $color-font-tertiary, - 'interactive': ( - '_': $color-font-interactive, - 'hover': $color-font-interactive-hover, - 'active': $color-font-interactive-active, - 'disabled': $color-font-interactive-disabled - ), - 'danger': $color-font-danger, - 'warning': $color-font-warning, - 'success': $color-font-success - ) - ), - 'size': ( - 'border': ( - 'radius': ( - 'large': $size-border-radius-large - ) - ), - 'font': ( - 'small': $size-font-small, - 'medium': $size-font-medium, - 'large': $size-font-large, - 'xl': $size-font-xl - ), - 'padding': ( - 'small': $size-padding-small, - 'medium': $size-padding-medium, - 'large': $size-padding-large, - 'xl': $size-padding-xl - ) - ) -); -" +$size-padding-xl: 1rem; +$size-padding-large: 1rem; +$size-padding-medium: 1rem; +$size-padding-small: 0.5rem; +$size-font-xl: 2.25rem; +$size-font-large: 1.5rem; +$size-font-medium: 1rem; +$size-font-small: 0.75rem; +$size-border-radius-large: 30rem; +$color-core-yellow-1100: #2d1a05; +$color-core-yellow-1000: #542a00; +$color-core-yellow-900: #944c0c; +$color-core-yellow-800: #ba7506; +$color-core-yellow-700: #dd9903; +$color-core-yellow-600: #ffbc00; +$color-core-yellow-500: #ffcd1c; +$color-core-yellow-400: #ffd943; +$color-core-yellow-300: #ffe16e; +$color-core-yellow-200: #ffe99a; +$color-core-yellow-100: #fdefcd; +$color-core-yellow-0: #fff8e2; +$color-core-neutral-1100: #040404; +$color-core-neutral-1000: #162020; +$color-core-neutral-900: #273333; +$color-core-neutral-800: #364141; +$color-core-neutral-700: #515e5f; +$color-core-neutral-600: #6e797a; +$color-core-neutral-500: #929a9b; +$color-core-neutral-400: #b0b6b7; +$color-core-neutral-300: #c8cccc; +$color-core-neutral-200: #dee1e1; +$color-core-neutral-100: #f3f4f4; +$color-core-neutral-0: #ffffff; +$color-core-orange-1100: #2d130e; +$color-core-orange-1000: #601700; +$color-core-orange-900: #962c0b; +$color-core-orange-800: #ce5511; +$color-core-orange-700: #ed7024; +$color-core-orange-600: #f57d33; +$color-core-orange-500: #fc8943; +$color-core-orange-400: #ff9c5d; +$color-core-orange-300: #ffb180; +$color-core-orange-200: #ffc6a4; +$color-core-orange-100: #fcdccc; +$color-core-orange-0: #ffede3; +$color-core-red-1100: #2b1111; +$color-core-red-1000: #6d1313; +$color-core-red-900: #992222; +$color-core-red-800: #c63434; +$color-core-red-700: #db3e3e; +$color-core-red-600: #ed4c42; +$color-core-red-500: #f76054; +$color-core-red-400: #ff7f6e; +$color-core-red-300: #ff9c8f; +$color-core-red-200: #ffb8b1; +$color-core-red-100: #ffd5d2; +$color-core-red-0: #ffeae9; +$color-core-pink-1100: #2b1721; +$color-core-pink-1000: #561231; +$color-core-pink-900: #931847; +$color-core-pink-800: #b22f5b; +$color-core-pink-700: #ce3665; +$color-core-pink-600: #e0447c; +$color-core-pink-500: #ef588b; +$color-core-pink-400: #ff76ae; +$color-core-pink-300: #ff95c1; +$color-core-pink-200: #ffb5d5; +$color-core-pink-100: #fcdbeb; +$color-core-pink-0: #ffe9f3; +$color-core-magenta-1100: #29192d; +$color-core-magenta-1000: #451551; +$color-core-magenta-900: #6c2277; +$color-core-magenta-800: #8f3896; +$color-core-magenta-700: #ac44a8; +$color-core-magenta-600: #c44eb9; +$color-core-magenta-500: #db61db; +$color-core-magenta-400: #f282f5; +$color-core-magenta-300: #edadf2; +$color-core-magenta-200: #f4c4f7; +$color-core-magenta-100: #f9e3fc; +$color-core-magenta-0: #fef0ff; +$color-core-purple-1100: #1d1d38; +$color-core-purple-1000: #2d246b; +$color-core-purple-900: #483a9c; +$color-core-purple-800: #5e4eba; +$color-core-purple-700: #6f5ed3; +$color-core-purple-600: #816fea; +$color-core-purple-500: #9180f4; +$color-core-purple-400: #a193f2; +$color-core-purple-300: #c1c1f7; +$color-core-purple-200: #d8d7f9; +$color-core-purple-100: #eaeaf9; +$color-core-purple-0: #f2f2f9; +$color-core-blue-1100: #002138; +$color-core-blue-1000: #0a3960; +$color-core-blue-900: #0c5689; +$color-core-blue-800: #116daa; +$color-core-blue-700: #2079c3; +$color-core-blue-600: #2b87d3; +$color-core-blue-500: #3896e3; +$color-core-blue-400: #56adf5; +$color-core-blue-300: #a1d2f8; +$color-core-blue-200: #c7e4f9; +$color-core-blue-100: #dcf2ff; +$color-core-blue-0: #e9f8ff; +$color-core-aqua-1100: #002838; +$color-core-aqua-1000: #083d4f; +$color-core-aqua-900: #035e73; +$color-core-aqua-800: #0f6e84; +$color-core-aqua-700: #0b8599; +$color-core-aqua-600: #0797ae; +$color-core-aqua-500: #17b8ce; +$color-core-aqua-400: #33d6e2; +$color-core-aqua-300: #76e5e2; +$color-core-aqua-200: #a5f2f2; +$color-core-aqua-100: #c5f9f9; +$color-core-aqua-0: #d9fcfb; +$color-core-teal-1100: #002528; +$color-core-teal-1000: #083f3f; +$color-core-teal-900: #026661; +$color-core-teal-800: #067c7c; +$color-core-teal-700: #0b968f; +$color-core-teal-600: #00a99c; +$color-core-teal-500: #08c4b2; +$color-core-teal-400: #24e0c5; +$color-core-teal-300: #7dead5; +$color-core-teal-200: #b3f2e6; +$color-core-teal-100: #cdf7ef; +$color-core-teal-0: #e5f9f5; +$color-core-green-1100: #002b20; +$color-core-green-1000: #08422f; +$color-core-green-900: #006b40; +$color-core-green-800: #008b46; +$color-core-green-700: #0ca750; +$color-core-green-600: #2bb656; +$color-core-green-500: #59cb59; +$color-core-green-400: #75dd66; +$color-core-green-300: #98e58e; +$color-core-green-200: #c2f2bd; +$color-core-green-100: #d7f4d7; +$color-core-green-0: #ebf9eb; +$color-font-success: $color-core-green-1000; +$color-font-warning: $color-core-orange-1000; +$color-font-danger: $color-core-red-1000; +$color-font-tertiary: $color-core-neutral-800; +$color-font-secondary: $color-core-neutral-900; +$color-font-primary: $color-core-neutral-1100; +$color-brand-secondary: $color-core-purple-700; +$color-brand-primary: $color-core-aqua-700; +$color-border-primary: $color-core-neutral-300; +$color-background-info: $color-core-blue-0; +$color-background-success: $color-core-green-0; +$color-background-warning: $color-core-orange-0; +$color-background-danger: $color-core-red-0; +$color-background-tertiary: $color-core-neutral-200; +$color-background-secondary: $color-core-neutral-100; +$color-background-primary: $color-core-neutral-0 !default; +$color-font-interactive-disabled: $color-font-tertiary; +$color-font-interactive-active: $color-brand-secondary; +$color-font-interactive-hover: $color-brand-primary; +$color-font-interactive: $color-brand-primary; +$color-background-disabled: $color-background-tertiary; `; +/* end snapshot scss/variables with outputReferences should match snapshot */ + +snapshots["scss/variables with filter and output references should match snapshot"] = +` +// Do not edit directly +// Generated on Sat, 01 Jan 2000 00:00:00 GMT + +$color-background-info: $color-core-blue-0; +$color-background-success: $color-core-green-0; +$color-background-warning: $color-core-orange-0; +$color-background-danger: $color-core-red-0; +$color-background-tertiary: $color-core-neutral-200; +$color-background-secondary: $color-core-neutral-100; +$color-background-primary: $color-core-neutral-0 !default; +$color-background-disabled: $color-background-tertiary; +`; +/* end snapshot scss/variables with filter and output references should match snapshot */ + +snapshots["scss/map-flat should match snapshot"] = +` +/** + * Do not edit directly + * Generated on Sat, 01 Jan 2000 00:00:00 GMT + */ + +$design-system-tokens: ( + 'color-background-primary': #ffffff, + 'color-background-secondary': #f3f4f4, + 'color-background-tertiary': #dee1e1, + 'color-background-danger': #ffeae9, + 'color-background-warning': #ffede3, + 'color-background-success': #ebf9eb, + 'color-background-info': #e9f8ff, + 'color-background-disabled': #dee1e1, + 'color-border-primary': #c8cccc, + 'color-brand-primary': #0b8599, + 'color-brand-secondary': #6f5ed3, + 'color-core-green-0': #ebf9eb, + 'color-core-green-100': #d7f4d7, + 'color-core-green-200': #c2f2bd, + 'color-core-green-300': #98e58e, + 'color-core-green-400': #75dd66, + 'color-core-green-500': #59cb59, + 'color-core-green-600': #2bb656, + 'color-core-green-700': #0ca750, + 'color-core-green-800': #008b46, + 'color-core-green-900': #006b40, + 'color-core-green-1000': #08422f, + 'color-core-green-1100': #002b20, + 'color-core-teal-0': #e5f9f5, + 'color-core-teal-100': #cdf7ef, + 'color-core-teal-200': #b3f2e6, + 'color-core-teal-300': #7dead5, + 'color-core-teal-400': #24e0c5, + 'color-core-teal-500': #08c4b2, + 'color-core-teal-600': #00a99c, + 'color-core-teal-700': #0b968f, + 'color-core-teal-800': #067c7c, + 'color-core-teal-900': #026661, + 'color-core-teal-1000': #083f3f, + 'color-core-teal-1100': #002528, + 'color-core-aqua-0': #d9fcfb, + 'color-core-aqua-100': #c5f9f9, + 'color-core-aqua-200': #a5f2f2, + 'color-core-aqua-300': #76e5e2, + 'color-core-aqua-400': #33d6e2, + 'color-core-aqua-500': #17b8ce, + 'color-core-aqua-600': #0797ae, + 'color-core-aqua-700': #0b8599, + 'color-core-aqua-800': #0f6e84, + 'color-core-aqua-900': #035e73, + 'color-core-aqua-1000': #083d4f, + 'color-core-aqua-1100': #002838, + 'color-core-blue-0': #e9f8ff, + 'color-core-blue-100': #dcf2ff, + 'color-core-blue-200': #c7e4f9, + 'color-core-blue-300': #a1d2f8, + 'color-core-blue-400': #56adf5, + 'color-core-blue-500': #3896e3, + 'color-core-blue-600': #2b87d3, + 'color-core-blue-700': #2079c3, + 'color-core-blue-800': #116daa, + 'color-core-blue-900': #0c5689, + 'color-core-blue-1000': #0a3960, + 'color-core-blue-1100': #002138, + 'color-core-purple-0': #f2f2f9, + 'color-core-purple-100': #eaeaf9, + 'color-core-purple-200': #d8d7f9, + 'color-core-purple-300': #c1c1f7, + 'color-core-purple-400': #a193f2, + 'color-core-purple-500': #9180f4, + 'color-core-purple-600': #816fea, + 'color-core-purple-700': #6f5ed3, + 'color-core-purple-800': #5e4eba, + 'color-core-purple-900': #483a9c, + 'color-core-purple-1000': #2d246b, + 'color-core-purple-1100': #1d1d38, + 'color-core-magenta-0': #fef0ff, + 'color-core-magenta-100': #f9e3fc, + 'color-core-magenta-200': #f4c4f7, + 'color-core-magenta-300': #edadf2, + 'color-core-magenta-400': #f282f5, + 'color-core-magenta-500': #db61db, + 'color-core-magenta-600': #c44eb9, + 'color-core-magenta-700': #ac44a8, + 'color-core-magenta-800': #8f3896, + 'color-core-magenta-900': #6c2277, + 'color-core-magenta-1000': #451551, + 'color-core-magenta-1100': #29192d, + 'color-core-pink-0': #ffe9f3, + 'color-core-pink-100': #fcdbeb, + 'color-core-pink-200': #ffb5d5, + 'color-core-pink-300': #ff95c1, + 'color-core-pink-400': #ff76ae, + 'color-core-pink-500': #ef588b, + 'color-core-pink-600': #e0447c, + 'color-core-pink-700': #ce3665, + 'color-core-pink-800': #b22f5b, + 'color-core-pink-900': #931847, + 'color-core-pink-1000': #561231, + 'color-core-pink-1100': #2b1721, + 'color-core-red-0': #ffeae9, + 'color-core-red-100': #ffd5d2, + 'color-core-red-200': #ffb8b1, + 'color-core-red-300': #ff9c8f, + 'color-core-red-400': #ff7f6e, + 'color-core-red-500': #f76054, + 'color-core-red-600': #ed4c42, + 'color-core-red-700': #db3e3e, + 'color-core-red-800': #c63434, + 'color-core-red-900': #992222, + 'color-core-red-1000': #6d1313, + 'color-core-red-1100': #2b1111, + 'color-core-orange-0': #ffede3, + 'color-core-orange-100': #fcdccc, + 'color-core-orange-200': #ffc6a4, + 'color-core-orange-300': #ffb180, + 'color-core-orange-400': #ff9c5d, + 'color-core-orange-500': #fc8943, + 'color-core-orange-600': #f57d33, + 'color-core-orange-700': #ed7024, + 'color-core-orange-800': #ce5511, + 'color-core-orange-900': #962c0b, + 'color-core-orange-1000': #601700, + 'color-core-orange-1100': #2d130e, + 'color-core-neutral-0': #ffffff, + 'color-core-neutral-100': #f3f4f4, + 'color-core-neutral-200': #dee1e1, + 'color-core-neutral-300': #c8cccc, + 'color-core-neutral-400': #b0b6b7, + 'color-core-neutral-500': #929a9b, + 'color-core-neutral-600': #6e797a, + 'color-core-neutral-700': #515e5f, + 'color-core-neutral-800': #364141, + 'color-core-neutral-900': #273333, + 'color-core-neutral-1000': #162020, + 'color-core-neutral-1100': #040404, + 'color-core-yellow-0': #fff8e2, + 'color-core-yellow-100': #fdefcd, + 'color-core-yellow-200': #ffe99a, + 'color-core-yellow-300': #ffe16e, + 'color-core-yellow-400': #ffd943, + 'color-core-yellow-500': #ffcd1c, + 'color-core-yellow-600': #ffbc00, + 'color-core-yellow-700': #dd9903, + 'color-core-yellow-800': #ba7506, + 'color-core-yellow-900': #944c0c, + 'color-core-yellow-1000': #542a00, + 'color-core-yellow-1100': #2d1a05, + 'color-font-primary': #040404, + 'color-font-secondary': #273333, + 'color-font-tertiary': #364141, + 'color-font-interactive': #0b8599, + 'color-font-interactive-hover': #0b8599, + 'color-font-interactive-active': #6f5ed3, + 'color-font-interactive-disabled': #364141, + 'color-font-danger': #6d1313, + 'color-font-warning': #601700, + 'color-font-success': #08422f, + 'size-border-radius-large': 30rem, + 'size-font-small': 0.75rem, + 'size-font-medium': 1rem, + 'size-font-large': 1.5rem, + 'size-font-xl': 2.25rem, + 'size-padding-small': 0.5rem, + 'size-padding-medium': 1rem, + 'size-padding-large': 1rem, + 'size-padding-xl': 1rem +);`; +/* end snapshot scss/map-flat should match snapshot */ -exports[`integration scss scss/map-deep without themeable should match snapshot 1`] = ` -" +snapshots["scss/map-deep should match snapshot"] = +` /** * Do not edit directly * Generated on Sat, 01 Jan 2000 00:00:00 GMT */ $color-background-primary: #ffffff !default; -$color-background-secondary: #f3f4f4; -$color-background-tertiary: #dee1e1; -$color-background-danger: #ffeae9; -$color-background-warning: #ffede3; -$color-background-success: #ebf9eb; -$color-background-info: #e9f8ff; -$color-background-disabled: #dee1e1; -$color-border-primary: #c8cccc; -$color-brand-primary: #0b8599; -$color-brand-secondary: #6f5ed3; -$color-core-green-0: #ebf9eb; -$color-core-green-100: #d7f4d7; -$color-core-green-200: #c2f2bd; -$color-core-green-300: #98e58e; -$color-core-green-400: #75dd66; -$color-core-green-500: #59cb59; -$color-core-green-600: #2bb656; -$color-core-green-700: #0ca750; -$color-core-green-800: #008b46; -$color-core-green-900: #006b40; -$color-core-green-1000: #08422f; -$color-core-green-1100: #002b20; -$color-core-teal-0: #e5f9f5; -$color-core-teal-100: #cdf7ef; -$color-core-teal-200: #b3f2e6; -$color-core-teal-300: #7dead5; -$color-core-teal-400: #24e0c5; -$color-core-teal-500: #08c4b2; -$color-core-teal-600: #00a99c; -$color-core-teal-700: #0b968f; -$color-core-teal-800: #067c7c; -$color-core-teal-900: #026661; -$color-core-teal-1000: #083f3f; -$color-core-teal-1100: #002528; -$color-core-aqua-0: #d9fcfb; -$color-core-aqua-100: #c5f9f9; -$color-core-aqua-200: #a5f2f2; -$color-core-aqua-300: #76e5e2; -$color-core-aqua-400: #33d6e2; -$color-core-aqua-500: #17b8ce; -$color-core-aqua-600: #0797ae; -$color-core-aqua-700: #0b8599; -$color-core-aqua-800: #0f6e84; -$color-core-aqua-900: #035e73; -$color-core-aqua-1000: #083d4f; -$color-core-aqua-1100: #002838; -$color-core-blue-0: #e9f8ff; -$color-core-blue-100: #dcf2ff; -$color-core-blue-200: #c7e4f9; -$color-core-blue-300: #a1d2f8; -$color-core-blue-400: #56adf5; -$color-core-blue-500: #3896e3; -$color-core-blue-600: #2b87d3; -$color-core-blue-700: #2079c3; -$color-core-blue-800: #116daa; -$color-core-blue-900: #0c5689; -$color-core-blue-1000: #0a3960; -$color-core-blue-1100: #002138; -$color-core-purple-0: #f2f2f9; -$color-core-purple-100: #eaeaf9; -$color-core-purple-200: #d8d7f9; -$color-core-purple-300: #c1c1f7; -$color-core-purple-400: #a193f2; -$color-core-purple-500: #9180f4; -$color-core-purple-600: #816fea; -$color-core-purple-700: #6f5ed3; -$color-core-purple-800: #5e4eba; -$color-core-purple-900: #483a9c; -$color-core-purple-1000: #2d246b; -$color-core-purple-1100: #1d1d38; -$color-core-magenta-0: #fef0ff; -$color-core-magenta-100: #f9e3fc; -$color-core-magenta-200: #f4c4f7; -$color-core-magenta-300: #edadf2; -$color-core-magenta-400: #f282f5; -$color-core-magenta-500: #db61db; -$color-core-magenta-600: #c44eb9; -$color-core-magenta-700: #ac44a8; -$color-core-magenta-800: #8f3896; -$color-core-magenta-900: #6c2277; -$color-core-magenta-1000: #451551; -$color-core-magenta-1100: #29192d; -$color-core-pink-0: #ffe9f3; -$color-core-pink-100: #fcdbeb; -$color-core-pink-200: #ffb5d5; -$color-core-pink-300: #ff95c1; -$color-core-pink-400: #ff76ae; -$color-core-pink-500: #ef588b; -$color-core-pink-600: #e0447c; -$color-core-pink-700: #ce3665; -$color-core-pink-800: #b22f5b; -$color-core-pink-900: #931847; -$color-core-pink-1000: #561231; -$color-core-pink-1100: #2b1721; -$color-core-red-0: #ffeae9; -$color-core-red-100: #ffd5d2; -$color-core-red-200: #ffb8b1; -$color-core-red-300: #ff9c8f; -$color-core-red-400: #ff7f6e; -$color-core-red-500: #f76054; -$color-core-red-600: #ed4c42; -$color-core-red-700: #db3e3e; -$color-core-red-800: #c63434; -$color-core-red-900: #992222; -$color-core-red-1000: #6d1313; -$color-core-red-1100: #2b1111; -$color-core-orange-0: #ffede3; -$color-core-orange-100: #fcdccc; -$color-core-orange-200: #ffc6a4; -$color-core-orange-300: #ffb180; -$color-core-orange-400: #ff9c5d; -$color-core-orange-500: #fc8943; -$color-core-orange-600: #f57d33; -$color-core-orange-700: #ed7024; -$color-core-orange-800: #ce5511; -$color-core-orange-900: #962c0b; -$color-core-orange-1000: #601700; -$color-core-orange-1100: #2d130e; -$color-core-neutral-0: #ffffff; -$color-core-neutral-100: #f3f4f4; -$color-core-neutral-200: #dee1e1; -$color-core-neutral-300: #c8cccc; -$color-core-neutral-400: #b0b6b7; -$color-core-neutral-500: #929a9b; -$color-core-neutral-600: #6e797a; -$color-core-neutral-700: #515e5f; -$color-core-neutral-800: #364141; -$color-core-neutral-900: #273333; -$color-core-neutral-1000: #162020; -$color-core-neutral-1100: #040404; -$color-core-yellow-0: #fff8e2; -$color-core-yellow-100: #fdefcd; -$color-core-yellow-200: #ffe99a; -$color-core-yellow-300: #ffe16e; -$color-core-yellow-400: #ffd943; -$color-core-yellow-500: #ffcd1c; -$color-core-yellow-600: #ffbc00; -$color-core-yellow-700: #dd9903; -$color-core-yellow-800: #ba7506; -$color-core-yellow-900: #944c0c; -$color-core-yellow-1000: #542a00; -$color-core-yellow-1100: #2d1a05; -$color-font-primary: #040404; -$color-font-secondary: #273333; -$color-font-tertiary: #364141; -$color-font-interactive: #0b8599; -$color-font-interactive-hover: #0b8599; -$color-font-interactive-active: #6f5ed3; -$color-font-interactive-disabled: #364141; -$color-font-danger: #6d1313; -$color-font-warning: #601700; -$color-font-success: #08422f; -$size-border-radius-large: 30rem; -$size-font-small: 0.75rem; -$size-font-medium: 1rem; -$size-font-large: 1.5rem; -$size-font-xl: 2.25rem; -$size-padding-small: 0.5rem; -$size-padding-medium: 1rem; -$size-padding-large: 1rem; -$size-padding-xl: 1rem; +$color-background-secondary: #f3f4f4 !default; +$color-background-tertiary: #dee1e1 !default; +$color-background-danger: #ffeae9 !default; +$color-background-warning: #ffede3 !default; +$color-background-success: #ebf9eb !default; +$color-background-info: #e9f8ff !default; +$color-background-disabled: #dee1e1 !default; +$color-border-primary: #c8cccc !default; +$color-brand-primary: #0b8599 !default; +$color-brand-secondary: #6f5ed3 !default; +$color-core-green-0: #ebf9eb !default; +$color-core-green-100: #d7f4d7 !default; +$color-core-green-200: #c2f2bd !default; +$color-core-green-300: #98e58e !default; +$color-core-green-400: #75dd66 !default; +$color-core-green-500: #59cb59 !default; +$color-core-green-600: #2bb656 !default; +$color-core-green-700: #0ca750 !default; +$color-core-green-800: #008b46 !default; +$color-core-green-900: #006b40 !default; +$color-core-green-1000: #08422f !default; +$color-core-green-1100: #002b20 !default; +$color-core-teal-0: #e5f9f5 !default; +$color-core-teal-100: #cdf7ef !default; +$color-core-teal-200: #b3f2e6 !default; +$color-core-teal-300: #7dead5 !default; +$color-core-teal-400: #24e0c5 !default; +$color-core-teal-500: #08c4b2 !default; +$color-core-teal-600: #00a99c !default; +$color-core-teal-700: #0b968f !default; +$color-core-teal-800: #067c7c !default; +$color-core-teal-900: #026661 !default; +$color-core-teal-1000: #083f3f !default; +$color-core-teal-1100: #002528 !default; +$color-core-aqua-0: #d9fcfb !default; +$color-core-aqua-100: #c5f9f9 !default; +$color-core-aqua-200: #a5f2f2 !default; +$color-core-aqua-300: #76e5e2 !default; +$color-core-aqua-400: #33d6e2 !default; +$color-core-aqua-500: #17b8ce !default; +$color-core-aqua-600: #0797ae !default; +$color-core-aqua-700: #0b8599 !default; +$color-core-aqua-800: #0f6e84 !default; +$color-core-aqua-900: #035e73 !default; +$color-core-aqua-1000: #083d4f !default; +$color-core-aqua-1100: #002838 !default; +$color-core-blue-0: #e9f8ff !default; +$color-core-blue-100: #dcf2ff !default; +$color-core-blue-200: #c7e4f9 !default; +$color-core-blue-300: #a1d2f8 !default; +$color-core-blue-400: #56adf5 !default; +$color-core-blue-500: #3896e3 !default; +$color-core-blue-600: #2b87d3 !default; +$color-core-blue-700: #2079c3 !default; +$color-core-blue-800: #116daa !default; +$color-core-blue-900: #0c5689 !default; +$color-core-blue-1000: #0a3960 !default; +$color-core-blue-1100: #002138 !default; +$color-core-purple-0: #f2f2f9 !default; +$color-core-purple-100: #eaeaf9 !default; +$color-core-purple-200: #d8d7f9 !default; +$color-core-purple-300: #c1c1f7 !default; +$color-core-purple-400: #a193f2 !default; +$color-core-purple-500: #9180f4 !default; +$color-core-purple-600: #816fea !default; +$color-core-purple-700: #6f5ed3 !default; +$color-core-purple-800: #5e4eba !default; +$color-core-purple-900: #483a9c !default; +$color-core-purple-1000: #2d246b !default; +$color-core-purple-1100: #1d1d38 !default; +$color-core-magenta-0: #fef0ff !default; +$color-core-magenta-100: #f9e3fc !default; +$color-core-magenta-200: #f4c4f7 !default; +$color-core-magenta-300: #edadf2 !default; +$color-core-magenta-400: #f282f5 !default; +$color-core-magenta-500: #db61db !default; +$color-core-magenta-600: #c44eb9 !default; +$color-core-magenta-700: #ac44a8 !default; +$color-core-magenta-800: #8f3896 !default; +$color-core-magenta-900: #6c2277 !default; +$color-core-magenta-1000: #451551 !default; +$color-core-magenta-1100: #29192d !default; +$color-core-pink-0: #ffe9f3 !default; +$color-core-pink-100: #fcdbeb !default; +$color-core-pink-200: #ffb5d5 !default; +$color-core-pink-300: #ff95c1 !default; +$color-core-pink-400: #ff76ae !default; +$color-core-pink-500: #ef588b !default; +$color-core-pink-600: #e0447c !default; +$color-core-pink-700: #ce3665 !default; +$color-core-pink-800: #b22f5b !default; +$color-core-pink-900: #931847 !default; +$color-core-pink-1000: #561231 !default; +$color-core-pink-1100: #2b1721 !default; +$color-core-red-0: #ffeae9 !default; +$color-core-red-100: #ffd5d2 !default; +$color-core-red-200: #ffb8b1 !default; +$color-core-red-300: #ff9c8f !default; +$color-core-red-400: #ff7f6e !default; +$color-core-red-500: #f76054 !default; +$color-core-red-600: #ed4c42 !default; +$color-core-red-700: #db3e3e !default; +$color-core-red-800: #c63434 !default; +$color-core-red-900: #992222 !default; +$color-core-red-1000: #6d1313 !default; +$color-core-red-1100: #2b1111 !default; +$color-core-orange-0: #ffede3 !default; +$color-core-orange-100: #fcdccc !default; +$color-core-orange-200: #ffc6a4 !default; +$color-core-orange-300: #ffb180 !default; +$color-core-orange-400: #ff9c5d !default; +$color-core-orange-500: #fc8943 !default; +$color-core-orange-600: #f57d33 !default; +$color-core-orange-700: #ed7024 !default; +$color-core-orange-800: #ce5511 !default; +$color-core-orange-900: #962c0b !default; +$color-core-orange-1000: #601700 !default; +$color-core-orange-1100: #2d130e !default; +$color-core-neutral-0: #ffffff !default; +$color-core-neutral-100: #f3f4f4 !default; +$color-core-neutral-200: #dee1e1 !default; +$color-core-neutral-300: #c8cccc !default; +$color-core-neutral-400: #b0b6b7 !default; +$color-core-neutral-500: #929a9b !default; +$color-core-neutral-600: #6e797a !default; +$color-core-neutral-700: #515e5f !default; +$color-core-neutral-800: #364141 !default; +$color-core-neutral-900: #273333 !default; +$color-core-neutral-1000: #162020 !default; +$color-core-neutral-1100: #040404 !default; +$color-core-yellow-0: #fff8e2 !default; +$color-core-yellow-100: #fdefcd !default; +$color-core-yellow-200: #ffe99a !default; +$color-core-yellow-300: #ffe16e !default; +$color-core-yellow-400: #ffd943 !default; +$color-core-yellow-500: #ffcd1c !default; +$color-core-yellow-600: #ffbc00 !default; +$color-core-yellow-700: #dd9903 !default; +$color-core-yellow-800: #ba7506 !default; +$color-core-yellow-900: #944c0c !default; +$color-core-yellow-1000: #542a00 !default; +$color-core-yellow-1100: #2d1a05 !default; +$color-font-primary: #040404 !default; +$color-font-secondary: #273333 !default; +$color-font-tertiary: #364141 !default; +$color-font-interactive: #0b8599 !default; +$color-font-interactive-hover: #0b8599 !default; +$color-font-interactive-active: #6f5ed3 !default; +$color-font-interactive-disabled: #364141 !default; +$color-font-danger: #6d1313 !default; +$color-font-warning: #601700 !default; +$color-font-success: #08422f !default; +$size-border-radius-large: 30rem !default; +$size-font-small: 0.75rem !default; +$size-font-medium: 1rem !default; +$size-font-large: 1.5rem !default; +$size-font-xl: 2.25rem !default; +$size-padding-small: 0.5rem !default; +$size-padding-medium: 1rem !default; +$size-padding-large: 1rem !default; +$size-padding-xl: 1rem !default; $design-system-tokens: ( 'color': ( @@ -1150,719 +1072,798 @@ $design-system-tokens: ( 'large': $size-border-radius-large ) ), - 'font': ( - 'small': $size-font-small, - 'medium': $size-font-medium, - 'large': $size-font-large, - 'xl': $size-font-xl - ), - 'padding': ( - 'small': $size-padding-small, - 'medium': $size-padding-medium, - 'large': $size-padding-large, - 'xl': $size-padding-xl - ) - ) -); -" -`; - -exports[`integration scss scss/map-flat should match snapshot 1`] = ` -" -/** - * Do not edit directly - * Generated on Sat, 01 Jan 2000 00:00:00 GMT - */ - -$design-system-tokens: ( - 'color-background-primary': #ffffff, - 'color-background-secondary': #f3f4f4, - 'color-background-tertiary': #dee1e1, - 'color-background-danger': #ffeae9, - 'color-background-warning': #ffede3, - 'color-background-success': #ebf9eb, - 'color-background-info': #e9f8ff, - 'color-background-disabled': #dee1e1, - 'color-border-primary': #c8cccc, - 'color-brand-primary': #0b8599, - 'color-brand-secondary': #6f5ed3, - 'color-core-green-0': #ebf9eb, - 'color-core-green-100': #d7f4d7, - 'color-core-green-200': #c2f2bd, - 'color-core-green-300': #98e58e, - 'color-core-green-400': #75dd66, - 'color-core-green-500': #59cb59, - 'color-core-green-600': #2bb656, - 'color-core-green-700': #0ca750, - 'color-core-green-800': #008b46, - 'color-core-green-900': #006b40, - 'color-core-green-1000': #08422f, - 'color-core-green-1100': #002b20, - 'color-core-teal-0': #e5f9f5, - 'color-core-teal-100': #cdf7ef, - 'color-core-teal-200': #b3f2e6, - 'color-core-teal-300': #7dead5, - 'color-core-teal-400': #24e0c5, - 'color-core-teal-500': #08c4b2, - 'color-core-teal-600': #00a99c, - 'color-core-teal-700': #0b968f, - 'color-core-teal-800': #067c7c, - 'color-core-teal-900': #026661, - 'color-core-teal-1000': #083f3f, - 'color-core-teal-1100': #002528, - 'color-core-aqua-0': #d9fcfb, - 'color-core-aqua-100': #c5f9f9, - 'color-core-aqua-200': #a5f2f2, - 'color-core-aqua-300': #76e5e2, - 'color-core-aqua-400': #33d6e2, - 'color-core-aqua-500': #17b8ce, - 'color-core-aqua-600': #0797ae, - 'color-core-aqua-700': #0b8599, - 'color-core-aqua-800': #0f6e84, - 'color-core-aqua-900': #035e73, - 'color-core-aqua-1000': #083d4f, - 'color-core-aqua-1100': #002838, - 'color-core-blue-0': #e9f8ff, - 'color-core-blue-100': #dcf2ff, - 'color-core-blue-200': #c7e4f9, - 'color-core-blue-300': #a1d2f8, - 'color-core-blue-400': #56adf5, - 'color-core-blue-500': #3896e3, - 'color-core-blue-600': #2b87d3, - 'color-core-blue-700': #2079c3, - 'color-core-blue-800': #116daa, - 'color-core-blue-900': #0c5689, - 'color-core-blue-1000': #0a3960, - 'color-core-blue-1100': #002138, - 'color-core-purple-0': #f2f2f9, - 'color-core-purple-100': #eaeaf9, - 'color-core-purple-200': #d8d7f9, - 'color-core-purple-300': #c1c1f7, - 'color-core-purple-400': #a193f2, - 'color-core-purple-500': #9180f4, - 'color-core-purple-600': #816fea, - 'color-core-purple-700': #6f5ed3, - 'color-core-purple-800': #5e4eba, - 'color-core-purple-900': #483a9c, - 'color-core-purple-1000': #2d246b, - 'color-core-purple-1100': #1d1d38, - 'color-core-magenta-0': #fef0ff, - 'color-core-magenta-100': #f9e3fc, - 'color-core-magenta-200': #f4c4f7, - 'color-core-magenta-300': #edadf2, - 'color-core-magenta-400': #f282f5, - 'color-core-magenta-500': #db61db, - 'color-core-magenta-600': #c44eb9, - 'color-core-magenta-700': #ac44a8, - 'color-core-magenta-800': #8f3896, - 'color-core-magenta-900': #6c2277, - 'color-core-magenta-1000': #451551, - 'color-core-magenta-1100': #29192d, - 'color-core-pink-0': #ffe9f3, - 'color-core-pink-100': #fcdbeb, - 'color-core-pink-200': #ffb5d5, - 'color-core-pink-300': #ff95c1, - 'color-core-pink-400': #ff76ae, - 'color-core-pink-500': #ef588b, - 'color-core-pink-600': #e0447c, - 'color-core-pink-700': #ce3665, - 'color-core-pink-800': #b22f5b, - 'color-core-pink-900': #931847, - 'color-core-pink-1000': #561231, - 'color-core-pink-1100': #2b1721, - 'color-core-red-0': #ffeae9, - 'color-core-red-100': #ffd5d2, - 'color-core-red-200': #ffb8b1, - 'color-core-red-300': #ff9c8f, - 'color-core-red-400': #ff7f6e, - 'color-core-red-500': #f76054, - 'color-core-red-600': #ed4c42, - 'color-core-red-700': #db3e3e, - 'color-core-red-800': #c63434, - 'color-core-red-900': #992222, - 'color-core-red-1000': #6d1313, - 'color-core-red-1100': #2b1111, - 'color-core-orange-0': #ffede3, - 'color-core-orange-100': #fcdccc, - 'color-core-orange-200': #ffc6a4, - 'color-core-orange-300': #ffb180, - 'color-core-orange-400': #ff9c5d, - 'color-core-orange-500': #fc8943, - 'color-core-orange-600': #f57d33, - 'color-core-orange-700': #ed7024, - 'color-core-orange-800': #ce5511, - 'color-core-orange-900': #962c0b, - 'color-core-orange-1000': #601700, - 'color-core-orange-1100': #2d130e, - 'color-core-neutral-0': #ffffff, - 'color-core-neutral-100': #f3f4f4, - 'color-core-neutral-200': #dee1e1, - 'color-core-neutral-300': #c8cccc, - 'color-core-neutral-400': #b0b6b7, - 'color-core-neutral-500': #929a9b, - 'color-core-neutral-600': #6e797a, - 'color-core-neutral-700': #515e5f, - 'color-core-neutral-800': #364141, - 'color-core-neutral-900': #273333, - 'color-core-neutral-1000': #162020, - 'color-core-neutral-1100': #040404, - 'color-core-yellow-0': #fff8e2, - 'color-core-yellow-100': #fdefcd, - 'color-core-yellow-200': #ffe99a, - 'color-core-yellow-300': #ffe16e, - 'color-core-yellow-400': #ffd943, - 'color-core-yellow-500': #ffcd1c, - 'color-core-yellow-600': #ffbc00, - 'color-core-yellow-700': #dd9903, - 'color-core-yellow-800': #ba7506, - 'color-core-yellow-900': #944c0c, - 'color-core-yellow-1000': #542a00, - 'color-core-yellow-1100': #2d1a05, - 'color-font-primary': #040404, - 'color-font-secondary': #273333, - 'color-font-tertiary': #364141, - 'color-font-interactive': #0b8599, - 'color-font-interactive-hover': #0b8599, - 'color-font-interactive-active': #6f5ed3, - 'color-font-interactive-disabled': #364141, - 'color-font-danger': #6d1313, - 'color-font-warning': #601700, - 'color-font-success': #08422f, - 'size-border-radius-large': 30rem, - 'size-font-small': 0.75rem, - 'size-font-medium': 1rem, - 'size-font-large': 1.5rem, - 'size-font-xl': 2.25rem, - 'size-padding-small': 0.5rem, - 'size-padding-medium': 1rem, - 'size-padding-large': 1rem, - 'size-padding-xl': 1rem + 'font': ( + 'small': $size-font-small, + 'medium': $size-font-medium, + 'large': $size-font-large, + 'xl': $size-font-xl + ), + 'padding': ( + 'small': $size-padding-small, + 'medium': $size-padding-medium, + 'large': $size-padding-large, + 'xl': $size-padding-xl + ) + ) ); -" `; +/* end snapshot scss/map-deep should match snapshot */ -exports[`integration scss scss/variables should match snapshot 1`] = ` -" -// Do not edit directly -// Generated on Sat, 01 Jan 2000 00:00:00 GMT +snapshots["scss/map-deep with outputReferences should match snapshot"] = +` +/** + * Do not edit directly + * Generated on Sat, 01 Jan 2000 00:00:00 GMT + */ -$color-background-primary: #ffffff !default; -$color-background-secondary: #f3f4f4; -$color-background-tertiary: #dee1e1; -$color-background-danger: #ffeae9; -$color-background-warning: #ffede3; -$color-background-success: #ebf9eb; -$color-background-info: #e9f8ff; -$color-background-disabled: #dee1e1; -$color-border-primary: #c8cccc; -$color-brand-primary: #0b8599; -$color-brand-secondary: #6f5ed3; -$color-core-green-0: #ebf9eb; -$color-core-green-100: #d7f4d7; -$color-core-green-200: #c2f2bd; -$color-core-green-300: #98e58e; -$color-core-green-400: #75dd66; -$color-core-green-500: #59cb59; -$color-core-green-600: #2bb656; -$color-core-green-700: #0ca750; -$color-core-green-800: #008b46; -$color-core-green-900: #006b40; -$color-core-green-1000: #08422f; -$color-core-green-1100: #002b20; -$color-core-teal-0: #e5f9f5; -$color-core-teal-100: #cdf7ef; -$color-core-teal-200: #b3f2e6; -$color-core-teal-300: #7dead5; -$color-core-teal-400: #24e0c5; -$color-core-teal-500: #08c4b2; -$color-core-teal-600: #00a99c; -$color-core-teal-700: #0b968f; -$color-core-teal-800: #067c7c; -$color-core-teal-900: #026661; -$color-core-teal-1000: #083f3f; -$color-core-teal-1100: #002528; -$color-core-aqua-0: #d9fcfb; -$color-core-aqua-100: #c5f9f9; -$color-core-aqua-200: #a5f2f2; -$color-core-aqua-300: #76e5e2; -$color-core-aqua-400: #33d6e2; -$color-core-aqua-500: #17b8ce; -$color-core-aqua-600: #0797ae; -$color-core-aqua-700: #0b8599; -$color-core-aqua-800: #0f6e84; -$color-core-aqua-900: #035e73; -$color-core-aqua-1000: #083d4f; -$color-core-aqua-1100: #002838; -$color-core-blue-0: #e9f8ff; -$color-core-blue-100: #dcf2ff; -$color-core-blue-200: #c7e4f9; -$color-core-blue-300: #a1d2f8; -$color-core-blue-400: #56adf5; -$color-core-blue-500: #3896e3; -$color-core-blue-600: #2b87d3; -$color-core-blue-700: #2079c3; -$color-core-blue-800: #116daa; -$color-core-blue-900: #0c5689; -$color-core-blue-1000: #0a3960; -$color-core-blue-1100: #002138; -$color-core-purple-0: #f2f2f9; -$color-core-purple-100: #eaeaf9; -$color-core-purple-200: #d8d7f9; -$color-core-purple-300: #c1c1f7; -$color-core-purple-400: #a193f2; -$color-core-purple-500: #9180f4; -$color-core-purple-600: #816fea; -$color-core-purple-700: #6f5ed3; -$color-core-purple-800: #5e4eba; -$color-core-purple-900: #483a9c; -$color-core-purple-1000: #2d246b; -$color-core-purple-1100: #1d1d38; -$color-core-magenta-0: #fef0ff; -$color-core-magenta-100: #f9e3fc; -$color-core-magenta-200: #f4c4f7; -$color-core-magenta-300: #edadf2; -$color-core-magenta-400: #f282f5; -$color-core-magenta-500: #db61db; -$color-core-magenta-600: #c44eb9; -$color-core-magenta-700: #ac44a8; -$color-core-magenta-800: #8f3896; -$color-core-magenta-900: #6c2277; -$color-core-magenta-1000: #451551; -$color-core-magenta-1100: #29192d; -$color-core-pink-0: #ffe9f3; -$color-core-pink-100: #fcdbeb; -$color-core-pink-200: #ffb5d5; -$color-core-pink-300: #ff95c1; -$color-core-pink-400: #ff76ae; -$color-core-pink-500: #ef588b; -$color-core-pink-600: #e0447c; -$color-core-pink-700: #ce3665; -$color-core-pink-800: #b22f5b; -$color-core-pink-900: #931847; -$color-core-pink-1000: #561231; -$color-core-pink-1100: #2b1721; -$color-core-red-0: #ffeae9; -$color-core-red-100: #ffd5d2; -$color-core-red-200: #ffb8b1; -$color-core-red-300: #ff9c8f; -$color-core-red-400: #ff7f6e; -$color-core-red-500: #f76054; -$color-core-red-600: #ed4c42; -$color-core-red-700: #db3e3e; -$color-core-red-800: #c63434; -$color-core-red-900: #992222; -$color-core-red-1000: #6d1313; -$color-core-red-1100: #2b1111; -$color-core-orange-0: #ffede3; -$color-core-orange-100: #fcdccc; -$color-core-orange-200: #ffc6a4; -$color-core-orange-300: #ffb180; -$color-core-orange-400: #ff9c5d; -$color-core-orange-500: #fc8943; -$color-core-orange-600: #f57d33; -$color-core-orange-700: #ed7024; -$color-core-orange-800: #ce5511; -$color-core-orange-900: #962c0b; -$color-core-orange-1000: #601700; -$color-core-orange-1100: #2d130e; -$color-core-neutral-0: #ffffff; -$color-core-neutral-100: #f3f4f4; -$color-core-neutral-200: #dee1e1; -$color-core-neutral-300: #c8cccc; -$color-core-neutral-400: #b0b6b7; -$color-core-neutral-500: #929a9b; -$color-core-neutral-600: #6e797a; -$color-core-neutral-700: #515e5f; -$color-core-neutral-800: #364141; -$color-core-neutral-900: #273333; -$color-core-neutral-1000: #162020; -$color-core-neutral-1100: #040404; -$color-core-yellow-0: #fff8e2; -$color-core-yellow-100: #fdefcd; -$color-core-yellow-200: #ffe99a; -$color-core-yellow-300: #ffe16e; -$color-core-yellow-400: #ffd943; -$color-core-yellow-500: #ffcd1c; -$color-core-yellow-600: #ffbc00; -$color-core-yellow-700: #dd9903; -$color-core-yellow-800: #ba7506; -$color-core-yellow-900: #944c0c; -$color-core-yellow-1000: #542a00; -$color-core-yellow-1100: #2d1a05; -$color-font-primary: #040404; -$color-font-secondary: #273333; -$color-font-tertiary: #364141; -$color-font-interactive: #0b8599; -$color-font-interactive-hover: #0b8599; -$color-font-interactive-active: #6f5ed3; -$color-font-interactive-disabled: #364141; -$color-font-danger: #6d1313; -$color-font-warning: #601700; -$color-font-success: #08422f; -$size-border-radius-large: 30rem; -$size-font-small: 0.75rem; -$size-font-medium: 1rem; -$size-font-large: 1.5rem; -$size-font-xl: 2.25rem; -$size-padding-small: 0.5rem; -$size-padding-medium: 1rem; -$size-padding-large: 1rem; -$size-padding-xl: 1rem; -" -`; +$size-padding-xl: 1rem !default; +$size-padding-large: 1rem !default; +$size-padding-medium: 1rem !default; +$size-padding-small: 0.5rem !default; +$size-font-xl: 2.25rem !default; +$size-font-large: 1.5rem !default; +$size-font-medium: 1rem !default; +$size-font-small: 0.75rem !default; +$size-border-radius-large: 30rem !default; +$color-core-yellow-1100: #2d1a05 !default; +$color-core-yellow-1000: #542a00 !default; +$color-core-yellow-900: #944c0c !default; +$color-core-yellow-800: #ba7506 !default; +$color-core-yellow-700: #dd9903 !default; +$color-core-yellow-600: #ffbc00 !default; +$color-core-yellow-500: #ffcd1c !default; +$color-core-yellow-400: #ffd943 !default; +$color-core-yellow-300: #ffe16e !default; +$color-core-yellow-200: #ffe99a !default; +$color-core-yellow-100: #fdefcd !default; +$color-core-yellow-0: #fff8e2 !default; +$color-core-neutral-1100: #040404 !default; +$color-core-neutral-1000: #162020 !default; +$color-core-neutral-900: #273333 !default; +$color-core-neutral-800: #364141 !default; +$color-core-neutral-700: #515e5f !default; +$color-core-neutral-600: #6e797a !default; +$color-core-neutral-500: #929a9b !default; +$color-core-neutral-400: #b0b6b7 !default; +$color-core-neutral-300: #c8cccc !default; +$color-core-neutral-200: #dee1e1 !default; +$color-core-neutral-100: #f3f4f4 !default; +$color-core-neutral-0: #ffffff !default; +$color-core-orange-1100: #2d130e !default; +$color-core-orange-1000: #601700 !default; +$color-core-orange-900: #962c0b !default; +$color-core-orange-800: #ce5511 !default; +$color-core-orange-700: #ed7024 !default; +$color-core-orange-600: #f57d33 !default; +$color-core-orange-500: #fc8943 !default; +$color-core-orange-400: #ff9c5d !default; +$color-core-orange-300: #ffb180 !default; +$color-core-orange-200: #ffc6a4 !default; +$color-core-orange-100: #fcdccc !default; +$color-core-orange-0: #ffede3 !default; +$color-core-red-1100: #2b1111 !default; +$color-core-red-1000: #6d1313 !default; +$color-core-red-900: #992222 !default; +$color-core-red-800: #c63434 !default; +$color-core-red-700: #db3e3e !default; +$color-core-red-600: #ed4c42 !default; +$color-core-red-500: #f76054 !default; +$color-core-red-400: #ff7f6e !default; +$color-core-red-300: #ff9c8f !default; +$color-core-red-200: #ffb8b1 !default; +$color-core-red-100: #ffd5d2 !default; +$color-core-red-0: #ffeae9 !default; +$color-core-pink-1100: #2b1721 !default; +$color-core-pink-1000: #561231 !default; +$color-core-pink-900: #931847 !default; +$color-core-pink-800: #b22f5b !default; +$color-core-pink-700: #ce3665 !default; +$color-core-pink-600: #e0447c !default; +$color-core-pink-500: #ef588b !default; +$color-core-pink-400: #ff76ae !default; +$color-core-pink-300: #ff95c1 !default; +$color-core-pink-200: #ffb5d5 !default; +$color-core-pink-100: #fcdbeb !default; +$color-core-pink-0: #ffe9f3 !default; +$color-core-magenta-1100: #29192d !default; +$color-core-magenta-1000: #451551 !default; +$color-core-magenta-900: #6c2277 !default; +$color-core-magenta-800: #8f3896 !default; +$color-core-magenta-700: #ac44a8 !default; +$color-core-magenta-600: #c44eb9 !default; +$color-core-magenta-500: #db61db !default; +$color-core-magenta-400: #f282f5 !default; +$color-core-magenta-300: #edadf2 !default; +$color-core-magenta-200: #f4c4f7 !default; +$color-core-magenta-100: #f9e3fc !default; +$color-core-magenta-0: #fef0ff !default; +$color-core-purple-1100: #1d1d38 !default; +$color-core-purple-1000: #2d246b !default; +$color-core-purple-900: #483a9c !default; +$color-core-purple-800: #5e4eba !default; +$color-core-purple-700: #6f5ed3 !default; +$color-core-purple-600: #816fea !default; +$color-core-purple-500: #9180f4 !default; +$color-core-purple-400: #a193f2 !default; +$color-core-purple-300: #c1c1f7 !default; +$color-core-purple-200: #d8d7f9 !default; +$color-core-purple-100: #eaeaf9 !default; +$color-core-purple-0: #f2f2f9 !default; +$color-core-blue-1100: #002138 !default; +$color-core-blue-1000: #0a3960 !default; +$color-core-blue-900: #0c5689 !default; +$color-core-blue-800: #116daa !default; +$color-core-blue-700: #2079c3 !default; +$color-core-blue-600: #2b87d3 !default; +$color-core-blue-500: #3896e3 !default; +$color-core-blue-400: #56adf5 !default; +$color-core-blue-300: #a1d2f8 !default; +$color-core-blue-200: #c7e4f9 !default; +$color-core-blue-100: #dcf2ff !default; +$color-core-blue-0: #e9f8ff !default; +$color-core-aqua-1100: #002838 !default; +$color-core-aqua-1000: #083d4f !default; +$color-core-aqua-900: #035e73 !default; +$color-core-aqua-800: #0f6e84 !default; +$color-core-aqua-700: #0b8599 !default; +$color-core-aqua-600: #0797ae !default; +$color-core-aqua-500: #17b8ce !default; +$color-core-aqua-400: #33d6e2 !default; +$color-core-aqua-300: #76e5e2 !default; +$color-core-aqua-200: #a5f2f2 !default; +$color-core-aqua-100: #c5f9f9 !default; +$color-core-aqua-0: #d9fcfb !default; +$color-core-teal-1100: #002528 !default; +$color-core-teal-1000: #083f3f !default; +$color-core-teal-900: #026661 !default; +$color-core-teal-800: #067c7c !default; +$color-core-teal-700: #0b968f !default; +$color-core-teal-600: #00a99c !default; +$color-core-teal-500: #08c4b2 !default; +$color-core-teal-400: #24e0c5 !default; +$color-core-teal-300: #7dead5 !default; +$color-core-teal-200: #b3f2e6 !default; +$color-core-teal-100: #cdf7ef !default; +$color-core-teal-0: #e5f9f5 !default; +$color-core-green-1100: #002b20 !default; +$color-core-green-1000: #08422f !default; +$color-core-green-900: #006b40 !default; +$color-core-green-800: #008b46 !default; +$color-core-green-700: #0ca750 !default; +$color-core-green-600: #2bb656 !default; +$color-core-green-500: #59cb59 !default; +$color-core-green-400: #75dd66 !default; +$color-core-green-300: #98e58e !default; +$color-core-green-200: #c2f2bd !default; +$color-core-green-100: #d7f4d7 !default; +$color-core-green-0: #ebf9eb !default; +$color-font-success: $color-core-green-1000 !default; +$color-font-warning: $color-core-orange-1000 !default; +$color-font-danger: $color-core-red-1000 !default; +$color-font-tertiary: $color-core-neutral-800 !default; +$color-font-secondary: $color-core-neutral-900 !default; +$color-font-primary: $color-core-neutral-1100 !default; +$color-brand-secondary: $color-core-purple-700 !default; +$color-brand-primary: $color-core-aqua-700 !default; +$color-border-primary: $color-core-neutral-300 !default; +$color-background-info: $color-core-blue-0 !default; +$color-background-success: $color-core-green-0 !default; +$color-background-warning: $color-core-orange-0 !default; +$color-background-danger: $color-core-red-0 !default; +$color-background-tertiary: $color-core-neutral-200 !default; +$color-background-secondary: $color-core-neutral-100 !default; +$color-background-primary: $color-core-neutral-0 !default; +$color-font-interactive-disabled: $color-font-tertiary !default; +$color-font-interactive-active: $color-brand-secondary !default; +$color-font-interactive-hover: $color-brand-primary !default; +$color-font-interactive: $color-brand-primary !default; +$color-background-disabled: $color-background-tertiary !default; -exports[`integration scss scss/variables with filter and output references should match snapshot 1`] = ` -" -// Do not edit directly -// Generated on Sat, 01 Jan 2000 00:00:00 GMT +$design-system-tokens: ( + 'color': ( + 'background': ( + 'primary': $color-background-primary, + 'secondary': $color-background-secondary, + 'tertiary': $color-background-tertiary, + 'danger': $color-background-danger, + 'warning': $color-background-warning, + 'success': $color-background-success, + 'info': $color-background-info, + 'disabled': $color-background-disabled + ), + 'border': ( + 'primary': $color-border-primary, + 'secondary': ( -$color-background-info: $color-core-blue-0; -$color-background-success: $color-core-green-0; -$color-background-warning: $color-core-orange-0; -$color-background-danger: $color-core-red-0; -$color-background-tertiary: $color-core-neutral-200; -$color-background-secondary: $color-core-neutral-100; -$color-background-primary: $color-core-neutral-0 !default; -$color-background-disabled: $color-background-tertiary; -" + ), + 'tertiary': ( + + ) + ), + 'brand': ( + 'primary': $color-brand-primary, + 'secondary': $color-brand-secondary + ), + 'core': ( + 'green': ( + '0': $color-core-green-0, + '100': $color-core-green-100, + '200': $color-core-green-200, + '300': $color-core-green-300, + '400': $color-core-green-400, + '500': $color-core-green-500, + '600': $color-core-green-600, + '700': $color-core-green-700, + '800': $color-core-green-800, + '900': $color-core-green-900, + '1000': $color-core-green-1000, + '1100': $color-core-green-1100 + ), + 'teal': ( + '0': $color-core-teal-0, + '100': $color-core-teal-100, + '200': $color-core-teal-200, + '300': $color-core-teal-300, + '400': $color-core-teal-400, + '500': $color-core-teal-500, + '600': $color-core-teal-600, + '700': $color-core-teal-700, + '800': $color-core-teal-800, + '900': $color-core-teal-900, + '1000': $color-core-teal-1000, + '1100': $color-core-teal-1100 + ), + 'aqua': ( + '0': $color-core-aqua-0, + '100': $color-core-aqua-100, + '200': $color-core-aqua-200, + '300': $color-core-aqua-300, + '400': $color-core-aqua-400, + '500': $color-core-aqua-500, + '600': $color-core-aqua-600, + '700': $color-core-aqua-700, + '800': $color-core-aqua-800, + '900': $color-core-aqua-900, + '1000': $color-core-aqua-1000, + '1100': $color-core-aqua-1100 + ), + 'blue': ( + '0': $color-core-blue-0, + '100': $color-core-blue-100, + '200': $color-core-blue-200, + '300': $color-core-blue-300, + '400': $color-core-blue-400, + '500': $color-core-blue-500, + '600': $color-core-blue-600, + '700': $color-core-blue-700, + '800': $color-core-blue-800, + '900': $color-core-blue-900, + '1000': $color-core-blue-1000, + '1100': $color-core-blue-1100 + ), + 'purple': ( + '0': $color-core-purple-0, + '100': $color-core-purple-100, + '200': $color-core-purple-200, + '300': $color-core-purple-300, + '400': $color-core-purple-400, + '500': $color-core-purple-500, + '600': $color-core-purple-600, + '700': $color-core-purple-700, + '800': $color-core-purple-800, + '900': $color-core-purple-900, + '1000': $color-core-purple-1000, + '1100': $color-core-purple-1100 + ), + 'magenta': ( + '0': $color-core-magenta-0, + '100': $color-core-magenta-100, + '200': $color-core-magenta-200, + '300': $color-core-magenta-300, + '400': $color-core-magenta-400, + '500': $color-core-magenta-500, + '600': $color-core-magenta-600, + '700': $color-core-magenta-700, + '800': $color-core-magenta-800, + '900': $color-core-magenta-900, + '1000': $color-core-magenta-1000, + '1100': $color-core-magenta-1100 + ), + 'pink': ( + '0': $color-core-pink-0, + '100': $color-core-pink-100, + '200': $color-core-pink-200, + '300': $color-core-pink-300, + '400': $color-core-pink-400, + '500': $color-core-pink-500, + '600': $color-core-pink-600, + '700': $color-core-pink-700, + '800': $color-core-pink-800, + '900': $color-core-pink-900, + '1000': $color-core-pink-1000, + '1100': $color-core-pink-1100 + ), + 'red': ( + '0': $color-core-red-0, + '100': $color-core-red-100, + '200': $color-core-red-200, + '300': $color-core-red-300, + '400': $color-core-red-400, + '500': $color-core-red-500, + '600': $color-core-red-600, + '700': $color-core-red-700, + '800': $color-core-red-800, + '900': $color-core-red-900, + '1000': $color-core-red-1000, + '1100': $color-core-red-1100 + ), + 'orange': ( + '0': $color-core-orange-0, + '100': $color-core-orange-100, + '200': $color-core-orange-200, + '300': $color-core-orange-300, + '400': $color-core-orange-400, + '500': $color-core-orange-500, + '600': $color-core-orange-600, + '700': $color-core-orange-700, + '800': $color-core-orange-800, + '900': $color-core-orange-900, + '1000': $color-core-orange-1000, + '1100': $color-core-orange-1100 + ), + 'neutral': ( + '0': $color-core-neutral-0, + '100': $color-core-neutral-100, + '200': $color-core-neutral-200, + '300': $color-core-neutral-300, + '400': $color-core-neutral-400, + '500': $color-core-neutral-500, + '600': $color-core-neutral-600, + '700': $color-core-neutral-700, + '800': $color-core-neutral-800, + '900': $color-core-neutral-900, + '1000': $color-core-neutral-1000, + '1100': $color-core-neutral-1100 + ), + 'yellow': ( + '0': $color-core-yellow-0, + '100': $color-core-yellow-100, + '200': $color-core-yellow-200, + '300': $color-core-yellow-300, + '400': $color-core-yellow-400, + '500': $color-core-yellow-500, + '600': $color-core-yellow-600, + '700': $color-core-yellow-700, + '800': $color-core-yellow-800, + '900': $color-core-yellow-900, + '1000': $color-core-yellow-1000, + '1100': $color-core-yellow-1100 + ) + ), + 'font': ( + 'primary': $color-font-primary, + 'secondary': $color-font-secondary, + 'tertiary': $color-font-tertiary, + 'interactive': ( + '_': $color-font-interactive, + 'hover': $color-font-interactive-hover, + 'active': $color-font-interactive-active, + 'disabled': $color-font-interactive-disabled + ), + 'danger': $color-font-danger, + 'warning': $color-font-warning, + 'success': $color-font-success + ) + ), + 'size': ( + 'border': ( + 'radius': ( + 'large': $size-border-radius-large + ) + ), + 'font': ( + 'small': $size-font-small, + 'medium': $size-font-medium, + 'large': $size-font-large, + 'xl': $size-font-xl + ), + 'padding': ( + 'small': $size-padding-small, + 'medium': $size-padding-medium, + 'large': $size-padding-large, + 'xl': $size-padding-xl + ) + ) +); `; +/* end snapshot scss/map-deep with outputReferences should match snapshot */ -exports[`integration scss scss/variables with outputReferences should match snapshot 1`] = ` -" -// Do not edit directly -// Generated on Sat, 01 Jan 2000 00:00:00 GMT +snapshots["scss/map-deep without themeable should match snapshot"] = +` +/** + * Do not edit directly + * Generated on Sat, 01 Jan 2000 00:00:00 GMT + */ -$size-padding-xl: 1rem; -$size-padding-large: 1rem; -$size-padding-medium: 1rem; -$size-padding-small: 0.5rem; -$size-font-xl: 2.25rem; -$size-font-large: 1.5rem; -$size-font-medium: 1rem; -$size-font-small: 0.75rem; -$size-border-radius-large: 30rem; -$color-core-yellow-1100: #2d1a05; -$color-core-yellow-1000: #542a00; -$color-core-yellow-900: #944c0c; -$color-core-yellow-800: #ba7506; -$color-core-yellow-700: #dd9903; -$color-core-yellow-600: #ffbc00; -$color-core-yellow-500: #ffcd1c; -$color-core-yellow-400: #ffd943; -$color-core-yellow-300: #ffe16e; -$color-core-yellow-200: #ffe99a; -$color-core-yellow-100: #fdefcd; -$color-core-yellow-0: #fff8e2; -$color-core-neutral-1100: #040404; -$color-core-neutral-1000: #162020; -$color-core-neutral-900: #273333; -$color-core-neutral-800: #364141; -$color-core-neutral-700: #515e5f; -$color-core-neutral-600: #6e797a; -$color-core-neutral-500: #929a9b; -$color-core-neutral-400: #b0b6b7; -$color-core-neutral-300: #c8cccc; -$color-core-neutral-200: #dee1e1; -$color-core-neutral-100: #f3f4f4; -$color-core-neutral-0: #ffffff; -$color-core-orange-1100: #2d130e; -$color-core-orange-1000: #601700; -$color-core-orange-900: #962c0b; -$color-core-orange-800: #ce5511; -$color-core-orange-700: #ed7024; -$color-core-orange-600: #f57d33; -$color-core-orange-500: #fc8943; -$color-core-orange-400: #ff9c5d; -$color-core-orange-300: #ffb180; -$color-core-orange-200: #ffc6a4; -$color-core-orange-100: #fcdccc; -$color-core-orange-0: #ffede3; -$color-core-red-1100: #2b1111; -$color-core-red-1000: #6d1313; -$color-core-red-900: #992222; -$color-core-red-800: #c63434; -$color-core-red-700: #db3e3e; -$color-core-red-600: #ed4c42; -$color-core-red-500: #f76054; -$color-core-red-400: #ff7f6e; -$color-core-red-300: #ff9c8f; -$color-core-red-200: #ffb8b1; -$color-core-red-100: #ffd5d2; -$color-core-red-0: #ffeae9; -$color-core-pink-1100: #2b1721; -$color-core-pink-1000: #561231; -$color-core-pink-900: #931847; -$color-core-pink-800: #b22f5b; -$color-core-pink-700: #ce3665; -$color-core-pink-600: #e0447c; -$color-core-pink-500: #ef588b; -$color-core-pink-400: #ff76ae; -$color-core-pink-300: #ff95c1; -$color-core-pink-200: #ffb5d5; -$color-core-pink-100: #fcdbeb; -$color-core-pink-0: #ffe9f3; -$color-core-magenta-1100: #29192d; -$color-core-magenta-1000: #451551; -$color-core-magenta-900: #6c2277; -$color-core-magenta-800: #8f3896; -$color-core-magenta-700: #ac44a8; -$color-core-magenta-600: #c44eb9; -$color-core-magenta-500: #db61db; -$color-core-magenta-400: #f282f5; -$color-core-magenta-300: #edadf2; -$color-core-magenta-200: #f4c4f7; -$color-core-magenta-100: #f9e3fc; -$color-core-magenta-0: #fef0ff; -$color-core-purple-1100: #1d1d38; -$color-core-purple-1000: #2d246b; -$color-core-purple-900: #483a9c; -$color-core-purple-800: #5e4eba; -$color-core-purple-700: #6f5ed3; -$color-core-purple-600: #816fea; -$color-core-purple-500: #9180f4; -$color-core-purple-400: #a193f2; -$color-core-purple-300: #c1c1f7; -$color-core-purple-200: #d8d7f9; -$color-core-purple-100: #eaeaf9; -$color-core-purple-0: #f2f2f9; -$color-core-blue-1100: #002138; -$color-core-blue-1000: #0a3960; -$color-core-blue-900: #0c5689; -$color-core-blue-800: #116daa; -$color-core-blue-700: #2079c3; -$color-core-blue-600: #2b87d3; -$color-core-blue-500: #3896e3; -$color-core-blue-400: #56adf5; -$color-core-blue-300: #a1d2f8; -$color-core-blue-200: #c7e4f9; -$color-core-blue-100: #dcf2ff; -$color-core-blue-0: #e9f8ff; -$color-core-aqua-1100: #002838; -$color-core-aqua-1000: #083d4f; -$color-core-aqua-900: #035e73; -$color-core-aqua-800: #0f6e84; -$color-core-aqua-700: #0b8599; -$color-core-aqua-600: #0797ae; -$color-core-aqua-500: #17b8ce; -$color-core-aqua-400: #33d6e2; -$color-core-aqua-300: #76e5e2; -$color-core-aqua-200: #a5f2f2; -$color-core-aqua-100: #c5f9f9; -$color-core-aqua-0: #d9fcfb; -$color-core-teal-1100: #002528; -$color-core-teal-1000: #083f3f; -$color-core-teal-900: #026661; -$color-core-teal-800: #067c7c; -$color-core-teal-700: #0b968f; -$color-core-teal-600: #00a99c; -$color-core-teal-500: #08c4b2; -$color-core-teal-400: #24e0c5; -$color-core-teal-300: #7dead5; -$color-core-teal-200: #b3f2e6; -$color-core-teal-100: #cdf7ef; -$color-core-teal-0: #e5f9f5; -$color-core-green-1100: #002b20; -$color-core-green-1000: #08422f; -$color-core-green-900: #006b40; -$color-core-green-800: #008b46; -$color-core-green-700: #0ca750; -$color-core-green-600: #2bb656; -$color-core-green-500: #59cb59; -$color-core-green-400: #75dd66; -$color-core-green-300: #98e58e; -$color-core-green-200: #c2f2bd; -$color-core-green-100: #d7f4d7; +$color-background-primary: #ffffff !default; +$color-background-secondary: #f3f4f4; +$color-background-tertiary: #dee1e1; +$color-background-danger: #ffeae9; +$color-background-warning: #ffede3; +$color-background-success: #ebf9eb; +$color-background-info: #e9f8ff; +$color-background-disabled: #dee1e1; +$color-border-primary: #c8cccc; +$color-brand-primary: #0b8599; +$color-brand-secondary: #6f5ed3; $color-core-green-0: #ebf9eb; -$color-font-success: $color-core-green-1000; -$color-font-warning: $color-core-orange-1000; -$color-font-danger: $color-core-red-1000; -$color-font-tertiary: $color-core-neutral-800; -$color-font-secondary: $color-core-neutral-900; -$color-font-primary: $color-core-neutral-1100; -$color-brand-secondary: $color-core-purple-700; -$color-brand-primary: $color-core-aqua-700; -$color-border-primary: $color-core-neutral-300; -$color-background-info: $color-core-blue-0; -$color-background-success: $color-core-green-0; -$color-background-warning: $color-core-orange-0; -$color-background-danger: $color-core-red-0; -$color-background-tertiary: $color-core-neutral-200; -$color-background-secondary: $color-core-neutral-100; -$color-background-primary: $color-core-neutral-0 !default; -$color-font-interactive-disabled: $color-font-tertiary; -$color-font-interactive-active: $color-brand-secondary; -$color-font-interactive-hover: $color-brand-primary; -$color-font-interactive: $color-brand-primary; -$color-background-disabled: $color-background-tertiary; -" +$color-core-green-100: #d7f4d7; +$color-core-green-200: #c2f2bd; +$color-core-green-300: #98e58e; +$color-core-green-400: #75dd66; +$color-core-green-500: #59cb59; +$color-core-green-600: #2bb656; +$color-core-green-700: #0ca750; +$color-core-green-800: #008b46; +$color-core-green-900: #006b40; +$color-core-green-1000: #08422f; +$color-core-green-1100: #002b20; +$color-core-teal-0: #e5f9f5; +$color-core-teal-100: #cdf7ef; +$color-core-teal-200: #b3f2e6; +$color-core-teal-300: #7dead5; +$color-core-teal-400: #24e0c5; +$color-core-teal-500: #08c4b2; +$color-core-teal-600: #00a99c; +$color-core-teal-700: #0b968f; +$color-core-teal-800: #067c7c; +$color-core-teal-900: #026661; +$color-core-teal-1000: #083f3f; +$color-core-teal-1100: #002528; +$color-core-aqua-0: #d9fcfb; +$color-core-aqua-100: #c5f9f9; +$color-core-aqua-200: #a5f2f2; +$color-core-aqua-300: #76e5e2; +$color-core-aqua-400: #33d6e2; +$color-core-aqua-500: #17b8ce; +$color-core-aqua-600: #0797ae; +$color-core-aqua-700: #0b8599; +$color-core-aqua-800: #0f6e84; +$color-core-aqua-900: #035e73; +$color-core-aqua-1000: #083d4f; +$color-core-aqua-1100: #002838; +$color-core-blue-0: #e9f8ff; +$color-core-blue-100: #dcf2ff; +$color-core-blue-200: #c7e4f9; +$color-core-blue-300: #a1d2f8; +$color-core-blue-400: #56adf5; +$color-core-blue-500: #3896e3; +$color-core-blue-600: #2b87d3; +$color-core-blue-700: #2079c3; +$color-core-blue-800: #116daa; +$color-core-blue-900: #0c5689; +$color-core-blue-1000: #0a3960; +$color-core-blue-1100: #002138; +$color-core-purple-0: #f2f2f9; +$color-core-purple-100: #eaeaf9; +$color-core-purple-200: #d8d7f9; +$color-core-purple-300: #c1c1f7; +$color-core-purple-400: #a193f2; +$color-core-purple-500: #9180f4; +$color-core-purple-600: #816fea; +$color-core-purple-700: #6f5ed3; +$color-core-purple-800: #5e4eba; +$color-core-purple-900: #483a9c; +$color-core-purple-1000: #2d246b; +$color-core-purple-1100: #1d1d38; +$color-core-magenta-0: #fef0ff; +$color-core-magenta-100: #f9e3fc; +$color-core-magenta-200: #f4c4f7; +$color-core-magenta-300: #edadf2; +$color-core-magenta-400: #f282f5; +$color-core-magenta-500: #db61db; +$color-core-magenta-600: #c44eb9; +$color-core-magenta-700: #ac44a8; +$color-core-magenta-800: #8f3896; +$color-core-magenta-900: #6c2277; +$color-core-magenta-1000: #451551; +$color-core-magenta-1100: #29192d; +$color-core-pink-0: #ffe9f3; +$color-core-pink-100: #fcdbeb; +$color-core-pink-200: #ffb5d5; +$color-core-pink-300: #ff95c1; +$color-core-pink-400: #ff76ae; +$color-core-pink-500: #ef588b; +$color-core-pink-600: #e0447c; +$color-core-pink-700: #ce3665; +$color-core-pink-800: #b22f5b; +$color-core-pink-900: #931847; +$color-core-pink-1000: #561231; +$color-core-pink-1100: #2b1721; +$color-core-red-0: #ffeae9; +$color-core-red-100: #ffd5d2; +$color-core-red-200: #ffb8b1; +$color-core-red-300: #ff9c8f; +$color-core-red-400: #ff7f6e; +$color-core-red-500: #f76054; +$color-core-red-600: #ed4c42; +$color-core-red-700: #db3e3e; +$color-core-red-800: #c63434; +$color-core-red-900: #992222; +$color-core-red-1000: #6d1313; +$color-core-red-1100: #2b1111; +$color-core-orange-0: #ffede3; +$color-core-orange-100: #fcdccc; +$color-core-orange-200: #ffc6a4; +$color-core-orange-300: #ffb180; +$color-core-orange-400: #ff9c5d; +$color-core-orange-500: #fc8943; +$color-core-orange-600: #f57d33; +$color-core-orange-700: #ed7024; +$color-core-orange-800: #ce5511; +$color-core-orange-900: #962c0b; +$color-core-orange-1000: #601700; +$color-core-orange-1100: #2d130e; +$color-core-neutral-0: #ffffff; +$color-core-neutral-100: #f3f4f4; +$color-core-neutral-200: #dee1e1; +$color-core-neutral-300: #c8cccc; +$color-core-neutral-400: #b0b6b7; +$color-core-neutral-500: #929a9b; +$color-core-neutral-600: #6e797a; +$color-core-neutral-700: #515e5f; +$color-core-neutral-800: #364141; +$color-core-neutral-900: #273333; +$color-core-neutral-1000: #162020; +$color-core-neutral-1100: #040404; +$color-core-yellow-0: #fff8e2; +$color-core-yellow-100: #fdefcd; +$color-core-yellow-200: #ffe99a; +$color-core-yellow-300: #ffe16e; +$color-core-yellow-400: #ffd943; +$color-core-yellow-500: #ffcd1c; +$color-core-yellow-600: #ffbc00; +$color-core-yellow-700: #dd9903; +$color-core-yellow-800: #ba7506; +$color-core-yellow-900: #944c0c; +$color-core-yellow-1000: #542a00; +$color-core-yellow-1100: #2d1a05; +$color-font-primary: #040404; +$color-font-secondary: #273333; +$color-font-tertiary: #364141; +$color-font-interactive: #0b8599; +$color-font-interactive-hover: #0b8599; +$color-font-interactive-active: #6f5ed3; +$color-font-interactive-disabled: #364141; +$color-font-danger: #6d1313; +$color-font-warning: #601700; +$color-font-success: #08422f; +$size-border-radius-large: 30rem; +$size-font-small: 0.75rem; +$size-font-medium: 1rem; +$size-font-large: 1.5rem; +$size-font-xl: 2.25rem; +$size-padding-small: 0.5rem; +$size-padding-medium: 1rem; +$size-padding-large: 1rem; +$size-padding-xl: 1rem; + +$design-system-tokens: ( + 'color': ( + 'background': ( + 'primary': $color-background-primary, + 'secondary': $color-background-secondary, + 'tertiary': $color-background-tertiary, + 'danger': $color-background-danger, + 'warning': $color-background-warning, + 'success': $color-background-success, + 'info': $color-background-info, + 'disabled': $color-background-disabled + ), + 'border': ( + 'primary': $color-border-primary, + 'secondary': ( + + ), + 'tertiary': ( + + ) + ), + 'brand': ( + 'primary': $color-brand-primary, + 'secondary': $color-brand-secondary + ), + 'core': ( + 'green': ( + '0': $color-core-green-0, + '100': $color-core-green-100, + '200': $color-core-green-200, + '300': $color-core-green-300, + '400': $color-core-green-400, + '500': $color-core-green-500, + '600': $color-core-green-600, + '700': $color-core-green-700, + '800': $color-core-green-800, + '900': $color-core-green-900, + '1000': $color-core-green-1000, + '1100': $color-core-green-1100 + ), + 'teal': ( + '0': $color-core-teal-0, + '100': $color-core-teal-100, + '200': $color-core-teal-200, + '300': $color-core-teal-300, + '400': $color-core-teal-400, + '500': $color-core-teal-500, + '600': $color-core-teal-600, + '700': $color-core-teal-700, + '800': $color-core-teal-800, + '900': $color-core-teal-900, + '1000': $color-core-teal-1000, + '1100': $color-core-teal-1100 + ), + 'aqua': ( + '0': $color-core-aqua-0, + '100': $color-core-aqua-100, + '200': $color-core-aqua-200, + '300': $color-core-aqua-300, + '400': $color-core-aqua-400, + '500': $color-core-aqua-500, + '600': $color-core-aqua-600, + '700': $color-core-aqua-700, + '800': $color-core-aqua-800, + '900': $color-core-aqua-900, + '1000': $color-core-aqua-1000, + '1100': $color-core-aqua-1100 + ), + 'blue': ( + '0': $color-core-blue-0, + '100': $color-core-blue-100, + '200': $color-core-blue-200, + '300': $color-core-blue-300, + '400': $color-core-blue-400, + '500': $color-core-blue-500, + '600': $color-core-blue-600, + '700': $color-core-blue-700, + '800': $color-core-blue-800, + '900': $color-core-blue-900, + '1000': $color-core-blue-1000, + '1100': $color-core-blue-1100 + ), + 'purple': ( + '0': $color-core-purple-0, + '100': $color-core-purple-100, + '200': $color-core-purple-200, + '300': $color-core-purple-300, + '400': $color-core-purple-400, + '500': $color-core-purple-500, + '600': $color-core-purple-600, + '700': $color-core-purple-700, + '800': $color-core-purple-800, + '900': $color-core-purple-900, + '1000': $color-core-purple-1000, + '1100': $color-core-purple-1100 + ), + 'magenta': ( + '0': $color-core-magenta-0, + '100': $color-core-magenta-100, + '200': $color-core-magenta-200, + '300': $color-core-magenta-300, + '400': $color-core-magenta-400, + '500': $color-core-magenta-500, + '600': $color-core-magenta-600, + '700': $color-core-magenta-700, + '800': $color-core-magenta-800, + '900': $color-core-magenta-900, + '1000': $color-core-magenta-1000, + '1100': $color-core-magenta-1100 + ), + 'pink': ( + '0': $color-core-pink-0, + '100': $color-core-pink-100, + '200': $color-core-pink-200, + '300': $color-core-pink-300, + '400': $color-core-pink-400, + '500': $color-core-pink-500, + '600': $color-core-pink-600, + '700': $color-core-pink-700, + '800': $color-core-pink-800, + '900': $color-core-pink-900, + '1000': $color-core-pink-1000, + '1100': $color-core-pink-1100 + ), + 'red': ( + '0': $color-core-red-0, + '100': $color-core-red-100, + '200': $color-core-red-200, + '300': $color-core-red-300, + '400': $color-core-red-400, + '500': $color-core-red-500, + '600': $color-core-red-600, + '700': $color-core-red-700, + '800': $color-core-red-800, + '900': $color-core-red-900, + '1000': $color-core-red-1000, + '1100': $color-core-red-1100 + ), + 'orange': ( + '0': $color-core-orange-0, + '100': $color-core-orange-100, + '200': $color-core-orange-200, + '300': $color-core-orange-300, + '400': $color-core-orange-400, + '500': $color-core-orange-500, + '600': $color-core-orange-600, + '700': $color-core-orange-700, + '800': $color-core-orange-800, + '900': $color-core-orange-900, + '1000': $color-core-orange-1000, + '1100': $color-core-orange-1100 + ), + 'neutral': ( + '0': $color-core-neutral-0, + '100': $color-core-neutral-100, + '200': $color-core-neutral-200, + '300': $color-core-neutral-300, + '400': $color-core-neutral-400, + '500': $color-core-neutral-500, + '600': $color-core-neutral-600, + '700': $color-core-neutral-700, + '800': $color-core-neutral-800, + '900': $color-core-neutral-900, + '1000': $color-core-neutral-1000, + '1100': $color-core-neutral-1100 + ), + 'yellow': ( + '0': $color-core-yellow-0, + '100': $color-core-yellow-100, + '200': $color-core-yellow-200, + '300': $color-core-yellow-300, + '400': $color-core-yellow-400, + '500': $color-core-yellow-500, + '600': $color-core-yellow-600, + '700': $color-core-yellow-700, + '800': $color-core-yellow-800, + '900': $color-core-yellow-900, + '1000': $color-core-yellow-1000, + '1100': $color-core-yellow-1100 + ) + ), + 'font': ( + 'primary': $color-font-primary, + 'secondary': $color-font-secondary, + 'tertiary': $color-font-tertiary, + 'interactive': ( + '_': $color-font-interactive, + 'hover': $color-font-interactive-hover, + 'active': $color-font-interactive-active, + 'disabled': $color-font-interactive-disabled + ), + 'danger': $color-font-danger, + 'warning': $color-font-warning, + 'success': $color-font-success + ) + ), + 'size': ( + 'border': ( + 'radius': ( + 'large': $size-border-radius-large + ) + ), + 'font': ( + 'small': $size-font-small, + 'medium': $size-font-medium, + 'large': $size-font-large, + 'xl': $size-font-xl + ), + 'padding': ( + 'small': $size-padding-small, + 'medium': $size-padding-medium, + 'large': $size-padding-large, + 'xl': $size-padding-xl + ) + ) +); `; +/* end snapshot scss/map-deep without themeable should match snapshot */ -exports[`integration scss scss/variables with themeable should match snapshot 1`] = ` -" -// Do not edit directly -// Generated on Sat, 01 Jan 2000 00:00:00 GMT - -$color-background-primary: #ffffff !default; -$color-background-secondary: #f3f4f4 !default; -$color-background-tertiary: #dee1e1 !default; -$color-background-danger: #ffeae9 !default; -$color-background-warning: #ffede3 !default; -$color-background-success: #ebf9eb !default; -$color-background-info: #e9f8ff !default; -$color-background-disabled: #dee1e1 !default; -$color-border-primary: #c8cccc !default; -$color-brand-primary: #0b8599 !default; -$color-brand-secondary: #6f5ed3 !default; -$color-core-green-0: #ebf9eb !default; -$color-core-green-100: #d7f4d7 !default; -$color-core-green-200: #c2f2bd !default; -$color-core-green-300: #98e58e !default; -$color-core-green-400: #75dd66 !default; -$color-core-green-500: #59cb59 !default; -$color-core-green-600: #2bb656 !default; -$color-core-green-700: #0ca750 !default; -$color-core-green-800: #008b46 !default; -$color-core-green-900: #006b40 !default; -$color-core-green-1000: #08422f !default; -$color-core-green-1100: #002b20 !default; -$color-core-teal-0: #e5f9f5 !default; -$color-core-teal-100: #cdf7ef !default; -$color-core-teal-200: #b3f2e6 !default; -$color-core-teal-300: #7dead5 !default; -$color-core-teal-400: #24e0c5 !default; -$color-core-teal-500: #08c4b2 !default; -$color-core-teal-600: #00a99c !default; -$color-core-teal-700: #0b968f !default; -$color-core-teal-800: #067c7c !default; -$color-core-teal-900: #026661 !default; -$color-core-teal-1000: #083f3f !default; -$color-core-teal-1100: #002528 !default; -$color-core-aqua-0: #d9fcfb !default; -$color-core-aqua-100: #c5f9f9 !default; -$color-core-aqua-200: #a5f2f2 !default; -$color-core-aqua-300: #76e5e2 !default; -$color-core-aqua-400: #33d6e2 !default; -$color-core-aqua-500: #17b8ce !default; -$color-core-aqua-600: #0797ae !default; -$color-core-aqua-700: #0b8599 !default; -$color-core-aqua-800: #0f6e84 !default; -$color-core-aqua-900: #035e73 !default; -$color-core-aqua-1000: #083d4f !default; -$color-core-aqua-1100: #002838 !default; -$color-core-blue-0: #e9f8ff !default; -$color-core-blue-100: #dcf2ff !default; -$color-core-blue-200: #c7e4f9 !default; -$color-core-blue-300: #a1d2f8 !default; -$color-core-blue-400: #56adf5 !default; -$color-core-blue-500: #3896e3 !default; -$color-core-blue-600: #2b87d3 !default; -$color-core-blue-700: #2079c3 !default; -$color-core-blue-800: #116daa !default; -$color-core-blue-900: #0c5689 !default; -$color-core-blue-1000: #0a3960 !default; -$color-core-blue-1100: #002138 !default; -$color-core-purple-0: #f2f2f9 !default; -$color-core-purple-100: #eaeaf9 !default; -$color-core-purple-200: #d8d7f9 !default; -$color-core-purple-300: #c1c1f7 !default; -$color-core-purple-400: #a193f2 !default; -$color-core-purple-500: #9180f4 !default; -$color-core-purple-600: #816fea !default; -$color-core-purple-700: #6f5ed3 !default; -$color-core-purple-800: #5e4eba !default; -$color-core-purple-900: #483a9c !default; -$color-core-purple-1000: #2d246b !default; -$color-core-purple-1100: #1d1d38 !default; -$color-core-magenta-0: #fef0ff !default; -$color-core-magenta-100: #f9e3fc !default; -$color-core-magenta-200: #f4c4f7 !default; -$color-core-magenta-300: #edadf2 !default; -$color-core-magenta-400: #f282f5 !default; -$color-core-magenta-500: #db61db !default; -$color-core-magenta-600: #c44eb9 !default; -$color-core-magenta-700: #ac44a8 !default; -$color-core-magenta-800: #8f3896 !default; -$color-core-magenta-900: #6c2277 !default; -$color-core-magenta-1000: #451551 !default; -$color-core-magenta-1100: #29192d !default; -$color-core-pink-0: #ffe9f3 !default; -$color-core-pink-100: #fcdbeb !default; -$color-core-pink-200: #ffb5d5 !default; -$color-core-pink-300: #ff95c1 !default; -$color-core-pink-400: #ff76ae !default; -$color-core-pink-500: #ef588b !default; -$color-core-pink-600: #e0447c !default; -$color-core-pink-700: #ce3665 !default; -$color-core-pink-800: #b22f5b !default; -$color-core-pink-900: #931847 !default; -$color-core-pink-1000: #561231 !default; -$color-core-pink-1100: #2b1721 !default; -$color-core-red-0: #ffeae9 !default; -$color-core-red-100: #ffd5d2 !default; -$color-core-red-200: #ffb8b1 !default; -$color-core-red-300: #ff9c8f !default; -$color-core-red-400: #ff7f6e !default; -$color-core-red-500: #f76054 !default; -$color-core-red-600: #ed4c42 !default; -$color-core-red-700: #db3e3e !default; -$color-core-red-800: #c63434 !default; -$color-core-red-900: #992222 !default; -$color-core-red-1000: #6d1313 !default; -$color-core-red-1100: #2b1111 !default; -$color-core-orange-0: #ffede3 !default; -$color-core-orange-100: #fcdccc !default; -$color-core-orange-200: #ffc6a4 !default; -$color-core-orange-300: #ffb180 !default; -$color-core-orange-400: #ff9c5d !default; -$color-core-orange-500: #fc8943 !default; -$color-core-orange-600: #f57d33 !default; -$color-core-orange-700: #ed7024 !default; -$color-core-orange-800: #ce5511 !default; -$color-core-orange-900: #962c0b !default; -$color-core-orange-1000: #601700 !default; -$color-core-orange-1100: #2d130e !default; -$color-core-neutral-0: #ffffff !default; -$color-core-neutral-100: #f3f4f4 !default; -$color-core-neutral-200: #dee1e1 !default; -$color-core-neutral-300: #c8cccc !default; -$color-core-neutral-400: #b0b6b7 !default; -$color-core-neutral-500: #929a9b !default; -$color-core-neutral-600: #6e797a !default; -$color-core-neutral-700: #515e5f !default; -$color-core-neutral-800: #364141 !default; -$color-core-neutral-900: #273333 !default; -$color-core-neutral-1000: #162020 !default; -$color-core-neutral-1100: #040404 !default; -$color-core-yellow-0: #fff8e2 !default; -$color-core-yellow-100: #fdefcd !default; -$color-core-yellow-200: #ffe99a !default; -$color-core-yellow-300: #ffe16e !default; -$color-core-yellow-400: #ffd943 !default; -$color-core-yellow-500: #ffcd1c !default; -$color-core-yellow-600: #ffbc00 !default; -$color-core-yellow-700: #dd9903 !default; -$color-core-yellow-800: #ba7506 !default; -$color-core-yellow-900: #944c0c !default; -$color-core-yellow-1000: #542a00 !default; -$color-core-yellow-1100: #2d1a05 !default; -$color-font-primary: #040404 !default; -$color-font-secondary: #273333 !default; -$color-font-tertiary: #364141 !default; -$color-font-interactive: #0b8599 !default; -$color-font-interactive-hover: #0b8599 !default; -$color-font-interactive-active: #6f5ed3 !default; -$color-font-interactive-disabled: #364141 !default; -$color-font-danger: #6d1313 !default; -$color-font-warning: #601700 !default; -$color-font-success: #08422f !default; -$size-border-radius-large: 30rem !default; -$size-font-small: 0.75rem !default; -$size-font-medium: 1rem !default; -$size-font-large: 1.5rem !default; -$size-font-xl: 2.25rem !default; -$size-padding-small: 0.5rem !default; -$size-padding-medium: 1rem !default; -$size-padding-large: 1rem !default; -$size-padding-xl: 1rem !default; -" -`; diff --git a/__integration__/__snapshots__/showFileHeader.test.js.snap b/__integration__/__snapshots__/showFileHeader.test.js.snap deleted file mode 100644 index 9a1173c45..000000000 --- a/__integration__/__snapshots__/showFileHeader.test.js.snap +++ /dev/null @@ -1,51 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`integration showFileHeader with platform options set to false should not show file header if no file options set 1`] = ` -":root { - --size-padding-small: 0.5rem; - --size-padding-medium: 1rem; - --size-padding-large: 1rem; - --size-padding-xl: 1rem; -} -" -`; - -exports[`integration showFileHeader with platform options set to false should show file header if file options set to true 1`] = ` -"/** - * Do not edit directly - * Generated on Sat, 01 Jan 2000 00:00:00 GMT - */ - -:root { - --size-padding-small: 0.5rem; - --size-padding-medium: 1rem; - --size-padding-large: 1rem; - --size-padding-xl: 1rem; -} -" -`; - -exports[`integration showFileHeader without platform options should not show file header if file options set to false 1`] = ` -":root { - --size-padding-small: 0.5rem; - --size-padding-medium: 1rem; - --size-padding-large: 1rem; - --size-padding-xl: 1rem; -} -" -`; - -exports[`integration showFileHeader without platform options should show file header if no file options set 1`] = ` -"/** - * Do not edit directly - * Generated on Sat, 01 Jan 2000 00:00:00 GMT - */ - -:root { - --size-padding-small: 0.5rem; - --size-padding-medium: 1rem; - --size-padding-large: 1rem; - --size-padding-xl: 1rem; -} -" -`; diff --git a/__integration__/__snapshots__/showFileHeader.test.snap.js b/__integration__/__snapshots__/showFileHeader.test.snap.js new file mode 100644 index 000000000..fbc4e91b2 --- /dev/null +++ b/__integration__/__snapshots__/showFileHeader.test.snap.js @@ -0,0 +1,53 @@ +/* @web/test-runner snapshot v1 */ +export const snapshots = {}; + +snapshots["without platform options should show file header if no file options set"] = +`/** + * Do not edit directly + * Generated on Sat, 01 Jan 2000 00:00:00 GMT + */ + +:root { + --size-padding-small: 0.5rem; + --size-padding-medium: 1rem; + --size-padding-large: 1rem; + --size-padding-xl: 1rem; +} +`; +/* end snapshot without platform options should show file header if no file options set */ + +snapshots["without platform options should not show file header if file options set to false"] = +`:root { + --size-padding-small: 0.5rem; + --size-padding-medium: 1rem; + --size-padding-large: 1rem; + --size-padding-xl: 1rem; +} +`; +/* end snapshot without platform options should not show file header if file options set to false */ + +snapshots["with platform options set to false should not show file header if no file options set"] = +`:root { + --size-padding-small: 0.5rem; + --size-padding-medium: 1rem; + --size-padding-large: 1rem; + --size-padding-xl: 1rem; +} +`; +/* end snapshot with platform options set to false should not show file header if no file options set */ + +snapshots["with platform options set to false should show file header if file options set to true"] = +`/** + * Do not edit directly + * Generated on Sat, 01 Jan 2000 00:00:00 GMT + */ + +:root { + --size-padding-small: 0.5rem; + --size-padding-medium: 1rem; + --size-padding-large: 1rem; + --size-padding-xl: 1rem; +} +`; +/* end snapshot with platform options set to false should show file header if file options set to true */ + diff --git a/__integration__/__snapshots__/swift.test.snap.js b/__integration__/__snapshots__/swift.test.snap.js new file mode 100644 index 000000000..c05b6401c --- /dev/null +++ b/__integration__/__snapshots__/swift.test.snap.js @@ -0,0 +1,359 @@ +/* @web/test-runner snapshot v1 */ +export const snapshots = {}; + +snapshots["ios-swift/class.swift should match snapshot"] = +` +// +// style_dictionary.swift +// + +// Do not edit directly +// Generated on Sat, 01 Jan 2000 00:00:00 GMT + + +import UIKit + +public class StyleDictionary { + public static let colorBackgroundDanger = UIColor(red: 1.000, green: 0.918, blue: 0.914, alpha: 1) + public static let colorBackgroundDisabled = UIColor(red: 0.871, green: 0.882, blue: 0.882, alpha: 1) + public static let colorBackgroundInfo = UIColor(red: 0.914, green: 0.973, blue: 1.000, alpha: 1) + public static let colorBackgroundPrimary = UIColor(red: 1.000, green: 1.000, blue: 1.000, alpha: 1) + public static let colorBackgroundSecondary = UIColor(red: 0.953, green: 0.957, blue: 0.957, alpha: 1) + public static let colorBackgroundSuccess = UIColor(red: 0.922, green: 0.976, blue: 0.922, alpha: 1) + public static let colorBackgroundTertiary = UIColor(red: 0.871, green: 0.882, blue: 0.882, alpha: 1) + public static let colorBackgroundWarning = UIColor(red: 1.000, green: 0.929, blue: 0.890, alpha: 1) + public static let colorBorderPrimary = UIColor(red: 0.784, green: 0.800, blue: 0.800, alpha: 1) + public static let colorBrandPrimary = UIColor(red: 0.043, green: 0.522, blue: 0.600, alpha: 1) + public static let colorBrandSecondary = UIColor(red: 0.435, green: 0.369, blue: 0.827, alpha: 1) + public static let colorCoreAqua0 = UIColor(red: 0.851, green: 0.988, blue: 0.984, alpha: 1) + public static let colorCoreAqua100 = UIColor(red: 0.773, green: 0.976, blue: 0.976, alpha: 1) + public static let colorCoreAqua1000 = UIColor(red: 0.031, green: 0.239, blue: 0.310, alpha: 1) + public static let colorCoreAqua1100 = UIColor(red: 0.000, green: 0.157, blue: 0.220, alpha: 1) + public static let colorCoreAqua200 = UIColor(red: 0.647, green: 0.949, blue: 0.949, alpha: 1) + public static let colorCoreAqua300 = UIColor(red: 0.463, green: 0.898, blue: 0.886, alpha: 1) + public static let colorCoreAqua400 = UIColor(red: 0.200, green: 0.839, blue: 0.886, alpha: 1) + public static let colorCoreAqua500 = UIColor(red: 0.090, green: 0.722, blue: 0.808, alpha: 1) + public static let colorCoreAqua600 = UIColor(red: 0.027, green: 0.592, blue: 0.682, alpha: 1) + public static let colorCoreAqua700 = UIColor(red: 0.043, green: 0.522, blue: 0.600, alpha: 1) + public static let colorCoreAqua800 = UIColor(red: 0.059, green: 0.431, blue: 0.518, alpha: 1) + public static let colorCoreAqua900 = UIColor(red: 0.012, green: 0.369, blue: 0.451, alpha: 1) + public static let colorCoreBlue0 = UIColor(red: 0.914, green: 0.973, blue: 1.000, alpha: 1) + public static let colorCoreBlue100 = UIColor(red: 0.863, green: 0.949, blue: 1.000, alpha: 1) + public static let colorCoreBlue1000 = UIColor(red: 0.039, green: 0.224, blue: 0.376, alpha: 1) + public static let colorCoreBlue1100 = UIColor(red: 0.000, green: 0.129, blue: 0.220, alpha: 1) + public static let colorCoreBlue200 = UIColor(red: 0.780, green: 0.894, blue: 0.976, alpha: 1) + public static let colorCoreBlue300 = UIColor(red: 0.631, green: 0.824, blue: 0.973, alpha: 1) + public static let colorCoreBlue400 = UIColor(red: 0.337, green: 0.678, blue: 0.961, alpha: 1) + public static let colorCoreBlue500 = UIColor(red: 0.220, green: 0.588, blue: 0.890, alpha: 1) + public static let colorCoreBlue600 = UIColor(red: 0.169, green: 0.529, blue: 0.827, alpha: 1) + public static let colorCoreBlue700 = UIColor(red: 0.125, green: 0.475, blue: 0.765, alpha: 1) + public static let colorCoreBlue800 = UIColor(red: 0.067, green: 0.427, blue: 0.667, alpha: 1) + public static let colorCoreBlue900 = UIColor(red: 0.047, green: 0.337, blue: 0.537, alpha: 1) + public static let colorCoreGreen0 = UIColor(red: 0.922, green: 0.976, blue: 0.922, alpha: 1) + public static let colorCoreGreen100 = UIColor(red: 0.843, green: 0.957, blue: 0.843, alpha: 1) + public static let colorCoreGreen1000 = UIColor(red: 0.031, green: 0.259, blue: 0.184, alpha: 1) + public static let colorCoreGreen1100 = UIColor(red: 0.000, green: 0.169, blue: 0.125, alpha: 1) + public static let colorCoreGreen200 = UIColor(red: 0.761, green: 0.949, blue: 0.741, alpha: 1) + public static let colorCoreGreen300 = UIColor(red: 0.596, green: 0.898, blue: 0.557, alpha: 1) + public static let colorCoreGreen400 = UIColor(red: 0.459, green: 0.867, blue: 0.400, alpha: 1) + public static let colorCoreGreen500 = UIColor(red: 0.349, green: 0.796, blue: 0.349, alpha: 1) + public static let colorCoreGreen600 = UIColor(red: 0.169, green: 0.714, blue: 0.337, alpha: 1) + public static let colorCoreGreen700 = UIColor(red: 0.047, green: 0.655, blue: 0.314, alpha: 1) + public static let colorCoreGreen800 = UIColor(red: 0.000, green: 0.545, blue: 0.275, alpha: 1) + public static let colorCoreGreen900 = UIColor(red: 0.000, green: 0.420, blue: 0.251, alpha: 1) + public static let colorCoreMagenta0 = UIColor(red: 0.996, green: 0.941, blue: 1.000, alpha: 1) + public static let colorCoreMagenta100 = UIColor(red: 0.976, green: 0.890, blue: 0.988, alpha: 1) + public static let colorCoreMagenta1000 = UIColor(red: 0.271, green: 0.082, blue: 0.318, alpha: 1) + public static let colorCoreMagenta1100 = UIColor(red: 0.161, green: 0.098, blue: 0.176, alpha: 1) + public static let colorCoreMagenta200 = UIColor(red: 0.957, green: 0.769, blue: 0.969, alpha: 1) + public static let colorCoreMagenta300 = UIColor(red: 0.929, green: 0.678, blue: 0.949, alpha: 1) + public static let colorCoreMagenta400 = UIColor(red: 0.949, green: 0.510, blue: 0.961, alpha: 1) + public static let colorCoreMagenta500 = UIColor(red: 0.859, green: 0.380, blue: 0.859, alpha: 1) + public static let colorCoreMagenta600 = UIColor(red: 0.769, green: 0.306, blue: 0.725, alpha: 1) + public static let colorCoreMagenta700 = UIColor(red: 0.675, green: 0.267, blue: 0.659, alpha: 1) + public static let colorCoreMagenta800 = UIColor(red: 0.561, green: 0.220, blue: 0.588, alpha: 1) + public static let colorCoreMagenta900 = UIColor(red: 0.424, green: 0.133, blue: 0.467, alpha: 1) + public static let colorCoreNeutral0 = UIColor(red: 1.000, green: 1.000, blue: 1.000, alpha: 1) + public static let colorCoreNeutral100 = UIColor(red: 0.953, green: 0.957, blue: 0.957, alpha: 1) + public static let colorCoreNeutral1000 = UIColor(red: 0.086, green: 0.125, blue: 0.125, alpha: 1) + public static let colorCoreNeutral1100 = UIColor(red: 0.016, green: 0.016, blue: 0.016, alpha: 1) + public static let colorCoreNeutral200 = UIColor(red: 0.871, green: 0.882, blue: 0.882, alpha: 1) + public static let colorCoreNeutral300 = UIColor(red: 0.784, green: 0.800, blue: 0.800, alpha: 1) + public static let colorCoreNeutral400 = UIColor(red: 0.690, green: 0.714, blue: 0.718, alpha: 1) + public static let colorCoreNeutral500 = UIColor(red: 0.573, green: 0.604, blue: 0.608, alpha: 1) + public static let colorCoreNeutral600 = UIColor(red: 0.431, green: 0.475, blue: 0.478, alpha: 1) + public static let colorCoreNeutral700 = UIColor(red: 0.318, green: 0.369, blue: 0.373, alpha: 1) + public static let colorCoreNeutral800 = UIColor(red: 0.212, green: 0.255, blue: 0.255, alpha: 1) + public static let colorCoreNeutral900 = UIColor(red: 0.153, green: 0.200, blue: 0.200, alpha: 1) + public static let colorCoreOrange0 = UIColor(red: 1.000, green: 0.929, blue: 0.890, alpha: 1) + public static let colorCoreOrange100 = UIColor(red: 0.988, green: 0.863, blue: 0.800, alpha: 1) + public static let colorCoreOrange1000 = UIColor(red: 0.376, green: 0.090, blue: 0.000, alpha: 1) + public static let colorCoreOrange1100 = UIColor(red: 0.176, green: 0.075, blue: 0.055, alpha: 1) + public static let colorCoreOrange200 = UIColor(red: 1.000, green: 0.776, blue: 0.643, alpha: 1) + public static let colorCoreOrange300 = UIColor(red: 1.000, green: 0.694, blue: 0.502, alpha: 1) + public static let colorCoreOrange400 = UIColor(red: 1.000, green: 0.612, blue: 0.365, alpha: 1) + public static let colorCoreOrange500 = UIColor(red: 0.988, green: 0.537, blue: 0.263, alpha: 1) + public static let colorCoreOrange600 = UIColor(red: 0.961, green: 0.490, blue: 0.200, alpha: 1) + public static let colorCoreOrange700 = UIColor(red: 0.929, green: 0.439, blue: 0.141, alpha: 1) + public static let colorCoreOrange800 = UIColor(red: 0.808, green: 0.333, blue: 0.067, alpha: 1) + public static let colorCoreOrange900 = UIColor(red: 0.588, green: 0.173, blue: 0.043, alpha: 1) + public static let colorCorePink0 = UIColor(red: 1.000, green: 0.914, blue: 0.953, alpha: 1) + public static let colorCorePink100 = UIColor(red: 0.988, green: 0.859, blue: 0.922, alpha: 1) + public static let colorCorePink1000 = UIColor(red: 0.337, green: 0.071, blue: 0.192, alpha: 1) + public static let colorCorePink1100 = UIColor(red: 0.169, green: 0.090, blue: 0.129, alpha: 1) + public static let colorCorePink200 = UIColor(red: 1.000, green: 0.710, blue: 0.835, alpha: 1) + public static let colorCorePink300 = UIColor(red: 1.000, green: 0.584, blue: 0.757, alpha: 1) + public static let colorCorePink400 = UIColor(red: 1.000, green: 0.463, blue: 0.682, alpha: 1) + public static let colorCorePink500 = UIColor(red: 0.937, green: 0.345, blue: 0.545, alpha: 1) + public static let colorCorePink600 = UIColor(red: 0.878, green: 0.267, blue: 0.486, alpha: 1) + public static let colorCorePink700 = UIColor(red: 0.808, green: 0.212, blue: 0.396, alpha: 1) + public static let colorCorePink800 = UIColor(red: 0.698, green: 0.184, blue: 0.357, alpha: 1) + public static let colorCorePink900 = UIColor(red: 0.576, green: 0.094, blue: 0.278, alpha: 1) + public static let colorCorePurple0 = UIColor(red: 0.949, green: 0.949, blue: 0.976, alpha: 1) + public static let colorCorePurple100 = UIColor(red: 0.918, green: 0.918, blue: 0.976, alpha: 1) + public static let colorCorePurple1000 = UIColor(red: 0.176, green: 0.141, blue: 0.420, alpha: 1) + public static let colorCorePurple1100 = UIColor(red: 0.114, green: 0.114, blue: 0.220, alpha: 1) + public static let colorCorePurple200 = UIColor(red: 0.847, green: 0.843, blue: 0.976, alpha: 1) + public static let colorCorePurple300 = UIColor(red: 0.757, green: 0.757, blue: 0.969, alpha: 1) + public static let colorCorePurple400 = UIColor(red: 0.631, green: 0.576, blue: 0.949, alpha: 1) + public static let colorCorePurple500 = UIColor(red: 0.569, green: 0.502, blue: 0.957, alpha: 1) + public static let colorCorePurple600 = UIColor(red: 0.506, green: 0.435, blue: 0.918, alpha: 1) + public static let colorCorePurple700 = UIColor(red: 0.435, green: 0.369, blue: 0.827, alpha: 1) + public static let colorCorePurple800 = UIColor(red: 0.369, green: 0.306, blue: 0.729, alpha: 1) + public static let colorCorePurple900 = UIColor(red: 0.282, green: 0.227, blue: 0.612, alpha: 1) + public static let colorCoreRed0 = UIColor(red: 1.000, green: 0.918, blue: 0.914, alpha: 1) + public static let colorCoreRed100 = UIColor(red: 1.000, green: 0.835, blue: 0.824, alpha: 1) + public static let colorCoreRed1000 = UIColor(red: 0.427, green: 0.075, blue: 0.075, alpha: 1) + public static let colorCoreRed1100 = UIColor(red: 0.169, green: 0.067, blue: 0.067, alpha: 1) + public static let colorCoreRed200 = UIColor(red: 1.000, green: 0.722, blue: 0.694, alpha: 1) + public static let colorCoreRed300 = UIColor(red: 1.000, green: 0.612, blue: 0.561, alpha: 1) + public static let colorCoreRed400 = UIColor(red: 1.000, green: 0.498, blue: 0.431, alpha: 1) + public static let colorCoreRed500 = UIColor(red: 0.969, green: 0.376, blue: 0.329, alpha: 1) + public static let colorCoreRed600 = UIColor(red: 0.929, green: 0.298, blue: 0.259, alpha: 1) + public static let colorCoreRed700 = UIColor(red: 0.859, green: 0.243, blue: 0.243, alpha: 1) + public static let colorCoreRed800 = UIColor(red: 0.776, green: 0.204, blue: 0.204, alpha: 1) + public static let colorCoreRed900 = UIColor(red: 0.600, green: 0.133, blue: 0.133, alpha: 1) + public static let colorCoreTeal0 = UIColor(red: 0.898, green: 0.976, blue: 0.961, alpha: 1) + public static let colorCoreTeal100 = UIColor(red: 0.804, green: 0.969, blue: 0.937, alpha: 1) + public static let colorCoreTeal1000 = UIColor(red: 0.031, green: 0.247, blue: 0.247, alpha: 1) + public static let colorCoreTeal1100 = UIColor(red: 0.000, green: 0.145, blue: 0.157, alpha: 1) + public static let colorCoreTeal200 = UIColor(red: 0.702, green: 0.949, blue: 0.902, alpha: 1) + public static let colorCoreTeal300 = UIColor(red: 0.490, green: 0.918, blue: 0.835, alpha: 1) + public static let colorCoreTeal400 = UIColor(red: 0.141, green: 0.878, blue: 0.773, alpha: 1) + public static let colorCoreTeal500 = UIColor(red: 0.031, green: 0.769, blue: 0.698, alpha: 1) + public static let colorCoreTeal600 = UIColor(red: 0.000, green: 0.663, blue: 0.612, alpha: 1) + public static let colorCoreTeal700 = UIColor(red: 0.043, green: 0.588, blue: 0.561, alpha: 1) + public static let colorCoreTeal800 = UIColor(red: 0.024, green: 0.486, blue: 0.486, alpha: 1) + public static let colorCoreTeal900 = UIColor(red: 0.008, green: 0.400, blue: 0.380, alpha: 1) + public static let colorCoreYellow0 = UIColor(red: 1.000, green: 0.973, blue: 0.886, alpha: 1) + public static let colorCoreYellow100 = UIColor(red: 0.992, green: 0.937, blue: 0.804, alpha: 1) + public static let colorCoreYellow1000 = UIColor(red: 0.329, green: 0.165, blue: 0.000, alpha: 1) + public static let colorCoreYellow1100 = UIColor(red: 0.176, green: 0.102, blue: 0.020, alpha: 1) + public static let colorCoreYellow200 = UIColor(red: 1.000, green: 0.914, blue: 0.604, alpha: 1) + public static let colorCoreYellow300 = UIColor(red: 1.000, green: 0.882, blue: 0.431, alpha: 1) + public static let colorCoreYellow400 = UIColor(red: 1.000, green: 0.851, blue: 0.263, alpha: 1) + public static let colorCoreYellow500 = UIColor(red: 1.000, green: 0.804, blue: 0.110, alpha: 1) + public static let colorCoreYellow600 = UIColor(red: 1.000, green: 0.737, blue: 0.000, alpha: 1) + public static let colorCoreYellow700 = UIColor(red: 0.867, green: 0.600, blue: 0.012, alpha: 1) + public static let colorCoreYellow800 = UIColor(red: 0.729, green: 0.459, blue: 0.024, alpha: 1) + public static let colorCoreYellow900 = UIColor(red: 0.580, green: 0.298, blue: 0.047, alpha: 1) + public static let colorFontDanger = UIColor(red: 0.427, green: 0.075, blue: 0.075, alpha: 1) + public static let colorFontInteractive = UIColor(red: 0.043, green: 0.522, blue: 0.600, alpha: 1) + public static let colorFontInteractiveActive = UIColor(red: 0.435, green: 0.369, blue: 0.827, alpha: 1) + public static let colorFontInteractiveDisabled = UIColor(red: 0.212, green: 0.255, blue: 0.255, alpha: 1) + public static let colorFontInteractiveHover = UIColor(red: 0.043, green: 0.522, blue: 0.600, alpha: 1) + public static let colorFontPrimary = UIColor(red: 0.016, green: 0.016, blue: 0.016, alpha: 1) + public static let colorFontSecondary = UIColor(red: 0.153, green: 0.200, blue: 0.200, alpha: 1) + public static let colorFontSuccess = UIColor(red: 0.031, green: 0.259, blue: 0.184, alpha: 1) + public static let colorFontTertiary = UIColor(red: 0.212, green: 0.255, blue: 0.255, alpha: 1) + public static let colorFontWarning = UIColor(red: 0.376, green: 0.090, blue: 0.000, alpha: 1) + public static let sizeBorderRadiusLarge = CGFloat(480.00) + public static let sizeFontLarge = CGFloat(24.00) + public static let sizeFontMedium = CGFloat(16.00) + public static let sizeFontSmall = CGFloat(12.00) + public static let sizeFontXl = CGFloat(36.00) + public static let sizePaddingLarge = CGFloat(16.00) + public static let sizePaddingMedium = CGFloat(16.00) + public static let sizePaddingSmall = CGFloat(8.00) + public static let sizePaddingXl = CGFloat(16.00) +}`; +/* end snapshot ios-swift/class.swift should match snapshot */ + +snapshots["ios-swift/class.swift with references should match snapshot"] = +` +// +// style_dictionary_with_references.swift +// + +// Do not edit directly +// Generated on Sat, 01 Jan 2000 00:00:00 GMT + + +import UIKit + +public class StyleDictionary { + public static let sizePaddingXl = CGFloat(16.00) + public static let sizePaddingLarge = CGFloat(16.00) + public static let sizePaddingMedium = CGFloat(16.00) + public static let sizePaddingSmall = CGFloat(8.00) + public static let sizeFontXl = CGFloat(36.00) + public static let sizeFontLarge = CGFloat(24.00) + public static let sizeFontMedium = CGFloat(16.00) + public static let sizeFontSmall = CGFloat(12.00) + public static let sizeBorderRadiusLarge = CGFloat(480.00) + public static let colorCoreYellow1100 = UIColor(red: 0.176, green: 0.102, blue: 0.020, alpha: 1) + public static let colorCoreYellow1000 = UIColor(red: 0.329, green: 0.165, blue: 0.000, alpha: 1) + public static let colorCoreYellow900 = UIColor(red: 0.580, green: 0.298, blue: 0.047, alpha: 1) + public static let colorCoreYellow800 = UIColor(red: 0.729, green: 0.459, blue: 0.024, alpha: 1) + public static let colorCoreYellow700 = UIColor(red: 0.867, green: 0.600, blue: 0.012, alpha: 1) + public static let colorCoreYellow600 = UIColor(red: 1.000, green: 0.737, blue: 0.000, alpha: 1) + public static let colorCoreYellow500 = UIColor(red: 1.000, green: 0.804, blue: 0.110, alpha: 1) + public static let colorCoreYellow400 = UIColor(red: 1.000, green: 0.851, blue: 0.263, alpha: 1) + public static let colorCoreYellow300 = UIColor(red: 1.000, green: 0.882, blue: 0.431, alpha: 1) + public static let colorCoreYellow200 = UIColor(red: 1.000, green: 0.914, blue: 0.604, alpha: 1) + public static let colorCoreYellow100 = UIColor(red: 0.992, green: 0.937, blue: 0.804, alpha: 1) + public static let colorCoreYellow0 = UIColor(red: 1.000, green: 0.973, blue: 0.886, alpha: 1) + public static let colorCoreNeutral1100 = UIColor(red: 0.016, green: 0.016, blue: 0.016, alpha: 1) + public static let colorCoreNeutral1000 = UIColor(red: 0.086, green: 0.125, blue: 0.125, alpha: 1) + public static let colorCoreNeutral900 = UIColor(red: 0.153, green: 0.200, blue: 0.200, alpha: 1) + public static let colorCoreNeutral800 = UIColor(red: 0.212, green: 0.255, blue: 0.255, alpha: 1) + public static let colorCoreNeutral700 = UIColor(red: 0.318, green: 0.369, blue: 0.373, alpha: 1) + public static let colorCoreNeutral600 = UIColor(red: 0.431, green: 0.475, blue: 0.478, alpha: 1) + public static let colorCoreNeutral500 = UIColor(red: 0.573, green: 0.604, blue: 0.608, alpha: 1) + public static let colorCoreNeutral400 = UIColor(red: 0.690, green: 0.714, blue: 0.718, alpha: 1) + public static let colorCoreNeutral300 = UIColor(red: 0.784, green: 0.800, blue: 0.800, alpha: 1) + public static let colorCoreNeutral200 = UIColor(red: 0.871, green: 0.882, blue: 0.882, alpha: 1) + public static let colorCoreNeutral100 = UIColor(red: 0.953, green: 0.957, blue: 0.957, alpha: 1) + public static let colorCoreNeutral0 = UIColor(red: 1.000, green: 1.000, blue: 1.000, alpha: 1) + public static let colorCoreOrange1100 = UIColor(red: 0.176, green: 0.075, blue: 0.055, alpha: 1) + public static let colorCoreOrange1000 = UIColor(red: 0.376, green: 0.090, blue: 0.000, alpha: 1) + public static let colorCoreOrange900 = UIColor(red: 0.588, green: 0.173, blue: 0.043, alpha: 1) + public static let colorCoreOrange800 = UIColor(red: 0.808, green: 0.333, blue: 0.067, alpha: 1) + public static let colorCoreOrange700 = UIColor(red: 0.929, green: 0.439, blue: 0.141, alpha: 1) + public static let colorCoreOrange600 = UIColor(red: 0.961, green: 0.490, blue: 0.200, alpha: 1) + public static let colorCoreOrange500 = UIColor(red: 0.988, green: 0.537, blue: 0.263, alpha: 1) + public static let colorCoreOrange400 = UIColor(red: 1.000, green: 0.612, blue: 0.365, alpha: 1) + public static let colorCoreOrange300 = UIColor(red: 1.000, green: 0.694, blue: 0.502, alpha: 1) + public static let colorCoreOrange200 = UIColor(red: 1.000, green: 0.776, blue: 0.643, alpha: 1) + public static let colorCoreOrange100 = UIColor(red: 0.988, green: 0.863, blue: 0.800, alpha: 1) + public static let colorCoreOrange0 = UIColor(red: 1.000, green: 0.929, blue: 0.890, alpha: 1) + public static let colorCoreRed1100 = UIColor(red: 0.169, green: 0.067, blue: 0.067, alpha: 1) + public static let colorCoreRed1000 = UIColor(red: 0.427, green: 0.075, blue: 0.075, alpha: 1) + public static let colorCoreRed900 = UIColor(red: 0.600, green: 0.133, blue: 0.133, alpha: 1) + public static let colorCoreRed800 = UIColor(red: 0.776, green: 0.204, blue: 0.204, alpha: 1) + public static let colorCoreRed700 = UIColor(red: 0.859, green: 0.243, blue: 0.243, alpha: 1) + public static let colorCoreRed600 = UIColor(red: 0.929, green: 0.298, blue: 0.259, alpha: 1) + public static let colorCoreRed500 = UIColor(red: 0.969, green: 0.376, blue: 0.329, alpha: 1) + public static let colorCoreRed400 = UIColor(red: 1.000, green: 0.498, blue: 0.431, alpha: 1) + public static let colorCoreRed300 = UIColor(red: 1.000, green: 0.612, blue: 0.561, alpha: 1) + public static let colorCoreRed200 = UIColor(red: 1.000, green: 0.722, blue: 0.694, alpha: 1) + public static let colorCoreRed100 = UIColor(red: 1.000, green: 0.835, blue: 0.824, alpha: 1) + public static let colorCoreRed0 = UIColor(red: 1.000, green: 0.918, blue: 0.914, alpha: 1) + public static let colorCorePink1100 = UIColor(red: 0.169, green: 0.090, blue: 0.129, alpha: 1) + public static let colorCorePink1000 = UIColor(red: 0.337, green: 0.071, blue: 0.192, alpha: 1) + public static let colorCorePink900 = UIColor(red: 0.576, green: 0.094, blue: 0.278, alpha: 1) + public static let colorCorePink800 = UIColor(red: 0.698, green: 0.184, blue: 0.357, alpha: 1) + public static let colorCorePink700 = UIColor(red: 0.808, green: 0.212, blue: 0.396, alpha: 1) + public static let colorCorePink600 = UIColor(red: 0.878, green: 0.267, blue: 0.486, alpha: 1) + public static let colorCorePink500 = UIColor(red: 0.937, green: 0.345, blue: 0.545, alpha: 1) + public static let colorCorePink400 = UIColor(red: 1.000, green: 0.463, blue: 0.682, alpha: 1) + public static let colorCorePink300 = UIColor(red: 1.000, green: 0.584, blue: 0.757, alpha: 1) + public static let colorCorePink200 = UIColor(red: 1.000, green: 0.710, blue: 0.835, alpha: 1) + public static let colorCorePink100 = UIColor(red: 0.988, green: 0.859, blue: 0.922, alpha: 1) + public static let colorCorePink0 = UIColor(red: 1.000, green: 0.914, blue: 0.953, alpha: 1) + public static let colorCoreMagenta1100 = UIColor(red: 0.161, green: 0.098, blue: 0.176, alpha: 1) + public static let colorCoreMagenta1000 = UIColor(red: 0.271, green: 0.082, blue: 0.318, alpha: 1) + public static let colorCoreMagenta900 = UIColor(red: 0.424, green: 0.133, blue: 0.467, alpha: 1) + public static let colorCoreMagenta800 = UIColor(red: 0.561, green: 0.220, blue: 0.588, alpha: 1) + public static let colorCoreMagenta700 = UIColor(red: 0.675, green: 0.267, blue: 0.659, alpha: 1) + public static let colorCoreMagenta600 = UIColor(red: 0.769, green: 0.306, blue: 0.725, alpha: 1) + public static let colorCoreMagenta500 = UIColor(red: 0.859, green: 0.380, blue: 0.859, alpha: 1) + public static let colorCoreMagenta400 = UIColor(red: 0.949, green: 0.510, blue: 0.961, alpha: 1) + public static let colorCoreMagenta300 = UIColor(red: 0.929, green: 0.678, blue: 0.949, alpha: 1) + public static let colorCoreMagenta200 = UIColor(red: 0.957, green: 0.769, blue: 0.969, alpha: 1) + public static let colorCoreMagenta100 = UIColor(red: 0.976, green: 0.890, blue: 0.988, alpha: 1) + public static let colorCoreMagenta0 = UIColor(red: 0.996, green: 0.941, blue: 1.000, alpha: 1) + public static let colorCorePurple1100 = UIColor(red: 0.114, green: 0.114, blue: 0.220, alpha: 1) + public static let colorCorePurple1000 = UIColor(red: 0.176, green: 0.141, blue: 0.420, alpha: 1) + public static let colorCorePurple900 = UIColor(red: 0.282, green: 0.227, blue: 0.612, alpha: 1) + public static let colorCorePurple800 = UIColor(red: 0.369, green: 0.306, blue: 0.729, alpha: 1) + public static let colorCorePurple700 = UIColor(red: 0.435, green: 0.369, blue: 0.827, alpha: 1) + public static let colorCorePurple600 = UIColor(red: 0.506, green: 0.435, blue: 0.918, alpha: 1) + public static let colorCorePurple500 = UIColor(red: 0.569, green: 0.502, blue: 0.957, alpha: 1) + public static let colorCorePurple400 = UIColor(red: 0.631, green: 0.576, blue: 0.949, alpha: 1) + public static let colorCorePurple300 = UIColor(red: 0.757, green: 0.757, blue: 0.969, alpha: 1) + public static let colorCorePurple200 = UIColor(red: 0.847, green: 0.843, blue: 0.976, alpha: 1) + public static let colorCorePurple100 = UIColor(red: 0.918, green: 0.918, blue: 0.976, alpha: 1) + public static let colorCorePurple0 = UIColor(red: 0.949, green: 0.949, blue: 0.976, alpha: 1) + public static let colorCoreBlue1100 = UIColor(red: 0.000, green: 0.129, blue: 0.220, alpha: 1) + public static let colorCoreBlue1000 = UIColor(red: 0.039, green: 0.224, blue: 0.376, alpha: 1) + public static let colorCoreBlue900 = UIColor(red: 0.047, green: 0.337, blue: 0.537, alpha: 1) + public static let colorCoreBlue800 = UIColor(red: 0.067, green: 0.427, blue: 0.667, alpha: 1) + public static let colorCoreBlue700 = UIColor(red: 0.125, green: 0.475, blue: 0.765, alpha: 1) + public static let colorCoreBlue600 = UIColor(red: 0.169, green: 0.529, blue: 0.827, alpha: 1) + public static let colorCoreBlue500 = UIColor(red: 0.220, green: 0.588, blue: 0.890, alpha: 1) + public static let colorCoreBlue400 = UIColor(red: 0.337, green: 0.678, blue: 0.961, alpha: 1) + public static let colorCoreBlue300 = UIColor(red: 0.631, green: 0.824, blue: 0.973, alpha: 1) + public static let colorCoreBlue200 = UIColor(red: 0.780, green: 0.894, blue: 0.976, alpha: 1) + public static let colorCoreBlue100 = UIColor(red: 0.863, green: 0.949, blue: 1.000, alpha: 1) + public static let colorCoreBlue0 = UIColor(red: 0.914, green: 0.973, blue: 1.000, alpha: 1) + public static let colorCoreAqua1100 = UIColor(red: 0.000, green: 0.157, blue: 0.220, alpha: 1) + public static let colorCoreAqua1000 = UIColor(red: 0.031, green: 0.239, blue: 0.310, alpha: 1) + public static let colorCoreAqua900 = UIColor(red: 0.012, green: 0.369, blue: 0.451, alpha: 1) + public static let colorCoreAqua800 = UIColor(red: 0.059, green: 0.431, blue: 0.518, alpha: 1) + public static let colorCoreAqua700 = UIColor(red: 0.043, green: 0.522, blue: 0.600, alpha: 1) + public static let colorCoreAqua600 = UIColor(red: 0.027, green: 0.592, blue: 0.682, alpha: 1) + public static let colorCoreAqua500 = UIColor(red: 0.090, green: 0.722, blue: 0.808, alpha: 1) + public static let colorCoreAqua400 = UIColor(red: 0.200, green: 0.839, blue: 0.886, alpha: 1) + public static let colorCoreAqua300 = UIColor(red: 0.463, green: 0.898, blue: 0.886, alpha: 1) + public static let colorCoreAqua200 = UIColor(red: 0.647, green: 0.949, blue: 0.949, alpha: 1) + public static let colorCoreAqua100 = UIColor(red: 0.773, green: 0.976, blue: 0.976, alpha: 1) + public static let colorCoreAqua0 = UIColor(red: 0.851, green: 0.988, blue: 0.984, alpha: 1) + public static let colorCoreTeal1100 = UIColor(red: 0.000, green: 0.145, blue: 0.157, alpha: 1) + public static let colorCoreTeal1000 = UIColor(red: 0.031, green: 0.247, blue: 0.247, alpha: 1) + public static let colorCoreTeal900 = UIColor(red: 0.008, green: 0.400, blue: 0.380, alpha: 1) + public static let colorCoreTeal800 = UIColor(red: 0.024, green: 0.486, blue: 0.486, alpha: 1) + public static let colorCoreTeal700 = UIColor(red: 0.043, green: 0.588, blue: 0.561, alpha: 1) + public static let colorCoreTeal600 = UIColor(red: 0.000, green: 0.663, blue: 0.612, alpha: 1) + public static let colorCoreTeal500 = UIColor(red: 0.031, green: 0.769, blue: 0.698, alpha: 1) + public static let colorCoreTeal400 = UIColor(red: 0.141, green: 0.878, blue: 0.773, alpha: 1) + public static let colorCoreTeal300 = UIColor(red: 0.490, green: 0.918, blue: 0.835, alpha: 1) + public static let colorCoreTeal200 = UIColor(red: 0.702, green: 0.949, blue: 0.902, alpha: 1) + public static let colorCoreTeal100 = UIColor(red: 0.804, green: 0.969, blue: 0.937, alpha: 1) + public static let colorCoreTeal0 = UIColor(red: 0.898, green: 0.976, blue: 0.961, alpha: 1) + public static let colorCoreGreen1100 = UIColor(red: 0.000, green: 0.169, blue: 0.125, alpha: 1) + public static let colorCoreGreen1000 = UIColor(red: 0.031, green: 0.259, blue: 0.184, alpha: 1) + public static let colorCoreGreen900 = UIColor(red: 0.000, green: 0.420, blue: 0.251, alpha: 1) + public static let colorCoreGreen800 = UIColor(red: 0.000, green: 0.545, blue: 0.275, alpha: 1) + public static let colorCoreGreen700 = UIColor(red: 0.047, green: 0.655, blue: 0.314, alpha: 1) + public static let colorCoreGreen600 = UIColor(red: 0.169, green: 0.714, blue: 0.337, alpha: 1) + public static let colorCoreGreen500 = UIColor(red: 0.349, green: 0.796, blue: 0.349, alpha: 1) + public static let colorCoreGreen400 = UIColor(red: 0.459, green: 0.867, blue: 0.400, alpha: 1) + public static let colorCoreGreen300 = UIColor(red: 0.596, green: 0.898, blue: 0.557, alpha: 1) + public static let colorCoreGreen200 = UIColor(red: 0.761, green: 0.949, blue: 0.741, alpha: 1) + public static let colorCoreGreen100 = UIColor(red: 0.843, green: 0.957, blue: 0.843, alpha: 1) + public static let colorCoreGreen0 = UIColor(red: 0.922, green: 0.976, blue: 0.922, alpha: 1) + public static let colorFontSuccess = colorCoreGreen1000 + public static let colorFontWarning = colorCoreOrange1000 + public static let colorFontDanger = colorCoreRed1000 + public static let colorFontTertiary = colorCoreNeutral800 + public static let colorFontSecondary = colorCoreNeutral900 + public static let colorFontPrimary = colorCoreNeutral1100 + public static let colorBrandSecondary = colorCorePurple700 + public static let colorBrandPrimary = colorCoreAqua700 + public static let colorBorderPrimary = colorCoreNeutral300 + public static let colorBackgroundInfo = colorCoreBlue0 + public static let colorBackgroundSuccess = colorCoreGreen0 + public static let colorBackgroundWarning = colorCoreOrange0 + public static let colorBackgroundDanger = colorCoreRed0 + public static let colorBackgroundTertiary = colorCoreNeutral200 + public static let colorBackgroundSecondary = colorCoreNeutral100 + public static let colorBackgroundPrimary = colorCoreNeutral0 + public static let colorFontInteractiveDisabled = colorFontTertiary + public static let colorFontInteractiveActive = colorBrandSecondary + public static let colorFontInteractiveHover = colorBrandPrimary + public static let colorFontInteractive = colorBrandPrimary + public static let colorBackgroundDisabled = colorBackgroundTertiary +}`; +/* end snapshot ios-swift/class.swift with references should match snapshot */ + diff --git a/__integration__/_constants.js b/__integration__/_constants.js index e5629ac05..d7588175a 100644 --- a/__integration__/_constants.js +++ b/__integration__/_constants.js @@ -1,18 +1,13 @@ -module.exports = { - buildPath: `__integration__/build/`, - cleanConsoleOutput: (str) => { - const arr = str - .split(`\n`) - // Remove ANSI stuff from the console output so we get human-readable strings - // https://github.com/chalk/ansi-regex/blob/main/index.js#L3 - .map((s) => - s - .replace( - /[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, - '', - ) - .trim(), - ); - return arr.join(`\n`); - }, +export const buildPath = `__integration__/build/`; +export const cleanConsoleOutput = (str) => { + const arr = str + .split(`\n`) + // Remove ANSI stuff from the console output so we get human-readable strings + // https://github.com/chalk/ansi-regex/blob/main/index.js#L3 + .map((s) => + s + .replace(/[\u001b\u009b][[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><]/g, '') + .trim(), + ); + return arr.join(`\n`); }; diff --git a/__integration__/android.test.js b/__integration__/android.test.js index 0f008c4c9..4856ebd5e 100644 --- a/__integration__/android.test.js +++ b/__integration__/android.test.js @@ -10,14 +10,19 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ - -const fs = require('fs-extra'); -const StyleDictionary = require('../index'); -const { buildPath } = require('./_constants'); +import { expect } from 'chai'; +import StyleDictionary from 'style-dictionary'; +import { fs } from 'style-dictionary/fs'; +import { buildPath } from './_constants.js'; +import { clearOutput } from '../__tests__/__helpers.js'; describe('integration', () => { - describe('android', () => { - StyleDictionary.extend({ + afterEach(() => { + clearOutput(buildPath); + }); + + describe('android', async () => { + const sd = new StyleDictionary({ source: [`__integration__/tokens/**/*.json?(c)`], platforms: { android: { @@ -45,15 +50,16 @@ describe('integration', () => { ], }, }, - }).buildAllPlatforms(); + }); + await sd.buildAllPlatforms(); describe(`android/resources`, () => { const output = fs.readFileSync(`${buildPath}resources.xml`, { encoding: 'UTF-8', }); - it(`should match snapshot`, () => { - expect(output).toMatchSnapshot(); + it(`should match snapshot`, async () => { + await expect(output).to.matchSnapshot(); }); describe(`with references`, () => { @@ -61,8 +67,8 @@ describe('integration', () => { encoding: 'UTF-8', }); - it(`should match snapshot`, () => { - expect(output).toMatchSnapshot(); + it(`should match snapshot`, async () => { + await expect(output).to.matchSnapshot(); }); }); @@ -71,14 +77,10 @@ describe('integration', () => { encoding: 'UTF-8', }); - it(`should match snapshot`, () => { - expect(output).toMatchSnapshot(); + it(`should match snapshot`, async () => { + await expect(output).to.matchSnapshot(); }); }); }); }); }); - -afterAll(() => { - fs.emptyDirSync(buildPath); -}); diff --git a/__integration__/compose.test.js b/__integration__/compose.test.js index d62ecb010..7c87fc3de 100644 --- a/__integration__/compose.test.js +++ b/__integration__/compose.test.js @@ -10,14 +10,19 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ - -const fs = require('fs-extra'); -const StyleDictionary = require('../index'); -const { buildPath } = require('./_constants'); +import { expect } from 'chai'; +import StyleDictionary from 'style-dictionary'; +import { fs } from 'style-dictionary/fs'; +import { buildPath } from './_constants.js'; +import { clearOutput } from '../__tests__/__helpers.js'; describe('integration', () => { - describe('compose', () => { - StyleDictionary.extend({ + afterEach(() => { + clearOutput(buildPath); + }); + + describe('compose', async () => { + const sd = new StyleDictionary({ source: [`__integration__/tokens/**/*.json?(c)`], platforms: { compose: { @@ -42,15 +47,16 @@ describe('integration', () => { ], }, }, - }).buildAllPlatforms(); + }); + await sd.buildAllPlatforms(); describe(`compose/object`, () => { const output = fs.readFileSync(`${buildPath}StyleDictionary.kt`, { encoding: `UTF-8`, }); - it(`should match snapshot`, () => { - expect(output).toMatchSnapshot(); + it(`should match snapshot`, async () => { + await expect(output).to.matchSnapshot(); }); describe(`with references`, () => { @@ -58,14 +64,10 @@ describe('integration', () => { encoding: `UTF-8`, }); - it(`should match snapshot`, () => { - expect(output).toMatchSnapshot(); + it(`should match snapshot`, async () => { + await expect(output).to.matchSnapshot(); }); }); }); }); }); - -afterAll(() => { - fs.emptyDirSync(buildPath); -}); diff --git a/__integration__/css.test.js b/__integration__/css.test.js index 23d70da72..777720ee5 100644 --- a/__integration__/css.test.js +++ b/__integration__/css.test.js @@ -10,14 +10,19 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ - -const fs = require('fs-extra'); -const StyleDictionary = require('../index'); -const { buildPath } = require('./_constants'); +import { expect } from 'chai'; +import StyleDictionary from 'style-dictionary'; +import { fs } from 'style-dictionary/fs'; +import { buildPath } from './_constants.js'; +import { clearOutput } from '../__tests__/__helpers.js'; describe('integration', () => { - describe('css', () => { - StyleDictionary.extend({ + afterEach(() => { + clearOutput(buildPath); + }); + + describe('css', async () => { + const sd = new StyleDictionary({ source: [`__integration__/tokens/**/*.json?(c)`], // Testing proper string interpolation with multiple references here. // This is a CSS/web-specific thing so only including them in this @@ -56,22 +61,23 @@ describe('integration', () => { ], }, }, - }).buildAllPlatforms(); + }); + await sd.buildAllPlatforms(); describe('css/variables', () => { const output = fs.readFileSync(`${buildPath}variables.css`, { encoding: 'UTF-8', }); - it(`should match snapshot`, () => { - expect(output).toMatchSnapshot(); + it(`should match snapshot`, async () => { + await expect(output).to.matchSnapshot(); }); describe(`with references`, () => { const output = fs.readFileSync(`${buildPath}variablesWithReferences.css`, { encoding: 'UTF-8', }); - it(`should match snapshot`, () => { - expect(output).toMatchSnapshot(); + it(`should match snapshot`, async () => { + await expect(output).to.matchSnapshot(); }); }); @@ -79,8 +85,8 @@ describe('integration', () => { const output = fs.readFileSync(`${buildPath}variablesWithSelector.css`, { encoding: 'UTF-8', }); - it(`should match snapshot`, () => { - expect(output).toMatchSnapshot(); + it(`should match snapshot`, async () => { + await expect(output).to.matchSnapshot(); }); }); @@ -88,7 +94,3 @@ describe('integration', () => { }); }); }); - -afterAll(() => { - fs.emptyDirSync(buildPath); -}); diff --git a/__integration__/customFileHeader.test.js b/__integration__/customFileHeader.test.js index e28320452..77526da56 100644 --- a/__integration__/customFileHeader.test.js +++ b/__integration__/customFileHeader.test.js @@ -10,22 +10,27 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ - -const fs = require('fs-extra'); -const StyleDictionary = require('../index'); -const { buildPath } = require('./_constants'); +import { expect } from 'chai'; +import StyleDictionary from 'style-dictionary'; +import { fs } from 'style-dictionary/fs'; +import { buildPath } from './_constants.js'; +import { clearOutput } from '../__tests__/__helpers.js'; describe(`integration`, () => { - describe(`valid custom file headers`, () => { + afterEach(() => { + clearOutput(buildPath); + }); + + describe(`valid custom file headers`, async () => { // Adding a custom file header with the `.registerFileHeader` StyleDictionary.registerFileHeader({ - name: `registeredFileHeader`, + name: `valid custom file headers test fileHeader`, fileHeader: (defaultMessage) => { return [`hello`, ...defaultMessage]; }, }); - StyleDictionary.extend({ + const sd = new StyleDictionary({ fileHeader: { configFileHeader: (defaultMessage) => { return [...defaultMessage, 'hello, world!']; @@ -49,7 +54,7 @@ describe(`integration`, () => { destination: `registeredFileHeader.css`, format: `css/variables`, options: { - fileHeader: `registeredFileHeader`, + fileHeader: `valid custom file headers test fileHeader`, }, }, { @@ -98,73 +103,78 @@ describe(`integration`, () => { ], }, }, - }).buildAllPlatforms(); + }); + + await sd.buildAllPlatforms(); describe('file options', () => { - it(`registered file header should match snapshot`, () => { + it(`registered file header should match snapshot`, async () => { const output = fs.readFileSync(`${buildPath}registeredFileHeader.css`, { encoding: 'UTF-8', }); - expect(output).toMatchSnapshot(); + await expect(output).to.matchSnapshot(); }); - it(`config file header should match snapshot`, () => { + it(`config file header should match snapshot`, async () => { const output = fs.readFileSync(`${buildPath}configFileHeader.css`, { encoding: 'UTF-8', }); - expect(output).toMatchSnapshot(); + await expect(output).to.matchSnapshot(); }); - it(`inline file header should match snapshot`, () => { + it(`inline file header should match snapshot`, async () => { const output = fs.readFileSync(`${buildPath}inlineFileHeader.css`, { encoding: 'UTF-8', }); - expect(output).toMatchSnapshot(); + await expect(output).to.matchSnapshot(); }); }); describe('platform options', () => { - it(`no file options should match snapshot`, () => { + it(`no file options should match snapshot`, async () => { const output = fs.readFileSync(`${buildPath}noOptions.js`, { encoding: 'UTF-8', }); - expect(output).toMatchSnapshot(); + await expect(output).to.matchSnapshot(); }); - it(`showFileHeader should match snapshot`, () => { + it(`showFileHeader should match snapshot`, async () => { const output = fs.readFileSync(`${buildPath}showFileHeader.js`, { encoding: 'UTF-8', }); - expect(output).toMatchSnapshot(); + await expect(output).to.matchSnapshot(); }); - it(`file header override should match snapshot`, () => { + it(`file header override should match snapshot`, async () => { const output = fs.readFileSync(`${buildPath}fileHeaderOverride.js`, { encoding: 'UTF-8', }); - expect(output).toMatchSnapshot(); + await expect(output).to.matchSnapshot(); }); }); }); + describe(`invalid custom file headers`, () => { - it(`should throw if trying to use an undefined file header`, () => { - expect(() => { - StyleDictionary.extend({ - platforms: { - css: { - buildPath, - files: [ - { - destination: `variables.css`, - options: { - fileHeader: `nonexistentFileHeader`, - }, + it(`should throw if trying to use an undefined file header`, async () => { + const sd = new StyleDictionary({ + platforms: { + css: { + buildPath, + files: [ + { + destination: `variables.css`, + options: { + fileHeader: `nonexistentFileHeader`, }, - ], - }, + }, + ], }, - }).buildAllPlatforms(); - }).toThrow(`Can't find fileHeader: nonexistentFileHeader`); + }, + }); + + await expect(sd.buildAllPlatforms()).to.eventually.be.rejectedWith( + `Can't find fileHeader: nonexistentFileHeader`, + ); }); }); }); diff --git a/__integration__/customFormats.test.js b/__integration__/customFormats.test.js index 77d0c27e2..68c4ee368 100644 --- a/__integration__/customFormats.test.js +++ b/__integration__/customFormats.test.js @@ -10,14 +10,19 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ - -const fs = require('fs-extra'); -const StyleDictionary = require('../index'); -const { buildPath } = require('./_constants'); +import { expect } from 'chai'; +import StyleDictionary from 'style-dictionary'; +import { fs } from 'style-dictionary/fs'; +import { buildPath } from './_constants.js'; +import { clearOutput } from '../__tests__/__helpers.js'; describe('integration', () => { - describe('custom formats', () => { - const styleDictionary = StyleDictionary.extend({ + afterEach(() => { + clearOutput(buildPath); + }); + + describe('custom formats', async () => { + const sd = new StyleDictionary({ source: [`__integration__/tokens/size/padding.json`], // Adding formats directly to SD format: { @@ -82,55 +87,55 @@ describe('integration', () => { }, }); - styleDictionary.registerFormat({ + sd.registerFormat({ name: 'registerCustomFormatWithOldArgs', formatter: (dictionary, platform, file) => { return JSON.stringify({ dictionary, platform, file }, null, 2); }, }); - styleDictionary.registerFormat({ + sd.registerFormat({ name: 'registerCustomFormatWithNewArgs', formatter: (opts) => { return JSON.stringify(opts, null, 2); }, }); - styleDictionary.buildAllPlatforms(); + await sd.buildAllPlatforms(); describe(`inline custom with old args`, () => { const output = fs.readFileSync(`${buildPath}inlineCustomFormatWithOldArgs.json`, { encoding: 'UTF-8', }); - it(`should match snapshot`, () => { - expect(output).toMatchSnapshot(); + it(`should match snapshot`, async () => { + await expect(output).to.matchSnapshot(); }); it(`should receive proper arguments`, () => { const { dictionary, platform, file } = JSON.parse(output); - expect(dictionary).toHaveProperty(`tokens`); - expect(dictionary).toHaveProperty(`allTokens`); - expect(platform).toHaveProperty(`options.otherOption`, `platform option`); - expect(file).toHaveProperty(`options.otherOption`, `Test`); + expect(dictionary).to.have.property(`tokens`); + expect(dictionary).to.have.property(`allTokens`); + expect(platform).to.have.nested.property(`options.otherOption`, `platform option`); + expect(file).to.have.nested.property(`options.otherOption`, `Test`); }); }); - describe(`inline custom with new args`, () => { + describe(`inline custom with new args`, async () => { const output = fs.readFileSync(`${buildPath}inlineCustomFormatWithNewArgs.json`, { encoding: 'UTF-8', }); - it(`should match snapshot`, () => { - expect(output).toMatchSnapshot(); + it(`should match snapshot`, async () => { + await expect(output).to.matchSnapshot(); }); it(`should receive proper arguments`, () => { const { dictionary, platform, file, options } = JSON.parse(output); - expect(dictionary).toHaveProperty(`tokens`); - expect(dictionary).toHaveProperty(`allTokens`); - expect(platform).toHaveProperty(`options.otherOption`, `platform option`); - expect(file).toHaveProperty(`options.otherOption`, `Test`); - expect(options).toHaveProperty(`otherOption`, `Test`); + expect(dictionary).to.have.property(`tokens`); + expect(dictionary).to.have.property(`allTokens`); + expect(platform).to.have.nested.property(`options.otherOption`, `platform option`); + expect(file).to.have.nested.property(`options.otherOption`, `Test`); + expect(options).to.have.property(`otherOption`, `Test`); }); }); @@ -139,16 +144,16 @@ describe('integration', () => { encoding: 'UTF-8', }); - it(`should match snapshot`, () => { - expect(output).toMatchSnapshot(); + it(`should match snapshot`, async () => { + await expect(output).to.matchSnapshot(); }); it(`should receive proper arguments`, () => { const { dictionary, platform, file } = JSON.parse(output); - expect(dictionary).toHaveProperty(`tokens`); - expect(dictionary).toHaveProperty(`allTokens`); - expect(platform).toHaveProperty(`options.otherOption`, `platform option`); - expect(file).toHaveProperty(`options.otherOption`, `Test`); + expect(dictionary).to.have.property(`tokens`); + expect(dictionary).to.have.property(`allTokens`); + expect(platform).to.have.nested.property(`options.otherOption`, `platform option`); + expect(file).to.have.nested.property(`options.otherOption`, `Test`); }); }); @@ -157,22 +162,18 @@ describe('integration', () => { encoding: 'UTF-8', }); - it(`should match snapshot`, () => { - expect(output).toMatchSnapshot(); + it(`should match snapshot`, async () => { + await expect(output).to.matchSnapshot(); }); it(`should receive proper arguments`, () => { const { dictionary, platform, file, options } = JSON.parse(output); - expect(dictionary).toHaveProperty(`tokens`); - expect(dictionary).toHaveProperty(`allTokens`); - expect(platform).toHaveProperty(`options.otherOption`, `platform option`); - expect(file).toHaveProperty(`options.otherOption`, `Test`); - expect(options).toHaveProperty(`otherOption`, `Test`); + expect(dictionary).to.have.property(`tokens`); + expect(dictionary).to.have.property(`allTokens`); + expect(platform).to.have.nested.property(`options.otherOption`, `platform option`); + expect(file).to.have.nested.property(`options.otherOption`, `Test`); + expect(options).to.have.property(`otherOption`, `Test`); }); }); }); }); - -afterAll(() => { - fs.emptyDirSync(buildPath); -}); diff --git a/__integration__/flutter.test.js b/__integration__/flutter.test.js index 968f6297d..5308cc465 100644 --- a/__integration__/flutter.test.js +++ b/__integration__/flutter.test.js @@ -10,14 +10,19 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ - -const fs = require('fs-extra'); -const StyleDictionary = require('../index'); -const { buildPath } = require('./_constants'); +import { expect } from 'chai'; +import StyleDictionary from 'style-dictionary'; +import { fs } from 'style-dictionary/fs'; +import { buildPath } from './_constants.js'; +import { clearOutput } from '../__tests__/__helpers.js'; describe('integration', () => { - describe('flutter', () => { - StyleDictionary.extend({ + afterEach(() => { + clearOutput(buildPath); + }); + + describe('flutter', async () => { + const sd = new StyleDictionary({ source: [`__integration__/tokens/**/*.json?(c)`], platforms: { flutter: { @@ -68,15 +73,16 @@ describe('integration', () => { ], }, }, - }).buildAllPlatforms(); + }); + await sd.buildAllPlatforms(); describe(`flutter/class.dart`, () => { const output = fs.readFileSync(`${buildPath}style_dictionary.dart`, { encoding: `UTF-8`, }); - it(`should match snapshot`, () => { - expect(output).toMatchSnapshot(); + it(`should match snapshot`, async () => { + await expect(output).to.matchSnapshot(); }); describe(`with references`, () => { @@ -84,8 +90,8 @@ describe('integration', () => { encoding: `UTF-8`, }); - it(`should match snapshot`, () => { - expect(output).toMatchSnapshot(); + it(`should match snapshot`, async () => { + await expect(output).to.matchSnapshot(); }); }); @@ -93,14 +99,10 @@ describe('integration', () => { const output = fs.readFileSync(`${buildPath}style_dictionary_color.dart`, { encoding: `UTF-8`, }); - it(`should match snapshot`, () => { - expect(output).toMatchSnapshot(); + it(`should match snapshot`, async () => { + await expect(output).to.matchSnapshot(); }); }); }); }); }); - -afterAll(() => { - fs.emptyDirSync(buildPath); -}); diff --git a/__integration__/iOSObjectiveC.test.js b/__integration__/iOSObjectiveC.test.js index a34133e52..b488cb4ec 100644 --- a/__integration__/iOSObjectiveC.test.js +++ b/__integration__/iOSObjectiveC.test.js @@ -10,14 +10,19 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ - -const fs = require('fs-extra'); -const StyleDictionary = require('../index'); -const { buildPath } = require('./_constants'); +import { expect } from 'chai'; +import StyleDictionary from 'style-dictionary'; +import { fs } from 'style-dictionary/fs'; +import { buildPath } from './_constants.js'; +import { clearOutput } from '../__tests__/__helpers.js'; describe('integration', () => { - describe('ios objective-c', () => { - StyleDictionary.extend({ + afterEach(() => { + clearOutput(buildPath); + }); + + describe('ios objective-c', async () => { + const sd = new StyleDictionary({ source: [`__integration__/tokens/**/*.json?(c)`], platforms: { flutter: { @@ -69,59 +74,56 @@ describe('integration', () => { ], }, }, - }).buildAllPlatforms(); + }); + await sd.buildAllPlatforms(); - it(`ios/singleton.m should match snapshot`, () => { + it(`ios/singleton.m should match snapshot`, async () => { const output = fs.readFileSync(`${buildPath}singleton.m`, { encoding: `UTF-8`, }); - expect(output).toMatchSnapshot(); + await expect(output).to.matchSnapshot(); }); - it(`ios/singleton.h should match snapshot`, () => { + it(`ios/singleton.h should match snapshot`, async () => { const output = fs.readFileSync(`${buildPath}singleton.h`, { encoding: `UTF-8`, }); - expect(output).toMatchSnapshot(); + await expect(output).to.matchSnapshot(); }); - it(`ios/color.m should match snapshot`, () => { + it(`ios/color.m should match snapshot`, async () => { const output = fs.readFileSync(`${buildPath}color.m`, { encoding: `UTF-8`, }); - expect(output).toMatchSnapshot(); + await expect(output).to.matchSnapshot(); }); - it(`ios/color.h should match snapshot`, () => { + it(`ios/color.h should match snapshot`, async () => { const output = fs.readFileSync(`${buildPath}color.h`, { encoding: `UTF-8`, }); - expect(output).toMatchSnapshot(); + await expect(output).to.matchSnapshot(); }); - it(`ios/macros.h should match snapshot`, () => { + it(`ios/macros.h should match snapshot`, async () => { const output = fs.readFileSync(`${buildPath}macros.h`, { encoding: `UTF-8`, }); - expect(output).toMatchSnapshot(); + await expect(output).to.matchSnapshot(); }); - it(`ios/static.h should match snapshot`, () => { + it(`ios/static.h should match snapshot`, async () => { const output = fs.readFileSync(`${buildPath}static.h`, { encoding: `UTF-8`, }); - expect(output).toMatchSnapshot(); + await expect(output).to.matchSnapshot(); }); - it(`ios/static.m should match snapshot`, () => { + it(`ios/static.m should match snapshot`, async () => { const output = fs.readFileSync(`${buildPath}static.m`, { encoding: `UTF-8`, }); - expect(output).toMatchSnapshot(); + await expect(output).to.matchSnapshot(); }); }); }); - -afterAll(() => { - fs.emptyDirSync(buildPath); -}); diff --git a/__integration__/logging/__snapshots__/config.test.js.snap b/__integration__/logging/__snapshots__/config.test.snap.js similarity index 81% rename from __integration__/logging/__snapshots__/config.test.js.snap rename to __integration__/logging/__snapshots__/config.test.snap.js index f4a2e2791..ac42f9ec7 100644 --- a/__integration__/logging/__snapshots__/config.test.js.snap +++ b/__integration__/logging/__snapshots__/config.test.snap.js @@ -1,7 +1,7 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`integration > logging > config > property value collisions should not show warnings if given higher log level 1`] = ` -" +/* @web/test-runner snapshot v1 */ +export const snapshots = {}; +snapshots["integration > logging > config > property value collisions should not throw, but notify users by default"] = +` Property Value Collisions: Collision detected at: size.padding.small! Original value: 0.5, New value: 0.5 Collision detected at: size.padding.small! Original value: __integration__/tokens/size/padding.json, New value: __integration__/tokens/size/padding.json @@ -16,11 +16,11 @@ Collision detected at: size.padding.xl! Original value: 1, New value: 1 Collision detected at: size.padding.xl! Original value: __integration__/tokens/size/padding.json, New value: __integration__/tokens/size/padding.json Collision detected at: size.padding.xl! Original value: true, New value: true -" `; +/* end snapshot integration > logging > config > property value collisions should not throw, but notify users by default */ -exports[`integration > logging > config > property value collisions should not throw, but notify users by default 1`] = ` -" +snapshots["integration > logging > config > property value collisions should not show warnings if given higher log level"] = +` Property Value Collisions: Collision detected at: size.padding.small! Original value: 0.5, New value: 0.5 Collision detected at: size.padding.small! Original value: __integration__/tokens/size/padding.json, New value: __integration__/tokens/size/padding.json @@ -35,5 +35,6 @@ Collision detected at: size.padding.xl! Original value: 1, New value: 1 Collision detected at: size.padding.xl! Original value: __integration__/tokens/size/padding.json, New value: __integration__/tokens/size/padding.json Collision detected at: size.padding.xl! Original value: true, New value: true -" `; +/* end snapshot integration > logging > config > property value collisions should not show warnings if given higher log level */ + diff --git a/__integration__/logging/__snapshots__/file.test.js.snap b/__integration__/logging/__snapshots__/file.test.snap.js similarity index 90% rename from __integration__/logging/__snapshots__/file.test.js.snap rename to __integration__/logging/__snapshots__/file.test.snap.js index 9691896ce..dfb1dc899 100644 --- a/__integration__/logging/__snapshots__/file.test.js.snap +++ b/__integration__/logging/__snapshots__/file.test.snap.js @@ -1,28 +1,13 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`integration logging file should not warn user of empty properties with log level set to error 1`] = ` -" -css -No properties for empty.css. File not created." -`; - -exports[`integration logging file should not warn user of filtered references with log level set to error 1`] = ` -" +/* @web/test-runner snapshot v1 */ +export const snapshots = {}; +snapshots["integration logging file should warn user empty tokens"] = +` css -⚠️ __integration__/build/filteredReferences.css -While building filteredReferences.css, filtered out token references were found; output may be unexpected. Here are the references that are used but not defined in the file -color.core.neutral.100 -color.core.neutral.0 -color.core.neutral.200 -color.core.red.0 -color.core.orange.0 -color.core.green.0 -color.core.blue.0 -This is caused when combining a filter and \`outputReferences\`." -`; +No tokens for empty.css. File not created.`; +/* end snapshot integration logging file should warn user empty tokens */ -exports[`integration logging file should not warn user of name collisions with log level set to error 1`] = ` -" +snapshots["integration logging file should warn user of name collisions"] = +` css ⚠️ __integration__/build/nameCollisions.css While building nameCollisions.css, token collisions were found; output may be unexpected. @@ -195,36 +180,13 @@ Output name disabled was generated by: color.background.disabled #dee1e1 color.font.interactive.disabled #364141 This many-to-one issue is usually caused by some combination of: -* conflicting or similar paths/names in property definitions +* conflicting or similar paths/names in token definitions * platform transforms/transformGroups affecting names, especially when removing specificity -* overly inclusive file filters" -`; +* overly inclusive file filters`; +/* end snapshot integration logging file should warn user of name collisions */ -exports[`integration logging file should warn user empty properties 1`] = ` -" -css -No properties for empty.css. File not created." -`; - -exports[`integration logging file should warn user of filtered references 1`] = ` -" -css -⚠️ __integration__/build/filteredReferences.css -While building filteredReferences.css, filtered out token references were found; output may be unexpected. Here are the references that are used but not defined in the file -color.core.neutral.100 -color.core.neutral.0 -color.core.neutral.200 -color.core.red.0 -color.core.orange.0 -color.core.green.0 -color.core.blue.0 -This is caused when combining a filter and \`outputReferences\`." -`; - -exports[`integration logging file should warn user of name collisions 1`] = ` -" -css -⚠️ __integration__/build/nameCollisions.css +snapshots["integration logging file should not warn user of name collisions with log level set to error"] = +`⚠️ __integration__/build/nameCollisions.css While building nameCollisions.css, token collisions were found; output may be unexpected. Output name 0 was generated by: color.core.green.0 #ebf9eb @@ -395,7 +357,35 @@ Output name disabled was generated by: color.background.disabled #dee1e1 color.font.interactive.disabled #364141 This many-to-one issue is usually caused by some combination of: -* conflicting or similar paths/names in property definitions +* conflicting or similar paths/names in token definitions * platform transforms/transformGroups affecting names, especially when removing specificity -* overly inclusive file filters" -`; +* overly inclusive file filters`; +/* end snapshot integration logging file should not warn user of name collisions with log level set to error */ +snapshots["integration logging file should warn user of filtered references"] = +` +css +⚠️ __integration__/build/filteredReferences.css +While building filteredReferences.css, filtered out token references were found; output may be unexpected. Here are the references that are used but not defined in the file +color.core.neutral.100 +color.core.neutral.0 +color.core.neutral.200 +color.core.red.0 +color.core.orange.0 +color.core.green.0 +color.core.blue.0 +This is caused when combining a filter and \`outputReferences\`.`; +/* end snapshot integration logging file should warn user of filtered references */ + +snapshots["integration logging file should not warn user of filtered references with log level set to error"] = +`⚠️ __integration__/build/filteredReferences.css +While building filteredReferences.css, filtered out token references were found; output may be unexpected. Here are the references that are used but not defined in the file +color.core.neutral.100 +color.core.neutral.0 +color.core.neutral.200 +color.core.red.0 +color.core.orange.0 +color.core.green.0 +color.core.blue.0 +This is caused when combining a filter and \`outputReferences\`.`; +/* end snapshot integration logging file should not warn user of filtered references with log level set to error */ + diff --git a/__integration__/logging/__snapshots__/platform.test.js.snap b/__integration__/logging/__snapshots__/platform.test.js.snap deleted file mode 100644 index 282070757..000000000 --- a/__integration__/logging/__snapshots__/platform.test.js.snap +++ /dev/null @@ -1,37 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`integration logging platform property reference errors circular references should throw notify users 1`] = ` -" -css - -Property Reference Errors: -Circular definition cycle: color.foo.value, color.foo.value, color.foo.value -Circular definition cycle: color.teal.value, color.blue.value, color.green.value, color.teal.value - -" -`; - -exports[`integration logging platform property reference errors should throw and notify users of unknown references 1`] = ` -" -css - -Property Reference Errors: -Reference doesn't exist: color.danger.value tries to reference color.red.value, which is not defined - -" -`; - -exports[`integration logging platform should throw and notify users of unknown actions 1`] = ` -" -css" -`; - -exports[`integration logging platform should throw and notify users of unknown transformGroups 1`] = ` -" -css" -`; - -exports[`integration logging platform should throw and notify users of unknown transforms 1`] = ` -" -css" -`; diff --git a/__integration__/logging/__snapshots__/platform.test.snap.js b/__integration__/logging/__snapshots__/platform.test.snap.js new file mode 100644 index 000000000..4f0976d5d --- /dev/null +++ b/__integration__/logging/__snapshots__/platform.test.snap.js @@ -0,0 +1,37 @@ +/* @web/test-runner snapshot v1 */ +export const snapshots = {}; + +snapshots["integration logging platform should throw and notify users of unknown actions"] = +`Cannot read properties of undefined (reading 'undo')`; +/* end snapshot integration logging platform should throw and notify users of unknown actions */ + +snapshots["integration logging platform should throw and notify users of unknown transforms"] = +` +Unknown transforms "foo", "bar" found in platform "css": +None of "foo", "bar" match the name of a registered transform. +`; +/* end snapshot integration logging platform should throw and notify users of unknown transforms */ + +snapshots["integration logging platform should throw and notify users of unknown transformGroups"] = +` +Unknown transformGroup "foo" found in platform "css": +"foo" does not match the name of a registered transformGroup. +`; +/* end snapshot integration logging platform should throw and notify users of unknown transformGroups */ +snapshots["integration logging platform property reference errors should throw and notify users of unknown references"] = +` +Property Reference Errors: +Reference doesn't exist: color.danger.value tries to reference color.red.value, which is not defined + +Problems were found when trying to resolve property references`; +/* end snapshot integration logging platform property reference errors should throw and notify users of unknown references */ + +snapshots["integration logging platform property reference errors circular references should throw and notify users"] = +` +Property Reference Errors: +Circular definition cycle: color.foo.value, color.foo.value, color.foo.value +Circular definition cycle: color.teal.value, color.blue.value, color.green.value, color.teal.value + +Problems were found when trying to resolve property references`; +/* end snapshot integration logging platform property reference errors circular references should throw and notify users */ + diff --git a/__integration__/logging/config.test.js b/__integration__/logging/config.test.js index 0979bed3e..57479d902 100644 --- a/__integration__/logging/config.test.js +++ b/__integration__/logging/config.test.js @@ -10,14 +10,11 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ - -const fs = require('fs-extra'); -const StyleDictionary = require('../../index'); -const { buildPath, cleanConsoleOutput } = require('../_constants'); - -// Spy on console.log and add all messages to an array -let consoleOutput = []; -const log = jest.spyOn(console, 'log').mockImplementation((message) => consoleOutput.push(message)); +import { expect } from 'chai'; +import { restore, stubMethod } from 'hanbi'; +import StyleDictionary from 'style-dictionary'; +import { buildPath, cleanConsoleOutput } from '../_constants.js'; +import { clearOutput } from '../../__tests__/__helpers.js'; /** * These integration tests will verify the behavior and logging at the *config* @@ -28,17 +25,20 @@ const log = jest.spyOn(console, 'log').mockImplementation((message) => consoleOu * next two are: platform and file. */ describe(`integration >`, () => { - // before each test clear the mocked console.log and the output array + let stub; beforeEach(() => { - log.mockClear(); - consoleOutput = []; + stub = stubMethod(console, 'log'); + }); + afterEach(() => { + restore(); + clearOutput(buildPath); }); describe(`logging >`, () => { describe(`config >`, () => { describe(`property value collisions`, () => { - it(`should not throw, but notify users by default`, () => { - StyleDictionary.extend({ + it(`should not throw, but notify users by default`, async () => { + const sd = new StyleDictionary({ source: [ // including a specific file twice will throw value collision warnings `__integration__/tokens/size/padding.json`, @@ -46,26 +46,36 @@ describe(`integration >`, () => { ], platforms: {}, }); - expect(consoleOutput.map(cleanConsoleOutput).join(`\n`)).toMatchSnapshot(); + await sd.hasInitialized; + const consoleOutput = stub.firstCall.args.map(cleanConsoleOutput).join('\n'); + await expect(consoleOutput).to.matchSnapshot(); }); - it(`should not show warnings if given higher log level`, () => { - StyleDictionary.extend({ - logLevel: `error`, - source: [ - // including a specific file twice will throw value collision warnings - `__integration__/tokens/size/padding.json`, - `__integration__/tokens/size/padding.json`, - ], - platforms: {}, - }); - expect(consoleOutput.map(cleanConsoleOutput).join(`\n`)).toMatchSnapshot(); + it(`should not show warnings if given higher log level`, async () => { + const sd = new StyleDictionary( + { + log: `error`, + source: [ + // including a specific file twice will throw value collision warnings + `__integration__/tokens/size/padding.json`, + `__integration__/tokens/size/padding.json`, + ], + platforms: {}, + }, + { init: false }, + ); + + let error; + try { + await sd.init(); + } catch (e) { + error = e; + } + + await expect(error.message).to.matchSnapshot(); + expect(stub.called).to.be.false; }); }); }); }); }); - -afterAll(() => { - fs.emptyDirSync(buildPath); -}); diff --git a/__integration__/logging/file.test.js b/__integration__/logging/file.test.js index 9b7890293..15ba0abcb 100644 --- a/__integration__/logging/file.test.js +++ b/__integration__/logging/file.test.js @@ -10,15 +10,11 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ - -const fs = require('fs-extra'); -const StyleDictionary = require('../../index'); -const { buildPath, cleanConsoleOutput } = require('../_constants'); - -// Spy on console.log and add all messages to an array -let consoleOutput = []; -const log = jest.spyOn(console, 'log').mockImplementation((message) => consoleOutput.push(message)); - +import { expect } from 'chai'; +import { restore, stubMethod } from 'hanbi'; +import StyleDictionary from 'style-dictionary'; +import { buildPath, cleanConsoleOutput } from '../_constants.js'; +import { clearOutput } from '../../__tests__/__helpers.js'; /** * The last and final level of logging: file. * These logs happen when a file is being built and will notify the user @@ -27,16 +23,19 @@ const log = jest.spyOn(console, 'log').mockImplementation((message) => consoleOu * out references. */ describe(`integration`, () => { - // before each test clear the mocked console.log and the output array + let stub; beforeEach(() => { - log.mockClear(); - consoleOutput = []; + stub = stubMethod(console, 'log'); + }); + afterEach(() => { + restore(); + clearOutput(buildPath); }); describe(`logging`, () => { describe(`file`, () => { - it(`should warn user empty tokens`, () => { - StyleDictionary.extend({ + it(`should warn user empty tokens`, async () => { + const sd = new StyleDictionary({ source: [`__integration__/tokens/**/*.json?(c)`], platforms: { css: { @@ -50,33 +49,16 @@ describe(`integration`, () => { ], }, }, - }).buildAllPlatforms(); + }); - expect(consoleOutput.map(cleanConsoleOutput).join('\n')).toMatchSnapshot(); + await sd.buildAllPlatforms(); + const logs = Array.from(stub.calls).flatMap((call) => call.args); + const consoleOutput = logs.map(cleanConsoleOutput).join('\n'); + await expect(consoleOutput).to.matchSnapshot(); }); - it(`should not warn user of empty tokens with log level set to error`, () => { - StyleDictionary.extend({ - logLevel: `error`, - source: [`__integration__/tokens/**/*.json?(c)`], - platforms: { - css: { - transformGroup: `css`, - files: [ - { - destination: `empty.css`, - format: `css/variables`, - filter: (token) => token.attributes.category === `foo`, - }, - ], - }, - }, - }).buildAllPlatforms(); - expect(consoleOutput.map(cleanConsoleOutput).join('\n')).toMatchSnapshot(); - }); - - it(`should warn user of name collisions`, () => { - StyleDictionary.extend({ + it(`should warn user of name collisions`, async () => { + const sd = new StyleDictionary({ source: [`__integration__/tokens/**/*.json?(c)`], platforms: { css: { @@ -92,13 +74,16 @@ describe(`integration`, () => { ], }, }, - }).buildAllPlatforms(); - expect(consoleOutput.map(cleanConsoleOutput).join('\n')).toMatchSnapshot(); + }); + await sd.buildAllPlatforms(); + const logs = Array.from(stub.calls).flatMap((call) => call.args); + const consoleOutput = logs.map(cleanConsoleOutput).join('\n'); + await expect(consoleOutput).to.matchSnapshot(); }); - it(`should not warn user of name collisions with log level set to error`, () => { - StyleDictionary.extend({ - logLevel: `error`, + it(`should not warn user of name collisions with log level set to error`, async () => { + const sd = new StyleDictionary({ + log: `error`, source: [`__integration__/tokens/**/*.json?(c)`], platforms: { css: { @@ -114,12 +99,21 @@ describe(`integration`, () => { ], }, }, - }).buildAllPlatforms(); - expect(consoleOutput.map(cleanConsoleOutput).join('\n')).toMatchSnapshot(); + }); + let error; + try { + await sd.buildAllPlatforms(); + } catch (e) { + error = e; + } + await expect(cleanConsoleOutput(error.message)).to.matchSnapshot(); + // only log is the platform name at the start of the buildPlatform method + expect(stub.callCount).to.equal(1); + expect(stub.firstCall.args).to.eql(['\ncss']); }); - it(`should warn user of filtered references`, () => { - StyleDictionary.extend({ + it(`should warn user of filtered references`, async () => { + const sd = new StyleDictionary({ source: [`__integration__/tokens/**/*.json?(c)`], platforms: { css: { @@ -139,13 +133,16 @@ describe(`integration`, () => { ], }, }, - }).buildAllPlatforms(); - expect(consoleOutput.map(cleanConsoleOutput).join('\n')).toMatchSnapshot(); + }); + await sd.buildAllPlatforms(); + const logs = Array.from(stub.calls).flatMap((call) => call.args); + const consoleOutput = logs.map(cleanConsoleOutput).join('\n'); + await expect(consoleOutput).to.matchSnapshot(); }); - it(`should not warn user of filtered references with log level set to error`, () => { - StyleDictionary.extend({ - logLevel: `error`, + it(`should not warn user of filtered references with log level set to error`, async () => { + const sd = new StyleDictionary({ + log: `error`, source: [`__integration__/tokens/**/*.json?(c)`], platforms: { css: { @@ -165,13 +162,18 @@ describe(`integration`, () => { ], }, }, - }).buildAllPlatforms(); - expect(consoleOutput.map(cleanConsoleOutput).join('\n')).toMatchSnapshot(); + }); + let error; + try { + await sd.buildAllPlatforms(); + } catch (e) { + error = e; + } + await expect(cleanConsoleOutput(error.message)).to.matchSnapshot(); + // only log is the platform name at the start of the buildPlatform method + expect(stub.callCount).to.equal(1); + expect(stub.firstCall.args).to.eql(['\ncss']); }); }); }); }); - -afterAll(() => { - fs.emptyDirSync(buildPath); -}); diff --git a/__integration__/logging/platform.test.js b/__integration__/logging/platform.test.js index d46903d55..f30a0224b 100644 --- a/__integration__/logging/platform.test.js +++ b/__integration__/logging/platform.test.js @@ -10,14 +10,11 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ - -const fs = require('fs-extra'); -const StyleDictionary = require('../../index'); -const { buildPath, cleanConsoleOutput } = require('../_constants'); - -// Spy on console.log and add all messages to an array -let consoleOutput = []; -const log = jest.spyOn(console, 'log').mockImplementation((message) => consoleOutput.push(message)); +import { expect } from 'chai'; +import { restore, stubMethod } from 'hanbi'; +import StyleDictionary from 'style-dictionary'; +import { buildPath, cleanConsoleOutput } from '../_constants.js'; +import { clearOutput } from '../../__tests__/__helpers.js'; /** * This is the 2nd phase of logging: the platform configuration. This happens @@ -29,96 +26,134 @@ const log = jest.spyOn(console, 'log').mockImplementation((message) => consoleOu * */ describe(`integration`, () => { - // before each test clear the mocked console.log and the output array + let stub; beforeEach(() => { - log.mockClear(); - consoleOutput = []; + stub = stubMethod(console, 'log'); + }); + afterEach(() => { + restore(); + clearOutput(buildPath); }); describe(`logging`, () => { describe(`platform`, () => { - it(`should throw and notify users of unknown actions`, () => { - // unknown actions should throw - expect(() => { - StyleDictionary.extend({ - tokens: {}, - platforms: { - css: { - actions: [`foo`], - }, + it(`should throw and notify users of unknown actions`, async () => { + const sd = new StyleDictionary({ + tokens: {}, + platforms: { + css: { + actions: [`foo`], }, - }).buildAllPlatforms(); - }).toThrow(); - expect(consoleOutput.map(cleanConsoleOutput).join('\n')).toMatchSnapshot(); + }, + }); + // unknown actions should throw + let error; + try { + await sd.buildAllPlatforms(); + } catch (e) { + error = e; + } + await expect(cleanConsoleOutput(error.message)).to.matchSnapshot(); + // only log is the platform name at the start of the buildPlatform method + expect(stub.callCount).to.equal(1); + expect(stub.firstCall.args).to.eql(['\ncss']); }); - it(`should throw and notify users of unknown transforms`, () => { - expect(() => { - StyleDictionary.extend({ - platforms: { - css: { - transforms: [`foo`, `bar`], - }, + it(`should throw and notify users of unknown transforms`, async () => { + const sd = new StyleDictionary({ + platforms: { + css: { + transforms: [`foo`, `bar`], }, - }).buildAllPlatforms(); - }).toThrow(); - expect(consoleOutput.map(cleanConsoleOutput).join(`\n`)).toMatchSnapshot(); + }, + }); + // unknown actions should throw + let error; + try { + await sd.buildAllPlatforms(); + } catch (e) { + error = e; + } + await expect(cleanConsoleOutput(error.message)).to.matchSnapshot(); + // only log is the platform name at the start of the buildPlatform method + expect(stub.callCount).to.equal(1); + expect(stub.firstCall.args).to.eql(['\ncss']); }); - it(`should throw and notify users of unknown transformGroups`, () => { - expect(() => { - StyleDictionary.extend({ - platforms: { - css: { - transformGroup: `foo`, - }, + it(`should throw and notify users of unknown transformGroups`, async () => { + const sd = new StyleDictionary({ + platforms: { + css: { + transformGroup: `foo`, }, - }).buildAllPlatforms(); - }).toThrow(); - expect(consoleOutput.map(cleanConsoleOutput).join(`\n`)).toMatchSnapshot(); + }, + }); + // unknown actions should throw + let error; + try { + await sd.buildAllPlatforms(); + } catch (e) { + error = e; + } + await expect(cleanConsoleOutput(error.message)).to.matchSnapshot(); + // only log is the platform name at the start of the buildPlatform method + expect(stub.callCount).to.equal(1); + expect(stub.firstCall.args).to.eql(['\ncss']); }); describe(`property reference errors`, () => { - it(`should throw and notify users of unknown references`, () => { - expect(() => { - StyleDictionary.extend({ - tokens: { - color: { - danger: { value: '{color.red.value}' }, - }, - }, - platforms: { - css: {}, + it(`should throw and notify users of unknown references`, async () => { + const sd = new StyleDictionary({ + tokens: { + color: { + danger: { value: '{color.red.value}' }, }, - }).buildAllPlatforms(); - }).toThrow(); - expect(consoleOutput.map(cleanConsoleOutput).join('\n')).toMatchSnapshot(); + }, + platforms: { + css: {}, + }, + }); + // unknown actions should throw + let error; + try { + await sd.buildAllPlatforms(); + } catch (e) { + error = e; + } + await expect(cleanConsoleOutput(error.message)).to.matchSnapshot(); + // only log is the platform name at the start of the buildPlatform method + expect(stub.callCount).to.equal(1); + expect(stub.firstCall.args).to.eql(['\ncss']); }); - it(`circular references should throw notify users`, () => { - expect(() => { - StyleDictionary.extend({ - tokens: { - color: { - foo: { value: '{color.foo.value}' }, - teal: { value: '{color.blue.value}' }, - blue: { value: '{color.green.value}' }, - green: { value: '{color.teal.value}' }, - purple: { value: '{color.teal.value}' }, - }, + it(`circular references should throw and notify users`, async () => { + const sd = new StyleDictionary({ + tokens: { + color: { + foo: { value: '{color.foo.value}' }, + teal: { value: '{color.blue.value}' }, + blue: { value: '{color.green.value}' }, + green: { value: '{color.teal.value}' }, + purple: { value: '{color.teal.value}' }, }, - platforms: { - css: {}, - }, - }).buildAllPlatforms(); - }).toThrow(); - expect(consoleOutput.map(cleanConsoleOutput).join('\n')).toMatchSnapshot(); + }, + platforms: { + css: {}, + }, + }); + // unknown actions should throw + let error; + try { + await sd.buildAllPlatforms(); + } catch (e) { + error = e; + } + await expect(cleanConsoleOutput(error.message)).to.matchSnapshot(); + // only log is the platform name at the start of the buildPlatform method + expect(stub.callCount).to.equal(1); + expect(stub.firstCall.args).to.eql(['\ncss']); }); }); }); }); }); - -afterAll(() => { - fs.emptyDirSync(buildPath); -}); diff --git a/__integration__/nameCollisions.test.js b/__integration__/nameCollisions.test.js index ad929a89a..084c2538a 100644 --- a/__integration__/nameCollisions.test.js +++ b/__integration__/nameCollisions.test.js @@ -10,11 +10,11 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ - -const fs = require('fs-extra'); -const chalk = require('chalk'); -const StyleDictionary = require('../index'); -const { buildPath } = require('./_constants'); +import { expect } from 'chai'; +import StyleDictionary from 'style-dictionary'; +import { stubMethod, restore } from 'hanbi'; +import { buildPath, cleanConsoleOutput } from './_constants.js'; +import { clearOutput } from '../__tests__/__helpers.js'; const tokens = { color: { @@ -26,10 +26,19 @@ const tokens = { }; describe('integration', () => { + let stub; + beforeEach(() => { + stub = stubMethod(console, 'log'); + }); + + afterEach(() => { + clearOutput(buildPath); + restore(); + }); + describe('name collisions', () => { - it(`should warn users of name collisions for flat files`, () => { - console.log = jest.fn(); - StyleDictionary.extend({ + it(`should warn users of name collisions for flat files`, async () => { + const sd = new StyleDictionary({ // we are only testing name collision warnings options so we don't need // the full source. tokens, @@ -44,13 +53,13 @@ describe('integration', () => { ], }, }, - }).buildAllPlatforms(); - expect(console.log).toHaveBeenCalledWith(`⚠️ ${buildPath}variables.css`); + }); + await sd.buildAllPlatforms(); + await expect(stub.lastCall.args.map(cleanConsoleOutput).join('\n')).to.matchSnapshot(); }); - it(`should not warn users of name collisions for nested files`, () => { - console.log = jest.fn(); - StyleDictionary.extend({ + it(`should not warn users of name collisions for nested files`, async () => { + const sd = new StyleDictionary({ // we are only testing name collision warnings options so we don't need // the full source. tokens, @@ -65,12 +74,11 @@ describe('integration', () => { ], }, }, - }).buildAllPlatforms(); - expect(console.log).toHaveBeenCalledWith(chalk.bold.green(`✔︎ ${buildPath}tokens.json`)); + }); + await sd.buildAllPlatforms(); + expect(stub.lastCall.args.map(cleanConsoleOutput).join('\n')).to.equal( + `✔︎ ${buildPath}tokens.json`, + ); }); }); }); - -afterAll(() => { - fs.emptyDirSync(buildPath); -}); diff --git a/__integration__/objectValues.test.js b/__integration__/objectValues.test.js index 711be9feb..c0ec12e24 100644 --- a/__integration__/objectValues.test.js +++ b/__integration__/objectValues.test.js @@ -10,19 +10,24 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ - -const fs = require('fs-extra'); -const Color = require('tinycolor2'); -const StyleDictionary = require('../index'); -const { buildPath } = require('./_constants'); +import { expect } from 'chai'; +import Color from 'tinycolor2'; +import StyleDictionary from 'style-dictionary'; +import { fs } from 'style-dictionary/fs'; +import { buildPath } from './_constants.js'; +import { clearOutput } from '../__tests__/__helpers.js'; const options = { outputReferences: true, }; describe('integration', () => { - describe('object values', () => { - StyleDictionary.extend({ + afterEach(() => { + clearOutput(buildPath); + }); + + describe('object values', async () => { + const sd = new StyleDictionary({ tokens: { hue: `120`, saturation: `50%`, @@ -204,23 +209,24 @@ describe('integration', () => { ], }, }, - }).buildAllPlatforms(); + }); + await sd.buildAllPlatforms(); describe('css/variables', () => { describe(`hsl syntax`, () => { const output = fs.readFileSync(`${buildPath}hsl.css`, { encoding: 'UTF-8', }); - it(`should match snapshot`, () => { - expect(output).toMatchSnapshot(); + it(`should match snapshot`, async () => { + await expect(output).to.matchSnapshot(); }); describe(`with references`, () => { const output = fs.readFileSync(`${buildPath}hslWithReferences.css`, { encoding: 'UTF-8', }); - it(`should match snapshot`, () => { - expect(output).toMatchSnapshot(); + it(`should match snapshot`, async () => { + await expect(output).to.matchSnapshot(); }); }); }); @@ -229,16 +235,16 @@ describe('integration', () => { const output = fs.readFileSync(`${buildPath}hex.css`, { encoding: 'UTF-8', }); - it(`should match snapshot`, () => { - expect(output).toMatchSnapshot(); + it(`should match snapshot`, async () => { + await expect(output).to.matchSnapshot(); }); describe(`with references`, () => { const output = fs.readFileSync(`${buildPath}hexWithReferences.css`, { encoding: 'UTF-8', }); - it(`should match snapshot`, () => { - expect(output).toMatchSnapshot(); + it(`should match snapshot`, async () => { + await expect(output).to.matchSnapshot(); }); }); }); @@ -247,33 +253,33 @@ describe('integration', () => { const output = fs.readFileSync(`${buildPath}border.css`, { encoding: 'UTF-8', }); - it(`should match snapshot`, () => { - expect(output).toMatchSnapshot(); + it(`should match snapshot`, async () => { + await expect(output).to.matchSnapshot(); }); describe(`with references`, () => { const output = fs.readFileSync(`${buildPath}borderWithReferences.css`, { encoding: 'UTF-8', }); - it(`should match snapshot`, () => { - expect(output).toMatchSnapshot(); + it(`should match snapshot`, async () => { + await expect(output).to.matchSnapshot(); }); }); }); describe('shadow', () => { - it(`should match snapshot`, () => { + it(`should match snapshot`, async () => { const output = fs.readFileSync(`${buildPath}shadow.css`, { encoding: 'UTF-8', }); - expect(output).toMatchSnapshot(); + await expect(output).to.matchSnapshot(); }); - it(`should match snapshot with references`, () => { + it(`should match snapshot with references`, async () => { const output = fs.readFileSync(`${buildPath}shadowWithReferences.css`, { encoding: 'UTF-8', }); - expect(output).toMatchSnapshot(); + await expect(output).to.matchSnapshot(); }); }); }); @@ -282,22 +288,18 @@ describe('integration', () => { const output = fs.readFileSync(`${buildPath}border.scss`, { encoding: 'UTF-8', }); - it(`should match snapshot`, () => { - expect(output).toMatchSnapshot(); + it(`should match snapshot`, async () => { + await expect(output).to.matchSnapshot(); }); describe(`with references`, () => { const output = fs.readFileSync(`${buildPath}borderWithReferences.scss`, { encoding: 'UTF-8', }); - it(`should match snapshot`, () => { - expect(output).toMatchSnapshot(); + it(`should match snapshot`, async () => { + await expect(output).to.matchSnapshot(); }); }); }); }); }); - -afterAll(() => { - fs.emptyDirSync(buildPath); -}); diff --git a/__integration__/outputReferences.test.js b/__integration__/outputReferences.test.js index 407eb1484..d4ad63ac3 100644 --- a/__integration__/outputReferences.test.js +++ b/__integration__/outputReferences.test.js @@ -10,16 +10,26 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ - -const fs = require('fs-extra'); -const StyleDictionary = require('../index'); -const { buildPath } = require('./_constants'); +import { expect } from 'chai'; +import StyleDictionary from 'style-dictionary'; +import { restore, stubMethod } from 'hanbi'; +import { buildPath, cleanConsoleOutput } from './_constants.js'; +import { clearOutput } from '../__tests__/__helpers.js'; describe('integration', () => { - describe('output references', () => { - it('should warn the user if filters out references', () => { - console.log = jest.fn(); - StyleDictionary.extend({ + let stub; + beforeEach(() => { + stub = stubMethod(console, 'log'); + }); + + afterEach(() => { + clearOutput(buildPath); + restore(); + }); + + describe('output references', async () => { + it('should warn the user if filters out references', async () => { + const sd = new StyleDictionary({ // we are only testing showFileHeader options so we don't need // the full source. source: [`__integration__/tokens/**/*.json?(c)`], @@ -42,13 +52,9 @@ describe('integration', () => { ], }, }, - }).buildAllPlatforms(); - - expect(console.log).toHaveBeenCalledWith(`⚠️ ${buildPath}filteredVariables.css`); + }); + await sd.buildAllPlatforms(); + await expect(stub.lastCall.args.map(cleanConsoleOutput).join('\n')).to.matchSnapshot(); }); }); }); - -afterAll(() => { - fs.emptyDirSync(buildPath); -}); diff --git a/__integration__/scss.test.js b/__integration__/scss.test.js index 77266ba22..7efea8775 100644 --- a/__integration__/scss.test.js +++ b/__integration__/scss.test.js @@ -10,15 +10,20 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ - -const fs = require('fs-extra'); -const scss = require('node-sass'); -const StyleDictionary = require('../index'); -const { buildPath } = require('./_constants'); +import { expect } from 'chai'; +import StyleDictionary from 'style-dictionary'; +import { fs } from 'style-dictionary/fs'; +import { compileString } from 'sass'; +import { buildPath } from './_constants.js'; +import { clearOutput } from '../__tests__/__helpers.js'; describe(`integration`, () => { - describe(`scss`, () => { - StyleDictionary.extend({ + afterEach(() => { + clearOutput(buildPath); + }); + + describe(`scss`, async () => { + const sd = new StyleDictionary({ source: [`__integration__/tokens/**/*.json?(c)`], platforms: { css: { @@ -80,7 +85,8 @@ describe(`integration`, () => { ], }, }, - }).buildAllPlatforms(); + }); + await sd.buildAllPlatforms(); describe(`scss/variables`, () => { const output = fs.readFileSync(`${buildPath}variables.scss`, { @@ -88,14 +94,12 @@ describe(`integration`, () => { }); it(`should have a valid scss syntax`, () => { - const result = scss.renderSync({ - data: output, - }); - expect(result.css).toBeDefined(); + const result = compileString(output); + expect(result.css).to.not.be.undefined; }); - it(`should match snapshot`, () => { - expect(output).toMatchSnapshot(); + it(`should match snapshot`, async () => { + await expect(output).to.matchSnapshot(); }); describe(`with themeable`, () => { @@ -103,14 +107,12 @@ describe(`integration`, () => { encoding: 'UTF-8', }); it(`should have a valid scss syntax`, () => { - const result = scss.renderSync({ - data: output, - }); - expect(result.css).toBeDefined(); + const result = compileString(output); + expect(result.css).to.not.be.undefined; }); - it(`should match snapshot`, () => { - expect(output).toMatchSnapshot(); + it(`should match snapshot`, async () => { + await expect(output).to.matchSnapshot(); }); }); @@ -119,14 +121,12 @@ describe(`integration`, () => { encoding: 'UTF-8', }); it(`should have a valid scss syntax`, () => { - const result = scss.renderSync({ - data: output, - }); - expect(result.css).toBeDefined(); + const result = compileString(output); + expect(result.css).to.not.be.undefined; }); - it(`should match snapshot`, () => { - expect(output).toMatchSnapshot(); + it(`should match snapshot`, async () => { + await expect(output).to.matchSnapshot(); }); }); @@ -134,8 +134,8 @@ describe(`integration`, () => { const output = fs.readFileSync(`${buildPath}filtered-variables-with-references.scss`, { encoding: 'UTF-8', }); - it(`should match snapshot`, () => { - expect(output).toMatchSnapshot(); + it(`should match snapshot`, async () => { + await expect(output).to.matchSnapshot(); }); }); }); @@ -146,14 +146,12 @@ describe(`integration`, () => { }); it(`should have a valid scss syntax`, () => { - const result = scss.renderSync({ - data: output, - }); - expect(result.css).toBeDefined(); + const result = compileString(output); + expect(result.css).to.not.be.undefined; }); - it(`should match snapshot`, () => { - expect(output).toMatchSnapshot(); + it(`should match snapshot`, async () => { + await expect(output).to.matchSnapshot(); }); }); @@ -163,14 +161,12 @@ describe(`integration`, () => { }); it(`should have a valid scss syntax`, () => { - const result = scss.renderSync({ - data: output, - }); - expect(result.css).toBeDefined(); + const result = compileString(output); + expect(result.css).to.not.be.undefined; }); - it(`should match snapshot`, () => { - expect(output).toMatchSnapshot(); + it(`should match snapshot`, async () => { + await expect(output).to.matchSnapshot(); }); describe(`with outputReferences`, () => { @@ -178,14 +174,12 @@ describe(`integration`, () => { encoding: 'UTF-8', }); it(`should have a valid scss syntax`, () => { - const result = scss.renderSync({ - data: output, - }); - expect(result.css).toBeDefined(); + const result = compileString(output); + expect(result.css).to.not.be.undefined; }); - it(`should match snapshot`, () => { - expect(output).toMatchSnapshot(); + it(`should match snapshot`, async () => { + await expect(output).to.matchSnapshot(); }); }); @@ -194,20 +188,14 @@ describe(`integration`, () => { encoding: 'UTF-8', }); it(`should have a valid scss syntax`, () => { - const result = scss.renderSync({ - data: output, - }); - expect(result.css).toBeDefined(); + const result = compileString(output); + expect(result.css).to.not.be.undefined; }); - it(`should match snapshot`, () => { - expect(output).toMatchSnapshot(); + it(`should match snapshot`, async () => { + await expect(output).to.matchSnapshot(); }); }); }); }); }); - -afterAll(() => { - fs.emptyDirSync(buildPath); -}); diff --git a/__integration__/showFileHeader.test.js b/__integration__/showFileHeader.test.js index 33e42810d..aa715c8a9 100644 --- a/__integration__/showFileHeader.test.js +++ b/__integration__/showFileHeader.test.js @@ -10,14 +10,19 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ - -const fs = require('fs-extra'); -const StyleDictionary = require('../index'); -const { buildPath } = require('./_constants'); +import { expect } from 'chai'; +import StyleDictionary from 'style-dictionary'; +import { fs } from 'style-dictionary/fs'; +import { buildPath } from './_constants.js'; +import { clearOutput } from '../__tests__/__helpers.js'; describe('integration', () => { - describe('showFileHeader', () => { - StyleDictionary.extend({ + afterEach(() => { + clearOutput(buildPath); + }); + + describe('showFileHeader', async () => { + const sd = new StyleDictionary({ // we are only testing showFileHeader options so we don't need // the full source. source: [`__integration__/tokens/size/padding.json`], @@ -60,42 +65,39 @@ describe('integration', () => { ], }, }, - }).buildAllPlatforms(); + }); + await sd.buildAllPlatforms(); describe(`without platform options`, () => { - it(`should show file header if no file options set`, () => { + it(`should show file header if no file options set`, async () => { const output = fs.readFileSync(`${buildPath}platform-none-file-none.css`, { encoding: 'UTF-8', }); - expect(output).toMatchSnapshot(); + await expect(output).to.matchSnapshot(); }); - it(`should not show file header if file options set to false`, () => { + it(`should not show file header if file options set to false`, async () => { const output = fs.readFileSync(`${buildPath}platform-none-file-false.css`, { encoding: 'UTF-8', }); - expect(output).toMatchSnapshot(); + await expect(output).to.matchSnapshot(); }); }); describe(`with platform options set to false`, () => { - it(`should not show file header if no file options set`, () => { + it(`should not show file header if no file options set`, async () => { const output = fs.readFileSync(`${buildPath}platform-false-file-none.css`, { encoding: 'UTF-8', }); - expect(output).toMatchSnapshot(); + await expect(output).to.matchSnapshot(); }); - it(`should show file header if file options set to true`, () => { + it(`should show file header if file options set to true`, async () => { const output = fs.readFileSync(`${buildPath}platform-false-file-true.css`, { encoding: 'UTF-8', }); - expect(output).toMatchSnapshot(); + await expect(output).to.matchSnapshot(); }); }); }); }); - -afterAll(() => { - fs.emptyDirSync(buildPath); -}); diff --git a/__integration__/swift.test.js b/__integration__/swift.test.js index fc3de0f61..35c198b25 100644 --- a/__integration__/swift.test.js +++ b/__integration__/swift.test.js @@ -10,14 +10,19 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ - -const fs = require('fs-extra'); -const StyleDictionary = require('../index'); -const { buildPath } = require('./_constants'); +import { expect } from 'chai'; +import StyleDictionary from 'style-dictionary'; +import { fs } from 'style-dictionary/fs'; +import { buildPath } from './_constants.js'; +import { clearOutput } from '../__tests__/__helpers.js'; describe('integration', () => { - describe('swift', () => { - StyleDictionary.extend({ + afterEach(() => { + clearOutput(buildPath); + }); + + describe('swift', async () => { + const sd = new StyleDictionary({ source: [`__integration__/tokens/**/*.json?(c)`], platforms: { flutter: { @@ -40,15 +45,16 @@ describe('integration', () => { ], }, }, - }).buildAllPlatforms(); + }); + await sd.buildAllPlatforms(); describe(`ios-swift/class.swift`, () => { const output = fs.readFileSync(`${buildPath}style_dictionary.swift`, { encoding: `UTF-8`, }); - it(`should match snapshot`, () => { - expect(output).toMatchSnapshot(); + it(`should match snapshot`, async () => { + await expect(output).to.matchSnapshot(); }); describe(`with references`, () => { @@ -56,21 +62,17 @@ describe('integration', () => { encoding: `UTF-8`, }); - it(`should match snapshot`, () => { - expect(output).toMatchSnapshot(); + it(`should match snapshot`, async () => { + await expect(output).to.matchSnapshot(); }); }); // describe(`separate`, () => { // const output = fs.readFileSync(`${buildPath}style_dictionary_color.dart`); - // it(`should match snapshot`, () => { - // expect(output).toMatchSnapshot(); + // it(`should match snapshot`, async () => { + // await expect(output).to.matchSnapshot(); // }); // }); }); }); }); - -afterAll(() => { - fs.emptyDirSync(buildPath); -}); diff --git a/__tests__/StyleDictionary.test.js b/__tests__/StyleDictionary.test.js index ec9091ea4..c9dc0a9f1 100644 --- a/__tests__/StyleDictionary.test.js +++ b/__tests__/StyleDictionary.test.js @@ -209,7 +209,7 @@ describe('StyleDictionary class + extend method', () => { expect(StyleDictionaryExtended.tokens).to.eql(output); }); - it('should throw a error if the collision is in source files and log is set to error', async () => { + it('should throw an error if the collision is in source files and log is set to error', async () => { const sd = new StyleDictionary( { source: ['__tests__/__tokens/paddings.json', '__tests__/__tokens/paddings.json'], @@ -217,8 +217,13 @@ describe('StyleDictionary class + extend method', () => { }, { init: false }, ); - - await expect(sd.init()).to.eventually.be.rejectedWith('Collisions detected'); + let error; + try { + await sd.init(); + } catch (e) { + error = e; + } + await expect(error.message).to.matchSnapshot(); }); it('should throw a warning if the collision is in source files and log is set to warn', async () => { diff --git a/__tests__/__setup.js b/__tests__/__setup.js index 389a03537..d9a4dabd2 100644 --- a/__tests__/__setup.js +++ b/__tests__/__setup.js @@ -4,6 +4,16 @@ import path from '@bundled-es-modules/path-browserify'; import { fs } from 'style-dictionary/fs'; import { chaiWtrSnapshot } from '../snapshot-plugin/chai-wtr-snapshot.js'; +const constantDate = new Date('2000-01-01'); +// eslint-disable-next-line no-undef +window.Date = function () { + return constantDate; +}; +// eslint-disable-next-line no-undef +window.Date.now = function () { + return constantDate; +}; + /** * We have a bunch of files that we use a mock data for our tests * Since we run tests in the browser, we will have to mirror these mock files @@ -31,16 +41,6 @@ export function setup(filesToMirror) { use(chaiAsPromised); use(chaiWtrSnapshot); - const constantDate = new Date('2000-01-01'); - // eslint-disable-next-line no-undef - window.Date = function () { - return constantDate; - }; - // eslint-disable-next-line no-undef - window.Date.now = function () { - return constantDate; - }; - filesToMirror.forEach(([file, contents]) => { mirrorFile(file, contents); }); diff --git a/__tests__/__snapshots__/StyleDictionary.test.snap.js b/__tests__/__snapshots__/StyleDictionary.test.snap.js new file mode 100644 index 000000000..6df9b7bb1 --- /dev/null +++ b/__tests__/__snapshots__/StyleDictionary.test.snap.js @@ -0,0 +1,30 @@ +/* @web/test-runner snapshot v1 */ +export const snapshots = {}; +snapshots["StyleDictionary class + extend method should throw an error if the collision is in source files and log is set to error"] = +` +Property Value Collisions: +Collision detected at: size.padding.zero! Original value: 0, New value: 0 +Collision detected at: size.padding.zero! Original value: __tests__/__tokens/paddings.json, New value: __tests__/__tokens/paddings.json +Collision detected at: size.padding.zero! Original value: true, New value: true +Collision detected at: size.padding.tiny! Original value: 3, New value: 3 +Collision detected at: size.padding.tiny! Original value: __tests__/__tokens/paddings.json, New value: __tests__/__tokens/paddings.json +Collision detected at: size.padding.tiny! Original value: true, New value: true +Collision detected at: size.padding.small! Original value: 5, New value: 5 +Collision detected at: size.padding.small! Original value: __tests__/__tokens/paddings.json, New value: __tests__/__tokens/paddings.json +Collision detected at: size.padding.small! Original value: true, New value: true +Collision detected at: size.padding.base! Original value: 10, New value: 10 +Collision detected at: size.padding.base! Original value: __tests__/__tokens/paddings.json, New value: __tests__/__tokens/paddings.json +Collision detected at: size.padding.base! Original value: true, New value: true +Collision detected at: size.padding.large! Original value: 15, New value: 15 +Collision detected at: size.padding.large! Original value: __tests__/__tokens/paddings.json, New value: __tests__/__tokens/paddings.json +Collision detected at: size.padding.large! Original value: true, New value: true +Collision detected at: size.padding.xl! Original value: 20, New value: 20 +Collision detected at: size.padding.xl! Original value: __tests__/__tokens/paddings.json, New value: __tests__/__tokens/paddings.json +Collision detected at: size.padding.xl! Original value: true, New value: true +Collision detected at: size.padding.xxl! Original value: 30, New value: 30 +Collision detected at: size.padding.xxl! Original value: __tests__/__tokens/paddings.json, New value: __tests__/__tokens/paddings.json +Collision detected at: size.padding.xxl! Original value: true, New value: true + +`; +/* end snapshot StyleDictionary class + extend method should throw an error if the collision is in source files and log is set to error */ + diff --git a/__tests__/formats/__snapshots__/all.test.snap.js b/__tests__/formats/__snapshots__/all.test.snap.js index 1a4a43089..64ec2aff8 100644 --- a/__tests__/formats/__snapshots__/all.test.snap.js +++ b/__tests__/formats/__snapshots__/all.test.snap.js @@ -750,3 +750,203 @@ snapshots["formats all should match css/fonts.css snapshot"] = ``; /* end snapshot formats all should match css/fonts.css snapshot */ +snapshots["formats all should match registerCustomFormatWithOldArgs snapshot"] = +`{ + "dictionary": { + "dictionary": { + "tokens": { + "color": { + "red": { + "value": "#FF0000", + "original": { + "value": "#FF0000" + }, + "name": "color_red", + "comment": "comment", + "attributes": { + "category": "color", + "type": "red" + }, + "path": [ + "color", + "red" + ] + } + } + }, + "allTokens": [ + { + "value": "#FF0000", + "original": { + "value": "#FF0000" + }, + "name": "color_red", + "comment": "comment", + "attributes": { + "category": "color", + "type": "red" + }, + "path": [ + "color", + "red" + ] + } + ] + }, + "allTokens": [ + { + "value": "#FF0000", + "original": { + "value": "#FF0000" + }, + "name": "color_red", + "comment": "comment", + "attributes": { + "category": "color", + "type": "red" + }, + "path": [ + "color", + "red" + ] + } + ], + "tokens": { + "color": { + "red": { + "value": "#FF0000", + "original": { + "value": "#FF0000" + }, + "name": "color_red", + "comment": "comment", + "attributes": { + "category": "color", + "type": "red" + }, + "path": [ + "color", + "red" + ] + } + } + }, + "platform": {}, + "file": { + "destination": "__output/", + "format": "javascript/es6", + "filter": { + "attributes": { + "category": "color" + } + } + }, + "options": {} + }, + "platform": {}, + "file": { + "destination": "__output/", + "format": "javascript/es6", + "filter": { + "attributes": { + "category": "color" + } + } + } +}`; +/* end snapshot formats all should match registerCustomFormatWithOldArgs snapshot */ + +snapshots["formats all should match registerCustomFormatWithNewArgs snapshot"] = +`{ + "dictionary": { + "tokens": { + "color": { + "red": { + "value": "#FF0000", + "original": { + "value": "#FF0000" + }, + "name": "color_red", + "comment": "comment", + "attributes": { + "category": "color", + "type": "red" + }, + "path": [ + "color", + "red" + ] + } + } + }, + "allTokens": [ + { + "value": "#FF0000", + "original": { + "value": "#FF0000" + }, + "name": "color_red", + "comment": "comment", + "attributes": { + "category": "color", + "type": "red" + }, + "path": [ + "color", + "red" + ] + } + ] + }, + "allTokens": [ + { + "value": "#FF0000", + "original": { + "value": "#FF0000" + }, + "name": "color_red", + "comment": "comment", + "attributes": { + "category": "color", + "type": "red" + }, + "path": [ + "color", + "red" + ] + } + ], + "tokens": { + "color": { + "red": { + "value": "#FF0000", + "original": { + "value": "#FF0000" + }, + "name": "color_red", + "comment": "comment", + "attributes": { + "category": "color", + "type": "red" + }, + "path": [ + "color", + "red" + ] + } + } + }, + "platform": {}, + "file": { + "destination": "__output/", + "format": "javascript/es6", + "filter": { + "attributes": { + "category": "color" + } + } + }, + "options": {} +}`; +/* end snapshot formats all should match registerCustomFormatWithNewArgs snapshot */ + diff --git a/examples/advanced/create-react-app/package.json b/examples/advanced/create-react-app/package.json index 7f37c9d14..362582557 100644 --- a/examples/advanced/create-react-app/package.json +++ b/examples/advanced/create-react-app/package.json @@ -10,6 +10,7 @@ "styled-components": "^5.3.0" }, "devDependencies": { + "eslint-config-react-app": "^7.0.1", "style-dictionary": "3.8.0" }, "resolutions": { @@ -35,4 +36,4 @@ "not op_mini all" ], "license": "Apache-2.0" -} \ No newline at end of file +} diff --git a/examples/advanced/create-react-native-app/package.json b/examples/advanced/create-react-native-app/package.json index 3e2fe4ee6..69d9e1383 100644 --- a/examples/advanced/create-react-native-app/package.json +++ b/examples/advanced/create-react-native-app/package.json @@ -25,6 +25,7 @@ "devDependencies": { "@babel/core": "~7.9.0", "babel-jest": "~25.2.6", + "eslint-config-react-app": "^7.0.1", "jest": "~25.2.6", "react-test-renderer": "~16.13.1", "style-dictionary": "3.8.0" @@ -32,5 +33,8 @@ "jest": { "preset": "react-native" }, + "eslintConfig": { + "extends": "react-app" + }, "private": true -} \ No newline at end of file +} diff --git a/examples/advanced/s3/upload.js b/examples/advanced/s3/upload.js index 5d1fad16b..514dda30e 100644 --- a/examples/advanced/s3/upload.js +++ b/examples/advanced/s3/upload.js @@ -18,7 +18,7 @@ s3.createBucket({ Bucket: bucketName }, function () { Key: file, Body: fs.readFileSync(file), }; - s3.putObject(options, function (err, data) { + s3.putObject(options, function (err) { if (err) console.log(err); else console.log('Successfully uploaded data to ' + bucketName + '/' + file); }); diff --git a/examples/advanced/yaml-tokens/sd.config.js b/examples/advanced/yaml-tokens/sd.config.js index a3fa939f0..b3c71290e 100644 --- a/examples/advanced/yaml-tokens/sd.config.js +++ b/examples/advanced/yaml-tokens/sd.config.js @@ -11,7 +11,7 @@ module.exports = { // 2 attributes: contents which is a string of the file contents, and // filePath which is the path of the file. // The function is expected to return a plain object. - parse: ({ contents, filePath }) => yaml.parse(contents), + parse: ({ contents }) => yaml.parse(contents), }, ], source: [`tokens/**/*.yaml`], diff --git a/lib/StyleDictionary.js b/lib/StyleDictionary.js index 8c4bfb399..cd9777af9 100644 --- a/lib/StyleDictionary.js +++ b/lib/StyleDictionary.js @@ -82,13 +82,13 @@ export default class StyleDictionary { * In the extend() method is where we merge config props into the SD instance. * Platform specific options are handled and merged by exportPlatform -> transformConfig */ - static _transform = transform; - static _transformGroup = transformGroup; - static _format = format; - static _action = action; - static _filter = filter; - static _fileHeader = {}; - static _parsers = []; // we need to initialise the array, since we don't have built-in parsers + static transform = transform; + static transformGroup = transformGroup; + static format = format; + static action = action; + static filter = filter; + static fileHeader = {}; + static parsers = []; // we need to initialise the array, since we don't have built-in parsers static registerTransform(...args) { return registerTransform.call(this, ...args); @@ -134,12 +134,12 @@ export default class StyleDictionary { Object.defineProperty(this, _prop, { get: function () { if (prop === 'parser') { - return [...this.constructor[`_${_prop}`], ...this[`__${_prop}`]]; + return [...this.constructor[`${_prop}`], ...this[`_${_prop}`]]; } - return { ...this.constructor[`_${_prop}`], ...this[`__${_prop}`] }; + return { ...this.constructor[`${_prop}`], ...this[`_${_prop}`] }; }, set: function (v) { - this[`__${_prop}`] = v; + this[`_${_prop}`] = v; }, }); }, @@ -238,9 +238,11 @@ export default class StyleDictionary { if (GroupMessages.count(PROPERTY_VALUE_COLLISIONS) > 0) { const collisions = GroupMessages.flush(PROPERTY_VALUE_COLLISIONS).join('\n'); - console.log(`\n${PROPERTY_VALUE_COLLISIONS}:\n${collisions}\n\n`); + const warn = `\n${PROPERTY_VALUE_COLLISIONS}:\n${collisions}\n\n`; if (options.log === 'error') { - throw new Error('Collisions detected'); + throw new Error(warn); + } else { + console.log(warn); } } @@ -348,8 +350,9 @@ export default class StyleDictionary { if (GroupMessages.count(PROPERTY_REFERENCE_WARNINGS) > 0) { const warnings = GroupMessages.flush(PROPERTY_REFERENCE_WARNINGS).join('\n'); - console.log(`\n${PROPERTY_REFERENCE_WARNINGS}:\n${warnings}\n\n`); - throw new Error('Problems were found when trying to resolve property references'); + throw new Error( + `\n${PROPERTY_REFERENCE_WARNINGS}:\n${warnings}\n\nProblems were found when trying to resolve property references`, + ); } return exportableResult; diff --git a/lib/buildAllPlatforms.js b/lib/buildAllPlatforms.js deleted file mode 100644 index 3a90781f7..000000000 --- a/lib/buildAllPlatforms.js +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with - * the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR - * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - -/** - * The only top-level method that needs to be called - * to build the Style Dictionary. - * - * @static - * @memberof module:style-dictionary - * @returns {module:style-dictionary} - * @example - * ```js - * import StyleDictionary from 'style-dictionary'; - * const StyleDictionary = await StyleDictionary.extend('config.json'); - * StyleDictionary.buildAllPlatforms(); - * ``` - */ -export default function buildAllPlatforms() { - Object.keys(this.options.platforms).forEach((key) => { - this.buildPlatform(key); - }); - - // For chaining - return this; -} diff --git a/lib/buildFile.js b/lib/buildFile.js index df55e0372..f14ce6136 100644 --- a/lib/buildFile.js +++ b/lib/buildFile.js @@ -122,7 +122,7 @@ export default function buildFile(file = {}, platform = {}, dictionary = {}) { if ((nested || tokenNamesCollisionCount === 0) && filteredReferencesCount === 0) { console.log(chalk.bold.green(`✔︎ ${fullDestination}`)); } else { - console.log(`⚠️ ${fullDestination}`); + const warnHeader = `⚠️ ${fullDestination}`; if (tokenNamesCollisionCount > 0) { let tokenNamesCollisionWarnings = GroupMessages.fetchMessages( PROPERTY_NAME_COLLISION_WARNINGS, @@ -142,8 +142,12 @@ export default function buildFile(file = {}, platform = {}, dictionary = {}) { '* overly inclusive file filters', ].join('\n '), ); - let warn = `${title}\n ${tokenNamesCollisionWarnings}\n${help}`; - console.log(chalk.rgb(255, 140, 0).bold(warn)); + let warn = `${warnHeader}\n${title}\n ${tokenNamesCollisionWarnings}\n${help}`; + if (platform?.log === 'error') { + throw new Error(warn); + } else { + console.log(chalk.rgb(255, 140, 0).bold(warn)); + } } if (filteredReferencesCount > 0) { @@ -160,8 +164,12 @@ export default function buildFile(file = {}, platform = {}, dictionary = {}) { 165, 0, )(['This is caused when combining a filter and `outputReferences`.'].join('\n ')); - let warn = `${title}\n ${filteredReferencesWarnings}\n${help}`; - console.log(chalk.rgb(255, 140, 0).bold(warn)); + let warn = `${warnHeader}\n${title}\n ${filteredReferencesWarnings}\n${help}`; + if (platform?.log === 'error') { + throw new Error(warn); + } else { + console.log(chalk.rgb(255, 140, 0).bold(warn)); + } } } } diff --git a/lib/buildPlatform.js b/lib/buildPlatform.js deleted file mode 100644 index 8e03aa109..000000000 --- a/lib/buildPlatform.js +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with - * the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR - * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - -import transformConfig from './transform/config.js'; -import buildFiles from './buildFiles.js'; -import performActions from './performActions.js'; -import createDictionary from './utils/createDictionary.js'; - -/** - * Takes a platform and performs all transforms to - * the tokens object (non-mutative) then - * builds all the files and performs any actions. This is useful if you only want to - * build the artifacts of one platform to speed up the build process. - * - * This method is also used internally in [buildAllPlatforms](#buildAllPlatforms) to - * build each platform defined in the config. - * - * @static - * @memberof module:style-dictionary - * @param {String} platform - Name of the platform you want to build. - * @returns {module:style-dictionary} - * @example - * ```js - * StyleDictionary.buildPlatform('web'); - * ``` - * ```bash - * $ style-dictionary build --platform web - * ``` - */ -export default function buildPlatform(platform) { - console.log('\n' + platform); - - if (!this.options || !(platform in (this.options.platforms || {}))) { - throw new Error(`Platform "${platform}" does not exist`); - } - - let tokens; - // We don't want to mutate the original object - const platformConfig = transformConfig(this.options.platforms[platform], this, platform); - - // We need to transform the object before we resolve the - // variable names because if a value contains concatenated - // values like "1px solid {color.border.base}" we want to - // transform the original value (color.border.base) before - // replacing that value in the string. - tokens = this.exportPlatform(platform); - - // This is the dictionary object we pass to the file - // building and action methods. - const dictionary = createDictionary({ tokens }); - - buildFiles(dictionary, platformConfig); - performActions(dictionary, platformConfig); - - // For chaining - return this; -} diff --git a/lib/cleanAllPlatforms.js b/lib/cleanAllPlatforms.js deleted file mode 100644 index 4dafcac9a..000000000 --- a/lib/cleanAllPlatforms.js +++ /dev/null @@ -1,32 +0,0 @@ -/* - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with - * the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR - * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - -/** - * Does the reverse of [buildAllPlatforms](#buildAllPlatforms) by - * performing a clean on each platform. This removes all the files - * defined in the platform and calls the undo method on any actions. - * - * @static - * @memberof module:style-dictionary - * @returns {module:style-dictionary} - */ -export default function cleanAllPlatforms() { - const self = this; - - Object.keys(this.options.platforms).forEach(function (key) { - self.cleanPlatform(key); - }); - - // For chaining - return this; -} diff --git a/lib/cleanPlatform.js b/lib/cleanPlatform.js deleted file mode 100644 index 0ba339ea6..000000000 --- a/lib/cleanPlatform.js +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with - * the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR - * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - -import createDictionary from './utils/createDictionary.js'; -import transformConfig from './transform/config.js'; -import cleanFiles from './cleanFiles.js'; -import cleanDirs from './cleanDirs.js'; -import cleanActions from './cleanActions.js'; - -/** - * Takes a platform and performs all transforms to - * the tokens object (non-mutative) then - * cleans all the files and performs the undo method of any [actions](actions.md). - * - * @static - * @memberof module:style-dictionary - * @param {String} platform - * @returns {module:style-dictionary} - */ -export default function cleanPlatform(platform) { - console.log('\n' + platform); - - if (!this.options || !(platform in (this.options.platforms || {}))) { - throw new Error('Platform ' + platform + " doesn't exist"); - } - - let tokens; - // We don't want to mutate the original object - const platformConfig = transformConfig(this.options.platforms[platform], this, platform); - - // We need to transform the object before we resolve the - // variable names because if a value contains concatenated - // values like "1px solid {color.border.base}" we want to - // transform the original value (color.border.base) before - // replacing that value in the string. - tokens = this.exportPlatform(platform); - - // This is the dictionary object we pass to the file - // cleaning and action methods. - const dictionary = createDictionary({ tokens }); - - // We clean files first, then actions, ...and then directories? - cleanFiles(dictionary, platformConfig); - cleanActions(dictionary, platformConfig); - cleanDirs(dictionary, platformConfig); - - // For chaining - return this; -} diff --git a/lib/exportPlatform.js b/lib/exportPlatform.js deleted file mode 100644 index 86c05a072..000000000 --- a/lib/exportPlatform.js +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with - * the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR - * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - -import resolveObject from './utils/resolveObject.js'; -import getName from './utils/references/getName.js'; -import transformObject from './transform/object.js'; -import transformConfig from './transform/config.js'; -import GroupMessages from './utils/groupMessages.js'; - -const PROPERTY_REFERENCE_WARNINGS = GroupMessages.GROUP.PropertyReferenceWarnings; - -/** - * Exports a tokens object with applied - * platform transforms. - * - * This is useful if you want to use a style - * dictionary in JS build tools like webpack. - * - * @static - * @memberof module:style-dictionary - * @param {String} platform - The platform to be exported. - * Must be defined on the style dictionary. - * @returns {Object} - */ -export default function exportPlatform(platform) { - if (!platform || !this.options.platforms[platform]) { - throw new Error('Please supply a valid platform'); - } - - // We don't want to mutate the original object - const platformConfig = transformConfig(this.options.platforms[platform], this); - - let exportableResult = this.tokens; - - // list keeping paths of props with applied value transformations - const transformedPropRefs = []; - // list keeping paths of props that had references in it, and therefore - // could not (yet) have transformed - const deferredPropValueTransforms = []; - - const transformationContext = { - transformedPropRefs, - deferredPropValueTransforms, - }; - - let deferredPropCount = 0; - let finished; - - while (typeof finished === 'undefined') { - // We keep up transforming and resolving until all props are resolved - // and every defined transformation was executed. Remember: transformations - // can only be executed, if the value to be transformed, has no references - // in it. So resolving may lead to enable further transformations, and sub - // sequent resolving may enable even more transformations - and so on. - // So we keep this loop running until sub sequent transformations are ineffective. - // - // Take the following example: - // - // color.brand = { - // value: "{color.base.green}" - // } - // - // color.background.button.primary.base = { - // value: "{color.brand.value}", - // color: { - // desaturate: 0.5 - // } - // } - // - // color.background.button.primary.hover = { - // value: "{color.background.button.primary.base}", - // color: { - // darken: 0.2 - // } - // } - // - // As you can see 'color.background.button.primary.hover' is a variation - // of 'color.background.button.primary.base' which is a variation of - // 'color.base.green'. These transitive references are solved by running - // this loop until all tokens are transformed and resolved. - - // We need to transform the object before we resolve the - // variable names because if a value contains concatenated - // values like "1px solid {color.border.base}" we want to - // transform the original value (color.border.base) before - // replacing that value in the string. - const transformed = transformObject(exportableResult, platformConfig, transformationContext); - - // referenced values, that have not (yet) been transformed should be excluded from resolving - const ignorePathsToResolve = deferredPropValueTransforms.map((p) => getName([p, 'value'])); - exportableResult = resolveObject(transformed, { - ignorePaths: ignorePathsToResolve, - }); - - const newDeferredPropCount = deferredPropValueTransforms.length; - - // nothing left to transform -> ready - if (newDeferredPropCount === 0) { - finished = true; - // or deferred count doesn't go down, that means there - // is a circular reference -> ready (but errored) - } else if (deferredPropCount === newDeferredPropCount) { - // if we didn't resolve any deferred references then we have a circular reference - // the resolveObject method will find the circular references - // we do this in case there are multiple circular references - resolveObject(transformed); - finished = true; - } else { - // neither of these things, keep going. - deferredPropCount = newDeferredPropCount; - } - } - - if (GroupMessages.count(PROPERTY_REFERENCE_WARNINGS) > 0) { - const warnings = GroupMessages.flush(PROPERTY_REFERENCE_WARNINGS).join('\n'); - console.log(`\n${PROPERTY_REFERENCE_WARNINGS}:\n${warnings}\n\n`); - throw new Error('Problems were found when trying to resolve property references'); - } - - return exportableResult; -} diff --git a/lib/register/action.js b/lib/register/action.js index 11c2ea501..55c666fb4 100644 --- a/lib/register/action.js +++ b/lib/register/action.js @@ -50,7 +50,7 @@ export default function registerAction(action) { if (typeof action.name !== 'string') throw new Error('name must be a string'); if (typeof action.do !== 'function') throw new Error('do must be a function'); - this._action[action.name] = { + this.action[action.name] = { do: action.do, undo: action.undo, }; diff --git a/lib/register/fileHeader.js b/lib/register/fileHeader.js index 1ee679da8..82cbcd841 100644 --- a/lib/register/fileHeader.js +++ b/lib/register/fileHeader.js @@ -40,7 +40,7 @@ export default function registerFileHeader(options) { if (typeof options.fileHeader !== 'function') throw new Error("Can't register file header; options.fileHeader must be a function"); - this._fileHeader[options.name] = options.fileHeader; + this.fileHeader[options.name] = options.fileHeader; return this; } diff --git a/lib/register/filter.js b/lib/register/filter.js index 104fef2e3..79bcac785 100644 --- a/lib/register/filter.js +++ b/lib/register/filter.js @@ -35,7 +35,7 @@ export default function registerFilter(filter) { if (typeof filter.matcher !== 'function') throw new Error("Can't register filter; filter.matcher must be a function"); - this._filter[filter.name] = filter.matcher; + this.filter[filter.name] = filter.matcher; return this; } diff --git a/lib/register/format.js b/lib/register/format.js index 6efc43a2b..40b11d925 100644 --- a/lib/register/format.js +++ b/lib/register/format.js @@ -66,7 +66,7 @@ export default function registerFormat(format) { if (typeof format.formatter !== 'function') throw new Error("Can't register format; format.formatter must be a function"); - this._format[format.name] = format.formatter; + this.format[format.name] = format.formatter; return this; } diff --git a/lib/register/parser.js b/lib/register/parser.js index 2e8ec17ed..b778082fd 100644 --- a/lib/register/parser.js +++ b/lib/register/parser.js @@ -34,7 +34,7 @@ export default function registerParser(options) { if (typeof options.parse !== 'function') throw new Error("Can't register parser; parser.parse must be a function"); - this._parsers.push(options); + this.parsers.push(options); return this; } diff --git a/lib/register/transform.js b/lib/register/transform.js index e7c60ab9a..20a48babf 100644 --- a/lib/register/transform.js +++ b/lib/register/transform.js @@ -61,6 +61,6 @@ export default function registerTransform(options) { transformer: options.transformer, }; - this._transform[options.name] = transform; + this.transform[options.name] = transform; return this; } diff --git a/lib/register/transformGroup.js b/lib/register/transformGroup.js index 6295bcc73..479396b63 100644 --- a/lib/register/transformGroup.js +++ b/lib/register/transformGroup.js @@ -41,11 +41,11 @@ export default function registerTransformGroup(options) { options.transforms.forEach( function (t) { - if (!(t in this._transform)) + if (!(t in this.transform)) throw new Error('transforms must be an array of registered value transforms'); }.bind(this), ); - this._transformGroup[options.name] = options.transforms; + this.transformGroup[options.name] = options.transforms; return this; } diff --git a/lib/transform/config.js b/lib/transform/config.js index 18d7fa106..619afa8a4 100644 --- a/lib/transform/config.js +++ b/lib/transform/config.js @@ -30,6 +30,7 @@ const MISSING_TRANSFORM_ERRORS = GroupMessages.GROUP.MissingRegisterTransformErr */ export default function transformConfig(platformConfig, dictionary, platformName) { const to_ret = clone(platformConfig); + to_ret.log = dictionary.log; // The platform can define either a transformGroup or an array // of transforms. If given a transformGroup that doesn't exist, diff --git a/lib/utils/es6_.js b/lib/utils/es6_.js index 0ea3527d0..f6b6a2bed 100644 --- a/lib/utils/es6_.js +++ b/lib/utils/es6_.js @@ -103,7 +103,6 @@ export const assign = function () { return Object.assign(...args); }; -/* global Set */ export const pull = function (arr, ...removeList) { var removeSet = new Set(removeList); for (let i = arr.length - 1; i >= 0; i--) { diff --git a/lib/utils/resolveObject.js b/lib/utils/resolveObject.js index 4087f913a..57d0d9406 100644 --- a/lib/utils/resolveObject.js +++ b/lib/utils/resolveObject.js @@ -113,7 +113,7 @@ function compile_value(value, stack) { // Recursive, therefore we can compute multi-layer variables like a = b, b = c, eventually a = c if (usesReference(to_ret, regex)) { - var reference = to_ret.slice(1, -1); + const reference = to_ret.slice(1, -1); // Compare to found circular references if (foundCirc.hasOwnProperty(reference)) { @@ -123,10 +123,10 @@ function compile_value(value, stack) { // chop down only the circular part, save it to our circular reference info, and spit out an error // Get the position of the existing reference in the stack - var stackIndexReference = stack.indexOf(reference); + const stackIndexReference = stack.indexOf(reference); // Get the portion of the stack that starts at the circular reference and brings you through until the end - var circStack = stack.slice(stackIndexReference); + const circStack = stack.slice(stackIndexReference); // For all the references in this list, add them to the list of references that end up in a circular reference circStack.forEach(function (key) { diff --git a/package-lock.json b/package-lock.json index e857ca12a..bac8dce25 100644 --- a/package-lock.json +++ b/package-lock.json @@ -30,6 +30,7 @@ "style-dictionary": "bin/style-dictionary" }, "devDependencies": { + "@babel/plugin-proposal-private-property-in-object": "^7.21.11", "@changesets/cli": "^2.26.2", "@commitlint/cli": "^16.1.0", "@commitlint/config-conventional": "^16.0.0", @@ -43,6 +44,7 @@ "docsify": "^4.12.2", "docsify-cli": "^4.4.3", "eslint": "^8.7.0", + "eslint-config-react-app": "^7.0.1", "eslint-plugin-jest": "^26.0.0", "hanbi": "^1.0.1", "husky": "^8.0.3", @@ -95,122 +97,2161 @@ "node": ">=0.10.0" } }, + "node_modules/@ampproject/remapping": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/@babel/code-frame": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", - "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.4.tgz", + "integrity": "sha512-r1IONyb6Ia+jYR2vvIDhdWdlTGhqbBoFqLTQidzZ4kepUFH15ejXvFHxCVbtl7BOXIudsIubf4E81xeA3h3IXA==", "dev": true, "dependencies": { - "@babel/highlight": "^7.16.7" + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", - "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "node_modules/@babel/code-frame/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/code-frame/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/code-frame/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/code-frame/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.3.tgz", + "integrity": "sha512-BmR4bWbDIoFJmJ9z2cZ8Gmm2MXgEDgjdWgpKmKWUt54UGFJdlj31ECtbaDvCG/qVdG3AQ1SfpZEs01lUFbzLOQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/highlight": { - "version": "7.16.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", - "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", + "node_modules/@babel/core": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.3.tgz", + "integrity": "sha512-Jg+msLuNuCJDyBvFv5+OKOUjWMZgd85bKjbICd3zWrKAo+bJ49HJufi7CQE0q0uR8NGyO6xkCACScNqyjHSZew==", "dev": true, "dependencies": { - "@babel/helper-validator-identifier": "^7.16.7", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.22.13", + "@babel/generator": "^7.23.3", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.23.2", + "@babel/parser": "^7.23.3", + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.3", + "@babel/types": "^7.23.3", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" }, "engines": { "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/@babel/eslint-parser": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.23.3.tgz", + "integrity": "sha512-9bTuNlyx7oSstodm1cR1bECj4fkiknsDa1YniISkJemMY3DGhJNYBECbe6QD/q54mp2J8VO66jW3/7uP//iFCw==", "dev": true, "dependencies": { - "color-convert": "^1.9.0" + "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", + "eslint-visitor-keys": "^2.1.0", + "semver": "^6.3.1" }, "engines": { - "node": ">=4" + "node": "^10.13.0 || ^12.13.0 || >=14.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.11.0", + "eslint": "^7.5.0 || ^8.0.0" + } + }, + "node_modules/@babel/eslint-parser/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/@babel/generator": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.4.tgz", + "integrity": "sha512-esuS49Cga3HcThFNebGhlgsrVLkvhqvYDTzgjfFFlHJcIfLe5jFmRRfCQ1KuBfc4Jrtn3ndLgKWAKjBE+IraYQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.23.4", + "@jridgewell/gen-mapping": "^0.3.2", + "@jridgewell/trace-mapping": "^0.3.17", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.22.5.tgz", + "integrity": "sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", + "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", + "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.9", + "@babel/helper-validator-option": "^7.22.15", + "browserslist": "^4.21.9", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.22.15.tgz", + "integrity": "sha512-jKkwA59IXcvSaiK2UN45kKwSC9o+KuoXsBDvHvU/7BecYIp8GQ2UwrVvFgJASUT+hBnwJx6MhvMCuMzwZZ7jlg==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.5", + "@babel/helper-function-name": "^7.22.5", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", + "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "regexpu-core": "^5.3.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz", + "integrity": "sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.6", + "@babel/helper-plugin-utils": "^7.22.5", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", + "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.22.5.tgz", + "integrity": "sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz", + "integrity": "sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", + "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-wrap-function": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", + "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-member-expression-to-functions": "^7.22.15", + "@babel/helper-optimise-call-expression": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.22.5.tgz", + "integrity": "sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.15.tgz", + "integrity": "sha512-bMn7RmyFjY/mdECUbgn9eoSY4vqvacUnS9i9vGAGttgFWesO6B4CYWA7XlpbWgBt71iv/hfbPlynohStqnu5hA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", + "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.22.5", + "@babel/template": "^7.22.15", + "@babel/types": "^7.22.19" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.4.tgz", + "integrity": "sha512-HfcMizYz10cr3h29VqyfGL6ZWIjTwWfvYBMsBVGwpcbhNGe3wQ1ZXZRPzZoAHhd9OqHadHqjQ89iVKINXnbzuw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/traverse": "^7.23.4", + "@babel/types": "^7.23.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.4.tgz", + "integrity": "sha512-vf3Xna6UEprW+7t6EtOmFpHNAuxw3xqPZghy+brsnusscJRW5BMUzzHZc5ICjULee81WeUV2jjakG09MDglJXQ==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz", + "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", + "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-transform-optional-chaining": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.3.tgz", + "integrity": "sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-decorators": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-decorators/-/plugin-proposal-decorators-7.23.3.tgz", + "integrity": "sha512-u8SwzOcP0DYSsa++nHd/9exlHb0NAlHCb890qtZZbSwPX2bFv8LBEztxwN7Xg/dS8oAFFidhrI9PBcLBJSkGRQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/plugin-syntax-decorators": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead.", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead.", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.21.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", + "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead.", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.11.tgz", + "integrity": "sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead.", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.21.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-decorators": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-decorators/-/plugin-syntax-decorators-7.23.3.tgz", + "integrity": "sha512-cf7Niq4/+/juY67E0PbgH0TDhLQ5J7zS8C/Q5FFx+DWyrRa9sUQdTXkjqKu8zGvuqr7vw1muKiukseihU+PJDA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-flow": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.23.3.tgz", + "integrity": "sha512-YZiAIpkJAwQXBJLIQbRFayR5c+gJ35Vcz3bg954k7cd73zqjvhacJuL9RbrzPz8qPmZdgqP6EUKwy0PCNhaaPA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-assertions": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz", + "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz", + "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", + "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz", + "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-unicode-sets-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz", + "integrity": "sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz", + "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-generator-functions": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.4.tgz", + "integrity": "sha512-efdkfPhHYTtn0G6n2ddrESE91fgXxjlqLsnUtPWnJs4a4mZIbUaK7ffqKIIUKXSHwcDvaCVX6GXkaJJFqtX7jw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", + "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-remap-async-to-generator": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz", + "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz", + "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-properties": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz", + "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-class-static-block": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz", + "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.3.tgz", + "integrity": "sha512-FGEQmugvAEu2QtgtU0uTASXevfLMFfBeVCIIdcQhn/uBQsMTjBajdnAtanQlOcuihWh10PZ7+HWvc7NtBwP74w==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-optimise-call-expression": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20", + "@babel/helper-split-export-declaration": "^7.22.6", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz", + "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/template": "^7.22.15" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", + "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz", + "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz", + "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dynamic-import": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz", + "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz", + "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==", + "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-export-namespace-from": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz", + "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-flow-strip-types": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.23.3.tgz", + "integrity": "sha512-26/pQTf9nQSNVJCrLB1IkHUKyPxR+lMrH2QDPG89+Znu9rAMbtrybdbWeE9bb7gzjmE5iXHEY+e0HUwM6Co93Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-flow": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.3.tgz", + "integrity": "sha512-X8jSm8X1CMwxmK878qsUGJRmbysKNbdpTv/O1/v0LuY/ZkZrng5WYiekYSdg9m09OTmDDUWeEDsTE+17WYbAZw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz", + "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-json-strings": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz", + "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz", + "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-logical-assignment-operators": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz", + "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz", + "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", + "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", + "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-simple-access": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz", + "integrity": "sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==", + "dev": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz", + "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz", + "integrity": "sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz", + "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz", + "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-numeric-separator": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz", + "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-rest-spread": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz", + "integrity": "sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.23.3", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz", + "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-replace-supers": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-catch-binding": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz", + "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-optional-chaining": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz", + "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", + "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-methods": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz", + "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-private-property-in-object": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", + "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz", + "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-display-name": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz", + "integrity": "sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz", + "integrity": "sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-jsx": "^7.23.3", + "@babel/types": "^7.23.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-development": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz", + "integrity": "sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==", + "dev": true, + "dependencies": { + "@babel/plugin-transform-react-jsx": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-pure-annotations": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.23.3.tgz", + "integrity": "sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", + "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "regenerator-transform": "^0.15.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz", + "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.4.tgz", + "integrity": "sha512-ITwqpb6V4btwUG0YJR82o2QvmWrLgDnx/p2A3CTPYGaRgULkDiC0DRA2C4jlRB9uXGUEfaSS/IGHfVW+ohzYDw==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "babel-plugin-polyfill-corejs2": "^0.4.6", + "babel-plugin-polyfill-corejs3": "^0.8.5", + "babel-plugin-polyfill-regenerator": "^0.5.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz", + "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz", + "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz", + "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz", + "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz", + "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typescript": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.4.tgz", + "integrity": "sha512-39hCCOl+YUAyMOu6B9SmUTiHUU0t/CxJNUmY3qRdJujbqi+lrQcL11ysYUsAvFWPBdhihrv1z0oRG84Yr3dODQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.22.5", + "@babel/helper-create-class-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/plugin-syntax-typescript": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", + "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-property-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz", + "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz", + "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-sets-regex": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz", + "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.3.tgz", + "integrity": "sha512-ovzGc2uuyNfNAs/jyjIGxS8arOHS5FENZaNn4rtE7UdKMMkqHCvboHfcuhWLZNX5cB44QfcGNWjaevxMzzMf+Q==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.23.3", + "@babel/helper-compilation-targets": "^7.22.15", + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.23.3", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.23.3", + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": "^7.23.3", + "@babel/plugin-proposal-private-property-in-object": "7.21.0-placeholder-for-preset-env.2", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.23.3", + "@babel/plugin-syntax-import-attributes": "^7.23.3", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-syntax-unicode-sets-regex": "^7.18.6", + "@babel/plugin-transform-arrow-functions": "^7.23.3", + "@babel/plugin-transform-async-generator-functions": "^7.23.3", + "@babel/plugin-transform-async-to-generator": "^7.23.3", + "@babel/plugin-transform-block-scoped-functions": "^7.23.3", + "@babel/plugin-transform-block-scoping": "^7.23.3", + "@babel/plugin-transform-class-properties": "^7.23.3", + "@babel/plugin-transform-class-static-block": "^7.23.3", + "@babel/plugin-transform-classes": "^7.23.3", + "@babel/plugin-transform-computed-properties": "^7.23.3", + "@babel/plugin-transform-destructuring": "^7.23.3", + "@babel/plugin-transform-dotall-regex": "^7.23.3", + "@babel/plugin-transform-duplicate-keys": "^7.23.3", + "@babel/plugin-transform-dynamic-import": "^7.23.3", + "@babel/plugin-transform-exponentiation-operator": "^7.23.3", + "@babel/plugin-transform-export-namespace-from": "^7.23.3", + "@babel/plugin-transform-for-of": "^7.23.3", + "@babel/plugin-transform-function-name": "^7.23.3", + "@babel/plugin-transform-json-strings": "^7.23.3", + "@babel/plugin-transform-literals": "^7.23.3", + "@babel/plugin-transform-logical-assignment-operators": "^7.23.3", + "@babel/plugin-transform-member-expression-literals": "^7.23.3", + "@babel/plugin-transform-modules-amd": "^7.23.3", + "@babel/plugin-transform-modules-commonjs": "^7.23.3", + "@babel/plugin-transform-modules-systemjs": "^7.23.3", + "@babel/plugin-transform-modules-umd": "^7.23.3", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.22.5", + "@babel/plugin-transform-new-target": "^7.23.3", + "@babel/plugin-transform-nullish-coalescing-operator": "^7.23.3", + "@babel/plugin-transform-numeric-separator": "^7.23.3", + "@babel/plugin-transform-object-rest-spread": "^7.23.3", + "@babel/plugin-transform-object-super": "^7.23.3", + "@babel/plugin-transform-optional-catch-binding": "^7.23.3", + "@babel/plugin-transform-optional-chaining": "^7.23.3", + "@babel/plugin-transform-parameters": "^7.23.3", + "@babel/plugin-transform-private-methods": "^7.23.3", + "@babel/plugin-transform-private-property-in-object": "^7.23.3", + "@babel/plugin-transform-property-literals": "^7.23.3", + "@babel/plugin-transform-regenerator": "^7.23.3", + "@babel/plugin-transform-reserved-words": "^7.23.3", + "@babel/plugin-transform-shorthand-properties": "^7.23.3", + "@babel/plugin-transform-spread": "^7.23.3", + "@babel/plugin-transform-sticky-regex": "^7.23.3", + "@babel/plugin-transform-template-literals": "^7.23.3", + "@babel/plugin-transform-typeof-symbol": "^7.23.3", + "@babel/plugin-transform-unicode-escapes": "^7.23.3", + "@babel/plugin-transform-unicode-property-regex": "^7.23.3", + "@babel/plugin-transform-unicode-regex": "^7.23.3", + "@babel/plugin-transform-unicode-sets-regex": "^7.23.3", + "@babel/preset-modules": "0.1.6-no-external-plugins", + "babel-plugin-polyfill-corejs2": "^0.4.6", + "babel-plugin-polyfill-corejs3": "^0.8.5", + "babel-plugin-polyfill-regenerator": "^0.5.3", + "core-js-compat": "^3.31.0", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.21.0-placeholder-for-preset-env.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.0-placeholder-for-preset-env.2.tgz", + "integrity": "sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.6-no-external-plugins", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz", + "integrity": "sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0 || ^8.0.0-0 <8.0.0" } }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/@babel/preset-react": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.23.3.tgz", + "integrity": "sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w==", "dev": true, "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-transform-react-display-name": "^7.23.3", + "@babel/plugin-transform-react-jsx": "^7.22.15", + "@babel/plugin-transform-react-jsx-development": "^7.22.5", + "@babel/plugin-transform-react-pure-annotations": "^7.23.3" }, "engines": { - "node": ">=4" + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "node_modules/@babel/preset-typescript": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.23.3.tgz", + "integrity": "sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==", "dev": true, "dependencies": { - "color-name": "1.1.3" + "@babel/helper-plugin-utils": "^7.22.5", + "@babel/helper-validator-option": "^7.22.15", + "@babel/plugin-syntax-jsx": "^7.23.3", + "@babel/plugin-transform-modules-commonjs": "^7.23.3", + "@babel/plugin-transform-typescript": "^7.23.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "node_modules/@babel/regjsgen": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", + "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", "dev": true }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "node_modules/@babel/runtime": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz", + "integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==", "dev": true, + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, "engines": { - "node": ">=4" + "node": ">=6.9.0" } }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/@babel/template": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", "dev": true, "dependencies": { - "has-flag": "^3.0.0" + "@babel/code-frame": "^7.22.13", + "@babel/parser": "^7.22.15", + "@babel/types": "^7.22.15" }, "engines": { - "node": ">=4" + "node": ">=6.9.0" } }, - "node_modules/@babel/parser": { - "version": "7.16.12", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.12.tgz", - "integrity": "sha512-VfaV15po8RiZssrkPweyvbGVSe4x2y+aciFCgn0n0/SJMR22cwofRV1mtnJQYcSB1wUTaA/X1LnA3es66MCO5A==", + "node_modules/@babel/traverse": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.4.tgz", + "integrity": "sha512-IYM8wSUwunWTB6tFC2dkKZhxbIjHoWemdK+3f8/wq8aKhbUscxD5MX72ubd90fxvFknaLPeGw5ycU84V1obHJg==", "dev": true, - "bin": { - "parser": "bin/babel-parser.js" + "dependencies": { + "@babel/code-frame": "^7.23.4", + "@babel/generator": "^7.23.4", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.23.4", + "@babel/types": "^7.23.4", + "debug": "^4.1.0", + "globals": "^11.1.0" }, "engines": { - "node": ">=6.0.0" + "node": ">=6.9.0" } }, - "node_modules/@babel/runtime": { - "version": "7.23.2", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz", - "integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==", + "node_modules/@babel/types": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.4.tgz", + "integrity": "sha512-7uIFwVYpoplT5jp/kVv6EF93VaJ8H+Yn5IczYiaAi98ajzjfoZfslet/e0sLh+wVBjb2qqIut1b0S26VSafsSQ==", "dev": true, "dependencies": { - "regenerator-runtime": "^0.14.0" + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" }, "engines": { "node": ">=6.9.0" @@ -1740,18 +3781,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/@eslint/eslintrc/node_modules/type-fest": { "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", @@ -1910,6 +3939,20 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", @@ -1919,6 +3962,15 @@ "node": ">=6.0.0" } }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.15", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", @@ -2089,6 +4141,15 @@ "node": ">= 4.0.0" } }, + "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { + "version": "5.1.1-v1", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", + "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", + "dev": true, + "dependencies": { + "eslint-scope": "5.1.1" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -2180,6 +4241,12 @@ } } }, + "node_modules/@rushstack/eslint-patch": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@rushstack/eslint-patch/-/eslint-patch-1.5.1.tgz", + "integrity": "sha512-6i/8UoL0P5y4leBIGzvkZdS85RDMG9y1ihZzmTZQ5LdHUYmZ7pKFoj8X0236s3lusPs1Fa5HTQUpwI+UfTcmeA==", + "dev": true + }, "node_modules/@sindresorhus/is": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", @@ -2413,6 +4480,12 @@ "integrity": "sha512-qcUXuemtEu+E5wZSJHNxUXeCZhAfXKQ41D+duX+VYPde7xyEVZci+/oXKJL13tnRs9lR2pr4fod59GT6/X1/yQ==", "dev": true }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, "node_modules/@types/keygrip": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/@types/keygrip/-/keygrip-1.0.4.tgz", @@ -2566,14 +4639,146 @@ "@types/node": "*" } }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", + "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.4.0", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/type-utils": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/@typescript-eslint/experimental-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-5.62.0.tgz", + "integrity": "sha512-RTXpeB3eMkpoclG3ZHft6vG/Z30azNHuqY6wKPBHlVMZFuEvrtlEDe8gMqDb+SO+9hjC/pLekeSCryf9vMZlCw==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", + "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.10.1.tgz", - "integrity": "sha512-Lyvi559Gvpn94k7+ElXNMEnXu/iundV5uFmCUNnftbFrUbAJ1WBoaGgkbOBm07jVZa682oaBU37ao/NGGX4ZDg==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", + "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.10.1", - "@typescript-eslint/visitor-keys": "5.10.1" + "@typescript-eslint/typescript-estree": "5.62.0", + "@typescript-eslint/utils": "5.62.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -2581,12 +4786,20 @@ "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, "node_modules/@typescript-eslint/types": { - "version": "5.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.10.1.tgz", - "integrity": "sha512-ZvxQ2QMy49bIIBpTqFiOenucqUyjTQ0WNLhBM6X1fh1NNlYAC6Kxsx8bRTY3jdYsYg44a0Z/uEgQkohbR0H87Q==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -2597,17 +4810,17 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.10.1.tgz", - "integrity": "sha512-PwIGnH7jIueXv4opcwEbVGDATjGPO1dx9RkUl5LlHDSe+FXxPwFL5W/qYd5/NHr7f6lo/vvTrAzd0KlQtRusJQ==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.10.1", - "@typescript-eslint/visitor-keys": "5.10.1", - "debug": "^4.3.2", - "globby": "^11.0.4", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/visitor-keys": "5.62.0", + "debug": "^4.3.4", + "globby": "^11.1.0", "is-glob": "^4.0.3", - "semver": "^7.3.5", + "semver": "^7.3.7", "tsutils": "^3.21.0" }, "engines": { @@ -2636,9 +4849,9 @@ } }, "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { "lru-cache": "^6.0.0" @@ -2657,17 +4870,19 @@ "dev": true }, "node_modules/@typescript-eslint/utils": { - "version": "5.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.10.1.tgz", - "integrity": "sha512-RRmlITiUbLuTRtn/gcPRi4202niF+q7ylFLCKu4c+O/PcpRvZ/nAUwQ2G00bZgpWkhrNLNnvhZLbDn8Ml0qsQw==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", "dev": true, "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.10.1", - "@typescript-eslint/types": "5.10.1", - "@typescript-eslint/typescript-estree": "5.10.1", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.62.0", + "@typescript-eslint/types": "5.62.0", + "@typescript-eslint/typescript-estree": "5.62.0", "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" + "semver": "^7.3.7" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -2680,14 +4895,47 @@ "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, + "node_modules/@typescript-eslint/utils/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@typescript-eslint/utils/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.10.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.10.1.tgz", - "integrity": "sha512-NjQ0Xinhy9IL979tpoTRuLKxMc0zJC7QVSdeerXs2/QvOy2yRkzX5dRb10X5woNUdJgU8G3nYRDlI33sq1K4YQ==", + "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.10.1", - "eslint-visitor-keys": "^3.0.0" + "@typescript-eslint/types": "5.62.0", + "eslint-visitor-keys": "^3.3.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -3188,12 +5436,6 @@ "node": ">=18.0.0" } }, - "node_modules/@web/test-runner-core/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, "node_modules/@web/test-runner-core/node_modules/open": { "version": "8.4.2", "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", @@ -3236,12 +5478,6 @@ "node": ">=18.0.0" } }, - "node_modules/@web/test-runner-coverage-v8/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, "node_modules/@web/test-runner-coverage-v8/node_modules/lru-cache": { "version": "8.0.5", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz", @@ -3315,14 +5551,8 @@ "typical": "^7.1.1" }, "engines": { - "node": ">=12.20.0" - } - }, - "node_modules/@web/test-runner/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true + "node": ">=12.20.0" + } }, "node_modules/@web/test-runner/node_modules/diff": { "version": "5.1.0", @@ -3559,6 +5789,15 @@ "sprintf-js": "~1.0.2" } }, + "node_modules/aria-query": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", + "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "dev": true, + "dependencies": { + "dequal": "^2.0.3" + } + }, "node_modules/array-back": { "version": "6.2.2", "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.2.tgz", @@ -3587,6 +5826,25 @@ "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=", "dev": true }, + "node_modules/array-includes": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", + "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array-union": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", @@ -3596,6 +5854,25 @@ "node": ">=8" } }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", + "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/array.prototype.flat": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", @@ -3614,6 +5891,37 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz", + "integrity": "sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0", + "get-intrinsic": "^1.2.1" + } + }, "node_modules/arraybuffer.prototype.slice": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", @@ -3677,6 +5985,12 @@ "node": ">=4" } }, + "node_modules/ast-types-flow": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", + "dev": true + }, "node_modules/astral-regex": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", @@ -3695,6 +6009,15 @@ "tslib": "^2.4.0" } }, + "node_modules/asynciterator.prototype": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", + "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.3" + } + }, "node_modules/at-least-node": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", @@ -3726,12 +6049,114 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/axe-core": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.0.tgz", + "integrity": "sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/axobject-query": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.2.1.tgz", + "integrity": "sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==", + "dev": true, + "dependencies": { + "dequal": "^2.0.3" + } + }, "node_modules/b4a": { "version": "1.6.4", "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.4.tgz", "integrity": "sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==", "dev": true }, + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz", + "integrity": "sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.22.6", + "@babel/helper-define-polyfill-provider": "^0.4.3", + "semver": "^6.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.8.6", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.6.tgz", + "integrity": "sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.3", + "core-js-compat": "^3.33.1" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz", + "integrity": "sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.4.3" + }, + "peerDependencies": { + "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" + } + }, + "node_modules/babel-plugin-transform-react-remove-prop-types": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-remove-prop-types/-/babel-plugin-transform-react-remove-prop-types-0.4.24.tgz", + "integrity": "sha512-eqj0hVcJUR57/Ug2zE1Yswsw4LhuqqHhD+8v120T1cl3kjg76QwtyBrdIk4WVwK+lAhBJVYCd/v+4nc4y+8JsA==", + "dev": true + }, + "node_modules/babel-preset-react-app": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-react-app/-/babel-preset-react-app-10.0.1.tgz", + "integrity": "sha512-b0D9IZ1WhhCWkrTXyFuIIgqGzSkRIH5D5AmB0bXbzYAB1OBAwHcUeyWW2LorutLWF5btNo/N7r/cIdmvvKJlYg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.16.0", + "@babel/plugin-proposal-class-properties": "^7.16.0", + "@babel/plugin-proposal-decorators": "^7.16.4", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.0", + "@babel/plugin-proposal-numeric-separator": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.0", + "@babel/plugin-proposal-private-methods": "^7.16.0", + "@babel/plugin-transform-flow-strip-types": "^7.16.0", + "@babel/plugin-transform-react-display-name": "^7.16.0", + "@babel/plugin-transform-runtime": "^7.16.4", + "@babel/preset-env": "^7.16.4", + "@babel/preset-react": "^7.16.0", + "@babel/preset-typescript": "^7.16.0", + "@babel/runtime": "^7.16.3", + "babel-plugin-macros": "^3.1.0", + "babel-plugin-transform-react-remove-prop-types": "^0.4.24" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -3871,6 +6296,38 @@ "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", "dev": true }, + "node_modules/browserslist": { + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", + "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001541", + "electron-to-chromium": "^1.4.535", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, "node_modules/buffer": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", @@ -4049,6 +6506,26 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/caniuse-lite": { + "version": "1.0.30001563", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001563.tgz", + "integrity": "sha512-na2WUmOxnwIZtwnFI2CZ/3er0wdNzU7hN+cPYz/z2ajHThnkWjNBOpEPP4n+4r2WPM847JaMotaJE3bnfzjyKw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, "node_modules/capital-case": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", @@ -4614,6 +7091,12 @@ "node": ">=8" } }, + "node_modules/confusing-browser-globals": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", + "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", + "dev": true + }, "node_modules/connect": { "version": "3.7.0", "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", @@ -5107,6 +7590,12 @@ "node": ">=10" } }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, "node_modules/cookies": { "version": "0.8.0", "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.8.0.tgz", @@ -5138,6 +7627,19 @@ "is-what": "^3.12.0" } }, + "node_modules/core-js-compat": { + "version": "3.33.3", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.3.tgz", + "integrity": "sha512-cNzGqFsh3Ot+529GIXacjTJ7kegdt5fPXxCBVS1G0iaZpuo/tBz399ymceLJveQhFFZ8qThHiP3fzuoQjKN2ow==", + "dev": true, + "dependencies": { + "browserslist": "^4.22.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, "node_modules/core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", @@ -5307,6 +7809,12 @@ "integrity": "sha512-PjiQ659aQ+fUTQqSrd1XEDnOr52jh30RBurfzkscaE2tPaFsDH5wOAHJiw8XAHphRknCwMUE9KRayc4K/NbO8A==", "dev": true }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true + }, "node_modules/dargs": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/dargs/-/dargs-7.0.0.tgz", @@ -5594,6 +8102,15 @@ "node": ">= 0.6.0" } }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, "node_modules/destroy": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", @@ -6111,6 +8628,12 @@ "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", "dev": true }, + "node_modules/electron-to-chromium": { + "version": "1.4.589", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.589.tgz", + "integrity": "sha512-zF6y5v/YfoFIgwf2dDfAqVlPPsyQeWNpEWXbAlDUS8Ax4Z2VoiiZpAPC0Jm9hXEkJm2vIZpwB6rc4KnLTQffbQ==", + "dev": true + }, "node_modules/emitter-component": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/emitter-component/-/emitter-component-1.1.1.tgz", @@ -6266,6 +8789,28 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-iterator-helpers": { + "version": "1.0.15", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz", + "integrity": "sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==", + "dev": true, + "dependencies": { + "asynciterator.prototype": "^1.0.0", + "call-bind": "^1.0.2", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.1", + "es-set-tostringtag": "^2.0.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.0.1" + } + }, "node_modules/es-module-lexer": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.3.1.tgz", @@ -6393,10 +8938,178 @@ "eslint": "bin/eslint.js" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-react-app": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/eslint-config-react-app/-/eslint-config-react-app-7.0.1.tgz", + "integrity": "sha512-K6rNzvkIeHaTd8m/QEh1Zko0KI7BACWkkneSs6s9cKZC/J27X3eZR6Upt1jkmZ/4FK+XUOPPxMEN7+lbUXfSlA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.16.0", + "@babel/eslint-parser": "^7.16.3", + "@rushstack/eslint-patch": "^1.1.0", + "@typescript-eslint/eslint-plugin": "^5.5.0", + "@typescript-eslint/parser": "^5.5.0", + "babel-preset-react-app": "^10.0.1", + "confusing-browser-globals": "^1.0.11", + "eslint-plugin-flowtype": "^8.0.3", + "eslint-plugin-import": "^2.25.3", + "eslint-plugin-jest": "^25.3.0", + "eslint-plugin-jsx-a11y": "^6.5.1", + "eslint-plugin-react": "^7.27.1", + "eslint-plugin-react-hooks": "^4.3.0", + "eslint-plugin-testing-library": "^5.0.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "eslint": "^8.0.0" + } + }, + "node_modules/eslint-config-react-app/node_modules/eslint-plugin-jest": { + "version": "25.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-25.7.0.tgz", + "integrity": "sha512-PWLUEXeeF7C9QGKqvdSbzLOiLTx+bno7/HC9eefePfEb257QFHg7ye3dh80AZVkaa/RQsBB1Q/ORQvg2X7F0NQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/experimental-utils": "^5.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^4.0.0 || ^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "@typescript-eslint/eslint-plugin": { + "optional": true + }, + "jest": { + "optional": true + } + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-module-utils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.0.tgz", + "integrity": "sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==", + "dev": true, + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-flowtype": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-flowtype/-/eslint-plugin-flowtype-8.0.3.tgz", + "integrity": "sha512-dX8l6qUL6O+fYPtpNRideCFSpmWOUVx5QcaGLVqe/vlDiBSe4vYljDWDETwnyFzpl7By/WVIu6rcrniCgH9BqQ==", + "dev": true, + "dependencies": { + "lodash": "^4.17.21", + "string-natural-compare": "^3.0.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@babel/plugin-syntax-flow": "^7.14.5", + "@babel/plugin-transform-react-jsx": "^7.14.9", + "eslint": "^8.1.0" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.29.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.0.tgz", + "integrity": "sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", + "semver": "^6.3.1", + "tsconfig-paths": "^3.14.2" + }, + "engines": { + "node": ">=4" }, - "funding": { - "url": "https://opencollective.com/eslint" + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/eslint-plugin-jest": { @@ -6423,44 +9136,149 @@ } } }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.8.0.tgz", + "integrity": "sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==", "dev": true, "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" + "@babel/runtime": "^7.23.2", + "aria-query": "^5.3.0", + "array-includes": "^3.1.7", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "=4.7.0", + "axobject-query": "^3.2.1", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "es-iterator-helpers": "^1.0.15", + "hasown": "^2.0.0", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.entries": "^1.1.7", + "object.fromentries": "^2.0.7" }, "engines": { - "node": ">=8.0.0" + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" } }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "node_modules/eslint-plugin-jsx-a11y/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/eslint-plugin-react": { + "version": "7.33.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", + "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", "dev": true, "dependencies": { - "eslint-visitor-keys": "^2.0.0" + "array-includes": "^3.1.6", + "array.prototype.flatmap": "^1.3.1", + "array.prototype.tosorted": "^1.1.1", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.12", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.6", + "object.fromentries": "^2.0.6", + "object.hasown": "^1.1.2", + "object.values": "^1.1.6", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.4", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.8" }, "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + "node": ">=4" }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz", + "integrity": "sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==", + "dev": true, + "engines": { + "node": ">=10" }, "peerDependencies": { - "eslint": ">=5" + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0" } }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "node_modules/eslint-plugin-react/node_modules/doctrine": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, "engines": { - "node": ">=10" + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-testing-library": { + "version": "5.11.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-testing-library/-/eslint-plugin-testing-library-5.11.1.tgz", + "integrity": "sha512-5eX9e1Kc2PqVRed3taaLnAAqPZGEX75C+M/rXzUAI3wIg/ZxzUm1OVAwfe/O+vE+6YXOLetSe9g5GKD2ecXipw==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "^5.58.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0", + "npm": ">=6" + }, + "peerDependencies": { + "eslint": "^7.5.0 || ^8.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" } }, "node_modules/eslint-visitor-keys": { @@ -6586,18 +9404,6 @@ "node": ">= 0.8.0" } }, - "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/eslint/node_modules/optionator": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", @@ -7157,9 +9963,12 @@ } }, "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/function.prototype.name": { "version": "1.1.6", @@ -7188,6 +9997,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -7453,17 +10271,6 @@ "node": ">= 6" } }, - "node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/global-dirs": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-0.1.1.tgz", @@ -7476,6 +10283,15 @@ "node": ">=4" } }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/globalthis": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", @@ -7723,6 +10539,18 @@ "node": ">=8" } }, + "node_modules/hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/he": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", @@ -8076,6 +10904,21 @@ "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", "dev": true }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-bigint": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", @@ -8155,12 +10998,12 @@ } }, "node_modules/is-core-module": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz", - "integrity": "sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dev": true, "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -8204,6 +11047,18 @@ "node": ">=0.10.0" } }, + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -8275,6 +11130,15 @@ "integrity": "sha512-iKpRpXP+CrP2jyrxvg1kMUpXDyRUFDWurxbnVT1vQPx+Wz9uCYsMIqYuSBLV+PAaZG/d7kRLKRFc9oDMsH+mFQ==", "dev": true }, + "node_modules/is-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-module": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", @@ -8391,6 +11255,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-shared-array-buffer": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", @@ -8501,6 +11374,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-weakref": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", @@ -8513,6 +11395,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-weakset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-what": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", @@ -8652,6 +11547,19 @@ "node": ">=8" } }, + "node_modules/iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } + }, "node_modules/jackspeak": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.3.tgz", @@ -8836,6 +11744,18 @@ "node": ">=10" } }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/json-buffer": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", @@ -8919,9 +11839,9 @@ "dev": true }, "node_modules/json5": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.2.tgz", - "integrity": "sha512-46Tk9JiOL2z7ytNQWFLpj99RZkVgeHf87yGQKsIkaPz1qSH9UczKH1rO7K3wgRselo0tYMUNfecYpm/p1vC7tQ==", + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "bin": { "json5": "lib/cli.js" }, @@ -9003,6 +11923,21 @@ "node": "*" } }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, "node_modules/keygrip": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", @@ -9157,6 +12092,24 @@ "node": ">= 0.8" } }, + "node_modules/language-subtag-registry": { + "version": "0.3.22", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.22.tgz", + "integrity": "sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==", + "dev": true + }, + "node_modules/language-tags": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", + "dev": true, + "dependencies": { + "language-subtag-registry": "^0.3.20" + }, + "engines": { + "node": ">=0.10" + } + }, "node_modules/latest-version": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", @@ -9457,15 +12410,6 @@ "node": ">=4" } }, - "node_modules/load-json-file/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/load-yaml-file": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/load-yaml-file/-/load-yaml-file-0.2.0.tgz", @@ -9490,15 +12434,6 @@ "node": ">=6" } }, - "node_modules/load-yaml-file/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -9542,6 +12477,12 @@ "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", "peer": true }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, "node_modules/lodash.isequal": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz", @@ -9665,6 +12606,18 @@ "node": ">=8" } }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, "node_modules/loupe": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.0.1.tgz", @@ -9957,10 +12910,9 @@ } }, "node_modules/minimatch": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", - "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", - "dev": true, + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -10281,6 +13233,12 @@ "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "dev": true }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, "node_modules/needle": { "version": "2.9.1", "resolved": "https://registry.npmjs.org/needle/-/needle-2.9.1.tgz", @@ -10396,6 +13354,12 @@ "webidl-conversions": "^3.0.0" } }, + "node_modules/node-releases": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", + "dev": true + }, "node_modules/normalize-package-data": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.2.tgz", @@ -10669,6 +13633,15 @@ "node": ">=8" } }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/object-get": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/object-get/-/object-get-2.1.1.tgz", @@ -10732,6 +13705,79 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/object.entries": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", + "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", + "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", + "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1" + } + }, + "node_modules/object.hasown": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz", + "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", + "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/on-finished": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", @@ -11382,6 +14428,12 @@ "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", "dev": true }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -11625,6 +14677,17 @@ "node": ">=0.4.0" } }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, "node_modules/proxy-agent": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.3.0.tgz", @@ -11934,6 +14997,12 @@ "node": ">=0.10.0" } }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, "node_modules/read-pkg": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", @@ -12087,15 +15156,6 @@ "node": ">=6" } }, - "node_modules/read-yaml-file/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/readable-stream": { "version": "2.3.7", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", @@ -12228,12 +15288,59 @@ "node": ">=0.10.0" } }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz", + "integrity": "sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/regenerator-runtime": { "version": "0.14.0", "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==", "dev": true }, + "node_modules/regenerator-transform": { + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", + "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, "node_modules/regexp.prototype.flags": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", @@ -12251,6 +15358,23 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/regexpu-core": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", + "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "dev": true, + "dependencies": { + "@babel/regjsgen": "^0.8.0", + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, "node_modules/registry-auth-token": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", @@ -12275,6 +15399,27 @@ "node": ">=8" } }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", @@ -12557,9 +15702,9 @@ "dev": true }, "node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "bin": { "semver": "bin/semver.js" @@ -13377,6 +16522,12 @@ "node": ">=0.6.19" } }, + "node_modules/string-natural-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/string-natural-compare/-/string-natural-compare-3.0.1.tgz", + "integrity": "sha512-n3sPwynL1nwKi3WJ6AIsClwBMa0zTi54fn2oLU6ndfTSIO05xaznjSf15PcBZU6FNWbmN5Q6cxT4V5hGvB4taw==", + "dev": true + }, "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", @@ -13404,6 +16555,26 @@ "node": ">=8" } }, + "node_modules/string.prototype.matchall": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", + "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.5", + "regexp.prototype.flags": "^1.5.0", + "set-function-name": "^2.0.0", + "side-channel": "^1.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/string.prototype.padend": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.5.tgz", @@ -13495,6 +16666,15 @@ "node": ">=8" } }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", @@ -13759,6 +16939,15 @@ "node": ">=0.6.0" } }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/to-readable-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", @@ -13847,6 +17036,30 @@ "node": ">=0.4.0" } }, + "node_modules/tsconfig-paths": { + "version": "3.14.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", + "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, "node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", @@ -14182,6 +17395,46 @@ "integrity": "sha512-ekY1NhRzq0B08g4bGuX4wd2jZx5GnKz6mKSqFL4nqBlfyMGiG10gDFhDTMEfYmDL6Jy0FUIZp7wiRB+0BP7J2g==", "dev": true }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, "node_modules/unique-string": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", @@ -14211,6 +17464,36 @@ "node": ">= 0.8" } }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, "node_modules/update-notifier": { "version": "4.1.3", "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-4.1.3.tgz", @@ -14394,6 +17677,53 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/which-builtin-type": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.3.tgz", + "integrity": "sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==", + "dev": true, + "dependencies": { + "function.prototype.name": "^1.1.5", + "has-tostringtag": "^1.0.0", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "dependencies": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", diff --git a/package.json b/package.json index 492da5423..52ac501a7 100644 --- a/package.json +++ b/package.json @@ -51,15 +51,14 @@ "format:eslint": "eslint --fix index.js \"lib/**/*.js\" \"__tests__/**/*.js\"", "format:prettier": "prettier \"**/*.{js,md}\" \"package.json\" --write", "lint": "run-p lint:*", - "lint:eslint": "eslint index.js \"lib/**/*.js\" \"__tests__/**/*.js\"", + "lint:eslint": "eslint \"**/*.js\"", "lint:prettier": "prettier \"**/*.{js,md}\" \"package.json\" --list-different || (echo '↑↑ these files are not prettier formatted ↑↑' && exit 1)", - "test": "npm run test:unit && npm run test:node", - "test:unit": "web-test-runner --coverage", - "test:unit:coverage": "cd coverage/lcov-report && npx http-server -o -c-1", - "test:unit:watch": "web-test-runner --watch", - "test:unit:update-snapshots": "web-test-runner --update-snapshots", - "test:node": "mocha -r mocha-hooks.mjs './__node_tests__/**/*.test.js' './__tests__/**/*.test.js'", - "test:node:old": "mocha -r mocha-hooks.mjs -p './__node_tests__/**/*.test.js' './__tests__/common/formatHelpers/createPropertyFormatter.test.js'", + "test": "npm run test:browser && npm run test:node", + "test:browser": "web-test-runner --coverage", + "test:browser:coverage": "cd coverage/lcov-report && npx http-server -o -c-1", + "test:browser:watch": "web-test-runner --watch", + "test:browser:update-snapshots": "web-test-runner --update-snapshots", + "test:node": "mocha -r mocha-hooks.mjs './__integration__/**/*.test.js' './__tests__/**/*.test.js' './__node_tests__/**/*.test.js'", "generate-docs": "node ./scripts/generateDocs.js", "serve-docs": "docsify serve docs -p 3000 -P 12345", "install-cli": "npm install -g $(npm pack)", @@ -157,6 +156,7 @@ "url": "^0.11.1" }, "devDependencies": { + "@babel/plugin-proposal-private-property-in-object": "^7.21.11", "@changesets/cli": "^2.26.2", "@commitlint/cli": "^16.1.0", "@commitlint/config-conventional": "^16.0.0", @@ -170,6 +170,7 @@ "docsify": "^4.12.2", "docsify-cli": "^4.4.3", "eslint": "^8.7.0", + "eslint-config-react-app": "^7.0.1", "eslint-plugin-jest": "^26.0.0", "hanbi": "^1.0.1", "husky": "^8.0.3", diff --git a/snapshot-plugin/chai-wtr-snapshot.js b/snapshot-plugin/chai-wtr-snapshot.js index 18bacdc2d..15e5b3276 100644 --- a/snapshot-plugin/chai-wtr-snapshot.js +++ b/snapshot-plugin/chai-wtr-snapshot.js @@ -1,9 +1,12 @@ /** * TODO: allow inline snapshots (requires update to @web/test-runner-commands snapshot plugin) * TODO: contribute feature to WTR snapshot plugin to allow Javascript complex values as snapshots - * e.g. with https://www.npmjs.com/package/pretty-format + * e.g. with https://www.npmjs.com/package/pretty-format (right now we only escape tildes) */ +// Exclude from code coverage since this is just a devtool +/* c8 ignore start */ + /** * @typedef {import('@types/chai')} Chai */ @@ -51,6 +54,16 @@ const writeSnapshotsSet = new Set(); * @type {Chai.ChaiPlugin} */ export function chaiWtrSnapshot(chai, utils) { + /** + * @param {string} [str] + */ + function escapeTildes(str) { + if (typeof str === 'string') { + return str.replace(/`/g, '\\`'); + } + return str; + } + /** * Base HTML snapshot assertion for `assert` interface. * @this {Chai.AssertionStatic} @@ -58,7 +71,7 @@ export function chaiWtrSnapshot(chai, utils) { * @param {boolean} negate */ async function assertMatchSnapshot(actual, negate, index) { - const snapshot = actual; + const snapshot = escapeTildes(actual); let updateSnapshots = false; let currentSnapshot; let name; @@ -82,6 +95,7 @@ export function chaiWtrSnapshot(chai, utils) { // TODO: get --update-snapshots flag // updateSnapshots = (await getSnapshotConfig()).updateSnapshots; } + currentSnapshot = escapeTildes(currentSnapshot); if (currentSnapshot && !updateSnapshots) { if (negate ? currentSnapshot === snapshot : currentSnapshot !== snapshot) { @@ -167,3 +181,4 @@ export function chaiWtrSnapshot(chai, utils) { ); }); } +/* c8 ignore stop */ diff --git a/web-test-runner.config.mjs b/web-test-runner.config.mjs index 1e4ad495d..95619a129 100644 --- a/web-test-runner.config.mjs +++ b/web-test-runner.config.mjs @@ -10,6 +10,7 @@ const filesToMirror = glob '__tests__/__configs/**/*', '__tests__/__json_files/**/*', '__tests__/__tokens/**/*', + '__integration__/tokens/**/*', ], { fs, @@ -21,16 +22,15 @@ const filesToMirror = glob export default { nodeResolve: true, - // browserLogs: false, - files: ['__tests__/**/*.test.js'], + files: ['__(tests|integration)__/**/*.test.js'], coverageConfig: { report: true, reportDir: 'coverage', threshold: { - statements: 96, - branches: 99, - functions: 92, - lines: 96, + statements: 98.9, + branches: 99.89, + functions: 96.53, + lines: 98.9, }, }, browsers: [ From fd8c3b5f5d4a4dc818b1cee6546e6838affa9256 Mon Sep 17 00:00:00 2001 From: jorenbroekema Date: Thu, 23 Nov 2023 09:39:45 +0100 Subject: [PATCH 3/6] fix: add commentPosition to FormatHelpers.LineFormatting type interface --- types/FormatHelpers.d.ts | 35 ++++++++++++----------------------- 1 file changed, 12 insertions(+), 23 deletions(-) diff --git a/types/FormatHelpers.d.ts b/types/FormatHelpers.d.ts index a2f6bea3c..5ef6bf1fa 100644 --- a/types/FormatHelpers.d.ts +++ b/types/FormatHelpers.d.ts @@ -11,14 +11,15 @@ * and limitations under the License. */ -import { Dictionary } from "./Dictionary"; -import { DesignToken } from "./DesignToken"; -import { TransformedToken } from "./TransformedToken"; -import { File } from "./File"; +import { Dictionary } from './Dictionary'; +import { DesignToken } from './DesignToken'; +import { TransformedToken } from './TransformedToken'; +import { File } from './File'; export interface LineFormatting { prefix?: string; - commentStyle?: "short" | "long" | "none"; + commentStyle?: 'short' | 'long' | 'none'; + commentPosition?: 'inline' | 'above'; indentation?: string; separator?: string; suffix?: string; @@ -27,7 +28,7 @@ export interface LineFormatting { export type TokenFormatterArgs = { outputReferences?: boolean; dictionary: Dictionary; - format?: "css" | "sass" | "less" | "stylus"; + format?: 'css' | 'sass' | 'less' | 'stylus'; formatting?: LineFormatting; }; @@ -45,32 +46,20 @@ export interface FileHeaderArgs { } export interface FormattedVariablesArgs { - format: "css" | "sass"; + format: 'css' | 'sass'; dictionary: Dictionary; outputReferences?: boolean; formatting?: LineFormatting; } export interface FormatHelpers { - createPropertyFormatter: ( - args: TokenFormatterArgs - ) => (token: TransformedToken) => string; + createPropertyFormatter: (args: TokenFormatterArgs) => (token: TransformedToken) => string; fileHeader: (args: FileHeaderArgs) => string; formattedVariables: (args: FormattedVariablesArgs) => string; minifyDictionary: (dictionary: object) => object; getTypeScriptType: (value: unknown) => string; - iconsWithPrefix: ( - prefix: string, - allTokens: DesignToken[], - options: object - ) => string; - sortByReference: ( - dictionary: Dictionary - ) => (a: TransformedToken, b: TransformedToken) => number; + iconsWithPrefix: (prefix: string, allTokens: DesignToken[], options: object) => string; + sortByReference: (dictionary: Dictionary) => (a: TransformedToken, b: TransformedToken) => number; sortByName: (a: DesignToken, b: DesignToken) => number; - setSwiftFileProperties: ( - options: object, - objectType: string, - transformGroup: string - ) => string; + setSwiftFileProperties: (options: object, objectType: string, transformGroup: string) => string; } From a4542f437ffeb375d38c6aec241d2a9d7bb7c7f2 Mon Sep 17 00:00:00 2001 From: jorenbroekema Date: Thu, 23 Nov 2023 10:03:20 +0100 Subject: [PATCH 4/6] chore: add changesets --- .changeset/gorgeous-lamps-chew.md | 5 ++ .changeset/light-games-occur.md | 5 ++ .changeset/unlucky-cameras-draw.md | 67 +++++++++++++++++++ __tests__/__helpers.js | 15 +++++ __tests__/__setup.js | 13 +--- .../common/formatHelpers/fileHeader.test.js | 6 ++ lib/StyleDictionary.js | 4 +- lib/transform/config.js | 14 +--- mocha-hooks.mjs | 11 +-- web-test-runner.config.mjs | 8 +-- 10 files changed, 111 insertions(+), 37 deletions(-) create mode 100644 .changeset/gorgeous-lamps-chew.md create mode 100644 .changeset/light-games-occur.md create mode 100644 .changeset/unlucky-cameras-draw.md diff --git a/.changeset/gorgeous-lamps-chew.md b/.changeset/gorgeous-lamps-chew.md new file mode 100644 index 000000000..49efca435 --- /dev/null +++ b/.changeset/gorgeous-lamps-chew.md @@ -0,0 +1,5 @@ +--- +'style-dictionary': minor +--- + +options.log to be respected in all error logging, including platform specific logs. diff --git a/.changeset/light-games-occur.md b/.changeset/light-games-occur.md new file mode 100644 index 000000000..3b2f03743 --- /dev/null +++ b/.changeset/light-games-occur.md @@ -0,0 +1,5 @@ +--- +'style-dictionary': major +--- + +BREAKING: StyleDictionaryInstance.properties & .allProperties have been removed. They were deprecated in v3 in favor of .tokens and .allTokens. diff --git a/.changeset/unlucky-cameras-draw.md b/.changeset/unlucky-cameras-draw.md new file mode 100644 index 000000000..a26cf1bb2 --- /dev/null +++ b/.changeset/unlucky-cameras-draw.md @@ -0,0 +1,67 @@ +--- +'style-dictionary': major +--- + +BREAKING: StyleDictionary to be initialized with a new API and have async methods. Use: + +```js +import StyleDictionary from 'style-dictionary'; + +/** + * old: + * const sd = StyleDictionary.extend({ source: ['tokens.json'], platforms: {} }); + * sd.buildAllPlatforms(); + */ +const sd = new StyleDictionary({ source: ['tokens.json'], platforms: {} }); +await sd.buildAllPlatforms(); +``` + +You can still extend a dictionary instance with an extended config, but `.extend()` is only used for this, it is no longer used to initialize the first instance: + +```js +import StyleDictionary from 'style-dictionary'; + +const sd = new StyleDictionary({ source: ['tokens.json'], platforms: {} }); +const extended = await sd.extend({ + fileHeader: { + myFileHeader: (defaultMessage) => { + return [...defaultMessage, 'hello, world!']; + } + } +}); +``` + +To ensure your initialized StyleDictionary instance is fully ready and has imported all your tokens, you can await `hasInitialized`: + +```js +import StyleDictionary from 'style-dictionary'; + +const sd = new StyleDictionary({ source: ['tokens.json'], platforms: {} }); +await sd.hasInitialized; +console.log(sd.allTokens); +``` + +For error handling and testing purposes, you can also manually initialize the style-dictionary config: + +```js +import StyleDictionary from 'style-dictionary'; + +const sd = new StyleDictionary({ source: ['tokens.js'], platforms: {} }, { init: false }); +try { + await sd.init(); +} catch(e) { + // handle error, e.g. when tokens.js file has syntax errors and cannot be imported +} +console.log(sd.allTokens); +``` + +The main reason for an initialize step after class instantiation is that async constructors are not a thing in JavaScript, and if you return a promise from a constructor to "hack it", TypeScript will eventually trip over it. + +Due to being able to dynamically (asynchronously) import ES Modules rather than synchronously require CommonJS modules, we had to make the APIs asynchronous, so the following methods are now async: + +- extend +- exportPlatform +- buildAllPlatforms & buildPlatform +- cleanAllPlatforms & cleanPlatform + +In a future release, most other methods will be made async or support async as well, such as parsers, transforms, formats etc. diff --git a/__tests__/__helpers.js b/__tests__/__helpers.js index 5b026dd0c..c437c852c 100644 --- a/__tests__/__helpers.js +++ b/__tests__/__helpers.js @@ -50,3 +50,18 @@ export const fileExists = (filePath, _fs = fs) => { export const dirExists = (dirPath, _fs = fs) => { return _fs.existsSync(dirPath); }; + +export function fixDate() { + const constantDate = new Date('2000-01-01'); + // eslint-disable-next-line no-undef + const __global = typeof window === 'object' ? window : globalThis; + + // eslint-disable-next-line no-undef + __global.Date = function () { + return constantDate; + }; + // eslint-disable-next-line no-undef + __global.Date.now = function () { + return constantDate; + }; +} diff --git a/__tests__/__setup.js b/__tests__/__setup.js index d9a4dabd2..c9cf0c48f 100644 --- a/__tests__/__setup.js +++ b/__tests__/__setup.js @@ -3,16 +3,7 @@ import chaiAsPromised from '@esm-bundle/chai-as-promised'; import path from '@bundled-es-modules/path-browserify'; import { fs } from 'style-dictionary/fs'; import { chaiWtrSnapshot } from '../snapshot-plugin/chai-wtr-snapshot.js'; - -const constantDate = new Date('2000-01-01'); -// eslint-disable-next-line no-undef -window.Date = function () { - return constantDate; -}; -// eslint-disable-next-line no-undef -window.Date.now = function () { - return constantDate; -}; +import { fixDate } from './__helpers.js'; /** * We have a bunch of files that we use a mock data for our tests @@ -24,6 +15,8 @@ window.Date.now = function () { * which needs to be initialized client-side */ +fixDate(); + function ensureDirectoryExistence(filePath) { const dirname = path.dirname(filePath); if (fs.existsSync(dirname)) { diff --git a/__tests__/common/formatHelpers/fileHeader.test.js b/__tests__/common/formatHelpers/fileHeader.test.js index f421918cd..3c38098b3 100644 --- a/__tests__/common/formatHelpers/fileHeader.test.js +++ b/__tests__/common/formatHelpers/fileHeader.test.js @@ -11,6 +11,7 @@ * and limitations under the License. */ import { expect } from 'chai'; +import { fixDate } from '../../__helpers.js'; import fileHeader from '../../../lib/common/formatHelpers/fileHeader.js'; const defaultLine1 = `Do not edit directly`; @@ -18,6 +19,11 @@ const defaultLine2 = `Generated on Sat, 01 Jan 2000 00:00:00 GMT`; describe('common', () => { describe('formatHelpers', () => { + beforeEach(() => { + // reset Date again, for some reasons these tests are flaky otherwise in the pipelines + fixDate(); + }); + describe('fileHeader', () => { it(`should default to /**/ comment style`, () => { const comment = fileHeader({}); diff --git a/lib/StyleDictionary.js b/lib/StyleDictionary.js index cd9777af9..e613ad6ca 100644 --- a/lib/StyleDictionary.js +++ b/lib/StyleDictionary.js @@ -363,7 +363,7 @@ export default class StyleDictionary { console.log('\n' + platform); - if (!this.options || !(platform in (this.options.platforms || {}))) { + if (!this.options || !this.options?.platforms[platform]) { throw new Error(`Platform "${platform}" does not exist`); } @@ -402,7 +402,7 @@ export default class StyleDictionary { console.log('\n' + platform); - if (!this.options || !(platform in (this.options.platforms || {}))) { + if (!this.options || !this.options?.platforms[platform]) { throw new Error('Platform ' + platform + " doesn't exist"); } diff --git a/lib/transform/config.js b/lib/transform/config.js index 619afa8a4..8ed4265cd 100644 --- a/lib/transform/config.js +++ b/lib/transform/config.js @@ -30,7 +30,7 @@ const MISSING_TRANSFORM_ERRORS = GroupMessages.GROUP.MissingRegisterTransformErr */ export default function transformConfig(platformConfig, dictionary, platformName) { const to_ret = clone(platformConfig); - to_ret.log = dictionary.log; + to_ret.log = platformConfig.log ?? dictionary.log; // The platform can define either a transformGroup or an array // of transforms. If given a transformGroup that doesn't exist, @@ -131,17 +131,7 @@ None of ${transform_warnings} match the name of a registered transform. } } - if (file.template) { - if (dictionary.format[file.template]) { - GroupMessages.add( - TEMPLATE_DEPRECATION_WARNINGS, - `${file.destination} (template: ${file.template})`, - ); - ext.format = dictionary.format[file.template]; - } else { - throw new Error("Can't find template: " + file.template); - } - } else if (file.format) { + if (file.format) { if (dictionary.format[file.format]) { ext.format = dictionary.format[file.format]; } else { diff --git a/mocha-hooks.mjs b/mocha-hooks.mjs index 1e63082d8..af08f0efb 100644 --- a/mocha-hooks.mjs +++ b/mocha-hooks.mjs @@ -1,16 +1,9 @@ import { use } from 'chai'; import chaiAsPromised from '@esm-bundle/chai-as-promised'; import { chaiWtrSnapshot } from './snapshot-plugin/chai-wtr-snapshot.js'; +import { fixDate } from './__tests__/__helpers.js'; -const constantDate = new Date('2000-01-01'); -// eslint-disable-next-line no-undef -globalThis.Date = function () { - return constantDate; -}; -// eslint-disable-next-line no-undef -globalThis.Date.now = function () { - return constantDate; -}; +fixDate(); export const mochaHooks = { beforeAll(done) { diff --git a/web-test-runner.config.mjs b/web-test-runner.config.mjs index 95619a129..13d396168 100644 --- a/web-test-runner.config.mjs +++ b/web-test-runner.config.mjs @@ -27,10 +27,10 @@ export default { report: true, reportDir: 'coverage', threshold: { - statements: 98.9, - branches: 99.89, - functions: 96.53, - lines: 98.9, + statements: 98, + branches: 99, + functions: 96, + lines: 98, }, }, browsers: [ From 3a380a6d290b15f039a60d9d8cb34124a6159738 Mon Sep 17 00:00:00 2001 From: jorenbroekema Date: Thu, 23 Nov 2023 13:15:58 +0100 Subject: [PATCH 5/6] chore: remove es6 helpers and use actual ES6 --- lib/StyleDictionary.js | 4 - lib/common/formatHelpers/getTypeScriptType.js | 13 +- lib/common/transforms.js | 12 +- lib/filterTokens.js | 76 ++++----- lib/register/transformGroup.js | 4 +- lib/transform/config.js | 20 ++- lib/transform/object.js | 20 ++- lib/transform/token.js | 3 +- lib/transform/tokenSetup.js | 8 +- lib/utils/deepExtend.js | 31 ++-- lib/utils/es6_.js | 150 ------------------ lib/utils/flattenTokens.js | 2 +- lib/utils/references/getName.js | 4 +- lib/utils/resolveObject.js | 3 +- 14 files changed, 101 insertions(+), 249 deletions(-) delete mode 100644 lib/utils/es6_.js diff --git a/lib/StyleDictionary.js b/lib/StyleDictionary.js index e613ad6ca..a602dc7da 100644 --- a/lib/StyleDictionary.js +++ b/lib/StyleDictionary.js @@ -49,10 +49,6 @@ import cleanActions from './cleanActions.js'; const PROPERTY_VALUE_COLLISIONS = GroupMessages.GROUP.PropertyValueCollisions; const PROPERTY_REFERENCE_WARNINGS = GroupMessages.GROUP.PropertyReferenceWarnings; -// const TEMPLATE_DEPRECATION_WARNINGS = GroupMessages.GROUP.TemplateDeprecationWarnings; -// const REGISTER_TEMPLATE_DEPRECATION_WARNINGS = GroupMessages.GROUP.RegisterTemplateDeprecationWarnings; -// const SASS_MAP_FORMAT_DEPRECATION_WARNINGS = GroupMessages.GROUP.SassMapFormatDeprecationWarnings; - /** * Style Dictionary module * diff --git a/lib/common/formatHelpers/getTypeScriptType.js b/lib/common/formatHelpers/getTypeScriptType.js index 3c81768d9..40ad40e9b 100644 --- a/lib/common/formatHelpers/getTypeScriptType.js +++ b/lib/common/formatHelpers/getTypeScriptType.js @@ -10,7 +10,6 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ -import { unique } from '../../utils/es6_.js'; /** * Given some value, returns a basic valid TypeScript type for that value. @@ -72,11 +71,13 @@ function getArrayType(passedArray) { if (passedArray.every((v) => getTypeScriptType(v) === firstValueType)) { return firstValueType + '[]'; } else { - return `(${unique( - passedArray.map((item, index) => { - const isLast = passedArray.length === index + 1; - return `${getTypeScriptType(item)}${!isLast ? ' | ' : ''}`; - }), + return `(${Array.from( + new Set( + passedArray.map((item, index) => { + const isLast = passedArray.length === index + 1; + return `${getTypeScriptType(item)}${!isLast ? ' | ' : ''}`; + }), + ), ).join('')})[]`; } } diff --git a/lib/common/transforms.js b/lib/common/transforms.js index abb3e917f..373dda09e 100644 --- a/lib/common/transforms.js +++ b/lib/common/transforms.js @@ -13,9 +13,16 @@ import Color from 'tinycolor2'; import path from '@bundled-es-modules/path-browserify'; -import { kebabCase, camelCase, snakeCase, upperFirst } from '../utils/es6_.js'; +import { + camelCaseTransformMerge, + snakeCase, + paramCase as kebabCase, + camelCase as _camelCase, +} from 'change-case'; import convertToBase64 from '../utils/convertToBase64.js'; +const camelCase = (str) => _camelCase(str, { transform: camelCaseTransformMerge }); + const UNICODE_PATTERN = /&#x([^;]+);/g; function isColor(token) { @@ -281,6 +288,9 @@ export default { 'name/cti/pascal': { type: 'name', transformer: function (token, options) { + const upperFirst = function (str) { + return str ? str[0].toUpperCase() + str.substr(1) : ''; + }; return upperFirst(camelCase([options.prefix].concat(token.path).join(' '))); }, }, diff --git a/lib/filterTokens.js b/lib/filterTokens.js index ce9e390ac..2ba4305c9 100644 --- a/lib/filterTokens.js +++ b/lib/filterTokens.js @@ -10,14 +10,13 @@ * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions * and limitations under the License. */ - -import { reduce, isObject, filter as filterUtil, assign, isEmpty } from './utils/es6_.js'; +import { isPlainObject } from 'is-plain-object'; /** * Takes a nested object of tokens and filters them using the provided * function. * - * @param {Object} tokens + * @param {Object|undefined|null} tokens * @param {Function} filter - A function that receives a property object and * returns `true` if the property should be included in the output or `false` * if the property should be excluded from the output. @@ -27,45 +26,26 @@ import { reduce, isObject, filter as filterUtil, assign, isEmpty } from './utils function filterTokenObject(tokens, filter) { // Use reduce to generate a new object with the unwanted tokens filtered // out - return reduce( - tokens, - (result, value, key) => { - // If the value is not an object, we don't know what it is. We return it as-is. - if (!isObject(value)) { - return result; - // If the value has a `value` member we know it's a property, pass it to - // the filter function and either include it in the final `result` object or - // exclude it (by returning the `result` object without it added). - } else if (typeof value.value !== 'undefined') { - return filter(value) ? assign(result, { [key]: value }) : result; - // If we got here we have an object that is not a property. We'll assume - // it's an object containing multiple tokens and recursively filter it - // using the `filterTokenObject` function. - } else { - const filtered = filterTokenObject(value, filter); - // If the filtered object is not empty then add it to the final `result` - // object. If it is empty then every property inside of it was filtered - // out, then exclude it entirely from the final `result` object. - return isEmpty(filtered) ? result : assign(result, { [key]: filtered }); - } - }, - {}, - ); -} - -/** - * Takes an array of tokens and filters them using the provided function. - * - * @param {Object[]} tokens - * @param {Function} filter - A function that receives a property object and - * returns `true` if the property should be included in the output or `false` - * if the property should be excluded from the output. - * @returns {Object[]} tokens - A new array containing only the tokens - * that matched the filter. - */ -function filterTokenArray(tokens, filter) { - // Go lodash! - return filterUtil(tokens, filter); + return Object.entries(tokens ?? []).reduce((acc, [key, value]) => { + // If the value is not an object, we don't know what it is. We return it as-is. + if (!isPlainObject(value)) { + return acc; + // If the value has a `value` member we know it's a property, pass it to + // the filter function and either include it in the final `acc` object or + // exclude it (by returning the `acc` object without it added). + } else if (typeof value.value !== 'undefined') { + return filter(value) ? { ...acc, [key]: value } : acc; + // If we got here we have an object that is not a property. We'll assume + // it's an object containing multiple tokens and recursively filter it + // using the `filterTokenObject` function. + } else { + const filtered = filterTokenObject(value, filter); + // If the filtered object is not empty then add it to the final `acc` + // object. If it is empty then every property inside of it was filtered + // out, then exclude it entirely from the final `acc` object. + return Object.entries(filtered || {}).length < 1 ? acc : { ...acc, [key]: filtered }; + } + }, {}); } /** @@ -84,9 +64,13 @@ export default function filterTokens(dictionary, filter) { if (!filter) { return dictionary; } else { - return { - allTokens: filterTokenArray(dictionary.allTokens, filter), - tokens: filterTokenObject(dictionary.tokens, filter), - }; + if (typeof filter !== 'function') { + throw new Error('filter is not a function'); + } else { + return { + allTokens: (dictionary.allTokens ?? []).filter(filter), + tokens: filterTokenObject(dictionary.tokens, filter), + }; + } } } diff --git a/lib/register/transformGroup.js b/lib/register/transformGroup.js index 479396b63..beee04b56 100644 --- a/lib/register/transformGroup.js +++ b/lib/register/transformGroup.js @@ -11,8 +11,6 @@ * and limitations under the License. */ -import { isArray } from '../utils/es6_.js'; - /** * Add a custom transformGroup to the Style Dictionary, which is a * group of transforms. @@ -36,7 +34,7 @@ import { isArray } from '../utils/es6_.js'; */ export default function registerTransformGroup(options) { if (typeof options.name !== 'string') throw new Error('transform name must be a string'); - if (!isArray(options.transforms)) + if (!Array.isArray(options.transforms)) throw new Error('transforms must be an array of registered value transforms'); options.transforms.forEach( diff --git a/lib/transform/config.js b/lib/transform/config.js index 8ed4265cd..ab53dd4a3 100644 --- a/lib/transform/config.js +++ b/lib/transform/config.js @@ -11,11 +11,10 @@ * and limitations under the License. */ -import { clone, matches } from '../utils/es6_.js'; +import { isPlainObject } from 'is-plain-object'; import deepExtend from '../utils/deepExtend.js'; import GroupMessages from '../utils/groupMessages.js'; -const TEMPLATE_DEPRECATION_WARNINGS = GroupMessages.GROUP.TemplateDeprecationWarnings; const MISSING_TRANSFORM_ERRORS = GroupMessages.GROUP.MissingRegisterTransformErrors; /** @@ -29,7 +28,7 @@ const MISSING_TRANSFORM_ERRORS = GroupMessages.GROUP.MissingRegisterTransformErr * @returns {Object} */ export default function transformConfig(platformConfig, dictionary, platformName) { - const to_ret = clone(platformConfig); + const to_ret = { ...platformConfig }; // structuredClone not suitable due to config being able to contain Function() etc. to_ret.log = platformConfig.log ?? dictionary.log; // The platform can define either a transformGroup or an array @@ -123,6 +122,21 @@ None of ${transform_warnings} match the name of a registered transform. throw new Error("Can't find filter: " + file.filter); } } else if (typeof file.filter === 'object') { + // Recursively go over the object keys of filter object and + // return a filter Function that filters tokens + // by the specified object keys. + const matchFn = function (inputObj, testObj) { + if (isPlainObject(testObj)) { + return Object.keys(testObj).every((key) => matchFn(inputObj[key], testObj[key])); + } else { + return inputObj == testObj; + } + }; + const matches = function (matchObj) { + let cloneObj = { ...matchObj }; // shallow clone, structuredClone not suitable because obj can contain "Function()" + let matchesFn = (inputObj) => matchFn(inputObj, cloneObj); + return matchesFn; + }; ext.filter = matches(file.filter); } else if (typeof file.filter === 'function') { ext.filter = file.filter; diff --git a/lib/transform/object.js b/lib/transform/object.js index 1b0c296b9..641fe606f 100644 --- a/lib/transform/object.js +++ b/lib/transform/object.js @@ -11,7 +11,7 @@ * and limitations under the License. */ -import { isPlainObject, pull } from '../utils/es6_.js'; +import { isPlainObject } from 'is-plain-object'; import usesValueReference from '../utils/references/usesReference.js'; import getName from '../utils/references/getName.js'; import transformToken from './token.js'; @@ -26,7 +26,7 @@ import tokenSetup from './tokenSetup.js'; * @private * @param {Object} obj * @param {Object} options - * @param {Object} [transformationContext={}] + * @param {Object} [ctx={}] * @param {Array} [path=[]] * @param {Object} [transformedObj={}] * @returns {Object} @@ -34,13 +34,12 @@ import tokenSetup from './tokenSetup.js'; export default function transformObject( obj, options, - transformationContext = {}, + { transformedPropRefs = [], deferredPropValueTransforms = [] } = {}, path, transformedObj, ) { transformedObj = transformedObj || {}; path = path || []; - const { transformedPropRefs = [], deferredPropValueTransforms = [] } = transformationContext; for (const name in obj) { if (!obj.hasOwnProperty(name)) { @@ -87,8 +86,15 @@ export default function transformObject( // If we got here, the property hasn't been transformed yet and // does not use a value reference. Transform the property now and assign it. transformedObj[name] = transformToken(setupProperty, options); - // Remove the property path from the deferred transform list - pull(deferredPropValueTransforms, pathName); + + // Remove the property path from the deferred transform list, starting from end of array + for (let i = deferredPropValueTransforms.length - 1; i >= 0; i--) { + if (deferredPropValueTransforms[i] === pathName) { + // Important to use .splice and mutate the original array all the way up + deferredPropValueTransforms.splice(i, 1); + } + } + // Add the property path to the transformed list so we don't transform it again. transformedPropRefs.push(pathName); } else if (isObj) { @@ -96,7 +102,7 @@ export default function transformObject( transformedObj[name] = transformObject( objProp, options, - transformationContext, + { transformedPropRefs, deferredPropValueTransforms }, path, transformedObj[name], ); diff --git a/lib/transform/token.js b/lib/transform/token.js index 8d1da2ef3..4a107469e 100644 --- a/lib/transform/token.js +++ b/lib/transform/token.js @@ -11,7 +11,6 @@ * and limitations under the License. */ -import { clone } from '../utils/es6_.js'; import usesReference from '../utils/references/usesReference.js'; /** @@ -23,7 +22,7 @@ import usesReference from '../utils/references/usesReference.js'; * @returns {Object} - A new property object with transforms applied. */ export default function transformProperty(property, options) { - const to_ret = clone(property); + const to_ret = structuredClone(property); const transforms = options.transforms; for (let i = 0; i < transforms.length; i++) { diff --git a/lib/transform/tokenSetup.js b/lib/transform/tokenSetup.js index 8bf6e6c48..178a43699 100644 --- a/lib/transform/tokenSetup.js +++ b/lib/transform/tokenSetup.js @@ -11,8 +11,8 @@ * and limitations under the License. */ +import { isPlainObject } from 'is-plain-object'; import deepExtend from '../utils/deepExtend.js'; -import { isPlainObject, isString, isArray, clone } from '../utils/es6_.js'; /** * Takes a token object, a leaf node in a tokens object, and @@ -27,8 +27,8 @@ import { isPlainObject, isString, isArray, clone } from '../utils/es6_.js'; */ export default function tokenSetup(token, name, path) { if (!token && !isPlainObject(token)) throw new Error('Property object must be an object'); - if (!name || !isString(name)) throw new Error('Name must be a string'); - if (!path || !isArray(path)) throw new Error('Path must be an array'); + if (!name || !(typeof name === 'string')) throw new Error('Name must be a string'); + if (!path || !Array.isArray(path)) throw new Error('Path must be an array'); let to_ret = token; @@ -49,7 +49,7 @@ export default function tokenSetup(token, name, path) { to_ret.attributes = to_ret.attributes || {}; // An array of the path down the object tree; we will use it to build readable names // like color_font_base - to_ret.path = clone(path); + to_ret.path = structuredClone(path); } return to_ret; diff --git a/lib/utils/deepExtend.js b/lib/utils/deepExtend.js index 174c526e3..bd15ac809 100644 --- a/lib/utils/deepExtend.js +++ b/lib/utils/deepExtend.js @@ -11,7 +11,7 @@ * and limitations under the License. */ -import { isPlainObject, isArray } from './es6_.js'; +import { isPlainObject } from 'is-plain-object'; /** * TODO: see if we can use deepmerge instead of maintaining our own utility @@ -26,15 +26,7 @@ import { isPlainObject, isArray } from './es6_.js'; export default function deepExtend(objects, collision, path) { if (objects == null) return {}; - var src, - copyIsArray, - copy, - name, - options, - clone, - target = objects[0] || {}, - i = 1, - length = objects.length; + let target = objects[0] || {}; path = path || []; @@ -43,33 +35,36 @@ export default function deepExtend(objects, collision, path) { target = {}; } - for (; i < length; i++) { + for (let i = 1; i < objects.length; i++) { + const options = objects[i]; // Only deal with non-null/undefined values - if ((options = objects[i]) != null) { + if (options != null) { // Extend the base object - for (name in options) { + for (const name in options) { // Not everything extends from Object in browser context, so bind from Object just in case if (!Object.hasOwnProperty.bind(options)(name)) continue; if (name === '__proto__') continue; - src = target[name]; - copy = options[name]; + const src = target[name]; + const copy = options[name]; // Prevent never-ending loop if (target === copy) { continue; } + let copyIsArray = Array.isArray(copy); // Recurse if we're merging plain objects or arrays - if (copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) { + if (copy && (isPlainObject(copy) || copyIsArray)) { + let clone; if (copyIsArray) { copyIsArray = false; - clone = src && isArray(src) ? src : []; + clone = src && Array.isArray(src) ? src : []; } else { clone = src && isPlainObject(src) ? src : {}; } - var nextPath = path.slice(0); + const nextPath = path.slice(0); nextPath.push(name); // Never move original objects, clone them diff --git a/lib/utils/es6_.js b/lib/utils/es6_.js deleted file mode 100644 index f6b6a2bed..000000000 --- a/lib/utils/es6_.js +++ /dev/null @@ -1,150 +0,0 @@ -/* - * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with - * the License. A copy of the License is located at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR - * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions - * and limitations under the License. - */ - -import * as ChangeCase from 'change-case'; - -export const reduce = function (obj, f, accumulator_init) { - return Object.keys(obj || {}).reduce((accumulator, key) => { - let value = obj[key]; - return f(accumulator, value, key, obj); - }, accumulator_init); -}; - -export const forEach = function (obj, f) { - Object.keys(obj || {}).forEach((key) => { - let value = obj[key]; - f(value, key); - }); -}; - -// Note: This is a crappy version to a certain extent... don't use with Strings, for example... -export const clone = function (object) { - return Object.assign(new object.constructor(), object); -}; - -export const cloneDeep = function (obj) { - if (obj === null || obj === undefined || typeof obj !== 'object') { - return obj; - } - - if (obj instanceof Array) { - return obj.reduce((arr, item, i) => { - arr[i] = cloneDeep(item); - return arr; - }, []); - } - - if (obj instanceof Object) { - return Object.keys(obj || {}).reduce((cpObj, key) => { - cpObj[key] = cloneDeep(obj[key]); - return cpObj; - }, {}); - } -}; - -export const isObject = function (value) { - const type = typeof value; - return value != null && (type === 'object' || type === 'function'); -}; - -export const isString = function (obj) { - return typeof obj === 'string' || obj instanceof String; -}; - -export const isArray = function (obj) { - return Array.isArray(obj); -}; - -export const isEmpty = function (obj) { - return [Object, Array].includes((obj || {}).constructor) && !Object.entries(obj || {}).length; -}; - -export function isPlainObject(value) { - if ( - typeof value !== 'object' || - value === null || - Object.prototype.toString.call(value) !== '[object Object]' - ) { - return false; - } - if (Object.getPrototypeOf(value) === null) { - return true; - } - let proto = value; - while (Object.getPrototypeOf(proto) !== null) { - proto = Object.getPrototypeOf(proto); - } - return Object.getPrototypeOf(value) === proto; -} - -export const filter = function (arr, filter) { - if (typeof filter !== 'function') { - throw 'filter is not a function'; - } - if (typeof arr === 'undefined') { - return []; - } - return arr.filter(filter); -}; - -export const assign = function () { - let args = Array.prototype.slice.call(arguments); - args.unshift({}); - return Object.assign(...args); -}; - -export const pull = function (arr, ...removeList) { - var removeSet = new Set(removeList); - for (let i = arr.length - 1; i >= 0; i--) { - if (removeSet.has(arr[i])) { - arr.splice(i, 1); - } - } -}; - -export const unique = function (arr) { - return [...new Set(arr)]; -}; - -export const upperFirst = function (str) { - return str ? str[0].toUpperCase() + str.substr(1) : ''; -}; - -const matchFn = function (inputObj, testObj) { - if (isObject(testObj)) { - return Object.keys(testObj).every((key) => matchFn(inputObj[key], testObj[key])); - } else { - return inputObj == testObj; - } -}; - -export const matches = function (matchObj) { - let cloneObj = cloneDeep(matchObj); - let matchesFn = (inputObj) => matchFn(inputObj, cloneObj); - return matchesFn; -}; - -const DEFAULT_OPTIONS = { - transform: ChangeCase.camelCaseTransformMerge, -}; -export const changeDefaultCaseTransform = function (caseFunction, default_options) { - return (caseToChange, options) => - caseFunction(caseToChange, Object.assign({}, DEFAULT_OPTIONS, default_options, options)); -}; - -// aliases -export const each = forEach; -export const forIn = forEach; -export const camelCase = changeDefaultCaseTransform(ChangeCase.camelCase); -export const snakeCase = ChangeCase.snakeCase; -export const kebabCase = ChangeCase.paramCase; diff --git a/lib/utils/flattenTokens.js b/lib/utils/flattenTokens.js index 1cdae2d8b..d7b64d9b2 100644 --- a/lib/utils/flattenTokens.js +++ b/lib/utils/flattenTokens.js @@ -11,7 +11,7 @@ * and limitations under the License. */ -import { isPlainObject } from './es6_.js'; +import { isPlainObject } from 'is-plain-object'; /** * Takes an plain javascript object and will make a flat array of all the leaf nodes. diff --git a/lib/utils/references/getName.js b/lib/utils/references/getName.js index 7711421b1..a4b14b7ac 100644 --- a/lib/utils/references/getName.js +++ b/lib/utils/references/getName.js @@ -22,8 +22,8 @@ import defaults from './defaults.js'; * @returns {string} - The paths name */ export default function getName(path, opts = {}) { - const options = Object.assign({}, defaults, opts); - if (!path || !(path instanceof Array)) { + const options = { ...defaults, ...opts }; + if (!Array.isArray(path)) { throw new Error('Getting name for path failed. Path must be an array'); } return path.join(options.separator); diff --git a/lib/utils/resolveObject.js b/lib/utils/resolveObject.js index 57d0d9406..e345be12a 100644 --- a/lib/utils/resolveObject.js +++ b/lib/utils/resolveObject.js @@ -11,7 +11,6 @@ * and limitations under the License. */ -import { cloneDeep } from './es6_.js'; import GroupMessages from './groupMessages.js'; import usesReference from './references/usesReference.js'; import getName from './references/getName.js'; @@ -31,7 +30,7 @@ let updated_object, regex, options; export default function resolveObject(object, opts) { options = Object.assign({}, defaults, opts); - updated_object = cloneDeep(object); // This object will be edited + updated_object = structuredClone(object); // This object will be edited regex = createReferenceRegex(options); From cedf8a06bb80f6eca161db671b58ad544256587f Mon Sep 17 00:00:00 2001 From: jorenbroekema Date: Thu, 2 Nov 2023 15:15:48 +0100 Subject: [PATCH 6/6] feat: add preprocessors --- .changeset/fifty-dragons-heal.md | 6 + __tests__/register/preprocessor.test.js | 140 ++++++++++++++++++++++++ docs/_sidebar.md | 1 + docs/api.md | 26 +++++ docs/architecture.md | 14 ++- docs/config.md | 25 +++-- docs/extending.md | 1 + docs/preprocessors.md | 96 ++++++++++++++++ lib/StyleDictionary.js | 66 ++++++----- lib/register/preprocessor.js | 39 +++++++ lib/transform/config.js | 1 - lib/utils/preprocess.js | 35 ++++++ package.json | 2 +- types/Config.d.ts | 2 + types/Preprocessor.d.ts | 21 ++++ types/index.d.ts | 23 ++++ types/index.test-d.ts | 7 ++ 17 files changed, 461 insertions(+), 44 deletions(-) create mode 100644 .changeset/fifty-dragons-heal.md create mode 100644 __tests__/register/preprocessor.test.js create mode 100644 docs/preprocessors.md create mode 100644 lib/register/preprocessor.js create mode 100644 lib/utils/preprocess.js create mode 100644 types/Preprocessor.d.ts diff --git a/.changeset/fifty-dragons-heal.md b/.changeset/fifty-dragons-heal.md new file mode 100644 index 000000000..b8a6ee6a5 --- /dev/null +++ b/.changeset/fifty-dragons-heal.md @@ -0,0 +1,6 @@ +--- +'style-dictionary': minor +--- + +Preprocessors are a new feature added to style-dictionary, which allows you to do any type of processing of the token dictionary **after** parsing, **before** resolving and transforming. +See [preprocessor docs](https://github.com/amzn/style-dictionary/tree/v4/docs/preprocessors.md) for more information. diff --git a/__tests__/register/preprocessor.test.js b/__tests__/register/preprocessor.test.js new file mode 100644 index 000000000..f4ae350d5 --- /dev/null +++ b/__tests__/register/preprocessor.test.js @@ -0,0 +1,140 @@ +/* + * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with + * the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR + * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ +import { expect } from 'chai'; +import StyleDictionary from 'style-dictionary'; + +describe('register/transformGroup', async () => { + let StyleDictionaryExtended; + beforeEach(async () => { + StyleDictionary.preprocessors = {}; + StyleDictionaryExtended = new StyleDictionary({}); + await StyleDictionaryExtended.hasInitialized; + }); + + it('should support registering preprocessor on StyleDictionary class', () => { + StyleDictionary.registerPreprocessor({ + name: 'example-preprocessor', + preprocessor: (dict) => dict, + }); + expect(StyleDictionary.preprocessors['example-preprocessor']).to.not.be.undefined; + expect(StyleDictionaryExtended.preprocessors['example-preprocessor']).to.not.be.undefined; + }); + + it('should support registering preprocessor on StyleDictionary instance, which registers it on the class', () => { + StyleDictionaryExtended.registerPreprocessor({ + name: 'example-preprocessor', + preprocessor: (dict) => dict, + }); + expect(StyleDictionary.preprocessors['example-preprocessor']).to.not.be.undefined; + expect(StyleDictionaryExtended.preprocessors['example-preprocessor']).to.not.be.undefined; + }); + + it('should throw if the preprocessor name is not a string', () => { + expect(() => { + StyleDictionaryExtended.registerPreprocessor({ + name: true, + preprocessor: (dict) => dict, + }); + }).to.throw('Cannot register preprocessor; Preprocessor.name must be a string'); + }); + + it('should throw if the preprocessor is not a function', () => { + expect(() => { + StyleDictionaryExtended.registerPreprocessor({ + name: 'example-preprocessor', + preprocessor: 'foo', + }); + }).to.throw('Cannot register preprocessor; Preprocessor.preprocessor must be a function'); + }); + + it('should preprocess the dictionary as specified', async () => { + StyleDictionary.registerPreprocessor({ + name: 'strip-descriptions', + preprocessor: (dict) => { + // recursively traverse token objects and delete description props + function removeDescription(slice) { + delete slice.description; + Object.values(slice).forEach((value) => { + if (typeof value === 'object') { + removeDescription(value); + } + }); + return slice; + } + return removeDescription(dict); + }, + }); + + StyleDictionaryExtended = new StyleDictionary({ + tokens: { + foo: { + value: '4px', + type: 'dimension', + description: 'Foo description', + }, + description: 'My dictionary', + }, + }); + await StyleDictionaryExtended.hasInitialized; + expect(StyleDictionaryExtended.tokens).to.eql({ + foo: { + value: '4px', + type: 'dimension', + }, + }); + }); + + it('should support async preprocessors', async () => { + StyleDictionary.registerPreprocessor({ + name: 'strip-descriptions', + preprocessor: async (dict) => { + // recursively traverse token objects and delete description props + async function removeDescription(slice) { + // Arbitrary delay, act as though this action is asynchronous and takes some time + await new Promise((resolve) => setTimeout(resolve, 100)); + delete slice.description; + + await Promise.all( + Object.values(slice).map((value) => { + if (typeof value === 'object') { + return removeDescription(value); + } else { + return Promise.resolve(); + } + }), + ); + return slice; + } + return removeDescription(dict); + }, + }); + + StyleDictionaryExtended = new StyleDictionary({ + tokens: { + foo: { + value: '4px', + type: 'dimension', + description: 'Foo description', + }, + description: 'My dictionary', + }, + }); + await StyleDictionaryExtended.hasInitialized; + expect(StyleDictionaryExtended.tokens).to.eql({ + foo: { + value: '4px', + type: 'dimension', + }, + }); + }); +}); diff --git a/docs/_sidebar.md b/docs/_sidebar.md index 200ed6383..4707c7183 100644 --- a/docs/_sidebar.md +++ b/docs/_sidebar.md @@ -15,6 +15,7 @@ - [Using the NPM Module](using_the_npm_module.md) - [API](api.md) - [Parsers](parsers.md) + - [Preprocessors](preprocessors.md) - [Transforms](transforms.md) - [Transform groups](transform_groups.md) - [Formats](formats.md) diff --git a/docs/api.md b/docs/api.md index 28138180a..0ad28a9d3 100644 --- a/docs/api.md +++ b/docs/api.md @@ -265,6 +265,32 @@ StyleDictionary.registerParser({ --- +### registerPreprocessor + +> StyleDictionary.registerPreprocessor({ name, preprocessor }) => [style-dictionary](#module_style-dictionary) + +Adds a custom parser to parse style dictionary files + +| Param | Type | Description | +| ------------------------- | --------------------- | -------------------------------------------------------------------------------------------- | +| Preprocessor | Object | | +| Preprocessor.name | String | Name of the format to be referenced in your config.json | +| Preprocessor.preprocessor | function | Function to preprocess the dictionary. The function should return a plain Javascript object. | + +**Example** + +```js +StyleDictionary.registerPreprocessor({ + name: 'strip-third-party-meta', + preprocessor: (dictionary) => { + delete dictionary.thirdPartyMetadata; + return dictionary; + }, +}); +``` + +--- + ### registerTemplate > ~~StyleDictionary.registerTemplate(template) ⇒ [style-dictionary](#module_style-dictionary)~~ diff --git a/docs/architecture.md b/docs/architecture.md index 30721fa24..b9926458f 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -20,25 +20,29 @@ If there are [custom parsers](parsers.md) defined, Style Dictionary will run tho Style Dictionary takes all the files it found and performs a deep merge. This allows you to split your token files in any way you like, without worrying about accidentally overriding groups of tokens. This gives Style Dictionary a single, complete token object to work from. -## 4. Iterate over the platforms +## 4. Run preprocessors over the dictionary + +Allows users to configure [custom preprocessors](preprocessors.md), to process the merged dictionary as a whole, rather than per token file individually. + +## 5. Iterate over the platforms For each platform defined in your [config](config.md), Style Dictionary will do a few steps to get it ready to be consumed on that platform. You don't need to worry about one platform affecting another because everything that happens in a platform is non-destructive. -## 4a. Transform the tokens +## 5a. Transform the tokens Style Dictionary now traverses over the whole token object and looks for design tokens. It does this by looking for anything with a `value` key. When it comes across a design token, it then performs all the [transforms](transforms.md) defined in your [config](config.md) in order. Value transforms, transforms that modify a token's value, are skipped if the token references another token. Starting in 3.0, you can define a [transitive transform](transforms.md#transitive-transforms) that will transform a value that references another token after that reference has been resolved. -## 4b. Resolve aliases / references to other values +## 5b. Resolve aliases / references to other values After all the tokens have been transformed, it then does another pass over the token object looking for aliases, which look like `"{size.font.base.value}"`. When it finds these, it then replaces the reference with the transformed value. Because Style Dictionary merges all token files into a single object, aliases can be in any token file and still work. -## 4c. Format the tokens into files +## 5c. Format the tokens into files Now all the design tokens are ready to be written to a file. Style Dictionary takes the whole transformed and resolved token object and for each file defined in the platform it [formats](formats.md) the token object and write the output to a file. Internally, Style Dictionary creates a flat array of all the design tokens it finds in addition to the token object. This is how you can output a flat SCSS variables file. -## 4d. Run actions +## 5d. Run actions [Actions](actions.md) are custom code that run in a platform after the files are generated. They are useful for things like copying assets to specific build directories or generating images. diff --git a/docs/config.md b/docs/config.md index 45f7f79cf..13b28edf8 100644 --- a/docs/config.md +++ b/docs/config.md @@ -85,7 +85,7 @@ module.exports = { Some interesting things you can do in a CommonJS file that you cannot do in a JSON file: -- Add custom transforms, formats, filters, actions, and parsers +- Add custom transforms, formats, filters, actions, preprocessors and parsers - Programmatically generate your configuration --- @@ -145,17 +145,18 @@ You would then change your npm script or CLI command to run that file with Node: ## Attributes -| Attribute | Type | Description | -| :-------- | :----------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| transform | Object (optional) | Custom [transforms](transforms.md) you can include inline rather than using `.registerTransform`. The keys in this object will be the transform's name, the value should be an object with `type` | -| format | Object (optional) | Custom [formats](formats.md) you can include inline in the configuration rather than using `.registerFormat`. The keys in this object will be for format's name and value should be the formatter function. | -| action | Object (optional) | Custom inline [actions](actions.md). The keys in this object will be the action's name and the value should be an object containing `do` and `undo` methods. | -| parsers | Array[Parser] (optional) | Custom [file parsers](parsers.md) to run on input files | -| include | Array[String] (optional) | An array of file path [globs](https://github.com/isaacs/node-glob) to design token files that contain default styles. Style Dictionary uses this as a base collection of design tokens. The tokens found using the "source" attribute will overwrite tokens found using include. | -| source | Array[String] | An array of file path [globs](https://github.com/isaacs/node-glob) to design token files. Style Dictionary will do a deep merge of all of the token files, allowing you to organize your files however you want. | -| tokens | Object | The tokens object is a way to include inline design tokens as opposed to using the `source` and `include` arrays. | - -| platforms | Object[Platform] | An object containing [platform](#platform) config objects that describe how the Style Dictionary should build for that platform. You can add any arbitrary attributes on this object that will get passed to formats and actions (more on these in a bit). This is useful for things like build paths, name prefixes, variable names, etc. | +| Attribute | Type | Description | +| :------------ | :----------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| transform | Object (optional) | Custom [transforms](transforms.md) you can include inline rather than using `.registerTransform`. The keys in this object will be the transform's name, the value should be an object with `type` | +| format | Object (optional) | Custom [formats](formats.md) you can include inline in the configuration rather than using `.registerFormat`. The keys in this object will be for format's name and value should be the formatter function. | +| action | Object (optional) | Custom inline [actions](actions.md). The keys in this object will be the action's name and the value should be an object containing `do` and `undo` methods. | +| parsers | Array[Parser] (optional) | Custom [file parsers](parsers.md) to run on input files | +| preprocessors | Object (optional) | Custom [preprocessors](preprocessors.md) to run on the full token dictionary, before any transforms run, can be registered using `.registerPreprocessor`. The keys in this object will be the preprocessor's name | +| include | Array[String] (optional) | An array of file path [globs](https://github.com/isaacs/node-glob) to design token files that contain default styles. Style Dictionary uses this as a base collection of design tokens. The tokens found using the "source" attribute will overwrite tokens found using include. | +| source | Array[String] | An array of file path [globs](https://github.com/isaacs/node-glob) to design token files. Style Dictionary will do a deep merge of all of the token files, allowing you to organize your files however you want. | +| tokens | Object | The tokens object is a way to include inline design tokens as opposed to using the `source` and `include` arrays. | +| properties | Object | **DEPRECATED** The properties object has been renamed to `tokens`. Using the `properties` object will still work for backwards compatibility. | +| platforms | Object[Platform] | An object containing [platform](#platform) config objects that describe how the Style Dictionary should build for that platform. You can add any arbitrary attributes on this object that will get passed to formats and actions (more on these in a bit). This is useful for things like build paths, name prefixes, variable names, etc. | ### Platform diff --git a/docs/extending.md b/docs/extending.md index 68e2bb563..11b45aacc 100644 --- a/docs/extending.md +++ b/docs/extending.md @@ -11,6 +11,7 @@ There is a straightforward way to extend Style Dictionary to meet your needs - s - [registerTemplate](api.md#registertemplate) (deprecated) - [registerAction](api.md#registeraction) - [registerParser](api.md#registerparser) +- [registerPreprocessor](api.md#registerpreprocessor) ## Extension Examples diff --git a/docs/preprocessors.md b/docs/preprocessors.md new file mode 100644 index 000000000..6daba6c83 --- /dev/null +++ b/docs/preprocessors.md @@ -0,0 +1,96 @@ +# Preprocessors + +Starting in version 4.0, you can define custom preprocessors to process the dictionary object as a whole, after it all token files have been parsed and combined into one. +This is useful if you want to do more complex transformations on the dictionary as a whole, when all other ways are not powerful enough. + +It should be clear that using this feature should be a last resort. Using custom parsers to parse per file or using transforms to do transformations on a per token basis, +gives more granular control and reduces the risks of making mistakes. That said, preprocessing the full dictionary gives ultimate flexibility when needed. + +--- + +## Preprocessor structure + +A preprocessor is an object with two props: + +- `name`: the name of the preprocessor +- `preprocessor` a callback function that receives the dictionary as a parameter, and returns the processed dictionary + +```javascript +const myPreprocessor = { + name: 'strip-third-party-meta', + preprocessor: (dictionary) => { + delete dictionary.thirdPartyMetadata; + return dictionary; + }, +}; +``` + +Asynchronous callback functions are also supported, giving even more flexibility. + +```javascript +const myPreprocessor = { + name: 'strip-props', + preprocessor: async (dictionary) => { + const propsToDelete = await someAPICall(); + + propsToDelete.forEach((propName) => { + delete dictionary[propName]; + }); + + return dictionary; + }, +}; +``` + +--- + +## Using preprocessors + +First you will need to tell Style Dictionary about your parser. You can do this in two ways: + +1. Using the `.registerPreprocessor` method +1. Inline in the [configuration](config.md) + +### .registerPreprocessor + +```javascript +import StyleDictionary from 'style-dictionary'; + +StyleDictionary.registerPreprocessor(myPreprocessor); +``` + +### Inline + +```javascript +export default { + preprocessors: { + 'strip-props': myPreprocessor, + }, + // ... the rest of the configuration +}; +``` + +--- + +## Preprocessor examples + +Stripping description property recursively in the entire dictionary object: + +```js +StyleDictionary.registerPreprocessor({ + name: 'strip-descriptions', + preprocessor: (dict) => { + // recursively traverse token objects and delete description props + function removeDescription(slice) { + delete slice.description; + Object.values(slice).forEach((value) => { + if (typeof value === 'object') { + removeDescription(value); + } + }); + return slice; + } + return removeDescription(dict); + }, +}); +``` diff --git a/lib/StyleDictionary.js b/lib/StyleDictionary.js index e613ad6ca..1faa9c1fd 100644 --- a/lib/StyleDictionary.js +++ b/lib/StyleDictionary.js @@ -29,6 +29,7 @@ import registerFormat from './register/format.js'; import registerAction from './register/action.js'; import registerFilter from './register/filter.js'; import registerParser from './register/parser.js'; +import registerPreprocessor from './register/preprocessor.js'; import registerFileHeader from './register/fileHeader.js'; import combineJSON from './utils/combineJSON.js'; @@ -37,6 +38,7 @@ import resolveObject from './utils/resolveObject.js'; import getName from './utils/references/getName.js'; import createDictionary from './utils/createDictionary.js'; import GroupMessages from './utils/groupMessages.js'; +import { preprocess } from './utils/preprocess.js'; import transformObject from './transform/object.js'; import transformConfig from './transform/config.js'; @@ -89,6 +91,7 @@ export default class StyleDictionary { static filter = filter; static fileHeader = {}; static parsers = []; // we need to initialise the array, since we don't have built-in parsers + static preprocessors = {}; static registerTransform(...args) { return registerTransform.call(this, ...args); @@ -114,42 +117,54 @@ export default class StyleDictionary { return registerParser.call(this, ...args); } + static registerPreprocessor(...args) { + return registerPreprocessor.call(this, ...args); + } + static registerFileHeader(...args) { return registerFileHeader.call(this, ...args); } constructor(config = {}, { init = true } = {}) { // dynamically add these instance methods to delegate to class methods for register - ['transform', 'transformGroup', 'format', 'action', 'filter', 'fileHeader', 'parser'].forEach( - (prop) => { - Object.defineProperty(this, `register${prop.charAt(0).toUpperCase() + prop.slice(1)}`, { - value: (...args) => { - this.constructor[`register${prop.charAt(0).toUpperCase() + prop.slice(1)}`](...args); - }, - }); - - // Dynamically add getter/setter pairs so we can act as a gateway, merging - // the SD class options with SD instance options - const _prop = prop === 'parser' ? 'parsers' : prop; - Object.defineProperty(this, _prop, { - get: function () { - if (prop === 'parser') { - return [...this.constructor[`${_prop}`], ...this[`_${_prop}`]]; - } - return { ...this.constructor[`${_prop}`], ...this[`_${_prop}`] }; - }, - set: function (v) { - this[`_${_prop}`] = v; - }, - }); - }, - ); + [ + 'transform', + 'transformGroup', + 'format', + 'action', + 'filter', + 'fileHeader', + 'parser', + 'preprocessor', + ].forEach((prop) => { + Object.defineProperty(this, `register${prop.charAt(0).toUpperCase() + prop.slice(1)}`, { + value: (...args) => { + this.constructor[`register${prop.charAt(0).toUpperCase() + prop.slice(1)}`](...args); + }, + }); + + // Dynamically add getter/setter pairs so we can act as a gateway, merging + // the SD class options with SD instance options + const _prop = ['parser', 'preprocessor'].includes(prop) ? `${prop}s` : prop; + Object.defineProperty(this, _prop, { + get: function () { + if (prop === 'parser') { + return [...this.constructor[`${_prop}`], ...this[`_${_prop}`]]; + } + return { ...this.constructor[`${_prop}`], ...this[`_${_prop}`] }; + }, + set: function (v) { + this[`_${_prop}`] = v; + }, + }); + }); this.config = config; this.options = {}; this.tokens = {}; this.allTokens = {}; this.parsers = []; + this.preprocessors = {}; this.hasInitialized = new Promise((resolve) => { this.hasInitializedResolve = resolve; }); @@ -250,7 +265,8 @@ export default class StyleDictionary { } // Merge inline, include, and source tokens - this.tokens = deepExtend([{}, inlineTokens, includeTokens, sourceTokens]); + const unprocessedTokens = deepExtend([{}, inlineTokens, includeTokens, sourceTokens]); + this.tokens = await preprocess(unprocessedTokens, this.preprocessors); this.hasInitializedResolve(); // For chaining diff --git a/lib/register/preprocessor.js b/lib/register/preprocessor.js new file mode 100644 index 000000000..c62f1dbf4 --- /dev/null +++ b/lib/register/preprocessor.js @@ -0,0 +1,39 @@ +/* + * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with + * the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR + * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +/** + * @typedef {import('../../types/Preprocessor').Preprocessor} Preprocessor + * Adds a custom preprocessor to preprocess the parsed dictionary, before transforming individual tokens. + * @static + * @memberof module:style-dictionary + * @param {Object} Preprocessor - Preprocessor object + * @param {String} Preprocessor.name - Name of the format to be referenced in your config.json + * @param {function} Preprocessor.preprocessor - Function to preprocess the dictionary. The function should return a plain Javascript object. + * @returns {module:style-dictionary} + * @example + * ```js + * StyleDictionary.registerPreprocessor((dictionary) => { + * return dictionary; + * }); + * ``` + */ +export default function registerPreprocessor(cfg) { + const errorPrefix = 'Cannot register preprocessor;'; + if (typeof cfg.name !== 'string') + throw new Error(`${errorPrefix} Preprocessor.name must be a string`); + if (!(cfg.preprocessor instanceof Function)) { + throw new Error(`${errorPrefix} Preprocessor.preprocessor must be a function`); + } + this.preprocessors[cfg.name] = cfg.preprocessor; + return this; +} diff --git a/lib/transform/config.js b/lib/transform/config.js index 8ed4265cd..4ee567cd6 100644 --- a/lib/transform/config.js +++ b/lib/transform/config.js @@ -15,7 +15,6 @@ import { clone, matches } from '../utils/es6_.js'; import deepExtend from '../utils/deepExtend.js'; import GroupMessages from '../utils/groupMessages.js'; -const TEMPLATE_DEPRECATION_WARNINGS = GroupMessages.GROUP.TemplateDeprecationWarnings; const MISSING_TRANSFORM_ERRORS = GroupMessages.GROUP.MissingRegisterTransformErrors; /** diff --git a/lib/utils/preprocess.js b/lib/utils/preprocess.js new file mode 100644 index 000000000..7feb182d9 --- /dev/null +++ b/lib/utils/preprocess.js @@ -0,0 +1,35 @@ +/* + * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with + * the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR + * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +/** + * Run all registered preprocessors on the dictionary, + * returning the preprocessed dictionary in each step. + * + * @typedef {import('../../types/DesignToken').DesignTokens} DesignTokens + * @typedef {import('../../types/Preprocessor').Preprocessor} Preprocessor + * + * @param {DesignTokens} tokens + * @param {Preprocessor[]} preprocessorObj + * @returns {Promise} + */ +export async function preprocess(tokens, preprocessorObj = {}) { + let processedTokens = tokens; + + const preprocessors = Object.values(preprocessorObj); + if (preprocessors.length > 0) { + for (const preprocessor of preprocessors) { + processedTokens = await preprocessor(processedTokens); + } + } + return processedTokens; +} diff --git a/package.json b/package.json index 52ac501a7..08dec5f08 100644 --- a/package.json +++ b/package.json @@ -48,7 +48,7 @@ ], "scripts": { "format": "run-p format:*", - "format:eslint": "eslint --fix index.js \"lib/**/*.js\" \"__tests__/**/*.js\"", + "format:eslint": "eslint --fix \"**/*.js\"", "format:prettier": "prettier \"**/*.{js,md}\" \"package.json\" --write", "lint": "run-p lint:*", "lint:eslint": "eslint \"**/*.js\"", diff --git a/types/Config.d.ts b/types/Config.d.ts index c249f81e7..8e6a9cf2b 100644 --- a/types/Config.d.ts +++ b/types/Config.d.ts @@ -12,6 +12,7 @@ */ import { Parser } from './Parser'; +import { Preprocessor } from './Preprocessor'; import { Transform } from './Transform'; import { TransformGroup } from './TransformGroup'; import { Filter } from './Filter'; @@ -23,6 +24,7 @@ import { DesignTokens } from './DesignToken'; export interface Config { parsers?: Parser[]; + preprocessors?: Record; transform?: Record; transformGroup?: Record; format?: Record; diff --git a/types/Preprocessor.d.ts b/types/Preprocessor.d.ts new file mode 100644 index 000000000..2a8365cf0 --- /dev/null +++ b/types/Preprocessor.d.ts @@ -0,0 +1,21 @@ +/* + * Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with + * the License. A copy of the License is located at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR + * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions + * and limitations under the License. + */ + +import { DesignTokens } from './DesignToken'; + +export type Preprocessor = { + name: string; + preprocessor: preprocessor; +}; + +export type preprocessor = (dictionary: DesignTokens) => DesignTokens | Promise; diff --git a/types/index.d.ts b/types/index.d.ts index d6b79de45..51b065f8c 100644 --- a/types/index.d.ts +++ b/types/index.d.ts @@ -25,6 +25,7 @@ import { FormatHelpers as _FormatHelpers } from './FormatHelpers'; import { Matcher as _Matcher } from './Matcher'; import { Options as _Options } from './Options'; import { Parser as _Parser } from './Parser'; +import { Preprocessor as _Preprocessor, preprocessor as _preprocessor } from './Preprocessor'; import { Platform as _Platform } from './Platform'; import { Transform as _Transform } from './Transform'; import { @@ -52,6 +53,8 @@ declare namespace StyleDictionary { type Matcher = _Matcher; type Options = _Options; type Parser = _Parser; + type Preprocessor = _Preprocessor; + type preprocessor = _preprocessor; type Platform> = _Platform; type Transform> = _Transform; type TransformedToken = _TransformedToken; @@ -72,6 +75,7 @@ declare namespace StyleDictionary { filter: Record; fileHeader: Record; parsers: Parser[]; + preprocessors: Record; formatHelpers: FormatHelpers; @@ -206,6 +210,25 @@ declare namespace StyleDictionary { */ registerParser(parser: Parser): this; + /** + * Adds a custom preprocessor to preprocess dictionary object. + * + * @param {Preprocessor} Preprocessor + * @param {string} Preprocessor.name - name of the preprocessor + * @param {preprocessor} Preprocessor.preprocessor - Function to preprocess the dictionary. The function should return a plain Javascript object. + * @example + * ```js + * StyleDictionary.registerPreprocessor({ + * name: 'strip-third-party-meta', + * preprocessor: (dictionary) => { + * delete dictionary.thirdPartyMetadata; + * return dictionary; + * }, + * }); + * ``` + */ + registerPreprocessor(preprocessor: Preprocessor): this; + /** * Adds a custom action to Style Dictionary. Actions * are functions that can do whatever you need, such as: copying files, diff --git a/types/index.test-d.ts b/types/index.test-d.ts index 8880de0e1..92b3c788e 100644 --- a/types/index.test-d.ts +++ b/types/index.test-d.ts @@ -136,6 +136,13 @@ expectType( }), ); +expectType( + StyleDictionary.registerPreprocessor({ + name: 'foo', + preprocessor: (dictionary) => dictionary, + }), +); + const file: StyleDictionary.File = { destination: `somePath.json`, format: `css/variables`,