From 944da7a04e23cca23d05fa7e20b5482f01b7eae9 Mon Sep 17 00:00:00 2001 From: Jeffrey Horton Date: Wed, 6 Nov 2024 18:19:24 +0000 Subject: [PATCH 1/6] [ASSB-1444] Fix error on first render - Don't try to render a deadline without a date set - Use formatDate so that invalid dates don't cause a render error - Update copy to singular/plural variants --- package-lock.json | 21 +++++---- package.json | 2 +- src/condition-reminders/index.jsx | 41 ++++++++++++----- src/condition-reminders/index.spec.jsx | 64 ++++++++++++++++++++++++++ src/utils.js | 18 +++++++- src/utils.spec.js | 18 ++++++++ 6 files changed, 141 insertions(+), 23 deletions(-) create mode 100644 src/condition-reminders/index.spec.jsx create mode 100644 src/utils.spec.js diff --git a/package-lock.json b/package-lock.json index 7c88ac37..bd1a0484 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@ukhomeoffice/asl-components", - "version": "13.5.2", + "version": "13.6.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ukhomeoffice/asl-components", - "version": "13.5.2", + "version": "13.6.1", "license": "MIT", "dependencies": { "@ukhomeoffice/asl-constants": "^2.1.5", @@ -7721,12 +7721,13 @@ } }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, + "license": "MIT", "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { @@ -15239,12 +15240,12 @@ } }, "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "requires": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" } }, diff --git a/package.json b/package.json index 2bab429b..0c7e7ccc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@ukhomeoffice/asl-components", - "version": "13.6.0", + "version": "13.6.1", "description": "React components for ASL layouts and elements", "main": "src/index.jsx", "styles": "styles/index.scss", diff --git a/src/condition-reminders/index.jsx b/src/condition-reminders/index.jsx index e89a4f2a..86b2f1bf 100644 --- a/src/condition-reminders/index.jsx +++ b/src/condition-reminders/index.jsx @@ -1,30 +1,49 @@ import React from 'react'; -import { format } from 'date-fns'; +import { formatDate, DATE_FORMAT } from '../utils'; import { Inset } from '../'; -function ConditionReminders({ reminders, dateFormat = 'dd/MM/yyyy' }) { - if (!reminders || reminders.length < 1) { +const SINGULAR_CONTENT = { + notice: 'A deadline and automated reminders have been set for this condition', + deadline_list_intro: 'This condition has a deadline set for:', + deadline_list_outro: + 'Licence holders will receive reminders 1 month before, 1 week before' + + ' and on the deadline date. ASRU will receive a reminder when the' + + ' deadline has passed.' +}; + +const PLURAL_CONTENT = { + notice: 'Deadlines and automated reminders have been set for this condition', + deadline_list_intro: 'This condition has deadlines set for:', + deadline_list_outro: + 'Licence holders will receive reminders 1 month before, 1 week before' + + ' and on each deadline date. ASRU will receive reminders when each' + + ' deadline has passed.' +}; + +function ConditionReminders({ reminders, dateFormat = DATE_FORMAT.short }) { + const activeReminders = (reminders ?? []).filter(reminder => reminder.deadline); + + if (activeReminders.length < 1) { return null; } + const content = activeReminders.length === 1 ? SINGULAR_CONTENT : PLURAL_CONTENT; + return (
-

Automated reminders have been set for this condition

+

{content.notice}

- Show when reminders have been scheduled + Show when deadlines and reminders have been scheduled -

This condition has a reminder scheduled for:

+

{content.deadline_list_intro}

    { reminders.map(reminder => ( -
  • {format(reminder.deadline, dateFormat)}
  • +
  • {formatDate(reminder.deadline, dateFormat)}
  • )) }
-

- Licence holders will receive reminders a month before, a week before and on the day the condition - is due to be met. ASRU will receive a reminder when the deadline has passed. -

+

{content.deadline_list_outro}

diff --git a/src/condition-reminders/index.spec.jsx b/src/condition-reminders/index.spec.jsx new file mode 100644 index 00000000..4801fde6 --- /dev/null +++ b/src/condition-reminders/index.spec.jsx @@ -0,0 +1,64 @@ +import { shallow, render } from 'enzyme'; +import React from 'react'; +import ConditionReminders from './index'; +import {describe, expect, test} from '@jest/globals' +import {v4 as uuid} from 'uuid' + +function reminderWithDeadline(deadline) { + return { + id: uuid(), + deadline + } +} + +describe('ConditionReminders component', () => { + test('Empty reminders should render nothing', () => { + for (const reminders of [null, []]) { + const wrapper = shallow(); + expect(wrapper.isEmptyRender()).toBe(true); + } + }) + + test('Reminders without a deadline should be ignored', () => { + const reminders = [{id: uuid()}] + const wrapper = shallow(); + expect(wrapper.isEmptyRender()).toBe(true); + }) + + test('When there is one reminder the copy should be singular', () => { + const reminders = [reminderWithDeadline("2025-01-01")] + const wrapper = render(); + expect(wrapper.text()) + .toContain( + "A deadline and automated reminders have been set for this condition" + ); + expect(wrapper.text()) + .toContain("This condition has a deadline set for:"); + expect(wrapper.text()) + .toContain( + "Licence holders will receive reminders 1 month before," + + " 1 week before and on the deadline date. ASRU will receive a reminder" + + " when the deadline has passed." + ); + }) + + test('When there are two reminders the copy should be plural', () => { + const reminders = [ + reminderWithDeadline("2025-01-01"), + reminderWithDeadline("2025-02-02") + ] + const wrapper = render(); + expect(wrapper.text()) + .toContain( + "Deadlines and automated reminders have been set for this condition" + ); + expect(wrapper.text()) + .toContain("This condition has deadlines set for:"); + expect(wrapper.text()) + .toContain( + "Licence holders will receive reminders 1 month before, " + + "1 week before and on each deadline date. ASRU will receive reminders " + + "when each deadline has passed." + ); + }) +}) diff --git a/src/utils.js b/src/utils.js index bfde3acf..b4880a4e 100644 --- a/src/utils.js +++ b/src/utils.js @@ -1,6 +1,7 @@ const { stringify, parse } = require('qs'); const get = require('lodash/get'); const url = require('url'); +const { format: dateFormatter } = require('date-fns'); const getValue = ({ row, schema, key }) => { const accessor = schema.accessor || key; @@ -36,8 +37,23 @@ const getSort = (column, state) => ({ ascending: state.column === column ? !state.ascending : true }); +const DATE_FORMAT = { + long: 'd MMMM yyyy', + short: 'd/M/yyyy' +}; + +const formatDate = (date, format = DATE_FORMAT.long) => { + try { + return date ? dateFormatter(date, format) : '-'; + } catch (err) { + return 'Invalid date entered'; + } +}; + module.exports = { getValue, queryStringFromState, - getSort + getSort, + formatDate, + DATE_FORMAT }; diff --git a/src/utils.spec.js b/src/utils.spec.js new file mode 100644 index 00000000..d6dc0f01 --- /dev/null +++ b/src/utils.spec.js @@ -0,0 +1,18 @@ +const { formatDate, DATE_FORMAT } = require('./utils'); + +describe('formatDate', () => { + test('formats a valid date', () => { + expect(formatDate('2024-01-01', DATE_FORMAT.short)).toBe('1/1/2024'); + }); + + test('returns "-" for empty dates', () => { + expect(formatDate(null, DATE_FORMAT.short)).toBe('-'); + expect(formatDate(undefined, DATE_FORMAT.short)).toBe('-'); + expect(formatDate('', DATE_FORMAT.short)).toBe('-'); + }); + + test('returns "Invalid date entered" for invlaid dates', () => { + expect(formatDate('not a date', DATE_FORMAT.short)).toBe('Invalid date entered'); + expect(formatDate('24-01-01', DATE_FORMAT.short)).toBe('Invalid date entered'); + }); +}); From e490baea281371740bd38b49053b57d89da5d923 Mon Sep 17 00:00:00 2001 From: Jeffrey Horton Date: Wed, 6 Nov 2024 18:19:24 +0000 Subject: [PATCH 2/6] [ASSB-1444] Fix error on first render - Don't try to render a deadline without a date set - Use formatDate so that invalid dates don't cause a render error - Update copy to singular/plural variants --- package-lock.json | 21 +++++---- package.json | 2 +- src/condition-reminders/index.jsx | 41 ++++++++++++----- src/condition-reminders/index.spec.jsx | 64 ++++++++++++++++++++++++++ src/utils.js | 18 +++++++- src/utils.spec.js | 18 ++++++++ 6 files changed, 141 insertions(+), 23 deletions(-) create mode 100644 src/condition-reminders/index.spec.jsx create mode 100644 src/utils.spec.js diff --git a/package-lock.json b/package-lock.json index 7c88ac37..bd1a0484 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@ukhomeoffice/asl-components", - "version": "13.5.2", + "version": "13.6.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@ukhomeoffice/asl-components", - "version": "13.5.2", + "version": "13.6.1", "license": "MIT", "dependencies": { "@ukhomeoffice/asl-constants": "^2.1.5", @@ -7721,12 +7721,13 @@ } }, "node_modules/micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, + "license": "MIT", "dependencies": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" }, "engines": { @@ -15239,12 +15240,12 @@ } }, "micromatch": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "requires": { - "braces": "^3.0.2", + "braces": "^3.0.3", "picomatch": "^2.3.1" } }, diff --git a/package.json b/package.json index 2bab429b..0c7e7ccc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@ukhomeoffice/asl-components", - "version": "13.6.0", + "version": "13.6.1", "description": "React components for ASL layouts and elements", "main": "src/index.jsx", "styles": "styles/index.scss", diff --git a/src/condition-reminders/index.jsx b/src/condition-reminders/index.jsx index e89a4f2a..86b2f1bf 100644 --- a/src/condition-reminders/index.jsx +++ b/src/condition-reminders/index.jsx @@ -1,30 +1,49 @@ import React from 'react'; -import { format } from 'date-fns'; +import { formatDate, DATE_FORMAT } from '../utils'; import { Inset } from '../'; -function ConditionReminders({ reminders, dateFormat = 'dd/MM/yyyy' }) { - if (!reminders || reminders.length < 1) { +const SINGULAR_CONTENT = { + notice: 'A deadline and automated reminders have been set for this condition', + deadline_list_intro: 'This condition has a deadline set for:', + deadline_list_outro: + 'Licence holders will receive reminders 1 month before, 1 week before' + + ' and on the deadline date. ASRU will receive a reminder when the' + + ' deadline has passed.' +}; + +const PLURAL_CONTENT = { + notice: 'Deadlines and automated reminders have been set for this condition', + deadline_list_intro: 'This condition has deadlines set for:', + deadline_list_outro: + 'Licence holders will receive reminders 1 month before, 1 week before' + + ' and on each deadline date. ASRU will receive reminders when each' + + ' deadline has passed.' +}; + +function ConditionReminders({ reminders, dateFormat = DATE_FORMAT.short }) { + const activeReminders = (reminders ?? []).filter(reminder => reminder.deadline); + + if (activeReminders.length < 1) { return null; } + const content = activeReminders.length === 1 ? SINGULAR_CONTENT : PLURAL_CONTENT; + return (
-

Automated reminders have been set for this condition

+

{content.notice}

- Show when reminders have been scheduled + Show when deadlines and reminders have been scheduled -

This condition has a reminder scheduled for:

+

{content.deadline_list_intro}

    { reminders.map(reminder => ( -
  • {format(reminder.deadline, dateFormat)}
  • +
  • {formatDate(reminder.deadline, dateFormat)}
  • )) }
-

- Licence holders will receive reminders a month before, a week before and on the day the condition - is due to be met. ASRU will receive a reminder when the deadline has passed. -

+

{content.deadline_list_outro}

diff --git a/src/condition-reminders/index.spec.jsx b/src/condition-reminders/index.spec.jsx new file mode 100644 index 00000000..4801fde6 --- /dev/null +++ b/src/condition-reminders/index.spec.jsx @@ -0,0 +1,64 @@ +import { shallow, render } from 'enzyme'; +import React from 'react'; +import ConditionReminders from './index'; +import {describe, expect, test} from '@jest/globals' +import {v4 as uuid} from 'uuid' + +function reminderWithDeadline(deadline) { + return { + id: uuid(), + deadline + } +} + +describe('ConditionReminders component', () => { + test('Empty reminders should render nothing', () => { + for (const reminders of [null, []]) { + const wrapper = shallow(); + expect(wrapper.isEmptyRender()).toBe(true); + } + }) + + test('Reminders without a deadline should be ignored', () => { + const reminders = [{id: uuid()}] + const wrapper = shallow(); + expect(wrapper.isEmptyRender()).toBe(true); + }) + + test('When there is one reminder the copy should be singular', () => { + const reminders = [reminderWithDeadline("2025-01-01")] + const wrapper = render(); + expect(wrapper.text()) + .toContain( + "A deadline and automated reminders have been set for this condition" + ); + expect(wrapper.text()) + .toContain("This condition has a deadline set for:"); + expect(wrapper.text()) + .toContain( + "Licence holders will receive reminders 1 month before," + + " 1 week before and on the deadline date. ASRU will receive a reminder" + + " when the deadline has passed." + ); + }) + + test('When there are two reminders the copy should be plural', () => { + const reminders = [ + reminderWithDeadline("2025-01-01"), + reminderWithDeadline("2025-02-02") + ] + const wrapper = render(); + expect(wrapper.text()) + .toContain( + "Deadlines and automated reminders have been set for this condition" + ); + expect(wrapper.text()) + .toContain("This condition has deadlines set for:"); + expect(wrapper.text()) + .toContain( + "Licence holders will receive reminders 1 month before, " + + "1 week before and on each deadline date. ASRU will receive reminders " + + "when each deadline has passed." + ); + }) +}) diff --git a/src/utils.js b/src/utils.js index bfde3acf..b4880a4e 100644 --- a/src/utils.js +++ b/src/utils.js @@ -1,6 +1,7 @@ const { stringify, parse } = require('qs'); const get = require('lodash/get'); const url = require('url'); +const { format: dateFormatter } = require('date-fns'); const getValue = ({ row, schema, key }) => { const accessor = schema.accessor || key; @@ -36,8 +37,23 @@ const getSort = (column, state) => ({ ascending: state.column === column ? !state.ascending : true }); +const DATE_FORMAT = { + long: 'd MMMM yyyy', + short: 'd/M/yyyy' +}; + +const formatDate = (date, format = DATE_FORMAT.long) => { + try { + return date ? dateFormatter(date, format) : '-'; + } catch (err) { + return 'Invalid date entered'; + } +}; + module.exports = { getValue, queryStringFromState, - getSort + getSort, + formatDate, + DATE_FORMAT }; diff --git a/src/utils.spec.js b/src/utils.spec.js new file mode 100644 index 00000000..d6dc0f01 --- /dev/null +++ b/src/utils.spec.js @@ -0,0 +1,18 @@ +const { formatDate, DATE_FORMAT } = require('./utils'); + +describe('formatDate', () => { + test('formats a valid date', () => { + expect(formatDate('2024-01-01', DATE_FORMAT.short)).toBe('1/1/2024'); + }); + + test('returns "-" for empty dates', () => { + expect(formatDate(null, DATE_FORMAT.short)).toBe('-'); + expect(formatDate(undefined, DATE_FORMAT.short)).toBe('-'); + expect(formatDate('', DATE_FORMAT.short)).toBe('-'); + }); + + test('returns "Invalid date entered" for invlaid dates', () => { + expect(formatDate('not a date', DATE_FORMAT.short)).toBe('Invalid date entered'); + expect(formatDate('24-01-01', DATE_FORMAT.short)).toBe('Invalid date entered'); + }); +}); From 44cafab2ae9cd4a38a894688e4c6cd51c112502d Mon Sep 17 00:00:00 2001 From: Jeffrey Horton Date: Wed, 6 Nov 2024 18:32:04 +0000 Subject: [PATCH 3/6] [ASSB-1444] Update action triggers --- .github/workflows/semver-check-increment.yml | 7 ++++++- .github/workflows/test.yml | 15 ++++++++++----- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/.github/workflows/semver-check-increment.yml b/.github/workflows/semver-check-increment.yml index 8781ce62..ba0c6585 100644 --- a/.github/workflows/semver-check-increment.yml +++ b/.github/workflows/semver-check-increment.yml @@ -1,7 +1,12 @@ name: 'Increment Version - npm' on: pull_request: - types: [ labeled, unlabeled, opened, reopened, synchronize ] + branches: + - main + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true jobs: version: diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 7523979c..f818441b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,13 +1,18 @@ name: 'Test' on: pull_request: - types: [ opened, reopened, synchronize ] + branches: + - main + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true jobs: test: - uses: UKHomeOffice/sas-github-workflows/.github/workflows/test-npm.yml@v1 + uses: UKHomeOffice/sas-github-workflows/.github/workflows/test-npm.yml@v1 secrets: inherit - with: - lintCommand: 'test:lint' + with: + lintCommand: 'test:lint' testCommand: 'run test:unit' - + From 595c67198e849212b0f1673ccedbad6570c5cb06 Mon Sep 17 00:00:00 2001 From: Jeffrey Horton Date: Wed, 6 Nov 2024 18:37:52 +0000 Subject: [PATCH 4/6] [ASSB-1444] Update action triggers --- .github/workflows/semver-check-increment.yml | 5 +---- .github/workflows/test.yml | 5 +---- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/.github/workflows/semver-check-increment.yml b/.github/workflows/semver-check-increment.yml index ba0c6585..59728fd3 100644 --- a/.github/workflows/semver-check-increment.yml +++ b/.github/workflows/semver-check-increment.yml @@ -3,10 +3,7 @@ on: pull_request: branches: - main - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true + types: [ labeled, unlabeled, opened, reopened, synchronize ] jobs: version: diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f818441b..428ef36b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -3,10 +3,7 @@ on: pull_request: branches: - main - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true + types: [ opened, reopened, synchronize ] jobs: test: From d0b0075d7a5b3d9643047f8dd8ba4d012437d7aa Mon Sep 17 00:00:00 2001 From: Jeffrey Horton Date: Wed, 6 Nov 2024 18:37:52 +0000 Subject: [PATCH 5/6] [ASSB-1444] Update action triggers --- .github/workflows/semver-check-increment.yml | 5 +---- .github/workflows/test.yml | 5 +---- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/.github/workflows/semver-check-increment.yml b/.github/workflows/semver-check-increment.yml index ba0c6585..59728fd3 100644 --- a/.github/workflows/semver-check-increment.yml +++ b/.github/workflows/semver-check-increment.yml @@ -3,10 +3,7 @@ on: pull_request: branches: - main - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true + types: [ labeled, unlabeled, opened, reopened, synchronize ] jobs: version: diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f818441b..428ef36b 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -3,10 +3,7 @@ on: pull_request: branches: - main - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true + types: [ opened, reopened, synchronize ] jobs: test: From ffcd1030a0c52163c515a6f3e778f197a703a071 Mon Sep 17 00:00:00 2001 From: Jeffrey Horton Date: Wed, 6 Nov 2024 18:44:12 +0000 Subject: [PATCH 6/6] [ASSB-1444] remove semver action that unlinks test run when force pushing --- .github/workflows/semver-check-increment.yml | 12 ------------ 1 file changed, 12 deletions(-) delete mode 100644 .github/workflows/semver-check-increment.yml diff --git a/.github/workflows/semver-check-increment.yml b/.github/workflows/semver-check-increment.yml deleted file mode 100644 index 59728fd3..00000000 --- a/.github/workflows/semver-check-increment.yml +++ /dev/null @@ -1,12 +0,0 @@ -name: 'Increment Version - npm' -on: - pull_request: - branches: - - main - types: [ labeled, unlabeled, opened, reopened, synchronize ] - -jobs: - version: - uses: UKHomeOffice/sas-github-workflows/.github/workflows/semver-check-increment-npm.yml@v1 - with: - mainLineBranchName: main