From 68cb8ad0aa7f816546d6301158de3dc1190403f3 Mon Sep 17 00:00:00 2001 From: Yavor Ivanov Date: Mon, 16 Dec 2024 15:48:21 +0200 Subject: [PATCH 1/8] feat: Detect test resources in HTML test files --- src/linter/html/transpiler.ts | 24 ++++++++++++++++++++++++ src/linter/messages.ts | 10 ++++++++++ 2 files changed, 34 insertions(+) diff --git a/src/linter/html/transpiler.ts b/src/linter/html/transpiler.ts index 9aebfd09..6e1031f7 100644 --- a/src/linter/html/transpiler.ts +++ b/src/linter/html/transpiler.ts @@ -29,6 +29,8 @@ export default async function transpileHtml( if (!hasSrc && tag.textNodes?.length > 0) { report.addMessage(MESSAGE.CSP_UNSAFE_INLINE_SCRIPT, tag); } + + detectTestStarter(resourcePath, tag, context); }); stylesheetLinkTags.forEach((tag) => { @@ -52,6 +54,28 @@ export default async function transpileHtml( } } +function detectTestStarter(resourcePath: ResourcePath, tag: Tag, context: LinterContext) { + if (resourcePath.includes("testsuite.qunit.html")) { + const hasCreateSuite = tag.attributes.some((attr) => { + return attr.name.value.toLowerCase() === "src" && + attr.value.value.includes("resources/sap/ui/test/starter/createSuite.js"); + }); + + if (!hasCreateSuite) { + context.addLintingMessage(resourcePath, MESSAGE.PREFER_TEST_STARTER, {message: "Prefer test starter"}); + } + } else if (resourcePath.includes("qunit.html")) { + // resources/sap/ui/test/starter/runTest.js + const hasRunTest = tag.attributes.some((attr) => { + return attr.name.value.toLowerCase() === "src" && + attr.value.value.includes("resources/sap/ui/test/starter/runTest.js"); + }); + if (!hasRunTest) { + context.addLintingMessage(resourcePath, MESSAGE.PREFER_TEST_STARTER, {message: "Prefer test starter"}); + } + } +} + function findBootstrapTag(tags: Tag[]): Tag | undefined { // First search for script tag with id "sap-ui-bootstrap" for (const tag of tags) { diff --git a/src/linter/messages.ts b/src/linter/messages.ts index 0e57d228..ad1a2f72 100644 --- a/src/linter/messages.ts +++ b/src/linter/messages.ts @@ -12,6 +12,7 @@ const RULES = { "no-pseudo-modules": "no-pseudo-modules", "parsing-error": "parsing-error", "ui5-class-declaration": "ui5-class-declaration", + "prefer-test-starter": "prefer-test-starter", } as const; export enum LintMessageSeverity { @@ -63,6 +64,7 @@ export enum MESSAGE { PARTIALLY_DEPRECATED_ODATA_MODEL_V2_CREATE_ENTRY, PARTIALLY_DEPRECATED_ODATA_MODEL_V2_CREATE_ENTRY_PROPERTIES_ARRAY, PARTIALLY_DEPRECATED_PARAMETERS_GET, + PREFER_TEST_STARTER, REDUNDANT_BOOTSTRAP_PARAM, REDUNDANT_BOOTSTRAP_PARAM_ERROR, REDUNDANT_VIEW_CONFIG_PROPERTY, @@ -550,6 +552,14 @@ export const MESSAGE_INFO = { }, }, + [MESSAGE.PREFER_TEST_STARTER]: { + severity: LintMessageSeverity.Warning, + ruleId: RULES["prefer-test-starter"], + + message: ({message}: {message?: string}) => message, + details: () => undefined, + }, + [MESSAGE.REPLACED_BOOTSTRAP_PARAM]: { severity: LintMessageSeverity.Error, ruleId: RULES["no-deprecated-api"], From 70a5e794b48b56671100e00971638b2632b613f1 Mon Sep 17 00:00:00 2001 From: Yavor Ivanov Date: Tue, 17 Dec 2024 14:40:13 +0200 Subject: [PATCH 2/8] feat: Detect attachInit or ready in *.qunit.js --- src/linter/ui5Types/SourceFileLinter.ts | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/linter/ui5Types/SourceFileLinter.ts b/src/linter/ui5Types/SourceFileLinter.ts index 8f362c17..724df9f3 100644 --- a/src/linter/ui5Types/SourceFileLinter.ts +++ b/src/linter/ui5Types/SourceFileLinter.ts @@ -790,6 +790,11 @@ export default class SourceFileLinter { this.#analyzeMobileInit(node); } else if (symbolName === "setTheme" && moduleName === "sap/ui/core/Theming") { this.#analyzeThemingSetTheme(node); + } else if (this.sourceFile.fileName.includes(".qunit.js") && + symbolName === "ready" && moduleName === "sap/ui/core/Core") { + this.#reporter.addMessage(MESSAGE.PREFER_TEST_STARTER, { + message: "Prefer test starter", + }, node); } } @@ -826,11 +831,19 @@ export default class SourceFileLinter { } } + const propName = getPropertyName(reportNode); + this.#reporter.addMessage(MESSAGE.DEPRECATED_FUNCTION_CALL, { - functionName: getPropertyName(reportNode), + functionName: propName, additionalMessage, details: deprecationInfo.messageDetails, }, reportNode); + + if (propName === "attachInit" && this.sourceFile.fileName.includes(".qunit.js")) { + this.#reporter.addMessage(MESSAGE.PREFER_TEST_STARTER, { + message: "Prefer test starter", + }, reportNode); + } } getSymbolModuleDeclaration(symbol: ts.Symbol) { From 17c32ec0ea0ea0f9a86f9702720a3ac24868aa02 Mon Sep 17 00:00:00 2001 From: Yavor Ivanov Date: Tue, 17 Dec 2024 15:36:40 +0200 Subject: [PATCH 3/8] refactor: Update messages --- src/linter/html/transpiler.ts | 4 ++-- src/linter/messages.ts | 5 +++-- src/linter/ui5Types/SourceFileLinter.ts | 8 ++------ 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/src/linter/html/transpiler.ts b/src/linter/html/transpiler.ts index 6e1031f7..c95887ff 100644 --- a/src/linter/html/transpiler.ts +++ b/src/linter/html/transpiler.ts @@ -62,7 +62,7 @@ function detectTestStarter(resourcePath: ResourcePath, tag: Tag, context: Linter }); if (!hasCreateSuite) { - context.addLintingMessage(resourcePath, MESSAGE.PREFER_TEST_STARTER, {message: "Prefer test starter"}); + context.addLintingMessage(resourcePath, MESSAGE.PREFER_TEST_STARTER, undefined as never); } } else if (resourcePath.includes("qunit.html")) { // resources/sap/ui/test/starter/runTest.js @@ -71,7 +71,7 @@ function detectTestStarter(resourcePath: ResourcePath, tag: Tag, context: Linter attr.value.value.includes("resources/sap/ui/test/starter/runTest.js"); }); if (!hasRunTest) { - context.addLintingMessage(resourcePath, MESSAGE.PREFER_TEST_STARTER, {message: "Prefer test starter"}); + context.addLintingMessage(resourcePath, MESSAGE.PREFER_TEST_STARTER, undefined as never); } } } diff --git a/src/linter/messages.ts b/src/linter/messages.ts index ad1a2f72..16957b7c 100644 --- a/src/linter/messages.ts +++ b/src/linter/messages.ts @@ -556,8 +556,9 @@ export const MESSAGE_INFO = { severity: LintMessageSeverity.Warning, ruleId: RULES["prefer-test-starter"], - message: ({message}: {message?: string}) => message, - details: () => undefined, + message: () => "To save boilerplate code and ensure compliance with UI5 2.x best practices," + + " please migrate to the Test Starter concept", + details: () => "{@link topic:032be2cb2e1d4115af20862673bedcdb Test Starter}", }, [MESSAGE.REPLACED_BOOTSTRAP_PARAM]: { diff --git a/src/linter/ui5Types/SourceFileLinter.ts b/src/linter/ui5Types/SourceFileLinter.ts index 724df9f3..44a8696c 100644 --- a/src/linter/ui5Types/SourceFileLinter.ts +++ b/src/linter/ui5Types/SourceFileLinter.ts @@ -792,9 +792,7 @@ export default class SourceFileLinter { this.#analyzeThemingSetTheme(node); } else if (this.sourceFile.fileName.includes(".qunit.js") && symbolName === "ready" && moduleName === "sap/ui/core/Core") { - this.#reporter.addMessage(MESSAGE.PREFER_TEST_STARTER, { - message: "Prefer test starter", - }, node); + this.#reporter.addMessage(MESSAGE.PREFER_TEST_STARTER, node); } } @@ -840,9 +838,7 @@ export default class SourceFileLinter { }, reportNode); if (propName === "attachInit" && this.sourceFile.fileName.includes(".qunit.js")) { - this.#reporter.addMessage(MESSAGE.PREFER_TEST_STARTER, { - message: "Prefer test starter", - }, reportNode); + this.#reporter.addMessage(MESSAGE.PREFER_TEST_STARTER, reportNode); } } From d08192351df9a31a97b1de21911a2fe20fbbbf43 Mon Sep 17 00:00:00 2001 From: Yavor Ivanov Date: Tue, 17 Dec 2024 15:54:17 +0200 Subject: [PATCH 4/8] refactor: TestStarter detection for html files --- src/linter/html/transpiler.ts | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/src/linter/html/transpiler.ts b/src/linter/html/transpiler.ts index c95887ff..3a22fa52 100644 --- a/src/linter/html/transpiler.ts +++ b/src/linter/html/transpiler.ts @@ -21,6 +21,8 @@ export default async function transpileHtml( lintBootstrapAttributes(bootstrapTag, report); } + detectTestStarter(resourcePath, scriptTags, context); + scriptTags.forEach((tag) => { // Tags with src attribute do not parse and run inline code const hasSrc = tag.attributes.some((attr) => { @@ -29,8 +31,6 @@ export default async function transpileHtml( if (!hasSrc && tag.textNodes?.length > 0) { report.addMessage(MESSAGE.CSP_UNSAFE_INLINE_SCRIPT, tag); } - - detectTestStarter(resourcePath, tag, context); }); stylesheetLinkTags.forEach((tag) => { @@ -54,25 +54,20 @@ export default async function transpileHtml( } } -function detectTestStarter(resourcePath: ResourcePath, tag: Tag, context: LinterContext) { - if (resourcePath.includes("testsuite.qunit.html")) { - const hasCreateSuite = tag.attributes.some((attr) => { +function detectTestStarter(resourcePath: ResourcePath, scriptTags: Tag[], context: LinterContext) { + const shouldBeMigrated = scriptTags.some((tag) => { + return (resourcePath.includes("testsuite.qunit.html") && !tag.attributes.some((attr) => { return attr.name.value.toLowerCase() === "src" && attr.value.value.includes("resources/sap/ui/test/starter/createSuite.js"); - }); - - if (!hasCreateSuite) { - context.addLintingMessage(resourcePath, MESSAGE.PREFER_TEST_STARTER, undefined as never); - } - } else if (resourcePath.includes("qunit.html")) { - // resources/sap/ui/test/starter/runTest.js - const hasRunTest = tag.attributes.some((attr) => { + })) || + (resourcePath.includes("qunit.html") && !tag.attributes.some((attr) => { return attr.name.value.toLowerCase() === "src" && attr.value.value.includes("resources/sap/ui/test/starter/runTest.js"); - }); - if (!hasRunTest) { - context.addLintingMessage(resourcePath, MESSAGE.PREFER_TEST_STARTER, undefined as never); - } + })); + }); + + if (shouldBeMigrated) { + context.addLintingMessage(resourcePath, MESSAGE.PREFER_TEST_STARTER, undefined as never); } } From 30de17c5dbc3782d490ea15566765cafdb7d0d8e Mon Sep 17 00:00:00 2001 From: Yavor Ivanov Date: Tue, 17 Dec 2024 15:55:29 +0200 Subject: [PATCH 5/8] test: Update snapshots --- test/lib/linter/snapshots/linter.ts.md | 105 +++++++++- test/lib/snapshots/index.ts.md | 275 ++++++++++++++++++++++--- 2 files changed, 339 insertions(+), 41 deletions(-) diff --git a/test/lib/linter/snapshots/linter.ts.md b/test/lib/linter/snapshots/linter.ts.md index be6d1823..f220a530 100644 --- a/test/lib/linter/snapshots/linter.ts.md +++ b/test/lib/linter/snapshots/linter.ts.md @@ -800,8 +800,16 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-deprecated-api', severity: 1, }, + { + column: undefined, + line: undefined, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + messageDetails: 'Test Starter (https://ui5.sap.com/#/topic/032be2cb2e1d4115af20862673bedcdb)', + ruleId: 'prefer-test-starter', + severity: 1, + }, ], - warningCount: 3, + warningCount: 4, }, { coverageInfo: [], @@ -817,6 +825,14 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-deprecated-api', severity: 2, }, + { + column: 18, + line: 4, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + messageDetails: 'Test Starter (https://ui5.sap.com/#/topic/032be2cb2e1d4115af20862673bedcdb)', + ruleId: 'prefer-test-starter', + severity: 1, + }, { column: 8, line: 4, @@ -834,7 +850,7 @@ Generated by [AVA](https://avajs.dev). severity: 2, }, ], - warningCount: 0, + warningCount: 1, }, { coverageInfo: [ @@ -901,6 +917,14 @@ Generated by [AVA](https://avajs.dev). fatalErrorCount: 0, filePath: 'webapp/test/testsuite.qunit.html', messages: [ + { + column: undefined, + line: undefined, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + messageDetails: 'Test Starter (https://ui5.sap.com/#/topic/032be2cb2e1d4115af20862673bedcdb)', + ruleId: 'prefer-test-starter', + severity: 1, + }, { column: 3, line: 12, @@ -910,7 +934,7 @@ Generated by [AVA](https://avajs.dev). severity: 1, }, ], - warningCount: 1, + warningCount: 2, }, { coverageInfo: [ @@ -969,8 +993,16 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-deprecated-api', severity: 2, }, + { + column: undefined, + line: undefined, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + messageDetails: 'Test Starter (https://ui5.sap.com/#/topic/032be2cb2e1d4115af20862673bedcdb)', + ruleId: 'prefer-test-starter', + severity: 1, + }, ], - warningCount: 2, + warningCount: 3, }, { coverageInfo: [], @@ -986,6 +1018,14 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-deprecated-api', severity: 2, }, + { + column: 18, + line: 6, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + messageDetails: 'Test Starter (https://ui5.sap.com/#/topic/032be2cb2e1d4115af20862673bedcdb)', + ruleId: 'prefer-test-starter', + severity: 1, + }, { column: 8, line: 6, @@ -1003,7 +1043,7 @@ Generated by [AVA](https://avajs.dev). severity: 2, }, ], - warningCount: 0, + warningCount: 1, }, { coverageInfo: [], @@ -1371,8 +1411,15 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-deprecated-api', severity: 1, }, + { + column: undefined, + line: undefined, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, ], - warningCount: 3, + warningCount: 4, }, { coverageInfo: [], @@ -1387,6 +1434,13 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-deprecated-api', severity: 2, }, + { + column: 18, + line: 4, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, { column: 8, line: 4, @@ -1402,7 +1456,7 @@ Generated by [AVA](https://avajs.dev). severity: 2, }, ], - warningCount: 0, + warningCount: 1, }, { coverageInfo: [], @@ -1410,6 +1464,13 @@ Generated by [AVA](https://avajs.dev). fatalErrorCount: 0, filePath: 'webapp/test/testsuite.qunit.html', messages: [ + { + column: undefined, + line: undefined, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, { column: 3, line: 12, @@ -1418,7 +1479,7 @@ Generated by [AVA](https://avajs.dev). severity: 1, }, ], - warningCount: 1, + warningCount: 2, }, { coverageInfo: [], @@ -1447,8 +1508,15 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-deprecated-api', severity: 2, }, + { + column: undefined, + line: undefined, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, ], - warningCount: 2, + warningCount: 3, }, { coverageInfo: [], @@ -1463,6 +1531,13 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-deprecated-api', severity: 2, }, + { + column: 18, + line: 6, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, { column: 8, line: 6, @@ -1478,7 +1553,7 @@ Generated by [AVA](https://avajs.dev). severity: 2, }, ], - warningCount: 0, + warningCount: 1, }, { coverageInfo: [], @@ -2915,6 +2990,14 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-deprecated-api', severity: 2, }, + { + column: 18, + line: 4, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + messageDetails: 'Test Starter (https://ui5.sap.com/#/topic/032be2cb2e1d4115af20862673bedcdb)', + ruleId: 'prefer-test-starter', + severity: 1, + }, { column: 8, line: 4, @@ -2932,7 +3015,7 @@ Generated by [AVA](https://avajs.dev). severity: 2, }, ], - warningCount: 0, + warningCount: 1, }, { coverageInfo: [], diff --git a/test/lib/snapshots/index.ts.md b/test/lib/snapshots/index.ts.md index ce0fa431..8652eabd 100644 --- a/test/lib/snapshots/index.ts.md +++ b/test/lib/snapshots/index.ts.md @@ -265,8 +265,15 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-deprecated-api', severity: 1, }, + { + column: undefined, + line: undefined, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, ], - warningCount: 3, + warningCount: 4, }, { coverageInfo: [], @@ -281,6 +288,13 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-deprecated-api', severity: 2, }, + { + column: 18, + line: 4, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, { column: 8, line: 4, @@ -296,7 +310,7 @@ Generated by [AVA](https://avajs.dev). severity: 2, }, ], - warningCount: 0, + warningCount: 1, }, { coverageInfo: [], @@ -304,6 +318,13 @@ Generated by [AVA](https://avajs.dev). fatalErrorCount: 0, filePath: 'webapp/test/testsuite.qunit.html', messages: [ + { + column: undefined, + line: undefined, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, { column: 3, line: 12, @@ -312,7 +333,7 @@ Generated by [AVA](https://avajs.dev). severity: 1, }, ], - warningCount: 1, + warningCount: 2, }, { coverageInfo: [], @@ -341,8 +362,15 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-deprecated-api', severity: 2, }, + { + column: undefined, + line: undefined, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, ], - warningCount: 2, + warningCount: 3, }, { coverageInfo: [], @@ -357,6 +385,13 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-deprecated-api', severity: 2, }, + { + column: 18, + line: 6, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, { column: 8, line: 6, @@ -372,7 +407,7 @@ Generated by [AVA](https://avajs.dev). severity: 2, }, ], - warningCount: 0, + warningCount: 1, }, { coverageInfo: [], @@ -676,8 +711,15 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-deprecated-api', severity: 1, }, + { + column: undefined, + line: undefined, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, ], - warningCount: 3, + warningCount: 4, }, { coverageInfo: [], @@ -692,6 +734,13 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-deprecated-api', severity: 2, }, + { + column: 18, + line: 4, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, { column: 8, line: 4, @@ -707,7 +756,7 @@ Generated by [AVA](https://avajs.dev). severity: 2, }, ], - warningCount: 0, + warningCount: 1, }, { coverageInfo: [], @@ -715,6 +764,13 @@ Generated by [AVA](https://avajs.dev). fatalErrorCount: 0, filePath: 'webapp/test/testsuite.qunit.html', messages: [ + { + column: undefined, + line: undefined, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, { column: 3, line: 12, @@ -723,7 +779,7 @@ Generated by [AVA](https://avajs.dev). severity: 1, }, ], - warningCount: 1, + warningCount: 2, }, { coverageInfo: [], @@ -752,8 +808,15 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-deprecated-api', severity: 2, }, + { + column: undefined, + line: undefined, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, ], - warningCount: 2, + warningCount: 3, }, { coverageInfo: [], @@ -768,6 +831,13 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-deprecated-api', severity: 2, }, + { + column: 18, + line: 6, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, { column: 8, line: 6, @@ -783,7 +853,7 @@ Generated by [AVA](https://avajs.dev). severity: 2, }, ], - warningCount: 0, + warningCount: 1, }, { coverageInfo: [], @@ -1161,8 +1231,16 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-deprecated-api', severity: 1, }, + { + column: undefined, + line: undefined, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + messageDetails: 'Test Starter (https://ui5.sap.com/#/topic/032be2cb2e1d4115af20862673bedcdb)', + ruleId: 'prefer-test-starter', + severity: 1, + }, ], - warningCount: 3, + warningCount: 4, }, { coverageInfo: [], @@ -1178,6 +1256,14 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-deprecated-api', severity: 2, }, + { + column: 18, + line: 4, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + messageDetails: 'Test Starter (https://ui5.sap.com/#/topic/032be2cb2e1d4115af20862673bedcdb)', + ruleId: 'prefer-test-starter', + severity: 1, + }, { column: 8, line: 4, @@ -1196,7 +1282,7 @@ Generated by [AVA](https://avajs.dev). severity: 2, }, ], - warningCount: 0, + warningCount: 1, }, { coverageInfo: [ @@ -1263,6 +1349,14 @@ Generated by [AVA](https://avajs.dev). fatalErrorCount: 0, filePath: 'webapp/test/testsuite.qunit.html', messages: [ + { + column: undefined, + line: undefined, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + messageDetails: 'Test Starter (https://ui5.sap.com/#/topic/032be2cb2e1d4115af20862673bedcdb)', + ruleId: 'prefer-test-starter', + severity: 1, + }, { column: 3, line: 12, @@ -1272,7 +1366,7 @@ Generated by [AVA](https://avajs.dev). severity: 1, }, ], - warningCount: 1, + warningCount: 2, }, { coverageInfo: [ @@ -1331,8 +1425,16 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-deprecated-api', severity: 2, }, + { + column: undefined, + line: undefined, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + messageDetails: 'Test Starter (https://ui5.sap.com/#/topic/032be2cb2e1d4115af20862673bedcdb)', + ruleId: 'prefer-test-starter', + severity: 1, + }, ], - warningCount: 2, + warningCount: 3, }, { coverageInfo: [], @@ -1348,6 +1450,14 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-deprecated-api', severity: 2, }, + { + column: 18, + line: 6, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + messageDetails: 'Test Starter (https://ui5.sap.com/#/topic/032be2cb2e1d4115af20862673bedcdb)', + ruleId: 'prefer-test-starter', + severity: 1, + }, { column: 8, line: 6, @@ -1366,7 +1476,7 @@ Generated by [AVA](https://avajs.dev). severity: 2, }, ], - warningCount: 0, + warningCount: 1, }, { coverageInfo: [], @@ -1699,8 +1809,15 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-deprecated-api', severity: 1, }, + { + column: undefined, + line: undefined, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, ], - warningCount: 3, + warningCount: 4, }, { coverageInfo: [], @@ -1715,6 +1832,13 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-deprecated-api', severity: 2, }, + { + column: 18, + line: 4, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, { column: 8, line: 4, @@ -1730,7 +1854,7 @@ Generated by [AVA](https://avajs.dev). severity: 2, }, ], - warningCount: 0, + warningCount: 1, }, { coverageInfo: [], @@ -1738,6 +1862,13 @@ Generated by [AVA](https://avajs.dev). fatalErrorCount: 0, filePath: 'webapp/test/testsuite.qunit.html', messages: [ + { + column: undefined, + line: undefined, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, { column: 3, line: 12, @@ -1746,7 +1877,7 @@ Generated by [AVA](https://avajs.dev). severity: 1, }, ], - warningCount: 1, + warningCount: 2, }, { coverageInfo: [], @@ -1775,8 +1906,15 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-deprecated-api', severity: 2, }, + { + column: undefined, + line: undefined, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, ], - warningCount: 2, + warningCount: 3, }, { coverageInfo: [], @@ -1791,6 +1929,13 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-deprecated-api', severity: 2, }, + { + column: 18, + line: 6, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, { column: 8, line: 6, @@ -1806,7 +1951,7 @@ Generated by [AVA](https://avajs.dev). severity: 2, }, ], - warningCount: 0, + warningCount: 1, }, { coverageInfo: [], @@ -2110,8 +2255,15 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-deprecated-api', severity: 1, }, + { + column: undefined, + line: undefined, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, ], - warningCount: 3, + warningCount: 4, }, { coverageInfo: [], @@ -2126,6 +2278,13 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-deprecated-api', severity: 2, }, + { + column: 18, + line: 4, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, { column: 8, line: 4, @@ -2141,7 +2300,7 @@ Generated by [AVA](https://avajs.dev). severity: 2, }, ], - warningCount: 0, + warningCount: 1, }, { coverageInfo: [], @@ -2149,6 +2308,13 @@ Generated by [AVA](https://avajs.dev). fatalErrorCount: 0, filePath: 'webapp/test/testsuite.qunit.html', messages: [ + { + column: undefined, + line: undefined, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, { column: 3, line: 12, @@ -2157,7 +2323,7 @@ Generated by [AVA](https://avajs.dev). severity: 1, }, ], - warningCount: 1, + warningCount: 2, }, { coverageInfo: [], @@ -2186,8 +2352,15 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-deprecated-api', severity: 2, }, + { + column: undefined, + line: undefined, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, ], - warningCount: 2, + warningCount: 3, }, { coverageInfo: [], @@ -2202,6 +2375,13 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-deprecated-api', severity: 2, }, + { + column: 18, + line: 6, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, { column: 8, line: 6, @@ -2217,7 +2397,7 @@ Generated by [AVA](https://avajs.dev). severity: 2, }, ], - warningCount: 0, + warningCount: 1, }, { coverageInfo: [], @@ -2521,8 +2701,15 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-deprecated-api', severity: 1, }, + { + column: undefined, + line: undefined, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, ], - warningCount: 3, + warningCount: 4, }, { coverageInfo: [], @@ -2537,6 +2724,13 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-deprecated-api', severity: 2, }, + { + column: 18, + line: 4, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, { column: 8, line: 4, @@ -2552,7 +2746,7 @@ Generated by [AVA](https://avajs.dev). severity: 2, }, ], - warningCount: 0, + warningCount: 1, }, { coverageInfo: [], @@ -2560,6 +2754,13 @@ Generated by [AVA](https://avajs.dev). fatalErrorCount: 0, filePath: 'webapp/test/testsuite.qunit.html', messages: [ + { + column: undefined, + line: undefined, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, { column: 3, line: 12, @@ -2568,7 +2769,7 @@ Generated by [AVA](https://avajs.dev). severity: 1, }, ], - warningCount: 1, + warningCount: 2, }, { coverageInfo: [], @@ -2597,8 +2798,15 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-deprecated-api', severity: 2, }, + { + column: undefined, + line: undefined, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, ], - warningCount: 2, + warningCount: 3, }, { coverageInfo: [], @@ -2613,6 +2821,13 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-deprecated-api', severity: 2, }, + { + column: 18, + line: 6, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, { column: 8, line: 6, @@ -2628,7 +2843,7 @@ Generated by [AVA](https://avajs.dev). severity: 2, }, ], - warningCount: 0, + warningCount: 1, }, { coverageInfo: [], From 03117f83fa02a8b5585341de8294b197e13821ff Mon Sep 17 00:00:00 2001 From: Yavor Ivanov Date: Thu, 19 Dec 2024 12:33:53 +0200 Subject: [PATCH 6/8] feat: Detect sap.ui.define --- src/linter/LinterContext.ts | 1 + src/linter/ui5Types/SourceFileLinter.ts | 13 +++++++++++++ .../ui5Types/amdTranspiler/tsTransformer.ts | 16 +++++++++++++++- 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/src/linter/LinterContext.ts b/src/linter/LinterContext.ts index 6baf1df9..9378f5a4 100644 --- a/src/linter/LinterContext.ts +++ b/src/linter/LinterContext.ts @@ -95,6 +95,7 @@ export interface PositionRange { export interface LintMetadata { // The metadata holds information to be shared across linters directives: Set; + transformedImports: Map>; } export default class LinterContext { diff --git a/src/linter/ui5Types/SourceFileLinter.ts b/src/linter/ui5Types/SourceFileLinter.ts index 44a8696c..ded9e7c4 100644 --- a/src/linter/ui5Types/SourceFileLinter.ts +++ b/src/linter/ui5Types/SourceFileLinter.ts @@ -88,6 +88,12 @@ export default class SourceFileLinter { findDirectives(this.sourceFile, metadata); } this.visitNode(this.sourceFile); + + if (this.sourceFile.fileName.includes(".qunit.js") && + !metadata?.transformedImports?.get("sap.ui.define")?.size) { + this.#reporter.addMessage(MESSAGE.PREFER_TEST_STARTER, this.sourceFile); + } + this.#reporter.deduplicateMessages(); } catch (err) { const message = err instanceof Error ? err.message : String(err); @@ -642,6 +648,13 @@ export default class SourceFileLinter { } analyzeNewExpression(node: ts.NewExpression) { + if (this.sourceFile.fileName.includes(".qunit.js") && + ((ts.isPropertyAccessExpression(node.expression) && node.expression.name.getText() === "jsUnitTestSuite") || + (ts.isIdentifier(node.expression) && node.expression.getText() === "jsUnitTestSuite") + )) { + this.#reporter.addMessage(MESSAGE.PREFER_TEST_STARTER, node); + } + const nodeType = this.checker.getTypeAtLocation(node); // checker.getContextualType(node); if (!nodeType.symbol || !this.isSymbolOfUi5OrThirdPartyType(nodeType.symbol)) { return; diff --git a/src/linter/ui5Types/amdTranspiler/tsTransformer.ts b/src/linter/ui5Types/amdTranspiler/tsTransformer.ts index 6473d1bc..509a551e 100644 --- a/src/linter/ui5Types/amdTranspiler/tsTransformer.ts +++ b/src/linter/ui5Types/amdTranspiler/tsTransformer.ts @@ -9,7 +9,7 @@ import replaceNodeInParent, {NodeReplacement} from "./replaceNodeInParent.js"; import {toPosStr, UnsupportedModuleError} from "./util.js"; import rewriteExtendCall, {UnsupportedExtendCall} from "./rewriteExtendCall.js"; import insertNodesInParent from "./insertNodesInParent.js"; -import LinterContext from "../../LinterContext.js"; +import LinterContext, {LintMetadata} from "../../LinterContext.js"; import {findDirectives} from "../directives.js"; const log = getLogger("linter:ui5Types:amdTranspiler:TsTransformer"); @@ -113,6 +113,8 @@ function transform( const moduleDeclaration = parseModuleDeclaration(node.arguments, checker); const moduleDefinition = moduleDeclarationToDefinition(moduleDeclaration, sourceFile, nodeFactory); moduleDefinitions.push(moduleDefinition); + moduleDefinition.imports.forEach((importStatement) => + addModuleMetadata(metadata, "sap.ui.define", importStatement)); pruneNode(node); // Mark the define call for removal } catch (err) { if (err instanceof UnsupportedModuleError) { @@ -127,6 +129,8 @@ function transform( if (requireExpression.async) { const res = transformAsyncRequireCall(node, requireExpression, nodeFactory); requireImports.push(...res.imports); + res.imports.forEach((importStatement) => + addModuleMetadata(metadata, "sap.ui.require", importStatement)); if (res.callback) { replaceNode(node, res.callback); if (res.errback) { @@ -149,6 +153,7 @@ function transform( } else { const res = transformSyncRequireCall(node, requireExpression, nodeFactory); requireImports.push(res.import); + addModuleMetadata(metadata, "sap.ui.require", res.import); replaceNode(node, res.requireStatement); } } catch (err) { @@ -273,6 +278,15 @@ function transform( } }); + function addModuleMetadata(metadata: LintMetadata, importType: string, importStatement: ts.ImportDeclaration) { + if (!metadata.transformedImports) { + metadata.transformedImports = new Map>(); + } + const curResource = metadata.transformedImports.get(importType) ?? new Set(); + curResource.add(importStatement.moduleSpecifier.getText()); + metadata.transformedImports.set(importType, curResource); + } + function getCommentsFromNode(node: ts.Node, sourceFile?: ts.SourceFile): NodeComments { const sourceText = sourceFile?.getFullText() ?? fullSourceText; const leadingComments = ts.getLeadingCommentRanges(sourceText, node.getFullStart()) ?? []; From 2a9c4897d422e036d18b6011ca8447b5b642ecf0 Mon Sep 17 00:00:00 2001 From: Yavor Ivanov Date: Thu, 19 Dec 2024 15:24:23 +0200 Subject: [PATCH 7/8] fix: Update snapshots --- .../ui5Types/amdTranspiler/tsTransformer.ts | 4 +- .../rules/snapshots/NoDeprecatedApi.ts.md | 33 ++- test/lib/linter/snapshots/linter.ts.md | 92 ++++++- test/lib/snapshots/index.ts.md | 246 +++++++++++++++++- 4 files changed, 349 insertions(+), 26 deletions(-) diff --git a/src/linter/ui5Types/amdTranspiler/tsTransformer.ts b/src/linter/ui5Types/amdTranspiler/tsTransformer.ts index 509a551e..5ee248b8 100644 --- a/src/linter/ui5Types/amdTranspiler/tsTransformer.ts +++ b/src/linter/ui5Types/amdTranspiler/tsTransformer.ts @@ -283,7 +283,9 @@ function transform( metadata.transformedImports = new Map>(); } const curResource = metadata.transformedImports.get(importType) ?? new Set(); - curResource.add(importStatement.moduleSpecifier.getText()); + if (ts.isStringLiteral(importStatement.moduleSpecifier)) { + curResource.add(importStatement.moduleSpecifier.text); + } metadata.transformedImports.set(importType, curResource); } diff --git a/test/lib/linter/rules/snapshots/NoDeprecatedApi.ts.md b/test/lib/linter/rules/snapshots/NoDeprecatedApi.ts.md index 3382b06a..59d2c53e 100644 --- a/test/lib/linter/rules/snapshots/NoDeprecatedApi.ts.md +++ b/test/lib/linter/rules/snapshots/NoDeprecatedApi.ts.md @@ -567,8 +567,17 @@ Generated by [AVA](https://avajs.dev). errorCount: 0, fatalErrorCount: 0, filePath: 'Configuration.beforeBootstrap.qunit.js', - messages: [], - warningCount: 0, + messages: [ + { + column: 1, + line: 3, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + messageDetails: 'Test Starter (https://ui5.sap.com/#/topic/032be2cb2e1d4115af20862673bedcdb)', + ruleId: 'prefer-test-starter', + severity: 1, + }, + ], + warningCount: 1, }, ] @@ -2947,8 +2956,16 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-deprecated-theme', severity: 2, }, + { + column: 9, + line: 3, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + messageDetails: 'Test Starter (https://ui5.sap.com/#/topic/032be2cb2e1d4115af20862673bedcdb)', + ruleId: 'prefer-test-starter', + severity: 1, + }, ], - warningCount: 0, + warningCount: 1, }, ] @@ -3027,8 +3044,16 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-deprecated-theme', severity: 2, }, + { + column: 9, + line: 3, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + messageDetails: 'Test Starter (https://ui5.sap.com/#/topic/032be2cb2e1d4115af20862673bedcdb)', + ruleId: 'prefer-test-starter', + severity: 1, + }, ], - warningCount: 0, + warningCount: 1, }, ] diff --git a/test/lib/linter/snapshots/linter.ts.md b/test/lib/linter/snapshots/linter.ts.md index f220a530..cbf1287f 100644 --- a/test/lib/linter/snapshots/linter.ts.md +++ b/test/lib/linter/snapshots/linter.ts.md @@ -849,8 +849,16 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-globals', severity: 2, }, + { + column: 18, + line: 7, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + messageDetails: 'Test Starter (https://ui5.sap.com/#/topic/032be2cb2e1d4115af20862673bedcdb)', + ruleId: 'prefer-test-starter', + severity: 1, + }, ], - warningCount: 1, + warningCount: 2, }, { coverageInfo: [ @@ -954,8 +962,25 @@ Generated by [AVA](https://avajs.dev). errorCount: 0, fatalErrorCount: 0, filePath: 'webapp/test/testsuite.qunit.js', - messages: [], - warningCount: 0, + messages: [ + { + column: 14, + line: 3, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + messageDetails: 'Test Starter (https://ui5.sap.com/#/topic/032be2cb2e1d4115af20862673bedcdb)', + ruleId: 'prefer-test-starter', + severity: 1, + }, + { + column: 1, + line: 2, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + messageDetails: 'Test Starter (https://ui5.sap.com/#/topic/032be2cb2e1d4115af20862673bedcdb)', + ruleId: 'prefer-test-starter', + severity: 1, + }, + ], + warningCount: 2, }, { coverageInfo: [], @@ -1042,8 +1067,16 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-globals', severity: 2, }, + { + column: 18, + line: 9, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + messageDetails: 'Test Starter (https://ui5.sap.com/#/topic/032be2cb2e1d4115af20862673bedcdb)', + ruleId: 'prefer-test-starter', + severity: 1, + }, ], - warningCount: 1, + warningCount: 2, }, { coverageInfo: [], @@ -1455,8 +1488,15 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-globals', severity: 2, }, + { + column: 18, + line: 7, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, ], - warningCount: 1, + warningCount: 2, }, { coverageInfo: [], @@ -1481,6 +1521,29 @@ Generated by [AVA](https://avajs.dev). ], warningCount: 2, }, + { + coverageInfo: [], + errorCount: 0, + fatalErrorCount: 0, + filePath: 'webapp/test/testsuite.qunit.js', + messages: [ + { + column: 14, + line: 3, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, + { + column: 1, + line: 2, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, + ], + warningCount: 2, + }, { coverageInfo: [], errorCount: 1, @@ -1552,8 +1615,15 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-globals', severity: 2, }, + { + column: 18, + line: 9, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, ], - warningCount: 1, + warningCount: 2, }, { coverageInfo: [], @@ -3014,8 +3084,16 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-globals', severity: 2, }, + { + column: 18, + line: 7, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + messageDetails: 'Test Starter (https://ui5.sap.com/#/topic/032be2cb2e1d4115af20862673bedcdb)', + ruleId: 'prefer-test-starter', + severity: 1, + }, ], - warningCount: 1, + warningCount: 2, }, { coverageInfo: [], diff --git a/test/lib/snapshots/index.ts.md b/test/lib/snapshots/index.ts.md index 8652eabd..49fa0e56 100644 --- a/test/lib/snapshots/index.ts.md +++ b/test/lib/snapshots/index.ts.md @@ -309,8 +309,15 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-globals', severity: 2, }, + { + column: 18, + line: 7, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, ], - warningCount: 1, + warningCount: 2, }, { coverageInfo: [], @@ -335,6 +342,29 @@ Generated by [AVA](https://avajs.dev). ], warningCount: 2, }, + { + coverageInfo: [], + errorCount: 0, + fatalErrorCount: 0, + filePath: 'webapp/test/testsuite.qunit.js', + messages: [ + { + column: 14, + line: 3, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, + { + column: 1, + line: 2, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, + ], + warningCount: 2, + }, { coverageInfo: [], errorCount: 1, @@ -406,8 +436,15 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-globals', severity: 2, }, + { + column: 18, + line: 9, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, ], - warningCount: 1, + warningCount: 2, }, { coverageInfo: [], @@ -755,8 +792,15 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-globals', severity: 2, }, + { + column: 18, + line: 7, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, ], - warningCount: 1, + warningCount: 2, }, { coverageInfo: [], @@ -781,6 +825,29 @@ Generated by [AVA](https://avajs.dev). ], warningCount: 2, }, + { + coverageInfo: [], + errorCount: 0, + fatalErrorCount: 0, + filePath: 'webapp/test/testsuite.qunit.js', + messages: [ + { + column: 14, + line: 3, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, + { + column: 1, + line: 2, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, + ], + warningCount: 2, + }, { coverageInfo: [], errorCount: 1, @@ -852,8 +919,15 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-globals', severity: 2, }, + { + column: 18, + line: 9, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, ], - warningCount: 1, + warningCount: 2, }, { coverageInfo: [], @@ -1281,8 +1355,16 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-globals', severity: 2, }, + { + column: 18, + line: 7, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + messageDetails: 'Test Starter (https://ui5.sap.com/#/topic/032be2cb2e1d4115af20862673bedcdb)', + ruleId: 'prefer-test-starter', + severity: 1, + }, ], - warningCount: 1, + warningCount: 2, }, { coverageInfo: [ @@ -1386,8 +1468,25 @@ Generated by [AVA](https://avajs.dev). errorCount: 0, fatalErrorCount: 0, filePath: 'webapp/test/testsuite.qunit.js', - messages: [], - warningCount: 0, + messages: [ + { + column: 14, + line: 3, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + messageDetails: 'Test Starter (https://ui5.sap.com/#/topic/032be2cb2e1d4115af20862673bedcdb)', + ruleId: 'prefer-test-starter', + severity: 1, + }, + { + column: 1, + line: 2, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + messageDetails: 'Test Starter (https://ui5.sap.com/#/topic/032be2cb2e1d4115af20862673bedcdb)', + ruleId: 'prefer-test-starter', + severity: 1, + }, + ], + warningCount: 2, }, { coverageInfo: [], @@ -1475,8 +1574,16 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-globals', severity: 2, }, + { + column: 18, + line: 9, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + messageDetails: 'Test Starter (https://ui5.sap.com/#/topic/032be2cb2e1d4115af20862673bedcdb)', + ruleId: 'prefer-test-starter', + severity: 1, + }, ], - warningCount: 1, + warningCount: 2, }, { coverageInfo: [], @@ -1853,8 +1960,15 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-globals', severity: 2, }, + { + column: 18, + line: 7, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, ], - warningCount: 1, + warningCount: 2, }, { coverageInfo: [], @@ -1879,6 +1993,29 @@ Generated by [AVA](https://avajs.dev). ], warningCount: 2, }, + { + coverageInfo: [], + errorCount: 0, + fatalErrorCount: 0, + filePath: 'webapp/test/testsuite.qunit.js', + messages: [ + { + column: 14, + line: 3, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, + { + column: 1, + line: 2, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, + ], + warningCount: 2, + }, { coverageInfo: [], errorCount: 1, @@ -1950,8 +2087,15 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-globals', severity: 2, }, + { + column: 18, + line: 9, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, ], - warningCount: 1, + warningCount: 2, }, { coverageInfo: [], @@ -2299,8 +2443,15 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-globals', severity: 2, }, + { + column: 18, + line: 7, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, ], - warningCount: 1, + warningCount: 2, }, { coverageInfo: [], @@ -2325,6 +2476,29 @@ Generated by [AVA](https://avajs.dev). ], warningCount: 2, }, + { + coverageInfo: [], + errorCount: 0, + fatalErrorCount: 0, + filePath: 'webapp/test/testsuite.qunit.js', + messages: [ + { + column: 14, + line: 3, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, + { + column: 1, + line: 2, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, + ], + warningCount: 2, + }, { coverageInfo: [], errorCount: 1, @@ -2396,8 +2570,15 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-globals', severity: 2, }, + { + column: 18, + line: 9, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, ], - warningCount: 1, + warningCount: 2, }, { coverageInfo: [], @@ -2745,8 +2926,15 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-globals', severity: 2, }, + { + column: 18, + line: 7, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, ], - warningCount: 1, + warningCount: 2, }, { coverageInfo: [], @@ -2771,6 +2959,29 @@ Generated by [AVA](https://avajs.dev). ], warningCount: 2, }, + { + coverageInfo: [], + errorCount: 0, + fatalErrorCount: 0, + filePath: 'webapp/test/testsuite.qunit.js', + messages: [ + { + column: 14, + line: 3, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, + { + column: 1, + line: 2, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, + ], + warningCount: 2, + }, { coverageInfo: [], errorCount: 1, @@ -2842,8 +3053,15 @@ Generated by [AVA](https://avajs.dev). ruleId: 'no-globals', severity: 2, }, + { + column: 18, + line: 9, + message: 'To save boilerplate code and ensure compliance with UI5 2.x best practices, please migrate to the Test Starter concept', + ruleId: 'prefer-test-starter', + severity: 1, + }, ], - warningCount: 1, + warningCount: 2, }, { coverageInfo: [], From fbdd9342614ba5d3e15b97907a7855c640426551 Mon Sep 17 00:00:00 2001 From: Yavor Ivanov Date: Thu, 19 Dec 2024 15:43:57 +0200 Subject: [PATCH 8/8] fix: Merge conflicts --- .../rules/snapshots/NoDeprecatedApi.ts.snap | Bin 17870 -> 18295 bytes test/lib/linter/snapshots/linter.ts.snap | Bin 21669 -> 23104 bytes test/lib/snapshots/index.ts.snap | Bin 13928 -> 15939 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/test/lib/linter/rules/snapshots/NoDeprecatedApi.ts.snap b/test/lib/linter/rules/snapshots/NoDeprecatedApi.ts.snap index f6e1bff052c5f19ab2fa2c6eaf132074d3a6e960..4e5470a91cb68777fcc8b03584ebc95b52bd29d7 100644 GIT binary patch literal 18295 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 diff --git a/test/lib/linter/snapshots/linter.ts.snap b/test/lib/linter/snapshots/linter.ts.snap index 31aaa97bf58b13406c75645f3c0549ca71006a4b..2c2dff79001ad5475515a3ce0dced9aa30ae30e5 100644 GIT binary patch literal 23104 zcmYg%Wl$VZvo^c9Cur~lcXtaCT!Tw+cX#*T?jBqhcXtWyzKc7HhM-^G_ttmoPW5@} zOi$OTIzP@#&+~MPYKVSTwKsBfv2<|#?9PD#3p02aEB34s3Uh(bs=3mEc!xYOZLa-- zXZsF7K3@v{uuc|@1oPhu_BIY!T7Ce)kl^kl5^6|6#9QwsZT1%5M%B#ohUp&j_BYl~boA$VU z&moMAnF!xFx67-|Tfw88qrBT3i_MLtlWV>|a1Px{$nD~!2VM73n#f~$RP%)K#Axdt zh+CqdbIgZFvHs{QxAy%6->egIRE@=V`3h5?2db-rcs<4b(;?(6$@r8!1efqrH4pxF z50b9PC;q7*yh@%TyyB2Al`#JW+aSf1)x5i9J@*T@w+t`2$v6pKeq5(sf~nMU_@B4( zLGUj#>ZU`G1rxLZ{>|(o0;?4irZg)lUoO~zvY$vMAq%Z!97wqa!^Z%hL+2=ivY8E3 zDnUxXf!%jFfx7emo(LQ!sN)b1)Iv|V=Uz1q(I@(07lOF~CtV3}*1^k3hQ~MW*VBfE zF#?jz1KS$=)6pXuAc?k*-YqaPJR-HfgT(ouwl>MR>j!w?*C9UN`*D2#Ss=l2visf>#uTcbKlNpz3Uf$8FjM0qiuPp@hkcWA1 zidJYM-#`9HQho3&Rvf1L1HXhKfpY(hJHA5It{26#f9cEssA$tg#+9=Nshw|7A#OJC zG)X*6Y{`OtrM=WROWSJ-Mse(;u6Cv>AHb`KoTvb!Rw@`1g9Uz>ortJA)$iZkd;LgS z!B67H9WMz@5dm#fwT%QSkn^W0&>^p?SrWo>yZr^)m|4usX_@U1y-``l3u%~WB)2Aajo+NF@;OC}0*^;Rzv_HXD!?QUqFxB3$%P8^BU zANmucP})WmOW_w4L%pcofj6YE8Q=B$$wBRWBH(*^JRR`W#UWg zOci(S8|g`L2mb618p#UoYcm`j#9E)(5R zqjZR=qDU6BU_P3L;B@KK^}A2j+vQlSH&5J}X6owqpL+ffTg0DVXkc{<)5kDWo!h6+ z20@xX-+&q_twpqQoN#9OTcu8p|1hMgTjZL8Vm@*Ms21^|vbPd|g9m;gKV~W|t4|;# z&zyt#OAgJ<}1kDf5|dX5!!IcY7o#Ri;>O9MQ! zRqi?mn`|2(_GIKiBj06=O>SMN)Z_sNYV&yk?qHClu_ZAsv(k|eJJl-XtByy?H33ud zL5BxX&l;QuDt{Yg;-Hbxx|G6qq3p^o)wMk9hG`D*OoHVM2r-B6GFkwecw{*fM|n@R z4dbkNkUi=T!XhIdE7%Rw6AvaC2lt5J(^PlB@9 z3{MudE1Dd$xrA$1ct=XgLhT*mudt1*U*c8vptL-Ic)Y5HZ?CLFtQ8F8=EW#{I7zue zBn<)cjdbK`!5v!bmx){3u@~YfrTgh4609WoRe%s{m(XB3zd&)Fh>lSiPO1vy6AWxY z!(b(9EG46@H+;A2JDy~JbY-G;1ZghqC8D6)-;QHwWIQ3>fVy>H&`{E;BM?|G0tJ*+1n1!ZaP6j$dxtfNyLOrOuyA*i;DJ;irpK$%pZy+f`_K-^- z+p*k^l5JGkl~O^EmxC`m#SSq4jcN7E6_IzyItTMk(49w^-ic!`>=})BNEX&%+%mzD zr=8N0&k>P=;}Nu_jBNSf9fZ(Q=CW8*PN0zqVdU^V+=}nZHqXe{ItDfLd85+ewXFib zdi|kL&VVBtaq-D|@Yk{_+RQWWQW|pqMhWklxH#9d)@@-qm|85fN1kd+UH++7ZJl>c zg-*dDVL89{8cRMx-Z2_km{YL-j!loXoBwkLB}Ynj;S$~iHAF}!=&=lc=MXnD1~m5r zb(z5ReYhXb+PzNKJOts@mQw;{X$zdUK|t#=&2DMuaGaHdPMT=9AIwqC@^yx7KURsm z&ZKWLl=}Jp?u@lc_we{Vf){9B7f(v5PaV}b7x?O(O!-pvKE7M2!z2wmptdLz#-F7j?w;O#?TV+iRG^o%F)OMTrWV#7 z@e)xO;0y4?c*KBWgVn)GeH$WCbT4N4Bz)eB*@o@NYCPfY*g1BKBW z!>%>FntB)nI@g@d85Ot=8qwS}k0i|*CAbU8&FYnSE0x2|t~MqYQex$3L`bYCXR2!N$By2UgwQJw>%y;A z8bU+DEQepPhHxyk07*W9`trZ9k=(F@@6eDUA8!649NQ5%Y9a_G0=`bdxKMLi3_QpK z=m`q?<&S4VH`pQ9@{eBB(%f3)S)1vf3M|(8tU{vg9P`n8%tHb;3Y0m!S$IU!&H7In zd3jKor-Lyq`rpm_4Zc~%0(274T^fw6xN}m`(@h8W)}VfK-o0}$ue#h_x#$vnb(DzH zQ$YgGV79rafK0$s5wRy7;`VgVT6-No{*w!&^ar409_IB2vtTCb*YU7c7o#^$N2L(C zQsh}Kgk$jqFvJQPYXyBT?Qc49d~jX;su$QoRN$c)@mxB%umI6q_~M3eo&m@s0N$a& z-aQdGo}qc#B6P9BZs!52Zon~ufKyJ9uL+2Vx8NQ@Pi{>8nGpEDvso-69z+E~f5B4` zHaCz&-$zkld4|AKAmEfkq!quf7Knt~#{>`k2B5?p*c1bFtdw&xh2Do1;0zpuL8ZUE zlzgz205&&U!%m>u3((-eWS*CF6 zG(Xk<4o=Zl=0{zg0?sgcn&Q38Fams}cBzgNHd!kTOc9)DTZ>1lq(z;S|4sz<~ddO4W7r2>9{9cyV>3XxBX?Wvo zGEVfl#&P>t#wMFb#frk3R8o2)2Fb3wVP&fXZpoo|hKQSogutu*_9iY-g+~%r6NhU0 zNJS81$w&z!3_)W%T}la}M3XV_B8p@Ee)|?rL`F?yyO32o2LYX3mHBUsa86hQYckcSO1gCT~fK>0ZH6d*GR0;q5 zHs<+eakt>%J`Sg3K$kY4LDfdHe`{lqDVoB}Ou$ug6q7N}HjjrptYS@h-76_?>}x}G zD^3MQ1K`s4Ua;v>|+E%HI+0&FZ?)xKl)Z z2y*lgF4>V%`@_r})d@CL5dI*M*u~xskT{+4e_QtJLK9X;P)g|!NbmnM0k#;JbRV&T z%GdX=Oo0EGLF3t3(?e>AQ6>?2JkxlIWG4zMi3ul+B>0+;VKj3{+x8YOK5Dv3@#W}a zFhk%;uSE^`?otQC215L=`>Q4(PtI-Po~)nBbf0$@FXB}_dd6B2Cn0+W&^2ez4&oj< z*WKVE9`l}0PRII;5&5Zu4ik_mXU{U?YTOVV&VU471$_e0O{Hh*%FkRjrK&(N$id2p z&8~MnvYZpVnubXC>~Hjt{KcB;G)>E8wx^vhuU9`E6v8fbRX?`m%~c($NmjLJqNt}I zs~ZrOqijsQsDiAk=ck-})jRm6M=M=jax|-4U5KrM?BiTUg6sGcy_+tV;pg!34GLN_ znv@-!P6iyK`9IgOqC6gpkw7N_BBIS0NWIQBZa9us%^02?I*46*HGkUMsW&Zh3y+q* z5fHXKc@rVa~{+){NukN{T_!k{~Dp}$@QaXpTQ;EJ9Tf`^A5%zI+ z!T(&cHR#zCCwELWu@7|0Rew$rb-I;6i>H2B>SYV~BbSxY#t!8R^*fad^~>HQogMn4 z;T8PKWW&NbAd>(+kjX94T@cdy?D7YAV%ra;o9XwJU!&E{V&^Jdi0&&LG2@QacN`Xd z5|)eq6g10Zpx|>$0F*dS0t3)s2(#Rr{iX)g9zAct&G$MkO*Khr<@atAd`tyReN;@) zLOjnJcylJ%PYSLl_YO1>Tnh#9v)J3Nk>B_zhI&XJ&r3DztVW}HjJoEg!Iulfgu1xv(j zI%{SY&l~!<-;B2!mZ@N_3|OhYKo1@0Ec)yk0#6Ha9X;&%f*sV8sB0A=z&_-C9SPF`#}E~*&cQD9 z$|3ZtUFdHGXdm?>gc{H?3-f$N?P-IJV;?>;1&y78E}H{1>;k7Yf%AA;_3(;2z<_Pw zur9n-4WPxF!FClzPZtuR`^ANbaf7<=6s?Y#HJIbil-05KBB5+ zP^x9nWdm}T45>_p*9rkV)F(sck|7&3gG4mqdl<)SU;1>=I1Zvn9Jeq$JrRBF5OJCZ zLoT3VoiKW)oc6X6ts8~quvz@z4H9U3E;KtA=voiRYCvW8=nvMbv&VmN!hbo&smr4m z`Ii;pmWfSO)Saju3*+{<(pL+k1Iv(SOAr8FdsdFmR?tT)=x%4i*XRUXgt4izL6WjT ze5DAoe2f4gy})WNky=4ij9mD9LDamjsQO>!0;@Sh-kiB#Zf$A#5p|}69$etYyo>6- z;upIZ9ke?>v^&1F15HB!4U*y91e@$XmnadVfX!M zd>4@oJO*qO>)PPPsA2a_m^~Nacij5Pek9Z)B}^fV9onzXp$FNw^$?L>;(gXdOPIOu zOBRAQl6qDl-fRI)s{l7iME(~DllB?CL}^!epEuAFs)blhFgY)SNPPM_r2=hvMACc= zV-f$oDpz4Wyx_*h!-u!mQHgvC%kVKC25ebuA5iM_!khQ5#rjZJd>{~ychEzBw6OFw z>Z~f71LGg@W-{)l!b!~chmco6fO{pN*xkU ziqhBc*_Rxt7Y${0A$Fwli!`#R6_Q3c_~AoW`P(v$$PBm0CijD=CRx`4;&!*= zj6T3S4)AoR|9I66ozOQVJ6}iSxe7UYK%R9$pVfTmCwl(u_BG`)V%FdCB*NtxzT7rY ze-ShNeh~H*>iYGZpRC7SxXY~v=7Mt~9#y0RMnfOQ!T{#T;Ijx0tm!3yRtTmBvEUZQ z7aRz4!Y-o25*mv?aES_uLWKmO!b`UTZf1v}&|zpzG$c0q%RvaRc+?Ws{{seTs1N2q zGNRFF33Rgr`bQ4l5(LN!Ao$&bmi7aolR1QlIiz~h=;8plXmecd%y-^ST-!q|{KULp zMZPZxyC2Q~Zeal5YWAUO_GN1#B?K0R%;+N<^kV6EVlis=L#jUSS!?+>!=MusSm>co zS3!2GAhlJ65JFEV;o}?^uxX~w_T35n<%}@Hjj8De>P|b}n@bJMGYhQkwwtm$Np(BM zbUTKAFGdswavf}V9J4SS4M}h#hUoj3$L%l5wGq0t_yuIFB42%k1f7Il9=#tY?;Q`& zp%3WFE=4fivz~$NAJ-j1Z|y^E96~i6LX)x!Ua9-pU$KhReW29Gy~y^R$ignzOhcHA0~hq08w&;^TDs;D(*c#O~VeOYq-c3m|YyHqWXZ&-_rGV9qFue8Vvb z)03UQZOp)SCG}|(&tj!#$fa_x`5Te@t{Rc5__qDVkvgy=Ld-1H&r*2+ssB2+Uv95X z%=8y8y2c2v&7@)()?$|ku7d$+ACumXIe+oY<=zX&PKDQ-q{{3l?=tXTerl~Ae0d3Z z3Z2y5%tB6S)z!iEmm8z8!|XMTeh4m5Tf;{A8zM)Hv7|1M8?0ymDjNED^LI;8%Fa$s zJi2O4d!@a+eeS?EK|uF3wYK!|u%lyS*ll{Ga%lU&$lH40?x)89h0_3j5yR+>-f!@= zzS{s5X)e(NlDWl*+^8lNFh&>- zh!QbEaxwIa$#0qk+P|DafPDA(1SMh6#=l>MXi;H@*oSky%KXxL2UMWNwSqd;0m337Q=beTR{ z^2+{Cl!*e9)}XN>+qhKqb#*yYGikSn;aEu1qTlJD_0nZQaVtZ62%Auy+=fsTv0A=* zap3&cQ6j8$^R646ewnV{CJ`E4!=x~P2FvODFuRX9(EQI;3>Mks<a&snpeUR?T@$7@3u)&d~>a5mlMdx_0tzO@E17`di2$4+s;)wv6e?c z>)X`uck-L!+tEvFXQwtKR2XYl?v%e;DZ>Q@+h_!8v5jqlJ7X9!3JAV8t}v~XAGq5A z6crMjaz0-R3kzUL$KVxt#+B2P=aa@-cS<%3nGZ$K6wgF$jMec5xIRACdA~F;(Ma=J z^msB}l8E=@`uAdKQ6N(A#QB&hTrdtllrisX}k-w|_(ZYuY_UmFol|IE!gWsZs6OHme4Q6sJ@_d=wCwvlMH#*Ns z4b)4IMeaoKLp9;0^rxh;)#T*?5FN%Z)Xtt7m1iE7wl~jRP39Lm_~h-ZVpU$~SRa*_+5NXxI2RBy_8|$%+8PCxa0NyqxYyAg_s9 zE~h^jLOH4Xvye0v8@Pb4OdO)~i7fZ-am`a+n>{1k?Aqzq#=wy7^Ky~F6;UM`9w~`1 z9qpBRv10y45!?%@+dbb>NwIz(-L|2D$Q*YWX>0X%vlWA%g>JH%!w!pEC3nqR;5k}* zu56voO$5t<4L}pvFde1xW{vo)d$X=08??lGL@_IYR%Ihv2Jb( z&YFG~zYd=c)4~;p4_w`-wN@5h*WHX`txI&V(Rv-xOdHy~O)RQ;v*V{i1#ELROQ%~u zo$Yh=^s$;`Qez~yA9eiJ^>w$pQPFMkjy@`RxRHF@?58piX|6;Hw`0_( zV%#Ft`=pZ2^0}Gb2RGjOA+_&&xBvI_g{8$s?TyvV#kRJRlE(IaDggo9l9q~!o|0PO z{%?wZo~#FiNKrBGJ(DERNZF{gM>HB@E**(xjM?VG&Z$b-csDPTw+h{QL}HYD_tPi( zv)YdX>{qZV+Gr#R)P?p`_5|@V8-P-aMnSutwu3yb9FX+N)!o>|V9p{A}tV zokV33zq?s91G2Up%A0*8fvwxm)n5tQEXo*n#v9Qh0)IFMsIy8W0k)N zvcog8I$OW5;$L^KLBE=2Xtj?d1yW8k~XT0OA0u^q|DFm62Ll{i>OAWi}t3iBPW69J(mW#isWp) z+?(AIosxPpCryj!#=?cQ`Ni4hww^}+L=FHAYOZL2LfZ@%M0f>l?dY0UHfE&Y@1BX1 z5_RW~(-d_O>L9sb4j0?u(L@0^?X$RbDT`I1n(rc-?;f!`11SiLIAbb5>$5(UG-Y;z z$u)k}aSZX~N2f1Jk#l==l6!R9LtcVh>?Q*26usqgcR@Z5dTa4HN|CkaJCpcX*R9f# zyI+{scQFvu{n7ekOxov#Cr;1xiV8P#?c+PVqJ9+0S!2wKtj38{5`(4GU+z2Gn<{Xe`r1!wKyEL!)H>tndxrr5HLw>mz=GI6?68s$ zGSQK(gpGnn<)MDqFH3M7Q;sbJ583eLO9}DR@TzI!u0v?w?ad`CG%y2!Wed&GQ(Qg5 z4#%{pY@Ko#<9W>kCO;`k8&G~;>?w)@PH)5Gl>(9uMNyfTaph8;zEf<|4^B=YP#8f;j zi=YcJ3M+A?Cl1CrnSdgRvFjJN?kGy3bZ0p%Mx|hmBtrwN7h2@%@knR7GBrwZ1$JB6 z@Jmxqeu6j30Tr~m9Go$wpb?zaJRoLCUo;(%aSP_z2c;_+$Wb$E8z!#t*udrga2Tr7 zG@kNiVLN|0ROX>lyv0ZA&xW0kbKt4WM>n4pvqt($s4HUi@cvFNt`3~m;Y*s1mCym~ z*=Ac;Jm37(m^&tne++!-gAeSGYXh`lKe9rtz;s}nKFq*;SP*Q0LeuNmeCT<=-Nh&t z_T0;ZpEVm}9GQAFUd^LGb4D@lXM{=Fi(QRoaKsc! zIT$+*-BtdzV;!id6!Z(nQYL6Y1w4S`$qet$9Q7^_yJ!kug*#DQH;qEduxSxSGpr=i z19*~Sco{*FsZdTs$yR}g&~K(?vBE!NS3u?IU&z(>*m12K%?ZyHunS5Mjv<_n%7lWc z2))uF`>wovBoD{t55)amXA+43AW0) zFB4Ytu&vR882)>r%4AIeJLB=mSSp9Wrl|!< zrS+i1B=c3(xP%shkL%uMpiVjD@bk_PVbF5(AO!`ByS~5A&|>6h%SV+~R;>=HOJTV4}`{A^8&NBl$HJcd%@=2}{5(^M!T z1BlonkzJQvZVNau&%KIfwOOV^l5Yx_Sn{U59VxgA6BpwId4({4c!4KFZg0W!f^EW> zaY*PE!&Yq~mb`xp1wDB&h0_sd_WN5yM^N@SxixLirM#djq+Mx<0n;G?$gxw=3tE}8 zTC&!{rU&9i!YTV9LS%SHnD%voiXmLaAvJ&N*vR;AAUVFPxtM-pArHLh+>z+|DVXU8 zgZF?y#S@8pFU{Fy1v7}!VO>`xMQ*lJp0h~B}Q9w(EK#anEJ14?TDo#t`G8mk~Ak|$? z$Br=y1Hc__Uziw$1)5*HtGcL~&tLf<$N0Md@6;k?5DEiLCrXjJ2kt5V3>n@(h#}WI zYVVL<@p`~N;h&L;9^jw3v)rQ+2q`%7oy#^)+%71-2rk$JDxmh@_?J@P z@6=gsWF8Hax*z{2>{O^HRhJfWKy9dkx}#_+OtyI-NkyV$IGk2HEcw$)3k=f>PXjw%=3FTV7wXR!X%^B{r1k#z-+#+YbVvOjz~cO zaPPn{I0T*|tggc7p+m0_>UdDx_E<$!_cr{=zwv#KG1^sqakXni!-vXBl2b=T;2~Li5vv1 z0yt#tBh^A7(?v1RMFDj^_u3F_cF6}W5gNubg|IM(kg*YvlqS8V{gV z2Yo0R-9S@y`>)fS8e#rD)?1$*lKUCMNs%fRevL4PXpl_;{YC!;li>AgwRqS zR$#f$&jy@r1GkC=d+uQap5jW_LP6DqWNJLhRl(?52Pzn#O4t;7G39jO>8rl$)AT8_ z_u+v;l9&6n&k6!a1Y0otX$CY14GGS^cnI+>50>6TZ@e>lL<5@%S2hr|x&Vr6F#YHW z%LsBCaH~47=P}#~8{h$M-gyLcqW<>pfz1THyhM%zfQ(^_Wk`fx*U8=g znhnlWfX-7}uA@zu16symI$b$_bQ1_S5aey4mDvSVwIbC`A*_zJ_La5td9?Ihwe)4x zeAuM#Yaue^u?rj2h1}{w5Ow>z(c^5f4QYrBm25*STKZX9`ZqSf`xlPa?tqp-m`)D? zUrzyFH-WA$l2gU-1tmPg3xw6bG=mZ}gIhHJRE+Qo0dR-_oK^(DeFx)l4CC>N1X@Kh zyNDs%2_vw?3v=PJb>-&8%ln90i{qlh>$$ehhqDNA%DCDFWql zI%e`_L9dpUXDqzM`armos*O8P&v|KUqjNUrET{mNOXYMdpOAbU`pdQk7onmAH}Z;tQePRiP{a5bU-D;z1GR>DBmd_=aS2L#r!yNbIx(9@^)j%FkK{jP zMoPZv_S1Qp63&AHWJ%F^DyILDbb0?F=_uH&wHecik=vU3%2lr01Yn&D3>M-l66MI9 zK4B@R@nkeeQ<&5}N8=-TTLDi`cj;mV_PO|e1+yQo3LOse5CexJiRHlIaBvS-YVTMw z#7JFu=YRNpfWn|>U!gS}Po=9{1o0qYF84-K2XTd)L#M~Zii_2aGh{(F5#lznyjKZm1}2dHjB=k+~d@tPSADhyy=8 zXOUWL_Sa2#*~X_MuRz7Ad-#A`Pnw#XV=sH7zL4m_Xrg-hk*;4t@k53-(i~T!d@Y=s#XY65r^78+shZLuD{>T=+*}+WM&PDvSe5!=(v( z9|;773(cfUh%Wo}0l?CfNoSxS6zpo*59fNAuzTzZJ;xE^5#C*6oQeP=Ve4R}EHG+m z|8FHie)}Pp((>&04eG6_-fgt#-*uB{01n?BH1lXy1WBHEV^lTCfqV}gFf!_kVrYqc zyV-EbpKeGRZYsCU!2F>lmgI9~gp2Yq``kt9)20Hwq8_*2rF~KPxOLP=uJPyr=HIq3 z>p_j!k-3hp=&htze*t%f1id1dX>1%=SK6_eHo+Y7vkt)&R})455~gtEq#=2%5v1R^ z=H+aI)Esv`&yNb`%Hm?ZbYkcbmTC@0)&*cRqhkj=b3>mC-eY@PFF9V&wA&OqY8=F-yMMO#ELWx0K=*)yPsat5>`abr-LY>#$(1U`QaYP)@ zcknp!b@v;#zzc03OI*hKqk-RTK++dJs%`uLM_3J~jf7mF7agmTB_)?4MW!(Ys!9Pj zd>T^h>Mmyz19t;AJa01Ao#MvUXBOSaC~OLUXBVnik*u~ zkzY+l)-)do$%KOB%Rh!p6Tu?e)r)qbPdD~Ab9*i!cp3NoB^Yhvz;W=6KlrVk*@v`7 z;iKoX)qhJf0q14C;zNGvT^9WDTb|br97V>Bqi~R5PEo}CDYVcvb(ACFot3=f;xuyc z@*FkXx7)p!`1Ie0C%?JAZ02sN4+AV;K!o(oRZFwW2c;Xijp)(x7q%5I-K@z|0 z%{)9T!OxT+v~PdVOg}$W$i$CieoY8E-v8%W`Nsa?Uy19xN%+weRDffZan>-16xCN* zP=ye)0aFLOho{^)-)$6>L%Es+x3!zdz68@vk6f!1tVG%Gkqo|)ftb3U4Kscl2|2$s zh0+YVjYBOdy%IYV+k zGi=(0PVcLZDYtJFC)mXJev+(U*SiUOkcr2v(F%`> zHub{Ff|Q@w%d>O^QIX|aqe&!cK=tx?Wq?w^ogpui$>O(l4r(p4WHPyf^?!A3J4N44 zY{-QCo@ugr+QnyE#jiV3`uYIx6>|%Jt3EF9Ny<6R@=Eqbe|&lq@_xcISA_CfSAC!C zb!=K{6Lwit^QO+47|^0Gs`@@t;xs%)OPoVtHbfbhxXlzmi$x*+m^_DBILuw)3cj`7 zD-w{mZtj;Pa$N-zZ$RCCUN?vrN25$^aYIpKqo2fY|8loUdrC{=8p-xfAgpYFF^B{$ zL!|7Wq3CZL2s@4aGq%vI*`MX6obPK0?=*s(XP<7QDKi^CbD@@+_2*RgqYqDh`A+{( z%#M0425aU-SdQb$X#z1V((-~lP_&_F=M-cK_J2WBy|8CS>9xX zCOLuNAs*6)Y)HcGFwnCD#$O-C0k`i#tgZG#k6MPbUGB@Rm}kj{q^N>6Bn=!Yl+65U z>V`+ZkE`Yb1DSRH=HyHsHw+w**vtfBRC){1v+8e!H_7k(sM}fa92SGW)@IoRzGuAb zw=Vt0buoM+=C#7eVWau3v9-^0)c5sJr2mIy7AnmQ?q_%e>21LbF3hy)kcC6h9YKJK zWgw0$t7b4RRt{aiKi&89xBZjbLQ7%BJj}A+5#X0^PR}(b!wITr55}unXz_T1WKl-7 z8Q}vTLU$@l3oMy}rm-GHkYCE-Zpi;q?IP~B(wEeg;nXsQA<986RJ48|*t3B`zkKSw zpJ3-zLx@l5Uzsc@C-&FC7&lHr5*P8e(S~QN4s1bDrU%R6LKWfFq9e&C&?lW;sLspb z0;qndBL7vdQGR`)P7;oNY!v=vysc|< zF>4!vA@FzsRS+oVGpx_}+yCj$8z*AUULY(6?|EQ4Ndk?zzoqbqK(%KcMWk2|v%F)( zLCS@wMf#}Om7BsMmxkcYkYUml+YOf0`y^KK$`R?;fuY*6N(I+vAe;LXMc1%SULf>+ z{bcEUMO;|sVIuGC7ME^u4@0(FwtVy`Dd*Hov}`x!IXKFEgyi&(O^kCVj>Fj2fd){; zDP5qz7L&H$u-=+kqk8w^$stvJcsNPbCFP&nkf^?L*QXuZqs;U$$JewsN`0uqYdHQL__teF@w05Z85BFk^=qXKQip2?}1-wKq3<*S6Y)3S8U&X%dn|n_EJp9v({N zp1Y51Ujbj41>#;lS#S?wW9$kw_S;#;m=5ZIY!Xbh&fH>ejekltTV7CLyuF&RJ$^BJ z59CyPFLzyGniqq3ln3B|*1gyHNNkiYXls-3WQXO7jjalCC|H{!Do4_#ep!vxLytpD z`iqcqjkrl-h4vG_L`dDAETf`=?5_%lui;Gywhoq$pl##D+C0p}x_6kOm zxEKK1XIOmg_81O-J-&&3{;#AjOOAg$Ue`;^H-qIRKhjF33j5_-hWl=#4Cg07Jnq=o z_q+Y0Im;XesWU$zPLJPGmiJb_zNJcv4T>s+h8a|K2uR7>{u7gQn!A}S)7Nn&bZQ!0 zeHP!fPjBFhHOxS}-|a+0RLqoU_c58Bco)ya6;i=xZYjKC!o3?ON zT+H@XC${#E&`y^*`>OnH7(n z--U+_EU#NMB7sM->Ywt8svEbt2q(5q9@@lTRVamPir2N_2EKcjOaT1VhSTk%J5#2I zr9&|Rmq0pSgut4xF3~5cdCSM zejx_W#TtsTm-p=HQsg1EQV-saL$i=_P1>H&vp<%W$?GgU-K2acl4*%g>DV*Zxgruu z)QtB;iVv}REh;Lz3X3dt;4Qu9s3|JFr97kLuK8**bVpTp)jfc+q789p*mNLy(f-8o zyse}KVJmbB@w-Z|hUP#M`g{ItXgn6;`rC)C)Ic>EUPe()DiYFBROlJyNj87>_q6iu z26GudZ@X30@!`6c1T%7SI#_aOC|Td>dIwa#F}=!E8qQ~CbFaoUbJ^7qoP}A9{Wccq9L~ z@-M$u@cb93YcBfC$m@XjLjcvE164MH{eVj+HQapgZzJSk4Z3P8oexWN*ylf2yke>D z{Y>2EgCWR==r4#!e>8A)IDj^%s98s!+aN8-@1=?t`F~9+Q~v+n{_p%+Cci;Cr$IXA zMaV3X_kZjfFLI8^b98R+J&a<$O7A?W%Nc}qH>o)6`7ZogE93J17KJ=NRkx02LERJ3 zJByZ{1@Y$)vr9#;zeCrWTk;sxyE`e+$#?{mmT9lrj#+QYn1I zbTtvJ(6o($z&`=47r(Gwsy$#P6HIgpyq{KT);M*xb^q68ATlL~(|uP(`g(8?J}$na zVP-%%;FBV}a(vQh8GMq>C$jSpIJ0zw)_mm>kt6gS>xx(?GCuzC%`b-B3YRQQ@*3l< zWNsmgeOJKKiRJ5jpQX-FT@lmR?sa<@*+YqsY!3gKmfmu!E~E)A{T{CjcT)ptq_-{} zyXfmu$_s#jIA)cMxMcuV%w!<~LjB9TIVV4zvOHqM<@LNTSe#)k?OjdjGVV4Imp2B#Zv|fZjT|{5}c8 z^<(#3UMmGT-}g^|lg^IGjAH>v)XmVP^|*6IHpI z1?`pcF$HG}x$e#L%4DL0b%c__s>(KR;Iv0kMslfY)O|`EV0iBE&a3s=H*dFm$;ZJ! zIh)*mie2AH=Ghwuv{=?|5z5#4-|pxFa#|~wdV2QEh|#x&C`2xH&fBwdxBKQetcY_D z0rCii=Eeun*(9h<2u3qLHV2y2%y^FJM3xQ#HXG$NCs}0ZQgG<@XT3OepMwNq-s>jw z>ql}z?w`IDM3N7S8hpjBZ9b{opxzm98PDG}iqqowVIFhseGz)~>N!Drgt+qm7nd1m z<`t6qsgL-!$+7F(>5&7P=h^U-XBDQcJ~c;bm)jd|sv_D}g{BB|9=!*>a=+wJWS6=H z3HE!PJprHB*B6vLKG_v~{x4!D=a}ga*13-f>je zrEQ@eC9uyORH`M#t(GGnl)>UDGKbWB%yLjo3?#Wj(cH>0Bd|ET%+#Q2ka(mSg zv&Wx03kFY}2-j+&jno`{T#l;fYZ^k)*Q>cgNxg2byI1x|F<-E#4$!FXYkB@Xk?|wb z0`(RMTHxBm89yGiz~?ORLks-P0<)6f%p}+=>idkU!ox}Mp(J=J34WdgNy)G>8BQ0K zc1BgNO8SYJnuO!27lc6{TmWdfZjH<$OQb0+8OH$y06!=C8s5#%}iD^3w>CmjJ zt+2rgT~@f<3XfRfw^lHVX*+Ta(6Wd&Nrf9yK|O!|R)iW4YZ+;v+JigNV0#+u zO@mLR!8gT&X_W!`hcx(W8ca)v#&kG69j=ZXQsYJ3)b%i5o8X)nQdH&C=XP|;LB+9F zbv)f3@a=WG1{6-Oj6V4XBh9BUUWA6X$gc39L z(Lcd77Ktr@$PvJ)a4bsVJEJGDaKyPWri~4a zvqc)$$zEr_YBLk1vT^hoGVU5FmE$##f=k^OMo;1kBOXXm)iXjGb5t7Dgy=pw=DYaj zh$%Z^t|{W(P7JDxmt8nJPF>FMFEZlXSq!er6D~le+ilQjgB3Pti%GJg=0oX=q&vCV z2DjSaUK>1YgU{RGD>iuE20ymJuWj%LAz4X&oK7r=Q@1cqU5(KB)PLIGKQ>6qf*Dyb zFAElAK~om2jGILy9aWI2K8kv7kIM#fdpwh+pK#vE(oZ-o+4>15kgcC^9?8~EIKR!- zPdFtx;S)}V$#ixO(c{$NobaVlhRO6pwV0t5v(>a5nPI2L-0<2~{TEwP`vj#nW|C&YG^1a{F|hlpjnFlagw(X3c;Z zGoXG3Y@Gpj&VZlHfOOIA&fr65T_AYreJ2kr`OqM`-x+-AtnK-5T0ZQ1_tBg3;iY`& zE`ZxaH#~z+o%Qnt@Kgc(v;h850P73kmxYj%*tf2>2%3waqX_&(@N`kw$L>loqsA-) z^rJK3lQZG@neh5dD4zv~XTjGKyXCz;3;s9@Y_p+iHtd-V_s)jziEequ^p9`OhJVb4 zyg5)e2lhqMXH*vCjxv*z0T>ftPdG+ska6oj+n`eODH4pBe2hYrdm*zpe z1mBmyEat>8`Vkh-hsyb|Za#FrTmFdpcQKq=oY0SOe=&TZ815{F$KNggyEvR1;}c>! z4P$nSZ&w~r$s)g{8h49?FWi{c&hHBU^Cc3CJI(b&Z-PQ19HT<|5 z%4^{D8ki;~x-jO*sJFu+JM6MUzz$E_;SvWtEGD|BH9)`RfbTotPY%eeg^pS%sDqVt z3DawwTL)craIg;Use|9v!N=?2hxLilYgqqU4{y~&VFNTaz$Fc^t`U5V@l%+lnyiN! z;g&}DOe1`!5#~3+D@|Z)7NCs=XiYOTG{ecw(Ax~pG{eCbc%(&uHVvgliKDZg8AoR= z-r0&eYkRyr--C4d9sT|j&`3Bp4sXQF;UaI=8hNAH@N~(}@O4L6o7>y#^9Jqfv=DM3 z#igEmcDV->@55u6tupBLIu)tT-ms`j%yNA^7?l%;QJIPE%Z!ZD>=!g1b=kvLW$iuk zuqTjH=SE9Im9#Tr6QQ=&8{69OE{z94swB5J7*b?cf*XS4ez}zBnz%L|k9+MSU8;eB zc~@^=R3){Axl^rKXS)=aJN&9;PM=FzG4QJGZs#5)u*{+TtX|tVe1Sm^seKvzP~?&& zI1!8&z3pQeFHZa^#*ZQ6H;;nxbB@M%l@G(@@@AdO_4W4J5pp@|2sQ!y6J73O`8Oj0 z|B8>szm9#rjvjZwWe5*@6eectOl(}FGI0X<5YHv5FaaORjeLmsJ;i>WhRKW55`LME z?V~iI-=lb&BXLtX#ns_*b!{B3CJOt~6n`hx=JE8YVUa_MYfBi|?mmCGvanxg^5R7z zlZS42xJ(}!J)wgjdJD%6Lgm!d9wAqY<8XDs6jw*cRdMSd%hlQhTy2OiFk1V)a1 z!-uzLazK&Wdjf9no*k-XR&;l!t1BWS80}ve7)cacEtT2_1d@BHF(!(FAKJXl-^@zbX|RIl@w6?9@(k5q|UIxz8na- zyJTl5s2b>p-{Y@q@D7*n>a$f7!RXUQp}86&)}K+ueBx=Ax5QzIXjn6hz0d$lj`esx ziFgvvxggQe$DT0U#5w1LE7S!t6>MVcj`~w0Gm#?`Z_Ol#7HO&+W{8%lF*&v|i5H4( zYD^~II!UC_aSS(W4ct{(z$Sy-mfL8pF}qmSA)mhdVj}<-9(3 zKxyyyI;X~G2=_pH*gbHa+oMRnzED(ip~wAFe~9r9H2MW*eLKc4&|D4FC-VCXTa7M@ zf~@-@&VxsQr+{Ch8g_%-6yHBjH&8#>G${?#drjk$%_j9@CV12YUo^p2P4Hb4s1A|8 zF~OUr!Q4+0xgR#9tr^2PFaBnKSo(d1A!3(0#q0u$-Z)xy$8Wg2NQ#u?>hxHlY z7lYxX8KBo^z^xhZSO$DI1Bx@@)lA3|gW;qb1HeTr=y%w_8?lVPGz&f<2E)lXMiafM zgYjhjI!+yoC+o;e9gHX6m`ojvC*PP%9gI)Np_w`uPv+5?Iv5|PgK_h40%Z5O?ZG~G zNQoCG+u9y;Ku&4|mH@55wnPWz@cHX>JwVPa0|9crOEfE`HNynCCUCra65MWry(ajy z3BHx!_?&98{?P<~Qy()!Vchws-MUE6cVdTf2HomV}V?vMtNTFQBA}OINEad5yGpvk%!0(-M!tkeYg0$b`BH zDVf1duqPpep=sKNN2aDJrs-gkFzGN1Lj$E{+%OQzE1j0JkE_+W;@G6JQOx|Fe0Vw^UY14mYzx)`5KQZp1+cXMf(7vX z0(eIDD(iUAqf(Wk=8Vcd2LO4+f-;tT@^b7>g7Q*>Lc(V{ni=ed#0!46Cc1Y{_ z^S)gK-z|c3MQ}lMFNUqfFeH~W*PoBSqZp1C!$ZaJOfkG!4D07ZpX|%ts1qHX593M3 z7s2#$K1r@pA^Wng(TQ$e0NWS9fdz2)0{FoK5acONxx{&wPPBa?Y+49^un=xr2&X>! z{L(^rPZr&x6J1^c!q{1fn0P@8S;ffwY}C}(WDXBk_065D=dOgM>Z`}el=iez|i;tMU(o;%X7%rep?Nu+_`uyV-b9}ar= zN5{wFmv$;UbYicl!TaSb!z)dPHwo>n8Gu%?I9qEY^U7z5ZE+IYxGxwONz_pi{M-vH zmafG)&&z1G=w^!TH3d!`R>o>al58^C$~&1m!pCMAp>qnt_}@qh-gCLbyO8ztlwabr z#8;if7x$3~qM*?PgM6(T@` zM(6jlLzsS3C$a^otL2m}qjoyNJ|%KXR1L+qI8%_`lRMHMW{q@)Hm*z4k?J8npEbm+ zJ-L>7zgq(HoEW)uE!JWuT;+rnQpbF`W2F;3PH2@n>dMjeIAN<3_DCI#7+x32$%Ffx z;CI5f6An4ys1r^&;iMBDlm=dGFz`x)wp9jgZiBXRgSHB}uHM5=c+3e;IN=#5{6f0; zHJQ`HTI?@7;Wa0`>4XoR;BZYH%!o6#UK-3%>H?Pw%3V<7f>sywNCP&=b83eR_DY@F z41Tr4psmxO?OKDjO)`>wF7Ufx+y#eRaMT4Sq>Jn}7;vjW+kipapsbyfF8C|yhqoIH zuv1<;54qrB7yL*XWY_fB$^Yn@T7B_dSISS@aJ5!_G0`-Bb*kwBx#@YWX~9yhDdC|V zSek0OeW~X7ePXHR`2Aq1=J;)1ra68?%QVODnPmybuT}-}wPjj?$mQCI*Du#bJia_J zq9*W@2)GBSPmsd$+EiapTb8ak4jrHecsi>Cy*)lj^25*%?i5qI%rg_2d zy5WD_u)G{v%i+FqC|eCXWe!<=a<94?Vjp$8cQrh`8uBY(a|KMu9J0FPUi;T7;2Rb2 z4;AolABp^rETSvPX+N_D9$5p=t%2XHfg+i1R$txa@7BVTYvHA}@WEQxwGK|KgU8pI zmg0PA9sGJ7%&UY|m2j{U9;<{`Wu{tvVHkTA6jecW74%oZH>=>qDk!ctEyXDqY8$Fy zS2c`P!`W)Eu7^gMsa9W#bMJciT#~K!-u3YIdZ^z3KAEXj&n$gp1Kha*PHljvHo&qP zxTyy2l9_7t%+lYff$!D8vo-K~4Q%qjAA8_?9#dxNpLyWt9(c=TwAr{WP`<_Sd^7y28Qv9LTj2f{_!pT%*P|1=&;oC_Kxr#@ zTH$Ofyd%@+dUaw;Hp23a(6$k7*a&Zk|J%%XjU63r(A@?%x52G#aJCKJm&NoH!Askr ztQ|Vr;dAY9x*b|NV5Gy8BKTMb+}#1EJK*UKxcM5`(g_DUjVXfjEqV8K!u_4__nq)U zCw%!@*xv;nK zx?fw{0~>l^pa+y5_;C+>D8B2JM0<3igT1i37t~%j-V5b@aBm-+?UO`%b)v8K!5e*0 z&<|_-;nsfmQ9t}=za-kH6D`;b3payjGYo8olbhiSTi}i@l4!q9^wbtOvjzTn3%t4o zZrutOwnEu}B)VBA+BE?E1K=Nk+XmqL0F-QlP1_{V9XioJ+y*1t;P!3sz&7~JHt-C> zzClTJw@&nr2I1%+d}|PXEV^%p-P_^Fc1d)PE|8X6apiJ@BnuOs=6R=QqPX&?5*0BT zB^d2ff{{S-d*vJrKitVB8AWK&vRh)>H< zRf4f`cPOI7hE*x|q{rvKWi+hDg2R1^D7%j=Gb1uu;{$EAaz6k}0W% zd8T!Bt&Oe2E&lqUjV(>X{zg$VRvBq-X{oPoYOD7*ndF&@M3w{|Pcj2`2J(Dl9?^8Y z7nh5yf8>5E2v{{7dBv|y1plVBO@iAAGorV9U5)1h)($wmjN z)|ss2ug=g)-XWaJ=4&_Jt!j0keq(U8*_zEwDMsgJj6wHR?D4UNT1s$L%J$XG}6Q!QOb@^tx3n;T;_$*0QZ z)HJP{{6?rGW&+PcmrKByRnjlN(CROlb zRFSTxG7~jzG*pv#@TF_$hJof}{m{!#OBDuMl1mC)xmq%+R3aOY&-9X$w~$lSB=5%4 z)g;?^Sxtv_#-hV<5Rs5FHYQ$T)e-lQszwEeeaId1g?-~$n+APgvbo*$&#a<VPZe_O6;sPEu zDRGHu$!z;QXO9wXW~9kiu01lV^fYIWGPB!Pjy*DR!q%E-X`12#DMALR=%op=B~y_l z2bqCQ@_Yky9VY1Njoga~c+IsbLm8<(kSPnh(j5=ABv*zgveZ-)_r}IVXVG*Z;?~A> z2O?=#;C1gBQ+yF6&iD~lMq^{XuxM6-!%EN}5Z!05#)7=4(v`i{MA?ULNP$mRcWRZn zD7c@p`q)z{Z~>k>C^`m39~`as034n@>4C8~%*jPCJRB`ZIh)ha77~-u+(@q9)vQKqFTxSx?xQkhu5uS;F&m%tXjW58t z3GxX}5Tl3B9utevYFL#e7VySVd*i6RX?Hv`BfZaXkj$#Ee608@TxNd%&qNAWiu$Z6L4B49+nF#;AIEq$KbXdN zW~~ESfK6u9q{#zc8a3%LG&(`Si1tswt3aLwJQldo0wHrg(t9m%(gHuUz^^Rue-;p2 zXFFv+Qim?hJ8@cBRIo^CZdT4^=ZkxB*q1z(Zpkk9vJE*AI5(gFYEsoPR_`VH(maK)+V22UYdMJ)#cDUOPr|s~x9ZDR~Cv)ZL zPah6D;D7_}a=?QQc*g-p^57AfD^Fiq&IZ z033y|x)9D4!lOm-?=tmVu};)l3i^T*BCEp+1mgS@r7m}h5| zNq}L@7aX1lM85RNg%{?6Cv(A*S@)IC1y8O(-}qecWNw1Y1y4SO;K~03Uhfthc1!{Q DuYL7k literal 21669 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 F0suJePp<#~ diff --git a/test/lib/snapshots/index.ts.snap b/test/lib/snapshots/index.ts.snap index 4d36498fae8f19fffbdf7101200d731f05e3c97a..8878e2324df6fd7a41816afba528999ef0e725ee 100644 GIT binary patch literal 15939 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 NZi6&lhc+6@{{ir>|Kb1u literal 13928 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