fix(build): modernize project configuration and tighten Node.js typing support
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"@git.zone/cli": {
|
||||
"projectType": "npm",
|
||||
"module": {
|
||||
"githost": "code.foss.global",
|
||||
"gitscope": "push.rocks",
|
||||
"gitrepo": "smartgit",
|
||||
"description": "A smart wrapper for nodegit that simplifies Git operations in Node.js.",
|
||||
"npmPackagename": "@push.rocks/smartgit",
|
||||
"license": "MIT",
|
||||
"projectDomain": "push.rocks"
|
||||
},
|
||||
"release": {
|
||||
"registries": [
|
||||
"https://verdaccio.lossless.digital",
|
||||
"https://registry.npmjs.org"
|
||||
],
|
||||
"accessLevel": "public"
|
||||
}
|
||||
},
|
||||
"@git.zone/tsdoc": {
|
||||
"legal": "\n## License and Legal Information\n\nThis repository contains open-source code that is licensed under the MIT License. A copy of the MIT License can be found in the [license](license) file within this repository. \n\n**Please note:** The MIT License does not grant permission to use the trade names, trademarks, service marks, or product names of the project, except as required for reasonable and customary use in describing the origin of the work and reproducing the content of the NOTICE file.\n\n### Trademarks\n\nThis project is owned and maintained by Task Venture Capital GmbH. The names and logos associated with Task Venture Capital GmbH and any related products or services are trademarks of Task Venture Capital GmbH and are not included within the scope of the MIT license granted herein. Use of these trademarks must comply with Task Venture Capital GmbH's Trademark Guidelines, and any usage must be approved in writing by Task Venture Capital GmbH.\n\n### Company Information\n\nTask Venture Capital GmbH \nRegistered at District court Bremen HRB 35230 HB, Germany\n\nFor any legal inquiries or if you require further information, please contact us via email at hello@task.vc.\n\nBy using this repository, you acknowledge that you have read this section, agree to comply with its terms, and understand that the licensing of the code does not imply endorsement by Task Venture Capital GmbH of any derivative works.\n"
|
||||
},
|
||||
"@ship.zone/szci": {
|
||||
"npmGlobalTools": [],
|
||||
"npmRegistryUrl": "registry.npmjs.org"
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,13 @@
|
||||
# Changelog
|
||||
|
||||
## 2026-04-30 - 3.3.2 - fix(build)
|
||||
modernize project configuration and tighten Node.js typing support
|
||||
|
||||
- migrate npmextra configuration to namespaced tool settings and add .smartconfig.json
|
||||
- update build and test scripts alongside TypeScript and dependency versions
|
||||
- refactor Smartgit to expose validated fs/http accessors and improve return type annotations
|
||||
- adjust tests and repository URLs to use code.foss.global
|
||||
|
||||
## 2025-11-04 - 3.3.1 - fix(getUncommittedDiff)
|
||||
Avoid false-positive diffs in getUncommittedDiff by detecting symlinked directories and skipping identical files
|
||||
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2026 Task Venture Capital GmbH
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
+1
-2
@@ -1,6 +1,6 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2015 Lossless GmbH
|
||||
Copyright (c) 2026 Task Venture Capital GmbH
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -19,4 +19,3 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
|
||||
+15
-7
@@ -1,9 +1,5 @@
|
||||
{
|
||||
"npmci": {
|
||||
"npmGlobalTools": [],
|
||||
"npmAccessLevel": "public"
|
||||
},
|
||||
"gitzone": {
|
||||
"@git.zone/cli": {
|
||||
"projectType": "npm",
|
||||
"module": {
|
||||
"githost": "code.foss.global",
|
||||
@@ -12,6 +8,7 @@
|
||||
"description": "A smart wrapper for nodegit that simplifies Git operations in Node.js.",
|
||||
"npmPackagename": "@push.rocks/smartgit",
|
||||
"license": "MIT",
|
||||
"projectDomain": "push.rocks",
|
||||
"keywords": [
|
||||
"git",
|
||||
"nodegit",
|
||||
@@ -23,9 +20,20 @@
|
||||
"repository management",
|
||||
"git operations"
|
||||
]
|
||||
},
|
||||
"release": {
|
||||
"registries": [
|
||||
"https://verdaccio.lossless.digital",
|
||||
"https://registry.npmjs.org"
|
||||
],
|
||||
"accessLevel": "public"
|
||||
}
|
||||
},
|
||||
"tsdoc": {
|
||||
"@git.zone/tsdoc": {
|
||||
"legal": "\n## License and Legal Information\n\nThis repository contains open-source code that is licensed under the MIT License. A copy of the MIT License can be found in the [license](license) file within this repository. \n\n**Please note:** The MIT License does not grant permission to use the trade names, trademarks, service marks, or product names of the project, except as required for reasonable and customary use in describing the origin of the work and reproducing the content of the NOTICE file.\n\n### Trademarks\n\nThis project is owned and maintained by Task Venture Capital GmbH. The names and logos associated with Task Venture Capital GmbH and any related products or services are trademarks of Task Venture Capital GmbH and are not included within the scope of the MIT license granted herein. Use of these trademarks must comply with Task Venture Capital GmbH's Trademark Guidelines, and any usage must be approved in writing by Task Venture Capital GmbH.\n\n### Company Information\n\nTask Venture Capital GmbH \nRegistered at District court Bremen HRB 35230 HB, Germany\n\nFor any legal inquiries or if you require further information, please contact us via email at hello@task.vc.\n\nBy using this repository, you acknowledge that you have read this section, agree to comply with its terms, and understand that the licensing of the code does not imply endorsement by Task Venture Capital GmbH of any derivative works.\n"
|
||||
},
|
||||
"@ship.zone/szci": {
|
||||
"npmGlobalTools": [],
|
||||
"npmRegistryUrl": "registry.npmjs.org"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+16
-14
@@ -6,8 +6,8 @@
|
||||
"typings": "dist_ts/index.d.ts",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"test": "(tstest test/)",
|
||||
"build": "(tsbuild --web --allowimplicitany)",
|
||||
"test": "tstest test/ --verbose",
|
||||
"build": "tsbuild --web",
|
||||
"buildDocs": "tsdoc"
|
||||
},
|
||||
"repository": {
|
||||
@@ -28,26 +28,26 @@
|
||||
"author": "Smart Coordination GmbH <office@push.rocks> (https://push.rocks)",
|
||||
"license": "MIT",
|
||||
"bugs": {
|
||||
"url": "https://gitlab.com/pushrocks/smartgit/issues"
|
||||
"url": "https://code.foss.global/push.rocks/smartgit/issues"
|
||||
},
|
||||
"homepage": "https://code.foss.global/push.rocks/smartgit",
|
||||
"dependencies": {
|
||||
"@push.rocks/smartenv": "^6.0.0",
|
||||
"@push.rocks/smartfile": "^11.2.7",
|
||||
"@push.rocks/smartfile": "^13.1.3",
|
||||
"@push.rocks/smartpath": "^6.0.0",
|
||||
"@push.rocks/smartpromise": "^4.2.3",
|
||||
"@push.rocks/smartshell": "^3.3.0",
|
||||
"@push.rocks/smartshell": "^3.3.8",
|
||||
"@push.rocks/smartstring": "^4.1.0",
|
||||
"@push.rocks/smarttime": "^4.1.1",
|
||||
"@types/diff": "^8.0.0",
|
||||
"diff": "^8.0.2",
|
||||
"isomorphic-git": "^1.34.2",
|
||||
"minimatch": "^10.1.1"
|
||||
"@push.rocks/smarttime": "^4.2.3",
|
||||
"diff": "^9.0.0",
|
||||
"isomorphic-git": "^1.37.6",
|
||||
"minimatch": "^10.2.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@git.zone/tsbuild": "^2.7.1",
|
||||
"@git.zone/tsrun": "^1.6.2",
|
||||
"@git.zone/tstest": "^2.7.0"
|
||||
"@git.zone/tsbuild": "^4.4.0",
|
||||
"@git.zone/tsrun": "^2.0.3",
|
||||
"@git.zone/tstest": "^3.6.3",
|
||||
"@types/node": "^25.6.0"
|
||||
},
|
||||
"private": false,
|
||||
"files": [
|
||||
@@ -59,11 +59,13 @@
|
||||
"dist_ts_web/**/*",
|
||||
"assets/**/*",
|
||||
"cli.js",
|
||||
".smartconfig.json",
|
||||
"license",
|
||||
"npmextra.json",
|
||||
"readme.md"
|
||||
],
|
||||
"browserslist": [
|
||||
"last 1 chrome versions"
|
||||
],
|
||||
"packageManager": "pnpm@10.11.0+sha512.6540583f41cc5f628eb3d9773ecee802f4f9ef9923cc45b69890fb47991d4b092964694ec3a4f738a420c918a333062c8b925d312f42e4f0c263eb603551f977"
|
||||
"packageManager": "pnpm@10.28.2"
|
||||
}
|
||||
|
||||
Generated
+2070
-2591
File diff suppressed because it is too large
Load Diff
+5
-3
@@ -2,7 +2,8 @@ import { tap, expect } from '@git.zone/tstest/tapbundle';
|
||||
import * as smartgit from '../ts/index.js';
|
||||
|
||||
import * as smartpath from '@push.rocks/smartpath';
|
||||
import * as path from 'path';
|
||||
import * as fs from 'node:fs/promises';
|
||||
import * as path from 'node:path';
|
||||
|
||||
let testSmartgitInstance: smartgit.Smartgit;
|
||||
const packageDir = path.join(smartpath.get.dirnameFromImportMetaUrl(import.meta.url), '../');
|
||||
@@ -20,8 +21,9 @@ tap.test('should create a new repo at .nogit', async () => {
|
||||
});
|
||||
|
||||
tap.test('should clone a repo', async () => {
|
||||
await fs.rm(testRepoDirSmartfile, { recursive: true, force: true });
|
||||
const gitRepo = await testSmartgitInstance.createRepoByClone(
|
||||
'https://gitlab.com/push.rocks/smartfile.git',
|
||||
'https://code.foss.global/push.rocks/smartfile.git',
|
||||
testRepoDirSmartfile
|
||||
);
|
||||
});
|
||||
@@ -48,4 +50,4 @@ tap.test('should print all commit messages', async () => {
|
||||
console.log(commitMessages);
|
||||
});
|
||||
|
||||
await tap.start();
|
||||
export default tap.start();
|
||||
|
||||
@@ -3,6 +3,6 @@
|
||||
*/
|
||||
export const commitinfo = {
|
||||
name: '@push.rocks/smartgit',
|
||||
version: '3.3.1',
|
||||
version: '3.3.2',
|
||||
description: 'A smart wrapper for nodegit that simplifies Git operations in Node.js.'
|
||||
}
|
||||
|
||||
@@ -17,8 +17,8 @@ export class GitRepo {
|
||||
const dirArg = plugins.path.resolve(toArg);
|
||||
await plugins.isomorphicGit.clone({
|
||||
dir: toArg,
|
||||
fs: smartgitRefArg.envDeps.fs,
|
||||
http: smartgitRefArg.envDeps.http,
|
||||
fs: smartgitRefArg.fs,
|
||||
http: smartgitRefArg.http,
|
||||
url: fromArg,
|
||||
});
|
||||
return new GitRepo(smartgitRefArg, toArg);
|
||||
@@ -31,12 +31,12 @@ export class GitRepo {
|
||||
dirArg = plugins.path.resolve(dirArg);
|
||||
await plugins.isomorphicGit.init({
|
||||
dir: dirArg,
|
||||
fs: smartgitRefArg.envDeps.fs,
|
||||
fs: smartgitRefArg.fs,
|
||||
});
|
||||
return new GitRepo(smartgitRefArg, dirArg);
|
||||
}
|
||||
|
||||
public static async fromOpeningRepoDir(smartgitRefArg: Smartgit, dirArg: string) {
|
||||
public static async fromOpeningRepoDir(smartgitRefArg: Smartgit, dirArg: string): Promise<GitRepo> {
|
||||
dirArg = plugins.path.resolve(dirArg);
|
||||
return new GitRepo(smartgitRefArg, dirArg);
|
||||
}
|
||||
@@ -60,7 +60,7 @@ export class GitRepo {
|
||||
}[]
|
||||
> {
|
||||
const remotes = await plugins.isomorphicGit.listRemotes({
|
||||
fs: this.smartgitRef.envDeps.fs,
|
||||
fs: this.smartgitRef.fs,
|
||||
dir: this.repoDir,
|
||||
});
|
||||
return remotes;
|
||||
@@ -78,7 +78,7 @@ export class GitRepo {
|
||||
if (existingRemote.url !== remoteUrlArg) {
|
||||
await plugins.isomorphicGit.deleteRemote({
|
||||
remote: remoteNameArg,
|
||||
fs: this.smartgitRef.envDeps.fs,
|
||||
fs: this.smartgitRef.fs,
|
||||
dir: this.repoDir,
|
||||
});
|
||||
} else {
|
||||
@@ -87,7 +87,7 @@ export class GitRepo {
|
||||
}
|
||||
await plugins.isomorphicGit.addRemote({
|
||||
remote: remoteNameArg,
|
||||
fs: this.smartgitRef.envDeps.fs,
|
||||
fs: this.smartgitRef.fs,
|
||||
url: remoteUrlArg,
|
||||
});
|
||||
}
|
||||
@@ -95,16 +95,16 @@ export class GitRepo {
|
||||
/**
|
||||
* gets the url for a specific remote
|
||||
*/
|
||||
public async getUrlForRemote(remoteName: string): Promise<string> {
|
||||
public async getUrlForRemote(remoteName: string): Promise<string | undefined> {
|
||||
const remotes = await this.listRemotes();
|
||||
const existingRemote = remotes.find((remoteArg) => remoteArg.remote === remoteName);
|
||||
return existingRemote?.url;
|
||||
}
|
||||
|
||||
public async pushBranchToRemote(branchName: string, remoteName: string) {
|
||||
public async pushBranchToRemote(branchName: string, remoteName: string): Promise<void> {
|
||||
await plugins.isomorphicGit.push({
|
||||
fs: this.smartgitRef.envDeps.fs,
|
||||
http: this.smartgitRef.envDeps.http,
|
||||
fs: this.smartgitRef.fs,
|
||||
http: this.smartgitRef.http,
|
||||
ref: branchName,
|
||||
remote: remoteName,
|
||||
});
|
||||
@@ -115,7 +115,7 @@ export class GitRepo {
|
||||
*/
|
||||
public async getUncommittedDiff(excludeFiles: string[] = []): Promise<string[]> {
|
||||
const statusMatrix = await plugins.isomorphicGit.statusMatrix({
|
||||
fs: this.smartgitRef.envDeps.fs,
|
||||
fs: this.smartgitRef.fs,
|
||||
dir: this.repoDir,
|
||||
});
|
||||
|
||||
@@ -133,10 +133,10 @@ export class GitRepo {
|
||||
if (head !== 0 && workdir !== 0 && head !== workdir) {
|
||||
headContent = await plugins.isomorphicGit
|
||||
.readBlob({
|
||||
fs: this.smartgitRef.envDeps.fs,
|
||||
fs: this.smartgitRef.fs,
|
||||
dir: this.repoDir,
|
||||
oid: await plugins.isomorphicGit.resolveRef({
|
||||
fs: this.smartgitRef.envDeps.fs,
|
||||
fs: this.smartgitRef.fs,
|
||||
dir: this.repoDir,
|
||||
ref: 'HEAD',
|
||||
}),
|
||||
@@ -144,7 +144,7 @@ export class GitRepo {
|
||||
})
|
||||
.then((result) => new TextDecoder().decode(result.blob));
|
||||
|
||||
workdirContent = await this.smartgitRef.envDeps.fs.promises.readFile(
|
||||
workdirContent = await this.smartgitRef.fs.promises.readFile(
|
||||
plugins.path.join(this.repoDir, filepath),
|
||||
'utf8'
|
||||
);
|
||||
@@ -152,7 +152,7 @@ export class GitRepo {
|
||||
|
||||
// Handle added files
|
||||
if (head === 0 && workdir !== 0) {
|
||||
workdirContent = await this.smartgitRef.envDeps.fs.promises.readFile(
|
||||
workdirContent = await this.smartgitRef.fs.promises.readFile(
|
||||
plugins.path.join(this.repoDir, filepath),
|
||||
'utf8'
|
||||
);
|
||||
@@ -162,10 +162,10 @@ export class GitRepo {
|
||||
try {
|
||||
headContent = await plugins.isomorphicGit
|
||||
.readBlob({
|
||||
fs: this.smartgitRef.envDeps.fs,
|
||||
fs: this.smartgitRef.fs,
|
||||
dir: this.repoDir,
|
||||
oid: await plugins.isomorphicGit.resolveRef({
|
||||
fs: this.smartgitRef.envDeps.fs,
|
||||
fs: this.smartgitRef.fs,
|
||||
dir: this.repoDir,
|
||||
ref: 'HEAD',
|
||||
}),
|
||||
@@ -175,7 +175,7 @@ export class GitRepo {
|
||||
} catch (err) {
|
||||
// Check if this is a symlink false positive
|
||||
// Error: "was anticipated to be a tree but it is a blob" means parent path is a symlink
|
||||
if (err.message && err.message.includes('anticipated to be a tree but it is a blob')) {
|
||||
if (err instanceof Error && err.message.includes('anticipated to be a tree but it is a blob')) {
|
||||
// This file is inside a symlinked directory - skip it entirely
|
||||
continue;
|
||||
}
|
||||
@@ -187,10 +187,10 @@ export class GitRepo {
|
||||
if (head !== 0 && workdir === 0) {
|
||||
headContent = await plugins.isomorphicGit
|
||||
.readBlob({
|
||||
fs: this.smartgitRef.envDeps.fs,
|
||||
fs: this.smartgitRef.fs,
|
||||
dir: this.repoDir,
|
||||
oid: await plugins.isomorphicGit.resolveRef({
|
||||
fs: this.smartgitRef.envDeps.fs,
|
||||
fs: this.smartgitRef.fs,
|
||||
dir: this.repoDir,
|
||||
ref: 'HEAD',
|
||||
}),
|
||||
@@ -225,23 +225,25 @@ export class GitRepo {
|
||||
{ date: string; version: string; message: string }[]
|
||||
> {
|
||||
const commits = await plugins.isomorphicGit.log({
|
||||
fs: this.smartgitRef.envDeps.fs,
|
||||
fs: this.smartgitRef.fs,
|
||||
dir: this.repoDir,
|
||||
});
|
||||
|
||||
const results = [];
|
||||
const results: { date: string; version: string; message: string }[] = [];
|
||||
|
||||
for (const commit of commits) {
|
||||
let version = 'unknown';
|
||||
try {
|
||||
const packageJsonBlob = await plugins.isomorphicGit.readBlob({
|
||||
fs: this.smartgitRef.envDeps.fs,
|
||||
fs: this.smartgitRef.fs,
|
||||
dir: this.repoDir,
|
||||
oid: commit.oid,
|
||||
filepath: 'package.json',
|
||||
});
|
||||
const packageJson = JSON.parse(new TextDecoder().decode(packageJsonBlob.blob));
|
||||
version = packageJson.version;
|
||||
const packageJson = JSON.parse(new TextDecoder().decode(packageJsonBlob.blob)) as {
|
||||
version?: string;
|
||||
};
|
||||
version = packageJson.version ?? 'unknown';
|
||||
} catch (error) {
|
||||
// If package.json does not exist or any error occurs, leave version as 'unknown'
|
||||
}
|
||||
|
||||
@@ -1,9 +1,11 @@
|
||||
import * as plugins from './smartgit.plugins.js';
|
||||
import { GitRepo } from './smartgit.classes.gitrepo.js';
|
||||
|
||||
type TNodeFs = typeof import('node:fs');
|
||||
|
||||
interface IEnvDeps {
|
||||
fs: typeof import('fs') | null;
|
||||
http: any | null; // isomorphic-git http interface
|
||||
fs?: TNodeFs;
|
||||
http?: plugins.HttpClient;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -13,8 +15,8 @@ interface IEnvDeps {
|
||||
export class Smartgit {
|
||||
public smartenvInstance = new plugins.smartenv.Smartenv();
|
||||
public envDeps: IEnvDeps = {
|
||||
fs: null,
|
||||
http: null,
|
||||
fs: undefined,
|
||||
http: undefined,
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -24,8 +26,8 @@ export class Smartgit {
|
||||
public async init(): Promise<void> {
|
||||
try {
|
||||
if (this.smartenvInstance.isNode) {
|
||||
this.envDeps.fs = await this.smartenvInstance.getSafeNodeModule('fs');
|
||||
this.envDeps.http = await this.smartenvInstance.getSafeNodeModule(
|
||||
this.envDeps.fs = await this.smartenvInstance.getSafeNodeModule<TNodeFs>('fs');
|
||||
this.envDeps.http = await this.smartenvInstance.getSafeNodeModule<plugins.HttpClient>(
|
||||
'isomorphic-git/http/node'
|
||||
);
|
||||
} else {
|
||||
@@ -42,6 +44,22 @@ export class Smartgit {
|
||||
}
|
||||
}
|
||||
|
||||
public get fs(): TNodeFs {
|
||||
const fs = this.envDeps.fs;
|
||||
if (!fs) {
|
||||
throw new Error('Smartgit must be initialized before use. Call init() first.');
|
||||
}
|
||||
return fs;
|
||||
}
|
||||
|
||||
public get http(): plugins.HttpClient {
|
||||
const http = this.envDeps.http;
|
||||
if (!http) {
|
||||
throw new Error('Smartgit must be initialized before use. Call init() first.');
|
||||
}
|
||||
return http;
|
||||
}
|
||||
|
||||
/**
|
||||
* creates a new GitRepo instance by cloning from a remote URL
|
||||
* @param fromUrlArg the URL to clone from
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// node native
|
||||
import * as path from 'path';
|
||||
import * as path from 'node:path';
|
||||
|
||||
export { path };
|
||||
|
||||
@@ -14,7 +14,7 @@ export { smartenv, smartfile, smartpath, smartpromise, smartstring, smarttime };
|
||||
|
||||
// third party
|
||||
import * as diff from 'diff';
|
||||
import isomorphicGit from 'isomorphic-git';
|
||||
import isomorphicGit, { type HttpClient } from 'isomorphic-git';
|
||||
import { minimatch } from 'minimatch';
|
||||
|
||||
export { diff, isomorphicGit, minimatch };
|
||||
export { diff, isomorphicGit, minimatch, type HttpClient };
|
||||
|
||||
+4
-4
@@ -5,10 +5,10 @@
|
||||
"target": "ES2022",
|
||||
"module": "NodeNext",
|
||||
"moduleResolution": "NodeNext",
|
||||
"noImplicitAny": true,
|
||||
"esModuleInterop": true,
|
||||
"verbatimModuleSyntax": true
|
||||
"verbatimModuleSyntax": true,
|
||||
"types": ["node"]
|
||||
},
|
||||
"exclude": [
|
||||
"dist_*/**/*.d.ts"
|
||||
]
|
||||
"exclude": ["dist_*/**/*.d.ts"]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user