From 53bcd6a2c929106b13c773657d5f12a1244687df Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Thu, 16 Jun 2022 14:03:15 -0700 Subject: [PATCH 001/121] Bugfix for #812: git-plumbing.resolveOid renamed to resolveEntry and expanded to recursively search tree entries for matching path --- src/containers/git-plumbing.ts | 37 ++++++++++++++++++++++++---------- 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/src/containers/git-plumbing.ts b/src/containers/git-plumbing.ts index 1b41f8cfa..85c25ad86 100644 --- a/src/containers/git-plumbing.ts +++ b/src/containers/git-plumbing.ts @@ -135,23 +135,38 @@ export const resolveRef = async ({ dir, gitdir = path.join(dir.toString(), '.git } /** - * Resolve a ref to its SHA-1 object id for a specific filepath contained within a git branch. The response represents an oid that - * can be provided directly to `resolveRef` in order to obtain a blob string containing the latest version on a particular branch - * (i.e. for determining whether the file has diverged from the latest version in git). + * Resolve a filepath ref to a simplified `TreeEntry` representation containing the SHA-1 object id for a specific filepath within + * a git branch. The response includes an oid that can be provided directly to `resolveRef` in order to obtain a blob string containing + * the latest version on a particular branch (i.e. for determining whether the file has diverged from the latest version in git). * @param filepath The relative or absolute path to resolve. * @param branch The branch to reference for resolving the indicated filepath. + * @param cache A cache object for storing intermediate results and re-using them between commands. See: https://isomorphic-git.org/docs/en/cache * @returns A Promise object containing the SHA-1 hash associated with the filepath in the latest commit on the indicated branch. */ -export const resolveOid = async (filepath: fs.PathLike, branch: string): Promise => { +// eslint-disable-next-line @typescript-eslint/no-explicit-any +export const resolveEntry = async (filepath: fs.PathLike, branch: string, cache?: any): Promise => { const root = await getRoot(filepath); const { dir } = await getWorktreePaths(filepath); if (!root || !dir) return undefined; // not under version control - const relativePath = path.relative(root.toString(), filepath.toString()); const commit = await resolveRef({ dir: dir, ref: branch }); - const tree = (await isogit.readCommit({ fs: fs, dir: dir.toString(), oid: commit })).commit.tree; - const entry = (await isogit.readTree({ fs: fs, dir: dir.toString(), oid: tree })).tree.find(entry => entry.path === relativePath); - return entry ? entry.oid : undefined; + const tree = (await isogit.readCommit({ fs: fs, dir: dir.toString(), oid: commit, cache })).commit.tree; + + const relativePath = path.relative(root.toString(), filepath.toString()); + const entry = await recurseTrees(relativePath, dir, tree, cache); + return entry; +} + +// eslint-disable-next-line @typescript-eslint/no-explicit-any +const recurseTrees = async (relativePath: fs.PathLike, dir: fs.PathLike, tree: string, cache?: any): Promise => { + const pathSegments = relativePath.toString().split(/[\\/]/); + const trees = (await isogit.readTree({ fs: fs, dir: dir.toString(), oid: tree, cache })).tree; + const entry = trees.find(entry => entry.path === pathSegments[0]); + if (entry && entry.type === 'tree' && pathSegments.length > 1) { + pathSegments.shift(); + return await recurseTrees(path.join(...pathSegments), dir, entry.oid, cache); + } + return entry; } /** @@ -414,8 +429,8 @@ export const discardChanges = async (filepath: fs.PathLike): Promise Date: Thu, 16 Jun 2022 14:04:39 -0700 Subject: [PATCH 002/121] Bugfix for #812: git-worktree.statusMatrix skips directories and non-existent files, and uses cache for performance improvements --- src/containers/git-worktree.ts | 45 +++++++++++++++++++++++++--------- 1 file changed, 34 insertions(+), 11 deletions(-) diff --git a/src/containers/git-worktree.ts b/src/containers/git-worktree.ts index 66d1a509c..85724d6b1 100644 --- a/src/containers/git-worktree.ts +++ b/src/containers/git-worktree.ts @@ -7,7 +7,7 @@ import isHash from 'validator/lib/isHash'; import { isDefined, removeUndefinedProperties } from './utils'; import * as io from './io'; import { checkout, clone, currentBranch, deleteBranch, getStatus } from './git-porcelain'; -import { getIgnore, resolveOid, resolveRef } from './git-plumbing'; +import { getIgnore, resolveEntry, resolveRef } from './git-plumbing'; import { parse } from './git-index'; import { compareStats } from './io-stats'; import { getWorktreePaths } from './git-path'; @@ -66,7 +66,8 @@ const createWorktree = async (root: fs.PathLike, bare = false): Promise => { const { dir, worktreeDir, worktreeLink } = await getWorktreePaths(filepath); - if (!worktreeDir || !worktreeLink) return undefined; // filepath is not part of a linked worktree, must use `git-plumbing.matrixEntry` for main worktree + // if not part of a linked worktree, then `git-plumbing.matrixEntry` must be used for main worktree files + if (!worktreeDir || !worktreeLink) return undefined; if (!dir) return undefined; // not under version control const branch = await currentBranch({ dir: worktreeDir }); @@ -83,25 +84,47 @@ export const statusMatrix = async (filepath: fs.PathLike): Promise<[string, 0 | const indexBuffer = await io.readFileAsync(path.join(worktreeLink.toString(), 'index')); const index = parse(indexBuffer); + // eslint-disable-next-line @typescript-eslint/no-explicit-any, prefer-const + let cache: any = {}; + // recursively walk the tree to aggregate the status of multiple files at once const result = await isogit.walk({ fs: fs, dir: worktreeDir.toString(), gitdir: worktreeLink.toString(), trees: [isogit.TREE({ ref: branch }), isogit.WORKDIR(), isogit.STAGE()], + cache: cache, map: async (filename: string, entries: (isogit.WalkerEntry | null)[]) => { if (!entries || filename === '.' || ignoreWorktree.ignores(filename)) return; + const filepath = path.join(worktreeDir.toString(), filename); + + // determine oid for head tree + const head = await resolveEntry(path.join(worktreeDir.toString(), filename), branch, cache); + const headOid = head ? head.oid : undefined; const [workdir, stage] = entries.slice(1, 3); - // determine oid for head tree - const head = await resolveOid(path.join(worktreeDir.toString(), filename), branch); + const headType = head && head.type; + const [workdirType, stageType] = await Promise.all([ + workdir && workdir.type(), + stage && stage.type() + ]); + const isBlob = [headType, workdirType, stageType].includes('blob'); + + // bail on directories unless the file is also a blob in another tree + if ((headType === 'tree') && !isBlob) return; + if (headType === 'commit') return null; + + if ((workdirType === 'tree' || workdirType === 'special') && !isBlob) return; + + if (stageType === 'commit') return null; + if ((stageType === 'tree' || stageType === 'special') && !isBlob) return; // determine oid for working directory tree let workdirOid; - if (!head && workdir && !stage) { + if (headType !== 'blob' && workdirType === 'blob' && stageType !== 'blob') { workdirOid = '42'; - } else if (workdir) { - const content = await io.readFileAsync(path.join(worktreeDir.toString(), filename), { encoding: 'utf-8' }); + } else if (workdirType === 'blob') { + const content = await io.readFileAsync(filepath, { encoding: 'utf-8' }); const hash = (await isogit.hashBlob({ object: content })); workdirOid = hash.oid; } @@ -110,7 +133,7 @@ export const statusMatrix = async (filepath: fs.PathLike): Promise<[string, 0 | const indexEntry = index.entries.find(entry => entry.filePath === filename); const stageOid = indexEntry ? indexEntry.objectId.slice(2) : undefined; - const entry = [undefined, head, workdirOid, stageOid]; + const entry = [undefined, headOid, workdirOid, stageOid]; const result = entry.map(value => entry.indexOf(value)); result.shift(); @@ -146,9 +169,9 @@ export const status = async (filepath: fs.PathLike): Promise Date: Thu, 16 Jun 2022 14:06:31 -0700 Subject: [PATCH 003/121] Bugfix for #812: branches.checkoutBranch allows listenerMiddleware to handle calls to updateVersionedMetafile to prevent duplicated calls --- src/store/thunks/branches.ts | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/store/thunks/branches.ts b/src/store/thunks/branches.ts index 6e99917ff..3c121aacb 100644 --- a/src/store/thunks/branches.ts +++ b/src/store/thunks/branches.ts @@ -10,7 +10,7 @@ import { AppThunkAPI } from '../hooks'; import branchSelectors from '../selectors/branches'; import { Branch, branchAdded, branchUpdated } from '../slices/branches'; import { DirectoryMetafile, FilebasedMetafile, isFilebasedMetafile, isVersionedMetafile, Metafile, metafileUpdated } from '../slices/metafiles'; -import { createMetafile, fetchParentMetafile, updatedVersionedMetafile } from './metafiles'; +import { createMetafile, fetchParentMetafile } from './metafiles'; import metafileSelectors from '../selectors/metafiles'; import { UUID } from '../types'; import { resolveWorktree } from '../../containers/git-worktree'; @@ -150,11 +150,8 @@ export const checkoutBranch = createAsyncThunk flag !== 'checkout') })).payload; - if (isFilebasedMetafile(updated)) { - updated = await thunkAPI.dispatch(updatedVersionedMetafile(updated)).unwrap(); - updated = thunkAPI.dispatch(metafileUpdated({ ...updated, loading: metafile.loading.filter(flag => flag !== 'checkout') })).payload; - } if (input.progress) console.log('checkout complete...'); return updated; } From 87e930f69f035d26762d40bef7d806764efa6cae Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Thu, 16 Jun 2022 14:07:05 -0700 Subject: [PATCH 004/121] Bugfix for #812: BranchList checkout uses try/catch block for graceful error handling when checkout fails --- src/components/BranchList/BranchList.tsx | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/components/BranchList/BranchList.tsx b/src/components/BranchList/BranchList.tsx index e30fe27f5..a6c6d3990 100644 --- a/src/components/BranchList/BranchList.tsx +++ b/src/components/BranchList/BranchList.tsx @@ -45,14 +45,18 @@ const BranchList = (props: { cardId: UUID; repoId: UUID; overwrite?: boolean; }) console.log(`checkout: ${newBranch}`); if (card && metafile) { const overwrite = removeUndefinedProperties({ overwrite: props.overwrite }); - const updated = await dispatch(checkoutBranch({ metafile: metafile.id, branchRef: newBranch, ...overwrite })).unwrap(); - if (updated) setSelected(newBranch); - if (updated) dispatch(cardUpdated({ - ...card, - name: updated.name, - modified: updated.modified, - metafile: updated.id - })); + try { + const updated = await dispatch(checkoutBranch({ metafile: metafile.id, branchRef: newBranch, ...overwrite })).unwrap(); + if (updated) setSelected(newBranch); + if (updated) dispatch(cardUpdated({ + ...card, + name: updated.name, + modified: updated.modified, + metafile: updated.id + })); + } catch (error) { + console.error(`Checkout failed: `, error); + } } }; From 8b5cd8c96c145f6d504a0ee1f7729263f7a3303f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Jun 2022 08:23:39 -0700 Subject: [PATCH 005/121] Bump typescript from 4.7.3 to 4.7.4 (#815) Bumps [typescript](https://github.com/Microsoft/TypeScript) from 4.7.3 to 4.7.4. - [Release notes](https://github.com/Microsoft/TypeScript/releases) - [Commits](https://github.com/Microsoft/TypeScript/compare/v4.7.3...v4.7.4) --- updated-dependencies: - dependency-name: typescript dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 15 +++++---------- 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index 6367224ef..94667bff3 100644 --- a/package.json +++ b/package.json @@ -92,7 +92,7 @@ "style-loader": "^3.3.1", "ts-jest": "^27.1.4", "ts-loader": "^9.3.0", - "typescript": "^4.7.3", + "typescript": "^4.7.4", "valid-url": "^1.0.9", "validator": "^13.7.0", "webpack": "^5.73.0" diff --git a/yarn.lock b/yarn.lock index 6a3903e6e..0737fc5e1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6895,12 +6895,7 @@ minimatch@^3.0.4, minimatch@^3.1.2: dependencies: brace-expansion "^1.1.7" -minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5: - version "1.2.6" - resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44" - integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q== - -minimist@^1.2.6: +minimist@^1.1.0, minimist@^1.1.1, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5, 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== @@ -9463,10 +9458,10 @@ typedarray@^0.0.6: resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= -typescript@^4.7.3: - version "4.7.3" - resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.3.tgz#8364b502d5257b540f9de4c40be84c98e23a129d" - integrity sha512-WOkT3XYvrpXx4vMMqlD+8R8R37fZkjyLGlxavMc4iB8lrl8L0DeTcHbYgw/v0N/z9wAFsgBhcsF0ruoySS22mA== +typescript@^4.7.4: + version "4.7.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.7.4.tgz#1a88596d1cf47d59507a1bcdfb5b9dfe4d488235" + integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ== unbox-primitive@^1.0.1: version "1.0.1" From 4450bb7bb2c16615a973de27fa3a79762db164d5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Jun 2022 08:28:36 -0700 Subject: [PATCH 006/121] Bump @typescript-eslint/parser from 5.27.1 to 5.28.0 (#817) Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.27.1 to 5.28.0. - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.28.0/packages/parser) --- updated-dependencies: - dependency-name: "@typescript-eslint/parser" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Nelson --- package.json | 2 +- yarn.lock | 50 ++++++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 43 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index 94667bff3..3c6b0e116 100644 --- a/package.json +++ b/package.json @@ -67,7 +67,7 @@ "@types/valid-url": "^1.0.3", "@types/validator": "^13.7.3", "@typescript-eslint/eslint-plugin": "^5.27.1", - "@typescript-eslint/parser": "^5.27.1", + "@typescript-eslint/parser": "^5.28.0", "@vercel/webpack-asset-relocator-loader": "1.7.2", "casual": "^1.6.2", "css-loader": "^6.7.1", diff --git a/yarn.lock b/yarn.lock index 0737fc5e1..e6c38088b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1882,14 +1882,14 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/parser@^5.27.1": - version "5.27.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.27.1.tgz#3a4dcaa67e45e0427b6ca7bb7165122c8b569639" - integrity sha512-7Va2ZOkHi5NP+AZwb5ReLgNF6nWLGTeUJfxdkVUAPPSaAdbWNnFZzLZ4EGGmmiCTg+AwlbE1KyUYTBglosSLHQ== - dependencies: - "@typescript-eslint/scope-manager" "5.27.1" - "@typescript-eslint/types" "5.27.1" - "@typescript-eslint/typescript-estree" "5.27.1" +"@typescript-eslint/parser@^5.28.0": + version "5.28.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.28.0.tgz#639b101cad2bfb7ae16e69710ac95c42bd4eae33" + integrity sha512-ekqoNRNK1lAcKhZESN/PdpVsWbP9jtiNqzFWkp/yAUdZvJalw2heCYuqRmM5eUJSIYEkgq5sGOjq+ZqsLMjtRA== + dependencies: + "@typescript-eslint/scope-manager" "5.28.0" + "@typescript-eslint/types" "5.28.0" + "@typescript-eslint/typescript-estree" "5.28.0" debug "^4.3.4" "@typescript-eslint/scope-manager@5.27.1": @@ -1900,6 +1900,14 @@ "@typescript-eslint/types" "5.27.1" "@typescript-eslint/visitor-keys" "5.27.1" +"@typescript-eslint/scope-manager@5.28.0": + version "5.28.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.28.0.tgz#ef9a5c68fecde72fd2ff8a84b9c120324826c1b9" + integrity sha512-LeBLTqF/he1Z+boRhSqnso6YrzcKMTQ8bO/YKEe+6+O/JGof9M0g3IJlIsqfrK/6K03MlFIlycbf1uQR1IjE+w== + dependencies: + "@typescript-eslint/types" "5.28.0" + "@typescript-eslint/visitor-keys" "5.28.0" + "@typescript-eslint/type-utils@5.27.1": version "5.27.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.27.1.tgz#369f695199f74c1876e395ebea202582eb1d4166" @@ -1914,6 +1922,11 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.27.1.tgz#34e3e629501349d38be6ae97841298c03a6ffbf1" integrity sha512-LgogNVkBhCTZU/m8XgEYIWICD6m4dmEDbKXESCbqOXfKZxRKeqpiJXQIErv66sdopRKZPo5l32ymNqibYEH/xg== +"@typescript-eslint/types@5.28.0": + version "5.28.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.28.0.tgz#cffd9bcdce28db6daaa146e48a0be4387a6f4e9d" + integrity sha512-2OOm8ZTOQxqkPbf+DAo8oc16sDlVR5owgJfKheBkxBKg1vAfw2JsSofH9+16VPlN9PWtv8Wzhklkqw3k/zCVxA== + "@typescript-eslint/typescript-estree@5.27.1": version "5.27.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.27.1.tgz#7621ee78607331821c16fffc21fc7a452d7bc808" @@ -1927,6 +1940,19 @@ semver "^7.3.7" tsutils "^3.21.0" +"@typescript-eslint/typescript-estree@5.28.0": + version "5.28.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.28.0.tgz#3487d158d091ca2772b285e67412ff6d9797d863" + integrity sha512-9GX+GfpV+F4hdTtYc6OV9ZkyYilGXPmQpm6AThInpBmKJEyRSIjORJd1G9+bknb7OTFYL+Vd4FBJAO6T78OVqA== + dependencies: + "@typescript-eslint/types" "5.28.0" + "@typescript-eslint/visitor-keys" "5.28.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + "@typescript-eslint/utils@5.27.1", "@typescript-eslint/utils@^5.13.0": version "5.27.1" resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.27.1.tgz#b4678b68a94bc3b85bf08f243812a6868ac5128f" @@ -1947,6 +1973,14 @@ "@typescript-eslint/types" "5.27.1" eslint-visitor-keys "^3.3.0" +"@typescript-eslint/visitor-keys@5.28.0": + version "5.28.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.28.0.tgz#982bb226b763c48fc1859a60de33fbf939d40a0f" + integrity sha512-BtfP1vCor8cWacovzzPFOoeW4kBQxzmhxGoOpt0v1SFvG+nJ0cWaVdJk7cky1ArTcFHHKNIxyo2LLr3oNkSuXA== + dependencies: + "@typescript-eslint/types" "5.28.0" + eslint-visitor-keys "^3.3.0" + "@vercel/webpack-asset-relocator-loader@1.7.2": version "1.7.2" resolved "https://registry.yarnpkg.com/@vercel/webpack-asset-relocator-loader/-/webpack-asset-relocator-loader-1.7.2.tgz#0210abd8d53b2799d53156dd0c18a4ef4e3b51cb" From 1d9d41c893f57d4a9e9d26663bc21711a8598596 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Jun 2022 08:34:23 -0700 Subject: [PATCH 007/121] Bump @testing-library/react-hooks from 8.0.0 to 8.0.1 (#813) Bumps [@testing-library/react-hooks](https://github.com/testing-library/react-hooks-testing-library) from 8.0.0 to 8.0.1. - [Release notes](https://github.com/testing-library/react-hooks-testing-library/releases) - [Changelog](https://github.com/testing-library/react-hooks-testing-library/blob/main/CHANGELOG.md) - [Commits](https://github.com/testing-library/react-hooks-testing-library/compare/v8.0.0...v8.0.1) --- updated-dependencies: - dependency-name: "@testing-library/react-hooks" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Nelson --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 3c6b0e116..8b5f1c867 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "@testing-library/dom": "^8.13.0", "@testing-library/jest-dom": "^5.16.4", "@testing-library/react": "^12.1.5", - "@testing-library/react-hooks": "^8.0.0", + "@testing-library/react-hooks": "^8.0.1", "@testing-library/user-event": "^14.2.0", "@types/dagre": "^0.7.47", "@types/diff": "^5.0.2", diff --git a/yarn.lock b/yarn.lock index e6c38088b..a6de22cd9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1382,10 +1382,10 @@ lodash "^4.17.15" redent "^3.0.0" -"@testing-library/react-hooks@^8.0.0": - version "8.0.0" - resolved "https://registry.yarnpkg.com/@testing-library/react-hooks/-/react-hooks-8.0.0.tgz#7d0164bffce4647f506039de0a97f6fcbd20f4bf" - integrity sha512-uZqcgtcUUtw7Z9N32W13qQhVAD+Xki2hxbTR461MKax8T6Jr8nsUvZB+vcBTkzY2nFvsUet434CsgF0ncW2yFw== +"@testing-library/react-hooks@^8.0.1": + version "8.0.1" + resolved "https://registry.yarnpkg.com/@testing-library/react-hooks/-/react-hooks-8.0.1.tgz#0924bbd5b55e0c0c0502d1754657ada66947ca12" + integrity sha512-Aqhl2IVmLt8IovEVarNDFuJDVWVvhnr9/GCU6UUnrYXwgDFF9h2L2o2P9KBni1AST5sT6riAyoukFLyjQUgD/g== dependencies: "@babel/runtime" "^7.12.5" react-error-boundary "^3.1.0" From cb6e88ccc6c3d860ab43dedef0867cdd2e3c485e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Jun 2022 08:38:58 -0700 Subject: [PATCH 008/121] Bump @typescript-eslint/eslint-plugin from 5.27.1 to 5.28.0 (#814) Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 5.27.1 to 5.28.0. - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.28.0/packages/eslint-plugin) --- updated-dependencies: - dependency-name: "@typescript-eslint/eslint-plugin" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Nelson --- package.json | 2 +- yarn.lock | 38 +++++++++++++++++++------------------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/package.json b/package.json index 8b5f1c867..2ad977917 100644 --- a/package.json +++ b/package.json @@ -66,7 +66,7 @@ "@types/uuid": "^8.3.4", "@types/valid-url": "^1.0.3", "@types/validator": "^13.7.3", - "@typescript-eslint/eslint-plugin": "^5.27.1", + "@typescript-eslint/eslint-plugin": "^5.28.0", "@typescript-eslint/parser": "^5.28.0", "@vercel/webpack-asset-relocator-loader": "1.7.2", "casual": "^1.6.2", diff --git a/yarn.lock b/yarn.lock index a6de22cd9..ff5c132c5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1867,14 +1867,14 @@ dependencies: "@types/node" "*" -"@typescript-eslint/eslint-plugin@^5.27.1": - version "5.27.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.27.1.tgz#fdf59c905354139046b41b3ed95d1609913d0758" - integrity sha512-6dM5NKT57ZduNnJfpY81Phe9nc9wolnMCnknb1im6brWi1RYv84nbMS3olJa27B6+irUVV1X/Wb+Am0FjJdGFw== +"@typescript-eslint/eslint-plugin@^5.28.0": + version "5.28.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.28.0.tgz#6204ac33bdd05ab27c7f77960f1023951115d403" + integrity sha512-DXVU6Cg29H2M6EybqSg2A+x8DgO9TCUBRp4QEXQHJceLS7ogVDP0g3Lkg/SZCqcvkAP/RruuQqK0gdlkgmhSUA== dependencies: - "@typescript-eslint/scope-manager" "5.27.1" - "@typescript-eslint/type-utils" "5.27.1" - "@typescript-eslint/utils" "5.27.1" + "@typescript-eslint/scope-manager" "5.28.0" + "@typescript-eslint/type-utils" "5.28.0" + "@typescript-eslint/utils" "5.28.0" debug "^4.3.4" functional-red-black-tree "^1.0.1" ignore "^5.2.0" @@ -1908,12 +1908,12 @@ "@typescript-eslint/types" "5.28.0" "@typescript-eslint/visitor-keys" "5.28.0" -"@typescript-eslint/type-utils@5.27.1": - version "5.27.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.27.1.tgz#369f695199f74c1876e395ebea202582eb1d4166" - integrity sha512-+UC1vVUWaDHRnC2cQrCJ4QtVjpjjCgjNFpg8b03nERmkHv9JV9X5M19D7UFMd+/G7T/sgFwX2pGmWK38rqyvXw== +"@typescript-eslint/type-utils@5.28.0": + version "5.28.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.28.0.tgz#53ccc78fdcf0205ef544d843b84104c0e9c7ca8e" + integrity sha512-SyKjKh4CXPglueyC6ceAFytjYWMoPHMswPQae236zqe1YbhvCVQyIawesYywGiu98L9DwrxsBN69vGIVxJ4mQQ== dependencies: - "@typescript-eslint/utils" "5.27.1" + "@typescript-eslint/utils" "5.28.0" debug "^4.3.4" tsutils "^3.21.0" @@ -1953,15 +1953,15 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/utils@5.27.1", "@typescript-eslint/utils@^5.13.0": - version "5.27.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.27.1.tgz#b4678b68a94bc3b85bf08f243812a6868ac5128f" - integrity sha512-mZ9WEn1ZLDaVrhRaYgzbkXBkTPghPFsup8zDbbsYTxC5OmqrFE7skkKS/sraVsLP3TcT3Ki5CSyEFBRkLH/H/w== +"@typescript-eslint/utils@5.28.0", "@typescript-eslint/utils@^5.13.0": + version "5.28.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.28.0.tgz#b27a136eac300a48160b36d2aad0da44a1341b99" + integrity sha512-E60N5L0fjv7iPJV3UGc4EC+A3Lcj4jle9zzR0gW7vXhflO7/J29kwiTGITA2RlrmPokKiZbBy2DgaclCaEUs6g== dependencies: "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.27.1" - "@typescript-eslint/types" "5.27.1" - "@typescript-eslint/typescript-estree" "5.27.1" + "@typescript-eslint/scope-manager" "5.28.0" + "@typescript-eslint/types" "5.28.0" + "@typescript-eslint/typescript-estree" "5.28.0" eslint-scope "^5.1.1" eslint-utils "^3.0.0" From c26a9122e594ebf2ee82d26388de946ddb2e08a1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Jun 2022 08:44:26 -0700 Subject: [PATCH 009/121] Bump @testing-library/user-event from 14.2.0 to 14.2.1 (#816) Bumps [@testing-library/user-event](https://github.com/testing-library/user-event) from 14.2.0 to 14.2.1. - [Release notes](https://github.com/testing-library/user-event/releases) - [Changelog](https://github.com/testing-library/user-event/blob/main/CHANGELOG.md) - [Commits](https://github.com/testing-library/user-event/compare/v14.2...v14.2.1) --- updated-dependencies: - dependency-name: "@testing-library/user-event" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Nelson --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 2ad977917..d15e536b2 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "@testing-library/jest-dom": "^5.16.4", "@testing-library/react": "^12.1.5", "@testing-library/react-hooks": "^8.0.1", - "@testing-library/user-event": "^14.2.0", + "@testing-library/user-event": "^14.2.1", "@types/dagre": "^0.7.47", "@types/diff": "^5.0.2", "@types/fs-extra": "^9.0.13", diff --git a/yarn.lock b/yarn.lock index ff5c132c5..5e291c379 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1399,10 +1399,10 @@ "@testing-library/dom" "^8.0.0" "@types/react-dom" "<18.0.0" -"@testing-library/user-event@^14.2.0": - version "14.2.0" - resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-14.2.0.tgz#8293560f8f80a00383d6c755ec3e0b918acb1683" - integrity sha512-+hIlG4nJS6ivZrKnOP7OGsDu9Fxmryj9vCl8x0ZINtTJcCHs2zLsYif5GzuRiBF2ck5GZG2aQr7Msg+EHlnYVQ== +"@testing-library/user-event@^14.2.1": + version "14.2.1" + resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-14.2.1.tgz#8c5ff2d004544bb2220e1d864f7267fe7eb6c556" + integrity sha512-HOr1QiODrq+0j9lKU5i10y9TbhxMBMRMGimNx10asdmau9cb8Xb1Vyg0GvTwyIL2ziQyh2kAloOtAQFBQVuecA== "@tootallnate/once@1": version "1.1.2" From b5df1d501810d5dc9d545a28e8fd04ade0786295 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Jun 2022 08:48:24 -0700 Subject: [PATCH 010/121] Bump parse-path from 4.0.3 to 4.0.4 (#819) Bumps [parse-path](https://github.com/IonicaBizau/parse-path) from 4.0.3 to 4.0.4. - [Release notes](https://github.com/IonicaBizau/parse-path/releases) - [Commits](https://github.com/IonicaBizau/parse-path/compare/4.0.3...4.0.4) --- updated-dependencies: - dependency-name: parse-path dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Nelson --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index d15e536b2..35a9950b2 100644 --- a/package.json +++ b/package.json @@ -114,7 +114,7 @@ "isomorphic-git": "^1.17.3", "luxon": "^2.4.0", "parse-git-config": "^3.0.0", - "parse-path": "^4.0.3", + "parse-path": "^4.0.4", "react": "^17.0.2", "react-ace": "^10.1.0", "react-dnd": "^15.1.1", diff --git a/yarn.lock b/yarn.lock index 5e291c379..0dcadd8b2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7569,10 +7569,10 @@ parse-passwd@^1.0.0: resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= -parse-path@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-4.0.3.tgz#82d81ec3e071dcc4ab49aa9f2c9c0b8966bb22bf" - integrity sha512-9Cepbp2asKnWTJ9x2kpw6Fe8y9JDbqwahGCTvklzd/cEq5C5JC59x2Xb0Kx+x0QZ8bvNquGO8/BWP0cwBHzSAA== +parse-path@^4.0.4: + version "4.0.4" + resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-4.0.4.tgz#4bf424e6b743fb080831f03b536af9fc43f0ffea" + integrity sha512-Z2lWUis7jlmXC1jeOG9giRO2+FsuyNipeQ43HAjqAZjwSe3SEf+q/84FGPHoso3kyntbxa4c4i77t3m6fGf8cw== dependencies: is-ssh "^1.3.0" protocols "^1.4.0" From 4724169ae683ab82d68fb0a5f0f23ebe98f4decf Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Jun 2022 08:53:20 -0700 Subject: [PATCH 011/121] Bump @electron-forge/cli from 6.0.0-beta.63 to 6.0.0-beta.64 (#823) Bumps [@electron-forge/cli](https://github.com/electron-userland/electron-forge) from 6.0.0-beta.63 to 6.0.0-beta.64. - [Release notes](https://github.com/electron-userland/electron-forge/releases) - [Changelog](https://github.com/electron-userland/electron-forge/blob/master/CHANGELOG.md) - [Commits](https://github.com/electron-userland/electron-forge/compare/v6.0.0-beta.63...v6.0.0-beta.64) --- updated-dependencies: - dependency-name: "@electron-forge/cli" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Nelson --- package.json | 2 +- yarn.lock | 209 +++++++++++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 202 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index 35a9950b2..8328a616b 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ }, "devDependencies": { "@atao60/fse-cli": "^0.1.7", - "@electron-forge/cli": "^6.0.0-beta.63", + "@electron-forge/cli": "^6.0.0-beta.64", "@electron-forge/maker-deb": "^6.0.0-beta.63", "@electron-forge/maker-dmg": "^6.0.0-beta.63", "@electron-forge/maker-rpm": "^6.0.0-beta.63", diff --git a/yarn.lock b/yarn.lock index 0dcadd8b2..e83afa1d6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -630,14 +630,25 @@ ora "^5.0.0" pretty-ms "^7.0.0" -"@electron-forge/cli@^6.0.0-beta.63": - version "6.0.0-beta.63" - resolved "https://registry.yarnpkg.com/@electron-forge/cli/-/cli-6.0.0-beta.63.tgz#8a668da150c7729bf16cf0a9952c85ffbd4fa0ca" - integrity sha512-I2B/hX16IDbuc2ip6JjAxrTF8XSQfuoIkb/EoqzEluPrdCx6VTzEahOQlUH+CvPohpwD/LDsH4Usd9/krKlkfg== +"@electron-forge/async-ora@6.0.0-beta.64": + version "6.0.0-beta.64" + resolved "https://registry.yarnpkg.com/@electron-forge/async-ora/-/async-ora-6.0.0-beta.64.tgz#40a35004b74aece2db8584dbaf034cf0d1f0864b" + integrity sha512-27ACgh9VhM+ahqTNIFeCfKuSoZxM/8dQp99ZMAgMFzcniKkNCXLxsbGF/7esu++zarDqhSUOhf70Z2bffgjX2w== dependencies: - "@electron-forge/async-ora" "6.0.0-beta.63" - "@electron-forge/core" "6.0.0-beta.63" - "@electron-forge/shared-types" "6.0.0-beta.63" + chalk "^4.0.0" + debug "^4.3.1" + log-symbols "^4.0.0" + ora "^5.0.0" + pretty-ms "^7.0.0" + +"@electron-forge/cli@^6.0.0-beta.64": + version "6.0.0-beta.64" + resolved "https://registry.yarnpkg.com/@electron-forge/cli/-/cli-6.0.0-beta.64.tgz#da264fdf459b622ed200e74ba1159217ac59f97a" + integrity sha512-EvI2Ie2ywj5lKZC3CttwRbraLBq84Gh2iwkrge5Q/T4wqvundTT1CyxNLUuSx+lsw3kE8Atmwefl5G6rf+E7Mg== + dependencies: + "@electron-forge/async-ora" "6.0.0-beta.64" + "@electron-forge/core" "6.0.0-beta.64" + "@electron-forge/shared-types" "6.0.0-beta.64" "@electron/get" "^1.9.0" chalk "^4.0.0" commander "^4.1.1" @@ -686,6 +697,47 @@ username "^5.1.0" yarn-or-npm "^3.0.1" +"@electron-forge/core@6.0.0-beta.64": + version "6.0.0-beta.64" + resolved "https://registry.yarnpkg.com/@electron-forge/core/-/core-6.0.0-beta.64.tgz#601f84c655fc813101c355b80d4b227701052727" + integrity sha512-FKms2M5+qMh7sfS9MTNUY9dHj7XRE8WJgKqwOQMYP7H4KPGlL2cRYkItmq5bNCu7sYbZOqgHruuDmAnap0B5Pw== + dependencies: + "@electron-forge/async-ora" "6.0.0-beta.64" + "@electron-forge/installer-base" "6.0.0-beta.64" + "@electron-forge/installer-deb" "6.0.0-beta.64" + "@electron-forge/installer-dmg" "6.0.0-beta.64" + "@electron-forge/installer-exe" "6.0.0-beta.64" + "@electron-forge/installer-rpm" "6.0.0-beta.64" + "@electron-forge/installer-zip" "6.0.0-beta.64" + "@electron-forge/maker-base" "6.0.0-beta.64" + "@electron-forge/plugin-base" "6.0.0-beta.64" + "@electron-forge/publisher-base" "6.0.0-beta.64" + "@electron-forge/shared-types" "6.0.0-beta.64" + "@electron-forge/template-base" "6.0.0-beta.64" + "@electron-forge/template-typescript" "6.0.0-beta.64" + "@electron-forge/template-typescript-webpack" "6.0.0-beta.64" + "@electron-forge/template-webpack" "6.0.0-beta.64" + "@electron/get" "^1.9.0" + "@malept/cross-spawn-promise" "^2.0.0" + chalk "^4.0.0" + debug "^4.3.1" + electron-packager "^15.4.0" + electron-rebuild "^3.2.6" + fast-glob "^3.2.7" + filenamify "^4.1.0" + find-up "^5.0.0" + fs-extra "^10.0.0" + lodash "^4.17.20" + log-symbols "^4.0.0" + node-fetch "^2.6.7" + nugget "^2.0.1" + resolve-package "^1.0.1" + semver "^7.2.1" + source-map-support "^0.5.13" + sudo-prompt "^9.1.1" + username "^5.1.0" + yarn-or-npm "^3.0.1" + "@electron-forge/installer-base@6.0.0-beta.63": version "6.0.0-beta.63" resolved "https://registry.yarnpkg.com/@electron-forge/installer-base/-/installer-base-6.0.0-beta.63.tgz#9ce2542a604526b585b2e874d891196b2beff8ce" @@ -693,6 +745,13 @@ dependencies: "@electron-forge/async-ora" "6.0.0-beta.63" +"@electron-forge/installer-base@6.0.0-beta.64": + version "6.0.0-beta.64" + resolved "https://registry.yarnpkg.com/@electron-forge/installer-base/-/installer-base-6.0.0-beta.64.tgz#6d99860a1d2829810a339608e374c415ad55c69a" + integrity sha512-SDyVrVmXOD8iHv57gf5SmJQNmBKg1AdoZh4tQm3lSl39XcYwSScm8O54WDi8mV1Q+K8bk/Zsi7bX34XFeQFr6g== + dependencies: + "@electron-forge/async-ora" "6.0.0-beta.64" + "@electron-forge/installer-darwin@6.0.0-beta.63": version "6.0.0-beta.63" resolved "https://registry.yarnpkg.com/@electron-forge/installer-darwin/-/installer-darwin-6.0.0-beta.63.tgz#6ea0f1d169d878416c6fb545292a4a6cb14962c6" @@ -703,6 +762,16 @@ fs-extra "^10.0.0" sudo-prompt "^9.1.1" +"@electron-forge/installer-darwin@6.0.0-beta.64": + version "6.0.0-beta.64" + resolved "https://registry.yarnpkg.com/@electron-forge/installer-darwin/-/installer-darwin-6.0.0-beta.64.tgz#63e88adb27c32189346e452667c4ab4dfe6f81df" + integrity sha512-dKHifmeQ++y/ZzxwT+QXWkFiP53j+ZCxel6VA6aj9PMhL2tE7jSeyqwqav+vU6RiFztlfMYBAUoXwBQlYMhnCg== + dependencies: + "@electron-forge/async-ora" "6.0.0-beta.64" + "@electron-forge/installer-base" "6.0.0-beta.64" + fs-extra "^10.0.0" + sudo-prompt "^9.1.1" + "@electron-forge/installer-deb@6.0.0-beta.63": version "6.0.0-beta.63" resolved "https://registry.yarnpkg.com/@electron-forge/installer-deb/-/installer-deb-6.0.0-beta.63.tgz#9ae9c761335bf0f11ba971296a26acde4413d331" @@ -710,6 +779,13 @@ dependencies: "@electron-forge/installer-linux" "6.0.0-beta.63" +"@electron-forge/installer-deb@6.0.0-beta.64": + version "6.0.0-beta.64" + resolved "https://registry.yarnpkg.com/@electron-forge/installer-deb/-/installer-deb-6.0.0-beta.64.tgz#affc78628775c2a817a59aee51fc58d14bfcb67f" + integrity sha512-WB0rIF7GjPf7b1py9GFQGVpWQVTjWS3gffLeQ6TlazHZhufJu68nCe+hiHYVmknQDGrpe6zgT/jedTckXOUqjw== + dependencies: + "@electron-forge/installer-linux" "6.0.0-beta.64" + "@electron-forge/installer-dmg@6.0.0-beta.63": version "6.0.0-beta.63" resolved "https://registry.yarnpkg.com/@electron-forge/installer-dmg/-/installer-dmg-6.0.0-beta.63.tgz#245b6fd39679c49e404317b6e95b48432fde07cc" @@ -720,6 +796,16 @@ debug "^4.3.1" fs-extra "^10.0.0" +"@electron-forge/installer-dmg@6.0.0-beta.64": + version "6.0.0-beta.64" + resolved "https://registry.yarnpkg.com/@electron-forge/installer-dmg/-/installer-dmg-6.0.0-beta.64.tgz#92c3f2656572a22fdb7756f13e15ac102aabebf3" + integrity sha512-HccPl7jkFR0I5xFMYZFuxOPmptF+j38WAV+Uev3K2iAgZD8bwdVojecswM2V85lvxkAKdAVVpU+317KWxGEoWQ== + dependencies: + "@electron-forge/installer-darwin" "6.0.0-beta.64" + "@malept/cross-spawn-promise" "^2.0.0" + debug "^4.3.1" + fs-extra "^10.0.0" + "@electron-forge/installer-exe@6.0.0-beta.63": version "6.0.0-beta.63" resolved "https://registry.yarnpkg.com/@electron-forge/installer-exe/-/installer-exe-6.0.0-beta.63.tgz#8d89bb8bb0d94bd2694c6e7192d57d43a3f0074a" @@ -728,6 +814,14 @@ "@electron-forge/installer-base" "6.0.0-beta.63" open "^8.1.0" +"@electron-forge/installer-exe@6.0.0-beta.64": + version "6.0.0-beta.64" + resolved "https://registry.yarnpkg.com/@electron-forge/installer-exe/-/installer-exe-6.0.0-beta.64.tgz#24958128d75bdefc687475fd8159c74432d0a3a8" + integrity sha512-6EWXEmodkYuz2Nc9VouhRI4tqqwMaLz/Z86OM8f6fJHPE7iFDR7EvQE0lHfan8D/zoBRRIxOLofu+u6AT+wlPg== + dependencies: + "@electron-forge/installer-base" "6.0.0-beta.64" + open "^8.1.0" + "@electron-forge/installer-linux@6.0.0-beta.63": version "6.0.0-beta.63" resolved "https://registry.yarnpkg.com/@electron-forge/installer-linux/-/installer-linux-6.0.0-beta.63.tgz#cf47e247ec1b507dcb586e08cf9e95cc81b7da06" @@ -736,6 +830,14 @@ "@electron-forge/installer-base" "6.0.0-beta.63" sudo-prompt "^9.1.1" +"@electron-forge/installer-linux@6.0.0-beta.64": + version "6.0.0-beta.64" + resolved "https://registry.yarnpkg.com/@electron-forge/installer-linux/-/installer-linux-6.0.0-beta.64.tgz#fd0dbc74bfd34c959a5c11de85d2090fe341df06" + integrity sha512-CKToVN9TuYF/nhfXyTn3hYYD6BrG3T0e+lcxqwHOm7OJ98b08f5ZzvdktHv4brIaD9mUgSHnQ5z4YdguFRvo/Q== + dependencies: + "@electron-forge/installer-base" "6.0.0-beta.64" + sudo-prompt "^9.1.1" + "@electron-forge/installer-rpm@6.0.0-beta.63": version "6.0.0-beta.63" resolved "https://registry.yarnpkg.com/@electron-forge/installer-rpm/-/installer-rpm-6.0.0-beta.63.tgz#faf2cecac309971fc0cb4fa94f83ad1764af0aee" @@ -743,6 +845,13 @@ dependencies: "@electron-forge/installer-linux" "6.0.0-beta.63" +"@electron-forge/installer-rpm@6.0.0-beta.64": + version "6.0.0-beta.64" + resolved "https://registry.yarnpkg.com/@electron-forge/installer-rpm/-/installer-rpm-6.0.0-beta.64.tgz#51b038493538346edf2955d2a82349f7e1b8f8bd" + integrity sha512-0w0Q8MbNefjDGVaGMlk1OPMWYe+Ct/XiOXaWX3jF+fgkaKUzXbkN91gBhIKXBkLlxWqQI+5BlLTh+CjRyBZV5g== + dependencies: + "@electron-forge/installer-linux" "6.0.0-beta.64" + "@electron-forge/installer-zip@6.0.0-beta.63": version "6.0.0-beta.63" resolved "https://registry.yarnpkg.com/@electron-forge/installer-zip/-/installer-zip-6.0.0-beta.63.tgz#4d6e6cbd8c0c45438a16b2f349971b58311dbe6f" @@ -752,6 +861,15 @@ "@malept/cross-spawn-promise" "^2.0.0" fs-extra "^10.0.0" +"@electron-forge/installer-zip@6.0.0-beta.64": + version "6.0.0-beta.64" + resolved "https://registry.yarnpkg.com/@electron-forge/installer-zip/-/installer-zip-6.0.0-beta.64.tgz#192c042f4efb89df3eb4b922e4cf362cba48e229" + integrity sha512-qA5+pe1c2znrKyTjcYZ+6yL56a31sQexH19ik+wigIor2d0nevGo6hZgNl0YOyOfrt/M8lyGTDksWFAGuNyxNQ== + dependencies: + "@electron-forge/installer-darwin" "6.0.0-beta.64" + "@malept/cross-spawn-promise" "^2.0.0" + fs-extra "^10.0.0" + "@electron-forge/maker-base@6.0.0-beta.63": version "6.0.0-beta.63" resolved "https://registry.yarnpkg.com/@electron-forge/maker-base/-/maker-base-6.0.0-beta.63.tgz#4e9cbff3775bea08938dd3aa5a48c3e9479b9be6" @@ -761,6 +879,15 @@ fs-extra "^10.0.0" which "^2.0.2" +"@electron-forge/maker-base@6.0.0-beta.64": + version "6.0.0-beta.64" + resolved "https://registry.yarnpkg.com/@electron-forge/maker-base/-/maker-base-6.0.0-beta.64.tgz#0f19563a06f0e5499892aec9fe8edd8853304b29" + integrity sha512-jQbZgnsTpDK60KXhJWiDhmo7aHsBMnfZIpbr4w9QhjPPbQKUqcUo6Geg2OFbX+9HTGOz1jUC4jDbVPvR+zmzuQ== + dependencies: + "@electron-forge/shared-types" "6.0.0-beta.64" + fs-extra "^10.0.0" + which "^2.0.2" + "@electron-forge/maker-deb@^6.0.0-beta.63": version "6.0.0-beta.63" resolved "https://registry.yarnpkg.com/@electron-forge/maker-deb/-/maker-deb-6.0.0-beta.63.tgz#7a56c0c36c474b1cce9f966aa852242a5336a4d4" @@ -810,6 +937,13 @@ dependencies: "@electron-forge/shared-types" "6.0.0-beta.63" +"@electron-forge/plugin-base@6.0.0-beta.64": + version "6.0.0-beta.64" + resolved "https://registry.yarnpkg.com/@electron-forge/plugin-base/-/plugin-base-6.0.0-beta.64.tgz#ac7ca34e8af2b0b7d2cc8e6079656a20890c4402" + integrity sha512-398mJ50B61BwiwehKrRQfRoB/A2+Nd/SzHYzuQxio4gIWOg5aJXCi6kZGGpRNpQ+UYx+v7rP/WxWQedA7U/Urw== + dependencies: + "@electron-forge/shared-types" "6.0.0-beta.64" + "@electron-forge/plugin-webpack@6.0.0-beta.63": version "6.0.0-beta.63" resolved "https://registry.yarnpkg.com/@electron-forge/plugin-webpack/-/plugin-webpack-6.0.0-beta.63.tgz#2d81cd8765381e2dea80f0a4103e772b2ed06fef" @@ -836,6 +970,13 @@ dependencies: "@electron-forge/shared-types" "6.0.0-beta.63" +"@electron-forge/publisher-base@6.0.0-beta.64": + version "6.0.0-beta.64" + resolved "https://registry.yarnpkg.com/@electron-forge/publisher-base/-/publisher-base-6.0.0-beta.64.tgz#eabd42672a1cb5d1861efd27350c0c5c162116c4" + integrity sha512-OIEThucgKKUmXIF8Gb7xAPl0Hlpsnf37e1DsvpRC3gP3kClPFwitx2u5PNCIg1HwQ75UoViGeFcwjjs9VZPkIg== + dependencies: + "@electron-forge/shared-types" "6.0.0-beta.64" + "@electron-forge/shared-types@6.0.0-beta.63": version "6.0.0-beta.63" resolved "https://registry.yarnpkg.com/@electron-forge/shared-types/-/shared-types-6.0.0-beta.63.tgz#d15aec5698f6e22b61060a4064955a04c2cedc39" @@ -846,6 +987,16 @@ electron-rebuild "^3.2.6" ora "^5.0.0" +"@electron-forge/shared-types@6.0.0-beta.64": + version "6.0.0-beta.64" + resolved "https://registry.yarnpkg.com/@electron-forge/shared-types/-/shared-types-6.0.0-beta.64.tgz#be87fe0bd4b27ca8d3b93b9bd943f59bf56befd4" + integrity sha512-E+uIpZsKPku4QHWzBGNm5RkcOyLXn98qHvJevziKnUOfRSe2y66XFpHyu9FmBnEYYoyGDvBktV70yK6gsjdigQ== + dependencies: + "@electron-forge/async-ora" "6.0.0-beta.64" + electron-packager "^15.4.0" + electron-rebuild "^3.2.6" + ora "^5.0.0" + "@electron-forge/template-base@6.0.0-beta.63": version "6.0.0-beta.63" resolved "https://registry.yarnpkg.com/@electron-forge/template-base/-/template-base-6.0.0-beta.63.tgz#62f929faa210727863e56402f2b83d9d61d3b2f2" @@ -858,6 +1009,18 @@ fs-extra "^10.0.0" username "^5.1.0" +"@electron-forge/template-base@6.0.0-beta.64": + version "6.0.0-beta.64" + resolved "https://registry.yarnpkg.com/@electron-forge/template-base/-/template-base-6.0.0-beta.64.tgz#e1634ad8a75c0ddf566f3a5401269c00e1799427" + integrity sha512-mdYHCk6H7L+hdSPnh6kdg6nBC7QnQZuySwi7z/Hv3APCfPZMLVLcVkWQNCYyl+5ysyhzjPGtdm7MSV8kJ5ZMtA== + dependencies: + "@electron-forge/async-ora" "6.0.0-beta.64" + "@electron-forge/shared-types" "6.0.0-beta.64" + "@malept/cross-spawn-promise" "^2.0.0" + debug "^4.3.1" + fs-extra "^10.0.0" + username "^5.1.0" + "@electron-forge/template-typescript-webpack@6.0.0-beta.63": version "6.0.0-beta.63" resolved "https://registry.yarnpkg.com/@electron-forge/template-typescript-webpack/-/template-typescript-webpack-6.0.0-beta.63.tgz#4eff34f0ba5d87ba8a3e57f70153aa4c0e782c56" @@ -868,6 +1031,16 @@ "@electron-forge/template-base" "6.0.0-beta.63" fs-extra "^10.0.0" +"@electron-forge/template-typescript-webpack@6.0.0-beta.64": + version "6.0.0-beta.64" + resolved "https://registry.yarnpkg.com/@electron-forge/template-typescript-webpack/-/template-typescript-webpack-6.0.0-beta.64.tgz#1ce6e10d1d940a657defed270df80ff5eba3a837" + integrity sha512-oFLC88qXhFXvD1H9CthtMIPE2CKoXPNiR0LRDieL/vNvnRb0UKaqay/o3df2rJp31h5CEY63BrHC9nnQ8i+ZCw== + dependencies: + "@electron-forge/async-ora" "6.0.0-beta.64" + "@electron-forge/shared-types" "6.0.0-beta.64" + "@electron-forge/template-base" "6.0.0-beta.64" + fs-extra "^10.0.0" + "@electron-forge/template-typescript@6.0.0-beta.63": version "6.0.0-beta.63" resolved "https://registry.yarnpkg.com/@electron-forge/template-typescript/-/template-typescript-6.0.0-beta.63.tgz#87d06f9f1f866d921d9fed0913e4b9d03b5f09b5" @@ -878,6 +1051,16 @@ "@electron-forge/template-base" "6.0.0-beta.63" fs-extra "^10.0.0" +"@electron-forge/template-typescript@6.0.0-beta.64": + version "6.0.0-beta.64" + resolved "https://registry.yarnpkg.com/@electron-forge/template-typescript/-/template-typescript-6.0.0-beta.64.tgz#00f3eb3f4a3fd28ebbde54102aec98377f7cc50b" + integrity sha512-gu63ehKG4q92UQhDMAMt/e73moav1fLyKVNwQakcxrD/D2klprKXf2qa6lMBsxaZFnAZ5b249R6WZWmXnk6r6A== + dependencies: + "@electron-forge/async-ora" "6.0.0-beta.64" + "@electron-forge/shared-types" "6.0.0-beta.64" + "@electron-forge/template-base" "6.0.0-beta.64" + fs-extra "^10.0.0" + "@electron-forge/template-webpack@6.0.0-beta.63": version "6.0.0-beta.63" resolved "https://registry.yarnpkg.com/@electron-forge/template-webpack/-/template-webpack-6.0.0-beta.63.tgz#090203523f58a31354921cde2e1ba3f21ac74b43" @@ -888,6 +1071,16 @@ "@electron-forge/template-base" "6.0.0-beta.63" fs-extra "^10.0.0" +"@electron-forge/template-webpack@6.0.0-beta.64": + version "6.0.0-beta.64" + resolved "https://registry.yarnpkg.com/@electron-forge/template-webpack/-/template-webpack-6.0.0-beta.64.tgz#565fc2fc4eea237aa0ced9e400ff7243ff7968a1" + integrity sha512-hExHBXIoH7cRSW0f2jUjlKtEdkUqZEutr12GphB3MoMWWlef8SOZ9eDfpvJkEHbPJQmKNdkJjtboakK6DAucFg== + dependencies: + "@electron-forge/async-ora" "6.0.0-beta.64" + "@electron-forge/shared-types" "6.0.0-beta.64" + "@electron-forge/template-base" "6.0.0-beta.64" + fs-extra "^10.0.0" + "@electron-forge/web-multi-logger@6.0.0-beta.63": version "6.0.0-beta.63" resolved "https://registry.yarnpkg.com/@electron-forge/web-multi-logger/-/web-multi-logger-6.0.0-beta.63.tgz#4d349ef929cc7a01ee7de5edbd7bc75583b604b2" @@ -7116,7 +7309,7 @@ node-api-version@^0.1.4: dependencies: semver "^7.3.5" -node-fetch@^2.6.0: +node-fetch@^2.6.0, node-fetch@^2.6.7: version "2.6.7" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== From 3840b8209f1a091bcc4711f5646636069868d3ac Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Jun 2022 08:59:22 -0700 Subject: [PATCH 012/121] Bump @electron-forge/maker-dmg from 6.0.0-beta.63 to 6.0.0-beta.64 (#822) Bumps [@electron-forge/maker-dmg](https://github.com/electron-userland/electron-forge) from 6.0.0-beta.63 to 6.0.0-beta.64. - [Release notes](https://github.com/electron-userland/electron-forge/releases) - [Changelog](https://github.com/electron-userland/electron-forge/blob/master/CHANGELOG.md) - [Commits](https://github.com/electron-userland/electron-forge/compare/v6.0.0-beta.63...v6.0.0-beta.64) --- updated-dependencies: - dependency-name: "@electron-forge/maker-dmg" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Nelson --- package.json | 2 +- yarn.lock | 37 ++++++++++++++++++------------------- 2 files changed, 19 insertions(+), 20 deletions(-) diff --git a/package.json b/package.json index 8328a616b..7d2e40840 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "@atao60/fse-cli": "^0.1.7", "@electron-forge/cli": "^6.0.0-beta.64", "@electron-forge/maker-deb": "^6.0.0-beta.63", - "@electron-forge/maker-dmg": "^6.0.0-beta.63", + "@electron-forge/maker-dmg": "^6.0.0-beta.64", "@electron-forge/maker-rpm": "^6.0.0-beta.63", "@electron-forge/maker-squirrel": "^6.0.0-beta.63", "@electron-forge/plugin-webpack": "6.0.0-beta.63", diff --git a/yarn.lock b/yarn.lock index e83afa1d6..99f504c08 100644 --- a/yarn.lock +++ b/yarn.lock @@ -898,16 +898,16 @@ optionalDependencies: electron-installer-debian "^3.0.0" -"@electron-forge/maker-dmg@^6.0.0-beta.63": - version "6.0.0-beta.63" - resolved "https://registry.yarnpkg.com/@electron-forge/maker-dmg/-/maker-dmg-6.0.0-beta.63.tgz#06aba0a117b44588f150aca5f3b3d5172166a09c" - integrity sha512-IS+pgIQLiNT337EL7LBNY6In7FSldIUyKneD7mRbaOa9A7mjQphwVqOO80C3N0R8+hyP7BVPVteGUWB5kTcE2w== +"@electron-forge/maker-dmg@^6.0.0-beta.64": + version "6.0.0-beta.64" + resolved "https://registry.yarnpkg.com/@electron-forge/maker-dmg/-/maker-dmg-6.0.0-beta.64.tgz#48641d13f9a7668fff70da44c8653a8f4e713d80" + integrity sha512-unDZA1IMKlzsmm+d0LQmwVZnluEZPNJQ12ZvC3SDyKkqc4JC4VmKJV0bWYZsw7OdLuZT9DEQmNq/MFKzjwiO7g== dependencies: - "@electron-forge/maker-base" "6.0.0-beta.63" - "@electron-forge/shared-types" "6.0.0-beta.63" + "@electron-forge/maker-base" "6.0.0-beta.64" + "@electron-forge/shared-types" "6.0.0-beta.64" fs-extra "^10.0.0" optionalDependencies: - electron-installer-dmg "^3.0.0" + electron-installer-dmg "^4.0.0" "@electron-forge/maker-rpm@^6.0.0-beta.63": version "6.0.0-beta.63" @@ -2490,10 +2490,10 @@ anymatch@^3.0.3, anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" -appdmg@^0.6.0: - version "0.6.2" - resolved "https://registry.yarnpkg.com/appdmg/-/appdmg-0.6.2.tgz#3acd6246ffb25ae3e109bdba564aa3ddce1b64a8" - integrity sha512-mbJyAxn2/JmDpckNpXDU4AQ/XF7fltOyrLcETZxGfYwESt0NdCjQB8L2vIxxAyZKT0R/c0aSzb9yE+P2yDh9TQ== +appdmg@^0.6.4: + version "0.6.4" + resolved "https://registry.yarnpkg.com/appdmg/-/appdmg-0.6.4.tgz#283b85cc761c1d924f2370bd5cdbd92824b12ef3" + integrity sha512-YTilgNF0DF2DSRzGzzGDxaTMLXlhe3b3HB8RAaoJJ/VJXZbOlzIAcZ7gdPniHUVUuHjGwnS7fUMd4FvO2Rp94A== dependencies: async "^1.4.2" ds-store "^0.1.5" @@ -4015,16 +4015,15 @@ electron-installer-debian@^3.0.0: word-wrap "^1.2.3" yargs "^15.0.1" -electron-installer-dmg@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/electron-installer-dmg/-/electron-installer-dmg-3.0.0.tgz#08935b602f3120981c8d5fd24d3f6525f8b0198a" - integrity sha512-a3z9ABUfLJtrLK1ize4j+wJKslodb0kRHgBuUN4GTckiUxtGdo49XCvvAHvQaOqQk3S5VTvuc6PoofnI9mKSCQ== +electron-installer-dmg@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/electron-installer-dmg/-/electron-installer-dmg-4.0.0.tgz#0520bcc8a928e559b3f16fc5cbc12b182a66ea1c" + integrity sha512-g3W6XnyUa7QGrAF7ViewHdt6bXV2KYU1Pm1CY3pZpp+H6mOjCHHAhf/iZAxtaX1ERCb+SQHz7xSsAHuNH9I8ZQ== dependencies: - debug "^4.1.1" - fs-extra "^8.0.1" + debug "^4.3.2" minimist "^1.1.1" optionalDependencies: - appdmg "^0.6.0" + appdmg "^0.6.4" electron-installer-redhat@^3.2.0: version "3.3.0" @@ -4882,7 +4881,7 @@ fs-extra@^7.0.0, fs-extra@^7.0.1: jsonfile "^4.0.0" universalify "^0.1.0" -fs-extra@^8.0.1, fs-extra@^8.1.0: +fs-extra@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== From 9f4073e975611aa93abe032bf93e960c21639729 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Jun 2022 09:03:51 -0700 Subject: [PATCH 013/121] Bump @electron-forge/maker-rpm from 6.0.0-beta.63 to 6.0.0-beta.64 (#818) Bumps [@electron-forge/maker-rpm](https://github.com/electron-userland/electron-forge) from 6.0.0-beta.63 to 6.0.0-beta.64. - [Release notes](https://github.com/electron-userland/electron-forge/releases) - [Changelog](https://github.com/electron-userland/electron-forge/blob/master/CHANGELOG.md) - [Commits](https://github.com/electron-userland/electron-forge/compare/v6.0.0-beta.63...v6.0.0-beta.64) --- updated-dependencies: - dependency-name: "@electron-forge/maker-rpm" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Nelson --- package.json | 2 +- yarn.lock | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 7d2e40840..b86044c48 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "@electron-forge/cli": "^6.0.0-beta.64", "@electron-forge/maker-deb": "^6.0.0-beta.63", "@electron-forge/maker-dmg": "^6.0.0-beta.64", - "@electron-forge/maker-rpm": "^6.0.0-beta.63", + "@electron-forge/maker-rpm": "^6.0.0-beta.64", "@electron-forge/maker-squirrel": "^6.0.0-beta.63", "@electron-forge/plugin-webpack": "6.0.0-beta.63", "@testing-library/dom": "^8.13.0", diff --git a/yarn.lock b/yarn.lock index 99f504c08..1b2fb3673 100644 --- a/yarn.lock +++ b/yarn.lock @@ -909,13 +909,13 @@ optionalDependencies: electron-installer-dmg "^4.0.0" -"@electron-forge/maker-rpm@^6.0.0-beta.63": - version "6.0.0-beta.63" - resolved "https://registry.yarnpkg.com/@electron-forge/maker-rpm/-/maker-rpm-6.0.0-beta.63.tgz#ac37b05e76d00415a7e16244d7f06a383feb851d" - integrity sha512-htKNsA3/7nOd5PL6jjdrYCcSXrrIj43aJyOfIuFHswFpjFFmYEgsDCrN8lKZH5y1qdXQefaGOc9MapuBC0GO+w== +"@electron-forge/maker-rpm@^6.0.0-beta.64": + version "6.0.0-beta.64" + resolved "https://registry.yarnpkg.com/@electron-forge/maker-rpm/-/maker-rpm-6.0.0-beta.64.tgz#b2fd2ca3bc30571424e9184ed72fea5eae4ea28c" + integrity sha512-j2WtseEqXRGCEgAsn0xiNMOwYvGUzTECpu2n5Lsvh6BRE+rZ2CFPIJHHbNmPRwi7FZ9X4Oz8jN+lzLJeRH33iQ== dependencies: - "@electron-forge/maker-base" "6.0.0-beta.63" - "@electron-forge/shared-types" "6.0.0-beta.63" + "@electron-forge/maker-base" "6.0.0-beta.64" + "@electron-forge/shared-types" "6.0.0-beta.64" optionalDependencies: electron-installer-redhat "^3.2.0" From b9b438ad9843c715f6b4e1f4ba08860e6c542079 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Jun 2022 09:16:33 -0700 Subject: [PATCH 014/121] Bump @electron-forge/maker-squirrel from 6.0.0-beta.63 to 6.0.0-beta.64 (#820) Bumps [@electron-forge/maker-squirrel](https://github.com/electron-userland/electron-forge) from 6.0.0-beta.63 to 6.0.0-beta.64. - [Release notes](https://github.com/electron-userland/electron-forge/releases) - [Changelog](https://github.com/electron-userland/electron-forge/blob/master/CHANGELOG.md) - [Commits](https://github.com/electron-userland/electron-forge/compare/v6.0.0-beta.63...v6.0.0-beta.64) --- updated-dependencies: - dependency-name: "@electron-forge/maker-squirrel" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Nelson --- package.json | 2 +- yarn.lock | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index b86044c48..a4f587bdc 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,7 @@ "@electron-forge/maker-deb": "^6.0.0-beta.63", "@electron-forge/maker-dmg": "^6.0.0-beta.64", "@electron-forge/maker-rpm": "^6.0.0-beta.64", - "@electron-forge/maker-squirrel": "^6.0.0-beta.63", + "@electron-forge/maker-squirrel": "^6.0.0-beta.64", "@electron-forge/plugin-webpack": "6.0.0-beta.63", "@testing-library/dom": "^8.13.0", "@testing-library/jest-dom": "^5.16.4", diff --git a/yarn.lock b/yarn.lock index 1b2fb3673..352f93174 100644 --- a/yarn.lock +++ b/yarn.lock @@ -919,13 +919,13 @@ optionalDependencies: electron-installer-redhat "^3.2.0" -"@electron-forge/maker-squirrel@^6.0.0-beta.63": - version "6.0.0-beta.63" - resolved "https://registry.yarnpkg.com/@electron-forge/maker-squirrel/-/maker-squirrel-6.0.0-beta.63.tgz#6424f643ec256ed75746b7746bffadc272c5f076" - integrity sha512-18eLRQmMZ6zBcI1Jhuqvhm50bmmatRCbyOUHTaIbhVf1M6ksq34xXXVWKUGlqDiCNLLLNzVw5MIb9O04eUdfIg== +"@electron-forge/maker-squirrel@^6.0.0-beta.64": + version "6.0.0-beta.64" + resolved "https://registry.yarnpkg.com/@electron-forge/maker-squirrel/-/maker-squirrel-6.0.0-beta.64.tgz#052461d8bd3ace9766d481ef78bbbdc75eaeeb25" + integrity sha512-9+62bQwKBmmarb07/+E+wATOQwsIW3BAP6pjOM6oZeMzNTfPWyMyGU0ta6jO8Wmg2SKAG5b6iLoh7lso8gaiGg== dependencies: - "@electron-forge/maker-base" "6.0.0-beta.63" - "@electron-forge/shared-types" "6.0.0-beta.63" + "@electron-forge/maker-base" "6.0.0-beta.64" + "@electron-forge/shared-types" "6.0.0-beta.64" fs-extra "^10.0.0" optionalDependencies: electron-winstaller "^5.0.0" From b0cbda0c04b14857b75145de31e2e6f4316b6462 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Jun 2022 09:29:09 -0700 Subject: [PATCH 015/121] Bump @electron-forge/maker-deb from 6.0.0-beta.63 to 6.0.0-beta.64 (#821) Bumps [@electron-forge/maker-deb](https://github.com/electron-userland/electron-forge) from 6.0.0-beta.63 to 6.0.0-beta.64. - [Release notes](https://github.com/electron-userland/electron-forge/releases) - [Changelog](https://github.com/electron-userland/electron-forge/blob/master/CHANGELOG.md) - [Commits](https://github.com/electron-userland/electron-forge/compare/v6.0.0-beta.63...v6.0.0-beta.64) --- updated-dependencies: - dependency-name: "@electron-forge/maker-deb" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Nelson --- package.json | 2 +- yarn.lock | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index a4f587bdc..2b23356ad 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ "devDependencies": { "@atao60/fse-cli": "^0.1.7", "@electron-forge/cli": "^6.0.0-beta.64", - "@electron-forge/maker-deb": "^6.0.0-beta.63", + "@electron-forge/maker-deb": "^6.0.0-beta.64", "@electron-forge/maker-dmg": "^6.0.0-beta.64", "@electron-forge/maker-rpm": "^6.0.0-beta.64", "@electron-forge/maker-squirrel": "^6.0.0-beta.64", diff --git a/yarn.lock b/yarn.lock index 352f93174..04646427d 100644 --- a/yarn.lock +++ b/yarn.lock @@ -888,13 +888,13 @@ fs-extra "^10.0.0" which "^2.0.2" -"@electron-forge/maker-deb@^6.0.0-beta.63": - version "6.0.0-beta.63" - resolved "https://registry.yarnpkg.com/@electron-forge/maker-deb/-/maker-deb-6.0.0-beta.63.tgz#7a56c0c36c474b1cce9f966aa852242a5336a4d4" - integrity sha512-6U4SQ9qFqd0UPCTfJU6358ifxnLvMxJmwyy3Z/4lZlYIfL2112gsQRyvlv7UcFXamw+1CZ9n9SY3f/K50susEQ== +"@electron-forge/maker-deb@^6.0.0-beta.64": + version "6.0.0-beta.64" + resolved "https://registry.yarnpkg.com/@electron-forge/maker-deb/-/maker-deb-6.0.0-beta.64.tgz#e5bba1c661cb67bee40a8af84ea8abca82ab8094" + integrity sha512-6dDcJ5xoiDMPPVnNzIl3M7St31hZtIvplVtJ8P9A01DDEPrA8gsQbWMgQDHg8EgbbvMlErqbGqiWSybzoqlBrw== dependencies: - "@electron-forge/maker-base" "6.0.0-beta.63" - "@electron-forge/shared-types" "6.0.0-beta.63" + "@electron-forge/maker-base" "6.0.0-beta.64" + "@electron-forge/shared-types" "6.0.0-beta.64" optionalDependencies: electron-installer-debian "^3.0.0" From 4d676aec3aa87b2c8a84153d91b70b9ce059aec9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Jun 2022 09:35:44 -0700 Subject: [PATCH 016/121] Bump @electron-forge/plugin-webpack from 6.0.0-beta.63 to 6.0.0-beta.64 (#824) Bumps [@electron-forge/plugin-webpack](https://github.com/electron-userland/electron-forge) from 6.0.0-beta.63 to 6.0.0-beta.64. - [Release notes](https://github.com/electron-userland/electron-forge/releases) - [Changelog](https://github.com/electron-userland/electron-forge/blob/master/CHANGELOG.md) - [Commits](https://github.com/electron-userland/electron-forge/compare/v6.0.0-beta.63...v6.0.0-beta.64) --- updated-dependencies: - dependency-name: "@electron-forge/plugin-webpack" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Nelson --- package.json | 2 +- yarn.lock | 64 ++++++++++++---------------------------------------- 2 files changed, 16 insertions(+), 50 deletions(-) diff --git a/package.json b/package.json index 2b23356ad..c15fb4978 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,7 @@ "@electron-forge/maker-dmg": "^6.0.0-beta.64", "@electron-forge/maker-rpm": "^6.0.0-beta.64", "@electron-forge/maker-squirrel": "^6.0.0-beta.64", - "@electron-forge/plugin-webpack": "6.0.0-beta.63", + "@electron-forge/plugin-webpack": "6.0.0-beta.64", "@testing-library/dom": "^8.13.0", "@testing-library/jest-dom": "^5.16.4", "@testing-library/react": "^12.1.5", diff --git a/yarn.lock b/yarn.lock index 04646427d..c4fa4d213 100644 --- a/yarn.lock +++ b/yarn.lock @@ -944,22 +944,22 @@ dependencies: "@electron-forge/shared-types" "6.0.0-beta.64" -"@electron-forge/plugin-webpack@6.0.0-beta.63": - version "6.0.0-beta.63" - resolved "https://registry.yarnpkg.com/@electron-forge/plugin-webpack/-/plugin-webpack-6.0.0-beta.63.tgz#2d81cd8765381e2dea80f0a4103e772b2ed06fef" - integrity sha512-ITDN6Be0Z/JgwXmN4aXfT+B8TUg5AcvSW2j/NTkATiqUaVyaqq97UxqJ+gx15ouraKW92szEvL2Mo2JwG7bXYg== +"@electron-forge/plugin-webpack@6.0.0-beta.64": + version "6.0.0-beta.64" + resolved "https://registry.yarnpkg.com/@electron-forge/plugin-webpack/-/plugin-webpack-6.0.0-beta.64.tgz#29a24eb95d59b0d69391bca629288869f2531a31" + integrity sha512-kugI48W11LHg0YyOSDU/SJNn3BkcANRma5SE5PphxkUK8rjPBxLEwGUXo6DbkbXUF//dqMCdTGsE66zqyx01yg== dependencies: - "@electron-forge/async-ora" "6.0.0-beta.63" - "@electron-forge/core" "6.0.0-beta.63" - "@electron-forge/plugin-base" "6.0.0-beta.63" - "@electron-forge/shared-types" "6.0.0-beta.63" - "@electron-forge/web-multi-logger" "6.0.0-beta.63" + "@electron-forge/async-ora" "6.0.0-beta.64" + "@electron-forge/core" "6.0.0-beta.64" + "@electron-forge/plugin-base" "6.0.0-beta.64" + "@electron-forge/shared-types" "6.0.0-beta.64" + "@electron-forge/web-multi-logger" "6.0.0-beta.64" chalk "^4.0.0" debug "^4.3.1" fs-extra "^10.0.0" global "^4.3.2" html-webpack-plugin "^5.3.1" - webpack "^5.37.0" + webpack "^5.69.1" webpack-dev-server "^4.0.0" webpack-merge "^5.7.3" @@ -1081,10 +1081,10 @@ "@electron-forge/template-base" "6.0.0-beta.64" fs-extra "^10.0.0" -"@electron-forge/web-multi-logger@6.0.0-beta.63": - version "6.0.0-beta.63" - resolved "https://registry.yarnpkg.com/@electron-forge/web-multi-logger/-/web-multi-logger-6.0.0-beta.63.tgz#4d349ef929cc7a01ee7de5edbd7bc75583b604b2" - integrity sha512-FRo/7+oolFaSGu8XP+ukXXxDKcWOb5DSUiGWzFtYKIYc6HHGy/ErGNuxh3NQf3PMTM3nxfFwbAEtthSulW1Wrw== +"@electron-forge/web-multi-logger@6.0.0-beta.64": + version "6.0.0-beta.64" + resolved "https://registry.yarnpkg.com/@electron-forge/web-multi-logger/-/web-multi-logger-6.0.0-beta.64.tgz#b04a673481792332eb912497fef85a16aef184d6" + integrity sha512-0+xruclLP21mKtwXMTo6wHGLmHhRV3mqnS0Gy63UUaIQxXb2r9Ft6ttZTicdMkony1ZyGCjIh5b/glqIlk/OfQ== dependencies: express "^4.17.1" express-ws "^5.0.2" @@ -2085,14 +2085,6 @@ "@typescript-eslint/typescript-estree" "5.28.0" debug "^4.3.4" -"@typescript-eslint/scope-manager@5.27.1": - version "5.27.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.27.1.tgz#4d1504392d01fe5f76f4a5825991ec78b7b7894d" - integrity sha512-fQEOSa/QroWE6fAEg+bJxtRZJTH8NTskggybogHt4H9Da8zd4cJji76gA5SBlR0MgtwF7rebxTbDKB49YUCpAg== - dependencies: - "@typescript-eslint/types" "5.27.1" - "@typescript-eslint/visitor-keys" "5.27.1" - "@typescript-eslint/scope-manager@5.28.0": version "5.28.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.28.0.tgz#ef9a5c68fecde72fd2ff8a84b9c120324826c1b9" @@ -2110,29 +2102,11 @@ debug "^4.3.4" tsutils "^3.21.0" -"@typescript-eslint/types@5.27.1": - version "5.27.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.27.1.tgz#34e3e629501349d38be6ae97841298c03a6ffbf1" - integrity sha512-LgogNVkBhCTZU/m8XgEYIWICD6m4dmEDbKXESCbqOXfKZxRKeqpiJXQIErv66sdopRKZPo5l32ymNqibYEH/xg== - "@typescript-eslint/types@5.28.0": version "5.28.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.28.0.tgz#cffd9bcdce28db6daaa146e48a0be4387a6f4e9d" integrity sha512-2OOm8ZTOQxqkPbf+DAo8oc16sDlVR5owgJfKheBkxBKg1vAfw2JsSofH9+16VPlN9PWtv8Wzhklkqw3k/zCVxA== -"@typescript-eslint/typescript-estree@5.27.1": - version "5.27.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.27.1.tgz#7621ee78607331821c16fffc21fc7a452d7bc808" - integrity sha512-DnZvvq3TAJ5ke+hk0LklvxwYsnXpRdqUY5gaVS0D4raKtbznPz71UJGnPTHEFo0GDxqLOLdMkkmVZjSpET1hFw== - dependencies: - "@typescript-eslint/types" "5.27.1" - "@typescript-eslint/visitor-keys" "5.27.1" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" - "@typescript-eslint/typescript-estree@5.28.0": version "5.28.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.28.0.tgz#3487d158d091ca2772b285e67412ff6d9797d863" @@ -2158,14 +2132,6 @@ eslint-scope "^5.1.1" eslint-utils "^3.0.0" -"@typescript-eslint/visitor-keys@5.27.1": - version "5.27.1" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.27.1.tgz#05a62666f2a89769dac2e6baa48f74e8472983af" - integrity sha512-xYs6ffo01nhdJgPieyk7HAOpjhTsx7r/oB9LWEhwAXgwn33tkr+W8DI2ChboqhZlC4q3TC6geDYPoiX8ROqyOQ== - dependencies: - "@typescript-eslint/types" "5.27.1" - eslint-visitor-keys "^3.3.0" - "@typescript-eslint/visitor-keys@5.28.0": version "5.28.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.28.0.tgz#982bb226b763c48fc1859a60de33fbf939d40a0f" @@ -9943,7 +9909,7 @@ webpack-sources@^3.2.3: resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde" integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w== -webpack@^5.37.0, webpack@^5.73.0: +webpack@^5.69.1, webpack@^5.73.0: version "5.73.0" resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.73.0.tgz#bbd17738f8a53ee5760ea2f59dce7f3431d35d38" integrity sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA== From b01177552b2146424b3a2ccd5de0d8f39c4a6b41 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Jun 2022 09:42:06 -0700 Subject: [PATCH 017/121] Bump @types/node from 17.0.40 to 18.0.0 (#825) Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 17.0.40 to 18.0.0. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@types/node" dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Nelson --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index c15fb4978..aa408474c 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "@types/ini": "^1.3.31", "@types/jest": "^27.5.0", "@types/luxon": "^2.3.2", - "@types/node": "^17.0.40", + "@types/node": "^18.0.0", "@types/pako": "^2.0.0", "@types/parse-git-config": "^3.0.1", "@types/parse-path": "^4.0.1", diff --git a/yarn.lock b/yarn.lock index c4fa4d213..e7654da7f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1853,10 +1853,10 @@ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== -"@types/node@*", "@types/node@^17.0.40": - version "17.0.40" - resolved "https://registry.yarnpkg.com/@types/node/-/node-17.0.40.tgz#76ee88ae03650de8064a6cf75b8d95f9f4a16090" - integrity sha512-UXdBxNGqTMtm7hCwh9HtncFVLrXoqA3oJW30j6XWp5BH/wu3mVeaxo7cq5benFdBw34HB3XDT2TRPI7rXZ+mDg== +"@types/node@*", "@types/node@^18.0.0": + version "18.0.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.0.0.tgz#67c7b724e1bcdd7a8821ce0d5ee184d3b4dd525a" + integrity sha512-cHlGmko4gWLVI27cGJntjs/Sj8th9aYwplmZFwmmgYQQvL5NUsgVJG7OddLvNfLqYS31KFN0s3qlaD9qCaxACA== "@types/node@^16.11.26": version "16.11.26" From 43d028e8430174744b832f7519511bf42fcb53f0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Jun 2022 09:46:44 -0700 Subject: [PATCH 018/121] Bump @testing-library/dom from 8.13.0 to 8.14.0 (#826) Bumps [@testing-library/dom](https://github.com/testing-library/dom-testing-library) from 8.13.0 to 8.14.0. - [Release notes](https://github.com/testing-library/dom-testing-library/releases) - [Changelog](https://github.com/testing-library/dom-testing-library/blob/main/CHANGELOG.md) - [Commits](https://github.com/testing-library/dom-testing-library/compare/v8.13.0...v8.14.0) --- updated-dependencies: - dependency-name: "@testing-library/dom" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Nelson --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index aa408474c..24ea66727 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "@electron-forge/maker-rpm": "^6.0.0-beta.64", "@electron-forge/maker-squirrel": "^6.0.0-beta.64", "@electron-forge/plugin-webpack": "6.0.0-beta.64", - "@testing-library/dom": "^8.13.0", + "@testing-library/dom": "^8.14.0", "@testing-library/jest-dom": "^5.16.4", "@testing-library/react": "^12.1.5", "@testing-library/react-hooks": "^8.0.1", diff --git a/yarn.lock b/yarn.lock index e7654da7f..c3d916fa6 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1546,10 +1546,10 @@ dependencies: defer-to-connect "^2.0.0" -"@testing-library/dom@^8.0.0", "@testing-library/dom@^8.13.0": - version "8.13.0" - resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.13.0.tgz#bc00bdd64c7d8b40841e27a70211399ad3af46f5" - integrity sha512-9VHgfIatKNXQNaZTtLnalIy0jNZzY35a4S3oi08YAt9Hv1VsfZ/DfA45lM8D/UhtHBGJ4/lGwp0PZkVndRkoOQ== +"@testing-library/dom@^8.0.0", "@testing-library/dom@^8.14.0": + version "8.14.0" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.14.0.tgz#c9830a21006d87b9ef6e1aae306cf49b0283e28e" + integrity sha512-m8FOdUo77iMTwVRCyzWcqxlEIk+GnopbrRI15a0EaLbpZSCinIVI4kSQzWhkShK83GogvEFJSsHF3Ws0z1vrqA== dependencies: "@babel/code-frame" "^7.10.4" "@babel/runtime" "^7.12.5" From da7e11fc75cf3b68da10dbb3e220bfe4243b5558 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Jun 2022 09:52:46 -0700 Subject: [PATCH 019/121] Bump eslint from 8.17.0 to 8.18.0 (#827) Bumps [eslint](https://github.com/eslint/eslint) from 8.17.0 to 8.18.0. - [Release notes](https://github.com/eslint/eslint/releases) - [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint/eslint/compare/v8.17.0...v8.18.0) --- updated-dependencies: - dependency-name: eslint dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Nelson --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 24ea66727..0692b61c4 100644 --- a/package.json +++ b/package.json @@ -72,7 +72,7 @@ "casual": "^1.6.2", "css-loader": "^6.7.1", "electron": "19.0.3", - "eslint": "^8.17.0", + "eslint": "^8.18.0", "eslint-plugin-import": "^2.26.0", "eslint-plugin-react-hooks": "^4.5.0", "eslint-plugin-testing-library": "^5.5.1", diff --git a/yarn.lock b/yarn.lock index c3d916fa6..6555d899f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4331,10 +4331,10 @@ eslint-visitor-keys@^3.3.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== -eslint@^8.17.0: - version "8.17.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.17.0.tgz#1cfc4b6b6912f77d24b874ca1506b0fe09328c21" - integrity sha512-gq0m0BTJfci60Fz4nczYxNAlED+sMcihltndR8t9t1evnU/azx53x3t2UHXC/uRjcbvRw/XctpaNygSTcQD+Iw== +eslint@^8.18.0: + version "8.18.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.18.0.tgz#78d565d16c993d0b73968c523c0446b13da784fd" + integrity sha512-As1EfFMVk7Xc6/CvhssHUjsAQSkpfXvUGMFC3ce8JDe6WvqCgRrLOBQbVpsBFr1X1V+RACOadnzVvcUS5ni2bA== dependencies: "@eslint/eslintrc" "^1.3.0" "@humanwhocodes/config-array" "^0.9.2" From 21374a8350f0fcee43c458a7afb006910f2ccf8e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Jun 2022 10:11:34 -0700 Subject: [PATCH 020/121] Bump eslint-plugin-react-hooks from 4.5.0 to 4.6.0 (#828) Bumps [eslint-plugin-react-hooks](https://github.com/facebook/react/tree/HEAD/packages/eslint-plugin-react-hooks) from 4.5.0 to 4.6.0. - [Release notes](https://github.com/facebook/react/releases) - [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/react/commits/HEAD/packages/eslint-plugin-react-hooks) --- updated-dependencies: - dependency-name: eslint-plugin-react-hooks dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Nelson --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 0692b61c4..d17c4c1c8 100644 --- a/package.json +++ b/package.json @@ -74,7 +74,7 @@ "electron": "19.0.3", "eslint": "^8.18.0", "eslint-plugin-import": "^2.26.0", - "eslint-plugin-react-hooks": "^4.5.0", + "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-testing-library": "^5.5.1", "file-loader": "^6.2.0", "fork-ts-checker-webpack-plugin": "^7.2.11", diff --git a/yarn.lock b/yarn.lock index 6555d899f..bbf2eef46 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4286,10 +4286,10 @@ eslint-plugin-import@^2.26.0: resolve "^1.22.0" tsconfig-paths "^3.14.1" -eslint-plugin-react-hooks@^4.5.0: - version "4.5.0" - resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.5.0.tgz#5f762dfedf8b2cf431c689f533c9d3fa5dcf25ad" - integrity sha512-8k1gRt7D7h03kd+SAAlzXkQwWK22BnK6GKZG+FJA6BAGy22CFvl8kCIXKpVux0cCxMWDQUPqSok0LKaZ0aOcCw== +eslint-plugin-react-hooks@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-4.6.0.tgz#4c3e697ad95b77e93f8646aaa1630c1ba607edd3" + integrity sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g== eslint-plugin-testing-library@^5.5.1: version "5.5.1" From fec4181acf4d8d195fc69d4e0d8747c42b063cf7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Jun 2022 10:15:05 -0700 Subject: [PATCH 021/121] Bump isomorphic-git from 1.17.3 to 1.18.3 (#830) Bumps [isomorphic-git](https://github.com/isomorphic-git/isomorphic-git) from 1.17.3 to 1.18.3. - [Release notes](https://github.com/isomorphic-git/isomorphic-git/releases) - [Changelog](https://github.com/isomorphic-git/isomorphic-git/blob/main/docs/in-the-news.md) - [Commits](https://github.com/isomorphic-git/isomorphic-git/compare/v1.17.3...v1.18.3) --- updated-dependencies: - dependency-name: isomorphic-git dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Nelson --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index d17c4c1c8..cd5e29dae 100644 --- a/package.json +++ b/package.json @@ -111,7 +111,7 @@ "git-config-path": "^2.0.0", "ignore": "^5.2.0", "ini": "^3.0.0", - "isomorphic-git": "^1.17.3", + "isomorphic-git": "^1.18.3", "luxon": "^2.4.0", "parse-git-config": "^3.0.0", "parse-path": "^4.0.4", diff --git a/yarn.lock b/yarn.lock index bbf2eef46..54fb61045 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5938,10 +5938,10 @@ isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= -isomorphic-git@^1.17.3: - version "1.17.3" - resolved "https://registry.yarnpkg.com/isomorphic-git/-/isomorphic-git-1.17.3.tgz#d4a4e7a2defc7e9c80d4d0bfd43c1e7d2bfb25ee" - integrity sha512-jEQtmg1lJ8ZiJLjJCCJDDIdXaeoHwqHFY7QCLgNw7GzZ6MktXLzKXnQsFRfIcm7sNYGt+w1/6FQTwO9zoHq/Fw== +isomorphic-git@^1.18.3: + version "1.18.3" + resolved "https://registry.yarnpkg.com/isomorphic-git/-/isomorphic-git-1.18.3.tgz#b2ef91688ac8f4315a8f3ce72f24a76c17bf61ad" + integrity sha512-CVTNt0uU5RQ4g626LxqUyShdoeD15uZppKA0tk7iY/PyikCbRG594a7BksU4JZcOC6RsqUkURdIlFyKhAfdbqg== dependencies: async-lock "^1.1.0" clean-git-ref "^2.0.1" From eaabe68cd947e6a18998dcbafe4a88e740d5ad5a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Jun 2022 10:23:20 -0700 Subject: [PATCH 022/121] Bump react-flow-renderer from 10.3.5 to 10.3.7 (#829) Bumps [react-flow-renderer](https://github.com/wbkd/react-flow) from 10.3.5 to 10.3.7. - [Release notes](https://github.com/wbkd/react-flow/releases) - [Changelog](https://github.com/wbkd/react-flow/blob/main/CHANGELOG.md) - [Commits](https://github.com/wbkd/react-flow/compare/10.3.5...10.3.7) --- updated-dependencies: - dependency-name: react-flow-renderer dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Nelson --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index cd5e29dae..95b59a5da 100644 --- a/package.json +++ b/package.json @@ -121,7 +121,7 @@ "react-dnd-html5-backend": "^15.1.2", "react-dnd-preview": "^6.0.2", "react-dom": "^17.0.2", - "react-flow-renderer": "^10.3.5", + "react-flow-renderer": "^10.3.7", "react-redux": "^7.2.6", "react-transition-group": "^4.4.2", "redux": "^4.2.0", diff --git a/yarn.lock b/yarn.lock index 54fb61045..ff70a582b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8233,10 +8233,10 @@ react-error-boundary@^3.1.0: dependencies: "@babel/runtime" "^7.12.5" -react-flow-renderer@^10.3.5: - version "10.3.5" - resolved "https://registry.yarnpkg.com/react-flow-renderer/-/react-flow-renderer-10.3.5.tgz#529cf325ce77b074ead5b531497b16cd1994ee93" - integrity sha512-5aIm4eqmYhSwnV34Zp+aLXLUQ4w5t9LJjPJmlzRWzXEKbLECAWdOjRO/0z+EW54jft7mqp2YaL62ukzmS/Ey3g== +react-flow-renderer@^10.3.7: + version "10.3.7" + resolved "https://registry.yarnpkg.com/react-flow-renderer/-/react-flow-renderer-10.3.7.tgz#2d5da283b5070a1aefe10849a7dadefc33282195" + integrity sha512-0WGyozT4SzMpim8MQRFBR8hqm11FGApXm+UD05BoAejhcUgohvmckBTRIQKxzGC2WQLR/6oXRzwzRYGQdrb4rw== dependencies: "@babel/runtime" "^7.18.0" classcat "^5.0.3" From 0e4d086ffa6a1e86e6966bd4dee4c11613705b53 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 23 Jun 2022 16:24:54 -0700 Subject: [PATCH 023/121] Bump electron from 19.0.3 to 19.0.6 (#837) Bumps [electron](https://github.com/electron/electron) from 19.0.3 to 19.0.6. - [Release notes](https://github.com/electron/electron/releases) - [Changelog](https://github.com/electron/electron/blob/main/docs/breaking-changes.md) - [Commits](https://github.com/electron/electron/compare/v19.0.3...v19.0.6) --- updated-dependencies: - dependency-name: electron dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 202 ++------------------------------------------------- 2 files changed, 6 insertions(+), 198 deletions(-) diff --git a/package.json b/package.json index 95b59a5da..6f27e2863 100644 --- a/package.json +++ b/package.json @@ -71,7 +71,7 @@ "@vercel/webpack-asset-relocator-loader": "1.7.2", "casual": "^1.6.2", "css-loader": "^6.7.1", - "electron": "19.0.3", + "electron": "19.0.6", "eslint": "^8.18.0", "eslint-plugin-import": "^2.26.0", "eslint-plugin-react-hooks": "^4.6.0", diff --git a/yarn.lock b/yarn.lock index ff70a582b..267cb00c4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -619,17 +619,6 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== -"@electron-forge/async-ora@6.0.0-beta.63": - version "6.0.0-beta.63" - resolved "https://registry.yarnpkg.com/@electron-forge/async-ora/-/async-ora-6.0.0-beta.63.tgz#b72343f204f7c74605df658d31cc4c137ad3009c" - integrity sha512-e1BbeUV20yWZWeRJ3LDLcloPPgHwTXV1wAJXpAdDbmTmcRyAGx9iVx2Qyh6t878c7zX36XXlqfCIOvODsgiuOQ== - dependencies: - chalk "^4.0.0" - debug "^4.3.1" - log-symbols "^4.0.0" - ora "^5.0.0" - pretty-ms "^7.0.0" - "@electron-forge/async-ora@6.0.0-beta.64": version "6.0.0-beta.64" resolved "https://registry.yarnpkg.com/@electron-forge/async-ora/-/async-ora-6.0.0-beta.64.tgz#40a35004b74aece2db8584dbaf034cf0d1f0864b" @@ -657,46 +646,6 @@ inquirer "^8.0.0" semver "^7.2.1" -"@electron-forge/core@6.0.0-beta.63": - version "6.0.0-beta.63" - resolved "https://registry.yarnpkg.com/@electron-forge/core/-/core-6.0.0-beta.63.tgz#511a89080664c5c661d6571e449c1a8a216b6d96" - integrity sha512-NuiWRXUfpv6/PwP8AgPxcmRPiWvQMfllTHz163wmBWz8UBclzhu7Brpu6dwmszAJG68erW15ym+cUlpvGDEltg== - dependencies: - "@electron-forge/async-ora" "6.0.0-beta.63" - "@electron-forge/installer-base" "6.0.0-beta.63" - "@electron-forge/installer-deb" "6.0.0-beta.63" - "@electron-forge/installer-dmg" "6.0.0-beta.63" - "@electron-forge/installer-exe" "6.0.0-beta.63" - "@electron-forge/installer-rpm" "6.0.0-beta.63" - "@electron-forge/installer-zip" "6.0.0-beta.63" - "@electron-forge/maker-base" "6.0.0-beta.63" - "@electron-forge/plugin-base" "6.0.0-beta.63" - "@electron-forge/publisher-base" "6.0.0-beta.63" - "@electron-forge/shared-types" "6.0.0-beta.63" - "@electron-forge/template-base" "6.0.0-beta.63" - "@electron-forge/template-typescript" "6.0.0-beta.63" - "@electron-forge/template-typescript-webpack" "6.0.0-beta.63" - "@electron-forge/template-webpack" "6.0.0-beta.63" - "@electron/get" "^1.9.0" - "@malept/cross-spawn-promise" "^2.0.0" - chalk "^4.0.0" - debug "^4.3.1" - electron-packager "^15.4.0" - electron-rebuild "^3.2.6" - fast-glob "^3.2.7" - find-up "^5.0.0" - fs-extra "^10.0.0" - lodash "^4.17.20" - log-symbols "^4.0.0" - node-fetch "^2.6.0" - nugget "^2.0.1" - resolve-package "^1.0.1" - semver "^7.2.1" - source-map-support "^0.5.13" - sudo-prompt "^9.1.1" - username "^5.1.0" - yarn-or-npm "^3.0.1" - "@electron-forge/core@6.0.0-beta.64": version "6.0.0-beta.64" resolved "https://registry.yarnpkg.com/@electron-forge/core/-/core-6.0.0-beta.64.tgz#601f84c655fc813101c355b80d4b227701052727" @@ -738,13 +687,6 @@ username "^5.1.0" yarn-or-npm "^3.0.1" -"@electron-forge/installer-base@6.0.0-beta.63": - version "6.0.0-beta.63" - resolved "https://registry.yarnpkg.com/@electron-forge/installer-base/-/installer-base-6.0.0-beta.63.tgz#9ce2542a604526b585b2e874d891196b2beff8ce" - integrity sha512-y4SKJZaxE8lnfwicWuAiUZBpBY6UB/mE/dA+w6uigKEffZzRPbrbBUIuknII6wEaFnnScmCrQaBRjxy+zsEihQ== - dependencies: - "@electron-forge/async-ora" "6.0.0-beta.63" - "@electron-forge/installer-base@6.0.0-beta.64": version "6.0.0-beta.64" resolved "https://registry.yarnpkg.com/@electron-forge/installer-base/-/installer-base-6.0.0-beta.64.tgz#6d99860a1d2829810a339608e374c415ad55c69a" @@ -752,16 +694,6 @@ dependencies: "@electron-forge/async-ora" "6.0.0-beta.64" -"@electron-forge/installer-darwin@6.0.0-beta.63": - version "6.0.0-beta.63" - resolved "https://registry.yarnpkg.com/@electron-forge/installer-darwin/-/installer-darwin-6.0.0-beta.63.tgz#6ea0f1d169d878416c6fb545292a4a6cb14962c6" - integrity sha512-LQE6UKPP7tJ+Ki3tPzYUIBRAAzEpalqkz8zYUh+2pS/nk9w2BgQeOJ84NzWUfoeLWZnsWtjp8kox8xTS8/BsSQ== - dependencies: - "@electron-forge/async-ora" "6.0.0-beta.63" - "@electron-forge/installer-base" "6.0.0-beta.63" - fs-extra "^10.0.0" - sudo-prompt "^9.1.1" - "@electron-forge/installer-darwin@6.0.0-beta.64": version "6.0.0-beta.64" resolved "https://registry.yarnpkg.com/@electron-forge/installer-darwin/-/installer-darwin-6.0.0-beta.64.tgz#63e88adb27c32189346e452667c4ab4dfe6f81df" @@ -772,13 +704,6 @@ fs-extra "^10.0.0" sudo-prompt "^9.1.1" -"@electron-forge/installer-deb@6.0.0-beta.63": - version "6.0.0-beta.63" - resolved "https://registry.yarnpkg.com/@electron-forge/installer-deb/-/installer-deb-6.0.0-beta.63.tgz#9ae9c761335bf0f11ba971296a26acde4413d331" - integrity sha512-gvjCXdGXBxC/O8QuwNHKsLIlfOwVc9y/e5pURcuFRvPf7Ibw7e53w3pfR2pquWHNzAccrw8P5WBEuPSeDPBlLw== - dependencies: - "@electron-forge/installer-linux" "6.0.0-beta.63" - "@electron-forge/installer-deb@6.0.0-beta.64": version "6.0.0-beta.64" resolved "https://registry.yarnpkg.com/@electron-forge/installer-deb/-/installer-deb-6.0.0-beta.64.tgz#affc78628775c2a817a59aee51fc58d14bfcb67f" @@ -786,16 +711,6 @@ dependencies: "@electron-forge/installer-linux" "6.0.0-beta.64" -"@electron-forge/installer-dmg@6.0.0-beta.63": - version "6.0.0-beta.63" - resolved "https://registry.yarnpkg.com/@electron-forge/installer-dmg/-/installer-dmg-6.0.0-beta.63.tgz#245b6fd39679c49e404317b6e95b48432fde07cc" - integrity sha512-o+Zd2CmpoMQOk9SfuUPIoQ4GONVNHdlmI4mMIJ22OrLQnZJYAdsQUFO87jtxmJuippTpEbnqaKc9yl6mLh89TQ== - dependencies: - "@electron-forge/installer-darwin" "6.0.0-beta.63" - "@malept/cross-spawn-promise" "^2.0.0" - debug "^4.3.1" - fs-extra "^10.0.0" - "@electron-forge/installer-dmg@6.0.0-beta.64": version "6.0.0-beta.64" resolved "https://registry.yarnpkg.com/@electron-forge/installer-dmg/-/installer-dmg-6.0.0-beta.64.tgz#92c3f2656572a22fdb7756f13e15ac102aabebf3" @@ -806,14 +721,6 @@ debug "^4.3.1" fs-extra "^10.0.0" -"@electron-forge/installer-exe@6.0.0-beta.63": - version "6.0.0-beta.63" - resolved "https://registry.yarnpkg.com/@electron-forge/installer-exe/-/installer-exe-6.0.0-beta.63.tgz#8d89bb8bb0d94bd2694c6e7192d57d43a3f0074a" - integrity sha512-HhogUMTTgOXTEMQE+A20USamuAcnClSSWzlInzVQ2cGT5AdZio6zqNJ/et7zPx7Jz71gmJ/cfhNstzc/ew1IAA== - dependencies: - "@electron-forge/installer-base" "6.0.0-beta.63" - open "^8.1.0" - "@electron-forge/installer-exe@6.0.0-beta.64": version "6.0.0-beta.64" resolved "https://registry.yarnpkg.com/@electron-forge/installer-exe/-/installer-exe-6.0.0-beta.64.tgz#24958128d75bdefc687475fd8159c74432d0a3a8" @@ -822,14 +729,6 @@ "@electron-forge/installer-base" "6.0.0-beta.64" open "^8.1.0" -"@electron-forge/installer-linux@6.0.0-beta.63": - version "6.0.0-beta.63" - resolved "https://registry.yarnpkg.com/@electron-forge/installer-linux/-/installer-linux-6.0.0-beta.63.tgz#cf47e247ec1b507dcb586e08cf9e95cc81b7da06" - integrity sha512-yC2wYQ3uXGnvWEG4AdjSmas5qaXXtXIoxO6/cXJrywMT9ujWlp2GB1i+I5xrFCusgbjdvdzJ3JhLRmIAKpW6ZA== - dependencies: - "@electron-forge/installer-base" "6.0.0-beta.63" - sudo-prompt "^9.1.1" - "@electron-forge/installer-linux@6.0.0-beta.64": version "6.0.0-beta.64" resolved "https://registry.yarnpkg.com/@electron-forge/installer-linux/-/installer-linux-6.0.0-beta.64.tgz#fd0dbc74bfd34c959a5c11de85d2090fe341df06" @@ -838,13 +737,6 @@ "@electron-forge/installer-base" "6.0.0-beta.64" sudo-prompt "^9.1.1" -"@electron-forge/installer-rpm@6.0.0-beta.63": - version "6.0.0-beta.63" - resolved "https://registry.yarnpkg.com/@electron-forge/installer-rpm/-/installer-rpm-6.0.0-beta.63.tgz#faf2cecac309971fc0cb4fa94f83ad1764af0aee" - integrity sha512-4p+zDInl6sMnx1jdIcRSXgRAGFSwtcBPBStAlVuxPMefM8ElBPhskUyHrk33TqMZUdzbr+vYA+pQGj/6jlET4A== - dependencies: - "@electron-forge/installer-linux" "6.0.0-beta.63" - "@electron-forge/installer-rpm@6.0.0-beta.64": version "6.0.0-beta.64" resolved "https://registry.yarnpkg.com/@electron-forge/installer-rpm/-/installer-rpm-6.0.0-beta.64.tgz#51b038493538346edf2955d2a82349f7e1b8f8bd" @@ -852,15 +744,6 @@ dependencies: "@electron-forge/installer-linux" "6.0.0-beta.64" -"@electron-forge/installer-zip@6.0.0-beta.63": - version "6.0.0-beta.63" - resolved "https://registry.yarnpkg.com/@electron-forge/installer-zip/-/installer-zip-6.0.0-beta.63.tgz#4d6e6cbd8c0c45438a16b2f349971b58311dbe6f" - integrity sha512-ZORm3jVvswvKSv+iuufTVXwIM/OOtBSQPeAay8hVubf6MudWBdntWv1Xg/BAUAcdRbAH/EIbMv83LZvmt7cufw== - dependencies: - "@electron-forge/installer-darwin" "6.0.0-beta.63" - "@malept/cross-spawn-promise" "^2.0.0" - fs-extra "^10.0.0" - "@electron-forge/installer-zip@6.0.0-beta.64": version "6.0.0-beta.64" resolved "https://registry.yarnpkg.com/@electron-forge/installer-zip/-/installer-zip-6.0.0-beta.64.tgz#192c042f4efb89df3eb4b922e4cf362cba48e229" @@ -870,15 +753,6 @@ "@malept/cross-spawn-promise" "^2.0.0" fs-extra "^10.0.0" -"@electron-forge/maker-base@6.0.0-beta.63": - version "6.0.0-beta.63" - resolved "https://registry.yarnpkg.com/@electron-forge/maker-base/-/maker-base-6.0.0-beta.63.tgz#4e9cbff3775bea08938dd3aa5a48c3e9479b9be6" - integrity sha512-0Fh6OOjS/1sXIGReKgU5NCMf8ZUyaCUSjd190oUNaX8OSxGDbHrbWO3CgIbsAOsxRnxzhYY1UtPo6VkexjCQBA== - dependencies: - "@electron-forge/shared-types" "6.0.0-beta.63" - fs-extra "^10.0.0" - which "^2.0.2" - "@electron-forge/maker-base@6.0.0-beta.64": version "6.0.0-beta.64" resolved "https://registry.yarnpkg.com/@electron-forge/maker-base/-/maker-base-6.0.0-beta.64.tgz#0f19563a06f0e5499892aec9fe8edd8853304b29" @@ -930,13 +804,6 @@ optionalDependencies: electron-winstaller "^5.0.0" -"@electron-forge/plugin-base@6.0.0-beta.63": - version "6.0.0-beta.63" - resolved "https://registry.yarnpkg.com/@electron-forge/plugin-base/-/plugin-base-6.0.0-beta.63.tgz#4895d846d5c643296db9892af2a74238bc8637d7" - integrity sha512-K9nyGRI9NY2kax7aS/1eWxGrOSwNO3JnmbfvFQf5I0Yl/HKClrfGJq4o3q4N9lf55arPRJBROP8+rHJ115VCrA== - dependencies: - "@electron-forge/shared-types" "6.0.0-beta.63" - "@electron-forge/plugin-base@6.0.0-beta.64": version "6.0.0-beta.64" resolved "https://registry.yarnpkg.com/@electron-forge/plugin-base/-/plugin-base-6.0.0-beta.64.tgz#ac7ca34e8af2b0b7d2cc8e6079656a20890c4402" @@ -963,13 +830,6 @@ webpack-dev-server "^4.0.0" webpack-merge "^5.7.3" -"@electron-forge/publisher-base@6.0.0-beta.63": - version "6.0.0-beta.63" - resolved "https://registry.yarnpkg.com/@electron-forge/publisher-base/-/publisher-base-6.0.0-beta.63.tgz#b7327eaa446995c8d7243757829d7fd92d1c2d77" - integrity sha512-ag+/e6eqM6k1jxUhXg8618IbUa1IsF8OcbZtjcLSZSp/ZEGLAlZ3IpfIrk5C9cRUdibhDJyT6oFLfbG7KUhpRg== - dependencies: - "@electron-forge/shared-types" "6.0.0-beta.63" - "@electron-forge/publisher-base@6.0.0-beta.64": version "6.0.0-beta.64" resolved "https://registry.yarnpkg.com/@electron-forge/publisher-base/-/publisher-base-6.0.0-beta.64.tgz#eabd42672a1cb5d1861efd27350c0c5c162116c4" @@ -977,16 +837,6 @@ dependencies: "@electron-forge/shared-types" "6.0.0-beta.64" -"@electron-forge/shared-types@6.0.0-beta.63": - version "6.0.0-beta.63" - resolved "https://registry.yarnpkg.com/@electron-forge/shared-types/-/shared-types-6.0.0-beta.63.tgz#d15aec5698f6e22b61060a4064955a04c2cedc39" - integrity sha512-ayw8IBtHKZ1oIN3y3t3Jm80TTvstvKrPASCXMEJ/fh4gHah8pUmDFZEvyAsGgy/XFHqsjlpTmD2hdOtQqCRpMQ== - dependencies: - "@electron-forge/async-ora" "6.0.0-beta.63" - electron-packager "^15.4.0" - electron-rebuild "^3.2.6" - ora "^5.0.0" - "@electron-forge/shared-types@6.0.0-beta.64": version "6.0.0-beta.64" resolved "https://registry.yarnpkg.com/@electron-forge/shared-types/-/shared-types-6.0.0-beta.64.tgz#be87fe0bd4b27ca8d3b93b9bd943f59bf56befd4" @@ -997,18 +847,6 @@ electron-rebuild "^3.2.6" ora "^5.0.0" -"@electron-forge/template-base@6.0.0-beta.63": - version "6.0.0-beta.63" - resolved "https://registry.yarnpkg.com/@electron-forge/template-base/-/template-base-6.0.0-beta.63.tgz#62f929faa210727863e56402f2b83d9d61d3b2f2" - integrity sha512-u1rPlrc8bqajkiKe2tmGROL9/o0xx8OzMBHsT7i2+oAFPicSZoyrELCxx9htCeLgUf0iR0K0EzLsFjdyRjTBkg== - dependencies: - "@electron-forge/async-ora" "6.0.0-beta.63" - "@electron-forge/shared-types" "6.0.0-beta.63" - "@malept/cross-spawn-promise" "^2.0.0" - debug "^4.3.1" - fs-extra "^10.0.0" - username "^5.1.0" - "@electron-forge/template-base@6.0.0-beta.64": version "6.0.0-beta.64" resolved "https://registry.yarnpkg.com/@electron-forge/template-base/-/template-base-6.0.0-beta.64.tgz#e1634ad8a75c0ddf566f3a5401269c00e1799427" @@ -1021,16 +859,6 @@ fs-extra "^10.0.0" username "^5.1.0" -"@electron-forge/template-typescript-webpack@6.0.0-beta.63": - version "6.0.0-beta.63" - resolved "https://registry.yarnpkg.com/@electron-forge/template-typescript-webpack/-/template-typescript-webpack-6.0.0-beta.63.tgz#4eff34f0ba5d87ba8a3e57f70153aa4c0e782c56" - integrity sha512-8S3GW2MRmYF6BsgozCm0CPqAuqaK48MZvJJ3v3XbO1tWPtz4vvw21XxQeOqRMpECdNbqnRBtil4QxVditEx3Kw== - dependencies: - "@electron-forge/async-ora" "6.0.0-beta.63" - "@electron-forge/shared-types" "6.0.0-beta.63" - "@electron-forge/template-base" "6.0.0-beta.63" - fs-extra "^10.0.0" - "@electron-forge/template-typescript-webpack@6.0.0-beta.64": version "6.0.0-beta.64" resolved "https://registry.yarnpkg.com/@electron-forge/template-typescript-webpack/-/template-typescript-webpack-6.0.0-beta.64.tgz#1ce6e10d1d940a657defed270df80ff5eba3a837" @@ -1041,16 +869,6 @@ "@electron-forge/template-base" "6.0.0-beta.64" fs-extra "^10.0.0" -"@electron-forge/template-typescript@6.0.0-beta.63": - version "6.0.0-beta.63" - resolved "https://registry.yarnpkg.com/@electron-forge/template-typescript/-/template-typescript-6.0.0-beta.63.tgz#87d06f9f1f866d921d9fed0913e4b9d03b5f09b5" - integrity sha512-npFOyak+F+p086GoSifCWwhBxRSJqzzvEwztnONpbjp7BasvtWUyOVpXyyzvt7GaawjRg5Gx/NUgVi5Oi9BIfg== - dependencies: - "@electron-forge/async-ora" "6.0.0-beta.63" - "@electron-forge/shared-types" "6.0.0-beta.63" - "@electron-forge/template-base" "6.0.0-beta.63" - fs-extra "^10.0.0" - "@electron-forge/template-typescript@6.0.0-beta.64": version "6.0.0-beta.64" resolved "https://registry.yarnpkg.com/@electron-forge/template-typescript/-/template-typescript-6.0.0-beta.64.tgz#00f3eb3f4a3fd28ebbde54102aec98377f7cc50b" @@ -1061,16 +879,6 @@ "@electron-forge/template-base" "6.0.0-beta.64" fs-extra "^10.0.0" -"@electron-forge/template-webpack@6.0.0-beta.63": - version "6.0.0-beta.63" - resolved "https://registry.yarnpkg.com/@electron-forge/template-webpack/-/template-webpack-6.0.0-beta.63.tgz#090203523f58a31354921cde2e1ba3f21ac74b43" - integrity sha512-CE5zjnyfmHlapwQSJ54kUeTNsvhx/7HAjvfMXpE689LxlFnr0VhiTxuc5kwEetPcxsXhei7IBy/PdJ41v4dswA== - dependencies: - "@electron-forge/async-ora" "6.0.0-beta.63" - "@electron-forge/shared-types" "6.0.0-beta.63" - "@electron-forge/template-base" "6.0.0-beta.63" - fs-extra "^10.0.0" - "@electron-forge/template-webpack@6.0.0-beta.64": version "6.0.0-beta.64" resolved "https://registry.yarnpkg.com/@electron-forge/template-webpack/-/template-webpack-6.0.0-beta.64.tgz#565fc2fc4eea237aa0ced9e400ff7243ff7968a1" @@ -4091,10 +3899,10 @@ electron-winstaller@^5.0.0: lodash.template "^4.2.2" temp "^0.9.0" -electron@19.0.3: - version "19.0.3" - resolved "https://registry.yarnpkg.com/electron/-/electron-19.0.3.tgz#e8289e45d58b2603f406e24f7117bb3fae5362d3" - integrity sha512-V/8pFkXUOsoHcBzuTYVSbIQKLIwI/FAxfpvbkMazdaO/weZoIf9AN3Qc4Wuo9+489mhelDYc8lSX5N7c6A5n6A== +electron@19.0.6: + version "19.0.6" + resolved "https://registry.yarnpkg.com/electron/-/electron-19.0.6.tgz#7aacfa4e968f134eecc36a1b03e3f9954ed8f6a5" + integrity sha512-S9Yud32nKhB0iWC0lGl2JXz4FQnCiLCnP5Vehm1/CqyeICcQGmgQaZl2HYpCJ2pesKIsYL9nsgmku/10cxm/gg== dependencies: "@electron/get" "^1.14.1" "@types/node" "^16.11.26" @@ -7274,7 +7082,7 @@ node-api-version@^0.1.4: dependencies: semver "^7.3.5" -node-fetch@^2.6.0, node-fetch@^2.6.7: +node-fetch@^2.6.7: version "2.6.7" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.7.tgz#24de9fba827e3b4ae44dc8b20256a379160052ad" integrity sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ== From 182d3ffb11865a2f1ba2d4afef8bc981cfe96981 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 23 Jun 2022 16:29:18 -0700 Subject: [PATCH 024/121] Bump react-flow-renderer from 10.3.7 to 10.3.8 (#836) Bumps [react-flow-renderer](https://github.com/wbkd/react-flow) from 10.3.7 to 10.3.8. - [Release notes](https://github.com/wbkd/react-flow/releases) - [Changelog](https://github.com/wbkd/react-flow/blob/main/CHANGELOG.md) - [Commits](https://github.com/wbkd/react-flow/compare/10.3.7...10.3.8) --- updated-dependencies: - dependency-name: react-flow-renderer dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Nelson --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 6f27e2863..63a5774da 100644 --- a/package.json +++ b/package.json @@ -121,7 +121,7 @@ "react-dnd-html5-backend": "^15.1.2", "react-dnd-preview": "^6.0.2", "react-dom": "^17.0.2", - "react-flow-renderer": "^10.3.7", + "react-flow-renderer": "^10.3.8", "react-redux": "^7.2.6", "react-transition-group": "^4.4.2", "redux": "^4.2.0", diff --git a/yarn.lock b/yarn.lock index 267cb00c4..69e36446c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8041,10 +8041,10 @@ react-error-boundary@^3.1.0: dependencies: "@babel/runtime" "^7.12.5" -react-flow-renderer@^10.3.7: - version "10.3.7" - resolved "https://registry.yarnpkg.com/react-flow-renderer/-/react-flow-renderer-10.3.7.tgz#2d5da283b5070a1aefe10849a7dadefc33282195" - integrity sha512-0WGyozT4SzMpim8MQRFBR8hqm11FGApXm+UD05BoAejhcUgohvmckBTRIQKxzGC2WQLR/6oXRzwzRYGQdrb4rw== +react-flow-renderer@^10.3.8: + version "10.3.8" + resolved "https://registry.yarnpkg.com/react-flow-renderer/-/react-flow-renderer-10.3.8.tgz#23525887ef707e6cd540777a4d2329e91311856d" + integrity sha512-owtDCSK6rATiZipew2OYSPPu2sd0VM/QCydN9S+ivrMVwR0vNSSwtsWKqJSq8DL5wXtIEed5gPi4yJqXJA7tLQ== dependencies: "@babel/runtime" "^7.18.0" classcat "^5.0.3" From 16a7a5a5781ae2be5bf184d81511da82874020c9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 23 Jun 2022 17:12:44 -0700 Subject: [PATCH 025/121] Bump @types/react-transition-group from 4.4.4 to 4.4.5 (#835) Bumps [@types/react-transition-group](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/react-transition-group) from 4.4.4 to 4.4.5. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/react-transition-group) --- updated-dependencies: - dependency-name: "@types/react-transition-group" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Nelson --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 63a5774da..a61ff2385 100644 --- a/package.json +++ b/package.json @@ -60,7 +60,7 @@ "@types/parse-path": "^4.0.1", "@types/react": "^18.0.9", "@types/react-dom": "^18.0.3", - "@types/react-transition-group": "^4.4.4", + "@types/react-transition-group": "^4.4.5", "@types/redux-mock-store": "^1.0.3", "@types/sha1": "^1.1.3", "@types/uuid": "^8.3.4", diff --git a/yarn.lock b/yarn.lock index 69e36446c..0c8472eb4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1737,10 +1737,10 @@ hoist-non-react-statics "^3.3.0" redux "^4.0.0" -"@types/react-transition-group@^4.2.0", "@types/react-transition-group@^4.4.4": - version "4.4.4" - resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.4.tgz#acd4cceaa2be6b757db61ed7b432e103242d163e" - integrity sha512-7gAPz7anVK5xzbeQW9wFBDg7G++aPLAFY0QaSMOou9rJZpbuI58WAuJrgu+qR92l61grlnCUe7AFX8KGahAgug== +"@types/react-transition-group@^4.2.0", "@types/react-transition-group@^4.4.5": + version "4.4.5" + resolved "https://registry.yarnpkg.com/@types/react-transition-group/-/react-transition-group-4.4.5.tgz#aae20dcf773c5aa275d5b9f7cdbca638abc5e416" + integrity sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA== dependencies: "@types/react" "*" From bed65163849d15c88369809541d9735f451a5f4e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 23 Jun 2022 17:20:24 -0700 Subject: [PATCH 026/121] Bump ts-loader from 9.3.0 to 9.3.1 (#832) Bumps [ts-loader](https://github.com/TypeStrong/ts-loader) from 9.3.0 to 9.3.1. - [Release notes](https://github.com/TypeStrong/ts-loader/releases) - [Changelog](https://github.com/TypeStrong/ts-loader/blob/main/CHANGELOG.md) - [Commits](https://github.com/TypeStrong/ts-loader/compare/v9.3.0...v9.3.1) --- updated-dependencies: - dependency-name: ts-loader dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Nelson --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index a61ff2385..253e7b9c9 100644 --- a/package.json +++ b/package.json @@ -91,7 +91,7 @@ "redux-mock-store": "^1.5.4", "style-loader": "^3.3.1", "ts-jest": "^27.1.4", - "ts-loader": "^9.3.0", + "ts-loader": "^9.3.1", "typescript": "^4.7.4", "valid-url": "^1.0.9", "validator": "^13.7.0", diff --git a/yarn.lock b/yarn.lock index 0c8472eb4..5e3474afb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9340,10 +9340,10 @@ ts-jest@^27.1.4: semver "7.x" yargs-parser "20.x" -ts-loader@^9.3.0: - version "9.3.0" - resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.3.0.tgz#980f4dbfb60e517179e15e10ed98e454b132159f" - integrity sha512-2kLLAdAD+FCKijvGKi9sS0OzoqxLCF3CxHpok7rVgCZ5UldRzH0TkbwG9XECKjBzHsAewntC5oDaI/FwKzEUog== +ts-loader@^9.3.1: + version "9.3.1" + resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.3.1.tgz#fe25cca56e3e71c1087fe48dc67f4df8c59b22d4" + integrity sha512-OkyShkcZTsTwyS3Kt7a4rsT/t2qvEVQuKCTg4LJmpj9fhFR7ukGdZwV6Qq3tRUkqcXtfGpPR7+hFKHCG/0d3Lw== dependencies: chalk "^4.1.0" enhanced-resolve "^5.0.0" From 0d0e265d9662993ad2956123bcc1675c9410f64a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 23 Jun 2022 17:53:28 -0700 Subject: [PATCH 027/121] Bump @typescript-eslint/parser from 5.28.0 to 5.29.0 (#834) Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.28.0 to 5.29.0. - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.29.0/packages/parser) --- updated-dependencies: - dependency-name: "@typescript-eslint/parser" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Nelson --- package.json | 2 +- yarn.lock | 50 ++++++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 43 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index 253e7b9c9..aea9cf5b4 100644 --- a/package.json +++ b/package.json @@ -67,7 +67,7 @@ "@types/valid-url": "^1.0.3", "@types/validator": "^13.7.3", "@typescript-eslint/eslint-plugin": "^5.28.0", - "@typescript-eslint/parser": "^5.28.0", + "@typescript-eslint/parser": "^5.29.0", "@vercel/webpack-asset-relocator-loader": "1.7.2", "casual": "^1.6.2", "css-loader": "^6.7.1", diff --git a/yarn.lock b/yarn.lock index 5e3474afb..85d37221e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1883,14 +1883,14 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/parser@^5.28.0": - version "5.28.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.28.0.tgz#639b101cad2bfb7ae16e69710ac95c42bd4eae33" - integrity sha512-ekqoNRNK1lAcKhZESN/PdpVsWbP9jtiNqzFWkp/yAUdZvJalw2heCYuqRmM5eUJSIYEkgq5sGOjq+ZqsLMjtRA== - dependencies: - "@typescript-eslint/scope-manager" "5.28.0" - "@typescript-eslint/types" "5.28.0" - "@typescript-eslint/typescript-estree" "5.28.0" +"@typescript-eslint/parser@^5.29.0": + version "5.29.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.29.0.tgz#41314b195b34d44ff38220caa55f3f93cfca43cf" + integrity sha512-ruKWTv+x0OOxbzIw9nW5oWlUopvP/IQDjB5ZqmTglLIoDTctLlAJpAQFpNPJP/ZI7hTT9sARBosEfaKbcFuECw== + dependencies: + "@typescript-eslint/scope-manager" "5.29.0" + "@typescript-eslint/types" "5.29.0" + "@typescript-eslint/typescript-estree" "5.29.0" debug "^4.3.4" "@typescript-eslint/scope-manager@5.28.0": @@ -1901,6 +1901,14 @@ "@typescript-eslint/types" "5.28.0" "@typescript-eslint/visitor-keys" "5.28.0" +"@typescript-eslint/scope-manager@5.29.0": + version "5.29.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.29.0.tgz#2a6a32e3416cb133e9af8dcf54bf077a916aeed3" + integrity sha512-etbXUT0FygFi2ihcxDZjz21LtC+Eps9V2xVx09zFoN44RRHPrkMflidGMI+2dUs821zR1tDS6Oc9IXxIjOUZwA== + dependencies: + "@typescript-eslint/types" "5.29.0" + "@typescript-eslint/visitor-keys" "5.29.0" + "@typescript-eslint/type-utils@5.28.0": version "5.28.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.28.0.tgz#53ccc78fdcf0205ef544d843b84104c0e9c7ca8e" @@ -1915,6 +1923,11 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.28.0.tgz#cffd9bcdce28db6daaa146e48a0be4387a6f4e9d" integrity sha512-2OOm8ZTOQxqkPbf+DAo8oc16sDlVR5owgJfKheBkxBKg1vAfw2JsSofH9+16VPlN9PWtv8Wzhklkqw3k/zCVxA== +"@typescript-eslint/types@5.29.0": + version "5.29.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.29.0.tgz#7861d3d288c031703b2d97bc113696b4d8c19aab" + integrity sha512-X99VbqvAXOMdVyfFmksMy3u8p8yoRGITgU1joBJPzeYa0rhdf5ok9S56/itRoUSh99fiDoMtarSIJXo7H/SnOg== + "@typescript-eslint/typescript-estree@5.28.0": version "5.28.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.28.0.tgz#3487d158d091ca2772b285e67412ff6d9797d863" @@ -1928,6 +1941,19 @@ semver "^7.3.7" tsutils "^3.21.0" +"@typescript-eslint/typescript-estree@5.29.0": + version "5.29.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.29.0.tgz#e83d19aa7fd2e74616aab2f25dfbe4de4f0b5577" + integrity sha512-mQvSUJ/JjGBdvo+1LwC+GY2XmSYjK1nAaVw2emp/E61wEVYEyibRHCqm1I1vEKbXCpUKuW4G7u9ZCaZhJbLoNQ== + dependencies: + "@typescript-eslint/types" "5.29.0" + "@typescript-eslint/visitor-keys" "5.29.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + "@typescript-eslint/utils@5.28.0", "@typescript-eslint/utils@^5.13.0": version "5.28.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.28.0.tgz#b27a136eac300a48160b36d2aad0da44a1341b99" @@ -1948,6 +1974,14 @@ "@typescript-eslint/types" "5.28.0" eslint-visitor-keys "^3.3.0" +"@typescript-eslint/visitor-keys@5.29.0": + version "5.29.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.29.0.tgz#7a4749fa7ef5160c44a451bf060ac1dc6dfb77ee" + integrity sha512-Hpb/mCWsjILvikMQoZIE3voc9wtQcS0A9FUw3h8bhr9UxBdtI/tw1ZDZUOXHXLOVMedKCH5NxyzATwnU78bWCQ== + dependencies: + "@typescript-eslint/types" "5.29.0" + eslint-visitor-keys "^3.3.0" + "@vercel/webpack-asset-relocator-loader@1.7.2": version "1.7.2" resolved "https://registry.yarnpkg.com/@vercel/webpack-asset-relocator-loader/-/webpack-asset-relocator-loader-1.7.2.tgz#0210abd8d53b2799d53156dd0c18a4ef4e3b51cb" From 53d2f109f6b0fd22c1572c54f69ff9cfd56a922d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 23 Jun 2022 18:03:14 -0700 Subject: [PATCH 028/121] Bump @typescript-eslint/eslint-plugin from 5.28.0 to 5.29.0 (#833) Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 5.28.0 to 5.29.0. - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.29.0/packages/eslint-plugin) --- updated-dependencies: - dependency-name: "@typescript-eslint/eslint-plugin" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Nelson --- package.json | 2 +- yarn.lock | 38 +++++++++++++++++++------------------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/package.json b/package.json index aea9cf5b4..6d170cb85 100644 --- a/package.json +++ b/package.json @@ -66,7 +66,7 @@ "@types/uuid": "^8.3.4", "@types/valid-url": "^1.0.3", "@types/validator": "^13.7.3", - "@typescript-eslint/eslint-plugin": "^5.28.0", + "@typescript-eslint/eslint-plugin": "^5.29.0", "@typescript-eslint/parser": "^5.29.0", "@vercel/webpack-asset-relocator-loader": "1.7.2", "casual": "^1.6.2", diff --git a/yarn.lock b/yarn.lock index 85d37221e..e87f9ee4e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1868,14 +1868,14 @@ dependencies: "@types/node" "*" -"@typescript-eslint/eslint-plugin@^5.28.0": - version "5.28.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.28.0.tgz#6204ac33bdd05ab27c7f77960f1023951115d403" - integrity sha512-DXVU6Cg29H2M6EybqSg2A+x8DgO9TCUBRp4QEXQHJceLS7ogVDP0g3Lkg/SZCqcvkAP/RruuQqK0gdlkgmhSUA== +"@typescript-eslint/eslint-plugin@^5.29.0": + version "5.29.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.29.0.tgz#c67794d2b0fd0b4a47f50266088acdc52a08aab6" + integrity sha512-kgTsISt9pM53yRFQmLZ4npj99yGl3x3Pl7z4eA66OuTzAGC4bQB5H5fuLwPnqTKU3yyrrg4MIhjF17UYnL4c0w== dependencies: - "@typescript-eslint/scope-manager" "5.28.0" - "@typescript-eslint/type-utils" "5.28.0" - "@typescript-eslint/utils" "5.28.0" + "@typescript-eslint/scope-manager" "5.29.0" + "@typescript-eslint/type-utils" "5.29.0" + "@typescript-eslint/utils" "5.29.0" debug "^4.3.4" functional-red-black-tree "^1.0.1" ignore "^5.2.0" @@ -1909,12 +1909,12 @@ "@typescript-eslint/types" "5.29.0" "@typescript-eslint/visitor-keys" "5.29.0" -"@typescript-eslint/type-utils@5.28.0": - version "5.28.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.28.0.tgz#53ccc78fdcf0205ef544d843b84104c0e9c7ca8e" - integrity sha512-SyKjKh4CXPglueyC6ceAFytjYWMoPHMswPQae236zqe1YbhvCVQyIawesYywGiu98L9DwrxsBN69vGIVxJ4mQQ== +"@typescript-eslint/type-utils@5.29.0": + version "5.29.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.29.0.tgz#241918001d164044020b37d26d5b9f4e37cc3d5d" + integrity sha512-JK6bAaaiJozbox3K220VRfCzLa9n0ib/J+FHIwnaV3Enw/TO267qe0pM1b1QrrEuy6xun374XEAsRlA86JJnyg== dependencies: - "@typescript-eslint/utils" "5.28.0" + "@typescript-eslint/utils" "5.29.0" debug "^4.3.4" tsutils "^3.21.0" @@ -1954,15 +1954,15 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/utils@5.28.0", "@typescript-eslint/utils@^5.13.0": - version "5.28.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.28.0.tgz#b27a136eac300a48160b36d2aad0da44a1341b99" - integrity sha512-E60N5L0fjv7iPJV3UGc4EC+A3Lcj4jle9zzR0gW7vXhflO7/J29kwiTGITA2RlrmPokKiZbBy2DgaclCaEUs6g== +"@typescript-eslint/utils@5.29.0", "@typescript-eslint/utils@^5.13.0": + version "5.29.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.29.0.tgz#775046effd5019667bd086bcf326acbe32cd0082" + integrity sha512-3Eos6uP1nyLOBayc/VUdKZikV90HahXE5Dx9L5YlSd/7ylQPXhLk1BYb29SDgnBnTp+jmSZUU0QxUiyHgW4p7A== dependencies: "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.28.0" - "@typescript-eslint/types" "5.28.0" - "@typescript-eslint/typescript-estree" "5.28.0" + "@typescript-eslint/scope-manager" "5.29.0" + "@typescript-eslint/types" "5.29.0" + "@typescript-eslint/typescript-estree" "5.29.0" eslint-scope "^5.1.1" eslint-utils "^3.0.0" From 4e09b3296290b98e50a18fe3ccf10f4ec1a3db39 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Jul 2022 10:41:36 -0700 Subject: [PATCH 029/121] Bump @types/node from 18.0.0 to 18.0.1 (#839) Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 18.0.0 to 18.0.1. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@types/node" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 42 ++++-------------------------------------- 2 files changed, 5 insertions(+), 39 deletions(-) diff --git a/package.json b/package.json index 6d170cb85..5e956afb9 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "@types/ini": "^1.3.31", "@types/jest": "^27.5.0", "@types/luxon": "^2.3.2", - "@types/node": "^18.0.0", + "@types/node": "^18.0.1", "@types/pako": "^2.0.0", "@types/parse-git-config": "^3.0.1", "@types/parse-path": "^4.0.1", diff --git a/yarn.lock b/yarn.lock index e87f9ee4e..d56ebcdf1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1661,10 +1661,10 @@ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== -"@types/node@*", "@types/node@^18.0.0": - version "18.0.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.0.0.tgz#67c7b724e1bcdd7a8821ce0d5ee184d3b4dd525a" - integrity sha512-cHlGmko4gWLVI27cGJntjs/Sj8th9aYwplmZFwmmgYQQvL5NUsgVJG7OddLvNfLqYS31KFN0s3qlaD9qCaxACA== +"@types/node@*", "@types/node@^18.0.1": + version "18.0.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.0.1.tgz#e91bd73239b338557a84d1f67f7b9e0f25643870" + integrity sha512-CmR8+Tsy95hhwtZBKJBs0/FFq4XX7sDZHlGGf+0q+BRZfMbOTkzkj0AFAuTyXbObDIoanaBBW0+KEW+m3N16Wg== "@types/node@^16.11.26": version "16.11.26" @@ -1893,14 +1893,6 @@ "@typescript-eslint/typescript-estree" "5.29.0" debug "^4.3.4" -"@typescript-eslint/scope-manager@5.28.0": - version "5.28.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.28.0.tgz#ef9a5c68fecde72fd2ff8a84b9c120324826c1b9" - integrity sha512-LeBLTqF/he1Z+boRhSqnso6YrzcKMTQ8bO/YKEe+6+O/JGof9M0g3IJlIsqfrK/6K03MlFIlycbf1uQR1IjE+w== - dependencies: - "@typescript-eslint/types" "5.28.0" - "@typescript-eslint/visitor-keys" "5.28.0" - "@typescript-eslint/scope-manager@5.29.0": version "5.29.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.29.0.tgz#2a6a32e3416cb133e9af8dcf54bf077a916aeed3" @@ -1918,29 +1910,11 @@ debug "^4.3.4" tsutils "^3.21.0" -"@typescript-eslint/types@5.28.0": - version "5.28.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.28.0.tgz#cffd9bcdce28db6daaa146e48a0be4387a6f4e9d" - integrity sha512-2OOm8ZTOQxqkPbf+DAo8oc16sDlVR5owgJfKheBkxBKg1vAfw2JsSofH9+16VPlN9PWtv8Wzhklkqw3k/zCVxA== - "@typescript-eslint/types@5.29.0": version "5.29.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.29.0.tgz#7861d3d288c031703b2d97bc113696b4d8c19aab" integrity sha512-X99VbqvAXOMdVyfFmksMy3u8p8yoRGITgU1joBJPzeYa0rhdf5ok9S56/itRoUSh99fiDoMtarSIJXo7H/SnOg== -"@typescript-eslint/typescript-estree@5.28.0": - version "5.28.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.28.0.tgz#3487d158d091ca2772b285e67412ff6d9797d863" - integrity sha512-9GX+GfpV+F4hdTtYc6OV9ZkyYilGXPmQpm6AThInpBmKJEyRSIjORJd1G9+bknb7OTFYL+Vd4FBJAO6T78OVqA== - dependencies: - "@typescript-eslint/types" "5.28.0" - "@typescript-eslint/visitor-keys" "5.28.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" - "@typescript-eslint/typescript-estree@5.29.0": version "5.29.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.29.0.tgz#e83d19aa7fd2e74616aab2f25dfbe4de4f0b5577" @@ -1966,14 +1940,6 @@ eslint-scope "^5.1.1" eslint-utils "^3.0.0" -"@typescript-eslint/visitor-keys@5.28.0": - version "5.28.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.28.0.tgz#982bb226b763c48fc1859a60de33fbf939d40a0f" - integrity sha512-BtfP1vCor8cWacovzzPFOoeW4kBQxzmhxGoOpt0v1SFvG+nJ0cWaVdJk7cky1ArTcFHHKNIxyo2LLr3oNkSuXA== - dependencies: - "@typescript-eslint/types" "5.28.0" - eslint-visitor-keys "^3.3.0" - "@typescript-eslint/visitor-keys@5.29.0": version "5.29.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.29.0.tgz#7a4749fa7ef5160c44a451bf060ac1dc6dfb77ee" From e7e3ce9f3852078cdc33091ad31b4a1fb9bff12d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Jul 2022 11:08:28 -0700 Subject: [PATCH 030/121] Bump eslint from 8.18.0 to 8.19.0 (#840) Bumps [eslint](https://github.com/eslint/eslint) from 8.18.0 to 8.19.0. - [Release notes](https://github.com/eslint/eslint/releases) - [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint/eslint/compare/v8.18.0...v8.19.0) --- updated-dependencies: - dependency-name: eslint dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Nelson --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 5e956afb9..dec8e2a38 100644 --- a/package.json +++ b/package.json @@ -72,7 +72,7 @@ "casual": "^1.6.2", "css-loader": "^6.7.1", "electron": "19.0.6", - "eslint": "^8.18.0", + "eslint": "^8.19.0", "eslint-plugin-import": "^2.26.0", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-testing-library": "^5.5.1", diff --git a/yarn.lock b/yarn.lock index d56ebcdf1..870bda718 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4139,10 +4139,10 @@ eslint-visitor-keys@^3.3.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== -eslint@^8.18.0: - version "8.18.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.18.0.tgz#78d565d16c993d0b73968c523c0446b13da784fd" - integrity sha512-As1EfFMVk7Xc6/CvhssHUjsAQSkpfXvUGMFC3ce8JDe6WvqCgRrLOBQbVpsBFr1X1V+RACOadnzVvcUS5ni2bA== +eslint@^8.19.0: + version "8.19.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.19.0.tgz#7342a3cbc4fbc5c106a1eefe0fd0b50b6b1a7d28" + integrity sha512-SXOPj3x9VKvPe81TjjUJCYlV4oJjQw68Uek+AM0X4p+33dj2HY5bpTZOgnQHcG2eAm1mtCU9uNMnJi7exU/kYw== dependencies: "@eslint/eslintrc" "^1.3.0" "@humanwhocodes/config-array" "^0.9.2" From f42f2fbe2710e16b3a19071c2d4c3892c98d1a4e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Jul 2022 11:13:16 -0700 Subject: [PATCH 031/121] Bump @reduxjs/toolkit from 1.8.2 to 1.8.3 (#841) Bumps [@reduxjs/toolkit](https://github.com/reduxjs/redux-toolkit) from 1.8.2 to 1.8.3. - [Release notes](https://github.com/reduxjs/redux-toolkit/releases) - [Commits](https://github.com/reduxjs/redux-toolkit/compare/v1.8.2...1.8.3) --- updated-dependencies: - dependency-name: "@reduxjs/toolkit" dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Nelson --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index dec8e2a38..28088fcb1 100644 --- a/package.json +++ b/package.json @@ -101,7 +101,7 @@ "@material-ui/core": "^4.12.4", "@material-ui/icons": "^4.11.3", "@material-ui/lab": "^4.0.0-alpha.61", - "@reduxjs/toolkit": "^1.8.2", + "@reduxjs/toolkit": "^1.8.3", "binarnia": "^3.1.3", "chokidar": "^3.5.3", "dagre": "^0.8.5", diff --git a/yarn.lock b/yarn.lock index 870bda718..d0545df47 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1306,10 +1306,10 @@ resolved "https://registry.yarnpkg.com/@react-dnd/shallowequal/-/shallowequal-3.0.0.tgz#ccfe1d6eead7591b4cebf6d7fec7150eb4de1962" integrity sha512-1ELWQdJB2UrCXTKK5cCD9uGLLIwECLIEdttKA255owdpchtXohIjZBTlFJszwYi2ZKe2Do+QvUzsGyGCMNwbdw== -"@reduxjs/toolkit@^1.8.2": - version "1.8.2" - resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-1.8.2.tgz#352fd17bc858af51d21ce8d28183a930cab9e638" - integrity sha512-CtPw5TkN1pHRigMFCOS/0qg3b/yfPV5qGCsltVnIz7bx4PKTJlGHYfIxm97qskLknMzuGfjExaYdXJ77QTL0vg== +"@reduxjs/toolkit@^1.8.3": + version "1.8.3" + resolved "https://registry.yarnpkg.com/@reduxjs/toolkit/-/toolkit-1.8.3.tgz#9c6a9c497bde43a67618d37a4175a00ae12efeb2" + integrity sha512-lU/LDIfORmjBbyDLaqFN2JB9YmAT1BElET9y0ZszwhSBa5Ef3t6o5CrHupw5J1iOXwd+o92QfQZ8OJpwXvsssg== dependencies: immer "^9.0.7" redux "^4.1.2" From 33056f6e7b074f73be9b43942134724377bc50f8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Jul 2022 11:23:11 -0700 Subject: [PATCH 032/121] Bump electron from 19.0.6 to 19.0.7 (#842) Bumps [electron](https://github.com/electron/electron) from 19.0.6 to 19.0.7. - [Release notes](https://github.com/electron/electron/releases) - [Changelog](https://github.com/electron/electron/blob/main/docs/breaking-changes.md) - [Commits](https://github.com/electron/electron/compare/v19.0.6...v19.0.7) --- updated-dependencies: - dependency-name: electron dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Nelson --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 28088fcb1..c8c873e31 100644 --- a/package.json +++ b/package.json @@ -71,7 +71,7 @@ "@vercel/webpack-asset-relocator-loader": "1.7.2", "casual": "^1.6.2", "css-loader": "^6.7.1", - "electron": "19.0.6", + "electron": "19.0.7", "eslint": "^8.19.0", "eslint-plugin-import": "^2.26.0", "eslint-plugin-react-hooks": "^4.6.0", diff --git a/yarn.lock b/yarn.lock index d0545df47..63bdbf4ca 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3899,10 +3899,10 @@ electron-winstaller@^5.0.0: lodash.template "^4.2.2" temp "^0.9.0" -electron@19.0.6: - version "19.0.6" - resolved "https://registry.yarnpkg.com/electron/-/electron-19.0.6.tgz#7aacfa4e968f134eecc36a1b03e3f9954ed8f6a5" - integrity sha512-S9Yud32nKhB0iWC0lGl2JXz4FQnCiLCnP5Vehm1/CqyeICcQGmgQaZl2HYpCJ2pesKIsYL9nsgmku/10cxm/gg== +electron@19.0.7: + version "19.0.7" + resolved "https://registry.yarnpkg.com/electron/-/electron-19.0.7.tgz#c7a7841646adc6457de70b93661cc400bfdf9d38" + integrity sha512-Wyg+oGkY8cWYmm8tVka6CZmhJxnyUx+Us2ALyWiY4w73+dO9XUNB/c7vQNIm1Uk/DLMn9vFzgvcS9YtOOMqpbg== dependencies: "@electron/get" "^1.14.1" "@types/node" "^16.11.26" From 5c16656b9d4c92026f97829fdf401ecbafc4ea5b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Jul 2022 11:40:29 -0700 Subject: [PATCH 033/121] Bump @typescript-eslint/eslint-plugin from 5.29.0 to 5.30.4 (#843) Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 5.29.0 to 5.30.4. - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.30.4/packages/eslint-plugin) --- updated-dependencies: - dependency-name: "@typescript-eslint/eslint-plugin" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Nelson --- package.json | 2 +- yarn.lock | 74 ++++++++++++++++++++++++++++++++++++++-------------- 2 files changed, 55 insertions(+), 21 deletions(-) diff --git a/package.json b/package.json index c8c873e31..79f1865d8 100644 --- a/package.json +++ b/package.json @@ -66,7 +66,7 @@ "@types/uuid": "^8.3.4", "@types/valid-url": "^1.0.3", "@types/validator": "^13.7.3", - "@typescript-eslint/eslint-plugin": "^5.29.0", + "@typescript-eslint/eslint-plugin": "^5.30.4", "@typescript-eslint/parser": "^5.29.0", "@vercel/webpack-asset-relocator-loader": "1.7.2", "casual": "^1.6.2", diff --git a/yarn.lock b/yarn.lock index 63bdbf4ca..7bdbe36e1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1868,14 +1868,14 @@ dependencies: "@types/node" "*" -"@typescript-eslint/eslint-plugin@^5.29.0": - version "5.29.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.29.0.tgz#c67794d2b0fd0b4a47f50266088acdc52a08aab6" - integrity sha512-kgTsISt9pM53yRFQmLZ4npj99yGl3x3Pl7z4eA66OuTzAGC4bQB5H5fuLwPnqTKU3yyrrg4MIhjF17UYnL4c0w== - dependencies: - "@typescript-eslint/scope-manager" "5.29.0" - "@typescript-eslint/type-utils" "5.29.0" - "@typescript-eslint/utils" "5.29.0" +"@typescript-eslint/eslint-plugin@^5.30.4": + version "5.30.4" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.30.4.tgz#a46c8c0ab755a936cb63786a6222876ce51675e4" + integrity sha512-xjujQISAIa4HAaos8fcMZXmqkuZqMx6icdxkI88jMM/eNe4J8AuTLYnLK+zdm0mBYLyctdFf//UE4/xFCcQzYQ== + dependencies: + "@typescript-eslint/scope-manager" "5.30.4" + "@typescript-eslint/type-utils" "5.30.4" + "@typescript-eslint/utils" "5.30.4" debug "^4.3.4" functional-red-black-tree "^1.0.1" ignore "^5.2.0" @@ -1901,12 +1901,20 @@ "@typescript-eslint/types" "5.29.0" "@typescript-eslint/visitor-keys" "5.29.0" -"@typescript-eslint/type-utils@5.29.0": - version "5.29.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.29.0.tgz#241918001d164044020b37d26d5b9f4e37cc3d5d" - integrity sha512-JK6bAaaiJozbox3K220VRfCzLa9n0ib/J+FHIwnaV3Enw/TO267qe0pM1b1QrrEuy6xun374XEAsRlA86JJnyg== +"@typescript-eslint/scope-manager@5.30.4": + version "5.30.4" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.30.4.tgz#8140efd2bc12d41d74e8af23872a89f3edbe552e" + integrity sha512-DNzlQwGSiGefz71JwaHrpcaAX3zYkEcy8uVuan3YMKOa6qeW/y+7SaD8KIsIAruASwq6P+U4BjWBWtM2O+mwBQ== + dependencies: + "@typescript-eslint/types" "5.30.4" + "@typescript-eslint/visitor-keys" "5.30.4" + +"@typescript-eslint/type-utils@5.30.4": + version "5.30.4" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.30.4.tgz#00ff19073cd01f7d27e9af49ce08d6a69f1e4f01" + integrity sha512-55cf1dZviwwv+unDB+mF8vZkfta5muTK6bppPvenWWCD7slZZ0DEsXUjZerqy7Rq8s3J4SXdg4rMIY8ngCtTmA== dependencies: - "@typescript-eslint/utils" "5.29.0" + "@typescript-eslint/utils" "5.30.4" debug "^4.3.4" tsutils "^3.21.0" @@ -1915,6 +1923,11 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.29.0.tgz#7861d3d288c031703b2d97bc113696b4d8c19aab" integrity sha512-X99VbqvAXOMdVyfFmksMy3u8p8yoRGITgU1joBJPzeYa0rhdf5ok9S56/itRoUSh99fiDoMtarSIJXo7H/SnOg== +"@typescript-eslint/types@5.30.4": + version "5.30.4" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.30.4.tgz#3bc99eca8ba3fcfd6a21480e216b09dab81c3999" + integrity sha512-NTEvqc+Vvu8Q6JeAKryHk2eqLKqsr2St3xhIjhOjQv5wQUBhaTuix4WOSacqj0ONWfKVU12Eug3LEAB95GBkMA== + "@typescript-eslint/typescript-estree@5.29.0": version "5.29.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.29.0.tgz#e83d19aa7fd2e74616aab2f25dfbe4de4f0b5577" @@ -1928,15 +1941,28 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/utils@5.29.0", "@typescript-eslint/utils@^5.13.0": - version "5.29.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.29.0.tgz#775046effd5019667bd086bcf326acbe32cd0082" - integrity sha512-3Eos6uP1nyLOBayc/VUdKZikV90HahXE5Dx9L5YlSd/7ylQPXhLk1BYb29SDgnBnTp+jmSZUU0QxUiyHgW4p7A== +"@typescript-eslint/typescript-estree@5.30.4": + version "5.30.4" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.30.4.tgz#ac4be8a2f8fb1f1c3b346d5992a36163121ddb3f" + integrity sha512-V4VnEs6/J9/nNizaA12IeU4SAeEYaiKr7XndLNfV5+3zZSB4hIu6EhHJixTKhvIqA+EEHgBl6re8pivBMLLO1w== + dependencies: + "@typescript-eslint/types" "5.30.4" + "@typescript-eslint/visitor-keys" "5.30.4" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/utils@5.30.4", "@typescript-eslint/utils@^5.13.0": + version "5.30.4" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.30.4.tgz#07a2b7ce80b2527ea506829f190591b76c70ba9f" + integrity sha512-a+GQrJzOUhn4WT1mUumXDyam+22Oo4c5K/jnZ+6r/4WTQF3q8e4CsC9PLHb4SnOClzOqo/5GLZWvkE1aa5UGKQ== dependencies: "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.29.0" - "@typescript-eslint/types" "5.29.0" - "@typescript-eslint/typescript-estree" "5.29.0" + "@typescript-eslint/scope-manager" "5.30.4" + "@typescript-eslint/types" "5.30.4" + "@typescript-eslint/typescript-estree" "5.30.4" eslint-scope "^5.1.1" eslint-utils "^3.0.0" @@ -1948,6 +1974,14 @@ "@typescript-eslint/types" "5.29.0" eslint-visitor-keys "^3.3.0" +"@typescript-eslint/visitor-keys@5.30.4": + version "5.30.4" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.30.4.tgz#b4969df1a440cc999d4bb7f7b7932dce05537089" + integrity sha512-ulKGse3mruSc8x6l8ORSc6+1ORyJzKmZeIaRTu/WpaF/jx3vHvEn5XZUKF9XaVg2710mFmTAUlLcLYLPp/Zf/Q== + dependencies: + "@typescript-eslint/types" "5.30.4" + eslint-visitor-keys "^3.3.0" + "@vercel/webpack-asset-relocator-loader@1.7.2": version "1.7.2" resolved "https://registry.yarnpkg.com/@vercel/webpack-asset-relocator-loader/-/webpack-asset-relocator-loader-1.7.2.tgz#0210abd8d53b2799d53156dd0c18a4ef4e3b51cb" From 7504383352e3132921d70f52aa51d169ccbcac9e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 5 Jul 2022 08:59:15 -0700 Subject: [PATCH 034/121] Bump @types/validator from 13.7.3 to 13.7.4 (#844) Bumps [@types/validator](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/validator) from 13.7.3 to 13.7.4. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/validator) --- updated-dependencies: - dependency-name: "@types/validator" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Nelson --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 79f1865d8..febf17a33 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,7 @@ "@types/sha1": "^1.1.3", "@types/uuid": "^8.3.4", "@types/valid-url": "^1.0.3", - "@types/validator": "^13.7.3", + "@types/validator": "^13.7.4", "@typescript-eslint/eslint-plugin": "^5.30.4", "@typescript-eslint/parser": "^5.29.0", "@vercel/webpack-asset-relocator-loader": "1.7.2", diff --git a/yarn.lock b/yarn.lock index 7bdbe36e1..2d8315bcd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1837,10 +1837,10 @@ resolved "https://registry.yarnpkg.com/@types/valid-url/-/valid-url-1.0.3.tgz#a124389fb953559c7f889795a98620e91adb3687" integrity sha512-+33x29mg+ecU88ODdWpqaie2upIuRkhujVLA7TuJjM823cNMbeggfI6NhxewaRaRF8dy+g33e4uIg/m5Mb3xDQ== -"@types/validator@^13.7.3": - version "13.7.3" - resolved "https://registry.yarnpkg.com/@types/validator/-/validator-13.7.3.tgz#3193c0a3c03a7d1189016c62b4fba4b149ef5e33" - integrity sha512-DNviAE5OUcZ5s+XEQHRhERLg8fOp8gSgvyJ4aaFASx5wwaObm+PBwTIMXiOFm1QrSee5oYwEAYb7LMzX2O88gA== +"@types/validator@^13.7.4": + version "13.7.4" + resolved "https://registry.yarnpkg.com/@types/validator/-/validator-13.7.4.tgz#33cc949ee87dd47c63e35ba4ad94f6888852be04" + integrity sha512-uAaSWegu2lymY18l+s5nmcXu3sFeeTOl1zhSGoYzcr6T3wz1M+3OcW4UjfPhIhHGd13tIMRDsEpR+d8w/MexwQ== "@types/ws@^8.2.2": version "8.2.2" From 6083c4b2e1e2951414de2f11d7832cde4e899729 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 5 Jul 2022 10:05:46 -0700 Subject: [PATCH 035/121] Bump @typescript-eslint/parser from 5.29.0 to 5.30.4 (#846) Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.29.0 to 5.30.4. - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.30.4/packages/parser) --- updated-dependencies: - dependency-name: "@typescript-eslint/parser" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Nelson --- package.json | 2 +- yarn.lock | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index febf17a33..489e082a5 100644 --- a/package.json +++ b/package.json @@ -67,7 +67,7 @@ "@types/valid-url": "^1.0.3", "@types/validator": "^13.7.4", "@typescript-eslint/eslint-plugin": "^5.30.4", - "@typescript-eslint/parser": "^5.29.0", + "@typescript-eslint/parser": "^5.30.4", "@vercel/webpack-asset-relocator-loader": "1.7.2", "casual": "^1.6.2", "css-loader": "^6.7.1", diff --git a/yarn.lock b/yarn.lock index 2d8315bcd..7a208eb49 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1883,14 +1883,14 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/parser@^5.29.0": - version "5.29.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.29.0.tgz#41314b195b34d44ff38220caa55f3f93cfca43cf" - integrity sha512-ruKWTv+x0OOxbzIw9nW5oWlUopvP/IQDjB5ZqmTglLIoDTctLlAJpAQFpNPJP/ZI7hTT9sARBosEfaKbcFuECw== +"@typescript-eslint/parser@^5.30.4": + version "5.30.4" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.30.4.tgz#659411e8700b22c8d5400798ef24838425bf4567" + integrity sha512-/ge1HtU63wVoED4VnlU2o+FPFmi017bPYpeSrCmd8Ycsti4VSxXrmcpXXm7JpI4GT0Aa7qviabv1PEp6L5bboQ== dependencies: - "@typescript-eslint/scope-manager" "5.29.0" - "@typescript-eslint/types" "5.29.0" - "@typescript-eslint/typescript-estree" "5.29.0" + "@typescript-eslint/scope-manager" "5.30.4" + "@typescript-eslint/types" "5.30.4" + "@typescript-eslint/typescript-estree" "5.30.4" debug "^4.3.4" "@typescript-eslint/scope-manager@5.29.0": From cf443873634877bb90f82648956a670480e79e84 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Jul 2022 15:56:11 -0700 Subject: [PATCH 036/121] Bump luxon from 2.4.0 to 3.0.1 (#855) Bumps [luxon](https://github.com/moment/luxon) from 2.4.0 to 3.0.1. - [Release notes](https://github.com/moment/luxon/releases) - [Changelog](https://github.com/moment/luxon/blob/master/CHANGELOG.md) - [Commits](https://github.com/moment/luxon/compare/2.4.0...3.0.1) --- updated-dependencies: - dependency-name: luxon dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 42 ++++-------------------------------------- 2 files changed, 5 insertions(+), 39 deletions(-) diff --git a/package.json b/package.json index 489e082a5..6b2a2e04d 100644 --- a/package.json +++ b/package.json @@ -112,7 +112,7 @@ "ignore": "^5.2.0", "ini": "^3.0.0", "isomorphic-git": "^1.18.3", - "luxon": "^2.4.0", + "luxon": "^3.0.1", "parse-git-config": "^3.0.0", "parse-path": "^4.0.4", "react": "^17.0.2", diff --git a/yarn.lock b/yarn.lock index 7a208eb49..f49bec6d3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1893,14 +1893,6 @@ "@typescript-eslint/typescript-estree" "5.30.4" debug "^4.3.4" -"@typescript-eslint/scope-manager@5.29.0": - version "5.29.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.29.0.tgz#2a6a32e3416cb133e9af8dcf54bf077a916aeed3" - integrity sha512-etbXUT0FygFi2ihcxDZjz21LtC+Eps9V2xVx09zFoN44RRHPrkMflidGMI+2dUs821zR1tDS6Oc9IXxIjOUZwA== - dependencies: - "@typescript-eslint/types" "5.29.0" - "@typescript-eslint/visitor-keys" "5.29.0" - "@typescript-eslint/scope-manager@5.30.4": version "5.30.4" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.30.4.tgz#8140efd2bc12d41d74e8af23872a89f3edbe552e" @@ -1918,29 +1910,11 @@ debug "^4.3.4" tsutils "^3.21.0" -"@typescript-eslint/types@5.29.0": - version "5.29.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.29.0.tgz#7861d3d288c031703b2d97bc113696b4d8c19aab" - integrity sha512-X99VbqvAXOMdVyfFmksMy3u8p8yoRGITgU1joBJPzeYa0rhdf5ok9S56/itRoUSh99fiDoMtarSIJXo7H/SnOg== - "@typescript-eslint/types@5.30.4": version "5.30.4" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.30.4.tgz#3bc99eca8ba3fcfd6a21480e216b09dab81c3999" integrity sha512-NTEvqc+Vvu8Q6JeAKryHk2eqLKqsr2St3xhIjhOjQv5wQUBhaTuix4WOSacqj0ONWfKVU12Eug3LEAB95GBkMA== -"@typescript-eslint/typescript-estree@5.29.0": - version "5.29.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.29.0.tgz#e83d19aa7fd2e74616aab2f25dfbe4de4f0b5577" - integrity sha512-mQvSUJ/JjGBdvo+1LwC+GY2XmSYjK1nAaVw2emp/E61wEVYEyibRHCqm1I1vEKbXCpUKuW4G7u9ZCaZhJbLoNQ== - dependencies: - "@typescript-eslint/types" "5.29.0" - "@typescript-eslint/visitor-keys" "5.29.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" - "@typescript-eslint/typescript-estree@5.30.4": version "5.30.4" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.30.4.tgz#ac4be8a2f8fb1f1c3b346d5992a36163121ddb3f" @@ -1966,14 +1940,6 @@ eslint-scope "^5.1.1" eslint-utils "^3.0.0" -"@typescript-eslint/visitor-keys@5.29.0": - version "5.29.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.29.0.tgz#7a4749fa7ef5160c44a451bf060ac1dc6dfb77ee" - integrity sha512-Hpb/mCWsjILvikMQoZIE3voc9wtQcS0A9FUw3h8bhr9UxBdtI/tw1ZDZUOXHXLOVMedKCH5NxyzATwnU78bWCQ== - dependencies: - "@typescript-eslint/types" "5.29.0" - eslint-visitor-keys "^3.3.0" - "@typescript-eslint/visitor-keys@5.30.4": version "5.30.4" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.30.4.tgz#b4969df1a440cc999d4bb7f7b7932dce05537089" @@ -6717,10 +6683,10 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -luxon@^2.4.0: - version "2.4.0" - resolved "https://registry.yarnpkg.com/luxon/-/luxon-2.4.0.tgz#9435806545bb32d4234dab766ab8a3d54847a765" - integrity sha512-w+NAwWOUL5hO0SgwOHsMBAmZ15SoknmQXhSO0hIbJCAmPKSsGeK8MlmhYh2w6Iib38IxN2M+/ooXWLbeis7GuA== +luxon@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/luxon/-/luxon-3.0.1.tgz#6901111d10ad06fd267ad4e4128a84bef8a77299" + integrity sha512-hF3kv0e5gwHQZKz4wtm4c+inDtyc7elkanAsBq+fundaCdUBNJB1dHEGUZIM6SfSBUlbVFduPwEtNjFK8wLtcw== lz-string@^1.4.4: version "1.4.4" From be5d51118cb1e22ffe1338e52d19c632e8f72af2 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Jul 2022 15:59:22 -0700 Subject: [PATCH 037/121] Bump electron from 19.0.7 to 19.0.8 (#853) Bumps [electron](https://github.com/electron/electron) from 19.0.7 to 19.0.8. - [Release notes](https://github.com/electron/electron/releases) - [Changelog](https://github.com/electron/electron/blob/main/docs/breaking-changes.md) - [Commits](https://github.com/electron/electron/compare/v19.0.7...v19.0.8) --- updated-dependencies: - dependency-name: electron dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Nelson --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 6b2a2e04d..9fdc2cfc0 100644 --- a/package.json +++ b/package.json @@ -71,7 +71,7 @@ "@vercel/webpack-asset-relocator-loader": "1.7.2", "casual": "^1.6.2", "css-loader": "^6.7.1", - "electron": "19.0.7", + "electron": "19.0.8", "eslint": "^8.19.0", "eslint-plugin-import": "^2.26.0", "eslint-plugin-react-hooks": "^4.6.0", diff --git a/yarn.lock b/yarn.lock index f49bec6d3..d1cc49b80 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3899,10 +3899,10 @@ electron-winstaller@^5.0.0: lodash.template "^4.2.2" temp "^0.9.0" -electron@19.0.7: - version "19.0.7" - resolved "https://registry.yarnpkg.com/electron/-/electron-19.0.7.tgz#c7a7841646adc6457de70b93661cc400bfdf9d38" - integrity sha512-Wyg+oGkY8cWYmm8tVka6CZmhJxnyUx+Us2ALyWiY4w73+dO9XUNB/c7vQNIm1Uk/DLMn9vFzgvcS9YtOOMqpbg== +electron@19.0.8: + version "19.0.8" + resolved "https://registry.yarnpkg.com/electron/-/electron-19.0.8.tgz#c4d4ba915de554f2926261eb37d3527d2b092d4c" + integrity sha512-OWK3P/NbDFfBUv+wbYv1/OV4jehY5DQPT7n1maQJfN9hsnrWTMktXS/bmS05eSUAjNAzHmKPKfiKH2c1Yr7nGw== dependencies: "@electron/get" "^1.14.1" "@types/node" "^16.11.26" From ac64da5e8e3e840afc1cd8d9ba5dc10e0a8ca335 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Jul 2022 16:03:40 -0700 Subject: [PATCH 038/121] Bump fork-ts-checker-webpack-plugin from 7.2.11 to 7.2.12 (#849) Bumps [fork-ts-checker-webpack-plugin](https://github.com/TypeStrong/fork-ts-checker-webpack-plugin) from 7.2.11 to 7.2.12. - [Release notes](https://github.com/TypeStrong/fork-ts-checker-webpack-plugin/releases) - [Changelog](https://github.com/TypeStrong/fork-ts-checker-webpack-plugin/blob/main/CHANGELOG.md) - [Commits](https://github.com/TypeStrong/fork-ts-checker-webpack-plugin/compare/v7.2.11...v7.2.12) --- updated-dependencies: - dependency-name: fork-ts-checker-webpack-plugin dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Nelson --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 9fdc2cfc0..a9562f92d 100644 --- a/package.json +++ b/package.json @@ -77,7 +77,7 @@ "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-testing-library": "^5.5.1", "file-loader": "^6.2.0", - "fork-ts-checker-webpack-plugin": "^7.2.11", + "fork-ts-checker-webpack-plugin": "^7.2.12", "genversion": "^3.1.1", "git-remote-protocol": "^0.1.0", "identity-obj-proxy": "^3.0.0", diff --git a/yarn.lock b/yarn.lock index d1cc49b80..6fb259df2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4583,10 +4583,10 @@ forever-agent@~0.6.1: resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= -fork-ts-checker-webpack-plugin@^7.2.11: - version "7.2.11" - resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-7.2.11.tgz#aff3febbc11544ba3ad0ae4d5aa4055bd15cd26d" - integrity sha512-2e5+NyTUTE1Xq4fWo7KFEQblCaIvvINQwUX3jRmEGlgCTc1Ecqw/975EfQrQ0GEraxJTnp8KB9d/c8hlCHUMJA== +fork-ts-checker-webpack-plugin@^7.2.12: + version "7.2.12" + resolved "https://registry.yarnpkg.com/fork-ts-checker-webpack-plugin/-/fork-ts-checker-webpack-plugin-7.2.12.tgz#d15c48745f9092574b41138934aa3de504a39ba1" + integrity sha512-SCjmmjPXPgp5XRQ49hXd2Eqth8rz4+ggtOHygTzyaOn32oIIOd8Kw+xKcgXNkFGlZy5l03bHRYTkbQs+TWhaNA== dependencies: "@babel/code-frame" "^7.16.7" chalk "^4.1.2" From c7a535d29dced453ce823f6f9fae10ed3220339c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Jul 2022 16:06:57 -0700 Subject: [PATCH 039/121] Bump @types/node from 18.0.1 to 18.0.3 (#854) Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 18.0.1 to 18.0.3. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@types/node" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Nelson --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index a9562f92d..13b18e5a9 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "@types/ini": "^1.3.31", "@types/jest": "^27.5.0", "@types/luxon": "^2.3.2", - "@types/node": "^18.0.1", + "@types/node": "^18.0.3", "@types/pako": "^2.0.0", "@types/parse-git-config": "^3.0.1", "@types/parse-path": "^4.0.1", diff --git a/yarn.lock b/yarn.lock index 6fb259df2..92119ce79 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1661,10 +1661,10 @@ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== -"@types/node@*", "@types/node@^18.0.1": - version "18.0.1" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.0.1.tgz#e91bd73239b338557a84d1f67f7b9e0f25643870" - integrity sha512-CmR8+Tsy95hhwtZBKJBs0/FFq4XX7sDZHlGGf+0q+BRZfMbOTkzkj0AFAuTyXbObDIoanaBBW0+KEW+m3N16Wg== +"@types/node@*", "@types/node@^18.0.3": + version "18.0.3" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.0.3.tgz#463fc47f13ec0688a33aec75d078a0541a447199" + integrity sha512-HzNRZtp4eepNitP+BD6k2L6DROIDG4Q0fm4x+dwfsr6LGmROENnok75VGw40628xf+iR24WeMFcHuuBDUAzzsQ== "@types/node@^16.11.26": version "16.11.26" From ae8cb91b7be43ed2d2e41cc3458ff9cb5bb983a8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Jul 2022 16:13:21 -0700 Subject: [PATCH 040/121] Bump @typescript-eslint/parser from 5.30.4 to 5.30.5 (#852) Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.30.4 to 5.30.5. - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.30.5/packages/parser) --- updated-dependencies: - dependency-name: "@typescript-eslint/parser" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Nelson --- package.json | 2 +- yarn.lock | 50 ++++++++++++++++++++++++++++++++++++++++++-------- 2 files changed, 43 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index 13b18e5a9..a8d2e3ae0 100644 --- a/package.json +++ b/package.json @@ -67,7 +67,7 @@ "@types/valid-url": "^1.0.3", "@types/validator": "^13.7.4", "@typescript-eslint/eslint-plugin": "^5.30.4", - "@typescript-eslint/parser": "^5.30.4", + "@typescript-eslint/parser": "^5.30.5", "@vercel/webpack-asset-relocator-loader": "1.7.2", "casual": "^1.6.2", "css-loader": "^6.7.1", diff --git a/yarn.lock b/yarn.lock index 92119ce79..7980b06ff 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1883,14 +1883,14 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/parser@^5.30.4": - version "5.30.4" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.30.4.tgz#659411e8700b22c8d5400798ef24838425bf4567" - integrity sha512-/ge1HtU63wVoED4VnlU2o+FPFmi017bPYpeSrCmd8Ycsti4VSxXrmcpXXm7JpI4GT0Aa7qviabv1PEp6L5bboQ== - dependencies: - "@typescript-eslint/scope-manager" "5.30.4" - "@typescript-eslint/types" "5.30.4" - "@typescript-eslint/typescript-estree" "5.30.4" +"@typescript-eslint/parser@^5.30.5": + version "5.30.5" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.30.5.tgz#f667c34e4e4c299d98281246c9b1e68c03a92522" + integrity sha512-zj251pcPXI8GO9NDKWWmygP6+UjwWmrdf9qMW/L/uQJBM/0XbU2inxe5io/234y/RCvwpKEYjZ6c1YrXERkK4Q== + dependencies: + "@typescript-eslint/scope-manager" "5.30.5" + "@typescript-eslint/types" "5.30.5" + "@typescript-eslint/typescript-estree" "5.30.5" debug "^4.3.4" "@typescript-eslint/scope-manager@5.30.4": @@ -1901,6 +1901,14 @@ "@typescript-eslint/types" "5.30.4" "@typescript-eslint/visitor-keys" "5.30.4" +"@typescript-eslint/scope-manager@5.30.5": + version "5.30.5" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.30.5.tgz#7f90b9d6800552c856a5f3644f5e55dd1469d964" + integrity sha512-NJ6F+YHHFT/30isRe2UTmIGGAiXKckCyMnIV58cE3JkHmaD6e5zyEYm5hBDv0Wbin+IC0T1FWJpD3YqHUG/Ydg== + dependencies: + "@typescript-eslint/types" "5.30.5" + "@typescript-eslint/visitor-keys" "5.30.5" + "@typescript-eslint/type-utils@5.30.4": version "5.30.4" resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.30.4.tgz#00ff19073cd01f7d27e9af49ce08d6a69f1e4f01" @@ -1915,6 +1923,11 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.30.4.tgz#3bc99eca8ba3fcfd6a21480e216b09dab81c3999" integrity sha512-NTEvqc+Vvu8Q6JeAKryHk2eqLKqsr2St3xhIjhOjQv5wQUBhaTuix4WOSacqj0ONWfKVU12Eug3LEAB95GBkMA== +"@typescript-eslint/types@5.30.5": + version "5.30.5" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.30.5.tgz#36a0c05a72af3623cdf9ee8b81ea743b7de75a98" + integrity sha512-kZ80w/M2AvsbRvOr3PjaNh6qEW1LFqs2pLdo2s5R38B2HYXG8Z0PP48/4+j1QHJFL3ssHIbJ4odPRS8PlHrFfw== + "@typescript-eslint/typescript-estree@5.30.4": version "5.30.4" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.30.4.tgz#ac4be8a2f8fb1f1c3b346d5992a36163121ddb3f" @@ -1928,6 +1941,19 @@ semver "^7.3.7" tsutils "^3.21.0" +"@typescript-eslint/typescript-estree@5.30.5": + version "5.30.5" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.30.5.tgz#c520e4eba20551c4ec76af8d344a42eb6c9767bb" + integrity sha512-qGTc7QZC801kbYjAr4AgdOfnokpwStqyhSbiQvqGBLixniAKyH+ib2qXIVo4P9NgGzwyfD9I0nlJN7D91E1VpQ== + dependencies: + "@typescript-eslint/types" "5.30.5" + "@typescript-eslint/visitor-keys" "5.30.5" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + "@typescript-eslint/utils@5.30.4", "@typescript-eslint/utils@^5.13.0": version "5.30.4" resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.30.4.tgz#07a2b7ce80b2527ea506829f190591b76c70ba9f" @@ -1948,6 +1974,14 @@ "@typescript-eslint/types" "5.30.4" eslint-visitor-keys "^3.3.0" +"@typescript-eslint/visitor-keys@5.30.5": + version "5.30.5" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.30.5.tgz#d4bb969202019d5d5d849a0aaedc7370cc044b14" + integrity sha512-D+xtGo9HUMELzWIUqcQc0p2PO4NyvTrgIOK/VnSH083+8sq0tiLozNRKuLarwHYGRuA6TVBQSuuLwJUDWd3aaA== + dependencies: + "@typescript-eslint/types" "5.30.5" + eslint-visitor-keys "^3.3.0" + "@vercel/webpack-asset-relocator-loader@1.7.2": version "1.7.2" resolved "https://registry.yarnpkg.com/@vercel/webpack-asset-relocator-loader/-/webpack-asset-relocator-loader-1.7.2.tgz#0210abd8d53b2799d53156dd0c18a4ef4e3b51cb" From 901241a662b1c3f0d17f910a0162d33c45112e0a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Jul 2022 16:17:37 -0700 Subject: [PATCH 041/121] Bump @typescript-eslint/eslint-plugin from 5.30.4 to 5.30.5 (#851) Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 5.30.4 to 5.30.5. - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.30.5/packages/eslint-plugin) --- updated-dependencies: - dependency-name: "@typescript-eslint/eslint-plugin" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Nelson --- package.json | 2 +- yarn.lock | 38 +++++++++++++++++++------------------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/package.json b/package.json index a8d2e3ae0..3a7e4d737 100644 --- a/package.json +++ b/package.json @@ -66,7 +66,7 @@ "@types/uuid": "^8.3.4", "@types/valid-url": "^1.0.3", "@types/validator": "^13.7.4", - "@typescript-eslint/eslint-plugin": "^5.30.4", + "@typescript-eslint/eslint-plugin": "^5.30.5", "@typescript-eslint/parser": "^5.30.5", "@vercel/webpack-asset-relocator-loader": "1.7.2", "casual": "^1.6.2", diff --git a/yarn.lock b/yarn.lock index 7980b06ff..ba930efda 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1868,14 +1868,14 @@ dependencies: "@types/node" "*" -"@typescript-eslint/eslint-plugin@^5.30.4": - version "5.30.4" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.30.4.tgz#a46c8c0ab755a936cb63786a6222876ce51675e4" - integrity sha512-xjujQISAIa4HAaos8fcMZXmqkuZqMx6icdxkI88jMM/eNe4J8AuTLYnLK+zdm0mBYLyctdFf//UE4/xFCcQzYQ== +"@typescript-eslint/eslint-plugin@^5.30.5": + version "5.30.5" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.30.5.tgz#e9a0afd6eb3b1d663db91cf1e7bc7584d394503d" + integrity sha512-lftkqRoBvc28VFXEoRgyZuztyVUQ04JvUnATSPtIRFAccbXTWL6DEtXGYMcbg998kXw1NLUJm7rTQ9eUt+q6Ig== dependencies: - "@typescript-eslint/scope-manager" "5.30.4" - "@typescript-eslint/type-utils" "5.30.4" - "@typescript-eslint/utils" "5.30.4" + "@typescript-eslint/scope-manager" "5.30.5" + "@typescript-eslint/type-utils" "5.30.5" + "@typescript-eslint/utils" "5.30.5" debug "^4.3.4" functional-red-black-tree "^1.0.1" ignore "^5.2.0" @@ -1909,12 +1909,12 @@ "@typescript-eslint/types" "5.30.5" "@typescript-eslint/visitor-keys" "5.30.5" -"@typescript-eslint/type-utils@5.30.4": - version "5.30.4" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.30.4.tgz#00ff19073cd01f7d27e9af49ce08d6a69f1e4f01" - integrity sha512-55cf1dZviwwv+unDB+mF8vZkfta5muTK6bppPvenWWCD7slZZ0DEsXUjZerqy7Rq8s3J4SXdg4rMIY8ngCtTmA== +"@typescript-eslint/type-utils@5.30.5": + version "5.30.5" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.30.5.tgz#7a9656f360b4b1daea635c4621dab053d08bf8a9" + integrity sha512-k9+ejlv1GgwN1nN7XjVtyCgE0BTzhzT1YsQF0rv4Vfj2U9xnslBgMYYvcEYAFVdvhuEscELJsB7lDkN7WusErw== dependencies: - "@typescript-eslint/utils" "5.30.4" + "@typescript-eslint/utils" "5.30.5" debug "^4.3.4" tsutils "^3.21.0" @@ -1954,15 +1954,15 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/utils@5.30.4", "@typescript-eslint/utils@^5.13.0": - version "5.30.4" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.30.4.tgz#07a2b7ce80b2527ea506829f190591b76c70ba9f" - integrity sha512-a+GQrJzOUhn4WT1mUumXDyam+22Oo4c5K/jnZ+6r/4WTQF3q8e4CsC9PLHb4SnOClzOqo/5GLZWvkE1aa5UGKQ== +"@typescript-eslint/utils@5.30.5", "@typescript-eslint/utils@^5.13.0": + version "5.30.5" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.30.5.tgz#3999cbd06baad31b9e60d084f20714d1b2776765" + integrity sha512-o4SSUH9IkuA7AYIfAvatldovurqTAHrfzPApOZvdUq01hHojZojCFXx06D/aFpKCgWbMPRdJBWAC3sWp3itwTA== dependencies: "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.30.4" - "@typescript-eslint/types" "5.30.4" - "@typescript-eslint/typescript-estree" "5.30.4" + "@typescript-eslint/scope-manager" "5.30.5" + "@typescript-eslint/types" "5.30.5" + "@typescript-eslint/typescript-estree" "5.30.5" eslint-scope "^5.1.1" eslint-utils "^3.0.0" From 2b2d8c0c840a7fdae4edd823762b3f5874d9e56e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Jul 2022 16:21:55 -0700 Subject: [PATCH 042/121] Bump @testing-library/dom from 8.14.0 to 8.15.0 (#850) Bumps [@testing-library/dom](https://github.com/testing-library/dom-testing-library) from 8.14.0 to 8.15.0. - [Release notes](https://github.com/testing-library/dom-testing-library/releases) - [Changelog](https://github.com/testing-library/dom-testing-library/blob/main/CHANGELOG.md) - [Commits](https://github.com/testing-library/dom-testing-library/compare/v8.14.0...v8.15.0) --- updated-dependencies: - dependency-name: "@testing-library/dom" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Nelson --- package.json | 2 +- yarn.lock | 13 ++++--------- 2 files changed, 5 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index 3a7e4d737..f9cd7411a 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "@electron-forge/maker-rpm": "^6.0.0-beta.64", "@electron-forge/maker-squirrel": "^6.0.0-beta.64", "@electron-forge/plugin-webpack": "6.0.0-beta.64", - "@testing-library/dom": "^8.14.0", + "@testing-library/dom": "^8.15.0", "@testing-library/jest-dom": "^5.16.4", "@testing-library/react": "^12.1.5", "@testing-library/react-hooks": "^8.0.1", diff --git a/yarn.lock b/yarn.lock index ba930efda..842c387c0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1354,10 +1354,10 @@ dependencies: defer-to-connect "^2.0.0" -"@testing-library/dom@^8.0.0", "@testing-library/dom@^8.14.0": - version "8.14.0" - resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.14.0.tgz#c9830a21006d87b9ef6e1aae306cf49b0283e28e" - integrity sha512-m8FOdUo77iMTwVRCyzWcqxlEIk+GnopbrRI15a0EaLbpZSCinIVI4kSQzWhkShK83GogvEFJSsHF3Ws0z1vrqA== +"@testing-library/dom@^8.0.0", "@testing-library/dom@^8.15.0": + version "8.15.0" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.15.0.tgz#c7f8549dc4d094786a5bf1c241fbd0e0df9d1e74" + integrity sha512-KtMhnUST7iUvZPl3LlRKH9V/JGbMIwgCxSeGno+c2VRRgC21l27Ky8rU8n/xRcfUAsO4w9fn3Z70Dq3Tcg6KAg== dependencies: "@babel/code-frame" "^7.10.4" "@babel/runtime" "^7.12.5" @@ -1918,11 +1918,6 @@ debug "^4.3.4" tsutils "^3.21.0" -"@typescript-eslint/types@5.30.4": - version "5.30.4" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.30.4.tgz#3bc99eca8ba3fcfd6a21480e216b09dab81c3999" - integrity sha512-NTEvqc+Vvu8Q6JeAKryHk2eqLKqsr2St3xhIjhOjQv5wQUBhaTuix4WOSacqj0ONWfKVU12Eug3LEAB95GBkMA== - "@typescript-eslint/types@5.30.5": version "5.30.5" resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.30.5.tgz#36a0c05a72af3623cdf9ee8b81ea743b7de75a98" From 4256917a05bf61f22b937492b32cb1fc82cfb31e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Jul 2022 18:32:55 -0700 Subject: [PATCH 043/121] Bump parse-path and @types/parse-path (#845) * Bump parse-path and @types/parse-path Bumps [parse-path](https://github.com/IonicaBizau/parse-path) and [@types/parse-path](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/parse-path). These dependencies needed to be updated together. Updates `parse-path` from 4.0.4 to 5.0.0 - [Release notes](https://github.com/IonicaBizau/parse-path/releases) - [Commits](https://github.com/IonicaBizau/parse-path/compare/4.0.4...5.0.0) Updates `@types/parse-path` from 4.0.1 to 5.0.0 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/parse-path) --- updated-dependencies: - dependency-name: parse-path dependency-type: direct:production update-type: version-update:semver-major - dependency-name: "@types/parse-path" dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] * Use parse-url package for git: URL parsing; per https://github.com/IonicaBizau/parse-path/releases/tag/5.0.0 Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Nelson --- package.json | 5 +- src/containers/git-plumbing.ts | 15 ++-- src/containers/git-worktree.spec.ts | 6 +- yarn.lock | 114 +++++++--------------------- 4 files changed, 43 insertions(+), 97 deletions(-) diff --git a/package.json b/package.json index f9cd7411a..cf5c427a2 100644 --- a/package.json +++ b/package.json @@ -57,7 +57,7 @@ "@types/node": "^18.0.3", "@types/pako": "^2.0.0", "@types/parse-git-config": "^3.0.1", - "@types/parse-path": "^4.0.1", + "@types/parse-path": "^5.0.0", "@types/react": "^18.0.9", "@types/react-dom": "^18.0.3", "@types/react-transition-group": "^4.4.5", @@ -114,7 +114,8 @@ "isomorphic-git": "^1.18.3", "luxon": "^3.0.1", "parse-git-config": "^3.0.0", - "parse-path": "^4.0.4", + "parse-path": "^5.0.0", + "parse-url": "^7.0.2", "react": "^17.0.2", "react-ace": "^10.1.0", "react-dnd": "^15.1.1", diff --git a/src/containers/git-plumbing.ts b/src/containers/git-plumbing.ts index 85c25ad86..1123a4465 100644 --- a/src/containers/git-plumbing.ts +++ b/src/containers/git-plumbing.ts @@ -3,6 +3,7 @@ import * as path from 'path'; import * as isogit from 'isomorphic-git'; import { PathLike } from 'fs-extra'; import parsePath from 'parse-path'; +import parseUrl from 'parse-url'; import isUUID from 'validator/lib/isUUID'; import ignore, { Ignore } from 'ignore'; import { isWebUri } from 'valid-url'; @@ -32,7 +33,7 @@ export const isHiddenFile = (path: PathLike): boolean => { * @returns The repository name (e.g. 'username/repo'). */ export const extractRepoName = (url: URL | string): string => { - const parsedPath = (typeof url === 'string') ? parsePath(url) : parsePath(url.href); + const parsedPath = (typeof url === 'string') ? parseUrl(url) : parseUrl(url.href); return parsedPath.pathname.replace(/^(\/*)(?:snippets\/)?/, '').replace(/\.git$/, ''); }; @@ -43,21 +44,21 @@ export const extractRepoName = (url: URL | string): string => { * @returns A JavaScript object (key-value) with the parsePath.ParsedPath object and OAuth resource name. */ export const extractFromURL = (url: URL | string): { url: parsePath.ParsedPath; oauth: Repository['oauth'] } => { - const parsedPath = (typeof url === 'string') ? parsePath(url) : parsePath(url.href); + const parsedUrl = (typeof url === 'string') ? parseUrl(url) : parseUrl(url.href); let oauth: Repository['oauth'] = 'github'; - switch (parsedPath.resource) { - case (parsedPath.resource.match(/github\.com/) ? parsedPath.resource : undefined): + switch (parsedUrl.resource) { + case (parsedUrl.resource.match(/github\.com/) ? parsedUrl.resource : undefined): oauth = 'github'; break; - case (parsedPath.resource.match(/bitbucket\.org/) ? parsedPath.resource : undefined): + case (parsedUrl.resource.match(/bitbucket\.org/) ? parsedUrl.resource : undefined): oauth = 'bitbucket'; break; - case (parsedPath.resource.match(/gitlab.*\.com/) ? parsedPath.resource : undefined): + case (parsedUrl.resource.match(/gitlab.*\.com/) ? parsedUrl.resource : undefined): oauth = 'gitlab'; break; } // TODO: Eventually, url should directly return parsedPath when git:// and ssh:// protocols are supported in isomorphic-git - return { url: parsePath(resolveURL(parsedPath.href)), oauth: oauth }; + return { url: parsePath(resolveURL(parsedUrl.href)), oauth: oauth }; } /** diff --git a/src/containers/git-worktree.spec.ts b/src/containers/git-worktree.spec.ts index 45ba9c5bf..092f7336c 100644 --- a/src/containers/git-worktree.spec.ts +++ b/src/containers/git-worktree.spec.ts @@ -1,5 +1,5 @@ // import mock from 'mock-fs'; -import parsePath from 'parse-path'; +import parseUrl from 'parse-url'; import * as path from 'path'; import * as git from './git-porcelain'; import * as worktree from './git-worktree'; @@ -199,7 +199,7 @@ describe('containers/git-worktree.add', () => { name: 'sampleUser/baseRepo', root: 'baseRepo/', corsProxy: new URL('http://www.oregonstate.edu').toString(), - url: parsePath('https://github.com/sampleUser/baseRepo').toString(), + url: parseUrl('https://github.com/sampleUser/baseRepo').toString(), default: 'master', local: ['master'], remote: [], @@ -226,7 +226,7 @@ describe('containers/git-worktree.add', () => { name: 'sampleUser/baseRepo', root: 'baseRepo/', corsProxy: new URL('http://www.oregonstate.edu').toString(), - url: parsePath('https://github.com/sampleUser/baseRepo').toString(), + url: parseUrl('https://github.com/sampleUser/baseRepo').toString(), default: 'master', local: ['master', 'hotfix'], remote: [], diff --git a/yarn.lock b/yarn.lock index 842c387c0..aaa439add 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1686,12 +1686,10 @@ resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== -"@types/parse-path@^4.0.1": - version "4.0.1" - resolved "https://registry.yarnpkg.com/@types/parse-path/-/parse-path-4.0.1.tgz#e5a3eb451c5a877f99de4378a3a1c717d747ae81" - integrity sha512-ZQffgFDaKTpSeO/NcBVPbJ21VvIuKAEcVMLapL6ltfrfIZyxNMjoQA+LB6af0E3C8dNVj+L76gjR6KzjKOA/9A== - dependencies: - query-string "^6.13.8" +"@types/parse-path@^5.0.0": + version "5.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-path/-/parse-path-5.0.0.tgz#62068457b6d2bcd698942f35ed1ce8bf724da964" + integrity sha512-vqEtc7yW96ncSyZfxi5iFM/eWfFsmTahNIJnEl9UT0BrpL4+2FF2ulhtcSdo4kH42rJcZKommA1warudhL+tlg== "@types/prettier@^2.1.5": version "2.3.2" @@ -1893,14 +1891,6 @@ "@typescript-eslint/typescript-estree" "5.30.5" debug "^4.3.4" -"@typescript-eslint/scope-manager@5.30.4": - version "5.30.4" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.30.4.tgz#8140efd2bc12d41d74e8af23872a89f3edbe552e" - integrity sha512-DNzlQwGSiGefz71JwaHrpcaAX3zYkEcy8uVuan3YMKOa6qeW/y+7SaD8KIsIAruASwq6P+U4BjWBWtM2O+mwBQ== - dependencies: - "@typescript-eslint/types" "5.30.4" - "@typescript-eslint/visitor-keys" "5.30.4" - "@typescript-eslint/scope-manager@5.30.5": version "5.30.5" resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.30.5.tgz#7f90b9d6800552c856a5f3644f5e55dd1469d964" @@ -1923,19 +1913,6 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.30.5.tgz#36a0c05a72af3623cdf9ee8b81ea743b7de75a98" integrity sha512-kZ80w/M2AvsbRvOr3PjaNh6qEW1LFqs2pLdo2s5R38B2HYXG8Z0PP48/4+j1QHJFL3ssHIbJ4odPRS8PlHrFfw== -"@typescript-eslint/typescript-estree@5.30.4": - version "5.30.4" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.30.4.tgz#ac4be8a2f8fb1f1c3b346d5992a36163121ddb3f" - integrity sha512-V4VnEs6/J9/nNizaA12IeU4SAeEYaiKr7XndLNfV5+3zZSB4hIu6EhHJixTKhvIqA+EEHgBl6re8pivBMLLO1w== - dependencies: - "@typescript-eslint/types" "5.30.4" - "@typescript-eslint/visitor-keys" "5.30.4" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" - "@typescript-eslint/typescript-estree@5.30.5": version "5.30.5" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.30.5.tgz#c520e4eba20551c4ec76af8d344a42eb6c9767bb" @@ -1961,14 +1938,6 @@ eslint-scope "^5.1.1" eslint-utils "^3.0.0" -"@typescript-eslint/visitor-keys@5.30.4": - version "5.30.4" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.30.4.tgz#b4969df1a440cc999d4bb7f7b7932dce05537089" - integrity sha512-ulKGse3mruSc8x6l8ORSc6+1ORyJzKmZeIaRTu/WpaF/jx3vHvEn5XZUKF9XaVg2710mFmTAUlLcLYLPp/Zf/Q== - dependencies: - "@typescript-eslint/types" "5.30.4" - eslint-visitor-keys "^3.3.0" - "@typescript-eslint/visitor-keys@5.30.5": version "5.30.5" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.30.5.tgz#d4bb969202019d5d5d849a0aaedc7370cc044b14" @@ -4518,11 +4487,6 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -filter-obj@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/filter-obj/-/filter-obj-1.1.0.tgz#9b311112bc6c6127a16e016c6c5d7f19e0805c5b" - integrity sha1-mzERErxsYSehbgFsbF1/GeCAXFs= - finalhandler@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" @@ -5683,12 +5647,12 @@ is-shared-array-buffer@^1.0.1: resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz#97b0c85fbdacb59c9c446fe653b82cf2b5b7cfe6" integrity sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA== -is-ssh@^1.3.0: - version "1.3.3" - resolved "https://registry.yarnpkg.com/is-ssh/-/is-ssh-1.3.3.tgz#7f133285ccd7f2c2c7fc897b771b53d95a2b2c7e" - integrity sha512-NKzJmQzJfEEma3w5cJNcUMxoXfDjz0Zj0eyCalHn2E6VOwlzjZo0yuO2fcBSf8zhFuVCL/82/r5gRcoi6aEPVQ== +is-ssh@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/is-ssh/-/is-ssh-1.4.0.tgz#4f8220601d2839d8fa624b3106f8e8884f01b8b2" + integrity sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ== dependencies: - protocols "^1.1.0" + protocols "^2.0.1" is-stream@^1.1.0: version "1.1.0" @@ -7188,7 +7152,7 @@ normalize-url@^4.1.0: resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-4.5.1.tgz#0dd90cf1288ee1d1313b87081c9a5932ee48518a" integrity sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA== -normalize-url@^6.0.1: +normalize-url@^6.0.1, normalize-url@^6.1.0: version "6.1.0" resolved "https://registry.yarnpkg.com/normalize-url/-/normalize-url-6.1.0.tgz#40d0885b535deffe3f3147bec877d05fe4c5668a" integrity sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A== @@ -7564,15 +7528,22 @@ parse-passwd@^1.0.0: resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= -parse-path@^4.0.4: - version "4.0.4" - resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-4.0.4.tgz#4bf424e6b743fb080831f03b536af9fc43f0ffea" - integrity sha512-Z2lWUis7jlmXC1jeOG9giRO2+FsuyNipeQ43HAjqAZjwSe3SEf+q/84FGPHoso3kyntbxa4c4i77t3m6fGf8cw== +parse-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/parse-path/-/parse-path-5.0.0.tgz#f933152f3c6d34f4cf36cfc3d07b138ac113649d" + integrity sha512-qOpH55/+ZJ4jUu/oLO+ifUKjFPNZGfnPJtzvGzKN/4oLMil5m9OH4VpOj6++9/ytJcfks4kzH2hhi87GL/OU9A== dependencies: - is-ssh "^1.3.0" - protocols "^1.4.0" - qs "^6.9.4" - query-string "^6.13.8" + protocols "^2.0.0" + +parse-url@^7.0.2: + version "7.0.2" + resolved "https://registry.yarnpkg.com/parse-url/-/parse-url-7.0.2.tgz#d21232417199b8d371c6aec0cedf1406fd6393f0" + integrity sha512-PqO4Z0eCiQ08Wj6QQmrmp5YTTxpYfONdOEamrtvK63AmzXpcavIVQubGHxOEwiIoDZFb8uDOoQFS0NCcjqIYQg== + dependencies: + is-ssh "^1.4.0" + normalize-url "^6.1.0" + parse-path "^5.0.0" + protocols "^2.0.1" parse5@6.0.1: version "6.0.1" @@ -7901,10 +7872,10 @@ proto-list@~1.2.1: resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= -protocols@^1.1.0, protocols@^1.4.0: - version "1.4.8" - resolved "https://registry.yarnpkg.com/protocols/-/protocols-1.4.8.tgz#48eea2d8f58d9644a4a32caae5d5db290a075ce8" - integrity sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg== +protocols@^2.0.0, protocols@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/protocols/-/protocols-2.0.1.tgz#8f155da3fc0f32644e83c5782c8e8212ccf70a86" + integrity sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q== proxy-addr@~2.0.5: version "2.0.7" @@ -7937,28 +7908,11 @@ qs@6.7.0: resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== -qs@^6.9.4: - version "6.10.1" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.10.1.tgz#4931482fa8d647a5aab799c5271d2133b981fb6a" - integrity sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg== - dependencies: - side-channel "^1.0.4" - 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== -query-string@^6.13.8: - version "6.14.1" - resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.14.1.tgz#7ac2dca46da7f309449ba0f86b1fd28255b0c86a" - integrity sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw== - dependencies: - decode-uri-component "^0.2.0" - filter-obj "^1.1.0" - split-on-first "^1.0.0" - strict-uri-encode "^2.0.0" - queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" @@ -8857,11 +8811,6 @@ speedometer@~0.1.2: resolved "https://registry.yarnpkg.com/speedometer/-/speedometer-0.1.4.tgz#9876dbd2a169d3115402d48e6ea6329c8816a50d" integrity sha1-mHbb0qFp0xFUAtSObqYynIgWpQ0= -split-on-first@^1.0.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/split-on-first/-/split-on-first-1.1.0.tgz#f610afeee3b12bce1d0c30425e76398b78249a5f" - integrity sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw== - sprintf-js@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.2.tgz#da1765262bf8c0f571749f2ad6c26300207ae673" @@ -8911,11 +8860,6 @@ stream-buffers@~2.2.0: resolved "https://registry.yarnpkg.com/stream-buffers/-/stream-buffers-2.2.0.tgz#91d5f5130d1cef96dcfa7f726945188741d09ee4" integrity sha1-kdX1Ew0c75bc+n9yaUUYh0HQnuQ= -strict-uri-encode@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz#b9c7330c7042862f6b142dc274bbcc5866ce3546" - integrity sha1-ucczDHBChi9rFC3CdLvMWGbONUY= - string-length@^4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" From ab433b8fcd34cb2f0b062cbd7057223e752d6d01 Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Tue, 21 Jun 2022 11:15:04 -0700 Subject: [PATCH 044/121] git-porcelain/checkout allows undefined onProgress parameter, which was already optional --- src/containers/git-porcelain.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/containers/git-porcelain.ts b/src/containers/git-porcelain.ts index 9c6c87743..b446a7f44 100644 --- a/src/containers/git-porcelain.ts +++ b/src/containers/git-porcelain.ts @@ -142,7 +142,7 @@ export const checkout = async ({ dryRun?: boolean; force?: boolean; track?: boolean; - onProgress?: isogit.ProgressCallback; + onProgress?: isogit.ProgressCallback | undefined; }): Promise => { const optionals = removeUndefinedProperties({ filepaths, onProgress }); return isogit.checkout({ From e52342e34cdc6440d46830620d241095b0728be5 Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Tue, 21 Jun 2022 11:30:33 -0700 Subject: [PATCH 045/121] Set typescript.preferences.quoteStyle to single for auto-import suggestions; per https://code.visualstudio.com/updates/v1_24#_preferences-for-auto-imports-and-generated-code --- .vscode/settings.json | 1 + 1 file changed, 1 insertion(+) diff --git a/.vscode/settings.json b/.vscode/settings.json index 52eb51fc4..ec1e82fdc 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -7,6 +7,7 @@ "typescriptreact" ], "typescript.tsdk": "node_modules/typescript/lib", + "typescript.preferences.quoteStyle": "single", "typescript.preferences.importModuleSpecifier": "relative", "editor.codeActionsOnSave": { "source.fixAll.eslint": true From 6a40d356e57be781deaca490390db4a309d0cc51 Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Tue, 21 Jun 2022 11:41:57 -0700 Subject: [PATCH 046/121] updateBranches thunk added to allow verifying that a Repository is tracking all local and remote branches --- src/store/thunks/branches.ts | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/store/thunks/branches.ts b/src/store/thunks/branches.ts index 3c121aacb..41fcc4127 100644 --- a/src/store/thunks/branches.ts +++ b/src/store/thunks/branches.ts @@ -95,6 +95,16 @@ export const fetchBranches = createAsyncThunk<{ local: Branch[], remote: Branch[ } ); +/** Verify that a repository is tracking all local and remote branches. */ +export const updateRepository = createAsyncThunk( + 'branches/updateRepository', + async (repo, thunkAPI) => { + const branches = await thunkAPI.dispatch(fetchBranches(repo.root)).unwrap(); + const branchIds = { local: branches.local.map(b => b.id), remote: branches.remote.map(b => b.id) }; + return thunkAPI.dispatch(repoUpdated({ ...repo, ...branchIds })).payload; + } +); + type CheckoutOptions = { metafile: UUID, branchRef: string, progress?: boolean, overwrite?: boolean }; /** Checkout git branches from remote to local scope and switch branch references in a targeted Metafile. */ @@ -137,8 +147,7 @@ export const checkoutBranch = createAsyncThunk b.id), remote: branches.remote.map(b => b.id) } })) : undefined; + repo ? await thunkAPI.dispatch(updateRepository(repo)) : undefined; // either extract existing metafile or create a new metafile for the original metafile filepath const relativePath = relative(oldWorktree.path.toString(), metafile.path.toString()); From 0079826e36e94777d41fded7f20c26a52ca6cd86 Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Tue, 21 Jun 2022 13:53:05 -0700 Subject: [PATCH 047/121] StatusIcon component renamed to Status --- src/components/{StatusIcon.tsx => Status.tsx} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/components/{StatusIcon.tsx => Status.tsx} (100%) diff --git a/src/components/StatusIcon.tsx b/src/components/Status.tsx similarity index 100% rename from src/components/StatusIcon.tsx rename to src/components/Status.tsx From c9b26ece28b5017d7c8a9ca2ca5bb12428a8c5ac Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Tue, 21 Jun 2022 13:53:28 -0700 Subject: [PATCH 048/121] Sort branches alphabetically by name --- src/components/BranchTracker/RepoStatus.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/components/BranchTracker/RepoStatus.tsx b/src/components/BranchTracker/RepoStatus.tsx index e2de2881c..d35cec86b 100644 --- a/src/components/BranchTracker/RepoStatus.tsx +++ b/src/components/BranchTracker/RepoStatus.tsx @@ -16,7 +16,9 @@ const RepoStatus = (props: { repo: Repository; }) => { return ( - {branches.filter(branch => branch.ref !== 'HEAD').map(branch => )} + {branches.filter(branch => branch.ref !== 'HEAD').sort((a, b) => a.ref.localeCompare(b.ref)).map(branch => + + )} Date: Tue, 21 Jun 2022 14:23:09 -0700 Subject: [PATCH 049/121] Enable noUncheckedIndexedAccess to prevent possibly unsafe access of empty arrays; see https://www.typescriptlang.org/tsconfig#noUncheckedIndexedAccess --- tsconfig.json | 1 + 1 file changed, 1 insertion(+) diff --git a/tsconfig.json b/tsconfig.json index f4f548be8..6821c9225 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -9,6 +9,7 @@ "exactOptionalPropertyTypes": true, "useUnknownInCatchVariables": true, "noImplicitAny": true, + "noUncheckedIndexedAccess": true, "sourceMap": true, "baseUrl": ".", "jsx": "react", From 4af43a1e6b350969578cd9381bfbc6725a2bc3ab Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Tue, 21 Jun 2022 16:27:54 -0700 Subject: [PATCH 050/121] git-porcelain/clone updated to not use Repository type parameters --- src/containers/git-porcelain.ts | 8 +++++--- src/containers/git-worktree.ts | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/containers/git-porcelain.ts b/src/containers/git-porcelain.ts index b446a7f44..1beba7f2c 100644 --- a/src/containers/git-porcelain.ts +++ b/src/containers/git-porcelain.ts @@ -53,7 +53,9 @@ export const branch = async ({ dir, gitdir = path.join(dir.toString(), '.git'), * additional local-only branch functionality. If the `ref` parameter or the current branch do not exist on the remote repository, then the * local-only repository (including the *.git* directory) is copied using the *fs.copy* function (excluding the `node_modules` directory). * @param dir The worktree root directory to contain the cloned repo. - * @param repo A Repository object to be cloned. + * @param url The URL of a remote repository to be cloned. + * @param repo.root The worktree root directory of a local repository to be cloned. + * @param repo.url The URL associated with an existing local repository to be cloned. * @param ref An optional branch name or SHA-1 hash to target cloning to that specific branch or commit. * @param singleBranch Instead of the default behavior of fetching all the branches, only fetch a single branch. * @param noCheckout Only fetch the repo without checking out a branch. Skipping checkout can save a lot of time normally spent writing @@ -68,7 +70,7 @@ export const branch = async ({ dir, gitdir = path.join(dir.toString(), '.git'), export const clone = async ({ dir, url, repo, ref, singleBranch = false, noCheckout = false, noTags = false, depth, exclude, onProgress }: { dir: fs.PathLike; url?: URL; - repo?: Repository; + repo?: { root: fs.PathLike, url: string }; ref?: string; singleBranch?: boolean; noCheckout?: boolean; @@ -104,7 +106,7 @@ export const clone = async ({ dir, url, repo, ref, singleBranch = false, noCheck } else { // cloning an existing repository into a linked worktree root directory await isogit.clone({ - fs: fs, http: http, dir: dir.toString(), url: repo.url, singleBranch: singleBranch, noCheckout: noCheckout, + fs: fs, http: http, dir: dir.toString(), url: repo.url.toString(), singleBranch: singleBranch, noCheckout: noCheckout, noTags: noTags, ...optionals }); return true; diff --git a/src/containers/git-worktree.ts b/src/containers/git-worktree.ts index 85724d6b1..cc86fab4e 100644 --- a/src/containers/git-worktree.ts +++ b/src/containers/git-worktree.ts @@ -261,7 +261,7 @@ export const add = async (repo: Repository, worktreeDir: fs.PathLike, commitish? const detached = (commitish && isHash(commitish, 'sha1')) ? commitish : undefined; // initialize the linked worktree - await clone({ repo: repo, dir: worktreeDir, ref: branch, noCheckout: true }); + await clone({ dir: worktreeDir, repo: { root: repo.root, url: repo.url }, ref: branch, noCheckout: true }); const remoteBranches = await isogit.listBranches({ fs: fs, dir: repo.root.toString(), remote: 'origin' }); if (remoteBranches.includes(branch)) { await checkout({ dir: worktreeDir, ref: branch }); From a2f18c6d0441958a739f569cd54e03d474899386 Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Tue, 21 Jun 2022 22:13:07 -0700 Subject: [PATCH 051/121] Adhere to noUncheckedIndexedAccess by verifying index or casting to known type --- .../BranchTracker/BranchTracker.tsx | 2 +- src/components/Browser/Browser.tsx | 4 +- src/components/Button/Commit.tsx | 4 +- src/components/Button/Reset.tsx | 2 +- src/components/Button/Save.tsx | 4 +- src/components/Button/Stage.tsx | 2 +- src/components/Button/Undo.tsx | 4 +- src/components/Button/Unstage.tsx | 2 +- .../Modal/DiffPickerDialog.spec.tsx | 12 +- src/containers/conflicts.ts | 4 +- src/containers/dialogs.ts | 2 +- src/containers/hooks/useGitGraph.ts | 8 +- src/containers/hooks/useGitHistory.ts | 2 +- src/containers/hooks/useHistory.ts | 4 +- src/containers/io-stats.ts | 8 +- src/containers/io.ts | 4 +- src/containers/utils.ts | 5 +- src/store/immutables.ts | 201 +++++++++--------- src/store/thunks/branches.ts | 4 +- src/store/thunks/metafiles.ts | 4 +- src/store/thunks/stacks.ts | 7 +- src/test-utils/mock-git.ts | 5 +- 22 files changed, 149 insertions(+), 145 deletions(-) diff --git a/src/components/BranchTracker/BranchTracker.tsx b/src/components/BranchTracker/BranchTracker.tsx index b6b02692b..1f6e8a008 100644 --- a/src/components/BranchTracker/BranchTracker.tsx +++ b/src/components/BranchTracker/BranchTracker.tsx @@ -9,7 +9,7 @@ import RepoStatus from './RepoStatus'; const BranchTracker = () => { const repos = useAppSelector((state: RootState) => repoSelectors.selectAll(state)); - const [expanded, setExpanded] = React.useState(repos.length > 0 ? [repos[0].id] : []); // initial state; expand first listed repo + const [expanded, setExpanded] = React.useState(repos[0] ? [repos[0].id] : []); // initial state; expand first listed repo const handleToggle = (_event: React.ChangeEvent>, nodeIds: string[]) => setExpanded(nodeIds); diff --git a/src/components/Browser/Browser.tsx b/src/components/Browser/Browser.tsx index 6617b369a..01aa3a78a 100644 --- a/src/components/Browser/Browser.tsx +++ b/src/components/Browser/Browser.tsx @@ -35,7 +35,7 @@ const Browser = ({ card, mode = 'dark' }: { card: string, mode?: Mode }) => { const back = () => { if (canGoBack) { - const url = state.past[state.past.length - 1]; + const url = state.past[state.past.length - 1] as URL; goBack(); const webview: Electron.WebviewTag | null = document.querySelector(`[id="${card}-webview"]`); webview?.loadURL(url.href); @@ -44,7 +44,7 @@ const Browser = ({ card, mode = 'dark' }: { card: string, mode?: Mode }) => { const forward = () => { if (canGoForward) { - const url = state.future[0]; + const url = state.future[0] as URL; goForward(); const webview: Electron.WebviewTag | null = document.querySelector(`[id="${card}-webview"]`); webview?.loadURL(url.href); diff --git a/src/components/Button/Commit.tsx b/src/components/Button/Commit.tsx index 312dfac73..f269aa5bc 100644 --- a/src/components/Button/Commit.tsx +++ b/src/components/Button/Commit.tsx @@ -29,11 +29,11 @@ const CommitButton = ({ cardIds, mode = 'light' }: { cardIds: UUID[], mode?: Mod const dispatch = useAppDispatch(); const hasStaged = staged.length > 0; - const isCaptured = cards.length == 1 && cards[0].captured !== undefined; + const isCaptured = cards[0]?.captured !== undefined; const commit = async () => { const firstMetafile = staged[0]; - if (firstMetafile.repo && firstMetafile.branch) { + if (firstMetafile && firstMetafile.repo && firstMetafile.branch) { const commitDialogModal: Modal = { id: v4(), type: 'CommitDialog', diff --git a/src/components/Button/Reset.tsx b/src/components/Button/Reset.tsx index 431ff67d6..e816a26bd 100644 --- a/src/components/Button/Reset.tsx +++ b/src/components/Button/Reset.tsx @@ -40,7 +40,7 @@ const ResetButton = ({ cardIds, mode = 'light' }: { cardIds: UUID[], mode?: Mode const isExplorer = metafiles.find(m => m.handler === 'Explorer'); const hasChanges = (unstaged.length > 0 || staged.length > 0); - const isCaptured = cards.length == 1 && cards[0].captured !== undefined; + const isCaptured = cards[0]?.captured !== undefined; const onHover = () => { if (cards.length > 1) { diff --git a/src/components/Button/Save.tsx b/src/components/Button/Save.tsx index 542314169..4ec8c7ca2 100644 --- a/src/components/Button/Save.tsx +++ b/src/components/Button/Save.tsx @@ -51,9 +51,9 @@ const SaveButton = ({ cardIds, mode = 'light' }: { cardIds: UUID[], mode?: Mode } // check whether button is on a single card and also captured - const isCaptured = cards.length == 1 && cards[0].captured !== undefined; + const isCaptured = cards[0]?.captured !== undefined; // check whether button is on a content-based card that can be saved to a file - const isSaveable = modified.length > 0 && modified[0].filetype !== 'Directory' && modified[0].handler === 'Editor'; + const isSaveable = modified[0]?.filetype !== 'Directory' && modified[0]?.handler === 'Editor'; const onHover = () => { if (cards.length > 1) { diff --git a/src/components/Button/Stage.tsx b/src/components/Button/Stage.tsx index cb51fcedb..638341337 100644 --- a/src/components/Button/Stage.tsx +++ b/src/components/Button/Stage.tsx @@ -31,7 +31,7 @@ const StageButton = ({ cardIds, mode = 'light' }: { cardIds: UUID[], mode?: Mode const isExplorer = metafiles.find(m => m.handler === 'Explorer') ? true : false; const hasUnstaged = unstaged.length > 0; const hasConflicts = unstaged.find(m => m.conflicts && m.conflicts.length > 0) ? true : false; - const isCaptured = cards.length == 1 && cards[0].captured !== undefined; + const isCaptured = cards[0]?.captured !== undefined; const stage = async () => await Promise.all(unstaged .filter(isFileMetafile) diff --git a/src/components/Button/Undo.tsx b/src/components/Button/Undo.tsx index cf15438c7..d6d9716be 100644 --- a/src/components/Button/Undo.tsx +++ b/src/components/Button/Undo.tsx @@ -42,9 +42,9 @@ const UndoButton = ({ cardIds, mode = 'light' }: { cardIds: UUID[], mode?: Mode } // check whether button is on a single card and also captured - const isCaptured = cards.length == 1 && cards[0].captured !== undefined; + const isCaptured = cards[0]?.captured !== undefined; // check whether button is on a content-based card that can be undone based on file-content - const isUndoable = modified.length > 0 && modified[0].filetype !== 'Directory' && modified[0].handler === 'Editor'; + const isUndoable = modified[0]?.filetype !== 'Directory' && modified[0]?.handler === 'Editor'; const onHover = () => { if (cards.length > 1) { diff --git a/src/components/Button/Unstage.tsx b/src/components/Button/Unstage.tsx index 52e4334b7..129ceea42 100644 --- a/src/components/Button/Unstage.tsx +++ b/src/components/Button/Unstage.tsx @@ -30,7 +30,7 @@ const UnstageButton = ({ cardIds, mode = 'light' }: { cardIds: UUID[], mode?: Mo const isExplorer = metafiles.find(m => m.handler === 'Explorer'); const hasStaged = staged.length > 0; - const isCaptured = cards.length == 1 && cards[0].captured !== undefined; + const isCaptured = cards[0]?.captured !== undefined; const unstage = async () => await Promise.all(staged .filter(isFileMetafile) diff --git a/src/components/Modal/DiffPickerDialog.spec.tsx b/src/components/Modal/DiffPickerDialog.spec.tsx index 5dd0cb894..bca4f6608 100644 --- a/src/components/Modal/DiffPickerDialog.spec.tsx +++ b/src/components/Modal/DiffPickerDialog.spec.tsx @@ -126,7 +126,7 @@ describe('DiffPickerDialog modal component', () => { it('DiffPickerDialog tracks selection updates', async () => { produceComponent(); - const trigger = screen.getAllByRole('button')[0]; + const trigger = screen.getAllByRole('button')[0] as HTMLElement; // open the select component fireEvent.mouseDown(trigger); @@ -135,7 +135,7 @@ describe('DiffPickerDialog modal component', () => { // // make a selection and close the select component act(() => { - options[1].click(); + (options[1] as HTMLElement).click(); }); await waitFor(() => expect(trigger).toHaveFocus()); @@ -144,8 +144,8 @@ describe('DiffPickerDialog modal component', () => { it('DiffPickerDialog returns UUIDs for selected cards on run', async () => { produceComponent(); - const leftSelector = screen.getAllByRole('button')[0]; - const rightSelector = screen.getAllByRole('button')[1]; + const leftSelector = screen.getAllByRole('button')[0] as HTMLElement; + const rightSelector = screen.getAllByRole('button')[1] as HTMLElement; const runButton = screen.queryByText(/Run Diff/i); // open the left select component @@ -154,7 +154,7 @@ describe('DiffPickerDialog modal component', () => { expect(leftOptions[0]).toHaveFocus(); // make selection and close left component act(() => { - leftOptions[1].click(); + (leftOptions[1] as HTMLElement).click(); }); // open the right select component @@ -163,7 +163,7 @@ describe('DiffPickerDialog modal component', () => { expect(rightOptions[0]).toHaveFocus(); // make selection and close right component act(() => { - rightOptions[0].click(); + (rightOptions[0] as HTMLElement).click(); }); if (runButton) fireEvent.click(runButton); diff --git a/src/containers/conflicts.ts b/src/containers/conflicts.ts index 65ed970cb..ccc5e8b70 100644 --- a/src/containers/conflicts.ts +++ b/src/containers/conflicts.ts @@ -64,7 +64,7 @@ export const resolveConflictBranches = async (root: PathLike): Promise<{ base: s const match = mergeMsg.match(branchPattern); return match ? match.length === 2 - ? { base: match[0].replace(/['"]+/g, ''), compare: match[1].replace(/['"]+/g, '') } - : { base: undefined, compare: match[0].replace(/['"]+/g, '') } + ? { base: (match[0] as string).replace(/['"]+/g, ''), compare: (match[1] as string).replace(/['"]+/g, '') } + : { base: undefined, compare: (match[0] as string).replace(/['"]+/g, '') } : { base: undefined, compare: '' }; }; \ No newline at end of file diff --git a/src/containers/dialogs.ts b/src/containers/dialogs.ts index 88d023a49..cdb18a6a1 100644 --- a/src/containers/dialogs.ts +++ b/src/containers/dialogs.ts @@ -18,7 +18,7 @@ export const fileOpenDialog = createAsyncThunk 1) { + if (paths.filePaths[0]) { /** Multiple filepaths loading asynchronously can cause a race condition where all filepaths appear to require a new repo, which * causes duplicated copies of the same repo to be added to the Redux store. Since selecting multiple files in the dialog results * in filepaths that all have the same root parent directory, and therefore share the same repo, we can fix it by resolving the diff --git a/src/containers/hooks/useGitGraph.ts b/src/containers/hooks/useGitGraph.ts index 16f5af126..c8b895fba 100644 --- a/src/containers/hooks/useGitGraph.ts +++ b/src/containers/hooks/useGitGraph.ts @@ -115,14 +115,14 @@ const useGitGraph = (repoId: UUID, pruned = false): useGitGraphHook => { commit: { message: '', tree: '', - parent: [branch.commits[0].oid], + parent: branch.commits[0] ? [branch.commits[0].oid] : [], author: { name: '', email: '', timestamp: 0, timezoneOffset: 0 }, committer: { name: '', email: '', timestamp: 0, timezoneOffset: 0 } }, payload: '', scope: branch.scope, branch: branch.ref, - parents: [branch.commits[0].oid], + parents: branch.commits[0] ? [branch.commits[0].oid] : [], children: [], head: false, staged: true, @@ -162,8 +162,8 @@ const useGitGraph = (repoId: UUID, pruned = false): useGitGraphHook => { const prunable = Array.from(graph.values()).filter(vertex => vertex.parents.length == 1 && vertex.children.length == 1); for (const vertex of prunable) { const sequential = graph.get(vertex.oid); // retrieve any vertex updates between for-loop iterations - const parent = sequential ? graph.get(sequential.parents[0]) : undefined; // sequential type guarantees only 1 parent - const child = sequential ? graph.get(sequential.children[0]) : undefined; // sequential type guarantees only 1 child + const parent = sequential ? graph.get(sequential.parents[0] as string) : undefined; // sequential type guarantees only 1 parent + const child = sequential ? graph.get(sequential.children[0] as string) : undefined; // sequential type guarantees only 1 child if (sequential && parent && child) { child.parents = child.parents.map(p => p === sequential.oid ? parent.oid : p); diff --git a/src/containers/hooks/useGitHistory.ts b/src/containers/hooks/useGitHistory.ts index 2988c0d83..5431563f8 100644 --- a/src/containers/hooks/useGitHistory.ts +++ b/src/containers/hooks/useGitHistory.ts @@ -50,7 +50,7 @@ export const useGitHistory = (repoId: UUID): useGitHistoryHook => { (!commitsCache.has(commit.oid)) ? commitsCache.set(commit.oid, { ...commit, branch: branch.ref, scope: branch.scope }) : null); - if (!headsCache.has(`${branch.scope}/${branch.ref}`)) { + if (!headsCache.has(`${branch.scope}/${branch.ref}`) && branchCommits[0]) { headsCache.set(`${branch.scope}/${branch.ref}`, branchCommits[0].oid); } } diff --git a/src/containers/hooks/useHistory.ts b/src/containers/hooks/useHistory.ts index 56999390a..06f52d946 100644 --- a/src/containers/hooks/useHistory.ts +++ b/src/containers/hooks/useHistory.ts @@ -32,7 +32,7 @@ const reducer = (state: HistoryState, action: HistoryAction) => { switch (action.type) { case 'BACK': { - const previous = past[past.length - 1]; + const previous = past[past.length - 1] as URL; const newPast = past.slice(0, past.length - 1); return { @@ -42,7 +42,7 @@ const reducer = (state: HistoryState, action: HistoryAction) => { }; } case 'FORWARD': { - const next = future[0]; + const next = future[0] as URL; const newFuture = future.slice(1); return { diff --git a/src/containers/io-stats.ts b/src/containers/io-stats.ts index e9e56f865..15c3c2142 100644 --- a/src/containers/io-stats.ts +++ b/src/containers/io-stats.ts @@ -24,16 +24,16 @@ const SecondsNanoseconds = ( givenSeconds?: number, givenNanoseconds?: number, milliseconds?: number, -) => { +): [number, number] => { if (givenSeconds !== undefined && givenNanoseconds !== undefined) { return [givenSeconds, givenNanoseconds] } if (milliseconds === undefined) { milliseconds = date.valueOf() } - const seconds = Math.floor(milliseconds / 1000) - const nanoseconds = (milliseconds - seconds * 1000) * 1000000 - return [seconds, nanoseconds] + const seconds = Math.floor(milliseconds / 1000); + const nanoseconds = (milliseconds - seconds * 1000) * 1000000; + return [seconds, nanoseconds]; }; const normalizeStats = (e: IndexEntry | fs.Stats) => { diff --git a/src/containers/io.ts b/src/containers/io.ts index 7463c4088..da6d63931 100644 --- a/src/containers/io.ts +++ b/src/containers/io.ts @@ -75,8 +75,8 @@ export const extractFilename = (filepath: fs.PathLike): string => { export const extractDirname = (filepath: fs.PathLike): string => { const trailingSeparator = filepath.toString().slice(-1)[0]?.match(/[\\/]/) !== null; const expandedPath = filepath.toString().split(/[\\/]/); - if (expandedPath.length > 1) return expandedPath[expandedPath.length - 2]; - if (trailingSeparator) return expandedPath[expandedPath.length - 1]; + if (expandedPath.length > 1) return expandedPath[expandedPath.length - 2] as string; + if (trailingSeparator) return expandedPath[expandedPath.length - 1] as string; else return ''; }; diff --git a/src/containers/utils.ts b/src/containers/utils.ts index 51a0e0ea7..bda484098 100644 --- a/src/containers/utils.ts +++ b/src/containers/utils.ts @@ -178,9 +178,10 @@ export const filterObject = >(obj: T, filter: str */ export const objectifyPath = (path: Array, value: string | boolean | number | undefined): Record => { + const init = { [path[path.length - 1] as string | number]: value }; return path .slice(0, -1) - .reduceRight((prev: Record, curr) => { return { [curr]: prev } }, { [path[path.length - 1]]: value }); + .reduceRight((prev: Record, curr) => { return { [curr]: prev } }, init); }; /** @@ -244,7 +245,7 @@ export const toArrayBuffer = (buf: Buffer): ArrayBuffer => { const ab = new ArrayBuffer(buf.length); const view = new Uint8Array(ab); for (let i = 0; i < buf.length; i++) { - view[i] = buf[i]; + view[i] = buf[i] as number; } return ab; }; diff --git a/src/store/immutables.ts b/src/store/immutables.ts index 1e08439f3..5ac80b1bc 100644 --- a/src/store/immutables.ts +++ b/src/store/immutables.ts @@ -5,106 +5,107 @@ * @param newValues The new value object from which to copy properties. * @return New object containing all enumerable own properties from both params. */ - export const updateObject = (oldObject: T, newValues: Partial): T => { - return Object.assign({}, oldObject, newValues); - }; - - /** - * Immutably append a new item to an array by constructing a new combined array. - * @param oldArray The initial source Array object. - * @param newItem A new item to be appended to array. - * @returns New array containing all items from old array and including new item. - */ - export const addItemInArray = (oldArray: T[], newItem: T): T[] => [...oldArray, newItem]; - - /** - * Immutably remove an element from an array by producing a new reduced array. - * @param array The initial source Array object. - * @param item A target item contained within the array. - * @returns New array containing all elements from array excluding target item. - */ - export const removeItemInArray = (array: string[], item: string): string[] => { - return array.filter(element => element !== item); +export const updateObject = (oldObject: T, newValues: Partial): T => { + return Object.assign({}, oldObject, newValues); +}; + +/** + * Immutably append a new item to an array by constructing a new combined array. + * @param oldArray The initial source Array object. + * @param newItem A new item to be appended to array. + * @returns New array containing all items from old array and including new item. + */ +export const addItemInArray = (oldArray: T[], newItem: T): T[] => [...oldArray, newItem]; + +/** + * Immutably remove an element from an array by producing a new reduced array. + * @param array The initial source Array object. + * @param item A target item contained within the array. + * @returns New array containing all elements from array excluding target item. + */ +export const removeItemInArray = (array: string[], item: string): string[] => { + return array.filter(element => element !== item); +} + +/** + * Immutably append a new item to a map by constructing a new combined map. + * @param map The initial source key-value map object. + * @param newItem A new item to be appended to map. + * @returns New map containing all items from old map and including new item. + */ +export const addItemInMap = (map: { [id: string]: T }, newItem: T): { [id: string]: T } => { + const updatedItems: { [id: string]: T } = {}; + for (const k in map) { + updatedItems[k] = map[k] as T; } - - /** - * Immutably append a new item to a map by constructing a new combined map. - * @param map The initial source key-value map object. - * @param newItem A new item to be appended to map. - * @returns New map containing all items from old map and including new item. - */ - export const addItemInMap = (map: { [id: string]: T }, newItem: T): { [id: string]: T } => { - const updatedItems: { [id: string]: T } = {}; - for (const k in map) { - updatedItems[k] = map[k]; + updatedItems[newItem.id] = newItem; + return updatedItems; +}; + +/** + * Immutably remove an item from a map by producing a new reduced map. + * @param map The initial source key-value map object. + * @param itemId An id associated with an item contained in the map. + * @returns New map containing all items from map excluding item with matching id. + */ +export const removeItemInMap = (map: { [id: string]: T }, itemId: string): { [id: string]: T } => { + return Object.keys(map).reduce((items: { [id: string]: T }, id) => { + if (id !== itemId) { + items[id] = map[id] as T; } - updatedItems[newItem.id] = newItem; - return updatedItems; - }; - - /** - * Immutably remove an item from a map by producing a new reduced map. - * @param map The initial source key-value map object. - * @param itemId An id associated with an item contained in the map. - * @returns New map containing all items from map excluding item with matching id. - */ - export const removeItemInMap = (map: { [id: string]: T }, itemId: string): { [id: string]: T } => { - return Object.keys(map).reduce((items: { [id: string]: T }, id) => { - if (id !== itemId) { - items[id] = map[id]; - } - return items; - }, {}); - } - - /** - * Immutably remove items from map using specified filter function. - * @param map The initial source key-value map object. - * @param filterFn Filter function that returns true for each item in map that - * meets conditions specified in function. - */ - export const removeMatchesInMap = (map: { [id: string]: T }, filterFn: (item: T) => boolean): { [id: string]: T } => { - return Object.keys(map).reduce((items: { [id: string]: T }, id) => { - if (!filterFn(map[id])) { - items[id] = map[id]; - } - return items; - }, {}); - }; - - /** - * Immutably filters items from map using specified filter function and applies a callback function to update each matching item. - * @param map The initial source key-value map object. - * @param filterFn Filter function that returns true for each item in map that - * meets conditions specified in function. - * @param updateItemCallback Callback function to apply towards items that meet - * filter function predicates. - */ - export const updateMatchesInMap = ( - map: { [id: string]: T }, filterFn: (item: T) => boolean, updateItemCallback: (item: T) => T - ): { [id: string]: T } => { - const updatedItems: { [id: string]: T } = {}; - for (const k in map) { - if (filterFn(map[k])) { - updatedItems[k] = updateItemCallback(map[k]); - } else { - updatedItems[k] = map[k]; - } + return items; + }, {}); +} + +/** + * Immutably remove items from map using specified filter function. + * @param map The initial source key-value map object. + * @param filterFn Filter function that returns true for each item in map that + * meets conditions specified in function. + */ +export const removeMatchesInMap = (map: { [id: string]: T }, filterFn: (item: T) => boolean): { [id: string]: T } => { + return Object.keys(map).reduce((items: { [id: string]: T }, id) => { + const item = map[id] as T; + if (!filterFn(item)) { + items[id] = item; + } + return items; + }, {}); +}; + +/** + * Immutably filters items from map using specified filter function and applies a callback function to update each matching item. + * @param map The initial source key-value map object. + * @param filterFn Filter function that returns true for each item in map that + * meets conditions specified in function. + * @param updateItemCallback Callback function to apply towards items that meet + * filter function predicates. + */ +export const updateMatchesInMap = ( + map: { [id: string]: T }, filterFn: (item: T) => boolean, updateItemCallback: (item: T) => T +): { [id: string]: T } => { + const updatedItems: { [id: string]: T } = {}; + for (const k in map) { + const item = map[k] as T; + if (filterFn(item)) { + updatedItems[k] = updateItemCallback(item); + } else { + updatedItems[k] = item; } - return updatedItems; - }; - - /** - * Immutably update a specific item in a key-value map based on item id and applying a callback function to that item. - * @param map The initial source key-value map object. - * @param itemId An id associated with an item contained in the map. - * @param updateItemCallback Callback function to apply towards item with matching id. - * @returns New map containing all items from map including updated item. - */ - export const updateItemInMapById = ( - map: { [id: string]: T }, itemId: string, updateItemCallback: (item: T) => T - ): { [id: string]: T } => { - return updateMatchesInMap(map, (item => item.id === itemId), updateItemCallback); - }; - - \ No newline at end of file + } + return updatedItems; +}; + +/** + * Immutably update a specific item in a key-value map based on item id and applying a callback function to that item. + * @param map The initial source key-value map object. + * @param itemId An id associated with an item contained in the map. + * @param updateItemCallback Callback function to apply towards item with matching id. + * @returns New map containing all items from map including updated item. + */ +export const updateItemInMapById = ( + map: { [id: string]: T }, itemId: string, updateItemCallback: (item: T) => T +): { [id: string]: T } => { + return updateMatchesInMap(map, (item => item.id === itemId), updateItemCallback); +}; + diff --git a/src/store/thunks/branches.ts b/src/store/thunks/branches.ts index 41fcc4127..a2a897548 100644 --- a/src/store/thunks/branches.ts +++ b/src/store/thunks/branches.ts @@ -1,7 +1,7 @@ import * as fs from 'fs-extra'; import { createAsyncThunk } from '@reduxjs/toolkit'; import { PathLike } from 'fs-extra'; -import { listBranches } from 'isomorphic-git'; +import { listBranches, ReadCommitResult } from 'isomorphic-git'; import { v4 } from 'uuid'; import { ExactlyOne, isDefined } from '../../containers/utils'; import { getBranchRoot, getRoot, getWorktreePaths } from '../../containers/git-path'; @@ -62,7 +62,7 @@ export const createBranch = createAsyncThunk 0 ? commits[0].oid : ''; + const head = commits.length > 0 ? (commits[0] as ReadCommitResult).oid : ''; return thunkAPI.dispatch(branchAdded({ id: v4(), diff --git a/src/store/thunks/metafiles.ts b/src/store/thunks/metafiles.ts index 67fc20d07..a627d5694 100644 --- a/src/store/thunks/metafiles.ts +++ b/src/store/thunks/metafiles.ts @@ -34,8 +34,8 @@ export const isHydrated = (metafile: Metafile): boolean => { export const fetchMetafile = createAsyncThunk( 'metafiles/fetchMetafile', async (filepath, thunkAPI) => { - const existing: FilebasedMetafile[] = metafileSelectors.selectByFilepath(thunkAPI.getState(), filepath); - return (existing.length > 0) ? existing[0] : await thunkAPI.dispatch(createMetafile({ path: filepath })).unwrap(); + const existing = metafileSelectors.selectByFilepath(thunkAPI.getState(), filepath); + return (existing.length > 0) ? existing[0] as FilebasedMetafile : await thunkAPI.dispatch(createMetafile({ path: filepath })).unwrap(); } ); diff --git a/src/store/thunks/stacks.ts b/src/store/thunks/stacks.ts index d17f2f5b4..f89a41184 100644 --- a/src/store/thunks/stacks.ts +++ b/src/store/thunks/stacks.ts @@ -13,6 +13,7 @@ export const createStack = createAsyncThunk { const cards = cardSelectors.selectByIds(thunkAPI.getState(), input.cards); + const newStack = thunkAPI.dispatch(stackAdded({ id: v4(), name: input.name, @@ -20,8 +21,8 @@ export const createStack = createAsyncThunk thunkAPI.dispatch(cardUpdated({ ...card, captured: newStack.id, zIndex: index + 1, top: (10 * index + 50), left: (10 * index + 10) @@ -66,7 +67,7 @@ export const popCards = createAsyncThunk { const state = thunkAPI.getState(); const removingCards = cardSelectors.selectByIds(state, input.cards); - const stack = stackSelectors.selectById(state, removingCards[0].captured ? removingCards[0].captured : ''); + const stack = stackSelectors.selectById(state, removingCards[0]?.captured ? removingCards[0].captured : ''); if (stack) { // update the cards targetted for removal removingCards.map(card => thunkAPI.dispatch(cardUpdated({ diff --git a/src/test-utils/mock-git.ts b/src/test-utils/mock-git.ts index 9894d6607..c98102d1d 100644 --- a/src/test-utils/mock-git.ts +++ b/src/test-utils/mock-git.ts @@ -193,7 +193,7 @@ const gitReset = async (dir: string, ref: string, branch: string, hard = false) const re = /^HEAD~([0-9]+)$/; const match = ref.match(re); if (match) { - const count = +match[1]; + const count = +(match[1] as string); const commits = await git.log({ dir, fs, depth: count + 1 }); return new Promise((resolve, reject) => { if (commits.length < count + 1) { @@ -224,7 +224,8 @@ const gitReset = async (dir: string, ref: string, branch: string, hard = false) // given a set of filepaths, either targeted or randomly select file and update with additional content const randomFileUpdate = async (filepaths: fs.PathLike[], index = getRandomInt(filepaths.length)) => { - const filepath = path.resolve(filepaths[index].toString()); + const randomSelection = filepaths[index] as fs.PathLike; + const filepath = path.resolve(randomSelection.toString()); const fileContent = await readFileAsync(filepath, { encoding: 'utf-8' }); await writeFileAsync(filepath, fileContent + casual.text); } From fa6b37b41cb2ffc1911f09af1e8798f048e0094b Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Tue, 21 Jun 2022 22:14:36 -0700 Subject: [PATCH 052/121] Update imports for renamed components/Status.tsx --- src/components/MergeDialog/DeltaTimeline.tsx | 2 +- src/components/MergeDialog/MergeDialog.tsx | 2 +- src/components/MergeDialog/MergeTimeline.tsx | 2 +- src/components/MergeDialog/TimelineButtons.tsx | 2 +- src/components/MergeDialog/merge-actions.ts | 2 +- src/components/Modal/CloneDialog.tsx | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/components/MergeDialog/DeltaTimeline.tsx b/src/components/MergeDialog/DeltaTimeline.tsx index 85aadb4dd..7931ef533 100644 --- a/src/components/MergeDialog/DeltaTimeline.tsx +++ b/src/components/MergeDialog/DeltaTimeline.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { TimelineConnector, TimelineContent, TimelineItem, TimelineSeparator } from '@material-ui/lab'; -import StatusIcon, { LinearProgressWithLabel, Status } from '../StatusIcon'; +import StatusIcon, { LinearProgressWithLabel, Status } from '../Status'; import { createStyles, makeStyles, Theme } from '@material-ui/core/styles'; import { Typography } from '@material-ui/core'; diff --git a/src/components/MergeDialog/MergeDialog.tsx b/src/components/MergeDialog/MergeDialog.tsx index fc82e573b..ef58fedb5 100644 --- a/src/components/MergeDialog/MergeDialog.tsx +++ b/src/components/MergeDialog/MergeDialog.tsx @@ -1,6 +1,6 @@ import React, { useState } from 'react'; import { Modal, modalRemoved } from '../../store/slices/modals'; -import { Status } from '../StatusIcon'; +import { Status } from '../Status'; import { UUID } from '../../store/types'; import { RootState } from '../../store/store'; import { useAppDispatch, useAppSelector } from '../../store/hooks'; diff --git a/src/components/MergeDialog/MergeTimeline.tsx b/src/components/MergeDialog/MergeTimeline.tsx index d89fc3dc2..4fffd4ae3 100644 --- a/src/components/MergeDialog/MergeTimeline.tsx +++ b/src/components/MergeDialog/MergeTimeline.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { createStyles, makeStyles, Theme } from '@material-ui/core/styles'; -import StatusIcon, { LinearProgressWithLabel, Status } from '../StatusIcon'; +import StatusIcon, { LinearProgressWithLabel, Status } from '../Status'; import { TimelineContent, TimelineItem, TimelineSeparator } from '@material-ui/lab'; import { Typography } from '@material-ui/core'; diff --git a/src/components/MergeDialog/TimelineButtons.tsx b/src/components/MergeDialog/TimelineButtons.tsx index 0f5bcf80d..964690974 100644 --- a/src/components/MergeDialog/TimelineButtons.tsx +++ b/src/components/MergeDialog/TimelineButtons.tsx @@ -1,7 +1,7 @@ import React from 'react'; import { Button } from '@material-ui/core'; import { createStyles, makeStyles, Theme } from '@material-ui/core/styles'; -import { Status } from '../StatusIcon'; +import { Status } from '../Status'; import { useAppDispatch } from '../../store/hooks'; import { modalRemoved } from '../../store/slices/modals'; import { UUID } from '../../store/types'; diff --git a/src/components/MergeDialog/merge-actions.ts b/src/components/MergeDialog/merge-actions.ts index 1cef7daef..3f6fd50bd 100644 --- a/src/components/MergeDialog/merge-actions.ts +++ b/src/components/MergeDialog/merge-actions.ts @@ -7,7 +7,7 @@ import { Branch } from '../../store/slices/branches'; import { Repository } from '../../store/slices/repos'; import { createCard } from '../../store/thunks/cards'; import { createMetafile, updateConflicted } from '../../store/thunks/metafiles'; -import { Status } from '../StatusIcon'; +import { Status } from '../Status'; type MissingGitConfigs = string[] | undefined; diff --git a/src/components/Modal/CloneDialog.tsx b/src/components/Modal/CloneDialog.tsx index e4660a107..a7a8aca19 100644 --- a/src/components/Modal/CloneDialog.tsx +++ b/src/components/Modal/CloneDialog.tsx @@ -6,7 +6,7 @@ import { Modal, modalRemoved } from '../../store/slices/modals'; import { extractRepoName, isValidRepositoryURL, resolveURL } from '../../containers/git-plumbing'; import { cloneDirectoryDialog } from '../../containers/dialogs'; import { cloneRepository } from '../../store/thunks/repos'; -import { LinearProgressWithLabel, Status } from '../StatusIcon'; +import { LinearProgressWithLabel, Status } from '../Status'; import { loadBranchVersions } from '../../containers/branch-tracker'; const useStyles = makeStyles((theme: Theme) => From ca03d450fff309bf51ec04b4df018ede2c9a8396 Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Wed, 22 Jun 2022 10:16:02 -0700 Subject: [PATCH 053/121] JSDoc for Repository.root field updated to reflect that it contains the main worktree root directory, not the git directory (.git/) --- src/store/slices/repos.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/store/slices/repos.ts b/src/store/slices/repos.ts index 2380f4791..ac6676225 100644 --- a/src/store/slices/repos.ts +++ b/src/store/slices/repos.ts @@ -12,7 +12,7 @@ export type Repository = { /** The name of repository. Either a qualified name for remote-tracking repositories (e.g. `EPICLab/synectic`), or the root * directory name for local-only repositories (e.g. `synectic`). */ readonly name: string; - /** The relative or absolute path to the git root directory (.git) in the main worktree. */ + /** The relative or absolute path to the main worktree root directory (e.g. *'/{project}'*). */ readonly root: PathLike; /** The URL for a CORS proxy service that enables User-Agent Header requests that meet same-origin policies on web services * (including GitHub). */ From fc7930d3816dee6353bb96f89d4c414597ea7b6c Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Wed, 22 Jun 2022 10:22:40 -0700 Subject: [PATCH 054/121] git-worktree/add parameters updated to use dir/url fields instead of accepting a Repository object --- src/containers/git-plumbing.ts | 4 ++- src/containers/git-porcelain.ts | 6 +++-- src/containers/git-worktree.spec.ts | 39 ++++++----------------------- src/containers/git-worktree.ts | 18 +++++++------ 4 files changed, 25 insertions(+), 42 deletions(-) diff --git a/src/containers/git-plumbing.ts b/src/containers/git-plumbing.ts index 1123a4465..7b9735059 100644 --- a/src/containers/git-plumbing.ts +++ b/src/containers/git-plumbing.ts @@ -18,6 +18,8 @@ import { getRoot, getWorktreePaths } from './git-path'; import { Repository } from '../store/slices/repos'; import { GitStatus } from '../store/types'; +// TODO: Remove all Repository type references + export type BranchDiffResult = { path: string, type: 'equal' | 'modified' | 'added' | 'removed' }; export type MatrixStatus = [0 | 1, 0 | 1 | 2, 0 | 1 | 2 | 3]; type Unpromisify = T extends Promise ? U : T; @@ -121,7 +123,7 @@ export const resolveRef = async ({ dir, gitdir = path.join(dir.toString(), '.git const re = /^HEAD~([0-9]+)$/; const match = ref.match(re); if (match) { - const count = +match[1]; + const count = +(match[1] as string); const root = worktree.worktreeDir ? worktree.worktreeDir.toString() : worktree.dir ? worktree.dir.toString() : dir; const commits = await log({ dir: root, depth: count + 1 }); const oid = commits.pop()?.oid; diff --git a/src/containers/git-porcelain.ts b/src/containers/git-porcelain.ts index 1beba7f2c..88a4309e4 100644 --- a/src/containers/git-porcelain.ts +++ b/src/containers/git-porcelain.ts @@ -14,6 +14,8 @@ import { Repository } from '../store/slices/repos'; import { GitStatus } from '../store/types'; import { add } from './git-worktree'; +// TODO: Remove all Repository type references + export type GitConfig = { scope: 'none' } | { scope: 'local' | 'global', value: string, origin?: string }; /** @@ -42,8 +44,8 @@ export const branch = async ({ dir, gitdir = path.join(dir.toString(), '.git'), } else { // create a linked worktree with the new branch const repoRef = io.extractFilename(repo.name); - const linkedRoot = path.normalize(`${repo.root.toString()}/../.syn/${repoRef}/${ref}`); - await add(repo, linkedRoot, ref); + const linkedRoot = path.normalize(`${dir.toString()}/../.syn/${repoRef}/${ref}`); + await add(repo.root, linkedRoot, repo.url, ref); return linkedRoot; } } diff --git a/src/containers/git-worktree.spec.ts b/src/containers/git-worktree.spec.ts index 092f7336c..8affcd00c 100644 --- a/src/containers/git-worktree.spec.ts +++ b/src/containers/git-worktree.spec.ts @@ -4,7 +4,6 @@ import * as path from 'path'; import * as git from './git-porcelain'; import * as worktree from './git-worktree'; import { extractStats, readFileAsync, writeFileAsync } from './io'; -import { Repository } from '../store/slices/repos'; import { file, mock, MockInstance } from '../test-utils/mock-fs'; describe('containers/git-worktree.list', () => { @@ -194,21 +193,10 @@ describe('containers/git-worktree.add', () => { await writeFileAsync(path.resolve('foo/.git/index'), '2349024234'); await writeFileAsync(path.resolve('foo/.git/HEAD'), 'ref: refs/heads/hotfix\n'); }); - const repo: Repository = { - id: '23', - name: 'sampleUser/baseRepo', - root: 'baseRepo/', - corsProxy: new URL('http://www.oregonstate.edu').toString(), - url: parseUrl('https://github.com/sampleUser/baseRepo').toString(), - default: 'master', - local: ['master'], - remote: [], - oauth: 'github', - username: 'sampleUser', - password: '12345', - token: '584n29dkj1683a67f302x009q164' - }; - await worktree.add(repo, 'foo/', 'hotfix'); + await worktree.add('baseRepo/', 'foo/', + parseUrl('https://github.com/sampleUser/baseRepo').toString(), + 'hotfix' + ); await expect(readFileAsync('foo/.git', { encoding: 'utf-8' })) .resolves.toBe(`gitdir: ${path.join('baseRepo', '.git', 'worktrees', 'hotfix')}\n`); await expect(readFileAsync('baseRepo/.git/worktrees/hotfix/HEAD', { encoding: 'utf-8' })).resolves.toBe('ref: refs/heads/hotfix\n'); @@ -221,21 +209,10 @@ describe('containers/git-worktree.add', () => { }) it('add resolves a linked worktree on SHA-1 commit hash', async () => { - const repo: Repository = { - id: '23', - name: 'sampleUser/baseRepo', - root: 'baseRepo/', - corsProxy: new URL('http://www.oregonstate.edu').toString(), - url: parseUrl('https://github.com/sampleUser/baseRepo').toString(), - default: 'master', - local: ['master', 'hotfix'], - remote: [], - oauth: 'github', - username: 'sampleUser', - password: '12345', - token: '584n29dkj1683a67f302x009q164' - }; - await worktree.add(repo, 'foo/', 'f204b02baf1322ee079fe9768e9593509d683412'); + await worktree.add('baseRepo/', 'foo/', + parseUrl('https://github.com/sampleUser/baseRepo').toString(), + 'f204b02baf1322ee079fe9768e9593509d683412' + ); await expect(readFileAsync('foo/.git', { encoding: 'utf-8' })) .resolves.toBe(`gitdir: ${path.join('baseRepo', '.git', 'worktrees', 'foo')}\n`); await expect(readFileAsync('baseRepo/.git/worktrees/foo/HEAD', { encoding: 'utf-8' })) diff --git a/src/containers/git-worktree.ts b/src/containers/git-worktree.ts index cc86fab4e..26fb546c7 100644 --- a/src/containers/git-worktree.ts +++ b/src/containers/git-worktree.ts @@ -238,7 +238,7 @@ export const resolveWorktree = async (repo: Repository, branchId: UUID, branchRe if (existing) return existing; const repoRef = io.extractFilename(repo.name); const linkedRoot = path.normalize(`${repo.root.toString()}/../.syn/${repoRef}/${branchRef}`); - await add(repo, linkedRoot, branchRef); + await add(repo.root, linkedRoot, repo.url, branchRef); const updatedWorktrees = await list(repo.root); return updatedWorktrees ? updatedWorktrees.find(w => w.ref === branchRef) : undefined; } @@ -249,31 +249,33 @@ export const resolveWorktree = async (repo: Repository, branchId: UUID, branchRe * specific files such as `HEAD`, `index`, etc. Adheres to the specifications of the `git worktree add` command, see: * https://git-scm.com/docs/git-worktree#Documentation/git-worktree.txt-addltpathgtltcommit-ishgt * @param repo A Repository object that points to the main worktree. + * @param dir The relative or absolute path to the main worktree root directory. * @param worktreeDir The relative or absolute path to create the new linked worktree; will create a new directory if none is found. + * @param url The URL associated with a remote-hosted instances of the repository; use empty string if local-only repository. * @param commitish A branch name or symbolic ref. * @return A Promise object for the add worktree operation. */ -export const add = async (repo: Repository, worktreeDir: fs.PathLike, commitish?: string): Promise => { +export const add = async (dir: fs.PathLike, worktreeDir: fs.PathLike, url: string, commitish?: string): Promise => { const branch = (commitish && !isHash(commitish, 'sha1')) ? commitish : io.extractDirname(worktreeDir); const worktreeGitdir = path.resolve(path.join(worktreeDir.toString(), '.git')); - const worktreeLink = path.join(repo.root.toString(), '.git', 'worktrees', branch); - const commondir = path.relative(worktreeLink, path.join(repo.root.toString(), '.git')); + const worktreeLink = path.join(dir.toString(), '.git', 'worktrees', branch); + const commondir = path.relative(worktreeLink, path.join(dir.toString(), '.git')); const detached = (commitish && isHash(commitish, 'sha1')) ? commitish : undefined; // initialize the linked worktree - await clone({ dir: worktreeDir, repo: { root: repo.root, url: repo.url }, ref: branch, noCheckout: true }); - const remoteBranches = await isogit.listBranches({ fs: fs, dir: repo.root.toString(), remote: 'origin' }); + await clone({ dir: worktreeDir, repo: { root: dir, url: url }, ref: branch, noCheckout: true }); + const remoteBranches = await isogit.listBranches({ fs: fs, dir: dir.toString(), remote: 'origin' }); if (remoteBranches.includes(branch)) { await checkout({ dir: worktreeDir, ref: branch }); } else { // if no remote branch exists, then create a new local-only branch and switches branches in the linked worktree - await isogit.branch({ fs: fs, dir: repo.root.toString(), ref: branch, checkout: false }); + await isogit.branch({ fs: fs, dir: dir.toString(), ref: branch, checkout: false }); checkout({ dir: worktreeDir, ref: branch, noCheckout: true }) } // branch must already exist in order to resolve worktreeLink path (`GIT_DIR/worktrees/{branch}`) const commit = commitish ? (isHash(commitish, 'sha1') ? commitish : await resolveRef({ dir: worktreeDir, ref: commitish })) - : await resolveRef({ dir: repo.root, ref: 'HEAD' }); + : await resolveRef({ dir: dir, ref: 'HEAD' }); // populate internal git files in main worktree to recognize the new linked worktree await fs.ensureDir(worktreeLink); From a6604b035605e4abfb1a0c7dcb048535ab0a21cf Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Wed, 22 Jun 2022 10:33:08 -0700 Subject: [PATCH 055/121] Increase open-pull-requests-limit for Dependabot dependency updates --- .github/dependabot.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index ba90feee5..3f24bc969 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -2,13 +2,13 @@ version: 2 updates: - # Maintain dependencies for npm - package-ecosystem: "npm" directory: "/" schedule: interval: "weekly" target-branch: "development" - milestone: 6 - open-pull-requests-limit: 7 + labels: + - "dependencies" + open-pull-requests-limit: 10 rebase-strategy: "disabled" From 49b358a6ae6a4f82b3e28f49553d51c8fb13e67f Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Wed, 22 Jun 2022 10:48:48 -0700 Subject: [PATCH 056/121] git-porcelain/branch parameters updated to use dir/url fields instead of accepting a Repository object --- src/components/Modal/NewBranchDialog.tsx | 2 +- src/containers/git-plumbing.ts | 2 -- src/containers/git-porcelain.ts | 15 ++++++--------- src/containers/git-worktree.ts | 1 - 4 files changed, 7 insertions(+), 13 deletions(-) diff --git a/src/components/Modal/NewBranchDialog.tsx b/src/components/Modal/NewBranchDialog.tsx index 1989e9817..c32feefdf 100644 --- a/src/components/Modal/NewBranchDialog.tsx +++ b/src/components/Modal/NewBranchDialog.tsx @@ -70,7 +70,7 @@ const NewBranchDialog = (props: Modal) => { const handleClose = () => dispatch(modalRemoved(props.id)); const handleClick = async () => { if (repo) { - const root = await branch({ dir: repo.root, repo: repo, ref: branchName }); + const root = await branch({ dir: repo.root, url: repo.url, ref: branchName }); const newBranch = await dispatch(createBranch({ root, branch: branchName, scope: 'local' })).unwrap(); dispatch(repoUpdated({ ...repo, local: [...repo.local, newBranch.id] })); } diff --git a/src/containers/git-plumbing.ts b/src/containers/git-plumbing.ts index 7b9735059..e9ae36e52 100644 --- a/src/containers/git-plumbing.ts +++ b/src/containers/git-plumbing.ts @@ -18,8 +18,6 @@ import { getRoot, getWorktreePaths } from './git-path'; import { Repository } from '../store/slices/repos'; import { GitStatus } from '../store/types'; -// TODO: Remove all Repository type references - export type BranchDiffResult = { path: string, type: 'equal' | 'modified' | 'added' | 'removed' }; export type MatrixStatus = [0 | 1, 0 | 1 | 2, 0 | 1 | 2 | 3]; type Unpromisify = T extends Promise ? U : T; diff --git a/src/containers/git-porcelain.ts b/src/containers/git-porcelain.ts index 88a4309e4..eb651f621 100644 --- a/src/containers/git-porcelain.ts +++ b/src/containers/git-porcelain.ts @@ -10,12 +10,9 @@ import * as io from './io'; import { matrixEntry, matrixToStatus, statusMatrix } from './git-plumbing'; import { isDefined, removeUndefinedProperties } from './utils'; import { getWorktreePaths } from './git-path'; -import { Repository } from '../store/slices/repos'; import { GitStatus } from '../store/types'; import { add } from './git-worktree'; -// TODO: Remove all Repository type references - export type GitConfig = { scope: 'none' } | { scope: 'local' | 'global', value: string, origin?: string }; /** @@ -25,16 +22,16 @@ export type GitConfig = { scope: 'none' } | { scope: 'local' | 'global', value: * this path must be used for branch checks. * @param dir The worktree root directory. * @param gitdir The wortkree git directory. - * @param repo A Repository object that points to the main worktree. + * @param url The URL associated with a remote-hosted instances of the repository; use empty string if local-only repository. * @param ref The branch name for labeling the new branch. * @param checkout Optional flag to update the working directory along with updating HEAD; defaults to `false`. * @returns A Promise object containing the worktree root directory (which can vary from the `dir` parameter depending on whether a linked * worktree was created). */ -export const branch = async ({ dir, gitdir = path.join(dir.toString(), '.git'), repo, ref, checkout = false }: { +export const branch = async ({ dir, gitdir = path.join(dir.toString(), '.git'), url, ref, checkout = false }: { dir: fs.PathLike; gitdir?: fs.PathLike; - repo: Repository; + url: string; ref: string; checkout?: boolean; }): Promise => { @@ -43,9 +40,9 @@ export const branch = async ({ dir, gitdir = path.join(dir.toString(), '.git'), return dir; } else { // create a linked worktree with the new branch - const repoRef = io.extractFilename(repo.name); - const linkedRoot = path.normalize(`${dir.toString()}/../.syn/${repoRef}/${ref}`); - await add(repo.root, linkedRoot, repo.url, ref); + const repo = io.extractFilename(dir); + const linkedRoot = path.normalize(`${dir.toString()}/../.syn/${repo}/${ref}`); + await add(dir, linkedRoot, url, ref); return linkedRoot; } } diff --git a/src/containers/git-worktree.ts b/src/containers/git-worktree.ts index 26fb546c7..ab2ce114a 100644 --- a/src/containers/git-worktree.ts +++ b/src/containers/git-worktree.ts @@ -248,7 +248,6 @@ export const resolveWorktree = async (repo: Repository, branchId: UUID, branchRe * new directory. The new working directory is linked to the current repository, sharing everything except working directory * specific files such as `HEAD`, `index`, etc. Adheres to the specifications of the `git worktree add` command, see: * https://git-scm.com/docs/git-worktree#Documentation/git-worktree.txt-addltpathgtltcommit-ishgt - * @param repo A Repository object that points to the main worktree. * @param dir The relative or absolute path to the main worktree root directory. * @param worktreeDir The relative or absolute path to create the new linked worktree; will create a new directory if none is found. * @param url The URL associated with a remote-hosted instances of the repository; use empty string if local-only repository. From 572f479e29cf8ce07139902c36e746ebec37b17e Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Wed, 22 Jun 2022 16:09:21 -0700 Subject: [PATCH 057/121] git-worktree/add updated to use isomorphic-git/checkout instead of git-porcelain/checkout to prevent circular dependency --- src/containers/git-worktree.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/containers/git-worktree.ts b/src/containers/git-worktree.ts index ab2ce114a..f92f77c57 100644 --- a/src/containers/git-worktree.ts +++ b/src/containers/git-worktree.ts @@ -3,10 +3,10 @@ import * as path from 'path'; import * as isogit from 'isomorphic-git'; import { DateTime } from 'luxon'; import { v4 } from 'uuid'; +import * as io from './io'; import isHash from 'validator/lib/isHash'; import { isDefined, removeUndefinedProperties } from './utils'; -import * as io from './io'; -import { checkout, clone, currentBranch, deleteBranch, getStatus } from './git-porcelain'; +import { clone, currentBranch, deleteBranch, getStatus } from './git-porcelain'; import { getIgnore, resolveEntry, resolveRef } from './git-plumbing'; import { parse } from './git-index'; import { compareStats } from './io-stats'; @@ -265,11 +265,11 @@ export const add = async (dir: fs.PathLike, worktreeDir: fs.PathLike, url: strin await clone({ dir: worktreeDir, repo: { root: dir, url: url }, ref: branch, noCheckout: true }); const remoteBranches = await isogit.listBranches({ fs: fs, dir: dir.toString(), remote: 'origin' }); if (remoteBranches.includes(branch)) { - await checkout({ dir: worktreeDir, ref: branch }); + await isogit.checkout({ fs: fs, dir: worktreeDir.toString(), ref: branch }); } else { // if no remote branch exists, then create a new local-only branch and switches branches in the linked worktree await isogit.branch({ fs: fs, dir: dir.toString(), ref: branch, checkout: false }); - checkout({ dir: worktreeDir, ref: branch, noCheckout: true }) + await isogit.checkout({ fs: fs, dir: worktreeDir.toString(), ref: branch, noCheckout: true }); } // branch must already exist in order to resolve worktreeLink path (`GIT_DIR/worktrees/{branch}`) From ac0cd3fddfb14936feaceadab4f86698ea0f5e68 Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Wed, 22 Jun 2022 16:10:24 -0700 Subject: [PATCH 058/121] Inject mock implementation of isomorphic-git/checkout instead of git-porcelain/checkout during testing of git-worktree/add function --- src/containers/git-worktree.spec.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/containers/git-worktree.spec.ts b/src/containers/git-worktree.spec.ts index 8affcd00c..a1694542a 100644 --- a/src/containers/git-worktree.spec.ts +++ b/src/containers/git-worktree.spec.ts @@ -1,6 +1,7 @@ // import mock from 'mock-fs'; import parseUrl from 'parse-url'; import * as path from 'path'; +import * as isogit from 'isomorphic-git'; import * as git from './git-porcelain'; import * as worktree from './git-worktree'; import { extractStats, readFileAsync, writeFileAsync } from './io'; @@ -189,7 +190,7 @@ describe('containers/git-worktree.add', () => { }); it('add resolves a linked worktree on new branch', async () => { - jest.spyOn(git, 'checkout').mockImplementation(async () => { + jest.spyOn(isogit, 'checkout').mockImplementation(async () => { await writeFileAsync(path.resolve('foo/.git/index'), '2349024234'); await writeFileAsync(path.resolve('foo/.git/HEAD'), 'ref: refs/heads/hotfix\n'); }); From 540ad19903d3661cf7b743e481b6ad12c4bed668 Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Thu, 23 Jun 2022 12:07:49 -0700 Subject: [PATCH 059/121] listServerRefs added to git-porcelain for fetching remote refs (branches, tags, etc.) --- src/containers/git-porcelain.ts | 39 +++++++++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 2 deletions(-) diff --git a/src/containers/git-porcelain.ts b/src/containers/git-porcelain.ts index eb651f621..b52616d7d 100644 --- a/src/containers/git-porcelain.ts +++ b/src/containers/git-porcelain.ts @@ -352,7 +352,7 @@ export const hasStatus = async (filepath: fs.PathLike, statusFilters: GitStatus[ * @param forPush Optional flag to enable queries for `push` capabilities, otherwise queries are for `fetch` capabilities * only; defaults to `false`. * @param headers Additional headers to include in the HTTP requests, similar to the `extraHeader` config in canonical git. - * @returns + * @returns A Promise object containing an object that lists the branches, tags, and capabilities of the remote. */ export const getRemoteInfo = ({ onAuth, onAuthFailure, onAuthSuccess, url = '', corsProxy, forPush = false, headers = {} }: { onAuth?: isogit.AuthCallback; @@ -367,7 +367,42 @@ export const getRemoteInfo = ({ onAuth, onAuthFailure, onAuthSuccess, url = '', return isogit.getRemoteInfo({ http: http, url: url, forPush: forPush, headers: headers, ...optionals }) -} +}; + +/** + * Fetch a list of refs (branches, tags, etc.) from a server; this function is a wrapper to inject the `http` parameter in to the + * *isomorphic-git/listServerRefs* function. + * @param onAuth Optional auth fill callback. + * @param onAuthFailure Optional auth rejection callback. + * @param onAuthSuccess Optional auth approved callback. + * @param url The URL of the remote repository. Will be retrieved from local `gitconfig` if absent. + * @param corsProxy Optional CORS proxy. Overrides value in repo config. + * @param forPush Optional flag to enable queries for `push` capabilities, otherwise queries are for `fetch` capabilities + * only; defaults to `false`. + * @param headers Additional headers to include in the HTTP requests, similar to the `extraHeader` config in canonical git. + * @param protocolVersion Which version of the Git Protocol to use. + * @param prefix Only list refs that start with this prefix. + * @param symrefs Optional flag for including symbolic ref targets; defaults to `false`. + * @param peelTags Optional flag for including annotated tag peeled targets; defaults to `false`. + * @returns A Promise object containing an array of `ServerRef` objects. + */ +export const listServerRefs = ({ onAuth, onAuthFailure, onAuthSuccess, url = '', corsProxy, forPush = false, headers = {}, protocolVersion = 2, + prefix, symrefs = false, peelTags = false }: { + onAuth?: isogit.AuthCallback; + onAuthFailure?: isogit.AuthFailureCallback; + onAuthSuccess?: isogit.AuthSuccessCallback; + url?: string; + corsProxy?: string; + forPush?: boolean; + headers?: Record; + protocolVersion?: 1 | 2; + prefix?: string; + symrefs?: boolean; + peelTags?: boolean; + }): Promise> => { + const optionals = removeUndefinedProperties({ onAuth: onAuth, onAuthFailure: onAuthFailure, onAuthSuccess: onAuthSuccess, corsProxy: corsProxy, prefix: prefix }); + return isogit.listServerRefs({ http: http, url: url, forPush: forPush, headers: headers, protocolVersion: protocolVersion, symrefs: symrefs, peelTags: peelTags, ...optionals }); +}; /** * Read an entry from git-config files; modeled after the *isomorphic-git/getConfig* function, but includes additional functionality to resolve global From 8cd80991c99f7a6089014dc928dcd7822b5079d3 Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Thu, 23 Jun 2022 12:08:42 -0700 Subject: [PATCH 060/121] resolveWorktree removed from git-worktree to prevent accidentally worktree add requests --- src/containers/git-worktree.ts | 26 -------------------------- 1 file changed, 26 deletions(-) diff --git a/src/containers/git-worktree.ts b/src/containers/git-worktree.ts index f92f77c57..cc45b5865 100644 --- a/src/containers/git-worktree.ts +++ b/src/containers/git-worktree.ts @@ -12,7 +12,6 @@ import { parse } from './git-index'; import { compareStats } from './io-stats'; import { getWorktreePaths } from './git-path'; import { GitStatus, SHA1, UUID } from '../store/types'; -import { Repository } from '../store/slices/repos'; // API SOURCE: https://git-scm.com/docs/git-worktree @@ -218,31 +217,6 @@ export const status = async (filepath: fs.PathLike): Promise => { - if (![...repo.local, ...repo.remote].includes(branchId)) return undefined; // unknown target branch - const worktrees = await list(repo.root); - const existing = worktrees ? worktrees.find(w => w.ref === branchRef) : undefined; - if (existing) return existing; - const repoRef = io.extractFilename(repo.name); - const linkedRoot = path.normalize(`${repo.root.toString()}/../.syn/${repoRef}/${branchRef}`); - await add(repo.root, linkedRoot, repo.url, branchRef); - const updatedWorktrees = await list(repo.root); - return updatedWorktrees ? updatedWorktrees.find(w => w.ref === branchRef) : undefined; -} - /** * Create a new directory and checkout a branch (either creating a new branch or switching to an existing branch) into the * new directory. The new working directory is linked to the current repository, sharing everything except working directory From 3e0fc4cb4d1bae4adc23f86cd176d6c3de3f4275 Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Thu, 23 Jun 2022 12:09:34 -0700 Subject: [PATCH 061/121] git-porcelain/checkout expanded to be create linked worktrees when overwrite option is not enabled --- src/containers/git-porcelain.ts | 56 ++++++++++++++++++++++++++------- 1 file changed, 45 insertions(+), 11 deletions(-) diff --git a/src/containers/git-porcelain.ts b/src/containers/git-porcelain.ts index b52616d7d..e40fda2b0 100644 --- a/src/containers/git-porcelain.ts +++ b/src/containers/git-porcelain.ts @@ -7,11 +7,11 @@ import parse from 'parse-git-config'; import { get as getProperty, set as setProperty, has as hasProperty, delete as deleteProperty } from 'dot-prop'; import getGitConfigPath from 'git-config-path'; import * as io from './io'; -import { matrixEntry, matrixToStatus, statusMatrix } from './git-plumbing'; +import { matrixEntry, matrixToStatus, resolveRef, statusMatrix } from './git-plumbing'; import { isDefined, removeUndefinedProperties } from './utils'; import { getWorktreePaths } from './git-path'; import { GitStatus } from '../store/types'; -import { add } from './git-worktree'; +import { add, list } from './git-worktree'; export type GitConfig = { scope: 'none' } | { scope: 'local' | 'global', value: string, origin?: string }; @@ -115,10 +115,23 @@ export const clone = async ({ dir, url, repo, ref, singleBranch = false, noCheck }; /** - * Checkout a branch; this function is a wrapper to inject the `fs` parameter in to the *isomorphic-git/checkout* function. + * Switch branches or restore working tree files. If the `overwrite` option is enabled, this function becomes a wrapper to inject the + * `fs` parameter in to the *isomorphic-git/checkout* function. The `overwrite` option enables checking out the target branch into + * the main worktree root directory and is destructive to any uncommitted changes in the main worktree. If the branch is not found + * locally, then a new remote tracking branch will be created and set to track the remote branch of that name. This behavior is similar + * to canonical *git*, except that uncommitted changes are not brought forward into the newly checked out branch. + * + * When the `overwrite` option is disabled (which is the default behavior), this function utilizes linked worktrees to facilitate + * checking out the target branch into a separate linked worktree root directory. If the branch is not found locally, then a new linked + * worktree will be created to hold the new remote tracking branch which is set to track the remote branch of the same name. If the + * branch is found locally as a remote tracking branch, then it will be converted to a linked worktree branch and set to track the + * remote branch of the same name. If the target branch matches the current branch in the main worktree or a linked worktree, then + * this is a no-op operation. * @param dir The worktree root directory. * @param gitdir The worktree git directory. * @param ref The branch name or SHA-1 commit hash to checkout files from; defaults to `HEAD`. + * @param overwrite Optional flag to checkout into the main worktree root directory; defaults to `false`. + * @param url The URL associated with a remote-hosted instances of the repository; use empty string if local-only repository. * @param filepaths Limit the checkout to the given files and directories. * @param remote Which remote repository to use for the checkout process; defaults to `origin`. * @param noCheckout Optional flag to update HEAD but not update the working directory; defaults to `false`. @@ -130,12 +143,14 @@ export const clone = async ({ dir, url, repo, ref, singleBranch = false, noCheck * @returns A Promise object for the checkout operation. */ export const checkout = async ({ - dir, gitdir = path.join(dir.toString(), '.git'), ref = 'HEAD', filepaths, remote = 'origin', noCheckout = false, - noUpdateHead = ref === undefined, dryRun = false, force = false, track = true, onProgress + dir, gitdir = path.join(dir.toString(), '.git'), ref = 'HEAD', overwrite = false, url = '', filepaths, remote = 'origin', + noCheckout = false, noUpdateHead = ref === undefined, dryRun = false, force = false, track = true, onProgress }: { dir: fs.PathLike; gitdir?: fs.PathLike; ref?: string; + overwrite?: boolean; + url?: string; filepaths?: string[]; remote?: string; noCheckout?: boolean; @@ -146,10 +161,30 @@ export const checkout = async ({ onProgress?: isogit.ProgressCallback | undefined; }): Promise => { const optionals = removeUndefinedProperties({ filepaths, onProgress }); - return isogit.checkout({ - fs: fs, dir: dir.toString(), gitdir: gitdir.toString(), ref: ref, remote: remote, noCheckout: noCheckout, - noUpdateHead: noUpdateHead, dryRun: dryRun, force: force, track: track, ...optionals - }); + if (overwrite) { + // checkout the target branch into the main worktree; this is destructive to any uncommitted changes in the main worktree + return isogit.checkout({ + fs: fs, dir: dir.toString(), gitdir: gitdir.toString(), ref: ref, remote: remote, noCheckout: noCheckout, + noUpdateHead: noUpdateHead, dryRun: dryRun, force: force, track: track, ...optionals + }); + } else { + const localBranches = await isogit.listBranches({ fs: fs, dir: dir.toString() }); + if (localBranches.includes(ref)) { + const worktrees = await list(dir); // main working tree and any linked worktrees (non-worktree local branches are excluded) + const existing = worktrees ? worktrees.find(w => w.ref === ref) : undefined; + if (existing) return undefined; // target branch matches current branch in main worktree or a linked worktree; no-op operation + const currentCommit = await resolveRef({ dir: dir, ref: ref }); + const remoteCommit = await listServerRefs({ url: url, prefix: `refs/heads/${ref}`, symrefs: true }); + if (remoteCommit[0] && currentCommit !== remoteCommit[0].oid) return undefined; // local-only commits would be permanently destroyed + // removing non-worktree local branch reference before creating a new linked worktree version + isogit.deleteBranch({ fs: fs, dir: dir.toString(), ref: ref }); + } + // create a new linked worktree set to track a remote branch of the same name, or a local-only branch if there is no remote + // tracking branch; this is non-destructive to any uncommitted changes in the main worktree + const repo = io.extractFilename(dir); + const linkedRoot = path.normalize(`${dir.toString()}/../.syn/${repo}/${ref}`); + await add(dir, linkedRoot, url, ref); + } } /** @@ -341,9 +376,8 @@ export const hasStatus = async (filepath: fs.PathLike, statusFilters: GitStatus[ } /** - * List a remote servers branches, tags, and capabilities; this function is a wrapper to inject the `fs` parameter in to the + * List a remote servers branches, tags, and capabilities; this function is a wrapper to inject the `http` parameter in to the * *isomorphic-git/getRemoteInfo* function. - * @param http An HTTP client (i.e. *isomorphic-git* provides a client in `isomorphic-git/http/node`). * @param onAuth Optional auth fill callback. * @param onAuthFailure Optional auth rejection callback. * @param onAuthSuccess Optional auth approved callback. From fc01fe716be7438216defcf36087120820128b71 Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Thu, 23 Jun 2022 12:23:07 -0700 Subject: [PATCH 062/121] thunks/branches/checkoutBranch simplified to wrap metafile-updating functionality around the revised git-porcelain/checkout --- src/components/BranchList/BranchList.tsx | 2 +- src/components/BranchTracker/BranchStatus.tsx | 2 +- src/store/listenerMiddleware.ts | 2 +- src/store/thunks/branches.ts | 89 +++++++------------ 4 files changed, 33 insertions(+), 62 deletions(-) diff --git a/src/components/BranchList/BranchList.tsx b/src/components/BranchList/BranchList.tsx index a6c6d3990..bd2da9747 100644 --- a/src/components/BranchList/BranchList.tsx +++ b/src/components/BranchList/BranchList.tsx @@ -46,7 +46,7 @@ const BranchList = (props: { cardId: UUID; repoId: UUID; overwrite?: boolean; }) if (card && metafile) { const overwrite = removeUndefinedProperties({ overwrite: props.overwrite }); try { - const updated = await dispatch(checkoutBranch({ metafile: metafile.id, branchRef: newBranch, ...overwrite })).unwrap(); + const updated = await dispatch(checkoutBranch({ metafileId: metafile.id, branchRef: newBranch, ...overwrite })).unwrap(); if (updated) setSelected(newBranch); if (updated) dispatch(cardUpdated({ ...card, diff --git a/src/components/BranchTracker/BranchStatus.tsx b/src/components/BranchTracker/BranchStatus.tsx index a14a29660..55258f20e 100644 --- a/src/components/BranchTracker/BranchStatus.tsx +++ b/src/components/BranchTracker/BranchStatus.tsx @@ -76,7 +76,7 @@ const BranchStatus = (props: { repo: Repository; branch: Branch; }) => { let metafile = await dispatch(fetchMetafile(props.branch.root)).unwrap(); metafile = isFilebasedMetafile(metafile) ? await dispatch(updatedVersionedMetafile(metafile)).unwrap() : metafile; const updated = (empty || props.branch.ref !== current) - ? await dispatch(checkoutBranch({ metafile: metafile.id, branchRef: props.branch.ref })).unwrap() + ? await dispatch(checkoutBranch({ metafileId: metafile.id, branchRef: props.branch.ref })).unwrap() : metafile; if (updated) { dispatch(createCard({ metafile: updated })); diff --git a/src/store/listenerMiddleware.ts b/src/store/listenerMiddleware.ts index e8377a6d3..6fb9815bf 100644 --- a/src/store/listenerMiddleware.ts +++ b/src/store/listenerMiddleware.ts @@ -40,7 +40,7 @@ startAppListening({ startAppListening({ matcher: checkoutBranch.pending.match, effect: async (action, listenerApi) => { - const metafile = metafileSelectors.selectById(listenerApi.getState(), action.meta.arg.metafile); + const metafile = metafileSelectors.selectById(listenerApi.getState(), action.meta.arg.metafileId); if (metafile) listenerApi.dispatch(metafileUpdated({ ...metafile, loading: [...metafile.loading, 'checkout'] })); } }); diff --git a/src/store/thunks/branches.ts b/src/store/thunks/branches.ts index a2a897548..3e777f523 100644 --- a/src/store/thunks/branches.ts +++ b/src/store/thunks/branches.ts @@ -8,15 +8,14 @@ import { getBranchRoot, getRoot, getWorktreePaths } from '../../containers/git-p import { checkout, currentBranch, getConfig, log } from '../../containers/git-porcelain'; import { AppThunkAPI } from '../hooks'; import branchSelectors from '../selectors/branches'; -import { Branch, branchAdded, branchUpdated } from '../slices/branches'; +import { Branch, branchAdded } from '../slices/branches'; import { DirectoryMetafile, FilebasedMetafile, isFilebasedMetafile, isVersionedMetafile, Metafile, metafileUpdated } from '../slices/metafiles'; import { createMetafile, fetchParentMetafile } from './metafiles'; import metafileSelectors from '../selectors/metafiles'; import { UUID } from '../types'; -import { resolveWorktree } from '../../containers/git-worktree'; import { join, relative } from 'path'; -import { extractStats, isEqualPaths } from '../../containers/io'; import { Repository, repoUpdated } from '../slices/repos'; +import repoSelectors from '../selectors/repos'; type BranchIdentifiers = { root: PathLike, branch: string, scope: 'local' | 'remote' }; @@ -54,7 +53,7 @@ export const fetchBranch = createAsyncThunk( 'branches/createBranch', async (identifiers, thunkAPI) => { - const branchRoot: fs.PathLike | undefined = (identifiers.scope === 'local') ? await getBranchRoot(identifiers.root, identifiers.branch) : undefined; + const branchRoot = (identifiers.scope === 'local') ? await getBranchRoot(identifiers.root, identifiers.branch) : undefined; const root = branchRoot ? branchRoot : identifiers.root; const { dir, gitdir, worktreeGitdir } = await getWorktreePaths(root); @@ -105,63 +104,35 @@ export const updateRepository = createAsyncThunk>( +/** Switch branches or restore working tree files for a specific Metafile. If the overwrite option is enabled, the checkout will destructively + * overwrite the current branch in the main worktree root directory. Otherwise, the checkout will create a new linked worktree and clone the + * branch files into the linked worktree directory. A new Metafile is created and returned with the filepath into the new linked worktree directory + * unless there is an existing Metafile with that path, in which case the Metafile is updated with the new branch UUID (only occurs when the `overwrite` + * option is used). + */ +export const checkoutBranch = createAsyncThunk>( 'branches/checkoutBranch', - async (input, thunkAPI) => { + async ({ metafileId, branchRef, overwrite = false, progress = false }, thunkAPI) => { const state = thunkAPI.getState(); - const metafile = metafileSelectors.selectById(state, input.metafile); - const repo: Repository | undefined = (metafile && metafile.repo) ? thunkAPI.getState().repos.entities[metafile.repo] : undefined; - const oldBranch: Branch | undefined = (metafile && isVersionedMetafile(metafile)) ? branchSelectors.selectById(state, metafile.branch) : undefined; - const targetBranch = branchSelectors.selectByRef(state, input.branchRef)[0]; - - // Error handling for all currently parsed data - if (!metafile) return thunkAPI.rejectWithValue(`Cannot update non-existing metafile for id:'${input.metafile}'`); - if (!repo) return thunkAPI.rejectWithValue(`Repository missing for metafile id:'${input.metafile}'`); - if (!oldBranch) return thunkAPI.rejectWithValue(`Branch missing for metafile id:'${input.metafile}'`); - if (!targetBranch) return thunkAPI.rejectWithValue(`Branch missing for target ref:'${input.branchRef}'`); - if (!isFilebasedMetafile(metafile)) return thunkAPI.rejectWithValue(`Cannot checkout branches for virtual metafile:'${input.metafile}'`); - if (!metafile || !repo) return undefined; - - let updated: Metafile | undefined; - if (input.overwrite) { - // checkout the target branch into the main worktree; this is destructive to any uncommitted changes in the main worktree - if (input.progress) await checkout({ dir: repo.root.toString(), ref: targetBranch.ref, onProgress: (e) => console.log(e.phase) }); - else await checkout({ dir: repo.root.toString(), ref: targetBranch.ref }); - updated = metafileSelectors.selectById(state, metafile.id); - } else { - // create a new linked worktree and checkout the target branch into it; non-destructive to uncommitted changes in the main worktree - const oldWorktree = await resolveWorktree(repo, oldBranch.id, oldBranch.ref); // get an existing worktree - const newWorktree = await resolveWorktree(repo, targetBranch.id, targetBranch.ref); // get a new linked-worktree, including creating a directory (if needed) - if (!oldWorktree) - return thunkAPI.rejectWithValue(`No worktree could be resolved for current worktree =>\n\trepo: '${repo.name}'\n\told branch: '${oldBranch.ref}'\n\tnew branch: '${targetBranch.ref}'`); - if (!newWorktree) - return thunkAPI.rejectWithValue(`No worktree could be resolved for new worktree =>\n\trepo: '${repo.name}'\n\told branch: '${oldBranch.ref}'\n\tnew branch: '${targetBranch.ref}'`); - - // verify that a new local branch has been created for the linked worktree, regardless of whether there was a previous remote branch or possibly a local branch in the main worktree - let newBranch = targetBranch.scope === 'local' ? targetBranch : await thunkAPI.dispatch(fetchBranch({ branchIdentifiers: { root: newWorktree.path, branch: targetBranch.ref, scope: 'local' } })).unwrap(); - if (newBranch && isEqualPaths(targetBranch.root, repo.root)) { - newBranch = thunkAPI.dispatch(branchUpdated({ ...newBranch, root: newWorktree.path })).payload; - } - - // update branches in repo in case new local branches have been checked out - repo ? await thunkAPI.dispatch(updateRepository(repo)) : undefined; - - // either extract existing metafile or create a new metafile for the original metafile filepath - const relativePath = relative(oldWorktree.path.toString(), metafile.path.toString()); - const absolutePath = join(newWorktree.path.toString(), relativePath); - const fileExists = (await extractStats(absolutePath)) ? true : false; - const existingMetafile = fileExists ? metafileSelectors.selectByFilepath(state, join(newWorktree.path.toString(), relativePath)) : undefined; - updated = (existingMetafile && existingMetafile.length > 0) ? existingMetafile[0] - : await thunkAPI.dispatch(createMetafile({ path: join(newWorktree.path.toString(), relativePath) })).unwrap(); - } - // get an updated metafile based on the updated worktree path - if (!updated) return thunkAPI.rejectWithValue(`Cannot locate updated metafile with new branch for path: '${metafile.path}'`); - updated = thunkAPI.dispatch(metafileUpdated({ ...updated, loading: metafile.loading.filter(flag => flag !== 'checkout') })).payload; - - if (input.progress) console.log('checkout complete...'); - return updated; + const metafile = metafileSelectors.selectById(state, metafileId); + if (!metafile) return thunkAPI.rejectWithValue(`Cannot update non-existing metafile for id:'${metafileId}'`); + if (!isFilebasedMetafile(metafile)) return thunkAPI.rejectWithValue(`Cannot update non-filebased metafile for id:'${metafileId}'`); + if (!isVersionedMetafile(metafile)) return thunkAPI.rejectWithValue(`Cannot update non-versioned metafile for id:'${metafileId}'`); + const repo = repoSelectors.selectById(state, metafile.repo); + const currentBranch = branchSelectors.selectById(state, metafile.branch); + if (!repo || !currentBranch) return thunkAPI.rejectWithValue(`Repository and/or branch missing for metafile id:'${metafileId}'`); + + await checkout({ dir: repo.root.toString(), ref: branchRef, overwrite: overwrite, onProgress: progress ? (e) => console.log(e.phase) : undefined }); + await thunkAPI.dispatch(updateRepository(repo)); // update branches in repo in case new local branches were created during checkout + const updatedBranch = branchSelectors.selectByRef(state, branchRef, 'local')[0]; + if (!updatedBranch) return thunkAPI.rejectWithValue(`Unable to find branch after checkout:'local/${branchRef}'`); + + const relativePath = relative(currentBranch.root.toString(), metafile.path.toString()); // relative path from root to metafile file object + const absolutePath = join(updatedBranch.root.toString(), relativePath); + const existingMetafile = metafileSelectors.selectByFilepath(state, absolutePath)[0]; + return existingMetafile + ? thunkAPI.dispatch(metafileUpdated({ ...existingMetafile, branch: updatedBranch.id })).payload + : await thunkAPI.dispatch(createMetafile({ path: absolutePath })).unwrap(); } ) \ No newline at end of file From 047319db3529f2cb994f85d4f783416158605627 Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Thu, 23 Jun 2022 12:24:03 -0700 Subject: [PATCH 063/121] listenerMiddleware handles both adding and removing loading flags from Metafiles during relevant actions --- src/store/listenerMiddleware.ts | 15 +++++++++++++++ src/store/thunks/metafiles.ts | 1 - 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/store/listenerMiddleware.ts b/src/store/listenerMiddleware.ts index 6fb9815bf..f1df1db48 100644 --- a/src/store/listenerMiddleware.ts +++ b/src/store/listenerMiddleware.ts @@ -37,6 +37,13 @@ startAppListening({ } }); +startAppListening({ + matcher: updatedVersionedMetafile.fulfilled.match, + effect: async (action, listenerApi) => { + listenerApi.dispatch(metafileUpdated({ ...action.meta.arg, loading: action.meta.arg.loading.filter(flag => flag !== 'versioned') })); + } +}); + startAppListening({ matcher: checkoutBranch.pending.match, effect: async (action, listenerApi) => { @@ -45,6 +52,14 @@ startAppListening({ } }); +startAppListening({ + matcher: checkoutBranch.fulfilled.match, + effect: async (action, listenerApi) => { + const metafile = metafileSelectors.selectById(listenerApi.getState(), action.meta.arg.metafileId); + if (metafile) listenerApi.dispatch(metafileUpdated({ ...metafile, loading: metafile.loading.filter(flag => flag !== 'checkout') })); + } +}); + startAppListening({ predicate: (action, _, previousState) => { if (cardAdded.match(action)) return true; diff --git a/src/store/thunks/metafiles.ts b/src/store/thunks/metafiles.ts index a627d5694..a8d14461d 100644 --- a/src/store/thunks/metafiles.ts +++ b/src/store/thunks/metafiles.ts @@ -104,7 +104,6 @@ export const updatedVersionedMetafile = createAsyncThunk(metafile, { repo: repo.id, branch: branch.id, status, conflicts: conflicted ? conflicted.conflicts : [] })) ? thunkAPI.dispatch(metafileUpdated({ ...metafile, - loading: metafile.loading.filter(flag => flag !== 'versioned'), repo: repo.id, branch: branch.id, status: status, From 17082cc2d9295fec5902603f010ae17b0d140be0 Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Thu, 23 Jun 2022 12:28:56 -0700 Subject: [PATCH 064/121] Branches expanded to be in {scope}/{ref} format --- src/components/BranchTracker/BranchStatus.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/BranchTracker/BranchStatus.tsx b/src/components/BranchTracker/BranchStatus.tsx index 55258f20e..550bdd8af 100644 --- a/src/components/BranchTracker/BranchStatus.tsx +++ b/src/components/BranchTracker/BranchStatus.tsx @@ -90,7 +90,7 @@ const BranchStatus = (props: { repo: Repository; branch: Branch; }) => { style={{ opacity: isDragging ? 0 : 1 }} key={`${props.repo}-${props.branch.id}`} nodeId={`${props.repo}-${props.branch.id}`} - labelText={`${props.branch.ref} [${cards.length}]`} + labelText={`${props.branch.scope}/${props.branch.ref} [${cards.length}]`} labelIcon={GitBranchIcon} onClick={handleClick} /> From 6b45923787be5206bd42db4df34ab8ad4eaba097 Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Thu, 23 Jun 2022 15:21:21 -0700 Subject: [PATCH 065/121] Fix circular reference to identifiers.root (TS7022) --- src/store/thunks/branches.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/store/thunks/branches.ts b/src/store/thunks/branches.ts index 3e777f523..60ebc0007 100644 --- a/src/store/thunks/branches.ts +++ b/src/store/thunks/branches.ts @@ -53,8 +53,8 @@ export const fetchBranch = createAsyncThunk( 'branches/createBranch', async (identifiers, thunkAPI) => { - const branchRoot = (identifiers.scope === 'local') ? await getBranchRoot(identifiers.root, identifiers.branch) : undefined; - const root = branchRoot ? branchRoot : identifiers.root; + const branchRoot = await getBranchRoot(identifiers.root, identifiers.branch); + const root = (identifiers.scope === 'local' && branchRoot) ? branchRoot : identifiers.root; const { dir, gitdir, worktreeGitdir } = await getWorktreePaths(root); const rootGitdir = worktreeGitdir ? worktreeGitdir : (gitdir ? gitdir : ''); @@ -123,8 +123,10 @@ export const checkoutBranch = createAsyncThunk console.log(e.phase) : undefined }); + await checkout({ dir: repo.root.toString(), ref: branchRef, overwrite: overwrite, url: repo.url, onProgress: progress ? (e) => console.log(e.phase) : undefined }); await thunkAPI.dispatch(updateRepository(repo)); // update branches in repo in case new local branches were created during checkout + const updatedState = thunkAPI.getState(); + console.log({ updatedState }); const updatedBranch = branchSelectors.selectByRef(state, branchRef, 'local')[0]; if (!updatedBranch) return thunkAPI.rejectWithValue(`Unable to find branch after checkout:'local/${branchRef}'`); From 408ed50e30e623f305c206ac79d1a2de16d2c75f Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Thu, 23 Jun 2022 15:54:51 -0700 Subject: [PATCH 066/121] listenerMiddleware adds/removes loading flags in a single listener for each asyncThunk action --- src/store/listenerMiddleware.ts | 38 +++++++++++++++------------------ 1 file changed, 17 insertions(+), 21 deletions(-) diff --git a/src/store/listenerMiddleware.ts b/src/store/listenerMiddleware.ts index f1df1db48..5f097862a 100644 --- a/src/store/listenerMiddleware.ts +++ b/src/store/listenerMiddleware.ts @@ -1,4 +1,4 @@ -import { createListenerMiddleware, addListener, TypedStartListening, TypedAddListener, isRejected } from '@reduxjs/toolkit'; +import { createListenerMiddleware, addListener, TypedStartListening, TypedAddListener, isRejected, isAnyOf, isPending } from '@reduxjs/toolkit'; import { DateTime } from 'luxon'; import cacheSelectors from './selectors/cache'; import metafileSelectors from './selectors/metafiles'; @@ -31,32 +31,28 @@ startAppListening({ }); startAppListening({ - matcher: updatedVersionedMetafile.pending.match, + matcher: isAnyOf(updatedVersionedMetafile.pending, updatedVersionedMetafile.fulfilled, updatedVersionedMetafile.rejected), effect: async (action, listenerApi) => { - listenerApi.dispatch(metafileUpdated({ ...action.meta.arg, loading: [...action.meta.arg.loading, 'versioned'] })); - } -}); - -startAppListening({ - matcher: updatedVersionedMetafile.fulfilled.match, - effect: async (action, listenerApi) => { - listenerApi.dispatch(metafileUpdated({ ...action.meta.arg, loading: action.meta.arg.loading.filter(flag => flag !== 'versioned') })); - } -}); - -startAppListening({ - matcher: checkoutBranch.pending.match, - effect: async (action, listenerApi) => { - const metafile = metafileSelectors.selectById(listenerApi.getState(), action.meta.arg.metafileId); - if (metafile) listenerApi.dispatch(metafileUpdated({ ...metafile, loading: [...metafile.loading, 'checkout'] })); + if (isPending(updatedVersionedMetafile)(action)) { + listenerApi.dispatch(metafileUpdated({ ...action.meta.arg, loading: [...action.meta.arg.loading, 'versioned'] })); + } + if (isAnyOf(updatedVersionedMetafile.fulfilled, updatedVersionedMetafile.rejected)(action)) { + listenerApi.dispatch(metafileUpdated({ ...action.meta.arg, loading: action.meta.arg.loading.filter(flag => flag !== 'versioned') })); + } } }); startAppListening({ - matcher: checkoutBranch.fulfilled.match, + matcher: isAnyOf(checkoutBranch.pending, checkoutBranch.fulfilled, checkoutBranch.rejected), effect: async (action, listenerApi) => { - const metafile = metafileSelectors.selectById(listenerApi.getState(), action.meta.arg.metafileId); - if (metafile) listenerApi.dispatch(metafileUpdated({ ...metafile, loading: metafile.loading.filter(flag => flag !== 'checkout') })); + if (isPending(checkoutBranch)(action)) { + const metafile = metafileSelectors.selectById(listenerApi.getState(), action.meta.arg.metafileId); + if (metafile) listenerApi.dispatch(metafileUpdated({ ...metafile, loading: [...metafile.loading, 'checkout'] })); + } + if (isAnyOf(checkoutBranch.fulfilled, checkoutBranch.rejected)(action)) { + const metafile = metafileSelectors.selectById(listenerApi.getState(), action.meta.arg.metafileId); + if (metafile) listenerApi.dispatch(metafileUpdated({ ...metafile, loading: metafile.loading.filter(flag => flag !== 'checkout') })); + } } }); From 317f18ffecff33c529daeb015ed64234bb4a38f2 Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Thu, 23 Jun 2022 16:03:38 -0700 Subject: [PATCH 067/121] Fix for new branches not being found in cached Redux state during checkoutBranch --- src/store/thunks/branches.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/store/thunks/branches.ts b/src/store/thunks/branches.ts index 60ebc0007..db24daefc 100644 --- a/src/store/thunks/branches.ts +++ b/src/store/thunks/branches.ts @@ -114,7 +114,7 @@ export const updateRepository = createAsyncThunk>( 'branches/checkoutBranch', async ({ metafileId, branchRef, overwrite = false, progress = false }, thunkAPI) => { - const state = thunkAPI.getState(); + let state = thunkAPI.getState(); const metafile = metafileSelectors.selectById(state, metafileId); if (!metafile) return thunkAPI.rejectWithValue(`Cannot update non-existing metafile for id:'${metafileId}'`); if (!isFilebasedMetafile(metafile)) return thunkAPI.rejectWithValue(`Cannot update non-filebased metafile for id:'${metafileId}'`); @@ -125,8 +125,7 @@ export const checkoutBranch = createAsyncThunk console.log(e.phase) : undefined }); await thunkAPI.dispatch(updateRepository(repo)); // update branches in repo in case new local branches were created during checkout - const updatedState = thunkAPI.getState(); - console.log({ updatedState }); + state = thunkAPI.getState(); // updated branches wouldn't be available in the cached state created above const updatedBranch = branchSelectors.selectByRef(state, branchRef, 'local')[0]; if (!updatedBranch) return thunkAPI.rejectWithValue(`Unable to find branch after checkout:'local/${branchRef}'`); From 629376e61a996c603c044283a3e70801bc4a6699 Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Fri, 24 Jun 2022 09:01:27 -0700 Subject: [PATCH 068/121] Fix for missing --tree-view-bg-color CSS style in StyledTreeComponent --- src/components/StyledTreeComponent.tsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/components/StyledTreeComponent.tsx b/src/components/StyledTreeComponent.tsx index 0fb9dee33..b492d9981 100644 --- a/src/components/StyledTreeComponent.tsx +++ b/src/components/StyledTreeComponent.tsx @@ -96,8 +96,10 @@ export const StyledTreeItem = (props: StyledTreeItemProps) => { } style={{ - '--tree-view-color': color, - ...removeUndefinedProperties({ '--tree-view-bg-color': bgColor }), + ...removeUndefinedProperties({ + '--tree-view-color': color, + '--tree-view-bg-color': bgColor + }), }} onMouseOver={() => setHover(true)} onMouseLeave={() => setHover(false)} From 2a342b303dc11a234d3ee35e56fb1acc42e65c5f Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Fri, 24 Jun 2022 09:38:44 -0700 Subject: [PATCH 069/121] Reduce margin spacing around icons in StyledTreeComponents --- src/components/StyledTreeComponent.tsx | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/components/StyledTreeComponent.tsx b/src/components/StyledTreeComponent.tsx index b492d9981..2f9292140 100644 --- a/src/components/StyledTreeComponent.tsx +++ b/src/components/StyledTreeComponent.tsx @@ -60,9 +60,6 @@ export const useTreeItemStyles = makeStyles((theme: Theme) => alignItems: 'center', padding: theme.spacing(0.5, 0), }, - labelIcon: { - marginRight: theme.spacing(1), - }, labelText: { fontWeight: 'inherit', flexGrow: 1 @@ -85,7 +82,7 @@ export const StyledTreeItem = (props: StyledTreeItemProps) => { - + {labelText} From 9d21690adecf7f3e0f70fd7919e31a66da2fadcd Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Fri, 24 Jun 2022 12:45:28 -0700 Subject: [PATCH 070/121] Rely on URL (if available) for determining Repository name during checkout --- src/containers/git-porcelain.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/containers/git-porcelain.ts b/src/containers/git-porcelain.ts index e40fda2b0..74748548c 100644 --- a/src/containers/git-porcelain.ts +++ b/src/containers/git-porcelain.ts @@ -7,7 +7,7 @@ import parse from 'parse-git-config'; import { get as getProperty, set as setProperty, has as hasProperty, delete as deleteProperty } from 'dot-prop'; import getGitConfigPath from 'git-config-path'; import * as io from './io'; -import { matrixEntry, matrixToStatus, resolveRef, statusMatrix } from './git-plumbing'; +import { extractRepoName, matrixEntry, matrixToStatus, resolveRef, statusMatrix } from './git-plumbing'; import { isDefined, removeUndefinedProperties } from './utils'; import { getWorktreePaths } from './git-path'; import { GitStatus } from '../store/types'; @@ -181,7 +181,7 @@ export const checkout = async ({ } // create a new linked worktree set to track a remote branch of the same name, or a local-only branch if there is no remote // tracking branch; this is non-destructive to any uncommitted changes in the main worktree - const repo = io.extractFilename(dir); + const repo = url.length > 0 ? extractRepoName(url) : io.extractFilename(dir); const linkedRoot = path.normalize(`${dir.toString()}/../.syn/${repo}/${ref}`); await add(dir, linkedRoot, url, ref); } From b6b68c6e3073fbb4fb025696d93474e4932b4c03 Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Mon, 27 Jun 2022 09:22:27 -0700 Subject: [PATCH 071/121] Abort determines branch root before executing --- src/components/Button/Abort.tsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/components/Button/Abort.tsx b/src/components/Button/Abort.tsx index c792270a0..e9b5e231a 100644 --- a/src/components/Button/Abort.tsx +++ b/src/components/Button/Abort.tsx @@ -11,6 +11,7 @@ import { RootState } from '../../store/store'; import { useAppDispatch, useAppSelector } from '../../store/hooks'; import { cardRemoved } from '../../store/slices/cards'; import { UUID } from '../../store/types'; +import { getBranchRoot } from '../../containers/git-path'; const AbortButton = ({ cardId, mode = 'light' }: { cardId: UUID, mode?: Mode }) => { const card = useAppSelector((state: RootState) => cardSelectors.selectById(state, cardId)); @@ -22,7 +23,10 @@ const AbortButton = ({ cardId, mode = 'light' }: { cardId: UUID, mode?: Mode }) const isAbortable = metafile && isConflictManagerMetafile(metafile) && repo; const abort = async () => { - if (repo) await abortMerge(repo.root); + if (repo && metafile?.branch) { + const branchRoot = await getBranchRoot(repo?.root, metafile.branch); + if (branchRoot) await abortMerge(branchRoot); + } dispatch(cardRemoved(cardId)); } From 1406e1d4f3576ab8a8ef6b044cf6f8aea7045e2e Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Tue, 28 Jun 2022 16:35:52 -0700 Subject: [PATCH 072/121] Check if worktreeGitdir exists before attempting to read file content in case the worktree root directory is missing (prunable worktree) --- src/containers/git-path.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/containers/git-path.ts b/src/containers/git-path.ts index 3296546d5..722c921a3 100644 --- a/src/containers/git-path.ts +++ b/src/containers/git-path.ts @@ -91,7 +91,8 @@ export const getWorktreePaths = async (target: fs.PathLike): Promise Date: Tue, 28 Jun 2022 21:25:20 -0700 Subject: [PATCH 073/121] Worktree type definition expanded to include prunable boolean field for designating linked-worktrees that can be pruned --- src/containers/git-worktree.spec.ts | 5 +++++ src/containers/git-worktree.ts | 8 ++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/containers/git-worktree.spec.ts b/src/containers/git-worktree.spec.ts index a1694542a..5bc591137 100644 --- a/src/containers/git-worktree.spec.ts +++ b/src/containers/git-worktree.spec.ts @@ -299,6 +299,7 @@ describe('containers/git-worktree.remove', () => { bare: false, detached: false, main: false, + prunable: false, ref: 'foo', rev: 'f204b02baf1322ee079fe9768e9593509d683412' } @@ -316,6 +317,7 @@ describe('containers/git-worktree.remove', () => { bare: false, detached: false, main: false, + prunable: false, ref: 'foo', rev: 'f204b02baf1322ee079fe9768e9593509d683412' } @@ -333,6 +335,7 @@ describe('containers/git-worktree.remove', () => { bare: false, detached: false, main: false, + prunable: false, ref: 'foo', rev: 'f204b02baf1322ee079fe9768e9593509d683412' } @@ -350,6 +353,7 @@ describe('containers/git-worktree.remove', () => { bare: false, detached: false, main: false, + prunable: false, ref: 'foo', rev: 'f204b02baf1322ee079fe9768e9593509d683412' } @@ -367,6 +371,7 @@ describe('containers/git-worktree.remove', () => { bare: false, detached: false, main: false, + prunable: false, ref: 'foo', rev: 'f204b02baf1322ee079fe9768e9593509d683412' } diff --git a/src/containers/git-worktree.ts b/src/containers/git-worktree.ts index cc45b5865..ea45d10ec 100644 --- a/src/containers/git-worktree.ts +++ b/src/containers/git-worktree.ts @@ -27,6 +27,8 @@ export type Worktree = { /** A flag for indicating a main worktree, as opposed to a linked worktree. */ main: boolean; /** A branch name or symbolic ref (can be abbreviated). */ + prunable: boolean; + /** A flag for indicating a linked worktree can be pruned (using `prune` command). */ ref?: string; /** A revision (or commit) representing the current state of `index` for the worktree. */ rev?: SHA1 | string; @@ -40,7 +42,7 @@ export type Worktree = { * @return A Worktree object */ const createWorktree = async (root: fs.PathLike, bare = false): Promise => { - const { worktreeDir } = await getWorktreePaths(root); + const { worktreeDir, worktreeLink } = await getWorktreePaths(root); const branch = await currentBranch({ dir: root.toString() }); const commit = await resolveRef({ dir: root, ref: 'HEAD' }); const ref = removeUndefinedProperties({ ref: branch ? branch : undefined }); @@ -50,6 +52,7 @@ const createWorktree = async (root: fs.PathLike, bare = false): Promise Date: Tue, 28 Jun 2022 21:27:41 -0700 Subject: [PATCH 074/121] Updated standard output for `git worktree list` command JSDoc in git-worktree.list command --- src/containers/git-worktree.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/containers/git-worktree.ts b/src/containers/git-worktree.ts index ea45d10ec..772addf3d 100644 --- a/src/containers/git-worktree.ts +++ b/src/containers/git-worktree.ts @@ -299,6 +299,7 @@ export const list = async (target: fs.PathLike): Promise * /path/to/bare-source (bare) * /path/to/linked-worktree abcd1234 [master] * /path/to/other-linked-worktree 1234abc (detached HEAD) + * /path/to/nonexistent-worktree 4321cba [feature] prunable * * SOURCE: https://docs.oracle.com/cd/E88353_01/html/E37839/git-worktree-1.html */ From bcd4fd7d619686752d4579179aeb3e9afe846d7a Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Thu, 30 Jun 2022 10:59:41 -0700 Subject: [PATCH 075/121] git-worktree.createWorktree expanded to handle prunable worktrees that have had root directory removed --- src/containers/git-worktree.ts | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/src/containers/git-worktree.ts b/src/containers/git-worktree.ts index 772addf3d..9e8da33f9 100644 --- a/src/containers/git-worktree.ts +++ b/src/containers/git-worktree.ts @@ -36,25 +36,26 @@ export type Worktree = { /** * Utility function for compiling all necessary information for working with either linked or main working trees - * (see [git-worktree](https://git-scm.com/docs/git-worktree)). - * @param root The working tree directory path (i.e. `dir` or `worktreeDir` in `WorktreePaths` type). + * (see [git-worktree](https://git-scm.com/docs/git-worktree)). Capable of handling prunable worktrees (i.e. worktrees + * that have had their root directory removed without the use of `git-worktree.remove`). + * @param filepath The relative or absolute path within a worktree (linked or main). * @param bare A flag indicating a bare git worktree. - * @return A Worktree object + * @return A Worktree object. */ -const createWorktree = async (root: fs.PathLike, bare = false): Promise => { - const { worktreeDir, worktreeLink } = await getWorktreePaths(root); - const branch = await currentBranch({ dir: root.toString() }); - const commit = await resolveRef({ dir: root, ref: 'HEAD' }); - const ref = removeUndefinedProperties({ ref: branch ? branch : undefined }); +const createWorktree = async (filepath: fs.PathLike, bare = false): Promise => { + const { dir, worktreeDir, worktreeLink } = await getWorktreePaths(filepath); + const root = worktreeDir ? worktreeDir : dir ? dir : undefined; + const branch = root ? await currentBranch({ dir: root.toString() }) : undefined; + const commit = root ? await resolveRef({ dir: root, ref: 'HEAD' }) : undefined; + const optionals = removeUndefinedProperties({ ref: branch ? branch : undefined, rev: commit }); return { id: v4(), - path: path.resolve(root.toString()), + path: path.resolve(filepath.toString()), bare: bare, detached: branch ? false : true, - main: worktreeDir ? false : true, - prunable: worktreeDir && !worktreeLink ? true : false, - rev: commit, - ...ref, + main: (dir && !worktreeDir) ? true : false, + prunable: (worktreeDir && !worktreeLink) ? true : false, + ...optionals, }; } From 64c729f6e09b52127438818af0acbeea83266f3c Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Thu, 30 Jun 2022 11:05:16 -0700 Subject: [PATCH 076/121] Fix for prunable worktree field not detecting when both dir and worktreeDir are empty --- src/containers/git-worktree.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/containers/git-worktree.ts b/src/containers/git-worktree.ts index 9e8da33f9..4e96f1ca3 100644 --- a/src/containers/git-worktree.ts +++ b/src/containers/git-worktree.ts @@ -54,7 +54,7 @@ const createWorktree = async (filepath: fs.PathLike, bare = false): Promise Date: Thu, 30 Jun 2022 11:07:48 -0700 Subject: [PATCH 077/121] Improved JSDoc for prunable worktree scenario on git-worktree.createWorktree --- src/containers/git-worktree.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/containers/git-worktree.ts b/src/containers/git-worktree.ts index 4e96f1ca3..2b51437ee 100644 --- a/src/containers/git-worktree.ts +++ b/src/containers/git-worktree.ts @@ -37,7 +37,8 @@ export type Worktree = { /** * Utility function for compiling all necessary information for working with either linked or main working trees * (see [git-worktree](https://git-scm.com/docs/git-worktree)). Capable of handling prunable worktrees (i.e. worktrees - * that have had their root directory removed without the use of `git-worktree.remove`). + * that have had their root directory removed without the use of `git-worktree.remove`; which results in the worktreeLink + * path `GIT_DIR/worktrees/{branch}` remaining on the filesystem). * @param filepath The relative or absolute path within a worktree (linked or main). * @param bare A flag indicating a bare git worktree. * @return A Worktree object. From 392d0ca8dae0636cc1418dc434da8fd1d6da8d7a Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Thu, 30 Jun 2022 16:45:40 -0700 Subject: [PATCH 078/121] conflicts.checkFilepath uses worktree pathes instead of getRoot to handle prunable linked-worktree directories --- src/containers/conflicts.ts | 10 +++++----- src/store/thunks/branches.ts | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/containers/conflicts.ts b/src/containers/conflicts.ts index ccc5e8b70..bdcf2ab6e 100644 --- a/src/containers/conflicts.ts +++ b/src/containers/conflicts.ts @@ -4,18 +4,18 @@ import * as io from './io'; import { getIgnore } from './git-plumbing'; import { asyncFilter, isDefined, removeUndefined } from './utils'; import { Ignore } from 'ignore'; -import { getRoot, getWorktreePaths } from './git-path'; +import { getWorktreePaths } from './git-path'; import { VersionedMetafile } from '../store/slices/metafiles'; import { ProgressCallback } from 'isomorphic-git'; export type Conflict = Pick; export const checkFilepath = async (filepath: PathLike, ignoreManager?: Ignore): Promise => { - const root = await getRoot(filepath); - if (root && !(await io.isDirectory(filepath))) { + const { dir } = await getWorktreePaths(filepath); + if (dir && !(await io.isDirectory(filepath))) { const conflictPattern = /<<<<<<<[^]+?=======[^]+?>>>>>>>/gm; - const ignore = ignoreManager ? ignoreManager : (await getIgnore(root, true)); - if (ignore.ignores(path.relative(root.toString(), filepath.toString()))) return undefined; + const ignore = ignoreManager ? ignoreManager : (await getIgnore(dir, true)); + if (ignore.ignores(path.relative(dir.toString(), filepath.toString()))) return undefined; const content = await io.readFileAsync(filepath, { encoding: 'utf-8' }); const matches = Array.from(content.matchAll(conflictPattern)); const conflicts: [number, number][] = removeUndefined(matches.map(m => isDefined(m.index) ? [m.index, m.index + m.toString().length] : undefined)); diff --git a/src/store/thunks/branches.ts b/src/store/thunks/branches.ts index db24daefc..8731b0e2a 100644 --- a/src/store/thunks/branches.ts +++ b/src/store/thunks/branches.ts @@ -57,7 +57,7 @@ export const createBranch = createAsyncThunk Date: Thu, 30 Jun 2022 16:48:10 -0700 Subject: [PATCH 079/121] git-porcelain.log catches prunable linked-worktree directories that are missing both worktree.dir and worktree.worktreeDir --- src/containers/git-porcelain.ts | 1 + src/containers/git-worktree.ts | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/src/containers/git-porcelain.ts b/src/containers/git-porcelain.ts index 74748548c..3b6098324 100644 --- a/src/containers/git-porcelain.ts +++ b/src/containers/git-porcelain.ts @@ -297,6 +297,7 @@ export const log = async ({ dir, gitdir = path.join(dir.toString(), '.git'), ref }): Promise => { const optionals = removeUndefinedProperties({ since: since }); const worktree = await getWorktreePaths(gitdir); + if (!worktree.dir && !worktree.worktreeDir) return []; // linked worktree might have been removed (i.e. prunable) return (worktree.dir && worktree.gitdir) ? isogit.log({ fs: fs, dir: worktree.dir.toString(), gitdir: worktree.gitdir.toString(), ref: ref, depth: depth, ...optionals }) : isogit.log({ fs: fs, dir: dir.toString(), ref: ref, depth: depth, ...optionals }); diff --git a/src/containers/git-worktree.ts b/src/containers/git-worktree.ts index 2b51437ee..c23318251 100644 --- a/src/containers/git-worktree.ts +++ b/src/containers/git-worktree.ts @@ -181,7 +181,6 @@ export const status = async (filepath: fs.PathLike): Promise entry.filePath === relativePath); - const stats = await io.extractStats(filepath); const indexOid = indexEntry ? indexEntry.objectId.slice(2) : undefined; From aa4350ecdf09c872531ec36d5c81d42bd30f1f59 Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Thu, 30 Jun 2022 16:49:16 -0700 Subject: [PATCH 080/121] git-porcelain.checkout provides onProgress indicators --- src/containers/git-porcelain.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/containers/git-porcelain.ts b/src/containers/git-porcelain.ts index 3b6098324..ad8efd714 100644 --- a/src/containers/git-porcelain.ts +++ b/src/containers/git-porcelain.ts @@ -7,7 +7,7 @@ import parse from 'parse-git-config'; import { get as getProperty, set as setProperty, has as hasProperty, delete as deleteProperty } from 'dot-prop'; import getGitConfigPath from 'git-config-path'; import * as io from './io'; -import { extractRepoName, matrixEntry, matrixToStatus, resolveRef, statusMatrix } from './git-plumbing'; +import { matrixEntry, matrixToStatus, resolveRef, statusMatrix } from './git-plumbing'; import { isDefined, removeUndefinedProperties } from './utils'; import { getWorktreePaths } from './git-path'; import { GitStatus } from '../store/types'; @@ -163,6 +163,7 @@ export const checkout = async ({ const optionals = removeUndefinedProperties({ filepaths, onProgress }); if (overwrite) { // checkout the target branch into the main worktree; this is destructive to any uncommitted changes in the main worktree + if (onProgress) await onProgress({ phase: `Checkout target branch into main worktree: ${dir.toString()}`, loaded: 0, total: 1 }); return isogit.checkout({ fs: fs, dir: dir.toString(), gitdir: gitdir.toString(), ref: ref, remote: remote, noCheckout: noCheckout, noUpdateHead: noUpdateHead, dryRun: dryRun, force: force, track: track, ...optionals @@ -170,6 +171,7 @@ export const checkout = async ({ } else { const localBranches = await isogit.listBranches({ fs: fs, dir: dir.toString() }); if (localBranches.includes(ref)) { + if (onProgress) await onProgress({ phase: `Removing non-worktree '${ref}' branch reference: ${dir.toString()}`, loaded: 0, total: 2 }); const worktrees = await list(dir); // main working tree and any linked worktrees (non-worktree local branches are excluded) const existing = worktrees ? worktrees.find(w => w.ref === ref) : undefined; if (existing) return undefined; // target branch matches current branch in main worktree or a linked worktree; no-op operation @@ -178,12 +180,15 @@ export const checkout = async ({ if (remoteCommit[0] && currentCommit !== remoteCommit[0].oid) return undefined; // local-only commits would be permanently destroyed // removing non-worktree local branch reference before creating a new linked worktree version isogit.deleteBranch({ fs: fs, dir: dir.toString(), ref: ref }); + if (onProgress) await onProgress({ phase: `Removed non-worktree '${ref}' branch reference: ${dir.toString()}`, loaded: 1, total: 2 }); } // create a new linked worktree set to track a remote branch of the same name, or a local-only branch if there is no remote // tracking branch; this is non-destructive to any uncommitted changes in the main worktree - const repo = url.length > 0 ? extractRepoName(url) : io.extractFilename(dir); + const repo = io.extractFilename(dir); const linkedRoot = path.normalize(`${dir.toString()}/../.syn/${repo}/${ref}`); + if (onProgress) await onProgress({ phase: `Adding '${ref}' branch as linked-worktree: ${linkedRoot}`, loaded: 1, total: 2 }); await add(dir, linkedRoot, url, ref); + if (onProgress) await onProgress({ phase: `Added '${ref}' branch as linked-worktree: ${linkedRoot}`, loaded: 2, total: 2 }); } } From 33dced3626551a36f855b27813925538d066176a Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Thu, 30 Jun 2022 16:49:54 -0700 Subject: [PATCH 081/121] git-plumbing.branchLog includes onProgress indicators --- src/containers/git-plumbing.ts | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/containers/git-plumbing.ts b/src/containers/git-plumbing.ts index e9ae36e52..16e1ce0d7 100644 --- a/src/containers/git-plumbing.ts +++ b/src/containers/git-plumbing.ts @@ -186,18 +186,17 @@ export const branchLog = async ( ): Promise => { const basePath = path.join(dir.toString(), '.git', 'refs', 'heads'); - if (onProgress) await onProgress({ phase: `Checking: ${branchA}`, loaded: 0, total: 2 }); + if (onProgress) await onProgress({ phase: `Checking branch history: ${branchA}`, loaded: 0, total: 2 }); const logA = (await io.extractStats(path.join(basePath, branchA))) ? await isogit.log({ fs: fs, dir: dir.toString(), ref: `heads/${branchA}` }) : await isogit.log({ fs: fs, dir: dir.toString(), ref: `remotes/origin/${branchA}` }); - if (onProgress) await onProgress({ phase: `Checking: ${branchA}`, loaded: 1, total: 2 }); - if (onProgress) await onProgress({ phase: `Checking: ${branchB}`, loaded: 1, total: 2 }); + if (onProgress) await onProgress({ phase: `Checking branch history: ${branchB}`, loaded: 1, total: 2 }); const logB = (await io.extractStats(path.join(basePath, branchB))) ? await isogit.log({ fs: fs, dir: dir.toString(), ref: `heads/${branchB}` }) : await isogit.log({ fs: fs, dir: dir.toString(), ref: `remotes/origin/${branchB}` }); - if (onProgress) await onProgress({ phase: `Checking: ${branchB}`, loaded: 2, total: 2 }); + if (onProgress) await onProgress({ phase: `Both branch histories checked: ${branchA}, ${branchB}`, loaded: 2, total: 2 }); return logA .filter(commitA => !logB.some(commitB => commitA.oid === commitB.oid)) .concat(logB.filter(commitB => !logA.some(commitA => commitB.oid === commitA.oid))); @@ -338,6 +337,7 @@ export const matrixEntry = async (filepath: fs.PathLike): Promise !isHiddenFile(f) }); From 454486e73b1e54eb1f3495a9f5c17d4f8304407c Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Thu, 30 Jun 2022 16:52:04 -0700 Subject: [PATCH 082/121] git-index.parseEntry respects binarnia parameter order --- src/containers/git-index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/containers/git-index.ts b/src/containers/git-index.ts index 376b82666..b8fa4803c 100644 --- a/src/containers/git-index.ts +++ b/src/containers/git-index.ts @@ -139,9 +139,9 @@ const parseEntry = (buffer: Buffer, offset: number): IndexEntry => { const schema = entrySchema; return binarnia({ offset, - schema, - endian, buffer, + endian, + schema, }) } From dab363b1f4cbac35163f8f31b52aae523fbc8d3f Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Thu, 30 Jun 2022 16:59:22 -0700 Subject: [PATCH 083/121] Remove console.log statements that were accidentally committed --- src/containers/git-plumbing.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/containers/git-plumbing.ts b/src/containers/git-plumbing.ts index 16e1ce0d7..31a58f08f 100644 --- a/src/containers/git-plumbing.ts +++ b/src/containers/git-plumbing.ts @@ -336,8 +336,6 @@ export const remove = async (filepath: fs.PathLike): Promise => { export const matrixEntry = async (filepath: fs.PathLike): Promise => { const { dir, worktreeDir } = await getWorktreePaths(filepath); if (!dir) return undefined; // not under version control - - console.log(`matrixEntry: ${filepath.toString()}, ${worktreeDir ? '[using git-worktree.status]' : '[using isogit.status]'}`); return worktreeDir ? worktree.status(filepath) : isogit.status({ fs: fs, dir: dir.toString(), filepath: path.relative(dir.toString(), filepath.toString()) }); @@ -360,8 +358,6 @@ export const statusMatrix = async (dirpath: fs.PathLike): Promise<[string, 0 | 1 const root = await getRoot(dirpath); const { worktreeDir } = await getWorktreePaths(dirpath); if (!root) return undefined; // not under version control - - console.log(`statusMatrix: ${dirpath.toString()}, ${worktreeDir ? '[using git-worktree.statusMatrix]' : '[using isogit.statusMatrix]'}`); return worktreeDir ? worktree.statusMatrix(dirpath) : isogit.statusMatrix({ fs: fs, dir: dirpath.toString(), filter: f => !isHiddenFile(f) }); From a2a00e5a06454b033ae28c226bc90e83fe9c9e5a Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Tue, 5 Jul 2022 15:53:42 -0700 Subject: [PATCH 084/121] git-path.getBranchRoot handles any root directory (regardless of branch) --- src/containers/git-path.spec.ts | 18 ++++++++++++++++-- src/containers/git-path.ts | 25 +++++++++++-------------- 2 files changed, 27 insertions(+), 16 deletions(-) diff --git a/src/containers/git-path.spec.ts b/src/containers/git-path.spec.ts index 119ac89a4..bc91fd6c1 100644 --- a/src/containers/git-path.spec.ts +++ b/src/containers/git-path.spec.ts @@ -44,20 +44,34 @@ describe('containers/git-path', () => { await expect(getRoot('foo/haze/test.js')).resolves.toBe('foo'); }); - it('getBranchRoot resolves `dir` path for branch on main worktree', async () => { + it('getBranchRoot resolves root path for main worktree from `dir` path', async () => { expect.assertions(1); const mockedBranches = new Promise(resolve => resolve(['bad-branch', 'main'])); jest.spyOn(isogit, 'listBranches').mockReturnValue(mockedBranches); await expect(getBranchRoot('foo', 'main')).resolves.toEqual('foo'); }); - it('getBranchRoot resolves `worktreeDir` path for branch on linked worktree', async () => { + it('getBranchRoot resolves root path for main worktree from `worktreeDir` path', async () => { + expect.assertions(1); + const mockedBranches = new Promise(resolve => resolve(['bad-branch', 'main'])); + jest.spyOn(isogit, 'listBranches').mockReturnValue(mockedBranches); + await expect(getBranchRoot('.syn/bad-branch', 'main')).resolves.toEqual('foo'); + }); + + it('getBranchRoot resolves root path for linked worktree from `dir` path', async () => { expect.assertions(1); const mockedBranches = new Promise(resolve => resolve(['bad-branch', 'main'])); jest.spyOn(isogit, 'listBranches').mockReturnValue(mockedBranches); await expect(getBranchRoot('foo', 'bad-branch')).resolves.toEqual(path.normalize('.syn/bad-branch')); }); + it('getBranchRoot resolves root path for linked worktree from `worktreeDir` path', async () => { + expect.assertions(1); + const mockedBranches = new Promise(resolve => resolve(['bad-branch', 'main'])); + jest.spyOn(isogit, 'listBranches').mockReturnValue(mockedBranches); + await expect(getBranchRoot('.syn/bad-branch', 'bad-branch')).resolves.toEqual(path.normalize('.syn/bad-branch')); + }); + it('getWorktreePaths resolves path to main worktree file', async () => { expect.assertions(1); await expect(getWorktreePaths('foo/add.ts')).resolves.toEqual( diff --git a/src/containers/git-path.ts b/src/containers/git-path.ts index 722c921a3..8deb159ff 100644 --- a/src/containers/git-path.ts +++ b/src/containers/git-path.ts @@ -41,27 +41,24 @@ export const getRoot = async (filepath: fs.PathLike): Promise { - const existsLocal = (await listBranches({ fs: fs, dir: dir.toString() })).includes(branch); +export const getBranchRoot = async (root: fs.PathLike, branch: string): Promise => { + const { dir, worktrees } = await getWorktreePaths(root); + const existsLocal = dir ? (await listBranches({ fs: fs, dir: dir.toString() })).includes(branch) : false; if (!existsLocal) return undefined; // branch is either remote-only or non-existent // check to see if the branch matches one of the linked worktrees - const gitWorktrees = path.join(dir.toString(), '.git', 'worktrees'); - const worktreeRoot = await fs.stat(gitWorktrees) - .then(async () => { - const worktreeBranches = await io.readDirAsync(gitWorktrees); - const match = worktreeBranches.find(w => w === branch); - if (match) { - // reading the `{dir}/.git/worktrees/{branch}/gitdir` file - return path.dirname((await io.readFileAsync(path.join(gitWorktrees, match, 'gitdir'), { encoding: 'utf-8' })).trim()); - } - }) - .catch(() => { return undefined }); + const worktreeBranches = worktrees ? await io.readDirAsync(worktrees) : undefined; + const match = worktreeBranches ? worktreeBranches.find(w => w === branch) : undefined; + + // reading the `{dir}/.git/worktrees/{branch}/gitdir` file + const worktreeRoot = (match && worktrees) + ? path.dirname((await io.readFileAsync(path.join(worktrees.toString(), match, 'gitdir'), { encoding: 'utf-8' })).trim()) + : undefined; return worktreeRoot ? worktreeRoot : dir; } From 226eb61e7ccbb42feb61a6abe2a3d91dcd970c1b Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Tue, 5 Jul 2022 15:54:36 -0700 Subject: [PATCH 085/121] checkFilepath and checkProject using manual checking have been commented out --- src/containers/conflicts.spec.ts | 43 -------------------- src/containers/conflicts.ts | 70 -------------------------------- src/containers/git-conflict.ts | 63 ++++++++++++++++++++++++++++ 3 files changed, 63 insertions(+), 113 deletions(-) delete mode 100644 src/containers/conflicts.spec.ts delete mode 100644 src/containers/conflicts.ts create mode 100644 src/containers/git-conflict.ts diff --git a/src/containers/conflicts.spec.ts b/src/containers/conflicts.spec.ts deleted file mode 100644 index 9cafe1914..000000000 --- a/src/containers/conflicts.spec.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { mock, MockInstance } from '../test-utils/mock-fs'; -import { checkFilepath } from './conflicts'; - -describe('containers/conflicts', () => { - let mockedInstance: MockInstance; - - beforeAll(async () => { - const instance = await mock({ - foo: { - 'example.ts': 'import async from "typescript";\n\n<<<<<<< HEAD\nconst rand = Math.floor(Math.random() * 6) + 1;\n=======\nconst rand = Math.floor(Math.random() * 6) + 1;\n>>>>>>>\nconst double = rand * 2;\n<<<<<<< HEAD\nconst triple = rand * 3;\n=======\nconst triple = double + rand;\n>>>>>>>', - 'bar.js': 'file contents', - '.git': { - config: '', - HEAD: 'refs/heads/main', - refs: { - remotes: { - origin: { - 'HEAD': 'ref: refs/remotes/origin/main', - 'develop': 'ref: refs/remotes/origin/develop' - } - } - } - } - } - }); - return mockedInstance = instance; - }); - - afterAll(() => mockedInstance.reset()); - - it('checkFilepath resolves to undefined on non-conflicting file', async () => { - await expect(checkFilepath('foo/bar.js')).resolves.toBeUndefined(); - }); - - it('checkFilepath resolves to a conflict array on conflicting file', async () => { - await expect(checkFilepath('foo/example.ts')).resolves.toStrictEqual( - expect.objectContaining({ - path: 'foo/example.ts', - conflicts: [[33, 157], [183, 266]] - }) - ); - }); -}); \ No newline at end of file diff --git a/src/containers/conflicts.ts b/src/containers/conflicts.ts deleted file mode 100644 index bdcf2ab6e..000000000 --- a/src/containers/conflicts.ts +++ /dev/null @@ -1,70 +0,0 @@ -import * as path from 'path'; -import { PathLike } from 'fs-extra'; -import * as io from './io'; -import { getIgnore } from './git-plumbing'; -import { asyncFilter, isDefined, removeUndefined } from './utils'; -import { Ignore } from 'ignore'; -import { getWorktreePaths } from './git-path'; -import { VersionedMetafile } from '../store/slices/metafiles'; -import { ProgressCallback } from 'isomorphic-git'; - -export type Conflict = Pick; - -export const checkFilepath = async (filepath: PathLike, ignoreManager?: Ignore): Promise => { - const { dir } = await getWorktreePaths(filepath); - if (dir && !(await io.isDirectory(filepath))) { - const conflictPattern = /<<<<<<<[^]+?=======[^]+?>>>>>>>/gm; - const ignore = ignoreManager ? ignoreManager : (await getIgnore(dir, true)); - if (ignore.ignores(path.relative(dir.toString(), filepath.toString()))) return undefined; - const content = await io.readFileAsync(filepath, { encoding: 'utf-8' }); - const matches = Array.from(content.matchAll(conflictPattern)); - const conflicts: [number, number][] = removeUndefined(matches.map(m => isDefined(m.index) ? [m.index, m.index + m.toString().length] : undefined)); - if (conflicts.length > 0) return { path: filepath, conflicts: conflicts }; - } - return undefined; -}; - -export const checkProject = async (root: PathLike | undefined, onProgress?: ProgressCallback): Promise => { - if (root) { - const conflictPattern = /<<<<<<<[^]+?=======[^]+?>>>>>>>/gm; - const ignore = (await getIgnore(root, true)); - - const paths = (await io.readDirAsyncDepth(root)) - .filter(p => p !== root) // filter root filepath from results - .filter(p => !ignore.ignores(path.relative(root.toString(), p))); // filter based on git-ignore rules - const dirpaths = await asyncFilter(paths, async p => io.isDirectory(p)); - const filepaths = paths.filter(p => !dirpaths.includes(p)); - - let count = 0; - const matching = await Promise.all(filepaths.map(async f => { - const content = await io.readFileAsync(f, { encoding: 'utf-8' }); - const matches = Array.from(content.matchAll(conflictPattern)); - const conflicts: [number, number][] = removeUndefined(matches.map(m => isDefined(m.index) ? [m.index, m.index + m.length] : undefined)); - // Emit progress event - if (onProgress) { - await onProgress({ - phase: `Checking for conflicts: ${f}`, - loaded: ++count, - total: filepaths.length - }); - } - return { path: f, conflicts: conflicts }; - })); - - return matching.filter(match => match.conflicts.length > 0); - } else { - return []; - } -}; - -export const resolveConflictBranches = async (root: PathLike): Promise<{ base: string | undefined, compare: string }> => { - const branchPattern = /(?<=^Merge branch(es)? .*)('.+?')+/gm; - const worktree = await getWorktreePaths(root); - const mergeMsg = worktree.gitdir ? await io.readFileAsync(path.join(worktree.gitdir.toString(), 'MERGE_MSG'), { encoding: 'utf-8' }) : ''; - const match = mergeMsg.match(branchPattern); - return match - ? match.length === 2 - ? { base: (match[0] as string).replace(/['"]+/g, ''), compare: (match[1] as string).replace(/['"]+/g, '') } - : { base: undefined, compare: (match[0] as string).replace(/['"]+/g, '') } - : { base: undefined, compare: '' }; -}; \ No newline at end of file diff --git a/src/containers/git-conflict.ts b/src/containers/git-conflict.ts new file mode 100644 index 000000000..17ab69378 --- /dev/null +++ b/src/containers/git-conflict.ts @@ -0,0 +1,63 @@ +// import * as path from 'path'; +// import { PathLike } from 'fs-extra'; +// import * as io from './io'; +// import { getIgnore } from './git-plumbing'; +// import { asyncFilter, isDefined, removeUndefined } from './utils'; +// import { Ignore } from 'ignore'; +// import { getWorktreePaths } from './git-path'; +// import { VersionedMetafile } from '../store/slices/metafiles'; +// import { ProgressCallback } from 'isomorphic-git'; + +// WARNING!: This Conflict type is different than the one in `merges.ts`; the `conflicts` field signatures vary +// export type Conflict = Pick; +// export type Conflict = { +// readonly path: PathLike; +// readonly conflicts: [number, number][]; +// }; + +// export const checkFilepath = async (filepath: PathLike, ignoreManager?: Ignore): Promise => { +// const { dir } = await getWorktreePaths(filepath); +// if (dir && !(await io.isDirectory(filepath))) { +// const conflictPattern = /<<<<<<<[^]+?=======[^]+?>>>>>>>/gm; +// const ignore = ignoreManager ? ignoreManager : (await getIgnore(dir, true)); +// if (ignore.ignores(path.relative(dir.toString(), filepath.toString()))) return undefined; +// const content = await io.readFileAsync(filepath, { encoding: 'utf-8' }); +// const matches = Array.from(content.matchAll(conflictPattern)); +// const conflicts: [number, number][] = removeUndefined(matches.map(m => isDefined(m.index) ? [m.index, m.index + m.toString().length] : undefined)); +// if (conflicts.length > 0) return { path: filepath, conflicts: conflicts }; +// } +// return undefined; +// }; + +// export const checkProject = async (root: PathLike | undefined, onProgress?: ProgressCallback): Promise => { +// if (root) { +// const conflictPattern = /<<<<<<<[^]+?=======[^]+?>>>>>>>/gm; +// const ignore = (await getIgnore(root, true)); + +// const paths = (await io.readDirAsyncDepth(root)) +// .filter(p => p !== root) // filter root filepath from results +// .filter(p => !ignore.ignores(path.relative(root.toString(), p))); // filter based on git-ignore rules +// const dirpaths = await asyncFilter(paths, async p => io.isDirectory(p)); +// const filepaths = paths.filter(p => !dirpaths.includes(p)); + +// let count = 0; +// const matching = await Promise.all(filepaths.map(async f => { +// const content = await io.readFileAsync(f, { encoding: 'utf-8' }); +// const matches = Array.from(content.matchAll(conflictPattern)); +// const conflicts: [number, number][] = removeUndefined(matches.map(m => isDefined(m.index) ? [m.index, m.index + m.length] : undefined)); +// // Emit progress event +// if (onProgress) { +// await onProgress({ +// phase: `Checking for conflicts: ${f}`, +// loaded: ++count, +// total: filepaths.length +// }); +// } +// return { path: f, conflicts: conflicts }; +// })); + +// return matching.filter(match => match.conflicts.length > 0); +// } else { +// return []; +// } +// }; \ No newline at end of file From 70760c52a6695e8954dcd9ec54076c961f4f1991 Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Tue, 5 Jul 2022 15:56:28 -0700 Subject: [PATCH 086/121] checkFilepath and checkProject migrated into containers/merges and switched to using native git commands (for increased performance) --- src/containers/merges.spec.ts | 43 +++++++++++++ src/containers/merges.ts | 112 +++++++++++++++++++++++++++++----- 2 files changed, 141 insertions(+), 14 deletions(-) create mode 100644 src/containers/merges.spec.ts diff --git a/src/containers/merges.spec.ts b/src/containers/merges.spec.ts new file mode 100644 index 000000000..c42630da4 --- /dev/null +++ b/src/containers/merges.spec.ts @@ -0,0 +1,43 @@ +import { mock, MockInstance } from '../test-utils/mock-fs'; +import { checkFilepath } from './merges'; + +describe('containers/merges', () => { + let mockedInstance: MockInstance; + + beforeAll(async () => { + const instance = await mock({ + foo: { + 'example.ts': 'import async from "typescript";\n\n<<<<<<< HEAD\nconst rand = Math.floor(Math.random() * 6) + 1;\n=======\nconst rand = Math.floor(Math.random() * 6) + 1;\n>>>>>>>\nconst double = rand * 2;\n<<<<<<< HEAD\nconst triple = rand * 3;\n=======\nconst triple = double + rand;\n>>>>>>>', + 'bar.js': 'file contents', + '.git': { + config: '', + HEAD: 'refs/heads/main', + refs: { + remotes: { + origin: { + 'HEAD': 'ref: refs/remotes/origin/main', + 'develop': 'ref: refs/remotes/origin/develop' + } + } + } + } + } + }); + return mockedInstance = instance; + }); + + afterAll(() => mockedInstance.reset()); + + it('checkFilepath resolves to undefined on non-conflicting file', async () => { + await expect(checkFilepath('foo/bar.js')).resolves.toBeUndefined(); + }); + + it('checkFilepath resolves to a conflict array on conflicting file', async () => { + await expect(checkFilepath('foo/example.ts')).resolves.toStrictEqual( + expect.objectContaining({ + path: 'foo/example.ts', + conflicts: [33, 183] + }) + ); + }); +}); \ No newline at end of file diff --git a/src/containers/merges.ts b/src/containers/merges.ts index 366e7471c..2d7dcdea9 100644 --- a/src/containers/merges.ts +++ b/src/containers/merges.ts @@ -3,12 +3,18 @@ import util from 'util'; import * as fs from 'fs-extra'; import * as path from 'path'; import * as isogit from 'isomorphic-git'; -import { branchLog, resolveRef } from './git-plumbing'; -import { getWorktreePaths } from './git-path'; -import { extractStats } from './io'; +import * as io from './io'; +import { branchLog, getIgnore, resolveRef, resolveURL } from './git-plumbing'; +import { getBranchRoot, getWorktreePaths } from './git-path'; +import { checkout, getConfig } from './git-porcelain'; +import { VersionedMetafile } from '../store/slices/metafiles'; +import { Ignore } from 'ignore'; +import { isDefined, removeUndefined } from './utils'; const promiseExec = util.promisify(exec); +export type Conflict = Pick; + type ExecError = { killed: boolean, code: number, @@ -16,14 +22,14 @@ type ExecError = { cmd: string, stdout: string, stderr: string -} +}; export type MergeResult = { mergeStatus: isogit.MergeResult, mergeConflicts?: fs.PathLike[], stdout: string, stderr: string -} +}; /** * Merge two branches; combining new commits from `compare` branch onto the `base` branch history. This function is a wrapper to the @@ -35,12 +41,14 @@ export type MergeResult = { * @returns A Promise object containing the merge results (per https://isomorphic-git.org/docs/en/merge), * exec shell-command output (`stdout` and `stderr`), and a list of files containing conflicts (if a merge conflict prevented the merge). */ -export const merge = async (dir: fs.PathLike, base: string, compare: string): Promise => { +export const merge = async (dir: fs.PathLike, base: string, compare: string, onProgress?: isogit.ProgressCallback): Promise => { const worktree = await getWorktreePaths(dir); const root = worktree.worktreeDir ? worktree.worktreeDir : worktree.dir; - const commitDelta = root ? await branchLog(root, base, compare) : []; + if (onProgress) await onProgress({ phase: `Merging: '${compare}' into '${base}'`, loaded: 0, total: 2 }); + const commitDelta = root ? await branchLog(root, base, compare, onProgress) : []; if (root && commitDelta.length == 0) { + if (onProgress) await onProgress({ phase: `Already up to date: '${compare}' and '${base}' have the same commit history`, loaded: 1, total: 2 }); const oid = worktree.dir ? await resolveRef({ dir: worktree.dir, ref: 'HEAD' }) : ''; return { mergeStatus: { @@ -49,22 +57,43 @@ export const merge = async (dir: fs.PathLike, base: string, compare: string): Pr fastForward: false, mergeCommit: false }, - stdout: '', + stdout: 'Already up to date.', stderr: '' } } const branches = await isogit.listBranches({ fs: fs, dir: dir.toString() }); // branches found locally + const urlConfig = await getConfig({ dir: dir, keyPath: `remote.origin.url`, global: false }); + const url = urlConfig.scope !== 'none' ? resolveURL(urlConfig.value) : ''; + if (!branches.includes(base)) await checkout({ dir, ref: base, url, onProgress }); + + const branchRoot = await getBranchRoot(dir, base); + if (!branchRoot) { + if (onProgress) await onProgress({ phase: `Unable to locate branch root: '${base}' at ${dir.toString()}`, loaded: 1, total: 2 }); + const oid = worktree.dir ? await resolveRef({ dir: worktree.dir, ref: 'HEAD' }) : ''; + return { + mergeStatus: { + oid: oid ? oid : '', + alreadyMerged: false, + fastForward: false, + mergeCommit: false + }, + stdout: '', + stderr: 'Unable to locate branch root.' + } + } let mergeResults: { stdout: string; stderr: string; } = { stdout: '', stderr: '' }; let mergeError: ExecError | undefined; + if (onProgress) await onProgress({ phase: `Merging: ${compare} into ${base}`, loaded: 1, total: 2 }); try { - mergeResults = await promiseExec(`git merge ${branches.includes(base) ? base : `origin/${base}`} ${branches.includes(compare) ? compare : `origin/${compare}`}`, { cwd: dir.toString() }); + mergeResults = await promiseExec(`git -C ${branchRoot.toString()} merge ${base} ${branches.includes(compare) ? compare : `origin/${compare}`}`, { cwd: dir.toString() }); } catch (error) { mergeError = error as ExecError; const conflictPattern = /(?<=conflict in ).*(?=\n)/gm; const mergeOutput = mergeError ? `${mergeError.stdout}\n${mergeError.stderr}` : ''; - const conflicts = mergeOutput.match(conflictPattern)?.map(filename => worktree.dir ? path.resolve(worktree.dir.toString(), filename) : filename); - const oid = worktree.dir ? await resolveRef({ dir: worktree.dir, ref: 'HEAD' }) : ''; + const conflicts = mergeOutput.match(conflictPattern)?.map(filename => path.resolve(branchRoot.toString(), filename)); + const oid = worktree.dir ? await resolveRef({ dir: branchRoot, ref: 'HEAD' }) : ''; + if (onProgress) await onProgress({ phase: `Halting merge: ${compare} into ${base}`, loaded: 2, total: 2 }); return { mergeStatus: { oid: oid ? oid : '', @@ -77,7 +106,8 @@ export const merge = async (dir: fs.PathLike, base: string, compare: string): Pr stderr: mergeError.stderr }; } - const oid = worktree.dir ? await resolveRef({ dir: worktree.dir, ref: 'HEAD' }) : ''; + const oid = worktree.dir ? await resolveRef({ dir: branchRoot, ref: 'HEAD' }) : ''; + if (onProgress) await onProgress({ phase: `Finishing merge: ${compare} into ${base}`, loaded: 2, total: 2 }); return { mergeStatus: { oid: oid ? oid : '', @@ -90,6 +120,48 @@ export const merge = async (dir: fs.PathLike, base: string, compare: string): Pr }; } +export const checkFilepath = async (filepath: fs.PathLike, ignoreManager?: Ignore): Promise => { + const { dir } = await getWorktreePaths(filepath); + if (dir && !(await io.isDirectory(filepath))) { + const conflictPattern = /<<<<<<<[^]+?=======[^]+?>>>>>>>/gm; + const ignore = ignoreManager ? ignoreManager : (await getIgnore(dir, true)); + if (ignore.ignores(path.relative(dir.toString(), filepath.toString()))) return undefined; + const content = await io.readFileAsync(filepath, { encoding: 'utf-8' }); + const matches = Array.from(content.matchAll(conflictPattern)); + const conflicts: number[] = removeUndefined(matches.map(m => isDefined(m.index) ? m.index : undefined)); + if (conflicts.length > 0) return { path: filepath, conflicts: conflicts }; + } + return undefined; +}; + +/** + * Check for conflicts in a base branch after attempting to merge. + * @param dir The root directory of either the main worktree or linked worktree. + * @param branch The name of the branch to check against (i.e. the base branch). + * @returns A Promise object containing an array of conflict information found in the specified branch. + */ +export const checkProject = async (dir: fs.PathLike, branch: string): Promise => { + const branchRoot = await getBranchRoot(dir, branch); + if (!branchRoot) return []; + + let checkResults: { stdout: string; stderr: string; } = { stdout: '', stderr: '' }; + let checkError: ExecError | undefined; + try { + checkResults = await promiseExec(`git -C ${branchRoot.toString()} diff --check`); + } catch (error) { + checkError = error as ExecError; + checkResults = { stdout: checkError.stdout, stderr: checkError.stderr }; + } + const conflictPattern = /(.+?)(?<=:)(\d)*(?=:)/gm; // Matches `:` syntax, with a `:` positive lookbehind. + const conflictedFiles = new Map(); + checkResults.stdout.match(conflictPattern)?.forEach(match => { + const [filename, position] = match.split(':').slice(0, 2) as [string, number]; + const existing = conflictedFiles.get(filename); + conflictedFiles.set(filename, existing ? [...existing, position] : [position]); + }); + return Array.from(conflictedFiles).map(c => ({ path: c[0], conflicts: c[1] })); +} + /** * Abort the merging of branches; useful when merge conflicts arise and need to be backed out. This function is a wrapper to the * *git* command-line utility, which differs from most git commands in Synectic that rely upon the *isomorphic-git* module. This function @@ -98,7 +170,7 @@ export const merge = async (dir: fs.PathLike, base: string, compare: string): Pr */ export const abortMerge = async (dir: fs.PathLike): Promise => { const worktree = await getWorktreePaths(dir); - const stats = worktree.gitdir ? await extractStats(path.join(worktree.gitdir?.toString(), 'MERGE_HEAD')) : undefined; + const stats = worktree.gitdir ? await io.extractStats(path.join(worktree.gitdir?.toString(), 'MERGE_HEAD')) : undefined; if (stats) { try { @@ -116,4 +188,16 @@ export const resolveMerge = async (dir: fs.PathLike, compareBranch: string): Pro } catch (error) { console.error(error); } -} \ No newline at end of file +} + +export const resolveConflicts = async (root: fs.PathLike): Promise<{ base: string | undefined, compare: string }> => { + const branchPattern = /(?<=^Merge branch(es)? .*)('.+?')+/gm; + const { gitdir } = await getWorktreePaths(root); + const mergeMsg = gitdir ? await io.readFileAsync(path.join(gitdir.toString(), 'MERGE_MSG'), { encoding: 'utf-8' }) : ''; + const match = mergeMsg.match(branchPattern); + return match + ? match.length === 2 + ? { base: (match[0] as string).replace(/['"]+/g, ''), compare: (match[1] as string).replace(/['"]+/g, '') } + : { base: undefined, compare: (match[0] as string).replace(/['"]+/g, '') } + : { base: undefined, compare: '' }; +}; \ No newline at end of file From 5a06c32078019f2e24e111fffcb1610e0d72f667 Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Wed, 6 Jul 2022 10:53:09 -0700 Subject: [PATCH 087/121] Replace deprecated 'rows' prop with 'minRows' on TextField in CommitDialog --- src/components/Modal/CommitDialog.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/Modal/CommitDialog.tsx b/src/components/Modal/CommitDialog.tsx index a7f9a78df..4b6b4fb83 100644 --- a/src/components/Modal/CommitDialog.tsx +++ b/src/components/Modal/CommitDialog.tsx @@ -134,7 +134,7 @@ const CommitDialog = (props: Modal) => { + variant='outlined' multiline minRows={4} className={styles.textfield} /> From f85f655af21167fcd0b3dca2c10a8dfd38d09fcf Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Wed, 6 Jul 2022 11:33:44 -0700 Subject: [PATCH 088/121] Fix for duplicate metafiles being created when a path is provided to createCard --- src/store/thunks/cards.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/store/thunks/cards.ts b/src/store/thunks/cards.ts index b29b95ea4..14e189634 100644 --- a/src/store/thunks/cards.ts +++ b/src/store/thunks/cards.ts @@ -7,7 +7,7 @@ import { extractFilename } from '../../containers/io'; import { AppThunkAPI } from '../hooks'; import { Card, cardAdded, cardUpdated } from '../slices/cards'; import { Metafile } from '../slices/metafiles'; -import { createMetafile } from './metafiles'; +import { fetchMetafile } from './metafiles'; export const createCard = createAsyncThunk, AppThunkAPI>( 'cards/createCard', @@ -28,7 +28,7 @@ export const createCard = createAsyncThunk Date: Wed, 6 Jul 2022 11:35:50 -0700 Subject: [PATCH 089/121] fetchConflictManagers handles linked worktrees and locally-tracked branches that are not currently checked out --- src/store/thunks/repos.ts | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/store/thunks/repos.ts b/src/store/thunks/repos.ts index 8880365df..cdc764845 100644 --- a/src/store/thunks/repos.ts +++ b/src/store/thunks/repos.ts @@ -5,18 +5,18 @@ import { createAsyncThunk } from '@reduxjs/toolkit'; import { AppThunkAPI } from '../hooks'; import { repoAdded, Repository } from '../slices/repos'; import repoSelectors from '../selectors/repos'; -import { FilebasedMetafile, isVersionedMetafile } from '../slices/metafiles'; -import { getBranchRoot, getWorktreePaths } from '../../containers/git-path'; +import { FilebasedMetafile, isVersionedMetafile, isFilebasedMetafile } from '../slices/metafiles'; +import { getWorktreePaths } from '../../containers/git-path'; import { clone, defaultBranch, getConfig, getRemoteInfo, GitConfig } from '../../containers/git-porcelain'; import { extractFromURL, extractRepoName } from '../../containers/git-plumbing'; import { extractFilename } from '../../containers/io'; -import { createMetafile, fetchParentMetafile } from './metafiles'; -import { fetchBranches } from './branches'; +import { createMetafile, fetchMetafile, fetchParentMetafile, updatedVersionedMetafile } from './metafiles'; +import { fetchBranches, updateRepository } from './branches'; import { ProgressCallback } from 'isomorphic-git'; -import { checkProject, resolveConflictBranches } from '../../containers/conflicts'; import { DateTime } from 'luxon'; import { createCard } from './cards'; import { ExactlyOne } from '../../containers/utils'; +import { checkProject, resolveConflicts } from '../../containers/merges'; export const fetchRepo = createAsyncThunk, AppThunkAPI>( 'repos/fetchRepo', @@ -108,19 +108,19 @@ export const fetchConflictManagers = createAsyncThunk( 'metafiles/fetchConflictManagers', async (_, thunkAPI) => { const repos = repoSelectors.selectAll(thunkAPI.getState()); - // for all repos, - // for all local branches, - // check for conflicts - // load a conflictManager metafile if there are conflicts - // load a card for each conflictManager metafile await Promise.all(repos.map(async repo => { - await Promise.all(repo.local.map(async branchId => { + const updated = await thunkAPI.dispatch(updateRepository(repo)).unwrap(); // update in case local/remote branches have changed + await Promise.all(updated.local.map(async branchId => { const branch = thunkAPI.getState().branches.entities[branchId]; - const root = branch ? await getBranchRoot(repo.root, branch.ref) : undefined; - const conflicts = await checkProject(root); - if (branch && root && conflicts.length > 0) { - const { base, compare } = await resolveConflictBranches(root); + const conflicts = branch ? await checkProject(branch.root, branch.ref) : undefined; + + if (branch && conflicts && conflicts.length > 0) { + conflicts.map(async conflict => { + const metafile = await thunkAPI.dispatch(fetchMetafile(conflict.path)).unwrap(); + if (isFilebasedMetafile(metafile)) await thunkAPI.dispatch(updatedVersionedMetafile(metafile)); + }); + const { base, compare } = await resolveConflicts(branch.root); const conflictManager = await thunkAPI.dispatch(createMetafile({ metafile: { name: `Conflicts`, @@ -128,8 +128,8 @@ export const fetchConflictManagers = createAsyncThunk( handler: 'ConflictManager', filetype: 'Text', loading: [], - repo: repo.id, - path: root, + repo: updated.id, + path: branch.root, merging: { base: (base ? base : branch.ref), compare: compare } } })).unwrap(); From 4f76bdcd9decde385f20e3f457430fb6bdd83d89 Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Wed, 6 Jul 2022 11:43:05 -0700 Subject: [PATCH 090/121] VersionedMetafile type updated to reflect only starting positions for Git conflicts --- src/store/slices/metafiles.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/store/slices/metafiles.ts b/src/store/slices/metafiles.ts index be656e140..7b3315c0d 100644 --- a/src/store/slices/metafiles.ts +++ b/src/store/slices/metafiles.ts @@ -76,8 +76,8 @@ export type VersionedProps = { readonly branch: UUID; /** The latest Git status code for this metafile relative to the associated repository and branch. */ readonly status: GitStatus; - /** An array of tuples indicating the start/end indices of each Git conflict in the content of this metafile. */ - readonly conflicts: [number, number][]; + /** An array indicating the starting index of each Git conflict in the content of this metafile. */ + readonly conflicts: number[]; }; export const isVersionedMetafile = (metafile: Metafile): metafile is VersionedMetafile => { return isFilebasedMetafile(metafile) && (metafile as VersionedMetafile).repo !== undefined; From 42870943735f6465cbe0146b7645ffdc9b445ec8 Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Wed, 6 Jul 2022 11:44:05 -0700 Subject: [PATCH 091/121] fetchConflictManagers relies on metafiles/updateConflicted async thunk instead of directly updating conflicted metafiles --- src/store/thunks/repos.ts | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/store/thunks/repos.ts b/src/store/thunks/repos.ts index cdc764845..a3f46ac9e 100644 --- a/src/store/thunks/repos.ts +++ b/src/store/thunks/repos.ts @@ -5,12 +5,12 @@ import { createAsyncThunk } from '@reduxjs/toolkit'; import { AppThunkAPI } from '../hooks'; import { repoAdded, Repository } from '../slices/repos'; import repoSelectors from '../selectors/repos'; -import { FilebasedMetafile, isVersionedMetafile, isFilebasedMetafile } from '../slices/metafiles'; +import { FilebasedMetafile, isVersionedMetafile } from '../slices/metafiles'; import { getWorktreePaths } from '../../containers/git-path'; import { clone, defaultBranch, getConfig, getRemoteInfo, GitConfig } from '../../containers/git-porcelain'; import { extractFromURL, extractRepoName } from '../../containers/git-plumbing'; import { extractFilename } from '../../containers/io'; -import { createMetafile, fetchMetafile, fetchParentMetafile, updatedVersionedMetafile } from './metafiles'; +import { createMetafile, fetchParentMetafile, updateConflicted } from './metafiles'; import { fetchBranches, updateRepository } from './branches'; import { ProgressCallback } from 'isomorphic-git'; import { DateTime } from 'luxon'; @@ -116,10 +116,7 @@ export const fetchConflictManagers = createAsyncThunk( const conflicts = branch ? await checkProject(branch.root, branch.ref) : undefined; if (branch && conflicts && conflicts.length > 0) { - conflicts.map(async conflict => { - const metafile = await thunkAPI.dispatch(fetchMetafile(conflict.path)).unwrap(); - if (isFilebasedMetafile(metafile)) await thunkAPI.dispatch(updatedVersionedMetafile(metafile)); - }); + await thunkAPI.dispatch(updateConflicted(conflicts)); const { base, compare } = await resolveConflicts(branch.root); const conflictManager = await thunkAPI.dispatch(createMetafile({ metafile: { From 3fc98d69fb7e71a79ee481a0e2df3cb24665a174 Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Wed, 6 Jul 2022 11:45:52 -0700 Subject: [PATCH 092/121] checkProject skips any locally-tracked branches that are not checked out --- src/containers/merges.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/containers/merges.ts b/src/containers/merges.ts index 2d7dcdea9..98e92f66b 100644 --- a/src/containers/merges.ts +++ b/src/containers/merges.ts @@ -6,7 +6,7 @@ import * as isogit from 'isomorphic-git'; import * as io from './io'; import { branchLog, getIgnore, resolveRef, resolveURL } from './git-plumbing'; import { getBranchRoot, getWorktreePaths } from './git-path'; -import { checkout, getConfig } from './git-porcelain'; +import { checkout, currentBranch, getConfig } from './git-porcelain'; import { VersionedMetafile } from '../store/slices/metafiles'; import { Ignore } from 'ignore'; import { isDefined, removeUndefined } from './utils'; @@ -142,7 +142,11 @@ export const checkFilepath = async (filepath: fs.PathLike, ignoreManager?: Ignor */ export const checkProject = async (dir: fs.PathLike, branch: string): Promise => { const branchRoot = await getBranchRoot(dir, branch); - if (!branchRoot) return []; + const worktree = await getWorktreePaths(dir); + const current = await currentBranch({ dir }); + // skip any locally-tracked branches that are not checked out in the main worktree directory + const trackedLocalBranch = (branchRoot && worktree.dir) ? io.isEqualPaths(branchRoot, worktree.dir) && branch !== current : false; + if (!branchRoot || trackedLocalBranch) return []; let checkResults: { stdout: string; stderr: string; } = { stdout: '', stderr: '' }; let checkError: ExecError | undefined; From ed2f871aff5c4225cec827b5f9e41a97d214f5b7 Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Wed, 6 Jul 2022 11:47:07 -0700 Subject: [PATCH 093/121] checkProject uses absolute paths for conflicting files instead of relying on downstream usages knowing which branch to look into --- src/containers/merges.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/containers/merges.ts b/src/containers/merges.ts index 98e92f66b..d1c879d27 100644 --- a/src/containers/merges.ts +++ b/src/containers/merges.ts @@ -160,8 +160,9 @@ export const checkProject = async (dir: fs.PathLike, branch: string): Promise(); checkResults.stdout.match(conflictPattern)?.forEach(match => { const [filename, position] = match.split(':').slice(0, 2) as [string, number]; - const existing = conflictedFiles.get(filename); - conflictedFiles.set(filename, existing ? [...existing, position] : [position]); + const filepath = path.join(branchRoot.toString(), filename); + const existing = conflictedFiles.get(filepath); + conflictedFiles.set(filepath, existing ? [...existing, position] : [position]); }); return Array.from(conflictedFiles).map(c => ({ path: c[0], conflicts: c[1] })); } From bc55b180faf37289155f91b648ff318506186263 Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Wed, 6 Jul 2022 11:48:01 -0700 Subject: [PATCH 094/121] JSDocs for merges/resolveConflicts expanded to include examples --- src/containers/merges.ts | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/src/containers/merges.ts b/src/containers/merges.ts index d1c879d27..31efaa943 100644 --- a/src/containers/merges.ts +++ b/src/containers/merges.ts @@ -179,7 +179,6 @@ export const abortMerge = async (dir: fs.PathLike): Promise => { if (stats) { try { - await promiseExec(`git merge --abort`, { cwd: dir.toString() }); } catch (error) { console.error(error); @@ -195,10 +194,32 @@ export const resolveMerge = async (dir: fs.PathLike, compareBranch: string): Pro } } +/** + * Resolve the names of branches involved in a merge conflict, given the root directory path of the base branch. If the base branch is a linked worktree, then + * this function will extract the branch names from the GIT_DIR/worktrees/{branch}/MERGE_MSG file which has content similar to: + * ```bash + * Merge remote-tracking branch 'origin/compare' into base + * + * * # Conflicts: + * * # components/list/index.tsx + * ``` + * + * If the base branch is located in the main worktree directory, then we extract the branch names from the GIT_DIR/MERGE_MSG file which has content similar to: + * ```bash + * Merge branch 'compare' + * + * # Conflicts: + * # components/list/index.tsx + * ``` + * @param root The root directory of the base branch involved in the conflicting merge; the main worktree or linked worktree are acceptable. + * @returns A Promise object containing the base branch name (or undefined if not included in the MERGE_MSG file) and the compare branch + * name. + */ export const resolveConflicts = async (root: fs.PathLike): Promise<{ base: string | undefined, compare: string }> => { - const branchPattern = /(?<=^Merge branch(es)? .*)('.+?')+/gm; - const { gitdir } = await getWorktreePaths(root); - const mergeMsg = gitdir ? await io.readFileAsync(path.join(gitdir.toString(), 'MERGE_MSG'), { encoding: 'utf-8' }) : ''; + const branchPattern = /(?<=Merge( remote-tracking)? branch(es)? .*)('.+?')+/gm; // Match linked worktree and main worktree patterns (shown above) + const { gitdir, worktreeLink } = await getWorktreePaths(root); + const mergeMsg = worktreeLink ? await io.readFileAsync(path.join(worktreeLink.toString(), 'MERGE_MSG'), { encoding: 'utf-8' }) + : gitdir ? await io.readFileAsync(path.join(gitdir.toString(), 'MERGE_MSG'), { encoding: 'utf-8' }) : ''; const match = mergeMsg.match(branchPattern); return match ? match.length === 2 From 2f931b1ddc9ef2704953c2ed8d8bce2593924058 Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Wed, 6 Jul 2022 11:49:03 -0700 Subject: [PATCH 095/121] Usage switched from deprecated conflicts/checkProject to the new merges/checkProject --- src/components/MergeDialog/merge-actions.ts | 94 --------------------- src/containers/hooks/useGitGraph.ts | 4 +- src/store/thunks/metafiles.ts | 2 +- 3 files changed, 3 insertions(+), 97 deletions(-) delete mode 100644 src/components/MergeDialog/merge-actions.ts diff --git a/src/components/MergeDialog/merge-actions.ts b/src/components/MergeDialog/merge-actions.ts deleted file mode 100644 index 3f6fd50bd..000000000 --- a/src/components/MergeDialog/merge-actions.ts +++ /dev/null @@ -1,94 +0,0 @@ -import { DateTime } from 'luxon'; -import { checkProject } from '../../containers/conflicts'; -import { branchLog } from '../../containers/git-plumbing'; -import { merge } from '../../containers/merges'; -import { useAppDispatch } from '../../store/hooks'; -import { Branch } from '../../store/slices/branches'; -import { Repository } from '../../store/slices/repos'; -import { createCard } from '../../store/thunks/cards'; -import { createMetafile, updateConflicted } from '../../store/thunks/metafiles'; -import { Status } from '../Status'; - -type MissingGitConfigs = string[] | undefined; - -export const checkDelta = async ( - setDeltaStatus: React.Dispatch>, - setDeltaCommits: React.Dispatch>, - setProgress: React.Dispatch>, - setLog: React.Dispatch>, - repo: Repository, - base: Branch, - compare: Branch -) => { - setDeltaStatus('Running'); - const log = await branchLog(repo.root, base.ref, compare.ref, - (progress) => { - setProgress(typeof progress.total === 'number' ? Math.round((progress.loaded / progress.total) * 100) : 0); - setLog(`${progress.loaded}` + (progress.total ? `/${progress.total}` : '') + `: ${progress.phase}`); - }); - setDeltaCommits(log.length); - setDeltaStatus(log.length > 0 ? 'Passing' : 'Failing'); -} - -export const runMerge = async ( - setConflicts: React.Dispatch>, - setConfigs: React.Dispatch>, - setProgress: React.Dispatch>, - setLog: React.Dispatch>, - dispatch: ReturnType, - repo: Repository, - base: Branch, - compare: Branch -) => { - setConflicts('Running'); - const result = await merge(repo.root, base.ref, compare.ref); - const isConflicting = result.mergeConflicts ? result.mergeConflicts.length > 0 : false; - const hasErrors = result.stderr.length > 0; - const hasMerged = result.mergeStatus.mergeCommit ? result.mergeStatus.mergeCommit : false; - console.log(result); - - if (isConflicting) { - const conflicts = await checkProject( - repo.root, - (progress) => { - setProgress(typeof progress.total === 'number' ? Math.round((progress.loaded / progress.total) * 100) : 0); - setLog(`${progress.loaded}` + (progress.total ? `/${progress.total}` : '') + `: ${progress.phase}`); - }); - await dispatch(updateConflicted(conflicts)); // updates version control status on related metafiles - const manager = await dispatch(createMetafile({ - metafile: { - modified: DateTime.local().valueOf(), - name: 'Conflicts', - handler: 'ConflictManager', - filetype: 'Text', - loading: [], - repo: repo.id, - path: repo.root, - merging: { base: base.ref, compare: compare.ref } - } - })).unwrap(); - await dispatch(createCard({ metafile: manager })); - } - if (isConflicting) { - setLog(`Resolve ${result.mergeConflicts ? result.mergeConflicts.length : 0} conflicts and commit resolution`); - return setConflicts('Failing'); - } - if (hasErrors) { - setLog(result.stderr); - return setConflicts('Failing'); - } - return setConflicts(hasMerged ? 'Passing' : 'Failing'); -} - -// const checkBuilds = async ( -// setBuilds: React.Dispatch>, -// repo: Repository, -// base: Branch -// ) => { -// setBuilds('Running'); -// // check for build failures by running build scripts from target project -// const results = await build(repo, base.ref); -// const hasBuilt = results.installCode === 0 && results.buildCode === 0; -// console.log(`BUILD:`, { results }); -// return setBuilds(hasBuilt ? 'Passing' : 'Failing'); -// } \ No newline at end of file diff --git a/src/containers/hooks/useGitGraph.ts b/src/containers/hooks/useGitGraph.ts index c8b895fba..8828db0c5 100644 --- a/src/containers/hooks/useGitGraph.ts +++ b/src/containers/hooks/useGitGraph.ts @@ -8,7 +8,7 @@ import repoSelectors from '../../store/selectors/repos'; import { Branch } from '../../store/slices/branches'; import { RootState } from '../../store/store'; import { UUID } from '../../store/types'; -import { checkProject } from '../conflicts'; +import { checkProject } from '../merges'; import { removeUndefined } from '../utils'; import { hasStatus } from '../git-porcelain'; import usePrevious from './usePrevious'; @@ -86,7 +86,7 @@ const useGitGraph = (repoId: UUID, pruned = false): useGitGraphHook => { */ const parse = async (graph: GitGraph, branch: Branch) => { // check for conflicts in head commit - const conflicted = (await checkProject(branch.root)).length > 0; + const conflicted = (await checkProject(branch.root, branch.ref)).length > 0; branch.commits.map((commit, idx) => { !graph.has(commit.oid) ? graph.set(commit.oid, { diff --git a/src/store/thunks/metafiles.ts b/src/store/thunks/metafiles.ts index a8d14461d..e58118858 100644 --- a/src/store/thunks/metafiles.ts +++ b/src/store/thunks/metafiles.ts @@ -3,7 +3,6 @@ import { PathLike, remove } from 'fs-extra'; import { DateTime } from 'luxon'; import { dirname, relative } from 'path'; import { v4 } from 'uuid'; -import { checkFilepath, Conflict } from '../../containers/conflicts'; import { flattenArray } from '../../containers/flatten'; import { ExactlyOne, isDefined, isUpdateable, removeDuplicates, removeUndefinedProperties } from '../../containers/utils'; import { discardChanges, getIgnore } from '../../containers/git-plumbing'; @@ -15,6 +14,7 @@ import { DirectoryMetafile, FilebasedMetafile, Metafile, MetafileTemplate, Versi import { fetchBranch } from './branches'; import { fetchFiletype } from './filetypes'; import { fetchRepo } from './repos'; +import { checkFilepath, Conflict } from '../../containers/merges'; export const isHydrated = (metafile: Metafile): boolean => { // if metafile is filebased, verify that DirectoryMetafile/FileMetafile fields are populated From ffb9c43cae7c6347c9300878f8f5e617aa1c8d2c Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Wed, 6 Jul 2022 13:56:21 -0700 Subject: [PATCH 096/121] Deprecate and remove version-tracker CSS classes; replace with list-component CSS class --- src/assets/style.css | 26 ++----------------- .../BranchTracker/BranchTracker.tsx | 2 +- 2 files changed, 3 insertions(+), 25 deletions(-) diff --git a/src/assets/style.css b/src/assets/style.css index 7b0b040a6..dafc70b9e 100644 --- a/src/assets/style.css +++ b/src/assets/style.css @@ -246,15 +246,11 @@ img.diff_icon { /* width: 100%; */ height: 100%; flex-grow: 1; - text-indent: 10px; + text-indent: 5px; border-radius: 0px 0px 10px 10px; overflow: auto; text-overflow: ellipsis; -} - -.list-component::-webkit-scrollbar { - visibility: hidden; - width: 0px; + white-space: nowrap; } .branch-ribbon { @@ -317,24 +313,6 @@ img.diff_icon { margin-top: -10px; } -div.version-tracker { - color: rgba(30, 30, 30, 1); - background: rgba(235, 235, 235, 1); - width: 100%; - height: 100%; - flex-grow: 1; - text-indent: 20px; - border-radius: 0px 0px 10px 10px; - overflow: auto; - text-overflow: ellipsis; - white-space: nowrap; -} - -.version-tracker::-webkit-scrollbar { - visibility: hidden; - width: 0px; -} - .version-tracker-branches { width: 100%; padding-left: 10px; diff --git a/src/components/BranchTracker/BranchTracker.tsx b/src/components/BranchTracker/BranchTracker.tsx index 1f6e8a008..e006e1f68 100644 --- a/src/components/BranchTracker/BranchTracker.tsx +++ b/src/components/BranchTracker/BranchTracker.tsx @@ -14,7 +14,7 @@ const BranchTracker = () => { const handleToggle = (_event: React.ChangeEvent>, nodeIds: string[]) => setExpanded(nodeIds); return ( -
+
} defaultExpandIcon={} From 02e143c21024d10cea41894a8383ecf03b7be543 Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Wed, 6 Jul 2022 14:54:18 -0700 Subject: [PATCH 097/121] Show notification modal when no conflicts are found in all tracked repositories --- src/store/thunks/repos.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/store/thunks/repos.ts b/src/store/thunks/repos.ts index a3f46ac9e..783c09292 100644 --- a/src/store/thunks/repos.ts +++ b/src/store/thunks/repos.ts @@ -17,6 +17,7 @@ import { DateTime } from 'luxon'; import { createCard } from './cards'; import { ExactlyOne } from '../../containers/utils'; import { checkProject, resolveConflicts } from '../../containers/merges'; +import { modalAdded } from '../slices/modals'; export const fetchRepo = createAsyncThunk, AppThunkAPI>( 'repos/fetchRepo', @@ -108,6 +109,7 @@ export const fetchConflictManagers = createAsyncThunk( 'metafiles/fetchConflictManagers', async (_, thunkAPI) => { const repos = repoSelectors.selectAll(thunkAPI.getState()); + let hasConflicts = false; await Promise.all(repos.map(async repo => { const updated = await thunkAPI.dispatch(updateRepository(repo)).unwrap(); // update in case local/remote branches have changed @@ -116,6 +118,7 @@ export const fetchConflictManagers = createAsyncThunk( const conflicts = branch ? await checkProject(branch.root, branch.ref) : undefined; if (branch && conflicts && conflicts.length > 0) { + hasConflicts = true; await thunkAPI.dispatch(updateConflicted(conflicts)); const { base, compare } = await resolveConflicts(branch.root); const conflictManager = await thunkAPI.dispatch(createMetafile({ @@ -134,5 +137,10 @@ export const fetchConflictManagers = createAsyncThunk( } })); })); + + if (!hasConflicts) thunkAPI.dispatch(modalAdded({ + id: v4(), type: 'Notification', + options: { 'message': `No conflicts found` } + })) } ); \ No newline at end of file From 43ffbebfd682df0735abedf58ab1ca5b45ec1a39 Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Wed, 6 Jul 2022 14:55:33 -0700 Subject: [PATCH 098/121] Simplify menu entry for View -> Conflicts --- src/components/Canvas/Canvas.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/Canvas/Canvas.tsx b/src/components/Canvas/Canvas.tsx index ba5f4fddb..52e748369 100644 --- a/src/components/Canvas/Canvas.tsx +++ b/src/components/Canvas/Canvas.tsx @@ -149,7 +149,7 @@ const Canvas = () => { const viewMenu: NavItemProps[] = [ { label: 'Source Control...', disabled: (Object.values(repos).length == 0), click: () => dispatch(modalAdded(sourcePickerModal)) }, { label: 'Branches...', click: async () => dispatch(loadBranchVersions()) }, - { label: 'Show Conflicts...', click: () => dispatch(fetchConflictManagers()) }, + { label: 'Conflicts...', click: () => dispatch(fetchConflictManagers()) }, ]; const sysMenu: NavItemProps[] = [ From 28bb80632f4e2e9616399d06a6eb15bf25cc03a0 Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Wed, 6 Jul 2022 21:04:06 -0700 Subject: [PATCH 099/121] Typo fixed updatedVersionedMetafile -> updateVersionedMetafile --- src/components/BranchTracker/BranchStatus.tsx | 4 ++-- src/components/Button/Resolve.tsx | 4 ++-- src/components/Button/Save.tsx | 4 ++-- src/components/Button/Stage.tsx | 4 ++-- src/components/Button/Undo.tsx | 4 ++-- src/components/Button/Unstage.tsx | 4 ++-- src/components/Modal/CommitDialog.tsx | 4 ++-- src/components/SourceControl/SourceFileComponent.tsx | 6 +++--- src/containers/dialogs.ts | 4 ++-- src/containers/hooks/useGitWatcher.ts | 4 ++-- src/store/listenerMiddleware.ts | 12 ++++++------ src/store/thunks/metafiles.spec.ts | 6 +++--- src/store/thunks/metafiles.ts | 4 ++-- 13 files changed, 32 insertions(+), 32 deletions(-) diff --git a/src/components/BranchTracker/BranchStatus.tsx b/src/components/BranchTracker/BranchStatus.tsx index 550bdd8af..cae947f32 100644 --- a/src/components/BranchTracker/BranchStatus.tsx +++ b/src/components/BranchTracker/BranchStatus.tsx @@ -14,7 +14,7 @@ import { DnDItemType } from '../Canvas/Canvas'; import { modalAdded } from '../../store/slices/modals'; import { Repository } from '../../store/slices/repos'; import { Branch } from '../../store/slices/branches'; -import { fetchMetafile, updatedVersionedMetafile } from '../../store/thunks/metafiles'; +import { fetchMetafile, updateVersionedMetafile } from '../../store/thunks/metafiles'; import { checkoutBranch } from '../../store/thunks/branches'; import { createCard } from '../../store/thunks/cards'; @@ -74,7 +74,7 @@ const BranchStatus = (props: { repo: Repository; branch: Branch; }) => { const empty = directoryContent.length == 0 || (directoryContent.length == 1 && directoryContent.includes('.git')); // a .git sub-directory still counts as empty const current = await currentBranch({ dir: props.branch.root }); let metafile = await dispatch(fetchMetafile(props.branch.root)).unwrap(); - metafile = isFilebasedMetafile(metafile) ? await dispatch(updatedVersionedMetafile(metafile)).unwrap() : metafile; + metafile = isFilebasedMetafile(metafile) ? await dispatch(updateVersionedMetafile(metafile)).unwrap() : metafile; const updated = (empty || props.branch.ref !== current) ? await dispatch(checkoutBranch({ metafileId: metafile.id, branchRef: props.branch.ref })).unwrap() : metafile; diff --git a/src/components/Button/Resolve.tsx b/src/components/Button/Resolve.tsx index 946519efa..efa26d8d7 100644 --- a/src/components/Button/Resolve.tsx +++ b/src/components/Button/Resolve.tsx @@ -16,7 +16,7 @@ import branchSelectors from '../../store/selectors/branches'; import { cardRemoved } from '../../store/slices/cards'; import { resolveMerge } from '../../containers/merges'; import { UUID } from '../../store/types'; -import { updatedVersionedMetafile } from '../../store/thunks/metafiles'; +import { updateVersionedMetafile } from '../../store/thunks/metafiles'; /** * Button for staging resolution changes for all previously conflicting files in a repository, committing the resolution the the repository, @@ -44,7 +44,7 @@ const ResolveButton = ({ cardId, mode = 'light' }: { cardId: UUID, mode?: Mode } .map(async metafile => { await add(metafile.path); console.log(`staging ${metafile.name}`); - dispatch(updatedVersionedMetafile(metafile)); + dispatch(updateVersionedMetafile(metafile)); }) ); diff --git a/src/components/Button/Save.tsx b/src/components/Button/Save.tsx index 4ec8c7ca2..8939edbbf 100644 --- a/src/components/Button/Save.tsx +++ b/src/components/Button/Save.tsx @@ -12,7 +12,7 @@ import { RootState } from '../../store/store'; import { Mode, useIconButtonStyle } from './useStyledIconButton'; import { IconButton, Tooltip } from '@material-ui/core'; import { UUID } from '../../store/types'; -import { updatedVersionedMetafile } from '../../store/thunks/metafiles'; +import { updateVersionedMetafile } from '../../store/thunks/metafiles'; import cachedSelectors from '../../store/selectors/cache'; /** @@ -37,7 +37,7 @@ const SaveButton = ({ cardIds, mode = 'light' }: { cardIds: UUID[], mode?: Mode .filter(isFileMetafile) .map(async metafile => { await writeFileAsync(metafile.path, metafile.content); - const updated = await dispatch(updatedVersionedMetafile(metafile)).unwrap(); + const updated = await dispatch(updateVersionedMetafile(metafile)).unwrap(); dispatch(metafileUpdated({ ...updated, state: 'unmodified' })); }) ); diff --git a/src/components/Button/Stage.tsx b/src/components/Button/Stage.tsx index 638341337..892a98f25 100644 --- a/src/components/Button/Stage.tsx +++ b/src/components/Button/Stage.tsx @@ -11,7 +11,7 @@ import { useAppDispatch, useAppSelector } from '../../store/hooks'; import { cardUpdated } from '../../store/slices/cards'; import { addItemInArray, removeItemInArray } from '../../store/immutables'; import { UUID } from '../../store/types'; -import { updatedVersionedMetafile } from '../../store/thunks/metafiles'; +import { updateVersionedMetafile } from '../../store/thunks/metafiles'; /** * Button for managing the staging of changes for VCS-tracked cards. This button tracks the status of metafiles associated with the list @@ -38,7 +38,7 @@ const StageButton = ({ cardIds, mode = 'light' }: { cardIds: UUID[], mode?: Mode .map(async metafile => { await add(metafile.path); console.log(`staging ${metafile.name}`); - dispatch(updatedVersionedMetafile(metafile)); + dispatch(updateVersionedMetafile(metafile)); }) ); diff --git a/src/components/Button/Undo.tsx b/src/components/Button/Undo.tsx index d6d9716be..e682c4587 100644 --- a/src/components/Button/Undo.tsx +++ b/src/components/Button/Undo.tsx @@ -11,7 +11,7 @@ import { Mode, useIconButtonStyle } from './useStyledIconButton'; import { IconButton, Tooltip } from '@material-ui/core'; import { UUID } from '../../store/types'; import cachedSelectors from '../../store/selectors/cache'; -import { updatedVersionedMetafile, updateFilebasedMetafile } from '../../store/thunks/metafiles'; +import { updateVersionedMetafile, updateFilebasedMetafile } from '../../store/thunks/metafiles'; /** * Button for undoing changes back to the most recent version according to the filesystem for file-based cards. This button tracks the @@ -34,7 +34,7 @@ const UndoButton = ({ cardIds, mode = 'light' }: { cardIds: UUID[], mode?: Mode .filter(isFileMetafile) .map(async metafile => { await dispatch(updateFilebasedMetafile(metafile)); - await dispatch(updatedVersionedMetafile(metafile)); + await dispatch(updateVersionedMetafile(metafile)); }) ); diff --git a/src/components/Button/Unstage.tsx b/src/components/Button/Unstage.tsx index 129ceea42..0d8849088 100644 --- a/src/components/Button/Unstage.tsx +++ b/src/components/Button/Unstage.tsx @@ -11,7 +11,7 @@ import { useAppDispatch, useAppSelector } from '../../store/hooks'; import { cardUpdated } from '../../store/slices/cards'; import { addItemInArray, removeItemInArray } from '../../store/immutables'; import { UUID } from '../../store/types'; -import { updatedVersionedMetafile } from '../../store/thunks/metafiles'; +import { updateVersionedMetafile } from '../../store/thunks/metafiles'; /** * Button for managing the unstaging of changes for VCS-tracked cards. This button tracks the status of metafiles associated with the list @@ -37,7 +37,7 @@ const UnstageButton = ({ cardIds, mode = 'light' }: { cardIds: UUID[], mode?: Mo .map(async metafile => { await remove(metafile.path); console.log(`unstaging ${metafile.name}`); - dispatch(updatedVersionedMetafile(metafile)); + dispatch(updateVersionedMetafile(metafile)); }) ); diff --git a/src/components/Modal/CommitDialog.tsx b/src/components/Modal/CommitDialog.tsx index 4b6b4fb83..7498bd207 100644 --- a/src/components/Modal/CommitDialog.tsx +++ b/src/components/Modal/CommitDialog.tsx @@ -14,7 +14,7 @@ import { fetchBranches } from '../../store/thunks/branches'; import { repoUpdated } from '../../store/slices/repos'; import FileComponent from '../Explorer/FileComponent'; import { getRoot } from '../../containers/git-path'; -import { updateFilebasedMetafile, updatedVersionedMetafile } from '../../store/thunks/metafiles'; +import { updateFilebasedMetafile, updateVersionedMetafile } from '../../store/thunks/metafiles'; const useStyles = makeStyles((theme: Theme) => createStyles({ @@ -94,7 +94,7 @@ const CommitDialog = (props: Modal) => { console.log(`commit result: ${result}`); if (metafile && isFilebasedMetafile(metafile)) { await dispatch(updateFilebasedMetafile(metafile)); - await dispatch(updatedVersionedMetafile(metafile)); + await dispatch(updateVersionedMetafile(metafile)); } if (repo) { const branches = await dispatch(fetchBranches(repo.root)).unwrap(); diff --git a/src/components/SourceControl/SourceFileComponent.tsx b/src/components/SourceControl/SourceFileComponent.tsx index 1f11e8102..6956fdb76 100644 --- a/src/components/SourceControl/SourceFileComponent.tsx +++ b/src/components/SourceControl/SourceFileComponent.tsx @@ -10,7 +10,7 @@ import { getSourceMotif, stagedCheck, unstagedCheck } from '../../containers/sou import { add, remove } from '../../containers/git-plumbing'; import { isFilebasedMetafile, isFileMetafile } from '../../store/slices/metafiles'; import { UUID } from '../../store/types'; -import { updatedVersionedMetafile } from '../../store/thunks/metafiles'; +import { updateVersionedMetafile } from '../../store/thunks/metafiles'; const SourceFileComponent = (props: { metafileId: UUID }) => { const metafile = useAppSelector((root: RootState) => metafileSelectors.selectById(root, props.metafileId)); @@ -20,14 +20,14 @@ const SourceFileComponent = (props: { metafileId: UUID }) => { const stage = async () => { if (metafile && isFileMetafile(metafile)) { await add(metafile.path); - await dispatch(updatedVersionedMetafile(metafile)); + await dispatch(updateVersionedMetafile(metafile)); } }; const unstage = async () => { if (metafile && isFileMetafile(metafile)) { await remove(metafile.path); - await dispatch(updatedVersionedMetafile(metafile)); + await dispatch(updateVersionedMetafile(metafile)); } }; diff --git a/src/containers/dialogs.ts b/src/containers/dialogs.ts index cdb18a6a1..26cc90728 100644 --- a/src/containers/dialogs.ts +++ b/src/containers/dialogs.ts @@ -5,7 +5,7 @@ import { AppThunkAPI } from '../store/hooks'; import { isFilebasedMetafile, Metafile, metafileUpdated } from '../store/slices/metafiles'; import { createCard } from '../store/thunks/cards'; import { writeFileAsync } from './io'; -import { updatedVersionedMetafile } from '../store/thunks/metafiles'; +import { updateVersionedMetafile } from '../store/thunks/metafiles'; import { fetchRepo } from '../store/thunks/repos'; import metafileSelectors from '../store/selectors/metafiles'; @@ -46,7 +46,7 @@ export const fileSaveDialog = createAsyncThunk( await Promise.all( metafileSelectors.selectByFilepath(thunkAPI.getState(), response.filePath) .filter(isFilebasedMetafile) - .map(async m => await thunkAPI.dispatch(updatedVersionedMetafile(m))) + .map(async m => await thunkAPI.dispatch(updateVersionedMetafile(m))) ); return true; } diff --git a/src/containers/hooks/useGitWatcher.ts b/src/containers/hooks/useGitWatcher.ts index c95276ec8..32fdc34e2 100644 --- a/src/containers/hooks/useGitWatcher.ts +++ b/src/containers/hooks/useGitWatcher.ts @@ -1,7 +1,7 @@ import { PathLike } from 'fs-extra'; import { useAppDispatch } from '../../store/hooks'; import { isFilebasedMetafile } from '../../store/slices/metafiles'; -import { fetchMetafile, updatedVersionedMetafile } from '../../store/thunks/metafiles'; +import { fetchMetafile, updateVersionedMetafile } from '../../store/thunks/metafiles'; import useWatcher, { WatchEventType, WatchListener } from './useWatcher'; /** @@ -21,7 +21,7 @@ const useGitWatcher = (root: PathLike | undefined, additionalEventHandler?: Watc const eventHandler = async (event: WatchEventType, filename: PathLike) => { if (!['unlink', 'unlinkDir'].includes(event)) { const metafile = await dispatch(fetchMetafile(filename)).unwrap(); - if (isFilebasedMetafile(metafile)) await dispatch(updatedVersionedMetafile(metafile)); + if (isFilebasedMetafile(metafile)) await dispatch(updateVersionedMetafile(metafile)); } } diff --git a/src/store/listenerMiddleware.ts b/src/store/listenerMiddleware.ts index 5f097862a..ca9900cec 100644 --- a/src/store/listenerMiddleware.ts +++ b/src/store/listenerMiddleware.ts @@ -8,7 +8,7 @@ import { isDirectoryMetafile, isFilebasedMetafile, isFileMetafile, metafileUpdat import { RootState, AppDispatch } from './store'; import { checkoutBranch } from './thunks/branches'; import { subscribe, unsubscribe } from './thunks/cache'; -import { createMetafile, fetchMetafile, fetchParentMetafile, updatedVersionedMetafile, updateFilebasedMetafile } from './thunks/metafiles'; +import { createMetafile, fetchMetafile, fetchParentMetafile, updateVersionedMetafile, updateFilebasedMetafile } from './thunks/metafiles'; import { fetchRepo, createRepo } from './thunks/repos'; export const listenerMiddleware = createListenerMiddleware(); @@ -19,7 +19,7 @@ export const startAppListening = listenerMiddleware.startListening as AppStartLi export const addAppListener = addListener as TypedAddListener; -const isRejectedAction = isRejected(fetchMetafile, createMetafile, updateFilebasedMetafile, updatedVersionedMetafile, fetchParentMetafile, fetchRepo, createRepo); +const isRejectedAction = isRejected(fetchMetafile, createMetafile, updateFilebasedMetafile, updateVersionedMetafile, fetchParentMetafile, fetchRepo, createRepo); startAppListening({ matcher: isRejectedAction, @@ -31,12 +31,12 @@ startAppListening({ }); startAppListening({ - matcher: isAnyOf(updatedVersionedMetafile.pending, updatedVersionedMetafile.fulfilled, updatedVersionedMetafile.rejected), + matcher: isAnyOf(updateVersionedMetafile.pending, updateVersionedMetafile.fulfilled, updateVersionedMetafile.rejected), effect: async (action, listenerApi) => { - if (isPending(updatedVersionedMetafile)(action)) { + if (isPending(updateVersionedMetafile)(action)) { listenerApi.dispatch(metafileUpdated({ ...action.meta.arg, loading: [...action.meta.arg.loading, 'versioned'] })); } - if (isAnyOf(updatedVersionedMetafile.fulfilled, updatedVersionedMetafile.rejected)(action)) { + if (isAnyOf(updateVersionedMetafile.fulfilled, updateVersionedMetafile.rejected)(action)) { listenerApi.dispatch(metafileUpdated({ ...action.meta.arg, loading: action.meta.arg.loading.filter(flag => flag !== 'versioned') })); } } @@ -72,7 +72,7 @@ startAppListening({ if (isFilebasedMetafile(metafile)) { const updated = await listenerApi.dispatch(updateFilebasedMetafile(metafile)).unwrap(); - await listenerApi.dispatch(updatedVersionedMetafile(metafile)); + await listenerApi.dispatch(updateVersionedMetafile(metafile)); if (isDirectoryMetafile(updated)) { const children = metafileSelectors.selectByIds(listenerApi.getState(), updated.contains); diff --git a/src/store/thunks/metafiles.spec.ts b/src/store/thunks/metafiles.spec.ts index 4b40a501b..e508b1bb6 100644 --- a/src/store/thunks/metafiles.spec.ts +++ b/src/store/thunks/metafiles.spec.ts @@ -2,7 +2,7 @@ import { file, mock, MockInstance } from '../../test-utils/mock-fs'; import { mockStore } from '../../test-utils/mock-store'; import { emptyStore } from '../../test-utils/empty-store'; import { Filetype, filetypeAdded } from '../slices/filetypes'; -import { createMetafile, fetchParentMetafile, isHydrated, updatedVersionedMetafile, updateFilebasedMetafile } from './metafiles'; +import { createMetafile, fetchParentMetafile, isHydrated, updateVersionedMetafile, updateFilebasedMetafile } from './metafiles'; import { DirectoryMetafile, FilebasedMetafile, FileMetafile, metafileAdded, MetafileTemplate } from '../slices/metafiles'; import { DateTime, Settings } from 'luxon'; import isUUID from 'validator/lib/isUUID'; @@ -252,7 +252,7 @@ describe('thunks/metafiles', () => { store.dispatch(metafileAdded(metafile)); store.dispatch(repoAdded(repo)); store.dispatch(branchAdded(branch)); - const updated = await store.dispatch(updatedVersionedMetafile(metafile)).unwrap(); + const updated = await store.dispatch(updateVersionedMetafile(metafile)).unwrap(); expect(updated).toStrictEqual( expect.objectContaining({ repo: 'c5739e69-9979-41fe-8605-5bb5ff341027', @@ -304,7 +304,7 @@ describe('thunks/metafiles', () => { store.dispatch(metafileAdded(metafile)); store.dispatch(repoAdded(repo)); store.dispatch(branchAdded(branch)); - const updated = await store.dispatch(updatedVersionedMetafile(metafile)).unwrap(); + const updated = await store.dispatch(updateVersionedMetafile(metafile)).unwrap(); expect(updated).toStrictEqual( expect.objectContaining({ repo: 'c5739e69-9979-41fe-8605-5bb5ff341027', diff --git a/src/store/thunks/metafiles.ts b/src/store/thunks/metafiles.ts index e58118858..732f2971d 100644 --- a/src/store/thunks/metafiles.ts +++ b/src/store/thunks/metafiles.ts @@ -92,7 +92,7 @@ export const updateFilebasedMetafile = createAsyncThunk( +export const updateVersionedMetafile = createAsyncThunk( 'metafiles/updateVersionedMetafile', async (metafile, thunkAPI) => { const repo = await thunkAPI.dispatch(fetchRepo({ metafile })).unwrap(); @@ -178,7 +178,7 @@ export const updateConflicted = createAsyncThunk { const metafile = await thunkAPI.dispatch(fetchMetafile(conflict.path)).unwrap(); return isFilebasedMetafile(metafile) - ? await thunkAPI.dispatch(updatedVersionedMetafile(metafile)).unwrap() + ? await thunkAPI.dispatch(updateVersionedMetafile(metafile)).unwrap() : metafile; }))); } From 1abe38152a010525cbceef18e8ebb7b316c81e4d Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Tue, 12 Jul 2022 15:49:47 -0700 Subject: [PATCH 100/121] Partial TypeScript reimplementation of binarnia module for parsing git-index files --- src/containers/binarnia/git-binarnia.ts | 165 +++++++++++++++++++++++ src/containers/binarnia/git-curry.ts | 38 ++++++ src/containers/binarnia/git-read-uint.ts | 61 +++++++++ src/containers/git-index.ts | 37 +++-- src/containers/git-worktree.ts | 6 +- src/declarations.d.ts | 2 - 6 files changed, 282 insertions(+), 27 deletions(-) create mode 100644 src/containers/binarnia/git-binarnia.ts create mode 100644 src/containers/binarnia/git-curry.ts create mode 100644 src/containers/binarnia/git-read-uint.ts diff --git a/src/containers/binarnia/git-binarnia.ts b/src/containers/binarnia/git-binarnia.ts new file mode 100644 index 000000000..92bbbdbcc --- /dev/null +++ b/src/containers/binarnia/git-binarnia.ts @@ -0,0 +1,165 @@ +// TypeScript typed version of `binarnia` +// Reference: https://github.com/coderaiser/binarnia +// Developed by: coderaiser +// Typed version by: Nicholas Nelson + +import { curry } from './git-curry'; +import { readUIntBE, readUIntLE } from './git-read-uint'; + +type Offset = number | string; +// Descriminated union for ensuring additional fields are matched to their 'type' value +type ItemBase = { name: string, size: number | string, type: string }; +type ValueItem = ItemBase & { type: 'value', offset?: Offset }; +type StringItem = ItemBase & { type: 'string', offset?: Offset }; +type IgnoreItem = ItemBase & { type: 'ignore' }; +type BitItem = ItemBase & { type: 'bit', bit: { [key: string]: string } }; +type EnumItem = ItemBase & { type: 'enum', enum: { [key: string]: string }, offset?: Offset }; +type ArrayItem = ItemBase & { type: 'array', array: string[], offset?: Offset }; +type Item = ValueItem | StringItem | IgnoreItem | BitItem | EnumItem | ArrayItem; +export type Schema = Item[]; +type Endian = 'BE' | 'LE'; + +const getReadHex = curry((endian: Endian, buffer: Buffer, offset: number, length: number): string => { + if (endian === 'LE') return readUIntLE(buffer, offset, length); + return readUIntBE(buffer, offset, length); +}); + +const parseOffset = (offset: Offset): number => { + if (typeof offset !== 'string') return offset; + return parseInt(offset, 16); +} + +const parseSize = (size: number | string, result: { [key: string]: unknown }): number => { + if (typeof size === 'number') return size; + + const name = size.replace(/[<>]/g, ''); + if (name in result) { + const lookup = result[name]; + if (typeof lookup === 'string') { + return parseInt(lookup, 16); + } + } + return 0; +} + +const parseBit = (item: BitItem, value: string) => { + const firstResult = item.bit[value]; + + if (firstResult) return [firstResult].join(''); + + const bits = Object.keys(item.bit); + + const result = []; + const numberValue = parseInt(value, 16); + + for (const bit of bits) { + const number = parseInt(bit, 16); + + if (!(number & numberValue)) continue; + + result.push(item.bit[bit]); + } + + return result.join(''); +} + +const convertCodeToChar = (result: string[], hex: string) => (i: number) => { + const number = hex.substring(i, i + 2); + const code = parseInt(number, 16); + const str = String.fromCharCode(code); + + result.push(str); +} + +const parseString = (hex: string, endian: Endian): string => { + const n = hex.length; + const result: string[] = []; + const start = '0x'.length; + const convert = convertCodeToChar(result, hex); + + if (endian === 'BE') { + for (let i = start; i < n; i += 2) { + convert(i); + } + } else { + for (let i = n - start; i > 0; i -= 2) { + convert(i); + } + } + return result.join(''); +} + +export const binarnia = (options: { + schema: Schema, + buffer: Buffer, + endian?: Endian, + offset?: Offset +}) => { + const { + schema, + buffer, + offset = '0x0', + endian = 'LE' + } = options; + + const readHex = getReadHex(endian); + + const result: { [key: string]: unknown } = {}; + + let currentOffset = parseOffset(offset); + + for (const item of schema) { + const { type, name, size } = item; + + const itemOffset = 'offset' in item ? parseOffset(item.offset) : undefined; + const parsedSize = parseSize(size, result); + const resultOffset = itemOffset || currentOffset; + + const value = readHex(buffer, resultOffset, parsedSize); + + currentOffset += parsedSize; + + if (type === 'enum') { + result[name] = item.enum[value] || value; + continue; + } + + if (type === 'array') { + result[name] = item.array[parseInt(value, 16)]; + continue; + } + + if (type === 'value') { + result[name] = value; + continue; + } + + if (type === 'string') { + result[name] = parseString(value, endian); + continue; + } + + if (type === 'bit') { + result[name] = parseBit(item, value); + continue; + } + + if (type === 'ignore') { + continue; + } + + throw Error(`0x${resultOffset.toString(16)}: ${name}: behavior of type "${type}" is not defined`); + } + + return result; +} + +const toNumber = (a: string | number) => Number(a) || 0; + +export const sizeof = (schema: Schema) => { + return schema.reduce((a, b) => a + toNumber(b.size), 0); +} + + + + diff --git a/src/containers/binarnia/git-curry.ts b/src/containers/binarnia/git-curry.ts new file mode 100644 index 000000000..b8c65d211 --- /dev/null +++ b/src/containers/binarnia/git-curry.ts @@ -0,0 +1,38 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable @typescript-eslint/no-explicit-any */ + +type PartialTuple = + TUPLE extends [infer NEXT_PARAM, ...infer REMAINING] ? + PartialTuple : + [...EXTRACTED, ...TUPLE]; + +type PartialParameters any> = PartialTuple>; + +type RemainingParameters = + EXPECTED extends [infer E1, ...infer EX] ? + PROVIDED extends [infer P1, ...infer PX] ? + RemainingParameters : EXPECTED : []; + +type CurriedFunction any> = + > + >>(...args: NEW_ARGS) => + CurriedFunctionOrReturnValue<[...PROVIDED, ...NEW_ARGS], FN>; + +type CurriedFunctionOrReturnValue any> = + RemainingParameters> extends [any, ...any[]] ? + CurriedFunction : + ReturnType; + +export const curry = < + FN extends (...args: any[]) => any, + STARTING_ARGS extends PartialParameters +>(targetFn: FN, ...existingArgs: STARTING_ARGS): CurriedFunction => { + return (...args) => { + const totalArgs = [...existingArgs, ...args]; + if (totalArgs.length >= targetFn.length) { + return targetFn(...totalArgs); + } + return curry(targetFn, ...totalArgs as PartialParameters); + }; +} \ No newline at end of file diff --git a/src/containers/binarnia/git-read-uint.ts b/src/containers/binarnia/git-read-uint.ts new file mode 100644 index 000000000..772f0f9fd --- /dev/null +++ b/src/containers/binarnia/git-read-uint.ts @@ -0,0 +1,61 @@ +// TypeScript typed version of `read-uint` +// Reference: https://github.com/coderaiser/read-uint +// Developed by: coderaiser +// Typed version by: Nicholas Nelson + +const addZero = (a: string) => { + if (a.length === 1) + return `0${a}`; + return a; +} + +const rmLeadingZeros = (a: string) => { + const n = a.length - 1; + let i = 0; + + while (a[i] === '0' && i < n) { + ++i; + } + + return a.slice(i); +} + +export const readUIntBE = (buf: Buffer, offset: number, length = 8) => { + const data = []; + let i = -1; + + while (++i < length) { + const current = buf[offset + i]?.toString(16); + + if (!i) { + data.push(current); + continue; + } + + data.push(current ? addZero(current) : current); + } + + const str = data.join(''); + const result = rmLeadingZeros(str); + return `0x${result}`; +} + +export const readUIntLE = (buf: Buffer, offset: number, length = 8) => { + const data = []; + let i = length; + + while (--i > -1) { + const current = buf[offset + i]?.toString(16); + + if (i === length - 1) { + data.push(current); + continue; + } + + data.push(current ? addZero(current) : current); + } + + const str = data.join(''); + const result = rmLeadingZeros(str); + return `0x${result}`; +} \ No newline at end of file diff --git a/src/containers/git-index.ts b/src/containers/git-index.ts index b8fa4803c..00458145e 100644 --- a/src/containers/git-index.ts +++ b/src/containers/git-index.ts @@ -3,9 +3,7 @@ // Developed by: coderaiser // Typed version by: Nicholas Nelson -// import * as binarnia from 'binarnia'; -// eslint-disable-next-line @typescript-eslint/no-var-requires -const binarnia = require('binarnia'); +import * as gitBinarnia from './binarnia/git-binarnia'; export type IndexEntry = { dev: number, @@ -36,13 +34,13 @@ type IndexHeader = { version: number, count: number } -type Index = { +export type Index = { header: IndexHeader, entries: IndexEntry[] } const endian = 'BE'; -const headerSchema = [{ +const headerSchema: gitBinarnia.Schema = [{ 'name': 'signature', 'size': 4, 'type': 'string' @@ -55,7 +53,7 @@ const headerSchema = [{ 'size': 4, 'type': 'value' }]; -const entrySchema = [{ +const entrySchema: gitBinarnia.Schema = [{ 'name': 'ctime', 'size': 8, 'type': 'value' @@ -100,8 +98,8 @@ const entrySchema = [{ 'size': '', 'type': 'string' }]; -const offset: number = binarnia.sizeof(headerSchema); -const entrySize: number = binarnia.sizeof(entrySchema); +const offset: number = gitBinarnia.sizeof(headerSchema); +const entrySize: number = gitBinarnia.sizeof(entrySchema); /** * NUL byte(s) 1 NUL byte to pad the entry to a multiple of eight bytes while keeping the name NUL-terminated. @@ -114,11 +112,9 @@ const pad = (a: number): number => { const parseHeader = (buffer: Buffer): IndexHeader => { const schema = headerSchema; - return binarnia({ - buffer, - endian, - schema, - }) + const header = gitBinarnia.binarnia({ buffer, endian, schema, }); + + return header as IndexHeader; }; const parseEntries = (index: Buffer, count: number, offset: number): IndexEntry[] => { @@ -137,22 +133,19 @@ const parseEntries = (index: Buffer, count: number, offset: number): IndexEntry[ const parseEntry = (buffer: Buffer, offset: number): IndexEntry => { const schema = entrySchema; - return binarnia({ - offset, - buffer, - endian, - schema, - }) + const result = gitBinarnia.binarnia({ offset, buffer, endian, schema, }); + + return result as IndexEntry; } +/** WARNING: git-index.parse will fail if attempting to read git index files associated with an in-progress merge (i.e. if merge conflicts exist on the branch). */ export const parse = (index: Buffer): Index => { const header = parseHeader(index); - const { count } = header; + const { count } = header; // encoded in hexidecimal const entries = parseEntries(index, count, offset); return { header, entries, } -}; - +}; \ No newline at end of file diff --git a/src/containers/git-worktree.ts b/src/containers/git-worktree.ts index c23318251..2eb48b5d8 100644 --- a/src/containers/git-worktree.ts +++ b/src/containers/git-worktree.ts @@ -8,7 +8,7 @@ import isHash from 'validator/lib/isHash'; import { isDefined, removeUndefinedProperties } from './utils'; import { clone, currentBranch, deleteBranch, getStatus } from './git-porcelain'; import { getIgnore, resolveEntry, resolveRef } from './git-plumbing'; -import { parse } from './git-index'; +import { parse, IndexEntry } from './git-index'; import { compareStats } from './io-stats'; import { getWorktreePaths } from './git-path'; import { GitStatus, SHA1, UUID } from '../store/types'; @@ -177,8 +177,8 @@ export const status = async (filepath: fs.PathLike): Promise entry.filePath === relativePath); const stats = await io.extractStats(filepath); diff --git a/src/declarations.d.ts b/src/declarations.d.ts index edfaa551d..0dd21ab6c 100644 --- a/src/declarations.d.ts +++ b/src/declarations.d.ts @@ -9,6 +9,4 @@ declare module '*.css'; declare module 'git-remote-protocol'; -declare module 'binarnia'; - declare module 'react-dnd-preview'; \ No newline at end of file From c5bae3ddbc1dbce2249b5493c8764bc516904abf Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Tue, 12 Jul 2022 15:50:42 -0700 Subject: [PATCH 101/121] Updated progress indicators for checkout --- src/containers/git-porcelain.ts | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/src/containers/git-porcelain.ts b/src/containers/git-porcelain.ts index ad8efd714..ef2ed4553 100644 --- a/src/containers/git-porcelain.ts +++ b/src/containers/git-porcelain.ts @@ -171,7 +171,7 @@ export const checkout = async ({ } else { const localBranches = await isogit.listBranches({ fs: fs, dir: dir.toString() }); if (localBranches.includes(ref)) { - if (onProgress) await onProgress({ phase: `Removing non-worktree '${ref}' branch reference: ${dir.toString()}`, loaded: 0, total: 2 }); + if (onProgress) await onProgress({ phase: `Removing non-worktree branch ref: '${ref}' in ${dir.toString()}`, loaded: 0, total: 2 }); const worktrees = await list(dir); // main working tree and any linked worktrees (non-worktree local branches are excluded) const existing = worktrees ? worktrees.find(w => w.ref === ref) : undefined; if (existing) return undefined; // target branch matches current branch in main worktree or a linked worktree; no-op operation @@ -180,15 +180,15 @@ export const checkout = async ({ if (remoteCommit[0] && currentCommit !== remoteCommit[0].oid) return undefined; // local-only commits would be permanently destroyed // removing non-worktree local branch reference before creating a new linked worktree version isogit.deleteBranch({ fs: fs, dir: dir.toString(), ref: ref }); - if (onProgress) await onProgress({ phase: `Removed non-worktree '${ref}' branch reference: ${dir.toString()}`, loaded: 1, total: 2 }); + if (onProgress) await onProgress({ phase: `Removed non-worktree branch ref: '${ref}' in ${dir.toString()}`, loaded: 1, total: 2 }); } // create a new linked worktree set to track a remote branch of the same name, or a local-only branch if there is no remote // tracking branch; this is non-destructive to any uncommitted changes in the main worktree const repo = io.extractFilename(dir); const linkedRoot = path.normalize(`${dir.toString()}/../.syn/${repo}/${ref}`); - if (onProgress) await onProgress({ phase: `Adding '${ref}' branch as linked-worktree: ${linkedRoot}`, loaded: 1, total: 2 }); + if (onProgress) await onProgress({ phase: `Adding linked-worktree: '${ref}' in ${linkedRoot}`, loaded: 1, total: 2 }); await add(dir, linkedRoot, url, ref); - if (onProgress) await onProgress({ phase: `Added '${ref}' branch as linked-worktree: ${linkedRoot}`, loaded: 2, total: 2 }); + if (onProgress) await onProgress({ phase: `Added linked-worktree: '${ref}' in ${linkedRoot}`, loaded: 2, total: 2 }); } } @@ -351,14 +351,27 @@ export const merge = async ( */ export const getStatus = async (filepath: fs.PathLike): Promise => { if (await io.isDirectory(filepath)) { - const statuses = await statusMatrix(filepath); + let statuses: [string, 0 | 1, 0 | 1 | 2, 0 | 1 | 2 | 3][] | undefined; + try { + statuses = await statusMatrix(filepath); + } catch (error) { + console.error(`Caught during statusMatrix(${filepath.toString()}):`, error); + } + const changed = statuses ? statuses .filter(row => row[1] !== row[2]) // filter for files that have been changed since the last commit .map(row => row[0]) // return the filenames only : []; // handle the case that `statusMatrix` returned undefined return (changed.length > 0) ? 'modified' : 'unmodified'; } - return matrixEntry(filepath); + + let status: GitStatus | undefined; + try { + status = await matrixEntry(filepath); + } catch (error) { + console.error(`Caught during matrixEntry(${filepath.toString()}):`, error); + } + return status; } /** From 736daaf4632a2e17ea6d012dea62554e030e42fe Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Tue, 12 Jul 2022 15:52:34 -0700 Subject: [PATCH 102/121] Remove unnecessary optional chaining for repo during abort --- src/components/Button/Abort.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/Button/Abort.tsx b/src/components/Button/Abort.tsx index e9b5e231a..a74678965 100644 --- a/src/components/Button/Abort.tsx +++ b/src/components/Button/Abort.tsx @@ -24,7 +24,7 @@ const AbortButton = ({ cardId, mode = 'light' }: { cardId: UUID, mode?: Mode }) const abort = async () => { if (repo && metafile?.branch) { - const branchRoot = await getBranchRoot(repo?.root, metafile.branch); + const branchRoot = await getBranchRoot(repo.root, metafile.branch); if (branchRoot) await abortMerge(branchRoot); } dispatch(cardRemoved(cardId)); From 10d0a224a7430bfd0fb16f600433e253c026058e Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Tue, 12 Jul 2022 21:53:03 -0700 Subject: [PATCH 103/121] Temporary troubleshooting MergeDialog --- .eslintrc.json | 6 +- src/components/MergeDialog/MergeDialog.tsx | 113 ++++++++++++++---- .../MergeDialog/TimelineButtons.tsx | 6 +- src/containers/git-worktree.ts | 2 +- 4 files changed, 96 insertions(+), 31 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index 8c4ebb630..fad6343fe 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -14,5 +14,9 @@ "plugin:testing-library/react", "plugin:react-hooks/recommended" ], - "parser": "@typescript-eslint/parser" + "parser": "@typescript-eslint/parser", + "rules": { + // named capture groups require ES2018 as either "lib" or "target", ES6 translates to ES2015 + // "prefer-named-capture-group": "error" + } } \ No newline at end of file diff --git a/src/components/MergeDialog/MergeDialog.tsx b/src/components/MergeDialog/MergeDialog.tsx index ef58fedb5..409a0930e 100644 --- a/src/components/MergeDialog/MergeDialog.tsx +++ b/src/components/MergeDialog/MergeDialog.tsx @@ -1,6 +1,6 @@ import React, { useState } from 'react'; import { Modal, modalRemoved } from '../../store/slices/modals'; -import { Status } from '../Status'; +import { LinearProgressWithLabel, Status } from '../Status'; import { UUID } from '../../store/types'; import { RootState } from '../../store/store'; import { useAppDispatch, useAppSelector } from '../../store/hooks'; @@ -8,15 +8,19 @@ import repoSelectors from '../../store/selectors/repos'; import branchSelectors from '../../store/selectors/branches'; import { createStyles, makeStyles, Theme } from '@material-ui/core/styles'; import { Dialog, Divider, Grid, Typography } from '@material-ui/core'; -import { delay, isDefined } from '../../containers/utils'; +import { isDefined } from '../../containers/utils'; import RepoSelect from '../RepoSelect'; import BranchSelect from '../BranchSelect'; import GitConfigForm from '../GitConfigForm'; -import { Timeline } from '@material-ui/lab'; -import DeltaTimeline from './DeltaTimeline'; -import MergeTimeline from './MergeTimeline'; import TimelineButtons from './TimelineButtons'; -import { checkDelta, runMerge } from './merge-actions'; +import { merge, MergeResult } from '../../containers/merges'; +import { getBranchRoot } from '../../containers/git-path'; +import { createMetafile, fetchMetafile, updateVersionedMetafile } from '../../store/thunks/metafiles'; +import { DateTime } from 'luxon'; +import { createCard } from '../../store/thunks/cards'; +import { isFilebasedMetafile } from '../../store/slices/metafiles'; +import { PathLike } from 'fs-extra'; +import { updateRepository } from '../../store/thunks/branches'; // import { build } from '../../containers/builds'; const useStyles = makeStyles((theme: Theme) => @@ -55,13 +59,10 @@ const MergeDialog = (props: Modal) => { const [repoId, setRepoId] = useState(props.options?.['repo'] ? props.options?.['repo'] as UUID : undefined); const [baseId, setBaseId] = useState(props.options?.['base'] ? props.options?.['base'] as UUID : undefined); const [compareId, setCompareId] = useState(props.options?.['compare'] ? props.options?.['compare'] as UUID : undefined); - const [deltaStatus, setDeltaStatus] = useState('Unchecked'); - const [deltaCommits, setDeltaCommits] = useState(0); - const [deltaProgress, setDeltaProgress] = useState(0); - const [deltaLog, setDeltaLog] = useState(''); - const [conflictStatus, setConflicts] = useState('Unchecked'); - const [mergeProgress, setMergeProgress] = useState(0); - const [mergeLog, setMergeLog] = useState(''); + const [status, setStatus] = useState('Unchecked'); + const [progress, setProgress] = useState<{ percent: number, message: string }>({ percent: 0, message: '' }); + + // eslint-disable-next-line @typescript-eslint/no-unused-vars const [configs, setConfigs] = useState(undefined); // const [builds, setBuilds] = useState('Unchecked'); @@ -70,13 +71,73 @@ const MergeDialog = (props: Modal) => { const compare = compareId ? branches[compareId] : undefined; const mergeable = isDefined(repo) && isDefined(base) && isDefined(compare) && `${base.scope}/${base.ref}` !== `${compare.scope}/${compare.ref}`; - const check = async () => { + const start = async () => { if (!mergeable) return; - await checkDelta(setDeltaStatus, setDeltaCommits, setDeltaProgress, setDeltaLog, repo, base, compare); - await runMerge(setConflicts, setConfigs, setMergeProgress, setMergeLog, dispatch, repo, base, compare); - if (conflictStatus === 'Failing') { - await delay(2500); - dispatch(modalRemoved(props.id)); + setStatus('Running'); + setProgress({ percent: 0, message: 'Merging' }); + + let result: MergeResult; + try { + result = await merge(repo.root, base.ref, compare.ref, (progress) => setProgress({ + percent: Math.round((1 / 3 * progress.loaded / progress.total) * 100), + message: progress.phase + })); + } catch (error) { + console.error(`Caught during merging:`, error); + return; + } + + const hasErrors = result.stderr.length > 0; + const hasMerged = result.mergeStatus.mergeCommit ? result.mergeStatus.mergeCommit : false; + console.log(result); + + let branchRoot: PathLike | undefined; + try { + console.log(`MergeDialog start => calling getBranchRoot with root: ${repo.root.toString()}, branch: ${base.ref}`); + branchRoot = await getBranchRoot(repo.root, base.ref); + } catch (error) { + console.error(`Caught during getBranchRoot:`, error); + return; + } + console.log(`MergeDialog start => returned getBranchRoot from root: ${repo.root.toString()}, branch: ${base.ref}\nbranchRoot: ${branchRoot?.toString()}\nmergeResults: `, { result }); + + if (result.mergeConflicts && result.mergeConflicts.length > 0 && branchRoot) { + await dispatch(updateRepository(repo)); + const conflicts = await Promise.all(result.mergeConflicts + .map(async filepath => { + console.log(`MergeDialog start => fetching metafile for filepath: ${filepath.toString()}`); + return dispatch(fetchMetafile(filepath)).unwrap(); + })); + console.log(`MergeDialog start => all conflicted metafiles: `, { conflicts }); + await Promise.all(conflicts.filter(isFilebasedMetafile) + .map(metafile => dispatch(updateVersionedMetafile(metafile)).unwrap())); + const manager = await dispatch(createMetafile({ + metafile: { + modified: DateTime.local().valueOf(), + name: 'Conflicts', + handler: 'ConflictManager', + filetype: 'Text', + loading: [], + repo: repo.id, + path: branchRoot, + merging: { base: base.ref, compare: compare.ref } + } + })).unwrap(); + await dispatch(createCard({ metafile: manager })); + + setStatus('Failing'); + setProgress({ + percent: 100, + message: `Resolve ${result.mergeConflicts ? result.mergeConflicts.length : 0} conflict${result.mergeConflicts?.length == 1 ? '' : 's'} and commit resolution before continuing.` + }); + } + if (hasErrors) { + setStatus('Failing'); + setProgress(prev => ({ percent: prev.percent, message: result.stderr })); + } + if (hasMerged && status != 'Failing') { + setStatus('Passing'); + setProgress({ percent: 100, message: 'Merged' }); } // await checkBuilds(setBuilds, repo, base); } @@ -127,15 +188,15 @@ const MergeDialog = (props: Modal) => { /> - - - - + {(status !== 'Unchecked') ? +
+ +
+ : null}
- +
- +
diff --git a/src/components/MergeDialog/TimelineButtons.tsx b/src/components/MergeDialog/TimelineButtons.tsx index 964690974..f88bd96df 100644 --- a/src/components/MergeDialog/TimelineButtons.tsx +++ b/src/components/MergeDialog/TimelineButtons.tsx @@ -18,10 +18,10 @@ type TimelineButtonsProp = { id: UUID, status: Status, mergeable: boolean, - check: () => Promise + start: () => Promise }; -const TimelineButtons = ({ id, status, mergeable, check }: TimelineButtonsProp) => { +const TimelineButtons = ({ id, status, mergeable, start }: TimelineButtonsProp) => { const styles = useStyles(); const dispatch = useAppDispatch(); @@ -53,7 +53,7 @@ const TimelineButtons = ({ id, status, mergeable, check }: TimelineButtonsProp) color='primary' className={styles.button} disabled={!mergeable} - onClick={check}> + onClick={start}> Merge ); diff --git a/src/containers/git-worktree.ts b/src/containers/git-worktree.ts index 2eb48b5d8..77f5f6c22 100644 --- a/src/containers/git-worktree.ts +++ b/src/containers/git-worktree.ts @@ -8,7 +8,7 @@ import isHash from 'validator/lib/isHash'; import { isDefined, removeUndefinedProperties } from './utils'; import { clone, currentBranch, deleteBranch, getStatus } from './git-porcelain'; import { getIgnore, resolveEntry, resolveRef } from './git-plumbing'; -import { parse, IndexEntry } from './git-index'; +import { parse } from './git-index'; import { compareStats } from './io-stats'; import { getWorktreePaths } from './git-path'; import { GitStatus, SHA1, UUID } from '../store/types'; From 6490b91c2e2fbed9a5ce3f65109dedeb2dec883d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 12 Jul 2022 22:00:23 -0700 Subject: [PATCH 104/121] Worktree type definition expanded to include prunable boolean field for designating linked-worktrees that can be pruned (#848) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Nelson --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index aaa439add..1d9ab3688 100644 --- a/yarn.lock +++ b/yarn.lock @@ -6967,9 +6967,9 @@ mkdirp@^1.0.3, mkdirp@^1.0.4: integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== moment@^2.15.2: - version "2.29.2" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.2.tgz#00910c60b20843bcba52d37d58c628b47b1f20e4" - integrity sha512-UgzG4rvxYpN15jgCmVJwac49h9ly9NurikMWGPdVxm8GZD6XjkKPxDTjQQ43gtGgnV3X0cAyWDdP2Wexoquifg== + version "2.29.4" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.4.tgz#3dbe052889fe7c1b2ed966fcb3a77328964ef108" + integrity sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w== ms@2.0.0: version "2.0.0" From d4ef60c81db858a93dd9eeba173f7884038ff5ce Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Tue, 19 Jul 2022 12:45:52 -0700 Subject: [PATCH 105/121] Shim for git-worktree.status and git-worktree.statusMatrix to fix #838 --- src/containers/git-worktree-status-shim.ts | 46 ++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 src/containers/git-worktree-status-shim.ts diff --git a/src/containers/git-worktree-status-shim.ts b/src/containers/git-worktree-status-shim.ts new file mode 100644 index 000000000..a74a28f40 --- /dev/null +++ b/src/containers/git-worktree-status-shim.ts @@ -0,0 +1,46 @@ +import * as fs from 'fs-extra'; +import * as path from 'path'; +import { GitStatus } from '../store/types'; +import { getWorktreePaths } from './git-path'; +import { codeToStatus } from './git-plumbing'; +import { execute } from './utils'; + +export const statusMatrix = async (dirpath: fs.PathLike): Promise<{ filepath: string; status: GitStatus | undefined }[] | undefined> => { + const { dir, worktreeDir, worktreeLink } = await getWorktreePaths(dirpath); + if (!worktreeDir || !worktreeLink) return undefined; // filepath is not part of a linked worktree, must use `git-plumbing.matrixEntry` for main worktree + if (!dir) return undefined; // not under version control + + const statusCodeRaw = await execute(`git -C ${worktreeDir.toString()} status --porcelain`, dir.toString()); + const diffCodeRaw = await execute(`git -C ${worktreeDir.toString()} diff-files --name-status`, dir.toString()); + + const statusFilenamePattern = /(?<=[A-Z?! ]{2} ).*/gm; + const statusFilenames = statusCodeRaw.stdout.match(statusFilenamePattern); + + return statusFilenames?.map(filename => { + const relativePath = path.relative(worktreeDir.toString(), filename); + + const statusCodePattern = new RegExp('^[A-Z?! ]{2}(?= ' + relativePath.replace(/\./g, '\\.') + ')', 'gm'); + const statusCode = statusCodePattern.exec(statusCodeRaw.stdout)?.[0]; // Matches all status codes (always length 2) + const diffCodePattern = new RegExp('^[A-Z](?=\\t' + relativePath.replace(/\./g, '\\.') + ')', 'gm'); + const diffCode = diffCodePattern.exec(diffCodeRaw.stdout)?.[0]; // Matches all git-diff-files codes (always alphabetic and length 1) + + return { filepath: relativePath, status: codeToStatus(statusCode, diffCode) }; + }); +} + +export const status = async (filepath: fs.PathLike): Promise => { + const { dir, worktreeDir, worktreeLink } = await getWorktreePaths(filepath); + if (!worktreeDir || !worktreeLink) return undefined; // filepath is not part of a linked worktree, must use `git-plumbing.matrixEntry` for main worktree + if (!dir) return undefined; // not under version control + + const relativePath = path.relative(worktreeDir.toString(), filepath.toString()); + const statusCodeRaw = await execute(`git -C ${worktreeDir.toString()} status --porcelain --ignored ${relativePath}`, dir.toString()); + const diffCodeRaw = await execute(`git -C ${worktreeDir.toString()} diff-files --name-status`, dir.toString()); + + const statusCodePattern = new RegExp('^[A-Z?! ]{2}(?= ' + relativePath.replace(/\./g, '\\.') + ')', 'gm'); + const statusCode = statusCodePattern.exec(statusCodeRaw.stdout)?.[0]; // Matches all status codes (always length 2) + const diffCodePattern = new RegExp('^[A-Z](?=\\t' + relativePath.replace(/\./g, '\\.') + ')', 'gm'); + const diffCode = diffCodePattern.exec(diffCodeRaw.stdout)?.[0]; // Matches all git-diff-files codes (always alphabetic and length 1) + + return codeToStatus(statusCode, diffCode); +} \ No newline at end of file From 1ba33fba416f964f795606268c6d5af1efb94a06 Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Tue, 19 Jul 2022 12:47:07 -0700 Subject: [PATCH 106/121] GitStatus type expanded to include 'unmerged' status --- src/store/types.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/store/types.ts b/src/store/types.ts index b4170871d..7b552e9e3 100644 --- a/src/store/types.ts +++ b/src/store/types.ts @@ -30,9 +30,10 @@ export type Timestamp = ReturnType; * | `"*absent"` | file not present in working dir or HEAD commit, but present in the index | * | `"*undeleted"` | file was deleted from the index, but is still in the working dir | * | `"*undeletemodified"` | file was deleted from the index, but is present with modifications in the working dir | + * | `"unmerged"` | file has unmerged changes from an unresolved merge conflict | */ export type GitStatus = 'modified' | 'ignored' | 'unmodified' | '*modified' | '*deleted' | '*added' - | 'absent' | 'deleted' | 'added' | '*unmodified' | '*absent' | '*undeleted' | '*undeletemodified'; + | 'absent' | 'deleted' | 'added' | '*unmodified' | '*absent' | '*undeleted' | '*undeletemodified' | 'unmerged'; /** * | status | description | * | --------------------- | ------------------------------------------------------------------------------------- | From efad76f4bc855c0505a75dd19fb38c33a4273dd8 Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Tue, 19 Jul 2022 12:50:47 -0700 Subject: [PATCH 107/121] checkFilepath handles linked worktree pathing --- src/containers/merges.ts | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/containers/merges.ts b/src/containers/merges.ts index 31efaa943..b41e1010c 100644 --- a/src/containers/merges.ts +++ b/src/containers/merges.ts @@ -121,11 +121,18 @@ export const merge = async (dir: fs.PathLike, base: string, compare: string, onP } export const checkFilepath = async (filepath: fs.PathLike, ignoreManager?: Ignore): Promise => { - const { dir } = await getWorktreePaths(filepath); - if (dir && !(await io.isDirectory(filepath))) { + const { dir, worktreeDir } = await getWorktreePaths(filepath); + + const isDir = await io.isDirectory(filepath); + if (dir && !isDir) { const conflictPattern = /<<<<<<<[^]+?=======[^]+?>>>>>>>/gm; - const ignore = ignoreManager ? ignoreManager : (await getIgnore(dir, true)); - if (ignore.ignores(path.relative(dir.toString(), filepath.toString()))) return undefined; + const ignore = ignoreManager + ? ignoreManager + : (worktreeDir ? (await getIgnore(worktreeDir, true)) : (await getIgnore(dir, true))); + const relativePath = worktreeDir + ? path.relative(worktreeDir.toString(), filepath.toString()) + : path.relative(dir.toString(), filepath.toString()); + if (ignore.ignores(relativePath)) return undefined; const content = await io.readFileAsync(filepath, { encoding: 'utf-8' }); const matches = Array.from(content.matchAll(conflictPattern)); const conflicts: number[] = removeUndefined(matches.map(m => isDefined(m.index) ? m.index : undefined)); @@ -216,6 +223,7 @@ export const resolveMerge = async (dir: fs.PathLike, compareBranch: string): Pro * name. */ export const resolveConflicts = async (root: fs.PathLike): Promise<{ base: string | undefined, compare: string }> => { + console.log(`resolveConflicts => root: ${root.toString()}`); const branchPattern = /(?<=Merge( remote-tracking)? branch(es)? .*)('.+?')+/gm; // Match linked worktree and main worktree patterns (shown above) const { gitdir, worktreeLink } = await getWorktreePaths(root); const mergeMsg = worktreeLink ? await io.readFileAsync(path.join(worktreeLink.toString(), 'MERGE_MSG'), { encoding: 'utf-8' }) From a411f23d739fe93d29beda67c851309f51937ba2 Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Tue, 19 Jul 2022 12:54:52 -0700 Subject: [PATCH 108/121] promiseExec consolidated into utils.ts for ease of use --- src/containers/utils.ts | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/src/containers/utils.ts b/src/containers/utils.ts index bda484098..4f48bb59c 100644 --- a/src/containers/utils.ts +++ b/src/containers/utils.ts @@ -1,4 +1,7 @@ +import util from 'util'; +import { exec } from 'child_process'; import { flattenObject } from './flatten'; +const promiseExec = util.promisify(exec); /** Requires all properties in U to override types in the intersection of T & U. * Reused from: https://dev.to/vborodulin/ts-how-to-override-properties-with-type-intersection-554l @@ -268,4 +271,38 @@ export const getRandomInt = (min: number, max: number): number => { * @param ms The number of milliseconds to wait before callback returns. * @returns A Promise object containing a no-op callback. */ -export const delay = (ms: number) => new Promise(resolve => setTimeout(resolve, ms)); \ No newline at end of file +export const delay = (ms: number) => new Promise(resolve => setTimeout(resolve, ms)); + +type ExecError = { + killed: boolean, + code: number, + signal: string | null, + cmd: string, + stdout: string, + stderr: string +}; + +/** + * Spawns a shell then executes the command within that shell, buffering any generated output. The command string passed to the exec + * function is processed directly by the shell and special characters (vary based on shell) need to be dealt with accordingly. + * + * WARNING: Never pass unsanitized user input to this function. Any input containing shell metacharacters may be used to trigger + * arbitrary command execution. + * @param command The command to run, with space-separated arguments. + * @param cwd The current working directory that the command should be executed in. + * @returns A Promise object containing the `stdout` and `stderr` strings with content based on the output of the command. + */ +export const execute = async (command: string, cwd?: string | URL | undefined) => { + let execResult: { stdout: string, stderr: string } = { stdout: '', stderr: '' }; + let execError: ExecError | undefined; + try { + execResult = await promiseExec(command, { cwd }); + } catch (error) { + execError = error as ExecError; + execResult = { + stdout: execError.stdout, + stderr: execError.stderr + }; + } + return execResult; +} \ No newline at end of file From 65c7fe6994c8c91774e7d10587e5657adaf8e363 Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Tue, 19 Jul 2022 12:55:19 -0700 Subject: [PATCH 109/121] Shims for status and statusMatrix integrated into normal getStatus workflow --- src/containers/git-plumbing.ts | 32 +++++++++++++++++++++++++++- src/containers/git-porcelain.ts | 37 ++++++++++++++++----------------- 2 files changed, 49 insertions(+), 20 deletions(-) diff --git a/src/containers/git-plumbing.ts b/src/containers/git-plumbing.ts index 31a58f08f..ba4e42786 100644 --- a/src/containers/git-plumbing.ts +++ b/src/containers/git-plumbing.ts @@ -17,6 +17,7 @@ import { unstage } from './unstage-shim'; import { getRoot, getWorktreePaths } from './git-path'; import { Repository } from '../store/slices/repos'; import { GitStatus } from '../store/types'; +import { status as shimStatus } from './git-worktree-status-shim'; export type BranchDiffResult = { path: string, type: 'equal' | 'modified' | 'added' | 'removed' }; export type MatrixStatus = [0 | 1, 0 | 1 | 2, 0 | 1 | 2 | 3]; @@ -337,7 +338,8 @@ export const matrixEntry = async (filepath: fs.PathLike): Promise): GitStatus | undefined => { // [1] for HEAD, [2] for WORKDIR, [3] for STAGE trees const status: [number, number, number] = entry.matrixEntry ? [entry.matrixEntry[1], entry.matrixEntry[2], entry.matrixEntry[3]] @@ -411,6 +421,26 @@ export const matrixToStatus = (entry: AtLeastOne): GitStatus return undefined; } +/** + * statusCode: https://git-scm.com/docs/git-status#_short_format + * diffCode: https://git-scm.com/docs/git-diff-files#Documentation/git-diff-files.txt---diff-filterACDMRTUXB82308203 + * @param statusCode + * @param diffCode + * @returns + */ +export const codeToStatus = (statusCode: string | undefined, diffCode: string | undefined): GitStatus | undefined => { + // statusCode for git-status codes, diffCode for git-diff-files codes + if (!statusCode) return 'unmodified'; + if (statusCode == '!!') return 'ignored'; // git-ignore rules exclude this filepath + if (statusCode == '??') return 'absent'; // untracked path; not present in index or working tree + if (/(DD|AA|.U|U.)/.test(statusCode)) return 'unmerged'; // unmerged; merge conflict has occurred and has not yet been resolved + if (/M(?=[ MTD])/.test(statusCode)) return diffCode ? 'modified' : '*modified'; + if (/A(?=[ MTD])/.test(statusCode)) return diffCode ? 'added' : '*added'; + if (/D(?=[ MTD])/.test(statusCode)) return diffCode ? 'deleted' : '*deleted'; + console.log(`Error: Unable to convert '${statusCode}' status code`); + return undefined; +} + /** * Discard uncommitted changes to a file and revert to the version at the head of the related branch. The resulting content can be written * to the underlying file, but any metafiles will also need to be updated before those changes are reflected in Synectic. If the change was diff --git a/src/containers/git-porcelain.ts b/src/containers/git-porcelain.ts index ef2ed4553..08b788eb8 100644 --- a/src/containers/git-porcelain.ts +++ b/src/containers/git-porcelain.ts @@ -9,9 +9,10 @@ import getGitConfigPath from 'git-config-path'; import * as io from './io'; import { matrixEntry, matrixToStatus, resolveRef, statusMatrix } from './git-plumbing'; import { isDefined, removeUndefinedProperties } from './utils'; -import { getWorktreePaths } from './git-path'; +import { getRoot, getWorktreePaths } from './git-path'; import { GitStatus } from '../store/types'; import { add, list } from './git-worktree'; +import { statusMatrix as shimStatusMatrix } from './git-worktree-status-shim'; export type GitConfig = { scope: 'none' } | { scope: 'local' | 'global', value: string, origin?: string }; @@ -351,27 +352,25 @@ export const merge = async ( */ export const getStatus = async (filepath: fs.PathLike): Promise => { if (await io.isDirectory(filepath)) { - let statuses: [string, 0 | 1, 0 | 1 | 2, 0 | 1 | 2 | 3][] | undefined; - try { - statuses = await statusMatrix(filepath); - } catch (error) { - console.error(`Caught during statusMatrix(${filepath.toString()}):`, error); - } + const root = await getRoot(filepath); + const { worktreeDir } = await getWorktreePaths(filepath); + if (!root) return undefined; // not under version control - const changed = statuses ? statuses - .filter(row => row[1] !== row[2]) // filter for files that have been changed since the last commit - .map(row => row[0]) // return the filenames only - : []; // handle the case that `statusMatrix` returned undefined - return (changed.length > 0) ? 'modified' : 'unmodified'; + if (worktreeDir) { + const statuses = await shimStatusMatrix(filepath); + const changed = statuses ? statuses.filter(row => row.status !== 'unmodified') : []; + return (changed.length > 0) ? 'modified' : 'unmodified'; + } else { + const statuses = await statusMatrix(filepath); + const changed = statuses ? statuses + .filter(row => row[1] !== row[2]) // filter for files that have been changed since the last commit + .map(row => row[0]) // return the filenames only + : []; // handle the case that `statusMatrix` returned undefined + return (changed.length > 0) ? 'modified' : 'unmodified'; + } } - let status: GitStatus | undefined; - try { - status = await matrixEntry(filepath); - } catch (error) { - console.error(`Caught during matrixEntry(${filepath.toString()}):`, error); - } - return status; + return await matrixEntry(filepath); } /** From 1929b5e1f3b32f7109132c58a1b2fbdfa7ec640b Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Tue, 19 Jul 2022 13:37:45 -0700 Subject: [PATCH 110/121] merges/abortMerge and merges/resolveMerge correctly differentiate between main worktree and linked worktree branches --- src/containers/merges.ts | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/containers/merges.ts b/src/containers/merges.ts index b41e1010c..53a358261 100644 --- a/src/containers/merges.ts +++ b/src/containers/merges.ts @@ -9,7 +9,7 @@ import { getBranchRoot, getWorktreePaths } from './git-path'; import { checkout, currentBranch, getConfig } from './git-porcelain'; import { VersionedMetafile } from '../store/slices/metafiles'; import { Ignore } from 'ignore'; -import { isDefined, removeUndefined } from './utils'; +import { execute, isDefined, removeUndefined } from './utils'; const promiseExec = util.promisify(exec); @@ -182,22 +182,25 @@ export const checkProject = async (dir: fs.PathLike, branch: string): Promise => { const worktree = await getWorktreePaths(dir); - const stats = worktree.gitdir ? await io.extractStats(path.join(worktree.gitdir?.toString(), 'MERGE_HEAD')) : undefined; + const root = worktree.worktreeDir ? worktree.worktreeDir : worktree.dir; + const gitdir = worktree.worktreeDir ? worktree.worktreeLink : worktree.gitdir; + const merging = gitdir ? await io.extractStats(path.join(gitdir.toString(), 'MERGE_HEAD')) : undefined; - if (stats) { - try { - await promiseExec(`git merge --abort`, { cwd: dir.toString() }); - } catch (error) { - console.error(error); - } + if (root && merging) { + const result = execute(`git merge --abort`, root.toString()); + console.log({ result }); } } export const resolveMerge = async (dir: fs.PathLike, compareBranch: string): Promise => { - try { - await promiseExec(`git commit -m "Merge branch '${compareBranch}'"`, { cwd: dir.toString() }); - } catch (error) { - console.error(error); + const worktree = await getWorktreePaths(dir); + const root = worktree.worktreeDir ? worktree.worktreeDir : worktree.dir; + const gitdir = worktree.worktreeDir ? worktree.worktreeLink : worktree.gitdir; + const merging = gitdir ? await io.extractStats(path.join(gitdir.toString(), 'MERGE_HEAD')) : undefined; + + if (root && merging) { + const result = execute(`git commit -m "Merge branch '${compareBranch}'"`, root.toString()); + console.log({ result }); } } From a22ed460e56771ac6f15620118e8ff23d05fd37b Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Tue, 19 Jul 2022 13:38:19 -0700 Subject: [PATCH 111/121] Abort also updates previously conflicting metafiles after aborting a merge --- src/components/Button/Abort.tsx | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/components/Button/Abort.tsx b/src/components/Button/Abort.tsx index a74678965..bcceda9b8 100644 --- a/src/components/Button/Abort.tsx +++ b/src/components/Button/Abort.tsx @@ -4,7 +4,7 @@ import { ClearAll } from '@material-ui/icons'; import cardSelectors from '../../store/selectors/cards'; import metafileSelectors from '../../store/selectors/metafiles'; import repoSelectors from '../../store/selectors/repos'; -import { abortMerge } from '../../containers/merges'; +import { abortMerge, checkProject } from '../../containers/merges'; import { isConflictManagerMetafile } from '../ConflictManager/ConflictManager'; import { Mode, useIconButtonStyle } from './useStyledIconButton'; import { RootState } from '../../store/store'; @@ -12,6 +12,7 @@ import { useAppDispatch, useAppSelector } from '../../store/hooks'; import { cardRemoved } from '../../store/slices/cards'; import { UUID } from '../../store/types'; import { getBranchRoot } from '../../containers/git-path'; +import { updateConflicted } from '../../store/thunks/metafiles'; const AbortButton = ({ cardId, mode = 'light' }: { cardId: UUID, mode?: Mode }) => { const card = useAppSelector((state: RootState) => cardSelectors.selectById(state, cardId)); @@ -23,9 +24,13 @@ const AbortButton = ({ cardId, mode = 'light' }: { cardId: UUID, mode?: Mode }) const isAbortable = metafile && isConflictManagerMetafile(metafile) && repo; const abort = async () => { - if (repo && metafile?.branch) { - const branchRoot = await getBranchRoot(repo.root, metafile.branch); - if (branchRoot) await abortMerge(branchRoot); + if (repo && metafile?.merging?.base) { + const branchRoot = await getBranchRoot(repo.root, metafile.merging.base); + if (branchRoot) { + const conflicted = await checkProject(branchRoot, metafile.merging.base); + await abortMerge(branchRoot); + await dispatch(updateConflicted(conflicted)); + } } dispatch(cardRemoved(cardId)); } From 454bb5fee8132aaf084f051f8c89461877b666a6 Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Tue, 19 Jul 2022 14:37:24 -0700 Subject: [PATCH 112/121] Remove 'git -C ' commands in favor or using optional cmd parameter on utils.execute() --- src/containers/git-worktree-status-shim.ts | 8 ++++---- src/containers/merges.ts | 24 +++++++++------------- 2 files changed, 14 insertions(+), 18 deletions(-) diff --git a/src/containers/git-worktree-status-shim.ts b/src/containers/git-worktree-status-shim.ts index a74a28f40..ff7f6a1c0 100644 --- a/src/containers/git-worktree-status-shim.ts +++ b/src/containers/git-worktree-status-shim.ts @@ -10,8 +10,8 @@ export const statusMatrix = async (dirpath: fs.PathLike): Promise<{ filepath: st if (!worktreeDir || !worktreeLink) return undefined; // filepath is not part of a linked worktree, must use `git-plumbing.matrixEntry` for main worktree if (!dir) return undefined; // not under version control - const statusCodeRaw = await execute(`git -C ${worktreeDir.toString()} status --porcelain`, dir.toString()); - const diffCodeRaw = await execute(`git -C ${worktreeDir.toString()} diff-files --name-status`, dir.toString()); + const statusCodeRaw = await execute(`git status --porcelain`, worktreeDir.toString()); + const diffCodeRaw = await execute(`git diff-files --name-status`, worktreeDir.toString()); const statusFilenamePattern = /(?<=[A-Z?! ]{2} ).*/gm; const statusFilenames = statusCodeRaw.stdout.match(statusFilenamePattern); @@ -34,8 +34,8 @@ export const status = async (filepath: fs.PathLike): Promise:` syntax, with a `:` positive lookbehind. const conflictedFiles = new Map(); - checkResults.stdout.match(conflictPattern)?.forEach(match => { + result.stdout.match(conflictPattern)?.forEach(match => { const [filename, position] = match.split(':').slice(0, 2) as [string, number]; const filepath = path.join(branchRoot.toString(), filename); const existing = conflictedFiles.get(filepath); @@ -187,8 +181,9 @@ export const abortMerge = async (dir: fs.PathLike): Promise => { const merging = gitdir ? await io.extractStats(path.join(gitdir.toString(), 'MERGE_HEAD')) : undefined; if (root && merging) { - const result = execute(`git merge --abort`, root.toString()); - console.log({ result }); + const result = await execute(`git merge --abort`, root.toString()); + if (result.stderr.length > 0) console.log(`Abort failed: ${root.toString()}`); + else console.log(`Abort succeeded: ${root.toString()}`); } } @@ -199,8 +194,9 @@ export const resolveMerge = async (dir: fs.PathLike, compareBranch: string): Pro const merging = gitdir ? await io.extractStats(path.join(gitdir.toString(), 'MERGE_HEAD')) : undefined; if (root && merging) { - const result = execute(`git commit -m "Merge branch '${compareBranch}'"`, root.toString()); - console.log({ result }); + const result = await execute(`git commit -m "Merge branch '${compareBranch}'"`, root.toString()); + if (result.stderr.length > 0) console.log(`Resolve failed: ${root.toString()}`); + else console.log(`Resolve succeeded: ${root.toString()}`); } } From 869433042bf97490de745914bc411f56fcb81858 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Jul 2022 14:43:06 -0700 Subject: [PATCH 113/121] Bump react-flow-renderer from 10.3.8 to 10.3.10 (#863) Bumps [react-flow-renderer](https://github.com/wbkd/react-flow) from 10.3.8 to 10.3.10. - [Release notes](https://github.com/wbkd/react-flow/releases) - [Changelog](https://github.com/wbkd/react-flow/blob/main/CHANGELOG.md) - [Commits](https://github.com/wbkd/react-flow/compare/10.3.8...10.3.10) --- updated-dependencies: - dependency-name: react-flow-renderer dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Nelson --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index cf5c427a2..2b6b652cc 100644 --- a/package.json +++ b/package.json @@ -122,7 +122,7 @@ "react-dnd-html5-backend": "^15.1.2", "react-dnd-preview": "^6.0.2", "react-dom": "^17.0.2", - "react-flow-renderer": "^10.3.8", + "react-flow-renderer": "^10.3.10", "react-redux": "^7.2.6", "react-transition-group": "^4.4.2", "redux": "^4.2.0", diff --git a/yarn.lock b/yarn.lock index 1d9ab3688..e53d50403 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8024,10 +8024,10 @@ react-error-boundary@^3.1.0: dependencies: "@babel/runtime" "^7.12.5" -react-flow-renderer@^10.3.8: - version "10.3.8" - resolved "https://registry.yarnpkg.com/react-flow-renderer/-/react-flow-renderer-10.3.8.tgz#23525887ef707e6cd540777a4d2329e91311856d" - integrity sha512-owtDCSK6rATiZipew2OYSPPu2sd0VM/QCydN9S+ivrMVwR0vNSSwtsWKqJSq8DL5wXtIEed5gPi4yJqXJA7tLQ== +react-flow-renderer@^10.3.10: + version "10.3.10" + resolved "https://registry.yarnpkg.com/react-flow-renderer/-/react-flow-renderer-10.3.10.tgz#9257e129d33e106e91662e087b99eb2e3f66c974" + integrity sha512-Qf4YVGPaOwv8xjG/1ouFmZqSeIcu6Os9UT+lHaTP0XQcPetQqnuNQJgfrUA2i3qUXXoDmbUa/fJji7q+haqW+g== dependencies: "@babel/runtime" "^7.18.0" classcat "^5.0.3" From 13809edf316637080db42258a752d2dc2017333f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Jul 2022 14:46:27 -0700 Subject: [PATCH 114/121] Bump @typescript-eslint/eslint-plugin from 5.30.5 to 5.30.6 (#862) Bumps [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) from 5.30.5 to 5.30.6. - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.30.6/packages/eslint-plugin) --- updated-dependencies: - dependency-name: "@typescript-eslint/eslint-plugin" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Nelson --- package.json | 2 +- yarn.lock | 74 ++++++++++++++++++++++++++++++++++++++-------------- 2 files changed, 55 insertions(+), 21 deletions(-) diff --git a/package.json b/package.json index 2b6b652cc..71b002a69 100644 --- a/package.json +++ b/package.json @@ -66,7 +66,7 @@ "@types/uuid": "^8.3.4", "@types/valid-url": "^1.0.3", "@types/validator": "^13.7.4", - "@typescript-eslint/eslint-plugin": "^5.30.5", + "@typescript-eslint/eslint-plugin": "^5.30.6", "@typescript-eslint/parser": "^5.30.5", "@vercel/webpack-asset-relocator-loader": "1.7.2", "casual": "^1.6.2", diff --git a/yarn.lock b/yarn.lock index e53d50403..e41714b54 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1866,14 +1866,14 @@ dependencies: "@types/node" "*" -"@typescript-eslint/eslint-plugin@^5.30.5": - version "5.30.5" - resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.30.5.tgz#e9a0afd6eb3b1d663db91cf1e7bc7584d394503d" - integrity sha512-lftkqRoBvc28VFXEoRgyZuztyVUQ04JvUnATSPtIRFAccbXTWL6DEtXGYMcbg998kXw1NLUJm7rTQ9eUt+q6Ig== - dependencies: - "@typescript-eslint/scope-manager" "5.30.5" - "@typescript-eslint/type-utils" "5.30.5" - "@typescript-eslint/utils" "5.30.5" +"@typescript-eslint/eslint-plugin@^5.30.6": + version "5.30.6" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.30.6.tgz#9c6017b6c1d04894141b4a87816388967f64c359" + integrity sha512-J4zYMIhgrx4MgnZrSDD7sEnQp7FmhKNOaqaOpaoQ/SfdMfRB/0yvK74hTnvH+VQxndZynqs5/Hn4t+2/j9bADg== + dependencies: + "@typescript-eslint/scope-manager" "5.30.6" + "@typescript-eslint/type-utils" "5.30.6" + "@typescript-eslint/utils" "5.30.6" debug "^4.3.4" functional-red-black-tree "^1.0.1" ignore "^5.2.0" @@ -1899,12 +1899,20 @@ "@typescript-eslint/types" "5.30.5" "@typescript-eslint/visitor-keys" "5.30.5" -"@typescript-eslint/type-utils@5.30.5": - version "5.30.5" - resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.30.5.tgz#7a9656f360b4b1daea635c4621dab053d08bf8a9" - integrity sha512-k9+ejlv1GgwN1nN7XjVtyCgE0BTzhzT1YsQF0rv4Vfj2U9xnslBgMYYvcEYAFVdvhuEscELJsB7lDkN7WusErw== +"@typescript-eslint/scope-manager@5.30.6": + version "5.30.6" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.30.6.tgz#ce1b49ff5ce47f55518d63dbe8fc9181ddbd1a33" + integrity sha512-Hkq5PhLgtVoW1obkqYH0i4iELctEKixkhWLPTYs55doGUKCASvkjOXOd/pisVeLdO24ZX9D6yymJ/twqpJiG3g== + dependencies: + "@typescript-eslint/types" "5.30.6" + "@typescript-eslint/visitor-keys" "5.30.6" + +"@typescript-eslint/type-utils@5.30.6": + version "5.30.6" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.30.6.tgz#a64aa9acbe609ab77f09f53434a6af2b9685f3af" + integrity sha512-GFVVzs2j0QPpM+NTDMXtNmJKlF842lkZKDSanIxf+ArJsGeZUIaeT4jGg+gAgHt7AcQSFwW7htzF/rbAh2jaVA== dependencies: - "@typescript-eslint/utils" "5.30.5" + "@typescript-eslint/utils" "5.30.6" debug "^4.3.4" tsutils "^3.21.0" @@ -1913,6 +1921,11 @@ resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.30.5.tgz#36a0c05a72af3623cdf9ee8b81ea743b7de75a98" integrity sha512-kZ80w/M2AvsbRvOr3PjaNh6qEW1LFqs2pLdo2s5R38B2HYXG8Z0PP48/4+j1QHJFL3ssHIbJ4odPRS8PlHrFfw== +"@typescript-eslint/types@5.30.6": + version "5.30.6" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.30.6.tgz#86369d0a7af8c67024115ac1da3e8fb2d38907e1" + integrity sha512-HdnP8HioL1F7CwVmT4RaaMX57RrfqsOMclZc08wGMiDYJBsLGBM7JwXM4cZJmbWLzIR/pXg1kkrBBVpxTOwfUg== + "@typescript-eslint/typescript-estree@5.30.5": version "5.30.5" resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.30.5.tgz#c520e4eba20551c4ec76af8d344a42eb6c9767bb" @@ -1926,15 +1939,28 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/utils@5.30.5", "@typescript-eslint/utils@^5.13.0": - version "5.30.5" - resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.30.5.tgz#3999cbd06baad31b9e60d084f20714d1b2776765" - integrity sha512-o4SSUH9IkuA7AYIfAvatldovurqTAHrfzPApOZvdUq01hHojZojCFXx06D/aFpKCgWbMPRdJBWAC3sWp3itwTA== +"@typescript-eslint/typescript-estree@5.30.6": + version "5.30.6" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.30.6.tgz#a84a0d6a486f9b54042da1de3d671a2c9f14484e" + integrity sha512-Z7TgPoeYUm06smfEfYF0RBkpF8csMyVnqQbLYiGgmUSTaSXTP57bt8f0UFXstbGxKIreTwQCujtaH0LY9w9B+A== + dependencies: + "@typescript-eslint/types" "5.30.6" + "@typescript-eslint/visitor-keys" "5.30.6" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/utils@5.30.6", "@typescript-eslint/utils@^5.13.0": + version "5.30.6" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.30.6.tgz#1de2da14f678e7d187daa6f2e4cdb558ed0609dc" + integrity sha512-xFBLc/esUbLOJLk9jKv0E9gD/OH966M40aY9jJ8GiqpSkP2xOV908cokJqqhVd85WoIvHVHYXxSFE4cCSDzVvA== dependencies: "@types/json-schema" "^7.0.9" - "@typescript-eslint/scope-manager" "5.30.5" - "@typescript-eslint/types" "5.30.5" - "@typescript-eslint/typescript-estree" "5.30.5" + "@typescript-eslint/scope-manager" "5.30.6" + "@typescript-eslint/types" "5.30.6" + "@typescript-eslint/typescript-estree" "5.30.6" eslint-scope "^5.1.1" eslint-utils "^3.0.0" @@ -1946,6 +1972,14 @@ "@typescript-eslint/types" "5.30.5" eslint-visitor-keys "^3.3.0" +"@typescript-eslint/visitor-keys@5.30.6": + version "5.30.6" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.30.6.tgz#94dd10bb481c8083378d24de1742a14b38a2678c" + integrity sha512-41OiCjdL2mCaSDi2SvYbzFLlqqlm5v1ZW9Ym55wXKL/Rx6OOB1IbuFGo71Fj6Xy90gJDFTlgOS+vbmtGHPTQQA== + dependencies: + "@typescript-eslint/types" "5.30.6" + eslint-visitor-keys "^3.3.0" + "@vercel/webpack-asset-relocator-loader@1.7.2": version "1.7.2" resolved "https://registry.yarnpkg.com/@vercel/webpack-asset-relocator-loader/-/webpack-asset-relocator-loader-1.7.2.tgz#0210abd8d53b2799d53156dd0c18a4ef4e3b51cb" From 3c830e618dbc714f43c6579a013dc5a727372bac Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Jul 2022 14:50:51 -0700 Subject: [PATCH 115/121] Bump @testing-library/user-event from 14.2.1 to 14.2.5 (#861) Bumps [@testing-library/user-event](https://github.com/testing-library/user-event) from 14.2.1 to 14.2.5. - [Release notes](https://github.com/testing-library/user-event/releases) - [Changelog](https://github.com/testing-library/user-event/blob/main/CHANGELOG.md) - [Commits](https://github.com/testing-library/user-event/compare/v14.2.1...v14.2.5) --- updated-dependencies: - dependency-name: "@testing-library/user-event" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Nelson --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 71b002a69..eef16ce66 100644 --- a/package.json +++ b/package.json @@ -46,7 +46,7 @@ "@testing-library/jest-dom": "^5.16.4", "@testing-library/react": "^12.1.5", "@testing-library/react-hooks": "^8.0.1", - "@testing-library/user-event": "^14.2.1", + "@testing-library/user-event": "^14.2.5", "@types/dagre": "^0.7.47", "@types/diff": "^5.0.2", "@types/fs-extra": "^9.0.13", diff --git a/yarn.lock b/yarn.lock index e41714b54..50cb7b92f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1400,10 +1400,10 @@ "@testing-library/dom" "^8.0.0" "@types/react-dom" "<18.0.0" -"@testing-library/user-event@^14.2.1": - version "14.2.1" - resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-14.2.1.tgz#8c5ff2d004544bb2220e1d864f7267fe7eb6c556" - integrity sha512-HOr1QiODrq+0j9lKU5i10y9TbhxMBMRMGimNx10asdmau9cb8Xb1Vyg0GvTwyIL2ziQyh2kAloOtAQFBQVuecA== +"@testing-library/user-event@^14.2.5": + version "14.2.5" + resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-14.2.5.tgz#a27a16ee7f915c22c62b9c065d743248ee79dcb6" + integrity sha512-xcSw47H8JidxQPAqPlHp4l51EYJx+2TlHgYBW9i+noNlgUMMrhgtefnrWcpZ1k9ep6SMhJVyx3N7F4tIKTuJ9w== "@tootallnate/once@1": version "1.1.2" From a4a1233ebfbfa28113bda8a4d7251319bd900ae6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Jul 2022 14:54:26 -0700 Subject: [PATCH 116/121] Bump eslint from 8.19.0 to 8.20.0 (#860) Bumps [eslint](https://github.com/eslint/eslint) from 8.19.0 to 8.20.0. - [Release notes](https://github.com/eslint/eslint/releases) - [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md) - [Commits](https://github.com/eslint/eslint/compare/v8.19.0...v8.20.0) --- updated-dependencies: - dependency-name: eslint dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Nelson --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index eef16ce66..305fa1e2a 100644 --- a/package.json +++ b/package.json @@ -72,7 +72,7 @@ "casual": "^1.6.2", "css-loader": "^6.7.1", "electron": "19.0.8", - "eslint": "^8.19.0", + "eslint": "^8.20.0", "eslint-plugin-import": "^2.26.0", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-testing-library": "^5.5.1", diff --git a/yarn.lock b/yarn.lock index 50cb7b92f..c4e855976 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4171,10 +4171,10 @@ eslint-visitor-keys@^3.3.0: resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz#f6480fa6b1f30efe2d1968aa8ac745b862469826" integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA== -eslint@^8.19.0: - version "8.19.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.19.0.tgz#7342a3cbc4fbc5c106a1eefe0fd0b50b6b1a7d28" - integrity sha512-SXOPj3x9VKvPe81TjjUJCYlV4oJjQw68Uek+AM0X4p+33dj2HY5bpTZOgnQHcG2eAm1mtCU9uNMnJi7exU/kYw== +eslint@^8.20.0: + version "8.20.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.20.0.tgz#048ac56aa18529967da8354a478be4ec0a2bc81b" + integrity sha512-d4ixhz5SKCa1D6SCPrivP7yYVi7nyD6A4vs6HIAul9ujBzcEmZVM3/0NN/yu5nKhmO1wjp5xQ46iRfmDGlOviA== dependencies: "@eslint/eslintrc" "^1.3.0" "@humanwhocodes/config-array" "^0.9.2" From 19f244685c728918f27579ab90a74a3f0d2eb97e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Jul 2022 15:00:16 -0700 Subject: [PATCH 117/121] Bump @types/node from 18.0.3 to 18.0.6 (#859) Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 18.0.3 to 18.0.6. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@types/node" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Nelson --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 305fa1e2a..b3d08e26a 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,7 @@ "@types/ini": "^1.3.31", "@types/jest": "^27.5.0", "@types/luxon": "^2.3.2", - "@types/node": "^18.0.3", + "@types/node": "^18.0.6", "@types/pako": "^2.0.0", "@types/parse-git-config": "^3.0.1", "@types/parse-path": "^5.0.0", diff --git a/yarn.lock b/yarn.lock index c4e855976..9e12daa8e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1661,10 +1661,10 @@ resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.5.tgz#1001cc5e6a3704b83c236027e77f2f58ea010f40" integrity sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ== -"@types/node@*", "@types/node@^18.0.3": - version "18.0.3" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.0.3.tgz#463fc47f13ec0688a33aec75d078a0541a447199" - integrity sha512-HzNRZtp4eepNitP+BD6k2L6DROIDG4Q0fm4x+dwfsr6LGmROENnok75VGw40628xf+iR24WeMFcHuuBDUAzzsQ== +"@types/node@*", "@types/node@^18.0.6": + version "18.0.6" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.0.6.tgz#0ba49ac517ad69abe7a1508bc9b3a5483df9d5d7" + integrity sha512-/xUq6H2aQm261exT6iZTMifUySEt4GR5KX8eYyY+C4MSNPqSh9oNIP7tz2GLKTlFaiBbgZNxffoR3CVRG+cljw== "@types/node@^16.11.26": version "16.11.26" From f0274fccf9d5230ff488d77ca194807021a2e628 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Jul 2022 15:07:48 -0700 Subject: [PATCH 118/121] Bump @vercel/webpack-asset-relocator-loader from 1.7.2 to 1.7.3 (#858) Bumps [@vercel/webpack-asset-relocator-loader](https://github.com/vercel/webpack-asset-relocator-loader) from 1.7.2 to 1.7.3. - [Release notes](https://github.com/vercel/webpack-asset-relocator-loader/releases) - [Commits](https://github.com/vercel/webpack-asset-relocator-loader/compare/v1.7.2...v1.7.3) --- updated-dependencies: - dependency-name: "@vercel/webpack-asset-relocator-loader" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Nelson --- package.json | 2 +- yarn.lock | 16 +++++----------- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/package.json b/package.json index b3d08e26a..2af161150 100644 --- a/package.json +++ b/package.json @@ -68,7 +68,7 @@ "@types/validator": "^13.7.4", "@typescript-eslint/eslint-plugin": "^5.30.6", "@typescript-eslint/parser": "^5.30.5", - "@vercel/webpack-asset-relocator-loader": "1.7.2", + "@vercel/webpack-asset-relocator-loader": "1.7.3", "casual": "^1.6.2", "css-loader": "^6.7.1", "electron": "19.0.8", diff --git a/yarn.lock b/yarn.lock index 9e12daa8e..f48579809 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1964,13 +1964,12 @@ eslint-scope "^5.1.1" eslint-utils "^3.0.0" -"@typescript-eslint/visitor-keys@5.30.5": - version "5.30.5" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.30.5.tgz#d4bb969202019d5d5d849a0aaedc7370cc044b14" - integrity sha512-D+xtGo9HUMELzWIUqcQc0p2PO4NyvTrgIOK/VnSH083+8sq0tiLozNRKuLarwHYGRuA6TVBQSuuLwJUDWd3aaA== +"@vercel/webpack-asset-relocator-loader@1.7.3": + version "1.7.3" + resolved "https://registry.yarnpkg.com/@vercel/webpack-asset-relocator-loader/-/webpack-asset-relocator-loader-1.7.3.tgz#e65ca1fd9feb045039788f9b4710e5acc84b01b0" + integrity sha512-vizrI18v8Lcb1PmNNUBz7yxPxxXoOeuaVEjTG9MjvDrphjiSxFZrRJ5tIghk+qdLFRCXI5HBCshgobftbmrC5g== dependencies: - "@typescript-eslint/types" "5.30.5" - eslint-visitor-keys "^3.3.0" + resolve "^1.10.0" "@typescript-eslint/visitor-keys@5.30.6": version "5.30.6" @@ -1980,11 +1979,6 @@ "@typescript-eslint/types" "5.30.6" eslint-visitor-keys "^3.3.0" -"@vercel/webpack-asset-relocator-loader@1.7.2": - version "1.7.2" - resolved "https://registry.yarnpkg.com/@vercel/webpack-asset-relocator-loader/-/webpack-asset-relocator-loader-1.7.2.tgz#0210abd8d53b2799d53156dd0c18a4ef4e3b51cb" - integrity sha512-pdMwUawmAtH/LScbjKJq/y2+gZFggFMc2tlJrlPSrgKajvYPEis3L9QKcMyC9RN1Xos4ezAP5AJfRCNN6RMKCQ== - "@webassemblyjs/ast@1.11.1": version "1.11.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" From 089442476d2064284c9b43093315fe629ea0a192 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Jul 2022 15:11:15 -0700 Subject: [PATCH 119/121] Bump @testing-library/dom from 8.15.0 to 8.16.0 (#857) Bumps [@testing-library/dom](https://github.com/testing-library/dom-testing-library) from 8.15.0 to 8.16.0. - [Release notes](https://github.com/testing-library/dom-testing-library/releases) - [Changelog](https://github.com/testing-library/dom-testing-library/blob/main/CHANGELOG.md) - [Commits](https://github.com/testing-library/dom-testing-library/compare/v8.15.0...v8.16.0) --- updated-dependencies: - dependency-name: "@testing-library/dom" dependency-type: direct:development update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Nelson --- package.json | 2 +- yarn.lock | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 2af161150..fc8c59c99 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "@electron-forge/maker-rpm": "^6.0.0-beta.64", "@electron-forge/maker-squirrel": "^6.0.0-beta.64", "@electron-forge/plugin-webpack": "6.0.0-beta.64", - "@testing-library/dom": "^8.15.0", + "@testing-library/dom": "^8.16.0", "@testing-library/jest-dom": "^5.16.4", "@testing-library/react": "^12.1.5", "@testing-library/react-hooks": "^8.0.1", diff --git a/yarn.lock b/yarn.lock index f48579809..b158fbf15 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1354,10 +1354,10 @@ dependencies: defer-to-connect "^2.0.0" -"@testing-library/dom@^8.0.0", "@testing-library/dom@^8.15.0": - version "8.15.0" - resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.15.0.tgz#c7f8549dc4d094786a5bf1c241fbd0e0df9d1e74" - integrity sha512-KtMhnUST7iUvZPl3LlRKH9V/JGbMIwgCxSeGno+c2VRRgC21l27Ky8rU8n/xRcfUAsO4w9fn3Z70Dq3Tcg6KAg== +"@testing-library/dom@^8.0.0", "@testing-library/dom@^8.16.0": + version "8.16.0" + resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-8.16.0.tgz#d6fc50250aed17b1035ca1bd64655e342db3936a" + integrity sha512-uxF4zmnLHHDlmW4l+0WDjcgLVwCvH+OVLpD8Dfp+Bjfz85prwxWGbwXgJdLtkgjD0qfOzkJF9SmA6YZPsMYX4w== dependencies: "@babel/code-frame" "^7.10.4" "@babel/runtime" "^7.12.5" From 39ba9ddfccea6cf1e10a5a28968854f2b8b69d2d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 19 Jul 2022 15:17:09 -0700 Subject: [PATCH 120/121] Bump @typescript-eslint/parser from 5.30.5 to 5.30.6 (#856) Bumps [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) from 5.30.5 to 5.30.6. - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v5.30.6/packages/parser) --- updated-dependencies: - dependency-name: "@typescript-eslint/parser" dependency-type: direct:development update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Nicholas Nelson --- package.json | 2 +- yarn.lock | 14 +++++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index fc8c59c99..41d0cb51d 100644 --- a/package.json +++ b/package.json @@ -67,7 +67,7 @@ "@types/valid-url": "^1.0.3", "@types/validator": "^13.7.4", "@typescript-eslint/eslint-plugin": "^5.30.6", - "@typescript-eslint/parser": "^5.30.5", + "@typescript-eslint/parser": "^5.30.6", "@vercel/webpack-asset-relocator-loader": "1.7.3", "casual": "^1.6.2", "css-loader": "^6.7.1", diff --git a/yarn.lock b/yarn.lock index b158fbf15..0c9d61c3a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1881,14 +1881,14 @@ semver "^7.3.7" tsutils "^3.21.0" -"@typescript-eslint/parser@^5.30.5": - version "5.30.5" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.30.5.tgz#f667c34e4e4c299d98281246c9b1e68c03a92522" - integrity sha512-zj251pcPXI8GO9NDKWWmygP6+UjwWmrdf9qMW/L/uQJBM/0XbU2inxe5io/234y/RCvwpKEYjZ6c1YrXERkK4Q== +"@typescript-eslint/parser@^5.30.6": + version "5.30.6" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.30.6.tgz#add440db038fa9d777e4ebdaf66da9e7fb7abe92" + integrity sha512-gfF9lZjT0p2ZSdxO70Xbw8w9sPPJGfAdjK7WikEjB3fcUI/yr9maUVEdqigBjKincUYNKOmf7QBMiTf719kbrA== dependencies: - "@typescript-eslint/scope-manager" "5.30.5" - "@typescript-eslint/types" "5.30.5" - "@typescript-eslint/typescript-estree" "5.30.5" + "@typescript-eslint/scope-manager" "5.30.6" + "@typescript-eslint/types" "5.30.6" + "@typescript-eslint/typescript-estree" "5.30.6" debug "^4.3.4" "@typescript-eslint/scope-manager@5.30.5": From 600aa056692e9a1c19db54cfe8cbc0f4a4f01d9a Mon Sep 17 00:00:00 2001 From: Nicholas Nelson Date: Tue, 19 Jul 2022 15:20:19 -0700 Subject: [PATCH 121/121] v2.2.0 --- package.json | 2 +- version.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 41d0cb51d..58dd944bb 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "synectic", "productName": "Synectic", - "version": "2.0.0", + "version": "2.2.0", "description": "My Electron application description", "main": ".webpack/main", "scripts": { diff --git a/version.js b/version.js index 996c94002..c61c63d81 100644 --- a/version.js +++ b/version.js @@ -1,2 +1,2 @@ // Generated by genversion. -module.exports = '2.0.0' +module.exports = '2.2.0'