diff --git a/.gitignore b/.gitignore index 25051ae..4182f30 100644 --- a/.gitignore +++ b/.gitignore @@ -428,4 +428,7 @@ healthchecksdb **/umbraco-cloud.json # Umbraco.Deploy.OnPrem creates this file when running locally - file not needed in Cloud repo -**/TriggerDeploy.ps1 \ No newline at end of file +**/TriggerDeploy.ps1 + +# Don't commit the files generated in the extension project +src/OpenSourceTest.MyExtension/wwwroot/ \ No newline at end of file diff --git a/OpenSourceTest.sln b/OpenSourceTest.sln index df728c8..1099933 100644 --- a/OpenSourceTest.sln +++ b/OpenSourceTest.sln @@ -7,21 +7,28 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{7DEA792A-897 EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSourceTest.Site", "src\OpenSourceTest.Site\OpenSourceTest.Site.csproj", "{0CDCB4DE-F88D-48B0-B592-9885A8DC7246}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenSourceTest.MyExtension", "src\OpenSourceTest.MyExtension\OpenSourceTest.MyExtension.csproj", "{B738DE28-13B7-410F-5FED-B8C76429CF25}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU Release|Any CPU = Release|Any CPU EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {0CDCB4DE-F88D-48B0-B592-9885A8DC7246}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {0CDCB4DE-F88D-48B0-B592-9885A8DC7246}.Debug|Any CPU.Build.0 = Debug|Any CPU {0CDCB4DE-F88D-48B0-B592-9885A8DC7246}.Release|Any CPU.ActiveCfg = Release|Any CPU {0CDCB4DE-F88D-48B0-B592-9885A8DC7246}.Release|Any CPU.Build.0 = Release|Any CPU + {B738DE28-13B7-410F-5FED-B8C76429CF25}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B738DE28-13B7-410F-5FED-B8C76429CF25}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B738DE28-13B7-410F-5FED-B8C76429CF25}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B738DE28-13B7-410F-5FED-B8C76429CF25}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE EndGlobalSection GlobalSection(NestedProjects) = preSolution {0CDCB4DE-F88D-48B0-B592-9885A8DC7246} = {7DEA792A-8972-494E-A996-127FE1D669B8} + {B738DE28-13B7-410F-5FED-B8C76429CF25} = {7DEA792A-8972-494E-A996-127FE1D669B8} EndGlobalSection EndGlobal diff --git a/src/OpenSourceTest.MyExtension/Client/package-lock.json b/src/OpenSourceTest.MyExtension/Client/package-lock.json new file mode 100644 index 0000000..846c5e8 --- /dev/null +++ b/src/OpenSourceTest.MyExtension/Client/package-lock.json @@ -0,0 +1,4049 @@ +{ + "name": "open-source-test-my-extension", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "open-source-test-my-extension", + "version": "0.0.0", + "devDependencies": { + "@hey-api/client-fetch": "^0.12.0", + "@hey-api/openapi-ts": "^0.66.7", + "@umbraco-cms/backoffice": "^*", + "chalk": "^5.4.1", + "cross-env": "^7.0.3", + "node-fetch": "^3.3.2", + "typescript": "^5.8.3", + "vite": "^6.3.4" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.8.tgz", + "integrity": "sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.8.tgz", + "integrity": "sha512-RONsAvGCz5oWyePVnLdZY/HHwA++nxYWIX1atInlaW6SEkwq6XkP3+cb825EUcRs5Vss/lGh/2YxAb5xqc07Uw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.8.tgz", + "integrity": "sha512-OD3p7LYzWpLhZEyATcTSJ67qB5D+20vbtr6vHlHWSQYhKtzUYrETuWThmzFpZtFsBIxRvhO07+UgVA9m0i/O1w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.8.tgz", + "integrity": "sha512-yJAVPklM5+4+9dTeKwHOaA+LQkmrKFX96BM0A/2zQrbS6ENCmxc4OVoBs5dPkCCak2roAD+jKCdnmOqKszPkjA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.8.tgz", + "integrity": "sha512-Jw0mxgIaYX6R8ODrdkLLPwBqHTtYHJSmzzd+QeytSugzQ0Vg4c5rDky5VgkoowbZQahCbsv1rT1KW72MPIkevw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.8.tgz", + "integrity": "sha512-Vh2gLxxHnuoQ+GjPNvDSDRpoBCUzY4Pu0kBqMBDlK4fuWbKgGtmDIeEC081xi26PPjn+1tct+Bh8FjyLlw1Zlg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.8.tgz", + "integrity": "sha512-YPJ7hDQ9DnNe5vxOm6jaie9QsTwcKedPvizTVlqWG9GBSq+BuyWEDazlGaDTC5NGU4QJd666V0yqCBL2oWKPfA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.8.tgz", + "integrity": "sha512-MmaEXxQRdXNFsRN/KcIimLnSJrk2r5H8v+WVafRWz5xdSVmWLoITZQXcgehI2ZE6gioE6HirAEToM/RvFBeuhw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.8.tgz", + "integrity": "sha512-FuzEP9BixzZohl1kLf76KEVOsxtIBFwCaLupVuk4eFVnOZfU+Wsn+x5Ryam7nILV2pkq2TqQM9EZPsOBuMC+kg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.8.tgz", + "integrity": "sha512-WIgg00ARWv/uYLU7lsuDK00d/hHSfES5BzdWAdAig1ioV5kaFNrtK8EqGcUBJhYqotlUByUKz5Qo6u8tt7iD/w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.8.tgz", + "integrity": "sha512-A1D9YzRX1i+1AJZuFFUMP1E9fMaYY+GnSQil9Tlw05utlE86EKTUA7RjwHDkEitmLYiFsRd9HwKBPEftNdBfjg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.8.tgz", + "integrity": "sha512-O7k1J/dwHkY1RMVvglFHl1HzutGEFFZ3kNiDMSOyUrB7WcoHGf96Sh+64nTRT26l3GMbCW01Ekh/ThKM5iI7hQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.8.tgz", + "integrity": "sha512-uv+dqfRazte3BzfMp8PAQXmdGHQt2oC/y2ovwpTteqrMx2lwaksiFZ/bdkXJC19ttTvNXBuWH53zy/aTj1FgGw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.8.tgz", + "integrity": "sha512-GyG0KcMi1GBavP5JgAkkstMGyMholMDybAf8wF5A70CALlDM2p/f7YFE7H92eDeH/VBtFJA5MT4nRPDGg4JuzQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.8.tgz", + "integrity": "sha512-rAqDYFv3yzMrq7GIcen3XP7TUEG/4LK86LUPMIz6RT8A6pRIDn0sDcvjudVZBiiTcZCY9y2SgYX2lgK3AF+1eg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.8.tgz", + "integrity": "sha512-Xutvh6VjlbcHpsIIbwY8GVRbwoviWT19tFhgdA7DlenLGC/mbc3lBoVb7jxj9Z+eyGqvcnSyIltYUrkKzWqSvg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.8.tgz", + "integrity": "sha512-ASFQhgY4ElXh3nDcOMTkQero4b1lgubskNlhIfJrsH5OKZXDpUAKBlNS0Kx81jwOBp+HCeZqmoJuihTv57/jvQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.8.tgz", + "integrity": "sha512-d1KfruIeohqAi6SA+gENMuObDbEjn22olAR7egqnkCD9DGBG0wsEARotkLgXDu6c4ncgWTZJtN5vcgxzWRMzcw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.8.tgz", + "integrity": "sha512-nVDCkrvx2ua+XQNyfrujIG38+YGyuy2Ru9kKVNyh5jAys6n+l44tTtToqHjino2My8VAY6Lw9H7RI73XFi66Cg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.8.tgz", + "integrity": "sha512-j8HgrDuSJFAujkivSMSfPQSAa5Fxbvk4rgNAS5i3K+r8s1X0p1uOO2Hl2xNsGFppOeHOLAVgYwDVlmxhq5h+SQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.8.tgz", + "integrity": "sha512-1h8MUAwa0VhNCDp6Af0HToI2TJFAn1uqT9Al6DJVzdIBAd21m/G0Yfc77KDM3uF3T/YaOgQq3qTJHPbTOInaIQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.8.tgz", + "integrity": "sha512-r2nVa5SIK9tSWd0kJd9HCffnDHKchTGikb//9c7HX+r+wHYCpQrSgxhlY6KWV1nFo1l4KFbsMlHk+L6fekLsUg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.8.tgz", + "integrity": "sha512-zUlaP2S12YhQ2UzUfcCuMDHQFJyKABkAjvO5YSndMiIkMimPmxA+BYSBikWgsRpvyxuRnow4nS5NPnf9fpv41w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.8.tgz", + "integrity": "sha512-YEGFFWESlPva8hGL+zvj2z/SaK+pH0SwOM0Nc/d+rVnW7GSTFlLBGzZkuSU9kFIGIo8q9X3ucpZhu8PDN5A2sQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.8.tgz", + "integrity": "sha512-hiGgGC6KZ5LZz58OL/+qVVoZiuZlUYlYHNAmczOm7bs2oE1XriPFi5ZHHrS8ACpV5EjySrnoCKmcbQMN+ojnHg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.8.tgz", + "integrity": "sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@hey-api/client-fetch": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/@hey-api/client-fetch/-/client-fetch-0.12.0.tgz", + "integrity": "sha512-/iZ6dhs39N0kjzCa9tlNeLNufVUd8zzv/wI1ewQt5AEHaVuDnAxvuQT+fRIPYkfIWKR3gVZKRp5mcCo29voYzQ==", + "deprecated": "Starting with v0.73.0, this package is bundled directly inside @hey-api/openapi-ts.", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/hey-api" + }, + "peerDependencies": { + "@hey-api/openapi-ts": "< 2" + } + }, + "node_modules/@hey-api/json-schema-ref-parser": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@hey-api/json-schema-ref-parser/-/json-schema-ref-parser-1.0.5.tgz", + "integrity": "sha512-bWUV9ICwvU5I3YKVZqWIUXFC2SIXznUi/u+LqurJx6ILiyImfZD5+g/lj3w4EiyXxmjqyaxptzUz/1IgK3vVtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jsdevtools/ono": "^7.1.3", + "@types/json-schema": "^7.0.15", + "js-yaml": "^4.1.0", + "lodash": "^4.17.21" + }, + "engines": { + "node": ">= 16" + }, + "funding": { + "url": "https://github.com/sponsors/hey-api" + } + }, + "node_modules/@hey-api/openapi-ts": { + "version": "0.66.7", + "resolved": "https://registry.npmjs.org/@hey-api/openapi-ts/-/openapi-ts-0.66.7.tgz", + "integrity": "sha512-BQMrbiNTWPHwZQ2wMnFdKXVMR47P77hc8fuUseQmmXsXG3Rvt2qstXtlQPmbEds/RO5iTL+JKqdcbhPSWuu/og==", + "dev": true, + "license": "MIT", + "dependencies": { + "@hey-api/json-schema-ref-parser": "1.0.5", + "c12": "2.0.1", + "commander": "13.0.0", + "handlebars": "4.7.8" + }, + "bin": { + "openapi-ts": "bin/index.cjs" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=22.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/hey-api" + }, + "peerDependencies": { + "typescript": "^5.5.3" + } + }, + "node_modules/@jsdevtools/ono": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz", + "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@lit-labs/ssr-dom-shim": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.4.0.tgz", + "integrity": "sha512-ficsEARKnmmW5njugNYKipTm4SFnbik7CXtoencDZzmzo/dQ+2Q0bgkzJuoJP20Aj0F+izzJjOqsnkd6F/o1bw==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true + }, + "node_modules/@lit/reactive-element": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.1.1.tgz", + "integrity": "sha512-N+dm5PAYdQ8e6UlywyyrgI2t++wFGXfHx+dSJ1oBrg6FAxUj40jId++EaRm80MKX5JnlH1sBsyZ5h0bcZKemCg==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.4.0" + } + }, + "node_modules/@remirror/core-constants": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@remirror/core-constants/-/core-constants-3.0.0.tgz", + "integrity": "sha512-42aWfPrimMfDKDi4YegyS7x+/0tlzaqwPQCULLanv3DMIlu96KTJR0fM5isWX2UViOqlGnX6YFgqWepcX+XMNg==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.45.1.tgz", + "integrity": "sha512-NEySIFvMY0ZQO+utJkgoMiCAjMrGvnbDLHvcmlA33UXJpYBCvlBEbMMtV837uCkS+plG2umfhn0T5mMAxGrlRA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.45.1.tgz", + "integrity": "sha512-ujQ+sMXJkg4LRJaYreaVx7Z/VMgBBd89wGS4qMrdtfUFZ+TSY5Rs9asgjitLwzeIbhwdEhyj29zhst3L1lKsRQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.45.1.tgz", + "integrity": "sha512-FSncqHvqTm3lC6Y13xncsdOYfxGSLnP+73k815EfNmpewPs+EyM49haPS105Rh4aF5mJKywk9X0ogzLXZzN9lA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.45.1.tgz", + "integrity": "sha512-2/vVn/husP5XI7Fsf/RlhDaQJ7x9zjvC81anIVbr4b/f0xtSmXQTFcGIQ/B1cXIYM6h2nAhJkdMHTnD7OtQ9Og==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.45.1.tgz", + "integrity": "sha512-4g1kaDxQItZsrkVTdYQ0bxu4ZIQ32cotoQbmsAnW1jAE4XCMbcBPDirX5fyUzdhVCKgPcrwWuucI8yrVRBw2+g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.45.1.tgz", + "integrity": "sha512-L/6JsfiL74i3uK1Ti2ZFSNsp5NMiM4/kbbGEcOCps99aZx3g8SJMO1/9Y0n/qKlWZfn6sScf98lEOUe2mBvW9A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.45.1.tgz", + "integrity": "sha512-RkdOTu2jK7brlu+ZwjMIZfdV2sSYHK2qR08FUWcIoqJC2eywHbXr0L8T/pONFwkGukQqERDheaGTeedG+rra6Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.45.1.tgz", + "integrity": "sha512-3kJ8pgfBt6CIIr1o+HQA7OZ9mp/zDk3ctekGl9qn/pRBgrRgfwiffaUmqioUGN9hv0OHv2gxmvdKOkARCtRb8Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.45.1.tgz", + "integrity": "sha512-k3dOKCfIVixWjG7OXTCOmDfJj3vbdhN0QYEqB+OuGArOChek22hn7Uy5A/gTDNAcCy5v2YcXRJ/Qcnm4/ma1xw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.45.1.tgz", + "integrity": "sha512-PmI1vxQetnM58ZmDFl9/Uk2lpBBby6B6rF4muJc65uZbxCs0EA7hhKCk2PKlmZKuyVSHAyIw3+/SiuMLxKxWog==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.45.1.tgz", + "integrity": "sha512-9UmI0VzGmNJ28ibHW2GpE2nF0PBQqsyiS4kcJ5vK+wuwGnV5RlqdczVocDSUfGX/Na7/XINRVoUgJyFIgipoRg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.45.1.tgz", + "integrity": "sha512-7nR2KY8oEOUTD3pBAxIBBbZr0U7U+R9HDTPNy+5nVVHDXI4ikYniH1oxQz9VoB5PbBU1CZuDGHkLJkd3zLMWsg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.45.1.tgz", + "integrity": "sha512-nlcl3jgUultKROfZijKjRQLUu9Ma0PeNv/VFHkZiKbXTBQXhpytS8CIj5/NfBeECZtY2FJQubm6ltIxm/ftxpw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.45.1.tgz", + "integrity": "sha512-HJV65KLS51rW0VY6rvZkiieiBnurSzpzore1bMKAhunQiECPuxsROvyeaot/tcK3A3aGnI+qTHqisrpSgQrpgA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.45.1.tgz", + "integrity": "sha512-NITBOCv3Qqc6hhwFt7jLV78VEO/il4YcBzoMGGNxznLgRQf43VQDae0aAzKiBeEPIxnDrACiMgbqjuihx08OOw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.45.1.tgz", + "integrity": "sha512-+E/lYl6qu1zqgPEnTrs4WysQtvc/Sh4fC2nByfFExqgYrqkKWp1tWIbe+ELhixnenSpBbLXNi6vbEEJ8M7fiHw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.45.1.tgz", + "integrity": "sha512-a6WIAp89p3kpNoYStITT9RbTbTnqarU7D8N8F2CV+4Cl9fwCOZraLVuVFvlpsW0SbIiYtEnhCZBPLoNdRkjQFw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.45.1.tgz", + "integrity": "sha512-T5Bi/NS3fQiJeYdGvRpTAP5P02kqSOpqiopwhj0uaXB6nzs5JVi2XMJb18JUSKhCOX8+UE1UKQufyD6Or48dJg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.45.1.tgz", + "integrity": "sha512-lxV2Pako3ujjuUe9jiU3/s7KSrDfH6IgTSQOnDWr9aJ92YsFd7EurmClK0ly/t8dzMkDtd04g60WX6yl0sGfdw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.45.1.tgz", + "integrity": "sha512-M/fKi4sasCdM8i0aWJjCSFm2qEnYRR8AMLG2kxp6wD13+tMGA4Z1tVAuHkNRjud5SW2EM3naLuK35w9twvf6aA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@tiptap/core": { + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@tiptap/core/-/core-2.11.7.tgz", + "integrity": "sha512-zN+NFFxLsxNEL8Qioc+DL6b8+Tt2bmRbXH22Gk6F6nD30x83eaUSFlSv3wqvgyCq3I1i1NO394So+Agmayx6rQ==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/pm": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-blockquote": { + "version": "2.26.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-blockquote/-/extension-blockquote-2.26.1.tgz", + "integrity": "sha512-viQ6AHRhjCYYipKK6ZepBzwZpkuMvO9yhRHeUZDvlSOAh8rvsUTSre0y74nu8QRYUt4a44lJJ6BpphJK7bEgYA==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-bold": { + "version": "2.26.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-bold/-/extension-bold-2.26.1.tgz", + "integrity": "sha512-zCce9PRuTNhadFir71luLo99HERDpGJ0EEflGm7RN8I1SnNi9gD5ooK42BOIQtejGCJqg3hTPZiYDJC2hXvckQ==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-bullet-list": { + "version": "2.26.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-bullet-list/-/extension-bullet-list-2.26.1.tgz", + "integrity": "sha512-HHakuV4ckYCDOnBbne088FvCEP4YICw+wgPBz/V2dfpiFYQ4WzT0LPK9s7OFMCN+ROraoug+1ryN1Z1KdIgujQ==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-character-count": { + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-character-count/-/extension-character-count-2.11.7.tgz", + "integrity": "sha512-gcVbKou+uxzg8N0BBKceLwtpWvN8g2TIjTuCdyAcAPukX63DqVWOkofFHn1RqZbstJmtF4pTGZs9OH/GJrp27Q==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0", + "@tiptap/pm": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-code": { + "version": "2.26.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-code/-/extension-code-2.26.1.tgz", + "integrity": "sha512-GU9deB1A/Tr4FMPu71CvlcjGKwRhGYz60wQ8m4aM+ELZcVIcZRa1ebR8bExRIEWnvRztQuyRiCQzw2N0xQJ1QQ==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-code-block": { + "version": "2.26.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-code-block/-/extension-code-block-2.26.1.tgz", + "integrity": "sha512-/TDDOwONl0qEUc4+B6V9NnWtSjz95eg7/8uCb8Y8iRbGvI9vT4/znRKofFxstvKmW4URu/H74/g0ywV57h0B+A==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0", + "@tiptap/pm": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-document": { + "version": "2.26.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-document/-/extension-document-2.26.1.tgz", + "integrity": "sha512-2P2IZp1NRAE+21mRuFBiP3X2WKfZ6kUC23NJKpn8bcOamY3obYqCt0ltGPhE4eR8n8QAl2fI/3jIgjR07dC8ow==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-dropcursor": { + "version": "2.26.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-dropcursor/-/extension-dropcursor-2.26.1.tgz", + "integrity": "sha512-JkDQU2ZYFOuT5mNYb8OiWGwD1HcjbtmX8tLNugQbToECmz9WvVPqJmn7V/q8VGpP81iEECz/IsyRmuf2kSD4uA==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0", + "@tiptap/pm": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-gapcursor": { + "version": "2.26.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-gapcursor/-/extension-gapcursor-2.26.1.tgz", + "integrity": "sha512-KOiMZc3PwJS3hR0nSq5d0TJi2jkNZkLZElcT6pCEnhRHzPH6dRMu9GM5Jj798ZRUy0T9UFcKJalFZaDxnmRnpg==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0", + "@tiptap/pm": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-hard-break": { + "version": "2.26.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-hard-break/-/extension-hard-break-2.26.1.tgz", + "integrity": "sha512-d6uStdNKi8kjPlHAyO59M6KGWATNwhLCD7dng0NXfwGndc22fthzIk/6j9F6ltQx30huy5qQram6j3JXwNACoA==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-heading": { + "version": "2.26.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-heading/-/extension-heading-2.26.1.tgz", + "integrity": "sha512-KSzL8WZV3pjJG9ke4RaU70+B5UlYR2S6olNt5UCAawM+fi11mobVztiBoC19xtpSVqIXC1AmXOqUgnuSvmE4ZA==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-history": { + "version": "2.26.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-history/-/extension-history-2.26.1.tgz", + "integrity": "sha512-m6YR1gkkauIDo3PRl0gP+7Oc4n5OqDzcjVh6LvWREmZP8nmi94hfseYbqOXUb6RPHIc0JKF02eiRifT4MSd2nw==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0", + "@tiptap/pm": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-horizontal-rule": { + "version": "2.26.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-horizontal-rule/-/extension-horizontal-rule-2.26.1.tgz", + "integrity": "sha512-mT6baqOhs/NakgrAeDeed194E/ZJFGL692H0C7f1N7WDRaWxUu2oR0LrnRqSH5OyPjELkzu6nQnNy0+0tFGHHg==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0", + "@tiptap/pm": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-image": { + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-image/-/extension-image-2.11.7.tgz", + "integrity": "sha512-YvCmTDB7Oo+A56tR4S/gcNaYpqU4DDlSQcRp5IQvmQV5EekSe0lnEazGDoqOCwsit9qQhj4MPQJhKrnaWrJUrg==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-italic": { + "version": "2.26.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-italic/-/extension-italic-2.26.1.tgz", + "integrity": "sha512-pOs6oU4LyGO89IrYE4jbE8ZYsPwMMIiKkYfXcfeD9NtpGNBnjeVXXF5I9ndY2ANrCAgC8k58C3/powDRf0T2yA==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-link": { + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-link/-/extension-link-2.11.7.tgz", + "integrity": "sha512-qKIowE73aAUrnQCIifYP34xXOHOsZw46cT/LBDlb0T60knVfQoKVE4ku08fJzAV+s6zqgsaaZ4HVOXkQYLoW7g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "linkifyjs": "^4.2.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0", + "@tiptap/pm": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-list-item": { + "version": "2.26.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-list-item/-/extension-list-item-2.26.1.tgz", + "integrity": "sha512-quOXckC73Luc3x+Dcm88YAEBW+Crh3x5uvtQOQtn2GEG91AshrvbnhGRiYnfvEN7UhWIS+FYI5liHFcRKSUKrQ==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-ordered-list": { + "version": "2.26.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-ordered-list/-/extension-ordered-list-2.26.1.tgz", + "integrity": "sha512-UHKNRxq6TBnXMGFSq91knD6QaHsyyOwLOsXMzupmKM5Su0s+CRXEjfav3qKlbb9e4m7D7S/a0aPm8nC9KIXNhQ==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-paragraph": { + "version": "2.26.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-paragraph/-/extension-paragraph-2.26.1.tgz", + "integrity": "sha512-UezvM9VDRAVJlX1tykgHWSD1g3MKfVMWWZ+Tg+PE4+kizOwoYkRWznVPgCAxjmyHajxpCKRXgqTZkOxjJ9Kjzg==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-placeholder": { + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-placeholder/-/extension-placeholder-2.11.7.tgz", + "integrity": "sha512-/06zXV4HIjYoiaUq1fVJo/RcU8pHbzx21evOpeG/foCfNpMI4xLU/vnxdUi6/SQqpZMY0eFutDqod1InkSOqsg==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0", + "@tiptap/pm": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-strike": { + "version": "2.26.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-strike/-/extension-strike-2.26.1.tgz", + "integrity": "sha512-CkoRH+pAi6MgdCh7K0cVZl4N2uR4pZdabXAnFSoLZRSg6imLvEUmWHfSi1dl3Z7JOvd3a4yZ4NxerQn5MWbJ7g==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-subscript": { + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-subscript/-/extension-subscript-2.11.7.tgz", + "integrity": "sha512-I25ZexCddFJ9701DCCtQbX3Vtxzj5d9ss2GAXVweIUCdATCScaebsznyUQoN5papmhTxXsw5OD+K2ZHxP82pew==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-superscript": { + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-superscript/-/extension-superscript-2.11.7.tgz", + "integrity": "sha512-dNRpCcRJs0Qvv0sZRgbH7Y5hDVbWsGSZjtwFCs/mysPrvHqmXjzo7568kYWTggxEYxnXw6n0FfkCAEHlt0N90Q==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-table": { + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-table/-/extension-table-2.11.7.tgz", + "integrity": "sha512-rfwWkNXz/EZuhc8lylsCWPbx0Xr5FlIhreWFyeoXYrDEO3x4ytYcVOpNmbabJYP2semfM0PvPR5o84zfFkLZyg==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0", + "@tiptap/pm": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-table-cell": { + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-table-cell/-/extension-table-cell-2.11.7.tgz", + "integrity": "sha512-JMOkSYRckc5SJP86yGGiHzCxCR8ecrRENvTWAKib6qer2tutxs5u42W+Z8uTcHC2dRz7Fv54snOkDoqPwkf6cw==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-table-header": { + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-table-header/-/extension-table-header-2.11.7.tgz", + "integrity": "sha512-wPRKpliS5QQXgsp//ZjXrHMdLICMkjg2fUrQinOiBa7wDL5C7Y+SehtuK4s2tjeAkyAdj+nepfftyBRIlUSMXg==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-table-row": { + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-table-row/-/extension-table-row-2.11.7.tgz", + "integrity": "sha512-K254RiXWGXGjz5Cm835hqfQiwnYXm8aw6oOa3isDh4A1B+1Ev4DB2vEDKMrgaOor3nbTsSYmAx2iEMrZSbpaRg==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-text": { + "version": "2.26.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-text/-/extension-text-2.26.1.tgz", + "integrity": "sha512-p2n8WVMd/2vckdJlol24acaTDIZAhI7qle5cM75bn01sOEZoFlSw6SwINOULrUCzNJsYb43qrLEibZb4j2LeQw==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-text-align": { + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-text-align/-/extension-text-align-2.11.7.tgz", + "integrity": "sha512-3M8zd9ROADXazVNpgR6Ejs1evSvBveN36qN4GgV71GqrNlTcjqYgQcXFLQrsd2hnE+aXir8/8bLJ+aaJXDninA==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-text-style": { + "version": "2.26.1", + "resolved": "https://registry.npmjs.org/@tiptap/extension-text-style/-/extension-text-style-2.26.1.tgz", + "integrity": "sha512-t9Nc/UkrbCfnSHEUi1gvUQ2ZPzvfdYFT5TExoV2DTiUCkhG6+mecT5bTVFGW3QkPmbToL+nFhGn4ZRMDD0SP3Q==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/extension-underline": { + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@tiptap/extension-underline/-/extension-underline-2.11.7.tgz", + "integrity": "sha512-NtoQw6PGijOAtXC6G+0Aq0/Z5wwEjPhNHs8nsjXogfWIgaj/aI4/zfBnA06eI3WT+emMYQTl0fTc4CUPnLVU8g==", + "dev": true, + "license": "MIT", + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + }, + "peerDependencies": { + "@tiptap/core": "^2.7.0" + } + }, + "node_modules/@tiptap/pm": { + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@tiptap/pm/-/pm-2.11.7.tgz", + "integrity": "sha512-7gEEfz2Q6bYKXM07vzLUD0vqXFhC5geWRA6LCozTiLdVFDdHWiBrvb2rtkL5T7mfLq03zc1QhH7rI3F6VntOEA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "prosemirror-changeset": "^2.2.1", + "prosemirror-collab": "^1.3.1", + "prosemirror-commands": "^1.6.2", + "prosemirror-dropcursor": "^1.8.1", + "prosemirror-gapcursor": "^1.3.2", + "prosemirror-history": "^1.4.1", + "prosemirror-inputrules": "^1.4.0", + "prosemirror-keymap": "^1.2.2", + "prosemirror-markdown": "^1.13.1", + "prosemirror-menu": "^1.2.4", + "prosemirror-model": "^1.23.0", + "prosemirror-schema-basic": "^1.2.3", + "prosemirror-schema-list": "^1.4.1", + "prosemirror-state": "^1.4.3", + "prosemirror-tables": "^1.6.4", + "prosemirror-trailing-node": "^3.0.0", + "prosemirror-transform": "^1.10.2", + "prosemirror-view": "^1.37.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + } + }, + "node_modules/@tiptap/starter-kit": { + "version": "2.11.7", + "resolved": "https://registry.npmjs.org/@tiptap/starter-kit/-/starter-kit-2.11.7.tgz", + "integrity": "sha512-K+q51KwNU/l0kqRuV5e1824yOLVftj6kGplGQLvJG56P7Rb2dPbM/JeaDbxQhnHT/KDGamG0s0Po0M3pPY163A==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@tiptap/core": "^2.11.7", + "@tiptap/extension-blockquote": "^2.11.7", + "@tiptap/extension-bold": "^2.11.7", + "@tiptap/extension-bullet-list": "^2.11.7", + "@tiptap/extension-code": "^2.11.7", + "@tiptap/extension-code-block": "^2.11.7", + "@tiptap/extension-document": "^2.11.7", + "@tiptap/extension-dropcursor": "^2.11.7", + "@tiptap/extension-gapcursor": "^2.11.7", + "@tiptap/extension-hard-break": "^2.11.7", + "@tiptap/extension-heading": "^2.11.7", + "@tiptap/extension-history": "^2.11.7", + "@tiptap/extension-horizontal-rule": "^2.11.7", + "@tiptap/extension-italic": "^2.11.7", + "@tiptap/extension-list-item": "^2.11.7", + "@tiptap/extension-ordered-list": "^2.11.7", + "@tiptap/extension-paragraph": "^2.11.7", + "@tiptap/extension-strike": "^2.11.7", + "@tiptap/extension-text": "^2.11.7", + "@tiptap/extension-text-style": "^2.11.7", + "@tiptap/pm": "^2.11.7" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/ueberdosis" + } + }, + "node_modules/@types/diff": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@types/diff/-/diff-7.0.2.tgz", + "integrity": "sha512-JSWRMozjFKsGlEjiiKajUjIJVKuKdE3oVy2DNtK+fUo8q82nhFZ2CPQwicAIkXrofahDXrWJ7mjelvZphMS98Q==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/markdown-it": { + "version": "14.1.2", + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz", + "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/linkify-it": "^5", + "@types/mdurl": "^2" + } + }, + "node_modules/@types/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/@umbraco-cms/backoffice": { + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/@umbraco-cms/backoffice/-/backoffice-16.1.0.tgz", + "integrity": "sha512-/Wocq1ZqF6uetQGUBHUh6xrPEw4KStnIjscn9Esx7ftfczlcMvmgySowH1ITNThCRs99eDHp104TLcUIGmXjVQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=22", + "npm": ">=10.9" + }, + "peerDependencies": { + "@hey-api/client-fetch": "^0.12.0", + "@tiptap/core": "2.11.7", + "@tiptap/extension-character-count": "2.11.7", + "@tiptap/extension-image": "2.11.7", + "@tiptap/extension-link": "2.11.7", + "@tiptap/extension-placeholder": "2.11.7", + "@tiptap/extension-subscript": "2.11.7", + "@tiptap/extension-superscript": "2.11.7", + "@tiptap/extension-table": "2.11.7", + "@tiptap/extension-table-cell": "2.11.7", + "@tiptap/extension-table-header": "2.11.7", + "@tiptap/extension-table-row": "2.11.7", + "@tiptap/extension-text-align": "2.11.7", + "@tiptap/extension-underline": "2.11.7", + "@tiptap/pm": "2.11.7", + "@tiptap/starter-kit": "2.11.7", + "@types/diff": "^7.0.2", + "@umbraco-ui/uui": "1.14.2", + "@umbraco-ui/uui-css": "1.14.1", + "diff": "^7.0.0", + "dompurify": "^3.2.5", + "element-internals-polyfill": "^3.0.2", + "lit": "^3.3.0", + "marked": "^15.0.9", + "monaco-editor": "^0.52.2", + "rxjs": "^7.8.2", + "uuid": "^11.1.0" + } + }, + "node_modules/@umbraco-ui/uui": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui/-/uui-1.14.2.tgz", + "integrity": "sha512-aAiQN/pau/uaPoMYm6/FaojzljZvLYNu2Nm4Mm3f+2P1ZTtmTqiVYv56C4NPvSnF3CIRh5roiyY7cHZCNoYqTw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-action-bar": "1.14.1", + "@umbraco-ui/uui-avatar": "1.14.1", + "@umbraco-ui/uui-avatar-group": "1.14.1", + "@umbraco-ui/uui-badge": "1.14.1", + "@umbraco-ui/uui-base": "1.14.1", + "@umbraco-ui/uui-boolean-input": "1.14.1", + "@umbraco-ui/uui-box": "1.14.1", + "@umbraco-ui/uui-breadcrumbs": "1.14.1", + "@umbraco-ui/uui-button": "1.14.1", + "@umbraco-ui/uui-button-copy-text": "1.14.1", + "@umbraco-ui/uui-button-group": "1.14.1", + "@umbraco-ui/uui-button-inline-create": "1.14.1", + "@umbraco-ui/uui-card": "1.14.1", + "@umbraco-ui/uui-card-block-type": "1.14.1", + "@umbraco-ui/uui-card-content-node": "1.14.1", + "@umbraco-ui/uui-card-media": "1.14.1", + "@umbraco-ui/uui-card-user": "1.14.1", + "@umbraco-ui/uui-caret": "1.14.1", + "@umbraco-ui/uui-checkbox": "1.14.1", + "@umbraco-ui/uui-color-area": "1.14.1", + "@umbraco-ui/uui-color-picker": "1.14.2", + "@umbraco-ui/uui-color-slider": "1.14.1", + "@umbraco-ui/uui-color-swatch": "1.14.1", + "@umbraco-ui/uui-color-swatches": "1.14.1", + "@umbraco-ui/uui-combobox": "1.14.2", + "@umbraco-ui/uui-combobox-list": "1.14.1", + "@umbraco-ui/uui-css": "1.14.1", + "@umbraco-ui/uui-dialog": "1.14.1", + "@umbraco-ui/uui-dialog-layout": "1.14.1", + "@umbraco-ui/uui-file-dropzone": "1.14.1", + "@umbraco-ui/uui-file-preview": "1.14.1", + "@umbraco-ui/uui-form": "1.14.1", + "@umbraco-ui/uui-form-layout-item": "1.14.1", + "@umbraco-ui/uui-form-validation-message": "1.14.1", + "@umbraco-ui/uui-icon": "1.14.1", + "@umbraco-ui/uui-icon-registry": "1.14.1", + "@umbraco-ui/uui-icon-registry-essential": "1.14.1", + "@umbraco-ui/uui-input": "1.14.1", + "@umbraco-ui/uui-input-file": "1.14.1", + "@umbraco-ui/uui-input-lock": "1.14.1", + "@umbraco-ui/uui-input-password": "1.14.1", + "@umbraco-ui/uui-keyboard-shortcut": "1.14.1", + "@umbraco-ui/uui-label": "1.14.1", + "@umbraco-ui/uui-loader": "1.14.1", + "@umbraco-ui/uui-loader-bar": "1.14.1", + "@umbraco-ui/uui-loader-circle": "1.14.1", + "@umbraco-ui/uui-menu-item": "1.14.1", + "@umbraco-ui/uui-modal": "1.14.1", + "@umbraco-ui/uui-pagination": "1.14.1", + "@umbraco-ui/uui-popover": "1.14.1", + "@umbraco-ui/uui-popover-container": "1.14.2", + "@umbraco-ui/uui-progress-bar": "1.14.1", + "@umbraco-ui/uui-radio": "1.14.1", + "@umbraco-ui/uui-range-slider": "1.14.1", + "@umbraco-ui/uui-ref": "1.14.1", + "@umbraco-ui/uui-ref-list": "1.14.1", + "@umbraco-ui/uui-ref-node": "1.14.1", + "@umbraco-ui/uui-ref-node-data-type": "1.14.1", + "@umbraco-ui/uui-ref-node-document-type": "1.14.1", + "@umbraco-ui/uui-ref-node-form": "1.14.1", + "@umbraco-ui/uui-ref-node-member": "1.14.1", + "@umbraco-ui/uui-ref-node-package": "1.14.1", + "@umbraco-ui/uui-ref-node-user": "1.14.1", + "@umbraco-ui/uui-scroll-container": "1.14.1", + "@umbraco-ui/uui-select": "1.14.1", + "@umbraco-ui/uui-slider": "1.14.1", + "@umbraco-ui/uui-symbol-expand": "1.14.1", + "@umbraco-ui/uui-symbol-file": "1.14.1", + "@umbraco-ui/uui-symbol-file-dropzone": "1.14.1", + "@umbraco-ui/uui-symbol-file-thumbnail": "1.14.1", + "@umbraco-ui/uui-symbol-folder": "1.14.1", + "@umbraco-ui/uui-symbol-lock": "1.14.1", + "@umbraco-ui/uui-symbol-more": "1.14.1", + "@umbraco-ui/uui-symbol-sort": "1.14.1", + "@umbraco-ui/uui-table": "1.14.1", + "@umbraco-ui/uui-tabs": "1.14.2", + "@umbraco-ui/uui-tag": "1.14.1", + "@umbraco-ui/uui-textarea": "1.14.1", + "@umbraco-ui/uui-toast-notification": "1.14.1", + "@umbraco-ui/uui-toast-notification-container": "1.14.1", + "@umbraco-ui/uui-toast-notification-layout": "1.14.1", + "@umbraco-ui/uui-toggle": "1.14.1", + "@umbraco-ui/uui-visually-hidden": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-action-bar": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-action-bar/-/uui-action-bar-1.14.1.tgz", + "integrity": "sha512-EEYN9iF3kFZa4glujIZ2aMvQavis7/Y2WHpVlazZpD47Q1XA1mK6g31R0azt/MSCwulOp0WYYVB7wSHR9i8v/Q==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1", + "@umbraco-ui/uui-button-group": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-avatar": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-avatar/-/uui-avatar-1.14.1.tgz", + "integrity": "sha512-FmHWKw6XPdL5T1Lb1JaEiueIic1ONTsTZx9DWqTuUtwDz85P10E0HJW0zQA7jcvAoNhVBvj2/mJboB6MK8EPJw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-avatar-group": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-avatar-group/-/uui-avatar-group-1.14.1.tgz", + "integrity": "sha512-0HLJ0oU6v6Pp470wclTIB6zk84jLJJuNEOxcSJYkReXEAenNyydgjdq2gG5rnImJeiwtn9cqCHcv0XgZnMiLPA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-avatar": "1.14.1", + "@umbraco-ui/uui-base": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-badge": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-badge/-/uui-badge-1.14.1.tgz", + "integrity": "sha512-PtjLNwjAYZfX07ZYbI5SQOLzD6Z2l6eTEEOmMBEjd3T+1oFVoq2m1TtvMjGmcIjABQ89H9GIYkiQgOGk31CG1g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-base": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-base/-/uui-base-1.14.1.tgz", + "integrity": "sha512-N+Gkcuu2raF79EACVpEhgWXxfohnuKqmVytTXyAh8N2QmLGaUPiO7/NDknOLgbY3lf9be2VyEaQ5N931zDBcVQ==", + "dev": true, + "license": "MIT", + "peer": true, + "peerDependencies": { + "lit": ">=2.8.0" + } + }, + "node_modules/@umbraco-ui/uui-boolean-input": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-boolean-input/-/uui-boolean-input-1.14.1.tgz", + "integrity": "sha512-GwQePrMnHV7r6JFUKgYZzLfETEyAOK5SimSEZ4N+VMdpEqtmjqMXUJ34Te5Y5ca20ZK1ACL4cs/Dgz76af9Yaw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-box": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-box/-/uui-box-1.14.1.tgz", + "integrity": "sha512-8YULja9KMOhpBigqOgZi0NunobqJyesKmYWGmrHFFdifbh9kTrGyP5eES70etNAfiqC1gLJAcynPd9fmcAzYAQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1", + "@umbraco-ui/uui-css": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-breadcrumbs": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-breadcrumbs/-/uui-breadcrumbs-1.14.1.tgz", + "integrity": "sha512-0Llsq8J/SUH+EbxcY5kmkAzCtsxVCq9H0HBDJ/YsOF6wl8imAouvuwKBCUPFNGsGXncsVEpQfpMkzNw/5VR+Qg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-button": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button/-/uui-button-1.14.1.tgz", + "integrity": "sha512-2nll4AVHqbp0UFkbc7oevMqG2ZnfM3mjV/YpSsGzJBqsNefP3t0vbcTQ/Fp11j4MWOgaFiLQR7Z0YVFMZ5qn4g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1", + "@umbraco-ui/uui-icon-registry-essential": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-button-copy-text": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button-copy-text/-/uui-button-copy-text-1.14.1.tgz", + "integrity": "sha512-kfJFXdNr0nsXNFkNrwDbx0k9cA8E2YV22Vm9vz3fmulcBJyJW+fs6MW+k8JJMiSvXfMPZOPxmQKG4mTFl9x6pA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1", + "@umbraco-ui/uui-button": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-button-group": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button-group/-/uui-button-group-1.14.1.tgz", + "integrity": "sha512-oJpp3U7Ec5sl304PbhDB/pCXLKkHMJ4bYSLr9kngi3eU1n66RCVpRFNSowBuo/ciKgWWNoTcYPJCcimamd6OQQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-button-inline-create": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-button-inline-create/-/uui-button-inline-create-1.14.1.tgz", + "integrity": "sha512-q92E/jfPRSQN7+pgWpq65mTuIGvdJ/M+Kp23ru4ziTLRTkLiGp2ULKwICP+G2RsrfLfGzjmrSzjbTlhC5C13lA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-card": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card/-/uui-card-1.14.1.tgz", + "integrity": "sha512-cfvoUvqgG4lYwNgq0X0iVIj1OJ03cEmLqrWnChUDULFu4JKwO+CDUeKK1R75t/QNgPoR569bDuXaWJ8m56LoBg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-card-block-type": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-block-type/-/uui-card-block-type-1.14.1.tgz", + "integrity": "sha512-dl9Hxa56Z+te3/oAiRFZLTsSjr8YTGKW/u1Gz8lpuU7qQzGXwZkwNQt7S0GHd4BnUwulS5sfa2V2c/IXFH45oQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1", + "@umbraco-ui/uui-card": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-card-content-node": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-content-node/-/uui-card-content-node-1.14.1.tgz", + "integrity": "sha512-56zGxxZ8hGrMJePgBh11TTLKxUbDYqtiX4DhTaImACVp8H/jK6bWGvrmIK3dlq0IbK82mnanHYd3IxCiuZejxg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1", + "@umbraco-ui/uui-card": "1.14.1", + "@umbraco-ui/uui-icon": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-card-media": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-media/-/uui-card-media-1.14.1.tgz", + "integrity": "sha512-6/XJSaJT3Px4FrkArVQeRvkBUyoWhIDJCZAxbrvWsFdpEhRxqkLZdzqCeTdcWfZQf228ijKW7z9Fqvdaf2ZTqw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1", + "@umbraco-ui/uui-card": "1.14.1", + "@umbraco-ui/uui-symbol-file": "1.14.1", + "@umbraco-ui/uui-symbol-folder": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-card-user": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-card-user/-/uui-card-user-1.14.1.tgz", + "integrity": "sha512-yoyOuKpzWghuVY7j5AZJLTmmzM1+4EHTqSxbDG04Bi0RM35+o9Rr8m0rEyyov/pRPSn47dpzUFHWxbrYJojSxQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-avatar": "1.14.1", + "@umbraco-ui/uui-base": "1.14.1", + "@umbraco-ui/uui-card": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-caret": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-caret/-/uui-caret-1.14.1.tgz", + "integrity": "sha512-6z+ZGNQtpGs4wwg5jO91QUGqywJuDkg5QL4oXC5gaXlsf3SGH7Qc4hwsNiNjkiFjUmfIR2cafGtyZeziWjAIvg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-checkbox": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-checkbox/-/uui-checkbox-1.14.1.tgz", + "integrity": "sha512-xabQds7W7BXkFtIomPq+HSzOitZiYRPB1v/GN/y/EtQ/f6/zUAiLvE3IJZx8hIgF7Z75RkTANRF5GhPQPN+Cwg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1", + "@umbraco-ui/uui-boolean-input": "1.14.1", + "@umbraco-ui/uui-icon-registry-essential": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-color-area": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-area/-/uui-color-area-1.14.1.tgz", + "integrity": "sha512-I7O7XH/VWHROywwudJG1Z5mgarlabpZXUoRdeqCfBwtbgIstO+Nh812eGwCEyISBeNOuPUKwM1aamAG4XBRQ9A==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1", + "colord": "^2.9.3" + } + }, + "node_modules/@umbraco-ui/uui-color-picker": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-picker/-/uui-color-picker-1.14.2.tgz", + "integrity": "sha512-0YWyrhALzg3WRT+YoMpgT0OjuT+5K3wo65fA97EHno+KKzYIbpytxqGnkRwn2A0qVwHsuytC2yzXMLO7t+6eTw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1", + "@umbraco-ui/uui-popover-container": "1.14.2", + "colord": "^2.9.3" + } + }, + "node_modules/@umbraco-ui/uui-color-slider": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-slider/-/uui-color-slider-1.14.1.tgz", + "integrity": "sha512-DmzE/D20HtvVkYgw5imbjyuJfIooZMxM2ViqemzwlnWUiuEkGLOdzEybuwHLa2leMlNmhWHotUN6JRK/0L7hSA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-color-swatch": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-swatch/-/uui-color-swatch-1.14.1.tgz", + "integrity": "sha512-PMlNKgCuVgfhUgVjtLVbaLQYcPGQMIs8d33EI0l1422MJtkp2ecn9xqJ840r1t+8Ly5OrANc6PPPr1vTvdV+wQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1", + "@umbraco-ui/uui-icon-registry-essential": "1.14.1", + "colord": "^2.9.3" + } + }, + "node_modules/@umbraco-ui/uui-color-swatches": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-color-swatches/-/uui-color-swatches-1.14.1.tgz", + "integrity": "sha512-8R2iKw62ZY8op+ONOQhpblXO44jKF4tulfFniQznGVBOcIa4PZHn/Q5TYNFTzXp+EUNaZsR7pcuna313yxYTow==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1", + "@umbraco-ui/uui-color-swatch": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-combobox": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-combobox/-/uui-combobox-1.14.2.tgz", + "integrity": "sha512-y+tBBR+nZrt3A8n3iMQLkRJM+GN62/E34YfR+UoY9HdziT9wKTeNxXWSM2VmJa5GkYqvKaFf2R2PQiN4v3HRBA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1", + "@umbraco-ui/uui-button": "1.14.1", + "@umbraco-ui/uui-combobox-list": "1.14.1", + "@umbraco-ui/uui-icon": "1.14.1", + "@umbraco-ui/uui-popover-container": "1.14.2", + "@umbraco-ui/uui-scroll-container": "1.14.1", + "@umbraco-ui/uui-symbol-expand": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-combobox-list": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-combobox-list/-/uui-combobox-list-1.14.1.tgz", + "integrity": "sha512-mc3I1Rwydmu+emSPuLBr6LeX6tGsEip28oHp3RSveUrEo+BaCIOhTH4yZRD+kXC3KqYMd9LaNldmSbndAALI1Q==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-css": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-css/-/uui-css-1.14.1.tgz", + "integrity": "sha512-J5wtUKx0gCc4K2R6wkXk6pQJEJzy8M5a/npOignp0EcHxoOOLHQyoTQoS6TffK1FBFD0QwrsiS7fHyJFRbWaDA==", + "dev": true, + "license": "MIT", + "peer": true, + "peerDependencies": { + "lit": ">=2.8.0" + } + }, + "node_modules/@umbraco-ui/uui-dialog": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-dialog/-/uui-dialog-1.14.1.tgz", + "integrity": "sha512-hUSZLCxS12SXJnx4NSO7MSZOOPYLF61lZk5SFz3z1JMqsAjn06Rj9rWaM+Yol4LFlJdio1jmQn6KzwlQblW/Sw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1", + "@umbraco-ui/uui-css": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-dialog-layout": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-dialog-layout/-/uui-dialog-layout-1.14.1.tgz", + "integrity": "sha512-7G+8U8iYYTkiQruljL5focZgSwVaw6AeWFfIETaSqCsOjqtM8QnrcHXMDuncbPUDGe01B7EI9fMC3PpB+jTLzg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-file-dropzone": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-file-dropzone/-/uui-file-dropzone-1.14.1.tgz", + "integrity": "sha512-KSYuwmvzUNA3fUp/zRmhwE7jL9Q/FEIvoI1Wx01mRtodOkDaEnntYUwwAko0cGw8boVQ9IkS00771TXxKX0dbg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1", + "@umbraco-ui/uui-symbol-file-dropzone": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-file-preview": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-file-preview/-/uui-file-preview-1.14.1.tgz", + "integrity": "sha512-kJy5HPLakwDKfRz9Z2kX/ZrpFNws/6jq4NXCC9OhBqZ87NHM/OZQ5wY0AwUFbwTHu3+HlJXhKPUQ8kcfnxzh0w==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1", + "@umbraco-ui/uui-symbol-file": "1.14.1", + "@umbraco-ui/uui-symbol-file-thumbnail": "1.14.1", + "@umbraco-ui/uui-symbol-folder": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-form": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form/-/uui-form-1.14.1.tgz", + "integrity": "sha512-hgdJygXYJmTzgkdao9XTnFmBGg3vUSmCsJGyKbx94yScvb0C/kf1tHQj1qTRfoRH+dn35G05DIvYWTTGPtfKjg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-form-layout-item": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form-layout-item/-/uui-form-layout-item-1.14.1.tgz", + "integrity": "sha512-1jZCT8A8SMLJgXu06gTCIP8olT9ycplRMNwJnBw5BO6mH4IM1z1A2gS353W1nEmxghxHHLOkFj0YpRAVZ7SYFw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1", + "@umbraco-ui/uui-form-validation-message": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-form-validation-message": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-form-validation-message/-/uui-form-validation-message-1.14.1.tgz", + "integrity": "sha512-IWs4bIysbgl9V614BGIAPIDVmbNc1XRVWgrmtcDbIqXICWEZJVGoG24p1vatq2MUQzvgjyuqhWYbKNfeyvxYWQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-icon": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon/-/uui-icon-1.14.1.tgz", + "integrity": "sha512-8AeS20Wi46vHiDJ5piv7LeFHrGK+Thuvairhv32SR0EuVDS12treR2Bq2HdFLBrKH6JUVLN2C8XeN7xOoR89oQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-icon-registry": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon-registry/-/uui-icon-registry-1.14.1.tgz", + "integrity": "sha512-VwQy66wjEHSd1ZeGuUikcRLnPGUaVOC1ZZ+3xeVF9yyt0HlHM5oC8wWFyXHA38rfeJqZZJu43vi/SigUnfD62Q==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1", + "@umbraco-ui/uui-icon": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-icon-registry-essential": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-icon-registry-essential/-/uui-icon-registry-essential-1.14.1.tgz", + "integrity": "sha512-AxQ8HhZ5q3oXBHneEqW6krLeodCHEPbNgKxukF/xt4PPTOm1twrL/Li9k4RmTnv9IbM/tjcnEXRsBT2PDxJYAw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1", + "@umbraco-ui/uui-icon-registry": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-input": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input/-/uui-input-1.14.1.tgz", + "integrity": "sha512-17JqrblBduXemJZkV5hvYk11TmMgfyCVPBeZo50qotgfC9Pj1m3LRUiTZ0ANMP8VG6Pnur8LxXUJbXSdLqeNVw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-input-file": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-file/-/uui-input-file-1.14.1.tgz", + "integrity": "sha512-1PNmly2DqvmjqUUPR7zIfdL8SvAQNK5BQnXuVobWEYL7b2om4yin2ZAtvSRrNWq5GfvY9WaQ8yHMutPIGjIq3Q==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-action-bar": "1.14.1", + "@umbraco-ui/uui-base": "1.14.1", + "@umbraco-ui/uui-button": "1.14.1", + "@umbraco-ui/uui-file-dropzone": "1.14.1", + "@umbraco-ui/uui-icon": "1.14.1", + "@umbraco-ui/uui-icon-registry-essential": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-input-lock": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-lock/-/uui-input-lock-1.14.1.tgz", + "integrity": "sha512-z3VjqUB8aaXqmu4QVzRXLtUPcr+9OokEbswK8mXDgYNoBFuIqr7LNM8+Bwtt3Yr1E90+8RI3ATby9nqiIQLeDg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1", + "@umbraco-ui/uui-button": "1.14.1", + "@umbraco-ui/uui-icon": "1.14.1", + "@umbraco-ui/uui-input": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-input-password": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-input-password/-/uui-input-password-1.14.1.tgz", + "integrity": "sha512-7S5iZkSFlWdYt7SsOGnXNrrTv1bXHpG6Cg/8xIxUD4cqbz2ckr8NrVCtkyELlJPuJqUMg08/WwY2Pr8RumBScw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1", + "@umbraco-ui/uui-icon-registry-essential": "1.14.1", + "@umbraco-ui/uui-input": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-keyboard-shortcut": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-keyboard-shortcut/-/uui-keyboard-shortcut-1.14.1.tgz", + "integrity": "sha512-XVeiahiUazGssS0/Wfhjnlg5nshWXwMjVY1IvfpUm3g3576NA4mMdeN7F7/8e6mVAzxLDx/xNG5VJA5nsIkpqQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-label": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-label/-/uui-label-1.14.1.tgz", + "integrity": "sha512-or860nfJ0QTZAuKp8l8HIcmuFlJhGCk1mxvLxQVSQav6NSIuQ8WBvI5rDoFi2gAFfhYYFvudpvkgVmqCCRZ7bA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-loader": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader/-/uui-loader-1.14.1.tgz", + "integrity": "sha512-U3z7mAei2BZqFqYImegzQeG3Qg8tCvlG7GcCR4vj8eQ8L3Y8EqRTI3cF3Izx4GranuJjTJ45HEw/lhMvZU5xlQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-loader-bar": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader-bar/-/uui-loader-bar-1.14.1.tgz", + "integrity": "sha512-crzU1MXPN3gVwCGJgRt8Y7qY99jrHSMZlrM9lybqmqmjD3dOW+lEcZjP5zxoCMC2D1JY0gk0JB088FIzsB9hRA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-loader-circle": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-loader-circle/-/uui-loader-circle-1.14.1.tgz", + "integrity": "sha512-aCPtJmA5mfo9cf5hV34cSY3J3c4ttffnV/I4FVZ9Lm2kja1IzUSx197a88nZoA6TngbBq5ZPeNomwqSjpxM5hA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-menu-item": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-menu-item/-/uui-menu-item-1.14.1.tgz", + "integrity": "sha512-AURyV7i0ydKeYNiz6yI9m3bFXFfbKIKNkicyznobxscr36HmQGEN+reVXnRL4cbW/NNgSvIC8BM///a5cQoyfQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1", + "@umbraco-ui/uui-loader-bar": "1.14.1", + "@umbraco-ui/uui-symbol-expand": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-modal": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-modal/-/uui-modal-1.14.1.tgz", + "integrity": "sha512-b0vxoawsZkj701fwLeVdUOd95TlXqZOwwWecTFxPj2ttQw54ReCziABbVGlYuJso6Ze/dR3rflR2i73EhYhiyw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-pagination": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-pagination/-/uui-pagination-1.14.1.tgz", + "integrity": "sha512-DDKiypckWLQw5/qpheyxkxho0wlo9AtMHvxovUzjjuhTY9tZ6R+2SF9rJdzJuMWINOx/h9YZ+damKubLSpquYQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1", + "@umbraco-ui/uui-button": "1.14.1", + "@umbraco-ui/uui-button-group": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-popover": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-popover/-/uui-popover-1.14.1.tgz", + "integrity": "sha512-fVEsj8UZREw/JAjAIRJWm3P8ncpuhx2FNSKR/3FaQxOcXNRJx0EQWkEpSV7AMxUADcpQH5xqEFL74MqaREuTGw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-popover-container": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-popover-container/-/uui-popover-container-1.14.2.tgz", + "integrity": "sha512-GDG953hPRTmjeI7rmjNQd0d/LcbwkRneXvCe7FYsT5d8ouUJ+P0GnQiuVd8r0aLN+JSit0mBLF+tfBhKpsSf+Q==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-progress-bar": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-progress-bar/-/uui-progress-bar-1.14.1.tgz", + "integrity": "sha512-3YFs5XrxuNOuOVj9pga/QWonq7YVW0kOsUqY79DYyISZysYiZKF+CvoXfx+VcomLW6I8LUa23/nRwtpd3qt0qA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-radio": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-radio/-/uui-radio-1.14.1.tgz", + "integrity": "sha512-2ULCr5YZFqXBombaaIrQ1uM8ADIZW+h0y1lEYydkdyICQiRL3qKSqunr8Wkgxr0gtGMZSNH+qALuky+1mIjBZQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-range-slider": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-range-slider/-/uui-range-slider-1.14.1.tgz", + "integrity": "sha512-0aQObWAAzWD1K1Zmeh0OBm251dc0Lg82LygVhNvhMqy7CzUygS/F5bMAFanAQzORfdjeWSoX4rJyzX8bJLOX/A==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-ref": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref/-/uui-ref-1.14.1.tgz", + "integrity": "sha512-F6OzXuXRbo/gQLXb1c3QiHlaJevq2oFDaOI0lh4DRD4s4cWVpUcJ/4G2AX92GLcPwU+ddPpuDuTCx7nh6egnqg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-ref-list": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-list/-/uui-ref-list-1.14.1.tgz", + "integrity": "sha512-g6QgLZ/89BN8eejBeorKo4hHBe2MfAJWEX0fpM4RkpPlrxwltFpvDWCMv7Ge8rzrZocJSzgugm+ZzOOzIX/8Mw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-ref-node": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node/-/uui-ref-node-1.14.1.tgz", + "integrity": "sha512-PpF1Sp4VcxHPFF9I7S9WgIjIEt7ogYpGvDxXAuVxs0932LQkWby3Jgzx4xEzwOVVOXxTXKyvzq4t5UD8K3SziQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1", + "@umbraco-ui/uui-icon": "1.14.1", + "@umbraco-ui/uui-ref": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-ref-node-data-type": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-data-type/-/uui-ref-node-data-type-1.14.1.tgz", + "integrity": "sha512-KY39RAgo76iL/NIQe8ApP1Rt408sfJ5R7UMNyIkKvfr+qRImPIj3VWD5Z5bBooj5MsxLIz8mUbxH77G2BVhc6A==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1", + "@umbraco-ui/uui-ref-node": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-ref-node-document-type": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-document-type/-/uui-ref-node-document-type-1.14.1.tgz", + "integrity": "sha512-eIewTOCp5C4h231nMWAFxd5BxOWE3B/1U1xH7sz6pierRGrfY805xsvhhj0XsNZF0dW+C0E1tucRsB6rXNiAcA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1", + "@umbraco-ui/uui-ref-node": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-ref-node-form": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-form/-/uui-ref-node-form-1.14.1.tgz", + "integrity": "sha512-5wRqUnJS/g63uCB8LCJ7+OKE98meEQDDXELMXVxRyQ6PbKG9Zfg9RlYaoX84HsOG91r6zYR2PcU6CEkVHPcRqw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1", + "@umbraco-ui/uui-ref-node": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-ref-node-member": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-member/-/uui-ref-node-member-1.14.1.tgz", + "integrity": "sha512-KwMkeOQJ+4tG5pPGsWIdMKNCmJWqqGpY8nTL/5Z6dY/i8OaZWmk5506hvOLXo6Z/7sdZitk243ZNc5eVNFv8wA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1", + "@umbraco-ui/uui-ref-node": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-ref-node-package": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-package/-/uui-ref-node-package-1.14.1.tgz", + "integrity": "sha512-T7H624F2l/76KXp0F9NhDBV2U/jS2Xt9D3/l5nw5apqPu8LH/r9jweLC33XnFyAtU/eUyjnQyBKO4y3dfRmB2A==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1", + "@umbraco-ui/uui-ref-node": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-ref-node-user": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-ref-node-user/-/uui-ref-node-user-1.14.1.tgz", + "integrity": "sha512-OsC74T5HrbrGYzgqphVoT+QRsjiv+6mcVjIZAtvfqU7sDEBOglM72GGhgtsqjQ/oMyc2kAIcZWtlbQbkwIaaFg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1", + "@umbraco-ui/uui-ref-node": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-scroll-container": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-scroll-container/-/uui-scroll-container-1.14.1.tgz", + "integrity": "sha512-ForbIiZtzhP/xWij1kvdduY/CEm3dg3CjsaWT4llJTWnxOwUMc5vT9HXigur/CQs+JbbraajG9mfEEv0O1FNPQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-select": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-select/-/uui-select-1.14.1.tgz", + "integrity": "sha512-q4mqmu+TMNbiRY0mI8f+Jcye9Af/P1SCcQLmk1RPf41KGh+/HzOz0RjB6+dugkqbDUk019j2zHTxRD4Ppm/o0A==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-slider": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-slider/-/uui-slider-1.14.1.tgz", + "integrity": "sha512-arvr/mRfJxrrcNa9ngsLFrp/NXneQlAztPntTYSkrcBbvvT37fqxLDcx/hAiYaJyMpJz1VmlFPp8VXC5X52ISQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-symbol-expand": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-expand/-/uui-symbol-expand-1.14.1.tgz", + "integrity": "sha512-lhbtxs+XDm32Lb2iOWiv3KwRjxpqCHfCntrRUHbYMDgldFXrfynX5hPSsIxPWSvnRy6ojD+y81jHuXw84ZnfUw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-symbol-file": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file/-/uui-symbol-file-1.14.1.tgz", + "integrity": "sha512-s4bvuJ9pwc4TZFBi1QEwijZpFf9x95VKMQCNl8MJ7PqbKJPUUNnpMbWuSJmA5ChrPCju3++wtC25H5XUwD89hQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-symbol-file-dropzone": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file-dropzone/-/uui-symbol-file-dropzone-1.14.1.tgz", + "integrity": "sha512-9zVztMKfPxGX2bC1clXSbq57+UtoAMvXHzROJjsCdkL6ft8mbkTiRv3ta/0cW2q62rBT77H293YD6GS5CBfuTg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-symbol-file-thumbnail": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-file-thumbnail/-/uui-symbol-file-thumbnail-1.14.1.tgz", + "integrity": "sha512-BaYy8EwQ83au4Z33wiA1hpLBSB3L4wEQfhs3qCEdSQ45vqCEwVFO4W5ira2EjM4zxsCxXsH2Nlo2jVbWdAqzoQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-symbol-folder": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-folder/-/uui-symbol-folder-1.14.1.tgz", + "integrity": "sha512-5y+Wc3SDeOTMYQSGAO/IDxB/MMCUfi6gfJ76qiNNVPaMcqL2uHxifzbwpM8X5bQCgDQ2YU/PHfAWvQGdZWx2Pw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-symbol-lock": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-lock/-/uui-symbol-lock-1.14.1.tgz", + "integrity": "sha512-VOkehn1kth6dLq8nlOQ3xWRK7fJSscbC5MEQ3pbJEwJZjgms1LKzNxWGcRv0F/Rju87ZfsNZlW3mLH43zEm1dw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-symbol-more": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-more/-/uui-symbol-more-1.14.1.tgz", + "integrity": "sha512-AXEPgnE0GOErAR/eMrqw2M0sedZdGxPNJqpApSUUjaDd+MXeVDzRQ08K+sbPJVDXPkirc/70gO1kkasQ80S6hA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-symbol-sort": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-symbol-sort/-/uui-symbol-sort-1.14.1.tgz", + "integrity": "sha512-IuiWSRuQmCa88kSIudfq0tcxwiqSCfow4xsBEEoFAjYtNpGtW9HJ2yeA9exT76XH2m2zgY1FZu9Cf6FxB/B86A==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-table": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-table/-/uui-table-1.14.1.tgz", + "integrity": "sha512-Bt62bKQSmVM8yPv9y0HZ0ywho5T1yXUJsP6q4Bx1g7x3lYotXB8ekLffMSlXmupNOEoHXVQn5ZInTRqeQF8H+Q==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-tabs": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-tabs/-/uui-tabs-1.14.2.tgz", + "integrity": "sha512-Qb5ZHVGljjkOZPc49jZPMdHhD11FGS6F8DbNjpWx1ghBvQGM4uIWGfnkZk7YSVZbTMACequyanyx/jZVHLKVRg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1", + "@umbraco-ui/uui-button": "1.14.1", + "@umbraco-ui/uui-popover-container": "1.14.2", + "@umbraco-ui/uui-symbol-more": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-tag": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-tag/-/uui-tag-1.14.1.tgz", + "integrity": "sha512-8RufQ5snD+sHjr4VqWWd2OPWIXyX+6iImsm630XAv4UA/5PO6XXbifHwlsBpTsLrdMrcn+na1xp8ZtJfe9y5oA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-textarea": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-textarea/-/uui-textarea-1.14.1.tgz", + "integrity": "sha512-YptYir6xNAwX1Y3n1k34yem3sbTlO18CgSvvNZw3bhKjIo3hYM3HdKS07H5pvgRmJRYQ3zbNQbbJreTnVel/Zg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-toast-notification": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification/-/uui-toast-notification-1.14.1.tgz", + "integrity": "sha512-6vpIAEedHg/wr/bWmkD/JPwSOxnmg8eZMiF1FBmZWJA9raiiUcIGjTt/OgNTAejTj6lRldFW/hJUTBwfWOABnQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1", + "@umbraco-ui/uui-button": "1.14.1", + "@umbraco-ui/uui-css": "1.14.1", + "@umbraco-ui/uui-icon": "1.14.1", + "@umbraco-ui/uui-icon-registry-essential": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-toast-notification-container": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification-container/-/uui-toast-notification-container-1.14.1.tgz", + "integrity": "sha512-NbNxLFOqApyUuOYCCsAxQvBzQJ4gWOxNn+9PLRqkVtTVHOLZLmsDYMjhQKqHDJ7fuwi8hEAO5rz7q2Vluhg4lg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1", + "@umbraco-ui/uui-toast-notification": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-toast-notification-layout": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toast-notification-layout/-/uui-toast-notification-layout-1.14.1.tgz", + "integrity": "sha512-uJDEzB2hJy7icd7yUESWvQUjGhgHuWRwy0tdFTeJr4Ghu/7R7N6fx0Q4qnCgYQfZWhQdKby+Skisxcnqb8J7hA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1", + "@umbraco-ui/uui-css": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-toggle": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-toggle/-/uui-toggle-1.14.1.tgz", + "integrity": "sha512-Py0mWbkN8no0CJAwpGaKotwyUSkQ4EWST1N2iTeBD5s9rYTQwc74ovH2SAyJdHNDfzF894jLB5M7jlGFzJlbgg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1", + "@umbraco-ui/uui-boolean-input": "1.14.1" + } + }, + "node_modules/@umbraco-ui/uui-visually-hidden": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@umbraco-ui/uui-visually-hidden/-/uui-visually-hidden-1.14.1.tgz", + "integrity": "sha512-be1AJdwpbe1W9KMW7BtuVkheYmMroPsBdrs4TrSihw/NfDp3VsP0S9mkmeFZILGW8CMQ7qGcb6Eg1LdJoSYHjw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@umbraco-ui/uui-base": "1.14.1" + } + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/c12": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/c12/-/c12-2.0.1.tgz", + "integrity": "sha512-Z4JgsKXHG37C6PYUtIxCfLJZvo6FyhHJoClwwb9ftUkLpPSkuYqn6Tr+vnaN8hymm0kIbcg6Ey3kv/Q71k5w/A==", + "dev": true, + "license": "MIT", + "dependencies": { + "chokidar": "^4.0.1", + "confbox": "^0.1.7", + "defu": "^6.1.4", + "dotenv": "^16.4.5", + "giget": "^1.2.3", + "jiti": "^2.3.0", + "mlly": "^1.7.1", + "ohash": "^1.1.4", + "pathe": "^1.1.2", + "perfect-debounce": "^1.0.0", + "pkg-types": "^1.2.0", + "rc9": "^2.1.2" + }, + "peerDependencies": { + "magicast": "^0.3.5" + }, + "peerDependenciesMeta": { + "magicast": { + "optional": true + } + } + }, + "node_modules/chalk": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/citty": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/citty/-/citty-0.1.6.tgz", + "integrity": "sha512-tskPPKEs8D2KPafUypv2gxwJP8h/OaJmC82QQGGDQcHvXX43xF2VDACcJVmZ0EuSxkpO9Kc4MlrA3q0+FG58AQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "consola": "^3.2.3" + } + }, + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/commander": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-13.0.0.tgz", + "integrity": "sha512-oPYleIY8wmTVzkvQq10AEok6YcTC4sRUBl8F9gVuwchGVUCTbl/vhLTaQqutuuySYOsu8YTgV+OxKc/8Yvx+mQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/confbox": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", + "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/consola": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/consola/-/consola-3.4.2.tgz", + "integrity": "sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.18.0 || >=16.10.0" + } + }, + "node_modules/crelt": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz", + "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.1" + }, + "bin": { + "cross-env": "src/bin/cross-env.js", + "cross-env-shell": "src/bin/cross-env-shell.js" + }, + "engines": { + "node": ">=10.14", + "npm": ">=6", + "yarn": ">=1" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, + "node_modules/defu": { + "version": "6.1.4", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", + "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", + "dev": true, + "license": "MIT" + }, + "node_modules/destr": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz", + "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==", + "dev": true, + "license": "MIT" + }, + "node_modules/diff": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz", + "integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dompurify": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.6.tgz", + "integrity": "sha512-/2GogDQlohXPZe6D6NOgQvXLPSYBqIWMnZ8zzOhn09REE4eyAzb+Hed3jhoM9OkuaJ8P6ZGTTVWQKAi8ieIzfQ==", + "dev": true, + "license": "(MPL-2.0 OR Apache-2.0)", + "peer": true, + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } + }, + "node_modules/dotenv": { + "version": "16.6.1", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", + "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/element-internals-polyfill": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/element-internals-polyfill/-/element-internals-polyfill-3.0.2.tgz", + "integrity": "sha512-uB0/Qube3lkwh8SmkTnGIyUgJ9YdqVSzIoHMRCEQjAbD4Y5UzsVbch1tIxjTgUe5k3gy1U0ZMKMJ90A81lqwig==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "license": "BSD-2-Clause", + "peer": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/esbuild": { + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.8.tgz", + "integrity": "sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.8", + "@esbuild/android-arm": "0.25.8", + "@esbuild/android-arm64": "0.25.8", + "@esbuild/android-x64": "0.25.8", + "@esbuild/darwin-arm64": "0.25.8", + "@esbuild/darwin-x64": "0.25.8", + "@esbuild/freebsd-arm64": "0.25.8", + "@esbuild/freebsd-x64": "0.25.8", + "@esbuild/linux-arm": "0.25.8", + "@esbuild/linux-arm64": "0.25.8", + "@esbuild/linux-ia32": "0.25.8", + "@esbuild/linux-loong64": "0.25.8", + "@esbuild/linux-mips64el": "0.25.8", + "@esbuild/linux-ppc64": "0.25.8", + "@esbuild/linux-riscv64": "0.25.8", + "@esbuild/linux-s390x": "0.25.8", + "@esbuild/linux-x64": "0.25.8", + "@esbuild/netbsd-arm64": "0.25.8", + "@esbuild/netbsd-x64": "0.25.8", + "@esbuild/openbsd-arm64": "0.25.8", + "@esbuild/openbsd-x64": "0.25.8", + "@esbuild/openharmony-arm64": "0.25.8", + "@esbuild/sunos-x64": "0.25.8", + "@esbuild/win32-arm64": "0.25.8", + "@esbuild/win32-ia32": "0.25.8", + "@esbuild/win32-x64": "0.25.8" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/fdir": { + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", + "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/giget": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/giget/-/giget-1.2.5.tgz", + "integrity": "sha512-r1ekGw/Bgpi3HLV3h1MRBIlSAdHoIMklpaQ3OQLFcRw9PwAj2rqigvIbg+dBUI51OxVI2jsEtDywDBjSiuf7Ug==", + "dev": true, + "license": "MIT", + "dependencies": { + "citty": "^0.1.6", + "consola": "^3.4.0", + "defu": "^6.1.4", + "node-fetch-native": "^1.6.6", + "nypm": "^0.5.4", + "pathe": "^2.0.3", + "tar": "^6.2.1" + }, + "bin": { + "giget": "dist/cli.mjs" + } + }, + "node_modules/giget/node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/jiti": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.5.1.tgz", + "integrity": "sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==", + "dev": true, + "license": "MIT", + "bin": { + "jiti": "lib/jiti-cli.mjs" + } + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "uc.micro": "^2.0.0" + } + }, + "node_modules/linkifyjs": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/linkifyjs/-/linkifyjs-4.3.2.tgz", + "integrity": "sha512-NT1CJtq3hHIreOianA8aSXn6Cw0JzYOuDQbOrSPe7gqFnCpKP++MQe3ODgO3oh2GJFORkAAdqredOa60z63GbA==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/lit": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/lit/-/lit-3.3.1.tgz", + "integrity": "sha512-Ksr/8L3PTapbdXJCk+EJVB78jDodUMaP54gD24W186zGRARvwrsPfS60wae/SSCTCNZVPd1chXqio1qHQmu4NA==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "@lit/reactive-element": "^2.1.0", + "lit-element": "^4.2.0", + "lit-html": "^3.3.0" + } + }, + "node_modules/lit-element": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.2.1.tgz", + "integrity": "sha512-WGAWRGzirAgyphK2urmYOV72tlvnxw7YfyLDgQ+OZnM9vQQBQnumQ7jUJe6unEzwGU3ahFOjuz1iz1jjrpCPuw==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "@lit-labs/ssr-dom-shim": "^1.4.0", + "@lit/reactive-element": "^2.1.0", + "lit-html": "^3.3.0" + } + }, + "node_modules/lit-html": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.3.1.tgz", + "integrity": "sha512-S9hbyDu/vs1qNrithiNyeyv64c9yqiW9l+DBgI18fL+MTvOtWoFR0FWiyq1TxaYef5wNlpEmzlXoBlZEO+WjoA==", + "dev": true, + "license": "BSD-3-Clause", + "peer": true, + "dependencies": { + "@types/trusted-types": "^2.0.2" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true, + "license": "MIT" + }, + "node_modules/markdown-it": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, + "node_modules/marked": { + "version": "15.0.12", + "resolved": "https://registry.npmjs.org/marked/-/marked-15.0.12.tgz", + "integrity": "sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA==", + "dev": true, + "license": "MIT", + "peer": true, + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mlly": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.4.tgz", + "integrity": "sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^8.14.0", + "pathe": "^2.0.1", + "pkg-types": "^1.3.0", + "ufo": "^1.5.4" + } + }, + "node_modules/mlly/node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, + "node_modules/monaco-editor": { + "version": "0.52.2", + "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.52.2.tgz", + "integrity": "sha512-GEQWEZmfkOGLdd3XK8ryrfWz3AIP8YymVXiPHEdewrUq7mh0qrKrfHLNCXcbB6sTnMLnOZ3ztSiKcciFUkIJwQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "deprecated": "Use your platform's native DOMException instead", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "license": "MIT", + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "node_modules/node-fetch-native": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.6.tgz", + "integrity": "sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/nypm": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.5.4.tgz", + "integrity": "sha512-X0SNNrZiGU8/e/zAB7sCTtdxWTMSIO73q+xuKgglm2Yvzwlo8UoC5FNySQFCvl84uPaeADkqHUZUkWy4aH4xOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "citty": "^0.1.6", + "consola": "^3.4.0", + "pathe": "^2.0.3", + "pkg-types": "^1.3.1", + "tinyexec": "^0.3.2", + "ufo": "^1.5.4" + }, + "bin": { + "nypm": "dist/cli.mjs" + }, + "engines": { + "node": "^14.16.0 || >=16.10.0" + } + }, + "node_modules/nypm/node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, + "node_modules/ohash": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/ohash/-/ohash-1.1.6.tgz", + "integrity": "sha512-TBu7PtV8YkAZn0tSxobKY2n2aAQva936lhRrj6957aDaCf9IEtqsKbgMzXE/F/sjqYOwmrukeORHNLe5glk7Cg==", + "dev": true, + "license": "MIT" + }, + "node_modules/orderedmap": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/orderedmap/-/orderedmap-2.1.1.tgz", + "integrity": "sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/perfect-debounce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", + "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pkg-types": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", + "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "confbox": "^0.1.8", + "mlly": "^1.7.4", + "pathe": "^2.0.1" + } + }, + "node_modules/pkg-types/node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prosemirror-changeset": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/prosemirror-changeset/-/prosemirror-changeset-2.3.1.tgz", + "integrity": "sha512-j0kORIBm8ayJNl3zQvD1TTPHJX3g042et6y/KQhZhnPrruO8exkTgG8X+NRpj7kIyMMEx74Xb3DyMIBtO0IKkQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "prosemirror-transform": "^1.0.0" + } + }, + "node_modules/prosemirror-collab": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/prosemirror-collab/-/prosemirror-collab-1.3.1.tgz", + "integrity": "sha512-4SnynYR9TTYaQVXd/ieUvsVV4PDMBzrq2xPUWutHivDuOshZXqQ5rGbZM84HEaXKbLdItse7weMGOUdDVcLKEQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "prosemirror-state": "^1.0.0" + } + }, + "node_modules/prosemirror-commands": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/prosemirror-commands/-/prosemirror-commands-1.7.1.tgz", + "integrity": "sha512-rT7qZnQtx5c0/y/KlYaGvtG411S97UaL6gdp6RIZ23DLHanMYLyfGBV5DtSnZdthQql7W+lEVbpSfwtO8T+L2w==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "prosemirror-model": "^1.0.0", + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.10.2" + } + }, + "node_modules/prosemirror-dropcursor": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/prosemirror-dropcursor/-/prosemirror-dropcursor-1.8.2.tgz", + "integrity": "sha512-CCk6Gyx9+Tt2sbYk5NK0nB1ukHi2ryaRgadV/LvyNuO3ena1payM2z6Cg0vO1ebK8cxbzo41ku2DE5Axj1Zuiw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.1.0", + "prosemirror-view": "^1.1.0" + } + }, + "node_modules/prosemirror-gapcursor": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/prosemirror-gapcursor/-/prosemirror-gapcursor-1.3.2.tgz", + "integrity": "sha512-wtjswVBd2vaQRrnYZaBCbyDqr232Ed4p2QPtRIUK5FuqHYKGWkEwl08oQM4Tw7DOR0FsasARV5uJFvMZWxdNxQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "prosemirror-keymap": "^1.0.0", + "prosemirror-model": "^1.0.0", + "prosemirror-state": "^1.0.0", + "prosemirror-view": "^1.0.0" + } + }, + "node_modules/prosemirror-history": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/prosemirror-history/-/prosemirror-history-1.4.1.tgz", + "integrity": "sha512-2JZD8z2JviJrboD9cPuX/Sv/1ChFng+xh2tChQ2X4bB2HeK+rra/bmJ3xGntCcjhOqIzSDG6Id7e8RJ9QPXLEQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "prosemirror-state": "^1.2.2", + "prosemirror-transform": "^1.0.0", + "prosemirror-view": "^1.31.0", + "rope-sequence": "^1.3.0" + } + }, + "node_modules/prosemirror-inputrules": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/prosemirror-inputrules/-/prosemirror-inputrules-1.5.0.tgz", + "integrity": "sha512-K0xJRCmt+uSw7xesnHmcn72yBGTbY45vm8gXI4LZXbx2Z0jwh5aF9xrGQgrVPu0WbyFVFF3E/o9VhJYz6SQWnA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.0.0" + } + }, + "node_modules/prosemirror-keymap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/prosemirror-keymap/-/prosemirror-keymap-1.2.3.tgz", + "integrity": "sha512-4HucRlpiLd1IPQQXNqeo81BGtkY8Ai5smHhKW9jjPKRc2wQIxksg7Hl1tTI2IfT2B/LgX6bfYvXxEpJl7aKYKw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "prosemirror-state": "^1.0.0", + "w3c-keyname": "^2.2.0" + } + }, + "node_modules/prosemirror-markdown": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/prosemirror-markdown/-/prosemirror-markdown-1.13.2.tgz", + "integrity": "sha512-FPD9rHPdA9fqzNmIIDhhnYQ6WgNoSWX9StUZ8LEKapaXU9i6XgykaHKhp6XMyXlOWetmaFgGDS/nu/w9/vUc5g==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@types/markdown-it": "^14.0.0", + "markdown-it": "^14.0.0", + "prosemirror-model": "^1.25.0" + } + }, + "node_modules/prosemirror-menu": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/prosemirror-menu/-/prosemirror-menu-1.2.5.tgz", + "integrity": "sha512-qwXzynnpBIeg1D7BAtjOusR+81xCp53j7iWu/IargiRZqRjGIlQuu1f3jFi+ehrHhWMLoyOQTSRx/IWZJqOYtQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "crelt": "^1.0.0", + "prosemirror-commands": "^1.0.0", + "prosemirror-history": "^1.0.0", + "prosemirror-state": "^1.0.0" + } + }, + "node_modules/prosemirror-model": { + "version": "1.25.2", + "resolved": "https://registry.npmjs.org/prosemirror-model/-/prosemirror-model-1.25.2.tgz", + "integrity": "sha512-BVypCAJ4SL6jOiTsDffP3Wp6wD69lRhI4zg/iT8JXjp3ccZFiq5WyguxvMKmdKFC3prhaig7wSr8dneDToHE1Q==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "orderedmap": "^2.0.0" + } + }, + "node_modules/prosemirror-schema-basic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/prosemirror-schema-basic/-/prosemirror-schema-basic-1.2.4.tgz", + "integrity": "sha512-ELxP4TlX3yr2v5rM7Sb70SqStq5NvI15c0j9j/gjsrO5vaw+fnnpovCLEGIcpeGfifkuqJwl4fon6b+KdrODYQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "prosemirror-model": "^1.25.0" + } + }, + "node_modules/prosemirror-schema-list": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/prosemirror-schema-list/-/prosemirror-schema-list-1.5.1.tgz", + "integrity": "sha512-927lFx/uwyQaGwJxLWCZRkjXG0p48KpMj6ueoYiu4JX05GGuGcgzAy62dfiV8eFZftgyBUvLx76RsMe20fJl+Q==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "prosemirror-model": "^1.0.0", + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.7.3" + } + }, + "node_modules/prosemirror-state": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/prosemirror-state/-/prosemirror-state-1.4.3.tgz", + "integrity": "sha512-goFKORVbvPuAQaXhpbemJFRKJ2aixr+AZMGiquiqKxaucC6hlpHNZHWgz5R7dS4roHiwq9vDctE//CZ++o0W1Q==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "prosemirror-model": "^1.0.0", + "prosemirror-transform": "^1.0.0", + "prosemirror-view": "^1.27.0" + } + }, + "node_modules/prosemirror-tables": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/prosemirror-tables/-/prosemirror-tables-1.7.1.tgz", + "integrity": "sha512-eRQ97Bf+i9Eby99QbyAiyov43iOKgWa7QCGly+lrDt7efZ1v8NWolhXiB43hSDGIXT1UXgbs4KJN3a06FGpr1Q==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "prosemirror-keymap": "^1.2.2", + "prosemirror-model": "^1.25.0", + "prosemirror-state": "^1.4.3", + "prosemirror-transform": "^1.10.3", + "prosemirror-view": "^1.39.1" + } + }, + "node_modules/prosemirror-trailing-node": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/prosemirror-trailing-node/-/prosemirror-trailing-node-3.0.0.tgz", + "integrity": "sha512-xiun5/3q0w5eRnGYfNlW1uU9W6x5MoFKWwq/0TIRgt09lv7Hcser2QYV8t4muXbEr+Fwo0geYn79Xs4GKywrRQ==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "@remirror/core-constants": "3.0.0", + "escape-string-regexp": "^4.0.0" + }, + "peerDependencies": { + "prosemirror-model": "^1.22.1", + "prosemirror-state": "^1.4.2", + "prosemirror-view": "^1.33.8" + } + }, + "node_modules/prosemirror-transform": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/prosemirror-transform/-/prosemirror-transform-1.10.4.tgz", + "integrity": "sha512-pwDy22nAnGqNR1feOQKHxoFkkUtepoFAd3r2hbEDsnf4wp57kKA36hXsB3njA9FtONBEwSDnDeCiJe+ItD+ykw==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "prosemirror-model": "^1.21.0" + } + }, + "node_modules/prosemirror-view": { + "version": "1.40.1", + "resolved": "https://registry.npmjs.org/prosemirror-view/-/prosemirror-view-1.40.1.tgz", + "integrity": "sha512-pbwUjt3G7TlsQQHDiYSupWBhJswpLVB09xXm1YiJPdkjkh9Pe7Y51XdLh5VWIZmROLY8UpUpG03lkdhm9lzIBA==", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "prosemirror-model": "^1.20.0", + "prosemirror-state": "^1.0.0", + "prosemirror-transform": "^1.1.0" + } + }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/rc9": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/rc9/-/rc9-2.1.2.tgz", + "integrity": "sha512-btXCnMmRIBINM2LDZoEmOogIZU7Qe7zn4BpomSKZ/ykbLObuBdvG+mFq11DL6fjH1DRwHhrlgtYWG96bJiC7Cg==", + "dev": true, + "license": "MIT", + "dependencies": { + "defu": "^6.1.4", + "destr": "^2.0.3" + } + }, + "node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/rollup": { + "version": "4.45.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.45.1.tgz", + "integrity": "sha512-4iya7Jb76fVpQyLoiVpzUrsjQ12r3dM7fIVz+4NwoYvZOShknRmiv+iu9CClZml5ZLGb0XMcYLutK6w9tgxHDw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.45.1", + "@rollup/rollup-android-arm64": "4.45.1", + "@rollup/rollup-darwin-arm64": "4.45.1", + "@rollup/rollup-darwin-x64": "4.45.1", + "@rollup/rollup-freebsd-arm64": "4.45.1", + "@rollup/rollup-freebsd-x64": "4.45.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.45.1", + "@rollup/rollup-linux-arm-musleabihf": "4.45.1", + "@rollup/rollup-linux-arm64-gnu": "4.45.1", + "@rollup/rollup-linux-arm64-musl": "4.45.1", + "@rollup/rollup-linux-loongarch64-gnu": "4.45.1", + "@rollup/rollup-linux-powerpc64le-gnu": "4.45.1", + "@rollup/rollup-linux-riscv64-gnu": "4.45.1", + "@rollup/rollup-linux-riscv64-musl": "4.45.1", + "@rollup/rollup-linux-s390x-gnu": "4.45.1", + "@rollup/rollup-linux-x64-gnu": "4.45.1", + "@rollup/rollup-linux-x64-musl": "4.45.1", + "@rollup/rollup-win32-arm64-msvc": "4.45.1", + "@rollup/rollup-win32-ia32-msvc": "4.45.1", + "@rollup/rollup-win32-x64-msvc": "4.45.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/rope-sequence": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/rope-sequence/-/rope-sequence-1.3.4.tgz", + "integrity": "sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/rxjs": { + "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "dev": true, + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tinyexec": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", + "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.4.4", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "dev": true, + "license": "0BSD", + "peer": true + }, + "node_modules/typescript": { + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/ufo": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz", + "integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==", + "dev": true, + "license": "MIT" + }, + "node_modules/uglify-js": { + "version": "3.19.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", + "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", + "dev": true, + "license": "BSD-2-Clause", + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/uuid": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", + "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", + "dev": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "peer": true, + "bin": { + "uuid": "dist/esm/bin/uuid" + } + }, + "node_modules/vite": { + "version": "6.3.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", + "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "jiti": ">=1.21.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/w3c-keyname": { + "version": "2.2.8", + "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz", + "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==", + "dev": true, + "license": "MIT", + "peer": true + }, + "node_modules/web-streams-polyfill": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "license": "ISC" + } + } +} diff --git a/src/OpenSourceTest.MyExtension/Client/package.json b/src/OpenSourceTest.MyExtension/Client/package.json new file mode 100644 index 0000000..1b309c6 --- /dev/null +++ b/src/OpenSourceTest.MyExtension/Client/package.json @@ -0,0 +1,21 @@ +{ + "name": "open-source-test-my-extension", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "watch": "tsc && vite build --watch", + "build": "tsc && vite build", + "generate-client": "node scripts/generate-openapi.js https://localhost:5000/umbraco/swagger/opensourcetestmyextension/swagger.json" + }, + "devDependencies": { + "@hey-api/client-fetch": "^0.12.0", + "@hey-api/openapi-ts": "^0.66.7", + "@umbraco-cms/backoffice": "^*", + "chalk": "^5.4.1", + "cross-env": "^7.0.3", + "node-fetch": "^3.3.2", + "typescript": "^5.8.3", + "vite": "^6.3.4" + } +} diff --git a/src/OpenSourceTest.MyExtension/Client/public/umbraco-package.json b/src/OpenSourceTest.MyExtension/Client/public/umbraco-package.json new file mode 100644 index 0000000..9e6ce0d --- /dev/null +++ b/src/OpenSourceTest.MyExtension/Client/public/umbraco-package.json @@ -0,0 +1,14 @@ +{ + "id": "OpenSourceTest.MyExtension", + "name": "OpenSourceTest.MyExtension", + "version": "0.0.0", + "allowTelemetry": true, + "extensions": [ + { + "name": "Open Source Test My Extension Bundle", + "alias": "OpenSourceTest.MyExtension.Bundle", + "type": "bundle", + "js": "/App_Plugins/OpenSourceTestMyExtension/open-source-test-my-extension.js" + } + ] +} \ No newline at end of file diff --git a/src/OpenSourceTest.MyExtension/Client/scripts/generate-openapi.js b/src/OpenSourceTest.MyExtension/Client/scripts/generate-openapi.js new file mode 100644 index 0000000..b320781 --- /dev/null +++ b/src/OpenSourceTest.MyExtension/Client/scripts/generate-openapi.js @@ -0,0 +1,56 @@ +import fetch from 'node-fetch'; +import chalk from 'chalk'; +import { createClient, defaultPlugins } from '@hey-api/openapi-ts'; + +// Start notifying user we are generating the TypeScript client +console.log(chalk.green("Generating OpenAPI client...")); + +const swaggerUrl = process.argv[2]; +if (swaggerUrl === undefined) { + console.error(chalk.red(`ERROR: Missing URL to OpenAPI spec`)); + console.error(`Please provide the URL to the OpenAPI spec as the first argument found in ${chalk.yellow('package.json')}`); + console.error(`Example: node generate-openapi.js ${chalk.yellow('https://localhost:44331/umbraco/swagger/REPLACE_ME/swagger.json')}`); + process.exit(); +} + +// Needed to ignore self-signed certificates from running Umbraco on https on localhost +process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0'; + +// Start checking to see if we can connect to the OpenAPI spec +console.log("Ensure your Umbraco instance is running"); +console.log(`Fetching OpenAPI definition from ${chalk.yellow(swaggerUrl)}`); + +fetch(swaggerUrl).then(async (response) => { + if (!response.ok) { + console.error(chalk.red(`ERROR: OpenAPI spec returned with a non OK (200) response: ${response.status} ${response.statusText}`)); + console.error(`The URL to your Umbraco instance may be wrong or the instance is not running`); + console.error(`Please verify or change the URL in the ${chalk.yellow('package.json')} for the script ${chalk.yellow('generate-openapi')}`); + return; + } + + console.log(`OpenAPI spec fetched successfully`); + console.log(`Calling ${chalk.yellow('hey-api')} to generate TypeScript client`); + + await createClient({ + input: swaggerUrl, + output: 'src/api', + plugins: [ + ...defaultPlugins, + '@hey-api/client-fetch', + { + name: '@hey-api/typescript', + enums: 'typescript' + }, + { + name: '@hey-api/sdk', + asClass: true + } + ], + }); + +}) + .catch(error => { + console.error(`ERROR: Failed to connect to the OpenAPI spec: ${chalk.red(error.message)}`); + console.error(`The URL to your Umbraco instance may be wrong or the instance is not running`); + console.error(`Please verify or change the URL in the ${chalk.yellow('package.json')} for the script ${chalk.yellow('generate-openapi')}`); + }); diff --git a/src/OpenSourceTest.MyExtension/Client/src/api/client.gen.ts b/src/OpenSourceTest.MyExtension/Client/src/api/client.gen.ts new file mode 100644 index 0000000..d7bb5e8 --- /dev/null +++ b/src/OpenSourceTest.MyExtension/Client/src/api/client.gen.ts @@ -0,0 +1,18 @@ +// This file is auto-generated by @hey-api/openapi-ts + +import type { ClientOptions } from './types.gen'; +import { type Config, type ClientOptions as DefaultClientOptions, createClient, createConfig } from '@hey-api/client-fetch'; + +/** + * The `createClientConfig()` function will be called on client initialization + * and the returned object will become the client's initial configuration. + * + * You may want to initialize your client this way instead of calling + * `setConfig()`. This is useful for example if you're using Next.js + * to ensure your client always has the correct values. + */ +export type CreateClientConfig = (override?: Config) => Config & T>; + +export const client = createClient(createConfig({ + baseUrl: 'https://localhost:44389' +})); \ No newline at end of file diff --git a/src/OpenSourceTest.MyExtension/Client/src/api/index.ts b/src/OpenSourceTest.MyExtension/Client/src/api/index.ts new file mode 100644 index 0000000..e64537d --- /dev/null +++ b/src/OpenSourceTest.MyExtension/Client/src/api/index.ts @@ -0,0 +1,3 @@ +// This file is auto-generated by @hey-api/openapi-ts +export * from './types.gen'; +export * from './sdk.gen'; \ No newline at end of file diff --git a/src/OpenSourceTest.MyExtension/Client/src/api/sdk.gen.ts b/src/OpenSourceTest.MyExtension/Client/src/api/sdk.gen.ts new file mode 100644 index 0000000..a28f91a --- /dev/null +++ b/src/OpenSourceTest.MyExtension/Client/src/api/sdk.gen.ts @@ -0,0 +1,72 @@ +// This file is auto-generated by @hey-api/openapi-ts + +import type { Options as ClientOptions, TDataShape, Client } from '@hey-api/client-fetch'; +import type { PingData, PingResponse, WhatsMyNameData, WhatsMyNameResponse, WhatsTheTimeMrWolfData, WhatsTheTimeMrWolfResponse, WhoAmIData, WhoAmIResponse } from './types.gen'; +import { client as _heyApiClient } from './client.gen'; + +export type Options = ClientOptions & { + /** + * You can provide a client instance returned by `createClient()` instead of + * individual options. This might be also useful if you want to implement a + * custom client. + */ + client?: Client; + /** + * You can pass arbitrary values through the `meta` object. This can be + * used to access values that aren't defined as part of the SDK function. + */ + meta?: Record; +}; + +export class OpenSourceTestMyExtensionService { + public static ping(options?: Options) { + return (options?.client ?? _heyApiClient).get({ + security: [ + { + scheme: 'bearer', + type: 'http' + } + ], + url: '/umbraco/opensourcetestmyextension/api/v1/ping', + ...options + }); + } + public static whatsMyName(options?: Options) { + return (options?.client ?? _heyApiClient).get({ + security: [ + { + scheme: 'bearer', + type: 'http' + } + ], + url: '/umbraco/opensourcetestmyextension/api/v1/whatsMyName', + ...options + }); + } + + public static whatsTheTimeMrWolf(options?: Options) { + return (options?.client ?? _heyApiClient).get({ + security: [ + { + scheme: 'bearer', + type: 'http' + } + ], + url: '/umbraco/opensourcetestmyextension/api/v1/whatsTheTimeMrWolf', + ...options + }); + } + + public static whoAmI(options?: Options) { + return (options?.client ?? _heyApiClient).get({ + security: [ + { + scheme: 'bearer', + type: 'http' + } + ], + url: '/umbraco/opensourcetestmyextension/api/v1/whoAmI', + ...options + }); + } +} \ No newline at end of file diff --git a/src/OpenSourceTest.MyExtension/Client/src/api/types.gen.ts b/src/OpenSourceTest.MyExtension/Client/src/api/types.gen.ts new file mode 100644 index 0000000..c5dd8ff --- /dev/null +++ b/src/OpenSourceTest.MyExtension/Client/src/api/types.gen.ts @@ -0,0 +1,192 @@ +// This file is auto-generated by @hey-api/openapi-ts +export type DocumentGranularPermissionModel = { + key: string; + readonly context: string; + permission: string; +}; + +export type ReadOnlyUserGroupModel = { + id: number; + key: string; + name: string; + icon?: string | null; + startContentId?: number | null; + startMediaId?: number | null; + alias: string; + hasAccessToAllLanguages: boolean; + allowedLanguages: Array; + permissions: Array; + granularPermissions: Array; + allowedSections: Array; +}; + +export type UnknownTypeGranularPermissionModel = { + context: string; + permission: string; +}; + +export type UserGroupModel = { + id: number; + key: string; + createDate: string; + updateDate: string; + deleteDate?: string | null; + readonly hasIdentity: boolean; + startMediaId?: number | null; + startContentId?: number | null; + icon?: string | null; + alias: string; + name?: string | null; + hasAccessToAllLanguages: boolean; + permissions: Array; + granularPermissions: Array; + readonly allowedSections: Array; + readonly userCount: number; + readonly allowedLanguages: Array; +}; + +export enum UserKindModel { + DEFAULT = 'Default', + API = 'Api' +} + +export type UserModel = { + id: number; + key: string; + createDate: string; + updateDate: string; + deleteDate?: string | null; + readonly hasIdentity: boolean; + emailConfirmedDate?: string | null; + invitedDate?: string | null; + username: string; + email: string; + rawPasswordValue?: string | null; + passwordConfiguration?: string | null; + isApproved: boolean; + isLockedOut: boolean; + lastLoginDate?: string | null; + lastPasswordChangeDate?: string | null; + lastLockoutDate?: string | null; + failedPasswordAttempts: number; + comments?: string | null; + userState: UserStateModel; + name?: string | null; + readonly allowedSections: Array; + profileData: UserModel | UserProfileModel; + securityStamp?: string | null; + avatar?: string | null; + sessionTimeout: number; + startContentIds?: Array | null; + startMediaIds?: Array | null; + language?: string | null; + kind: UserKindModel; + readonly groups: Array; +}; + +export type UserProfileModel = { + id: number; + name?: string | null; +}; + +export enum UserStateModel { + ACTIVE = 'Active', + DISABLED = 'Disabled', + LOCKED_OUT = 'LockedOut', + INVITED = 'Invited', + INACTIVE = 'Inactive', + ALL = 'All' +} +export type PingData = { + body?: never; + path?: never; + query?: never; + url: '/umbraco/hackclient/api/v1/ping'; +}; + +export type PingErrors = { + /** + * The resource is protected and requires an authentication token + */ + 401: unknown; +}; + +export type PingResponses = { + /** + * OK + */ + 200: string; +}; + +export type PingResponse = PingResponses[keyof PingResponses]; +export type WhatsMyNameData = { + body?: never; + path?: never; + query?: never; + url: '/umbraco/hackclient/api/v1/whatsMyName'; +}; + +export type WhatsMyNameErrors = { + /** + * The resource is protected and requires an authentication token + */ + 401: unknown; +}; + +export type WhatsMyNameResponses = { + /** + * OK + */ + 200: string; +}; + +export type WhatsMyNameResponse = WhatsMyNameResponses[keyof WhatsMyNameResponses]; + +export type WhatsTheTimeMrWolfData = { + body?: never; + path?: never; + query?: never; + url: '/umbraco/hackclient/api/v1/whatsTheTimeMrWolf'; +}; + +export type WhatsTheTimeMrWolfErrors = { + /** + * The resource is protected and requires an authentication token + */ + 401: unknown; +}; + +export type WhatsTheTimeMrWolfResponses = { + /** + * OK + */ + 200: string; +}; + +export type WhatsTheTimeMrWolfResponse = WhatsTheTimeMrWolfResponses[keyof WhatsTheTimeMrWolfResponses]; + +export type WhoAmIData = { + body?: never; + path?: never; + query?: never; + url: '/umbraco/hackclient/api/v1/whoAmI'; +}; + +export type WhoAmIErrors = { + /** + * The resource is protected and requires an authentication token + */ + 401: unknown; +}; + +export type WhoAmIResponses = { + /** + * OK + */ + 200: UserModel; +}; + +export type WhoAmIResponse = WhoAmIResponses[keyof WhoAmIResponses]; +export type ClientOptions = { + baseUrl: 'https://localhost:44389' | (string & {}); +}; diff --git a/src/OpenSourceTest.MyExtension/Client/src/bundle.manifests.ts b/src/OpenSourceTest.MyExtension/Client/src/bundle.manifests.ts new file mode 100644 index 0000000..336ac75 --- /dev/null +++ b/src/OpenSourceTest.MyExtension/Client/src/bundle.manifests.ts @@ -0,0 +1,9 @@ +import { manifests as entrypoints } from "./entrypoints/manifest.js"; +import { manifests as dashboards } from "./dashboards/manifest.js"; + +// Job of the bundle is to collate all the manifests from different parts of the extension and load other manifests +// We load this bundle from umbraco-package.json +export const manifests: Array = [ + ...entrypoints, + ...dashboards, +]; diff --git a/src/OpenSourceTest.MyExtension/Client/src/dashboards/dashboard.element.ts b/src/OpenSourceTest.MyExtension/Client/src/dashboards/dashboard.element.ts new file mode 100644 index 0000000..bd30b79 --- /dev/null +++ b/src/OpenSourceTest.MyExtension/Client/src/dashboards/dashboard.element.ts @@ -0,0 +1,219 @@ +// @ts-nocheck +import { + LitElement, + css, + html, + customElement, + state, +} from "@umbraco-cms/backoffice/external/lit"; +import { UmbElementMixin } from "@umbraco-cms/backoffice/element-api"; +import { UUIButtonElement } from "@umbraco-cms/backoffice/external/uui"; +import { UMB_NOTIFICATION_CONTEXT } from "@umbraco-cms/backoffice/notification"; +import { UMB_CURRENT_USER_CONTEXT, UmbCurrentUserModel } from "@umbraco-cms/backoffice/current-user"; +import { OpenSourceTestMyExtensionService, UserModel } from "../api/index.js"; + +@customElement("example-dashboard") +export class ExampleDashboardElement extends UmbElementMixin(LitElement) { + @state() + private _yourName?: string = "Press the button!"; + + @state() + private _timeFromMrWolf?: Date; + + @state() + private _serverUserData?: UserModel; + + @state() + private _contextCurrentUser?: UmbCurrentUserModel; + + #notificationContext?: typeof UMB_NOTIFICATION_CONTEXT.TYPE; + + constructor() { + super(); + + this.consumeContext(UMB_NOTIFICATION_CONTEXT, (notificationContext) => { + this.#notificationContext = notificationContext; + }); + + this.consumeContext(UMB_CURRENT_USER_CONTEXT, (currentUserContext) => { + // When we have the current user context + // We can observe properties from it, such as the current user or perhaps just individual properties + // When the currentUser object changes we will get notified and can reset the @state properrty + this.observe( + currentUserContext?.currentUser, + (currentUser) => { + this._contextCurrentUser = currentUser; + }, + "_contextCurrentUser" + ); + }); + } + + #onClickWhoAmI = async (ev: Event) => { + const buttonElement = ev.target as UUIButtonElement; + buttonElement.state = "waiting"; + + const { data, error } = await OpenSourceTestMyExtensionService.whoAmI(); + + if (error) { + buttonElement.state = "failed"; + console.error(error); + return; + } + + if (data !== undefined) { + this._serverUserData = data; + buttonElement.state = "success"; + } + + if (this.#notificationContext) { + this.#notificationContext.peek("warning", { + data: { + headline: `You are ${this._serverUserData?.name}`, + message: `Your email is ${this._serverUserData?.email}`, + }, + }); + } + }; + + #onClickWhatsTheTimeMrWolf = async (ev: Event) => { + const buttonElement = ev.target as UUIButtonElement; + buttonElement.state = "waiting"; + + // Getting a string - should I expect a datetime?! + const { data, error } = await OpenSourceTestMyExtensionService.whatsTheTimeMrWolf(); + + if (error) { + buttonElement.state = "failed"; + console.error(error); + return; + } + + if (data !== undefined) { + this._timeFromMrWolf = new Date(data); + buttonElement.state = "success"; + } + }; + + #onClickWhatsMyName = async (ev: Event) => { + const buttonElement = ev.target as UUIButtonElement; + buttonElement.state = "waiting"; + + const { data, error } = await OpenSourceTestMyExtensionService.whatsMyName(); + + if (error) { + buttonElement.state = "failed"; + console.error(error); + return; + } + + this._yourName = data; + buttonElement.state = "success"; + }; + + render() { + return html` + +
[Server]
+

+ ${this._serverUserData?.email + ? this._serverUserData.email + : "Press the button!"} +

+
    + ${this._serverUserData?.groups.map( + (group) => html`
  • ${group.name}
  • ` + )} +
+ + Who am I? + +

+ This endpoint gets your current user from the server and displays your + email and list of user groups. It also displays a Notification with + your details. +

+
+ + +
[Server]
+

${this._yourName}

+ + Whats my name? + +

+ This endpoint has a forced delay to show the button 'waiting' state + for a few seconds before completing the request. +

+
+ + +
[Server]
+

+ ${this._timeFromMrWolf + ? this._timeFromMrWolf.toLocaleString() + : "Press the button!"} +

+ + Whats the time Mr Wolf? + +

This endpoint gets the current date and time from the server.

+
+ + +
[Context]
+

Current user email: ${this._contextCurrentUser?.email}

+

+ This is the JSON object available by consuming the + 'UMB_CURRENT_USER_CONTEXT' context: +

+ ${JSON.stringify(this._contextCurrentUser, null, 2)} +
+ `; + } + + static styles = [ + css` + :host { + display: grid; + gap: var(--uui-size-layout-1); + padding: var(--uui-size-layout-1); + grid-template-columns: 1fr 1fr 1fr; + } + + uui-box { + margin-bottom: var(--uui-size-layout-1); + } + + h2 { + margin-top: 0; + } + + .wide { + grid-column: span 3; + } + `, + ]; +} + +export default ExampleDashboardElement; + +declare global { + interface HTMLElementTagNameMap { + "example-dashboard": ExampleDashboardElement; + } +} diff --git a/src/OpenSourceTest.MyExtension/Client/src/dashboards/manifest.ts b/src/OpenSourceTest.MyExtension/Client/src/dashboards/manifest.ts new file mode 100644 index 0000000..c5b943f --- /dev/null +++ b/src/OpenSourceTest.MyExtension/Client/src/dashboards/manifest.ts @@ -0,0 +1,18 @@ +export const manifests: Array = [ + { + name: "Open Source Test My Extension Dashboard", + alias: "OpenSourceTest.MyExtension.Dashboard", + type: "dashboard", + js: () => import("./dashboard.element.js"), + meta: { + label: "Example Dashboard", + pathname: "example-dashboard", + }, + conditions: [ + { + alias: "Umb.Condition.SectionAlias", + match: "Umb.Section.Content", + }, + ], + }, +]; diff --git a/src/OpenSourceTest.MyExtension/Client/src/entrypoints/entrypoint.ts b/src/OpenSourceTest.MyExtension/Client/src/entrypoints/entrypoint.ts new file mode 100644 index 0000000..6bcffcf --- /dev/null +++ b/src/OpenSourceTest.MyExtension/Client/src/entrypoints/entrypoint.ts @@ -0,0 +1,27 @@ +import type { + UmbEntryPointOnInit, + UmbEntryPointOnUnload, +} from "@umbraco-cms/backoffice/extension-api"; +import { UMB_AUTH_CONTEXT } from "@umbraco-cms/backoffice/auth"; +import { client } from "../api/client.gen.js"; + +// load up the manifests here +export const onInit: UmbEntryPointOnInit = (_host, _extensionRegistry) => { + console.log("Hello from my extension 🎉"); + // Will use only to add in Open API config with generated TS OpenAPI HTTPS Client + // Do the OAuth token handshake stuff + _host.consumeContext(UMB_AUTH_CONTEXT, async (authContext) => { + // Get the token info from Umbraco + const config = authContext?.getOpenApiConfiguration(); + + client.setConfig({ + auth: config?.token ?? undefined, + baseUrl: config?.base ?? "", + credentials: config?.credentials ?? "same-origin", + }); + }); +}; + +export const onUnload: UmbEntryPointOnUnload = (_host, _extensionRegistry) => { + console.log("Goodbye from my extension 👋"); +}; diff --git a/src/OpenSourceTest.MyExtension/Client/src/entrypoints/manifest.ts b/src/OpenSourceTest.MyExtension/Client/src/entrypoints/manifest.ts new file mode 100644 index 0000000..8a4201c --- /dev/null +++ b/src/OpenSourceTest.MyExtension/Client/src/entrypoints/manifest.ts @@ -0,0 +1,8 @@ +export const manifests: Array = [ + { + name: "Open Source Test My Extension Entrypoint", + alias: "OpenSourceTest.MyExtension.Entrypoint", + type: "backofficeEntryPoint", + js: () => import("./entrypoint.js"), + }, +]; diff --git a/src/OpenSourceTest.MyExtension/Client/tsconfig.json b/src/OpenSourceTest.MyExtension/Client/tsconfig.json new file mode 100644 index 0000000..89fd470 --- /dev/null +++ b/src/OpenSourceTest.MyExtension/Client/tsconfig.json @@ -0,0 +1,28 @@ +{ + "compilerOptions": { + "target": "ES2020", + "experimentalDecorators": true, + "useDefineForClassFields": false, + "module": "ESNext", + "lib": [ "ES2020", "DOM", "DOM.Iterable" ], + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "bundler", + "allowImportingTsExtensions": true, + "isolatedModules": true, + "moduleDetection": "force", + "noEmit": true, + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true, + + "strictNullChecks": false, + + "types": [ "@umbraco-cms/backoffice/extension-types" ] + }, + "include": [ "src" ] +} diff --git a/src/OpenSourceTest.MyExtension/Client/vite.config.ts b/src/OpenSourceTest.MyExtension/Client/vite.config.ts new file mode 100644 index 0000000..4693670 --- /dev/null +++ b/src/OpenSourceTest.MyExtension/Client/vite.config.ts @@ -0,0 +1,17 @@ +import { defineConfig } from "vite"; + +export default defineConfig({ + build: { + lib: { + entry: "src/bundle.manifests.ts", // Bundle registers one or more manifests + formats: ["es"], + fileName: "open-source-test-my-extension", + }, + outDir: "../wwwroot/App_Plugins/OpenSourceTestMyExtension", // your web component will be saved in this location + emptyOutDir: true, + sourcemap: true, + rollupOptions: { + external: [/^@umbraco/], + }, + }, +}); diff --git a/src/OpenSourceTest.MyExtension/Composers/OpenSourceTestMyExtensionApiComposer.cs b/src/OpenSourceTest.MyExtension/Composers/OpenSourceTestMyExtensionApiComposer.cs new file mode 100644 index 0000000..7211647 --- /dev/null +++ b/src/OpenSourceTest.MyExtension/Composers/OpenSourceTestMyExtensionApiComposer.cs @@ -0,0 +1,73 @@ +using Asp.Versioning; +using Microsoft.AspNetCore.Mvc.ApiExplorer; +using Microsoft.AspNetCore.Mvc.Controllers; +using Microsoft.Extensions.Options; +using Microsoft.Extensions.DependencyInjection; +using Microsoft.OpenApi.Models; +using Swashbuckle.AspNetCore.SwaggerGen; +using Umbraco.Cms.Core.Composing; +using Umbraco.Cms.Core.DependencyInjection; +using Umbraco.Cms.Api.Management.OpenApi; +using Umbraco.Cms.Api.Common.OpenApi; + +namespace OpenSourceTest.MyExtension.Composers +{ + public class OpenSourceTestMyExtensionApiComposer : IComposer + { + public void Compose(IUmbracoBuilder builder) + { + + builder.Services.AddSingleton(); + + builder.Services.Configure(opt => + { + // Related documentation: + // https://docs.umbraco.com/umbraco-cms/tutorials/creating-a-backoffice-api + // https://docs.umbraco.com/umbraco-cms/tutorials/creating-a-backoffice-api/adding-a-custom-swagger-document + // https://docs.umbraco.com/umbraco-cms/tutorials/creating-a-backoffice-api/versioning-your-api + // https://docs.umbraco.com/umbraco-cms/tutorials/creating-a-backoffice-api/access-policies + + // Configure the Swagger generation options + // Add in a new Swagger API document solely for our own package that can be browsed via Swagger UI + // Along with having a generated swagger JSON file that we can use to auto generate a TypeScript client + opt.SwaggerDoc(Constants.ApiName, new OpenApiInfo + { + Title = "Open Source Test My Extension Backoffice API", + Version = "1.0", + // Contact = new OpenApiContact + // { + // Name = "Some Developer", + // Email = "you@company.com", + // Url = new Uri("https://company.com") + // } + }); + + // Enable Umbraco authentication for the "Example" Swagger document + // PR: https://github.com/umbraco/Umbraco-CMS/pull/15699 + opt.OperationFilter(); + }); + } + + public class OpenSourceTestMyExtensionOperationSecurityFilter : BackOfficeSecurityRequirementsOperationFilterBase + { + protected override string ApiName => Constants.ApiName; + } + + // This is used to generate nice operation IDs in our swagger json file + // So that the gnerated TypeScript client has nice method names and not too verbose + // https://docs.umbraco.com/umbraco-cms/tutorials/creating-a-backoffice-api/umbraco-schema-and-operation-ids#operation-ids + public class CustomOperationHandler : OperationIdHandler + { + public CustomOperationHandler(IOptions apiVersioningOptions) : base(apiVersioningOptions) + { + } + + protected override bool CanHandle(ApiDescription apiDescription, ControllerActionDescriptor controllerActionDescriptor) + { + return controllerActionDescriptor.ControllerTypeInfo.Namespace?.StartsWith("OpenSourceTest.MyExtension.Controllers", comparisonType: StringComparison.InvariantCultureIgnoreCase) is true; + } + + public override string Handle(ApiDescription apiDescription) => $"{apiDescription.ActionDescriptor.RouteValues["action"]}"; + } + } +} diff --git a/src/OpenSourceTest.MyExtension/Constants.cs b/src/OpenSourceTest.MyExtension/Constants.cs new file mode 100644 index 0000000..51f65f9 --- /dev/null +++ b/src/OpenSourceTest.MyExtension/Constants.cs @@ -0,0 +1,7 @@ +namespace OpenSourceTest.MyExtension +{ + public class Constants + { + public const string ApiName = "opensourcetestmyextension"; + } +} diff --git a/src/OpenSourceTest.MyExtension/Controllers/OpenSourceTestMyExtensionApiController.cs b/src/OpenSourceTest.MyExtension/Controllers/OpenSourceTestMyExtensionApiController.cs new file mode 100644 index 0000000..0ae70f8 --- /dev/null +++ b/src/OpenSourceTest.MyExtension/Controllers/OpenSourceTestMyExtensionApiController.cs @@ -0,0 +1,43 @@ +using Asp.Versioning; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Umbraco.Cms.Core.Models.Membership; +using Umbraco.Cms.Core.Security; + +namespace OpenSourceTest.MyExtension.Controllers +{ + [ApiVersion("1.0")] + [ApiExplorerSettings(GroupName = "OpenSourceTest.MyExtension")] + public class OpenSourceTestMyExtensionApiController : OpenSourceTestMyExtensionApiControllerBase + { + private readonly IBackOfficeSecurityAccessor _backOfficeSecurityAccessor; + + public OpenSourceTestMyExtensionApiController(IBackOfficeSecurityAccessor backOfficeSecurityAccessor) + { + _backOfficeSecurityAccessor = backOfficeSecurityAccessor; + } + + [HttpGet("ping")] + [ProducesResponseType(StatusCodes.Status200OK)] + public string Ping() => "Pong"; + + [HttpGet("whatsTheTimeMrWolf")] + [ProducesResponseType(typeof(DateTime), 200)] + public DateTime WhatsTheTimeMrWolf() => DateTime.Now; + + [HttpGet("whatsMyName")] + [ProducesResponseType(StatusCodes.Status200OK)] + public string WhatsMyName() + { + // So we can see a long request in the dashboard with a spinning progress wheel + Thread.Sleep(2000); + + var currentUser = _backOfficeSecurityAccessor.BackOfficeSecurity?.CurrentUser; + return currentUser?.Name ?? "I have no idea who you are"; + } + + [HttpGet("whoAmI")] + [ProducesResponseType(StatusCodes.Status200OK)] + public IUser? WhoAmI() => _backOfficeSecurityAccessor.BackOfficeSecurity?.CurrentUser; + } +} diff --git a/src/OpenSourceTest.MyExtension/Controllers/OpenSourceTestMyExtensionApiControllerBase.cs b/src/OpenSourceTest.MyExtension/Controllers/OpenSourceTestMyExtensionApiControllerBase.cs new file mode 100644 index 0000000..71505b3 --- /dev/null +++ b/src/OpenSourceTest.MyExtension/Controllers/OpenSourceTestMyExtensionApiControllerBase.cs @@ -0,0 +1,16 @@ +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Mvc; +using Umbraco.Cms.Api.Common.Attributes; +using Umbraco.Cms.Web.Common.Authorization; +using Umbraco.Cms.Web.Common.Routing; + +namespace OpenSourceTest.MyExtension.Controllers +{ + [ApiController] + [BackOfficeRoute("opensourcetestmyextension/api/v{version:apiVersion}")] + [Authorize(Policy = AuthorizationPolicies.SectionAccessContent)] + [MapToApi(Constants.ApiName)] + public class OpenSourceTestMyExtensionApiControllerBase : ControllerBase + { + } +} diff --git a/src/OpenSourceTest.MyExtension/OpenSourceTest.MyExtension.csproj b/src/OpenSourceTest.MyExtension/OpenSourceTest.MyExtension.csproj new file mode 100644 index 0000000..cc068fe --- /dev/null +++ b/src/OpenSourceTest.MyExtension/OpenSourceTest.MyExtension.csproj @@ -0,0 +1,52 @@ + + + net9.0 + enable + enable + / + + + + OpenSourceTest.MyExtension + OpenSourceTest.MyExtension + OpenSourceTest.MyExtension + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <_ClientAssetsBuildOutput Include="wwwroot\App_Plugins\**" /> + + + + + diff --git a/src/OpenSourceTest.MyExtension/README.txt b/src/OpenSourceTest.MyExtension/README.txt new file mode 100644 index 0000000..2913b09 --- /dev/null +++ b/src/OpenSourceTest.MyExtension/README.txt @@ -0,0 +1,38 @@ + _ _ _ + | | | | | | + __| | ___ | |_ _ __ ___| |_ _ __ _____ __ + / _` |/ _ \| __| '_ \ / _ \ __| | '_ \ / _ \ \ /\ / / + | (_| | (_) | |_| | | | __/ |_ | | | | __/\ V V / + \__,_|\___/ \__|_| |_|\___|\__| |_| |_|\___| \_/\_/ _ _ + | | | | (_) + _ _ _ __ ___ | |__ _ __ __ _ ___ ___ _____ _| |_ ___ _ __ ___ _ ___ _ __ + | | | | '_ ` _ \| '_ \| '__/ _` |/ __/ _ \ / _ \ \/ / __/ _ \ '_ \/ __| |/ _ \| '_ \ + | |_| | | | | | | |_) | | | (_| | (_| (_) | | __/> <| || __/ | | \__ \ | (_) | | | | + \__,_|_| |_| |_|_.__/|_| \__,_|\___\___/ \___/_/\_\\__\___|_| |_|___/_|\___/|_| |_| + + +== Requirements == +* Node LTS Version 20.17.0+ +* Use a tool such as NVM (Node Version Manager) for your OS to help manage multiple versions of Node + +== Node Version Manager tools == +* https://github.com/coreybutler/nvm-windows +* https://github.com/nvm-sh/nvm +* https://docs.volta.sh/guide/getting-started + +== Steps == +* Open a terminal inside the `\Client` folder +* Run `npm install` to install all the dependencies +* Run `npm run build` to build the project +* The build output is copied to `wwwroot\App_Plugins\OpenSourceTestMyExtension\open-source-test-my-extension.js` + +== File Watching == +* Add this Razor Class Library Project as a project reference to an Umbraco Website project +* From the `\Client` folder run the command `npm run watch` this will monitor the changes to the *.ts files and rebuild the project +* With the Umbraco website project running the Razor Class Library Project will refresh the browser when the build is complete + +== Suggestion == +* Use VSCode as the editor of choice as it has good tooling support for TypeScript and it will recommend a VSCode Extension for good Lit WebComponent completions + +== Other Resources == +* Umbraco Docs - https://docs.umbraco.com/umbraco-cms/customizing/overview diff --git a/src/OpenSourceTest.Site/OpenSourceTest.Site.csproj b/src/OpenSourceTest.Site/OpenSourceTest.Site.csproj index 2e9ce17..69c7611 100644 --- a/src/OpenSourceTest.Site/OpenSourceTest.Site.csproj +++ b/src/OpenSourceTest.Site/OpenSourceTest.Site.csproj @@ -20,6 +20,7 @@ +