Refine prompt (#63)

* Remove unused ScenarioVariantCell fields

* Refine deriveNewConstructFn

* Fix prettier

* Remove migration script

* Add refine modal

* Fix prettier

* Fix diff checker overflow

* Decrease diff height
This commit is contained in:
arcticfly
2023-07-19 15:31:40 -07:00
committed by GitHub
parent 58892d8b63
commit 4c97b9f147
10 changed files with 550 additions and 155 deletions

View File

@@ -60,7 +60,9 @@
"pluralize": "^8.0.0", "pluralize": "^8.0.0",
"posthog-js": "^1.68.4", "posthog-js": "^1.68.4",
"prettier": "^3.0.0", "prettier": "^3.0.0",
"prismjs": "^1.29.0",
"react": "18.2.0", "react": "18.2.0",
"react-diff-viewer": "^3.1.1",
"react-dom": "18.2.0", "react-dom": "18.2.0",
"react-icons": "^4.10.1", "react-icons": "^4.10.1",
"react-select": "^5.7.4", "react-select": "^5.7.4",
@@ -84,6 +86,7 @@
"@types/lodash-es": "^4.17.8", "@types/lodash-es": "^4.17.8",
"@types/node": "^18.16.0", "@types/node": "^18.16.0",
"@types/pluralize": "^0.0.30", "@types/pluralize": "^0.0.30",
"@types/prismjs": "^1.26.0",
"@types/react": "^18.2.6", "@types/react": "^18.2.6",
"@types/react-dom": "^18.2.4", "@types/react-dom": "^18.2.4",
"@types/react-syntax-highlighter": "^15.5.7", "@types/react-syntax-highlighter": "^15.5.7",

431
pnpm-lock.yaml generated
View File

@@ -1,4 +1,4 @@
lockfileVersion: '6.1' lockfileVersion: '6.0'
settings: settings:
autoInstallPeers: true autoInstallPeers: true
@@ -122,9 +122,15 @@ dependencies:
prettier: prettier:
specifier: ^3.0.0 specifier: ^3.0.0
version: 3.0.0 version: 3.0.0
prismjs:
specifier: ^1.29.0
version: 1.29.0
react: react:
specifier: 18.2.0 specifier: 18.2.0
version: 18.2.0 version: 18.2.0
react-diff-viewer:
specifier: ^3.1.1
version: 3.1.1(react-dom@18.2.0)(react@18.2.0)
react-dom: react-dom:
specifier: 18.2.0 specifier: 18.2.0
version: 18.2.0(react@18.2.0) version: 18.2.0(react@18.2.0)
@@ -190,6 +196,9 @@ devDependencies:
'@types/pluralize': '@types/pluralize':
specifier: ^0.0.30 specifier: ^0.0.30
version: 0.0.30 version: 0.0.30
'@types/prismjs':
specifier: ^1.26.0
version: 1.26.0
'@types/react': '@types/react':
specifier: ^18.2.6 specifier: ^18.2.6
version: 18.2.6 version: 18.2.6
@@ -225,7 +234,7 @@ devDependencies:
version: 4.14.0 version: 4.14.0
raw-loader: raw-loader:
specifier: ^4.0.2 specifier: ^4.0.2
version: 4.0.2(webpack@5.88.1) version: 4.0.2(webpack@5.88.2)
typescript: typescript:
specifier: ^5.0.4 specifier: ^5.0.4
version: 5.0.4 version: 5.0.4
@@ -1673,6 +1682,15 @@ packages:
stylis: 4.2.0 stylis: 4.2.0
dev: false dev: false
/@emotion/cache@10.0.29:
resolution: {integrity: sha512-fU2VtSVlHiF27empSbxi1O2JFdNWZO+2NFHfwO0pxgTep6Xa3uGb+3pVKfLww2l/IBGLNEZl5Xf/++A4wAYDYQ==}
dependencies:
'@emotion/sheet': 0.9.4
'@emotion/stylis': 0.8.5
'@emotion/utils': 0.11.3
'@emotion/weak-memoize': 0.2.5
dev: false
/@emotion/cache@11.11.0: /@emotion/cache@11.11.0:
resolution: {integrity: sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==} resolution: {integrity: sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==}
dependencies: dependencies:
@@ -1683,6 +1701,10 @@ packages:
stylis: 4.2.0 stylis: 4.2.0
dev: false dev: false
/@emotion/hash@0.8.0:
resolution: {integrity: sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow==}
dev: false
/@emotion/hash@0.9.1: /@emotion/hash@0.9.1:
resolution: {integrity: sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==} resolution: {integrity: sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==}
dev: false dev: false
@@ -1704,7 +1726,6 @@ packages:
/@emotion/memoize@0.7.4: /@emotion/memoize@0.7.4:
resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==} resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==}
dev: false dev: false
optional: true
/@emotion/memoize@0.8.1: /@emotion/memoize@0.8.1:
resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==} resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==}
@@ -1731,6 +1752,16 @@ packages:
react: 18.2.0 react: 18.2.0
dev: false dev: false
/@emotion/serialize@0.11.16:
resolution: {integrity: sha512-G3J4o8by0VRrO+PFeSc3js2myYNOXVJ3Ya+RGVxnshRYgsvErfAOglKAiy1Eo1vhzxqtUvjCyS5gtewzkmvSSg==}
dependencies:
'@emotion/hash': 0.8.0
'@emotion/memoize': 0.7.4
'@emotion/unitless': 0.7.5
'@emotion/utils': 0.11.3
csstype: 2.6.21
dev: false
/@emotion/serialize@1.1.2: /@emotion/serialize@1.1.2:
resolution: {integrity: sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA==} resolution: {integrity: sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA==}
dependencies: dependencies:
@@ -1755,6 +1786,10 @@ packages:
through: 2.3.8 through: 2.3.8
dev: false dev: false
/@emotion/sheet@0.9.4:
resolution: {integrity: sha512-zM9PFmgVSqBw4zL101Q0HrBVTGmpAxFZH/pYx/cjJT5advXguvcgjHFTCaIO3enL/xr89vK2bh0Mfyj9aa0ANA==}
dev: false
/@emotion/sheet@1.2.2: /@emotion/sheet@1.2.2:
resolution: {integrity: sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==} resolution: {integrity: sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==}
dev: false dev: false
@@ -1780,6 +1815,14 @@ packages:
react: 18.2.0 react: 18.2.0
dev: false dev: false
/@emotion/stylis@0.8.5:
resolution: {integrity: sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==}
dev: false
/@emotion/unitless@0.7.5:
resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==}
dev: false
/@emotion/unitless@0.8.1: /@emotion/unitless@0.8.1:
resolution: {integrity: sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==} resolution: {integrity: sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==}
dev: false dev: false
@@ -1792,10 +1835,18 @@ packages:
react: 18.2.0 react: 18.2.0
dev: false dev: false
/@emotion/utils@0.11.3:
resolution: {integrity: sha512-0o4l6pZC+hI88+bzuaX/6BgOvQVhbt2PfmxauVaYOGgbsAw14wdKyvMCZXnsnsHys94iadcF+RG/wZyx6+ZZBw==}
dev: false
/@emotion/utils@1.2.1: /@emotion/utils@1.2.1:
resolution: {integrity: sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==} resolution: {integrity: sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==}
dev: false dev: false
/@emotion/weak-memoize@0.2.5:
resolution: {integrity: sha512-6U71C2Wp7r5XtFtQzYrW5iKFT67OixrSxjI4MptCHzdSVlgabczzqLe0ZSgnub/5Kp4hSbpDB1tMytZY9pwxxA==}
dev: false
/@emotion/weak-memoize@0.3.1: /@emotion/weak-memoize@0.3.1:
resolution: {integrity: sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==} resolution: {integrity: sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==}
dev: false dev: false
@@ -1830,8 +1881,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@esbuild/android-arm64@0.18.12: /@esbuild/android-arm64@0.18.14:
resolution: {integrity: sha512-BMAlczRqC/LUt2P97E4apTBbkvS9JTJnp2DKFbCwpZ8vBvXVbNdqmvzW/OsdtI/+mGr+apkkpqGM8WecLkPgrA==} resolution: {integrity: sha512-rZ2v+Luba5/3D6l8kofWgTnqE+qsC/L5MleKIKFyllHTKHrNBMqeRCnZI1BtRx8B24xMYxeU32iIddRQqMsOsg==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [arm64] cpu: [arm64]
os: [android] os: [android]
@@ -1848,8 +1899,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@esbuild/android-arm@0.18.12: /@esbuild/android-arm@0.18.14:
resolution: {integrity: sha512-LIxaNIQfkFZbTLb4+cX7dozHlAbAshhFE5PKdro0l+FnCpx1GDJaQ2WMcqm+ToXKMt8p8Uojk/MFRuGyz3V5Sw==} resolution: {integrity: sha512-blODaaL+lngG5bdK/t4qZcQvq2BBqrABmYwqPPcS5VRxrCSGHb9R/rA3fqxh7R18I7WU4KKv+NYkt22FDfalcg==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [arm] cpu: [arm]
os: [android] os: [android]
@@ -1866,8 +1917,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@esbuild/android-x64@0.18.12: /@esbuild/android-x64@0.18.14:
resolution: {integrity: sha512-zU5MyluNsykf5cOJ0LZZZjgAHbhPJ1cWfdH1ZXVMXxVMhEV0VZiZXQdwBBVvmvbF28EizeK7obG9fs+fpmS0eQ==} resolution: {integrity: sha512-qSwh8y38QKl+1Iqg+YhvCVYlSk3dVLk9N88VO71U4FUjtiSFylMWK3Ugr8GC6eTkkP4Tc83dVppt2n8vIdlSGg==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [x64] cpu: [x64]
os: [android] os: [android]
@@ -1884,8 +1935,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@esbuild/darwin-arm64@0.18.12: /@esbuild/darwin-arm64@0.18.14:
resolution: {integrity: sha512-zUZMep7YONnp6954QOOwEBwFX9svlKd3ov6PkxKd53LGTHsp/gy7vHaPGhhjBmEpqXEXShi6dddjIkmd+NgMsA==} resolution: {integrity: sha512-9Hl2D2PBeDYZiNbnRKRWuxwHa9v5ssWBBjisXFkVcSP5cZqzZRFBUWEQuqBHO4+PKx4q4wgHoWtfQ1S7rUqJ2Q==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [arm64] cpu: [arm64]
os: [darwin] os: [darwin]
@@ -1902,8 +1953,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@esbuild/darwin-x64@0.18.12: /@esbuild/darwin-x64@0.18.14:
resolution: {integrity: sha512-ohqLPc7i67yunArPj1+/FeeJ7AgwAjHqKZ512ADk3WsE3FHU9l+m5aa7NdxXr0HmN1bjDlUslBjWNbFlD9y12Q==} resolution: {integrity: sha512-ZnI3Dg4ElQ6tlv82qLc/UNHtFsgZSKZ7KjsUNAo1BF1SoYDjkGKHJyCrYyWjFecmXpvvG/KJ9A/oe0H12odPLQ==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [x64] cpu: [x64]
os: [darwin] os: [darwin]
@@ -1920,8 +1971,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@esbuild/freebsd-arm64@0.18.12: /@esbuild/freebsd-arm64@0.18.14:
resolution: {integrity: sha512-GIIHtQXqgeOOqdG16a/A9N28GpkvjJnjYMhOnXVbn3EDJcoItdR58v/pGN31CHjyXDc8uCcRnFWmqaJt24AYJg==} resolution: {integrity: sha512-h3OqR80Da4oQCIa37zl8tU5MwHQ7qgPV0oVScPfKJK21fSRZEhLE4IIVpmcOxfAVmqjU6NDxcxhYaM8aDIGRLw==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [arm64] cpu: [arm64]
os: [freebsd] os: [freebsd]
@@ -1938,8 +1989,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@esbuild/freebsd-x64@0.18.12: /@esbuild/freebsd-x64@0.18.14:
resolution: {integrity: sha512-zK0b9a1/0wZY+6FdOS3BpZcPc1kcx2G5yxxfEJtEUzVxI6n/FrC2Phsxj/YblPuBchhBZ/1wwn7AyEBUyNSa6g==} resolution: {integrity: sha512-ha4BX+S6CZG4BoH9tOZTrFIYC1DH13UTCRHzFc3GWX74nz3h/N6MPF3tuR3XlsNjMFUazGgm35MPW5tHkn2lzQ==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [x64] cpu: [x64]
os: [freebsd] os: [freebsd]
@@ -1956,8 +2007,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@esbuild/linux-arm64@0.18.12: /@esbuild/linux-arm64@0.18.14:
resolution: {integrity: sha512-JKgG8Q/LL/9sw/iHHxQyVMoQYu3rU3+a5Z87DxC+wAu3engz+EmctIrV+FGOgI6gWG1z1+5nDDbXiRMGQZXqiw==} resolution: {integrity: sha512-IXORRe22In7U65NZCzjwAUc03nn8SDIzWCnfzJ6t/8AvGx5zBkcLfknI+0P+hhuftufJBmIXxdSTbzWc8X/V4w==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
@@ -1974,8 +2025,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@esbuild/linux-arm@0.18.12: /@esbuild/linux-arm@0.18.14:
resolution: {integrity: sha512-y75OijvrBE/1XRrXq1jtrJfG26eHeMoqLJ2dwQNwviwTuTtHGCojsDO6BJNF8gU+3jTn1KzJEMETytwsFSvc+Q==} resolution: {integrity: sha512-5+7vehI1iqru5WRtJyU2XvTOvTGURw3OZxe3YTdE9muNNIdmKAVmSHpB3Vw2LazJk2ifEdIMt/wTWnVe5V98Kg==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [arm] cpu: [arm]
os: [linux] os: [linux]
@@ -1992,8 +2043,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@esbuild/linux-ia32@0.18.12: /@esbuild/linux-ia32@0.18.14:
resolution: {integrity: sha512-yoRIAqc0B4lDIAAEFEIu9ttTRFV84iuAl0KNCN6MhKLxNPfzwCBvEMgwco2f71GxmpBcTtn7KdErueZaM2rEvw==} resolution: {integrity: sha512-BfHlMa0nibwpjG+VXbOoqJDmFde4UK2gnW351SQ2Zd4t1N3zNdmUEqRkw/srC1Sa1DRBE88Dbwg4JgWCbNz/FQ==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [ia32] cpu: [ia32]
os: [linux] os: [linux]
@@ -2010,8 +2061,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@esbuild/linux-loong64@0.18.12: /@esbuild/linux-loong64@0.18.14:
resolution: {integrity: sha512-qYgt3dHPVvf/MgbIBpJ4Sup/yb9DAopZ3a2JgMpNKIHUpOdnJ2eHBo/aQdnd8dJ21X/+sS58wxHtA9lEazYtXQ==} resolution: {integrity: sha512-j2/Ex++DRUWIAaUDprXd3JevzGtZ4/d7VKz+AYDoHZ3HjJzCyYBub9CU1wwIXN+viOP0b4VR3RhGClsvyt/xSw==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [loong64] cpu: [loong64]
os: [linux] os: [linux]
@@ -2028,8 +2079,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@esbuild/linux-mips64el@0.18.12: /@esbuild/linux-mips64el@0.18.14:
resolution: {integrity: sha512-wHphlMLK4ufNOONqukELfVIbnGQJrHJ/mxZMMrP2jYrPgCRZhOtf0kC4yAXBwnfmULimV1qt5UJJOw4Kh13Yfg==} resolution: {integrity: sha512-qn2+nc+ZCrJmiicoAnJXJJkZWt8Nwswgu1crY7N+PBR8ChBHh89XRxj38UU6Dkthl2yCVO9jWuafZ24muzDC/A==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [mips64el] cpu: [mips64el]
os: [linux] os: [linux]
@@ -2046,8 +2097,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@esbuild/linux-ppc64@0.18.12: /@esbuild/linux-ppc64@0.18.14:
resolution: {integrity: sha512-TeN//1Ft20ZZW41+zDSdOI/Os1bEq5dbvBvYkberB7PHABbRcsteeoNVZFlI0YLpGdlBqohEpjrn06kv8heCJg==} resolution: {integrity: sha512-aGzXzd+djqeEC5IRkDKt3kWzvXoXC6K6GyYKxd+wsFJ2VQYnOWE954qV2tvy5/aaNrmgPTb52cSCHFE+Z7Z0yg==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [ppc64] cpu: [ppc64]
os: [linux] os: [linux]
@@ -2064,8 +2115,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@esbuild/linux-riscv64@0.18.12: /@esbuild/linux-riscv64@0.18.14:
resolution: {integrity: sha512-AgUebVS4DoAblBgiB2ACQ/8l4eGE5aWBb8ZXtkXHiET9mbj7GuWt3OnsIW/zX+XHJt2RYJZctbQ2S/mDjbp0UA==} resolution: {integrity: sha512-8C6vWbfr0ygbAiMFLS6OPz0BHvApkT2gCboOGV76YrYw+sD/MQJzyITNsjZWDXJwPu9tjrFQOVG7zijRzBCnLw==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [riscv64] cpu: [riscv64]
os: [linux] os: [linux]
@@ -2082,8 +2133,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@esbuild/linux-s390x@0.18.12: /@esbuild/linux-s390x@0.18.14:
resolution: {integrity: sha512-dJ3Rb3Ei2u/ysSXd6pzleGtfDdc2MuzKt8qc6ls8vreP1G3B7HInX3i7gXS4BGeVd24pp0yqyS7bJ5NHaI9ing==} resolution: {integrity: sha512-G/Lf9iu8sRMM60OVGOh94ZW2nIStksEcITkXdkD09/T6QFD/o+g0+9WVyR/jajIb3A0LvBJ670tBnGe1GgXMgw==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [s390x] cpu: [s390x]
os: [linux] os: [linux]
@@ -2100,8 +2151,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@esbuild/linux-x64@0.18.12: /@esbuild/linux-x64@0.18.14:
resolution: {integrity: sha512-OrNJMGQbPaVyHHcDF8ybNSwu7TDOfX8NGpXCbetwOSP6txOJiWlgQnRymfC9ocR1S0Y5PW0Wb1mV6pUddqmvmQ==} resolution: {integrity: sha512-TBgStYBQaa3EGhgqIDM+ECnkreb0wkcKqL7H6m+XPcGUoU4dO7dqewfbm0mWEQYH3kzFHrzjOFNpSAVzDZRSJw==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
@@ -2118,8 +2169,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@esbuild/netbsd-x64@0.18.12: /@esbuild/netbsd-x64@0.18.14:
resolution: {integrity: sha512-55FzVCAiwE9FK8wWeCRuvjazNRJ1QqLCYGZVB6E8RuQuTeStSwotpSW4xoRGwp3a1wUsaVCdYcj5LGCASVJmMg==} resolution: {integrity: sha512-stvCcjyCQR2lMTroqNhAbvROqRjxPEq0oQ380YdXxA81TaRJEucH/PzJ/qsEtsHgXlWFW6Ryr/X15vxQiyRXVg==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [x64] cpu: [x64]
os: [netbsd] os: [netbsd]
@@ -2136,8 +2187,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@esbuild/openbsd-x64@0.18.12: /@esbuild/openbsd-x64@0.18.14:
resolution: {integrity: sha512-qnluf8rfb6Y5Lw2tirfK2quZOBbVqmwxut7GPCIJsM8lc4AEUj9L8y0YPdLaPK0TECt4IdyBdBD/KRFKorlK3g==} resolution: {integrity: sha512-apAOJF14CIsN5ht1PA57PboEMsNV70j3FUdxLmA2liZ20gEQnfTG5QU0FhENo5nwbTqCB2O3WDsXAihfODjHYw==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [x64] cpu: [x64]
os: [openbsd] os: [openbsd]
@@ -2154,8 +2205,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@esbuild/sunos-x64@0.18.12: /@esbuild/sunos-x64@0.18.14:
resolution: {integrity: sha512-+RkKpVQR7bICjTOPUpkTBTaJ4TFqQBX5Ywyd/HSdDkQGn65VPkTsR/pL4AMvuMWy+wnXgIl4EY6q4mVpJal8Kg==} resolution: {integrity: sha512-fYRaaS8mDgZcGybPn2MQbn1ZNZx+UXFSUoS5Hd2oEnlsyUcr/l3c6RnXf1bLDRKKdLRSabTmyCy7VLQ7VhGdOQ==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [x64] cpu: [x64]
os: [sunos] os: [sunos]
@@ -2172,8 +2223,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@esbuild/win32-arm64@0.18.12: /@esbuild/win32-arm64@0.18.14:
resolution: {integrity: sha512-GNHuciv0mFM7ouzsU0+AwY+7eV4Mgo5WnbhfDCQGtpvOtD1vbOiRjPYG6dhmMoFyBjj+pNqQu2X+7DKn0KQ/Gw==} resolution: {integrity: sha512-1c44RcxKEJPrVj62XdmYhxXaU/V7auELCmnD+Ri+UCt+AGxTvzxl9uauQhrFso8gj6ZV1DaORV0sT9XSHOAk8Q==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [arm64] cpu: [arm64]
os: [win32] os: [win32]
@@ -2190,8 +2241,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@esbuild/win32-ia32@0.18.12: /@esbuild/win32-ia32@0.18.14:
resolution: {integrity: sha512-kR8cezhYipbbypGkaqCTWIeu4zID17gamC8YTPXYtcN3E5BhhtTnwKBn9I0PJur/T6UVwIEGYzkffNL0lFvxEw==} resolution: {integrity: sha512-EXAFttrdAxZkFQmpvcAQ2bywlWUsONp/9c2lcfvPUhu8vXBBenCXpoq9YkUvVP639ld3YGiYx0YUQ6/VQz3Maw==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [ia32] cpu: [ia32]
os: [win32] os: [win32]
@@ -2208,8 +2259,8 @@ packages:
dev: false dev: false
optional: true optional: true
/@esbuild/win32-x64@0.18.12: /@esbuild/win32-x64@0.18.14:
resolution: {integrity: sha512-O0UYQVkvfM/jO8a4OwoV0mAKSJw+mjWTAd1MJd/1FCX6uiMdLmMRPK/w6e9OQ0ob2WGxzIm9va/KG0Ja4zIOgg==} resolution: {integrity: sha512-K0QjGbcskx+gY+qp3v4/940qg8JitpXbdxFhRDA1aYoNaPff88+aEwoq45aqJ+ogpxQxmU0ZTjgnrQD/w8iiUg==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [x64] cpu: [x64]
os: [win32] os: [win32]
@@ -2830,6 +2881,10 @@ packages:
resolution: {integrity: sha512-kVww6xZrW/db5BR9OqiT71J9huRdQ+z/r+LbDuT7/EK50mCmj5FoaIARnVv0rvjUS/YpDox0cDU9lpQT011VBA==} resolution: {integrity: sha512-kVww6xZrW/db5BR9OqiT71J9huRdQ+z/r+LbDuT7/EK50mCmj5FoaIARnVv0rvjUS/YpDox0cDU9lpQT011VBA==}
dev: true dev: true
/@types/prismjs@1.26.0:
resolution: {integrity: sha512-ZTaqn/qSqUuAq1YwvOFQfVW1AR/oQJlLSZVustdjwI+GZ8kr0MSHBj0tsXPW1EqHubx50gtBEjbPGsdZwQwCjQ==}
dev: true
/@types/prop-types@15.7.5: /@types/prop-types@15.7.5:
resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==}
@@ -3319,7 +3374,7 @@ packages:
dependencies: dependencies:
call-bind: 1.0.2 call-bind: 1.0.2
define-properties: 1.2.0 define-properties: 1.2.0
es-abstract: 1.21.3 es-abstract: 1.22.1
get-intrinsic: 1.2.1 get-intrinsic: 1.2.1
is-string: 1.0.7 is-string: 1.0.7
dev: true dev: true
@@ -3335,7 +3390,7 @@ packages:
dependencies: dependencies:
call-bind: 1.0.2 call-bind: 1.0.2
define-properties: 1.2.0 define-properties: 1.2.0
es-abstract: 1.21.3 es-abstract: 1.22.1
es-shim-unscopables: 1.0.0 es-shim-unscopables: 1.0.0
dev: true dev: true
@@ -3345,7 +3400,7 @@ packages:
dependencies: dependencies:
call-bind: 1.0.2 call-bind: 1.0.2
define-properties: 1.2.0 define-properties: 1.2.0
es-abstract: 1.21.3 es-abstract: 1.22.1
es-shim-unscopables: 1.0.0 es-shim-unscopables: 1.0.0
dev: true dev: true
@@ -3354,11 +3409,23 @@ packages:
dependencies: dependencies:
call-bind: 1.0.2 call-bind: 1.0.2
define-properties: 1.2.0 define-properties: 1.2.0
es-abstract: 1.21.3 es-abstract: 1.22.1
es-shim-unscopables: 1.0.0 es-shim-unscopables: 1.0.0
get-intrinsic: 1.2.1 get-intrinsic: 1.2.1
dev: true dev: true
/arraybuffer.prototype.slice@1.0.1:
resolution: {integrity: sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==}
engines: {node: '>= 0.4'}
dependencies:
array-buffer-byte-length: 1.0.0
call-bind: 1.0.2
define-properties: 1.2.0
get-intrinsic: 1.2.1
is-array-buffer: 3.0.2
is-shared-array-buffer: 1.0.2
dev: true
/assertion-error@1.1.0: /assertion-error@1.1.0:
resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==}
dev: true dev: true
@@ -3387,6 +3454,29 @@ packages:
dequal: 2.0.3 dequal: 2.0.3
dev: true dev: true
/babel-plugin-emotion@10.2.2:
resolution: {integrity: sha512-SMSkGoqTbTyUTDeuVuPIWifPdUGkTk1Kf9BWRiXIOIcuyMfsdp2EjeiiFvOzX8NOBvEh/ypKYvUh2rkgAJMCLA==}
dependencies:
'@babel/helper-module-imports': 7.22.5
'@emotion/hash': 0.8.0
'@emotion/memoize': 0.7.4
'@emotion/serialize': 0.11.16
babel-plugin-macros: 2.8.0
babel-plugin-syntax-jsx: 6.18.0
convert-source-map: 1.9.0
escape-string-regexp: 1.0.5
find-root: 1.1.0
source-map: 0.5.7
dev: false
/babel-plugin-macros@2.8.0:
resolution: {integrity: sha512-SEP5kJpfGYqYKpBrj5XU3ahw5p5GOHJ0U5ssOSQ/WBVdwkD2Dzlce95exQTs3jOVWPPKLBN2rlEWkCK7dSmLvg==}
dependencies:
'@babel/runtime': 7.22.6
cosmiconfig: 6.0.0
resolve: 1.22.2
dev: false
/babel-plugin-macros@3.1.0: /babel-plugin-macros@3.1.0:
resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==} resolution: {integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==}
engines: {node: '>=10', npm: '>=6'} engines: {node: '>=10', npm: '>=6'}
@@ -3396,6 +3486,10 @@ packages:
resolve: 1.22.2 resolve: 1.22.2
dev: false dev: false
/babel-plugin-syntax-jsx@6.18.0:
resolution: {integrity: sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==}
dev: false
/balanced-match@1.0.2: /balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
dev: true dev: true
@@ -3472,8 +3566,8 @@ packages:
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true hasBin: true
dependencies: dependencies:
caniuse-lite: 1.0.30001515 caniuse-lite: 1.0.30001517
electron-to-chromium: 1.4.461 electron-to-chromium: 1.4.465
node-releases: 2.0.13 node-releases: 2.0.13
update-browserslist-db: 1.0.11(browserslist@4.21.9) update-browserslist-db: 1.0.11(browserslist@4.21.9)
@@ -3522,8 +3616,8 @@ packages:
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
engines: {node: '>=6'} engines: {node: '>=6'}
/caniuse-lite@1.0.30001515: /caniuse-lite@1.0.30001517:
resolution: {integrity: sha512-eEFDwUOZbE24sb+Ecsx3+OvNETqjWIdabMy52oOkIgcUtAsQifjUG9q4U9dgTHJM2mfk4uEPxc0+xuFdJ629QA==} resolution: {integrity: sha512-Vdhm5S11DaFVLlyiKu4hiUTkpZu+y1KA/rZZqVQfOD5YdDT/eQKlkt7NaE0WGOFgX32diqt9MiP9CAiFeRklaA==}
/chai@4.3.7: /chai@4.3.7:
resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==} resolution: {integrity: sha512-HLnAzZ2iupm25PlN0xFreAlBA5zaBSv3og0DdeGA4Ar6h6rJ3A0rolRUKJhSF2V10GZKDgWF/VmAEsNWjCRB+A==}
@@ -3597,6 +3691,10 @@ packages:
engines: {node: '>=6.0'} engines: {node: '>=6.0'}
dev: true dev: true
/classnames@2.3.2:
resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==}
dev: false
/client-only@0.0.1: /client-only@0.0.1:
resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==} resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==}
dev: false dev: false
@@ -3732,6 +3830,17 @@ packages:
vary: 1.1.2 vary: 1.1.2
dev: false dev: false
/cosmiconfig@6.0.0:
resolution: {integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==}
engines: {node: '>=8'}
dependencies:
'@types/parse-json': 4.0.0
import-fresh: 3.3.0
parse-json: 5.2.0
path-type: 4.0.0
yaml: 1.10.2
dev: false
/cosmiconfig@7.1.0: /cosmiconfig@7.1.0:
resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==}
engines: {node: '>=10'} engines: {node: '>=10'}
@@ -3743,6 +3852,15 @@ packages:
yaml: 1.10.2 yaml: 1.10.2
dev: false dev: false
/create-emotion@10.0.27:
resolution: {integrity: sha512-fIK73w82HPPn/RsAij7+Zt8eCE8SptcJ3WoRMfxMtjteYxud8GDTKKld7MYwAX2TVhrw29uR1N/bVGxeStHILg==}
dependencies:
'@emotion/cache': 10.0.29
'@emotion/serialize': 0.11.16
'@emotion/sheet': 0.9.4
'@emotion/utils': 0.11.3
dev: false
/cross-spawn@7.0.3: /cross-spawn@7.0.3:
resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
engines: {node: '>= 8'} engines: {node: '>= 8'}
@@ -3762,6 +3880,10 @@ packages:
tiny-invariant: 1.3.1 tiny-invariant: 1.3.1
dev: false dev: false
/csstype@2.6.21:
resolution: {integrity: sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==}
dev: false
/csstype@3.1.2: /csstype@3.1.2:
resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==}
@@ -3894,6 +4016,11 @@ packages:
engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0}
dev: true dev: true
/diff@4.0.2:
resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==}
engines: {node: '>=0.3.1'}
dev: false
/digest-fetch@1.3.0: /digest-fetch@1.3.0:
resolution: {integrity: sha512-CGJuv6iKNM7QyZlM2T3sPAdZWd/p9zQiRNS9G+9COUCwzWFTs0Xp8NF5iePx7wtvhDykReiRRrSeNb4oMmB8lA==} resolution: {integrity: sha512-CGJuv6iKNM7QyZlM2T3sPAdZWd/p9zQiRNS9G+9COUCwzWFTs0Xp8NF5iePx7wtvhDykReiRRrSeNb4oMmB8lA==}
dependencies: dependencies:
@@ -3944,8 +4071,8 @@ packages:
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
dev: false dev: false
/electron-to-chromium@1.4.461: /electron-to-chromium@1.4.465:
resolution: {integrity: sha512-1JkvV2sgEGTDXjdsaQCeSwYYuhLRphRpc+g6EHTFELJXEiznLt3/0pZ9JuAOQ5p2rI3YxKTbivtvajirIfhrEQ==} resolution: {integrity: sha512-XQcuHvEJRMU97UJ75e170mgcITZoz0lIyiaVjk6R+NMTJ8KBIvUHYd1779swgOppUlzxR+JsLpq59PumaXS1jQ==}
/emoji-regex@8.0.0: /emoji-regex@8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
@@ -3960,6 +4087,13 @@ packages:
engines: {node: '>= 4'} engines: {node: '>= 4'}
dev: true dev: true
/emotion@10.0.27:
resolution: {integrity: sha512-2xdDzdWWzue8R8lu4G76uWX5WhyQuzATon9LmNeCy/2BHVC6dsEpfhN1a0qhELgtDVdjyEA6J8Y/VlI5ZnaH0g==}
dependencies:
babel-plugin-emotion: 10.2.2
create-emotion: 10.0.27
dev: false
/encodeurl@1.0.2: /encodeurl@1.0.2:
resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==} resolution: {integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==}
engines: {node: '>= 0.8'} engines: {node: '>= 0.8'}
@@ -4018,11 +4152,12 @@ packages:
is-arrayish: 0.2.1 is-arrayish: 0.2.1
dev: false dev: false
/es-abstract@1.21.3: /es-abstract@1.22.1:
resolution: {integrity: sha512-ZU4miiY1j3sGPFLJ34VJXEqhpmL+HGByCinGHv4HC+Fxl2fI2Z4yR6tl0mORnDr6PA8eihWo4LmSWDbvhALckg==} resolution: {integrity: sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==}
engines: {node: '>= 0.4'} engines: {node: '>= 0.4'}
dependencies: dependencies:
array-buffer-byte-length: 1.0.0 array-buffer-byte-length: 1.0.0
arraybuffer.prototype.slice: 1.0.1
available-typed-arrays: 1.0.5 available-typed-arrays: 1.0.5
call-bind: 1.0.2 call-bind: 1.0.2
es-set-tostringtag: 2.0.1 es-set-tostringtag: 2.0.1
@@ -4043,20 +4178,23 @@ packages:
is-regex: 1.1.4 is-regex: 1.1.4
is-shared-array-buffer: 1.0.2 is-shared-array-buffer: 1.0.2
is-string: 1.0.7 is-string: 1.0.7
is-typed-array: 1.1.10 is-typed-array: 1.1.12
is-weakref: 1.0.2 is-weakref: 1.0.2
object-inspect: 1.12.3 object-inspect: 1.12.3
object-keys: 1.1.1 object-keys: 1.1.1
object.assign: 4.1.4 object.assign: 4.1.4
regexp.prototype.flags: 1.5.0 regexp.prototype.flags: 1.5.0
safe-array-concat: 1.0.0
safe-regex-test: 1.0.0 safe-regex-test: 1.0.0
string.prototype.trim: 1.2.7 string.prototype.trim: 1.2.7
string.prototype.trimend: 1.0.6 string.prototype.trimend: 1.0.6
string.prototype.trimstart: 1.0.6 string.prototype.trimstart: 1.0.6
typed-array-buffer: 1.0.0
typed-array-byte-length: 1.0.0
typed-array-byte-offset: 1.0.0 typed-array-byte-offset: 1.0.0
typed-array-length: 1.0.4 typed-array-length: 1.0.4
unbox-primitive: 1.0.2 unbox-primitive: 1.0.2
which-typed-array: 1.1.10 which-typed-array: 1.1.11
dev: true dev: true
/es-module-lexer@1.3.0: /es-module-lexer@1.3.0:
@@ -4117,34 +4255,34 @@ packages:
'@esbuild/win32-x64': 0.17.19 '@esbuild/win32-x64': 0.17.19
dev: false dev: false
/esbuild@0.18.12: /esbuild@0.18.14:
resolution: {integrity: sha512-XuOVLDdtsDslXStStduT41op21Ytmf4/BDS46aa3xPJ7X5h2eMWBF1oAe3QjUH3bDksocNXgzGUZ7XHIBya6Tg==} resolution: {integrity: sha512-uNPj5oHPYmj+ZhSQeYQVFZ+hAlJZbAGOmmILWIqrGvPVlNLbyOvU5Bu6Woi8G8nskcx0vwY0iFoMPrzT86Ko+w==}
engines: {node: '>=12'} engines: {node: '>=12'}
hasBin: true hasBin: true
requiresBuild: true requiresBuild: true
optionalDependencies: optionalDependencies:
'@esbuild/android-arm': 0.18.12 '@esbuild/android-arm': 0.18.14
'@esbuild/android-arm64': 0.18.12 '@esbuild/android-arm64': 0.18.14
'@esbuild/android-x64': 0.18.12 '@esbuild/android-x64': 0.18.14
'@esbuild/darwin-arm64': 0.18.12 '@esbuild/darwin-arm64': 0.18.14
'@esbuild/darwin-x64': 0.18.12 '@esbuild/darwin-x64': 0.18.14
'@esbuild/freebsd-arm64': 0.18.12 '@esbuild/freebsd-arm64': 0.18.14
'@esbuild/freebsd-x64': 0.18.12 '@esbuild/freebsd-x64': 0.18.14
'@esbuild/linux-arm': 0.18.12 '@esbuild/linux-arm': 0.18.14
'@esbuild/linux-arm64': 0.18.12 '@esbuild/linux-arm64': 0.18.14
'@esbuild/linux-ia32': 0.18.12 '@esbuild/linux-ia32': 0.18.14
'@esbuild/linux-loong64': 0.18.12 '@esbuild/linux-loong64': 0.18.14
'@esbuild/linux-mips64el': 0.18.12 '@esbuild/linux-mips64el': 0.18.14
'@esbuild/linux-ppc64': 0.18.12 '@esbuild/linux-ppc64': 0.18.14
'@esbuild/linux-riscv64': 0.18.12 '@esbuild/linux-riscv64': 0.18.14
'@esbuild/linux-s390x': 0.18.12 '@esbuild/linux-s390x': 0.18.14
'@esbuild/linux-x64': 0.18.12 '@esbuild/linux-x64': 0.18.14
'@esbuild/netbsd-x64': 0.18.12 '@esbuild/netbsd-x64': 0.18.14
'@esbuild/openbsd-x64': 0.18.12 '@esbuild/openbsd-x64': 0.18.14
'@esbuild/sunos-x64': 0.18.12 '@esbuild/sunos-x64': 0.18.14
'@esbuild/win32-arm64': 0.18.12 '@esbuild/win32-arm64': 0.18.14
'@esbuild/win32-ia32': 0.18.12 '@esbuild/win32-ia32': 0.18.14
'@esbuild/win32-x64': 0.18.12 '@esbuild/win32-x64': 0.18.14
dev: true dev: true
/escalade@3.1.1: /escalade@3.1.1:
@@ -4739,7 +4877,7 @@ packages:
dependencies: dependencies:
call-bind: 1.0.2 call-bind: 1.0.2
define-properties: 1.2.0 define-properties: 1.2.0
es-abstract: 1.21.3 es-abstract: 1.22.1
functions-have-names: 1.2.3 functions-have-names: 1.2.3
dev: true dev: true
@@ -5093,7 +5231,7 @@ packages:
dependencies: dependencies:
call-bind: 1.0.2 call-bind: 1.0.2
get-intrinsic: 1.2.1 get-intrinsic: 1.2.1
is-typed-array: 1.1.10 is-typed-array: 1.1.12
dev: true dev: true
/is-arrayish@0.2.1: /is-arrayish@0.2.1:
@@ -5244,15 +5382,11 @@ packages:
has-symbols: 1.0.3 has-symbols: 1.0.3
dev: true dev: true
/is-typed-array@1.1.10: /is-typed-array@1.1.12:
resolution: {integrity: sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==} resolution: {integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==}
engines: {node: '>= 0.4'} engines: {node: '>= 0.4'}
dependencies: dependencies:
available-typed-arrays: 1.0.5 which-typed-array: 1.1.11
call-bind: 1.0.2
for-each: 0.3.3
gopd: 1.0.1
has-tostringtag: 1.0.0
dev: true dev: true
/is-weakref@1.0.2: /is-weakref@1.0.2:
@@ -5281,6 +5415,10 @@ packages:
resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
dev: false dev: false
/isarray@2.0.5:
resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==}
dev: true
/isexe@2.0.0: /isexe@2.0.0:
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
dev: true dev: true
@@ -5484,6 +5622,10 @@ packages:
engines: {node: '>= 0.6'} engines: {node: '>= 0.6'}
dev: false dev: false
/memoize-one@5.2.1:
resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==}
dev: false
/memoize-one@6.0.0: /memoize-one@6.0.0:
resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==} resolution: {integrity: sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==}
dev: false dev: false
@@ -5655,7 +5797,7 @@ packages:
'@next/env': 13.4.2 '@next/env': 13.4.2
'@swc/helpers': 0.5.1 '@swc/helpers': 0.5.1
busboy: 1.6.0 busboy: 1.6.0
caniuse-lite: 1.0.30001515 caniuse-lite: 1.0.30001517
postcss: 8.4.14 postcss: 8.4.14
react: 18.2.0 react: 18.2.0
react-dom: 18.2.0(react@18.2.0) react-dom: 18.2.0(react@18.2.0)
@@ -5766,7 +5908,7 @@ packages:
dependencies: dependencies:
call-bind: 1.0.2 call-bind: 1.0.2
define-properties: 1.2.0 define-properties: 1.2.0
es-abstract: 1.21.3 es-abstract: 1.22.1
dev: true dev: true
/object.fromentries@2.0.6: /object.fromentries@2.0.6:
@@ -5775,14 +5917,14 @@ packages:
dependencies: dependencies:
call-bind: 1.0.2 call-bind: 1.0.2
define-properties: 1.2.0 define-properties: 1.2.0
es-abstract: 1.21.3 es-abstract: 1.22.1
dev: true dev: true
/object.hasown@1.1.2: /object.hasown@1.1.2:
resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==} resolution: {integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==}
dependencies: dependencies:
define-properties: 1.2.0 define-properties: 1.2.0
es-abstract: 1.21.3 es-abstract: 1.22.1
dev: true dev: true
/object.values@1.1.6: /object.values@1.1.6:
@@ -5791,7 +5933,7 @@ packages:
dependencies: dependencies:
call-bind: 1.0.2 call-bind: 1.0.2
define-properties: 1.2.0 define-properties: 1.2.0
es-abstract: 1.21.3 es-abstract: 1.22.1
dev: true dev: true
/obuf@1.1.2: /obuf@1.1.2:
@@ -6304,7 +6446,7 @@ packages:
unpipe: 1.0.0 unpipe: 1.0.0
dev: false dev: false
/raw-loader@4.0.2(webpack@5.88.1): /raw-loader@4.0.2(webpack@5.88.2):
resolution: {integrity: sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==} resolution: {integrity: sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==}
engines: {node: '>= 10.13.0'} engines: {node: '>= 10.13.0'}
peerDependencies: peerDependencies:
@@ -6312,7 +6454,7 @@ packages:
dependencies: dependencies:
loader-utils: 2.0.4 loader-utils: 2.0.4
schema-utils: 3.3.0 schema-utils: 3.3.0
webpack: 5.88.1 webpack: 5.88.2
dev: true dev: true
/react-clientside-effect@1.2.6(react@18.2.0): /react-clientside-effect@1.2.6(react@18.2.0):
@@ -6324,6 +6466,23 @@ packages:
react: 18.2.0 react: 18.2.0
dev: false dev: false
/react-diff-viewer@3.1.1(react-dom@18.2.0)(react@18.2.0):
resolution: {integrity: sha512-rmvwNdcClp6ZWdS11m1m01UnBA4OwYaLG/li0dB781e/bQEzsGyj+qewVd6W5ztBwseQ72pO7nwaCcq5jnlzcw==}
engines: {node: '>= 8'}
peerDependencies:
react: ^15.3.0 || ^16.0.0
react-dom: ^15.3.0 || ^16.0.0
dependencies:
classnames: 2.3.2
create-emotion: 10.0.27
diff: 4.0.2
emotion: 10.0.27
memoize-one: 5.2.1
prop-types: 15.8.1
react: 18.2.0
react-dom: 18.2.0(react@18.2.0)
dev: false
/react-dom@18.2.0(react@18.2.0): /react-dom@18.2.0(react@18.2.0):
resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==} resolution: {integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==}
peerDependencies: peerDependencies:
@@ -6590,8 +6749,8 @@ packages:
glob: 7.2.3 glob: 7.2.3
dev: true dev: true
/rollup@3.26.2: /rollup@3.26.3:
resolution: {integrity: sha512-6umBIGVz93er97pMgQO08LuH3m6PUb3jlDUUGFsNJB6VgTCUaDFpupf5JfU30529m/UKOgmiX+uY6Sx8cOYpLA==} resolution: {integrity: sha512-7Tin0C8l86TkpcMtXvQu6saWH93nhG3dGQ1/+l5V2TDMceTxO7kDiK6GzbfLWNNxqJXm591PcEZUozZm51ogwQ==}
engines: {node: '>=14.18.0', npm: '>=8.0.0'} engines: {node: '>=14.18.0', npm: '>=8.0.0'}
hasBin: true hasBin: true
optionalDependencies: optionalDependencies:
@@ -6617,6 +6776,16 @@ packages:
tslib: 2.6.0 tslib: 2.6.0
dev: false dev: false
/safe-array-concat@1.0.0:
resolution: {integrity: sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==}
engines: {node: '>=0.4'}
dependencies:
call-bind: 1.0.2
get-intrinsic: 1.2.1
has-symbols: 1.0.3
isarray: 2.0.5
dev: true
/safe-buffer@5.1.2: /safe-buffer@5.1.2:
resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==}
dev: false dev: false
@@ -6864,7 +7033,7 @@ packages:
dependencies: dependencies:
call-bind: 1.0.2 call-bind: 1.0.2
define-properties: 1.2.0 define-properties: 1.2.0
es-abstract: 1.21.3 es-abstract: 1.22.1
get-intrinsic: 1.2.1 get-intrinsic: 1.2.1
has-symbols: 1.0.3 has-symbols: 1.0.3
internal-slot: 1.0.5 internal-slot: 1.0.5
@@ -6878,7 +7047,7 @@ packages:
dependencies: dependencies:
call-bind: 1.0.2 call-bind: 1.0.2
define-properties: 1.2.0 define-properties: 1.2.0
es-abstract: 1.21.3 es-abstract: 1.22.1
dev: true dev: true
/string.prototype.trimend@1.0.6: /string.prototype.trimend@1.0.6:
@@ -6886,7 +7055,7 @@ packages:
dependencies: dependencies:
call-bind: 1.0.2 call-bind: 1.0.2
define-properties: 1.2.0 define-properties: 1.2.0
es-abstract: 1.21.3 es-abstract: 1.22.1
dev: true dev: true
/string.prototype.trimstart@1.0.6: /string.prototype.trimstart@1.0.6:
@@ -6894,7 +7063,7 @@ packages:
dependencies: dependencies:
call-bind: 1.0.2 call-bind: 1.0.2
define-properties: 1.2.0 define-properties: 1.2.0
es-abstract: 1.21.3 es-abstract: 1.22.1
dev: true dev: true
/string_decoder@0.10.31: /string_decoder@0.10.31:
@@ -7008,7 +7177,7 @@ packages:
engines: {node: '>=6'} engines: {node: '>=6'}
dev: true dev: true
/terser-webpack-plugin@5.3.9(webpack@5.88.1): /terser-webpack-plugin@5.3.9(webpack@5.88.2):
resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==} resolution: {integrity: sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==}
engines: {node: '>= 10.13.0'} engines: {node: '>= 10.13.0'}
peerDependencies: peerDependencies:
@@ -7028,12 +7197,12 @@ packages:
jest-worker: 27.5.1 jest-worker: 27.5.1
schema-utils: 3.3.0 schema-utils: 3.3.0
serialize-javascript: 6.0.1 serialize-javascript: 6.0.1
terser: 5.19.0 terser: 5.19.1
webpack: 5.88.1 webpack: 5.88.2
dev: true dev: true
/terser@5.19.0: /terser@5.19.1:
resolution: {integrity: sha512-JpcpGOQLOXm2jsomozdMDpd5f8ZHh1rR48OFgWUH3QsyZcfPgv2qDCYbcDEAYNd4OZRj2bWYKpwdll/udZCk/Q==} resolution: {integrity: sha512-27hxBUVdV6GoNg1pKQ7Z5cbR6V9txPVyBA+FQw3BaZ1Wuzvztce5p156DaP0NVZNrMZZ+6iG9Syf7WgMNKDg2Q==}
engines: {node: '>=10'} engines: {node: '>=10'}
hasBin: true hasBin: true
dependencies: dependencies:
@@ -7182,6 +7351,25 @@ packages:
mime-types: 2.1.35 mime-types: 2.1.35
dev: false dev: false
/typed-array-buffer@1.0.0:
resolution: {integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==}
engines: {node: '>= 0.4'}
dependencies:
call-bind: 1.0.2
get-intrinsic: 1.2.1
is-typed-array: 1.1.12
dev: true
/typed-array-byte-length@1.0.0:
resolution: {integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==}
engines: {node: '>= 0.4'}
dependencies:
call-bind: 1.0.2
for-each: 0.3.3
has-proto: 1.0.1
is-typed-array: 1.1.12
dev: true
/typed-array-byte-offset@1.0.0: /typed-array-byte-offset@1.0.0:
resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==} resolution: {integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==}
engines: {node: '>= 0.4'} engines: {node: '>= 0.4'}
@@ -7190,7 +7378,7 @@ packages:
call-bind: 1.0.2 call-bind: 1.0.2
for-each: 0.3.3 for-each: 0.3.3
has-proto: 1.0.1 has-proto: 1.0.1
is-typed-array: 1.1.10 is-typed-array: 1.1.12
dev: true dev: true
/typed-array-length@1.0.4: /typed-array-length@1.0.4:
@@ -7198,7 +7386,7 @@ packages:
dependencies: dependencies:
call-bind: 1.0.2 call-bind: 1.0.2
for-each: 0.3.3 for-each: 0.3.3
is-typed-array: 1.1.10 is-typed-array: 1.1.12
dev: true dev: true
/typescript@5.0.4: /typescript@5.0.4:
@@ -7396,9 +7584,9 @@ packages:
optional: true optional: true
dependencies: dependencies:
'@types/node': 18.16.0 '@types/node': 18.16.0
esbuild: 0.18.12 esbuild: 0.18.14
postcss: 8.4.26 postcss: 8.4.26
rollup: 3.26.2 rollup: 3.26.3
optionalDependencies: optionalDependencies:
fsevents: 2.3.2 fsevents: 2.3.2
dev: true dev: true
@@ -7490,8 +7678,8 @@ packages:
engines: {node: '>=10.13.0'} engines: {node: '>=10.13.0'}
dev: true dev: true
/webpack@5.88.1: /webpack@5.88.2:
resolution: {integrity: sha512-FROX3TxQnC/ox4N+3xQoWZzvGXSuscxR32rbzjpXgEzWudJFEJBpdlkkob2ylrv5yzzufD1zph1OoFsLtm6stQ==} resolution: {integrity: sha512-JmcgNZ1iKj+aiR0OvTYtWQqJwq37Pf683dY9bVORwVbUrDhLhdn/PlO2sHsFHPkj7sHNQF3JwaAkp49V+Sq1tQ==}
engines: {node: '>=10.13.0'} engines: {node: '>=10.13.0'}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
@@ -7521,7 +7709,7 @@ packages:
neo-async: 2.6.2 neo-async: 2.6.2
schema-utils: 3.3.0 schema-utils: 3.3.0
tapable: 2.2.1 tapable: 2.2.1
terser-webpack-plugin: 5.3.9(webpack@5.88.1) terser-webpack-plugin: 5.3.9(webpack@5.88.2)
watchpack: 2.4.0 watchpack: 2.4.0
webpack-sources: 3.2.3 webpack-sources: 3.2.3
transitivePeerDependencies: transitivePeerDependencies:
@@ -7547,8 +7735,8 @@ packages:
is-symbol: 1.0.4 is-symbol: 1.0.4
dev: true dev: true
/which-typed-array@1.1.10: /which-typed-array@1.1.11:
resolution: {integrity: sha512-uxoA5vLUfRPdjCuJ1h5LlYdmTLbYfums398v3WLkM+i/Wltl2/XyZpQWKbN++ck5L64SR/grOHqtXCUKmlZPNA==} resolution: {integrity: sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==}
engines: {node: '>= 0.4'} engines: {node: '>= 0.4'}
dependencies: dependencies:
available-typed-arrays: 1.0.5 available-typed-arrays: 1.0.5
@@ -7556,7 +7744,6 @@ packages:
for-each: 0.3.3 for-each: 0.3.3
gopd: 1.0.1 gopd: 1.0.1
has-tostringtag: 1.0.0 has-tostringtag: 1.0.0
is-typed-array: 1.1.10
dev: true dev: true
/which@2.0.2: /which@2.0.2:

View File

@@ -1,4 +1,4 @@
import { Box, Button, Icon, Spinner } from "@chakra-ui/react"; import { Box, Button, Icon, Spinner, Text } from "@chakra-ui/react";
import { BsPlus } from "react-icons/bs"; import { BsPlus } from "react-icons/bs";
import { api } from "~/utils/api"; import { api } from "~/utils/api";
import { useExperiment, useExperimentAccess, useHandledAsyncCallback } from "~/utils/hooks"; import { useExperiment, useExperimentAccess, useHandledAsyncCallback } from "~/utils/hooks";
@@ -34,7 +34,7 @@ export default function NewVariantButton() {
minH={headerMinHeight} minH={headerMinHeight}
> >
<Icon as={loading ? Spinner : BsPlus} boxSize={6} mr={loading ? 1 : 0} /> <Icon as={loading ? Spinner : BsPlus} boxSize={6} mr={loading ? 1 : 0} />
Add Variant <Text display={{ base: "none", md: "flex" }}>Add Variant</Text>
</Button> </Button>
); );
} }

View File

@@ -22,7 +22,13 @@ export default function VariantEditor(props: { variant: PromptVariant }) {
setIsChanged(currentFn.length > 0 && currentFn !== lastSavedFn); setIsChanged(currentFn.length > 0 && currentFn !== lastSavedFn);
}, [lastSavedFn]); }, [lastSavedFn]);
useEffect(checkForChanges, [checkForChanges, lastSavedFn]); const matchUpdatedSavedFn = useCallback(() => {
if (!editorRef.current) return;
editorRef.current.setValue(lastSavedFn);
setIsChanged(false);
}, [lastSavedFn]);
useEffect(matchUpdatedSavedFn, [matchUpdatedSavedFn, lastSavedFn]);
const replaceVariant = api.promptVariants.replaceVariant.useMutation(); const replaceVariant = api.promptVariants.replaceVariant.useMutation();
const utils = api.useContext(); const utils = api.useContext();

View File

@@ -0,0 +1,45 @@
import { HStack, VStack } from "@chakra-ui/react";
import React from "react";
import DiffViewer, { DiffMethod } from "react-diff-viewer";
import Prism from "prismjs";
import "prismjs/components/prism-javascript";
import "prismjs/themes/prism.css"; // choose a theme you like
const CompareFunctions = ({
originalFunction,
newFunction = "",
}: {
originalFunction: string;
newFunction?: string;
}) => {
console.log("newFunction", newFunction);
const highlightSyntax = (str: string) => {
let highlighted;
try {
highlighted = Prism.highlight(str, Prism.languages.javascript as Prism.Grammar, "javascript");
} catch (e) {
console.error("Error highlighting:", e);
highlighted = str;
}
return <pre style={{ display: "inline" }} dangerouslySetInnerHTML={{ __html: highlighted }} />;
};
return (
<HStack w="full" spacing={5}>
<VStack w="full" spacing={4} maxH="65vh" fontSize={12} lineHeight={1} overflowY="auto">
<DiffViewer
oldValue={originalFunction}
newValue={newFunction || originalFunction}
splitView={true}
hideLineNumbers={true}
leftTitle="Original"
rightTitle={newFunction ? "Modified" : "Unmodified"}
disableWordDiff={true}
compareMethod={DiffMethod.CHARS}
renderContent={highlightSyntax}
/>
</VStack>
</HStack>
);
};
export default CompareFunctions;

View File

@@ -0,0 +1,103 @@
import {
Button,
Modal,
ModalBody,
ModalCloseButton,
ModalContent,
ModalFooter,
ModalHeader,
ModalOverlay,
VStack,
Text,
Spinner,
HStack,
} from "@chakra-ui/react";
import { api } from "~/utils/api";
import { useHandledAsyncCallback } from "~/utils/hooks";
import { type PromptVariant } from "@prisma/client";
import { useState } from "react";
import AutoResizeTextArea from "../AutoResizeTextArea";
import CompareFunctions from "./CompareFunctions";
export const RefinePromptModal = ({
variant,
onClose,
}: {
variant: PromptVariant;
onClose: () => void;
}) => {
const utils = api.useContext();
const { mutateAsync: getRefinedPromptMutateAsync, data: refinedPromptFn } =
api.promptVariants.getRefinedPromptFn.useMutation();
const [instructions, setInstructions] = useState<string>("");
const [getRefinedPromptFn, refiningInProgress] = useHandledAsyncCallback(async () => {
if (!variant.experimentId) return;
await getRefinedPromptMutateAsync({
id: variant.id,
instructions,
});
}, [getRefinedPromptMutateAsync, onClose, variant, instructions]);
const replaceVariantMutation = api.promptVariants.replaceVariant.useMutation();
const [replaceVariant, replacementInProgress] = useHandledAsyncCallback(async () => {
if (!variant.experimentId || !refinedPromptFn) return;
await replaceVariantMutation.mutateAsync({
id: variant.id,
constructFn: refinedPromptFn,
});
await utils.promptVariants.list.invalidate();
onClose();
}, [replaceVariantMutation, variant, onClose, refinedPromptFn]);
return (
<Modal isOpen onClose={onClose} size={{ base: "xl", sm: "2xl", md: "7xl" }}>
<ModalOverlay />
<ModalContent w={1200}>
<ModalHeader>Refine Your Prompt</ModalHeader>
<ModalCloseButton />
<ModalBody maxW="unset">
<VStack spacing={8}>
<HStack w="full">
<AutoResizeTextArea
value={instructions}
onChange={(e) => setInstructions(e.target.value)}
onKeyDown={(e) => {
if (e.key === "Enter" && !e.metaKey && !e.ctrlKey && !e.shiftKey) {
e.preventDefault();
e.currentTarget.blur();
getRefinedPromptFn();
}
}}
placeholder="Use chain of thought"
/>
<Button onClick={getRefinedPromptFn}>
{refiningInProgress ? <Spinner boxSize={4} /> : <Text>Submit</Text>}
</Button>
</HStack>
<CompareFunctions
originalFunction={variant.constructFn}
newFunction={refinedPromptFn}
/>
</VStack>
</ModalBody>
<ModalFooter>
<HStack spacing={4}>
<Button onClick={onClose}>Cancel</Button>
<Button
colorScheme="blue"
onClick={replaceVariant}
minW={24}
disabled={!refinedPromptFn}
>
{replacementInProgress ? <Spinner boxSize={4} /> : <Text>Accept</Text>}
</Button>
</HStack>
</ModalFooter>
</ModalContent>
</Modal>
);
};

View File

@@ -32,18 +32,18 @@ export const SelectModelModal = ({
const experiment = useExperiment(); const experiment = useExperiment();
const duplicateMutation = api.promptVariants.create.useMutation(); const createMutation = api.promptVariants.create.useMutation();
const [createNewVariant, creationInProgress] = useHandledAsyncCallback(async () => { const [createNewVariant, creationInProgress] = useHandledAsyncCallback(async () => {
if (!experiment?.data?.id) return; if (!experiment?.data?.id) return;
await duplicateMutation.mutateAsync({ await createMutation.mutateAsync({
experimentId: experiment?.data?.id, experimentId: experiment?.data?.id,
variantId, variantId,
newModel: selectedModel, newModel: selectedModel,
}); });
await utils.promptVariants.list.invalidate(); await utils.promptVariants.list.invalidate();
onClose(); onClose();
}, [duplicateMutation, experiment?.data?.id, variantId, onClose]); }, [createMutation, experiment?.data?.id, variantId, onClose]);
return ( return (
<Modal isOpen onClose={onClose} size={{ base: "xl", sm: "2xl", md: "3xl" }}> <Modal isOpen onClose={onClose} size={{ base: "xl", sm: "2xl", md: "3xl" }}>

View File

@@ -11,13 +11,15 @@ import {
MenuDivider, MenuDivider,
Text, Text,
Spinner, Spinner,
} from "@chakra-ui/react"; // Changed here } from "@chakra-ui/react";
import { BsFillTrashFill, BsGear } from "react-icons/bs"; import { BsFillTrashFill, BsGear } from "react-icons/bs";
import { FaRegClone } from "react-icons/fa"; import { FaRegClone } from "react-icons/fa";
import { RiExchangeFundsFill } from "react-icons/ri"; import { RiExchangeFundsFill } from "react-icons/ri";
import { AiOutlineDiff } from "react-icons/ai";
import { useState } from "react"; import { useState } from "react";
import { SelectModelModal } from "../SelectModelModal/SelectModelModal"; import { SelectModelModal } from "../SelectModelModal/SelectModelModal";
import { type SupportedModel } from "~/server/types"; import { type SupportedModel } from "~/server/types";
import { RefinePromptModal } from "../RefinePromptModal/RefinePromptModal";
export default function VariantHeaderMenuButton({ export default function VariantHeaderMenuButton({
variant, variant,
@@ -51,6 +53,7 @@ export default function VariantHeaderMenuButton({
}, [hideMutation, variant.id]); }, [hideMutation, variant.id]);
const [selectModelModalOpen, setSelectModelModalOpen] = useState(false); const [selectModelModalOpen, setSelectModelModalOpen] = useState(false);
const [refinePromptModalOpen, setRefinePromptModalOpen] = useState(false);
return ( return (
<> <>
@@ -75,6 +78,12 @@ export default function VariantHeaderMenuButton({
> >
Change Model Change Model
</MenuItem> </MenuItem>
<MenuItem
icon={<Icon as={AiOutlineDiff} boxSize={5} />}
onClick={() => setRefinePromptModalOpen(true)}
>
Refine
</MenuItem>
{canHide && ( {canHide && (
<> <>
<MenuDivider /> <MenuDivider />
@@ -97,6 +106,9 @@ export default function VariantHeaderMenuButton({
onClose={() => setSelectModelModalOpen(false)} onClose={() => setSelectModelModalOpen(false)}
/> />
)} )}
{refinePromptModalOpen && (
<RefinePromptModal variant={variant} onClose={() => setRefinePromptModalOpen(false)} />
)}
</> </>
); );
} }

View File

@@ -287,6 +287,33 @@ export const promptVariantsRouter = createTRPCRouter({
return updatedPromptVariant; return updatedPromptVariant;
}), }),
getRefinedPromptFn: protectedProcedure
.input(
z.object({
id: z.string(),
instructions: z.string(),
}),
)
.mutation(async ({ input, ctx }) => {
const existing = await prisma.promptVariant.findUniqueOrThrow({
where: {
id: input.id,
},
});
await requireCanModifyExperiment(existing.experimentId, ctx);
const promptConstructionFn = await deriveNewConstructFn(
existing,
existing.model as SupportedModel,
input.instructions,
);
// TODO: Validate promptConstructionFn
// TODO: Record in some sort of history
return promptConstructionFn;
}),
replaceVariant: protectedProcedure replaceVariant: protectedProcedure
.input( .input(
z.object({ z.object({

View File

@@ -5,18 +5,20 @@ import dedent from "dedent";
import { openai } from "./openai"; import { openai } from "./openai";
import { getApiShapeForModel } from "./getTypesForModel"; import { getApiShapeForModel } from "./getTypesForModel";
import { isObject } from "lodash-es"; import { isObject } from "lodash-es";
import { type CompletionCreateParams } from "openai/resources/chat/completions";
const isolate = new ivm.Isolate({ memoryLimit: 128 }); const isolate = new ivm.Isolate({ memoryLimit: 128 });
export async function deriveNewConstructFn( export async function deriveNewConstructFn(
originalVariant: PromptVariant | null, originalVariant: PromptVariant | null,
newModel?: SupportedModel, newModel?: SupportedModel,
instructions?: string,
) { ) {
if (originalVariant && !newModel) { if (originalVariant && !newModel && !instructions) {
return originalVariant.constructFn; return originalVariant.constructFn;
} }
if (originalVariant && newModel) { if (originalVariant && (newModel || instructions)) {
return await getPromptFunctionForNewModel(originalVariant, newModel); return await requestUpdatedPromptFunction(originalVariant, newModel, instructions);
} }
return dedent` return dedent`
prompt = { prompt = {
@@ -31,38 +33,48 @@ export async function deriveNewConstructFn(
} }
const NUM_RETRIES = 5; const NUM_RETRIES = 5;
const getPromptFunctionForNewModel = async ( const requestUpdatedPromptFunction = async (
originalVariant: PromptVariant, originalVariant: PromptVariant,
newModel: SupportedModel, newModel?: SupportedModel,
instructions?: string,
) => { ) => {
const originalModel = originalVariant.model as SupportedModel; const originalModel = originalVariant.model as SupportedModel;
let newContructionFn = ""; let newContructionFn = "";
for (let i = 0; i < NUM_RETRIES; i++) { for (let i = 0; i < NUM_RETRIES; i++) {
try { try {
// TODO: Add api shape info to prompt const messages: CompletionCreateParams.CreateChatCompletionRequestNonStreaming.Message[] = [
{
role: "system",
content: `Your job is to update prompt constructor functions. Here is the api shape for the current model:\n---\n${JSON.stringify(
getApiShapeForModel(originalModel),
null,
2,
)}`,
},
];
if (newModel) {
messages.push({
role: "user",
content: `Return the prompt constructor function for ${newModel} given the following prompt constructor function for ${originalModel}:\n---\n${originalVariant.constructFn}`,
});
}
if (instructions) {
messages.push({
role: "user",
content: `Follow these instructions: ${instructions}`,
});
}
messages.push({
role: "user",
content:
"The prompt variable has already been declared, so do not declare it again. Rewrite the entire prompt constructor function.",
});
const completion = await openai.chat.completions.create({ const completion = await openai.chat.completions.create({
model: "gpt-4", model: "gpt-4",
messages: [ messages,
{
role: "system",
content: `Your job is to translate prompt constructor functions from ${originalModel} to ${newModel}. Here are is the api shape for the original model:\n---\n${JSON.stringify(
getApiShapeForModel(originalModel),
null,
2,
)}`,
},
{
role: "user",
content: `Return the prompt constructor function for ${newModel} given the following prompt constructor function for ${originalModel}:\n---\n${originalVariant.constructFn}`,
},
{
role: "user",
content: "The prompt variable has already been declared, so do not declare it again.",
},
],
functions: [ functions: [
{ {
name: "translate_prompt_constructor_function", name: "update_prompt_constructor_function",
parameters: { parameters: {
type: "object", type: "object",
properties: { properties: {
@@ -75,7 +87,7 @@ const getPromptFunctionForNewModel = async (
}, },
], ],
function_call: { function_call: {
name: "translate_prompt_constructor_function", name: "update_prompt_constructor_function",
}, },
}); });
const argString = completion.choices[0]?.message?.function_call?.arguments || "{}"; const argString = completion.choices[0]?.message?.function_call?.arguments || "{}";