From ac9b270a823def7dc115ebdda8a07bbdb1c0b83d Mon Sep 17 00:00:00 2001
From: Sergei Zharinov <zharinov@users.noreply.github.com>
Date: Wed, 12 Jan 2022 10:28:26 +0300
Subject: [PATCH] refactor(util): Refactor strict null check list (#13507)

* refactor(util): Refactor strict null check list

* Fix
---
 lib/util/emoji.ts         |  7 +++---
 lib/util/sanitize.spec.ts |  3 ++-
 lib/util/url.spec.ts      | 12 +++++-----
 tsconfig.strict.json      | 46 ++++++++++++++-------------------------
 4 files changed, 28 insertions(+), 40 deletions(-)

diff --git a/lib/util/emoji.ts b/lib/util/emoji.ts
index 294514ce15..273816e9b9 100644
--- a/lib/util/emoji.ts
+++ b/lib/util/emoji.ts
@@ -20,7 +20,8 @@ const hexCodesByShort = new Map<string, string>();
 function lazyInitMappings(): void {
   if (!mappingsInitialized) {
     const table: Record<string, string | string[]> = JSON.parse(
-      dataFiles.get('node_modules/emojibase-data/en/shortcodes/github.json')
+      // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
+      dataFiles.get('node_modules/emojibase-data/en/shortcodes/github.json')!
     );
     for (const [hex, val] of Object.entries(table)) {
       const shortCodes: string[] = is.array<string>(val) ? val : [val];
@@ -34,7 +35,7 @@ function lazyInitMappings(): void {
 }
 
 export function setEmojiConfig(_config: RenovateConfig): void {
-  unicodeEmoji = _config.unicodeEmoji;
+  unicodeEmoji = !!_config.unicodeEmoji;
 }
 
 const shortCodeRegex = regEx(SHORTCODE_REGEX.source, 'g');
@@ -87,7 +88,7 @@ export function unemojify(text: string): string {
   return text.replace(emojiRegex, (emoji) => {
     const hexCode = stripHexCode(fromUnicodeToHexcode(emoji));
     const shortCode = shortCodesByHex.get(hexCode);
-    return shortCode || '�';
+    return shortCode ?? '�';
   });
 }
 
diff --git a/lib/util/sanitize.spec.ts b/lib/util/sanitize.spec.ts
index 15068a9d9d..a5e1cf8e8b 100644
--- a/lib/util/sanitize.spec.ts
+++ b/lib/util/sanitize.spec.ts
@@ -6,7 +6,8 @@ describe('util/sanitize', () => {
   });
 
   it('sanitizes empty string', () => {
-    expect(sanitize(null)).toBeNull();
+    expect(sanitize(null as never)).toBeNull();
+    expect(sanitize('')).toBe('');
   });
   it('sanitizes secrets from strings', () => {
     const token = '123testtoken';
diff --git a/lib/util/url.spec.ts b/lib/util/url.spec.ts
index a971b62713..8fd5a6b253 100644
--- a/lib/util/url.spec.ts
+++ b/lib/util/url.spec.ts
@@ -55,7 +55,7 @@ describe('util/url', () => {
 
   it('validates URLs', () => {
     expect(validateUrl()).toBeFalse();
-    expect(validateUrl(null)).toBeFalse();
+    expect(validateUrl(null as never)).toBeFalse();
     expect(validateUrl('foo')).toBeFalse();
     expect(validateUrl('ssh://github.com')).toBeFalse();
     expect(validateUrl('http://github.com')).toBeTrue();
@@ -63,13 +63,13 @@ describe('util/url', () => {
   });
 
   it('parses URL', () => {
-    expect(parseUrl(null)).toBeNull();
-    expect(parseUrl(undefined)).toBeNull();
+    expect(parseUrl(null as never)).toBeNull();
+    expect(parseUrl(undefined as never)).toBeNull();
 
     const url = parseUrl('https://github.com/renovatebot/renovate');
-    expect(url.protocol).toBe('https:');
-    expect(url.host).toBe('github.com');
-    expect(url.pathname).toBe('/renovatebot/renovate');
+    expect(url?.protocol).toBe('https:');
+    expect(url?.host).toBe('github.com');
+    expect(url?.pathname).toBe('/renovatebot/renovate');
   });
 
   it('trimTrailingSlash', () => {
diff --git a/tsconfig.strict.json b/tsconfig.strict.json
index 76e486bf5b..e3bbf0da81 100644
--- a/tsconfig.strict.json
+++ b/tsconfig.strict.json
@@ -42,36 +42,10 @@
     "lib/platform/utils/read-only-issue-body.ts",
     "lib/proxy.ts",
     "lib/types/**/*.ts",
-    "lib/util/cache/**/*.ts",
-    "lib/util/clone.ts",
-    "lib/util/date.ts",
-    "lib/util/exec",
-    "lib/util/fs",
-    "lib/util/git/config.ts",
-    "lib/util/git/types.ts",
-    "lib/util/host-rules.ts",
-    "lib/util/html.ts",
-    "lib/util/http/**/.ts",
-    "lib/util/lazy.ts",
-    "lib/util/lazy.spec.ts",
-    "lib/util/index.ts",
-    "lib/util/json-writer/code-format.ts",
-    "lib/util/json-writer/editor-config.ts",
-    "lib/util/json-writer/indentation-type.ts",
-    "lib/util/json-writer/json-writer.ts",
-    "lib/util/markdown.ts",
-    "lib/util/mask.spec.ts",
-    "lib/util/mask.ts",
-    "lib/util/modules.ts",
-    "lib/util/object.ts",
-    "lib/util/regex.spec.ts",
-    "lib/util/regex.ts",
-    "lib/util/sanitize.ts",
-    "lib/util/split.ts",
-    "lib/util/url.ts",
+    "lib/util/**/*.ts",
     "lib/versioning/gradle/compare.ts",
-    "lib/versioning/maven/**/*.ts",
     "lib/versioning/hex/**/*.ts",
+    "lib/versioning/maven/**/*.ts",
     "lib/versioning/node/**/*.ts",
     "lib/versioning/npm/**/*.ts",
     "lib/versioning/ruby/**/*.ts",
@@ -105,9 +79,21 @@
     "lib/util/exec/buildpack.ts",
     "lib/util/exec/docker/index.spec.ts",
     "lib/util/exec/docker/index.ts",
-    "lib/util/exec/env.spec.ts",
     "lib/util/exec/index.spec.ts",
     "lib/util/exec/index.ts",
-    "lib/util/fs/index.spec.ts"
+    "lib/util/fs/index.spec.ts",
+    "lib/util/git/",
+    "lib/util/host-rules.spec.ts",
+    "lib/util/host-rules.ts",
+    "lib/util/http/**/*.spec.ts",
+    "lib/util/ignore.ts",
+    "lib/util/index.spec.ts",
+    "lib/util/json-writer/editor-config.spec.ts",
+    "lib/util/json-writer/json-writer.spec.ts",
+    "lib/util/merge-confidence/index.spec.ts",
+    "lib/util/merge-confidence/index.ts",
+    "lib/util/package-rules.spec.ts",
+    "lib/util/package-rules.ts",
+    "lib/util/template/"
   ]
 }
-- 
GitLab