From d4b8c4e7e4dc0fa5d34060be7b3d3fbe400f5751 Mon Sep 17 00:00:00 2001 From: "gorbenko.pavel" Date: Wed, 14 Oct 2026 14:06:06 +0500 Subject: [PATCH] =?UTF-8?q?chore:=20=D1=83=D0=B1=D1=80=D0=B0=D0=BD=D1=8B?= =?UTF-8?q?=20=D0=BF=D1=80=D0=B5=D0=B4=D1=83=D0=BF=D1=80=D0=B5=D0=B6=D0=B4?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BB=D0=B8=D0=BD=D1=82=D0=B5=D1=80?= =?UTF-8?q?=D0=B0=20no-new-null=20=D0=B8=20no-script-url?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit null там законный (очистка колонки SharePoint, ответ localStorage), строка javascript: в тесте нужна намеренно — пометил с объяснением. Co-Authored-By: Claude Opus 5.5 --- src/webparts/requestPortal/features/myRequests/filtersStorage.ts | 1 + src/webparts/requestPortal/shared/approverNote/linkify.test.ts | 1 + src/webparts/requestPortal/shared/fieldChanges/fieldChanges.ts | 1 + 3 files changed, 3 insertions(+) diff --git a/src/webparts/requestPortal/features/myRequests/filtersStorage.ts b/src/webparts/requestPortal/features/myRequests/filtersStorage.ts index 40e36ad..22ec998 100644 --- a/src/webparts/requestPortal/features/myRequests/filtersStorage.ts +++ b/src/webparts/requestPortal/features/myRequests/filtersStorage.ts @@ -33,6 +33,7 @@ function asDay(value: unknown): string { } /** Разобрать сохранённое значение; всё, что не прошло проверку, — как «не задано». */ +// eslint-disable-next-line @rushstack/no-new-null -- так отдаёт localStorage.getItem, если ключа нет export function parseStoredRefinement(raw: string | null): IStoredRefinement | undefined { if (!raw) return undefined; let parsed: { filters?: Record; sort?: Record }; diff --git a/src/webparts/requestPortal/shared/approverNote/linkify.test.ts b/src/webparts/requestPortal/shared/approverNote/linkify.test.ts index 963f909..9213d24 100644 --- a/src/webparts/requestPortal/shared/approverNote/linkify.test.ts +++ b/src/webparts/requestPortal/shared/approverNote/linkify.test.ts @@ -23,6 +23,7 @@ describe('linkify', () => { }); it('не-http схемы ссылкой не становятся', () => { + // eslint-disable-next-line no-script-url -- проверяем как раз то, что такая строка ссылкой не станет expect(linkify('javascript:alert(1)')).toEqual([{ text: 'javascript:alert(1)' }]); }); diff --git a/src/webparts/requestPortal/shared/fieldChanges/fieldChanges.ts b/src/webparts/requestPortal/shared/fieldChanges/fieldChanges.ts index 93a4c04..6216c3f 100644 --- a/src/webparts/requestPortal/shared/fieldChanges/fieldChanges.ts +++ b/src/webparts/requestPortal/shared/fieldChanges/fieldChanges.ts @@ -91,6 +91,7 @@ export function parseFieldChanges(raw: unknown): IFieldChange[] { } /** Журнал → JSON для колонки (null — журнал пуст, колонку очищаем). */ +// eslint-disable-next-line @rushstack/no-new-null -- null очищает колонку SharePoint, undefined поле бы не тронул export function serializeFieldChanges(changes: IFieldChange[]): string | null { return changes.length > 0 ? JSON.stringify(changes) : null; }