Skip to content

Commit aef5f67

Browse files
committed
To enable support for ES modules in TypeScript >=4.7 (enabled with module and moduleResolution of node16 or nodenext in the tsconfig), export simpleGit as a named export instead of as the default export from the simple-git package.
Add `simpleGit` to the TypeScript types while keeping default export for backward compatibility.
1 parent 24a7a71 commit aef5f67

27 files changed

+272
-137
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
"simple-git"
88
],
99
"resolutions": {
10-
"typescript": "4.1.2"
10+
"typescript": "4.7.4"
1111
},
1212
"scripts": {
1313
"build": "lerna run build",
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import { strictEqual } from "assert";
2+
3+
export async function suite(name, simpleGit, ResetMode) {
4+
exec(`${name}: imports default`, async () => {
5+
strictEqual(
6+
await simpleGit().checkIsRepo(),
7+
true,
8+
'expected the current directory to be a valid git root',
9+
);
10+
});
11+
12+
exec(`${name}: imports named exports`, async () => {
13+
strictEqual(
14+
/hard/.test(ResetMode.HARD),
15+
true,
16+
'expected valid ResetMode enum'
17+
);
18+
});
19+
}
20+
21+
function exec (name, runner) {
22+
runner()
23+
.then(() => console.log(`${ name }: OK`))
24+
.catch((e) => {
25+
console.error(`${ name }: ${ e.message }`);
26+
throw e;
27+
});
28+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import { simpleGit, ResetMode } from 'simple-git';
2+
import { suite } from './suite.mjs';
3+
4+
await suite('import named', simpleGit, ResetMode);
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import simpleGit, { ResetMode } from 'simple-git';
2+
import { suite } from './suite.mjs';
3+
4+
await suite('import default', simpleGit, ResetMode);
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import { default as simpleGit, ResetMode } from 'simple-git';
2+
import { suite } from './suite.mjs';
3+
4+
await suite('import default-as', simpleGit, ResetMode);
Lines changed: 3 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,3 @@
1-
import { strictEqual } from 'assert';
2-
import simpleGit, { ResetMode } from 'simple-git';
3-
4-
exec('imports default', async () => {
5-
strictEqual(
6-
await simpleGit().checkIsRepo(),
7-
true,
8-
'expected the current directory to be a valid git root',
9-
);
10-
});
11-
12-
exec('imports named exports', async () => {
13-
strictEqual(
14-
/hard/.test(ResetMode.HARD),
15-
true,
16-
'expected valid ResetMode enum'
17-
);
18-
});
19-
20-
function exec (name, runner) {
21-
runner()
22-
.then(() => console.log(`${ name }: OK`))
23-
.catch((e) => {
24-
console.error(`${ name }: ${ e.message }`);
25-
throw e;
26-
});
27-
}
1+
import './test-default.mjs';
2+
import './test-default-as.mjs';
3+
import './test-named.mjs';
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
const {strictEqual} = require('assert');
2+
3+
module.exports = {
4+
async suite (name, simpleGit, ResetMode) {
5+
exec(`${ name }: imports default`, async () => {
6+
strictEqual(
7+
await simpleGit().checkIsRepo(),
8+
true,
9+
'expected the current directory to be a valid git root',
10+
);
11+
});
12+
13+
exec(`${ name }: imports named exports`, async () => {
14+
strictEqual(
15+
/hard/.test(ResetMode.HARD),
16+
true,
17+
'expected valid ResetMode enum'
18+
);
19+
});
20+
}
21+
};
22+
23+
function exec (name, runner) {
24+
runner()
25+
.then(() => console.log(`${ name }: OK`))
26+
.catch((e) => {
27+
console.error(`${ name }: ${ e.message }`);
28+
throw e;
29+
});
30+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
const {default: simpleGit, ResetMode} = require('simple-git');
2+
const {suite} = require('./suite');
3+
4+
(async () => {
5+
await suite('require default-as', simpleGit, ResetMode);
6+
})();
Lines changed: 5 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,7 @@
1-
const {default: simpleGit, ResetMode} = require('simple-git');
2-
const {strictEqual} = require("assert");
1+
const simpleGit = require('simple-git');
2+
const {suite} = require('./suite');
33

4-
exec('requires default', async () => {
5-
strictEqual(
6-
await simpleGit().checkIsRepo(),
7-
true,
8-
'expected the current directory to be a valid git root',
9-
);
10-
});
4+
(async () => {
5+
await suite('require default', simpleGit, simpleGit.ResetMode);
6+
})();
117

12-
exec('imports named exports', async () => {
13-
strictEqual(
14-
/hard/.test(ResetMode.HARD),
15-
true,
16-
'expected valid ResetMode enum'
17-
);
18-
});
19-
20-
function exec (name, runner) {
21-
runner()
22-
.then(() => console.log(`${ name }: OK`))
23-
.catch((e) => {
24-
console.error(`${ name }: ${ e.message }`);
25-
throw e;
26-
});
27-
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
const {simpleGit, ResetMode} = require('simple-git');
2+
const {suite} = require('./suite');
3+
4+
(async () => {
5+
await suite('require named', simpleGit, ResetMode);
6+
})();
7+

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy