@build-script/package-tools 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +136 -0
- package/config/rig.json +6 -0
- package/lib/command-file-map.generated.d.ts +23 -0
- package/lib/command-file-map.generated.d.ts.map +1 -0
- package/lib/command-file-map.generated.js +27 -0
- package/lib/command-file-map.generated.js.map +1 -0
- package/lib/commands/detect-package-change.d.ts +14 -0
- package/lib/commands/detect-package-change.d.ts.map +1 -0
- package/lib/commands/detect-package-change.js +55 -0
- package/lib/commands/detect-package-change.js.map +1 -0
- package/lib/commands/monorepo-bump-version.d.ts +22 -0
- package/lib/commands/monorepo-bump-version.d.ts.map +1 -0
- package/lib/commands/monorepo-bump-version.js +121 -0
- package/lib/commands/monorepo-bump-version.js.map +1 -0
- package/lib/commands/monorepo-cnpm-sync.d.ts +8 -0
- package/lib/commands/monorepo-cnpm-sync.d.ts.map +1 -0
- package/lib/commands/monorepo-cnpm-sync.js +16 -0
- package/lib/commands/monorepo-cnpm-sync.js.map +1 -0
- package/lib/commands/monorepo-invalid.d.ts +8 -0
- package/lib/commands/monorepo-invalid.d.ts.map +1 -0
- package/lib/commands/monorepo-invalid.js +19 -0
- package/lib/commands/monorepo-invalid.js.map +1 -0
- package/lib/commands/monorepo-list.d.ts +22 -0
- package/lib/commands/monorepo-list.d.ts.map +1 -0
- package/lib/commands/monorepo-list.js +40 -0
- package/lib/commands/monorepo-list.js.map +1 -0
- package/lib/commands/monorepo-publish.d.ts +22 -0
- package/lib/commands/monorepo-publish.d.ts.map +1 -0
- package/lib/commands/monorepo-publish.js +178 -0
- package/lib/commands/monorepo-publish.js.map +1 -0
- package/lib/commands/monorepo-tsconfig.d.ts +14 -0
- package/lib/commands/monorepo-tsconfig.d.ts.map +1 -0
- package/lib/commands/monorepo-tsconfig.js +131 -0
- package/lib/commands/monorepo-tsconfig.js.map +1 -0
- package/lib/commands/monorepo-upgrade.d.ts +8 -0
- package/lib/commands/monorepo-upgrade.d.ts.map +1 -0
- package/lib/commands/monorepo-upgrade.js +110 -0
- package/lib/commands/monorepo-upgrade.js.map +1 -0
- package/lib/commands/run-if-version-mismatch.d.ts +23 -0
- package/lib/commands/run-if-version-mismatch.d.ts.map +1 -0
- package/lib/commands/run-if-version-mismatch.js +64 -0
- package/lib/commands/run-if-version-mismatch.js.map +1 -0
- package/lib/commands/sync-my-readme.d.ts +9 -0
- package/lib/commands/sync-my-readme.d.ts.map +1 -0
- package/lib/commands/sync-my-readme.js +51 -0
- package/lib/commands/sync-my-readme.js.map +1 -0
- package/lib/commands/test.d.ts +9 -0
- package/lib/commands/test.d.ts.map +1 -0
- package/lib/commands/test.js +16 -0
- package/lib/commands/test.js.map +1 -0
- package/lib/common/cache/escape-package-path.d.ts +2 -0
- package/lib/common/cache/escape-package-path.d.ts.map +1 -0
- package/lib/common/cache/escape-package-path.js +7 -0
- package/lib/common/cache/escape-package-path.js.map +1 -0
- package/lib/common/cache/native.npm.d.ts +50 -0
- package/lib/common/cache/native.npm.d.ts.map +1 -0
- package/lib/common/cache/native.npm.js +162 -0
- package/lib/common/cache/native.npm.js.map +1 -0
- package/lib/common/functions/cli.d.ts +85 -0
- package/lib/common/functions/cli.d.ts.map +1 -0
- package/lib/common/functions/cli.js +110 -0
- package/lib/common/functions/cli.js.map +1 -0
- package/lib/common/functions/global-lifecycle.d.ts +5 -0
- package/lib/common/functions/global-lifecycle.d.ts.map +1 -0
- package/lib/common/functions/global-lifecycle.js +34 -0
- package/lib/common/functions/global-lifecycle.js.map +1 -0
- package/lib/common/git/git.d.ts +12 -0
- package/lib/common/git/git.d.ts.map +1 -0
- package/lib/common/git/git.js +65 -0
- package/lib/common/git/git.js.map +1 -0
- package/lib/common/package-manager/constant.d.ts +2 -0
- package/lib/common/package-manager/constant.d.ts.map +1 -0
- package/lib/common/package-manager/constant.js +2 -0
- package/lib/common/package-manager/constant.js.map +1 -0
- package/lib/common/package-manager/driver.abstract.d.ts +41 -0
- package/lib/common/package-manager/driver.abstract.d.ts.map +1 -0
- package/lib/common/package-manager/driver.abstract.js +138 -0
- package/lib/common/package-manager/driver.abstract.js.map +1 -0
- package/lib/common/package-manager/driver.npm.d.ts +7 -0
- package/lib/common/package-manager/driver.npm.d.ts.map +1 -0
- package/lib/common/package-manager/driver.npm.js +11 -0
- package/lib/common/package-manager/driver.npm.js.map +1 -0
- package/lib/common/package-manager/driver.pnpm.d.ts +7 -0
- package/lib/common/package-manager/driver.pnpm.d.ts.map +1 -0
- package/lib/common/package-manager/driver.pnpm.js +83 -0
- package/lib/common/package-manager/driver.pnpm.js.map +1 -0
- package/lib/common/package-manager/functions.d.ts +13 -0
- package/lib/common/package-manager/functions.d.ts.map +1 -0
- package/lib/common/package-manager/functions.js +95 -0
- package/lib/common/package-manager/functions.js.map +1 -0
- package/lib/common/package-manager/package-json.d.ts +5 -0
- package/lib/common/package-manager/package-json.d.ts.map +1 -0
- package/lib/common/package-manager/package-json.js +50 -0
- package/lib/common/package-manager/package-json.js.map +1 -0
- package/lib/common/package-manager/package-manager.d.ts +5 -0
- package/lib/common/package-manager/package-manager.d.ts.map +1 -0
- package/lib/common/package-manager/package-manager.js +27 -0
- package/lib/common/package-manager/package-manager.js.map +1 -0
- package/lib/common/package-manager/proxy.d.ts +5 -0
- package/lib/common/package-manager/proxy.d.ts.map +1 -0
- package/lib/common/package-manager/proxy.js +116 -0
- package/lib/common/package-manager/proxy.js.map +1 -0
- package/lib/common/shared-jobs/cnpm-sync.d.ts +4 -0
- package/lib/common/shared-jobs/cnpm-sync.d.ts.map +1 -0
- package/lib/common/shared-jobs/cnpm-sync.js +52 -0
- package/lib/common/shared-jobs/cnpm-sync.js.map +1 -0
- package/lib/common/shared-jobs/detect-change-job.d.ts +12 -0
- package/lib/common/shared-jobs/detect-change-job.d.ts.map +1 -0
- package/lib/common/shared-jobs/detect-change-job.js +52 -0
- package/lib/common/shared-jobs/detect-change-job.js.map +1 -0
- package/lib/common/shared-jobs/publish-package-version-job.d.ts +4 -0
- package/lib/common/shared-jobs/publish-package-version-job.d.ts.map +1 -0
- package/lib/common/shared-jobs/publish-package-version-job.js +40 -0
- package/lib/common/shared-jobs/publish-package-version-job.js.map +1 -0
- package/lib/common/taball/decompress.d.ts +2 -0
- package/lib/common/taball/decompress.d.ts.map +1 -0
- package/lib/common/taball/decompress.js +39 -0
- package/lib/common/taball/decompress.js.map +1 -0
- package/lib/common/taball/file-download.d.ts +15 -0
- package/lib/common/taball/file-download.d.ts.map +1 -0
- package/lib/common/taball/file-download.js +137 -0
- package/lib/common/taball/file-download.js.map +1 -0
- package/lib/common/temp-work-folder.d.ts +20 -0
- package/lib/common/temp-work-folder.d.ts.map +1 -0
- package/lib/common/temp-work-folder.js +68 -0
- package/lib/common/temp-work-folder.js.map +1 -0
- package/lib/common/version.generated.d.ts +12 -0
- package/lib/common/version.generated.d.ts.map +1 -0
- package/lib/common/version.generated.js +17 -0
- package/lib/common/version.generated.js.map +1 -0
- package/lib/main.d.ts +2 -0
- package/lib/main.d.ts.map +1 -0
- package/lib/main.js +115 -0
- package/lib/main.js.map +1 -0
- package/lib/tsconfig.tsbuildinfo +1 -0
- package/load.js +12 -0
- package/package.json +59 -0
- package/src/command-file-map.generated.ts +28 -0
- package/src/command-file-map.generator.ts +23 -0
- package/src/commands/detect-package-change.ts +57 -0
- package/src/commands/monorepo-bump-version.ts +152 -0
- package/src/commands/monorepo-cnpm-sync.ts +19 -0
- package/src/commands/monorepo-invalid.ts +22 -0
- package/src/commands/monorepo-list.ts +46 -0
- package/src/commands/monorepo-publish.ts +227 -0
- package/src/commands/monorepo-tsconfig.ts +156 -0
- package/src/commands/monorepo-upgrade.ts +131 -0
- package/src/commands/run-if-version-mismatch.ts +78 -0
- package/src/commands/sync-my-readme.ts +56 -0
- package/src/commands/test.ts +18 -0
- package/src/common/cache/escape-package-path.ts +6 -0
- package/src/common/cache/native.npm.ts +206 -0
- package/src/common/functions/cli.ts +145 -0
- package/src/common/functions/global-lifecycle.ts +40 -0
- package/src/common/git/git.ts +75 -0
- package/src/common/package-manager/constant.ts +1 -0
- package/src/common/package-manager/driver.abstract.ts +162 -0
- package/src/common/package-manager/driver.npm.ts +13 -0
- package/src/common/package-manager/driver.pnpm.ts +113 -0
- package/src/common/package-manager/functions.ts +117 -0
- package/src/common/package-manager/package-json.ts +56 -0
- package/src/common/package-manager/package-manager.ts +46 -0
- package/src/common/package-manager/proxy.ts +129 -0
- package/src/common/shared-jobs/cnpm-sync.ts +57 -0
- package/src/common/shared-jobs/detect-change-job.ts +76 -0
- package/src/common/shared-jobs/publish-package-version-job.ts +46 -0
- package/src/common/taball/decompress.ts +41 -0
- package/src/common/taball/file-download.ts +166 -0
- package/src/common/temp-work-folder.ts +80 -0
- package/src/common/version.generated.ts +18 -0
- package/src/common/version.generator.ts +15 -0
- package/src/global.d.ts +17 -0
- package/src/main.ts +144 -0
- package/src/tsconfig.json +11 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constant.d.ts","sourceRoot":"","sources":["../../../src/common/package-manager/constant.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,gCAAgC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constant.js","sourceRoot":"","sources":["../../../src/common/package-manager/constant.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,oBAAoB,GAAG,6BAA6B,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { MonorepoWorkspace } from '@build-script/monorepo-lib';
|
|
2
|
+
import { NpmCacheHandler } from '../cache/native.npm.js';
|
|
3
|
+
export interface IUploadResult {
|
|
4
|
+
name: string;
|
|
5
|
+
version: string;
|
|
6
|
+
published: boolean;
|
|
7
|
+
}
|
|
8
|
+
export declare enum PackageManagerUsageKind {
|
|
9
|
+
Read = 0,
|
|
10
|
+
Write = 1
|
|
11
|
+
}
|
|
12
|
+
export declare abstract class PackageManager {
|
|
13
|
+
readonly usageKind: PackageManagerUsageKind;
|
|
14
|
+
readonly workspace: MonorepoWorkspace;
|
|
15
|
+
abstract readonly binary: string;
|
|
16
|
+
readonly projectPath: string;
|
|
17
|
+
private readonly configTemp;
|
|
18
|
+
constructor(usageKind: PackageManagerUsageKind, workspace: MonorepoWorkspace, subdir?: string);
|
|
19
|
+
install(): import("execa").ResultPromise<{
|
|
20
|
+
cwd: string;
|
|
21
|
+
stdio: "inherit";
|
|
22
|
+
}>;
|
|
23
|
+
pack(saveAs: string, packagePath?: string): Promise<string>;
|
|
24
|
+
protected abstract _pack(saveAs: string, packagePath: string): Promise<string>;
|
|
25
|
+
loadPackageJson(): Promise<any>;
|
|
26
|
+
getScope(): Promise<any>;
|
|
27
|
+
getConfig(key: string): Promise<any>;
|
|
28
|
+
private _get_config;
|
|
29
|
+
protected abstract _uploadTarball(pack: string, cwd: string): Promise<IUploadResult>;
|
|
30
|
+
uploadTarball(pack: string, cwd?: string): Promise<IUploadResult>;
|
|
31
|
+
protected _execGetOut(cwd: string, cmds: string[], reject?: boolean): Promise<{
|
|
32
|
+
readonly stdout: string;
|
|
33
|
+
readonly stderr: string;
|
|
34
|
+
readonly all: string;
|
|
35
|
+
}>;
|
|
36
|
+
private _cachedReg?;
|
|
37
|
+
getNpmRegistry(): Promise<string>;
|
|
38
|
+
private _cache_handler?;
|
|
39
|
+
createCacheHandler(): Promise<NpmCacheHandler>;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=driver.abstract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"driver.abstract.d.ts","sourceRoot":"","sources":["../../../src/common/package-manager/driver.abstract.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAMpE,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAMzD,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;CACnB;AAED,oBAAY,uBAAuB;IAClC,IAAI,IAAI;IACR,KAAK,IAAI;CACT;AAED,8BAAsB,cAAc;aAMlB,SAAS,EAAE,uBAAuB;aAClC,SAAS,EAAE,iBAAiB;IAN7C,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACjC,SAAgB,WAAW,EAAE,MAAM,CAAC;IACpC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAGX,SAAS,EAAE,uBAAuB,EAClC,SAAS,EAAE,iBAAiB,EAC5C,MAAM,SAAgB;IAShB,OAAO;;;;IAIP,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,SAAmB;IAK1D,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAExE,eAAe;IAIf,QAAQ;IAUR,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;YAe5B,WAAW;IAczB,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IACvE,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAE,MAAyB;cAYvD,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,UAAO;;;;;IAuBtE,OAAO,CAAC,UAAU,CAAC,CAAS;IACf,cAAc;IAkB3B,OAAO,CAAC,cAAc,CAAC,CAAkB;IACnC,kBAAkB;CAWxB"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { ensureLinkTarget } from '@idlebox/ensure-symlink';
|
|
2
|
+
import { logger } from '@idlebox/logger';
|
|
3
|
+
import { exists, writeFileIfChange } from '@idlebox/node';
|
|
4
|
+
import { execa } from 'execa';
|
|
5
|
+
import { dirname, resolve } from 'node:path';
|
|
6
|
+
import { NpmCacheHandler } from '../cache/native.npm.js';
|
|
7
|
+
import { registryInput } from '../functions/cli.js';
|
|
8
|
+
import { TempWorkingFolder } from '../temp-work-folder.js';
|
|
9
|
+
import { DEFAULT_NPM_REGISTRY } from './constant.js';
|
|
10
|
+
import { cachedPackageJson } from './package-json.js';
|
|
11
|
+
export var PackageManagerUsageKind;
|
|
12
|
+
(function (PackageManagerUsageKind) {
|
|
13
|
+
PackageManagerUsageKind[PackageManagerUsageKind["Read"] = 0] = "Read";
|
|
14
|
+
PackageManagerUsageKind[PackageManagerUsageKind["Write"] = 1] = "Write";
|
|
15
|
+
})(PackageManagerUsageKind || (PackageManagerUsageKind = {}));
|
|
16
|
+
export class PackageManager {
|
|
17
|
+
usageKind;
|
|
18
|
+
workspace;
|
|
19
|
+
projectPath;
|
|
20
|
+
configTemp;
|
|
21
|
+
constructor(usageKind, workspace, subdir = process.cwd()) {
|
|
22
|
+
this.usageKind = usageKind;
|
|
23
|
+
this.workspace = workspace;
|
|
24
|
+
this.configTemp = new TempWorkingFolder(this.workspace, 'package-manager', true);
|
|
25
|
+
this.projectPath = resolve(workspace.root, subdir);
|
|
26
|
+
if (!this.projectPath.startsWith(workspace.root)) {
|
|
27
|
+
throw new Error(`project "${this.projectPath}" is outside the workspace root`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
install() {
|
|
31
|
+
return execa(this.binary, ['install'], { cwd: this.projectPath, stdio: 'inherit' });
|
|
32
|
+
}
|
|
33
|
+
pack(saveAs, packagePath = this.projectPath) {
|
|
34
|
+
logger.verbose(`打包项目: ${packagePath}`);
|
|
35
|
+
return this._pack(saveAs, packagePath);
|
|
36
|
+
}
|
|
37
|
+
async loadPackageJson() {
|
|
38
|
+
return cachedPackageJson(resolve(this.projectPath, 'package.json'));
|
|
39
|
+
}
|
|
40
|
+
async getScope() {
|
|
41
|
+
const pkg = await this.loadPackageJson();
|
|
42
|
+
if (pkg.name?.startsWith('@')) {
|
|
43
|
+
const name = pkg.name.split('/')[0];
|
|
44
|
+
return name;
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
return undefined;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
async getConfig(key) {
|
|
51
|
+
const pkgPublishConfig = this.workspace.getNpmRCPath(true);
|
|
52
|
+
if (this.usageKind === PackageManagerUsageKind.Read || !(await exists(pkgPublishConfig))) {
|
|
53
|
+
return this._get_config(dirname(this.workspace.getNpmRCPath(false)), key);
|
|
54
|
+
}
|
|
55
|
+
if (!this.configTemp.exists) {
|
|
56
|
+
await this.configTemp.mkdir();
|
|
57
|
+
await ensureLinkTarget(pkgPublishConfig, `${this.configTemp.path}/.npmrc`);
|
|
58
|
+
await writeFileIfChange(`${this.configTemp.path}/package.json`, '{}');
|
|
59
|
+
}
|
|
60
|
+
return this._get_config(this.configTemp.path, key);
|
|
61
|
+
}
|
|
62
|
+
async _get_config(cwd, key) {
|
|
63
|
+
const scope = await this.getScope();
|
|
64
|
+
if (scope) {
|
|
65
|
+
const { stdout } = await this._execGetOut(cwd, ['config', 'get', `${scope}:${key}`]);
|
|
66
|
+
logger.debug('$ npm config get %s:%s -> %s', scope, key, stdout);
|
|
67
|
+
if (`${stdout}` !== 'undefined') {
|
|
68
|
+
return stdout;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
const { stdout } = await this._execGetOut(cwd, ['config', 'get', key]);
|
|
72
|
+
logger.debug('$ npm config get %s -> %s', key, stdout);
|
|
73
|
+
return stdout === 'undefined' ? undefined : stdout;
|
|
74
|
+
}
|
|
75
|
+
async uploadTarball(pack, cwd = this.projectPath) {
|
|
76
|
+
logger.debug(`上传压缩包: ${pack}`);
|
|
77
|
+
try {
|
|
78
|
+
const r = await this._uploadTarball(pack, cwd);
|
|
79
|
+
logger.debug(' 发布成功: %s @ %s [%s]', r.name, r.version, r.published);
|
|
80
|
+
return r;
|
|
81
|
+
}
|
|
82
|
+
catch (e) {
|
|
83
|
+
logger.error ` tarball发布失败! ${e}`;
|
|
84
|
+
throw e;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
async _execGetOut(cwd, cmds, reject = true) {
|
|
88
|
+
const result = await execa(this.binary, cmds, {
|
|
89
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
90
|
+
cwd: cwd,
|
|
91
|
+
reject: reject,
|
|
92
|
+
stripFinalNewline: true,
|
|
93
|
+
encoding: 'utf8',
|
|
94
|
+
all: true,
|
|
95
|
+
});
|
|
96
|
+
return {
|
|
97
|
+
get stdout() {
|
|
98
|
+
return result.stdout.trim();
|
|
99
|
+
},
|
|
100
|
+
get stderr() {
|
|
101
|
+
return result.stderr.trim();
|
|
102
|
+
},
|
|
103
|
+
get all() {
|
|
104
|
+
return result.all.trim();
|
|
105
|
+
},
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
_cachedReg;
|
|
109
|
+
async getNpmRegistry() {
|
|
110
|
+
if (!this._cachedReg) {
|
|
111
|
+
switch (registryInput) {
|
|
112
|
+
case 'detect':
|
|
113
|
+
logger.debug(`检测registry地址: ${registryInput}`);
|
|
114
|
+
this._cachedReg = await this.getConfig('registry');
|
|
115
|
+
break;
|
|
116
|
+
default:
|
|
117
|
+
if (!registryInput.startsWith('https://')) {
|
|
118
|
+
throw new Error(`不支持的--registry协议: ${registryInput}`);
|
|
119
|
+
}
|
|
120
|
+
logger.debug('使用命令行提供的registry地址 (%s)', registryInput);
|
|
121
|
+
this._cachedReg = registryInput;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return this._cachedReg || DEFAULT_NPM_REGISTRY;
|
|
125
|
+
}
|
|
126
|
+
_cache_handler;
|
|
127
|
+
async createCacheHandler() {
|
|
128
|
+
if (!this._cache_handler) {
|
|
129
|
+
const registry = await this.getNpmRegistry();
|
|
130
|
+
const path = await this.getConfig('cache');
|
|
131
|
+
if (!path)
|
|
132
|
+
throw new Error('npm config get cache返回为空');
|
|
133
|
+
this._cache_handler = new NpmCacheHandler(this, registry, resolve(path, '_cacache'));
|
|
134
|
+
}
|
|
135
|
+
return this._cache_handler;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=driver.abstract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"driver.abstract.js","sourceRoot":"","sources":["../../../src/common/package-manager/driver.abstract.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { PackageManager, type IUploadResult } from './driver.abstract.js';
|
|
2
|
+
export declare class NPM extends PackageManager {
|
|
3
|
+
binary: string;
|
|
4
|
+
_pack(_saveAs: string, _packagePath: string): Promise<string>;
|
|
5
|
+
_uploadTarball(_pack: string, _cwd: string): Promise<IUploadResult>;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=driver.npm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"driver.npm.d.ts","sourceRoot":"","sources":["../../../src/common/package-manager/driver.npm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1E,qBAAa,GAAI,SAAQ,cAAc;IAC7B,MAAM,SAAS;IAET,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI7D,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;CAGlF"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { PackageManager } from './driver.abstract.js';
|
|
2
|
+
export class NPM extends PackageManager {
|
|
3
|
+
binary = 'npm';
|
|
4
|
+
async _pack(_saveAs, _packagePath) {
|
|
5
|
+
throw new Error('Method not implemented.');
|
|
6
|
+
}
|
|
7
|
+
async _uploadTarball(_pack, _cwd) {
|
|
8
|
+
throw new Error('Method not implemented.');
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=driver.npm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"driver.npm.js","sourceRoot":"","sources":["../../../src/common/package-manager/driver.npm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAsB,MAAM,sBAAsB,CAAC;AAE1E,MAAM,OAAO,GAAI,SAAQ,cAAc;IAC7B,MAAM,GAAG,KAAK,CAAC;IAEf,KAAK,CAAC,KAAK,CAAC,OAAe,EAAE,YAAoB;QACzD,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC5C,CAAC;IAEQ,KAAK,CAAC,cAAc,CAAC,KAAa,EAAE,IAAY;QACxD,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC5C,CAAC;CACD"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { PackageManager, type IUploadResult } from './driver.abstract.js';
|
|
2
|
+
export declare class PNPM extends PackageManager {
|
|
3
|
+
binary: string;
|
|
4
|
+
_pack(saveAs: string, packagePath: string): Promise<string>;
|
|
5
|
+
_uploadTarball(pack: string, cwd: string): Promise<IUploadResult>;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=driver.pnpm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"driver.pnpm.d.ts","sourceRoot":"","sources":["../../../src/common/package-manager/driver.pnpm.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,sBAAsB,CAAC;AA0C1E,qBAAa,IAAK,SAAQ,cAAc;IAC9B,MAAM,SAAU;IAEV,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM;IAmBzC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;CA2ChF"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { prettyPrintError } from '@idlebox/common';
|
|
2
|
+
import { logger } from '@idlebox/logger';
|
|
3
|
+
import { execLazyError, exists } from '@idlebox/node';
|
|
4
|
+
import { resolve } from 'node:path';
|
|
5
|
+
import { isVerbose } from '../functions/cli.js';
|
|
6
|
+
import { PackageManager } from './driver.abstract.js';
|
|
7
|
+
class RegistryError extends Error {
|
|
8
|
+
error;
|
|
9
|
+
constructor(error) {
|
|
10
|
+
super(error.summary || 'no error summary');
|
|
11
|
+
this.error = error;
|
|
12
|
+
if (this.error.detail) {
|
|
13
|
+
this.stack = this.error.detail;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
get code() {
|
|
17
|
+
return this.error.code;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
const duplicatePublishRegex = /You cannot publish over the previously published versions: (.+)/;
|
|
21
|
+
const duplicatePublishOnUnpublishRegex = /Cannot publish over previously published version "(.+)"/;
|
|
22
|
+
export class PNPM extends PackageManager {
|
|
23
|
+
binary = 'pnpm';
|
|
24
|
+
async _pack(saveAs, packagePath) {
|
|
25
|
+
const chProcess = await execLazyError(this.binary, ['pack', '--out', saveAs], {
|
|
26
|
+
cwd: packagePath,
|
|
27
|
+
verbose: isVerbose,
|
|
28
|
+
env: { LANG: 'C.UTF-8', LC_ALL: 'C.UTF-8' },
|
|
29
|
+
});
|
|
30
|
+
const lastLine = chProcess.stdout.trim().split('\n').pop();
|
|
31
|
+
if (!lastLine) {
|
|
32
|
+
throw new Error('impossible: string split empty?');
|
|
33
|
+
}
|
|
34
|
+
const output = resolve(packagePath, lastLine);
|
|
35
|
+
if (await exists(output)) {
|
|
36
|
+
return output;
|
|
37
|
+
}
|
|
38
|
+
throw new Error(`pnpm pack失败: ${output} 不存在`);
|
|
39
|
+
}
|
|
40
|
+
async _uploadTarball(pack, cwd) {
|
|
41
|
+
let result;
|
|
42
|
+
const cmds = ['publish', pack, '--json', '--no-git-checks'];
|
|
43
|
+
const { stdout, all } = await this._execGetOut(cwd, cmds, false);
|
|
44
|
+
try {
|
|
45
|
+
const out = JSON.parse(stdout);
|
|
46
|
+
if (out.error) {
|
|
47
|
+
throw new RegistryError(out.error);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
result = out;
|
|
51
|
+
if (!result.name || !result.version) {
|
|
52
|
+
logger.fatal `npm registry return invalid response:\n long<${stdout}>`;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
catch (e) {
|
|
57
|
+
if (e instanceof RegistryError) {
|
|
58
|
+
let dupVer;
|
|
59
|
+
dupVer = duplicatePublishRegex.exec(e.message)?.[1];
|
|
60
|
+
if (!dupVer) {
|
|
61
|
+
dupVer = duplicatePublishOnUnpublishRegex.exec(e.message)?.[1];
|
|
62
|
+
}
|
|
63
|
+
if (dupVer) {
|
|
64
|
+
return {
|
|
65
|
+
published: false,
|
|
66
|
+
name: '', // TODO
|
|
67
|
+
version: dupVer,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
logger.warn `publish long<${pack}> error: ${e}`;
|
|
72
|
+
console.error(all);
|
|
73
|
+
prettyPrintError(`${this.binary} ${cmds.join(' ')}`, e);
|
|
74
|
+
throw e;
|
|
75
|
+
}
|
|
76
|
+
return {
|
|
77
|
+
published: true,
|
|
78
|
+
name: result.name,
|
|
79
|
+
version: result.version,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=driver.pnpm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"driver.pnpm.js","sourceRoot":"","sources":["../../../src/common/package-manager/driver.pnpm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAsB,MAAM,sBAAsB,CAAC;AAyB1E,MAAM,aAAc,SAAQ,KAAK;IACH;IAA7B,YAA6B,KAAyB;QACrD,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,kBAAkB,CAAC,CAAC;QADf,UAAK,GAAL,KAAK,CAAoB;QAGrD,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACvB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QAChC,CAAC;IACF,CAAC;IAED,IAAI,IAAI;QACP,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACxB,CAAC;CACD;AAED,MAAM,qBAAqB,GAAG,iEAAiE,CAAC;AAChG,MAAM,gCAAgC,GAAG,yDAAyD,CAAC;AAEnG,MAAM,OAAO,IAAK,SAAQ,cAAc;IAC9B,MAAM,GAAG,MAAM,CAAC;IAEhB,KAAK,CAAC,KAAK,CAAC,MAAc,EAAE,WAAmB;QACvD,MAAM,SAAS,GAAG,MAAM,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE;YAC7E,GAAG,EAAE,WAAW;YAChB,OAAO,EAAE,SAAS;YAClB,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE;SAC3C,CAAC,CAAC;QACH,MAAM,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;QAC3D,IAAI,CAAC,QAAQ,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACpD,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAE9C,IAAI,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1B,OAAO,MAAM,CAAC;QACf,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,gBAAgB,MAAM,MAAM,CAAC,CAAC;IAC/C,CAAC;IAEQ,KAAK,CAAC,cAAc,CAAC,IAAY,EAAE,GAAW;QACtD,IAAI,MAA0B,CAAC;QAC/B,MAAM,IAAI,GAAG,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC;QAC5D,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACjE,IAAI,CAAC;YACJ,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC/B,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACpC,CAAC;iBAAM,CAAC;gBACP,MAAM,GAAG,GAAG,CAAC;gBACb,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;oBACrC,MAAM,CAAC,KAAK,CAAA,gDAAgD,MAAM,GAAG,CAAC;gBACvE,CAAC;YACF,CAAC;QACF,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YACjB,IAAI,CAAC,YAAY,aAAa,EAAE,CAAC;gBAChC,IAAI,MAA0B,CAAC;gBAC/B,MAAM,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACpD,IAAI,CAAC,MAAM,EAAE,CAAC;oBACb,MAAM,GAAG,gCAAgC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBAChE,CAAC;gBACD,IAAI,MAAM,EAAE,CAAC;oBACZ,OAAO;wBACN,SAAS,EAAE,KAAK;wBAChB,IAAI,EAAE,EAAE,EAAE,OAAO;wBACjB,OAAO,EAAE,MAAM;qBACf,CAAC;gBACH,CAAC;YACF,CAAC;YAED,MAAM,CAAC,IAAI,CAAA,gBAAgB,IAAI,YAAY,CAAC,EAAE,CAAC;YAC/C,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnB,gBAAgB,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAExD,MAAM,CAAC,CAAC;QACT,CAAC;QAED,OAAO;YACN,SAAS,EAAE,IAAI;YACf,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,OAAO,EAAE,MAAM,CAAC,OAAO;SACvB,CAAC;IACH,CAAC;CACD"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 将包规范字符串分割为包名和版本号
|
|
3
|
+
* @param value package spec, e.g. `@x/y@ver` or `@x/y`
|
|
4
|
+
*/
|
|
5
|
+
export declare function splitPackageSpecSimple(value: string): string[];
|
|
6
|
+
export declare const isSingleVersionString: RegExp;
|
|
7
|
+
/**
|
|
8
|
+
* 检查版本号是否是 version 或者 npm:@package@version 的格式
|
|
9
|
+
* 然后返回alias和version
|
|
10
|
+
*/
|
|
11
|
+
export declare function splitAliasVersion(version: string): [string, string];
|
|
12
|
+
export declare function resolveNpm(versions: Map<string, string>): Promise<Map<string, string>>;
|
|
13
|
+
//# sourceMappingURL=functions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"functions.d.ts","sourceRoot":"","sources":["../../../src/common/package-manager/functions.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,YAInD;AAED,eAAO,MAAM,qBAAqB,QAA4D,CAAC;AAE/F;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAenE;AAyDD,wBAAsB,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,gCAwB7D"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { getNpmConfigValue } from '@idlebox/node';
|
|
2
|
+
import pacote from 'pacote';
|
|
3
|
+
import asyncPool from 'tiny-async-pool';
|
|
4
|
+
/**
|
|
5
|
+
* 将包规范字符串分割为包名和版本号
|
|
6
|
+
* @param value package spec, e.g. `@x/y@ver` or `@x/y`
|
|
7
|
+
*/
|
|
8
|
+
export function splitPackageSpecSimple(value) {
|
|
9
|
+
const at = value.indexOf('@', 1);
|
|
10
|
+
if (at === -1)
|
|
11
|
+
return [value, '']; // @xxx/yyy | xxx
|
|
12
|
+
return [value.slice(0, at), value.slice(at + 1)]; // zzz@ver
|
|
13
|
+
}
|
|
14
|
+
export const isSingleVersionString = /^(?<prefix>[><]=?|[~^])?(?<version>(\d+\.)*\d+(-\S+)?)$/;
|
|
15
|
+
/**
|
|
16
|
+
* 检查版本号是否是 version 或者 npm:@package@version 的格式
|
|
17
|
+
* 然后返回alias和version
|
|
18
|
+
*/
|
|
19
|
+
export function splitAliasVersion(version) {
|
|
20
|
+
const m = version.match(isSingleVersionString);
|
|
21
|
+
if (m?.groups?.version) {
|
|
22
|
+
return ['', m.groups.version];
|
|
23
|
+
}
|
|
24
|
+
if (version.startsWith('npm:')) {
|
|
25
|
+
const [alias, ver] = splitPackageSpecSimple(version.slice(4));
|
|
26
|
+
const m = ver.match(isSingleVersionString);
|
|
27
|
+
if (m?.groups?.version) {
|
|
28
|
+
return [alias, m.groups.version];
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return ['', ''];
|
|
32
|
+
}
|
|
33
|
+
async function resolveNpmVersion([packageName, currentVersion]) {
|
|
34
|
+
let lastError;
|
|
35
|
+
let packageReference = packageName;
|
|
36
|
+
if (currentVersion.startsWith('workspace:')) {
|
|
37
|
+
throw new Error('workspace package pass into npm resolver');
|
|
38
|
+
}
|
|
39
|
+
if (currentVersion.startsWith('npm:')) {
|
|
40
|
+
packageReference = currentVersion.substring(4);
|
|
41
|
+
const vsplit = packageReference.lastIndexOf('@');
|
|
42
|
+
if (vsplit > 1) {
|
|
43
|
+
packageReference = packageReference.substring(0, vsplit);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
else if (currentVersion.includes('/')) {
|
|
47
|
+
console.error('[npm:resolve] version of "%s: %s" is not supported', packageName, currentVersion);
|
|
48
|
+
return [packageName, currentVersion, currentVersion];
|
|
49
|
+
}
|
|
50
|
+
const d = new Date();
|
|
51
|
+
d.setMinutes(d.getMinutes() - 1);
|
|
52
|
+
let retryCnt = 5;
|
|
53
|
+
let currentTry = 0;
|
|
54
|
+
let maxRetry = 100;
|
|
55
|
+
while (--retryCnt && --maxRetry && ++currentTry) {
|
|
56
|
+
try {
|
|
57
|
+
const pkgjson = await pacote.manifest(`${packageReference}@latest`, { before: d });
|
|
58
|
+
let newVersion = `^${pkgjson.version}`;
|
|
59
|
+
if (packageReference !== packageName) {
|
|
60
|
+
newVersion = `npm:${packageReference}@${newVersion}`;
|
|
61
|
+
}
|
|
62
|
+
return [packageName, newVersion, currentVersion];
|
|
63
|
+
}
|
|
64
|
+
catch (e) {
|
|
65
|
+
console.error('[npm:resolve][try %s] failed fetch package "%s": [%s] %s', currentTry, packageName, e.code, e.message);
|
|
66
|
+
lastError = e;
|
|
67
|
+
if (e.code === 'ECONNRESET') {
|
|
68
|
+
retryCnt++;
|
|
69
|
+
}
|
|
70
|
+
else if (e.code === 'E404') {
|
|
71
|
+
return [packageName, currentVersion, currentVersion];
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
throw lastError;
|
|
76
|
+
}
|
|
77
|
+
const cs = process.stdout.isTTY ? '\x1B[38;5;12m' : '';
|
|
78
|
+
const ce = process.stdout.isTTY ? '\x1B[0m' : '';
|
|
79
|
+
export async function resolveNpm(versions) {
|
|
80
|
+
let i = 1;
|
|
81
|
+
const total = versions.size;
|
|
82
|
+
const padto = total.toFixed(0).length;
|
|
83
|
+
const nc = Number.parseInt((await getNpmConfigValue('network-concurrency')) || '4');
|
|
84
|
+
for await (const [packName, newVersion, currentVersion] of asyncPool(nc, [...versions.entries()], resolveNpmVersion)) {
|
|
85
|
+
versions.set(packName, newVersion);
|
|
86
|
+
let updated = '';
|
|
87
|
+
if (currentVersion && currentVersion !== newVersion) {
|
|
88
|
+
updated = ` ${cs}(from ${currentVersion})${ce}`;
|
|
89
|
+
}
|
|
90
|
+
console.log(` - [${i.toFixed().padStart(padto, ' ')}/${total}] ${packName}: ${newVersion}${updated}`);
|
|
91
|
+
i++;
|
|
92
|
+
}
|
|
93
|
+
return versions;
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=functions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"functions.js","sourceRoot":"","sources":["../../../src/common/package-manager/functions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { IPackageJson } from '@idlebox/common';
|
|
2
|
+
export declare function makePackageJsonOrderConsistence(root: string): Promise<void>;
|
|
3
|
+
export declare function cachedPackageJson(path: string): Promise<any>;
|
|
4
|
+
export declare function increaseVersion(pkg: IPackageJson, current: string): Promise<string>;
|
|
5
|
+
//# sourceMappingURL=package-json.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-json.d.ts","sourceRoot":"","sources":["../../../src/common/package-manager/package-json.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAwBpD,wBAAsB,+BAA+B,CAAC,IAAI,EAAE,MAAM,iBAOjE;AAGD,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,gBASnD;AAED,wBAAsB,eAAe,CAAC,GAAG,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,mBAUvE"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { loadJsonFile, writeJsonFileBack } from '@idlebox/json-edit';
|
|
2
|
+
import { logger } from '@idlebox/logger';
|
|
3
|
+
import { readFile, writeFile } from 'node:fs/promises';
|
|
4
|
+
import { resolve } from 'node:path';
|
|
5
|
+
import { inc } from 'semver';
|
|
6
|
+
function sort(object) {
|
|
7
|
+
if (typeof object !== 'object') {
|
|
8
|
+
// Not to sort the array
|
|
9
|
+
return object;
|
|
10
|
+
}
|
|
11
|
+
if (Array.isArray(object)) {
|
|
12
|
+
return object.sort();
|
|
13
|
+
}
|
|
14
|
+
const keys = Object.keys(object);
|
|
15
|
+
keys.sort();
|
|
16
|
+
const newObject = {};
|
|
17
|
+
for (const key of keys) {
|
|
18
|
+
newObject[key] = sort(object[key]);
|
|
19
|
+
}
|
|
20
|
+
return newObject;
|
|
21
|
+
}
|
|
22
|
+
export async function makePackageJsonOrderConsistence(root) {
|
|
23
|
+
const filepath = resolve(root, 'package.json');
|
|
24
|
+
const data = JSON.parse(await readFile(filepath, 'utf-8'));
|
|
25
|
+
const json = sort(data);
|
|
26
|
+
await writeFile(filepath, JSON.stringify(json, null, 2), 'utf-8');
|
|
27
|
+
delete pkgCache[filepath];
|
|
28
|
+
}
|
|
29
|
+
const pkgCache = {};
|
|
30
|
+
export async function cachedPackageJson(path) {
|
|
31
|
+
const exists = pkgCache[path];
|
|
32
|
+
if (exists) {
|
|
33
|
+
return exists;
|
|
34
|
+
}
|
|
35
|
+
const data = await loadJsonFile(path);
|
|
36
|
+
pkgCache[path] = data;
|
|
37
|
+
return data;
|
|
38
|
+
}
|
|
39
|
+
export async function increaseVersion(pkg, current) {
|
|
40
|
+
const v = inc(current, 'patch');
|
|
41
|
+
if (!v) {
|
|
42
|
+
throw new Error(`无法为"${pkg.name}"当前版本"${current}"增加版本号`);
|
|
43
|
+
}
|
|
44
|
+
pkg.version = v;
|
|
45
|
+
logger.log('新版本: %s', pkg.version);
|
|
46
|
+
const ch = await writeJsonFileBack(pkg);
|
|
47
|
+
logger.debug('package.json回写: %s', ch);
|
|
48
|
+
return v;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=package-json.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-json.js","sourceRoot":"","sources":["../../../src/common/package-manager/package-json.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAE7B,SAAS,IAAI,CAAC,MAAW;IACxB,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAChC,wBAAwB;QACxB,OAAO,MAAM,CAAC;IACf,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjC,IAAI,CAAC,IAAI,EAAE,CAAC;IACZ,MAAM,SAAS,GAAQ,EAAE,CAAC;IAC1B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,SAAS,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,+BAA+B,CAAC,IAAY;IACjE,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IACxB,MAAM,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAElE,OAAO,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,QAAQ,GAAiC,EAAE,CAAC;AAClD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAY;IACnD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,MAAM,EAAE,CAAC;QACZ,OAAO,MAAM,CAAC;IACf,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,CAAC;IACtC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACtB,OAAO,IAAI,CAAC;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,GAAiB,EAAE,OAAe;IACvE,MAAM,CAAC,GAAG,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAChC,IAAI,CAAC,CAAC,EAAE,CAAC;QACR,MAAM,IAAI,KAAK,CAAC,OAAO,GAAG,CAAC,IAAI,SAAS,OAAO,QAAQ,CAAC,CAAC;IAC1D,CAAC;IACD,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC;IAChB,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,EAAE,GAAG,MAAM,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,CAAC,KAAK,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;IACvC,OAAO,CAAC,CAAC;AACV,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type MonorepoWorkspace } from '@build-script/monorepo-lib';
|
|
2
|
+
import type { PackageManager, PackageManagerUsageKind } from './driver.abstract.js';
|
|
3
|
+
export type IPackageManager = PackageManager;
|
|
4
|
+
export declare function createPackageManager(usage: PackageManagerUsageKind, workspace?: MonorepoWorkspace, subdir?: string): Promise<IPackageManager>;
|
|
5
|
+
//# sourceMappingURL=package-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-manager.d.ts","sourceRoot":"","sources":["../../../src/common/package-manager/package-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAmB,KAAK,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAErF,OAAO,KAAK,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAKpF,MAAM,MAAM,eAAe,GAAG,cAAc,CAAC;AAU7C,wBAAsB,oBAAoB,CACzC,KAAK,EAAE,uBAAuB,EAC9B,SAAS,CAAC,EAAE,iBAAiB,EAC7B,MAAM,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,eAAe,CAAC,CAwB1B"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { createWorkspace } from '@build-script/monorepo-lib';
|
|
2
|
+
import { commandInPath, PathEnvironment } from '@idlebox/node';
|
|
3
|
+
import { NPM } from './driver.npm.js';
|
|
4
|
+
import { PNPM } from './driver.pnpm.js';
|
|
5
|
+
import { reconfigureProxyWithNpmrc } from './proxy.js';
|
|
6
|
+
let pmCls;
|
|
7
|
+
export async function createPackageManager(usage, workspace, subdir) {
|
|
8
|
+
if (!workspace)
|
|
9
|
+
workspace = await createWorkspace();
|
|
10
|
+
if (pmCls) {
|
|
11
|
+
return new pmCls(usage, workspace, subdir);
|
|
12
|
+
}
|
|
13
|
+
const supports = { pnpm: PNPM, npm: NPM };
|
|
14
|
+
for (const [name, Cls] of Object.entries(supports)) {
|
|
15
|
+
if (!(await commandInPath(name).catch(() => false))) {
|
|
16
|
+
continue;
|
|
17
|
+
}
|
|
18
|
+
const pm = new Cls(usage, workspace, subdir);
|
|
19
|
+
await reconfigureProxyWithNpmrc(pm);
|
|
20
|
+
pmCls = Cls;
|
|
21
|
+
return pm;
|
|
22
|
+
}
|
|
23
|
+
const pathVar = new PathEnvironment();
|
|
24
|
+
console.log(`当前PATH: (${process.env.PATH})\n - ${[...pathVar.values()].join('\n - ')}`);
|
|
25
|
+
throw new Error(`未检测到任何包管理器,请在PATH中安装${Object.keys(supports).join('、')}`);
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=package-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-manager.js","sourceRoot":"","sources":["../../../src/common/package-manager/package-manager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAA0B,MAAM,4BAA4B,CAAC;AACrF,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAE/D,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAUvD,IAAI,KAA4C,CAAC;AAEjD,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACzC,KAA8B,EAC9B,SAA6B,EAC7B,MAAe;IAEf,IAAI,CAAC,SAAS;QAAE,SAAS,GAAG,MAAM,eAAe,EAAE,CAAC;IAEpD,IAAI,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,QAAQ,GAA8C,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACrF,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,IAAI,CAAC,CAAC,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACrD,SAAS;QACV,CAAC;QAED,MAAM,EAAE,GAAG,IAAI,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAE7C,MAAM,yBAAyB,CAAC,EAAE,CAAC,CAAC;QAEpC,KAAK,GAAG,GAAG,CAAC;QACZ,OAAO,EAAE,CAAC;IACX,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,eAAe,EAAE,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,YAAY,OAAO,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC1F,MAAM,IAAI,KAAK,CAAC,uBAAuB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3E,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { IPackageManager } from './package-manager.js';
|
|
2
|
+
export declare function getProxyValue(url: string): string;
|
|
3
|
+
export declare function reconfigureProxyWithNpmrc(pm: IPackageManager): Promise<void>;
|
|
4
|
+
export declare function configureProxyFromEnvironment(): void;
|
|
5
|
+
//# sourceMappingURL=proxy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../../src/common/package-manager/proxy.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAY5D,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,UA+CxC;AAED,wBAAsB,yBAAyB,CAAC,EAAE,EAAE,eAAe,iBAelE;AAED,wBAAgB,6BAA6B,SAwC5C"}
|