From bfea361f71523a45c9aa78dacbf1a0f314a56eb4 Mon Sep 17 00:00:00 2001 From: David Poindexter Date: Sun, 12 Jan 2025 20:47:27 -0500 Subject: [PATCH 01/12] Updated DNN dependencies to 9.13.3 --- Module.csproj | 10 +++++----- UnitTests/UnitTests.csproj | 10 +++++----- docs/rest/rest.json | 2 +- manifest.dnn | 4 ++-- module.web/package-lock.json | 4 ++-- module.web/package.json | 2 +- resources/views/view.html | 4 ++-- 7 files changed, 18 insertions(+), 18 deletions(-) diff --git a/Module.csproj b/Module.csproj index fb73099..3ea0398 100644 --- a/Module.csproj +++ b/Module.csproj @@ -27,7 +27,7 @@ prompt 4 bin\Debug\Dnn.Modules.SecurityCenter.xml - true + false pdbonly @@ -92,16 +92,16 @@ - 9.11.1 + 9.13.3 - 9.11.1 + 9.13.3 - 9.11.1 + 9.13.3 - 9.11.1 + 9.13.3 5.2.9 diff --git a/UnitTests/UnitTests.csproj b/UnitTests/UnitTests.csproj index 5de7a5a..86dac30 100644 --- a/UnitTests/UnitTests.csproj +++ b/UnitTests/UnitTests.csproj @@ -77,19 +77,19 @@ all - 9.11.1 + 9.13.3 - 9.11.1 + 9.13.3 - 9.11.1 + 9.13.3 - 9.11.1 + 9.13.3 - 9.11.1 + 9.13.3 17.3.2 diff --git a/docs/rest/rest.json b/docs/rest/rest.json index a03b4f2..8f3f61b 100644 --- a/docs/rest/rest.json +++ b/docs/rest/rest.json @@ -3,7 +3,7 @@ "swagger": "2.0", "info": { "title": "DNN Community DNN Security Center", - "version": "1.3.0.0" + "version": "1.4.0.0" }, "consumes": [ "application/json" diff --git a/manifest.dnn b/manifest.dnn index 16bcb46..175bdbd 100644 --- a/manifest.dnn +++ b/manifest.dnn @@ -1,6 +1,6 @@ - + DNN Security Center DNN Security Center ~/DesktopModules/Dnn.SecurityCenter/resources/images/module-icon.png @@ -55,7 +55,7 @@ - + DesktopModules/Dnn.SecurityCenter/resources diff --git a/module.web/package-lock.json b/module.web/package-lock.json index ef60978..b7bffeb 100644 --- a/module.web/package-lock.json +++ b/module.web/package-lock.json @@ -1,12 +1,12 @@ { "name": "dnn-securitycenter", - "version": "1.3.0", + "version": "1.4.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "dnn-securitycenter", - "version": "1.3.0", + "version": "1.4.0", "license": "MIT", "devDependencies": { "@dnncommunity/dnn-elements": "^0.18.0", diff --git a/module.web/package.json b/module.web/package.json index d98423e..86e6bf0 100644 --- a/module.web/package.json +++ b/module.web/package.json @@ -1,6 +1,6 @@ { "name": "dnn-securitycenter", - "version": "1.3.0", + "version": "1.4.0", "private": true, "description": "Stencil Component Starter", "main": "dist/index.cjs.js", diff --git a/resources/views/view.html b/resources/views/view.html index 7322561..b3d99a3 100644 --- a/resources/views/view.html +++ b/resources/views/view.html @@ -1,4 +1,4 @@ [AntiForgeryToken:True] - - + + \ No newline at end of file From bd0fa388a1961017982b9c98a5ba616443441606 Mon Sep 17 00:00:00 2001 From: David Poindexter Date: Sun, 12 Jan 2025 21:46:01 -0500 Subject: [PATCH 02/12] Updated Nuke to 9.0.3 --- .github/workflows/Build.yml | 10 +- .github/workflows/PR_Validation.yml | 10 +- .github/workflows/Release.yml | 10 +- .nuke/build.schema.json | 191 +++++++++---------- _build/Build.cs | 141 +++++++------- _build/Helpers.cs | 26 +-- _build/_build.csproj | 5 +- build.ps1 | 7 +- build.sh | 7 +- docs/rest/rest.json | 280 ++++++++++++++++------------ global.json | 4 +- module.web/src/services/services.ts | 22 +-- resources/views/view.html | 2 +- 13 files changed, 368 insertions(+), 347 deletions(-) diff --git a/.github/workflows/Build.yml b/.github/workflows/Build.yml index 399b041..45c1962 100644 --- a/.github/workflows/Build.yml +++ b/.github/workflows/Build.yml @@ -28,17 +28,17 @@ jobs: name: ubuntu-latest runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 with: fetch-depth: 0 - - name: Cache .nuke/temp, ~/.nuget/packages - uses: actions/cache@v2 + - name: 'Cache: .nuke/temp, ~/.nuget/packages' + uses: actions/cache@v4 with: path: | .nuke/temp ~/.nuget/packages - key: ${{ runner.os }}-${{ hashFiles('**/global.json', '**/*.csproj') }} - - name: Run './build.cmd DeployGeneratedFiles' + key: ${{ runner.os }}-${{ hashFiles('**/global.json', '**/*.csproj', '**/Directory.Packages.props') }} + - name: 'Run: DeployGeneratedFiles' run: ./build.cmd DeployGeneratedFiles env: GitHubToken: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/PR_Validation.yml b/.github/workflows/PR_Validation.yml index 2d71a60..1bbc157 100644 --- a/.github/workflows/PR_Validation.yml +++ b/.github/workflows/PR_Validation.yml @@ -30,17 +30,17 @@ jobs: name: ubuntu-latest runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 with: fetch-depth: 0 - - name: Cache .nuke/temp, ~/.nuget/packages - uses: actions/cache@v2 + - name: 'Cache: .nuke/temp, ~/.nuget/packages' + uses: actions/cache@v4 with: path: | .nuke/temp ~/.nuget/packages - key: ${{ runner.os }}-${{ hashFiles('**/global.json', '**/*.csproj') }} - - name: Run './build.cmd Package' + key: ${{ runner.os }}-${{ hashFiles('**/global.json', '**/*.csproj', '**/Directory.Packages.props') }} + - name: 'Run: Package' run: ./build.cmd Package env: GitHubToken: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/Release.yml b/.github/workflows/Release.yml index f793048..9e87653 100644 --- a/.github/workflows/Release.yml +++ b/.github/workflows/Release.yml @@ -28,17 +28,17 @@ jobs: name: ubuntu-latest runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 with: fetch-depth: 0 - - name: Cache .nuke/temp, ~/.nuget/packages - uses: actions/cache@v2 + - name: 'Cache: .nuke/temp, ~/.nuget/packages' + uses: actions/cache@v4 with: path: | .nuke/temp ~/.nuget/packages - key: ${{ runner.os }}-${{ hashFiles('**/global.json', '**/*.csproj') }} - - name: Run './build.cmd Release' + key: ${{ runner.os }}-${{ hashFiles('**/global.json', '**/*.csproj', '**/Directory.Packages.props') }} + - name: 'Run: Release' run: ./build.cmd Release env: GitHubToken: ${{ secrets.GITHUB_TOKEN }} diff --git a/.nuke/build.schema.json b/.nuke/build.schema.json index 74caffe..c47edf9 100644 --- a/.nuke/build.schema.json +++ b/.nuke/build.schema.json @@ -1,51 +1,79 @@ { "$schema": "http://json-schema.org/draft-04/schema#", - "title": "Build Schema", - "$ref": "#/definitions/build", "definitions": { - "build": { - "type": "object", + "Host": { + "type": "string", + "enum": [ + "AppVeyor", + "AzurePipelines", + "Bamboo", + "Bitbucket", + "Bitrise", + "GitHubActions", + "GitLab", + "Jenkins", + "Rider", + "SpaceAutomation", + "TeamCity", + "Terminal", + "TravisCI", + "VisualStudio", + "VSCode" + ] + }, + "ExecutableTarget": { + "type": "string", + "enum": [ + "BuildFrontEnd", + "Clean", + "Compile", + "Deploy", + "DeployBinaries", + "DeployFrontEnd", + "DeployGeneratedFiles", + "GenerateAppConfig", + "GenerateReleaseNotes", + "InstallNpmPackages", + "LogInfo", + "Package", + "Release", + "Restore", + "SetLiveServer", + "SetManifestVersions", + "SetPackagesVersions", + "SetRelativeScripts", + "SetupGitHubClient", + "Swagger", + "TagRelease", + "Test", + "UnitTests", + "UpdateTokens", + "Watch" + ] + }, + "Verbosity": { + "type": "string", + "description": "", + "enum": [ + "Verbose", + "Normal", + "Minimal", + "Quiet" + ] + }, + "NukeBuild": { "properties": { - "Configuration": { - "type": "string", - "description": "Configuration to build - Default is 'Debug' (local) or 'Release' (server)", - "enum": [ - "Debug", - "Release" - ] - }, "Continue": { "type": "boolean", "description": "Indicates to continue a previously failed build attempt" }, - "GitHubToken": { - "type": "string", - "description": "Github token to authenticate in CI" - }, "Help": { "type": "boolean", "description": "Shows the help text for this build assembly" }, "Host": { - "type": "string", "description": "Host for execution. Default is 'automatic'", - "enum": [ - "AppVeyor", - "AzurePipelines", - "Bamboo", - "Bitbucket", - "Bitrise", - "GitHubActions", - "GitLab", - "Jenkins", - "Rider", - "SpaceAutomation", - "TeamCity", - "Terminal", - "TravisCI", - "VisualStudio", - "VSCode" - ] + "$ref": "#/definitions/Host" }, "NoLogo": { "type": "boolean", @@ -74,85 +102,46 @@ "type": "array", "description": "List of targets to be skipped. Empty list skips all dependencies", "items": { - "type": "string", - "enum": [ - "BuildFrontEnd", - "Clean", - "Compile", - "Deploy", - "DeployBinaries", - "DeployFrontEnd", - "DeployGeneratedFiles", - "GenerateAppConfig", - "GenerateReleaseNotes", - "InstallNpmPackages", - "LogInfo", - "Package", - "Release", - "Restore", - "SetLiveServer", - "SetManifestVersions", - "SetPackagesVersions", - "SetRelativeScripts", - "SetupGitHubClient", - "Swagger", - "TagRelease", - "Test", - "UnitTests", - "UpdateTokens", - "Watch" - ] + "$ref": "#/definitions/ExecutableTarget" } }, - "Solution": { - "type": "string", - "description": "Path to a solution file that is automatically loaded" - }, "Target": { "type": "array", "description": "List of targets to be invoked. Default is '{default_target}'", "items": { - "type": "string", - "enum": [ - "BuildFrontEnd", - "Clean", - "Compile", - "Deploy", - "DeployBinaries", - "DeployFrontEnd", - "DeployGeneratedFiles", - "GenerateAppConfig", - "GenerateReleaseNotes", - "InstallNpmPackages", - "LogInfo", - "Package", - "Release", - "Restore", - "SetLiveServer", - "SetManifestVersions", - "SetPackagesVersions", - "SetRelativeScripts", - "SetupGitHubClient", - "Swagger", - "TagRelease", - "Test", - "UnitTests", - "UpdateTokens", - "Watch" - ] + "$ref": "#/definitions/ExecutableTarget" } }, "Verbosity": { - "type": "string", "description": "Logging verbosity during build execution. Default is 'Normal'", + "$ref": "#/definitions/Verbosity" + } + } + } + }, + "allOf": [ + { + "properties": { + "Configuration": { + "type": "string", + "description": "Configuration to build - Default is 'Debug' (local) or 'Release' (server)", "enum": [ - "Minimal", - "Normal", - "Quiet", - "Verbose" + "Debug", + "Release" ] + }, + "GitHubToken": { + "type": "string", + "description": "Github token to authenticate in CI" + }, + "Solution": { + "type": "string", + "description": "Path to a solution file that is automatically loaded" } } + }, + { + "$ref": "#/definitions/NukeBuild" } - } -} \ No newline at end of file + ] +} diff --git a/_build/Build.cs b/_build/Build.cs index ceb2c06..2d78a7f 100644 --- a/_build/Build.cs +++ b/_build/Build.cs @@ -16,6 +16,7 @@ using Nuke.Common.Tools.ReportGenerator; using Nuke.Common.Tools.VSTest; using Nuke.Common.Tools.Xunit; +using Nuke.Common.Utilities; using Nuke.Common.Utilities.Collections; using Octokit; using System; @@ -27,6 +28,7 @@ using System.Security.Cryptography; using System.Text; using System.Xml; +using YamlDotNet.Core; using static Nuke.Common.EnvironmentInfo; using static Nuke.Common.IO.CompressionTasks; using static Nuke.Common.IO.FileSystemTasks; @@ -100,6 +102,9 @@ internal class Build : NukeBuild string releaseNotes = ""; GitHubClient gitHubClient; Release release; + + [NuGetPackage("WebApiToOpenApiReflector", "WebApiToOpenApiReflector.dll")] + readonly Tool WebApiToOpenApiReflector; Target UpdateTokens => _ => _ .OnlyWhenDynamic(() => GitRepository != null) @@ -108,13 +113,13 @@ internal class Build : NukeBuild if (GitRepository != null) { Serilog.Log.Information($"We are on branch {GitRepository.Branch}"); - var repositoryFiles = GlobFiles(RootDirectory, "README.md", "build/**/git.html", "**/articles/git.md"); + var repositoryFiles = RootDirectory.GlobFiles("README.md", "build/**/git.html", "**/articles/git.md"); repositoryFiles.ForEach(f => { - var file = ReadAllText(f, Encoding.UTF8); + var file = f.ReadAllText(Encoding.UTF8); file = file.Replace("{owner}", GitRepository.GetGitHubOwner()); file = file.Replace("{repository}", GitRepository.GetGitHubName()); - WriteAllText(f, file, Encoding.UTF8); + f.WriteAllText(file, Encoding.UTF8); }); } }); @@ -125,7 +130,7 @@ internal class Build : NukeBuild .Executes(() => { Serilog.Log.Information($"Branch name is {GitRepository.Branch}"); - Serilog.Log.Information(SerializationTasks.JsonSerialize(GitVersion)); + Serilog.Log.Information(GitVersion.ToJson()); }); Target Clean => _ => _ @@ -133,9 +138,9 @@ internal class Build : NukeBuild .Before(Package) .Executes(() => { - EnsureCleanDirectory(ArtifactsDirectory); - EnsureCleanDirectory(TestResultsDirectory); - EnsureCleanDirectory(UnitTestsResultsDirectory); + ArtifactsDirectory.CreateOrCleanDirectory(); + TestResultsDirectory.CreateOrCleanDirectory(); + UnitTestsResultsDirectory.CreateOrCleanDirectory(); }); Target Restore => _ => _ @@ -175,14 +180,12 @@ internal class Build : NukeBuild .SetReportTypes(ReportTypes.Badges, ReportTypes.HtmlInline, ReportTypes.HtmlChart) .SetTargetDirectory(UnitTestsResultsDirectory) .SetHistoryDirectory(RootDirectory / "UnitTests" / "history") - .SetProcessArgumentConfigurator(a => a - .Add("-title:UnitTests")) - .SetFramework("net5.0")); + .AddProcessAdditionalArguments("-title:UnitTests")); Helpers.CleanCodeCoverageHistoryFiles(RootDirectory / "UnitTests" / "history"); - var testBadges = GlobFiles(UnitTestsResultsDirectory, "badge_branchcoverage.svg", "badge_linecoverage.svg"); - testBadges.ForEach(f => CopyFileToDirectory(f, UnitTestBadgesDirectory, FileExistsPolicy.Overwrite, true)); + var testBadges = UnitTestsResultsDirectory.GlobFiles("badge_branchcoverage.svg", "badge_linecoverage.svg"); + testBadges.ForEach(f => f.CopyToDirectory(UnitTestBadgesDirectory, ExistsPolicy.MergeAndOverwrite, createDirectories:true)); if (IsWin && (InvokedTargets.Contains(UnitTests) || InvokedTargets.Contains(Test))) { @@ -223,7 +226,7 @@ internal class Build : NukeBuild Target SetManifestVersions => _ => _ .Executes(() => { - var manifests = GlobFiles(RootDirectory, "**/*.dnn"); + var manifests = RootDirectory.GlobFiles("**/*.dnn"); foreach (var manifest in manifests) { var doc = new XmlDocument(); @@ -265,9 +268,9 @@ internal class Build : NukeBuild .DependsOn(Compile) .Executes(() => { - var manifest = GlobFiles(RootDirectory, "*.dnn").FirstOrDefault(); + var manifest = RootDirectory.GlobFiles("*.dnn").FirstOrDefault(); var assemblyFiles = Helpers.GetAssembliesFromManifest(manifest); - var files = GlobFiles(RootDirectory, "bin/Debug/*.dll", "bin/Debug/*.pdb", "bin/Debug/*.xml"); + var files = RootDirectory.GlobFiles("bin/Debug/*.dll", "bin/Debug/*.pdb", "bin/Debug/*.xml"); foreach (var file in files) { var fileInfo = new FileInfo(file); @@ -282,12 +285,12 @@ internal class Build : NukeBuild .DependsOn(DeployFrontEnd) .Executes(() => { - var views = GlobFiles(RootDirectory, "resources/views/**/*.html"); + var views = RootDirectory.GlobFiles("resources/views/**/*.html"); foreach (var view in views) { - var content = ReadAllText(view); + var content = view.ReadAllText(); content = content.Replace(devViewsPath, prodViewsPath, StringComparison.OrdinalIgnoreCase); - WriteAllText(view, content, System.Text.Encoding.UTF8); + view.WriteAllText(content, System.Text.Encoding.UTF8); Serilog.Log.Information("Set scripts path to {0} in {1}", prodViewsPath, view); } }); @@ -296,12 +299,12 @@ internal class Build : NukeBuild .DependsOn(DeployFrontEnd) .Executes(() => { - var views = GlobFiles(RootDirectory, "resources/views/**/*.html"); + var views = RootDirectory.GlobFiles("resources/views/**/*.html"); foreach (var view in views) { - var content = ReadAllText(view); + var content = view.ReadAllText(); content = content.Replace(prodViewsPath, devViewsPath, StringComparison.OrdinalIgnoreCase); - WriteAllText(view, content, System.Text.Encoding.UTF8); + view.WriteAllText(content, System.Text.Encoding.UTF8); Serilog.Log.Information("Set scripts path to {0} in {1}", devViewsPath, view); } }); @@ -310,32 +313,15 @@ internal class Build : NukeBuild .DependsOn(BuildFrontEnd) .Executes(() => { - var scriptsDestination = RootDirectory / "resources" / "scripts" / "dnn-securitycenter"; - EnsureCleanDirectory(scriptsDestination); - CopyDirectoryRecursively(RootDirectory / "module.web" / "dist" / "dnn-securitycenter", scriptsDestination, DirectoryExistsPolicy.Merge); + var scriptsDestination = RootDirectory / "resources" / "scripts"; + scriptsDestination.CreateOrCleanDirectory(); + var frontEndDirectory = RootDirectory / "module.web" / "dist" / "dnn-securitycenter"; + frontEndDirectory.CopyToDirectory(scriptsDestination, ExistsPolicy.MergeAndOverwrite); }); Target InstallNpmPackages => _ => _ .Executes(() => { - NpmLogger = (type, output) => - { - if (type == OutputType.Std) - { - Serilog.Log.Information(output); - } - if (type == OutputType.Err) - { - if (output.StartsWith("npm WARN", StringComparison.OrdinalIgnoreCase)) - { - Serilog.Log.Warning(output); - } - else - { - Serilog.Log.Error(output); - } - } - }; NpmInstall(s => s.SetProcessWorkingDirectory(WebProjectDirectory)); }); @@ -390,7 +376,7 @@ internal class Build : NukeBuild GitRepository.GetGitHubOwner(), GitRepository.GetGitHubName()).Result .Where(m => m.Title == GitVersion.MajorMinorPatch).FirstOrDefault(); - Serilog.Log.Information(SerializationTasks.JsonSerialize(milestone)); + Serilog.Log.Information(milestone.ToJson()); if (milestone == null) { Serilog.Log.Warning("Milestone not found for this version"); @@ -410,7 +396,7 @@ internal class Build : NukeBuild p.Milestone?.Title == milestone.Title && p.Merged == true && p.Milestone?.Title == GitVersion.MajorMinorPatch); - Serilog.Log.Information(SerializationTasks.JsonSerialize(pullRequests)); + Serilog.Log.Information(pullRequests.ToJson()); // Build release notes var releaseNotesBuilder = new StringBuilder(); @@ -422,11 +408,11 @@ internal class Build : NukeBuild foreach (var group in pullRequests.GroupBy(p => p.Labels[0]?.Name, (label, prs) => new { label, prs })) { - Serilog.Log.Information(SerializationTasks.JsonSerialize(group)); + Serilog.Log.Information(group.ToJson()); releaseNotesBuilder.AppendLine($"## {group.label}"); foreach (var pr in group.prs) { - Serilog.Log.Information(SerializationTasks.JsonSerialize(pr)); + Serilog.Log.Information(pr.ToJson()); releaseNotesBuilder.AppendLine($"- #{pr.Number} {pr.Title}. Thanks @{pr.User.Login}"); } } @@ -451,7 +437,6 @@ internal class Build : NukeBuild { Git($"remote set-url origin https://{GitRepository.GetGitHubOwner()}:{GitHubToken}@github.com/{GitRepository.GetGitHubOwner()}/{GitRepository.GetGitHubName()}.git"); var version = GitRepository.IsOnMainOrMasterBranch() ? GitVersion.MajorMinorPatch : GitVersion.SemVer; - GitLogger = (type, output) => Serilog.Log.Information(output); Git($"tag v{version}"); Git($"push --tags"); }); @@ -480,7 +465,7 @@ internal class Build : NukeBuild newRelease).Result; Serilog.Log.Information($"{release.Name} released !"); - var artifactFile = GlobFiles(RootDirectory, "artifacts/**/*.zip").FirstOrDefault(); + var artifactFile = RootDirectory.GlobFiles("artifacts/**/*.zip").FirstOrDefault(); var artifact = File.OpenRead(artifactFile); var artifactInfo = new FileInfo(artifactFile); var assetUpload = new ReleaseAssetUpload() @@ -552,23 +537,25 @@ internal class Build : NukeBuild .Executes(() => { var stagingDirectory = ArtifactsDirectory / "staging"; - EnsureCleanDirectory(stagingDirectory); + stagingDirectory.CreateOrCleanDirectory(); // Resources - Compress(RootDirectory / "resources", stagingDirectory / "resources.zip", f => (f.Name != "resources.zip.manifest")); + var resourcesDirectory = RootDirectory / "resources"; + resourcesDirectory.CompressTo(stagingDirectory / "resources.zip", f => (f.Name != "resources.zip.manifest")); // Symbols var moduleAssemblyName = Solution.GetProject("Module").GetProperty("AssemblyName"); - var symbolFiles = GlobFiles(RootDirectory, $"bin/Release/**/{moduleAssemblyName}.pdb"); + var symbolFiles = RootDirectory.GlobFiles($"bin/Release/**/{moduleAssemblyName}.pdb"); Helpers.AddFilesToZip(stagingDirectory / "symbols.zip", symbolFiles.ToArray()); // Install files - var installFiles = GlobFiles(RootDirectory, "LICENSE", "manifest.dnn", "ReleaseNotes.html"); - installFiles.ForEach(i => CopyFileToDirectory(i, stagingDirectory)); + var installFiles = RootDirectory.GlobFiles("LICENSE", "manifest.dnn", "ReleaseNotes.html"); + installFiles.ForEach(i => i.CopyToDirectory(stagingDirectory)); // Libraries - var manifest = GlobFiles(RootDirectory, "*.dnn").FirstOrDefault(); - var assemblies = GlobFiles(RootDirectory / "bin" / Configuration, "*.dll"); + var manifest = RootDirectory.GlobFiles("*.dnn").FirstOrDefault(); + var assembliesPath = RootDirectory / "bin" / Configuration; + var assemblies = assembliesPath.GlobFiles("*.dll"); var manifestAssemblies = Helpers.GetAssembliesFromManifest(manifest); assemblies.ForEach(assembly => { @@ -577,7 +564,7 @@ internal class Build : NukeBuild if (assemblyIncludedInManifest) { - CopyFileToDirectory(assembly, stagingDirectory / "bin", FileExistsPolicy.Overwrite); + assembly.CopyToDirectory(stagingDirectory / "bin", ExistsPolicy.MergeAndOverwrite); } }); @@ -588,7 +575,7 @@ internal class Build : NukeBuild : GitVersion != null ? GitVersion.SemVer : "0.1.0"; fileName += "_install.zip"; ZipFile.CreateFromDirectory(stagingDirectory, ArtifactsDirectory / fileName); - DeleteDirectory(stagingDirectory); + stagingDirectory.DeleteDirectory(); var artifact = ArtifactsDirectory / fileName; string hash; @@ -612,7 +599,8 @@ internal class Build : NukeBuild // Open folder if (IsWin) { - CopyFileToDirectory(ArtifactsDirectory / fileName, InstallDirectory, FileExistsPolicy.Overwrite); + var artifactsDirectory = ArtifactsDirectory / fileName; + artifactsDirectory.CopyToDirectory(InstallDirectory, ExistsPolicy.MergeAndOverwrite); // Uncomment next line if you would like a package task to auto-open the package in explorer. // Process.Start("explorer.exe", ArtifactsDirectory); @@ -627,28 +615,27 @@ internal class Build : NukeBuild { var swaggerFile = DocsDirectory / "rest" / "rest.json"; - NSwagTasks.NSwagWebApiToOpenApi(c => c - .AddAssembly(RootDirectory / "bin" / Configuration / "Dnn.Modules.SecurityCenter.dll") - .SetInfoTitle("DNN Community DNN Security Center") - .SetInfoVersion(GitVersion != null ? GitVersion.AssemblySemVer : "0.1.0") - .SetProcessArgumentConfigurator(a => a.Add("/DefaultUrlTemplate:{{controller}}/{{action}}")) - .SetOutput(swaggerFile)); + var assembly = RootDirectory / "bin" / Configuration / "Dnn.Modules.SecurityCenter.dll"; + var version = GitVersion != null ? GitVersion.AssemblySemVer : "0.1.0"; + + WebApiToOpenApiReflector($@"{assembly} --title ""DNN Community DNN Security Center"" --info-version {version} --default-url-template {{controller}}/{{action}} --output {swaggerFile}"); NSwagTasks.NSwagOpenApiToTypeScriptClient(c => c .SetInput(swaggerFile) .SetOutput(ClientServicesDirectory / "services.ts") - .SetProcessArgumentConfigurator(c => c - .Add("/Template:Fetch") - .Add("/GenerateClientClasses:True") - .Add("/GenerateOptionalParameters") - .Add("/ClientBaseClass:ClientBase") - .Add("/ConfigurationClass:ConfigureRequest") - .Add("/UseTransformOptionsMethod:True") - .Add("/MarkOptionalProperties:True") - .Add($"/ExtensionCode:{ClientServicesDirectory / "client-base.ts"}") - .Add("/UseGetBaseUrlMethod:True") - .Add("/ProtectedMethods=ClientBase.getBaseUrl,ClientBase.transformOptions") - .Add("/UseAbortSignal:True"))); + .AddProcessAdditionalArguments([ + "/Template:Fetch", + "/GenerateClientClasses:True", + "/GenerateOptionalParameters", + "/ClientBaseClass:ClientBase", + "/ConfigurationClass:ConfigureRequest", + "/UseTransformOptionsMethod:True", + "/MarkOptionalProperties:True", + $"/ExtensionCode:{ClientServicesDirectory / "client-base.ts"}", + "/UseGetBaseUrlMethod:True", + "/ProtectedMethods=ClientBase.getBaseUrl,ClientBase.transformOptions", + "/UseAbortSignal:True" + ])); }); Target DeployGeneratedFiles => _ => _ @@ -664,7 +651,7 @@ internal class Build : NukeBuild if (!repo.Fork) { Git($"config --global user.name '{GitRepository.GetGitHubOwner()}'"); - Git($"config --global user.email '{Helpers.GetManifestOwnerEmail(GlobFiles(RootDirectory / "*.dnn").FirstOrDefault())}'"); + Git($"config --global user.email '{Helpers.GetManifestOwnerEmail(RootDirectory.GlobFiles("*.dnn").FirstOrDefault())}'"); Git($"remote set-url origin https://{GitRepository.GetGitHubOwner()}:{GitHubToken}@github.com/{GitRepository.GetGitHubOwner()}/{GitRepository.GetGitHubName()}.git"); Git("status"); Git("add docs -f"); diff --git a/_build/Helpers.cs b/_build/Helpers.cs index a7168a0..cc025c7 100644 --- a/_build/Helpers.cs +++ b/_build/Helpers.cs @@ -22,7 +22,7 @@ namespace BuildHelpers { public class Helpers : NukeBuild { - public static void CopyFileToDirectoryIfChanged(string source, string target) + public static void CopyFileToDirectoryIfChanged(AbsolutePath source, AbsolutePath target) { var sourceFile = new FileInfo(source); var destinationFile = new FileInfo(Path.Combine(target, sourceFile.Name)); @@ -44,7 +44,7 @@ public static void CopyFileToDirectoryIfChanged(string source, string target) if (!destinationExists || !sameSize || !sameContent) { - CopyFileToDirectory(source, target, Nuke.Common.IO.FileExistsPolicy.OverwriteIfNewer); + source.CopyToDirectory(target, ExistsPolicy.MergeAndOverwriteIfNewer); Serilog.Log.Information("Copied {0} to {1}", sourceFile.FullName, destinationFile.FullName); } else @@ -91,7 +91,7 @@ private static bool FilesAreEqual(FileInfo first, FileInfo second) return true; } - public static void AddFilesToZip(string zipPath, string[] files) + public static void AddFilesToZip(AbsolutePath zipPath, AbsolutePath[] files) { if (files == null || files.Length == 0) { @@ -127,9 +127,9 @@ public static IEnumerable GetAssembliesFromManifest(string manifestFileP return assemblies; } - public static void CleanCodeCoverageHistoryFiles(string directory) + public static void CleanCodeCoverageHistoryFiles(AbsolutePath directory) { - var files = GlobFiles(directory, "*.xml"); + var files = directory.GlobFiles("*.xml"); if (files == null || files.Count() < 2) { return; @@ -173,14 +173,16 @@ public static void CleanCodeCoverageHistoryFiles(string directory) fileA.CoveredBranches == fileB.CoveredBranches && fileA.TotalBranches == fileB.TotalBranches) { - DeleteFile(fileB.FileName); + AbsolutePath fileBPath = fileB.FileName; + fileBPath.DeleteFile(); } } } public static void GenerateLocalizationFiles(string rootNamespace) { - var localizationFiles = GlobFiles(RootDirectory / "resources" / "App_LocalResources", "*.resx") + var localizationPath = RootDirectory / "resources" / "App_LocalResources"; + var localizationFiles = localizationPath.GlobFiles("*.resx") .Where(l => Regex.Matches(new FileInfo(l).Name, @"\.").Count == 1).ToList(); var generatedComment = GetGeneratedComment(); var vm = new StringBuilder(); @@ -211,7 +213,7 @@ public static string GetManifestOwnerEmail(string manifestPath) return node.InnerText; } - private static string GenerateLocalizationService(string rootNamespace, List localizationFiles) + private static string GenerateLocalizationService(string rootNamespace, List localizationFiles) { var moduleFolderName = new DirectoryInfo(RootDirectory).Name; var sb = new StringBuilder(); @@ -293,7 +295,7 @@ private static string GenerateLocalizationService(string rootNamespace, List localizationFiles) + private static string GetLocalizationFilesForViewModel(List localizationFiles) { var sb = new StringBuilder(); foreach (var file in localizationFiles) @@ -330,7 +332,7 @@ private static string GetLocalizationKeysForViewModel(string file) return sb.ToString(); } - private static string GenerateLocalizationViewModel(string rootNamespace, List localizationFiles) + private static string GenerateLocalizationViewModel(string rootNamespace, List localizationFiles) { var sb = new StringBuilder(); sb @@ -350,7 +352,7 @@ private static string GenerateLocalizationViewModel(string rootNamespace, List localizationFiles) + private static string GetLocalizationViewModelClass(List localizationFiles) { var sb = new StringBuilder(); for (int i = 0; i < localizationFiles.Count(); i++) @@ -367,7 +369,7 @@ private static string GetLocalizationViewModelClass(List localizationFil return sb.ToString(); } - private static string GetLocalizationFilePropertiesClasses(List localizationFiles) + private static string GetLocalizationFilePropertiesClasses(List localizationFiles) { var sb = new StringBuilder(); for (int i = 0; i < localizationFiles.Count(); i++) diff --git a/_build/_build.csproj b/_build/_build.csproj index 0e764af..fa98d3c 100644 --- a/_build/_build.csproj +++ b/_build/_build.csproj @@ -2,7 +2,7 @@ Exe - net6.0 + net8.0 false False @@ -15,7 +15,7 @@ all runtime; build; native; contentfiles; analyzers; buildtransitive - + all @@ -24,6 +24,7 @@ + diff --git a/build.ps1 b/build.ps1 index f8c2eb2..5b91d2e 100644 --- a/build.ps1 +++ b/build.ps1 @@ -18,7 +18,7 @@ $TempDirectory = "$PSScriptRoot\\.nuke\temp" $DotNetGlobalFile = "$PSScriptRoot\\global.json" $DotNetInstallUrl = "https://dot.net/v1/dotnet-install.ps1" -$DotNetChannel = "Current" +$DotNetChannel = "STS" $env:DOTNET_SKIP_FIRST_TIME_EXPERIENCE = 1 $env:DOTNET_CLI_TELEMETRY_OPTOUT = 1 @@ -65,5 +65,10 @@ else { Write-Output "Microsoft (R) .NET SDK version $(& $env:DOTNET_EXE --version)" +if (Test-Path env:NUKE_ENTERPRISE_TOKEN) { + & $env:DOTNET_EXE nuget remove source "nuke-enterprise" > $null + & $env:DOTNET_EXE nuget add source "https://f.feedz.io/nuke/enterprise/nuget" --name "nuke-enterprise" --username "PAT" --password $env:NUKE_ENTERPRISE_TOKEN > $null +} + ExecSafe { & $env:DOTNET_EXE build $BuildProjectFile /nodeReuse:false /p:UseSharedCompilation=false -nologo -clp:NoSummary --verbosity quiet } ExecSafe { & $env:DOTNET_EXE run --project $BuildProjectFile --no-build -- $BuildArguments } diff --git a/build.sh b/build.sh index b6c5821..8184272 100755 --- a/build.sh +++ b/build.sh @@ -14,7 +14,7 @@ TEMP_DIRECTORY="$SCRIPT_DIR//.nuke/temp" DOTNET_GLOBAL_FILE="$SCRIPT_DIR//global.json" DOTNET_INSTALL_URL="https://dot.net/v1/dotnet-install.sh" -DOTNET_CHANNEL="Current" +DOTNET_CHANNEL="STS" export DOTNET_CLI_TELEMETRY_OPTOUT=1 export DOTNET_SKIP_FIRST_TIME_EXPERIENCE=1 @@ -58,5 +58,10 @@ fi echo "Microsoft (R) .NET SDK version $("$DOTNET_EXE" --version)" +if [[ ! -z ${NUKE_ENTERPRISE_TOKEN+x} && "NUKE_ENTERPRISE_TOKEN" != "" ]]; then + "$DOTNET_EXE" nuget remove source "nuke-enterprise" &>/dev/null || true + "$DOTNET_EXE" nuget add source "https://f.feedz.io/nuke/enterprise/nuget" --name "nuke-enterprise" --username "PAT" --password "$NUKE_ENTERPRISE_TOKEN" --store-password-in-clear-text &>/dev/null || true +fi + "$DOTNET_EXE" build "$BUILD_PROJECT_FILE" /nodeReuse:false /p:UseSharedCompilation=false -nologo -clp:NoSummary --verbosity quiet "$DOTNET_EXE" run --project "$BUILD_PROJECT_FILE" --no-build -- "$@" diff --git a/docs/rest/rest.json b/docs/rest/rest.json index 8f3f61b..e20a4a6 100644 --- a/docs/rest/rest.json +++ b/docs/rest/rest.json @@ -1,16 +1,10 @@ { - "x-generator": "NSwag v13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))", - "swagger": "2.0", + "x-generator": "NSwag v14.2.0.0 (NJsonSchema v11.1.0.0 (Newtonsoft.Json v13.0.0.0))", + "openapi": "3.0.0", "info": { "title": "DNN Community DNN Security Center", "version": "1.4.0.0" }, - "consumes": [ - "application/json" - ], - "produces": [ - "application/json" - ], "paths": { "/Localization/GetLocalization": { "get": { @@ -21,10 +15,18 @@ "operationId": "Localization_GetLocalization", "responses": { "200": { - "x-nullable": false, "description": "OK", - "schema": { - "$ref": "#/definitions/LocalizationViewModel" + "content": { + "application/json": { + "schema": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/LocalizationViewModel" + } + ] + } + } } } } @@ -39,139 +41,169 @@ "operationId": "Security_GetSecurityBulletins", "parameters": [ { - "type": "string", "name": "versionString", "in": "query", "required": true, "description": "The version for which to get the security bulletins for in the format 090202 for v9.9.2.", - "x-nullable": true + "schema": { + "type": "string", + "nullable": true + }, + "x-position": 1 } ], "responses": { "200": { - "x-nullable": false, "description": "A list of DNN security bulletins.", - "schema": { - "$ref": "#/definitions/SecurityBulletinsViewModel" + "content": { + "application/json": { + "schema": { + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/SecurityBulletinsViewModel" + } + ] + } + } } } } } } }, - "definitions": { - "LocalizationViewModel": { - "type": "object", - "description": "A viewmodel that exposes all resource keys in strong types.", - "properties": { - "ModelValidation": { - "description": "Localized strings present the ModelValidation resources.", - "allOf": [ - { - "$ref": "#/definitions/ModelValidationInfo" - } - ] - }, - "UI": { - "description": "Localized strings present the UI resources.", - "allOf": [ - { - "$ref": "#/definitions/UIInfo" - } - ] + "components": { + "schemas": { + "LocalizationViewModel": { + "type": "object", + "description": "A viewmodel that exposes all resource keys in strong types.", + "additionalProperties": false, + "properties": { + "ModelValidation": { + "description": "Localized strings present the ModelValidation resources.", + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/ModelValidationInfo" + } + ] + }, + "UI": { + "description": "Localized strings present the UI resources.", + "nullable": true, + "oneOf": [ + { + "$ref": "#/components/schemas/UIInfo" + } + ] + } } - } - }, - "ModelValidationInfo": { - "type": "object", - "description": "Localized strings for the ModelValidation resources.", - "properties": { - "IdGreaterThanZero": { - "type": "string", - "description": "Gets or sets the IdGreaterThanZero localized text.", - "example": "The Id must be an integer bigger than 0" - }, - "NameRequired": { - "type": "string", - "description": "Gets or sets the NameRequired localized text.", - "example": "The name is required" + }, + "ModelValidationInfo": { + "type": "object", + "description": "Localized strings for the ModelValidation resources.", + "additionalProperties": false, + "properties": { + "IdGreaterThanZero": { + "type": "string", + "description": "Gets or sets the IdGreaterThanZero localized text.", + "nullable": true, + "example": "The Id must be an integer bigger than 0" + }, + "NameRequired": { + "type": "string", + "description": "Gets or sets the NameRequired localized text.", + "nullable": true, + "example": "The name is required" + } } - } - }, - "UIInfo": { - "type": "object", - "description": "Localized strings for the UI resources.", - "properties": { - "DnnPlatformVersion": { - "type": "string", - "description": "Gets or sets the DnnPlatformVersion localized text.", - "example": "DNN Platform Version" - }, - "DnnSecurityCenter": { - "type": "string", - "description": "Gets or sets the DnnSecurityCenter localized text.", - "example": "DNN Security Center" - }, - "Loading": { - "type": "string", - "description": "Gets or sets the Loading localized text.", - "example": "Loading..." - }, - "NoBulletins": { - "type": "string", - "description": "Gets or sets the NoBulletins localized text.", - "example": "There are no known security vulnerabilities for the selected DNN Platform version." + }, + "UIInfo": { + "type": "object", + "description": "Localized strings for the UI resources.", + "additionalProperties": false, + "properties": { + "DnnPlatformVersion": { + "type": "string", + "description": "Gets or sets the DnnPlatformVersion localized text.", + "nullable": true, + "example": "DNN Platform Version" + }, + "DnnSecurityCenter": { + "type": "string", + "description": "Gets or sets the DnnSecurityCenter localized text.", + "nullable": true, + "example": "DNN Security Center" + }, + "Loading": { + "type": "string", + "description": "Gets or sets the Loading localized text.", + "nullable": true, + "example": "Loading..." + }, + "NoBulletins": { + "type": "string", + "description": "Gets or sets the NoBulletins localized text.", + "nullable": true, + "example": "There are no known security vulnerabilities for the selected DNN Platform version." + } } - } - }, - "SecurityBulletinsViewModel": { - "type": "object", - "description": "A viewmodel that represents DNN Security Bulletins.", - "properties": { - "Title": { - "type": "string", - "description": "Gets or sets the title of the RSS feed." - }, - "Link": { - "type": "string", - "description": "Gets or sets the url to download DNN Platform." - }, - "Description": { - "type": "string", - "description": "Gets or sets the RSS feed description." - }, - "Bulletins": { - "type": "array", - "description": "Gets or sets the list of security bulletins.", - "items": { - "$ref": "#/definitions/Bulletin" + }, + "SecurityBulletinsViewModel": { + "type": "object", + "description": "A viewmodel that represents DNN Security Bulletins.", + "additionalProperties": false, + "properties": { + "Title": { + "type": "string", + "description": "Gets or sets the title of the RSS feed.", + "nullable": true + }, + "Link": { + "type": "string", + "description": "Gets or sets the url to download DNN Platform.", + "nullable": true + }, + "Description": { + "type": "string", + "description": "Gets or sets the RSS feed description.", + "nullable": true + }, + "Bulletins": { + "type": "array", + "description": "Gets or sets the list of security bulletins.", + "nullable": true, + "items": { + "$ref": "#/components/schemas/Bulletin" + } } } - } - }, - "Bulletin": { - "type": "object", - "description": "Represents a single DNN Security Bulletin.", - "required": [ - "PublicationDateUtc" - ], - "properties": { - "Link": { - "type": "string", - "description": "Gets or sets a link to the detailed security bulletin." - }, - "Title": { - "type": "string", - "description": "Gets or sets the title of the bulletin." - }, - "Description": { - "type": "string", - "description": "Gets or sets the short description of the bulletin." - }, - "PublicationDateUtc": { - "type": "string", - "description": "Gets or sets a string representing the date of announcement.", - "format": "date-time" + }, + "Bulletin": { + "type": "object", + "description": "Represents a single DNN Security Bulletin.", + "additionalProperties": false, + "properties": { + "Link": { + "type": "string", + "description": "Gets or sets a link to the detailed security bulletin.", + "nullable": true + }, + "Title": { + "type": "string", + "description": "Gets or sets the title of the bulletin.", + "nullable": true + }, + "Description": { + "type": "string", + "description": "Gets or sets the short description of the bulletin.", + "nullable": true + }, + "PublicationDateUtc": { + "type": "string", + "description": "Gets or sets a string representing the date of announcement.", + "format": "date-time" + } } } } diff --git a/global.json b/global.json index 1939ac6..b829814 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,6 @@ { "sdk": { - "version": "6.0.400", + "version": "8.0.404", "rollForward": "latestMajor" } -} \ No newline at end of file +} diff --git a/module.web/src/services/services.ts b/module.web/src/services/services.ts index 9aa5001..41785dc 100644 --- a/module.web/src/services/services.ts +++ b/module.web/src/services/services.ts @@ -1,6 +1,6 @@ //---------------------- // -// Generated using the NSwag toolchain v13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org) +// Generated using the NSwag toolchain v13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v11.0.0.0)) (http://NSwag.org) // //---------------------- @@ -54,7 +54,7 @@ export class LocalizationClient extends ClientBase { * Gets localization keys and values. * @return OK */ - getLocalization(signal?: AbortSignal | undefined): Promise { + getLocalization(signal?: AbortSignal | undefined): Promise { let url_ = this.baseUrl + "/Localization/GetLocalization"; url_ = url_.replace(/[?&]$/, ""); @@ -73,14 +73,14 @@ export class LocalizationClient extends ClientBase { }); } - protected processGetLocalization(response: Response): Promise { + protected processGetLocalization(response: Response): Promise { const status = response.status; let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; if (status === 200) { return response.text().then((_responseText) => { let result200: any = null; let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result200 = LocalizationViewModel.fromJS(resultData200); + result200 = resultData200 ? LocalizationViewModel.fromJS(resultData200) : null; return result200; }); } else if (status !== 200 && status !== 204) { @@ -88,7 +88,7 @@ export class LocalizationClient extends ClientBase { return throwException("An unexpected server error occurred.", status, _responseText, _headers); }); } - return Promise.resolve(null as any); + return Promise.resolve(null as any); } } @@ -108,7 +108,7 @@ export class SecurityClient extends ClientBase { * @param versionString The version for which to get the security bulletins for in the format 090202 for v9.9.2. * @return A list of DNN security bulletins. */ - getSecurityBulletins(versionString: string | null, signal?: AbortSignal | undefined): Promise { + getSecurityBulletins(versionString: string | null, signal?: AbortSignal | undefined): Promise { let url_ = this.baseUrl + "/Security/GetSecurityBulletins?"; if (versionString === undefined) throw new Error("The parameter 'versionString' must be defined."); @@ -131,14 +131,14 @@ export class SecurityClient extends ClientBase { }); } - protected processGetSecurityBulletins(response: Response): Promise { + protected processGetSecurityBulletins(response: Response): Promise { const status = response.status; let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; if (status === 200) { return response.text().then((_responseText) => { let result200: any = null; let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result200 = SecurityBulletinsViewModel.fromJS(resultData200); + result200 = resultData200 ? SecurityBulletinsViewModel.fromJS(resultData200) : null; return result200; }); } else if (status !== 200 && status !== 204) { @@ -146,7 +146,7 @@ export class SecurityClient extends ClientBase { return throwException("An unexpected server error occurred.", status, _responseText, _headers); }); } - return Promise.resolve(null as any); + return Promise.resolve(null as any); } } @@ -375,7 +375,7 @@ export class Bulletin implements IBulletin { /** Gets or sets the short description of the bulletin. */ description?: string | undefined; /** Gets or sets a string representing the date of announcement. */ - publicationDateUtc!: Date; + publicationDateUtc?: Date; constructor(data?: IBulletin) { if (data) { @@ -421,7 +421,7 @@ export interface IBulletin { /** Gets or sets the short description of the bulletin. */ description?: string | undefined; /** Gets or sets a string representing the date of announcement. */ - publicationDateUtc: Date; + publicationDateUtc?: Date; } export class ApiException extends Error { diff --git a/resources/views/view.html b/resources/views/view.html index b3d99a3..67d0b62 100644 --- a/resources/views/view.html +++ b/resources/views/view.html @@ -1,4 +1,4 @@ [AntiForgeryToken:True] - \ No newline at end of file + From 78a24a4822f9d33ba7a1b8bee97532fadf24166d Mon Sep 17 00:00:00 2001 From: David Poindexter Date: Sun, 12 Jan 2025 22:31:36 -0500 Subject: [PATCH 03/12] Updated rollForward to latestFeature --- global.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/global.json b/global.json index b829814..502b8f6 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,6 @@ { "sdk": { "version": "8.0.404", - "rollForward": "latestMajor" + "rollForward": "latestFeature" } } From 0fb651664b03a74689afdfd9f23d606e9eec2491 Mon Sep 17 00:00:00 2001 From: David Poindexter Date: Sun, 12 Jan 2025 22:35:16 -0500 Subject: [PATCH 04/12] Change MsBuildTasks to DotNetTasks --- _build/Build.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_build/Build.cs b/_build/Build.cs index 2d78a7f..f658306 100644 --- a/_build/Build.cs +++ b/_build/Build.cs @@ -216,7 +216,7 @@ internal class Build : NukeBuild fileVersion = GitVersion.InformationalVersion; } - MSBuildTasks.MSBuild(s => s + DotNetTasks.DotNetBuild(s => s .SetProjectFile(Solution.GetProject("Module")) .SetConfiguration(Configuration) .SetAssemblyVersion(assemblyVersion) From 74909b0c82bbb12fd588aad82dd2f884fd085c4b Mon Sep 17 00:00:00 2001 From: David Poindexter Date: Sun, 12 Jan 2025 22:39:02 -0500 Subject: [PATCH 05/12] Disable treat warnings as errors in DotNetTasks --- _build/Build.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/_build/Build.cs b/_build/Build.cs index f658306..fd997dd 100644 --- a/_build/Build.cs +++ b/_build/Build.cs @@ -217,6 +217,7 @@ internal class Build : NukeBuild } DotNetTasks.DotNetBuild(s => s + .DisableTreatWarningsAsErrors() .SetProjectFile(Solution.GetProject("Module")) .SetConfiguration(Configuration) .SetAssemblyVersion(assemblyVersion) From eab6ea60e94997fb90140404987deb1ce67bcdf8 Mon Sep 17 00:00:00 2001 From: David Poindexter Date: Sun, 12 Jan 2025 22:45:44 -0500 Subject: [PATCH 06/12] Change DotNetTasks to DotNetMSBuild --- _build/Build.cs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/_build/Build.cs b/_build/Build.cs index fd997dd..bd9666a 100644 --- a/_build/Build.cs +++ b/_build/Build.cs @@ -216,12 +216,18 @@ internal class Build : NukeBuild fileVersion = GitVersion.InformationalVersion; } - DotNetTasks.DotNetBuild(s => s - .DisableTreatWarningsAsErrors() - .SetProjectFile(Solution.GetProject("Module")) + DotNetTasks.DotNetMSBuild(s => s + .SetTargetPath(Solution.GetProject("Module")) .SetConfiguration(Configuration) .SetAssemblyVersion(assemblyVersion) .SetFileVersion(fileVersion)); + + //DotNetTasks.DotNetBuild(s => s + // .DisableTreatWarningsAsErrors() + // .SetProjectFile(Solution.GetProject("Module")) + // .SetConfiguration(Configuration) + // .SetAssemblyVersion(assemblyVersion) + // .SetFileVersion(fileVersion)); }); Target SetManifestVersions => _ => _ From 141f81f998f9edb85c6295899af4d6b5bc99941f Mon Sep 17 00:00:00 2001 From: David Poindexter Date: Sun, 12 Jan 2025 22:48:38 -0500 Subject: [PATCH 07/12] Change dotnet to 8.0.111 --- global.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/global.json b/global.json index 502b8f6..e4b182a 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,6 @@ { "sdk": { - "version": "8.0.404", + "version": "8.0.111", "rollForward": "latestFeature" } } From 58b9ba3bf573fe2f02294a39050d2c577362a611 Mon Sep 17 00:00:00 2001 From: David Poindexter Date: Sun, 12 Jan 2025 22:51:04 -0500 Subject: [PATCH 08/12] Change back to MSBuildTasks --- _build/Build.cs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/_build/Build.cs b/_build/Build.cs index bd9666a..754e027 100644 --- a/_build/Build.cs +++ b/_build/Build.cs @@ -216,12 +216,18 @@ internal class Build : NukeBuild fileVersion = GitVersion.InformationalVersion; } - DotNetTasks.DotNetMSBuild(s => s - .SetTargetPath(Solution.GetProject("Module")) + MSBuildTasks.MSBuild(s => s + .SetProjectFile(Solution.GetProject("Module")) .SetConfiguration(Configuration) .SetAssemblyVersion(assemblyVersion) .SetFileVersion(fileVersion)); + //DotNetTasks.DotNetMSBuild(s => s + // .SetTargetPath(Solution.GetProject("Module")) + // .SetConfiguration(Configuration) + // .SetAssemblyVersion(assemblyVersion) + // .SetFileVersion(fileVersion)); + //DotNetTasks.DotNetBuild(s => s // .DisableTreatWarningsAsErrors() // .SetProjectFile(Solution.GetProject("Module")) From 011bc110a38fa55d7cfbe61f5da18aad2b892962 Mon Sep 17 00:00:00 2001 From: David Poindexter Date: Sun, 12 Jan 2025 22:54:29 -0500 Subject: [PATCH 09/12] Changed runner from Ubuntu to WindowsLatest --- .github/workflows/Build.yml | 6 +++--- .github/workflows/PR_Validation.yml | 6 +++--- .github/workflows/Release.yml | 6 +++--- _build/Build.cs | 6 +++--- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/Build.yml b/.github/workflows/Build.yml index 45c1962..20f5b54 100644 --- a/.github/workflows/Build.yml +++ b/.github/workflows/Build.yml @@ -24,9 +24,9 @@ on: - 'release/*' jobs: - ubuntu-latest: - name: ubuntu-latest - runs-on: ubuntu-latest + windows-latest: + name: windows-latest + runs-on: windows-latest steps: - uses: actions/checkout@v4 with: diff --git a/.github/workflows/PR_Validation.yml b/.github/workflows/PR_Validation.yml index 1bbc157..aa0b1c6 100644 --- a/.github/workflows/PR_Validation.yml +++ b/.github/workflows/PR_Validation.yml @@ -26,9 +26,9 @@ on: - 'release/*' jobs: - ubuntu-latest: - name: ubuntu-latest - runs-on: ubuntu-latest + windows-latest: + name: windows-latest + runs-on: windows-latest steps: - uses: actions/checkout@v4 with: diff --git a/.github/workflows/Release.yml b/.github/workflows/Release.yml index 9e87653..727d0b5 100644 --- a/.github/workflows/Release.yml +++ b/.github/workflows/Release.yml @@ -24,9 +24,9 @@ on: - 'release/*' jobs: - ubuntu-latest: - name: ubuntu-latest - runs-on: ubuntu-latest + windows-latest: + name: windows-latest + runs-on: windows-latest steps: - uses: actions/checkout@v4 with: diff --git a/_build/Build.cs b/_build/Build.cs index 754e027..3056685 100644 --- a/_build/Build.cs +++ b/_build/Build.cs @@ -42,7 +42,7 @@ [GitHubActions( "Release", - GitHubActionsImage.UbuntuLatest, + GitHubActionsImage.WindowsLatest, ImportSecrets = new[] { nameof(GitHubToken) }, OnPushBranches = new[] { "master", "main", "release/*" }, InvokedTargets = new[] { nameof(Release) }, @@ -50,7 +50,7 @@ )] [GitHubActions( "PR_Validation", - GitHubActionsImage.UbuntuLatest, + GitHubActionsImage.WindowsLatest, ImportSecrets = new[] { nameof(GitHubToken) }, OnPullRequestBranches = new[] { "master", "main", "develop", "development", "release/*" }, InvokedTargets = new[] { nameof(Package) }, @@ -58,7 +58,7 @@ )] [GitHubActions( "Build", - GitHubActionsImage.UbuntuLatest, + GitHubActionsImage.WindowsLatest, ImportSecrets = new[] { nameof(GitHubToken) }, OnPushBranches = new[] { "master", "develop", "release/*" }, InvokedTargets = new[] { nameof(DeployGeneratedFiles) }, From 99ef99350ed4d891ec7ead63f5946871b9ad3aa3 Mon Sep 17 00:00:00 2001 From: David Poindexter Date: Mon, 13 Jan 2025 00:38:53 -0500 Subject: [PATCH 10/12] Updated various frontend project dependencies --- module.web/package-lock.json | 568 +++++++++++++++++++++++------------ module.web/package.json | 15 +- 2 files changed, 384 insertions(+), 199 deletions(-) diff --git a/module.web/package-lock.json b/module.web/package-lock.json index b7bffeb..769fc1d 100644 --- a/module.web/package-lock.json +++ b/module.web/package-lock.json @@ -9,17 +9,16 @@ "version": "1.4.0", "license": "MIT", "devDependencies": { - "@dnncommunity/dnn-elements": "^0.18.0", - "@stencil/core": "^3.4.0", + "@dnncommunity/dnn-elements": "^0.25.1", + "@stencil/core": "^4.23.2", "@stencil/eslint-plugin": "^0.4.0", - "@stencil/sass": "^3.0.4", - "@stencil/store": "^2.0.8", - "@typescript-eslint/eslint-plugin": "^4.31.0", - "@typescript-eslint/parser": "^4.31.1", + "@stencil/sass": "^3.0.12", + "@stencil/store": "^2.0.16", + "@typescript-eslint/eslint-plugin": "^4.33.0", + "@typescript-eslint/parser": "^4.33.0", "eslint": "^7.32.0", "eslint-plugin-tsdoc": "^0.2.17", - "octokit": "^2.0.22", - "typescript": "^4.9.5" + "octokit": "^2.1.0" } }, "node_modules/@babel/code-frame": { @@ -126,10 +125,14 @@ } }, "node_modules/@dnncommunity/dnn-elements": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@dnncommunity/dnn-elements/-/dnn-elements-0.18.0.tgz", - "integrity": "sha512-ohi8G5sf07P2khHa4g/KHk5Rv3+tFnsyknbuyohNW9ermID4EvAj50q9ojN85H39iijBhfEz2Vh5/4JtGNbfJg==", - "dev": true + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@dnncommunity/dnn-elements/-/dnn-elements-0.25.1.tgz", + "integrity": "sha512-vpw9YU/C9uQPm/0y+CjNPbtt10LVEM5meRI6nv5CXDTGyEk3IUVnhcYZgVHGgvwWXF6XZsj1bEmY5DsIdYa51A==", + "dev": true, + "license": "MIT", + "dependencies": { + "jodit": "^4.2.27" + } }, "node_modules/@eslint/eslintrc": { "version": "0.4.3", @@ -238,6 +241,7 @@ "resolved": "https://registry.npmjs.org/@octokit/app/-/app-13.1.8.tgz", "integrity": "sha512-bCncePMguVyFpdBbnceFKfmPOuUD94T189GuQ0l00ZcQ+mX4hyPqnaWJlsXE2HSdA71eV7p8GPDZ+ErplTkzow==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/auth-app": "^4.0.13", "@octokit/auth-unauthenticated": "^3.0.0", @@ -256,6 +260,7 @@ "resolved": "https://registry.npmjs.org/@octokit/auth-app/-/auth-app-4.0.13.tgz", "integrity": "sha512-NBQkmR/Zsc+8fWcVIFrwDgNXS7f4XDrkd9LHdi9DPQw1NdGHLviLzRO2ZBwTtepnwHXW5VTrVU9eFGijMUqllg==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/auth-oauth-app": "^5.0.0", "@octokit/auth-oauth-user": "^2.0.0", @@ -271,20 +276,12 @@ "node": ">= 14" } }, - "node_modules/@octokit/auth-app/node_modules/lru-cache": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-9.1.2.tgz", - "integrity": "sha512-ERJq3FOzJTxBbFjZ7iDs+NiK4VI9Wz+RdrrAB8dio1oV+YvdPzUEE4QNiT2VD51DkIbCYRUUzCRkssXCHqSnKQ==", - "dev": true, - "engines": { - "node": "14 || >=16.14" - } - }, "node_modules/@octokit/auth-oauth-app": { "version": "5.0.6", "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-app/-/auth-oauth-app-5.0.6.tgz", "integrity": "sha512-SxyfIBfeFcWd9Z/m1xa4LENTQ3l1y6Nrg31k2Dcb1jS5ov7pmwMJZ6OGX8q3K9slRgVpeAjNA1ipOAMHkieqyw==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/auth-oauth-device": "^4.0.0", "@octokit/auth-oauth-user": "^2.0.0", @@ -303,6 +300,7 @@ "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-device/-/auth-oauth-device-4.0.5.tgz", "integrity": "sha512-XyhoWRTzf2ZX0aZ52a6Ew5S5VBAfwwx1QnC2Np6Et3MWQpZjlREIcbcvVZtkNuXp6Z9EeiSLSDUqm3C+aMEHzQ==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/oauth-methods": "^2.0.0", "@octokit/request": "^6.0.0", @@ -318,6 +316,7 @@ "resolved": "https://registry.npmjs.org/@octokit/auth-oauth-user/-/auth-oauth-user-2.1.2.tgz", "integrity": "sha512-kkRqNmFe7s5GQcojE3nSlF+AzYPpPv7kvP/xYEnE57584pixaFBH8Vovt+w5Y3E4zWUEOxjdLItmBTFAWECPAg==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/auth-oauth-device": "^4.0.0", "@octokit/oauth-methods": "^2.0.0", @@ -335,6 +334,7 @@ "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.4.tgz", "integrity": "sha512-TWFX7cZF2LXoCvdmJWY7XVPi74aSY0+FfBZNSXEXFkMpjcqsQwDSYVv5FhRFaI0V1ECnwbz4j59T/G+rXNWaIQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 14" } @@ -344,6 +344,7 @@ "resolved": "https://registry.npmjs.org/@octokit/auth-unauthenticated/-/auth-unauthenticated-3.0.5.tgz", "integrity": "sha512-yH2GPFcjrTvDWPwJWWCh0tPPtTL5SMgivgKPA+6v/XmYN6hGQkAto8JtZibSKOpf8ipmeYhLNWQ2UgW0GYILCw==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/request-error": "^3.0.0", "@octokit/types": "^9.0.0" @@ -357,6 +358,7 @@ "resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.2.4.tgz", "integrity": "sha512-rYKilwgzQ7/imScn3M9/pFfUf4I1AZEH3KhyJmtPdE2zfaXAn2mFfUy4FbKewzc2We5y/LlKLj36fWJLKC2SIQ==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/auth-token": "^3.0.0", "@octokit/graphql": "^5.0.0", @@ -375,6 +377,7 @@ "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.6.tgz", "integrity": "sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/types": "^9.0.0", "is-plain-object": "^5.0.0", @@ -389,6 +392,7 @@ "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.6.tgz", "integrity": "sha512-Fxyxdy/JH0MnIB5h+UQ3yCoh1FG4kWXfFKkpWqjZHw/p+Kc8Y44Hu/kCgNBT6nU1shNumEchmW/sUO1JuQnPcw==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/request": "^6.0.0", "@octokit/types": "^9.0.0", @@ -403,6 +407,7 @@ "resolved": "https://registry.npmjs.org/@octokit/oauth-app/-/oauth-app-4.2.4.tgz", "integrity": "sha512-iuOVFrmm5ZKNavRtYu5bZTtmlKLc5uVgpqTfMEqYYf2OkieV6VdxKZAb5qLVdEPL8LU2lMWcGpavPBV835cgoA==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/auth-oauth-app": "^5.0.0", "@octokit/auth-oauth-user": "^2.0.0", @@ -423,6 +428,7 @@ "resolved": "https://registry.npmjs.org/@octokit/oauth-authorization-url/-/oauth-authorization-url-5.0.0.tgz", "integrity": "sha512-y1WhN+ERDZTh0qZ4SR+zotgsQUE1ysKnvBt1hvDRB2WRzYtVKQjn97HEPzoehh66Fj9LwNdlZh+p6TJatT0zzg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 14" } @@ -432,6 +438,7 @@ "resolved": "https://registry.npmjs.org/@octokit/oauth-methods/-/oauth-methods-2.0.6.tgz", "integrity": "sha512-l9Uml2iGN2aTWLZcm8hV+neBiFXAQ9+3sKiQe/sgumHlL6HDg0AQ8/l16xX/5jJvfxueqTW5CWbzd0MjnlfHZw==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/oauth-authorization-url": "^5.0.0", "@octokit/request": "^6.2.3", @@ -444,16 +451,18 @@ } }, "node_modules/@octokit/openapi-types": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.0.0.tgz", - "integrity": "sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==", - "dev": true + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.1.1.tgz", + "integrity": "sha512-VRaeH8nCDtF5aXWnjPuEMIYf1itK/s3JYyJcWFJT8X9pSNnBtriDf7wlEWsGuhPLl4QIH4xM8fqTXDwJ3Mu6sw==", + "dev": true, + "license": "MIT" }, "node_modules/@octokit/plugin-paginate-rest": { "version": "6.1.2", "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-6.1.2.tgz", "integrity": "sha512-qhrmtQeHU/IivxucOV1bbI/xZyC/iOBhclokv7Sut5vnejAIAEXVcGQeRpQlU39E0WwK9lNvJHphHri/DB6lbQ==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/tsconfig": "^1.0.2", "@octokit/types": "^9.2.3" @@ -470,6 +479,7 @@ "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-7.2.3.tgz", "integrity": "sha512-I5Gml6kTAkzVlN7KCtjOM+Ruwe/rQppp0QU372K1GP7kNOYEKe8Xn5BW4sE62JAHdwpq95OQK/qGNyKQMUzVgA==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/types": "^10.0.0" }, @@ -485,6 +495,7 @@ "resolved": "https://registry.npmjs.org/@octokit/types/-/types-10.0.0.tgz", "integrity": "sha512-Vm8IddVmhCgU1fxC1eyinpwqzXPEYu0NrYzD3YZjlGjyftdLBTeqNblRC0jmJmgxbJIsQlyogVeGnrNaaMVzIg==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/openapi-types": "^18.0.0" } @@ -494,6 +505,7 @@ "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-4.1.6.tgz", "integrity": "sha512-obkYzIgEC75r8+9Pnfiiqy3y/x1bc3QLE5B7qvv9wi9Kj0R5tGQFC6QMBg1154WQ9lAVypuQDGyp3hNpp15gQQ==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/types": "^9.0.0", "bottleneck": "^2.15.3" @@ -510,6 +522,7 @@ "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-5.2.3.tgz", "integrity": "sha512-C9CFg9mrf6cugneKiaI841iG8DOv6P5XXkjmiNNut+swePxQ7RWEdAZRp5rJoE1hjsIqiYcKa/ZkOQ+ujPI39Q==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/types": "^9.0.0", "bottleneck": "^2.15.3" @@ -526,6 +539,7 @@ "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.8.tgz", "integrity": "sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/endpoint": "^7.0.0", "@octokit/request-error": "^3.0.0", @@ -543,6 +557,7 @@ "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.3.tgz", "integrity": "sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/types": "^9.0.0", "deprecation": "^2.0.0", @@ -556,22 +571,25 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/@octokit/tsconfig/-/tsconfig-1.0.2.tgz", "integrity": "sha512-I0vDR0rdtP8p2lGMzvsJzbhdOWy405HcGovrspJ8RRibHnyRgggUSNO5AIox5LmqiwmatHKYsvj6VGFHkqS7lA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@octokit/types": { "version": "9.3.2", "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/openapi-types": "^18.0.0" } }, "node_modules/@octokit/webhooks": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/@octokit/webhooks/-/webhooks-10.9.1.tgz", - "integrity": "sha512-5NXU4VfsNOo2VSU/SrLrpPH2Z1ZVDOWFcET4EpnEBX1uh/v8Uz65UVuHIRx5TZiXhnWyRE9AO1PXHa+M/iWwZA==", + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/@octokit/webhooks/-/webhooks-10.9.2.tgz", + "integrity": "sha512-hFVF/szz4l/Y/GQdKxNmQjUke0XJXK986p+ucIlubTGVPVtVtup5G1jarQfvCMBs9Fvlf9dvH8K83E4lefmofQ==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/request-error": "^3.0.0", "@octokit/webhooks-methods": "^3.0.0", @@ -587,6 +605,7 @@ "resolved": "https://registry.npmjs.org/@octokit/webhooks-methods/-/webhooks-methods-3.0.3.tgz", "integrity": "sha512-2vM+DCNTJ5vL62O5LagMru6XnYhV4fJslK+5YUkTa6rWlW2S+Tqs1lF9Wr9OGqHfVwpBj3TeztWfVON/eUoW1Q==", "dev": true, + "license": "MIT", "engines": { "node": ">= 14" } @@ -595,19 +614,21 @@ "version": "6.11.0", "resolved": "https://registry.npmjs.org/@octokit/webhooks-types/-/webhooks-types-6.11.0.tgz", "integrity": "sha512-AanzbulOHljrku1NGfafxdpTCfw2ENaWzH01N2vqQM+cUFbk868Cgh0xylz0JIM9BoKbfI++bdD6EYX0Q/UTEw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@stencil/core": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@stencil/core/-/core-3.4.0.tgz", - "integrity": "sha512-kEtPtV6QegME8YgMjWrhS7KktItbhqOpAuK9aXypDdI/7bLU9iM/4DtnQGWY/DARBophk+XRBfNXcE62Bmi0dw==", + "version": "4.23.2", + "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.23.2.tgz", + "integrity": "sha512-UC0+FApqwQEzIqmN13z0dcTAJOu30zlfTttiAlOsE7TXEK+0G6OnUPz7OtEm1413o3WTNUVpm9JWj3qg0JatIA==", "dev": true, + "license": "MIT", "bin": { "stencil": "bin/stencil" }, "engines": { - "node": ">=14.10.0", - "npm": ">=6.0.0" + "node": ">=16.0.0", + "npm": ">=7.10.0" } }, "node_modules/@stencil/eslint-plugin": { @@ -631,34 +652,46 @@ } }, "node_modules/@stencil/sass": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@stencil/sass/-/sass-3.0.4.tgz", - "integrity": "sha512-k1dP0A2QBx62m250FATc1hErXxXs6Jnf4TBxdL1C/dc32Kzz2n5aCT4SodBz0ebT5WMnITauZyFqYxzCzDoKag==", + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@stencil/sass/-/sass-3.0.12.tgz", + "integrity": "sha512-aXMgpG13ftxLYo2dDauapvE9gKzSxTAqCMOfTqbPhKUCZ43JsknkLx+PArRaFtfYeVGSQ8eTS4ck7/Nlec+PNA==", "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0", + "npm": ">=6.0.0" + }, "peerDependencies": { "@stencil/core": ">=2.0.0 || >=3.0.0-beta.0 || >= 4.0.0-beta.0 || >= 4.0.0" } }, "node_modules/@stencil/store": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@stencil/store/-/store-2.0.8.tgz", - "integrity": "sha512-6yNRPyItnVq45r8TtXLIZZMCqtgqA2xiO7alUnr28W5dlDIKMW1W80Muozh1p4FSqRcYLWUUDladXdc+/xXJBA==", + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/@stencil/store/-/store-2.0.16.tgz", + "integrity": "sha512-ET3EByKlmNyTA8O+tcp5YWePOiVnPIiuoiIaxTrf3zFFVo7JWVsVoak9IE0UTn3MkIM0ubR9lgxvi70uN588/A==", "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0", + "npm": ">=6.0.0" + }, "peerDependencies": { "@stencil/core": ">=2.0.0 || >=3.0.0 || >= 4.0.0-beta.0 || >= 4.0.0" } }, "node_modules/@types/aws-lambda": { - "version": "8.10.119", - "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.119.tgz", - "integrity": "sha512-Vqm22aZrCvCd6I5g1SvpW151jfqwTzEZ7XJ3yZ6xaZG31nUEOEyzzVImjRcsN8Wi/QyPxId/x8GTtgIbsy8kEw==", - "dev": true + "version": "8.10.147", + "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.147.tgz", + "integrity": "sha512-nD0Z9fNIZcxYX5Mai2CTmFD7wX7UldCkW2ezCF8D1T5hdiLsnTWDGRpfRYntU6VjTdLQjOvyszru7I1c1oCQew==", + "dev": true, + "license": "MIT" }, "node_modules/@types/btoa-lite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/btoa-lite/-/btoa-lite-1.0.0.tgz", - "integrity": "sha512-wJsiX1tosQ+J5+bY5LrSahHxr2wT+uME5UDwdN1kg4frt40euqA+wzECkmq4t5QbveHiJepfdThgQrPw6KiSlg==", - "dev": true + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/btoa-lite/-/btoa-lite-1.0.2.tgz", + "integrity": "sha512-ZYbcE2x7yrvNFJiU7xJGrpF/ihpkM7zKgw8bha3LNJSesvTtUNxbpzaT7WXBIryf6jovisrxTBvymxMeLLj1Mg==", + "dev": true, + "license": "MIT" }, "node_modules/@types/json-schema": { "version": "7.0.9", @@ -667,25 +700,31 @@ "dev": true }, "node_modules/@types/jsonwebtoken": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", - "integrity": "sha512-drE6uz7QBKq1fYqqoFKTDRdFCPHd5TCub75BM+D+cMx7NU9hUz7SESLfC2fSCXVFMO5Yj8sOWHuGqPgjc+fz0Q==", + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.7.tgz", + "integrity": "sha512-ugo316mmTYBl2g81zDFnZ7cfxlut3o+/EQdaP7J8QN2kY6lJ22hmQYCK5EHcJHbrW+dkCGSCPgbG8JtYj6qSrg==", "dev": true, + "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/node": { - "version": "20.3.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.3.1.tgz", - "integrity": "sha512-EhcH/wvidPy1WeML3TtYFGR83UzjxeWRen9V402T8aUGYsCHOmfoisV3ZSg03gAFIbLq8TnWOJ0f4cALtnSEUg==", - "dev": true + "version": "22.10.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.5.tgz", + "integrity": "sha512-F8Q+SeGimwOo86fiovQh8qiXfFEh2/ocYv7tU5pJ3EXMSSxk1Joj5wefpFK2fHTf/N6HKGSxIDBT9f3gCxXPkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.20.0" + } }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "4.33.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/experimental-utils": "4.33.0", "@typescript-eslint/scope-manager": "4.33.0", @@ -757,6 +796,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/scope-manager": "4.33.0", "@typescript-eslint/types": "4.33.0", @@ -894,6 +934,7 @@ "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, + "license": "MIT", "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -1045,6 +1086,17 @@ "node": ">=8" } }, + "node_modules/autobind-decorator": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/autobind-decorator/-/autobind-decorator-2.4.0.tgz", + "integrity": "sha512-OGYhWUO72V6DafbF8PM8rm3EPbfuyMZcJhtm5/n26IDwO18pohE4eNazLoCGhPiXOCD0gEGmrbU3849QvM8bbw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.10", + "npm": ">=6.4.1" + } + }, "node_modules/available-typed-arrays": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", @@ -1068,13 +1120,15 @@ "version": "2.2.3", "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", - "dev": true + "dev": true, + "license": "Apache-2.0" }, "node_modules/bottleneck": { "version": "2.19.5", "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/brace-expansion": { "version": "1.1.11", @@ -1102,13 +1156,15 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz", "integrity": "sha512-gvW7InbIyF8AicrqWoptdW08pUxuhq8BEgowNajy9RhiE86fmGAGl+bLKo6oB8QP0CkqHLowfN0oJdKC/J6LbA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/buffer-equal-constant-time": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", - "dev": true + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/call-bind": { "version": "1.0.2", @@ -1154,6 +1210,7 @@ "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -1240,7 +1297,8 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", - "dev": true + "dev": true, + "license": "ISC" }, "node_modules/dir-glob": { "version": "3.0.1", @@ -1271,6 +1329,7 @@ "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { "safe-buffer": "^5.0.1" } @@ -1401,7 +1460,9 @@ "version": "7.32.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "7.12.11", "@eslint/eslintrc": "^0.4.3", @@ -1530,6 +1591,7 @@ "resolved": "https://registry.npmjs.org/eslint-plugin-tsdoc/-/eslint-plugin-tsdoc-0.2.17.tgz", "integrity": "sha512-xRmVi7Zx44lOBuYqG8vzTXuL6IdGOeF9nHX17bjJ8+VE6fsxpdGem0/SBTmAwgYMKYB1WBkqRJVQ+n8GK041pA==", "dev": true, + "license": "MIT", "dependencies": { "@microsoft/tsdoc": "0.14.2", "@microsoft/tsdoc-config": "0.16.2" @@ -1809,7 +1871,8 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/fs.realpath": { "version": "1.0.0", @@ -2112,6 +2175,7 @@ "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -2306,6 +2370,7 @@ "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -2417,6 +2482,16 @@ "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==", "dev": true }, + "node_modules/jodit": { + "version": "4.2.47", + "resolved": "https://registry.npmjs.org/jodit/-/jodit-4.2.47.tgz", + "integrity": "sha512-3dSdV+dUjwbuNKhn2M6hs8F7qkiufBPJFMB6YVJWbja7RqkQHGtrCGkpZJ1PH16chUgET2Yi+LVOonWyf/nV8g==", + "dev": true, + "license": "MIT", + "dependencies": { + "autobind-decorator": "^2.4.0" + } + }, "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -2449,15 +2524,22 @@ "dev": true }, "node_modules/jsonwebtoken": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz", - "integrity": "sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", "dev": true, + "license": "MIT", "dependencies": { "jws": "^3.2.2", - "lodash": "^4.17.21", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", "ms": "^2.1.1", - "semver": "^7.3.8" + "semver": "^7.5.4" }, "engines": { "node": ">=12", @@ -2483,6 +2565,7 @@ "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", "dev": true, + "license": "MIT", "dependencies": { "buffer-equal-constant-time": "1.0.1", "ecdsa-sig-formatter": "1.0.11", @@ -2494,6 +2577,7 @@ "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", "dev": true, + "license": "MIT", "dependencies": { "jwa": "^1.4.1", "safe-buffer": "^5.0.1" @@ -2512,11 +2596,47 @@ "node": ">= 0.8.0" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "dev": true, + "license": "MIT" }, "node_modules/lodash.merge": { "version": "4.6.2", @@ -2524,6 +2644,13 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "dev": true, + "license": "MIT" + }, "node_modules/lodash.truncate": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", @@ -2544,15 +2671,13 @@ } }, "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-9.1.2.tgz", + "integrity": "sha512-ERJq3FOzJTxBbFjZ7iDs+NiK4VI9Wz+RdrrAB8dio1oV+YvdPzUEE4QNiT2VD51DkIbCYRUUzCRkssXCHqSnKQ==", "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, + "license": "ISC", "engines": { - "node": ">=10" + "node": "14 || >=16.14" } }, "node_modules/merge2": { @@ -2602,10 +2727,11 @@ "dev": true }, "node_modules/node-fetch": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz", - "integrity": "sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dev": true, + "license": "MIT", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -2736,10 +2862,11 @@ } }, "node_modules/octokit": { - "version": "2.0.22", - "resolved": "https://registry.npmjs.org/octokit/-/octokit-2.0.22.tgz", - "integrity": "sha512-QBgGSB+odZ5o3ysLy5d2Qvwwx5+GU1zLVgkgpy3o4XocmrD/YInaIVUCA6nR8jUmdf5lgyyiYPyxRt0UrNwqMQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/octokit/-/octokit-2.1.0.tgz", + "integrity": "sha512-Pxi6uKTjBRZWgAwsw1NgHdRlL+QASCN35OYS7X79o7PtBME0CLXEroZmPtEwlWZbPTP+iDbEy2wCbSOgm0uGIQ==", "dev": true, + "license": "MIT", "dependencies": { "@octokit/app": "^13.1.5", "@octokit/core": "^4.2.1", @@ -2748,6 +2875,7 @@ "@octokit/plugin-rest-endpoint-methods": "^7.1.1", "@octokit/plugin-retry": "^4.1.3", "@octokit/plugin-throttling": "^5.2.2", + "@octokit/request-error": "^v3.0.3", "@octokit/types": "^9.2.2" }, "engines": { @@ -3030,7 +3158,8 @@ "type": "consulting", "url": "https://feross.org/support" } - ] + ], + "license": "MIT" }, "node_modules/safe-regex-test": { "version": "1.0.0", @@ -3048,13 +3177,11 @@ } }, "node_modules/semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -3321,7 +3448,8 @@ "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/tslib": { "version": "1.14.1", @@ -3388,6 +3516,8 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", "dev": true, + "license": "Apache-2.0", + "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -3412,21 +3542,30 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/undici-types": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "dev": true, + "license": "MIT" + }, "node_modules/universal-github-app-jwt": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/universal-github-app-jwt/-/universal-github-app-jwt-1.1.1.tgz", - "integrity": "sha512-G33RTLrIBMFmlDV4u4CBF7dh71eWwykck4XgaxaIVeZKOYZRAAxvcGMRFTUclVY6xoUPQvO4Ne5wKGxYm/Yy9w==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/universal-github-app-jwt/-/universal-github-app-jwt-1.2.0.tgz", + "integrity": "sha512-dncpMpnsKBk0eetwfN8D8OUHGfiDhhJ+mtsbMl+7PfW7mYjiH8LIcqRmYMtzYLgSh47HjfdBtrBwIQ/gizKR3g==", "dev": true, + "license": "MIT", "dependencies": { "@types/jsonwebtoken": "^9.0.0", - "jsonwebtoken": "^9.0.0" + "jsonwebtoken": "^9.0.2" } }, "node_modules/universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", - "dev": true + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", + "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==", + "dev": true, + "license": "ISC" }, "node_modules/uri-js": { "version": "4.4.1", @@ -3447,13 +3586,15 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "dev": true + "dev": true, + "license": "BSD-2-Clause" }, "node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dev": true, + "license": "MIT", "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -3526,12 +3667,6 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true - }, - "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 } }, "dependencies": { @@ -3620,10 +3755,13 @@ } }, "@dnncommunity/dnn-elements": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/@dnncommunity/dnn-elements/-/dnn-elements-0.18.0.tgz", - "integrity": "sha512-ohi8G5sf07P2khHa4g/KHk5Rv3+tFnsyknbuyohNW9ermID4EvAj50q9ojN85H39iijBhfEz2Vh5/4JtGNbfJg==", - "dev": true + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/@dnncommunity/dnn-elements/-/dnn-elements-0.25.1.tgz", + "integrity": "sha512-vpw9YU/C9uQPm/0y+CjNPbtt10LVEM5meRI6nv5CXDTGyEk3IUVnhcYZgVHGgvwWXF6XZsj1bEmY5DsIdYa51A==", + "dev": true, + "requires": { + "jodit": "^4.2.27" + } }, "@eslint/eslintrc": { "version": "0.4.3", @@ -3741,14 +3879,6 @@ "lru-cache": "^9.0.0", "universal-github-app-jwt": "^1.1.1", "universal-user-agent": "^6.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-9.1.2.tgz", - "integrity": "sha512-ERJq3FOzJTxBbFjZ7iDs+NiK4VI9Wz+RdrrAB8dio1oV+YvdPzUEE4QNiT2VD51DkIbCYRUUzCRkssXCHqSnKQ==", - "dev": true - } } }, "@octokit/auth-oauth-app": { @@ -3882,9 +4012,9 @@ } }, "@octokit/openapi-types": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.0.0.tgz", - "integrity": "sha512-V8GImKs3TeQRxRtXFpG2wl19V7444NIOTDF24AWuIbmNaNYOQMWRbjcGDXV5B+0n887fgDcuMNOmlul+k+oJtw==", + "version": "18.1.1", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.1.1.tgz", + "integrity": "sha512-VRaeH8nCDtF5aXWnjPuEMIYf1itK/s3JYyJcWFJT8X9pSNnBtriDf7wlEWsGuhPLl4QIH4xM8fqTXDwJ3Mu6sw==", "dev": true }, "@octokit/plugin-paginate-rest": { @@ -3978,9 +4108,9 @@ } }, "@octokit/webhooks": { - "version": "10.9.1", - "resolved": "https://registry.npmjs.org/@octokit/webhooks/-/webhooks-10.9.1.tgz", - "integrity": "sha512-5NXU4VfsNOo2VSU/SrLrpPH2Z1ZVDOWFcET4EpnEBX1uh/v8Uz65UVuHIRx5TZiXhnWyRE9AO1PXHa+M/iWwZA==", + "version": "10.9.2", + "resolved": "https://registry.npmjs.org/@octokit/webhooks/-/webhooks-10.9.2.tgz", + "integrity": "sha512-hFVF/szz4l/Y/GQdKxNmQjUke0XJXK986p+ucIlubTGVPVtVtup5G1jarQfvCMBs9Fvlf9dvH8K83E4lefmofQ==", "dev": true, "requires": { "@octokit/request-error": "^3.0.0", @@ -4002,9 +4132,9 @@ "dev": true }, "@stencil/core": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@stencil/core/-/core-3.4.0.tgz", - "integrity": "sha512-kEtPtV6QegME8YgMjWrhS7KktItbhqOpAuK9aXypDdI/7bLU9iM/4DtnQGWY/DARBophk+XRBfNXcE62Bmi0dw==", + "version": "4.23.2", + "resolved": "https://registry.npmjs.org/@stencil/core/-/core-4.23.2.tgz", + "integrity": "sha512-UC0+FApqwQEzIqmN13z0dcTAJOu30zlfTttiAlOsE7TXEK+0G6OnUPz7OtEm1413o3WTNUVpm9JWj3qg0JatIA==", "dev": true }, "@stencil/eslint-plugin": { @@ -4018,29 +4148,29 @@ } }, "@stencil/sass": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@stencil/sass/-/sass-3.0.4.tgz", - "integrity": "sha512-k1dP0A2QBx62m250FATc1hErXxXs6Jnf4TBxdL1C/dc32Kzz2n5aCT4SodBz0ebT5WMnITauZyFqYxzCzDoKag==", + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/@stencil/sass/-/sass-3.0.12.tgz", + "integrity": "sha512-aXMgpG13ftxLYo2dDauapvE9gKzSxTAqCMOfTqbPhKUCZ43JsknkLx+PArRaFtfYeVGSQ8eTS4ck7/Nlec+PNA==", "dev": true, "requires": {} }, "@stencil/store": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@stencil/store/-/store-2.0.8.tgz", - "integrity": "sha512-6yNRPyItnVq45r8TtXLIZZMCqtgqA2xiO7alUnr28W5dlDIKMW1W80Muozh1p4FSqRcYLWUUDladXdc+/xXJBA==", + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/@stencil/store/-/store-2.0.16.tgz", + "integrity": "sha512-ET3EByKlmNyTA8O+tcp5YWePOiVnPIiuoiIaxTrf3zFFVo7JWVsVoak9IE0UTn3MkIM0ubR9lgxvi70uN588/A==", "dev": true, "requires": {} }, "@types/aws-lambda": { - "version": "8.10.119", - "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.119.tgz", - "integrity": "sha512-Vqm22aZrCvCd6I5g1SvpW151jfqwTzEZ7XJ3yZ6xaZG31nUEOEyzzVImjRcsN8Wi/QyPxId/x8GTtgIbsy8kEw==", + "version": "8.10.147", + "resolved": "https://registry.npmjs.org/@types/aws-lambda/-/aws-lambda-8.10.147.tgz", + "integrity": "sha512-nD0Z9fNIZcxYX5Mai2CTmFD7wX7UldCkW2ezCF8D1T5hdiLsnTWDGRpfRYntU6VjTdLQjOvyszru7I1c1oCQew==", "dev": true }, "@types/btoa-lite": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/btoa-lite/-/btoa-lite-1.0.0.tgz", - "integrity": "sha512-wJsiX1tosQ+J5+bY5LrSahHxr2wT+uME5UDwdN1kg4frt40euqA+wzECkmq4t5QbveHiJepfdThgQrPw6KiSlg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/btoa-lite/-/btoa-lite-1.0.2.tgz", + "integrity": "sha512-ZYbcE2x7yrvNFJiU7xJGrpF/ihpkM7zKgw8bha3LNJSesvTtUNxbpzaT7WXBIryf6jovisrxTBvymxMeLLj1Mg==", "dev": true }, "@types/json-schema": { @@ -4050,19 +4180,22 @@ "dev": true }, "@types/jsonwebtoken": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", - "integrity": "sha512-drE6uz7QBKq1fYqqoFKTDRdFCPHd5TCub75BM+D+cMx7NU9hUz7SESLfC2fSCXVFMO5Yj8sOWHuGqPgjc+fz0Q==", + "version": "9.0.7", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.7.tgz", + "integrity": "sha512-ugo316mmTYBl2g81zDFnZ7cfxlut3o+/EQdaP7J8QN2kY6lJ22hmQYCK5EHcJHbrW+dkCGSCPgbG8JtYj6qSrg==", "dev": true, "requires": { "@types/node": "*" } }, "@types/node": { - "version": "20.3.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.3.1.tgz", - "integrity": "sha512-EhcH/wvidPy1WeML3TtYFGR83UzjxeWRen9V402T8aUGYsCHOmfoisV3ZSg03gAFIbLq8TnWOJ0f4cALtnSEUg==", - "dev": true + "version": "22.10.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.5.tgz", + "integrity": "sha512-F8Q+SeGimwOo86fiovQh8qiXfFEh2/ocYv7tU5pJ3EXMSSxk1Joj5wefpFK2fHTf/N6HKGSxIDBT9f3gCxXPkQ==", + "dev": true, + "requires": { + "undici-types": "~6.20.0" + } }, "@typescript-eslint/eslint-plugin": { "version": "4.33.0", @@ -4298,6 +4431,12 @@ "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true }, + "autobind-decorator": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/autobind-decorator/-/autobind-decorator-2.4.0.tgz", + "integrity": "sha512-OGYhWUO72V6DafbF8PM8rm3EPbfuyMZcJhtm5/n26IDwO18pohE4eNazLoCGhPiXOCD0gEGmrbU3849QvM8bbw==", + "dev": true + }, "available-typed-arrays": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", @@ -5318,6 +5457,15 @@ "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==", "dev": true }, + "jodit": { + "version": "4.2.47", + "resolved": "https://registry.npmjs.org/jodit/-/jodit-4.2.47.tgz", + "integrity": "sha512-3dSdV+dUjwbuNKhn2M6hs8F7qkiufBPJFMB6YVJWbja7RqkQHGtrCGkpZJ1PH16chUgET2Yi+LVOonWyf/nV8g==", + "dev": true, + "requires": { + "autobind-decorator": "^2.4.0" + } + }, "js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", @@ -5347,15 +5495,21 @@ "dev": true }, "jsonwebtoken": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.0.tgz", - "integrity": "sha512-tuGfYXxkQGDPnLJ7SibiQgVgeDgfbPq2k2ICcbgqW8WxWLBAxKQM/ZCu/IT8SOSwmaYl4dpTFCW5xZv7YbbWUw==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", "dev": true, "requires": { "jws": "^3.2.2", - "lodash": "^4.17.21", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", "ms": "^2.1.1", - "semver": "^7.3.8" + "semver": "^7.5.4" } }, "jsx-ast-utils": { @@ -5400,10 +5554,40 @@ "type-check": "~0.4.0" } }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", + "dev": true + }, + "lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", + "dev": true + }, + "lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", + "dev": true + }, + "lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", + "dev": true + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", "dev": true }, "lodash.merge": { @@ -5412,6 +5596,12 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "dev": true + }, "lodash.truncate": { "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", @@ -5429,13 +5619,10 @@ } }, "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-9.1.2.tgz", + "integrity": "sha512-ERJq3FOzJTxBbFjZ7iDs+NiK4VI9Wz+RdrrAB8dio1oV+YvdPzUEE4QNiT2VD51DkIbCYRUUzCRkssXCHqSnKQ==", + "dev": true }, "merge2": { "version": "1.4.1", @@ -5475,9 +5662,9 @@ "dev": true }, "node-fetch": { - "version": "2.6.11", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.11.tgz", - "integrity": "sha512-4I6pdBY1EthSqDmJkiNk3JIT8cswwR9nfeW/cPdUagJYEQG7R95WRH74wpz7ma8Gh/9dI9FP+OU+0E4FvtA55w==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dev": true, "requires": { "whatwg-url": "^5.0.0" @@ -5565,9 +5752,9 @@ } }, "octokit": { - "version": "2.0.22", - "resolved": "https://registry.npmjs.org/octokit/-/octokit-2.0.22.tgz", - "integrity": "sha512-QBgGSB+odZ5o3ysLy5d2Qvwwx5+GU1zLVgkgpy3o4XocmrD/YInaIVUCA6nR8jUmdf5lgyyiYPyxRt0UrNwqMQ==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/octokit/-/octokit-2.1.0.tgz", + "integrity": "sha512-Pxi6uKTjBRZWgAwsw1NgHdRlL+QASCN35OYS7X79o7PtBME0CLXEroZmPtEwlWZbPTP+iDbEy2wCbSOgm0uGIQ==", "dev": true, "requires": { "@octokit/app": "^13.1.5", @@ -5577,6 +5764,7 @@ "@octokit/plugin-rest-endpoint-methods": "^7.1.1", "@octokit/plugin-retry": "^4.1.3", "@octokit/plugin-throttling": "^5.2.2", + "@octokit/request-error": "^v3.0.3", "@octokit/types": "^9.2.2" } }, @@ -5768,13 +5956,10 @@ } }, "semver": { - "version": "7.5.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.2.tgz", - "integrity": "sha512-SoftuTROv/cRjCze/scjGyiDtcUyxw1rgYQSZY7XTmtR5hX+dm76iDbTH8TkLPHCQmlbQVSSbNZCPM2hb0knnQ==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true }, "shebang-command": { "version": "2.0.0", @@ -6021,7 +6206,8 @@ "version": "4.9.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", - "dev": true + "dev": true, + "peer": true }, "unbox-primitive": { "version": "1.0.2", @@ -6036,20 +6222,26 @@ "which-boxed-primitive": "^1.0.2" } }, + "undici-types": { + "version": "6.20.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", + "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "dev": true + }, "universal-github-app-jwt": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/universal-github-app-jwt/-/universal-github-app-jwt-1.1.1.tgz", - "integrity": "sha512-G33RTLrIBMFmlDV4u4CBF7dh71eWwykck4XgaxaIVeZKOYZRAAxvcGMRFTUclVY6xoUPQvO4Ne5wKGxYm/Yy9w==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/universal-github-app-jwt/-/universal-github-app-jwt-1.2.0.tgz", + "integrity": "sha512-dncpMpnsKBk0eetwfN8D8OUHGfiDhhJ+mtsbMl+7PfW7mYjiH8LIcqRmYMtzYLgSh47HjfdBtrBwIQ/gizKR3g==", "dev": true, "requires": { "@types/jsonwebtoken": "^9.0.0", - "jsonwebtoken": "^9.0.0" + "jsonwebtoken": "^9.0.2" } }, "universal-user-agent": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", - "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", + "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==", "dev": true }, "uri-js": { @@ -6132,12 +6324,6 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true } } } diff --git a/module.web/package.json b/module.web/package.json index 86e6bf0..fd93844 100644 --- a/module.web/package.json +++ b/module.web/package.json @@ -23,17 +23,16 @@ "generate": "stencil generate" }, "devDependencies": { - "@dnncommunity/dnn-elements": "^0.18.0", - "@stencil/core": "^3.4.0", + "@dnncommunity/dnn-elements": "^0.25.1", + "@stencil/core": "^4.23.2", "@stencil/eslint-plugin": "^0.4.0", - "@stencil/sass": "^3.0.4", - "@stencil/store": "^2.0.8", - "@typescript-eslint/eslint-plugin": "^4.31.0", - "@typescript-eslint/parser": "^4.31.1", + "@stencil/sass": "^3.0.12", + "@stencil/store": "^2.0.16", + "@typescript-eslint/eslint-plugin": "^4.33.0", + "@typescript-eslint/parser": "^4.33.0", "eslint": "^7.32.0", "eslint-plugin-tsdoc": "^0.2.17", - "octokit": "^2.0.22", - "typescript": "^4.9.5" + "octokit": "^2.1.0" }, "license": "MIT" } From ea97f874c62fbc397eea8c8239d0dc26c0442976 Mon Sep 17 00:00:00 2001 From: David Poindexter Date: Mon, 13 Jan 2025 02:04:30 -0500 Subject: [PATCH 11/12] Updated default view to ensure it shows bulletins for the current version of DNN --- .../dnn-security-center.tsx | 34 +++++++------------ .../components/dnn-security-center/readme.md | 3 ++ 2 files changed, 16 insertions(+), 21 deletions(-) diff --git a/module.web/src/components/dnn-security-center/dnn-security-center.tsx b/module.web/src/components/dnn-security-center/dnn-security-center.tsx index 4aefe82..637f315 100644 --- a/module.web/src/components/dnn-security-center/dnn-security-center.tsx +++ b/module.web/src/components/dnn-security-center/dnn-security-center.tsx @@ -1,4 +1,4 @@ -import { Component, h, Prop, Host, Element, State } from "@stencil/core"; +import { Component, h, Prop, Host, Element, State, Watch } from "@stencil/core"; import { LocalizationClient, SecurityClient, LocalizationViewModel, SecurityBulletinsViewModel } from "../../services/services"; import state, { localizationState } from "../../store/state"; import alertError from "../../services/alert-error"; @@ -29,10 +29,16 @@ export class DnnSecurityCenter { /** The Dnn module id, required in order to access web services. */ @Prop() moduleId!: number; - @State() selectValue: string = '090101'; @State() securityBulletins: SecurityBulletinsViewModel; @State() expandedBulletinIndex: number; @State() dnnVersions: string[]; + @State() selectValue: string; + @Watch('selectValue') + selectValueChanged(newValue: string, oldValue: string) { + if (newValue !== oldValue) { + this.getSecurityBulletins(); + } + } componentWillLoad() { return new Promise((resolve, reject) => { @@ -50,20 +56,16 @@ export class DnnSecurityCenter { }); } - componentDidLoad() { - this.getSecurityBulletins(); - } - private getDnnTags() { this.githubService.getTags().then(data => { this.dnnVersions = data; - this.dnnVersions.unshift('All Versions'); this.dnnVersions = [...this.dnnVersions, ...preGitHubDnnVersions] + this.selectValue = this.dnnVersions[0].replace(/\./g, ''); }).catch(reason => { alertError(reason); }); } - + private getSecurityBulletins() { this.securityClient.getSecurityBulletins(this.selectValue).then(data => { this.securityBulletins = data; @@ -72,16 +74,6 @@ export class DnnSecurityCenter { }); } - private handleSelect(event): void { - this.securityBulletins = undefined; - this.selectValue = event.target.value; - if (this.selectValue === 'All Versions') { - window.location.reload(); - return; - } - this.getSecurityBulletins(); - } - private decodeHtml(text: string): string { return text.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace('”', '').replace('”', ''); } @@ -109,11 +101,11 @@ export class DnnSecurityCenter { {this.dnnVersions &&

{this.resx.uI.dnnPlatformVersion}:   - +

} {this.securityBulletins === undefined && diff --git a/module.web/src/components/dnn-security-center/readme.md b/module.web/src/components/dnn-security-center/readme.md index a8e0b8a..7764d10 100644 --- a/module.web/src/components/dnn-security-center/readme.md +++ b/module.web/src/components/dnn-security-center/readme.md @@ -16,14 +16,17 @@ Root component that does all the module rendering. ### Depends on +- dnn-select - dnn-chevron - dnn-collapsible ### Graph ```mermaid graph TD; + dnn-security-center --> dnn-select dnn-security-center --> dnn-chevron dnn-security-center --> dnn-collapsible + dnn-select --> dnn-fieldset style dnn-security-center fill:#f9f,stroke:#333,stroke-width:4px ``` From e7c6dbb8d92c2fbb1f1478586c90bcf4a139e4c4 Mon Sep 17 00:00:00 2001 From: David Poindexter Date: Mon, 13 Jan 2025 19:39:43 -0500 Subject: [PATCH 12/12] Refined dnn-select styling and moved label --- .../dnn-security-center/dnn-security-center.scss | 16 +++++++++------- .../dnn-security-center/dnn-security-center.tsx | 13 +++++-------- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/module.web/src/components/dnn-security-center/dnn-security-center.scss b/module.web/src/components/dnn-security-center/dnn-security-center.scss index c8d5502..4b1f0ef 100644 --- a/module.web/src/components/dnn-security-center/dnn-security-center.scss +++ b/module.web/src/components/dnn-security-center/dnn-security-center.scss @@ -1,17 +1,19 @@ + :host { display: block; - + .header { display: flex; justify-content: space-between; } + + dnn-select { + --control-radius: 10px; + min-width: 20em; + } - select { - background-color: whitesmoke; - border-radius: 10px; - border: 0px; - padding: 10px; - font-size: large; + .no-bulletins { + margin-top: 1em; } .collapse-row{ diff --git a/module.web/src/components/dnn-security-center/dnn-security-center.tsx b/module.web/src/components/dnn-security-center/dnn-security-center.tsx index 637f315..af7b7db 100644 --- a/module.web/src/components/dnn-security-center/dnn-security-center.tsx +++ b/module.web/src/components/dnn-security-center/dnn-security-center.tsx @@ -99,14 +99,11 @@ export class DnnSecurityCenter {

{this.resx.uI.dnnSecurityCenter}

{this.dnnVersions && -

- {this.resx.uI.dnnPlatformVersion}:   - this.selectValue = e.detail}> - {this.dnnVersions.map(version => - - )} - -

+ this.selectValue = e.detail}> + {this.dnnVersions.map(version => + + )} + } {this.securityBulletins === undefined &&
{this.resx.uI.loading}