Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion biome.json
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@
}
},
{
"includes": ["simple-git/src/git.js", "simple-git/scripts/*"],
"includes": ["simple-git/src/git.ts", "simple-git/scripts/*"],
"linter": {
"rules": {
"complexity": {
Expand Down
1 change: 1 addition & 0 deletions packages/test-utils/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"name": "@simple-git/test-utils",
"version": "4.0.0",
"private": true,
"main": "index.ts",
"peerDependencies": {
"simple-git": "*"
}
Expand Down
307 changes: 284 additions & 23 deletions pnpm-lock.yaml

Large diffs are not rendered by default.

1 change: 0 additions & 1 deletion simple-git/babel.config.js

This file was deleted.

14 changes: 0 additions & 14 deletions simple-git/jest.config.js

This file was deleted.

14 changes: 6 additions & 8 deletions simple-git/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,13 @@
},
"devDependencies": {
"@kwsites/promise-result": "^1.1.0",
"@simple-git/babel-config": "workspace:^",
"@types/debug": "^4.1.12",
"@types/jest": "^29.2.2",
"@types/node": "^22.15.30",
"@vitest/coverage-v8": "^3.0.0",
"esbuild": "^0.25.0",
"esbuild-node-externals": "^1.18.0",
"jest": "^29.7.0",
"ts-node": "^10.9.2",
"typescript": "^5"
"typescript": "^5",
"vitest": "^3.0.0"
},
"keywords": [
"git",
Expand All @@ -43,7 +41,7 @@
"url": "https://github.com/steveukx/git-js.git",
"directory": "simple-git"
},
"main": "src/index.js",
"main": "src/index.ts",
"module": "dist/esm/index.js",
"exports": {
".": {
Expand All @@ -65,8 +63,8 @@
"build:defs": "tsc -p tsconfig.release.json --outDir dist && cp -r typings dist",
"build:pkg": "tsx ../devtools/package-json ./simple-git/package.json",
"prepublishOnly": "pnpm run build:pkg",
"test": "jest --coverage",
"test:win": "jest .win32.spec.ts$"
"test": "vitest run --coverage",
"test:win": "vitest run win32"
},
"publish": {
"main": "dist/cjs/index.js",
Expand Down
2 changes: 1 addition & 1 deletion simple-git/scripts/build.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ async function cjs() {
const outfile = resolve(outDir, 'cjs', 'index.js');

await esbuild.build({
entryPoints: ['src/index.js'],
entryPoints: ['src/index.ts'],
bundle: true,
platform: 'node',
format: 'cjs',
Expand Down
58 changes: 32 additions & 26 deletions simple-git/src/git.js → simple-git/src/git.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
const { GitExecutor } = require('./lib/runners/git-executor');
const { SimpleGitApi } = require('./lib/simple-git-api');
// @ts-nocheck — legacy prototype-style implementation, retyped in the task-refactor PR.
import { GitExecutor } from './lib/runners/git-executor';
import { SimpleGitApi } from './lib/simple-git-api';

const { Scheduler } = require('./lib/runners/scheduler');
const { adhocExecTask, configurationErrorTask } = require('./lib/tasks/task');
const {
import { Scheduler } from './lib/runners/scheduler';
import { adhocExecTask, configurationErrorTask } from './lib/tasks/task';
import {
asArray,
filterArray,
filterPrimitives,
Expand All @@ -13,39 +14,39 @@ const {
getTrailingOptions,
trailingFunctionArgument,
trailingOptionsArgument,
} = require('./lib/utils');
const { applyPatchTask } = require('./lib/tasks/apply-patch');
const {
} from './lib/utils';
import { applyPatchTask } from './lib/tasks/apply-patch';
import {
branchTask,
branchLocalTask,
deleteBranchesTask,
deleteBranchTask,
} = require('./lib/tasks/branch');
const { checkIgnoreTask } = require('./lib/tasks/check-ignore');
const { checkIsRepoTask } = require('./lib/tasks/check-is-repo');
const { cleanWithOptionsTask, isCleanOptionsArray } = require('./lib/tasks/clean');
const { diffSummaryTask } = require('./lib/tasks/diff');
const { fetchTask } = require('./lib/tasks/fetch');
const { moveTask } = require('./lib/tasks/move');
const { pullTask } = require('./lib/tasks/pull');
const { pushTagsTask } = require('./lib/tasks/push');
const {
} from './lib/tasks/branch';
import { checkIgnoreTask } from './lib/tasks/check-ignore';
import { checkIsRepoTask } from './lib/tasks/check-is-repo';
import { cleanWithOptionsTask, isCleanOptionsArray } from './lib/tasks/clean';
import { diffSummaryTask } from './lib/tasks/diff';
import { fetchTask } from './lib/tasks/fetch';
import { moveTask } from './lib/tasks/move';
import { pullTask } from './lib/tasks/pull';
import { pushTagsTask } from './lib/tasks/push';
import {
addRemoteTask,
getRemotesTask,
listRemotesTask,
remoteTask,
removeRemoteTask,
} = require('./lib/tasks/remote');
const { getResetMode, resetTask } = require('./lib/tasks/reset');
const { stashListTask } = require('./lib/tasks/stash-list');
const {
} from './lib/tasks/remote';
import { getResetMode, resetTask } from './lib/tasks/reset';
import { stashListTask } from './lib/tasks/stash-list';
import {
addSubModuleTask,
initSubModuleTask,
subModuleTask,
updateSubModuleTask,
} = require('./lib/tasks/sub-module');
const { addAnnotatedTagTask, addTagTask, tagListTask } = require('./lib/tasks/tag');
const { straightThroughBufferTask, straightThroughStringTask } = require('./lib/tasks/task');
} from './lib/tasks/sub-module';
import { addAnnotatedTagTask, addTagTask, tagListTask } from './lib/tasks/tag';
import { straightThroughBufferTask, straightThroughStringTask } from './lib/tasks/task';

function Git(options, plugins) {
this._plugins = plugins;
Expand Down Expand Up @@ -596,4 +597,9 @@ Git.prototype.checkIsRepo = function (checkType, then) {
);
};

module.exports = Git;
const GitConstructor = Git as unknown as new (
options: SimpleGitOptions,
plugins: PluginStore
) => SimpleGit;

export default GitConstructor;
6 changes: 0 additions & 6 deletions simple-git/src/index.js

This file was deleted.

6 changes: 6 additions & 0 deletions simple-git/src/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import { esModuleFactory, gitExportFactory, gitInstanceFactory } from './lib/git-factory';
import { gitP } from './lib/runners/promise-wrapped';

const simpleGit = esModuleFactory(gitExportFactory(gitInstanceFactory));

export = Object.assign(simpleGit, { gitP, simpleGit });
2 changes: 1 addition & 1 deletion simple-git/src/lib/git-factory.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import { suffixPathsPlugin } from './plugins/suffix-paths.plugin';
import { createInstanceConfig, folderExists } from './utils';
import { SimpleGitOptions } from './types';

const Git = require('../git');
import Git from '../git';

/**
* Adds the necessary properties to the supplied object to enable it for use as
Expand Down
1 change: 1 addition & 0 deletions simple-git/test/integration/add.spec.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { beforeEach, describe, expect, it } from 'vitest';
import {
createTestContext,
like,
Expand Down
3 changes: 2 additions & 1 deletion simple-git/test/integration/bad-initial-path.spec.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { beforeEach, describe, expect, it } from 'vitest';
import {
assertGitError,
createTestContext,
Expand All @@ -6,7 +7,7 @@ import {
SimpleGitTestContext,
} from '@simple-git/test-utils';

import { GitConstructError } from '../..';
import { GitConstructError } from 'simple-git';

describe('bad initial path', () => {
let context: SimpleGitTestContext;
Expand Down
1 change: 1 addition & 0 deletions simple-git/test/integration/branches-show-current.spec.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { beforeEach, describe, expect, it } from 'vitest';
import { createTestContext, like, setUpFilesAdded, setUpInit, SimpleGitTestContext } from '@simple-git/test-utils';

describe('branch-show-current', () => {
Expand Down
1 change: 1 addition & 0 deletions simple-git/test/integration/branches.spec.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { beforeEach, describe, expect, it } from 'vitest';
import { promiseResult } from '@kwsites/promise-result';
import {
assertGitError,
Expand Down
3 changes: 2 additions & 1 deletion simple-git/test/integration/broken-chains.spec.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { beforeEach, describe, expect, it, vi } from 'vitest';
import { isPromiseFailure, promiseError, promiseResult } from '@kwsites/promise-result';
import {
assertGitError,
Expand Down Expand Up @@ -89,7 +90,7 @@ describe('broken-chains', () => {
async function testPromiseChains(git: SimpleGit) {
const successes: string[] = [];
const errors: string[] = [];
const catcher = jest.fn(() => {
const catcher = vi.fn(() => {
expect(successes).toEqual(['A']);
expect(errors).toEqual([]);
});
Expand Down
3 changes: 2 additions & 1 deletion simple-git/test/integration/change-directory.spec.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { beforeEach, describe, expect, it, vi } from 'vitest';
import { promiseError, promiseResult } from '@kwsites/promise-result';
import {
assertGitError,
Expand Down Expand Up @@ -67,7 +68,7 @@ describe('change-directory', () => {
});

it('switches into new directory - chained with callbacks', async () => {
const spies = [jest.fn(), jest.fn(), jest.fn()];
const spies = [vi.fn(), vi.fn(), vi.fn()];

newSimpleGit(context.root)
.cwd(goodDir, spies[0])
Expand Down
1 change: 1 addition & 0 deletions simple-git/test/integration/check-ignore.win32.spec.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { beforeEach, describe, expect, it } from 'vitest';
import { createTestContext, setUpIgnored, setUpInit, SimpleGitTestContext } from '@simple-git/test-utils';
import { join } from 'node:path';

Expand Down
3 changes: 2 additions & 1 deletion simple-git/test/integration/check-is-repo.spec.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { beforeEach, describe, expect, it, vi } from 'vitest';
import {
assertGitError,
createTestContext,
Expand Down Expand Up @@ -26,7 +27,7 @@ describe('check-is-repo', () => {

it('throws errors other than in-repo detection errors', async () => {
const git = newSimpleGit(roots.realRoot).customBinary('nonsense');
const catcher = jest.fn((err) => {
const catcher = vi.fn((err) => {
assertGitError(err, 'nonsense');
});

Expand Down
1 change: 1 addition & 0 deletions simple-git/test/integration/checkout.spec.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { beforeEach, describe, expect, it } from 'vitest';
import {
createTestContext,
newSimpleGit,
Expand Down
1 change: 1 addition & 0 deletions simple-git/test/integration/clean.spec.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { beforeEach, describe, expect, it } from 'vitest';
import { promiseError } from '@kwsites/promise-result';
import {
assertGitError,
Expand Down
1 change: 1 addition & 0 deletions simple-git/test/integration/commit.spec.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { beforeEach, describe, expect, it } from 'vitest';
import {
createTestContext,
newSimpleGit,
Expand Down
1 change: 1 addition & 0 deletions simple-git/test/integration/concurrent-commands.spec.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { beforeEach, describe, expect, it } from 'vitest';
import {
createTestContext,
newSimpleGit,
Expand Down
3 changes: 2 additions & 1 deletion simple-git/test/integration/config.spec.ts
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
import { beforeEach, describe, expect, it } from 'vitest';
import {
createTestContext,
newSimpleGit,
setUpInit,
SimpleGitTestContext,
} from '@simple-git/test-utils';
import { GitConfigScope } from '../..';
import { GitConfigScope } from 'simple-git';
import { SimpleGit } from '../../typings';

describe('config', () => {
Expand Down
1 change: 1 addition & 0 deletions simple-git/test/integration/diff.spec.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { beforeEach, describe, expect, it } from 'vitest';
import {
createTestContext,
like,
Expand Down
1 change: 1 addition & 0 deletions simple-git/test/integration/exec.spec.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { beforeEach, describe, expect, it } from 'vitest';
import { createTestContext, newSimpleGit, SimpleGitTestContext } from '@simple-git/test-utils';

describe('exec', () => {
Expand Down
1 change: 1 addition & 0 deletions simple-git/test/integration/fetch.spec.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { beforeEach, describe, expect, it } from 'vitest';
import {
createTestContext,
newSimpleGit,
Expand Down
3 changes: 2 additions & 1 deletion simple-git/test/integration/grep.spec.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { beforeEach, describe, expect, it } from 'vitest';
import { createTestContext, newSimpleGit, SimpleGitTestContext } from '@simple-git/test-utils';
import { grepQueryBuilder } from '../..';
import { grepQueryBuilder } from 'simple-git';
import { pathspec } from '@simple-git/args-pathspec';

describe('grep', () => {
Expand Down
3 changes: 2 additions & 1 deletion simple-git/test/integration/log-name-status.spec.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { beforeEach, describe, expect, it } from 'vitest';
import {
createTestContext,
like,
Expand All @@ -7,7 +8,7 @@ import {
SimpleGitTestContext,
} from '@simple-git/test-utils';

import { DiffNameStatus, DiffResultTextFile } from '../..';
import { DiffNameStatus, DiffResultTextFile } from 'simple-git';

describe('log-name-status', function () {
let context: SimpleGitTestContext;
Expand Down
1 change: 1 addition & 0 deletions simple-git/test/integration/log-numstat.spec.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { describe, expect, it } from 'vitest';
import { promiseError } from '@kwsites/promise-result';
import { newSimpleGit } from '@simple-git/test-utils';

Expand Down
1 change: 1 addition & 0 deletions simple-git/test/integration/log.spec.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { beforeEach, describe, expect, it } from 'vitest';
import { promiseResult } from '@kwsites/promise-result';
import {
createTestContext,
Expand Down
1 change: 1 addition & 0 deletions simple-git/test/integration/merge-integration.spec.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { beforeEach, describe, expect, it } from 'vitest';
import { GitResponseError, MergeResult, SimpleGit } from '../../typings';
import { promiseError } from '@kwsites/promise-result';
import {
Expand Down
1 change: 1 addition & 0 deletions simple-git/test/integration/output-handler.spec.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { beforeEach, describe, expect, it } from 'vitest';
import { createTestContext, setUpInit, SimpleGitTestContext, wait } from '@simple-git/test-utils';

describe('outputHandler', function () {
Expand Down
3 changes: 2 additions & 1 deletion simple-git/test/integration/plugin.abort.spec.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { beforeEach, describe, expect, it } from 'vitest';
import { promiseError } from '@kwsites/promise-result';
import {
assertGitError,
Expand All @@ -8,7 +9,7 @@ import {
wait,
} from '@simple-git/test-utils';

import { GitPluginError } from '../..';
import { GitPluginError } from 'simple-git';

describe('timeout', () => {
let context: SimpleGitTestContext;
Expand Down
1 change: 1 addition & 0 deletions simple-git/test/integration/plugin.completion.spec.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { beforeEach, describe, expect, it } from 'vitest';
import { promiseError } from '@kwsites/promise-result';
import { createTestContext, newSimpleGit, SimpleGitTestContext } from '@simple-git/test-utils';

Expand Down
5 changes: 3 additions & 2 deletions simple-git/test/integration/plugin.progress.spec.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { beforeEach, describe, expect, it, vi, type Mock } from 'vitest';
import { createTestContext, newSimpleGit, SimpleGitTestContext } from '@simple-git/test-utils';
import { SimpleGitOptions } from '../../src/lib/types';

Expand All @@ -9,7 +10,7 @@ describe('progress-monitor', () => {
beforeEach(async () => (context = await createTestContext()));

it('emits progress events', async () => {
const progress = jest.fn();
const progress = vi.fn();
const opt: Partial<SimpleGitOptions> = {
baseDir: context.root,
progress,
Expand All @@ -36,6 +37,6 @@ describe('progress-monitor', () => {
});
});

function progressEventsAtStage(mock: jest.Mock, stage: string) {
function progressEventsAtStage(mock: Mock, stage: string) {
return mock.mock.calls.filter((c) => c[0].stage === stage).map((c) => c[0]);
}
Loading
Loading