├── .gitignore ├── README.md ├── __tests └── rules.test.js ├── bin └── index.js ├── package.json ├── pnpm-lock.yaml ├── samples ├── test1.js ├── test2.js ├── test3.js └── tw.txt └── src └── rules.js /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Tailwind to Panda CSS converter (for command line) 2 | 3 | This command line utility is designed to be used in the context of an editor where you use an extension like [Edit With Shell](https://marketplace.visualstudio.com/items?itemName=ryu1kn.edit-with-shell) to convert Tailwind CSS to [Panda CSS](https://panda-css.com/docs/concepts/recipes). 4 | 5 | # Installation 6 | 7 | ```sh 8 | npm install -g tw2panda-cli 9 | ``` 10 | 11 | # Usage 12 | 13 | To accept React or HTML code using Tailwind as STDIN and create Panda-CSS code as STDOUT: 14 | 15 | ```sh 16 | tw2panda 17 | ``` 18 | 19 | To explain the conversion in a comment add `--explain`: 20 | 21 | ```sh 22 | tw2panda --explain 23 | ``` 24 | 25 | To convert a line of Tailwind CSS into a [cva](https://panda-css.com/docs/concepts/recipes): 26 | 27 | ```sh 28 | tw2panda --cva 29 | ``` 30 | 31 | ## Alternatives 32 | 33 | There is a [tw2panda](https://tw2panda-astahmer.vercel.app/) web app where you can paste React code into the page and get the equivalent Panda code. It's another great way to learn how to write Panda code. 34 | 35 | The code in this utility is **NOT** based on this `tw2panda`. The web app supports more features, but this utility has the `explain` feature as well as the `cva` feature to create recipes. 36 | -------------------------------------------------------------------------------- /__tests/rules.test.js: -------------------------------------------------------------------------------- 1 | const { 2 | basics, 3 | colors, 4 | text, 5 | rounded, 6 | outline, 7 | shadow, 8 | parse, 9 | simple, 10 | getContext, 11 | } = require("../src/rules"); 12 | 13 | describe("getContext", () => { 14 | test("flex", () => { 15 | expect(getContext({ flex: 1 })).toEqual([ 16 | { 17 | context: "hstack", 18 | explanation: 19 | "Used the hstack pattern for a flex box in the horizontal direction", 20 | keys: ["justifyContent", "flexDir", "alignItems"], 21 | }, 22 | ]); 23 | }); 24 | test("flex column", () => { 25 | expect(getContext({ flex: 1, flexDir: "column" })).toEqual([ 26 | { 27 | context: "vstack", 28 | explanation: 29 | "Used the vstack pattern for a flex box in the vertical direction", 30 | keys: ["justifyContent", "flexDir", "alignItems"], 31 | }, 32 | ]); 33 | }); 34 | test("grid", () => { 35 | expect(getContext({ display: "grid" })).toEqual([ 36 | { 37 | context: "grid", 38 | explanation: "Used the grid pattern for a grid", 39 | keys: ["gridCols", "colSpan"], 40 | }, 41 | ]); 42 | }); 43 | test("gridItem", () => { 44 | expect(getContext({ colSpan: 1 })).toEqual([ 45 | { 46 | context: "gridItem", 47 | explanation: "Used the gridItem pattern for an item within a grid", 48 | keys: ["gridCols", "colSpan"], 49 | }, 50 | ]); 51 | }); 52 | test("p-2", () => { 53 | expect(getContext({ p: 2 })).toEqual([ 54 | { 55 | context: "css", 56 | explanation: null, 57 | keys: [], 58 | }, 59 | ]); 60 | }); 61 | }); 62 | 63 | describe("parse", () => { 64 | test("outline-2", () => { 65 | expect(parse("outline-2").panda).toEqual({ 66 | outlineStyle: "solid", 67 | outlineWidth: 2, 68 | }); 69 | }); 70 | test("rounded bg-indigo-600 px-2 py-1 text-xs font-semibold", () => { 71 | expect( 72 | parse("rounded bg-indigo-600 px-2 py-1 text-xs font-semibold").panda 73 | ).toEqual({ 74 | bg: "indigo.600", 75 | fontSize: "xs", 76 | fontWeight: "semibold", 77 | px: 2, 78 | py: 1, 79 | rounded: "0.25rem", 80 | }); 81 | }); 82 | test("md:bg-indigo-600 sm:bg-indigo-100", () => { 83 | expect(parse("md:bg-indigo-600 sm:bg-indigo-100").panda).toEqual({ 84 | md: { 85 | bg: "indigo.600", 86 | }, 87 | sm: { 88 | bg: "indigo.100", 89 | }, 90 | }); 91 | }); 92 | test("flex", () => { 93 | expect(parse("flex").explanation).toEqual([ 94 | { className: "flex", explanation: "{ flex: 1 }" }, 95 | ]); 96 | }); 97 | test("sm:flex", () => { 98 | expect(parse("sm:flex").explanation).toEqual([ 99 | { className: "sm:flex", explanation: "{ sm: { flex: 1 } }" }, 100 | ]); 101 | }); 102 | }); 103 | 104 | describe("simple", () => { 105 | test("flex", () => { 106 | expect(simple("flex")).toEqual({ 107 | attribute: "flex", 108 | value: 1, 109 | scope: null, 110 | }); 111 | }); 112 | }); 113 | 114 | describe("shadow", () => { 115 | test("shadow", () => { 116 | expect(shadow("shadow-sm")).toEqual({ 117 | attribute: "shadow", 118 | value: "sm", 119 | scope: null, 120 | }); 121 | }); 122 | }); 123 | 124 | describe("outline", () => { 125 | test("outline-offset-2", () => { 126 | expect(outline("outline-offset-2")).toEqual({ 127 | attribute: "outlineOffset", 128 | value: 2, 129 | scope: null, 130 | }); 131 | }); 132 | test("outline-2", () => { 133 | expect(outline("outline-2")).toEqual([ 134 | { attribute: "outlineStyle", scope: null, value: "solid" }, 135 | { attribute: "outlineWidth", scope: null, value: 2 }, 136 | ]); 137 | }); 138 | test("outline-indigo-600", () => { 139 | expect(outline("outline-indigo-600")).toEqual({ 140 | attribute: "outlineColor", 141 | value: "indigo.600", 142 | scope: null, 143 | }); 144 | }); 145 | }); 146 | 147 | describe("rounded", () => { 148 | test("rounded", () => { 149 | expect(rounded("rounded")).toEqual({ 150 | attribute: "rounded", 151 | value: "0.25rem", 152 | scope: null, 153 | }); 154 | }); 155 | test("rounded-md", () => { 156 | expect(rounded("rounded-md")).toEqual({ 157 | attribute: "rounded", 158 | value: "md", 159 | scope: null, 160 | }); 161 | }); 162 | test("rounded-top-sm", () => { 163 | expect(rounded("rounded-t-sm")).toEqual({ 164 | attribute: "roundedTop", 165 | value: "sm", 166 | scope: null, 167 | }); 168 | }); 169 | }); 170 | 171 | describe("text", () => { 172 | test("font-semibold", () => { 173 | expect(text("font-semibold")).toEqual({ 174 | attribute: "fontWeight", 175 | value: "semibold", 176 | scope: null, 177 | }); 178 | }); 179 | test("text-white", () => { 180 | expect(text("text-white")).toEqual({ 181 | attribute: "color", 182 | value: "white", 183 | scope: null, 184 | }); 185 | }); 186 | test("text-indigo-500", () => { 187 | expect(text("text-indigo-500")).toEqual({ 188 | attribute: "color", 189 | value: "indigo.500", 190 | scope: null, 191 | }); 192 | }); 193 | test("text-xs", () => { 194 | expect(text("text-xs")).toEqual({ 195 | attribute: "fontSize", 196 | value: "xs", 197 | scope: null, 198 | }); 199 | }); 200 | }); 201 | 202 | describe("colors", () => { 203 | test("bg-indigo-500", () => { 204 | expect(colors("bg-indigo-500")).toEqual({ 205 | attribute: "bg", 206 | value: "indigo.500", 207 | scope: null, 208 | }); 209 | }); 210 | }); 211 | 212 | describe("basics", () => { 213 | test("px-3", () => { 214 | expect(basics("px-3")).toEqual({ attribute: "px", value: 3, scope: null }); 215 | }); 216 | test("p-2.5", () => { 217 | expect(basics("p-2.5")).toEqual({ 218 | attribute: "p", 219 | value: 2.5, 220 | scope: null, 221 | }); 222 | }); 223 | test("sm:my-5", () => { 224 | expect(basics("sm:my-5")).toEqual({ 225 | attribute: "my", 226 | value: 5, 227 | scope: "sm", 228 | }); 229 | }); 230 | test("sm:mx-auto", () => { 231 | expect(basics("sm:mx-auto")).toEqual({ 232 | attribute: "mx", 233 | value: "auto", 234 | scope: "sm", 235 | }); 236 | }); 237 | test("hover:pt-5", () => { 238 | expect(basics("hover:pt-5")).toEqual({ 239 | attribute: "pt", 240 | value: 5, 241 | scope: "_hover", 242 | }); 243 | }); 244 | }); 245 | -------------------------------------------------------------------------------- /bin/index.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | const { program } = require("commander"); 3 | const readline = require("node:readline"); 4 | const { prettyPrint } = require("@base2/pretty-print-object"); 5 | const { parse, getContext } = require("../src/rules"); 6 | 7 | program.option("--explain"); 8 | program.option("--cva"); 9 | 10 | program.parse(); 11 | 12 | const explain = program.getOptionValue("explain"); 13 | const cva = program.getOptionValue("cva"); 14 | 15 | const rl = readline.createInterface({ 16 | input: process.stdin, 17 | }); 18 | 19 | rl.on("line", (line) => { 20 | if (cva) { 21 | const { panda } = parse(line); 22 | console.log( 23 | `cva(${prettyPrint( 24 | { base: panda, variants: {}, defaultVariants: {} }, 25 | { singleQuotes: false, indent: " " } 26 | )})` 27 | ); 28 | } else if (line.match(/(className|class)=/)) { 29 | const className = line.match(/(className|class)=["']([^"']+)["']/)?.[2]; 30 | if (className) { 31 | const { panda, explanation } = parse(className); 32 | 33 | const contexts = getContext(panda); 34 | 35 | // deal with multiple contexts (e.g. gridItem and hstack) 36 | if (contexts.length > 1) { 37 | const reservedKeys = contexts.map((c) => c.keys).flat(); 38 | 39 | const rest = Object.keys(panda).filter( 40 | (k) => !reservedKeys.includes(k) 41 | ); 42 | 43 | const contextStrings = []; 44 | for (const ci in contexts) { 45 | const c = contexts[ci]; 46 | let pandaKeys = {}; 47 | if (ci === 0) { 48 | pandaKeys = { 49 | ...rest, 50 | }; 51 | } 52 | for (const k of c.keys) { 53 | if (panda[k]) { 54 | pandaKeys[k] = panda[k]; 55 | } 56 | } 57 | contextStrings.push( 58 | `${c.context}(${prettyPrint(pandaKeys, { 59 | singleQuotes: false, 60 | }) 61 | .replace(/\s+/g, " ") 62 | .replaceAll("\n", " ")})` 63 | ); 64 | } 65 | const cx = contextStrings.join(", "); 66 | line = line.replace( 67 | new RegExp(`('${className}'|"${className}")`), 68 | `{cx(${cx})}` 69 | ); 70 | } else { 71 | line = line.replace( 72 | new RegExp(`('${className}'|"${className}")`), 73 | `{${contexts[0].context}(${prettyPrint(panda, { 74 | singleQuotes: false, 75 | }) 76 | .replace(/\s+/g, " ") 77 | .replaceAll("\n", " ")})}` 78 | ); 79 | } 80 | 81 | if (explain) { 82 | console.log("/*"); 83 | for (const { explanation: contextExplanation } of contexts) { 84 | if (contextExplanation && contextExplanation.length) { 85 | console.log(contextExplanation); 86 | console.log(""); 87 | } 88 | } 89 | for (const e of explanation) { 90 | console.log(`${e.className} => ${e.explanation}`); 91 | } 92 | console.log(" */"); 93 | } 94 | 95 | console.log(line); 96 | } else { 97 | console.log(line); 98 | } 99 | } else { 100 | console.log(line); 101 | } 102 | }); 103 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "tw2panda-cli", 3 | "version": "0.1.0", 4 | "description": "", 5 | "main": "index.js", 6 | "bin": { 7 | "tw2panda": "./bin/index.js" 8 | }, 9 | "repository": "github:jherr/tw2panda-cli", 10 | "scripts": { 11 | "test": "jest" 12 | }, 13 | "author": "", 14 | "license": "ISC", 15 | "dependencies": { 16 | "@base2/pretty-print-object": "^1.0.2", 17 | "commander": "^11.0.0" 18 | }, 19 | "devDependencies": { 20 | "jest": "^29.6.1" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '6.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | dependencies: 8 | '@base2/pretty-print-object': 9 | specifier: ^1.0.2 10 | version: 1.0.2 11 | commander: 12 | specifier: ^11.0.0 13 | version: 11.0.0 14 | 15 | devDependencies: 16 | jest: 17 | specifier: ^29.6.1 18 | version: 29.6.1 19 | 20 | packages: 21 | 22 | /@ampproject/remapping@2.2.1: 23 | resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==} 24 | engines: {node: '>=6.0.0'} 25 | dependencies: 26 | '@jridgewell/gen-mapping': 0.3.3 27 | '@jridgewell/trace-mapping': 0.3.18 28 | dev: true 29 | 30 | /@babel/code-frame@7.22.5: 31 | resolution: {integrity: sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==} 32 | engines: {node: '>=6.9.0'} 33 | dependencies: 34 | '@babel/highlight': 7.22.5 35 | dev: true 36 | 37 | /@babel/compat-data@7.22.9: 38 | resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} 39 | engines: {node: '>=6.9.0'} 40 | dev: true 41 | 42 | /@babel/core@7.22.9: 43 | resolution: {integrity: sha512-G2EgeufBcYw27U4hhoIwFcgc1XU7TlXJ3mv04oOv1WCuo900U/anZSPzEqNjwdjgffkk2Gs0AN0dW1CKVLcG7w==} 44 | engines: {node: '>=6.9.0'} 45 | dependencies: 46 | '@ampproject/remapping': 2.2.1 47 | '@babel/code-frame': 7.22.5 48 | '@babel/generator': 7.22.9 49 | '@babel/helper-compilation-targets': 7.22.9(@babel/core@7.22.9) 50 | '@babel/helper-module-transforms': 7.22.9(@babel/core@7.22.9) 51 | '@babel/helpers': 7.22.6 52 | '@babel/parser': 7.22.7 53 | '@babel/template': 7.22.5 54 | '@babel/traverse': 7.22.8 55 | '@babel/types': 7.22.5 56 | convert-source-map: 1.9.0 57 | debug: 4.3.4 58 | gensync: 1.0.0-beta.2 59 | json5: 2.2.3 60 | semver: 6.3.1 61 | transitivePeerDependencies: 62 | - supports-color 63 | dev: true 64 | 65 | /@babel/generator@7.22.9: 66 | resolution: {integrity: sha512-KtLMbmicyuK2Ak/FTCJVbDnkN1SlT8/kceFTiuDiiRUUSMnHMidxSCdG4ndkTOHHpoomWe/4xkvHkEOncwjYIw==} 67 | engines: {node: '>=6.9.0'} 68 | dependencies: 69 | '@babel/types': 7.22.5 70 | '@jridgewell/gen-mapping': 0.3.3 71 | '@jridgewell/trace-mapping': 0.3.18 72 | jsesc: 2.5.2 73 | dev: true 74 | 75 | /@babel/helper-compilation-targets@7.22.9(@babel/core@7.22.9): 76 | resolution: {integrity: sha512-7qYrNM6HjpnPHJbopxmb8hSPoZ0gsX8IvUS32JGVoy+pU9e5N0nLr1VjJoR6kA4d9dmGLxNYOjeB8sUDal2WMw==} 77 | engines: {node: '>=6.9.0'} 78 | peerDependencies: 79 | '@babel/core': ^7.0.0 80 | dependencies: 81 | '@babel/compat-data': 7.22.9 82 | '@babel/core': 7.22.9 83 | '@babel/helper-validator-option': 7.22.5 84 | browserslist: 4.21.9 85 | lru-cache: 5.1.1 86 | semver: 6.3.1 87 | dev: true 88 | 89 | /@babel/helper-environment-visitor@7.22.5: 90 | resolution: {integrity: sha512-XGmhECfVA/5sAt+H+xpSg0mfrHq6FzNr9Oxh7PSEBBRUb/mL7Kz3NICXb194rCqAEdxkhPT1a88teizAFyvk8Q==} 91 | engines: {node: '>=6.9.0'} 92 | dev: true 93 | 94 | /@babel/helper-function-name@7.22.5: 95 | resolution: {integrity: sha512-wtHSq6jMRE3uF2otvfuD3DIvVhOsSNshQl0Qrd7qC9oQJzHvOL4qQXlQn2916+CXGywIjpGuIkoyZRRxHPiNQQ==} 96 | engines: {node: '>=6.9.0'} 97 | dependencies: 98 | '@babel/template': 7.22.5 99 | '@babel/types': 7.22.5 100 | dev: true 101 | 102 | /@babel/helper-hoist-variables@7.22.5: 103 | resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} 104 | engines: {node: '>=6.9.0'} 105 | dependencies: 106 | '@babel/types': 7.22.5 107 | dev: true 108 | 109 | /@babel/helper-module-imports@7.22.5: 110 | resolution: {integrity: sha512-8Dl6+HD/cKifutF5qGd/8ZJi84QeAKh+CEe1sBzz8UayBBGg1dAIJrdHOcOM5b2MpzWL2yuotJTtGjETq0qjXg==} 111 | engines: {node: '>=6.9.0'} 112 | dependencies: 113 | '@babel/types': 7.22.5 114 | dev: true 115 | 116 | /@babel/helper-module-transforms@7.22.9(@babel/core@7.22.9): 117 | resolution: {integrity: sha512-t+WA2Xn5K+rTeGtC8jCsdAH52bjggG5TKRuRrAGNM/mjIbO4GxvlLMFOEz9wXY5I2XQ60PMFsAG2WIcG82dQMQ==} 118 | engines: {node: '>=6.9.0'} 119 | peerDependencies: 120 | '@babel/core': ^7.0.0 121 | dependencies: 122 | '@babel/core': 7.22.9 123 | '@babel/helper-environment-visitor': 7.22.5 124 | '@babel/helper-module-imports': 7.22.5 125 | '@babel/helper-simple-access': 7.22.5 126 | '@babel/helper-split-export-declaration': 7.22.6 127 | '@babel/helper-validator-identifier': 7.22.5 128 | dev: true 129 | 130 | /@babel/helper-plugin-utils@7.22.5: 131 | resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==} 132 | engines: {node: '>=6.9.0'} 133 | dev: true 134 | 135 | /@babel/helper-simple-access@7.22.5: 136 | resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==} 137 | engines: {node: '>=6.9.0'} 138 | dependencies: 139 | '@babel/types': 7.22.5 140 | dev: true 141 | 142 | /@babel/helper-split-export-declaration@7.22.6: 143 | resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==} 144 | engines: {node: '>=6.9.0'} 145 | dependencies: 146 | '@babel/types': 7.22.5 147 | dev: true 148 | 149 | /@babel/helper-string-parser@7.22.5: 150 | resolution: {integrity: sha512-mM4COjgZox8U+JcXQwPijIZLElkgEpO5rsERVDJTc2qfCDfERyob6k5WegS14SX18IIjv+XD+GrqNumY5JRCDw==} 151 | engines: {node: '>=6.9.0'} 152 | dev: true 153 | 154 | /@babel/helper-validator-identifier@7.22.5: 155 | resolution: {integrity: sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==} 156 | engines: {node: '>=6.9.0'} 157 | dev: true 158 | 159 | /@babel/helper-validator-option@7.22.5: 160 | resolution: {integrity: sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==} 161 | engines: {node: '>=6.9.0'} 162 | dev: true 163 | 164 | /@babel/helpers@7.22.6: 165 | resolution: {integrity: sha512-YjDs6y/fVOYFV8hAf1rxd1QvR9wJe1pDBZ2AREKq/SDayfPzgk0PBnVuTCE5X1acEpMMNOVUqoe+OwiZGJ+OaA==} 166 | engines: {node: '>=6.9.0'} 167 | dependencies: 168 | '@babel/template': 7.22.5 169 | '@babel/traverse': 7.22.8 170 | '@babel/types': 7.22.5 171 | transitivePeerDependencies: 172 | - supports-color 173 | dev: true 174 | 175 | /@babel/highlight@7.22.5: 176 | resolution: {integrity: sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==} 177 | engines: {node: '>=6.9.0'} 178 | dependencies: 179 | '@babel/helper-validator-identifier': 7.22.5 180 | chalk: 2.4.2 181 | js-tokens: 4.0.0 182 | dev: true 183 | 184 | /@babel/parser@7.22.7: 185 | resolution: {integrity: sha512-7NF8pOkHP5o2vpmGgNGcfAeCvOYhGLyA3Z4eBQkT1RJlWu47n63bCs93QfJ2hIAFCil7L5P2IWhs1oToVgrL0Q==} 186 | engines: {node: '>=6.0.0'} 187 | hasBin: true 188 | dependencies: 189 | '@babel/types': 7.22.5 190 | dev: true 191 | 192 | /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.9): 193 | resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} 194 | peerDependencies: 195 | '@babel/core': ^7.0.0-0 196 | dependencies: 197 | '@babel/core': 7.22.9 198 | '@babel/helper-plugin-utils': 7.22.5 199 | dev: true 200 | 201 | /@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.22.9): 202 | resolution: {integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==} 203 | peerDependencies: 204 | '@babel/core': ^7.0.0-0 205 | dependencies: 206 | '@babel/core': 7.22.9 207 | '@babel/helper-plugin-utils': 7.22.5 208 | dev: true 209 | 210 | /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.9): 211 | resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} 212 | peerDependencies: 213 | '@babel/core': ^7.0.0-0 214 | dependencies: 215 | '@babel/core': 7.22.9 216 | '@babel/helper-plugin-utils': 7.22.5 217 | dev: true 218 | 219 | /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.9): 220 | resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} 221 | peerDependencies: 222 | '@babel/core': ^7.0.0-0 223 | dependencies: 224 | '@babel/core': 7.22.9 225 | '@babel/helper-plugin-utils': 7.22.5 226 | dev: true 227 | 228 | /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.9): 229 | resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} 230 | peerDependencies: 231 | '@babel/core': ^7.0.0-0 232 | dependencies: 233 | '@babel/core': 7.22.9 234 | '@babel/helper-plugin-utils': 7.22.5 235 | dev: true 236 | 237 | /@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.22.9): 238 | resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==} 239 | engines: {node: '>=6.9.0'} 240 | peerDependencies: 241 | '@babel/core': ^7.0.0-0 242 | dependencies: 243 | '@babel/core': 7.22.9 244 | '@babel/helper-plugin-utils': 7.22.5 245 | dev: true 246 | 247 | /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.22.9): 248 | resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} 249 | peerDependencies: 250 | '@babel/core': ^7.0.0-0 251 | dependencies: 252 | '@babel/core': 7.22.9 253 | '@babel/helper-plugin-utils': 7.22.5 254 | dev: true 255 | 256 | /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.9): 257 | resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} 258 | peerDependencies: 259 | '@babel/core': ^7.0.0-0 260 | dependencies: 261 | '@babel/core': 7.22.9 262 | '@babel/helper-plugin-utils': 7.22.5 263 | dev: true 264 | 265 | /@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.22.9): 266 | resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} 267 | peerDependencies: 268 | '@babel/core': ^7.0.0-0 269 | dependencies: 270 | '@babel/core': 7.22.9 271 | '@babel/helper-plugin-utils': 7.22.5 272 | dev: true 273 | 274 | /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.22.9): 275 | resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} 276 | peerDependencies: 277 | '@babel/core': ^7.0.0-0 278 | dependencies: 279 | '@babel/core': 7.22.9 280 | '@babel/helper-plugin-utils': 7.22.5 281 | dev: true 282 | 283 | /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.9): 284 | resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} 285 | peerDependencies: 286 | '@babel/core': ^7.0.0-0 287 | dependencies: 288 | '@babel/core': 7.22.9 289 | '@babel/helper-plugin-utils': 7.22.5 290 | dev: true 291 | 292 | /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.9): 293 | resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} 294 | peerDependencies: 295 | '@babel/core': ^7.0.0-0 296 | dependencies: 297 | '@babel/core': 7.22.9 298 | '@babel/helper-plugin-utils': 7.22.5 299 | dev: true 300 | 301 | /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.9): 302 | resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} 303 | engines: {node: '>=6.9.0'} 304 | peerDependencies: 305 | '@babel/core': ^7.0.0-0 306 | dependencies: 307 | '@babel/core': 7.22.9 308 | '@babel/helper-plugin-utils': 7.22.5 309 | dev: true 310 | 311 | /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.22.9): 312 | resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} 313 | engines: {node: '>=6.9.0'} 314 | peerDependencies: 315 | '@babel/core': ^7.0.0-0 316 | dependencies: 317 | '@babel/core': 7.22.9 318 | '@babel/helper-plugin-utils': 7.22.5 319 | dev: true 320 | 321 | /@babel/template@7.22.5: 322 | resolution: {integrity: sha512-X7yV7eiwAxdj9k94NEylvbVHLiVG1nvzCV2EAowhxLTwODV1jl9UzZ48leOC0sH7OnuHrIkllaBgneUykIcZaw==} 323 | engines: {node: '>=6.9.0'} 324 | dependencies: 325 | '@babel/code-frame': 7.22.5 326 | '@babel/parser': 7.22.7 327 | '@babel/types': 7.22.5 328 | dev: true 329 | 330 | /@babel/traverse@7.22.8: 331 | resolution: {integrity: sha512-y6LPR+wpM2I3qJrsheCTwhIinzkETbplIgPBbwvqPKc+uljeA5gP+3nP8irdYt1mjQaDnlIcG+dw8OjAco4GXw==} 332 | engines: {node: '>=6.9.0'} 333 | dependencies: 334 | '@babel/code-frame': 7.22.5 335 | '@babel/generator': 7.22.9 336 | '@babel/helper-environment-visitor': 7.22.5 337 | '@babel/helper-function-name': 7.22.5 338 | '@babel/helper-hoist-variables': 7.22.5 339 | '@babel/helper-split-export-declaration': 7.22.6 340 | '@babel/parser': 7.22.7 341 | '@babel/types': 7.22.5 342 | debug: 4.3.4 343 | globals: 11.12.0 344 | transitivePeerDependencies: 345 | - supports-color 346 | dev: true 347 | 348 | /@babel/types@7.22.5: 349 | resolution: {integrity: sha512-zo3MIHGOkPOfoRXitsgHLjEXmlDaD/5KU1Uzuc9GNiZPhSqVxVRtxuPaSBZDsYZ9qV88AjtMtWW7ww98loJ9KA==} 350 | engines: {node: '>=6.9.0'} 351 | dependencies: 352 | '@babel/helper-string-parser': 7.22.5 353 | '@babel/helper-validator-identifier': 7.22.5 354 | to-fast-properties: 2.0.0 355 | dev: true 356 | 357 | /@base2/pretty-print-object@1.0.2: 358 | resolution: {integrity: sha512-rBha0UDfV7EmBRjWrGG7Cpwxg8WomPlo0q+R2so47ZFf9wy4YKJzLuHcVa0UGFjdcLZj/4F/1FNC46GIQhe7sA==} 359 | dev: false 360 | 361 | /@bcoe/v8-coverage@0.2.3: 362 | resolution: {integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==} 363 | dev: true 364 | 365 | /@istanbuljs/load-nyc-config@1.1.0: 366 | resolution: {integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==} 367 | engines: {node: '>=8'} 368 | dependencies: 369 | camelcase: 5.3.1 370 | find-up: 4.1.0 371 | get-package-type: 0.1.0 372 | js-yaml: 3.14.1 373 | resolve-from: 5.0.0 374 | dev: true 375 | 376 | /@istanbuljs/schema@0.1.3: 377 | resolution: {integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==} 378 | engines: {node: '>=8'} 379 | dev: true 380 | 381 | /@jest/console@29.6.1: 382 | resolution: {integrity: sha512-Aj772AYgwTSr5w8qnyoJ0eDYvN6bMsH3ORH1ivMotrInHLKdUz6BDlaEXHdM6kODaBIkNIyQGzsMvRdOv7VG7Q==} 383 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 384 | dependencies: 385 | '@jest/types': 29.6.1 386 | '@types/node': 20.4.2 387 | chalk: 4.1.2 388 | jest-message-util: 29.6.1 389 | jest-util: 29.6.1 390 | slash: 3.0.0 391 | dev: true 392 | 393 | /@jest/core@29.6.1: 394 | resolution: {integrity: sha512-CcowHypRSm5oYQ1obz1wfvkjZZ2qoQlrKKvlfPwh5jUXVU12TWr2qMeH8chLMuTFzHh5a1g2yaqlqDICbr+ukQ==} 395 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 396 | peerDependencies: 397 | node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 398 | peerDependenciesMeta: 399 | node-notifier: 400 | optional: true 401 | dependencies: 402 | '@jest/console': 29.6.1 403 | '@jest/reporters': 29.6.1 404 | '@jest/test-result': 29.6.1 405 | '@jest/transform': 29.6.1 406 | '@jest/types': 29.6.1 407 | '@types/node': 20.4.2 408 | ansi-escapes: 4.3.2 409 | chalk: 4.1.2 410 | ci-info: 3.8.0 411 | exit: 0.1.2 412 | graceful-fs: 4.2.11 413 | jest-changed-files: 29.5.0 414 | jest-config: 29.6.1(@types/node@20.4.2) 415 | jest-haste-map: 29.6.1 416 | jest-message-util: 29.6.1 417 | jest-regex-util: 29.4.3 418 | jest-resolve: 29.6.1 419 | jest-resolve-dependencies: 29.6.1 420 | jest-runner: 29.6.1 421 | jest-runtime: 29.6.1 422 | jest-snapshot: 29.6.1 423 | jest-util: 29.6.1 424 | jest-validate: 29.6.1 425 | jest-watcher: 29.6.1 426 | micromatch: 4.0.5 427 | pretty-format: 29.6.1 428 | slash: 3.0.0 429 | strip-ansi: 6.0.1 430 | transitivePeerDependencies: 431 | - supports-color 432 | - ts-node 433 | dev: true 434 | 435 | /@jest/environment@29.6.1: 436 | resolution: {integrity: sha512-RMMXx4ws+Gbvw3DfLSuo2cfQlK7IwGbpuEWXCqyYDcqYTI+9Ju3a5hDnXaxjNsa6uKh9PQF2v+qg+RLe63tz5A==} 437 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 438 | dependencies: 439 | '@jest/fake-timers': 29.6.1 440 | '@jest/types': 29.6.1 441 | '@types/node': 20.4.2 442 | jest-mock: 29.6.1 443 | dev: true 444 | 445 | /@jest/expect-utils@29.6.1: 446 | resolution: {integrity: sha512-o319vIf5pEMx0LmzSxxkYYxo4wrRLKHq9dP1yJU7FoPTB0LfAKSz8SWD6D/6U3v/O52t9cF5t+MeJiRsfk7zMw==} 447 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 448 | dependencies: 449 | jest-get-type: 29.4.3 450 | dev: true 451 | 452 | /@jest/expect@29.6.1: 453 | resolution: {integrity: sha512-N5xlPrAYaRNyFgVf2s9Uyyvr795jnB6rObuPx4QFvNJz8aAjpZUDfO4bh5G/xuplMID8PrnuF1+SfSyDxhsgYg==} 454 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 455 | dependencies: 456 | expect: 29.6.1 457 | jest-snapshot: 29.6.1 458 | transitivePeerDependencies: 459 | - supports-color 460 | dev: true 461 | 462 | /@jest/fake-timers@29.6.1: 463 | resolution: {integrity: sha512-RdgHgbXyosCDMVYmj7lLpUwXA4c69vcNzhrt69dJJdf8azUrpRh3ckFCaTPNjsEeRi27Cig0oKDGxy5j7hOgHg==} 464 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 465 | dependencies: 466 | '@jest/types': 29.6.1 467 | '@sinonjs/fake-timers': 10.3.0 468 | '@types/node': 20.4.2 469 | jest-message-util: 29.6.1 470 | jest-mock: 29.6.1 471 | jest-util: 29.6.1 472 | dev: true 473 | 474 | /@jest/globals@29.6.1: 475 | resolution: {integrity: sha512-2VjpaGy78JY9n9370H8zGRCFbYVWwjY6RdDMhoJHa1sYfwe6XM/azGN0SjY8kk7BOZApIejQ1BFPyH7FPG0w3A==} 476 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 477 | dependencies: 478 | '@jest/environment': 29.6.1 479 | '@jest/expect': 29.6.1 480 | '@jest/types': 29.6.1 481 | jest-mock: 29.6.1 482 | transitivePeerDependencies: 483 | - supports-color 484 | dev: true 485 | 486 | /@jest/reporters@29.6.1: 487 | resolution: {integrity: sha512-9zuaI9QKr9JnoZtFQlw4GREQbxgmNYXU6QuWtmuODvk5nvPUeBYapVR/VYMyi2WSx3jXTLJTJji8rN6+Cm4+FA==} 488 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 489 | peerDependencies: 490 | node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 491 | peerDependenciesMeta: 492 | node-notifier: 493 | optional: true 494 | dependencies: 495 | '@bcoe/v8-coverage': 0.2.3 496 | '@jest/console': 29.6.1 497 | '@jest/test-result': 29.6.1 498 | '@jest/transform': 29.6.1 499 | '@jest/types': 29.6.1 500 | '@jridgewell/trace-mapping': 0.3.18 501 | '@types/node': 20.4.2 502 | chalk: 4.1.2 503 | collect-v8-coverage: 1.0.2 504 | exit: 0.1.2 505 | glob: 7.2.3 506 | graceful-fs: 4.2.11 507 | istanbul-lib-coverage: 3.2.0 508 | istanbul-lib-instrument: 5.2.1 509 | istanbul-lib-report: 3.0.0 510 | istanbul-lib-source-maps: 4.0.1 511 | istanbul-reports: 3.1.5 512 | jest-message-util: 29.6.1 513 | jest-util: 29.6.1 514 | jest-worker: 29.6.1 515 | slash: 3.0.0 516 | string-length: 4.0.2 517 | strip-ansi: 6.0.1 518 | v8-to-istanbul: 9.1.0 519 | transitivePeerDependencies: 520 | - supports-color 521 | dev: true 522 | 523 | /@jest/schemas@29.6.0: 524 | resolution: {integrity: sha512-rxLjXyJBTL4LQeJW3aKo0M/+GkCOXsO+8i9Iu7eDb6KwtP65ayoDsitrdPBtujxQ88k4wI2FNYfa6TOGwSn6cQ==} 525 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 526 | dependencies: 527 | '@sinclair/typebox': 0.27.8 528 | dev: true 529 | 530 | /@jest/source-map@29.6.0: 531 | resolution: {integrity: sha512-oA+I2SHHQGxDCZpbrsCQSoMLb3Bz547JnM+jUr9qEbuw0vQlWZfpPS7CO9J7XiwKicEz9OFn/IYoLkkiUD7bzA==} 532 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 533 | dependencies: 534 | '@jridgewell/trace-mapping': 0.3.18 535 | callsites: 3.1.0 536 | graceful-fs: 4.2.11 537 | dev: true 538 | 539 | /@jest/test-result@29.6.1: 540 | resolution: {integrity: sha512-Ynr13ZRcpX6INak0TPUukU8GWRfm/vAytE3JbJNGAvINySWYdfE7dGZMbk36oVuK4CigpbhMn8eg1dixZ7ZJOw==} 541 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 542 | dependencies: 543 | '@jest/console': 29.6.1 544 | '@jest/types': 29.6.1 545 | '@types/istanbul-lib-coverage': 2.0.4 546 | collect-v8-coverage: 1.0.2 547 | dev: true 548 | 549 | /@jest/test-sequencer@29.6.1: 550 | resolution: {integrity: sha512-oBkC36PCDf/wb6dWeQIhaviU0l5u6VCsXa119yqdUosYAt7/FbQU2M2UoziO3igj/HBDEgp57ONQ3fm0v9uyyg==} 551 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 552 | dependencies: 553 | '@jest/test-result': 29.6.1 554 | graceful-fs: 4.2.11 555 | jest-haste-map: 29.6.1 556 | slash: 3.0.0 557 | dev: true 558 | 559 | /@jest/transform@29.6.1: 560 | resolution: {integrity: sha512-URnTneIU3ZjRSaf906cvf6Hpox3hIeJXRnz3VDSw5/X93gR8ycdfSIEy19FlVx8NFmpN7fe3Gb1xF+NjXaQLWg==} 561 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 562 | dependencies: 563 | '@babel/core': 7.22.9 564 | '@jest/types': 29.6.1 565 | '@jridgewell/trace-mapping': 0.3.18 566 | babel-plugin-istanbul: 6.1.1 567 | chalk: 4.1.2 568 | convert-source-map: 2.0.0 569 | fast-json-stable-stringify: 2.1.0 570 | graceful-fs: 4.2.11 571 | jest-haste-map: 29.6.1 572 | jest-regex-util: 29.4.3 573 | jest-util: 29.6.1 574 | micromatch: 4.0.5 575 | pirates: 4.0.6 576 | slash: 3.0.0 577 | write-file-atomic: 4.0.2 578 | transitivePeerDependencies: 579 | - supports-color 580 | dev: true 581 | 582 | /@jest/types@29.6.1: 583 | resolution: {integrity: sha512-tPKQNMPuXgvdOn2/Lg9HNfUvjYVGolt04Hp03f5hAk878uwOLikN+JzeLY0HcVgKgFl9Hs3EIqpu3WX27XNhnw==} 584 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 585 | dependencies: 586 | '@jest/schemas': 29.6.0 587 | '@types/istanbul-lib-coverage': 2.0.4 588 | '@types/istanbul-reports': 3.0.1 589 | '@types/node': 20.4.2 590 | '@types/yargs': 17.0.24 591 | chalk: 4.1.2 592 | dev: true 593 | 594 | /@jridgewell/gen-mapping@0.3.3: 595 | resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} 596 | engines: {node: '>=6.0.0'} 597 | dependencies: 598 | '@jridgewell/set-array': 1.1.2 599 | '@jridgewell/sourcemap-codec': 1.4.15 600 | '@jridgewell/trace-mapping': 0.3.18 601 | dev: true 602 | 603 | /@jridgewell/resolve-uri@3.1.0: 604 | resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} 605 | engines: {node: '>=6.0.0'} 606 | dev: true 607 | 608 | /@jridgewell/set-array@1.1.2: 609 | resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} 610 | engines: {node: '>=6.0.0'} 611 | dev: true 612 | 613 | /@jridgewell/sourcemap-codec@1.4.14: 614 | resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} 615 | dev: true 616 | 617 | /@jridgewell/sourcemap-codec@1.4.15: 618 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 619 | dev: true 620 | 621 | /@jridgewell/trace-mapping@0.3.18: 622 | resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} 623 | dependencies: 624 | '@jridgewell/resolve-uri': 3.1.0 625 | '@jridgewell/sourcemap-codec': 1.4.14 626 | dev: true 627 | 628 | /@sinclair/typebox@0.27.8: 629 | resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} 630 | dev: true 631 | 632 | /@sinonjs/commons@3.0.0: 633 | resolution: {integrity: sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==} 634 | dependencies: 635 | type-detect: 4.0.8 636 | dev: true 637 | 638 | /@sinonjs/fake-timers@10.3.0: 639 | resolution: {integrity: sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==} 640 | dependencies: 641 | '@sinonjs/commons': 3.0.0 642 | dev: true 643 | 644 | /@types/babel__core@7.20.1: 645 | resolution: {integrity: sha512-aACu/U/omhdk15O4Nfb+fHgH/z3QsfQzpnvRZhYhThms83ZnAOZz7zZAWO7mn2yyNQaA4xTO8GLK3uqFU4bYYw==} 646 | dependencies: 647 | '@babel/parser': 7.22.7 648 | '@babel/types': 7.22.5 649 | '@types/babel__generator': 7.6.4 650 | '@types/babel__template': 7.4.1 651 | '@types/babel__traverse': 7.20.1 652 | dev: true 653 | 654 | /@types/babel__generator@7.6.4: 655 | resolution: {integrity: sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==} 656 | dependencies: 657 | '@babel/types': 7.22.5 658 | dev: true 659 | 660 | /@types/babel__template@7.4.1: 661 | resolution: {integrity: sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==} 662 | dependencies: 663 | '@babel/parser': 7.22.7 664 | '@babel/types': 7.22.5 665 | dev: true 666 | 667 | /@types/babel__traverse@7.20.1: 668 | resolution: {integrity: sha512-MitHFXnhtgwsGZWtT68URpOvLN4EREih1u3QtQiN4VdAxWKRVvGCSvw/Qth0M0Qq3pJpnGOu5JaM/ydK7OGbqg==} 669 | dependencies: 670 | '@babel/types': 7.22.5 671 | dev: true 672 | 673 | /@types/graceful-fs@4.1.6: 674 | resolution: {integrity: sha512-Sig0SNORX9fdW+bQuTEovKj3uHcUL6LQKbCrrqb1X7J6/ReAbhCXRAhc+SMejhLELFj2QcyuxmUooZ4bt5ReSw==} 675 | dependencies: 676 | '@types/node': 20.4.2 677 | dev: true 678 | 679 | /@types/istanbul-lib-coverage@2.0.4: 680 | resolution: {integrity: sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==} 681 | dev: true 682 | 683 | /@types/istanbul-lib-report@3.0.0: 684 | resolution: {integrity: sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==} 685 | dependencies: 686 | '@types/istanbul-lib-coverage': 2.0.4 687 | dev: true 688 | 689 | /@types/istanbul-reports@3.0.1: 690 | resolution: {integrity: sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==} 691 | dependencies: 692 | '@types/istanbul-lib-report': 3.0.0 693 | dev: true 694 | 695 | /@types/node@20.4.2: 696 | resolution: {integrity: sha512-Dd0BYtWgnWJKwO1jkmTrzofjK2QXXcai0dmtzvIBhcA+RsG5h8R3xlyta0kGOZRNfL9GuRtb1knmPEhQrePCEw==} 697 | dev: true 698 | 699 | /@types/prettier@2.7.3: 700 | resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==} 701 | dev: true 702 | 703 | /@types/stack-utils@2.0.1: 704 | resolution: {integrity: sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==} 705 | dev: true 706 | 707 | /@types/yargs-parser@21.0.0: 708 | resolution: {integrity: sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==} 709 | dev: true 710 | 711 | /@types/yargs@17.0.24: 712 | resolution: {integrity: sha512-6i0aC7jV6QzQB8ne1joVZ0eSFIstHsCrobmOtghM11yGlH0j43FKL2UhWdELkyps0zuf7qVTUVCCR+tgSlyLLw==} 713 | dependencies: 714 | '@types/yargs-parser': 21.0.0 715 | dev: true 716 | 717 | /ansi-escapes@4.3.2: 718 | resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} 719 | engines: {node: '>=8'} 720 | dependencies: 721 | type-fest: 0.21.3 722 | dev: true 723 | 724 | /ansi-regex@5.0.1: 725 | resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} 726 | engines: {node: '>=8'} 727 | dev: true 728 | 729 | /ansi-styles@3.2.1: 730 | resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} 731 | engines: {node: '>=4'} 732 | dependencies: 733 | color-convert: 1.9.3 734 | dev: true 735 | 736 | /ansi-styles@4.3.0: 737 | resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} 738 | engines: {node: '>=8'} 739 | dependencies: 740 | color-convert: 2.0.1 741 | dev: true 742 | 743 | /ansi-styles@5.2.0: 744 | resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} 745 | engines: {node: '>=10'} 746 | dev: true 747 | 748 | /anymatch@3.1.3: 749 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 750 | engines: {node: '>= 8'} 751 | dependencies: 752 | normalize-path: 3.0.0 753 | picomatch: 2.3.1 754 | dev: true 755 | 756 | /argparse@1.0.10: 757 | resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} 758 | dependencies: 759 | sprintf-js: 1.0.3 760 | dev: true 761 | 762 | /babel-jest@29.6.1(@babel/core@7.22.9): 763 | resolution: {integrity: sha512-qu+3bdPEQC6KZSPz+4Fyjbga5OODNcp49j6GKzG1EKbkfyJBxEYGVUmVGpwCSeGouG52R4EgYMLb6p9YeEEQ4A==} 764 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 765 | peerDependencies: 766 | '@babel/core': ^7.8.0 767 | dependencies: 768 | '@babel/core': 7.22.9 769 | '@jest/transform': 29.6.1 770 | '@types/babel__core': 7.20.1 771 | babel-plugin-istanbul: 6.1.1 772 | babel-preset-jest: 29.5.0(@babel/core@7.22.9) 773 | chalk: 4.1.2 774 | graceful-fs: 4.2.11 775 | slash: 3.0.0 776 | transitivePeerDependencies: 777 | - supports-color 778 | dev: true 779 | 780 | /babel-plugin-istanbul@6.1.1: 781 | resolution: {integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==} 782 | engines: {node: '>=8'} 783 | dependencies: 784 | '@babel/helper-plugin-utils': 7.22.5 785 | '@istanbuljs/load-nyc-config': 1.1.0 786 | '@istanbuljs/schema': 0.1.3 787 | istanbul-lib-instrument: 5.2.1 788 | test-exclude: 6.0.0 789 | transitivePeerDependencies: 790 | - supports-color 791 | dev: true 792 | 793 | /babel-plugin-jest-hoist@29.5.0: 794 | resolution: {integrity: sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==} 795 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 796 | dependencies: 797 | '@babel/template': 7.22.5 798 | '@babel/types': 7.22.5 799 | '@types/babel__core': 7.20.1 800 | '@types/babel__traverse': 7.20.1 801 | dev: true 802 | 803 | /babel-preset-current-node-syntax@1.0.1(@babel/core@7.22.9): 804 | resolution: {integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==} 805 | peerDependencies: 806 | '@babel/core': ^7.0.0 807 | dependencies: 808 | '@babel/core': 7.22.9 809 | '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.9) 810 | '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.22.9) 811 | '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.9) 812 | '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.9) 813 | '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.9) 814 | '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.9) 815 | '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.9) 816 | '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.9) 817 | '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.9) 818 | '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.9) 819 | '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.9) 820 | '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.9) 821 | dev: true 822 | 823 | /babel-preset-jest@29.5.0(@babel/core@7.22.9): 824 | resolution: {integrity: sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==} 825 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 826 | peerDependencies: 827 | '@babel/core': ^7.0.0 828 | dependencies: 829 | '@babel/core': 7.22.9 830 | babel-plugin-jest-hoist: 29.5.0 831 | babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.9) 832 | dev: true 833 | 834 | /balanced-match@1.0.2: 835 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 836 | dev: true 837 | 838 | /brace-expansion@1.1.11: 839 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 840 | dependencies: 841 | balanced-match: 1.0.2 842 | concat-map: 0.0.1 843 | dev: true 844 | 845 | /braces@3.0.2: 846 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 847 | engines: {node: '>=8'} 848 | dependencies: 849 | fill-range: 7.0.1 850 | dev: true 851 | 852 | /browserslist@4.21.9: 853 | resolution: {integrity: sha512-M0MFoZzbUrRU4KNfCrDLnvyE7gub+peetoTid3TBIqtunaDJyXlwhakT+/VkvSXcfIzFfK/nkCs4nmyTmxdNSg==} 854 | engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} 855 | hasBin: true 856 | dependencies: 857 | caniuse-lite: 1.0.30001515 858 | electron-to-chromium: 1.4.461 859 | node-releases: 2.0.13 860 | update-browserslist-db: 1.0.11(browserslist@4.21.9) 861 | dev: true 862 | 863 | /bser@2.1.1: 864 | resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} 865 | dependencies: 866 | node-int64: 0.4.0 867 | dev: true 868 | 869 | /buffer-from@1.1.2: 870 | resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} 871 | dev: true 872 | 873 | /callsites@3.1.0: 874 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 875 | engines: {node: '>=6'} 876 | dev: true 877 | 878 | /camelcase@5.3.1: 879 | resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} 880 | engines: {node: '>=6'} 881 | dev: true 882 | 883 | /camelcase@6.3.0: 884 | resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} 885 | engines: {node: '>=10'} 886 | dev: true 887 | 888 | /caniuse-lite@1.0.30001515: 889 | resolution: {integrity: sha512-eEFDwUOZbE24sb+Ecsx3+OvNETqjWIdabMy52oOkIgcUtAsQifjUG9q4U9dgTHJM2mfk4uEPxc0+xuFdJ629QA==} 890 | dev: true 891 | 892 | /chalk@2.4.2: 893 | resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} 894 | engines: {node: '>=4'} 895 | dependencies: 896 | ansi-styles: 3.2.1 897 | escape-string-regexp: 1.0.5 898 | supports-color: 5.5.0 899 | dev: true 900 | 901 | /chalk@4.1.2: 902 | resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} 903 | engines: {node: '>=10'} 904 | dependencies: 905 | ansi-styles: 4.3.0 906 | supports-color: 7.2.0 907 | dev: true 908 | 909 | /char-regex@1.0.2: 910 | resolution: {integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==} 911 | engines: {node: '>=10'} 912 | dev: true 913 | 914 | /ci-info@3.8.0: 915 | resolution: {integrity: sha512-eXTggHWSooYhq49F2opQhuHWgzucfF2YgODK4e1566GQs5BIfP30B0oenwBJHfWxAs2fyPB1s7Mg949zLf61Yw==} 916 | engines: {node: '>=8'} 917 | dev: true 918 | 919 | /cjs-module-lexer@1.2.3: 920 | resolution: {integrity: sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==} 921 | dev: true 922 | 923 | /cliui@8.0.1: 924 | resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} 925 | engines: {node: '>=12'} 926 | dependencies: 927 | string-width: 4.2.3 928 | strip-ansi: 6.0.1 929 | wrap-ansi: 7.0.0 930 | dev: true 931 | 932 | /co@4.6.0: 933 | resolution: {integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==} 934 | engines: {iojs: '>= 1.0.0', node: '>= 0.12.0'} 935 | dev: true 936 | 937 | /collect-v8-coverage@1.0.2: 938 | resolution: {integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==} 939 | dev: true 940 | 941 | /color-convert@1.9.3: 942 | resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} 943 | dependencies: 944 | color-name: 1.1.3 945 | dev: true 946 | 947 | /color-convert@2.0.1: 948 | resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} 949 | engines: {node: '>=7.0.0'} 950 | dependencies: 951 | color-name: 1.1.4 952 | dev: true 953 | 954 | /color-name@1.1.3: 955 | resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} 956 | dev: true 957 | 958 | /color-name@1.1.4: 959 | resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} 960 | dev: true 961 | 962 | /commander@11.0.0: 963 | resolution: {integrity: sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==} 964 | engines: {node: '>=16'} 965 | dev: false 966 | 967 | /concat-map@0.0.1: 968 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 969 | dev: true 970 | 971 | /convert-source-map@1.9.0: 972 | resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} 973 | dev: true 974 | 975 | /convert-source-map@2.0.0: 976 | resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} 977 | dev: true 978 | 979 | /cross-spawn@7.0.3: 980 | resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} 981 | engines: {node: '>= 8'} 982 | dependencies: 983 | path-key: 3.1.1 984 | shebang-command: 2.0.0 985 | which: 2.0.2 986 | dev: true 987 | 988 | /debug@4.3.4: 989 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 990 | engines: {node: '>=6.0'} 991 | peerDependencies: 992 | supports-color: '*' 993 | peerDependenciesMeta: 994 | supports-color: 995 | optional: true 996 | dependencies: 997 | ms: 2.1.2 998 | dev: true 999 | 1000 | /dedent@0.7.0: 1001 | resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} 1002 | dev: true 1003 | 1004 | /deepmerge@4.3.1: 1005 | resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} 1006 | engines: {node: '>=0.10.0'} 1007 | dev: true 1008 | 1009 | /detect-newline@3.1.0: 1010 | resolution: {integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==} 1011 | engines: {node: '>=8'} 1012 | dev: true 1013 | 1014 | /diff-sequences@29.4.3: 1015 | resolution: {integrity: sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==} 1016 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1017 | dev: true 1018 | 1019 | /electron-to-chromium@1.4.461: 1020 | resolution: {integrity: sha512-1JkvV2sgEGTDXjdsaQCeSwYYuhLRphRpc+g6EHTFELJXEiznLt3/0pZ9JuAOQ5p2rI3YxKTbivtvajirIfhrEQ==} 1021 | dev: true 1022 | 1023 | /emittery@0.13.1: 1024 | resolution: {integrity: sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==} 1025 | engines: {node: '>=12'} 1026 | dev: true 1027 | 1028 | /emoji-regex@8.0.0: 1029 | resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} 1030 | dev: true 1031 | 1032 | /error-ex@1.3.2: 1033 | resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} 1034 | dependencies: 1035 | is-arrayish: 0.2.1 1036 | dev: true 1037 | 1038 | /escalade@3.1.1: 1039 | resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} 1040 | engines: {node: '>=6'} 1041 | dev: true 1042 | 1043 | /escape-string-regexp@1.0.5: 1044 | resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} 1045 | engines: {node: '>=0.8.0'} 1046 | dev: true 1047 | 1048 | /escape-string-regexp@2.0.0: 1049 | resolution: {integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==} 1050 | engines: {node: '>=8'} 1051 | dev: true 1052 | 1053 | /esprima@4.0.1: 1054 | resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} 1055 | engines: {node: '>=4'} 1056 | hasBin: true 1057 | dev: true 1058 | 1059 | /execa@5.1.1: 1060 | resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} 1061 | engines: {node: '>=10'} 1062 | dependencies: 1063 | cross-spawn: 7.0.3 1064 | get-stream: 6.0.1 1065 | human-signals: 2.1.0 1066 | is-stream: 2.0.1 1067 | merge-stream: 2.0.0 1068 | npm-run-path: 4.0.1 1069 | onetime: 5.1.2 1070 | signal-exit: 3.0.7 1071 | strip-final-newline: 2.0.0 1072 | dev: true 1073 | 1074 | /exit@0.1.2: 1075 | resolution: {integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==} 1076 | engines: {node: '>= 0.8.0'} 1077 | dev: true 1078 | 1079 | /expect@29.6.1: 1080 | resolution: {integrity: sha512-XEdDLonERCU1n9uR56/Stx9OqojaLAQtZf9PrCHH9Hl8YXiEIka3H4NXJ3NOIBmQJTg7+j7buh34PMHfJujc8g==} 1081 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1082 | dependencies: 1083 | '@jest/expect-utils': 29.6.1 1084 | '@types/node': 20.4.2 1085 | jest-get-type: 29.4.3 1086 | jest-matcher-utils: 29.6.1 1087 | jest-message-util: 29.6.1 1088 | jest-util: 29.6.1 1089 | dev: true 1090 | 1091 | /fast-json-stable-stringify@2.1.0: 1092 | resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} 1093 | dev: true 1094 | 1095 | /fb-watchman@2.0.2: 1096 | resolution: {integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==} 1097 | dependencies: 1098 | bser: 2.1.1 1099 | dev: true 1100 | 1101 | /fill-range@7.0.1: 1102 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 1103 | engines: {node: '>=8'} 1104 | dependencies: 1105 | to-regex-range: 5.0.1 1106 | dev: true 1107 | 1108 | /find-up@4.1.0: 1109 | resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} 1110 | engines: {node: '>=8'} 1111 | dependencies: 1112 | locate-path: 5.0.0 1113 | path-exists: 4.0.0 1114 | dev: true 1115 | 1116 | /fs.realpath@1.0.0: 1117 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 1118 | dev: true 1119 | 1120 | /fsevents@2.3.2: 1121 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 1122 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 1123 | os: [darwin] 1124 | requiresBuild: true 1125 | dev: true 1126 | optional: true 1127 | 1128 | /function-bind@1.1.1: 1129 | resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} 1130 | dev: true 1131 | 1132 | /gensync@1.0.0-beta.2: 1133 | resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} 1134 | engines: {node: '>=6.9.0'} 1135 | dev: true 1136 | 1137 | /get-caller-file@2.0.5: 1138 | resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} 1139 | engines: {node: 6.* || 8.* || >= 10.*} 1140 | dev: true 1141 | 1142 | /get-package-type@0.1.0: 1143 | resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} 1144 | engines: {node: '>=8.0.0'} 1145 | dev: true 1146 | 1147 | /get-stream@6.0.1: 1148 | resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} 1149 | engines: {node: '>=10'} 1150 | dev: true 1151 | 1152 | /glob@7.2.3: 1153 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 1154 | dependencies: 1155 | fs.realpath: 1.0.0 1156 | inflight: 1.0.6 1157 | inherits: 2.0.4 1158 | minimatch: 3.1.2 1159 | once: 1.4.0 1160 | path-is-absolute: 1.0.1 1161 | dev: true 1162 | 1163 | /globals@11.12.0: 1164 | resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} 1165 | engines: {node: '>=4'} 1166 | dev: true 1167 | 1168 | /graceful-fs@4.2.11: 1169 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 1170 | dev: true 1171 | 1172 | /has-flag@3.0.0: 1173 | resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} 1174 | engines: {node: '>=4'} 1175 | dev: true 1176 | 1177 | /has-flag@4.0.0: 1178 | resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} 1179 | engines: {node: '>=8'} 1180 | dev: true 1181 | 1182 | /has@1.0.3: 1183 | resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==} 1184 | engines: {node: '>= 0.4.0'} 1185 | dependencies: 1186 | function-bind: 1.1.1 1187 | dev: true 1188 | 1189 | /html-escaper@2.0.2: 1190 | resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} 1191 | dev: true 1192 | 1193 | /human-signals@2.1.0: 1194 | resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} 1195 | engines: {node: '>=10.17.0'} 1196 | dev: true 1197 | 1198 | /import-local@3.1.0: 1199 | resolution: {integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==} 1200 | engines: {node: '>=8'} 1201 | hasBin: true 1202 | dependencies: 1203 | pkg-dir: 4.2.0 1204 | resolve-cwd: 3.0.0 1205 | dev: true 1206 | 1207 | /imurmurhash@0.1.4: 1208 | resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} 1209 | engines: {node: '>=0.8.19'} 1210 | dev: true 1211 | 1212 | /inflight@1.0.6: 1213 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 1214 | dependencies: 1215 | once: 1.4.0 1216 | wrappy: 1.0.2 1217 | dev: true 1218 | 1219 | /inherits@2.0.4: 1220 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 1221 | dev: true 1222 | 1223 | /is-arrayish@0.2.1: 1224 | resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} 1225 | dev: true 1226 | 1227 | /is-core-module@2.12.1: 1228 | resolution: {integrity: sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg==} 1229 | dependencies: 1230 | has: 1.0.3 1231 | dev: true 1232 | 1233 | /is-fullwidth-code-point@3.0.0: 1234 | resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} 1235 | engines: {node: '>=8'} 1236 | dev: true 1237 | 1238 | /is-generator-fn@2.1.0: 1239 | resolution: {integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==} 1240 | engines: {node: '>=6'} 1241 | dev: true 1242 | 1243 | /is-number@7.0.0: 1244 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 1245 | engines: {node: '>=0.12.0'} 1246 | dev: true 1247 | 1248 | /is-stream@2.0.1: 1249 | resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} 1250 | engines: {node: '>=8'} 1251 | dev: true 1252 | 1253 | /isexe@2.0.0: 1254 | resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} 1255 | dev: true 1256 | 1257 | /istanbul-lib-coverage@3.2.0: 1258 | resolution: {integrity: sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==} 1259 | engines: {node: '>=8'} 1260 | dev: true 1261 | 1262 | /istanbul-lib-instrument@5.2.1: 1263 | resolution: {integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==} 1264 | engines: {node: '>=8'} 1265 | dependencies: 1266 | '@babel/core': 7.22.9 1267 | '@babel/parser': 7.22.7 1268 | '@istanbuljs/schema': 0.1.3 1269 | istanbul-lib-coverage: 3.2.0 1270 | semver: 6.3.1 1271 | transitivePeerDependencies: 1272 | - supports-color 1273 | dev: true 1274 | 1275 | /istanbul-lib-report@3.0.0: 1276 | resolution: {integrity: sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==} 1277 | engines: {node: '>=8'} 1278 | dependencies: 1279 | istanbul-lib-coverage: 3.2.0 1280 | make-dir: 3.1.0 1281 | supports-color: 7.2.0 1282 | dev: true 1283 | 1284 | /istanbul-lib-source-maps@4.0.1: 1285 | resolution: {integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==} 1286 | engines: {node: '>=10'} 1287 | dependencies: 1288 | debug: 4.3.4 1289 | istanbul-lib-coverage: 3.2.0 1290 | source-map: 0.6.1 1291 | transitivePeerDependencies: 1292 | - supports-color 1293 | dev: true 1294 | 1295 | /istanbul-reports@3.1.5: 1296 | resolution: {integrity: sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==} 1297 | engines: {node: '>=8'} 1298 | dependencies: 1299 | html-escaper: 2.0.2 1300 | istanbul-lib-report: 3.0.0 1301 | dev: true 1302 | 1303 | /jest-changed-files@29.5.0: 1304 | resolution: {integrity: sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==} 1305 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1306 | dependencies: 1307 | execa: 5.1.1 1308 | p-limit: 3.1.0 1309 | dev: true 1310 | 1311 | /jest-circus@29.6.1: 1312 | resolution: {integrity: sha512-tPbYLEiBU4MYAL2XoZme/bgfUeotpDBd81lgHLCbDZZFaGmECk0b+/xejPFtmiBP87GgP/y4jplcRpbH+fgCzQ==} 1313 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1314 | dependencies: 1315 | '@jest/environment': 29.6.1 1316 | '@jest/expect': 29.6.1 1317 | '@jest/test-result': 29.6.1 1318 | '@jest/types': 29.6.1 1319 | '@types/node': 20.4.2 1320 | chalk: 4.1.2 1321 | co: 4.6.0 1322 | dedent: 0.7.0 1323 | is-generator-fn: 2.1.0 1324 | jest-each: 29.6.1 1325 | jest-matcher-utils: 29.6.1 1326 | jest-message-util: 29.6.1 1327 | jest-runtime: 29.6.1 1328 | jest-snapshot: 29.6.1 1329 | jest-util: 29.6.1 1330 | p-limit: 3.1.0 1331 | pretty-format: 29.6.1 1332 | pure-rand: 6.0.2 1333 | slash: 3.0.0 1334 | stack-utils: 2.0.6 1335 | transitivePeerDependencies: 1336 | - supports-color 1337 | dev: true 1338 | 1339 | /jest-cli@29.6.1: 1340 | resolution: {integrity: sha512-607dSgTA4ODIN6go9w6xY3EYkyPFGicx51a69H7yfvt7lN53xNswEVLovq+E77VsTRi5fWprLH0yl4DJgE8Ing==} 1341 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1342 | hasBin: true 1343 | peerDependencies: 1344 | node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 1345 | peerDependenciesMeta: 1346 | node-notifier: 1347 | optional: true 1348 | dependencies: 1349 | '@jest/core': 29.6.1 1350 | '@jest/test-result': 29.6.1 1351 | '@jest/types': 29.6.1 1352 | chalk: 4.1.2 1353 | exit: 0.1.2 1354 | graceful-fs: 4.2.11 1355 | import-local: 3.1.0 1356 | jest-config: 29.6.1(@types/node@20.4.2) 1357 | jest-util: 29.6.1 1358 | jest-validate: 29.6.1 1359 | prompts: 2.4.2 1360 | yargs: 17.7.2 1361 | transitivePeerDependencies: 1362 | - '@types/node' 1363 | - supports-color 1364 | - ts-node 1365 | dev: true 1366 | 1367 | /jest-config@29.6.1(@types/node@20.4.2): 1368 | resolution: {integrity: sha512-XdjYV2fy2xYixUiV2Wc54t3Z4oxYPAELUzWnV6+mcbq0rh742X2p52pii5A3oeRzYjLnQxCsZmp0qpI6klE2cQ==} 1369 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1370 | peerDependencies: 1371 | '@types/node': '*' 1372 | ts-node: '>=9.0.0' 1373 | peerDependenciesMeta: 1374 | '@types/node': 1375 | optional: true 1376 | ts-node: 1377 | optional: true 1378 | dependencies: 1379 | '@babel/core': 7.22.9 1380 | '@jest/test-sequencer': 29.6.1 1381 | '@jest/types': 29.6.1 1382 | '@types/node': 20.4.2 1383 | babel-jest: 29.6.1(@babel/core@7.22.9) 1384 | chalk: 4.1.2 1385 | ci-info: 3.8.0 1386 | deepmerge: 4.3.1 1387 | glob: 7.2.3 1388 | graceful-fs: 4.2.11 1389 | jest-circus: 29.6.1 1390 | jest-environment-node: 29.6.1 1391 | jest-get-type: 29.4.3 1392 | jest-regex-util: 29.4.3 1393 | jest-resolve: 29.6.1 1394 | jest-runner: 29.6.1 1395 | jest-util: 29.6.1 1396 | jest-validate: 29.6.1 1397 | micromatch: 4.0.5 1398 | parse-json: 5.2.0 1399 | pretty-format: 29.6.1 1400 | slash: 3.0.0 1401 | strip-json-comments: 3.1.1 1402 | transitivePeerDependencies: 1403 | - supports-color 1404 | dev: true 1405 | 1406 | /jest-diff@29.6.1: 1407 | resolution: {integrity: sha512-FsNCvinvl8oVxpNLttNQX7FAq7vR+gMDGj90tiP7siWw1UdakWUGqrylpsYrpvj908IYckm5Y0Q7azNAozU1Kg==} 1408 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1409 | dependencies: 1410 | chalk: 4.1.2 1411 | diff-sequences: 29.4.3 1412 | jest-get-type: 29.4.3 1413 | pretty-format: 29.6.1 1414 | dev: true 1415 | 1416 | /jest-docblock@29.4.3: 1417 | resolution: {integrity: sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==} 1418 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1419 | dependencies: 1420 | detect-newline: 3.1.0 1421 | dev: true 1422 | 1423 | /jest-each@29.6.1: 1424 | resolution: {integrity: sha512-n5eoj5eiTHpKQCAVcNTT7DRqeUmJ01hsAL0Q1SMiBHcBcvTKDELixQOGMCpqhbIuTcfC4kMfSnpmDqRgRJcLNQ==} 1425 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1426 | dependencies: 1427 | '@jest/types': 29.6.1 1428 | chalk: 4.1.2 1429 | jest-get-type: 29.4.3 1430 | jest-util: 29.6.1 1431 | pretty-format: 29.6.1 1432 | dev: true 1433 | 1434 | /jest-environment-node@29.6.1: 1435 | resolution: {integrity: sha512-ZNIfAiE+foBog24W+2caIldl4Irh8Lx1PUhg/GZ0odM1d/h2qORAsejiFc7zb+SEmYPn1yDZzEDSU5PmDkmVLQ==} 1436 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1437 | dependencies: 1438 | '@jest/environment': 29.6.1 1439 | '@jest/fake-timers': 29.6.1 1440 | '@jest/types': 29.6.1 1441 | '@types/node': 20.4.2 1442 | jest-mock: 29.6.1 1443 | jest-util: 29.6.1 1444 | dev: true 1445 | 1446 | /jest-get-type@29.4.3: 1447 | resolution: {integrity: sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==} 1448 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1449 | dev: true 1450 | 1451 | /jest-haste-map@29.6.1: 1452 | resolution: {integrity: sha512-0m7f9PZXxOCk1gRACiVgX85knUKPKLPg4oRCjLoqIm9brTHXaorMA0JpmtmVkQiT8nmXyIVoZd/nnH1cfC33ig==} 1453 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1454 | dependencies: 1455 | '@jest/types': 29.6.1 1456 | '@types/graceful-fs': 4.1.6 1457 | '@types/node': 20.4.2 1458 | anymatch: 3.1.3 1459 | fb-watchman: 2.0.2 1460 | graceful-fs: 4.2.11 1461 | jest-regex-util: 29.4.3 1462 | jest-util: 29.6.1 1463 | jest-worker: 29.6.1 1464 | micromatch: 4.0.5 1465 | walker: 1.0.8 1466 | optionalDependencies: 1467 | fsevents: 2.3.2 1468 | dev: true 1469 | 1470 | /jest-leak-detector@29.6.1: 1471 | resolution: {integrity: sha512-OrxMNyZirpOEwkF3UHnIkAiZbtkBWiye+hhBweCHkVbCgyEy71Mwbb5zgeTNYWJBi1qgDVfPC1IwO9dVEeTLwQ==} 1472 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1473 | dependencies: 1474 | jest-get-type: 29.4.3 1475 | pretty-format: 29.6.1 1476 | dev: true 1477 | 1478 | /jest-matcher-utils@29.6.1: 1479 | resolution: {integrity: sha512-SLaztw9d2mfQQKHmJXKM0HCbl2PPVld/t9Xa6P9sgiExijviSp7TnZZpw2Fpt+OI3nwUO/slJbOfzfUMKKC5QA==} 1480 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1481 | dependencies: 1482 | chalk: 4.1.2 1483 | jest-diff: 29.6.1 1484 | jest-get-type: 29.4.3 1485 | pretty-format: 29.6.1 1486 | dev: true 1487 | 1488 | /jest-message-util@29.6.1: 1489 | resolution: {integrity: sha512-KoAW2zAmNSd3Gk88uJ56qXUWbFk787QKmjjJVOjtGFmmGSZgDBrlIL4AfQw1xyMYPNVD7dNInfIbur9B2rd/wQ==} 1490 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1491 | dependencies: 1492 | '@babel/code-frame': 7.22.5 1493 | '@jest/types': 29.6.1 1494 | '@types/stack-utils': 2.0.1 1495 | chalk: 4.1.2 1496 | graceful-fs: 4.2.11 1497 | micromatch: 4.0.5 1498 | pretty-format: 29.6.1 1499 | slash: 3.0.0 1500 | stack-utils: 2.0.6 1501 | dev: true 1502 | 1503 | /jest-mock@29.6.1: 1504 | resolution: {integrity: sha512-brovyV9HBkjXAEdRooaTQK42n8usKoSRR3gihzUpYeV/vwqgSoNfrksO7UfSACnPmxasO/8TmHM3w9Hp3G1dgw==} 1505 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1506 | dependencies: 1507 | '@jest/types': 29.6.1 1508 | '@types/node': 20.4.2 1509 | jest-util: 29.6.1 1510 | dev: true 1511 | 1512 | /jest-pnp-resolver@1.2.3(jest-resolve@29.6.1): 1513 | resolution: {integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==} 1514 | engines: {node: '>=6'} 1515 | peerDependencies: 1516 | jest-resolve: '*' 1517 | peerDependenciesMeta: 1518 | jest-resolve: 1519 | optional: true 1520 | dependencies: 1521 | jest-resolve: 29.6.1 1522 | dev: true 1523 | 1524 | /jest-regex-util@29.4.3: 1525 | resolution: {integrity: sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==} 1526 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1527 | dev: true 1528 | 1529 | /jest-resolve-dependencies@29.6.1: 1530 | resolution: {integrity: sha512-BbFvxLXtcldaFOhNMXmHRWx1nXQO5LoXiKSGQcA1LxxirYceZT6ch8KTE1bK3X31TNG/JbkI7OkS/ABexVahiw==} 1531 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1532 | dependencies: 1533 | jest-regex-util: 29.4.3 1534 | jest-snapshot: 29.6.1 1535 | transitivePeerDependencies: 1536 | - supports-color 1537 | dev: true 1538 | 1539 | /jest-resolve@29.6.1: 1540 | resolution: {integrity: sha512-AeRkyS8g37UyJiP9w3mmI/VXU/q8l/IH52vj/cDAyScDcemRbSBhfX/NMYIGilQgSVwsjxrCHf3XJu4f+lxCMg==} 1541 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1542 | dependencies: 1543 | chalk: 4.1.2 1544 | graceful-fs: 4.2.11 1545 | jest-haste-map: 29.6.1 1546 | jest-pnp-resolver: 1.2.3(jest-resolve@29.6.1) 1547 | jest-util: 29.6.1 1548 | jest-validate: 29.6.1 1549 | resolve: 1.22.2 1550 | resolve.exports: 2.0.2 1551 | slash: 3.0.0 1552 | dev: true 1553 | 1554 | /jest-runner@29.6.1: 1555 | resolution: {integrity: sha512-tw0wb2Q9yhjAQ2w8rHRDxteryyIck7gIzQE4Reu3JuOBpGp96xWgF0nY8MDdejzrLCZKDcp8JlZrBN/EtkQvPQ==} 1556 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1557 | dependencies: 1558 | '@jest/console': 29.6.1 1559 | '@jest/environment': 29.6.1 1560 | '@jest/test-result': 29.6.1 1561 | '@jest/transform': 29.6.1 1562 | '@jest/types': 29.6.1 1563 | '@types/node': 20.4.2 1564 | chalk: 4.1.2 1565 | emittery: 0.13.1 1566 | graceful-fs: 4.2.11 1567 | jest-docblock: 29.4.3 1568 | jest-environment-node: 29.6.1 1569 | jest-haste-map: 29.6.1 1570 | jest-leak-detector: 29.6.1 1571 | jest-message-util: 29.6.1 1572 | jest-resolve: 29.6.1 1573 | jest-runtime: 29.6.1 1574 | jest-util: 29.6.1 1575 | jest-watcher: 29.6.1 1576 | jest-worker: 29.6.1 1577 | p-limit: 3.1.0 1578 | source-map-support: 0.5.13 1579 | transitivePeerDependencies: 1580 | - supports-color 1581 | dev: true 1582 | 1583 | /jest-runtime@29.6.1: 1584 | resolution: {integrity: sha512-D6/AYOA+Lhs5e5il8+5pSLemjtJezUr+8zx+Sn8xlmOux3XOqx4d8l/2udBea8CRPqqrzhsKUsN/gBDE/IcaPQ==} 1585 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1586 | dependencies: 1587 | '@jest/environment': 29.6.1 1588 | '@jest/fake-timers': 29.6.1 1589 | '@jest/globals': 29.6.1 1590 | '@jest/source-map': 29.6.0 1591 | '@jest/test-result': 29.6.1 1592 | '@jest/transform': 29.6.1 1593 | '@jest/types': 29.6.1 1594 | '@types/node': 20.4.2 1595 | chalk: 4.1.2 1596 | cjs-module-lexer: 1.2.3 1597 | collect-v8-coverage: 1.0.2 1598 | glob: 7.2.3 1599 | graceful-fs: 4.2.11 1600 | jest-haste-map: 29.6.1 1601 | jest-message-util: 29.6.1 1602 | jest-mock: 29.6.1 1603 | jest-regex-util: 29.4.3 1604 | jest-resolve: 29.6.1 1605 | jest-snapshot: 29.6.1 1606 | jest-util: 29.6.1 1607 | slash: 3.0.0 1608 | strip-bom: 4.0.0 1609 | transitivePeerDependencies: 1610 | - supports-color 1611 | dev: true 1612 | 1613 | /jest-snapshot@29.6.1: 1614 | resolution: {integrity: sha512-G4UQE1QQ6OaCgfY+A0uR1W2AY0tGXUPQpoUClhWHq1Xdnx1H6JOrC2nH5lqnOEqaDgbHFgIwZ7bNq24HpB180A==} 1615 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1616 | dependencies: 1617 | '@babel/core': 7.22.9 1618 | '@babel/generator': 7.22.9 1619 | '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.22.9) 1620 | '@babel/plugin-syntax-typescript': 7.22.5(@babel/core@7.22.9) 1621 | '@babel/types': 7.22.5 1622 | '@jest/expect-utils': 29.6.1 1623 | '@jest/transform': 29.6.1 1624 | '@jest/types': 29.6.1 1625 | '@types/prettier': 2.7.3 1626 | babel-preset-current-node-syntax: 1.0.1(@babel/core@7.22.9) 1627 | chalk: 4.1.2 1628 | expect: 29.6.1 1629 | graceful-fs: 4.2.11 1630 | jest-diff: 29.6.1 1631 | jest-get-type: 29.4.3 1632 | jest-matcher-utils: 29.6.1 1633 | jest-message-util: 29.6.1 1634 | jest-util: 29.6.1 1635 | natural-compare: 1.4.0 1636 | pretty-format: 29.6.1 1637 | semver: 7.5.4 1638 | transitivePeerDependencies: 1639 | - supports-color 1640 | dev: true 1641 | 1642 | /jest-util@29.6.1: 1643 | resolution: {integrity: sha512-NRFCcjc+/uO3ijUVyNOQJluf8PtGCe/W6cix36+M3cTFgiYqFOOW5MgN4JOOcvbUhcKTYVd1CvHz/LWi8d16Mg==} 1644 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1645 | dependencies: 1646 | '@jest/types': 29.6.1 1647 | '@types/node': 20.4.2 1648 | chalk: 4.1.2 1649 | ci-info: 3.8.0 1650 | graceful-fs: 4.2.11 1651 | picomatch: 2.3.1 1652 | dev: true 1653 | 1654 | /jest-validate@29.6.1: 1655 | resolution: {integrity: sha512-r3Ds69/0KCN4vx4sYAbGL1EVpZ7MSS0vLmd3gV78O+NAx3PDQQukRU5hNHPXlyqCgFY8XUk7EuTMLugh0KzahA==} 1656 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1657 | dependencies: 1658 | '@jest/types': 29.6.1 1659 | camelcase: 6.3.0 1660 | chalk: 4.1.2 1661 | jest-get-type: 29.4.3 1662 | leven: 3.1.0 1663 | pretty-format: 29.6.1 1664 | dev: true 1665 | 1666 | /jest-watcher@29.6.1: 1667 | resolution: {integrity: sha512-d4wpjWTS7HEZPaaj8m36QiaP856JthRZkrgcIY/7ISoUWPIillrXM23WPboZVLbiwZBt4/qn2Jke84Sla6JhFA==} 1668 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1669 | dependencies: 1670 | '@jest/test-result': 29.6.1 1671 | '@jest/types': 29.6.1 1672 | '@types/node': 20.4.2 1673 | ansi-escapes: 4.3.2 1674 | chalk: 4.1.2 1675 | emittery: 0.13.1 1676 | jest-util: 29.6.1 1677 | string-length: 4.0.2 1678 | dev: true 1679 | 1680 | /jest-worker@29.6.1: 1681 | resolution: {integrity: sha512-U+Wrbca7S8ZAxAe9L6nb6g8kPdia5hj32Puu5iOqBCMTMWFHXuK6dOV2IFrpedbTV8fjMFLdWNttQTBL6u2MRA==} 1682 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1683 | dependencies: 1684 | '@types/node': 20.4.2 1685 | jest-util: 29.6.1 1686 | merge-stream: 2.0.0 1687 | supports-color: 8.1.1 1688 | dev: true 1689 | 1690 | /jest@29.6.1: 1691 | resolution: {integrity: sha512-Nirw5B4nn69rVUZtemCQhwxOBhm0nsp3hmtF4rzCeWD7BkjAXRIji7xWQfnTNbz9g0aVsBX6aZK3n+23LM6uDw==} 1692 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1693 | hasBin: true 1694 | peerDependencies: 1695 | node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 1696 | peerDependenciesMeta: 1697 | node-notifier: 1698 | optional: true 1699 | dependencies: 1700 | '@jest/core': 29.6.1 1701 | '@jest/types': 29.6.1 1702 | import-local: 3.1.0 1703 | jest-cli: 29.6.1 1704 | transitivePeerDependencies: 1705 | - '@types/node' 1706 | - supports-color 1707 | - ts-node 1708 | dev: true 1709 | 1710 | /js-tokens@4.0.0: 1711 | resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} 1712 | dev: true 1713 | 1714 | /js-yaml@3.14.1: 1715 | resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} 1716 | hasBin: true 1717 | dependencies: 1718 | argparse: 1.0.10 1719 | esprima: 4.0.1 1720 | dev: true 1721 | 1722 | /jsesc@2.5.2: 1723 | resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} 1724 | engines: {node: '>=4'} 1725 | hasBin: true 1726 | dev: true 1727 | 1728 | /json-parse-even-better-errors@2.3.1: 1729 | resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} 1730 | dev: true 1731 | 1732 | /json5@2.2.3: 1733 | resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} 1734 | engines: {node: '>=6'} 1735 | hasBin: true 1736 | dev: true 1737 | 1738 | /kleur@3.0.3: 1739 | resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} 1740 | engines: {node: '>=6'} 1741 | dev: true 1742 | 1743 | /leven@3.1.0: 1744 | resolution: {integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==} 1745 | engines: {node: '>=6'} 1746 | dev: true 1747 | 1748 | /lines-and-columns@1.2.4: 1749 | resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} 1750 | dev: true 1751 | 1752 | /locate-path@5.0.0: 1753 | resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} 1754 | engines: {node: '>=8'} 1755 | dependencies: 1756 | p-locate: 4.1.0 1757 | dev: true 1758 | 1759 | /lru-cache@5.1.1: 1760 | resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} 1761 | dependencies: 1762 | yallist: 3.1.1 1763 | dev: true 1764 | 1765 | /lru-cache@6.0.0: 1766 | resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} 1767 | engines: {node: '>=10'} 1768 | dependencies: 1769 | yallist: 4.0.0 1770 | dev: true 1771 | 1772 | /make-dir@3.1.0: 1773 | resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} 1774 | engines: {node: '>=8'} 1775 | dependencies: 1776 | semver: 6.3.1 1777 | dev: true 1778 | 1779 | /makeerror@1.0.12: 1780 | resolution: {integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==} 1781 | dependencies: 1782 | tmpl: 1.0.5 1783 | dev: true 1784 | 1785 | /merge-stream@2.0.0: 1786 | resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} 1787 | dev: true 1788 | 1789 | /micromatch@4.0.5: 1790 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 1791 | engines: {node: '>=8.6'} 1792 | dependencies: 1793 | braces: 3.0.2 1794 | picomatch: 2.3.1 1795 | dev: true 1796 | 1797 | /mimic-fn@2.1.0: 1798 | resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} 1799 | engines: {node: '>=6'} 1800 | dev: true 1801 | 1802 | /minimatch@3.1.2: 1803 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 1804 | dependencies: 1805 | brace-expansion: 1.1.11 1806 | dev: true 1807 | 1808 | /ms@2.1.2: 1809 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 1810 | dev: true 1811 | 1812 | /natural-compare@1.4.0: 1813 | resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} 1814 | dev: true 1815 | 1816 | /node-int64@0.4.0: 1817 | resolution: {integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==} 1818 | dev: true 1819 | 1820 | /node-releases@2.0.13: 1821 | resolution: {integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==} 1822 | dev: true 1823 | 1824 | /normalize-path@3.0.0: 1825 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 1826 | engines: {node: '>=0.10.0'} 1827 | dev: true 1828 | 1829 | /npm-run-path@4.0.1: 1830 | resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} 1831 | engines: {node: '>=8'} 1832 | dependencies: 1833 | path-key: 3.1.1 1834 | dev: true 1835 | 1836 | /once@1.4.0: 1837 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 1838 | dependencies: 1839 | wrappy: 1.0.2 1840 | dev: true 1841 | 1842 | /onetime@5.1.2: 1843 | resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} 1844 | engines: {node: '>=6'} 1845 | dependencies: 1846 | mimic-fn: 2.1.0 1847 | dev: true 1848 | 1849 | /p-limit@2.3.0: 1850 | resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} 1851 | engines: {node: '>=6'} 1852 | dependencies: 1853 | p-try: 2.2.0 1854 | dev: true 1855 | 1856 | /p-limit@3.1.0: 1857 | resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} 1858 | engines: {node: '>=10'} 1859 | dependencies: 1860 | yocto-queue: 0.1.0 1861 | dev: true 1862 | 1863 | /p-locate@4.1.0: 1864 | resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} 1865 | engines: {node: '>=8'} 1866 | dependencies: 1867 | p-limit: 2.3.0 1868 | dev: true 1869 | 1870 | /p-try@2.2.0: 1871 | resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} 1872 | engines: {node: '>=6'} 1873 | dev: true 1874 | 1875 | /parse-json@5.2.0: 1876 | resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} 1877 | engines: {node: '>=8'} 1878 | dependencies: 1879 | '@babel/code-frame': 7.22.5 1880 | error-ex: 1.3.2 1881 | json-parse-even-better-errors: 2.3.1 1882 | lines-and-columns: 1.2.4 1883 | dev: true 1884 | 1885 | /path-exists@4.0.0: 1886 | resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} 1887 | engines: {node: '>=8'} 1888 | dev: true 1889 | 1890 | /path-is-absolute@1.0.1: 1891 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 1892 | engines: {node: '>=0.10.0'} 1893 | dev: true 1894 | 1895 | /path-key@3.1.1: 1896 | resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} 1897 | engines: {node: '>=8'} 1898 | dev: true 1899 | 1900 | /path-parse@1.0.7: 1901 | resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} 1902 | dev: true 1903 | 1904 | /picocolors@1.0.0: 1905 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 1906 | dev: true 1907 | 1908 | /picomatch@2.3.1: 1909 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 1910 | engines: {node: '>=8.6'} 1911 | dev: true 1912 | 1913 | /pirates@4.0.6: 1914 | resolution: {integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==} 1915 | engines: {node: '>= 6'} 1916 | dev: true 1917 | 1918 | /pkg-dir@4.2.0: 1919 | resolution: {integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==} 1920 | engines: {node: '>=8'} 1921 | dependencies: 1922 | find-up: 4.1.0 1923 | dev: true 1924 | 1925 | /pretty-format@29.6.1: 1926 | resolution: {integrity: sha512-7jRj+yXO0W7e4/tSJKoR7HRIHLPPjtNaUGG2xxKQnGvPNRkgWcQ0AZX6P4KBRJN4FcTBWb3sa7DVUJmocYuoog==} 1927 | engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} 1928 | dependencies: 1929 | '@jest/schemas': 29.6.0 1930 | ansi-styles: 5.2.0 1931 | react-is: 18.2.0 1932 | dev: true 1933 | 1934 | /prompts@2.4.2: 1935 | resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} 1936 | engines: {node: '>= 6'} 1937 | dependencies: 1938 | kleur: 3.0.3 1939 | sisteransi: 1.0.5 1940 | dev: true 1941 | 1942 | /pure-rand@6.0.2: 1943 | resolution: {integrity: sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==} 1944 | dev: true 1945 | 1946 | /react-is@18.2.0: 1947 | resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} 1948 | dev: true 1949 | 1950 | /require-directory@2.1.1: 1951 | resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} 1952 | engines: {node: '>=0.10.0'} 1953 | dev: true 1954 | 1955 | /resolve-cwd@3.0.0: 1956 | resolution: {integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==} 1957 | engines: {node: '>=8'} 1958 | dependencies: 1959 | resolve-from: 5.0.0 1960 | dev: true 1961 | 1962 | /resolve-from@5.0.0: 1963 | resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} 1964 | engines: {node: '>=8'} 1965 | dev: true 1966 | 1967 | /resolve.exports@2.0.2: 1968 | resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==} 1969 | engines: {node: '>=10'} 1970 | dev: true 1971 | 1972 | /resolve@1.22.2: 1973 | resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==} 1974 | hasBin: true 1975 | dependencies: 1976 | is-core-module: 2.12.1 1977 | path-parse: 1.0.7 1978 | supports-preserve-symlinks-flag: 1.0.0 1979 | dev: true 1980 | 1981 | /semver@6.3.1: 1982 | resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} 1983 | hasBin: true 1984 | dev: true 1985 | 1986 | /semver@7.5.4: 1987 | resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} 1988 | engines: {node: '>=10'} 1989 | hasBin: true 1990 | dependencies: 1991 | lru-cache: 6.0.0 1992 | dev: true 1993 | 1994 | /shebang-command@2.0.0: 1995 | resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} 1996 | engines: {node: '>=8'} 1997 | dependencies: 1998 | shebang-regex: 3.0.0 1999 | dev: true 2000 | 2001 | /shebang-regex@3.0.0: 2002 | resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} 2003 | engines: {node: '>=8'} 2004 | dev: true 2005 | 2006 | /signal-exit@3.0.7: 2007 | resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} 2008 | dev: true 2009 | 2010 | /sisteransi@1.0.5: 2011 | resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} 2012 | dev: true 2013 | 2014 | /slash@3.0.0: 2015 | resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} 2016 | engines: {node: '>=8'} 2017 | dev: true 2018 | 2019 | /source-map-support@0.5.13: 2020 | resolution: {integrity: sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==} 2021 | dependencies: 2022 | buffer-from: 1.1.2 2023 | source-map: 0.6.1 2024 | dev: true 2025 | 2026 | /source-map@0.6.1: 2027 | resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} 2028 | engines: {node: '>=0.10.0'} 2029 | dev: true 2030 | 2031 | /sprintf-js@1.0.3: 2032 | resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} 2033 | dev: true 2034 | 2035 | /stack-utils@2.0.6: 2036 | resolution: {integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==} 2037 | engines: {node: '>=10'} 2038 | dependencies: 2039 | escape-string-regexp: 2.0.0 2040 | dev: true 2041 | 2042 | /string-length@4.0.2: 2043 | resolution: {integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==} 2044 | engines: {node: '>=10'} 2045 | dependencies: 2046 | char-regex: 1.0.2 2047 | strip-ansi: 6.0.1 2048 | dev: true 2049 | 2050 | /string-width@4.2.3: 2051 | resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} 2052 | engines: {node: '>=8'} 2053 | dependencies: 2054 | emoji-regex: 8.0.0 2055 | is-fullwidth-code-point: 3.0.0 2056 | strip-ansi: 6.0.1 2057 | dev: true 2058 | 2059 | /strip-ansi@6.0.1: 2060 | resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} 2061 | engines: {node: '>=8'} 2062 | dependencies: 2063 | ansi-regex: 5.0.1 2064 | dev: true 2065 | 2066 | /strip-bom@4.0.0: 2067 | resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} 2068 | engines: {node: '>=8'} 2069 | dev: true 2070 | 2071 | /strip-final-newline@2.0.0: 2072 | resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} 2073 | engines: {node: '>=6'} 2074 | dev: true 2075 | 2076 | /strip-json-comments@3.1.1: 2077 | resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} 2078 | engines: {node: '>=8'} 2079 | dev: true 2080 | 2081 | /supports-color@5.5.0: 2082 | resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} 2083 | engines: {node: '>=4'} 2084 | dependencies: 2085 | has-flag: 3.0.0 2086 | dev: true 2087 | 2088 | /supports-color@7.2.0: 2089 | resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} 2090 | engines: {node: '>=8'} 2091 | dependencies: 2092 | has-flag: 4.0.0 2093 | dev: true 2094 | 2095 | /supports-color@8.1.1: 2096 | resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} 2097 | engines: {node: '>=10'} 2098 | dependencies: 2099 | has-flag: 4.0.0 2100 | dev: true 2101 | 2102 | /supports-preserve-symlinks-flag@1.0.0: 2103 | resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} 2104 | engines: {node: '>= 0.4'} 2105 | dev: true 2106 | 2107 | /test-exclude@6.0.0: 2108 | resolution: {integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==} 2109 | engines: {node: '>=8'} 2110 | dependencies: 2111 | '@istanbuljs/schema': 0.1.3 2112 | glob: 7.2.3 2113 | minimatch: 3.1.2 2114 | dev: true 2115 | 2116 | /tmpl@1.0.5: 2117 | resolution: {integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==} 2118 | dev: true 2119 | 2120 | /to-fast-properties@2.0.0: 2121 | resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} 2122 | engines: {node: '>=4'} 2123 | dev: true 2124 | 2125 | /to-regex-range@5.0.1: 2126 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 2127 | engines: {node: '>=8.0'} 2128 | dependencies: 2129 | is-number: 7.0.0 2130 | dev: true 2131 | 2132 | /type-detect@4.0.8: 2133 | resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} 2134 | engines: {node: '>=4'} 2135 | dev: true 2136 | 2137 | /type-fest@0.21.3: 2138 | resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} 2139 | engines: {node: '>=10'} 2140 | dev: true 2141 | 2142 | /update-browserslist-db@1.0.11(browserslist@4.21.9): 2143 | resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==} 2144 | hasBin: true 2145 | peerDependencies: 2146 | browserslist: '>= 4.21.0' 2147 | dependencies: 2148 | browserslist: 4.21.9 2149 | escalade: 3.1.1 2150 | picocolors: 1.0.0 2151 | dev: true 2152 | 2153 | /v8-to-istanbul@9.1.0: 2154 | resolution: {integrity: sha512-6z3GW9x8G1gd+JIIgQQQxXuiJtCXeAjp6RaPEPLv62mH3iPHPxV6W3robxtCzNErRo6ZwTmzWhsbNvjyEBKzKA==} 2155 | engines: {node: '>=10.12.0'} 2156 | dependencies: 2157 | '@jridgewell/trace-mapping': 0.3.18 2158 | '@types/istanbul-lib-coverage': 2.0.4 2159 | convert-source-map: 1.9.0 2160 | dev: true 2161 | 2162 | /walker@1.0.8: 2163 | resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} 2164 | dependencies: 2165 | makeerror: 1.0.12 2166 | dev: true 2167 | 2168 | /which@2.0.2: 2169 | resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} 2170 | engines: {node: '>= 8'} 2171 | hasBin: true 2172 | dependencies: 2173 | isexe: 2.0.0 2174 | dev: true 2175 | 2176 | /wrap-ansi@7.0.0: 2177 | resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} 2178 | engines: {node: '>=10'} 2179 | dependencies: 2180 | ansi-styles: 4.3.0 2181 | string-width: 4.2.3 2182 | strip-ansi: 6.0.1 2183 | dev: true 2184 | 2185 | /wrappy@1.0.2: 2186 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 2187 | dev: true 2188 | 2189 | /write-file-atomic@4.0.2: 2190 | resolution: {integrity: sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==} 2191 | engines: {node: ^12.13.0 || ^14.15.0 || >=16.0.0} 2192 | dependencies: 2193 | imurmurhash: 0.1.4 2194 | signal-exit: 3.0.7 2195 | dev: true 2196 | 2197 | /y18n@5.0.8: 2198 | resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} 2199 | engines: {node: '>=10'} 2200 | dev: true 2201 | 2202 | /yallist@3.1.1: 2203 | resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} 2204 | dev: true 2205 | 2206 | /yallist@4.0.0: 2207 | resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} 2208 | dev: true 2209 | 2210 | /yargs-parser@21.1.1: 2211 | resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} 2212 | engines: {node: '>=12'} 2213 | dev: true 2214 | 2215 | /yargs@17.7.2: 2216 | resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} 2217 | engines: {node: '>=12'} 2218 | dependencies: 2219 | cliui: 8.0.1 2220 | escalade: 3.1.1 2221 | get-caller-file: 2.0.5 2222 | require-directory: 2.1.1 2223 | string-width: 4.2.3 2224 | y18n: 5.0.8 2225 | yargs-parser: 21.1.1 2226 | dev: true 2227 | 2228 | /yocto-queue@0.1.0: 2229 | resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} 2230 | engines: {node: '>=10'} 2231 | dev: true 2232 | -------------------------------------------------------------------------------- /samples/test1.js: -------------------------------------------------------------------------------- 1 | ; 7 | -------------------------------------------------------------------------------- /samples/test2.js: -------------------------------------------------------------------------------- 1 |
2 |
Left
3 |
Right
4 |
; 5 | -------------------------------------------------------------------------------- /samples/test3.js: -------------------------------------------------------------------------------- 1 |
2 |
Left
3 |
Middle
4 |
Right
5 |
; 6 | -------------------------------------------------------------------------------- /samples/tw.txt: -------------------------------------------------------------------------------- 1 | rounded bg-indigo-600 px-2 py-1 text-xs font-semibold text-white shadow-sm hover:bg-indigo-500 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 2 | -------------------------------------------------------------------------------- /src/rules.js: -------------------------------------------------------------------------------- 1 | const scopeMap = { 2 | "focus-visible": "_focus-visible", 3 | hover: "_hover", 4 | active: "_active", 5 | focus: "_focus", 6 | "focus-within": "_focus-within", 7 | disabled: "_disabled", 8 | }; 9 | 10 | const simpleMap = { 11 | flex: { attribute: "flex", value: 1 }, 12 | "flex-1": { attribute: "flex", value: 1 }, 13 | "flex-auto": { attribute: "flex", value: "auto" }, 14 | "flex-initial": { attribute: "flex", value: "initial" }, 15 | "flex-none": { attribute: "flex", value: "none" }, 16 | "flex-row": { attribute: "flexDir", value: "row" }, 17 | "flex-row-reverse": { attribute: "flexDir", value: "row-reverse" }, 18 | "flex-col": { attribute: "flexDir", value: "column" }, 19 | "flex-col-reverse": { attribute: "flexDir", value: "column-reverse" }, 20 | "flex-wrap": { attribute: "flexWrap", value: "wrap" }, 21 | "flex-wrap-reverse": { attribute: "flexWrap", value: "wrap-reverse" }, 22 | "flex-nowrap": { attribute: "flexWrap", value: "nowrap" }, 23 | "flex-grow": { attribute: "flexGrow", value: 1 }, 24 | "flex-grow-0": { attribute: "flexGrow", value: 0 }, 25 | "flex-shrink": { attribute: "flexShrink", value: 1 }, 26 | "flex-shrink-0": { attribute: "flexShrink", value: 0 }, 27 | 28 | grid: { attribute: "display", value: "grid", keyFirst: true }, 29 | "grid-cols-1": { attribute: "columns", value: 1, keyFirst: true }, 30 | "grid-cols-2": { attribute: "columns", value: 2, keyFirst: true }, 31 | "grid-cols-3": { attribute: "columns", value: 3, keyFirst: true }, 32 | "grid-cols-4": { attribute: "columns", value: 4, keyFirst: true }, 33 | "grid-cols-5": { attribute: "columns", value: 5, keyFirst: true }, 34 | "grid-cols-6": { attribute: "columns", value: 6, keyFirst: true }, 35 | "grid-cols-7": { attribute: "columns", value: 7, keyFirst: true }, 36 | "grid-cols-8": { attribute: "columns", value: 8, keyFirst: true }, 37 | "grid-cols-9": { attribute: "columns", value: 9, keyFirst: true }, 38 | "grid-cols-10": { attribute: "columns", value: 10, keyFirst: true }, 39 | "grid-cols-11": { attribute: "columns", value: 11, keyFirst: true }, 40 | "grid-cols-12": { attribute: "columns", value: 12, keyFirst: true }, 41 | 42 | "col-span-1": { attribute: "colSpan", value: 1, keyFirst: true }, 43 | "col-span-2": { attribute: "colSpan", value: 2, keyFirst: true }, 44 | "col-span-3": { attribute: "colSpan", value: 3, keyFirst: true }, 45 | "col-span-4": { attribute: "colSpan", value: 4, keyFirst: true }, 46 | "col-span-5": { attribute: "colSpan", value: 5, keyFirst: true }, 47 | "col-span-6": { attribute: "colSpan", value: 6, keyFirst: true }, 48 | "col-span-7": { attribute: "colSpan", value: 7, keyFirst: true }, 49 | "col-span-8": { attribute: "colSpan", value: 8, keyFirst: true }, 50 | "col-span-9": { attribute: "colSpan", value: 9, keyFirst: true }, 51 | "col-span-10": { attribute: "colSpan", value: 10, keyFirst: true }, 52 | "col-span-11": { attribute: "colSpan", value: 11, keyFirst: true }, 53 | "col-span-12": { attribute: "colSpan", value: 12, keyFirst: true }, 54 | 55 | "text-center": { attribute: "textAlign", value: "center" }, 56 | "text-left": { attribute: "textAlign", value: "left" }, 57 | "text-right": { attribute: "textAlign", value: "right" }, 58 | "text-justify": { attribute: "textAlign", value: "justify" }, 59 | 60 | "justify-center": { attribute: "justifyContent", value: "center" }, 61 | "justify-start": { attribute: "justifyContent", value: "flex-start" }, 62 | "justify-end": { attribute: "justifyContent", value: "flex-end" }, 63 | "justify-between": { attribute: "justifyContent", value: "space-between" }, 64 | "justify-around": { attribute: "justifyContent", value: "space-around" }, 65 | "justify-evenly": { attribute: "justifyContent", value: "space-evenly" }, 66 | 67 | "items-center": { attribute: "alignItems", value: "center" }, 68 | "items-start": { attribute: "alignItems", value: "flex-start" }, 69 | "items-end": { attribute: "alignItems", value: "flex-end" }, 70 | "items-baseline": { attribute: "alignItems", value: "baseline" }, 71 | "items-stretch": { attribute: "alignItems", value: "stretch" }, 72 | 73 | "object-contain": { attribute: "objectFit", value: "contain" }, 74 | "object-center": { attribute: "objectPosition", value: "center" }, 75 | 76 | "overflow-hidden": { attribute: "overflow", value: "hidden" }, 77 | "overflow-visible": { attribute: "overflow", value: "visible" }, 78 | "overflow-scroll": { attribute: "overflow", value: "scroll" }, 79 | "overflow-auto": { attribute: "overflow", value: "auto" }, 80 | 81 | absolute: { attribute: "position", value: "absolute" }, 82 | relative: { attribute: "position", value: "relative" }, 83 | 84 | "pointer-events-none": { attribute: "pointerEvents", value: "none" }, 85 | "pointer-events-auto": { attribute: "pointerEvents", value: "auto" }, 86 | }; 87 | 88 | const simple = (css) => { 89 | const [scope, rule] = getScopeAndRule(css); 90 | if (simpleMap[rule]) { 91 | return { ...simpleMap[rule], scope }; 92 | } 93 | }; 94 | 95 | const shadow = (css) => { 96 | const [scope, rule] = getScopeAndRule(css); 97 | if (rule.startsWith("shadow-")) { 98 | const value = rule.replace("shadow-", ""); 99 | return { attribute: "shadow", value, scope }; 100 | } 101 | }; 102 | 103 | const outline = (css) => { 104 | const [scope, rule] = getScopeAndRule(css); 105 | if (rule.startsWith("outline-offset-")) { 106 | const value = rule.replace("outline-offset-", ""); 107 | return { attribute: "outlineOffset", value: +value, scope }; 108 | } 109 | if (rule.startsWith("outline-")) { 110 | const [outline, ...rest] = rule.split("-"); 111 | if (rest.length === 1) { 112 | const value = rule.replace("outline-", ""); 113 | return [ 114 | { attribute: "outlineStyle", value: "solid", scope }, 115 | { attribute: "outlineWidth", value: +value, scope }, 116 | ]; 117 | } else { 118 | return { attribute: "outlineColor", value: rest.join("."), scope }; 119 | } 120 | } 121 | }; 122 | 123 | const roundedMap = { 124 | "rounded-t": "roundedTop", 125 | "rounded-t-": "roundedTop", 126 | "rounded-l": "roundedLeft", 127 | "rounded-l-": "roundedLeft", 128 | "rounded-b": "roundedBottom", 129 | "rounded-b-": "roundedBottom", 130 | "rounded-r": "roundedRight", 131 | "rounded-r-": "roundedRight", 132 | rounded: "rounded", 133 | "rounded-": "rounded", 134 | }; 135 | 136 | const rounded = (css) => { 137 | const [scope, rule] = getScopeAndRule(css); 138 | for (const key of Object.keys(roundedMap)) { 139 | if (rule.startsWith(key)) { 140 | const value = rule.replace(key, "").replace("-", ""); 141 | return { 142 | attribute: roundedMap[key], 143 | value: value.length ? value : "0.25rem", 144 | scope, 145 | }; 146 | } 147 | } 148 | }; 149 | 150 | const getScopeAndRule = (css) => { 151 | if (css.match(":")) { 152 | const [scope, rule] = css.split(":"); 153 | return [scopeMap[scope] ?? scope, rule]; 154 | } 155 | return [null, css]; 156 | }; 157 | 158 | const text = (css) => { 159 | const [scope, rule] = getScopeAndRule(css); 160 | const [attribute, ...rest] = rule.split("-"); 161 | if (attribute === "font" && rest.length === 1) { 162 | if ( 163 | [ 164 | "thin", 165 | "extralight", 166 | "light", 167 | "normal", 168 | "medium", 169 | "semibold", 170 | "bold", 171 | "extrabold", 172 | "black", 173 | ].includes(rest[0]) 174 | ) { 175 | return { attribute: "fontWeight", value: rest[0], scope }; 176 | } 177 | } 178 | if (attribute === "text" && rest.length) { 179 | if ( 180 | [ 181 | "2xs", 182 | "xs", 183 | "sm", 184 | "md", 185 | "lg", 186 | "xl", 187 | "2xl", 188 | "3xl", 189 | "4xl", 190 | "5xl", 191 | "6xl", 192 | "7xl", 193 | "8xl", 194 | "9xl", 195 | ].includes(rest[0]) 196 | ) { 197 | return { attribute: "fontSize", value: rest[0], scope }; 198 | } 199 | return { attribute: "color", value: rest.join("."), scope }; 200 | } 201 | }; 202 | 203 | const colors = (css) => { 204 | const [scope, rule] = getScopeAndRule(css); 205 | const [attribute, ...rest] = rule.split("-"); 206 | if (["bg"].includes(attribute) && rest) { 207 | return { attribute, value: rest.join("."), scope }; 208 | } 209 | }; 210 | 211 | const parseStringOrNumberValue = (value) => { 212 | if (value.match(/^\d+[.]\d+$|^\d+$/)) { 213 | return +value; 214 | } 215 | return value; 216 | }; 217 | 218 | const shorthandMap = { 219 | "aspect-h": "aspectRatioH", 220 | "aspect-w": "aspectRatioW", 221 | aspect: "aspectRatio", 222 | "min-w": "minWidth", 223 | "min-h": "minHeight", 224 | "max-w": "maxWidth", 225 | "max-h": "maxHeight", 226 | }; 227 | 228 | const basics = (css) => { 229 | const [scope, rule] = getScopeAndRule(css); 230 | const match = rule.match( 231 | /(aspect-h|aspect-w|aspect|max-w|min-w|min-w|min-h|h|w|m|mt|mb|mx|my|mr|ml|p|py|px|pb|pt|pr|pl)-(none|auto|full|sm|md|lg|\dxl|\d+[.]\d+|\d+|)/ 232 | ); 233 | if (match && match.length > 2) { 234 | return { 235 | attribute: shorthandMap[match[1]] ?? match[1], 236 | value: parseStringOrNumberValue(match[2]), 237 | scope, 238 | }; 239 | } 240 | }; 241 | 242 | const rules = [simple, outline, shadow, rounded, text, colors, basics]; 243 | 244 | const getContext = (panda) => { 245 | const contexts = []; 246 | if (panda.flex && panda.flex === 1) { 247 | delete panda.flex; 248 | if (panda.flexDir === "column" || panda.flexDir === "column-reverse") { 249 | contexts.push({ 250 | context: "vstack", 251 | explanation: 252 | "Used the vstack pattern for a flex box in the vertical direction", 253 | keys: ["justifyContent", "flexDir", "alignItems"], 254 | }); 255 | } else { 256 | contexts.push({ 257 | context: "hstack", 258 | explanation: 259 | "Used the hstack pattern for a flex box in the horizontal direction", 260 | keys: ["justifyContent", "flexDir", "alignItems"], 261 | }); 262 | } 263 | } 264 | if (panda.display) { 265 | delete panda.display; 266 | contexts.push({ 267 | context: "grid", 268 | explanation: "Used the grid pattern for a grid", 269 | keys: ["gridCols", "colSpan"], 270 | }); 271 | } 272 | if (panda.colSpan) { 273 | contexts.push({ 274 | context: "gridItem", 275 | explanation: "Used the gridItem pattern for an item within a grid", 276 | keys: ["gridCols", "colSpan"], 277 | }); 278 | } 279 | if (contexts.length === 0) { 280 | contexts.push({ context: "css", explanation: null, keys: [] }); 281 | } 282 | return contexts; 283 | }; 284 | 285 | const formatString = (value) => 286 | typeof value === "string" ? `"${value}"` : value; 287 | 288 | const parse = (css) => { 289 | const panda = {}; 290 | const explanation = []; 291 | css.split(" ").map((className) => { 292 | for (const rule of rules) { 293 | const parsed = rule(className); 294 | if (parsed) { 295 | const parsedValues = Array.isArray(parsed) ? parsed : [parsed]; 296 | for (const parsed of parsedValues) { 297 | if (parsed.scope) { 298 | if (parsed.keyFirst) { 299 | if (!panda[parsed.attribute]) { 300 | panda[parsed.attribute] = {}; 301 | } 302 | panda[parsed.attribute][parsed.scope] = parsed.value; 303 | explanation.push({ 304 | className, 305 | explanation: `{ ${parsed.attribute}: { ${ 306 | parsed.scope 307 | }: ${formatString(parsed.value)} } }`, 308 | }); 309 | } else { 310 | if (!panda[parsed.scope]) { 311 | panda[parsed.scope] = {}; 312 | } 313 | panda[parsed.scope][parsed.attribute] = parsed.value; 314 | explanation.push({ 315 | className, 316 | explanation: `{ ${parsed.scope}: { ${ 317 | parsed.attribute 318 | }: ${formatString(parsed.value)} } }`, 319 | }); 320 | } 321 | } else { 322 | panda[parsed.attribute] = parsed.value; 323 | explanation.push({ 324 | className, 325 | explanation: `{ ${parsed.attribute}: ${formatString( 326 | parsed.value 327 | )} }`, 328 | }); 329 | } 330 | } 331 | break; 332 | } 333 | } 334 | }); 335 | return { panda, explanation }; 336 | }; 337 | 338 | module.exports = { 339 | simple, 340 | shadow, 341 | outline, 342 | basics, 343 | colors, 344 | text, 345 | rounded, 346 | parse, 347 | rules, 348 | getContext, 349 | }; 350 | --------------------------------------------------------------------------------