Interacting with individual lines or hunks will be disabled while hiding whitespace. diff --git a/app/src/ui/diff/side-by-side-diff-row.tsx b/app/src/ui/diff/side-by-side-diff-row.tsx index 1223f7215c..2a3d75902c 100644 --- a/app/src/ui/diff/side-by-side-diff-row.tsx +++ b/app/src/ui/diff/side-by-side-diff-row.tsx @@ -363,6 +363,16 @@ export class SideBySideDiffRow extends React.Component< throw new Error(`Unexpected expansion type ${expansionType}`) } + /** + * This method returns the width of a line gutter in pixels. For unified diffs + * the gutter contains the line number of both before and after sides, whereas + * for side-by-side diffs the gutter contains the line number of only one side. + */ + private get lineGutterWidth() { + const { showSideBySideDiff, lineNumberWidth } = this.props + return showSideBySideDiff ? lineNumberWidth : lineNumberWidth * 2 + } + private renderHunkExpansionHandle( hunkIndex: number, expansionType: DiffHunkExpansionType @@ -372,7 +382,7 @@ export class SideBySideDiffRow extends React.Component<
{description}
} + {discoverabilityContent && ( +{discoverabilityContent}
+ )} +. dialog { + display: flex; + flex-direction: column; + overflow: unset; // These are the 24px versions of the alert and stop octicons // from oction v10.0.0 @@ -125,14 +129,28 @@ dialog { opacity: 1; } + &:not([open]) { + display: none; + } + // The dialog embeds a fieldset as the first child of the form element // in order to be able to disable all form elements and buttons in one // swoop. This resets all styles for that fieldset. - & > form > fieldset { - border: 0; - margin: 0; - padding: 0; - min-width: 0; + & > form { + min-height: 0; + height: 100%; + & > fieldset { + border: 0; + margin: 0; + padding: 0; + min-width: 0; + min-height: 0; + max-height: 100%; + height: 100%; + + display: flex; + flex-direction: column; + } } .dialog-header { diff --git a/app/styles/ui/_dropdown-select-button.scss b/app/styles/ui/_dropdown-select-button.scss index a4d25cec09..c720e05432 100644 --- a/app/styles/ui/_dropdown-select-button.scss +++ b/app/styles/ui/_dropdown-select-button.scss @@ -1,6 +1,10 @@ .dropdown-select-button { position: relative; + .dropdown-button-wrappers { + display: flex; + } + &.open-bottom { .invoke-button { border-bottom-left-radius: 0; @@ -34,19 +38,16 @@ } .invoke-button { - width: 88%; display: inline; border-bottom-right-radius: 0; border-top-right-radius: 0; margin-right: 0; - float: left; height: 30px; - // counter balances center for the 12% dropdown button - padding-left: 12% !important; + flex-grow: 1; } .dropdown-button { - width: 12%; + min-width: 30px; padding: var(--spacing-half); margin: 0; border-bottom-left-radius: 0; @@ -85,29 +86,50 @@ box-shadow: var(--base-box-shadow); width: 99.9%; - ul { - padding: 0; - margin: 0; + padding: 0; + margin: 0; - li { - list-style-type: none; - padding: var(--spacing) var(--spacing-double); - padding-left: var(--spacing-triple); - border-bottom: 1px solid var(--box-border-color); + :first-child.button-component { + border-top: 1px solid var(--box-border-color); + } + + .button-component { + padding: var(--spacing) var(--spacing-double); + padding-left: var(--spacing-triple); + border-bottom: 1px solid var(--box-border-color); + height: auto; + padding: var(--spacing) var(--spacing-double); + padding-left: var(--spacing-triple); + border-bottom: 1px solid var(--box-border-color); + text-align: inherit; + white-space: normal; + border-radius: 0; + line-height: 1.5; + margin: 0; + border-right: 0; + border-left: 0; + border-top: 0; + width: 100%; + + &:hover, + &:focus { + outline: none; + color: var(--box-selected-active-text-color); + background-color: var(--box-selected-active-background-color); .option-description { - color: var(--text-secondary-color); - font-size: var(--font-size-sm); - } - - .selected-option-indicator { - position: absolute; - left: var(--spacing); + color: var(--box-selected-active-text-color); } } - li:hover { - background-color: var(--box-selected-background-color); + .option-description { + color: var(--text-secondary-color); + font-size: var(--font-size-sm); + } + + .selected-option-indicator { + position: absolute; + left: var(--spacing); } } } diff --git a/app/styles/ui/_popover-dropdown.scss b/app/styles/ui/_popover-dropdown.scss new file mode 100644 index 0000000000..6b8b20dafb --- /dev/null +++ b/app/styles/ui/_popover-dropdown.scss @@ -0,0 +1,36 @@ +.popover-dropdown-component { + display: inline-flex; + + .button-content, + .popover-dropdown-button-label { + font-weight: var(--font-weight-semibold); + } + + .popover-dropdown-button-label { + color: var(--text-secondary-color); + margin: 0 var(--spacing-half); + } + + .popover-dropdown-popover { + position: absolute; + min-height: 200px; + width: 365px; + padding: 0; + margin-top: 25px; + + .popover-dropdown-header { + padding: var(--spacing); + font-weight: var(--font-weight-semibold); + display: flex; + border-bottom: var(--base-border); + + .close { + margin-right: 0; + } + } + + .popover-dropdown-content { + display: flex; + } + } +} diff --git a/app/styles/ui/_pull-request-files-changed.scss b/app/styles/ui/_pull-request-files-changed.scss new file mode 100644 index 0000000000..55d72dadbd --- /dev/null +++ b/app/styles/ui/_pull-request-files-changed.scss @@ -0,0 +1,29 @@ +.pull-request-files-changed { + display: flex; + flex-direction: column; + min-height: 0; + flex-grow: 1; + + border: var(--base-border); + border-radius: var(--border-radius); + + .files-changed-header { + padding: var(--spacing); + border-bottom: var(--base-border); + display: flex; + + .commits-displayed { + flex-grow: 1; + } + } + + .files-diff-viewer { + display: flex; + min-height: 0; + flex-grow: 1; + } + + .file-list { + border-right: var(--base-border); + } +} diff --git a/app/styles/ui/_pull-request-merge-status.scss b/app/styles/ui/_pull-request-merge-status.scss new file mode 100644 index 0000000000..f9d3377ae6 --- /dev/null +++ b/app/styles/ui/_pull-request-merge-status.scss @@ -0,0 +1,31 @@ +.pull-request-merge-status { + flex-grow: 1; + color: var(--text-secondary-color); + + .octicon { + vertical-align: text-bottom; + } + + strong { + font-weight: var(--font-weight-semibold); + } + + .pr-merge-status-loading { + strong { + color: var(--file-warning-color); + } + } + + .pr-merge-status-invalid, + .pr-merge-status-conflicts { + strong { + color: var(--status-error-color); + } + } + + .pr-merge-status-clean { + strong { + color: var(--status-success-color); + } + } +} diff --git a/app/styles/ui/_repository-list.scss b/app/styles/ui/_repository-list.scss index 044b1b8aa3..6adfa2d5b6 100644 --- a/app/styles/ui/_repository-list.scss +++ b/app/styles/ui/_repository-list.scss @@ -193,6 +193,12 @@ background: var(--list-item-selected-active-badge-background-color); color: var(--list-item-selected-active-badge-color); } + + .change-indicator-wrapper { + .octicon { + color: var(--text-color); + } + } } } diff --git a/app/styles/ui/_side-by-side-diff.scss b/app/styles/ui/_side-by-side-diff.scss index b16bcb85c2..ba805c7fe2 100644 --- a/app/styles/ui/_side-by-side-diff.scss +++ b/app/styles/ui/_side-by-side-diff.scss @@ -314,6 +314,8 @@ } &.unified-diff { + --line-gutter-right-border-width: 4px; + .row { .before, .after { @@ -323,12 +325,27 @@ } .hunk-handle { - left: 100px; + // `left` depends on the line number length at runtime + transform: translateX(calc(-50% + var(--line-gutter-right-border-width) / 2)); } - &.hunk-info .line-number { - background: var(--diff-hunk-gutter-background-color); - border-color: var(--diff-hunk-border-color); + &.hunk-info { + .line-number { + background: var(--diff-hunk-gutter-background-color); + border-color: var(--diff-hunk-border-color); + } + .hunk-expansion-handle { + background: var(--diff-hunk-gutter-background-color); + border-right-width: 1px; + border-right-style: solid; + border-color: var(--diff-hunk-gutter-background-color); + align-self: stretch; + align-items: center; + + &.selectable:hover { + border-color: var(--diff-hover-background-color); + } + } } .line-number { @@ -349,8 +366,13 @@ } } - &.editable .row .line-number { - border-right-width: 4px; + &.editable .row { + .line-number { + border-right-width: var(--line-gutter-right-border-width); + } + .hunk-expansion-handle { + border-right-width: var(--line-gutter-right-border-width); + } } } diff --git a/app/styles/ui/changes/_changes-interstitial.scss b/app/styles/ui/changes/_changes-interstitial.scss index b147fc15fc..d07cb1783c 100644 --- a/app/styles/ui/changes/_changes-interstitial.scss +++ b/app/styles/ui/changes/_changes-interstitial.scss @@ -45,6 +45,14 @@ max-width: 600px; } + .pull-request-action { + .dropdown-select-button { + .invoke-button { + min-width: 150px; + } + } + } + /** Lessen the padding at 1.5x zoom and above **/ @media screen and (max-width: 640px) { padding: var(--spacing-double); diff --git a/app/styles/ui/dialogs/_installing-update.scss b/app/styles/ui/dialogs/_installing-update.scss new file mode 100644 index 0000000000..07e424e165 --- /dev/null +++ b/app/styles/ui/dialogs/_installing-update.scss @@ -0,0 +1,7 @@ +#installing-update { + max-width: 400px; + + .updating-message { + align-items: center; + } +} diff --git a/app/styles/ui/dialogs/_open-pull-request.scss b/app/styles/ui/dialogs/_open-pull-request.scss index b981ddd470..7922f42237 100644 --- a/app/styles/ui/dialogs/_open-pull-request.scss +++ b/app/styles/ui/dialogs/_open-pull-request.scss @@ -1,4 +1,9 @@ .open-pull-request { + width: 100%; + height: 100%; + max-width: calc(100% - var(--spacing-double) * 4); + max-height: calc(100% - var(--spacing-double) * 4); + header.dialog-header { padding-bottom: var(--spacing); @@ -15,4 +20,35 @@ padding: var(--spacing-half); } } + + .open-pull-request-content { + padding: var(--spacing); + display: flex; + flex-direction: column; + min-height: 0; + flex-grow: 1; + } + + .open-pull-request-message { + height: 100%; + display: flex; + align-items: center; + text-align: center; + justify-content: center; + padding: var(--spacing-double); + } + + .dialog-footer { + flex-direction: row; + + .button-group { + .octicon { + margin-right: var(--spacing-half); + } + } + } + + .pull-request-merge-status { + flex-grow: 1; + } } diff --git a/app/styles/ui/history/_commit-summary.scss b/app/styles/ui/history/_commit-summary.scss index 0a025c2af2..5518f52ad2 100644 --- a/app/styles/ui/history/_commit-summary.scss +++ b/app/styles/ui/history/_commit-summary.scss @@ -175,7 +175,7 @@ vertical-align: bottom; // For some reason, `bottom` places the text in the middle } - .sha { + .selectable { user-select: text; } diff --git a/app/styles/ui/window/_tooltips.scss b/app/styles/ui/window/_tooltips.scss index 97282eda85..27f84b7439 100644 --- a/app/styles/ui/window/_tooltips.scss +++ b/app/styles/ui/window/_tooltips.scss @@ -11,6 +11,7 @@ body > .tooltip, max-width: 300px; word-wrap: break-word; + word-break: break-word; overflow-wrap: break-word; background-color: var(--tooltip-background-color); diff --git a/app/test/unit/git/diff-test.ts b/app/test/unit/git/diff-test.ts index 4ba2f5d8fd..8e1a2f198d 100644 --- a/app/test/unit/git/diff-test.ts +++ b/app/test/unit/git/diff-test.ts @@ -575,9 +575,38 @@ describe('git/diff', () => { 'feature-branch', 'irrelevantToTest' ) + + expect(changesetData).not.toBeNull() + if (changesetData === null) { + return + } + expect(changesetData.files).toHaveLength(1) expect(changesetData.files[0].path).toBe('feature.md') }) + + it('returns null for unrelated histories', async () => { + // create a second branch that's orphaned from our current branch + await GitProcess.exec( + ['checkout', '--orphan', 'orphaned-branch'], + repository.path + ) + + // add a commit to this new branch + await GitProcess.exec( + ['commit', '--allow-empty', '-m', `first commit on gh-pages`], + repository.path + ) + + const changesetData = await getBranchMergeBaseChangedFiles( + repository, + 'master', + 'feature-branch', + 'irrelevantToTest' + ) + + expect(changesetData).toBeNull() + }) }) describe('getBranchMergeBaseDiff', () => { diff --git a/app/test/unit/popup-manager-test.ts b/app/test/unit/popup-manager-test.ts new file mode 100644 index 0000000000..85eee5759f --- /dev/null +++ b/app/test/unit/popup-manager-test.ts @@ -0,0 +1,318 @@ +import { PopupManager } from '../../src/lib/popup-manager' +import { Account } from '../../src/models/account' +import { Popup, PopupType } from '../../src/models/popup' + +let mockId = 0 +jest.mock('../../src/lib/uuid', () => { + return { uuid: () => mockId++ } +}) + +describe('PopupManager', () => { + let popupManager = new PopupManager() + + beforeEach(() => { + popupManager = new PopupManager() + mockId = 0 + }) + + describe('currentPopup', () => { + it('returns null when no popups added', () => { + const currentPopup = popupManager.currentPopup + expect(currentPopup).toBeNull() + }) + + it('returns last added non-error popup', () => { + const popupAbout: Popup = { type: PopupType.About } + const popupSignIn: Popup = { type: PopupType.SignIn } + popupManager.addPopup(popupAbout) + popupManager.addPopup(popupSignIn) + + const currentPopup = popupManager.currentPopup + expect(currentPopup).not.toBeNull() + expect(currentPopup?.type).toBe(PopupType.SignIn) + }) + + it('returns last added error popup', () => { + const popupAbout: Popup = { type: PopupType.About } + const popupSignIn: Popup = { type: PopupType.SignIn } + popupManager.addPopup(popupAbout) + popupManager.addErrorPopup(new Error('an error')) + popupManager.addPopup(popupSignIn) + + const currentPopup = popupManager.currentPopup + expect(currentPopup).not.toBeNull() + expect(currentPopup?.type).toBe(PopupType.Error) + }) + }) + + describe('isAPopupOpen', () => { + it('returns false when no popups added', () => { + const isAPopupOpen = popupManager.isAPopupOpen + expect(isAPopupOpen).toBeFalse() + }) + + it('returns last added popup', () => { + const popupAbout: Popup = { type: PopupType.About } + popupManager.addPopup(popupAbout) + + const isAPopupOpen = popupManager.isAPopupOpen + expect(isAPopupOpen).toBeTrue() + }) + }) + + describe('getPopupsOfType', () => { + it('returns popups of a given type', () => { + const popupAbout: Popup = { type: PopupType.About } + const popupSignIn: Popup = { type: PopupType.SignIn } + popupManager.addPopup(popupAbout) + popupManager.addPopup(popupSignIn) + + const aboutPopups = popupManager.getPopupsOfType(PopupType.About) + expect(aboutPopups).toBeArrayOfSize(1) + expect(aboutPopups.at(0)?.type).toBe(PopupType.About) + }) + + it('returns empty array if none exist of given type', () => { + const popupAbout: Popup = { type: PopupType.About } + popupManager.addPopup(popupAbout) + + const signInPopups = popupManager.getPopupsOfType(PopupType.SignIn) + expect(signInPopups).toBeArrayOfSize(0) + }) + }) + + describe('areTherePopupsOfType', () => { + it('returns true if popup of type exists', () => { + const popupAbout: Popup = { type: PopupType.About } + popupManager.addPopup(popupAbout) + + const areThereAboutPopups = popupManager.areTherePopupsOfType( + PopupType.About + ) + expect(areThereAboutPopups).toBeTrue() + }) + + it('returns false if there are no popups of that type', () => { + const popupAbout: Popup = { type: PopupType.About } + popupManager.addPopup(popupAbout) + + const areThereSignInPopups = popupManager.areTherePopupsOfType( + PopupType.SignIn + ) + expect(areThereSignInPopups).toBeFalse() + }) + }) + + describe('addPopup', () => { + it('adds a popup to the stack', () => { + const popup: Popup = { type: PopupType.About } + popupManager.addPopup(popup) + + const popupsOfType = popupManager.getPopupsOfType(PopupType.About) + const currentPopup = popupManager.currentPopup + expect(popupsOfType).toBeArrayOfSize(1) + expect(currentPopup).not.toBeNull() + expect(currentPopup?.type).toBe(PopupType.About) + expect(currentPopup?.id).toBe(0) + }) + + it('does not add multiple popups of the same kind to the stack', () => { + const popup: Popup = { type: PopupType.About } + popupManager.addPopup(popup) + popupManager.addPopup(popup) + + const popupsOfType = popupManager.getPopupsOfType(PopupType.About) + expect(popupsOfType).toBeArrayOfSize(1) + }) + + it('adds multiple popups of different types', () => { + const popupAbout: Popup = { type: PopupType.About } + const popupSignIn: Popup = { type: PopupType.SignIn } + popupManager.addPopup(popupAbout) + popupManager.addPopup(popupSignIn) + + const aboutPopups = popupManager.getPopupsOfType(PopupType.About) + const signInPoups = popupManager.getPopupsOfType(PopupType.SignIn) + expect(aboutPopups).toBeArrayOfSize(1) + expect(signInPoups).toBeArrayOfSize(1) + + expect(aboutPopups.at(0)?.type).toBe(PopupType.About) + expect(signInPoups.at(0)?.type).toBe(PopupType.SignIn) + }) + + it('trims oldest popup when limit is reached', () => { + popupManager = new PopupManager(2) + const popupAbout: Popup = { type: PopupType.About } + const popupSignIn: Popup = { type: PopupType.SignIn } + const popupTermsAndConditions: Popup = { + type: PopupType.TermsAndConditions, + } + popupManager.addPopup(popupAbout) + popupManager.addPopup(popupSignIn) + popupManager.addPopup(popupTermsAndConditions) + + const aboutPopups = popupManager.getPopupsOfType(PopupType.About) + const signInPoups = popupManager.getPopupsOfType(PopupType.SignIn) + const termsAndConditionsPoups = popupManager.getPopupsOfType( + PopupType.TermsAndConditions + ) + expect(aboutPopups).toBeArrayOfSize(0) + expect(signInPoups).toBeArrayOfSize(1) + expect(termsAndConditionsPoups).toBeArrayOfSize(1) + + expect(signInPoups.at(0)?.type).toBe(PopupType.SignIn) + expect(termsAndConditionsPoups.at(0)?.type).toBe( + PopupType.TermsAndConditions + ) + }) + }) + + describe('addErrorPopup', () => { + it('adds a popup of type error to the stack', () => { + popupManager.addErrorPopup(new Error('an error')) + + const popupsOfType = popupManager.getPopupsOfType(PopupType.Error) + const currentPopup = popupManager.currentPopup + expect(popupsOfType).toBeArrayOfSize(1) + expect(currentPopup).not.toBeNull() + expect(currentPopup?.type).toBe(PopupType.Error) + expect(currentPopup?.id).toBe(0) + }) + + it('adds multiple popups of type error to the stack', () => { + popupManager.addErrorPopup(new Error('an error')) + popupManager.addErrorPopup(new Error('an error')) + + const popupsOfType = popupManager.getPopupsOfType(PopupType.Error) + expect(popupsOfType).toBeArrayOfSize(2) + }) + + it('trims oldest popup when limit is reached', () => { + const limit = 2 + popupManager = new PopupManager(limit) + popupManager.addErrorPopup(new Error('an error')) + popupManager.addErrorPopup(new Error('an error')) + popupManager.addErrorPopup(new Error('an error')) + popupManager.addErrorPopup(new Error('an error')) + + const errorPopups = popupManager.getPopupsOfType(PopupType.Error) + expect(errorPopups).toBeArrayOfSize(limit) + }) + }) + + describe('updatePopup', () => { + it('updates the given popup', () => { + const mockAccount = new Account('test', '', 'deadbeef', [], '', 1, '') + const popupTutorial: Popup = { + type: PopupType.CreateTutorialRepository, + account: mockAccount, + } + + const tutorialPopup = popupManager.addPopup(popupTutorial) + + // Just so update spreader notation will work + if (tutorialPopup.type !== PopupType.CreateTutorialRepository) { + return + } + + const updatedPopup: Popup = { + ...tutorialPopup, + progress: { + kind: 'generic', + value: 5, + }, + } + popupManager.updatePopup(updatedPopup) + + const result = popupManager.getPopupsOfType( + PopupType.CreateTutorialRepository + ) + expect(result).toBeArrayOfSize(1) + const resultingPopup = result.at(0) + // Would fail first expect if not + if (resultingPopup === undefined) { + return + } + + expect(resultingPopup.type).toBe(PopupType.CreateTutorialRepository) + if (resultingPopup.type !== PopupType.CreateTutorialRepository) { + return + } + + expect(resultingPopup.progress).toBeDefined() + expect(resultingPopup.progress?.kind).toBe('generic') + expect(resultingPopup.progress?.value).toBe(5) + }) + }) + + describe('removePopup', () => { + it('deletes popup when give a popup with an id', () => { + const popupAbout: Popup = popupManager.addPopup({ type: PopupType.About }) + popupManager.addPopup({ + type: PopupType.SignIn, + }) + + popupManager.removePopup(popupAbout) + + const aboutPopups = popupManager.getPopupsOfType(PopupType.About) + expect(aboutPopups).toBeArrayOfSize(0) + + const signInPopups = popupManager.getPopupsOfType(PopupType.SignIn) + expect(signInPopups).toBeArrayOfSize(1) + }) + + it('does not remove popups by type', () => { + popupManager.addPopup({ type: PopupType.About }) + popupManager.addPopup({ + type: PopupType.SignIn, + }) + + popupManager.removePopup({ type: PopupType.About }) + + const aboutPopups = popupManager.getPopupsOfType(PopupType.About) + expect(aboutPopups).toBeArrayOfSize(1) + + const signInPopups = popupManager.getPopupsOfType(PopupType.SignIn) + expect(signInPopups).toBeArrayOfSize(1) + }) + }) + + describe('removePopupByType', () => { + it('removes the popups of a given type', () => { + popupManager.addPopup({ type: PopupType.About }) + popupManager.addPopup({ + type: PopupType.SignIn, + }) + + popupManager.removePopupByType(PopupType.About) + + const aboutPopups = popupManager.getPopupsOfType(PopupType.About) + expect(aboutPopups).toBeArrayOfSize(0) + + const signInPopups = popupManager.getPopupsOfType(PopupType.SignIn) + expect(signInPopups).toBeArrayOfSize(1) + }) + }) + + describe('removePopupById', () => { + it('removes the popup by its id', () => { + const popupAbout: Popup = popupManager.addPopup({ type: PopupType.About }) + popupManager.addPopup({ + type: PopupType.SignIn, + }) + + expect(popupAbout.id).toBeDefined() + if (popupAbout.id === undefined) { + return + } + + popupManager.removePopupById(popupAbout.id) + + const aboutPopups = popupManager.getPopupsOfType(PopupType.About) + expect(aboutPopups).toBeArrayOfSize(0) + + const signInPopups = popupManager.getPopupsOfType(PopupType.SignIn) + expect(signInPopups).toBeArrayOfSize(1) + }) + }) +}) diff --git a/app/yarn.lock b/app/yarn.lock index 4458395bd4..cc5a1aa065 100644 --- a/app/yarn.lock +++ b/app/yarn.lock @@ -119,9 +119,9 @@ babel-runtime@^6.26.0: regenerator-runtime "^0.11.0" balanced-match@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" - integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== bl@^3.0.0: version "3.0.1" @@ -131,9 +131,9 @@ bl@^3.0.0: readable-stream "^3.0.1" brace-expansion@^1.1.7: - version "1.1.8" - resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292" - integrity sha1-wHshHHyVLsH479Uad+8NHTmQopI= + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== dependencies: balanced-match "^1.0.0" concat-map "0.0.1" @@ -243,7 +243,7 @@ compare-versions@^3.6.0: concat-map@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" - integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== console-control-strings@^1.0.0, console-control-strings@~1.1.0: version "1.1.0" @@ -854,9 +854,9 @@ mimic-response@^3.1.0: integrity sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ== minimatch@^3.0.4: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" - integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== dependencies: brace-expansion "^1.1.7" diff --git a/changelog.json b/changelog.json index 0efc6ecb4c..8ab4453b72 100644 --- a/changelog.json +++ b/changelog.json @@ -6,7 +6,53 @@ "[Fixed] Close 'Resolve conflicts before Rebase' dialog will not disable menu items - #13081. Thanks @angusdev!", "[Fixed] Fix commit shortcut (Ctrl/Cmd + Enter) while amending a commit - #15445" ], + "3.1.3-beta4": [ + "[Fixed] Hide window instead of hiding the app on macOS - #15511. Thanks @angusdev!", + "[Fixed] Only left mouse clicks invoke dragging in the commit list - #15313", + "[Fixed] Ensure selected list items stay selected when scrolling - #2957", + "[Fixed] Stick to one tooltip at a time in the repository list - #15583", + "[Fixed] Preview Pull Request opens when there is not a local default branch - #15704", + "[Fixed] Preview Pull Request suggested next action available on first app open without interaction - #15703", + "[Improved] Ability to copy tag names from the commit list - #15137. Thanks @Shivareddy-Aluri!", + "[Improved] Stacked popups remember their state when hidden due to another popup opening - #15668", + "[Improved] Create pull request from pull request preview opens to compare against the user's selected base branch - #15706", + "[Improved] On Preview Pull Request dialog, submit button closes the dialog - #15695" + ], + "3.1.3-beta3": [ + "[Fixed] Using the key command of 'Shift' + 'ArrowDown' in the commit list adds the next commit to the current selection - #15536", + "[Fixed] Notifications of Pull Request reviews are displayed for forked repositories - #15580", + "[Fixed] Notifications when checks of a Pull Request fail are displayed for forked repositories - #15422", + "[Improved] User can preview a Pull Request from the suggested next actions. - #15588", + "[Improved] The dropdown selection component is keyboard navigable - #15620", + "[Improved] 'Preview Pull Request' menu item availability is consistent with other menu items - #15590", + "[Improved] The diff view now highlights Arduino's `.ino` files as C++ source - #15555. Thanks @j-f1!", + "[Improved] Close repository list after creating or adding repositories - #15508. Thanks @angusdev!", + "[Improved] Always show an error message when an update fails - #15530", + "[Improved] Popups are stacked. Opening a popup will not discard an existing popup - #15496" + ], + "3.1.3-beta2": [ + "[Added] Enable menu option to Force-push branches that have diverged - #15211", + "[Added] Add menu option to Fetch the current repository at any time - #7805", + "[Added] Support VSCodium as an external editor - #15348. Thanks @daniel-ciaglia!", + "[Fixed] Prevent closing the GitHub Desktop while it's being updated - #7055, #5197", + "[Fixed] Notifications are shown only when they are relevant to the current repository - #15487", + "[Fixed] Disable reorder, squashing, cherry-picking while an action of this type is in progress. - #15468", + "[Fixed] Fix repository change indicator not visible if selected and in focus - #7651. Thanks @angusdev!", + "[Fixed] Close 'Resolve conflicts before Rebase' dialog will not disable menu items - #13081. Thanks @angusdev!", + "[Fixed] Tooltips are positioned properly if mouse is not moved - #13636. Thanks @angusdev!", + "[Fixed] Fix tooltips of long commit author emails not breaking properly - #15424. Thanks @angusdev!", + "[Fixed] Clone repository progress bar no longer hidden by repository list - #11953. Thanks @angusdev!", + "[Fixed] Fix commit shortcut (Ctrl/Cmd + Enter) while amending a commit - #15445", + "[Improved] Pull request preview dialog width and height is responsive - #15500" + ], + "3.1.3-beta1": ["[Improved] Upgrade embedded Git to 2.35.5"], "3.1.2": ["[Improved] Upgrade embedded Git to 2.35.5"], + "3.1.2-beta1": [ + "[Added] You can preview the changes a pull request from your current branch would make - #11517", + "[Fixed] App correctly remembers undo commit prompt setting - #15408", + "[Improved] Add support for zooming out at the 67%, 75%, 80% and 90% zoom levels - #15401. Thanks @sathvikrijo!", + "[Improved] Add option to disable discard stash confirmation - #15379. Thanks @tsvetilian-ty!" + ], "3.1.1": [ "[Fixed] App correctly remembers undo commit prompt setting - #15408" ], diff --git a/docs/contributing/setup.md b/docs/contributing/setup.md index 2b1f3d7020..05a6819e98 100644 --- a/docs/contributing/setup.md +++ b/docs/contributing/setup.md @@ -19,13 +19,13 @@ versions look similar to the below output: ```shellsession $ node -v -v10.15.4 +v16.13.0 $ yarn -v -1.15.2 +1.21.1 $ python --version -Python 2.7.15 +Python 3.9.x ``` There are also [additional resources](tooling.md) to configure your favorite diff --git a/docs/integrations/gitlab.md b/docs/integrations/gitlab.md index 0cba8d3d42..04103e9178 100644 --- a/docs/integrations/gitlab.md +++ b/docs/integrations/gitlab.md @@ -4,11 +4,11 @@ To authenticate against GitLab repositories you will need to create a personal access token. -1. Go to your GitLab account and select **Settings** in the user profile dropdown. +1. Go to your GitLab account and select **Edit Profile** in the user profile dropdown. -![](https://user-images.githubusercontent.com/721500/54834720-1f468a00-4c97-11e9-9a0f-4c92224064d0.png) +![](https://user-images.githubusercontent.com/721500/206245864-025fedb1-88e5-4c58-84dd-0d4b24eff76d.png) -2. Select **Access tokens** +2. In the left sidebar, select **Access tokens** 3. Under **Add a personal access token** choose a name and set an expiration date for your token. diff --git a/docs/technical/editor-integration.md b/docs/technical/editor-integration.md index 095c4cbc08..b0a0480d68 100644 --- a/docs/technical/editor-integration.md +++ b/docs/technical/editor-integration.md @@ -307,6 +307,9 @@ These editors are currently supported: - [Neovim](https://neovim.io/) - [Code](https://github.com/elementary/code) - [Lite XL](https://lite-xl.com/) + - [JetBrains PHPStorm](https://www.jetbrains.com/phpstorm/) + - [JetBrains WebStorm](https://www.jetbrains.com/webstorm/) + - [Emacs](https://www.gnu.org/software/emacs/) These are defined in a list at the top of the file: diff --git a/package.json b/package.json index 1212703dc9..7c345c3e80 100644 --- a/package.json +++ b/package.json @@ -73,7 +73,7 @@ "eslint-plugin-json": "^2.1.1", "eslint-plugin-prettier": "^3.1.4", "eslint-plugin-react": "7.26.1", - "express": "^4.15.0", + "express": "^4.17.3", "fake-indexeddb": "^2.0.4", "file-loader": "^6.2.0", "front-matter": "^2.3.0", diff --git a/script/package.ts b/script/package.ts index 7f8566adb2..8cfd8f03c7 100644 --- a/script/package.ts +++ b/script/package.ts @@ -102,7 +102,11 @@ function packageWindows() { } if (shouldMakeDelta()) { - options.remoteReleases = getUpdatesURL() + const url = new URL(getUpdatesURL()) + // Make sure Squirrel.Windows isn't affected by partially or completely + // disabled releases. + url.searchParams.set('bypassStaggeredRelease', '1') + options.remoteReleases = url.toString() } if (isAppveyor() || isGitHubActions()) { diff --git a/yarn.lock b/yarn.lock index 8ee974004b..fa2dcf36f3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1811,13 +1811,13 @@ abab@^2.0.3, abab@^2.0.5: resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== -accepts@~1.3.7: - version "1.3.7" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" - integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== +accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== dependencies: - mime-types "~2.1.24" - negotiator "0.6.2" + mime-types "~2.1.34" + negotiator "0.6.3" acorn-globals@^6.0.0: version "6.0.0" @@ -2445,11 +2445,6 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" -big.js@^3.1.3: - version "3.2.0" - resolved "https://registry.yarnpkg.com/big.js/-/big.js-3.2.0.tgz#a5fc298b81b9e0dca2e458824784b65c52ba588e" - integrity sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q== - big.js@^5.2.2: version "5.2.2" resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" @@ -2477,21 +2472,21 @@ bluebird@^3.5.5: resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== -body-parser@1.19.0: - version "1.19.0" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" - integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== +body-parser@1.19.2: + version "1.19.2" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.2.tgz#4714ccd9c157d44797b8b5607d72c0b89952f26e" + integrity sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw== dependencies: - bytes "3.1.0" + bytes "3.1.2" content-type "~1.0.4" debug "2.6.9" depd "~1.1.2" - http-errors "1.7.2" + http-errors "1.8.1" iconv-lite "0.4.24" on-finished "~2.3.0" - qs "6.7.0" - raw-body "2.4.0" - type-is "~1.6.17" + qs "6.9.7" + raw-body "2.4.3" + type-is "~1.6.18" boolbase@^1.0.0: version "1.0.0" @@ -2648,10 +2643,10 @@ builtin-modules@^1.0.0: resolved "https://registry.yarnpkg.com/builtin-modules/-/builtin-modules-1.1.1.tgz#270f076c5a72c02f5b65a47df94c5fe3a278892f" integrity sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8= -bytes@3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" - integrity sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg== +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== cache-base@^1.0.1: version "1.0.1" @@ -3019,12 +3014,12 @@ console-polyfill@^0.3.0: resolved "https://registry.yarnpkg.com/console-polyfill/-/console-polyfill-0.3.0.tgz#84900902a18c47a5eba932be75fa44d23e8af861" integrity sha512-w+JSDZS7XML43Xnwo2x5O5vxB0ID7T5BdqDtyqT6uiCAX2kZAgcWxNaGqT97tZfSHzfOcvrfsDAodKcJ3UvnXQ== -content-disposition@0.5.3: - version "0.5.3" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" - integrity sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g== +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== dependencies: - safe-buffer "5.1.2" + safe-buffer "5.2.1" content-type@~1.0.4: version "1.0.4" @@ -3048,10 +3043,10 @@ cookie-signature@1.0.6: resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= -cookie@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" - integrity sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg== +cookie@0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" + integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== copy-descriptor@^0.1.0: version "0.1.1" @@ -3210,55 +3205,20 @@ debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.8, debug@^2.6.9: dependencies: ms "2.0.0" -debug@4, debug@^4.3.4: +debug@4, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: version "4.3.4" resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== dependencies: ms "2.1.2" -debug@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" - integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== - dependencies: - ms "2.0.0" - -debug@^3.2.7: +debug@^3.1.0, debug@^3.2.7: version "3.2.7" resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== dependencies: ms "^2.1.1" -debug@^4.0.1: - version "4.1.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.0.tgz#373687bffa678b38b1cd91f861b63850035ddc87" - integrity sha512-heNPJUJIqC+xB6ayLAMHaIrmN9HKa7aQO8MGqKpvCA+uJYVcvR6l5kgdrhRuwPFHU7P5/A1w0BjByPHwpfTDKg== - dependencies: - ms "^2.1.1" - -debug@^4.1.0, debug@^4.1.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" - integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== - dependencies: - ms "2.1.2" - -debug@^4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.2.0.tgz#7f150f93920e94c58f5574c2fd01a3110effe7f1" - integrity sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg== - dependencies: - ms "2.1.2" - -debug@^4.3.2, debug@^4.3.3: - version "4.3.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" - integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== - dependencies: - ms "2.1.2" - debuglog@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/debuglog/-/debuglog-1.0.1.tgz#aa24ffb9ac3df9a2351837cfb2d279360cd78492" @@ -3275,9 +3235,9 @@ decimal.js@^10.2.1: integrity sha512-V0pfhfr8suzyPGOx3nmq4aHqabehUZn6Ch9kyFpV79TGDTWFmHqUqXdabR7QHqxzrYolF4+tVmJhUG4OURg5dQ== decode-uri-component@^0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" - integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + version "0.2.2" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9" + integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ== decompress-response@^3.3.0: version "3.3.0" @@ -3677,11 +3637,6 @@ emoji-regex@^9.2.2: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72" integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg== -emojis-list@^2.0.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-2.1.0.tgz#4daa4d9db00f9819880c79fa457ae5b09a1fd389" - integrity sha1-TapNnbAPmBmIDHn6RXrlsJof04k= - emojis-list@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" @@ -4346,17 +4301,17 @@ expect@^26.6.2: jest-message-util "^26.6.2" jest-regex-util "^26.0.0" -express@^4.15.0: - version "4.17.0" - resolved "https://registry.yarnpkg.com/express/-/express-4.17.0.tgz#288af62228a73f4c8ea2990ba3b791bb87cd4438" - integrity sha512-1Z7/t3Z5ZnBG252gKUPyItc4xdeaA0X934ca2ewckAsVsw9EG71i++ZHZPYnus8g/s5Bty8IMpSVEuRkmwwPRQ== +express@^4.17.3: + version "4.17.3" + resolved "https://registry.yarnpkg.com/express/-/express-4.17.3.tgz#f6c7302194a4fb54271b73a1fe7a06478c8f85a1" + integrity sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg== dependencies: - accepts "~1.3.7" + accepts "~1.3.8" array-flatten "1.1.1" - body-parser "1.19.0" - content-disposition "0.5.3" + body-parser "1.19.2" + content-disposition "0.5.4" content-type "~1.0.4" - cookie "0.4.0" + cookie "0.4.2" cookie-signature "1.0.6" debug "2.6.9" depd "~1.1.2" @@ -4370,13 +4325,13 @@ express@^4.15.0: on-finished "~2.3.0" parseurl "~1.3.3" path-to-regexp "0.1.7" - proxy-addr "~2.0.5" - qs "6.7.0" + proxy-addr "~2.0.7" + qs "6.9.7" range-parser "~1.2.1" - safe-buffer "5.1.2" - send "0.17.1" - serve-static "1.14.1" - setprototypeof "1.1.1" + safe-buffer "5.2.1" + send "0.17.2" + serve-static "1.14.2" + setprototypeof "1.2.0" statuses "~1.5.0" type-is "~1.6.18" utils-merge "1.0.1" @@ -4634,10 +4589,10 @@ form-data@~2.3.2: combined-stream "1.0.6" mime-types "^2.1.12" -forwarded@~0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" - integrity sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ= +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== fragment-cache@^0.2.1: version "0.2.1" @@ -5227,16 +5182,16 @@ http-cache-semantics@^4.0.0: resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz#49e91c5cbf36c9b94bcfcd71c23d5249ec74e390" integrity sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ== -http-errors@1.7.2, http-errors@~1.7.2: - version "1.7.2" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" - integrity sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg== +http-errors@1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.1.tgz#7c3f28577cbc8a207388455dbd62295ed07bd68c" + integrity sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g== dependencies: depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.1" + inherits "2.0.4" + setprototypeof "1.2.0" statuses ">= 1.5.0 < 2" - toidentifier "1.0.0" + toidentifier "1.0.1" http-proxy-agent@^4.0.1: version "4.0.1" @@ -5342,16 +5297,11 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -inherits@2.0.3: - version "2.0.3" - resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" - integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= - ini@^1.3.4: version "1.3.8" resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" @@ -5381,10 +5331,10 @@ interpret@^1.0.1: resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.0.4.tgz#820cdd588b868ffb191a809506d6c9c8f212b1b0" integrity sha1-ggzdWIuGj/sZGoCVBtbJyPISsbA= -ipaddr.js@1.9.0: - version "1.9.0" - resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.0.tgz#37df74e430a0e47550fe54a2defe30d8acd95f65" - integrity sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA== +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== is-accessor-descriptor@^0.1.6: version "0.1.6" @@ -6459,15 +6409,10 @@ json5@2.x, json5@^2.1.2: dependencies: minimist "^1.2.5" -json5@^0.5.0: - version "0.5.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-0.5.1.tgz#1eade7acc012034ad84e2396767ead9fa5495821" - integrity sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE= - json5@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" - integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + version "1.0.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== dependencies: minimist "^1.2.0" @@ -6691,13 +6636,13 @@ loader-runner@^4.2.0: integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw== loader-utils@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.1.0.tgz#c98aef488bcceda2ffb5e2de646d6a754429f5cd" - integrity sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0= + version "1.4.2" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.2.tgz#29a957f3a63973883eb684f10ffd3d151fec01a3" + integrity sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg== dependencies: - big.js "^3.1.3" - emojis-list "^2.0.0" - json5 "^0.5.0" + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^1.0.1" loader-utils@^2.0.0: version "2.0.0" @@ -7031,7 +6976,7 @@ mime-db@~1.36.0: resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.36.0.tgz#5020478db3c7fe93aad7bbcc4dcf869c43363397" integrity sha512-L+xvyD9MkoYMXb1jAmzI/lWYAxAMCPvIBSWur0PZ5nOf5euahRLVqH//FKW9mWp2lkqUgYiXPgkzfMUFi4zVDw== -mime-types@^2.1.12: +mime-types@^2.1.12, mime-types@~2.1.34: version "2.1.35" resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== @@ -7112,20 +7057,10 @@ minimist@0.0.8: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= -minimist@^1.1.1, minimist@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" - integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= - -minimist@^1.2.5: - version "1.2.5" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" - integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== - -minimist@^1.2.6: - version "1.2.6" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" - integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== +minimist@^1.1.1, minimist@^1.2.0, minimist@^1.2.5, minimist@^1.2.6: + version "1.2.7" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.7.tgz#daa1c4d91f507390437c6a8bc01078e7000c4d18" + integrity sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g== mixin-deep@^1.2.0: version "1.2.0" @@ -7164,17 +7099,12 @@ ms@2.0.0: resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= -ms@2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" - integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== - ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== -ms@^2.1.1: +ms@2.1.3, ms@^2.1.1: version "2.1.3" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== @@ -7207,10 +7137,10 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -negotiator@0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" - integrity sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw== +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== neo-async@^2.6.2: version "2.6.2" @@ -7982,13 +7912,13 @@ proto-list@~1.2.1: resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= -proxy-addr@~2.0.5: - version "2.0.5" - resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34" - integrity sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ== +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== dependencies: - forwarded "~0.1.2" - ipaddr.js "1.9.0" + forwarded "0.2.0" + ipaddr.js "1.9.1" prr@~0.0.0: version "0.0.0" @@ -8030,15 +7960,15 @@ pupa@^2.0.1: dependencies: escape-goat "^2.0.0" -qs@6.7.0: - version "6.7.0" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" - integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== +qs@6.9.7: + version "6.9.7" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.9.7.tgz#4610846871485e1e048f44ae3b94033f0e675afe" + integrity sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw== qs@~6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + version "6.5.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" + integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== querystring@^0.2.0: version "0.2.0" @@ -8069,13 +7999,13 @@ range-parser@^1.2.1, range-parser@~1.2.1: resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -raw-body@2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" - integrity sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q== +raw-body@2.4.3: + version "2.4.3" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.3.tgz#8f80305d11c2a0a545c2d9d89d7a0286fcead43c" + integrity sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g== dependencies: - bytes "3.1.0" - http-errors "1.7.2" + bytes "3.1.2" + http-errors "1.8.1" iconv-lite "0.4.24" unpipe "1.0.0" @@ -8531,21 +8461,16 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -safe-buffer@5.1.2, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: - version "5.1.2" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" - integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== - -safe-buffer@^5.0.1, safe-buffer@^5.1.0: - version "5.1.1" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853" - integrity sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg== - -safe-buffer@~5.2.0: +safe-buffer@5.2.1, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@~5.2.0: version "5.2.1" resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + safe-regex@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" @@ -8686,10 +8611,10 @@ semver@^7.3.7: dependencies: lru-cache "^6.0.0" -send@0.17.1: - version "0.17.1" - resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" - integrity sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg== +send@0.17.2: + version "0.17.2" + resolved "https://registry.yarnpkg.com/send/-/send-0.17.2.tgz#926622f76601c41808012c8bf1688fe3906f7820" + integrity sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww== dependencies: debug "2.6.9" depd "~1.1.2" @@ -8698,9 +8623,9 @@ send@0.17.1: escape-html "~1.0.3" etag "~1.8.1" fresh "0.5.2" - http-errors "~1.7.2" + http-errors "1.8.1" mime "1.6.0" - ms "2.1.1" + ms "2.1.3" on-finished "~2.3.0" range-parser "~1.2.1" statuses "~1.5.0" @@ -8719,15 +8644,15 @@ serialize-javascript@^6.0.0: dependencies: randombytes "^2.1.0" -serve-static@1.14.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" - integrity sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg== +serve-static@1.14.2: + version "1.14.2" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.2.tgz#722d6294b1d62626d41b43a013ece4598d292bfa" + integrity sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ== dependencies: encodeurl "~1.0.2" escape-html "~1.0.3" parseurl "~1.3.3" - send "0.17.1" + send "0.17.2" set-blocking@^2.0.0: version "2.0.0" @@ -8771,10 +8696,10 @@ setimmediate@^1.0.5: resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= -setprototypeof@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" - integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== shallow-clone@^3.0.0: version "3.0.1" @@ -9487,10 +9412,10 @@ to-space-case@^1.0.0: dependencies: to-no-case "^1.0.0" -toidentifier@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.0.tgz#7e1be3470f1e77948bc43d94a3c8f4d7752ba553" - integrity sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw== +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== totalist@^1.0.0: version "1.1.0" @@ -9681,7 +9606,7 @@ type-fest@^0.8.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== -type-is@~1.6.17, type-is@~1.6.18: +type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==