From 9640c00a3d56130d13c8686e80d7e97ad1c0f515 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Standa=20Luke=C5=A1?= Date: Fri, 26 Jan 2024 10:59:34 +0100 Subject: [PATCH] gzip compression of command and staticCommand requests Adds option to enable/disable gzip compression of requests, using standard HTTP Content-Encoding: gzip header. Since neither Chrome nor Firefox browsers support preview of the compressed JSON request, it is currently only enabled in Production environment. To mitigate the possibility of DOS using a decompression bomb, request size limit is added, by default set to 128MB --- .../DotvvmRuntimeConfiguration.cs | 12 + .../Infrastructure/BodyResourceLinks.cs | 7 +- .../Framework/Hosting/DotvvmPresenter.cs | 23 +- .../Resources/Scripts/dotvvm-base.ts | 4 + .../Resources/Scripts/dotvvm-root.ts | 3 +- .../Resources/Scripts/postback/http.ts | 15 +- .../Framework/Utils/LimitLengthStream.cs | 96 ++ src/Framework/Framework/build.js | 4 +- src/Framework/Framework/package.json | 9 +- src/Framework/Framework/tsconfig.json | 4 +- src/Framework/Framework/yarn.lock | 833 +++++++++++------- ...ulesServerSideTests.IncludeViewModule.html | 2 +- ...rSideTests.IncludeViewModuleInControl.html | 2 +- ...gurationSerializationTests.AuxOptions.json | 4 +- ...rializationTests.ExperimentalFeatures.json | 4 +- ...onfigurationSerializationTests.Markup.json | 4 +- ...nfigurationSerializationTests.RestAPI.json | 4 +- ...alizationTests.SerializeDefaultConfig.json | 4 +- ...rializationTests.SerializeEmptyConfig.json | 4 +- ...SerializationTests.SerializeResources.json | 4 +- ...ionSerializationTests.SerializeRoutes.json | 4 +- 21 files changed, 701 insertions(+), 345 deletions(-) create mode 100644 src/Framework/Framework/Utils/LimitLengthStream.cs diff --git a/src/Framework/Framework/Configuration/DotvvmRuntimeConfiguration.cs b/src/Framework/Framework/Configuration/DotvvmRuntimeConfiguration.cs index 359a5dcd26..2426fb3de6 100644 --- a/src/Framework/Framework/Configuration/DotvvmRuntimeConfiguration.cs +++ b/src/Framework/Framework/Configuration/DotvvmRuntimeConfiguration.cs @@ -22,6 +22,18 @@ public class DotvvmRuntimeConfiguration [JsonProperty("reloadMarkupFiles")] public DotvvmGlobal3StateFeatureFlag ReloadMarkupFiles { get; } = new("Dotvvm3StateFeatureFlag.ReloadMarkupFiles"); + /// + /// When enabled, command and staticCommand requests are compressed client-side and DotVVM accepts the compressed requests. + /// It is enabled by default in Production mode. + /// See to limit the impact of potential decompression bomb. Although compression may be enabled only for specific routes, DotVVM does not check authentication before decompressing the request. + /// + [JsonProperty("compressPostbacks")] + public Dotvvm3StateFeatureFlag CompressPostbacks { get; } = new("DotvvmFeatureFlag.CompressPostbacks"); + + /// Maximum size of command/staticCommand request body after decompression (does not affect file upload). Default = 128MB, lower limit is a basic protection against decompression bomb attack. Set to -1 to disable the limit. + [JsonProperty("maxPostbackSizeBytes")] + public long MaxPostbackSizeBytes { get; set; } = 1024 * 1024 * 128; // 128 MB + /// /// Initializes a new instance of the class. /// diff --git a/src/Framework/Framework/Controls/Infrastructure/BodyResourceLinks.cs b/src/Framework/Framework/Controls/Infrastructure/BodyResourceLinks.cs index 294806c42a..c5d7dcbdb8 100644 --- a/src/Framework/Framework/Controls/Infrastructure/BodyResourceLinks.cs +++ b/src/Framework/Framework/Controls/Infrastructure/BodyResourceLinks.cs @@ -33,7 +33,12 @@ protected override void RenderControl(IHtmlWriter writer, IDotvvmRequestContext // init on load var initCode = $"window.dotvvm.init({JsonConvert.ToString(CultureInfo.CurrentCulture.Name, '"', StringEscapeHandling.EscapeHtml)});"; - if (context.Configuration.ExperimentalFeatures.KnockoutDeferUpdates.IsEnabledForRoute(context.Route?.RouteName)) + var config = context.Configuration; + if (!config.Runtime.CompressPostbacks.IsEnabledForRoute(context.Route?.RouteName, defaultValue: !config.Debug)) + { + initCode = $"dotvvm.options.compressPOST=false;\n{initCode}"; + } + if (config.ExperimentalFeatures.KnockoutDeferUpdates.IsEnabledForRoute(context.Route?.RouteName)) { initCode = $"ko.options.deferUpdates = true;\n{initCode}"; } diff --git a/src/Framework/Framework/Hosting/DotvvmPresenter.cs b/src/Framework/Framework/Hosting/DotvvmPresenter.cs index 755cab055c..dee997e54a 100644 --- a/src/Framework/Framework/Hosting/DotvvmPresenter.cs +++ b/src/Framework/Framework/Hosting/DotvvmPresenter.cs @@ -200,7 +200,7 @@ public async Task ProcessRequestCore(IDotvvmRequestContext context) { // perform the postback string postData; - using (var sr = new StreamReader(context.HttpContext.Request.Body)) + using (var sr = new StreamReader(ReadRequestBody(context.HttpContext.Request, context.Route?.RouteName))) { postData = await sr.ReadToEndAsync(); } @@ -344,7 +344,7 @@ public async Task ProcessStaticCommandRequest(IDotvvmRequestContext context) try { JObject postData; - using (var jsonReader = new JsonTextReader(new StreamReader(context.HttpContext.Request.Body))) + using (var jsonReader = new JsonTextReader(new StreamReader(ReadRequestBody(context.HttpContext.Request, routeName: null)))) { postData = await JObject.LoadAsync(jsonReader); } @@ -548,6 +548,25 @@ Try refreshing the page to get rid of the error. } } + Stream ReadRequestBody(IHttpRequest request, string? routeName) + { + request.Headers.TryGetValue("Content-Encoding", out var encodingValue); + var encoding = encodingValue?.FirstOrDefault(); + var limitLengthHelp = "To increase the maximum request size, use the DotvvmConfiguration.Runtime.MaxPostbackSizeBytes option."; + if (encoding is null) + return LimitLengthStream.LimitLength(request.Body, configuration.Runtime.MaxPostbackSizeBytes, limitLengthHelp); + if (encoding is "gzip") + { + var enabled = routeName is null ? this.configuration.Runtime.CompressPostbacks.IsEnabledForAnyRoute(defaultValue: true) : this.configuration.Runtime.CompressPostbacks.IsEnabledForRoute(routeName, defaultValue: true); + if (!enabled) + throw new Exception($"Content-Encoding: gzip must be enabled in DotvvmConfiguration.Runtime.CompressPostbacks."); + var gzipStream = new System.IO.Compression.GZipStream(request.Body, System.IO.Compression.CompressionMode.Decompress); + return LimitLengthStream.LimitLength(gzipStream, configuration.Runtime.MaxPostbackSizeBytes, limitLengthHelp); + } + else + throw new Exception($"Unsupported Content-Encoding {encoding}"); + } + [Obsolete("Use context.RequestType == DotvvmRequestType.StaticCommand")] public static bool DetermineIsStaticCommand(IDotvvmRequestContext context) => context.RequestType == DotvvmRequestType.StaticCommand; diff --git a/src/Framework/Framework/Resources/Scripts/dotvvm-base.ts b/src/Framework/Framework/Resources/Scripts/dotvvm-base.ts index be6158b450..6abad6881b 100644 --- a/src/Framework/Framework/Resources/Scripts/dotvvm-base.ts +++ b/src/Framework/Framework/Resources/Scripts/dotvvm-base.ts @@ -10,6 +10,10 @@ import { replaceTypeInfo } from './metadata/typeMap' import { StateManager } from './state-manager' +export const options = { + compressPOST: true +} + type DotvvmCoreState = { _culture: string _viewModelCache?: any diff --git a/src/Framework/Framework/Resources/Scripts/dotvvm-root.ts b/src/Framework/Framework/Resources/Scripts/dotvvm-root.ts index 9b8fe16ad1..e8efaaa2ba 100644 --- a/src/Framework/Framework/Resources/Scripts/dotvvm-root.ts +++ b/src/Framework/Framework/Resources/Scripts/dotvvm-root.ts @@ -1,4 +1,4 @@ -import { initCore, getViewModel, getViewModelObservable, initBindings, getCulture, getState, getStateManager } from "./dotvvm-base" +import { initCore, getViewModel, getViewModelObservable, initBindings, getCulture, getState, getStateManager, options } from "./dotvvm-base" import * as events from './events' import * as spa from "./spa/spa" import * as validation from './validation/validation' @@ -121,6 +121,7 @@ const dotvvmExports = { logPostBackScriptError, level }, + options, translations: translations as any, StateManager, DotvvmEvent, diff --git a/src/Framework/Framework/Resources/Scripts/postback/http.ts b/src/Framework/Framework/Resources/Scripts/postback/http.ts index 0acf8d3a90..fb3d98ad3d 100644 --- a/src/Framework/Framework/Resources/Scripts/postback/http.ts +++ b/src/Framework/Framework/Resources/Scripts/postback/http.ts @@ -1,4 +1,4 @@ -import { getVirtualDirectory, getViewModel, getState, getStateManager } from '../dotvvm-base'; +import { getVirtualDirectory, getViewModel, getState, getStateManager, options } from '../dotvvm-base'; import { DotvvmPostbackError } from '../shared-classes'; import { logInfoVerbose, logWarning } from '../utils/logging'; import { keys } from '../utils/objects'; @@ -25,6 +25,10 @@ export async function postJSON(url: string, postData: any, signal: AbortSigna headers.append('Content-Type', 'application/json'); headers.append('X-DotVVM-PostBack', 'true'); appendAdditionalHeaders(headers, additionalHeaders); + if (postData.length > 1000 && options.compressPOST) { + postData = await compressString(postData) + headers.append('Content-Encoding', 'gzip') + } return await fetchJson(url, { body: postData, headers: headers, method: "POST", signal }); } @@ -103,3 +107,12 @@ function appendAdditionalHeaders(headers: Headers, additionalHeaders?: { [key: s } } } + +function compressString(data: string) { + if (!window.CompressionStream) { + return data + } + const blob = new Blob([data], { type: 'text/plain' }) + const stream = blob.stream().pipeThrough(new CompressionStream('gzip')) + return new Response(stream).blob() +} diff --git a/src/Framework/Framework/Utils/LimitLengthStream.cs b/src/Framework/Framework/Utils/LimitLengthStream.cs new file mode 100644 index 0000000000..6143872b2e --- /dev/null +++ b/src/Framework/Framework/Utils/LimitLengthStream.cs @@ -0,0 +1,96 @@ +using System; +using System.IO; +using System.Threading; +using System.Threading.Tasks; + +namespace DotVVM.Framework.Utils +{ + internal class LimitLengthStream : Stream + { + private readonly Stream innerStream; + private readonly long maxLength; + private readonly string comment; + private long position; + + public LimitLengthStream(Stream innerStream, long maxLength, string errorComment) + { + this.innerStream = innerStream; + this.maxLength = maxLength; + this.comment = errorComment; + } + + private void MovePosition(long offset) + { + position += offset; + if (position > maxLength) + throw new InvalidOperationException($"The stream is limited to {maxLength} bytes: {comment}"); + } + + public long RemainingAllowedLength => maxLength - position; + + + public override bool CanRead => innerStream.CanRead; + + public override bool CanSeek => false; + + public override bool CanWrite => false; + + public override long Length => innerStream.Length; + + public override long Position + { + get => innerStream.Position; + set => throw new NotImplementedException(); + } + + public override void Flush() => innerStream.Flush(); + public override int Read(byte[] buffer, int offset, int count) + { + var read = innerStream.Read(buffer, offset, (int)Math.Min(count, RemainingAllowedLength + 1)); + MovePosition(read); + return read; + } + + public override async Task ReadAsync(byte[] buffer, int offset, int count, CancellationToken cancellationToken) + { + var read = await innerStream.ReadAsync(buffer, offset, (int)Math.Min(count, RemainingAllowedLength + 1), cancellationToken); + MovePosition(read); + return read; + } +#if DotNetCore + public override int Read(Span buffer) + { + var read = innerStream.Read(buffer.Slice(0, (int)Math.Min(buffer.Length, RemainingAllowedLength + 1))); + MovePosition(read); + return read; + } + + public override async ValueTask ReadAsync(Memory buffer, CancellationToken cancellationToken = default) + { + var read = await innerStream.ReadAsync(buffer.Slice(0, (int)Math.Min(buffer.Length, RemainingAllowedLength + 1)), cancellationToken); + MovePosition(read); + return read; + } +#endif + public override long Seek(long offset, SeekOrigin origin) => throw new System.NotImplementedException(); + public override void SetLength(long value) => throw new System.NotImplementedException(); + public override void Write(byte[] buffer, int offset, int count) => throw new System.NotImplementedException(); + + public static Stream LimitLength(Stream s, long maxLength, string errorComment) + { + if (maxLength < 0 || maxLength == long.MaxValue) + return s; + + if (s.CanSeek) + { + if (s.Length > maxLength) + throw new InvalidOperationException($"The stream is limited to {maxLength} bytes: {errorComment}"); + return s; + } + else + { + return new LimitLengthStream(s, maxLength, errorComment); + } + } + } +} diff --git a/src/Framework/Framework/build.js b/src/Framework/Framework/build.js index c4aaa4476d..3ff35cfece 100644 --- a/src/Framework/Framework/build.js +++ b/src/Framework/Framework/build.js @@ -11,8 +11,8 @@ async function build({ debug, spa, output, input = "dotvvm-root.ts" }) { entryPoints: [`./Resources/Scripts/${input}`], outfile: `./obj/javascript/${output}/dotvvm-root.js`, define: { - "compileConstants.isSpa": spa, - "compileConstants.debug": debug, + "compileConstants.isSpa": String(spa), + "compileConstants.debug": String(debug), }, target: [ 'es2020' diff --git a/src/Framework/Framework/package.json b/src/Framework/Framework/package.json index da5367c90c..562ebd258a 100644 --- a/src/Framework/Framework/package.json +++ b/src/Framework/Framework/package.json @@ -2,9 +2,10 @@ "license": "Apache-2.0", "packageManager": "yarn@3.1.1", "devDependencies": { - "@types/jest": "26.0.14", + "@types/jest": "29.0.0", "@types/knockout": "^3.4.72", - "esbuild": "^0.14.39", + "@types/node": "20.11.5", + "esbuild": "^0.19.11", "fast-check": "2.5.0", "jest": "26.5.3", "jest-github-actions-reporter": "^1.0.3", @@ -12,8 +13,8 @@ "promise": "8.1.0", "symbol-es6": "^0.1.2", "systemjs": "6.7.1", - "ts-jest": "26.4.1", - "typescript": "4.7.4" + "ts-jest": "29.1.1", + "typescript": "5.3.3" }, "scripts": { "build": "node ./build.js", diff --git a/src/Framework/Framework/tsconfig.json b/src/Framework/Framework/tsconfig.json index 0353d4f4c3..63b83162f8 100644 --- a/src/Framework/Framework/tsconfig.json +++ b/src/Framework/Framework/tsconfig.json @@ -8,11 +8,11 @@ "removeComments": false, "sourceMap": true, "inlineSources": true, - "target": "ES2018", + "target": "ES2020", "declaration": true, "moduleResolution": "node", "strictNullChecks": true, - "lib": [ "dom", "es2015.promise", "es5", "es6" ], + "lib": [ "dom", "ES2020" ], "module": "ES2015" }, "exclude": ["obj/**", "Resources/Scripts/tests", "node_modules/**"], diff --git a/src/Framework/Framework/yarn.lock b/src/Framework/Framework/yarn.lock index 74be957b9e..0cbceb173f 100644 --- a/src/Framework/Framework/yarn.lock +++ b/src/Framework/Framework/yarn.lock @@ -41,6 +41,16 @@ __metadata: languageName: node linkType: hard +"@babel/code-frame@npm:^7.12.13": + version: 7.23.5 + resolution: "@babel/code-frame@npm:7.23.5" + dependencies: + "@babel/highlight": ^7.23.4 + chalk: ^2.4.2 + checksum: d90981fdf56a2824a9b14d19a4c0e8db93633fd488c772624b4e83e0ceac6039a27cd298a247c3214faa952bf803ba23696172ae7e7235f3b97f43ba278c569a + languageName: node + linkType: hard + "@babel/code-frame@npm:^7.22.13": version: 7.22.13 resolution: "@babel/code-frame@npm:7.22.13" @@ -273,6 +283,17 @@ __metadata: languageName: node linkType: hard +"@babel/highlight@npm:^7.23.4": + version: 7.23.4 + resolution: "@babel/highlight@npm:7.23.4" + dependencies: + "@babel/helper-validator-identifier": ^7.22.20 + chalk: ^2.4.2 + js-tokens: ^4.0.0 + checksum: 643acecdc235f87d925979a979b539a5d7d1f31ae7db8d89047269082694122d11aa85351304c9c978ceeb6d250591ccadb06c366f358ccee08bb9c122476b89 + languageName: node + linkType: hard + "@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.14.7, @babel/parser@npm:^7.16.7, @babel/parser@npm:^7.17.3": version: 7.17.3 resolution: "@babel/parser@npm:7.17.3" @@ -503,6 +524,167 @@ __metadata: languageName: node linkType: hard +"@esbuild/aix-ppc64@npm:0.19.11": + version: 0.19.11 + resolution: "@esbuild/aix-ppc64@npm:0.19.11" + conditions: os=aix & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/android-arm64@npm:0.19.11": + version: 0.19.11 + resolution: "@esbuild/android-arm64@npm:0.19.11" + conditions: os=android & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/android-arm@npm:0.19.11": + version: 0.19.11 + resolution: "@esbuild/android-arm@npm:0.19.11" + conditions: os=android & cpu=arm + languageName: node + linkType: hard + +"@esbuild/android-x64@npm:0.19.11": + version: 0.19.11 + resolution: "@esbuild/android-x64@npm:0.19.11" + conditions: os=android & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/darwin-arm64@npm:0.19.11": + version: 0.19.11 + resolution: "@esbuild/darwin-arm64@npm:0.19.11" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/darwin-x64@npm:0.19.11": + version: 0.19.11 + resolution: "@esbuild/darwin-x64@npm:0.19.11" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/freebsd-arm64@npm:0.19.11": + version: 0.19.11 + resolution: "@esbuild/freebsd-arm64@npm:0.19.11" + conditions: os=freebsd & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/freebsd-x64@npm:0.19.11": + version: 0.19.11 + resolution: "@esbuild/freebsd-x64@npm:0.19.11" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/linux-arm64@npm:0.19.11": + version: 0.19.11 + resolution: "@esbuild/linux-arm64@npm:0.19.11" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/linux-arm@npm:0.19.11": + version: 0.19.11 + resolution: "@esbuild/linux-arm@npm:0.19.11" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@esbuild/linux-ia32@npm:0.19.11": + version: 0.19.11 + resolution: "@esbuild/linux-ia32@npm:0.19.11" + conditions: os=linux & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/linux-loong64@npm:0.19.11": + version: 0.19.11 + resolution: "@esbuild/linux-loong64@npm:0.19.11" + conditions: os=linux & cpu=loong64 + languageName: node + linkType: hard + +"@esbuild/linux-mips64el@npm:0.19.11": + version: 0.19.11 + resolution: "@esbuild/linux-mips64el@npm:0.19.11" + conditions: os=linux & cpu=mips64el + languageName: node + linkType: hard + +"@esbuild/linux-ppc64@npm:0.19.11": + version: 0.19.11 + resolution: "@esbuild/linux-ppc64@npm:0.19.11" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + +"@esbuild/linux-riscv64@npm:0.19.11": + version: 0.19.11 + resolution: "@esbuild/linux-riscv64@npm:0.19.11" + conditions: os=linux & cpu=riscv64 + languageName: node + linkType: hard + +"@esbuild/linux-s390x@npm:0.19.11": + version: 0.19.11 + resolution: "@esbuild/linux-s390x@npm:0.19.11" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + +"@esbuild/linux-x64@npm:0.19.11": + version: 0.19.11 + resolution: "@esbuild/linux-x64@npm:0.19.11" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/netbsd-x64@npm:0.19.11": + version: 0.19.11 + resolution: "@esbuild/netbsd-x64@npm:0.19.11" + conditions: os=netbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/openbsd-x64@npm:0.19.11": + version: 0.19.11 + resolution: "@esbuild/openbsd-x64@npm:0.19.11" + conditions: os=openbsd & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/sunos-x64@npm:0.19.11": + version: 0.19.11 + resolution: "@esbuild/sunos-x64@npm:0.19.11" + conditions: os=sunos & cpu=x64 + languageName: node + linkType: hard + +"@esbuild/win32-arm64@npm:0.19.11": + version: 0.19.11 + resolution: "@esbuild/win32-arm64@npm:0.19.11" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@esbuild/win32-ia32@npm:0.19.11": + version: 0.19.11 + resolution: "@esbuild/win32-ia32@npm:0.19.11" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@esbuild/win32-x64@npm:0.19.11": + version: 0.19.11 + resolution: "@esbuild/win32-x64@npm:0.19.11" + conditions: os=win32 & cpu=x64 + languageName: node + linkType: hard + "@gar/promisify@npm:^1.0.1": version: 1.1.3 resolution: "@gar/promisify@npm:1.1.3" @@ -592,6 +774,15 @@ __metadata: languageName: node linkType: hard +"@jest/expect-utils@npm:^29.7.0": + version: 29.7.0 + resolution: "@jest/expect-utils@npm:29.7.0" + dependencies: + jest-get-type: ^29.6.3 + checksum: 75eb177f3d00b6331bcaa057e07c0ccb0733a1d0a1943e1d8db346779039cb7f103789f16e502f888a3096fb58c2300c38d1f3748b36a7fa762eb6f6d1b160ed + languageName: node + linkType: hard + "@jest/fake-timers@npm:^26.6.2": version: 26.6.2 resolution: "@jest/fake-timers@npm:26.6.2" @@ -653,6 +844,15 @@ __metadata: languageName: node linkType: hard +"@jest/schemas@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/schemas@npm:29.6.3" + dependencies: + "@sinclair/typebox": ^0.27.8 + checksum: 910040425f0fc93cd13e68c750b7885590b8839066dfa0cd78e7def07bbb708ad869381f725945d66f2284de5663bbecf63e8fdd856e2ae6e261ba30b1687e93 + languageName: node + linkType: hard + "@jest/source-map@npm:^26.6.2": version: 26.6.2 resolution: "@jest/source-map@npm:26.6.2" @@ -712,28 +912,30 @@ __metadata: languageName: node linkType: hard -"@jest/types@npm:^25.5.0": - version: 25.5.0 - resolution: "@jest/types@npm:25.5.0" +"@jest/types@npm:^26.6.2": + version: 26.6.2 + resolution: "@jest/types@npm:26.6.2" dependencies: "@types/istanbul-lib-coverage": ^2.0.0 - "@types/istanbul-reports": ^1.1.1 + "@types/istanbul-reports": ^3.0.0 + "@types/node": "*" "@types/yargs": ^15.0.0 - chalk: ^3.0.0 - checksum: 785b67521a2c54f290ad4b53f49fec6b14fa25828bf26a838f7bbe08dd42122f27f71a620ea9a33286346786e9b120dd370abf589e6ef8c5fde9dc56906880b1 + chalk: ^4.0.0 + checksum: a0bd3d2f22f26ddb23f41fddf6e6a30bf4fab2ce79ec1cb6ce6fdfaf90a72e00f4c71da91ec61e13db3b10c41de22cf49d07c57ff2b59171d64b29f909c1d8d6 languageName: node linkType: hard -"@jest/types@npm:^26.6.2": - version: 26.6.2 - resolution: "@jest/types@npm:26.6.2" +"@jest/types@npm:^29.6.3": + version: 29.6.3 + resolution: "@jest/types@npm:29.6.3" dependencies: + "@jest/schemas": ^29.6.3 "@types/istanbul-lib-coverage": ^2.0.0 "@types/istanbul-reports": ^3.0.0 "@types/node": "*" - "@types/yargs": ^15.0.0 + "@types/yargs": ^17.0.8 chalk: ^4.0.0 - checksum: a0bd3d2f22f26ddb23f41fddf6e6a30bf4fab2ce79ec1cb6ce6fdfaf90a72e00f4c71da91ec61e13db3b10c41de22cf49d07c57ff2b59171d64b29f909c1d8d6 + checksum: a0bcf15dbb0eca6bdd8ce61a3fb055349d40268622a7670a3b2eb3c3dbafe9eb26af59938366d520b86907b9505b0f9b29b85cec11579a9e580694b87cd90fcc languageName: node linkType: hard @@ -823,6 +1025,13 @@ __metadata: languageName: node linkType: hard +"@sinclair/typebox@npm:^0.27.8": + version: 0.27.8 + resolution: "@sinclair/typebox@npm:0.27.8" + checksum: 00bd7362a3439021aa1ea51b0e0d0a0e8ca1351a3d54c606b115fdcc49b51b16db6e5f43b4fe7a28c38688523e22a94d49dd31168868b655f0d4d50f032d07a1 + languageName: node + linkType: hard + "@sinonjs/commons@npm:^1.7.0": version: 1.8.3 resolution: "@sinonjs/commons@npm:1.8.3" @@ -914,16 +1123,6 @@ __metadata: languageName: node linkType: hard -"@types/istanbul-reports@npm:^1.1.1": - version: 1.1.2 - resolution: "@types/istanbul-reports@npm:1.1.2" - dependencies: - "@types/istanbul-lib-coverage": "*" - "@types/istanbul-lib-report": "*" - checksum: 00866e815d1e68d0a590d691506937b79d8d65ad8eab5ed34dbfee66136c7c0f4ea65327d32046d5fe469f22abea2b294987591dc66365ebc3991f7e413b2d78 - languageName: node - linkType: hard - "@types/istanbul-reports@npm:^3.0.0": version: 3.0.1 resolution: "@types/istanbul-reports@npm:3.0.1" @@ -933,23 +1132,13 @@ __metadata: languageName: node linkType: hard -"@types/jest@npm:26.0.14": - version: 26.0.14 - resolution: "@types/jest@npm:26.0.14" - dependencies: - jest-diff: ^25.2.1 - pretty-format: ^25.2.1 - checksum: 9d9c4bd3ae68c95b71c22b6d340d6174e9c9d017ffe15fc66dae29dc0486f7d862706d6450a1bff1dcc26916c445d527f98233c319eef1ec78c36c7ab6195b12 - languageName: node - linkType: hard - -"@types/jest@npm:26.x": - version: 26.0.24 - resolution: "@types/jest@npm:26.0.24" +"@types/jest@npm:29.0.0": + version: 29.0.0 + resolution: "@types/jest@npm:29.0.0" dependencies: - jest-diff: ^26.0.0 - pretty-format: ^26.0.0 - checksum: ae39675412f08d884926254e9b12bfd2b5a4e4d204c94d3148cb942174a474930d0c60540133c968f22241d4712b7940c96cbc883096eb326a4d5b206fb78bd0 + expect: ^29.0.0 + pretty-format: ^29.0.0 + checksum: b20c4b38c7c963862d82c21c0a1ae2b96015afb1511c835da43e8fd53659ca884f8103a2159be2ce74d2888472a1ac93d20d08ec1ac0970385cbb74c46d47585 languageName: node linkType: hard @@ -967,6 +1156,15 @@ __metadata: languageName: node linkType: hard +"@types/node@npm:20.11.5": + version: 20.11.5 + resolution: "@types/node@npm:20.11.5" + dependencies: + undici-types: ~5.26.4 + checksum: a542727de1334ae20a3ca034b0ecf4b464a57ca01efc4f9cf43bd9ab93896125ab3c2de060ecd8f6ae23b86c6bf3463f681b643e69c032c6a662d376c98a6092 + languageName: node + linkType: hard + "@types/normalize-package-data@npm:^2.4.0": version: 2.4.1 resolution: "@types/normalize-package-data@npm:2.4.1" @@ -1004,6 +1202,15 @@ __metadata: languageName: node linkType: hard +"@types/yargs@npm:^17.0.8": + version: 17.0.32 + resolution: "@types/yargs@npm:17.0.32" + dependencies: + "@types/yargs-parser": "*" + checksum: 4505bdebe8716ff383640c6e928f855b5d337cb3c68c81f7249fc6b983d0aa48de3eee26062b84f37e0d75a5797bc745e0c6e76f42f81771252a758c638f36ba + languageName: node + linkType: hard + "abab@npm:^2.0.3, abab@npm:^2.0.5": version: 2.0.5 resolution: "abab@npm:2.0.5" @@ -1117,6 +1324,13 @@ __metadata: languageName: node linkType: hard +"ansi-styles@npm:^5.0.0": + version: 5.2.0 + resolution: "ansi-styles@npm:5.2.0" + checksum: d7f4e97ce0623aea6bc0d90dcd28881ee04cba06c570b97fd3391bd7a268eedfd9d5e2dd4fdcbdd82b8105df5faf6f24aaedc08eaf3da898e702db5948f63469 + languageName: node + linkType: hard + "anymatch@npm:^2.0.0": version: 2.0.0 resolution: "anymatch@npm:2.0.0" @@ -1348,7 +1562,7 @@ __metadata: languageName: node linkType: hard -"braces@npm:^3.0.1": +"braces@npm:^3.0.1, braces@npm:^3.0.2": version: 3.0.2 resolution: "braces@npm:3.0.2" dependencies: @@ -1397,7 +1611,7 @@ __metadata: languageName: node linkType: hard -"buffer-from@npm:1.x, buffer-from@npm:^1.0.0": +"buffer-from@npm:^1.0.0": version: 1.1.2 resolution: "buffer-from@npm:1.1.2" checksum: 0448524a562b37d4d7ed9efd91685a5b77a50672c556ea254ac9a6d30e3403a517d8981f10e565db24e8339413b43c97ca2951f10e399c6125a0d8911f5679bb @@ -1495,16 +1709,6 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^3.0.0": - version: 3.0.0 - resolution: "chalk@npm:3.0.0" - dependencies: - ansi-styles: ^4.1.0 - supports-color: ^7.1.0 - checksum: 8e3ddf3981c4da405ddbd7d9c8d91944ddf6e33d6837756979f7840a29272a69a5189ecae0ff84006750d6d1e92368d413335eab4db5476db6e6703a1d1e0505 - languageName: node - linkType: hard - "chalk@npm:^4.0.0": version: 4.1.2 resolution: "chalk@npm:4.1.2" @@ -1536,6 +1740,13 @@ __metadata: languageName: node linkType: hard +"ci-info@npm:^3.2.0": + version: 3.9.0 + resolution: "ci-info@npm:3.9.0" + checksum: 6b19dc9b2966d1f8c2041a838217299718f15d6c4b63ae36e4674edd2bee48f780e94761286a56aa59eb305a85fbea4ddffb7630ec063e7ec7e7e5ad42549a87 + languageName: node + linkType: hard + "cjs-module-lexer@npm:^0.6.0": version: 0.6.0 resolution: "cjs-module-lexer@npm:0.6.0" @@ -1854,13 +2065,6 @@ __metadata: languageName: node linkType: hard -"diff-sequences@npm:^25.2.6": - version: 25.2.6 - resolution: "diff-sequences@npm:25.2.6" - checksum: 082c1eb691cc8bffdeca10e1df561fe85c3786420c135d05d5642fdada7dafbc3f77372a67cc3aff6313c272d76d646df768554873d897cf1d15a63dd232e7aa - languageName: node - linkType: hard - "diff-sequences@npm:^26.6.2": version: 26.6.2 resolution: "diff-sequences@npm:26.6.2" @@ -1868,6 +2072,13 @@ __metadata: languageName: node linkType: hard +"diff-sequences@npm:^29.6.3": + version: 29.6.3 + resolution: "diff-sequences@npm:29.6.3" + checksum: f4914158e1f2276343d98ff5b31fc004e7304f5470bf0f1adb2ac6955d85a531a6458d33e87667f98f6ae52ebd3891bb47d420bb48a5bd8b7a27ee25b20e33aa + languageName: node + linkType: hard + "domexception@npm:^2.0.1": version: 2.0.1 resolution: "domexception@npm:2.0.1" @@ -1939,214 +2150,83 @@ __metadata: languageName: node linkType: hard -"esbuild-android-64@npm:0.14.39": - version: 0.14.39 - resolution: "esbuild-android-64@npm:0.14.39" - conditions: os=android & cpu=x64 - languageName: node - linkType: hard - -"esbuild-android-arm64@npm:0.14.39": - version: 0.14.39 - resolution: "esbuild-android-arm64@npm:0.14.39" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - -"esbuild-darwin-64@npm:0.14.39": - version: 0.14.39 - resolution: "esbuild-darwin-64@npm:0.14.39" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - -"esbuild-darwin-arm64@npm:0.14.39": - version: 0.14.39 - resolution: "esbuild-darwin-arm64@npm:0.14.39" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"esbuild-freebsd-64@npm:0.14.39": - version: 0.14.39 - resolution: "esbuild-freebsd-64@npm:0.14.39" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - -"esbuild-freebsd-arm64@npm:0.14.39": - version: 0.14.39 - resolution: "esbuild-freebsd-arm64@npm:0.14.39" - conditions: os=freebsd & cpu=arm64 - languageName: node - linkType: hard - -"esbuild-linux-32@npm:0.14.39": - version: 0.14.39 - resolution: "esbuild-linux-32@npm:0.14.39" - conditions: os=linux & cpu=ia32 - languageName: node - linkType: hard - -"esbuild-linux-64@npm:0.14.39": - version: 0.14.39 - resolution: "esbuild-linux-64@npm:0.14.39" - conditions: os=linux & cpu=x64 - languageName: node - linkType: hard - -"esbuild-linux-arm64@npm:0.14.39": - version: 0.14.39 - resolution: "esbuild-linux-arm64@npm:0.14.39" - conditions: os=linux & cpu=arm64 - languageName: node - linkType: hard - -"esbuild-linux-arm@npm:0.14.39": - version: 0.14.39 - resolution: "esbuild-linux-arm@npm:0.14.39" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - -"esbuild-linux-mips64le@npm:0.14.39": - version: 0.14.39 - resolution: "esbuild-linux-mips64le@npm:0.14.39" - conditions: os=linux & cpu=mips64el - languageName: node - linkType: hard - -"esbuild-linux-ppc64le@npm:0.14.39": - version: 0.14.39 - resolution: "esbuild-linux-ppc64le@npm:0.14.39" - conditions: os=linux & cpu=ppc64 - languageName: node - linkType: hard - -"esbuild-linux-riscv64@npm:0.14.39": - version: 0.14.39 - resolution: "esbuild-linux-riscv64@npm:0.14.39" - conditions: os=linux & cpu=riscv64 - languageName: node - linkType: hard - -"esbuild-linux-s390x@npm:0.14.39": - version: 0.14.39 - resolution: "esbuild-linux-s390x@npm:0.14.39" - conditions: os=linux & cpu=s390x - languageName: node - linkType: hard - -"esbuild-netbsd-64@npm:0.14.39": - version: 0.14.39 - resolution: "esbuild-netbsd-64@npm:0.14.39" - conditions: os=netbsd & cpu=x64 - languageName: node - linkType: hard - -"esbuild-openbsd-64@npm:0.14.39": - version: 0.14.39 - resolution: "esbuild-openbsd-64@npm:0.14.39" - conditions: os=openbsd & cpu=x64 - languageName: node - linkType: hard - -"esbuild-sunos-64@npm:0.14.39": - version: 0.14.39 - resolution: "esbuild-sunos-64@npm:0.14.39" - conditions: os=sunos & cpu=x64 - languageName: node - linkType: hard - -"esbuild-windows-32@npm:0.14.39": - version: 0.14.39 - resolution: "esbuild-windows-32@npm:0.14.39" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - -"esbuild-windows-64@npm:0.14.39": - version: 0.14.39 - resolution: "esbuild-windows-64@npm:0.14.39" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - -"esbuild-windows-arm64@npm:0.14.39": - version: 0.14.39 - resolution: "esbuild-windows-arm64@npm:0.14.39" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - -"esbuild@npm:^0.14.39": - version: 0.14.39 - resolution: "esbuild@npm:0.14.39" - dependencies: - esbuild-android-64: 0.14.39 - esbuild-android-arm64: 0.14.39 - esbuild-darwin-64: 0.14.39 - esbuild-darwin-arm64: 0.14.39 - esbuild-freebsd-64: 0.14.39 - esbuild-freebsd-arm64: 0.14.39 - esbuild-linux-32: 0.14.39 - esbuild-linux-64: 0.14.39 - esbuild-linux-arm: 0.14.39 - esbuild-linux-arm64: 0.14.39 - esbuild-linux-mips64le: 0.14.39 - esbuild-linux-ppc64le: 0.14.39 - esbuild-linux-riscv64: 0.14.39 - esbuild-linux-s390x: 0.14.39 - esbuild-netbsd-64: 0.14.39 - esbuild-openbsd-64: 0.14.39 - esbuild-sunos-64: 0.14.39 - esbuild-windows-32: 0.14.39 - esbuild-windows-64: 0.14.39 - esbuild-windows-arm64: 0.14.39 +"esbuild@npm:^0.19.11": + version: 0.19.11 + resolution: "esbuild@npm:0.19.11" + dependencies: + "@esbuild/aix-ppc64": 0.19.11 + "@esbuild/android-arm": 0.19.11 + "@esbuild/android-arm64": 0.19.11 + "@esbuild/android-x64": 0.19.11 + "@esbuild/darwin-arm64": 0.19.11 + "@esbuild/darwin-x64": 0.19.11 + "@esbuild/freebsd-arm64": 0.19.11 + "@esbuild/freebsd-x64": 0.19.11 + "@esbuild/linux-arm": 0.19.11 + "@esbuild/linux-arm64": 0.19.11 + "@esbuild/linux-ia32": 0.19.11 + "@esbuild/linux-loong64": 0.19.11 + "@esbuild/linux-mips64el": 0.19.11 + "@esbuild/linux-ppc64": 0.19.11 + "@esbuild/linux-riscv64": 0.19.11 + "@esbuild/linux-s390x": 0.19.11 + "@esbuild/linux-x64": 0.19.11 + "@esbuild/netbsd-x64": 0.19.11 + "@esbuild/openbsd-x64": 0.19.11 + "@esbuild/sunos-x64": 0.19.11 + "@esbuild/win32-arm64": 0.19.11 + "@esbuild/win32-ia32": 0.19.11 + "@esbuild/win32-x64": 0.19.11 dependenciesMeta: - esbuild-android-64: + "@esbuild/aix-ppc64": + optional: true + "@esbuild/android-arm": + optional: true + "@esbuild/android-arm64": optional: true - esbuild-android-arm64: + "@esbuild/android-x64": optional: true - esbuild-darwin-64: + "@esbuild/darwin-arm64": optional: true - esbuild-darwin-arm64: + "@esbuild/darwin-x64": optional: true - esbuild-freebsd-64: + "@esbuild/freebsd-arm64": optional: true - esbuild-freebsd-arm64: + "@esbuild/freebsd-x64": optional: true - esbuild-linux-32: + "@esbuild/linux-arm": optional: true - esbuild-linux-64: + "@esbuild/linux-arm64": optional: true - esbuild-linux-arm: + "@esbuild/linux-ia32": optional: true - esbuild-linux-arm64: + "@esbuild/linux-loong64": optional: true - esbuild-linux-mips64le: + "@esbuild/linux-mips64el": optional: true - esbuild-linux-ppc64le: + "@esbuild/linux-ppc64": optional: true - esbuild-linux-riscv64: + "@esbuild/linux-riscv64": optional: true - esbuild-linux-s390x: + "@esbuild/linux-s390x": optional: true - esbuild-netbsd-64: + "@esbuild/linux-x64": optional: true - esbuild-openbsd-64: + "@esbuild/netbsd-x64": optional: true - esbuild-sunos-64: + "@esbuild/openbsd-x64": optional: true - esbuild-windows-32: + "@esbuild/sunos-x64": optional: true - esbuild-windows-64: + "@esbuild/win32-arm64": optional: true - esbuild-windows-arm64: + "@esbuild/win32-ia32": + optional: true + "@esbuild/win32-x64": optional: true bin: esbuild: bin/esbuild - checksum: 400d97fb3ede3bdd6a50f28fd7d18d9a009a46dcf59c3988b87842f421ae36fa9a3c81bb0acd6ab07059143bc4b5f0c429f8a4129d1dc687e00aa497eb10f77b + checksum: ae949a796d1d06b55275ae7491ce137857468f69a93d8cc9c0943d2a701ac54e14dbb250a2ba56f2ad98283669578f1ec3bd85a4681910a5ff29a2470c3bd62c languageName: node linkType: hard @@ -2289,6 +2369,19 @@ __metadata: languageName: node linkType: hard +"expect@npm:^29.0.0": + version: 29.7.0 + resolution: "expect@npm:29.7.0" + dependencies: + "@jest/expect-utils": ^29.7.0 + jest-get-type: ^29.6.3 + jest-matcher-utils: ^29.7.0 + jest-message-util: ^29.7.0 + jest-util: ^29.7.0 + checksum: 9257f10288e149b81254a0fda8ffe8d54a7061cd61d7515779998b012579d2b8c22354b0eb901daf0145f347403da582f75f359f4810c007182ad3fb318b5c0c + languageName: node + linkType: hard + "extend-shallow@npm:^2.0.1": version: 2.0.1 resolution: "extend-shallow@npm:2.0.1" @@ -2547,6 +2640,13 @@ __metadata: languageName: node linkType: hard +"graceful-fs@npm:^4.2.9": + version: 4.2.11 + resolution: "graceful-fs@npm:4.2.11" + checksum: ac85f94da92d8eb6b7f5a8b20ce65e43d66761c55ce85ac96df6865308390da45a8d3f0296dd3a663de65d30ba497bd46c696cc1e248c72b13d6d567138a4fc7 + languageName: node + linkType: hard + "growly@npm:^1.3.0": version: 1.3.0 resolution: "growly@npm:1.3.0" @@ -3131,19 +3231,7 @@ __metadata: languageName: node linkType: hard -"jest-diff@npm:^25.2.1": - version: 25.5.0 - resolution: "jest-diff@npm:25.5.0" - dependencies: - chalk: ^3.0.0 - diff-sequences: ^25.2.6 - jest-get-type: ^25.2.6 - pretty-format: ^25.5.0 - checksum: b7e9739b0fc2ba89a044e6cf4dd5a53f4bb00800a153cbc6eb9b4e91da3241bf0cb2ced007fd220182f41be4bbb7dd645b7c8b9fdb299b2720056209d7d56960 - languageName: node - linkType: hard - -"jest-diff@npm:^26.0.0, jest-diff@npm:^26.6.2": +"jest-diff@npm:^26.6.2": version: 26.6.2 resolution: "jest-diff@npm:26.6.2" dependencies: @@ -3155,6 +3243,18 @@ __metadata: languageName: node linkType: hard +"jest-diff@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-diff@npm:29.7.0" + dependencies: + chalk: ^4.0.0 + diff-sequences: ^29.6.3 + jest-get-type: ^29.6.3 + pretty-format: ^29.7.0 + checksum: 08e24a9dd43bfba1ef07a6374e5af138f53137b79ec3d5cc71a2303515335898888fa5409959172e1e05de966c9e714368d15e8994b0af7441f0721ee8e1bb77 + languageName: node + linkType: hard + "jest-docblock@npm:^26.0.0": version: 26.0.0 resolution: "jest-docblock@npm:26.0.0" @@ -3206,13 +3306,6 @@ __metadata: languageName: node linkType: hard -"jest-get-type@npm:^25.2.6": - version: 25.2.6 - resolution: "jest-get-type@npm:25.2.6" - checksum: d1f59027b0baa6b8a6f4b3f900de1a77714647351907981ea57c16340e6a58a9c702b580055331af25ee3872768f1241c0616de9777a63e4eb32fc409dcbf9ac - languageName: node - linkType: hard - "jest-get-type@npm:^26.3.0": version: 26.3.0 resolution: "jest-get-type@npm:26.3.0" @@ -3220,6 +3313,13 @@ __metadata: languageName: node linkType: hard +"jest-get-type@npm:^29.6.3": + version: 29.6.3 + resolution: "jest-get-type@npm:29.6.3" + checksum: 88ac9102d4679d768accae29f1e75f592b760b44277df288ad76ce5bf038c3f5ce3719dea8aa0f035dac30e9eb034b848ce716b9183ad7cc222d029f03e92205 + languageName: node + linkType: hard + "jest-github-actions-reporter@npm:^1.0.3": version: 1.0.3 resolution: "jest-github-actions-reporter@npm:1.0.3" @@ -3314,6 +3414,18 @@ __metadata: languageName: node linkType: hard +"jest-matcher-utils@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-matcher-utils@npm:29.7.0" + dependencies: + chalk: ^4.0.0 + jest-diff: ^29.7.0 + jest-get-type: ^29.6.3 + pretty-format: ^29.7.0 + checksum: d7259e5f995d915e8a37a8fd494cb7d6af24cd2a287b200f831717ba0d015190375f9f5dc35393b8ba2aae9b2ebd60984635269c7f8cff7d85b077543b7744cd + languageName: node + linkType: hard + "jest-message-util@npm:^26.6.2": version: 26.6.2 resolution: "jest-message-util@npm:26.6.2" @@ -3331,6 +3443,23 @@ __metadata: languageName: node linkType: hard +"jest-message-util@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-message-util@npm:29.7.0" + dependencies: + "@babel/code-frame": ^7.12.13 + "@jest/types": ^29.6.3 + "@types/stack-utils": ^2.0.0 + chalk: ^4.0.0 + graceful-fs: ^4.2.9 + micromatch: ^4.0.4 + pretty-format: ^29.7.0 + slash: ^3.0.0 + stack-utils: ^2.0.3 + checksum: a9d025b1c6726a2ff17d54cc694de088b0489456c69106be6b615db7a51b7beb66788bea7a59991a019d924fbf20f67d085a445aedb9a4d6760363f4d7d09930 + languageName: node + linkType: hard + "jest-mock@npm:^26.6.2": version: 26.6.2 resolution: "jest-mock@npm:26.6.2" @@ -3486,7 +3615,7 @@ __metadata: languageName: node linkType: hard -"jest-util@npm:^26.1.0, jest-util@npm:^26.6.2": +"jest-util@npm:^26.6.2": version: 26.6.2 resolution: "jest-util@npm:26.6.2" dependencies: @@ -3500,6 +3629,20 @@ __metadata: languageName: node linkType: hard +"jest-util@npm:^29.0.0, jest-util@npm:^29.7.0": + version: 29.7.0 + resolution: "jest-util@npm:29.7.0" + dependencies: + "@jest/types": ^29.6.3 + "@types/node": "*" + chalk: ^4.0.0 + ci-info: ^3.2.0 + graceful-fs: ^4.2.9 + picomatch: ^2.2.3 + checksum: 042ab4980f4ccd4d50226e01e5c7376a8556b472442ca6091a8f102488c0f22e6e8b89ea874111d2328a2080083bf3225c86f3788c52af0bd0345a00eb57a3ca + languageName: node + linkType: hard + "jest-validate@npm:^26.6.2": version: 26.6.2 resolution: "jest-validate@npm:26.6.2" @@ -3628,7 +3771,7 @@ __metadata: languageName: node linkType: hard -"json5@npm:2.x, json5@npm:^2.1.2": +"json5@npm:^2.1.2, json5@npm:^2.2.3": version: 2.2.3 resolution: "json5@npm:2.2.3" bin: @@ -3835,6 +3978,16 @@ __metadata: languageName: node linkType: hard +"micromatch@npm:^4.0.4": + version: 4.0.5 + resolution: "micromatch@npm:4.0.5" + dependencies: + braces: ^3.0.2 + picomatch: ^2.3.1 + checksum: 02a17b671c06e8fefeeb6ef996119c1e597c942e632a21ef589154f23898c9c6a9858526246abb14f8bca6e77734aa9dcf65476fca47cedfb80d9577d52843fc + languageName: node + linkType: hard + "mime-db@npm:1.51.0": version: 1.51.0 resolution: "mime-db@npm:1.51.0" @@ -3954,7 +4107,7 @@ __metadata: languageName: node linkType: hard -"mkdirp@npm:1.x, mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4": +"mkdirp@npm:^1.0.3, mkdirp@npm:^1.0.4": version: 1.0.4 resolution: "mkdirp@npm:1.0.4" bin: @@ -4325,7 +4478,7 @@ __metadata: languageName: node linkType: hard -"picomatch@npm:^2.0.4, picomatch@npm:^2.2.3": +"picomatch@npm:^2.0.4, picomatch@npm:^2.2.3, picomatch@npm:^2.3.1": version: 2.3.1 resolution: "picomatch@npm:2.3.1" checksum: 050c865ce81119c4822c45d3c84f1ced46f93a0126febae20737bd05ca20589c564d6e9226977df859ed5e03dc73f02584a2b0faad36e896936238238b0446cf @@ -4362,19 +4515,7 @@ __metadata: languageName: node linkType: hard -"pretty-format@npm:^25.2.1, pretty-format@npm:^25.5.0": - version: 25.5.0 - resolution: "pretty-format@npm:25.5.0" - dependencies: - "@jest/types": ^25.5.0 - ansi-regex: ^5.0.0 - ansi-styles: ^4.0.0 - react-is: ^16.12.0 - checksum: 76f022d2c911d9733a961467545f5aef2cae892da289fff92ba6a6868a10df4d8ef79794ff791e353f67f0edfa85765240f1e7d552e27c94029ae6af1c95174b - languageName: node - linkType: hard - -"pretty-format@npm:^26.0.0, pretty-format@npm:^26.6.2": +"pretty-format@npm:^26.6.2": version: 26.6.2 resolution: "pretty-format@npm:26.6.2" dependencies: @@ -4386,6 +4527,17 @@ __metadata: languageName: node linkType: hard +"pretty-format@npm:^29.0.0, pretty-format@npm:^29.7.0": + version: 29.7.0 + resolution: "pretty-format@npm:29.7.0" + dependencies: + "@jest/schemas": ^29.6.3 + ansi-styles: ^5.0.0 + react-is: ^18.0.0 + checksum: 032c1602383e71e9c0c02a01bbd25d6759d60e9c7cf21937dde8357aa753da348fcec5def5d1002c9678a8524d5fe099ad98861286550ef44de8808cc61e43b6 + languageName: node + linkType: hard + "promise-inflight@npm:^1.0.1": version: 1.0.1 resolution: "promise-inflight@npm:1.0.1" @@ -4460,13 +4612,6 @@ __metadata: languageName: node linkType: hard -"react-is@npm:^16.12.0": - version: 16.13.1 - resolution: "react-is@npm:16.13.1" - checksum: f7a19ac3496de32ca9ae12aa030f00f14a3d45374f1ceca0af707c831b2a6098ef0d6bdae51bd437b0a306d7f01d4677fcc8de7c0d331eb47ad0f46130e53c5f - languageName: node - linkType: hard - "react-is@npm:^17.0.1": version: 17.0.2 resolution: "react-is@npm:17.0.2" @@ -4474,6 +4619,13 @@ __metadata: languageName: node linkType: hard +"react-is@npm:^18.0.0": + version: 18.2.0 + resolution: "react-is@npm:18.2.0" + checksum: e72d0ba81b5922759e4aff17e0252bd29988f9642ed817f56b25a3e217e13eea8a7f2322af99a06edb779da12d5d636e9fda473d620df9a3da0df2a74141d53e + languageName: node + linkType: hard + "read-pkg-up@npm:^7.0.1": version: 7.0.1 resolution: "read-pkg-up@npm:7.0.1" @@ -4638,9 +4790,10 @@ __metadata: version: 0.0.0-use.local resolution: "root-workspace-0b6124@workspace:." dependencies: - "@types/jest": 26.0.14 + "@types/jest": 29.0.0 "@types/knockout": ^3.4.72 - esbuild: ^0.14.39 + "@types/node": 20.11.5 + esbuild: ^0.19.11 fast-check: 2.5.0 jest: 26.5.3 jest-github-actions-reporter: ^1.0.3 @@ -4648,8 +4801,8 @@ __metadata: promise: 8.1.0 symbol-es6: ^0.1.2 systemjs: 6.7.1 - ts-jest: 26.4.1 - typescript: 4.7.4 + ts-jest: 29.1.1 + typescript: 5.3.3 languageName: unknown linkType: soft @@ -4727,7 +4880,16 @@ __metadata: languageName: node linkType: hard -"semver@npm:7.x, semver@npm:^7.3.2, semver@npm:^7.3.5": +"semver@npm:^6.0.0, semver@npm:^6.3.0": + version: 6.3.1 + resolution: "semver@npm:6.3.1" + bin: + semver: bin/semver.js + checksum: ae47d06de28836adb9d3e25f22a92943477371292d9b665fb023fae278d345d508ca1958232af086d85e0155aee22e313e100971898bbb8d5d89b8b1d4054ca2 + languageName: node + linkType: hard + +"semver@npm:^7.3.2, semver@npm:^7.3.5": version: 7.3.5 resolution: "semver@npm:7.3.5" dependencies: @@ -4738,12 +4900,14 @@ __metadata: languageName: node linkType: hard -"semver@npm:^6.0.0, semver@npm:^6.3.0": - version: 6.3.1 - resolution: "semver@npm:6.3.1" +"semver@npm:^7.5.3": + version: 7.5.4 + resolution: "semver@npm:7.5.4" + dependencies: + lru-cache: ^6.0.0 bin: semver: bin/semver.js - checksum: ae47d06de28836adb9d3e25f22a92943477371292d9b665fb023fae278d345d508ca1958232af086d85e0155aee22e313e100971898bbb8d5d89b8b1d4054ca2 + checksum: 12d8ad952fa353b0995bf180cdac205a4068b759a140e5d3c608317098b3575ac2f1e09182206bf2eb26120e1c0ed8fb92c48c592f6099680de56bb071423ca3 languageName: node linkType: hard @@ -5009,6 +5173,15 @@ __metadata: languageName: node linkType: hard +"stack-utils@npm:^2.0.3": + version: 2.0.6 + resolution: "stack-utils@npm:2.0.6" + dependencies: + escape-string-regexp: ^2.0.0 + checksum: 052bf4d25bbf5f78e06c1d5e67de2e088b06871fa04107ca8d3f0e9d9263326e2942c8bedee3545795fc77d787d443a538345eef74db2f8e35db3558c6f91ff7 + languageName: node + linkType: hard + "static-extend@npm:^0.1.1": version: 0.1.2 resolution: "static-extend@npm:0.1.2" @@ -5252,27 +5425,36 @@ __metadata: languageName: node linkType: hard -"ts-jest@npm:26.4.1": - version: 26.4.1 - resolution: "ts-jest@npm:26.4.1" +"ts-jest@npm:29.1.1": + version: 29.1.1 + resolution: "ts-jest@npm:29.1.1" dependencies: - "@types/jest": 26.x bs-logger: 0.x - buffer-from: 1.x fast-json-stable-stringify: 2.x - jest-util: ^26.1.0 - json5: 2.x + jest-util: ^29.0.0 + json5: ^2.2.3 lodash.memoize: 4.x make-error: 1.x - mkdirp: 1.x - semver: 7.x - yargs-parser: 20.x + semver: ^7.5.3 + yargs-parser: ^21.0.1 peerDependencies: - jest: ">=26 <27" - typescript: ">=3.8 <5.0" + "@babel/core": ">=7.0.0-beta.0 <8" + "@jest/types": ^29.0.0 + babel-jest: ^29.0.0 + jest: ^29.0.0 + typescript: ">=4.3 <6" + peerDependenciesMeta: + "@babel/core": + optional: true + "@jest/types": + optional: true + babel-jest: + optional: true + esbuild: + optional: true bin: ts-jest: cli.js - checksum: ea9f0ec0f9f931938fbd44467e4c80a2eec4161795a32548dc0349a0f224ad7343ffe4eb7a53e7bc14c5b6427bbc21c7875c8a7c86244b014fd8607ad5404f32 + checksum: a8c9e284ed4f819526749f6e4dc6421ec666f20ab44d31b0f02b4ed979975f7580b18aea4813172d43e39b29464a71899f8893dd29b06b4a351a3af8ba47b402 languageName: node linkType: hard @@ -5329,23 +5511,30 @@ __metadata: languageName: node linkType: hard -"typescript@npm:4.7.4": - version: 4.7.4 - resolution: "typescript@npm:4.7.4" +"typescript@npm:5.3.3": + version: 5.3.3 + resolution: "typescript@npm:5.3.3" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 5750181b1cd7e6482c4195825547e70f944114fb47e58e4aa7553e62f11b3f3173766aef9c281783edfd881f7b8299cf35e3ca8caebe73d8464528c907a164df + checksum: 2007ccb6e51bbbf6fde0a78099efe04dc1c3dfbdff04ca3b6a8bc717991862b39fd6126c0c3ebf2d2d98ac5e960bcaa873826bb2bb241f14277034148f41f6a2 languageName: node linkType: hard -"typescript@patch:typescript@4.7.4#~builtin": - version: 4.7.4 - resolution: "typescript@patch:typescript@npm%3A4.7.4#~builtin::version=4.7.4&hash=bda367" +"typescript@patch:typescript@5.3.3#~builtin": + version: 5.3.3 + resolution: "typescript@patch:typescript@npm%3A5.3.3#~builtin::version=5.3.3&hash=bda367" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: 96d3030cb01143570567cb4f3a616b10df65f658f0e74e853e77a089a6a954e35c800be7db8b9bfe9a1ae05d9c2897e281359f65e4caa1caf266368e1c4febd3 + checksum: f61375590b3162599f0f0d5b8737877ac0a7bc52761dbb585d67e7b8753a3a4c42d9a554c4cc929f591ffcf3a2b0602f65ae3ce74714fd5652623a816862b610 + languageName: node + linkType: hard + +"undici-types@npm:~5.26.4": + version: 5.26.5 + resolution: "undici-types@npm:5.26.5" + checksum: 3192ef6f3fd5df652f2dc1cd782b49d6ff14dc98e5dced492aa8a8c65425227da5da6aafe22523c67f035a272c599bb89cfe803c1db6311e44bed3042fc25487 languageName: node linkType: hard @@ -5650,13 +5839,6 @@ __metadata: languageName: node linkType: hard -"yargs-parser@npm:20.x": - version: 20.2.9 - resolution: "yargs-parser@npm:20.2.9" - checksum: 8bb69015f2b0ff9e17b2c8e6bfe224ab463dd00ca211eece72a4cd8a906224d2703fb8a326d36fdd0e68701e201b2a60ed7cf81ce0fd9b3799f9fe7745977ae3 - languageName: node - linkType: hard - "yargs-parser@npm:^18.1.2": version: 18.1.3 resolution: "yargs-parser@npm:18.1.3" @@ -5667,6 +5849,13 @@ __metadata: languageName: node linkType: hard +"yargs-parser@npm:^21.0.1": + version: 21.1.1 + resolution: "yargs-parser@npm:21.1.1" + checksum: ed2d96a616a9e3e1cc7d204c62ecc61f7aaab633dcbfab2c6df50f7f87b393993fe6640d017759fe112d0cb1e0119f2b4150a87305cc873fd90831c6a58ccf1c + languageName: node + linkType: hard + "yargs@npm:^15.4.1": version: 15.4.1 resolution: "yargs@npm:15.4.1" diff --git a/src/Tests/ControlTests/testoutputs/ViewModulesServerSideTests.IncludeViewModule.html b/src/Tests/ControlTests/testoutputs/ViewModulesServerSideTests.IncludeViewModule.html index f92075b260..944b1ec558 100644 --- a/src/Tests/ControlTests/testoutputs/ViewModulesServerSideTests.IncludeViewModule.html +++ b/src/Tests/ControlTests/testoutputs/ViewModulesServerSideTests.IncludeViewModule.html @@ -36,6 +36,6 @@ ], "typeMetadata": {} }"> - + diff --git a/src/Tests/ControlTests/testoutputs/ViewModulesServerSideTests.IncludeViewModuleInControl.html b/src/Tests/ControlTests/testoutputs/ViewModulesServerSideTests.IncludeViewModuleInControl.html index e791dec7b8..5a85b4e73a 100644 --- a/src/Tests/ControlTests/testoutputs/ViewModulesServerSideTests.IncludeViewModuleInControl.html +++ b/src/Tests/ControlTests/testoutputs/ViewModulesServerSideTests.IncludeViewModuleInControl.html @@ -70,6 +70,6 @@ } } }"> - + diff --git a/src/Tests/Runtime/config-tests/ConfigurationSerializationTests.AuxOptions.json b/src/Tests/Runtime/config-tests/ConfigurationSerializationTests.AuxOptions.json index 03804aaaef..3b7c192df0 100644 --- a/src/Tests/Runtime/config-tests/ConfigurationSerializationTests.AuxOptions.json +++ b/src/Tests/Runtime/config-tests/ConfigurationSerializationTests.AuxOptions.json @@ -34,7 +34,9 @@ } }, "runtime": { - "reloadMarkupFiles": {} + "reloadMarkupFiles": {}, + "compressPostbacks": {}, + "maxPostbackSizeBytes": 134217728 }, "defaultCulture": "cs-CZ", "clientSideValidation": false, diff --git a/src/Tests/Runtime/config-tests/ConfigurationSerializationTests.ExperimentalFeatures.json b/src/Tests/Runtime/config-tests/ConfigurationSerializationTests.ExperimentalFeatures.json index e9fab14acf..98eedf9e8a 100644 --- a/src/Tests/Runtime/config-tests/ConfigurationSerializationTests.ExperimentalFeatures.json +++ b/src/Tests/Runtime/config-tests/ConfigurationSerializationTests.ExperimentalFeatures.json @@ -33,7 +33,9 @@ } }, "runtime": { - "reloadMarkupFiles": {} + "reloadMarkupFiles": {}, + "compressPostbacks": {}, + "maxPostbackSizeBytes": 134217728 }, "defaultCulture": "en-US", "experimentalFeatures": { diff --git a/src/Tests/Runtime/config-tests/ConfigurationSerializationTests.Markup.json b/src/Tests/Runtime/config-tests/ConfigurationSerializationTests.Markup.json index e28d691727..214eef0115 100644 --- a/src/Tests/Runtime/config-tests/ConfigurationSerializationTests.Markup.json +++ b/src/Tests/Runtime/config-tests/ConfigurationSerializationTests.Markup.json @@ -75,7 +75,9 @@ } }, "runtime": { - "reloadMarkupFiles": {} + "reloadMarkupFiles": {}, + "compressPostbacks": {}, + "maxPostbackSizeBytes": 134217728 }, "defaultCulture": "en-US", "experimentalFeatures": {}, diff --git a/src/Tests/Runtime/config-tests/ConfigurationSerializationTests.RestAPI.json b/src/Tests/Runtime/config-tests/ConfigurationSerializationTests.RestAPI.json index d8998c75b9..5684860fdf 100644 --- a/src/Tests/Runtime/config-tests/ConfigurationSerializationTests.RestAPI.json +++ b/src/Tests/Runtime/config-tests/ConfigurationSerializationTests.RestAPI.json @@ -65,7 +65,9 @@ } }, "runtime": { - "reloadMarkupFiles": {} + "reloadMarkupFiles": {}, + "compressPostbacks": {}, + "maxPostbackSizeBytes": 134217728 }, "defaultCulture": "en-US", "experimentalFeatures": {}, diff --git a/src/Tests/Runtime/config-tests/ConfigurationSerializationTests.SerializeDefaultConfig.json b/src/Tests/Runtime/config-tests/ConfigurationSerializationTests.SerializeDefaultConfig.json index 63a2baef13..6349d5ddd1 100644 --- a/src/Tests/Runtime/config-tests/ConfigurationSerializationTests.SerializeDefaultConfig.json +++ b/src/Tests/Runtime/config-tests/ConfigurationSerializationTests.SerializeDefaultConfig.json @@ -148,7 +148,9 @@ } }, "runtime": { - "reloadMarkupFiles": {} + "reloadMarkupFiles": {}, + "compressPostbacks": {}, + "maxPostbackSizeBytes": 134217728 }, "defaultCulture": "en-US", "experimentalFeatures": { diff --git a/src/Tests/Runtime/config-tests/ConfigurationSerializationTests.SerializeEmptyConfig.json b/src/Tests/Runtime/config-tests/ConfigurationSerializationTests.SerializeEmptyConfig.json index cdb7088016..0d9326ac3f 100644 --- a/src/Tests/Runtime/config-tests/ConfigurationSerializationTests.SerializeEmptyConfig.json +++ b/src/Tests/Runtime/config-tests/ConfigurationSerializationTests.SerializeEmptyConfig.json @@ -33,7 +33,9 @@ } }, "runtime": { - "reloadMarkupFiles": {} + "reloadMarkupFiles": {}, + "compressPostbacks": {}, + "maxPostbackSizeBytes": 134217728 }, "defaultCulture": "en-US", "experimentalFeatures": {}, diff --git a/src/Tests/Runtime/config-tests/ConfigurationSerializationTests.SerializeResources.json b/src/Tests/Runtime/config-tests/ConfigurationSerializationTests.SerializeResources.json index 2b4dc1067b..65e5a9ac37 100644 --- a/src/Tests/Runtime/config-tests/ConfigurationSerializationTests.SerializeResources.json +++ b/src/Tests/Runtime/config-tests/ConfigurationSerializationTests.SerializeResources.json @@ -116,7 +116,9 @@ } }, "runtime": { - "reloadMarkupFiles": {} + "reloadMarkupFiles": {}, + "compressPostbacks": {}, + "maxPostbackSizeBytes": 134217728 }, "defaultCulture": "en-US", "experimentalFeatures": {}, diff --git a/src/Tests/Runtime/config-tests/ConfigurationSerializationTests.SerializeRoutes.json b/src/Tests/Runtime/config-tests/ConfigurationSerializationTests.SerializeRoutes.json index fb5d40095e..3b686a5d55 100644 --- a/src/Tests/Runtime/config-tests/ConfigurationSerializationTests.SerializeRoutes.json +++ b/src/Tests/Runtime/config-tests/ConfigurationSerializationTests.SerializeRoutes.json @@ -64,7 +64,9 @@ } }, "runtime": { - "reloadMarkupFiles": {} + "reloadMarkupFiles": {}, + "compressPostbacks": {}, + "maxPostbackSizeBytes": 134217728 }, "defaultCulture": "en-US", "experimentalFeatures": {},