From 2e296f5a053a64339780872e48b953558d084bba Mon Sep 17 00:00:00 2001 From: Lukas Oppermann Date: Mon, 8 May 2023 09:37:45 +0200 Subject: [PATCH] fix --- README.md | 2 +- build/css/_variables.css | 31 +- build/ios-swift/StyleDictionary.swift | 146 -- build/ios-swift/StyleDictionaryColor.swift | 2 +- build/ios-swift/StyleDictionarySize.swift | 2 +- build/ios/StyleDictionaryColor.h | 2 +- build/ios/StyleDictionaryColor.m | 2 +- build/ios/StyleDictionarySize.h | 2 +- build/ios/StyleDictionarySize.m | 2 +- build/json/styles.json | 22 - build/less/_variables.less | 82 +- build/scss/_variables.scss | 82 +- config.json | 110 - examples/web/build.js | 8 - examples/web/createPropertyFormatter.js | 138 ++ examples/web/fileHeader.js | 86 + examples/web/filterWeb.js | 3 + examples/web/formatCss.js | 45 + examples/web/formattedVariables.js | 64 + examples/web/index.js | 28 + examples/web/sizePx.js | 9 + examples/web/sortByReference.js | 71 + examples/web/webFont.js | 14 + examples/web/webGradient.js | 19 + examples/web/webPadding.js | 12 + examples/web/webRadius.js | 12 + examples/web/webShadows.js | 11 + package-lock.json | 2517 ++++++++++++++------ package.json | 1 + tokens/design-tokens.tokens.json | 977 +++++++- transformTokens.js | 162 +- 31 files changed, 3463 insertions(+), 1201 deletions(-) delete mode 100644 build/ios-swift/StyleDictionary.swift delete mode 100644 config.json create mode 100644 examples/web/createPropertyFormatter.js create mode 100644 examples/web/fileHeader.js create mode 100644 examples/web/filterWeb.js create mode 100644 examples/web/formatCss.js create mode 100644 examples/web/formattedVariables.js create mode 100644 examples/web/index.js create mode 100644 examples/web/sizePx.js create mode 100644 examples/web/sortByReference.js create mode 100644 examples/web/webFont.js create mode 100644 examples/web/webGradient.js create mode 100644 examples/web/webPadding.js create mode 100644 examples/web/webRadius.js create mode 100644 examples/web/webShadows.js diff --git a/README.md b/README.md index 56a357239..a9e4b2ff1 100644 --- a/README.md +++ b/README.md @@ -76,6 +76,6 @@ To customize the output please view the [Amazon style dictionary documentation]( If you only see the `Get started with GitHub Actions` page without an option to `enable actions` you either deleted the [.github/workflows](.github/workflows) file from your forked repository, or you created a new repositiory without adding a [.github/workflows](.github/workflows) file. See [step 1](#1-fork-this-repository). ## Bugs, issues & feature requests -If you have issues concerning the [Design Tokens plugin for Figma](https://github.com/lukasoppermann/design-tokens) please [create an issue in the plugin repo](https://github.com/lukasoppermann/design-tokens/issues/new). +If you have issues concerning the [Design Tokens plugin for Figma](https://github.com/lukasoppermann/design-tokens) please [create an issue in the plugin repo](https://github.com/lukasoppermann/design-tokens/issues/new). Only create an issue in this repository if you have an issue with this transformation package. diff --git a/build/css/_variables.css b/build/css/_variables.css index 81fe90771..2a59df042 100644 --- a/build/css/_variables.css +++ b/build/css/_variables.css @@ -15,14 +15,35 @@ --breakpoints-lg: 1280px; --breakpoints-sm: 768px; --breakpoints-md: 1024px; + --spacing-10: 10px; + --spacing-mixed: 10px 20px 30px 20px; + --spacing-top: 10px 0px 0px 0px; + --radius-5: 5px; + --radii-smoothing: 10px; + --radii-mixed: 5.5px 10px 20px 15px; + --gradient-gradient-single-with-multiple-color-stops: radial-gradient(rgb(255, 184, 0) 0%, rgb(255, 138, 0) 34%, rgb(255, 46, 0) 65%, rgb(255, 0, 0) 100%); + --gradient-gradient-multiplegrad-0: linear-gradient(180deg, rgb(255, 184, 0) 0%, rgba(255, 184, 0, 0) 100%); + --gradient-gradient-multiplegrad-1: radial-gradient(rgb(255, 255, 255) 0%, rgba(255, 255, 255, 0) 100%); + --gradient-gradient-multiplegrad-2: undefined; + --gradient-gradient-multiplegrad-3: undefined; --color-colors-semi-red: rgba(255, 95, 4, 0.5); - --color-colors-multiple-fills-0: #40ffba; + --color-colors-multiple-fills-0: rgb(64, 255, 186); --color-colors-multiple-fills-1: rgba(0, 0, 0, 0.1); - --color-colors-single-blue: #044aff; - --color-colors-ref-blue: #044aff; + --color-colors-single-blue: rgb(4, 74, 255); + --color-colors-ref-blue: rgb(4, 74, 255); --color-colors-empty: rgba(0, 0, 0, 0); - --color-colors-special-characters: #40df50; - --color-colors-special-characters-nderung: #3456af; + --color-colors-special-characters: rgb(64, 223, 80); + --color-colors-special-characters-nderung: rgb(52, 86, 175); + --font-body-h3: condensed 700 20/32 Akzidenz-Grotesk Pro; + --font-body-h4-strike-through: italic 500 16/19.2 Roboto; + --font-body-italic: italic 400 12/14 Roboto; + --font-body-extra-bold-condensed-italic: condensed italic 800 12/14.4 Akzidenz-Grotesk Pro; + --font-body-medium-extended-italic: expanded italic 500 20/24 Akzidenz-Grotesk Pro; + --font-body-super: 900 22/26.4 Akzidenz-Grotesk Pro; + --effect-drop-shadow-single: 0px 4px 4px 0px rgba(0, 0, 0, 0.25); + --effect-inner-shadow-multiple-0: inset 0px 4px 4px 0px rgba(0, 0, 0, 0.25); + --effect-inner-shadow-multiple-1: inset 10px 100px 1px 0.5px rgb(0, 0, 0); + --effect-inner-shadow-multiple-2: inset -4px 2px 3px 11px rgba(0, 0, 0, 0.25); --typography-body-h3-font-size: 20px; --typography-body-h3-text-decoration: none; --typography-body-h3-font-family: Akzidenz-Grotesk Pro; diff --git a/build/ios-swift/StyleDictionary.swift b/build/ios-swift/StyleDictionary.swift deleted file mode 100644 index e6aed123d..000000000 --- a/build/ios-swift/StyleDictionary.swift +++ /dev/null @@ -1,146 +0,0 @@ - -// -// StyleDictionary.swift -// - -// Do not edit directly -// Generated on Fri, 15 Jul 2022 19:49:49 GMT - - -import UIKit - -public class StyleDictionary { - public static let bordersDashedOutside = [object Object] - public static let bordersSingle = [object Object] - public static let bordersSingleStyle = [object Object] - public static let bordersUnsupportedMultipleBorders = [object Object] - public static let breakpointsLg = 1280 - public static let breakpointsMd = 1024 - public static let breakpointsSm = 768 - public static let colorColorsEmpty = UIColor(red: 0.000, green: 0.000, blue: 0.000, alpha: 0) - public static let colorColorsMultipleFills0 = UIColor(red: 0.251, green: 1.000, blue: 0.729, alpha: 1) - public static let colorColorsMultipleFills1 = UIColor(red: 0.000, green: 0.000, blue: 0.000, alpha: 0.10196078431372549) - public static let colorColorsRefBlue = UIColor(red: 0.016, green: 0.290, blue: 1.000, alpha: 1) - public static let colorColorsSemiRed = UIColor(red: 1.000, green: 0.373, blue: 0.016, alpha: 0.5019607843137255) - public static let colorColorsSingleBlue = UIColor(red: 0.016, green: 0.290, blue: 1.000, alpha: 1) - public static let colorColorsSpecialCharacters = UIColor(red: 0.251, green: 0.875, blue: 0.314, alpha: 1) - public static let colorColorsSpecialCharactersNderung = UIColor(red: 0.204, green: 0.337, blue: 0.686, alpha: 1) - public static let effectDropShadowSingle = [object Object] - public static let effectInnerShadowMultiple0 = [object Object] - public static let effectInnerShadowMultiple1 = [object Object] - public static let effectInnerShadowMultiple2 = [object Object] - public static let fontBodyExtraBoldCondensedItalic = "[object Object]" - public static let fontBodyH3 = "[object Object]" - public static let fontBodyH4StrikeThrough = "[object Object]" - public static let fontBodyItalic = "[object Object]" - public static let fontBodyMediumExtendedItalic = "[object Object]" - public static let fontBodySuper = "[object Object]" - public static let gradientGradientMultiplegrad0 = [object Object] - public static let gradientGradientMultiplegrad1 = [object Object] - public static let gradientGradientMultiplegrad2 = [object Object] - public static let gradientGradientMultiplegrad3 = [object Object] - public static let gradientGradientSingleWithMultipleColorStops = [object Object] - public static let gridMultiple0 = [object Object] - public static let gridMultiple1 = [object Object] - public static let gridMultiple2 = [object Object] - public static let gridMultiple3 = [object Object] - public static let gridMultiple4 = [object Object] - public static let gridMultiple5 = [object Object] - public static let gridMultiple6 = [object Object] - public static let gridMultiple7 = [object Object] - public static let gridSingle = [object Object] - public static let motionBouncy = [object Object] - public static let motionCustomSpring = [object Object] - public static let motionDissolve = [object Object] - public static let motionMoveIn = [object Object] - public static let motionPush = [object Object] - public static let motionSmart = [object Object] - public static let opacities025 = 0.25 - public static let opacityFull = 1 - public static let opacityHalf = 0.5 - public static let radiiMixed = [object Object] - public static let radiiSmoothing = [object Object] - public static let radius5 = [object Object] - public static let sizes32 = 32.72 - public static let sizes40 = 40 - public static let sizes60 = 60 - public static let sizes80 = 80 - public static let sizesFrame = 32 - public static let sizesInVariant120 = 120 - public static let sizesInVariant60 = 60 - public static let sizesInVariant90 = 90 - public static let sizesPlainToken = 200 - public static let sizesRect = 32 - public static let sizesShapeInComponent = 32 - public static let sizesTokenInFrame = 200 - public static let sizesTokenInGroup = 200 - public static let spacing10 = [object Object] - public static let spacingMixed = [object Object] - public static let spacingTop = [object Object] - public static let typographyBodyExtraBoldCondensedItalicFontFamily = Akzidenz-Grotesk Pro - public static let typographyBodyExtraBoldCondensedItalicFontSize = 12 - public static let typographyBodyExtraBoldCondensedItalicFontStretch = condensed - public static let typographyBodyExtraBoldCondensedItalicFontStyle = italic - public static let typographyBodyExtraBoldCondensedItalicFontWeight = 800 - public static let typographyBodyExtraBoldCondensedItalicLetterSpacing = 0 - public static let typographyBodyExtraBoldCondensedItalicLineHeight = 14.4 - public static let typographyBodyExtraBoldCondensedItalicParagraphIndent = 0 - public static let typographyBodyExtraBoldCondensedItalicParagraphSpacing = 0 - public static let typographyBodyExtraBoldCondensedItalicTextCase = none - public static let typographyBodyExtraBoldCondensedItalicTextDecoration = none - public static let typographyBodyH3FontFamily = Akzidenz-Grotesk Pro - public static let typographyBodyH3FontSize = 20 - public static let typographyBodyH3FontStretch = condensed - public static let typographyBodyH3FontStyle = normal - public static let typographyBodyH3FontWeight = 700 - public static let typographyBodyH3LetterSpacing = 0.4 - public static let typographyBodyH3LineHeight = 32 - public static let typographyBodyH3ParagraphIndent = 5 - public static let typographyBodyH3ParagraphSpacing = 8 - public static let typographyBodyH3TextCase = uppercase - public static let typographyBodyH3TextDecoration = none - public static let typographyBodyH4StrikeThroughFontFamily = Roboto - public static let typographyBodyH4StrikeThroughFontSize = 16 - public static let typographyBodyH4StrikeThroughFontStretch = normal - public static let typographyBodyH4StrikeThroughFontStyle = italic - public static let typographyBodyH4StrikeThroughFontWeight = 500 - public static let typographyBodyH4StrikeThroughLetterSpacing = 0 - public static let typographyBodyH4StrikeThroughLineHeight = 19.2 - public static let typographyBodyH4StrikeThroughParagraphIndent = 0 - public static let typographyBodyH4StrikeThroughParagraphSpacing = 0 - public static let typographyBodyH4StrikeThroughTextCase = none - public static let typographyBodyH4StrikeThroughTextDecoration = line-through - public static let typographyBodyItalicFontFamily = Roboto - public static let typographyBodyItalicFontSize = 12 - public static let typographyBodyItalicFontStretch = normal - public static let typographyBodyItalicFontStyle = italic - public static let typographyBodyItalicFontWeight = 400 - public static let typographyBodyItalicLetterSpacing = 0 - public static let typographyBodyItalicLineHeight = 14 - public static let typographyBodyItalicParagraphIndent = 0 - public static let typographyBodyItalicParagraphSpacing = 0 - public static let typographyBodyItalicTextCase = none - public static let typographyBodyItalicTextDecoration = none - public static let typographyBodyMediumExtendedItalicFontFamily = Akzidenz-Grotesk Pro - public static let typographyBodyMediumExtendedItalicFontSize = 20 - public static let typographyBodyMediumExtendedItalicFontStretch = expanded - public static let typographyBodyMediumExtendedItalicFontStyle = italic - public static let typographyBodyMediumExtendedItalicFontWeight = 500 - public static let typographyBodyMediumExtendedItalicLetterSpacing = 0 - public static let typographyBodyMediumExtendedItalicLineHeight = 24 - public static let typographyBodyMediumExtendedItalicParagraphIndent = 0 - public static let typographyBodyMediumExtendedItalicParagraphSpacing = 0 - public static let typographyBodyMediumExtendedItalicTextCase = none - public static let typographyBodyMediumExtendedItalicTextDecoration = none - public static let typographyBodySuperFontFamily = Akzidenz-Grotesk Pro - public static let typographyBodySuperFontSize = 22 - public static let typographyBodySuperFontStretch = normal - public static let typographyBodySuperFontStyle = normal - public static let typographyBodySuperFontWeight = 900 - public static let typographyBodySuperLetterSpacing = 0 - public static let typographyBodySuperLineHeight = 26.4 - public static let typographyBodySuperParagraphIndent = 0 - public static let typographyBodySuperParagraphSpacing = 0 - public static let typographyBodySuperTextCase = none - public static let typographyBodySuperTextDecoration = none -} diff --git a/build/ios-swift/StyleDictionaryColor.swift b/build/ios-swift/StyleDictionaryColor.swift index 7601e723e..3edd2e741 100644 --- a/build/ios-swift/StyleDictionaryColor.swift +++ b/build/ios-swift/StyleDictionaryColor.swift @@ -4,7 +4,7 @@ // // Do not edit directly -// Generated on Fri, 15 Jul 2022 19:49:49 GMT +// Generated on Mon, 08 May 2023 07:37:37 GMT import UIKit diff --git a/build/ios-swift/StyleDictionarySize.swift b/build/ios-swift/StyleDictionarySize.swift index 2c38a449c..4a93f9318 100644 --- a/build/ios-swift/StyleDictionarySize.swift +++ b/build/ios-swift/StyleDictionarySize.swift @@ -4,7 +4,7 @@ // // Do not edit directly -// Generated on Fri, 15 Jul 2022 19:49:49 GMT +// Generated on Mon, 08 May 2023 07:37:37 GMT import UIKit diff --git a/build/ios/StyleDictionaryColor.h b/build/ios/StyleDictionaryColor.h index 789353b73..27ccde164 100644 --- a/build/ios/StyleDictionaryColor.h +++ b/build/ios/StyleDictionaryColor.h @@ -4,7 +4,7 @@ // // Do not edit directly -// Generated on Fri, 15 Jul 2022 19:49:49 GMT +// Generated on Mon, 08 May 2023 07:37:37 GMT #import diff --git a/build/ios/StyleDictionaryColor.m b/build/ios/StyleDictionaryColor.m index 65e1219a2..73f2ff296 100644 --- a/build/ios/StyleDictionaryColor.m +++ b/build/ios/StyleDictionaryColor.m @@ -4,7 +4,7 @@ // // Do not edit directly -// Generated on Fri, 15 Jul 2022 19:49:49 GMT +// Generated on Mon, 08 May 2023 07:37:37 GMT #import "StyleDictionaryColor.h" diff --git a/build/ios/StyleDictionarySize.h b/build/ios/StyleDictionarySize.h index 13a555329..2875da743 100644 --- a/build/ios/StyleDictionarySize.h +++ b/build/ios/StyleDictionarySize.h @@ -3,7 +3,7 @@ // // Do not edit directly -// Generated on Fri, 15 Jul 2022 19:49:49 GMT +// Generated on Mon, 08 May 2023 07:37:37 GMT #import diff --git a/build/ios/StyleDictionarySize.m b/build/ios/StyleDictionarySize.m index 08bc0de7d..2ae40d1ff 100644 --- a/build/ios/StyleDictionarySize.m +++ b/build/ios/StyleDictionarySize.m @@ -4,7 +4,7 @@ // // Do not edit directly -// Generated on Fri, 15 Jul 2022 19:49:49 GMT +// Generated on Mon, 08 May 2023 07:37:37 GMT #import "StyleDictionarySize.h" diff --git a/build/json/styles.json b/build/json/styles.json index f5af87404..922b89e87 100644 --- a/build/json/styles.json +++ b/build/json/styles.json @@ -18,22 +18,9 @@ "Spacing10": {"top":10,"bottom":10,"left":10,"right":10}, "SpacingMixed": {"top":10,"bottom":30,"left":20,"right":20}, "SpacingTop": {"top":10,"bottom":0,"left":0,"right":0}, - "BordersSingle": {"align":"inside","dashPattern":[0,0],"lineCap":"none","lineJoin":"miter","miterLimit":4,"weight":5,"color":"#000000ff"}, - "BordersDashedOutside": {"align":"outside","dashPattern":[5,5,3,3],"lineCap":"none","lineJoin":"miter","miterLimit":4,"weight":5,"color":"#000000ff"}, - "BordersSingleStyle": {"align":"inside","dashPattern":[0,0],"lineCap":"none","lineJoin":"miter","miterLimit":4,"weight":5,"color":"#044affff"}, - "BordersUnsupportedMultipleBorders": {"align":"inside","dashPattern":[5,10],"lineCap":"none","lineJoin":"miter","miterLimit":4,"weight":5,"color":"#ffe600ff"}, "Radius5": {"smoothing":0,"topLeft":5,"topRight":5,"bottomLeft":5,"bottomRight":5}, "RadiiSmoothing": {"smoothing":0.75,"topLeft":10,"topRight":10,"bottomLeft":10,"bottomRight":10}, "RadiiMixed": {"smoothing":0,"topLeft":5.5,"topRight":10,"bottomLeft":20,"bottomRight":15}, - "MotionMoveIn": {"transitionType":"move_in","duration":0.5,"direction":"left","easingType":"cubicBezier","easingFunction":{"x1":0.41999998688697815,"x2":1,"y1":0,"y2":1}}, - "MotionDissolve": {"transitionType":"dissolve","duration":0.45,"easingType":"cubicBezier","easingFunction":{"x1":0.6968395709991455,"x2":0.06683959811925888,"y1":0.052326660603284836,"y2":0.9323266744613647}}, - "MotionSmart": {"transitionType":"smart_animate","duration":0.5,"easingType":"cubicBezier","easingFunction":{"x1":0,"x2":1,"y1":0,"y2":1}}, - "MotionPush": {"transitionType":"push","duration":0.5,"direction":"left","easingType":"cubicBezier","easingFunction":{"x1":0.30000001192092896,"x2":0.699999988079071,"y1":-0.05000000074505806,"y2":-0.5}}, - "MotionBouncy": {"transitionType":"push","duration":0.958,"direction":"left","easingType":"spring","easingFunction":{"mass":1,"stiffness":600,"damping":15}}, - "MotionCustomSpring": {"transitionType":"push","duration":0.744,"direction":"left","easingType":"spring","easingFunction":{"mass":1,"stiffness":300,"damping":20}}, - "Opacities025": 0.25, - "OpacityFull": 1, - "OpacityHalf": 0.5, "GradientGradientSingleWithMultipleColorStops": {"gradientType":"radial","rotation":180,"stops":[{"position":0,"color":"#ffb800ff"},{"position":0.34,"color":"#ff8a00ff"},{"position":0.65,"color":"#ff2e00ff"},{"position":1,"color":"#ff0000ff"}]}, "GradientGradientMultiplegrad0": {"gradientType":"linear","rotation":180,"stops":[{"position":0,"color":"#ffb800ff"},{"position":1,"color":"#ffb80000"}]}, "GradientGradientMultiplegrad1": {"gradientType":"radial","rotation":180,"stops":[{"position":0,"color":"#ffffffff"},{"position":1,"color":"#ffffff00"}]}, @@ -47,15 +34,6 @@ "ColorColorsEmpty": "#000000", "ColorColorsSpecialCharacters": "#40df50", "ColorColorsSpecialCharactersNderung": "#3456af", - "GridMultiple0": {"pattern":"columns","sectionSize":1,"gutterSize":20,"alignment":"max","count":7,"offset":3}, - "GridMultiple1": {"pattern":"columns","sectionSize":12,"gutterSize":20,"alignment":"center","count":6}, - "GridMultiple2": {"pattern":"columns","gutterSize":20,"alignment":"stretch","count":5,"offset":10}, - "GridMultiple3": {"pattern":"columns","sectionSize":34,"gutterSize":20,"alignment":"min","count":4,"offset":13}, - "GridMultiple4": {"pattern":"rows","sectionSize":8,"gutterSize":20,"alignment":"max","count":5,"offset":10}, - "GridMultiple5": {"pattern":"rows","sectionSize":8,"gutterSize":10,"alignment":"center","count":4}, - "GridMultiple6": {"pattern":"rows","sectionSize":8,"gutterSize":20,"alignment":"min","count":3,"offset":10}, - "GridMultiple7": {"pattern":"grid","sectionSize":8}, - "GridSingle": {"pattern":"columns","sectionSize":11,"gutterSize":20,"alignment":"center","count":5}, "FontBodyH3": {"fontSize":20,"textDecoration":"none","fontFamily":"Akzidenz-Grotesk Pro","fontWeight":700,"fontStyle":"normal","fontStretch":"condensed","letterSpacing":0.4,"lineHeight":32,"paragraphIndent":5,"paragraphSpacing":8,"textCase":"uppercase"}, "FontBodyH4StrikeThrough": {"fontSize":16,"textDecoration":"line-through","fontFamily":"Roboto","fontWeight":500,"fontStyle":"italic","fontStretch":"normal","letterSpacing":0,"lineHeight":19.2,"paragraphIndent":0,"paragraphSpacing":0,"textCase":"none"}, "FontBodyItalic": {"fontSize":12,"textDecoration":"none","fontFamily":"Roboto","fontWeight":400,"fontStyle":"italic","fontStretch":"normal","letterSpacing":0,"lineHeight":14,"paragraphIndent":0,"paragraphSpacing":0,"textCase":"none"}, diff --git a/build/less/_variables.less b/build/less/_variables.less index 31851d768..6909e2238 100644 --- a/build/less/_variables.less +++ b/build/less/_variables.less @@ -1,6 +1,6 @@ // Do not edit directly -// Generated on Fri, 15 Jul 2022 19:49:49 GMT +// Generated on Mon, 08 May 2023 07:37:37 GMT @sizes-32: 32.72px; @sizes-40: 40px; @@ -18,57 +18,35 @@ @breakpoints-lg: 1280px; @breakpoints-sm: 768px; @breakpoints-md: 1024px; -@spacing-10: [object Object]; -@spacing-mixed: [object Object]; -@spacing-top: [object Object]; -@borders-single: [object Object]; -@borders-dashed-outside: [object Object]; -@borders-single-style: [object Object]; -@borders-unsupported-multiple-borders: [object Object]; -@radius-5: [object Object]; -@radii-smoothing: [object Object]; -@radii-mixed: [object Object]; -@motion-move-in: [object Object]; -@motion-dissolve: [object Object]; -@motion-smart: [object Object]; -@motion-push: [object Object]; -@motion-bouncy: [object Object]; -@motion-custom-spring: [object Object]; -@opacities-0-25: 0.25; -@opacity-full: 1; -@opacity-half: 0.5; -@gradient-gradient-single-with-multiple-color-stops: [object Object]; -@gradient-gradient-multiplegrad-0: [object Object]; -@gradient-gradient-multiplegrad-1: [object Object]; -@gradient-gradient-multiplegrad-2: [object Object]; -@gradient-gradient-multiplegrad-3: [object Object]; -@color-colors-semi-red: #ff5f04; -@color-colors-multiple-fills-0: #40ffba; -@color-colors-multiple-fills-1: #000000; -@color-colors-single-blue: #044aff; -@color-colors-ref-blue: #044aff; -@color-colors-empty: #000000; -@color-colors-special-characters: #40df50; -@color-colors-special-characters-nderung: #3456af; -@grid-multiple-0: [object Object]; -@grid-multiple-1: [object Object]; -@grid-multiple-2: [object Object]; -@grid-multiple-3: [object Object]; -@grid-multiple-4: [object Object]; -@grid-multiple-5: [object Object]; -@grid-multiple-6: [object Object]; -@grid-multiple-7: [object Object]; -@grid-single: [object Object]; -@font-body-h3: [object Object]; -@font-body-h4-strike-through: [object Object]; -@font-body-italic: [object Object]; -@font-body-extra-bold-condensed-italic: [object Object]; -@font-body-medium-extended-italic: [object Object]; -@font-body-super: [object Object]; -@effect-drop-shadow-single: [object Object]; -@effect-inner-shadow-multiple-0: [object Object]; -@effect-inner-shadow-multiple-1: [object Object]; -@effect-inner-shadow-multiple-2: [object Object]; +@spacing-10: 10px; +@spacing-mixed: 10px 20px 30px 20px; +@spacing-top: 10px 0px 0px 0px; +@radius-5: 5px; +@radii-smoothing: 10px; +@radii-mixed: 5.5px 10px 20px 15px; +@gradient-gradient-single-with-multiple-color-stops: radial-gradient(rgb(255, 184, 0) 0%, rgb(255, 138, 0) 34%, rgb(255, 46, 0) 65%, rgb(255, 0, 0) 100%); +@gradient-gradient-multiplegrad-0: linear-gradient(180deg, rgb(255, 184, 0) 0%, rgba(255, 184, 0, 0) 100%); +@gradient-gradient-multiplegrad-1: radial-gradient(rgb(255, 255, 255) 0%, rgba(255, 255, 255, 0) 100%); +@gradient-gradient-multiplegrad-2: undefined; +@gradient-gradient-multiplegrad-3: undefined; +@color-colors-semi-red: rgba(255, 95, 4, 0.5); +@color-colors-multiple-fills-0: rgb(64, 255, 186); +@color-colors-multiple-fills-1: rgba(0, 0, 0, 0.1); +@color-colors-single-blue: rgb(4, 74, 255); +@color-colors-ref-blue: rgb(4, 74, 255); +@color-colors-empty: rgba(0, 0, 0, 0); +@color-colors-special-characters: rgb(64, 223, 80); +@color-colors-special-characters-nderung: rgb(52, 86, 175); +@font-body-h3: condensed 700 20/32 Akzidenz-Grotesk Pro; +@font-body-h4-strike-through: italic 500 16/19.2 Roboto; +@font-body-italic: italic 400 12/14 Roboto; +@font-body-extra-bold-condensed-italic: condensed italic 800 12/14.4 Akzidenz-Grotesk Pro; +@font-body-medium-extended-italic: expanded italic 500 20/24 Akzidenz-Grotesk Pro; +@font-body-super: 900 22/26.4 Akzidenz-Grotesk Pro; +@effect-drop-shadow-single: 0px 4px 4px 0px rgba(0, 0, 0, 0.25); +@effect-inner-shadow-multiple-0: inset 0px 4px 4px 0px rgba(0, 0, 0, 0.25); +@effect-inner-shadow-multiple-1: inset 10px 100px 1px 0.5px rgb(0, 0, 0); +@effect-inner-shadow-multiple-2: inset -4px 2px 3px 11px rgba(0, 0, 0, 0.25); @typography-body-h3-font-size: 20px; @typography-body-h3-text-decoration: none; @typography-body-h3-font-family: Akzidenz-Grotesk Pro; diff --git a/build/scss/_variables.scss b/build/scss/_variables.scss index f1df70ccb..6f9b71952 100644 --- a/build/scss/_variables.scss +++ b/build/scss/_variables.scss @@ -1,6 +1,6 @@ // Do not edit directly -// Generated on Fri, 15 Jul 2022 19:49:49 GMT +// Generated on Mon, 08 May 2023 07:37:37 GMT $sizes-32: 32.72px; $sizes-40: 40px; @@ -18,57 +18,35 @@ $sizes-shape-in-component: 32px; $breakpoints-lg: 1280px; $breakpoints-sm: 768px; $breakpoints-md: 1024px; -$spacing-10: [object Object]; -$spacing-mixed: [object Object]; -$spacing-top: [object Object]; -$borders-single: [object Object]; -$borders-dashed-outside: [object Object]; -$borders-single-style: [object Object]; -$borders-unsupported-multiple-borders: [object Object]; -$radius-5: [object Object]; -$radii-smoothing: [object Object]; -$radii-mixed: [object Object]; -$motion-move-in: [object Object]; -$motion-dissolve: [object Object]; -$motion-smart: [object Object]; -$motion-push: [object Object]; -$motion-bouncy: [object Object]; -$motion-custom-spring: [object Object]; -$opacities-0-25: 0.25; -$opacity-full: 1; -$opacity-half: 0.5; -$gradient-gradient-single-with-multiple-color-stops: [object Object]; -$gradient-gradient-multiplegrad-0: [object Object]; -$gradient-gradient-multiplegrad-1: [object Object]; -$gradient-gradient-multiplegrad-2: [object Object]; -$gradient-gradient-multiplegrad-3: [object Object]; -$color-colors-semi-red: #ff5f04; -$color-colors-multiple-fills-0: #40ffba; -$color-colors-multiple-fills-1: #000000; -$color-colors-single-blue: #044aff; -$color-colors-ref-blue: #044aff; -$color-colors-empty: #000000; -$color-colors-special-characters: #40df50; -$color-colors-special-characters-nderung: #3456af; -$grid-multiple-0: [object Object]; -$grid-multiple-1: [object Object]; -$grid-multiple-2: [object Object]; -$grid-multiple-3: [object Object]; -$grid-multiple-4: [object Object]; -$grid-multiple-5: [object Object]; -$grid-multiple-6: [object Object]; -$grid-multiple-7: [object Object]; -$grid-single: [object Object]; -$font-body-h3: [object Object]; -$font-body-h4-strike-through: [object Object]; -$font-body-italic: [object Object]; -$font-body-extra-bold-condensed-italic: [object Object]; -$font-body-medium-extended-italic: [object Object]; -$font-body-super: [object Object]; -$effect-drop-shadow-single: [object Object]; -$effect-inner-shadow-multiple-0: [object Object]; -$effect-inner-shadow-multiple-1: [object Object]; -$effect-inner-shadow-multiple-2: [object Object]; +$spacing-10: 10px; +$spacing-mixed: 10px 20px 30px 20px; +$spacing-top: 10px 0px 0px 0px; +$radius-5: 5px; +$radii-smoothing: 10px; +$radii-mixed: 5.5px 10px 20px 15px; +$gradient-gradient-single-with-multiple-color-stops: radial-gradient(rgb(255, 184, 0) 0%, rgb(255, 138, 0) 34%, rgb(255, 46, 0) 65%, rgb(255, 0, 0) 100%); +$gradient-gradient-multiplegrad-0: linear-gradient(180deg, rgb(255, 184, 0) 0%, rgba(255, 184, 0, 0) 100%); +$gradient-gradient-multiplegrad-1: radial-gradient(rgb(255, 255, 255) 0%, rgba(255, 255, 255, 0) 100%); +$gradient-gradient-multiplegrad-2: undefined; +$gradient-gradient-multiplegrad-3: undefined; +$color-colors-semi-red: rgba(255, 95, 4, 0.5); +$color-colors-multiple-fills-0: rgb(64, 255, 186); +$color-colors-multiple-fills-1: rgba(0, 0, 0, 0.1); +$color-colors-single-blue: rgb(4, 74, 255); +$color-colors-ref-blue: rgb(4, 74, 255); +$color-colors-empty: rgba(0, 0, 0, 0); +$color-colors-special-characters: rgb(64, 223, 80); +$color-colors-special-characters-nderung: rgb(52, 86, 175); +$font-body-h3: condensed 700 20/32 Akzidenz-Grotesk Pro; +$font-body-h4-strike-through: italic 500 16/19.2 Roboto; +$font-body-italic: italic 400 12/14 Roboto; +$font-body-extra-bold-condensed-italic: condensed italic 800 12/14.4 Akzidenz-Grotesk Pro; +$font-body-medium-extended-italic: expanded italic 500 20/24 Akzidenz-Grotesk Pro; +$font-body-super: 900 22/26.4 Akzidenz-Grotesk Pro; +$effect-drop-shadow-single: 0px 4px 4px 0px rgba(0, 0, 0, 0.25); +$effect-inner-shadow-multiple-0: inset 0px 4px 4px 0px rgba(0, 0, 0, 0.25); +$effect-inner-shadow-multiple-1: inset 10px 100px 1px 0.5px rgb(0, 0, 0); +$effect-inner-shadow-multiple-2: inset -4px 2px 3px 11px rgba(0, 0, 0, 0.25); $typography-body-h3-font-size: 20px; $typography-body-h3-text-decoration: none; $typography-body-h3-font-family: Akzidenz-Grotesk Pro; diff --git a/config.json b/config.json deleted file mode 100644 index 63f06c5be..000000000 --- a/config.json +++ /dev/null @@ -1,110 +0,0 @@ -{ - "source": ["tokens/*.json"], - "platforms": { - "scss": { - "transformGroup": "custom/scss", - "buildPath": "build/scss/", - "files": [{ - "destination": "_variables.scss", - "format": "scss/variables" - }] - }, - "less": { - "transformGroup": "custom/less", - "buildPath": "build/less/", - "files": [{ - "destination": "_variables.less", - "format": "less/variables" - }] - }, - "css": { - "transformGroup": "custom/css", - "buildPath": "build/css/", - "files": [{ - "destination": "_variables.css", - "format": "css/variables", - "filter": "validToken", - "options" : { - "showFileHeader": false - } - }] - }, - "json-flat": { - "transformGroup": "js", - "buildPath": "build/json/", - "files": [ - { - "destination": "styles.json", - "format": "json/flat" - } - ] - }, - "ios": { - "transformGroup": "ios", - "buildPath": "build/ios/", - "files": [{ - "destination": "StyleDictionaryColor.h", - "format": "ios/colors.h", - "className": "StyleDictionaryColor", - "type": "StyleDictionaryColorName", - "filter": { - "type": "color" - } - },{ - "destination": "StyleDictionaryColor.m", - "format": "ios/colors.m", - "className": "StyleDictionaryColor", - "type": "StyleDictionaryColorName", - "filter": { - "type": "color" - } - },{ - "destination": "StyleDictionarySize.h", - "format": "ios/static.h", - "className": "StyleDictionarySize", - "type": "float", - "filter": { - "type": "number" - } - },{ - "destination": "StyleDictionarySize.m", - "format": "ios/static.m", - "className": "StyleDictionarySize", - "type": "float", - "filter": { - "type": "number" - } - }] - }, - "ios-swift": { - "transformGroup": "ios-swift", - "buildPath": "build/ios-swift/", - "files": [{ - "destination": "StyleDictionary.swift", - "format": "ios-swift/class.swift", - "className": "StyleDictionary", - "filter": {} - }] - }, - "ios-swift-separate-enums": { - "transformGroup": "ios-swift-separate", - "buildPath": "build/ios-swift/", - "files": [{ - "destination": "StyleDictionaryColor.swift", - "format": "ios-swift/enum.swift", - "className": "StyleDictionaryColor", - "filter": { - "type": "color" - } - },{ - "destination": "StyleDictionarySize.swift", - "format": "ios-swift/enum.swift", - "className": "StyleDictionarySize", - "type": "float", - "filter": { - "type": "number" - } - }] - } - } -} diff --git a/examples/web/build.js b/examples/web/build.js index ad049bc89..be60d80dd 100644 --- a/examples/web/build.js +++ b/examples/web/build.js @@ -31,14 +31,6 @@ StyleDictionary.registerTransformGroup({ ]) }) -StyleDictionary.registerTransformGroup({ - name: 'custom/less', - transforms: StyleDictionary.transformGroup['less'].concat([ - 'size/px', - 'size/percent' - ]) -}) - StyleDictionary.registerTransformGroup({ name: 'custom/scss', transforms: StyleDictionary.transformGroup['less'].concat([ diff --git a/examples/web/createPropertyFormatter.js b/examples/web/createPropertyFormatter.js new file mode 100644 index 000000000..31687131d --- /dev/null +++ b/examples/web/createPropertyFormatter.js @@ -0,0 +1,138 @@ +/* + * 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. + */ + +const defaultFormatting = { + prefix: '', + commentStyle: 'long', + indentation: '', + separator: ' =', + suffix: ';' +} + +/** + * Creates a function that can be used to format a property. This can be useful + * to use as the function on `dictionary.allTokens.map`. The formatting + * is configurable either by supplying a `format` option or a `formatting` object + * which uses: prefix, indentation, separator, suffix, and commentStyle. + * @memberof module:formatHelpers + * @example + * ```javascript + * StyleDictionary.registerFormat({ + * name: 'myCustomFormat', + * formatter: function({ dictionary, options }) { + * const { outputReferences } = options; + * const formatProperty = createPropertyFormatter({ + * outputReferences, + * dictionary, + * format: 'css' + * }); + * return dictionary.allTokens.map(formatProperty).join('\n'); + * } + * }); + * ``` + * @param {Object} options + * @param {Boolean} options.outputReferences - Whether or not to output references. You will want to pass this from the `options` object sent to the formatter function. + * @param {Dictionary} options.dictionary - The dictionary object sent to the formatter function + * @param {String} options.format - Available formats are: 'css', 'sass', 'less', and 'stylus'. If you want to customize the format and can't use one of those predefined formats, use the `formatting` option + * @param {Object} options.formatting - 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}` + * @returns {Function} + */ +function createPropertyFormatter({outputReferences, dictionary, format, formatting={}}) { + let {prefix, commentStyle, indentation, separator, suffix} = Object.assign({}, defaultFormatting, formatting); + + switch(format) { + case 'css': + prefix = '--'; + indentation = ' '; + separator = ':'; + break; + case 'sass': + prefix = '$'; + commentStyle = 'short'; + indentation = ''; + separator = ':'; + break; + case 'less': + prefix = '@'; + commentStyle = 'short'; + indentation = ''; + separator = ':'; + break; + case 'stylus': + prefix = '$'; + commentStyle = 'short'; + indentation = ''; + separator = '='; + break; + } + + return function(prop) { + let to_ret_prop = `${indentation}${prefix}${prop.name}${separator} `.replace('--dark-', '--').replace('--light-', '--'); + let value = prop.value; + + /** + * A single value can have multiple references either by interpolation: + * "value": "{size.border.width.value} solid {color.border.primary.value}" + * or if the value is an object: + * "value": { + * "size": "{size.border.width.value}", + * "style": "solid", + * "color": "{color.border.primary.value"} + * } + * This will see if there are references and if there are, replace + * the resolved value with the reference's name. + */ + if (outputReferences && dictionary.usesReference(prop.original.value)) { + // Formats that use this function expect `value` to be a string + // or else you will get '[object Object]' in the output + if (typeof value === 'string') { + const refs = dictionary.getReferences(prop.original.value); + refs.forEach(ref => { + // value should be a string that contains the resolved reference + // because Style Dictionary resolved this in the resolution step. + // Here we are undoing that by replacing the value with + // the reference's name + if (ref.value && ref.name) { + value = value.replace(ref.value, function() { + if (format === 'css') { + return `var(${prefix}${ref.name})` + } else { + return `${prefix}${ref.name}`; + } + }); + } + }); + } + } + + to_ret_prop += prop.attributes.category === 'asset' ? `"${value}"` : value; + + if (format == 'sass' && prop.themeable === true) { + to_ret_prop += ' !default'; + } + + to_ret_prop += suffix; + + if (prop.comment && commentStyle !== 'none') { + if (commentStyle === 'short') { + to_ret_prop = to_ret_prop.concat(` // ${prop.comment}`); + } else { + to_ret_prop = to_ret_prop.concat(` /* ${prop.comment} */`); + } + } + + return to_ret_prop; + } +} + +module.exports = createPropertyFormatter; diff --git a/examples/web/fileHeader.js b/examples/web/fileHeader.js new file mode 100644 index 000000000..153922ace --- /dev/null +++ b/examples/web/fileHeader.js @@ -0,0 +1,86 @@ +/* + * 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. + */ + +// no-op default +const defaultFileHeader = (arr) => arr + +const lineSeparator = '\n' +const defaultFormatting = { + lineSeparator, + prefix: ' * ', + header: `/**${lineSeparator}`, + footer: `${lineSeparator} */${lineSeparator}${lineSeparator}` +} + +/** + * + * This is for creating the comment at the top of generated files with the generated at date. + * It will use the custom file header if defined on the configuration, or use the + * default file header. + * @memberof module:formatHelpers + * @param {Object} options + * @param {File} options.file - The file object that is passed to the formatter. + * @param {String} options.commentStyle - The only options are 'short' and 'xml', which will use the // or \ style comments respectively. Anything else will use \/\* style comments. + * @param {Object} options.formatting - Custom formatting properties that define parts of a comment in code. The configurable strings are: prefix, lineSeparator, header, and footer. + * @returns {String} + * @example + * ```js + * StyleDictionary.registerFormat({ + * name: 'myCustomFormat', + * formatter: function({ dictionary, file }) { + * return fileHeader({file, 'short') + + * dictionary.allTokens.map(token => `${token.name} = ${token.value}`) + * .join('\n'); + * } + * }); + * ``` + */ +function fileHeader ({ file = {}, commentStyle, formatting = {} }) { + // showFileHeader is true by default + let showFileHeader = true + if (file.options && typeof file.options.showFileHeader !== 'undefined') { + showFileHeader = file.options.showFileHeader + } + + // Return empty string if the showFileHeader is false + if (!showFileHeader) return '' + + let fn = defaultFileHeader + if (file.options && typeof file.options.fileHeader === 'function') { + fn = file.options.fileHeader + } + + // default header + const defaultHeader = [ + 'Do not edit directly', + `Generated on ${new Date().toString()}` + ] + + let { prefix, lineSeparator, header, footer } = Object.assign({}, defaultFormatting, formatting) + + if (commentStyle === 'short') { + prefix = '// ' + header = `${lineSeparator}` + footer = `${lineSeparator}${lineSeparator}` + } else if (commentStyle === 'xml') { + prefix = ' ' + header = `` + } + + return `${header}${fn(defaultHeader) + .map(line => `${prefix}${line}`) + .join(lineSeparator)}${footer}` +} + +module.exports = fileHeader diff --git a/examples/web/filterWeb.js b/examples/web/filterWeb.js new file mode 100644 index 000000000..6246ae733 --- /dev/null +++ b/examples/web/filterWeb.js @@ -0,0 +1,3 @@ +const acceptedTypes = ['color', 'dimension', 'font', 'custom-radius', 'custom-fontStyle', 'custom-shadow', 'custom-gradient'] + +module.exports = (token) => acceptedTypes.includes(token.type) diff --git a/examples/web/formatCss.js b/examples/web/formatCss.js new file mode 100644 index 000000000..87fec87c8 --- /dev/null +++ b/examples/web/formatCss.js @@ -0,0 +1,45 @@ +const formattedVariables = require('./formattedVariables') +const fileHeader = require('./fileHeader') + +const filteredTokens = (dictionary, filterFn) => { + const filtered = dictionary.allTokens.filter(token => filterFn(token)) + return { + ...dictionary, + ...{ + allProperties: filtered, + allTokens: filtered + } + } +} + +module.exports = ({ dictionary, options, file }) => { + const opts = options ?? {} + const { outputReferences } = opts + const groupedTokens = { + // if you export the prefixes use token.path[0] instead of [1] + light: filteredTokens(dictionary, (token) => token.path[1].toLowerCase() === 'light'), + dark: filteredTokens(dictionary, (token) => token.path[1].toLowerCase() === 'dark'), + rest: filteredTokens(dictionary, (token) => !['light', 'dark'].includes(token.path[1].toLowerCase())) + } + + return ( + fileHeader({ file }) + + ':root {\n' + + formattedVariables({ format: 'css', dictionary: groupedTokens.rest, outputReferences }) + + '\n}\n\n' + + '@media (prefers-color-scheme: light) {\n' + + ' :root {\n' + + formattedVariables({ format: 'css', dictionary: groupedTokens.light, outputReferences }) + + '\n }\n}\n\n' + + '@media (prefers-color-scheme: dark) {\n' + + ' :root {\n' + + formattedVariables({ format: 'css', dictionary: groupedTokens.dark, outputReferences }) + + '\n }\n}\n\n' + + 'html[data-theme="light"] {\n' + + formattedVariables({ format: 'css', dictionary: groupedTokens.light, outputReferences }) + + '\n}\n\n' + + 'html[data-theme="dark"] {\n' + + formattedVariables({ format: 'css', dictionary: groupedTokens.dark, outputReferences }) + + '\n}\n' + ) +} diff --git a/examples/web/formattedVariables.js b/examples/web/formattedVariables.js new file mode 100644 index 000000000..b73b817b3 --- /dev/null +++ b/examples/web/formattedVariables.js @@ -0,0 +1,64 @@ +/* + * 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. + */ + +const createPropertyFormatter = require('./createPropertyFormatter') +const sortByReference = require('./sortByReference') + +const defaultFormatting = { + lineSeparator: '\n' +} + +/** + * + * This is used to create lists of variables like Sass variables or CSS custom properties + * @memberof module:formatHelpers + * @param {Object} options + * @param {String} options.format - What type of variables to output. Options are: css, sass, less, and stylus + * @param {Object} options.dictionary - The dictionary object that gets passed to the formatter method. + * @param {Boolean} options.outputReferences - Whether or not to output references + * @param {Object} options.formatting - Custom formatting properties that define parts of a declaration line in code. This will get passed to `formatHelpers.createPropertyFormatter` and used for the `lineSeparator` between lines of code. + * @returns {String} + * @example + * ```js + * StyleDictionary.registerFormat({ + * name: 'myCustomFormat', + * formatter: function({ dictionary, options }) { + * return formattedVariables('less', dictionary, options.outputReferences); + * } + * }); + * ``` + */ +function formattedVariables ({ format, dictionary, outputReferences = false, formatting = {} }) { + let { allTokens } = dictionary + + const { lineSeparator } = Object.assign({}, defaultFormatting, formatting) + + // Some languages are imperative, meaning a variable has to be defined + // before it is used. If `outputReferences` is true, check if the token + // has a reference, and if it does send it to the end of the array. + // We also need to account for nested references, a -> b -> c. They + // need to be defined in reverse order: c, b, a so that the reference always + // comes after the definition + if (outputReferences) { + // note: using the spread operator here so we get a new array rather than + // mutating the original + allTokens = [...allTokens].sort(sortByReference(dictionary)) + } + + return allTokens + .map(createPropertyFormatter({ outputReferences, dictionary, format, formatting })) + .filter(function (strVal) { return !!strVal }) + .join(lineSeparator) +} + +module.exports = formattedVariables diff --git a/examples/web/index.js b/examples/web/index.js new file mode 100644 index 000000000..0641a5241 --- /dev/null +++ b/examples/web/index.js @@ -0,0 +1,28 @@ +const StyleDictionary = require('style-dictionary') + +module.exports = { + transform: { + 'size/px': require('./sizePx'), + 'web/shadow': require('./webShadows'), + 'web/radius': require('./webRadius'), + 'web/padding': require('./webPadding'), + 'web/font': require('./webFont'), + 'web/gradient': require('./webGradient'), + 'color/hex8ToRgba': require('../common/colorToRgbaString') + }, + transformGroup: { + 'custom/css': StyleDictionary.transformGroup.css.concat([ + 'size/px', + 'web/shadow', + 'web/radius', + 'web/padding', + 'web/font', + 'web/gradient', + 'color/hex8ToRgba' + ]) + }, + format: { + 'custom/css': require('./formatCss') + }, + action: {} +} diff --git a/examples/web/sizePx.js b/examples/web/sizePx.js new file mode 100644 index 000000000..b19899f0b --- /dev/null +++ b/examples/web/sizePx.js @@ -0,0 +1,9 @@ +module.exports = { + type: 'value', + matcher: function (token) { + return token.type === 'dimension' && token.value !== 0 + }, + transformer: function (token) { + return `${token.value}px` + } +} diff --git a/examples/web/sortByReference.js b/examples/web/sortByReference.js new file mode 100644 index 000000000..16eeb80a2 --- /dev/null +++ b/examples/web/sortByReference.js @@ -0,0 +1,71 @@ +/* + * 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. + */ + +/** + * A function that returns a sorting function to be used with Array.sort that + * will sort the allTokens array based on references. This is to make sure + * if you use output references that you never use a reference before it is + * defined. + * @memberof module:formatHelpers + * @example + * ```javascript + * dictionary.allTokens.sort(sortByReference(dictionary)) + * ``` + * @param {Dictionary} dictionary + * @returns {Function} + */ + function sortByReference(dictionary) { + // The sorter function is recursive to account for multiple levels of nesting + function sorter(a, b) { + const aComesFirst = -1; + const bComesFirst = 1; + + // If token a uses a reference and token b doesn't, b might come before a + // read on.. + if (a.original && dictionary.usesReference(a.original.value)) { + // Both a and b have references, we need to see if the reference each other + if (b.original && dictionary.usesReference(b.original.value)) { + const aRefs = dictionary.getReferences(a.original.value); + const bRefs = dictionary.getReferences(b.original.value); + + aRefs.forEach(aRef => { + // a references b, we want b to come first + if (aRef.name === b.name) { + return bComesFirst; + } + }); + + bRefs.forEach(bRef => { + // ditto but opposite + if (bRef.name === a.name) { + return aComesFirst; + } + }); + + // both a and b have references and don't reference each other + // we go further down the rabbit hole (reference chain) + return sorter(aRefs[0], bRefs[0]); + // a has a reference and b does not: + } else { + return bComesFirst; + } + // a does not have a reference it should come first regardless if b has one + } else { + return aComesFirst; + } + } + + return sorter; +} + +module.exports = sortByReference; \ No newline at end of file diff --git a/examples/web/webFont.js b/examples/web/webFont.js new file mode 100644 index 000000000..808a9e9a1 --- /dev/null +++ b/examples/web/webFont.js @@ -0,0 +1,14 @@ +const notDefault = (value, defaultValue) => (value !== defaultValue) ? value : '' + +const fontFamily = ({ fontFamily }, { fontFamilies } = {}) => fontFamilies && fontFamilies[fontFamily] ? fontFamilies[fontFamily] : fontFamily + +module.exports = { + type: 'value', + matcher: function (token) { + return token.type === 'custom-fontStyle' + }, + transformer: function ({ value: font }, { options }) { + // font: font-style font-variant font-weight font-size/line-height font-family; + return `${notDefault(font.fontStretch, 'normal')} ${notDefault(font.fontStyle, 'normal')} ${font.fontWeight} ${font.fontSize}/${font.lineHeight} ${fontFamily(font, options)}`.trim() + } +} diff --git a/examples/web/webGradient.js b/examples/web/webGradient.js new file mode 100644 index 000000000..8c4ee2f19 --- /dev/null +++ b/examples/web/webGradient.js @@ -0,0 +1,19 @@ +const TinyColor = require('@ctrl/tinycolor') + +module.exports = { + type: 'value', + matcher: function (token) { + return token.type === 'custom-gradient' + }, + transformer: function ({ value }) { + const stopsString = value.stops.map(stop => { + return `${new TinyColor.TinyColor(stop.color).toRgbString()} ${stop.position * 100}%` + }).join(', ') + if (value.gradientType === 'linear') { + return `linear-gradient(${value.rotation}deg, ${stopsString})` + } + if (value.gradientType === 'radial') { + return `radial-gradient(${stopsString})` + } + } +} diff --git a/examples/web/webPadding.js b/examples/web/webPadding.js new file mode 100644 index 000000000..0aff7bf24 --- /dev/null +++ b/examples/web/webPadding.js @@ -0,0 +1,12 @@ +module.exports = { + type: 'value', + matcher: function (token) { + return token.type === 'custom-spacing' + }, + transformer: ({ value: { top, left, bottom, right } }) => { + if ([bottom, left, right].every(v => v === top)) { + return `${top}px` + } + return `${top}px ${right}px ${bottom}px ${left}px` + } +} diff --git a/examples/web/webRadius.js b/examples/web/webRadius.js new file mode 100644 index 000000000..730be6d3b --- /dev/null +++ b/examples/web/webRadius.js @@ -0,0 +1,12 @@ +module.exports = { + type: 'value', + matcher: function (token) { + return token.type === 'custom-radius' + }, + transformer: function ({ value }) { + if ([value.topRight, value.bottomLeft, value.bottomRight].every(v => v === value.topLeft)) { + return `${value.topLeft}px` + } + return `${value.topLeft}px ${value.topRight}px ${value.bottomLeft}px ${value.bottomRight}px` + } +} diff --git a/examples/web/webShadows.js b/examples/web/webShadows.js new file mode 100644 index 000000000..997cddd5c --- /dev/null +++ b/examples/web/webShadows.js @@ -0,0 +1,11 @@ +const TinyColor = require('@ctrl/tinycolor') + +module.exports = { + type: 'value', + matcher: function (token) { + return token.type === 'custom-shadow' && token.value !== 0 + }, + transformer: function ({ value }) { + return `${value.shadowType === 'innerShadow' ? 'inset ' : ''}${value.offsetX}px ${value.offsetY}px ${value.radius}px ${value.spread}px ${new TinyColor.TinyColor(value.color).toRgbString()}` + } +} diff --git a/package-lock.json b/package-lock.json index 822d81c97..850e22909 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,30 +1,51 @@ { "name": "design-token-transformer", "version": "0.6.0", - "lockfileVersion": 1, + "lockfileVersion": 3, "requires": true, - "dependencies": { - "@babel/code-frame": { + "packages": { + "": { + "name": "design-token-transformer", + "version": "0.6.0", + "license": "MIT", + "dependencies": { + "@ctrl/tinycolor": "^3.4.0", + "style-dictionary": "^3" + }, + "devDependencies": { + "@types/jest": "^27.0.3", + "deepmerge": "^4.3.1", + "jest": "^27.0.6", + "ts-jest": "^27.0.3" + } + }, + "node_modules/@babel/code-frame": { "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.0.tgz", "integrity": "sha512-IF4EOMEV+bfYwOmNxGzSnjR2EmQod7f1UXOpZM3l4i4o4QNwzjtJAu/HxdjHq0aYBvdqMuQEY1eg0nqW9ZPORA==", "dev": true, - "requires": { + "dependencies": { "@babel/highlight": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/compat-data": { + "node_modules/@babel/compat-data": { "version": "7.16.4", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.16.4.tgz", "integrity": "sha512-1o/jo7D+kC9ZjHX5v+EHrdjl3PhxMrLSOTGsOdHJ+KL8HCaEK6ehrVL2RS6oHDZp+L7xLirLrPmQtEng769J/Q==", - "dev": true + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, - "@babel/core": { + "node_modules/@babel/core": { "version": "7.16.5", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.16.5.tgz", "integrity": "sha512-wUcenlLzuWMZ9Zt8S0KmFwGlH6QKRh3vsm/dhDA3CHkiTA45YuG1XkHRcNRl73EFPXDp/d5kVOU0/y7x2w6OaQ==", "dev": true, - "requires": { + "dependencies": { "@babel/code-frame": "^7.16.0", "@babel/generator": "^7.16.5", "@babel/helper-compilation-targets": "^7.16.3", @@ -41,99 +62,132 @@ "semver": "^6.3.0", "source-map": "^0.5.0" }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, - "@babel/generator": { + "node_modules/@babel/generator": { "version": "7.16.5", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.16.5.tgz", "integrity": "sha512-kIvCdjZqcdKqoDbVVdt5R99icaRtrtYhYK/xux5qiWCBmfdvEYMFZ68QCrpE5cbFM1JsuArUNs1ZkuKtTtUcZA==", "dev": true, - "requires": { + "dependencies": { "@babel/types": "^7.16.0", "jsesc": "^2.5.1", "source-map": "^0.5.0" }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" } }, - "@babel/helper-compilation-targets": { + "node_modules/@babel/helper-compilation-targets": { "version": "7.16.3", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.16.3.tgz", "integrity": "sha512-vKsoSQAyBmxS35JUOOt+07cLc6Nk/2ljLIHwmq2/NM6hdioUaqEXq/S+nXvbvXbZkNDlWOymPanJGOc4CBjSJA==", "dev": true, - "requires": { + "dependencies": { "@babel/compat-data": "^7.16.0", "@babel/helper-validator-option": "^7.14.5", "browserslist": "^4.17.5", "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "@babel/helper-environment-visitor": { + "node_modules/@babel/helper-environment-visitor": { "version": "7.16.5", "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.5.tgz", "integrity": "sha512-ODQyc5AnxmZWm/R2W7fzhamOk1ey8gSguo5SGvF0zcB3uUzRpTRmM/jmLSm9bDMyPlvbyJ+PwPEK0BWIoZ9wjg==", "dev": true, - "requires": { + "dependencies": { "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-function-name": { + "node_modules/@babel/helper-function-name": { "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.0.tgz", "integrity": "sha512-BZh4mEk1xi2h4HFjWUXRQX5AEx4rvaZxHgax9gcjdLWdkjsY7MKt5p0otjsg5noXw+pB+clMCjw+aEVYADMjog==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-get-function-arity": "^7.16.0", "@babel/template": "^7.16.0", "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-get-function-arity": { + "node_modules/@babel/helper-get-function-arity": { "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.0.tgz", "integrity": "sha512-ASCquNcywC1NkYh/z7Cgp3w31YW8aojjYIlNg4VeJiHkqyP4AzIvr4qx7pYDb4/s8YcsZWqqOSxgkvjUz1kpDQ==", "dev": true, - "requires": { + "dependencies": { "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-hoist-variables": { + "node_modules/@babel/helper-hoist-variables": { "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.0.tgz", "integrity": "sha512-1AZlpazjUR0EQZQv3sgRNfM9mEVWPK3M6vlalczA+EECcPz3XPh6VplbErL5UoMpChhSck5wAJHthlj1bYpcmg==", "dev": true, - "requires": { + "dependencies": { "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-module-imports": { + "node_modules/@babel/helper-module-imports": { "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.0.tgz", "integrity": "sha512-kkH7sWzKPq0xt3H1n+ghb4xEMP8k0U7XV3kkB+ZGy69kDk2ySFW1qPi06sjKzFY3t1j6XbJSqr4mF9L7CYVyhg==", "dev": true, - "requires": { + "dependencies": { "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-module-transforms": { + "node_modules/@babel/helper-module-transforms": { "version": "7.16.5", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.16.5.tgz", "integrity": "sha512-CkvMxgV4ZyyioElFwcuWnDCcNIeyqTkCm9BxXZi73RR1ozqlpboqsbGUNvRTflgZtFbbJ1v5Emvm+lkjMYY/LQ==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-environment-visitor": "^7.16.5", "@babel/helper-module-imports": "^7.16.0", "@babel/helper-simple-access": "^7.16.0", @@ -142,264 +196,355 @@ "@babel/template": "^7.16.0", "@babel/traverse": "^7.16.5", "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-plugin-utils": { + "node_modules/@babel/helper-plugin-utils": { "version": "7.16.5", "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.5.tgz", "integrity": "sha512-59KHWHXxVA9K4HNF4sbHCf+eJeFe0Te/ZFGqBT4OjXhrwvA04sGfaEGsVTdsjoszq0YTP49RC9UKe5g8uN2RwQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, - "@babel/helper-simple-access": { + "node_modules/@babel/helper-simple-access": { "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.16.0.tgz", "integrity": "sha512-o1rjBT/gppAqKsYfUdfHq5Rk03lMQrkPHG1OWzHWpLgVXRH4HnMM9Et9CVdIqwkCQlobnGHEJMsgWP/jE1zUiw==", "dev": true, - "requires": { + "dependencies": { "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-split-export-declaration": { + "node_modules/@babel/helper-split-export-declaration": { "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.0.tgz", "integrity": "sha512-0YMMRpuDFNGTHNRiiqJX19GjNXA4H0E8jZ2ibccfSxaCogbm3am5WN/2nQNj0YnQwGWM1J06GOcQ2qnh3+0paw==", "dev": true, - "requires": { + "dependencies": { "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/helper-validator-identifier": { + "node_modules/@babel/helper-validator-identifier": { "version": "7.15.7", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.15.7.tgz", "integrity": "sha512-K4JvCtQqad9OY2+yTU8w+E82ywk/fe+ELNlt1G8z3bVGlZfn/hOcQQsUhGhW/N+tb3fxK800wLtKOE/aM0m72w==", - "dev": true + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, - "@babel/helper-validator-option": { + "node_modules/@babel/helper-validator-option": { "version": "7.14.5", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz", "integrity": "sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow==", - "dev": true + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, - "@babel/helpers": { + "node_modules/@babel/helpers": { "version": "7.16.5", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.16.5.tgz", "integrity": "sha512-TLgi6Lh71vvMZGEkFuIxzaPsyeYCHQ5jJOOX1f0xXn0uciFuE8cEk0wyBquMcCxBXZ5BJhE2aUB7pnWTD150Tw==", "dev": true, - "requires": { + "dependencies": { "@babel/template": "^7.16.0", "@babel/traverse": "^7.16.5", "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/highlight": { + "node_modules/@babel/highlight": { "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.0.tgz", "integrity": "sha512-t8MH41kUQylBtu2+4IQA3atqevA2lRgqA2wyVB/YiWmsDSuylZZuXOUy9ric30hfzauEFfdsuk/eXTRrGrfd0g==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-validator-identifier": "^7.15.7", "chalk": "^2.0.0", "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": { - "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, - "requires": { - "color-convert": "^1.9.0" - } - }, - "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, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "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, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "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 - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "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, - "requires": { - "has-flag": "^3.0.0" - } - } + "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": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/@babel/highlight/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/@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=", + "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" } }, - "@babel/parser": { + "node_modules/@babel/parser": { "version": "7.16.6", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.16.6.tgz", "integrity": "sha512-Gr86ujcNuPDnNOY8mi383Hvi8IYrJVJYuf3XcuBM/Dgd+bINn/7tHqsj+tKkoreMbmGsFLsltI/JJd8fOFWGDQ==", - "dev": true + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } }, - "@babel/plugin-syntax-async-generators": { + "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, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-bigint": { + "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==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-class-properties": { + "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, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-import-meta": { + "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, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-json-strings": { + "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, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-logical-assignment-operators": { + "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, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-nullish-coalescing-operator": { + "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, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-numeric-separator": { + "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, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-object-rest-spread": { + "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, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-optional-catch-binding": { + "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, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-optional-chaining": { + "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, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-top-level-await": { + "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, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/plugin-syntax-typescript": { + "node_modules/@babel/plugin-syntax-typescript": { "version": "7.16.5", "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.16.5.tgz", "integrity": "sha512-/d4//lZ1Vqb4mZ5xTep3dDK888j7BGM/iKqBmndBaoYAFPlPKrGU608VVBz5JeyAb6YQDjRu1UKqj86UhwWVgw==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-plugin-utils": "^7.16.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" } }, - "@babel/template": { + "node_modules/@babel/template": { "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.0.tgz", "integrity": "sha512-MnZdpFD/ZdYhXwiunMqqgyZyucaYsbL0IrjoGjaVhGilz+x8YB++kRfygSOIj1yOtWKPlx7NBp+9I1RQSgsd5A==", "dev": true, - "requires": { + "dependencies": { "@babel/code-frame": "^7.16.0", "@babel/parser": "^7.16.0", "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/traverse": { + "node_modules/@babel/traverse": { "version": "7.16.5", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.16.5.tgz", "integrity": "sha512-FOCODAzqUMROikDYLYxl4nmwiLlu85rNqBML/A5hKRVXG2LV8d0iMqgPzdYTcIpjZEBB7D6UDU9vxRZiriASdQ==", "dev": true, - "requires": { + "dependencies": { "@babel/code-frame": "^7.16.0", "@babel/generator": "^7.16.5", "@babel/helper-environment-visitor": "^7.16.5", @@ -410,68 +555,86 @@ "@babel/types": "^7.16.0", "debug": "^4.1.0", "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "@babel/types": { + "node_modules/@babel/types": { "version": "7.16.0", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.16.0.tgz", "integrity": "sha512-PJgg/k3SdLsGb3hhisFvtLOw5ts113klrpLuIPtCJIU+BB24fqq6lf8RWqKJEjzqXR9AEH1rIb5XTqwBHB+kQg==", "dev": true, - "requires": { + "dependencies": { "@babel/helper-validator-identifier": "^7.15.7", "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" } }, - "@bcoe/v8-coverage": { + "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 }, - "@ctrl/tinycolor": { + "node_modules/@ctrl/tinycolor": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.4.0.tgz", - "integrity": "sha512-JZButFdZ1+/xAfpguQHoabIXkcqRRKpMrWKBkpEZZyxfY9C1DpADFB8PEqGSTeFr135SaTRfKqGKx5xSCLI7ZQ==" + "integrity": "sha512-JZButFdZ1+/xAfpguQHoabIXkcqRRKpMrWKBkpEZZyxfY9C1DpADFB8PEqGSTeFr135SaTRfKqGKx5xSCLI7ZQ==", + "engines": { + "node": ">=10" + } }, - "@istanbuljs/load-nyc-config": { + "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==", "dev": true, - "requires": { + "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" + }, + "engines": { + "node": ">=8" } }, - "@istanbuljs/schema": { + "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==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "@jest/console": { + "node_modules/@jest/console": { "version": "27.4.2", "resolved": "https://registry.npmjs.org/@jest/console/-/console-27.4.2.tgz", "integrity": "sha512-xknHThRsPB/To1FUbi6pCe43y58qFC03zfb6R7fDb/FfC7k2R3i1l+izRBJf8DI46KhYGRaF14Eo9A3qbBoixg==", "dev": true, - "requires": { + "dependencies": { "@jest/types": "^27.4.2", "@types/node": "*", "chalk": "^4.0.0", "jest-message-util": "^27.4.2", "jest-util": "^27.4.2", "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "@jest/core": { + "node_modules/@jest/core": { "version": "27.4.5", "resolved": "https://registry.npmjs.org/@jest/core/-/core-27.4.5.tgz", "integrity": "sha512-3tm/Pevmi8bDsgvo73nX8p/WPng6KWlCyScW10FPEoN1HU4pwI83tJ3TsFvi1FfzsjwUlMNEPowgb/rPau/LTQ==", "dev": true, - "requires": { + "dependencies": { "@jest/console": "^27.4.2", "@jest/reporters": "^27.4.5", "@jest/test-result": "^27.4.2", @@ -500,51 +663,71 @@ "rimraf": "^3.0.0", "slash": "^3.0.0", "strip-ansi": "^6.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" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "@jest/environment": { + "node_modules/@jest/environment": { "version": "27.4.4", "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-27.4.4.tgz", "integrity": "sha512-q+niMx7cJgt/t/b6dzLOh4W8Ef/8VyKG7hxASK39jakijJzbFBGpptx3RXz13FFV7OishQ9lTbv+dQ5K3EhfDQ==", "dev": true, - "requires": { + "dependencies": { "@jest/fake-timers": "^27.4.2", "@jest/types": "^27.4.2", "@types/node": "*", "jest-mock": "^27.4.2" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "@jest/fake-timers": { + "node_modules/@jest/fake-timers": { "version": "27.4.2", "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-27.4.2.tgz", "integrity": "sha512-f/Xpzn5YQk5adtqBgvw1V6bF8Nx3hY0OIRRpCvWcfPl0EAjdqWPdhH3t/3XpiWZqtjIEHDyMKP9ajpva1l4Zmg==", "dev": true, - "requires": { + "dependencies": { "@jest/types": "^27.4.2", "@sinonjs/fake-timers": "^8.0.1", "@types/node": "*", "jest-message-util": "^27.4.2", "jest-mock": "^27.4.2", "jest-util": "^27.4.2" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "@jest/globals": { + "node_modules/@jest/globals": { "version": "27.4.4", "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-27.4.4.tgz", "integrity": "sha512-bqpqQhW30BOreXM8bA8t8JbOQzsq/WnPTnBl+It3UxAD9J8yxEAaBEylHx1dtBapAr/UBk8GidXbzmqnee8tYQ==", "dev": true, - "requires": { + "dependencies": { "@jest/environment": "^27.4.4", "@jest/types": "^27.4.2", "expect": "^27.4.2" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "@jest/reporters": { + "node_modules/@jest/reporters": { "version": "27.4.5", "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-27.4.5.tgz", "integrity": "sha512-3orsG4vi8zXuBqEoy2LbnC1kuvkg1KQUgqNxmxpQgIOQEPeV0onvZu+qDQnEoX8qTQErtqn/xzcnbpeTuOLSiA==", "dev": true, - "requires": { + "dependencies": { "@bcoe/v8-coverage": "^0.2.3", "@jest/console": "^27.4.2", "@jest/test-result": "^27.4.2", @@ -570,49 +753,69 @@ "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" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } } }, - "@jest/source-map": { + "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==", "dev": true, - "requires": { + "dependencies": { "callsites": "^3.0.0", "graceful-fs": "^4.2.4", "source-map": "^0.6.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "@jest/test-result": { + "node_modules/@jest/test-result": { "version": "27.4.2", "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-27.4.2.tgz", "integrity": "sha512-kr+bCrra9jfTgxHXHa2UwoQjxvQk3Am6QbpAiJ5x/50LW8llOYrxILkqY0lZRW/hu8FXesnudbql263+EW9iNA==", "dev": true, - "requires": { + "dependencies": { "@jest/console": "^27.4.2", "@jest/types": "^27.4.2", "@types/istanbul-lib-coverage": "^2.0.0", "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "@jest/test-sequencer": { + "node_modules/@jest/test-sequencer": { "version": "27.4.5", "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-27.4.5.tgz", "integrity": "sha512-n5woIn/1v+FT+9hniymHPARA9upYUmfi5Pw9ewVwXCDlK4F5/Gkees9v8vdjGdAIJ2MPHLHodiajLpZZanWzEQ==", "dev": true, - "requires": { + "dependencies": { "@jest/test-result": "^27.4.2", "graceful-fs": "^4.2.4", "jest-haste-map": "^27.4.5", "jest-runtime": "^27.4.5" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "@jest/transform": { + "node_modules/@jest/transform": { "version": "27.4.5", "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-27.4.5.tgz", "integrity": "sha512-PuMet2UlZtlGzwc6L+aZmR3I7CEBpqadO03pU40l2RNY2fFJ191b9/ITB44LNOhVtsyykx0OZvj0PCyuLm7Eew==", "dev": true, - "requires": { + "dependencies": { "@babel/core": "^7.1.0", "@jest/types": "^27.4.2", "babel-plugin-istanbul": "^6.0.0", @@ -628,51 +831,60 @@ "slash": "^3.0.0", "source-map": "^0.6.1", "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "@jest/types": { + "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==", "dev": true, - "requires": { + "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" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "@sinonjs/commons": { + "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==", "dev": true, - "requires": { + "dependencies": { "type-detect": "4.0.8" } }, - "@sinonjs/fake-timers": { + "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==", "dev": true, - "requires": { + "dependencies": { "@sinonjs/commons": "^1.7.0" } }, - "@tootallnate/once": { + "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==", - "dev": true + "dev": true, + "engines": { + "node": ">= 6" + } }, - "@types/babel__core": { + "node_modules/@types/babel__core": { "version": "7.1.17", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.17.tgz", "integrity": "sha512-6zzkezS9QEIL8yCBvXWxPTJPNuMeECJVxSOhxNY/jfq9LxOTHivaYTqr37n9LknWWRTIkzqH2UilS5QFvfa90A==", "dev": true, - "requires": { + "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0", "@types/babel__generator": "*", @@ -680,209 +892,243 @@ "@types/babel__traverse": "*" } }, - "@types/babel__generator": { + "node_modules/@types/babel__generator": { "version": "7.6.3", "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.3.tgz", "integrity": "sha512-/GWCmzJWqV7diQW54smJZzWbSFf4QYtF71WCKhcx6Ru/tFyQIY2eiiITcCAeuPbNSvT9YCGkVMqqvSk2Z0mXiA==", "dev": true, - "requires": { + "dependencies": { "@babel/types": "^7.0.0" } }, - "@types/babel__template": { + "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==", "dev": true, - "requires": { + "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" } }, - "@types/babel__traverse": { + "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, - "requires": { + "dependencies": { "@babel/types": "^7.3.0" } }, - "@types/graceful-fs": { + "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==", "dev": true, - "requires": { + "dependencies": { "@types/node": "*" } }, - "@types/istanbul-lib-coverage": { + "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", "dev": true }, - "@types/istanbul-lib-report": { + "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, - "requires": { + "dependencies": { "@types/istanbul-lib-coverage": "*" } }, - "@types/istanbul-reports": { + "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, - "requires": { + "dependencies": { "@types/istanbul-lib-report": "*" } }, - "@types/jest": { + "node_modules/@types/jest": { "version": "27.0.3", "resolved": "https://registry.npmjs.org/@types/jest/-/jest-27.0.3.tgz", "integrity": "sha512-cmmwv9t7gBYt7hNKH5Spu7Kuu/DotGa+Ff+JGRKZ4db5eh8PnKS4LuebJ3YLUoyOyIHraTGyULn23YtEAm0VSg==", "dev": true, - "requires": { + "dependencies": { "jest-diff": "^27.0.0", "pretty-format": "^27.0.0" } }, - "@types/node": { + "node_modules/@types/node": { "version": "17.0.0", "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.0.tgz", "integrity": "sha512-eMhwJXc931Ihh4tkU+Y7GiLzT/y/DBNpNtr4yU9O2w3SYBsr9NaOPhQlLKRmoWtI54uNwuo0IOUFQjVOTZYRvw==", "dev": true }, - "@types/prettier": { + "node_modules/@types/prettier": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.4.2.tgz", "integrity": "sha512-ekoj4qOQYp7CvjX8ZDBgN86w3MqQhLE1hczEJbEIjgFEumDy+na/4AJAbLXfgEWFNB2pKadM5rPFtuSGMWK7xA==", "dev": true }, - "@types/stack-utils": { + "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 }, - "@types/yargs": { + "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, - "requires": { + "dependencies": { "@types/yargs-parser": "*" } }, - "@types/yargs-parser": { + "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 }, - "abab": { + "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 }, - "acorn": { + "node_modules/acorn": { "version": "8.6.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.6.0.tgz", "integrity": "sha512-U1riIR+lBSNi3IbxtaHOIKdH8sLFv3NYfNv8sg7ZsNhcfl4HF2++BfqqrNAxoCLQW1iiylOj76ecnaUxz+z9yw==", - "dev": true + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } }, - "acorn-globals": { + "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, - "requires": { + "dependencies": { "acorn": "^7.1.1", "acorn-walk": "^7.1.1" + } + }, + "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==", + "dev": true, + "bin": { + "acorn": "bin/acorn" }, - "dependencies": { - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true - } + "engines": { + "node": ">=0.4.0" } }, - "acorn-walk": { + "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==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.4.0" + } }, - "agent-base": { + "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==", "dev": true, - "requires": { + "dependencies": { "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" } }, - "ansi-escapes": { + "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, - "requires": { + "dependencies": { "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "ansi-regex": { + "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==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "ansi-styles": { + "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==", - "requires": { + "dependencies": { "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "anymatch": { + "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, - "requires": { + "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" } }, - "argparse": { + "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, - "requires": { + "dependencies": { "sprintf-js": "~1.0.2" } }, - "asynckit": { + "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", "dev": true }, - "babel-jest": { + "node_modules/babel-jest": { "version": "27.4.5", "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-27.4.5.tgz", "integrity": "sha512-3uuUTjXbgtODmSv/DXO9nZfD52IyC2OYTFaXGRzL0kpykzroaquCrD5+lZNafTvZlnNqZHt5pb0M08qVBZnsnA==", "dev": true, - "requires": { + "dependencies": { "@jest/transform": "^27.4.5", "@jest/types": "^27.4.2", "@types/babel__core": "^7.1.14", @@ -891,54 +1137,67 @@ "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" } }, - "babel-plugin-istanbul": { + "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==", "dev": true, - "requires": { + "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" }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul/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==", + "dev": true, "dependencies": { - "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==", - "dev": true, - "requires": { - "@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" - } - } + "@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" + }, + "engines": { + "node": ">=8" } }, - "babel-plugin-jest-hoist": { + "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==", "dev": true, - "requires": { + "dependencies": { "@babel/template": "^7.3.3", "@babel/types": "^7.3.3", "@types/babel__core": "^7.0.0", "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "babel-preset-current-node-syntax": { + "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, - "requires": { + "dependencies": { "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-bigint": "^7.8.3", "@babel/plugin-syntax-class-properties": "^7.8.3", @@ -951,135 +1210,176 @@ "@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" } }, - "babel-preset-jest": { + "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==", "dev": true, - "requires": { + "dependencies": { "babel-plugin-jest-hoist": "^27.4.0", "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" } }, - "balanced-match": { + "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==" }, - "brace-expansion": { + "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==", - "requires": { + "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, - "braces": { + "node_modules/braces": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, - "requires": { + "dependencies": { "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" } }, - "browser-process-hrtime": { + "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==", "dev": true }, - "browserslist": { + "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==", "dev": true, - "requires": { + "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" } }, - "bs-logger": { + "node_modules/bs-logger": { "version": "0.2.6", "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", "dev": true, - "requires": { + "dependencies": { "fast-json-stable-stringify": "2.x" + }, + "engines": { + "node": ">= 6" } }, - "bser": { + "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==", "dev": true, - "requires": { + "dependencies": { "node-int64": "^0.4.0" } }, - "buffer-from": { + "node_modules/buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, - "callsites": { + "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 + "dev": true, + "engines": { + "node": ">=6" + } }, - "camel-case": { + "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==", - "requires": { + "dependencies": { "pascal-case": "^3.1.2", "tslib": "^2.0.3" } }, - "camelcase": { + "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 + "dev": true, + "engines": { + "node": ">=6" + } }, - "caniuse-lite": { + "node_modules/caniuse-lite": { "version": "1.0.30001287", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001287.tgz", "integrity": "sha512-4udbs9bc0hfNrcje++AxBuc6PfLNHwh3PO9kbwnfCQWyqtlzg3py0YgFu8jyRTTo85VAz4U+VLxSlID09vNtWA==", - "dev": true + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + } }, - "capital-case": { + "node_modules/capital-case": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", - "requires": { + "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3", "upper-case-first": "^2.0.2" } }, - "chalk": { + "node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "requires": { + "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "change-case": { + "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==", - "requires": { + "dependencies": { "camel-case": "^4.1.2", "capital-case": "^1.0.4", "constant-case": "^3.0.4", @@ -1094,287 +1394,368 @@ "tslib": "^2.0.3" } }, - "char-regex": { + "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==", - "dev": true + "dev": true, + "engines": { + "node": ">=10" + } }, - "ci-info": { + "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 }, - "cjs-module-lexer": { + "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 }, - "cliui": { + "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, - "requires": { + "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", "wrap-ansi": "^7.0.0" } }, - "co": { + "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 + "dev": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } }, - "collect-v8-coverage": { + "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 }, - "color-convert": { + "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==", - "requires": { + "dependencies": { "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "color-name": { + "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==" }, - "combined-stream": { + "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==", "dev": true, - "requires": { + "dependencies": { "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" } }, - "commander": { + "node_modules/commander": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==" + "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", + "engines": { + "node": ">= 6" + } }, - "concat-map": { + "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=" }, - "constant-case": { + "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==", - "requires": { + "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3", "upper-case": "^2.0.2" } }, - "convert-source-map": { + "node_modules/convert-source-map": { "version": "1.8.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", "dev": true, - "requires": { + "dependencies": { "safe-buffer": "~5.1.1" } }, - "cross-spawn": { + "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==", "dev": true, - "requires": { + "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" } }, - "cssom": { + "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 }, - "cssstyle": { + "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, - "requires": { + "dependencies": { "cssom": "~0.3.6" }, - "dependencies": { - "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - } + "engines": { + "node": ">=8" } }, - "data-urls": { + "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/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, - "requires": { + "dependencies": { "abab": "^2.0.3", "whatwg-mimetype": "^2.3.0", "whatwg-url": "^8.0.0" + }, + "engines": { + "node": ">=10" } }, - "debug": { + "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, - "requires": { + "dependencies": { "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "decimal.js": { + "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 }, - "dedent": { + "node_modules/dedent": { "version": "0.7.0", "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", "dev": true }, - "deep-is": { + "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, - "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 + "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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "delayed-stream": { + "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 + "dev": true, + "engines": { + "node": ">=0.4.0" + } }, - "detect-newline": { + "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 + "dev": true, + "engines": { + "node": ">=8" + } }, - "diff-sequences": { + "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 + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } }, - "domexception": { + "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, - "requires": { + "dependencies": { "webidl-conversions": "^5.0.0" }, - "dependencies": { - "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/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" } }, - "dot-case": { + "node_modules/dot-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "requires": { + "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" } }, - "electron-to-chromium": { + "node_modules/electron-to-chromium": { "version": "1.4.24", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.24.tgz", "integrity": "sha512-erwx5r69B/WFfFuF2jcNN0817BfDBdC4765kQ6WltOMuwsimlQo3JTEq0Cle+wpHralwdeX3OfAtw/mHxPK0Wg==", "dev": true }, - "emittery": { + "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 + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } }, - "emoji-regex": { + "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==", "dev": true }, - "escalade": { + "node_modules/escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "escape-string-regexp": { + "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 + "dev": true, + "engines": { + "node": ">=8" + } }, - "escodegen": { + "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, - "requires": { + "dependencies": { "esprima": "^4.0.1", "estraverse": "^5.2.0", "esutils": "^2.0.2", - "optionator": "^0.8.1", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { "source-map": "~0.6.1" } }, - "esprima": { + "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 + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } }, - "estraverse": { + "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 + "dev": true, + "engines": { + "node": ">=4.0" + } }, - "esutils": { + "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 + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "execa": { + "node_modules/execa": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, - "requires": { + "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", "human-signals": "^2.1.0", @@ -1384,20 +1765,29 @@ "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" } }, - "exit": { + "node_modules/exit": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.8.0" + } }, - "expect": { + "node_modules/expect": { "version": "27.4.2", "resolved": "https://registry.npmjs.org/expect/-/expect-27.4.2.tgz", "integrity": "sha512-BjAXIDC6ZOW+WBFNg96J22D27Nq5ohn+oGcuP2rtOtcjuxNoV9McpQ60PcQWhdFOSBIQdR72e+4HdnbZTFSTyg==", "dev": true, - "requires": { + "dependencies": { "@jest/types": "^27.4.2", "ansi-styles": "^5.0.0", "jest-get-type": "^27.4.0", @@ -1405,375 +1795,505 @@ "jest-message-util": "^27.4.2", "jest-regex-util": "^27.4.0" }, - "dependencies": { - "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.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/expect/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" } }, - "fast-json-stable-stringify": { + "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 }, - "fast-levenshtein": { + "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 }, - "fb-watchman": { + "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, - "requires": { + "dependencies": { "bser": "2.1.1" } }, - "fill-range": { + "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==", "dev": true, - "requires": { + "dependencies": { "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "find-up": { + "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, - "requires": { + "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "form-data": { + "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==", "dev": true, - "requires": { + "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" } }, - "fs-extra": { + "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==", - "requires": { + "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^4.0.0", "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" } }, - "fs.realpath": { + "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, - "fsevents": { + "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, - "optional": true + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } }, - "function-bind": { + "node_modules/function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", "dev": true }, - "gensync": { + "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 + "dev": true, + "engines": { + "node": ">=6.9.0" + } }, - "get-caller-file": { + "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 + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } }, - "get-package-type": { + "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 + "dev": true, + "engines": { + "node": ">=8.0.0" + } }, - "get-stream": { + "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 + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "glob": { + "node_modules/glob": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "requires": { + "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" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "globals": { + "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 + "dev": true, + "engines": { + "node": ">=4" + } }, - "graceful-fs": { + "node_modules/graceful-fs": { "version": "4.2.8", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.8.tgz", "integrity": "sha512-qkIilPUYcNhJpd33n0GBXTB1MMPp14TxEsEs0pTrsSVucApsYzW5V+Q8Qxhik6KU3evy+qkAAowTByymK0avdg==" }, - "has": { + "node_modules/has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, - "requires": { + "dependencies": { "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" } }, - "has-flag": { + "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==" + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } }, - "header-case": { + "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==", - "requires": { + "dependencies": { "capital-case": "^1.0.4", "tslib": "^2.0.3" } }, - "html-encoding-sniffer": { + "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==", "dev": true, - "requires": { + "dependencies": { "whatwg-encoding": "^1.0.5" + }, + "engines": { + "node": ">=10" } }, - "html-escaper": { + "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 }, - "http-proxy-agent": { + "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==", "dev": true, - "requires": { + "dependencies": { "@tootallnate/once": "1", "agent-base": "6", "debug": "4" + }, + "engines": { + "node": ">= 6" } }, - "https-proxy-agent": { + "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==", "dev": true, - "requires": { + "dependencies": { "agent-base": "6", "debug": "4" + }, + "engines": { + "node": ">= 6" } }, - "human-signals": { + "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 + "dev": true, + "engines": { + "node": ">=10.17.0" + } }, - "iconv-lite": { + "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, - "requires": { + "dependencies": { "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" } }, - "import-local": { + "node_modules/import-local": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.3.tgz", "integrity": "sha512-bE9iaUY3CXH8Cwfan/abDKAxe1KGT9kyGsBPqf6DMK/z0a2OzAsrukeYNgIH6cH5Xr452jb1TUL8rSfCLjZ9uA==", "dev": true, - "requires": { + "dependencies": { "pkg-dir": "^4.2.0", "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" } }, - "imurmurhash": { + "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.8.19" + } }, - "inflight": { + "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { + "dependencies": { "once": "^1.3.0", "wrappy": "1" } }, - "inherits": { + "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, - "is-core-module": { + "node_modules/is-core-module": { "version": "2.8.0", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.0.tgz", "integrity": "sha512-vd15qHsaqrRL7dtH6QNuy0ndJmRDrS9HAM1CAiSifNUFv4x1a0CCVsj18hJ1mShxIG6T2i1sO78MkP56r0nYRw==", "dev": true, - "requires": { + "dependencies": { "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "is-fullwidth-code-point": { + "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==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "is-generator-fn": { + "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==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "is-number": { + "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==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.12.0" + } }, - "is-potential-custom-element-name": { + "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 }, - "is-stream": { + "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 + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "is-typedarray": { + "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 }, - "isexe": { + "node_modules/isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, - "istanbul-lib-coverage": { + "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 + "dev": true, + "engines": { + "node": ">=8" + } }, - "istanbul-lib-instrument": { + "node_modules/istanbul-lib-instrument": { "version": "4.0.3", "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", "dev": true, - "requires": { + "dependencies": { "@babel/core": "^7.7.5", "@istanbuljs/schema": "^0.1.2", "istanbul-lib-coverage": "^3.0.0", "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" } }, - "istanbul-lib-report": { + "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, - "requires": { + "dependencies": { "istanbul-lib-coverage": "^3.0.0", "make-dir": "^3.0.0", "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" } }, - "istanbul-lib-source-maps": { + "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==", "dev": true, - "requires": { + "dependencies": { "debug": "^4.1.1", "istanbul-lib-coverage": "^3.0.0", "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" } }, - "istanbul-reports": { + "node_modules/istanbul-reports": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.1.tgz", "integrity": "sha512-q1kvhAXWSsXfMjCdNHNPKZZv94OlspKnoGv+R9RGbnqOOQ0VbNfLFgQDVgi7hHenKsndGq3/o0OBdzDXthWcNw==", "dev": true, - "requires": { + "dependencies": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "jest": { + "node_modules/jest": { "version": "27.4.5", "resolved": "https://registry.npmjs.org/jest/-/jest-27.4.5.tgz", "integrity": "sha512-uT5MiVN3Jppt314kidCk47MYIRilJjA/l2mxwiuzzxGUeJIvA8/pDaJOAX5KWvjAo7SCydcW0/4WEtgbLMiJkg==", "dev": true, - "requires": { + "dependencies": { "@jest/core": "^27.4.5", "import-local": "^3.0.2", "jest-cli": "^27.4.5" + }, + "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 + } } }, - "jest-changed-files": { + "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==", "dev": true, - "requires": { + "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" } }, - "jest-circus": { + "node_modules/jest-circus": { "version": "27.4.5", "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-27.4.5.tgz", "integrity": "sha512-eTNWa9wsvBwPykhMMShheafbwyakcdHZaEYh5iRrQ0PFJxkDP/e3U/FvzGuKWu2WpwUA3C3hPlfpuzvOdTVqnw==", "dev": true, - "requires": { + "dependencies": { "@jest/environment": "^27.4.4", "@jest/test-result": "^27.4.2", "@jest/types": "^27.4.2", @@ -1793,14 +2313,17 @@ "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" } }, - "jest-cli": { + "node_modules/jest-cli": { "version": "27.4.5", "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-27.4.5.tgz", "integrity": "sha512-hrky3DSgE0u7sQxaCL7bdebEPHx5QzYmrGuUjaPLmPE8jx5adtvGuOlRspvMoVLTTDOHRnZDoRLYJuA+VCI7Hg==", "dev": true, - "requires": { + "dependencies": { "@jest/core": "^27.4.5", "@jest/test-result": "^27.4.2", "@jest/types": "^27.4.2", @@ -1813,14 +2336,28 @@ "jest-validate": "^27.4.2", "prompts": "^2.0.1", "yargs": "^16.2.0" + }, + "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 + } } }, - "jest-config": { + "node_modules/jest-config": { "version": "27.4.5", "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-27.4.5.tgz", "integrity": "sha512-t+STVJtPt+fpqQ8GBw850NtSQbnDOw/UzdPfzDaHQ48/AylQlW7LHj3dH+ndxhC1UxJ0Q3qkq7IH+nM1skwTwA==", "dev": true, - "requires": { + "dependencies": { "@babel/core": "^7.1.0", "@jest/test-sequencer": "^27.4.5", "@jest/types": "^27.4.2", @@ -1843,48 +2380,68 @@ "micromatch": "^4.0.4", "pretty-format": "^27.4.2", "slash": "^3.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 + } } }, - "jest-diff": { + "node_modules/jest-diff": { "version": "27.4.2", "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.4.2.tgz", "integrity": "sha512-ujc9ToyUZDh9KcqvQDkk/gkbf6zSaeEg9AiBxtttXW59H/AcqEYp1ciXAtJp+jXWva5nAf/ePtSsgWwE5mqp4Q==", "dev": true, - "requires": { + "dependencies": { "chalk": "^4.0.0", "diff-sequences": "^27.4.0", "jest-get-type": "^27.4.0", "pretty-format": "^27.4.2" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "jest-docblock": { + "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==", "dev": true, - "requires": { + "dependencies": { "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "jest-each": { + "node_modules/jest-each": { "version": "27.4.2", "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-27.4.2.tgz", "integrity": "sha512-53V2MNyW28CTruB3lXaHNk6PkiIFuzdOC9gR3C6j8YE/ACfrPnz+slB0s17AgU1TtxNzLuHyvNlLJ+8QYw9nBg==", "dev": true, - "requires": { + "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.2" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "jest-environment-jsdom": { + "node_modules/jest-environment-jsdom": { "version": "27.4.4", "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-27.4.4.tgz", "integrity": "sha512-cYR3ndNfHBqQgFvS1RL7dNqSvD//K56j/q1s2ygNHcfTCAp12zfIromO1w3COmXrxS8hWAh7+CmZmGCIoqGcGA==", "dev": true, - "requires": { + "dependencies": { "@jest/environment": "^27.4.4", "@jest/fake-timers": "^27.4.2", "@jest/types": "^27.4.2", @@ -1892,40 +2449,48 @@ "jest-mock": "^27.4.2", "jest-util": "^27.4.2", "jsdom": "^16.6.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "jest-environment-node": { + "node_modules/jest-environment-node": { "version": "27.4.4", "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-27.4.4.tgz", "integrity": "sha512-D+v3lbJ2GjQTQR23TK0kY3vFVmSeea05giInI41HHOaJnAwOnmUHTZgUaZL+VxUB43pIzoa7PMwWtCVlIUoVoA==", "dev": true, - "requires": { + "dependencies": { "@jest/environment": "^27.4.4", "@jest/fake-timers": "^27.4.2", "@jest/types": "^27.4.2", "@types/node": "*", "jest-mock": "^27.4.2", "jest-util": "^27.4.2" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "jest-get-type": { + "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 + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } }, - "jest-haste-map": { + "node_modules/jest-haste-map": { "version": "27.4.5", "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-27.4.5.tgz", "integrity": "sha512-oJm1b5qhhPs78K24EDGifWS0dELYxnoBiDhatT/FThgB9yxqUm5F6li3Pv+Q+apMBmmPNzOBnZ7ZxWMB1Leq1Q==", "dev": true, - "requires": { + "dependencies": { "@jest/types": "^27.4.2", "@types/graceful-fs": "^4.1.2", "@types/node": "*", "anymatch": "^3.0.3", "fb-watchman": "^2.0.0", - "fsevents": "^2.3.2", "graceful-fs": "^4.2.4", "jest-regex-util": "^27.4.0", "jest-serializer": "^27.4.0", @@ -1933,14 +2498,20 @@ "jest-worker": "^27.4.5", "micromatch": "^4.0.4", "walker": "^1.0.7" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" } }, - "jest-jasmine2": { + "node_modules/jest-jasmine2": { "version": "27.4.5", "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-27.4.5.tgz", "integrity": "sha512-oUnvwhJDj2LhOiUB1kdnJjkx8C5PwgUZQb9urF77mELH9DGR4e2GqpWQKBOYXWs5+uTN9BGDqRz3Aeg5Wts7aw==", "dev": true, - "requires": { + "dependencies": { "@babel/traverse": "^7.1.0", "@jest/environment": "^27.4.4", "@jest/source-map": "^27.4.0", @@ -1959,36 +2530,45 @@ "jest-util": "^27.4.2", "pretty-format": "^27.4.2", "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "jest-leak-detector": { + "node_modules/jest-leak-detector": { "version": "27.4.2", "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-27.4.2.tgz", "integrity": "sha512-ml0KvFYZllzPBJWDei3mDzUhyp/M4ubKebX++fPaudpe8OsxUE+m+P6ciVLboQsrzOCWDjE20/eXew9QMx/VGw==", "dev": true, - "requires": { + "dependencies": { "jest-get-type": "^27.4.0", "pretty-format": "^27.4.2" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "jest-matcher-utils": { + "node_modules/jest-matcher-utils": { "version": "27.4.2", "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.4.2.tgz", "integrity": "sha512-jyP28er3RRtMv+fmYC/PKG8wvAmfGcSNproVTW2Y0P/OY7/hWUOmsPfxN1jOhM+0u2xU984u2yEagGivz9OBGQ==", "dev": true, - "requires": { + "dependencies": { "chalk": "^4.0.0", "jest-diff": "^27.4.2", "jest-get-type": "^27.4.0", "pretty-format": "^27.4.2" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "jest-message-util": { + "node_modules/jest-message-util": { "version": "27.4.2", "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-27.4.2.tgz", "integrity": "sha512-OMRqRNd9E0DkBLZpFtZkAGYOXl6ZpoMtQJWTAREJKDOFa0M6ptB7L67tp+cszMBkvSgKOhNtQp2Vbcz3ZZKo/w==", "dev": true, - "requires": { + "dependencies": { "@babel/code-frame": "^7.12.13", "@jest/types": "^27.4.2", "@types/stack-utils": "^2.0.0", @@ -1998,36 +2578,56 @@ "pretty-format": "^27.4.2", "slash": "^3.0.0", "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "jest-mock": { + "node_modules/jest-mock": { "version": "27.4.2", "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.4.2.tgz", "integrity": "sha512-PDDPuyhoukk20JrQKeofK12hqtSka7mWH0QQuxSNgrdiPsrnYYLS6wbzu/HDlxZRzji5ylLRULeuI/vmZZDrYA==", "dev": true, - "requires": { + "dependencies": { "@jest/types": "^27.4.2", "@types/node": "*" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "jest-pnp-resolver": { + "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==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } }, - "jest-regex-util": { + "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==", - "dev": true + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } }, - "jest-resolve": { + "node_modules/jest-resolve": { "version": "27.4.5", "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-27.4.5.tgz", "integrity": "sha512-xU3z1BuOz/hUhVUL+918KqUgK+skqOuUsAi7A+iwoUldK6/+PW+utK8l8cxIWT9AW7IAhGNXjSAh1UYmjULZZw==", "dev": true, - "requires": { + "dependencies": { "@jest/types": "^27.4.2", "chalk": "^4.0.0", "graceful-fs": "^4.2.4", @@ -2038,25 +2638,31 @@ "resolve": "^1.20.0", "resolve.exports": "^1.1.0", "slash": "^3.0.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "jest-resolve-dependencies": { + "node_modules/jest-resolve-dependencies": { "version": "27.4.5", "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-27.4.5.tgz", "integrity": "sha512-elEVvkvRK51y037NshtEkEnukMBWvlPzZHiL847OrIljJ8yIsujD2GXRPqDXC4rEVKbcdsy7W0FxoZb4WmEs7w==", "dev": true, - "requires": { + "dependencies": { "@jest/types": "^27.4.2", "jest-regex-util": "^27.4.0", "jest-snapshot": "^27.4.5" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "jest-runner": { + "node_modules/jest-runner": { "version": "27.4.5", "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-27.4.5.tgz", "integrity": "sha512-/irauncTfmY1WkTaRQGRWcyQLzK1g98GYG/8QvIPviHgO1Fqz1JYeEIsSfF+9mc/UTA6S+IIHFgKyvUrtiBIZg==", "dev": true, - "requires": { + "dependencies": { "@jest/console": "^27.4.2", "@jest/environment": "^27.4.4", "@jest/test-result": "^27.4.2", @@ -2079,14 +2685,17 @@ "jest-worker": "^27.4.5", "source-map-support": "^0.5.6", "throat": "^6.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "jest-runtime": { + "node_modules/jest-runtime": { "version": "27.4.5", "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-27.4.5.tgz", "integrity": "sha512-CIYqwuJQXHQtPd/idgrx4zgJ6iCb6uBjQq1RSAGQrw2S8XifDmoM1Ot8NRd80ooAm+ZNdHVwsktIMGlA1F1FAQ==", "dev": true, - "requires": { + "dependencies": { "@jest/console": "^27.4.2", "@jest/environment": "^27.4.4", "@jest/globals": "^27.4.4", @@ -2113,24 +2722,30 @@ "slash": "^3.0.0", "strip-bom": "^4.0.0", "yargs": "^16.2.0" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "jest-serializer": { + "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==", "dev": true, - "requires": { + "dependencies": { "@types/node": "*", "graceful-fs": "^4.2.4" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "jest-snapshot": { + "node_modules/jest-snapshot": { "version": "27.4.5", "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-27.4.5.tgz", "integrity": "sha512-eCi/iM1YJFrJWiT9de4+RpWWWBqsHiYxFG9V9o/n0WXs6GpW4lUt4FAHAgFPTLPqCUVzrMQmSmTZSgQzwqR7IQ==", "dev": true, - "requires": { + "dependencies": { "@babel/core": "^7.7.2", "@babel/generator": "^7.7.2", "@babel/parser": "^7.7.2", @@ -2156,38 +2771,48 @@ "pretty-format": "^27.4.2", "semver": "^7.3.2" }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "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==", + "dev": true, "dependencies": { - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - } + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, - "jest-util": { + "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==", "dev": true, - "requires": { + "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" } }, - "jest-validate": { + "node_modules/jest-validate": { "version": "27.4.2", "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.4.2.tgz", "integrity": "sha512-hWYsSUej+Fs8ZhOm5vhWzwSLmVaPAxRy+Mr+z5MzeaHm9AxUpXdoVMEW4R86y5gOobVfBsMFLk4Rb+QkiEpx1A==", "dev": true, - "requires": { + "dependencies": { "@jest/types": "^27.4.2", "camelcase": "^6.2.0", "chalk": "^4.0.0", @@ -2195,21 +2820,28 @@ "leven": "^3.1.0", "pretty-format": "^27.4.2" }, - "dependencies": { - "camelcase": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.1.tgz", - "integrity": "sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA==", - "dev": true - } + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.1.tgz", + "integrity": "sha512-tVI4q5jjFV5CavAU8DXfza/TJcZutVKo/5Foskmsqcm0MsL91moHvwiGNnqaa2o6PF/7yT5ikDRcVcl8Rj6LCA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "jest-watcher": { + "node_modules/jest-watcher": { "version": "27.4.2", "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-27.4.2.tgz", "integrity": "sha512-NJvMVyyBeXfDezhWzUOCOYZrUmkSCiatpjpm+nFUid74OZEHk6aMLrZAukIiFDwdbqp6mTM6Ui1w4oc+8EobQg==", "dev": true, - "requires": { + "dependencies": { "@jest/test-result": "^27.4.2", "@jest/types": "^27.4.2", "@types/node": "*", @@ -2217,52 +2849,65 @@ "chalk": "^4.0.0", "jest-util": "^27.4.2", "string-length": "^4.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "jest-worker": { + "node_modules/jest-worker": { "version": "27.4.5", "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.5.tgz", "integrity": "sha512-f2s8kEdy15cv9r7q4KkzGXvlY0JTcmCbMHZBfSQDwW77REr45IDWwd0lksDFeVHH2jJ5pqb90T77XscrjeGzzg==", "dev": true, - "requires": { + "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", "supports-color": "^8.0.0" }, + "engines": { + "node": ">= 10.13.0" + } + }, + "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==", + "dev": true, "dependencies": { - "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, - "requires": { - "has-flag": "^4.0.0" - } - } + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "js-tokens": { + "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true }, - "js-yaml": { + "node_modules/js-yaml": { "version": "3.14.1", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dev": true, - "requires": { + "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "jsdom": { + "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, - "requires": { + "dependencies": { "abab": "^2.0.5", "acorn": "^8.2.4", "acorn-globals": "^6.0.0", @@ -2290,617 +2935,797 @@ "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 + } } }, - "jsesc": { + "node_modules/jsesc": { "version": "2.5.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } }, - "json5": { + "node_modules/json5": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "requires": { + "dependencies": { "minimist": "^1.2.5" + }, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" } }, - "jsonc-parser": { + "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==" }, - "jsonfile": { + "node_modules/jsonfile": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "requires": { + "optionalDependencies": { "graceful-fs": "^4.1.6" } }, - "kleur": { + "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 + "dev": true, + "engines": { + "node": ">=6" + } }, - "leven": { + "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 + "dev": true, + "engines": { + "node": ">=6" + } }, - "levn": { + "node_modules/levn": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", "dev": true, - "requires": { + "dependencies": { "prelude-ls": "~1.1.2", "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" } }, - "locate-path": { + "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, - "requires": { + "dependencies": { "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" } }, - "lodash": { + "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, - "lodash.memoize": { + "node_modules/lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", "dev": true }, - "lower-case": { + "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==", - "requires": { + "dependencies": { "tslib": "^2.0.3" } }, - "lru-cache": { + "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, - "requires": { + "dependencies": { "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" } }, - "make-dir": { + "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, - "requires": { + "dependencies": { "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "make-error": { + "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 }, - "makeerror": { + "node_modules/makeerror": { "version": "1.0.12", "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", "dev": true, - "requires": { + "dependencies": { "tmpl": "1.0.5" } }, - "merge-stream": { + "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 }, - "micromatch": { + "node_modules/micromatch": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", "dev": true, - "requires": { + "dependencies": { "braces": "^3.0.1", "picomatch": "^2.2.3" + }, + "engines": { + "node": ">=8.6" } }, - "mime-db": { + "node_modules/mime-db": { "version": "1.51.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", - "dev": true + "dev": true, + "engines": { + "node": ">= 0.6" + } }, - "mime-types": { + "node_modules/mime-types": { "version": "2.1.34", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", "dev": true, - "requires": { + "dependencies": { "mime-db": "1.51.0" + }, + "engines": { + "node": ">= 0.6" } }, - "mimic-fn": { + "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 + "dev": true, + "engines": { + "node": ">=6" + } }, - "minimatch": { + "node_modules/minimatch": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { + "dependencies": { "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, - "minimist": { + "node_modules/minimist": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" }, - "ms": { + "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 }, - "natural-compare": { + "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 }, - "no-case": { + "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==", - "requires": { + "dependencies": { "lower-case": "^2.0.2", "tslib": "^2.0.3" } }, - "node-int64": { + "node_modules/node-int64": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", "dev": true }, - "node-releases": { + "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==", "dev": true }, - "normalize-path": { + "node_modules/normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "npm-run-path": { + "node_modules/npm-run-path": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, - "requires": { + "dependencies": { "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "nwsapi": { + "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 }, - "once": { + "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { + "dependencies": { "wrappy": "1" } }, - "onetime": { + "node_modules/onetime": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, - "requires": { + "dependencies": { "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "optionator": { + "node_modules/optionator": { "version": "0.8.3", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", "dev": true, - "requires": { + "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" } }, - "p-limit": { + "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, - "requires": { + "dependencies": { "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "p-locate": { + "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, - "requires": { + "dependencies": { "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" } }, - "p-try": { + "node_modules/p-try": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "param-case": { + "node_modules/param-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "requires": { + "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" } }, - "parse5": { + "node_modules/parse5": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", "dev": true }, - "pascal-case": { + "node_modules/pascal-case": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "requires": { + "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" } }, - "path-case": { + "node_modules/path-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==", - "requires": { + "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" } }, - "path-exists": { + "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "path-is-absolute": { + "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "engines": { + "node": ">=0.10.0" + } }, - "path-key": { + "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "path-parse": { + "node_modules/path-parse": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, - "picocolors": { + "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 }, - "picomatch": { + "node_modules/picomatch": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", - "dev": true + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } }, - "pirates": { + "node_modules/pirates": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.4.tgz", "integrity": "sha512-ZIrVPH+A52Dw84R0L3/VS9Op04PuQ2SEoJL6bkshmiTic/HldyW9Tf7oH5mhJZBK7NmDx27vSMrYEXPXclpDKw==", - "dev": true + "dev": true, + "engines": { + "node": ">= 6" + } }, - "pkg-dir": { + "node_modules/pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, - "requires": { + "dependencies": { "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "prelude-ls": { + "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 + "dev": true, + "engines": { + "node": ">= 0.8.0" + } }, - "pretty-format": { + "node_modules/pretty-format": { "version": "27.4.2", "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.4.2.tgz", "integrity": "sha512-p0wNtJ9oLuvgOQDEIZ9zQjZffK7KtyR6Si0jnXULIDwrlNF8Cuir3AZP0hHv0jmKuNN/edOnbMjnzd4uTcmWiw==", "dev": true, - "requires": { + "dependencies": { "@jest/types": "^27.4.2", "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", "react-is": "^17.0.1" }, - "dependencies": { - "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.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" } }, - "prompts": { + "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/prompts": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", "dev": true, - "requires": { + "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" } }, - "psl": { + "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 }, - "punycode": { + "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "react-is": { + "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 }, - "require-directory": { + "node_modules/require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "resolve": { + "node_modules/resolve": { "version": "1.20.0", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", "dev": true, - "requires": { + "dependencies": { "is-core-module": "^2.2.0", "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "resolve-cwd": { + "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, - "requires": { + "dependencies": { "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" } }, - "resolve-from": { + "node_modules/resolve-from": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "resolve.exports": { + "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 + "dev": true, + "engines": { + "node": ">=10" + } }, - "rimraf": { + "node_modules/rimraf": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, - "requires": { + "dependencies": { "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "safe-buffer": { + "node_modules/safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, - "safer-buffer": { + "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 }, - "saxes": { + "node_modules/saxes": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", "dev": true, - "requires": { + "dependencies": { "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" } }, - "semver": { + "node_modules/semver": { "version": "6.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true + "dev": true, + "bin": { + "semver": "bin/semver.js" + } }, - "sentence-case": { + "node_modules/sentence-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz", "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==", - "requires": { + "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3", "upper-case-first": "^2.0.2" } }, - "shebang-command": { + "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, - "requires": { + "dependencies": { "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" } }, - "shebang-regex": { + "node_modules/shebang-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "signal-exit": { + "node_modules/signal-exit": { "version": "3.0.6", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.6.tgz", "integrity": "sha512-sDl4qMFpijcGw22U5w63KmD3cZJfBuFlVNbVMKje2keoKML7X2UzWbc4XrmEbDwg0NXJc3yv4/ox7b+JWb57kQ==", "dev": true }, - "sisteransi": { + "node_modules/sisteransi": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", "dev": true }, - "slash": { + "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true + "dev": true, + "engines": { + "node": ">=8" + } }, - "snake-case": { + "node_modules/snake-case": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", - "requires": { + "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" } }, - "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==", - "dev": true + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "source-map-support": { + "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, - "requires": { + "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" } }, - "sprintf-js": { + "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, - "stack-utils": { + "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, - "requires": { + "dependencies": { "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" } }, - "string-length": { + "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, - "requires": { + "dependencies": { "char-regex": "^1.0.2", "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" } }, - "string-width": { + "node_modules/string-width": { "version": "4.2.3", "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, - "requires": { + "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" } }, - "strip-ansi": { + "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, - "requires": { + "dependencies": { "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" } }, - "strip-bom": { + "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 + "dev": true, + "engines": { + "node": ">=8" + } }, - "strip-final-newline": { + "node_modules/strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true + "dev": true, + "engines": { + "node": ">=6" + } }, - "style-dictionary": { + "node_modules/style-dictionary": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/style-dictionary/-/style-dictionary-3.1.1.tgz", "integrity": "sha512-Dpugx2wH3ElMvq1GOaSsfUChr8dwujx2/eBUUd0vaSFkP16LRp5XOJMTHF0f8QuPGkpBfVPXDWCkb3oJ3oJjxg==", - "requires": { + "dependencies": { "chalk": "^4.0.0", "change-case": "^4.1.2", "commander": "^5.1.0", @@ -2910,111 +3735,147 @@ "jsonc-parser": "^3.0.0", "lodash": "^4.17.15", "tinycolor2": "^1.4.1" + }, + "bin": { + "style-dictionary": "bin/style-dictionary" + }, + "engines": { + "node": ">=12.0.0" } }, - "supports-color": { + "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "requires": { + "dependencies": { "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "supports-hyperlinks": { + "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, - "requires": { + "dependencies": { "has-flag": "^4.0.0", "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" } }, - "symbol-tree": { + "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 }, - "terminal-link": { + "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, - "requires": { + "dependencies": { "ansi-escapes": "^4.2.1", "supports-hyperlinks": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "test-exclude": { + "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, - "requires": { + "dependencies": { "@istanbuljs/schema": "^0.1.2", "glob": "^7.1.4", "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" } }, - "throat": { + "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 }, - "tinycolor2": { + "node_modules/tinycolor2": { "version": "1.4.2", "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.4.2.tgz", - "integrity": "sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==" + "integrity": "sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==", + "engines": { + "node": "*" + } }, - "tmpl": { + "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 }, - "to-fast-properties": { + "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 + "dev": true, + "engines": { + "node": ">=4" + } }, - "to-regex-range": { + "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, - "requires": { + "dependencies": { "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" } }, - "tough-cookie": { + "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, - "requires": { + "dependencies": { "psl": "^1.1.33", "punycode": "^2.1.1", "universalify": "^0.1.2" + }, + "engines": { + "node": ">=6" } }, - "tr46": { + "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, - "requires": { + "dependencies": { "punycode": "^2.1.1" + }, + "engines": { + "node": ">=8" } }, - "ts-jest": { + "node_modules/ts-jest": { "version": "27.1.2", "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.2.tgz", "integrity": "sha512-eSOiJOWq6Hhs6Khzk5wKC5sgWIXgXqOCiIl1+3lfnearu58Hj4QpE5tUhQcA3xtZrELbcvAGCsd6HB8OsaVaTA==", "dev": true, - "requires": { + "dependencies": { "bs-logger": "0.x", "fast-json-stable-stringify": "2.x", "jest-util": "^27.0.0", @@ -3024,231 +3885,339 @@ "semver": "7.x", "yargs-parser": "20.x" }, - "dependencies": { - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@types/jest": "^27.0.0", + "babel-jest": ">=27.0.0 <28", + "esbuild": "~0.14.0", + "jest": "^27.0.0", + "typescript": ">=3.8 <5.0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@types/jest": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true } } }, - "tslib": { + "node_modules/ts-jest/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": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tslib": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" }, - "type-check": { + "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, - "requires": { + "dependencies": { "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" } }, - "type-detect": { + "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 + "dev": true, + "engines": { + "node": ">=4" + } }, - "type-fest": { + "node_modules/type-fest": { "version": "0.21.3", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "typedarray-to-buffer": { + "node_modules/typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", "dev": true, - "requires": { + "dependencies": { "is-typedarray": "^1.0.0" } }, - "universalify": { + "node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true, + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "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==" + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "engines": { + "node": ">= 4.0.0" + } }, - "upper-case": { + "node_modules/upper-case": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", - "requires": { + "dependencies": { "tslib": "^2.0.3" } }, - "upper-case-first": { + "node_modules/upper-case-first": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", - "requires": { + "dependencies": { "tslib": "^2.0.3" } }, - "v8-to-istanbul": { + "node_modules/v8-to-istanbul": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.0.tgz", "integrity": "sha512-/PRhfd8aTNp9Ggr62HPzXg2XasNFGy5PBt0Rp04du7/8GNNSgxFL6WBTkgMKSL9bFjH+8kKEG3f37FmxiTqUUA==", "dev": true, - "requires": { + "dependencies": { "@types/istanbul-lib-coverage": "^2.0.1", "convert-source-map": "^1.6.0", "source-map": "^0.7.3" }, - "dependencies": { - "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": ">=10.12.0" } }, - "w3c-hr-time": { + "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/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==", + "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", "dev": true, - "requires": { + "dependencies": { "browser-process-hrtime": "^1.0.0" } }, - "w3c-xmlserializer": { + "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==", "dev": true, - "requires": { + "dependencies": { "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" } }, - "walker": { + "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, - "requires": { + "dependencies": { "makeerror": "1.0.12" } }, - "webidl-conversions": { + "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 + "dev": true, + "engines": { + "node": ">=10.4" + } }, - "whatwg-encoding": { + "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, - "requires": { + "dependencies": { "iconv-lite": "0.4.24" } }, - "whatwg-mimetype": { + "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 }, - "whatwg-url": { + "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, - "requires": { + "dependencies": { "lodash": "^4.7.0", "tr46": "^2.1.0", "webidl-conversions": "^6.1.0" + }, + "engines": { + "node": ">=10" } }, - "which": { + "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, - "requires": { + "dependencies": { "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } }, - "word-wrap": { + "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 + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "wrap-ansi": { + "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dev": true, - "requires": { + "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "wrappy": { + "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, - "write-file-atomic": { + "node_modules/write-file-atomic": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", "dev": true, - "requires": { + "dependencies": { "imurmurhash": "^0.1.4", "is-typedarray": "^1.0.0", "signal-exit": "^3.0.2", "typedarray-to-buffer": "^3.1.5" } }, - "ws": { + "node_modules/ws": { "version": "7.5.6", "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.6.tgz", "integrity": "sha512-6GLgCqo2cy2A2rjCNFlxQS6ZljG/coZfZXclldI8FB/1G3CCI36Zd8xy2HrFVACi8tfk5XrgLQEk+P0Tnz9UcA==", - "dev": true + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } }, - "xml-name-validator": { + "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 }, - "xmlchars": { + "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 }, - "y18n": { + "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 + "dev": true, + "engines": { + "node": ">=10" + } }, - "yallist": { + "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 }, - "yargs": { + "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, - "requires": { + "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", "get-caller-file": "^2.0.5", @@ -3256,13 +4225,19 @@ "string-width": "^4.2.0", "y18n": "^5.0.5", "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" } }, - "yargs-parser": { + "node_modules/yargs-parser": { "version": "20.2.9", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true + "dev": true, + "engines": { + "node": ">=10" + } } } } diff --git a/package.json b/package.json index e1982f408..22e45d36e 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ }, "devDependencies": { "@types/jest": "^27.0.3", + "deepmerge": "^4.3.1", "jest": "^27.0.6", "ts-jest": "^27.0.3" }, diff --git a/tokens/design-tokens.tokens.json b/tokens/design-tokens.tokens.json index 51f2d3c38..69f991d82 100644 --- a/tokens/design-tokens.tokens.json +++ b/tokens/design-tokens.tokens.json @@ -1 +1,976 @@ -{"sizes":{"32":{"description":"32.72px spacer component","value":32.72,"type":"dimension","extensions":{"org.lukasoppermann.figmaDesignTokens":{"exportKey":"size"}}},"40":{"description":null,"value":40,"type":"dimension","extensions":{"org.lukasoppermann.figmaDesignTokens":{"exportKey":"size"}}},"60":{"description":null,"value":60,"type":"dimension","extensions":{"org.lukasoppermann.figmaDesignTokens":{"exportKey":"size"}}},"80":{"description":null,"value":80,"type":"dimension","extensions":{"org.lukasoppermann.figmaDesignTokens":{"exportKey":"size"}}},"plain token":{"description":null,"value":200,"type":"dimension","extensions":{"org.lukasoppermann.figmaDesignTokens":{"exportKey":"size"}}},"token in frame":{"description":null,"value":200,"type":"dimension","extensions":{"org.lukasoppermann.figmaDesignTokens":{"exportKey":"size"}}},"token in group":{"description":null,"value":200,"type":"dimension","extensions":{"org.lukasoppermann.figmaDesignTokens":{"exportKey":"size"}}},"in variant 60":{"description":null,"value":60,"type":"dimension","extensions":{"org.lukasoppermann.figmaDesignTokens":{"exportKey":"size"}}},"in variant 90":{"description":null,"value":90,"type":"dimension","extensions":{"org.lukasoppermann.figmaDesignTokens":{"exportKey":"size"}}},"in variant 120":{"description":null,"value":120,"type":"dimension","extensions":{"org.lukasoppermann.figmaDesignTokens":{"exportKey":"size"}}},"frame":{"description":null,"value":32,"type":"dimension","extensions":{"org.lukasoppermann.figmaDesignTokens":{"exportKey":"size"}}},"rect":{"description":null,"value":32,"type":"dimension","extensions":{"org.lukasoppermann.figmaDesignTokens":{"exportKey":"size"}}},"shape in component":{"description":"Should use 32px not 20 from inside shape","value":32,"type":"dimension","extensions":{"org.lukasoppermann.figmaDesignTokens":{"exportKey":"size"}}}},"breakpoints":{"lg":{"description":null,"value":1280,"type":"dimension","extensions":{"org.lukasoppermann.figmaDesignTokens":{"exportKey":"breakpoint"}}},"sm":{"description":null,"value":768,"type":"dimension","extensions":{"org.lukasoppermann.figmaDesignTokens":{"exportKey":"breakpoint"}}},"md":{"description":null,"value":1024,"type":"dimension","extensions":{"org.lukasoppermann.figmaDesignTokens":{"exportKey":"breakpoint"}}}},"spacing":{"10":{"description":null,"type":"custom-spacing","value":{"top":10,"bottom":10,"left":10,"right":10},"extensions":{"org.lukasoppermann.figmaDesignTokens":{"exportKey":"spacing"}}},"mixed":{"description":null,"type":"custom-spacing","value":{"top":10,"bottom":30,"left":20,"right":20},"extensions":{"org.lukasoppermann.figmaDesignTokens":{"exportKey":"spacing"}}},"top":{"description":null,"type":"custom-spacing","value":{"top":10,"bottom":0,"left":0,"right":0},"extensions":{"org.lukasoppermann.figmaDesignTokens":{"exportKey":"spacing"}}}},"borders":{"single":{"description":null,"type":"custom-stroke","value":{"align":"inside","dashPattern":[0,0],"lineCap":"none","lineJoin":"miter","miterLimit":4,"weight":5,"color":"#000000ff"},"extensions":{"org.lukasoppermann.figmaDesignTokens":{"exportKey":"border"}}},"dashed outside":{"description":null,"type":"custom-stroke","value":{"align":"outside","dashPattern":[5,5,3,3],"lineCap":"none","lineJoin":"miter","miterLimit":4,"weight":5,"color":"#000000ff"},"extensions":{"org.lukasoppermann.figmaDesignTokens":{"exportKey":"border"}}},"single (style)":{"description":null,"type":"custom-stroke","value":{"align":"inside","dashPattern":[0,0],"lineCap":"none","lineJoin":"miter","miterLimit":4,"weight":5,"color":"#044affff"},"extensions":{"org.lukasoppermann.figmaDesignTokens":{"exportKey":"border"}}},"unsupported":{"multiple borders":{"description":null,"type":"custom-stroke","value":{"align":"inside","dashPattern":[5,10],"lineCap":"none","lineJoin":"miter","miterLimit":4,"weight":5,"color":"#ffe600ff"},"extensions":{"org.lukasoppermann.figmaDesignTokens":{"exportKey":"border"}}}}},"radius":{"5":{"description":null,"type":"custom-radius","value":{"smoothing":0,"topLeft":5,"topRight":5,"bottomLeft":5,"bottomRight":5},"extensions":{"org.lukasoppermann.figmaDesignTokens":{"exportKey":"radius"}}}},"radii":{"smoothing":{"description":null,"type":"custom-radius","value":{"smoothing":0.75,"topLeft":10,"topRight":10,"bottomLeft":10,"bottomRight":10},"extensions":{"org.lukasoppermann.figmaDesignTokens":{"exportKey":"radius"}}},"mixed":{"description":null,"type":"custom-radius","value":{"smoothing":0,"topLeft":5.5,"topRight":10,"bottomLeft":20,"bottomRight":15},"extensions":{"org.lukasoppermann.figmaDesignTokens":{"exportKey":"radius"}}}},"motion":{"move in":{"description":null,"type":"custom-transition","value":{"transitionType":"move_in","duration":0.5,"direction":"left","easingType":"cubicBezier","easingFunction":{"x1":0.41999998688697815,"x2":1,"y1":0,"y2":1}},"extensions":{"org.lukasoppermann.figmaDesignTokens":{"exportKey":"motion"}}},"dissolve":{"description":null,"type":"custom-transition","value":{"transitionType":"dissolve","duration":0.45,"easingType":"cubicBezier","easingFunction":{"x1":0.6968395709991455,"x2":0.06683959811925888,"y1":0.052326660603284836,"y2":0.9323266744613647}},"extensions":{"org.lukasoppermann.figmaDesignTokens":{"exportKey":"motion"}}},"smart":{"description":null,"type":"custom-transition","value":{"transitionType":"smart_animate","duration":0.5,"easingType":"cubicBezier","easingFunction":{"x1":0,"x2":1,"y1":0,"y2":1}},"extensions":{"org.lukasoppermann.figmaDesignTokens":{"exportKey":"motion"}}},"push":{"description":null,"type":"custom-transition","value":{"transitionType":"push","duration":0.5,"direction":"left","easingType":"cubicBezier","easingFunction":{"x1":0.30000001192092896,"x2":0.699999988079071,"y1":-0.05000000074505806,"y2":-0.5}},"extensions":{"org.lukasoppermann.figmaDesignTokens":{"exportKey":"motion"}}},"bouncy":{"description":null,"type":"custom-transition","value":{"transitionType":"push","duration":0.958,"direction":"left","easingType":"spring","easingFunction":{"mass":1,"stiffness":600,"damping":15}},"extensions":{"org.lukasoppermann.figmaDesignTokens":{"exportKey":"motion"}}},"custom spring":{"description":null,"type":"custom-transition","value":{"transitionType":"push","duration":0.744,"direction":"left","easingType":"spring","easingFunction":{"mass":1,"stiffness":300,"damping":20}},"extensions":{"org.lukasoppermann.figmaDesignTokens":{"exportKey":"motion"}}}},"opacities":{"0.25":{"description":null,"value":0.25,"type":"custom-opacity","extensions":{"org.lukasoppermann.figmaDesignTokens":{"exportKey":"opacity"}}}},"opacity":{"full":{"description":null,"value":1,"type":"custom-opacity","extensions":{"org.lukasoppermann.figmaDesignTokens":{"exportKey":"opacity"}}},"half":{"description":null,"value":0.5,"type":"custom-opacity","extensions":{"org.lukasoppermann.figmaDesignTokens":{"exportKey":"opacity"}}}},"gradient":{"gradient":{"single with multiple color stops":{"description":"Four color stops from yellow to red","type":"custom-gradient","value":{"gradientType":"radial","rotation":180,"stops":[{"position":0,"color":"#ffb800ff"},{"position":0.34,"color":"#ff8a00ff"},{"position":0.65,"color":"#ff2e00ff"},{"position":1,"color":"#ff0000ff"}]},"extensions":{"org.lukasoppermann.figmaDesignTokens":{"styleId":"S:86b7ea8e4f88825c7ab660ae5f7cbbadfe6eb72f,","exportKey":"gradient"}}},"multiplegrad":{"0":{"type":"custom-gradient","value":{"gradientType":"linear","rotation":180,"stops":[{"position":0,"color":"#ffb800ff"},{"position":1,"color":"#ffb80000"}]}},"1":{"type":"custom-gradient","value":{"gradientType":"radial","rotation":180,"stops":[{"position":0,"color":"#ffffffff"},{"position":1,"color":"#ffffff00"}]}},"2":{"type":"custom-gradient","value":{"gradientType":"angular","rotation":180,"stops":[{"position":0,"color":"#cf3030ff"},{"position":1,"color":"#ffffff00"}]}},"3":{"type":"custom-gradient","value":{"gradientType":"diamond","rotation":180,"stops":[{"position":0,"color":"#4a4fccff"},{"position":0.23,"color":"#ffffff00"}]}},"description":"","extensions":{"org.lukasoppermann.figmaDesignTokens":{"styleId":"S:8ecc948b0d4487a6c702db3a947317e19be8fe7c,","exportKey":"gradient"}}}}},"color":{"colors":{"semi red":{"description":"A red with a 50% opacity","type":"color","value":"#ff5f0480","blendMode":"normal","extensions":{"org.lukasoppermann.figmaDesignTokens":{"styleId":"S:73ee61b85a05b803a735041e06d604cf5b5e396c,","exportKey":"color"}}},"multiple fills":{"0":{"type":"color","value":"#40ffbaff","blendMode":"normal"},"1":{"type":"color","value":"#0000001a","blendMode":"normal"},"description":"","extensions":{"org.lukasoppermann.figmaDesignTokens":{"styleId":"S:4a3029d323d8fb0c05dee39a983dafea20d7221e,","exportKey":"color"}}},"single blue":{"description":"","type":"color","value":"#044affff","blendMode":"normal","extensions":{"org.lukasoppermann.figmaDesignTokens":{"styleId":"S:41c3b1bbb20c349db5198426c9f21eee91270703,","exportKey":"color"}}},"ref blue":{"description":"Some other description","type":"color","value":"{color.colors.single blue}","blendMode":"normal","extensions":{"org.lukasoppermann.figmaDesignTokens":{"styleId":"S:a466a5c4f753617558885425bf0c42b7a53fcda4,","exportKey":"color","alias":"color.colors.single blue"}}},"empty":{"description":"","type":"color","value":"#00000000","blendMode":"normal","extensions":{"org.lukasoppermann.figmaDesignTokens":{"styleId":"S:5e1d174ea8c7f59af7d8eeb52856a48cfe285856,","exportKey":"color"}}},"special characters":{"đŸ˜…":{"description":"Emoji","type":"color","value":"#40df50ff","blendMode":"normal","extensions":{"org.lukasoppermann.figmaDesignTokens":{"styleId":"S:0eca3633c52956ddb97940c7445007a90b937be1,","exportKey":"color"}}},"änderung":{"description":"","type":"color","value":"#3456afff","blendMode":"normal","extensions":{"org.lukasoppermann.figmaDesignTokens":{"styleId":"S:79e9a7afce7078dc29994d2791959ebf9f45efa5,","exportKey":"color"}}}}}},"grid":{"multiple":{"0":{"type":"custom-grid","value":{"pattern":"columns","sectionSize":1,"gutterSize":20,"alignment":"max","count":7,"offset":3}},"1":{"type":"custom-grid","value":{"pattern":"columns","sectionSize":12,"gutterSize":20,"alignment":"center","count":6}},"2":{"type":"custom-grid","value":{"pattern":"columns","gutterSize":20,"alignment":"stretch","count":5,"offset":10}},"3":{"type":"custom-grid","value":{"pattern":"columns","sectionSize":34,"gutterSize":20,"alignment":"min","count":4,"offset":13}},"4":{"type":"custom-grid","value":{"pattern":"rows","sectionSize":8,"gutterSize":20,"alignment":"max","count":5,"offset":10}},"5":{"type":"custom-grid","value":{"pattern":"rows","sectionSize":8,"gutterSize":10,"alignment":"center","count":4}},"6":{"type":"custom-grid","value":{"pattern":"rows","sectionSize":8,"gutterSize":20,"alignment":"min","count":3,"offset":10}},"7":{"type":"custom-grid","value":{"pattern":"grid","sectionSize":8}},"description":"Grid / multiple description text","extensions":{"org.lukasoppermann.figmaDesignTokens":{"styleId":"S:9431d2997261a6e36216749d0d5927407d95c07f,","exportKey":"grid"}}},"single":{"description":null,"type":"custom-grid","value":{"pattern":"columns","sectionSize":11,"gutterSize":20,"alignment":"center","count":5},"extensions":{"org.lukasoppermann.figmaDesignTokens":{"styleId":"S:8892f13476c0db3092e552a57f31a286640fc9d5,","exportKey":"grid"}}}},"font":{"body":{"h3":{"description":"Comment for text style","type":"custom-fontStyle","value":{"fontSize":20,"textDecoration":"none","fontFamily":"Akzidenz-Grotesk Pro","fontWeight":700,"fontStyle":"normal","fontStretch":"condensed","letterSpacing":0.4,"lineHeight":32,"paragraphIndent":5,"paragraphSpacing":8,"textCase":"uppercase"},"extensions":{"org.lukasoppermann.figmaDesignTokens":{"styleId":"S:a63c53704c21e63e557974232108ecd0ef16f3e2,","exportKey":"font"}}},"h4 strike through":{"description":"With stylisitc options","type":"custom-fontStyle","value":{"fontSize":16,"textDecoration":"line-through","fontFamily":"Roboto","fontWeight":500,"fontStyle":"italic","fontStretch":"normal","letterSpacing":0,"lineHeight":19.2,"paragraphIndent":0,"paragraphSpacing":0,"textCase":"none"},"extensions":{"org.lukasoppermann.figmaDesignTokens":{"styleId":"S:c9389cf45c1db49fd46f961809ca352488397f7d,","exportKey":"font"}}},"italic":{"type":"custom-fontStyle","value":{"fontSize":12,"textDecoration":"none","fontFamily":"Roboto","fontWeight":400,"fontStyle":"italic","fontStretch":"normal","letterSpacing":0,"lineHeight":14,"paragraphIndent":0,"paragraphSpacing":0,"textCase":"none"},"extensions":{"org.lukasoppermann.figmaDesignTokens":{"styleId":"S:9928779749ba4b821d81880d1e41ccefd2b76951,","exportKey":"font"}}},"extra bold condensed italic":{"type":"custom-fontStyle","value":{"fontSize":12,"textDecoration":"none","fontFamily":"Akzidenz-Grotesk Pro","fontWeight":800,"fontStyle":"italic","fontStretch":"condensed","letterSpacing":0,"lineHeight":14.4,"paragraphIndent":0,"paragraphSpacing":0,"textCase":"none"},"extensions":{"org.lukasoppermann.figmaDesignTokens":{"styleId":"S:2eab5c798e7b6de010927c757b69f3d605097439,","exportKey":"font"}}},"medium extended italic":{"type":"custom-fontStyle","value":{"fontSize":20,"textDecoration":"none","fontFamily":"Akzidenz-Grotesk Pro","fontWeight":500,"fontStyle":"italic","fontStretch":"expanded","letterSpacing":0,"lineHeight":24,"paragraphIndent":0,"paragraphSpacing":0,"textCase":"none"},"extensions":{"org.lukasoppermann.figmaDesignTokens":{"styleId":"S:65286eb024a509b4cfaef329affbae773fb73a5e,","exportKey":"font"}}},"super":{"type":"custom-fontStyle","value":{"fontSize":22,"textDecoration":"none","fontFamily":"Akzidenz-Grotesk Pro","fontWeight":900,"fontStyle":"normal","fontStretch":"normal","letterSpacing":0,"lineHeight":26.4,"paragraphIndent":0,"paragraphSpacing":0,"textCase":"none"},"extensions":{"org.lukasoppermann.figmaDesignTokens":{"styleId":"S:32eb85f3238ccaa59c15d6de911c57afa96ba58a,","exportKey":"font"}}}}},"effect":{"drop shadow (single)":{"description":"Drop shadow single description","type":"custom-shadow","value":{"shadowType":"dropShadow","radius":4,"color":"#00000040","offsetX":0,"offsetY":4,"spread":0},"extensions":{"org.lukasoppermann.figmaDesignTokens":{"styleId":"S:cef90a92a0f669207251e8e2da214b6393abc44c,","exportKey":"effect"}}},"inner shadow (multiple)":{"0":{"type":"custom-shadow","value":{"shadowType":"innerShadow","radius":4,"color":"#00000040","offsetX":0,"offsetY":4,"spread":0}},"1":{"type":"custom-shadow","value":{"shadowType":"innerShadow","radius":1,"color":"#000000ff","offsetX":10,"offsetY":100,"spread":0.5}},"2":{"type":"custom-shadow","value":{"shadowType":"innerShadow","radius":3,"color":"#00000040","offsetX":-4,"offsetY":2,"spread":11}},"description":null,"extensions":{"org.lukasoppermann.figmaDesignTokens":{"styleId":"S:23c7adc38dc6cf8e157c05f8885409d3e1cf4de2,","exportKey":"effect"}}},"layer blur":{"description":null,"extensions":{"org.lukasoppermann.figmaDesignTokens":{"styleId":"S:8a600422767982ef9e712451bb9f60a9d2c0e04f,","exportKey":"effect"}}},"background blur":{"description":null,"extensions":{"org.lukasoppermann.figmaDesignTokens":{"styleId":"S:d9246d6c5234e471b17585324379ec19abcf03f4,","exportKey":"effect"}}}},"typography":{"body":{"h3":{"description":"Comment for text style","fontSize":{"type":"dimension","value":20},"textDecoration":{"type":"string","value":"none"},"fontFamily":{"type":"string","value":"Akzidenz-Grotesk Pro"},"fontWeight":{"type":"number","value":700},"fontStyle":{"type":"string","value":"normal"},"fontStretch":{"type":"string","value":"condensed"},"letterSpacing":{"type":"dimension","value":0.4},"lineHeight":{"type":"dimension","value":32},"paragraphIndent":{"type":"dimension","value":5},"paragraphSpacing":{"type":"dimension","value":8},"textCase":{"type":"string","value":"uppercase"}},"h4 strike through":{"description":"With stylisitc options","fontSize":{"type":"dimension","value":16},"textDecoration":{"type":"string","value":"line-through"},"fontFamily":{"type":"string","value":"Roboto"},"fontWeight":{"type":"number","value":500},"fontStyle":{"type":"string","value":"italic"},"fontStretch":{"type":"string","value":"normal"},"letterSpacing":{"type":"dimension","value":0},"lineHeight":{"type":"dimension","value":19.2},"paragraphIndent":{"type":"dimension","value":0},"paragraphSpacing":{"type":"dimension","value":0},"textCase":{"type":"string","value":"none"}},"italic":{"fontSize":{"type":"dimension","value":12},"textDecoration":{"type":"string","value":"none"},"fontFamily":{"type":"string","value":"Roboto"},"fontWeight":{"type":"number","value":400},"fontStyle":{"type":"string","value":"italic"},"fontStretch":{"type":"string","value":"normal"},"letterSpacing":{"type":"dimension","value":0},"lineHeight":{"type":"dimension","value":14},"paragraphIndent":{"type":"dimension","value":0},"paragraphSpacing":{"type":"dimension","value":0},"textCase":{"type":"string","value":"none"}},"extra bold condensed italic":{"fontSize":{"type":"dimension","value":12},"textDecoration":{"type":"string","value":"none"},"fontFamily":{"type":"string","value":"Akzidenz-Grotesk Pro"},"fontWeight":{"type":"number","value":800},"fontStyle":{"type":"string","value":"italic"},"fontStretch":{"type":"string","value":"condensed"},"letterSpacing":{"type":"dimension","value":0},"lineHeight":{"type":"dimension","value":14.4},"paragraphIndent":{"type":"dimension","value":0},"paragraphSpacing":{"type":"dimension","value":0},"textCase":{"type":"string","value":"none"}},"medium extended italic":{"fontSize":{"type":"dimension","value":20},"textDecoration":{"type":"string","value":"none"},"fontFamily":{"type":"string","value":"Akzidenz-Grotesk Pro"},"fontWeight":{"type":"number","value":500},"fontStyle":{"type":"string","value":"italic"},"fontStretch":{"type":"string","value":"expanded"},"letterSpacing":{"type":"dimension","value":0},"lineHeight":{"type":"dimension","value":24},"paragraphIndent":{"type":"dimension","value":0},"paragraphSpacing":{"type":"dimension","value":0},"textCase":{"type":"string","value":"none"}},"super":{"fontSize":{"type":"dimension","value":22},"textDecoration":{"type":"string","value":"none"},"fontFamily":{"type":"string","value":"Akzidenz-Grotesk Pro"},"fontWeight":{"type":"number","value":900},"fontStyle":{"type":"string","value":"normal"},"fontStretch":{"type":"string","value":"normal"},"letterSpacing":{"type":"dimension","value":0},"lineHeight":{"type":"dimension","value":26.4},"paragraphIndent":{"type":"dimension","value":0},"paragraphSpacing":{"type":"dimension","value":0},"textCase":{"type":"string","value":"none"}}}}} \ No newline at end of file +{ + "sizes": { + "32": { + "description": "32.72px spacer component", + "value": 32.72, + "type": "dimension", + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { "exportKey": "size" } + } + }, + "40": { + "description": null, + "value": 40, + "type": "dimension", + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { "exportKey": "size" } + } + }, + "60": { + "description": null, + "value": 60, + "type": "dimension", + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { "exportKey": "size" } + } + }, + "80": { + "description": null, + "value": 80, + "type": "dimension", + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { "exportKey": "size" } + } + }, + "plain token": { + "description": null, + "value": 200, + "type": "dimension", + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { "exportKey": "size" } + } + }, + "token in frame": { + "description": null, + "value": 200, + "type": "dimension", + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { "exportKey": "size" } + } + }, + "token in group": { + "description": null, + "value": 200, + "type": "dimension", + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { "exportKey": "size" } + } + }, + "in variant 60": { + "description": null, + "value": 60, + "type": "dimension", + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { "exportKey": "size" } + } + }, + "in variant 90": { + "description": null, + "value": 90, + "type": "dimension", + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { "exportKey": "size" } + } + }, + "in variant 120": { + "description": null, + "value": 120, + "type": "dimension", + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { "exportKey": "size" } + } + }, + "frame": { + "description": null, + "value": 32, + "type": "dimension", + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { "exportKey": "size" } + } + }, + "rect": { + "description": null, + "value": 32, + "type": "dimension", + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { "exportKey": "size" } + } + }, + "shape in component": { + "description": "Should use 32px not 20 from inside shape", + "value": 32, + "type": "dimension", + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { "exportKey": "size" } + } + } + }, + "breakpoints": { + "lg": { + "description": null, + "value": 1280, + "type": "dimension", + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { "exportKey": "breakpoint" } + } + }, + "sm": { + "description": null, + "value": 768, + "type": "dimension", + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { "exportKey": "breakpoint" } + } + }, + "md": { + "description": null, + "value": 1024, + "type": "dimension", + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { "exportKey": "breakpoint" } + } + } + }, + "spacing": { + "10": { + "description": null, + "type": "custom-spacing", + "value": { "top": 10, "bottom": 10, "left": 10, "right": 10 }, + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { "exportKey": "spacing" } + } + }, + "mixed": { + "description": null, + "type": "custom-spacing", + "value": { "top": 10, "bottom": 30, "left": 20, "right": 20 }, + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { "exportKey": "spacing" } + } + }, + "top": { + "description": null, + "type": "custom-spacing", + "value": { "top": 10, "bottom": 0, "left": 0, "right": 0 }, + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { "exportKey": "spacing" } + } + } + }, + "borders": { + "single": { + "description": null, + "type": "custom-stroke", + "value": { + "align": "inside", + "dashPattern": [0, 0], + "lineCap": "none", + "lineJoin": "miter", + "miterLimit": 4, + "weight": 5, + "color": "#000000ff" + }, + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { "exportKey": "border" } + } + }, + "dashed outside": { + "description": null, + "type": "custom-stroke", + "value": { + "align": "outside", + "dashPattern": [5, 5, 3, 3], + "lineCap": "none", + "lineJoin": "miter", + "miterLimit": 4, + "weight": 5, + "color": "#000000ff" + }, + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { "exportKey": "border" } + } + }, + "single (style)": { + "description": null, + "type": "custom-stroke", + "value": { + "align": "inside", + "dashPattern": [0, 0], + "lineCap": "none", + "lineJoin": "miter", + "miterLimit": 4, + "weight": 5, + "color": "#044affff" + }, + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { "exportKey": "border" } + } + }, + "unsupported": { + "multiple borders": { + "description": null, + "type": "custom-stroke", + "value": { + "align": "inside", + "dashPattern": [5, 10], + "lineCap": "none", + "lineJoin": "miter", + "miterLimit": 4, + "weight": 5, + "color": "#ffe600ff" + }, + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { "exportKey": "border" } + } + } + } + }, + "radius": { + "5": { + "description": null, + "type": "custom-radius", + "value": { + "smoothing": 0, + "topLeft": 5, + "topRight": 5, + "bottomLeft": 5, + "bottomRight": 5 + }, + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { "exportKey": "radius" } + } + } + }, + "radii": { + "smoothing": { + "description": null, + "type": "custom-radius", + "value": { + "smoothing": 0.75, + "topLeft": 10, + "topRight": 10, + "bottomLeft": 10, + "bottomRight": 10 + }, + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { "exportKey": "radius" } + } + }, + "mixed": { + "description": null, + "type": "custom-radius", + "value": { + "smoothing": 0, + "topLeft": 5.5, + "topRight": 10, + "bottomLeft": 20, + "bottomRight": 15 + }, + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { "exportKey": "radius" } + } + } + }, + "motion": { + "move in": { + "description": null, + "type": "custom-transition", + "value": { + "transitionType": "move_in", + "duration": 0.5, + "direction": "left", + "easingType": "cubicBezier", + "easingFunction": { + "x1": 0.41999998688697815, + "x2": 1, + "y1": 0, + "y2": 1 + } + }, + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { "exportKey": "motion" } + } + }, + "dissolve": { + "description": null, + "type": "custom-transition", + "value": { + "transitionType": "dissolve", + "duration": 0.45, + "easingType": "cubicBezier", + "easingFunction": { + "x1": 0.6968395709991455, + "x2": 0.06683959811925888, + "y1": 0.052326660603284836, + "y2": 0.9323266744613647 + } + }, + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { "exportKey": "motion" } + } + }, + "smart": { + "description": null, + "type": "custom-transition", + "value": { + "transitionType": "smart_animate", + "duration": 0.5, + "easingType": "cubicBezier", + "easingFunction": { "x1": 0, "x2": 1, "y1": 0, "y2": 1 } + }, + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { "exportKey": "motion" } + } + }, + "push": { + "description": null, + "type": "custom-transition", + "value": { + "transitionType": "push", + "duration": 0.5, + "direction": "left", + "easingType": "cubicBezier", + "easingFunction": { + "x1": 0.30000001192092896, + "x2": 0.699999988079071, + "y1": -0.05000000074505806, + "y2": -0.5 + } + }, + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { "exportKey": "motion" } + } + }, + "bouncy": { + "description": null, + "type": "custom-transition", + "value": { + "transitionType": "push", + "duration": 0.958, + "direction": "left", + "easingType": "spring", + "easingFunction": { "mass": 1, "stiffness": 600, "damping": 15 } + }, + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { "exportKey": "motion" } + } + }, + "custom spring": { + "description": null, + "type": "custom-transition", + "value": { + "transitionType": "push", + "duration": 0.744, + "direction": "left", + "easingType": "spring", + "easingFunction": { "mass": 1, "stiffness": 300, "damping": 20 } + }, + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { "exportKey": "motion" } + } + } + }, + "opacities": { + "0.25": { + "description": null, + "value": 0.25, + "type": "custom-opacity", + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { "exportKey": "opacity" } + } + } + }, + "opacity": { + "full": { + "description": null, + "value": 1, + "type": "custom-opacity", + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { "exportKey": "opacity" } + } + }, + "half": { + "description": null, + "value": 0.5, + "type": "custom-opacity", + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { "exportKey": "opacity" } + } + } + }, + "gradient": { + "gradient": { + "single with multiple color stops": { + "description": "Four color stops from yellow to red", + "type": "custom-gradient", + "value": { + "gradientType": "radial", + "rotation": 180, + "stops": [ + { "position": 0, "color": "#ffb800ff" }, + { "position": 0.34, "color": "#ff8a00ff" }, + { "position": 0.65, "color": "#ff2e00ff" }, + { "position": 1, "color": "#ff0000ff" } + ] + }, + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { + "styleId": "S:86b7ea8e4f88825c7ab660ae5f7cbbadfe6eb72f,", + "exportKey": "gradient" + } + } + }, + "multiplegrad": { + "0": { + "type": "custom-gradient", + "value": { + "gradientType": "linear", + "rotation": 180, + "stops": [ + { "position": 0, "color": "#ffb800ff" }, + { "position": 1, "color": "#ffb80000" } + ] + } + }, + "1": { + "type": "custom-gradient", + "value": { + "gradientType": "radial", + "rotation": 180, + "stops": [ + { "position": 0, "color": "#ffffffff" }, + { "position": 1, "color": "#ffffff00" } + ] + } + }, + "2": { + "type": "custom-gradient", + "value": { + "gradientType": "angular", + "rotation": 180, + "stops": [ + { "position": 0, "color": "#cf3030ff" }, + { "position": 1, "color": "#ffffff00" } + ] + } + }, + "3": { + "type": "custom-gradient", + "value": { + "gradientType": "diamond", + "rotation": 180, + "stops": [ + { "position": 0, "color": "#4a4fccff" }, + { "position": 0.23, "color": "#ffffff00" } + ] + } + }, + "description": "", + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { + "styleId": "S:8ecc948b0d4487a6c702db3a947317e19be8fe7c,", + "exportKey": "gradient" + } + } + } + } + }, + "color": { + "colors": { + "semi red": { + "description": "A red with a 50% opacity", + "type": "color", + "value": "#ff5f0480", + "blendMode": "normal", + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { + "styleId": "S:73ee61b85a05b803a735041e06d604cf5b5e396c,", + "exportKey": "color" + } + } + }, + "multiple fills": { + "0": { "type": "color", "value": "#40ffbaff", "blendMode": "normal" }, + "1": { "type": "color", "value": "#0000001a", "blendMode": "normal" }, + "description": "", + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { + "styleId": "S:4a3029d323d8fb0c05dee39a983dafea20d7221e,", + "exportKey": "color" + } + } + }, + "single blue": { + "description": "", + "type": "color", + "value": "#044affff", + "blendMode": "normal", + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { + "styleId": "S:41c3b1bbb20c349db5198426c9f21eee91270703,", + "exportKey": "color" + } + } + }, + "ref blue": { + "description": "Some other description", + "type": "color", + "value": "{color.colors.single blue}", + "blendMode": "normal", + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { + "styleId": "S:a466a5c4f753617558885425bf0c42b7a53fcda4,", + "exportKey": "color", + "alias": "color.colors.single blue" + } + } + }, + "empty": { + "description": "", + "type": "color", + "value": "#00000000", + "blendMode": "normal", + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { + "styleId": "S:5e1d174ea8c7f59af7d8eeb52856a48cfe285856,", + "exportKey": "color" + } + } + }, + "special characters": { + "đŸ˜…": { + "description": "Emoji", + "type": "color", + "value": "#40df50ff", + "blendMode": "normal", + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { + "styleId": "S:0eca3633c52956ddb97940c7445007a90b937be1,", + "exportKey": "color" + } + } + }, + "änderung": { + "description": "", + "type": "color", + "value": "#3456afff", + "blendMode": "normal", + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { + "styleId": "S:79e9a7afce7078dc29994d2791959ebf9f45efa5,", + "exportKey": "color" + } + } + } + } + } + }, + "grid": { + "multiple": { + "0": { + "type": "custom-grid", + "value": { + "pattern": "columns", + "sectionSize": 1, + "gutterSize": 20, + "alignment": "max", + "count": 7, + "offset": 3 + } + }, + "1": { + "type": "custom-grid", + "value": { + "pattern": "columns", + "sectionSize": 12, + "gutterSize": 20, + "alignment": "center", + "count": 6 + } + }, + "2": { + "type": "custom-grid", + "value": { + "pattern": "columns", + "gutterSize": 20, + "alignment": "stretch", + "count": 5, + "offset": 10 + } + }, + "3": { + "type": "custom-grid", + "value": { + "pattern": "columns", + "sectionSize": 34, + "gutterSize": 20, + "alignment": "min", + "count": 4, + "offset": 13 + } + }, + "4": { + "type": "custom-grid", + "value": { + "pattern": "rows", + "sectionSize": 8, + "gutterSize": 20, + "alignment": "max", + "count": 5, + "offset": 10 + } + }, + "5": { + "type": "custom-grid", + "value": { + "pattern": "rows", + "sectionSize": 8, + "gutterSize": 10, + "alignment": "center", + "count": 4 + } + }, + "6": { + "type": "custom-grid", + "value": { + "pattern": "rows", + "sectionSize": 8, + "gutterSize": 20, + "alignment": "min", + "count": 3, + "offset": 10 + } + }, + "7": { + "type": "custom-grid", + "value": { "pattern": "grid", "sectionSize": 8 } + }, + "description": "Grid / multiple description text", + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { + "styleId": "S:9431d2997261a6e36216749d0d5927407d95c07f,", + "exportKey": "grid" + } + } + }, + "single": { + "description": null, + "type": "custom-grid", + "value": { + "pattern": "columns", + "sectionSize": 11, + "gutterSize": 20, + "alignment": "center", + "count": 5 + }, + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { + "styleId": "S:8892f13476c0db3092e552a57f31a286640fc9d5,", + "exportKey": "grid" + } + } + } + }, + "font": { + "body": { + "h3": { + "description": "Comment for text style", + "type": "custom-fontStyle", + "value": { + "fontSize": 20, + "textDecoration": "none", + "fontFamily": "Akzidenz-Grotesk Pro", + "fontWeight": 700, + "fontStyle": "normal", + "fontStretch": "condensed", + "letterSpacing": 0.4, + "lineHeight": 32, + "paragraphIndent": 5, + "paragraphSpacing": 8, + "textCase": "uppercase" + }, + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { + "styleId": "S:a63c53704c21e63e557974232108ecd0ef16f3e2,", + "exportKey": "font" + } + } + }, + "h4 strike through": { + "description": "With stylisitc options", + "type": "custom-fontStyle", + "value": { + "fontSize": 16, + "textDecoration": "line-through", + "fontFamily": "Roboto", + "fontWeight": 500, + "fontStyle": "italic", + "fontStretch": "normal", + "letterSpacing": 0, + "lineHeight": 19.2, + "paragraphIndent": 0, + "paragraphSpacing": 0, + "textCase": "none" + }, + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { + "styleId": "S:c9389cf45c1db49fd46f961809ca352488397f7d,", + "exportKey": "font" + } + } + }, + "italic": { + "type": "custom-fontStyle", + "value": { + "fontSize": 12, + "textDecoration": "none", + "fontFamily": "Roboto", + "fontWeight": 400, + "fontStyle": "italic", + "fontStretch": "normal", + "letterSpacing": 0, + "lineHeight": 14, + "paragraphIndent": 0, + "paragraphSpacing": 0, + "textCase": "none" + }, + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { + "styleId": "S:9928779749ba4b821d81880d1e41ccefd2b76951,", + "exportKey": "font" + } + } + }, + "extra bold condensed italic": { + "type": "custom-fontStyle", + "value": { + "fontSize": 12, + "textDecoration": "none", + "fontFamily": "Akzidenz-Grotesk Pro", + "fontWeight": 800, + "fontStyle": "italic", + "fontStretch": "condensed", + "letterSpacing": 0, + "lineHeight": 14.4, + "paragraphIndent": 0, + "paragraphSpacing": 0, + "textCase": "none" + }, + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { + "styleId": "S:2eab5c798e7b6de010927c757b69f3d605097439,", + "exportKey": "font" + } + } + }, + "medium extended italic": { + "type": "custom-fontStyle", + "value": { + "fontSize": 20, + "textDecoration": "none", + "fontFamily": "Akzidenz-Grotesk Pro", + "fontWeight": 500, + "fontStyle": "italic", + "fontStretch": "expanded", + "letterSpacing": 0, + "lineHeight": 24, + "paragraphIndent": 0, + "paragraphSpacing": 0, + "textCase": "none" + }, + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { + "styleId": "S:65286eb024a509b4cfaef329affbae773fb73a5e,", + "exportKey": "font" + } + } + }, + "super": { + "type": "custom-fontStyle", + "value": { + "fontSize": 22, + "textDecoration": "none", + "fontFamily": "Akzidenz-Grotesk Pro", + "fontWeight": 900, + "fontStyle": "normal", + "fontStretch": "normal", + "letterSpacing": 0, + "lineHeight": 26.4, + "paragraphIndent": 0, + "paragraphSpacing": 0, + "textCase": "none" + }, + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { + "styleId": "S:32eb85f3238ccaa59c15d6de911c57afa96ba58a,", + "exportKey": "font" + } + } + } + } + }, + "effect": { + "drop shadow (single)": { + "description": "Drop shadow single description", + "type": "custom-shadow", + "value": { + "shadowType": "dropShadow", + "radius": 4, + "color": "#00000040", + "offsetX": 0, + "offsetY": 4, + "spread": 0 + }, + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { + "styleId": "S:cef90a92a0f669207251e8e2da214b6393abc44c,", + "exportKey": "effect" + } + } + }, + "inner shadow (multiple)": { + "0": { + "type": "custom-shadow", + "value": { + "shadowType": "innerShadow", + "radius": 4, + "color": "#00000040", + "offsetX": 0, + "offsetY": 4, + "spread": 0 + } + }, + "1": { + "type": "custom-shadow", + "value": { + "shadowType": "innerShadow", + "radius": 1, + "color": "#000000ff", + "offsetX": 10, + "offsetY": 100, + "spread": 0.5 + } + }, + "2": { + "type": "custom-shadow", + "value": { + "shadowType": "innerShadow", + "radius": 3, + "color": "#00000040", + "offsetX": -4, + "offsetY": 2, + "spread": 11 + } + }, + "description": null, + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { + "styleId": "S:23c7adc38dc6cf8e157c05f8885409d3e1cf4de2,", + "exportKey": "effect" + } + } + }, + "layer blur": { + "description": null, + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { + "styleId": "S:8a600422767982ef9e712451bb9f60a9d2c0e04f,", + "exportKey": "effect" + } + } + }, + "background blur": { + "description": null, + "extensions": { + "org.lukasoppermann.figmaDesignTokens": { + "styleId": "S:d9246d6c5234e471b17585324379ec19abcf03f4,", + "exportKey": "effect" + } + } + } + }, + "typography": { + "body": { + "h3": { + "description": "Comment for text style", + "fontSize": { "type": "dimension", "value": 20 }, + "textDecoration": { "type": "string", "value": "none" }, + "fontFamily": { "type": "string", "value": "Akzidenz-Grotesk Pro" }, + "fontWeight": { "type": "number", "value": 700 }, + "fontStyle": { "type": "string", "value": "normal" }, + "fontStretch": { "type": "string", "value": "condensed" }, + "letterSpacing": { "type": "dimension", "value": 0.4 }, + "lineHeight": { "type": "dimension", "value": 32 }, + "paragraphIndent": { "type": "dimension", "value": 5 }, + "paragraphSpacing": { "type": "dimension", "value": 8 }, + "textCase": { "type": "string", "value": "uppercase" } + }, + "h4 strike through": { + "description": "With stylisitc options", + "fontSize": { "type": "dimension", "value": 16 }, + "textDecoration": { "type": "string", "value": "line-through" }, + "fontFamily": { "type": "string", "value": "Roboto" }, + "fontWeight": { "type": "number", "value": 500 }, + "fontStyle": { "type": "string", "value": "italic" }, + "fontStretch": { "type": "string", "value": "normal" }, + "letterSpacing": { "type": "dimension", "value": 0 }, + "lineHeight": { "type": "dimension", "value": 19.2 }, + "paragraphIndent": { "type": "dimension", "value": 0 }, + "paragraphSpacing": { "type": "dimension", "value": 0 }, + "textCase": { "type": "string", "value": "none" } + }, + "italic": { + "fontSize": { "type": "dimension", "value": 12 }, + "textDecoration": { "type": "string", "value": "none" }, + "fontFamily": { "type": "string", "value": "Roboto" }, + "fontWeight": { "type": "number", "value": 400 }, + "fontStyle": { "type": "string", "value": "italic" }, + "fontStretch": { "type": "string", "value": "normal" }, + "letterSpacing": { "type": "dimension", "value": 0 }, + "lineHeight": { "type": "dimension", "value": 14 }, + "paragraphIndent": { "type": "dimension", "value": 0 }, + "paragraphSpacing": { "type": "dimension", "value": 0 }, + "textCase": { "type": "string", "value": "none" } + }, + "extra bold condensed italic": { + "fontSize": { "type": "dimension", "value": 12 }, + "textDecoration": { "type": "string", "value": "none" }, + "fontFamily": { "type": "string", "value": "Akzidenz-Grotesk Pro" }, + "fontWeight": { "type": "number", "value": 800 }, + "fontStyle": { "type": "string", "value": "italic" }, + "fontStretch": { "type": "string", "value": "condensed" }, + "letterSpacing": { "type": "dimension", "value": 0 }, + "lineHeight": { "type": "dimension", "value": 14.4 }, + "paragraphIndent": { "type": "dimension", "value": 0 }, + "paragraphSpacing": { "type": "dimension", "value": 0 }, + "textCase": { "type": "string", "value": "none" } + }, + "medium extended italic": { + "fontSize": { "type": "dimension", "value": 20 }, + "textDecoration": { "type": "string", "value": "none" }, + "fontFamily": { "type": "string", "value": "Akzidenz-Grotesk Pro" }, + "fontWeight": { "type": "number", "value": 500 }, + "fontStyle": { "type": "string", "value": "italic" }, + "fontStretch": { "type": "string", "value": "expanded" }, + "letterSpacing": { "type": "dimension", "value": 0 }, + "lineHeight": { "type": "dimension", "value": 24 }, + "paragraphIndent": { "type": "dimension", "value": 0 }, + "paragraphSpacing": { "type": "dimension", "value": 0 }, + "textCase": { "type": "string", "value": "none" } + }, + "super": { + "fontSize": { "type": "dimension", "value": 22 }, + "textDecoration": { "type": "string", "value": "none" }, + "fontFamily": { "type": "string", "value": "Akzidenz-Grotesk Pro" }, + "fontWeight": { "type": "number", "value": 900 }, + "fontStyle": { "type": "string", "value": "normal" }, + "fontStretch": { "type": "string", "value": "normal" }, + "letterSpacing": { "type": "dimension", "value": 0 }, + "lineHeight": { "type": "dimension", "value": 26.4 }, + "paragraphIndent": { "type": "dimension", "value": 0 }, + "paragraphSpacing": { "type": "dimension", "value": 0 }, + "textCase": { "type": "string", "value": "none" } + } + } + } +} diff --git a/transformTokens.js b/transformTokens.js index 218f2ab54..3920e321c 100644 --- a/transformTokens.js +++ b/transformTokens.js @@ -1,5 +1,7 @@ const StyleDictionary = require('style-dictionary') -const baseConfig = require('./config.json') +const deepMerge = require("deepmerge"); +const webConfig = require('./src/web/index.js') +const androidConfig = require("./src/android/index.js"); StyleDictionary.registerTransform({ name: 'size/px', @@ -23,37 +25,143 @@ StyleDictionary.registerTransform({ } }) -StyleDictionary.registerTransformGroup({ - name: 'custom/css', - transforms: StyleDictionary.transformGroup['css'].concat([ - 'size/px', - 'size/percent' - ]) -}) - -StyleDictionary.registerTransformGroup({ - name: 'custom/less', - transforms: StyleDictionary.transformGroup['less'].concat([ - 'size/px', - 'size/percent' - ]) -}) - -StyleDictionary.registerTransformGroup({ - name: 'custom/scss', - transforms: StyleDictionary.transformGroup['scss'].concat([ - 'size/px', - 'size/percent' - ]) -}) - StyleDictionary.registerFilter({ name: 'validToken', matcher: function(token) { - return ['dimension', 'string', 'number', 'color'].includes(token.type) + return [ + "dimension", + "string", + "number", + "color", + "custom-spacing", + "custom-gradient", + "custom-fontStyle", + "custom-radius", + "custom-shadow", + ].includes(token.type); } }) -const StyleDictionaryExtended = StyleDictionary.extend(baseConfig) +const StyleDictionaryExtended = StyleDictionary.extend({ + ...deepMerge.all([androidConfig, webConfig]), + source: ["tokens/*.json"], + platforms: { + scss: { + transformGroup: "custom/css", + buildPath: "build/scss/", + files: [ + { + destination: "_variables.scss", + format: "scss/variables", + filter: "validToken", + }, + ], + }, + less: { + transformGroup: "custom/css", + buildPath: "build/less/", + files: [ + { + destination: "_variables.less", + format: "less/variables", + filter: "validToken", + }, + ], + }, + css: { + transformGroup: "custom/css", + buildPath: "build/css/", + files: [ + { + destination: "_variables.css", + format: "css/variables", + filter: "validToken", + options: { + showFileHeader: false, + }, + }, + ], + }, + "json-flat": { + transformGroup: "js", + buildPath: "build/json/", + files: [ + { + destination: "styles.json", + format: "json/flat", + filter: "validToken", + }, + ], + }, + ios: { + transformGroup: "ios", + buildPath: "build/ios/", + files: [ + { + destination: "StyleDictionaryColor.h", + format: "ios/colors.h", + className: "StyleDictionaryColor", + type: "StyleDictionaryColorName", + filter: { + type: "color", + }, + }, + { + destination: "StyleDictionaryColor.m", + format: "ios/colors.m", + className: "StyleDictionaryColor", + type: "StyleDictionaryColorName", + filter: { + type: "color", + }, + }, + { + destination: "StyleDictionarySize.h", + format: "ios/static.h", + className: "StyleDictionarySize", + type: "float", + filter: { + type: "number", + }, + }, + { + destination: "StyleDictionarySize.m", + format: "ios/static.m", + className: "StyleDictionarySize", + type: "float", + filter: { + type: "number", + }, + }, + ], + }, + + "ios-swift-separate-enums": { + transformGroup: "ios-swift-separate", + buildPath: "build/ios-swift/", + files: [ + { + destination: "StyleDictionaryColor.swift", + format: "ios-swift/enum.swift", + className: "StyleDictionaryColor", + filter: { + type: "color", + }, + }, + { + destination: "StyleDictionarySize.swift", + format: "ios-swift/enum.swift", + className: "StyleDictionarySize", + type: "float", + filter: { + type: "number", + }, + }, + ], + }, + }, +}); +console.log('StyleDictionaryExtended', StyleDictionaryExtended) + StyleDictionaryExtended.buildAllPlatforms()