From 74ac0d9d1536355f8f5917fec9b9482a2f9dc7d6 Mon Sep 17 00:00:00 2001 From: Alexandre Stahmer <47224540+astahmer@users.noreply.github.com> Date: Fri, 12 Jan 2024 22:29:11 +0100 Subject: [PATCH] perf: improve runtime performance (#1986) * chore: add sandbox for runtime perf profiling * perf: add memo on runtime stringifying fns * chore: update memo for recipes * docs: update changelog * chore: fix rebase & update snapshots --------- Co-authored-by: Segun Adebayo --- .changeset/spicy-pears-love.md | 10 + .../__tests__/generate-recipe.test.ts | 28 +- .../src/artifacts/generated/helpers.mjs.json | 2 +- packages/generator/src/artifacts/js/cva.ts | 4 +- packages/generator/src/artifacts/js/recipe.ts | 10 +- packages/generator/src/artifacts/js/sva.ts | 4 +- packages/shared/src/classname.ts | 7 +- packages/studio/styled-system/css/cva.mjs | 4 +- packages/studio/styled-system/css/sva.mjs | 4 +- packages/studio/styled-system/helpers.mjs | 36 +- pnpm-lock.yaml | 864 ++++-------------- .../frameworks/preact.styled-factory.test.tsx | 2 +- .../frameworks/qwik.styled-factory.test.tsx | 2 +- .../frameworks/solid.styled-factory.test.tsx | 2 +- .../frameworks/vue.styled-factory.test.tsx | 2 +- .../codegen/__tests__/styled-factory.test.tsx | 2 +- sandbox/runtime-perf/.gitignore | 28 + sandbox/runtime-perf/index.html | 13 + sandbox/runtime-perf/package.json | 31 + sandbox/runtime-perf/panda.config.ts | 111 +++ sandbox/runtime-perf/postcss.config.cjs | 6 + sandbox/runtime-perf/src/App.tsx | 50 + .../runtime-perf/src/components/button.tsx | 63 ++ .../runtime-perf/src/components/profiler.tsx | 51 ++ .../src/components/randomized-buttons.tsx | 16 + sandbox/runtime-perf/src/index.css | 1 + sandbox/runtime-perf/src/main.tsx | 10 + sandbox/runtime-perf/tsconfig.json | 22 + sandbox/runtime-perf/tsconfig.node.json | 9 + sandbox/runtime-perf/vite.config.ts | 15 + 30 files changed, 649 insertions(+), 760 deletions(-) create mode 100644 .changeset/spicy-pears-love.md create mode 100644 sandbox/runtime-perf/.gitignore create mode 100644 sandbox/runtime-perf/index.html create mode 100644 sandbox/runtime-perf/package.json create mode 100644 sandbox/runtime-perf/panda.config.ts create mode 100644 sandbox/runtime-perf/postcss.config.cjs create mode 100644 sandbox/runtime-perf/src/App.tsx create mode 100644 sandbox/runtime-perf/src/components/button.tsx create mode 100644 sandbox/runtime-perf/src/components/profiler.tsx create mode 100644 sandbox/runtime-perf/src/components/randomized-buttons.tsx create mode 100644 sandbox/runtime-perf/src/index.css create mode 100644 sandbox/runtime-perf/src/main.tsx create mode 100644 sandbox/runtime-perf/tsconfig.json create mode 100644 sandbox/runtime-perf/tsconfig.node.json create mode 100644 sandbox/runtime-perf/vite.config.ts diff --git a/.changeset/spicy-pears-love.md b/.changeset/spicy-pears-love.md new file mode 100644 index 000000000..22b2af377 --- /dev/null +++ b/.changeset/spicy-pears-love.md @@ -0,0 +1,10 @@ +--- +'@pandacss/generator': patch +'@pandacss/shared': patch +--- + +Improve the performance of the runtime transform functions by caching their results (css, cva, sva, recipe/slot recipe, +patterns) + +> See detailed breakdown of the performance improvements +> [here](https://github.com/chakra-ui/panda/pull/1986#issuecomment-1887459483) based on the React Profiler. diff --git a/packages/generator/__tests__/generate-recipe.test.ts b/packages/generator/__tests__/generate-recipe.test.ts index a11ff9c76..bc49d2ca5 100644 --- a/packages/generator/__tests__/generate-recipe.test.ts +++ b/packages/generator/__tests__/generate-recipe.test.ts @@ -132,7 +132,7 @@ describe('generate recipes', () => { export declare const textStyle: TextStyleRecipe", - "js": "import { splitProps } from '../helpers.mjs'; + "js": "import { memo, splitProps } from '../helpers.mjs'; import { createRecipe, mergeRecipes } from './create-recipe.mjs'; const textStyleFn = /* @__PURE__ */ createRecipe('textStyle', {}, []) @@ -146,7 +146,7 @@ describe('generate recipes', () => { const textStyleVariantKeys = Object.keys(textStyleVariantMap) - export const textStyle = /* @__PURE__ */ Object.assign(textStyleFn, { + export const textStyle = /* @__PURE__ */ Object.assign(memo(textStyleFn), { __recipe__: true, __name__: 'textStyle', raw: (props) => props, @@ -188,7 +188,7 @@ describe('generate recipes', () => { export declare const tooltipStyle: TooltipStyleRecipe", - "js": "import { splitProps } from '../helpers.mjs'; + "js": "import { memo, splitProps } from '../helpers.mjs'; import { createRecipe, mergeRecipes } from './create-recipe.mjs'; const tooltipStyleFn = /* @__PURE__ */ createRecipe('tooltipStyle', {}, []) @@ -197,7 +197,7 @@ describe('generate recipes', () => { const tooltipStyleVariantKeys = Object.keys(tooltipStyleVariantMap) - export const tooltipStyle = /* @__PURE__ */ Object.assign(tooltipStyleFn, { + export const tooltipStyle = /* @__PURE__ */ Object.assign(memo(tooltipStyleFn), { __recipe__: true, __name__: 'tooltipStyle', raw: (props) => props, @@ -239,7 +239,7 @@ describe('generate recipes', () => { export declare const cardStyle: CardStyleRecipe", - "js": "import { splitProps } from '../helpers.mjs'; + "js": "import { memo, splitProps } from '../helpers.mjs'; import { createRecipe, mergeRecipes } from './create-recipe.mjs'; const cardStyleFn = /* @__PURE__ */ createRecipe('card', {}, []) @@ -252,7 +252,7 @@ describe('generate recipes', () => { const cardStyleVariantKeys = Object.keys(cardStyleVariantMap) - export const cardStyle = /* @__PURE__ */ Object.assign(cardStyleFn, { + export const cardStyle = /* @__PURE__ */ Object.assign(memo(cardStyleFn), { __recipe__: true, __name__: 'cardStyle', raw: (props) => props, @@ -295,7 +295,7 @@ describe('generate recipes', () => { export declare const buttonStyle: ButtonStyleRecipe", - "js": "import { splitProps } from '../helpers.mjs'; + "js": "import { memo, splitProps } from '../helpers.mjs'; import { createRecipe, mergeRecipes } from './create-recipe.mjs'; const buttonStyleFn = /* @__PURE__ */ createRecipe('buttonStyle', { @@ -316,7 +316,7 @@ describe('generate recipes', () => { const buttonStyleVariantKeys = Object.keys(buttonStyleVariantMap) - export const buttonStyle = /* @__PURE__ */ Object.assign(buttonStyleFn, { + export const buttonStyle = /* @__PURE__ */ Object.assign(memo(buttonStyleFn), { __recipe__: true, __name__: 'buttonStyle', raw: (props) => props, @@ -358,7 +358,7 @@ describe('generate recipes', () => { export declare const checkbox: CheckboxRecipe", - "js": "import { splitProps, getSlotCompoundVariant } from '../helpers.mjs'; + "js": "import { getSlotCompoundVariant, memo, splitProps } from '../helpers.mjs'; import { createRecipe } from './create-recipe.mjs'; const checkboxDefaultVariants = { @@ -382,9 +382,9 @@ describe('generate recipes', () => { ] const checkboxSlotFns = /* @__PURE__ */ checkboxSlotNames.map(([slotName, slotKey]) => [slotName, createRecipe(slotKey, checkboxDefaultVariants, getSlotCompoundVariant(checkboxCompoundVariants, slotName))]) - const checkboxFn = (props = {}) => { + const checkboxFn = memo((props = {}) => { return Object.fromEntries(checkboxSlotFns.map(([slotName, slotFn]) => [slotName, slotFn(props)])) - } + }) const checkboxVariantKeys = [ \\"size\\" @@ -436,7 +436,7 @@ describe('generate recipes', () => { export declare const badge: BadgeRecipe", - "js": "import { splitProps, getSlotCompoundVariant } from '../helpers.mjs'; + "js": "import { getSlotCompoundVariant, memo, splitProps } from '../helpers.mjs'; import { createRecipe } from './create-recipe.mjs'; const badgeDefaultVariants = {} @@ -464,9 +464,9 @@ describe('generate recipes', () => { ] const badgeSlotFns = /* @__PURE__ */ badgeSlotNames.map(([slotName, slotKey]) => [slotName, createRecipe(slotKey, badgeDefaultVariants, getSlotCompoundVariant(badgeCompoundVariants, slotName))]) - const badgeFn = (props = {}) => { + const badgeFn = memo((props = {}) => { return Object.fromEntries(badgeSlotFns.map(([slotName, slotFn]) => [slotName, slotFn(props)])) - } + }) const badgeVariantKeys = [ \\"size\\", diff --git a/packages/generator/src/artifacts/generated/helpers.mjs.json b/packages/generator/src/artifacts/generated/helpers.mjs.json index 01b7ceae9..d171fdecf 100644 --- a/packages/generator/src/artifacts/generated/helpers.mjs.json +++ b/packages/generator/src/artifacts/generated/helpers.mjs.json @@ -1,3 +1,3 @@ { - "content": "// src/assert.ts\nfunction isObject(value) {\n return typeof value === \"object\" && value != null && !Array.isArray(value);\n}\n\n// src/compact.ts\nfunction compact(value) {\n return Object.fromEntries(Object.entries(value ?? {}).filter(([_, value2]) => value2 !== void 0));\n}\n\n// src/condition.ts\nvar isBaseCondition = (v) => v === \"base\";\nfunction filterBaseConditions(c) {\n return c.slice().filter((v) => !isBaseCondition(v));\n}\n\n// src/css-important.ts\nvar importantRegex = /\\s*!(important)?/i;\nfunction isImportant(value) {\n return typeof value === \"string\" ? importantRegex.test(value) : false;\n}\nfunction withoutImportant(value) {\n return typeof value === \"string\" ? value.replace(importantRegex, \"\").trim() : value;\n}\nfunction withoutSpace(str) {\n return typeof str === \"string\" ? str.replaceAll(\" \", \"_\") : str;\n}\n\n// src/hash.ts\nfunction toChar(code) {\n return String.fromCharCode(code + (code > 25 ? 39 : 97));\n}\nfunction toName(code) {\n let name = \"\";\n let x;\n for (x = Math.abs(code); x > 52; x = x / 52 | 0)\n name = toChar(x % 52) + name;\n return toChar(x % 52) + name;\n}\nfunction toPhash(h, x) {\n let i = x.length;\n while (i)\n h = h * 33 ^ x.charCodeAt(--i);\n return h;\n}\nfunction toHash(value) {\n return toName(toPhash(5381, value) >>> 0);\n}\n\n// src/merge-props.ts\nfunction mergeProps(...sources) {\n const objects = sources.filter(Boolean);\n return objects.reduce((prev, obj) => {\n Object.keys(obj).forEach((key) => {\n const prevValue = prev[key];\n const value = obj[key];\n if (isObject(prevValue) && isObject(value)) {\n prev[key] = mergeProps(prevValue, value);\n } else {\n prev[key] = value;\n }\n });\n return prev;\n }, {});\n}\n\n// src/walk-object.ts\nvar isNotNullish = (element) => element != null;\nfunction walkObject(target, predicate, options = {}) {\n const { stop, getKey } = options;\n function inner(value, path = []) {\n if (isObject(value) || Array.isArray(value)) {\n const result = {};\n for (const [prop, child] of Object.entries(value)) {\n const key = getKey?.(prop) ?? prop;\n const childPath = [...path, key];\n if (stop?.(value, childPath)) {\n return predicate(value, path);\n }\n const next = inner(child, childPath);\n if (isNotNullish(next)) {\n result[key] = next;\n }\n }\n return result;\n }\n return predicate(value, path);\n }\n return inner(target);\n}\nfunction mapObject(obj, fn) {\n if (Array.isArray(obj))\n return obj.map((value) => fn(value));\n if (!isObject(obj))\n return fn(obj);\n return walkObject(obj, (value) => fn(value));\n}\n\n// src/normalize-style-object.ts\nfunction toResponsiveObject(values, breakpoints) {\n return values.reduce((acc, current, index) => {\n const key = breakpoints[index];\n if (current != null) {\n acc[key] = current;\n }\n return acc;\n }, {});\n}\nfunction normalizeShorthand(styles, context) {\n const { hasShorthand, resolveShorthand } = context.utility;\n return walkObject(styles, (v) => v, {\n getKey: (prop) => {\n return hasShorthand ? resolveShorthand(prop) : prop;\n }\n });\n}\nfunction normalizeStyleObject(styles, context, shorthand = true) {\n const { utility, conditions } = context;\n const { hasShorthand, resolveShorthand } = utility;\n return walkObject(\n styles,\n (value) => {\n return Array.isArray(value) ? toResponsiveObject(value, conditions.breakpoints.keys) : value;\n },\n {\n stop: (value) => Array.isArray(value),\n getKey: shorthand ? (prop) => hasShorthand ? resolveShorthand(prop) : prop : void 0\n }\n );\n}\n\n// src/classname.ts\nvar fallbackCondition = {\n shift: (v) => v,\n finalize: (v) => v,\n breakpoints: { keys: [] }\n};\nvar sanitize = (value) => typeof value === \"string\" ? value.replaceAll(/[\\n\\s]+/g, \" \") : value;\nfunction createCss(context) {\n const { utility, hash, conditions: conds = fallbackCondition } = context;\n const formatClassName = (str) => [utility.prefix, str].filter(Boolean).join(\"-\");\n const hashFn = (conditions, className) => {\n let result;\n if (hash) {\n const baseArray = [...conds.finalize(conditions), className];\n result = formatClassName(toHash(baseArray.join(\":\")));\n } else {\n const baseArray = [...conds.finalize(conditions), formatClassName(className)];\n result = baseArray.join(\":\");\n }\n return result;\n };\n return (styleObject = {}) => {\n const normalizedObject = normalizeStyleObject(styleObject, context);\n const classNames = /* @__PURE__ */ new Set();\n walkObject(normalizedObject, (value, paths) => {\n const important = isImportant(value);\n if (value == null)\n return;\n const [prop, ...allConditions] = conds.shift(paths);\n const conditions = filterBaseConditions(allConditions);\n const transformed = utility.transform(prop, withoutImportant(sanitize(value)));\n let className = hashFn(conditions, transformed.className);\n if (important)\n className = `${className}!`;\n classNames.add(className);\n });\n return Array.from(classNames).join(\" \");\n };\n}\nfunction compactStyles(...styles) {\n return styles.filter((style) => isObject(style) && Object.keys(compact(style)).length > 0);\n}\nfunction createMergeCss(context) {\n function resolve(styles) {\n const allStyles = compactStyles(...styles);\n if (allStyles.length === 1)\n return allStyles;\n return allStyles.map((style) => normalizeShorthand(style, context));\n }\n function mergeCss(...styles) {\n return mergeProps(...resolve(styles));\n }\n function assignCss(...styles) {\n return Object.assign({}, ...resolve(styles));\n }\n return { mergeCss, assignCss };\n}\n\n// src/memo.ts\nvar memo = (fn) => {\n const cache = /* @__PURE__ */ new Map();\n const get = (...args) => {\n const key = JSON.stringify(args);\n if (cache.has(key)) {\n return cache.get(key);\n }\n const result = fn(...args);\n cache.set(key, result);\n return result;\n };\n return get;\n};\n\n// src/hypenate-property.ts\nvar wordRegex = /([A-Z])/g;\nvar msRegex = /^ms-/;\nvar hypenateProperty = memo((property) => {\n if (property.startsWith(\"--\"))\n return property;\n return property.replace(wordRegex, \"-$1\").replace(msRegex, \"-ms-\").toLowerCase();\n});\n\n// src/slot.ts\nvar getSlotRecipes = (recipe = {}) => {\n const init = (slot) => ({\n className: [recipe.className, slot].filter(Boolean).join(\"__\"),\n base: recipe.base?.[slot] ?? {},\n variants: {},\n defaultVariants: recipe.defaultVariants ?? {},\n compoundVariants: recipe.compoundVariants ? getSlotCompoundVariant(recipe.compoundVariants, slot) : []\n });\n const slots = recipe.slots ?? [];\n const recipeParts = slots.map((slot) => [slot, init(slot)]);\n for (const [variantsKey, variantsSpec] of Object.entries(recipe.variants ?? {})) {\n for (const [variantKey, variantSpec] of Object.entries(variantsSpec)) {\n recipeParts.forEach(([slot, slotRecipe]) => {\n slotRecipe.variants[variantsKey] ??= {};\n slotRecipe.variants[variantsKey][variantKey] = variantSpec[slot] ?? {};\n });\n }\n }\n return Object.fromEntries(recipeParts);\n};\nvar getSlotCompoundVariant = (compoundVariants, slotName) => compoundVariants.filter((compoundVariant) => compoundVariant.css[slotName]).map((compoundVariant) => ({ ...compoundVariant, css: compoundVariant.css[slotName] }));\n\n// src/split-props.ts\nfunction splitProps(props, ...keys) {\n const descriptors = Object.getOwnPropertyDescriptors(props);\n const dKeys = Object.keys(descriptors);\n const split = (k) => {\n const clone = {};\n for (let i = 0; i < k.length; i++) {\n const key = k[i];\n if (descriptors[key]) {\n Object.defineProperty(clone, key, descriptors[key]);\n delete descriptors[key];\n }\n }\n return clone;\n };\n const fn = (key) => split(Array.isArray(key) ? key : dKeys.filter(key));\n return keys.map(fn).concat(split(dKeys));\n}\n\n// src/uniq.ts\nvar uniq = (...items) => items.filter(Boolean).reduce((acc, item) => Array.from(/* @__PURE__ */ new Set([...acc, ...item])), []);\nexport {\n compact,\n createCss,\n createMergeCss,\n filterBaseConditions,\n getSlotCompoundVariant,\n getSlotRecipes,\n hypenateProperty,\n isBaseCondition,\n isObject,\n mapObject,\n memo,\n mergeProps,\n splitProps,\n toHash,\n uniq,\n walkObject,\n withoutSpace\n};\n" + "content": "// src/assert.ts\nfunction isObject(value) {\n return typeof value === \"object\" && value != null && !Array.isArray(value);\n}\n\n// src/compact.ts\nfunction compact(value) {\n return Object.fromEntries(Object.entries(value ?? {}).filter(([_, value2]) => value2 !== void 0));\n}\n\n// src/condition.ts\nvar isBaseCondition = (v) => v === \"base\";\nfunction filterBaseConditions(c) {\n return c.slice().filter((v) => !isBaseCondition(v));\n}\n\n// src/css-important.ts\nvar importantRegex = /\\s*!(important)?/i;\nfunction isImportant(value) {\n return typeof value === \"string\" ? importantRegex.test(value) : false;\n}\nfunction withoutImportant(value) {\n return typeof value === \"string\" ? value.replace(importantRegex, \"\").trim() : value;\n}\nfunction withoutSpace(str) {\n return typeof str === \"string\" ? str.replaceAll(\" \", \"_\") : str;\n}\n\n// src/hash.ts\nfunction toChar(code) {\n return String.fromCharCode(code + (code > 25 ? 39 : 97));\n}\nfunction toName(code) {\n let name = \"\";\n let x;\n for (x = Math.abs(code); x > 52; x = x / 52 | 0)\n name = toChar(x % 52) + name;\n return toChar(x % 52) + name;\n}\nfunction toPhash(h, x) {\n let i = x.length;\n while (i)\n h = h * 33 ^ x.charCodeAt(--i);\n return h;\n}\nfunction toHash(value) {\n return toName(toPhash(5381, value) >>> 0);\n}\n\n// src/merge-props.ts\nfunction mergeProps(...sources) {\n const objects = sources.filter(Boolean);\n return objects.reduce((prev, obj) => {\n Object.keys(obj).forEach((key) => {\n const prevValue = prev[key];\n const value = obj[key];\n if (isObject(prevValue) && isObject(value)) {\n prev[key] = mergeProps(prevValue, value);\n } else {\n prev[key] = value;\n }\n });\n return prev;\n }, {});\n}\n\n// src/memo.ts\nvar memo = (fn) => {\n const cache = /* @__PURE__ */ new Map();\n const get = (...args) => {\n const key = JSON.stringify(args);\n if (cache.has(key)) {\n return cache.get(key);\n }\n const result = fn(...args);\n cache.set(key, result);\n return result;\n };\n return get;\n};\n\n// src/walk-object.ts\nvar isNotNullish = (element) => element != null;\nfunction walkObject(target, predicate, options = {}) {\n const { stop, getKey } = options;\n function inner(value, path = []) {\n if (isObject(value) || Array.isArray(value)) {\n const result = {};\n for (const [prop, child] of Object.entries(value)) {\n const key = getKey?.(prop) ?? prop;\n const childPath = [...path, key];\n if (stop?.(value, childPath)) {\n return predicate(value, path);\n }\n const next = inner(child, childPath);\n if (isNotNullish(next)) {\n result[key] = next;\n }\n }\n return result;\n }\n return predicate(value, path);\n }\n return inner(target);\n}\nfunction mapObject(obj, fn) {\n if (Array.isArray(obj))\n return obj.map((value) => fn(value));\n if (!isObject(obj))\n return fn(obj);\n return walkObject(obj, (value) => fn(value));\n}\n\n// src/normalize-style-object.ts\nfunction toResponsiveObject(values, breakpoints) {\n return values.reduce((acc, current, index) => {\n const key = breakpoints[index];\n if (current != null) {\n acc[key] = current;\n }\n return acc;\n }, {});\n}\nfunction normalizeShorthand(styles, context) {\n const { hasShorthand, resolveShorthand } = context.utility;\n return walkObject(styles, (v) => v, {\n getKey: (prop) => {\n return hasShorthand ? resolveShorthand(prop) : prop;\n }\n });\n}\nfunction normalizeStyleObject(styles, context, shorthand = true) {\n const { utility, conditions } = context;\n const { hasShorthand, resolveShorthand } = utility;\n return walkObject(\n styles,\n (value) => {\n return Array.isArray(value) ? toResponsiveObject(value, conditions.breakpoints.keys) : value;\n },\n {\n stop: (value) => Array.isArray(value),\n getKey: shorthand ? (prop) => hasShorthand ? resolveShorthand(prop) : prop : void 0\n }\n );\n}\n\n// src/classname.ts\nvar fallbackCondition = {\n shift: (v) => v,\n finalize: (v) => v,\n breakpoints: { keys: [] }\n};\nvar sanitize = (value) => typeof value === \"string\" ? value.replaceAll(/[\\n\\s]+/g, \" \") : value;\nfunction createCss(context) {\n const { utility, hash, conditions: conds = fallbackCondition } = context;\n const formatClassName = (str) => [utility.prefix, str].filter(Boolean).join(\"-\");\n const hashFn = (conditions, className) => {\n let result;\n if (hash) {\n const baseArray = [...conds.finalize(conditions), className];\n result = formatClassName(toHash(baseArray.join(\":\")));\n } else {\n const baseArray = [...conds.finalize(conditions), formatClassName(className)];\n result = baseArray.join(\":\");\n }\n return result;\n };\n return memo((styleObject = {}) => {\n const normalizedObject = normalizeStyleObject(styleObject, context);\n const classNames = /* @__PURE__ */ new Set();\n walkObject(normalizedObject, (value, paths) => {\n const important = isImportant(value);\n if (value == null)\n return;\n const [prop, ...allConditions] = conds.shift(paths);\n const conditions = filterBaseConditions(allConditions);\n const transformed = utility.transform(prop, withoutImportant(sanitize(value)));\n let className = hashFn(conditions, transformed.className);\n if (important)\n className = `${className}!`;\n classNames.add(className);\n });\n return Array.from(classNames).join(\" \");\n });\n}\nfunction compactStyles(...styles) {\n return styles.filter((style) => isObject(style) && Object.keys(compact(style)).length > 0);\n}\nfunction createMergeCss(context) {\n function resolve(styles) {\n const allStyles = compactStyles(...styles);\n if (allStyles.length === 1)\n return allStyles;\n return allStyles.map((style) => normalizeShorthand(style, context));\n }\n function mergeCss(...styles) {\n return mergeProps(...resolve(styles));\n }\n function assignCss(...styles) {\n return Object.assign({}, ...resolve(styles));\n }\n return { mergeCss: memo(mergeCss), assignCss };\n}\n\n// src/hypenate-property.ts\nvar wordRegex = /([A-Z])/g;\nvar msRegex = /^ms-/;\nvar hypenateProperty = memo((property) => {\n if (property.startsWith(\"--\"))\n return property;\n return property.replace(wordRegex, \"-$1\").replace(msRegex, \"-ms-\").toLowerCase();\n});\n\n// src/slot.ts\nvar getSlotRecipes = (recipe = {}) => {\n const init = (slot) => ({\n className: [recipe.className, slot].filter(Boolean).join(\"__\"),\n base: recipe.base?.[slot] ?? {},\n variants: {},\n defaultVariants: recipe.defaultVariants ?? {},\n compoundVariants: recipe.compoundVariants ? getSlotCompoundVariant(recipe.compoundVariants, slot) : []\n });\n const slots = recipe.slots ?? [];\n const recipeParts = slots.map((slot) => [slot, init(slot)]);\n for (const [variantsKey, variantsSpec] of Object.entries(recipe.variants ?? {})) {\n for (const [variantKey, variantSpec] of Object.entries(variantsSpec)) {\n recipeParts.forEach(([slot, slotRecipe]) => {\n slotRecipe.variants[variantsKey] ??= {};\n slotRecipe.variants[variantsKey][variantKey] = variantSpec[slot] ?? {};\n });\n }\n }\n return Object.fromEntries(recipeParts);\n};\nvar getSlotCompoundVariant = (compoundVariants, slotName) => compoundVariants.filter((compoundVariant) => compoundVariant.css[slotName]).map((compoundVariant) => ({ ...compoundVariant, css: compoundVariant.css[slotName] }));\n\n// src/split-props.ts\nfunction splitProps(props, ...keys) {\n const descriptors = Object.getOwnPropertyDescriptors(props);\n const dKeys = Object.keys(descriptors);\n const split = (k) => {\n const clone = {};\n for (let i = 0; i < k.length; i++) {\n const key = k[i];\n if (descriptors[key]) {\n Object.defineProperty(clone, key, descriptors[key]);\n delete descriptors[key];\n }\n }\n return clone;\n };\n const fn = (key) => split(Array.isArray(key) ? key : dKeys.filter(key));\n return keys.map(fn).concat(split(dKeys));\n}\n\n// src/uniq.ts\nvar uniq = (...items) => items.filter(Boolean).reduce((acc, item) => Array.from(/* @__PURE__ */ new Set([...acc, ...item])), []);\nexport {\n compact,\n createCss,\n createMergeCss,\n filterBaseConditions,\n getSlotCompoundVariant,\n getSlotRecipes,\n hypenateProperty,\n isBaseCondition,\n isObject,\n mapObject,\n memo,\n mergeProps,\n splitProps,\n toHash,\n uniq,\n walkObject,\n withoutSpace\n};\n" } \ No newline at end of file diff --git a/packages/generator/src/artifacts/js/cva.ts b/packages/generator/src/artifacts/js/cva.ts index 7e3336819..bad1b3920 100644 --- a/packages/generator/src/artifacts/js/cva.ts +++ b/packages/generator/src/artifacts/js/cva.ts @@ -4,7 +4,7 @@ import { outdent } from 'outdent' export function generateCvaFn(ctx: Context) { return { js: outdent` - ${ctx.file.import('compact, mergeProps, splitProps, uniq', '../helpers')} + ${ctx.file.import('compact, mergeProps, memo, splitProps, uniq', '../helpers')} ${ctx.file.import('css, mergeCss', './css')} const defaults = (conf) => ({ @@ -55,7 +55,7 @@ export function generateCvaFn(ctx: Context) { const variantMap = Object.fromEntries(Object.entries(variants).map(([key, value]) => [key, Object.keys(value)])) - return Object.assign(cvaFn, { + return Object.assign(memo(cvaFn), { __cva__: true, variantMap, variantKeys, diff --git a/packages/generator/src/artifacts/js/recipe.ts b/packages/generator/src/artifacts/js/recipe.ts index 82b9bf0d1..ec0f6373a 100644 --- a/packages/generator/src/artifacts/js/recipe.ts +++ b/packages/generator/src/artifacts/js/recipe.ts @@ -122,7 +122,7 @@ export function generateRecipes(ctx: Context, filters?: ArtifactFilters) { .when( Recipes.isSlotRecipeConfig, (config) => outdent` - ${ctx.file.import('splitProps, getSlotCompoundVariant', '../helpers')} + ${ctx.file.import('getSlotCompoundVariant, memo, splitProps', '../helpers')} ${ctx.file.import('createRecipe', './create-recipe')} const ${baseName}DefaultVariants = ${stringify(defaultVariants ?? {})} @@ -131,9 +131,9 @@ export function generateRecipes(ctx: Context, filters?: ArtifactFilters) { const ${baseName}SlotNames = ${stringify(config.slots.map((slot) => [slot, `${config.className}__${slot}`]))} const ${baseName}SlotFns = /* @__PURE__ */ ${baseName}SlotNames.map(([slotName, slotKey]) => [slotName, createRecipe(slotKey, ${baseName}DefaultVariants, getSlotCompoundVariant(${baseName}CompoundVariants, slotName))]) - const ${baseName}Fn = (props = {}) => { + const ${baseName}Fn = memo((props = {}) => { return Object.fromEntries(${baseName}SlotFns.map(([slotName, slotFn]) => [slotName, slotFn(props)])) - } + }) const ${baseName}VariantKeys = ${stringify(Object.keys(variantKeyMap))} @@ -151,7 +151,7 @@ export function generateRecipes(ctx: Context, filters?: ArtifactFilters) { ) .otherwise( (config) => outdent` - ${ctx.file.import('splitProps', '../helpers')} + ${ctx.file.import('memo, splitProps', '../helpers')} ${ctx.file.import('createRecipe, mergeRecipes', './create-recipe')} const ${baseName}Fn = /* @__PURE__ */ createRecipe('${config.className}', ${stringify( @@ -162,7 +162,7 @@ export function generateRecipes(ctx: Context, filters?: ArtifactFilters) { const ${baseName}VariantKeys = Object.keys(${baseName}VariantMap) - export const ${baseName} = /* @__PURE__ */ Object.assign(${baseName}Fn, { + export const ${baseName} = /* @__PURE__ */ Object.assign(memo(${baseName}Fn), { __recipe__: true, __name__: '${baseName}', raw: (props) => props, diff --git a/packages/generator/src/artifacts/js/sva.ts b/packages/generator/src/artifacts/js/sva.ts index 89b074eda..6b3d6b9ab 100644 --- a/packages/generator/src/artifacts/js/sva.ts +++ b/packages/generator/src/artifacts/js/sva.ts @@ -4,7 +4,7 @@ import { outdent } from 'outdent' export function generateSvaFn(ctx: Context) { return { js: outdent` - ${ctx.file.import('getSlotRecipes, splitProps', '../helpers')} + ${ctx.file.import('getSlotRecipes, memo, splitProps', '../helpers')} ${ctx.file.import('cva', './cva')} export function sva(config) { @@ -31,7 +31,7 @@ export function generateSvaFn(ctx: Context) { Object.entries(variants).map(([key, value]) => [key, Object.keys(value)]) ); - return Object.assign(svaFn, { + return Object.assign(memo(svaFn), { __cva__: false, raw, variantMap, diff --git a/packages/shared/src/classname.ts b/packages/shared/src/classname.ts index 9f0d0ac7c..06c311210 100644 --- a/packages/shared/src/classname.ts +++ b/packages/shared/src/classname.ts @@ -4,6 +4,7 @@ import { filterBaseConditions } from './condition' import { isImportant, withoutImportant } from './css-important' import { toHash } from './hash' import { mergeProps } from './merge-props' +import { memo } from './memo' import { normalizeShorthand, normalizeStyleObject } from './normalize-style-object' import { walkObject } from './walk-object' @@ -53,7 +54,7 @@ export function createCss(context: CreateCssContext) { return result } - return (styleObject: Record = {}) => { + return memo((styleObject: Record = {}) => { const normalizedObject = normalizeStyleObject(styleObject, context) const classNames = new Set() @@ -74,7 +75,7 @@ export function createCss(context: CreateCssContext) { }) return Array.from(classNames).join(' ') - } + }) } interface StyleObject { @@ -100,5 +101,5 @@ export function createMergeCss(context: CreateCssContext) { return Object.assign({}, ...resolve(styles)) } - return { mergeCss, assignCss } + return { mergeCss: memo(mergeCss), assignCss } } diff --git a/packages/studio/styled-system/css/cva.mjs b/packages/studio/styled-system/css/cva.mjs index d47b3d30d..2f44fe4de 100644 --- a/packages/studio/styled-system/css/cva.mjs +++ b/packages/studio/styled-system/css/cva.mjs @@ -1,4 +1,4 @@ -import { compact, mergeProps, splitProps, uniq } from '../helpers.mjs'; +import { compact, mergeProps, memo, splitProps, uniq } from '../helpers.mjs'; import { css, mergeCss } from './css.mjs'; const defaults = (conf) => ({ @@ -49,7 +49,7 @@ export function cva(config) { const variantMap = Object.fromEntries(Object.entries(variants).map(([key, value]) => [key, Object.keys(value)])) - return Object.assign(cvaFn, { + return Object.assign(memo(cvaFn), { __cva__: true, variantMap, variantKeys, diff --git a/packages/studio/styled-system/css/sva.mjs b/packages/studio/styled-system/css/sva.mjs index de73cac85..bcf1e3123 100644 --- a/packages/studio/styled-system/css/sva.mjs +++ b/packages/studio/styled-system/css/sva.mjs @@ -1,4 +1,4 @@ -import { getSlotRecipes, splitProps } from '../helpers.mjs'; +import { getSlotRecipes, memo, splitProps } from '../helpers.mjs'; import { cva } from './cva.mjs'; export function sva(config) { @@ -25,7 +25,7 @@ export function sva(config) { Object.entries(variants).map(([key, value]) => [key, Object.keys(value)]) ); - return Object.assign(svaFn, { + return Object.assign(memo(svaFn), { __cva__: false, raw, variantMap, diff --git a/packages/studio/styled-system/helpers.mjs b/packages/studio/styled-system/helpers.mjs index 43f92566f..11686dbbc 100644 --- a/packages/studio/styled-system/helpers.mjs +++ b/packages/studio/styled-system/helpers.mjs @@ -64,6 +64,21 @@ function mergeProps(...sources) { }, {}); } +// src/memo.ts +var memo = (fn) => { + const cache = /* @__PURE__ */ new Map(); + const get = (...args) => { + const key = JSON.stringify(args); + if (cache.has(key)) { + return cache.get(key); + } + const result = fn(...args); + cache.set(key, result); + return result; + }; + return get; +}; + // src/walk-object.ts var isNotNullish = (element) => element != null; function walkObject(target, predicate, options = {}) { @@ -150,7 +165,7 @@ function createCss(context) { } return result; }; - return (styleObject = {}) => { + return memo((styleObject = {}) => { const normalizedObject = normalizeStyleObject(styleObject, context); const classNames = /* @__PURE__ */ new Set(); walkObject(normalizedObject, (value, paths) => { @@ -166,7 +181,7 @@ function createCss(context) { classNames.add(className); }); return Array.from(classNames).join(" "); - }; + }); } function compactStyles(...styles) { return styles.filter((style) => isObject(style) && Object.keys(compact(style)).length > 0); @@ -184,24 +199,9 @@ function createMergeCss(context) { function assignCss(...styles) { return Object.assign({}, ...resolve(styles)); } - return { mergeCss, assignCss }; + return { mergeCss: memo(mergeCss), assignCss }; } -// src/memo.ts -var memo = (fn) => { - const cache = /* @__PURE__ */ new Map(); - const get = (...args) => { - const key = JSON.stringify(args); - if (cache.has(key)) { - return cache.get(key); - } - const result = fn(...args); - cache.set(key, result); - return result; - }; - return get; -}; - // src/hypenate-property.ts var wordRegex = /([A-Z])/g; var msRegex = /^ms-/; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b4b858dda..f5c635150 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1174,6 +1174,46 @@ importers: specifier: ^5.2.2 version: 5.3.3 + sandbox/runtime-perf: + dependencies: + react: + specifier: ^18.2.0 + version: 18.2.0 + react-dom: + specifier: ^18.2.0 + version: 18.2.0(react@18.2.0) + devDependencies: + '@pandacss/dev': + specifier: workspace:* + version: link:../../packages/cli + '@pandacss/studio': + specifier: workspace:* + version: link:../../packages/studio + '@types/react': + specifier: 18.2.42 + version: 18.2.42 + '@types/react-dom': + specifier: 18.2.17 + version: 18.2.17 + '@vitejs/plugin-react': + specifier: 4.2.1 + version: 4.2.1(vite@5.0.7) + postcss: + specifier: ^8.4.31 + version: 8.4.31 + source-map-explorer: + specifier: ^2.5.3 + version: 2.5.3 + typescript: + specifier: 5.3.3 + version: 5.3.3 + vite: + specifier: 5.0.7 + version: 5.0.7(@types/node@20.4.5) + vite-bundle-visualizer: + specifier: 0.11.0 + version: 0.11.0 + sandbox/solid-ts: dependencies: solid-js: @@ -1689,10 +1729,6 @@ packages: resolution: {integrity: sha512-BQYjKbpXjoXwFW5jGqiizJQQT/aC7pFm9Ok1OWssonuguICi264lbgMzRp2ZMmRSlfkX6DsWDDcsrctK8Rwfiw==} engines: {node: '>=6.9.0'} - /@babel/compat-data@7.22.9: - resolution: {integrity: sha512-5UamI7xkUcJ3i9qVDS+KFDEK8/7oJ55/sJMB1Ge7IEapr7KfdfV/HErR+koZwOfd+SgtFKOKRhRakdg++DcJpQ==} - engines: {node: '>=6.9.0'} - /@babel/core@7.12.9: resolution: {integrity: sha512-gTXYh3M5wb7FRXQy+FErKFAv90BnlOuNn1QkCK2lREoPAjrQCO49+HVSrFoe5uakFAF5eenS75KbO2vQiLrTMQ==} engines: {node: '>=6.9.0'} @@ -1721,14 +1757,14 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@ampproject/remapping': 2.2.1 - '@babel/code-frame': 7.22.13 - '@babel/generator': 7.23.0 + '@babel/code-frame': 7.23.5 + '@babel/generator': 7.23.5 '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-module-transforms': 7.23.0(@babel/core@7.22.20) '@babel/helpers': 7.23.2 '@babel/parser': 7.23.5 '@babel/template': 7.22.15 - '@babel/traverse': 7.23.2 + '@babel/traverse': 7.23.5 '@babel/types': 7.23.5 convert-source-map: 1.9.0 debug: 4.3.4 @@ -1901,7 +1937,7 @@ packages: resolution: {integrity: sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==} engines: {node: '>=6.9.0'} dependencies: - '@babel/compat-data': 7.22.9 + '@babel/compat-data': 7.22.20 '@babel/helper-validator-option': 7.22.15 browserslist: 4.22.2 lru-cache: 5.1.1 @@ -2059,18 +2095,6 @@ packages: semver: 6.3.1 dev: true - /@babel/helper-create-regexp-features-plugin@7.22.9(@babel/core@7.23.5): - resolution: {integrity: sha512-+svjVa/tFwsNSG4NEy1h85+HQ5imbT92Q5/bgtS7P0GTQlP8WuFdqsiABmQouhiFGyV66oGxZFpeYHza1rNsKw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-annotate-as-pure': 7.22.5 - regexpu-core: 5.3.2 - semver: 6.3.1 - dev: true - /@babel/helper-define-polyfill-provider@0.4.2(@babel/core@7.22.5): resolution: {integrity: sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==} peerDependencies: @@ -2101,21 +2125,6 @@ packages: - supports-color dev: true - /@babel/helper-define-polyfill-provider@0.4.2(@babel/core@7.23.5): - resolution: {integrity: sha512-k0qnnOqHn5dK9pZpfD5XXZ9SojAITdCKRn2Lp6rnDGzIbaP0rHyMPk/4wsSxVBVz4RfN0q6VpXWP2pDGIoQ7hw==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-compilation-targets': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 - debug: 4.3.4 - lodash.debounce: 4.0.8 - resolve: 1.22.8 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/helper-environment-visitor@7.22.20: resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} engines: {node: '>=6.9.0'} @@ -2304,18 +2313,6 @@ packages: '@babel/helper-wrap-function': 7.22.9 dev: true - /@babel/helper-remap-async-to-generator@7.22.9(@babel/core@7.23.5): - resolution: {integrity: sha512-8WWC4oR4Px+tr+Fp0X3RHDVfINGpF3ad1HIbrc8A77epiR6eMMc6jsgozkzT2uDiOOdoS9cLIQ+XD2XvI2WSmQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-wrap-function': 7.22.9 - dev: true - /@babel/helper-replace-supers@7.22.20(@babel/core@7.22.20): resolution: {integrity: sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==} engines: {node: '>=6.9.0'} @@ -2468,16 +2465,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.22.5(@babel/core@7.23.5): - resolution: {integrity: sha512-NP1M5Rf+u2Gw9qfSO4ihjcTGW5zXTi36ITLd4/EoAcEhIZ0yjMqmftDNl3QC19CX7olhrjpyU454g/2W7X0jvQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==} engines: {node: '>=6.9.0'} @@ -2502,18 +2489,6 @@ packages: '@babel/plugin-transform-optional-chaining': 7.22.6(@babel/core@7.22.9) dev: true - /@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.22.5(@babel/core@7.23.5): - resolution: {integrity: sha512-31Bb65aZaUwqCbWMnZPduIZxCBngHFlzyN6Dq6KAJjtx+lx6ohKHubc61OomYi7XwVD4Ol0XCVz4h+pYFR048g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.13.0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-optional-chaining': 7.22.6(@babel/core@7.23.5) - dev: true - /@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.22.5): resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} engines: {node: '>=6.9.0'} @@ -2637,15 +2612,6 @@ packages: '@babel/core': 7.22.9 dev: true - /@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.5): - resolution: {integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - dev: true - /@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.22.5): resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} engines: {node: '>=4'} @@ -2668,17 +2634,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@7.23.5): - resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} - engines: {node: '>=4'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.23.5) - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.22.5): resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} peerDependencies: @@ -2697,15 +2652,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.23.5): - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.22.5): resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} peerDependencies: @@ -2731,6 +2677,7 @@ packages: dependencies: '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.22.5): resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} @@ -2752,16 +2699,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.23.5): - resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.22.5): resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} peerDependencies: @@ -2780,15 +2717,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.23.5): - resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.22.5): resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} peerDependencies: @@ -2807,15 +2735,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.23.5): - resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-flow@7.21.4(@babel/core@7.23.5): resolution: {integrity: sha512-l9xd3N+XG4fZRxEP3vXdK6RW7vN1Uf5dxzRC/09wV86wqZ/YYQooBIGNsiRdfNR3/q2/5pPzV4B54J/9ctX5jw==} engines: {node: '>=6.9.0'} @@ -2855,16 +2774,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-assertions@7.22.5(@babel/core@7.23.5): - resolution: {integrity: sha512-rdV97N7KqsRzeNGoWUOK6yUsWarLjE5Su/Snk9IYPU9CwkWHs4t+rTGOvffTR8XGkJMTAdLfO0xVnXm8wugIJg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-import-attributes@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==} engines: {node: '>=6.9.0'} @@ -2885,16 +2794,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-attributes@7.22.5(@babel/core@7.23.5): - resolution: {integrity: sha512-KwvoWDeNKPETmozyFE0P2rOLqh39EoQHNjqizrI5B8Vt0ZNS7M56s7dAiAqbYfiAYOuIzIh96z3iR2ktgu3tEg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.22.5): resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} peerDependencies: @@ -2913,15 +2812,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.23.5): - resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.22.5): resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} peerDependencies: @@ -2940,15 +2830,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.23.5): - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-jsx@7.12.1(@babel/core@7.12.9): resolution: {integrity: sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg==} peerDependencies: @@ -3043,15 +2924,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.23.5): - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.22.5): resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} peerDependencies: @@ -3103,6 +2975,7 @@ packages: dependencies: '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.12.9): resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} @@ -3138,6 +3011,7 @@ packages: dependencies: '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.22.5): resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} @@ -3157,15 +3031,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.23.5): - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.22.5): resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} peerDependencies: @@ -3212,16 +3077,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.23.5): - resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.22.5): resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} engines: {node: '>=6.9.0'} @@ -3242,16 +3097,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.23.5): - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-syntax-typescript@7.22.5(@babel/core@7.22.20): resolution: {integrity: sha512-1mS2o03i7t1c6VzH6fdQ3OA8tcEIxwG18zIPRp+UY1Ihv6W+XZzBCVxExF9upussPXJ0xE9XRHwMoNs1ep/nRQ==} engines: {node: '>=6.9.0'} @@ -3312,17 +3157,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.23.5): - resolution: {integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.23.5) - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-arrow-functions@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-26lTNXoVRdAnsaDXPpvCNUq+OVWEVC6bx7Vvz9rC53F2bagUWW4u4ii2+h8Fejfh7RYqPxn+libeFBBck9muEw==} engines: {node: '>=6.9.0'} @@ -3351,6 +3185,7 @@ packages: dependencies: '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-transform-async-generator-functions@7.22.7(@babel/core@7.22.5): resolution: {integrity: sha512-7HmE7pk/Fmke45TODvxvkxRMV9RazV+ZZzhOL9AG8G29TLrr3jkjwF7uJfxZ30EoXpO+LJkq4oA8NjO2DTnEDg==} @@ -3378,19 +3213,6 @@ packages: '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.9) dev: true - /@babel/plugin-transform-async-generator-functions@7.22.7(@babel/core@7.23.5): - resolution: {integrity: sha512-7HmE7pk/Fmke45TODvxvkxRMV9RazV+ZZzhOL9AG8G29TLrr3jkjwF7uJfxZ30EoXpO+LJkq4oA8NjO2DTnEDg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.9(@babel/core@7.23.5) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.5) - dev: true - /@babel/plugin-transform-async-to-generator@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==} engines: {node: '>=6.9.0'} @@ -3415,18 +3237,6 @@ packages: '@babel/helper-remap-async-to-generator': 7.22.9(@babel/core@7.22.9) dev: true - /@babel/plugin-transform-async-to-generator@7.22.5(@babel/core@7.23.5): - resolution: {integrity: sha512-b1A8D8ZzE/VhNDoV1MSJTnpKkCG5bJo+19R4o4oy03zM7ws8yEMK755j61Dc3EyvdysbqH5BOOTquJ7ZX9C6vQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-remap-async-to-generator': 7.22.9(@babel/core@7.23.5) - dev: true - /@babel/plugin-transform-block-scoped-functions@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-tdXZ2UdknEKQWKJP1KMNmuF5Lx3MymtMN/pvA+p/VEkhK8jVcQ1fzSy8KM9qRYhAf2/lV33hoMPKI/xaI9sADA==} engines: {node: '>=6.9.0'} @@ -3455,6 +3265,7 @@ packages: dependencies: '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-transform-block-scoping@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-EcACl1i5fSQ6bt+YGuU/XGCeZKStLmyVGytWkpyhCLeQVA0eu6Wtiw92V+I1T/hnezUv7j74dA/Ro69gWcU+hg==} @@ -3484,6 +3295,7 @@ packages: dependencies: '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-transform-class-properties@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==} @@ -3511,19 +3323,6 @@ packages: - supports-color dev: true - /@babel/plugin-transform-class-properties@7.22.5(@babel/core@7.23.5): - resolution: {integrity: sha512-nDkQ0NfkOhPTq8YCLiWNxp1+f9fCobEjCb0n8WdbNUBc4IB5V7P1QnX9IjpSoquKrXF5SKojHleVNs2vGeHCHQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.23.5) - '@babel/helper-plugin-utils': 7.22.5 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/plugin-transform-class-static-block@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-SPToJ5eYZLxlnp1UzdARpOGeC2GbHvr9d/UV0EukuVx8atktg194oe+C5BqQ8jRTkgLRVOPYeXRSBg1IlMoVRA==} engines: {node: '>=6.9.0'} @@ -3552,20 +3351,6 @@ packages: - supports-color dev: true - /@babel/plugin-transform-class-static-block@7.22.5(@babel/core@7.23.5): - resolution: {integrity: sha512-SPToJ5eYZLxlnp1UzdARpOGeC2GbHvr9d/UV0EukuVx8atktg194oe+C5BqQ8jRTkgLRVOPYeXRSBg1IlMoVRA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.12.0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.23.5) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.5) - transitivePeerDependencies: - - supports-color - dev: true - /@babel/plugin-transform-classes@7.22.6(@babel/core@7.22.5): resolution: {integrity: sha512-58EgM6nuPNG6Py4Z3zSuu0xWu2VfodiMi72Jt5Kj2FECmaYk1RrTXA45z6KBFsu9tRgwQDwIiY4FXTt+YsSFAQ==} engines: {node: '>=6.9.0'} @@ -3624,6 +3409,7 @@ packages: globals: 11.12.0 transitivePeerDependencies: - supports-color + dev: false /@babel/plugin-transform-computed-properties@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-4GHWBgRf0krxPX+AaPtgBAlTgTeZmqDynokHOX7aqqAB4tHs3U2Y02zH6ETFdLZGcg9UQSD1WCmkVrE9ErHeOg==} @@ -3656,6 +3442,7 @@ packages: '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 '@babel/template': 7.22.15 + dev: false /@babel/plugin-transform-destructuring@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-GfqcFuGW8vnEqTUBM7UtPd5A4q797LTvvwKxXTgRsFjoqaJiEg9deBG6kWeQYkVEL569NpnmpC0Pkr/8BLKGnQ==} @@ -3685,6 +3472,7 @@ packages: dependencies: '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-transform-dotall-regex@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==} @@ -3708,17 +3496,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-dotall-regex@7.22.5(@babel/core@7.23.5): - resolution: {integrity: sha512-5/Yk9QxCQCl+sOIB1WelKnVRxTJDSAIxtJLL2/pqL14ZVlbH0fUQUZa/T5/UnQtBNgghR7mfB8ERBKyKPCi7Vw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.23.5) - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-duplicate-keys@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==} engines: {node: '>=6.9.0'} @@ -3739,16 +3516,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-duplicate-keys@7.22.5(@babel/core@7.23.5): - resolution: {integrity: sha512-dEnYD+9BBgld5VBXHnF/DbYGp3fqGMsyxKbtD1mDyIA7AkTSpKXFhCVuj/oQVOoALfBs77DudA0BE4d5mcpmqw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-dynamic-import@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-0MC3ppTB1AMxd8fXjSrbPa7LT9hrImt+/fcj+Pg5YMD7UQyWp/02+JWpdnCymmsXwIx5Z+sYn1bwCn4ZJNvhqQ==} engines: {node: '>=6.9.0'} @@ -3771,17 +3538,6 @@ packages: '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.9) dev: true - /@babel/plugin-transform-dynamic-import@7.22.5(@babel/core@7.23.5): - resolution: {integrity: sha512-0MC3ppTB1AMxd8fXjSrbPa7LT9hrImt+/fcj+Pg5YMD7UQyWp/02+JWpdnCymmsXwIx5Z+sYn1bwCn4ZJNvhqQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.5) - dev: true - /@babel/plugin-transform-exponentiation-operator@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==} engines: {node: '>=6.9.0'} @@ -3804,17 +3560,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-exponentiation-operator@7.22.5(@babel/core@7.23.5): - resolution: {integrity: sha512-vIpJFNM/FjZ4rh1myqIya9jXwrwwgFRHPjT3DkUA9ZLHuzox8jiXkOLvwm1H+PQIP3CqfC++WPKeuDi0Sjdj1g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-export-namespace-from@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg==} engines: {node: '>=6.9.0'} @@ -3837,17 +3582,6 @@ packages: '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.9) dev: true - /@babel/plugin-transform-export-namespace-from@7.22.5(@babel/core@7.23.5): - resolution: {integrity: sha512-X4hhm7FRnPgd4nDA4b/5V280xCx6oL7Oob5+9qVS5C13Zq4bh1qq7LU0GgRU6b5dBWBvhGaXYVB4AcN6+ol6vg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.5) - dev: true - /@babel/plugin-transform-flow-strip-types@7.21.0(@babel/core@7.23.5): resolution: {integrity: sha512-FlFA2Mj87a6sDkW4gfGrQQqwY/dLlBAyJa2dJEZ+FHXUVHBflO2wyKvg+OOEzXfrKYIa4HWl0mgmbCzt0cMb7w==} engines: {node: '>=6.9.0'} @@ -3897,6 +3631,7 @@ packages: dependencies: '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-transform-function-name@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-UIzQNMS0p0HHiQm3oelztj+ECwFnj+ZRV4KnguvlsD2of1whUeM6o7wGNj6oLwcDoAXQ8gEqfgC24D+VdIcevg==} @@ -3932,6 +3667,7 @@ packages: '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-function-name': 7.23.0 '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-transform-json-strings@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-DuCRB7fu8MyTLbEQd1ew3R85nx/88yMoqo2uPSjevMj3yoN7CDM8jkgrY0wmVxfJZyJ/B9fE1iq7EQppWQmR5A==} @@ -3955,17 +3691,6 @@ packages: '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.9) dev: true - /@babel/plugin-transform-json-strings@7.22.5(@babel/core@7.23.5): - resolution: {integrity: sha512-DuCRB7fu8MyTLbEQd1ew3R85nx/88yMoqo2uPSjevMj3yoN7CDM8jkgrY0wmVxfJZyJ/B9fE1iq7EQppWQmR5A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.5) - dev: true - /@babel/plugin-transform-literals@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-fTLj4D79M+mepcw3dgFBTIDYpbcB9Sm0bpm4ppXPaO+U+PKFFyV9MGRvS0gvGw62sd10kT5lRMKXAADb9pWy8g==} engines: {node: '>=6.9.0'} @@ -3994,6 +3719,7 @@ packages: dependencies: '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-transform-logical-assignment-operators@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-MQQOUW1KL8X0cDWfbwYP+TbVbZm16QmQXJQ+vndPtH/BoO0lOKpVoEDMI7+PskYxH+IiE0tS8xZye0qr1lGzSA==} @@ -4017,17 +3743,6 @@ packages: '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.9) dev: true - /@babel/plugin-transform-logical-assignment-operators@7.22.5(@babel/core@7.23.5): - resolution: {integrity: sha512-MQQOUW1KL8X0cDWfbwYP+TbVbZm16QmQXJQ+vndPtH/BoO0lOKpVoEDMI7+PskYxH+IiE0tS8xZye0qr1lGzSA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.5) - dev: true - /@babel/plugin-transform-member-expression-literals@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-RZEdkNtzzYCFl9SE9ATaUMTj2hqMb4StarOJLrZRbqqU4HSBE7UlBw9WBWQiDzrJZJdUWiMTVDI6Gv/8DPvfew==} engines: {node: '>=6.9.0'} @@ -4056,6 +3771,7 @@ packages: dependencies: '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-transform-modules-amd@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==} @@ -4079,17 +3795,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-modules-amd@7.22.5(@babel/core@7.23.5): - resolution: {integrity: sha512-R+PTfLTcYEmb1+kK7FNkhQ1gP4KgjpSO6HfH9+f8/yfp2Nt3ggBjiVpRwmwTlfqZLafYKJACy36yDXlEmI9HjQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.5) - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-modules-commonjs@7.22.5(@babel/core@7.22.20): resolution: {integrity: sha512-B4pzOXj+ONRmuaQTg05b3y/4DuFz3WcCNAXPLb2Q0GT0TrGKGxNKV4jwsXts+StaM0LQczZbOpj8o1DLPDJIiA==} engines: {node: '>=6.9.0'} @@ -4174,19 +3879,6 @@ packages: '@babel/helper-validator-identifier': 7.22.20 dev: true - /@babel/plugin-transform-modules-systemjs@7.22.5(@babel/core@7.23.5): - resolution: {integrity: sha512-emtEpoaTMsOs6Tzz+nbmcePl6AKVtS1yC4YNAeMun9U8YCsgadPNxnOPQ8GhHFB2qdx+LZu9LgoC0Lthuu05DQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.5) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-validator-identifier': 7.22.20 - dev: true - /@babel/plugin-transform-modules-umd@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==} engines: {node: '>=6.9.0'} @@ -4209,17 +3901,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-modules-umd@7.22.5(@babel/core@7.23.5): - resolution: {integrity: sha512-+S6kzefN/E1vkSsKx8kmQuqeQsvCKCd1fraCM7zXm4SFoggI099Tr4G8U81+5gtMdUeMQ4ipdQffbKLX0/7dBQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-module-transforms': 7.23.3(@babel/core@7.23.5) - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} engines: {node: '>=6.9.0'} @@ -4242,17 +3923,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.23.5): - resolution: {integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.23.5) - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-new-target@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==} engines: {node: '>=6.9.0'} @@ -4273,16 +3943,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-new-target@7.22.5(@babel/core@7.23.5): - resolution: {integrity: sha512-AsF7K0Fx/cNKVyk3a+DW0JLo+Ua598/NxMRvxDnkpCIGFh43+h/v2xyhRUYf6oD8gE4QtL83C7zZVghMjHd+iw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-nullish-coalescing-operator@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-6CF8g6z1dNYZ/VXok5uYkkBBICHZPiGEl7oDnAx2Mt1hlHVHOSIKWJaXHjQJA5VB43KZnXZDIexMchY4y2PGdA==} engines: {node: '>=6.9.0'} @@ -4305,17 +3965,6 @@ packages: '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.9) dev: true - /@babel/plugin-transform-nullish-coalescing-operator@7.22.5(@babel/core@7.23.5): - resolution: {integrity: sha512-6CF8g6z1dNYZ/VXok5uYkkBBICHZPiGEl7oDnAx2Mt1hlHVHOSIKWJaXHjQJA5VB43KZnXZDIexMchY4y2PGdA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.5) - dev: true - /@babel/plugin-transform-numeric-separator@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-NbslED1/6M+sXiwwtcAB/nieypGw02Ejf4KtDeMkCEpP6gWFMX1wI9WKYua+4oBneCCEmulOkRpwywypVZzs/g==} engines: {node: '>=6.9.0'} @@ -4338,17 +3987,6 @@ packages: '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.9) dev: true - /@babel/plugin-transform-numeric-separator@7.22.5(@babel/core@7.23.5): - resolution: {integrity: sha512-NbslED1/6M+sXiwwtcAB/nieypGw02Ejf4KtDeMkCEpP6gWFMX1wI9WKYua+4oBneCCEmulOkRpwywypVZzs/g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.5) - dev: true - /@babel/plugin-transform-object-rest-spread@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-Kk3lyDmEslH9DnvCDA1s1kkd3YWQITiBOHngOtDL9Pt6BZjzqb6hiOlb8VfjiiQJ2unmegBqZu0rx5RxJb5vmQ==} engines: {node: '>=6.9.0'} @@ -4377,20 +4015,6 @@ packages: '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.22.9) dev: true - /@babel/plugin-transform-object-rest-spread@7.22.5(@babel/core@7.23.5): - resolution: {integrity: sha512-Kk3lyDmEslH9DnvCDA1s1kkd3YWQITiBOHngOtDL9Pt6BZjzqb6hiOlb8VfjiiQJ2unmegBqZu0rx5RxJb5vmQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/compat-data': 7.22.20 - '@babel/core': 7.23.5 - '@babel/helper-compilation-targets': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.23.5) - dev: true - /@babel/plugin-transform-object-super@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-klXqyaT9trSjIUrcsYIfETAzmOEZL3cBYqOYLJxBHfMFFggmXOv+NYSX/Jbs9mzMVESw/WycLFPRx8ba/b2Ipw==} engines: {node: '>=6.9.0'} @@ -4428,6 +4052,7 @@ packages: '@babel/helper-replace-supers': 7.22.5 transitivePeerDependencies: - supports-color + dev: false /@babel/plugin-transform-optional-catch-binding@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-pH8orJahy+hzZje5b8e2QIlBWQvGpelS76C63Z+jhZKsmzfNaPQ+LaW6dcJ9bxTpo1mtXbgHwy765Ro3jftmUg==} @@ -4451,17 +4076,6 @@ packages: '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.9) dev: true - /@babel/plugin-transform-optional-catch-binding@7.22.5(@babel/core@7.23.5): - resolution: {integrity: sha512-pH8orJahy+hzZje5b8e2QIlBWQvGpelS76C63Z+jhZKsmzfNaPQ+LaW6dcJ9bxTpo1mtXbgHwy765Ro3jftmUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.5) - dev: true - /@babel/plugin-transform-optional-chaining@7.22.6(@babel/core@7.22.5): resolution: {integrity: sha512-Vd5HiWml0mDVtcLHIoEU5sw6HOUW/Zk0acLs/SAeuLzkGNOPc9DB4nkUajemhCmTIz3eiaKREZn2hQQqF79YTg==} engines: {node: '>=6.9.0'} @@ -4486,18 +4100,6 @@ packages: '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.9) dev: true - /@babel/plugin-transform-optional-chaining@7.22.6(@babel/core@7.23.5): - resolution: {integrity: sha512-Vd5HiWml0mDVtcLHIoEU5sw6HOUW/Zk0acLs/SAeuLzkGNOPc9DB4nkUajemhCmTIz3eiaKREZn2hQQqF79YTg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.5) - dev: true - /@babel/plugin-transform-parameters@7.22.5(@babel/core@7.12.9): resolution: {integrity: sha512-AVkFUBurORBREOmHRKo06FjHYgjrabpdqRSwq6+C7R5iTCZOsM4QbcB27St0a4U6fffyAOqh3s/qEfybAhfivg==} engines: {node: '>=6.9.0'} @@ -4536,6 +4138,7 @@ packages: dependencies: '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-transform-private-methods@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==} @@ -4563,19 +4166,6 @@ packages: - supports-color dev: true - /@babel/plugin-transform-private-methods@7.22.5(@babel/core@7.23.5): - resolution: {integrity: sha512-PPjh4gyrQnGe97JTalgRGMuU4icsZFnWkzicB/fUtzlKUqvsWBKEpPPfr5a2JiyirZkHxnAqkQMO5Z5B2kK3fA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.23.5) - '@babel/helper-plugin-utils': 7.22.5 - transitivePeerDependencies: - - supports-color - dev: true - /@babel/plugin-transform-private-property-in-object@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ==} engines: {node: '>=6.9.0'} @@ -4606,21 +4196,6 @@ packages: - supports-color dev: true - /@babel/plugin-transform-private-property-in-object@7.22.5(@babel/core@7.23.5): - resolution: {integrity: sha512-/9xnaTTJcVoBtSSmrVyhtSvO3kbqS2ODoh2juEU72c3aYonNF0OMGiaz2gjukyKM2wBBYJP38S4JiE0Wfb5VMQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.22.5(@babel/core@7.23.5) - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.5) - transitivePeerDependencies: - - supports-color - dev: true - /@babel/plugin-transform-property-literals@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-TiOArgddK3mK/x1Qwf5hay2pxI6wCZnvQqrFSqbtg1GLl2JcNMitVH/YnqjP+M31pLUeTfzY1HAXFDnUBV30rQ==} engines: {node: '>=6.9.0'} @@ -4649,6 +4224,7 @@ packages: dependencies: '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-transform-react-display-name@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-PVk3WPYudRF5z4GKMEYUrLjPl38fJSKNaEOkFuoprioowGuWN6w2RKznuFNSlJx7pzzXXStPUnNSOEO0jL5EVw==} @@ -4829,17 +4405,6 @@ packages: regenerator-transform: 0.15.1 dev: true - /@babel/plugin-transform-regenerator@7.22.5(@babel/core@7.23.5): - resolution: {integrity: sha512-rR7KePOE7gfEtNTh9Qw+iO3Q/e4DEsoQ+hdvM6QUDH7JRJ5qxq5AA52ZzBWbI5i9lfNuvySgOGP8ZN7LAmaiPw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - regenerator-transform: 0.15.1 - dev: true - /@babel/plugin-transform-reserved-words@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==} engines: {node: '>=6.9.0'} @@ -4860,16 +4425,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-reserved-words@7.22.5(@babel/core@7.23.5): - resolution: {integrity: sha512-DTtGKFRQUDm8svigJzZHzb/2xatPc6TzNvAIJ5GqOKDsGFYgAskjRulbR/vGsPKq3OPqtexnz327qYpP57RFyA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-runtime@7.22.4(@babel/core@7.22.5): resolution: {integrity: sha512-Urkiz1m4zqiRo17klj+l3nXgiRTFQng91Bc1eiLF7BMQu1e7wE5Gcq9xSv062IF068NHjcutSbIMev60gXxAvA==} engines: {node: '>=6.9.0'} @@ -4915,6 +4470,7 @@ packages: dependencies: '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-transform-spread@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-5ZzDQIGyvN4w8+dMmpohL6MBo+l2G7tfC/O2Dg7/hjpgeWvUx8FzfeOKxGog9IimPa4YekaQ9PlDqTLOljkcxg==} @@ -4947,6 +4503,7 @@ packages: '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + dev: false /@babel/plugin-transform-sticky-regex@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==} @@ -4968,16 +4525,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-sticky-regex@7.22.5(@babel/core@7.23.5): - resolution: {integrity: sha512-zf7LuNpHG0iEeiyCNwX4j3gDg1jgt1k3ZdXBKbZSoA3BbGQGvMiSvfbZRR3Dr3aeJe3ooWFZxOOG3IRStYp2Bw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-template-literals@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-5ciOehRNf+EyUeewo8NkbQiUs4d6ZxiHo6BcBcnFlgiJfu16q0bQUw9Jvo0b0gBKFG1SMhDSjeKXSYuJLeFSMA==} engines: {node: '>=6.9.0'} @@ -5006,6 +4553,7 @@ packages: dependencies: '@babel/core': 7.23.5 '@babel/helper-plugin-utils': 7.22.5 + dev: false /@babel/plugin-transform-typeof-symbol@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==} @@ -5027,16 +4575,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-typeof-symbol@7.22.5(@babel/core@7.23.5): - resolution: {integrity: sha512-bYkI5lMzL4kPii4HHEEChkD0rkc+nvnlR6+o/qdqR6zrm0Sv/nodmyLhlq2DO0YKLUNd2VePmPRjJXSBh9OIdA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-typescript@7.22.15(@babel/core@7.22.20): resolution: {integrity: sha512-1uirS0TnijxvQLnlv5wQBwOX3E1wCFX7ITv+9pBV2wKEk4K+M5tqDaoNXnTH8tjEIYHLO98MwiTWO04Ggz4XuA==} engines: {node: '>=6.9.0'} @@ -5126,16 +4664,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-escapes@7.22.5(@babel/core@7.23.5): - resolution: {integrity: sha512-biEmVg1IYB/raUO5wT1tgfacCef15Fbzhkx493D3urBI++6hpJ+RFG4SrWMn0NEZLfvilqKf3QDrRVZHo08FYg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-unicode-property-regex@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==} engines: {node: '>=6.9.0'} @@ -5158,17 +4686,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-property-regex@7.22.5(@babel/core@7.23.5): - resolution: {integrity: sha512-HCCIb+CbJIAE6sXn5CjFQXMwkCClcOfPCzTlilJ8cUatfzwHlWQkbtV0zD338u9dZskwvuOYTuuaMaA8J5EI5A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.23.5) - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-unicode-regex@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==} engines: {node: '>=6.9.0'} @@ -5191,17 +4708,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-regex@7.22.5(@babel/core@7.23.5): - resolution: {integrity: sha512-028laaOKptN5vHJf9/Arr/HiJekMd41hOEZYvNsrsXqJ7YPYuX2bQxh31fkZzGmq3YqHRJzYFFAVYvKfMPKqyg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.23.5) - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/plugin-transform-unicode-sets-regex@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==} engines: {node: '>=6.9.0'} @@ -5224,17 +4730,6 @@ packages: '@babel/helper-plugin-utils': 7.22.5 dev: true - /@babel/plugin-transform-unicode-sets-regex@7.22.5(@babel/core@7.23.5): - resolution: {integrity: sha512-lhMfi4FC15j13eKrh3DnYHjpGj6UKQHtNKTbtc1igvAhRy4+kLhV07OpLcsN0VgDEw/MjAvJO4BdMJsHwMhzCg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-create-regexp-features-plugin': 7.22.9(@babel/core@7.23.5) - '@babel/helper-plugin-utils': 7.22.5 - dev: true - /@babel/preset-env@7.22.9(@babel/core@7.22.5): resolution: {integrity: sha512-wNi5H/Emkhll/bqPjsjQorSykrlfY5OWakd6AulLvMEytpKasMVUpVy8RL4qBIBs5Ac6/5i0/Rv0b/Fg6Eag/g==} engines: {node: '>=6.9.0'} @@ -5428,80 +4923,80 @@ packages: '@babel/helper-compilation-targets': 7.22.15 '@babel/helper-plugin-utils': 7.22.5 '@babel/helper-validator-option': 7.22.15 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.23.5) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.23.5) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.23.5) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.23.5) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-syntax-import-assertions': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-syntax-import-attributes': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.23.5) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.23.5) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.23.5) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.23.5) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.23.5) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.23.5) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.23.5) - '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-async-generator-functions': 7.22.7(@babel/core@7.23.5) - '@babel/plugin-transform-async-to-generator': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-block-scoped-functions': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-block-scoping': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-class-properties': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-class-static-block': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-classes': 7.22.6(@babel/core@7.23.5) - '@babel/plugin-transform-computed-properties': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-destructuring': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-duplicate-keys': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-dynamic-import': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-exponentiation-operator': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-export-namespace-from': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-for-of': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-function-name': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-json-strings': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-literals': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-logical-assignment-operators': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-member-expression-literals': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-modules-amd': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-modules-commonjs': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-modules-systemjs': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-modules-umd': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-new-target': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-nullish-coalescing-operator': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-numeric-separator': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-object-rest-spread': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-object-super': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-optional-catch-binding': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-optional-chaining': 7.22.6(@babel/core@7.23.5) - '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-private-methods': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-private-property-in-object': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-property-literals': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-regenerator': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-reserved-words': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-shorthand-properties': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-spread': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-sticky-regex': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-template-literals': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-typeof-symbol': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-unicode-escapes': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-unicode-property-regex': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-unicode-regex': 7.22.5(@babel/core@7.23.5) - '@babel/plugin-transform-unicode-sets-regex': 7.22.5(@babel/core@7.23.5) - '@babel/preset-modules': 0.1.5(@babel/core@7.23.5) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.22.9) + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.22.9) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.22.9) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.22.9) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.22.9) + '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.22.9) + '@babel/plugin-syntax-import-assertions': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-syntax-import-attributes': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.22.9) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.22.9) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.22.9) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.22.9) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.22.9) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.22.9) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.22.9) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.22.9) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.22.9) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.22.9) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.22.9) + '@babel/plugin-transform-arrow-functions': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-async-generator-functions': 7.22.7(@babel/core@7.22.9) + '@babel/plugin-transform-async-to-generator': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-block-scoped-functions': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-block-scoping': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-class-properties': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-class-static-block': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-classes': 7.22.6(@babel/core@7.22.9) + '@babel/plugin-transform-computed-properties': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-destructuring': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-duplicate-keys': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-dynamic-import': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-exponentiation-operator': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-export-namespace-from': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-for-of': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-function-name': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-json-strings': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-literals': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-logical-assignment-operators': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-member-expression-literals': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-modules-amd': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-modules-commonjs': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-modules-systemjs': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-modules-umd': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-new-target': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-nullish-coalescing-operator': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-numeric-separator': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-object-rest-spread': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-object-super': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-optional-catch-binding': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-optional-chaining': 7.22.6(@babel/core@7.22.9) + '@babel/plugin-transform-parameters': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-private-methods': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-private-property-in-object': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-property-literals': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-regenerator': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-reserved-words': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-shorthand-properties': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-spread': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-sticky-regex': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-template-literals': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-typeof-symbol': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-unicode-escapes': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-unicode-property-regex': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-unicode-regex': 7.22.5(@babel/core@7.22.9) + '@babel/plugin-transform-unicode-sets-regex': 7.22.5(@babel/core@7.22.9) + '@babel/preset-modules': 0.1.5(@babel/core@7.22.9) '@babel/types': 7.23.5 - babel-plugin-polyfill-corejs2: 0.4.5(@babel/core@7.23.5) - babel-plugin-polyfill-corejs3: 0.8.3(@babel/core@7.23.5) - babel-plugin-polyfill-regenerator: 0.5.2(@babel/core@7.23.5) + babel-plugin-polyfill-corejs2: 0.4.5(@babel/core@7.22.9) + babel-plugin-polyfill-corejs3: 0.8.3(@babel/core@7.22.9) + babel-plugin-polyfill-regenerator: 0.5.2(@babel/core@7.22.9) core-js-compat: 3.32.0 semver: 6.3.1 transitivePeerDependencies: @@ -5558,19 +5053,6 @@ packages: esutils: 2.0.3 dev: true - /@babel/preset-modules@0.1.5(@babel/core@7.23.5): - resolution: {integrity: sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@7.23.5) - '@babel/plugin-transform-dotall-regex': 7.22.5(@babel/core@7.23.5) - '@babel/types': 7.23.5 - esutils: 2.0.3 - dev: true - /@babel/preset-react@7.22.5(@babel/core@7.22.5): resolution: {integrity: sha512-M+Is3WikOpEJHgR385HbuCITPTaPRaNkibTEa9oiofmJvIsrceb4yp9RL9Kb+TE8LznmeyZqpP+Lopwcx59xPQ==} engines: {node: '>=6.9.0'} @@ -8945,7 +8427,7 @@ packages: preact: ^10.4.0 vite: '>=2.0.0-beta.3' dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.23.5 '@prefresh/babel-plugin': 0.5.0 '@prefresh/core': 1.5.0(preact@10.16.0) '@prefresh/utils': 1.2.0 @@ -10398,7 +9880,7 @@ packages: typescript: optional: true dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.23.5 '@storybook/addons': 7.2.0(react-dom@18.2.0)(react@18.2.0) '@storybook/channels': 7.2.0 '@storybook/client-api': 7.2.0 @@ -10418,7 +9900,7 @@ packages: '@swc/core': 1.3.91 '@types/node': 16.18.34 '@types/semver': 7.5.0 - babel-loader: 9.1.3(@babel/core@7.22.20)(webpack@5.88.2) + babel-loader: 9.1.3(@babel/core@7.23.5)(webpack@5.88.2) babel-plugin-named-exports-order: 0.0.2 browser-assert: 1.2.1 case-sensitive-paths-webpack-plugin: 2.4.0 @@ -10486,7 +9968,7 @@ packages: resolution: {integrity: sha512-0RxleuwhSbREr5FxNu/N+TIK4CZJDVDDXCGTpXnRZrA4phzUIhrkG/9wDfW/jo3GHfyKa8PE1mYkqtvG3J3rVQ==} hasBin: true dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.23.5 '@babel/preset-env': 7.22.9(@babel/core@7.22.9) '@babel/types': 7.23.0 '@ndelangen/get-tarball': 3.0.9 @@ -11173,7 +10655,7 @@ packages: resolution: {integrity: sha512-5RBi6agtDglNXdffmw4+Fyv2dUdlIdeOdUj0O5+JRYajTxfHdurZd9r/42z4OstN+ORDkLA/svt8Q9JyRpIb6Q==} dependencies: '@storybook/channels': 7.0.26 - '@types/babel__core': 7.20.1 + '@types/babel__core': 7.20.5 '@types/express': 4.17.17 file-system-cache: 2.3.0 dev: true @@ -11417,7 +10899,7 @@ packages: resolution: {integrity: sha512-d9ULIT+a4EXLX3UU8FBjauG9NnsZHkHztXoIcTsOKoOw030fyjheN9svkTULjJxtYag9DZz5Jz5qkWZDPxTFwA==} engines: {node: '>=12'} dependencies: - '@babel/code-frame': 7.22.13 + '@babel/code-frame': 7.23.5 '@babel/runtime': 7.23.2 '@types/aria-query': 5.0.1 aria-query: 5.3.0 @@ -11431,7 +10913,7 @@ packages: resolution: {integrity: sha512-fB0R+fa3AUqbLHWyxXa2kGVtf1Fe1ZZFr0Zp6AIbIAzXb2mKbEXl+PCQNUOaq5lbTab5tfctfXRNsWXxa2f7Aw==} engines: {node: '>=14'} dependencies: - '@babel/code-frame': 7.22.13 + '@babel/code-frame': 7.23.5 '@babel/runtime': 7.23.2 '@types/aria-query': 5.0.1 aria-query: 5.1.3 @@ -14865,30 +14347,30 @@ packages: webpack: 5.87.0(esbuild@0.19.8) dev: false - /babel-loader@9.1.3(@babel/core@7.22.20)(webpack@5.88.2): + /babel-loader@9.1.3(@babel/core@7.22.9)(webpack@5.89.0): resolution: {integrity: sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==} engines: {node: '>= 14.15.0'} peerDependencies: '@babel/core': ^7.12.0 webpack: '>=5' dependencies: - '@babel/core': 7.22.20 + '@babel/core': 7.22.9 find-cache-dir: 4.0.0 schema-utils: 4.0.1 - webpack: 5.88.2(@swc/core@1.3.91)(esbuild@0.18.20) + webpack: 5.89.0(@swc/core@1.3.91)(esbuild@0.18.20) dev: true - /babel-loader@9.1.3(@babel/core@7.22.9)(webpack@5.89.0): + /babel-loader@9.1.3(@babel/core@7.23.5)(webpack@5.88.2): resolution: {integrity: sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==} engines: {node: '>= 14.15.0'} peerDependencies: '@babel/core': ^7.12.0 webpack: '>=5' dependencies: - '@babel/core': 7.22.9 + '@babel/core': 7.23.5 find-cache-dir: 4.0.0 schema-utils: 4.0.1 - webpack: 5.89.0(@swc/core@1.3.91)(esbuild@0.18.20) + webpack: 5.88.2(@swc/core@1.3.91)(esbuild@0.18.20) dev: true /babel-plugin-add-module-exports@1.0.4: @@ -15008,19 +14490,6 @@ packages: - supports-color dev: true - /babel-plugin-polyfill-corejs2@0.4.5(@babel/core@7.23.5): - resolution: {integrity: sha512-19hwUH5FKl49JEsvyTcoHakh6BE0wgXLLptIyKZ3PijHc/Ci521wygORCUCCred+E/twuqRyAkE02BAWPmsHOg==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - dependencies: - '@babel/compat-data': 7.22.20 - '@babel/core': 7.23.5 - '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.23.5) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - dev: true - /babel-plugin-polyfill-corejs3@0.8.3(@babel/core@7.22.5): resolution: {integrity: sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==} peerDependencies: @@ -15045,18 +14514,6 @@ packages: - supports-color dev: true - /babel-plugin-polyfill-corejs3@0.8.3(@babel/core@7.23.5): - resolution: {integrity: sha512-z41XaniZL26WLrvjy7soabMXrfPWARN25PZoriDEiLMxAp50AUW3t35BGQUMg5xK3UrpVTtagIDklxYa+MhiNA==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.23.5) - core-js-compat: 3.32.0 - transitivePeerDependencies: - - supports-color - dev: true - /babel-plugin-polyfill-regenerator@0.5.2(@babel/core@7.22.5): resolution: {integrity: sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==} peerDependencies: @@ -15079,17 +14536,6 @@ packages: - supports-color dev: true - /babel-plugin-polyfill-regenerator@0.5.2(@babel/core@7.23.5): - resolution: {integrity: sha512-tAlOptU0Xj34V1Y2PNTL4Y0FOJMDB6bZmoW39FeCQIhigGLkqu3Fj6uiXpxIf6Ij274ENdYx64y6Au+ZKlb1IA==} - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - dependencies: - '@babel/core': 7.23.5 - '@babel/helper-define-polyfill-provider': 0.4.2(@babel/core@7.23.5) - transitivePeerDependencies: - - supports-color - dev: true - /babel-plugin-react-docgen@4.2.1: resolution: {integrity: sha512-UQ0NmGHj/HAqi5Bew8WvNfCk8wSsmdgNd8ZdMjBCICtyCJCq9LiqgqvjCYe570/Wg7AQArSq1VQ60Dd/CHN7mQ==} dependencies: @@ -22388,7 +21834,7 @@ packages: '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@7.23.5) '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@7.23.5) '@babel/plugin-transform-modules-commonjs': 7.22.5(@babel/core@7.23.5) - '@babel/preset-env': 7.22.9(@babel/core@7.22.9) + '@babel/preset-env': 7.22.9(@babel/core@7.23.5) '@babel/preset-flow': 7.21.4(@babel/core@7.23.5) '@babel/preset-typescript': 7.21.5(@babel/core@7.23.5) '@babel/register': 7.21.0(@babel/core@7.23.5) @@ -22729,6 +22175,8 @@ packages: /lightningcss-wasm@1.22.1: resolution: {integrity: sha512-GzY3oTNtkPhDVt1AY0H0ZEWdcAjTOD1Y72nJlEO1JSRgA4UTUDhrklzdMhSLTyVHTpVAEfCxnD6fULBIbwgT/A==} engines: {node: '>= 12.0.0'} + dependencies: + napi-wasm: 1.1.0 dev: false bundledDependencies: - napi-wasm @@ -24650,6 +24098,10 @@ packages: /napi-build-utils@1.0.2: resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==} + /napi-wasm@1.1.0: + resolution: {integrity: sha512-lHwIAJbmLSjF9VDRm9GoVOy9AGp3aIvkjv+Kvz9h16QR3uSVYH78PNQUnT2U4X53mhlnV2M7wrhibQ3GHicDmg==} + dev: false + /natural-compare-lite@1.4.0: resolution: {integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==} @@ -28906,7 +28358,7 @@ packages: peerDependencies: solid-js: ^1.3 dependencies: - '@babel/generator': 7.23.0 + '@babel/generator': 7.23.5 '@babel/helper-module-imports': 7.22.15 '@babel/types': 7.23.0 solid-js: 1.7.11 @@ -28917,7 +28369,7 @@ packages: peerDependencies: solid-js: ^1.3 dependencies: - '@babel/generator': 7.23.0 + '@babel/generator': 7.23.5 '@babel/helper-module-imports': 7.22.15 '@babel/types': 7.23.0 solid-js: 1.7.12 diff --git a/sandbox/codegen/__tests__/frameworks/preact.styled-factory.test.tsx b/sandbox/codegen/__tests__/frameworks/preact.styled-factory.test.tsx index 1df5b8610..a95e607da 100644 --- a/sandbox/codegen/__tests__/frameworks/preact.styled-factory.test.tsx +++ b/sandbox/codegen/__tests__/frameworks/preact.styled-factory.test.tsx @@ -231,7 +231,7 @@ describe('styled factory - button recipe', () => { ) expect(container.firstElementChild?.outerHTML).toMatchInlineSnapshot( - '""', + '""', ) }) diff --git a/sandbox/codegen/__tests__/frameworks/qwik.styled-factory.test.tsx b/sandbox/codegen/__tests__/frameworks/qwik.styled-factory.test.tsx index 110c05ba7..643bb8216 100644 --- a/sandbox/codegen/__tests__/frameworks/qwik.styled-factory.test.tsx +++ b/sandbox/codegen/__tests__/frameworks/qwik.styled-factory.test.tsx @@ -250,7 +250,7 @@ describe('styled factory - button recipe', async () => { const container = screen.querySelector('button')! expect(container.outerHTML).toMatchInlineSnapshot( - '""', + '""', ) }) diff --git a/sandbox/codegen/__tests__/frameworks/solid.styled-factory.test.tsx b/sandbox/codegen/__tests__/frameworks/solid.styled-factory.test.tsx index 32c776102..47cd2dbaa 100644 --- a/sandbox/codegen/__tests__/frameworks/solid.styled-factory.test.tsx +++ b/sandbox/codegen/__tests__/frameworks/solid.styled-factory.test.tsx @@ -298,7 +298,7 @@ describe('styled factory - button recipe', () => { expect(container.firstChild).toMatchInlineSnapshot(` diff --git a/sandbox/codegen/__tests__/frameworks/vue.styled-factory.test.tsx b/sandbox/codegen/__tests__/frameworks/vue.styled-factory.test.tsx index 06513784c..61dacd748 100644 --- a/sandbox/codegen/__tests__/frameworks/vue.styled-factory.test.tsx +++ b/sandbox/codegen/__tests__/frameworks/vue.styled-factory.test.tsx @@ -296,7 +296,7 @@ describe('styled factory - button recipe', () => { const { firstChild } = container as HTMLElement expect(firstChild).toMatchInlineSnapshot(` diff --git a/sandbox/codegen/__tests__/styled-factory.test.tsx b/sandbox/codegen/__tests__/styled-factory.test.tsx index f6e23e226..d0a7c73fb 100644 --- a/sandbox/codegen/__tests__/styled-factory.test.tsx +++ b/sandbox/codegen/__tests__/styled-factory.test.tsx @@ -278,7 +278,7 @@ describe('styled factory - button recipe', () => { expect(container.firstChild).toMatchInlineSnapshot(` diff --git a/sandbox/runtime-perf/.gitignore b/sandbox/runtime-perf/.gitignore new file mode 100644 index 000000000..dafadc4b9 --- /dev/null +++ b/sandbox/runtime-perf/.gitignore @@ -0,0 +1,28 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? + +## Panda +styled-system +styled-system-studio diff --git a/sandbox/runtime-perf/index.html b/sandbox/runtime-perf/index.html new file mode 100644 index 000000000..e0d1c8408 --- /dev/null +++ b/sandbox/runtime-perf/index.html @@ -0,0 +1,13 @@ + + + + + + + Vite + React + TS + + +
+ + + diff --git a/sandbox/runtime-perf/package.json b/sandbox/runtime-perf/package.json new file mode 100644 index 000000000..804624441 --- /dev/null +++ b/sandbox/runtime-perf/package.json @@ -0,0 +1,31 @@ +{ + "name": "sandbox-runtime-perf", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "prepare": "panda", + "dev": "vite", + "build": "tsc && vite build", + "preview": "vite preview", + "explore": "source-map-explorer 'dist/assets/*.js' --no-border-checks", + "analyze": "pnpm panda codegen --clean && ANALYZE=true vite build && pnpm explore", + "visualize": "pnpm panda codegen --clean && vite-bundle-visualizer" + }, + "dependencies": { + "react": "^18.2.0", + "react-dom": "^18.2.0" + }, + "devDependencies": { + "@pandacss/dev": "workspace:*", + "@pandacss/studio": "workspace:*", + "@types/react": "18.2.42", + "@types/react-dom": "18.2.17", + "@vitejs/plugin-react": "4.2.1", + "postcss": "^8.4.31", + "source-map-explorer": "^2.5.3", + "typescript": "5.3.3", + "vite": "5.0.7", + "vite-bundle-visualizer": "0.11.0" + } +} diff --git a/sandbox/runtime-perf/panda.config.ts b/sandbox/runtime-perf/panda.config.ts new file mode 100644 index 000000000..3cb6a3cc9 --- /dev/null +++ b/sandbox/runtime-perf/panda.config.ts @@ -0,0 +1,111 @@ +import { defineConfig } from '@pandacss/dev' + +export default defineConfig({ + preflight: false, + include: ['./src/**/*.{tsx,jsx}'], + exclude: [], + outdir: 'styled-system', + jsxFramework: 'react', + theme: { + tokens: { + colors: { + transparent: { value: 'transparent' }, + white: { value: '#fff' }, + black: { value: '#000' }, + + gray50: { value: '#f8fafc' }, + gray100: { value: '#f1f5f9' }, + gray200: { value: '#e2e8f0' }, + gray300: { value: '#cbd5e1' }, + gray400: { value: '#94a3b8' }, + gray500: { value: '#64748b' }, + gray600: { value: '#475569' }, + gray700: { value: '#334155' }, + gray800: { value: '#1e293b' }, + gray900: { value: '#0f172a' }, + + red50: { value: '#fef2f2' }, + red100: { value: '#fee2e2' }, + red200: { value: '#fecaca' }, + red300: { value: '#fca5a5' }, + red400: { value: '#f87171' }, + red500: { value: '#ef4444' }, + red600: { value: '#dc2626' }, + red700: { value: '#b91c1c' }, + red800: { value: '#991b1b' }, + red900: { value: '#7f1d1d' }, + + blue50: { value: '#f0f9ff' }, + blue100: { value: '#e0f2fe' }, + blue200: { value: '#bae6fd' }, + blue300: { value: '#7dd3fc' }, + blue400: { value: '#38bdf8' }, + blue500: { value: '#0ea5e9' }, + blue600: { value: '#0284c7' }, + blue700: { value: '#0369a1' }, + blue800: { value: '#075985' }, + blue900: { value: '#0c4a6e' }, + + green50: { value: '#f0fdf4' }, + green100: { value: '#dcfce7' }, + green200: { value: '#a7f3d0' }, + green300: { value: '#6ee7b7' }, + green400: { value: '#34d399' }, + green500: { value: '#10b981' }, + green600: { value: '#059669' }, + green700: { value: '#047857' }, + green800: { value: '#065f46' }, + green900: { value: '#14532d' }, + + yellow50: { value: '#fefce8' }, + yellow100: { value: '#fef9c3' }, + yellow200: { value: '#fef08a' }, + yellow300: { value: '#fde047' }, + yellow400: { value: '#facc15' }, + yellow500: { value: '#eab308' }, + yellow600: { value: '#ca8a04' }, + yellow700: { value: '#a16207' }, + yellow800: { value: '#854d0e' }, + yellow900: { value: '#713f12' }, + }, + fonts: { + sans: { + value: ['Arial', 'Tahoma', 'Geneva', 'sans-serif'].join(','), + }, + }, + fontSizes: { + body: { value: '16px' }, + h1: { value: '42px' }, + h2: { value: '36px' }, + h3: { value: '30px' }, + h4: { value: '24px' }, + }, + fontWeights: { normal: { value: '400' }, bold: { value: '600' } }, + radii: { + none: { value: '0' }, + sm: { value: '2px' }, + md: { value: '4px' }, + lg: { value: '8px' }, + }, + spacing: { + none: { value: '0' }, + xxs: { value: '4px' }, + xs: { value: '8px' }, + sm: { value: '16px' }, + md: { value: '24px' }, + lg: { value: '32px' }, + xl: { value: '48px' }, + }, + }, + }, + globalCss: { + '*': { + fontFamily: 'Inter', + margin: '0', + }, + a: { + color: 'inherit', + textDecoration: 'none', + }, + }, +}) diff --git a/sandbox/runtime-perf/postcss.config.cjs b/sandbox/runtime-perf/postcss.config.cjs new file mode 100644 index 000000000..3457feedc --- /dev/null +++ b/sandbox/runtime-perf/postcss.config.cjs @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + '@pandacss/dev/postcss': {}, + autoprefixer: {}, + }, +} diff --git a/sandbox/runtime-perf/src/App.tsx b/sandbox/runtime-perf/src/App.tsx new file mode 100644 index 000000000..a9fbf5fb1 --- /dev/null +++ b/sandbox/runtime-perf/src/App.tsx @@ -0,0 +1,50 @@ +import { useEffect, useState } from 'react' +import { Profiler } from './components/profiler' +import { RandomizedButtons } from './components/randomized-buttons' + +const instances = 1000 + +export default function App() { + return ( + <> + {/* */} + + + ) +} + +const CvaButtonProfiler = () => { + const [key, setKey] = useState(null) + return ( + setKey(newKey)}> + + + ) +} + +const CvaButtonRerenderer = () => { + const [key, setKey] = useState(0) + const [enabled, setEnabled] = useState(false) + + useEffect(() => { + if (!enabled) return + + const interval = setInterval(() => { + setKey(Math.random()) + }, 20) + + return () => { + clearInterval(interval) + } + }, [enabled]) + + return ( + <> +
+ +
+ + + + ) +} diff --git a/sandbox/runtime-perf/src/components/button.tsx b/sandbox/runtime-perf/src/components/button.tsx new file mode 100644 index 000000000..f55ff672b --- /dev/null +++ b/sandbox/runtime-perf/src/components/button.tsx @@ -0,0 +1,63 @@ +import { ComponentProps, forwardRef } from 'react' +import { RecipeVariantProps, cva } from '../../styled-system/css' + +export const styles = cva({ + base: { + borderRadius: 'md', + fontWeight: 'bold', + fontFamily: 'sans', + }, + variants: { + disabled: { + true: {}, + false: {}, + }, + size: { + sm: { + paddingX: 'xs', + paddingY: 'xxs', + }, + md: { + paddingX: 'sm', + paddingY: 'xs', + }, + lg: { + paddingX: 'md', + paddingY: 'sm', + }, + }, + tone: { + brand: { + backgroundColor: 'blue600', + borderWidth: '0', + color: 'white', + }, + critical: { + backgroundColor: 'red600', + borderWidth: '0', + color: 'white', + }, + neutral: { + backgroundColor: 'white', + borderWidth: '1px', + borderStyle: 'solid', + borderColor: 'gray400', + color: 'gray800', + }, + }, + }, + defaultVariants: { + disabled: false, + size: 'md', + tone: 'brand', + }, +}) + +export const Button = forwardRef & RecipeVariantProps>( + (props, forwardedRef) => { + const { disabled, size, tone } = props + return +
+ + {children} + + + ); +}; diff --git a/sandbox/runtime-perf/src/components/randomized-buttons.tsx b/sandbox/runtime-perf/src/components/randomized-buttons.tsx new file mode 100644 index 000000000..a39e88310 --- /dev/null +++ b/sandbox/runtime-perf/src/components/randomized-buttons.tsx @@ -0,0 +1,16 @@ +import { Button } from './button' + +const tones = ['brand', 'critical', 'neutral'] as const +const sizes = ['sm', 'md', 'lg'] as const + +const between = (min: number, max: number) => Math.floor(Math.random() * (max - min + 1)) + min + +export const RandomizedButtons = ({ instances }: { instances: number }) => ( + <> + {[...Array(instances).keys()].map((key) => ( + + ))} + +) diff --git a/sandbox/runtime-perf/src/index.css b/sandbox/runtime-perf/src/index.css new file mode 100644 index 000000000..e27a23b77 --- /dev/null +++ b/sandbox/runtime-perf/src/index.css @@ -0,0 +1 @@ +@layer reset, base, tokens, recipes, utilities; diff --git a/sandbox/runtime-perf/src/main.tsx b/sandbox/runtime-perf/src/main.tsx new file mode 100644 index 000000000..964aeb4c7 --- /dev/null +++ b/sandbox/runtime-perf/src/main.tsx @@ -0,0 +1,10 @@ +import React from 'react' +import ReactDOM from 'react-dom/client' +import App from './App' +import './index.css' + +ReactDOM.createRoot(document.getElementById('root')!).render( + + + , +) diff --git a/sandbox/runtime-perf/tsconfig.json b/sandbox/runtime-perf/tsconfig.json new file mode 100644 index 000000000..94fa4aa84 --- /dev/null +++ b/sandbox/runtime-perf/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "target": "ESNext", + "useDefineForClassFields": true, + "lib": ["DOM", "DOM.Iterable", "ESNext"], + "allowJs": false, + "skipLibCheck": true, + "esModuleInterop": false, + "allowSyntheticDefaultImports": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + "moduleResolution": "Bundler", + "module": "ESNext", + "customConditions": ["source"] + }, + "include": ["src"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/sandbox/runtime-perf/tsconfig.node.json b/sandbox/runtime-perf/tsconfig.node.json new file mode 100644 index 000000000..9d31e2aed --- /dev/null +++ b/sandbox/runtime-perf/tsconfig.node.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "composite": true, + "module": "ESNext", + "moduleResolution": "Node", + "allowSyntheticDefaultImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/sandbox/runtime-perf/vite.config.ts b/sandbox/runtime-perf/vite.config.ts new file mode 100644 index 000000000..7efd4f1f9 --- /dev/null +++ b/sandbox/runtime-perf/vite.config.ts @@ -0,0 +1,15 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +const ANALYZE = !!process.env.ANALYZE + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react()], + build: { + sourcemap: ANALYZE, + }, + resolve: { + conditions: ['source'], + }, +})