@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.
Files changed (175) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +136 -0
  3. package/config/rig.json +6 -0
  4. package/lib/command-file-map.generated.d.ts +23 -0
  5. package/lib/command-file-map.generated.d.ts.map +1 -0
  6. package/lib/command-file-map.generated.js +27 -0
  7. package/lib/command-file-map.generated.js.map +1 -0
  8. package/lib/commands/detect-package-change.d.ts +14 -0
  9. package/lib/commands/detect-package-change.d.ts.map +1 -0
  10. package/lib/commands/detect-package-change.js +55 -0
  11. package/lib/commands/detect-package-change.js.map +1 -0
  12. package/lib/commands/monorepo-bump-version.d.ts +22 -0
  13. package/lib/commands/monorepo-bump-version.d.ts.map +1 -0
  14. package/lib/commands/monorepo-bump-version.js +121 -0
  15. package/lib/commands/monorepo-bump-version.js.map +1 -0
  16. package/lib/commands/monorepo-cnpm-sync.d.ts +8 -0
  17. package/lib/commands/monorepo-cnpm-sync.d.ts.map +1 -0
  18. package/lib/commands/monorepo-cnpm-sync.js +16 -0
  19. package/lib/commands/monorepo-cnpm-sync.js.map +1 -0
  20. package/lib/commands/monorepo-invalid.d.ts +8 -0
  21. package/lib/commands/monorepo-invalid.d.ts.map +1 -0
  22. package/lib/commands/monorepo-invalid.js +19 -0
  23. package/lib/commands/monorepo-invalid.js.map +1 -0
  24. package/lib/commands/monorepo-list.d.ts +22 -0
  25. package/lib/commands/monorepo-list.d.ts.map +1 -0
  26. package/lib/commands/monorepo-list.js +40 -0
  27. package/lib/commands/monorepo-list.js.map +1 -0
  28. package/lib/commands/monorepo-publish.d.ts +22 -0
  29. package/lib/commands/monorepo-publish.d.ts.map +1 -0
  30. package/lib/commands/monorepo-publish.js +178 -0
  31. package/lib/commands/monorepo-publish.js.map +1 -0
  32. package/lib/commands/monorepo-tsconfig.d.ts +14 -0
  33. package/lib/commands/monorepo-tsconfig.d.ts.map +1 -0
  34. package/lib/commands/monorepo-tsconfig.js +131 -0
  35. package/lib/commands/monorepo-tsconfig.js.map +1 -0
  36. package/lib/commands/monorepo-upgrade.d.ts +8 -0
  37. package/lib/commands/monorepo-upgrade.d.ts.map +1 -0
  38. package/lib/commands/monorepo-upgrade.js +110 -0
  39. package/lib/commands/monorepo-upgrade.js.map +1 -0
  40. package/lib/commands/run-if-version-mismatch.d.ts +23 -0
  41. package/lib/commands/run-if-version-mismatch.d.ts.map +1 -0
  42. package/lib/commands/run-if-version-mismatch.js +64 -0
  43. package/lib/commands/run-if-version-mismatch.js.map +1 -0
  44. package/lib/commands/sync-my-readme.d.ts +9 -0
  45. package/lib/commands/sync-my-readme.d.ts.map +1 -0
  46. package/lib/commands/sync-my-readme.js +51 -0
  47. package/lib/commands/sync-my-readme.js.map +1 -0
  48. package/lib/commands/test.d.ts +9 -0
  49. package/lib/commands/test.d.ts.map +1 -0
  50. package/lib/commands/test.js +16 -0
  51. package/lib/commands/test.js.map +1 -0
  52. package/lib/common/cache/escape-package-path.d.ts +2 -0
  53. package/lib/common/cache/escape-package-path.d.ts.map +1 -0
  54. package/lib/common/cache/escape-package-path.js +7 -0
  55. package/lib/common/cache/escape-package-path.js.map +1 -0
  56. package/lib/common/cache/native.npm.d.ts +50 -0
  57. package/lib/common/cache/native.npm.d.ts.map +1 -0
  58. package/lib/common/cache/native.npm.js +162 -0
  59. package/lib/common/cache/native.npm.js.map +1 -0
  60. package/lib/common/functions/cli.d.ts +85 -0
  61. package/lib/common/functions/cli.d.ts.map +1 -0
  62. package/lib/common/functions/cli.js +110 -0
  63. package/lib/common/functions/cli.js.map +1 -0
  64. package/lib/common/functions/global-lifecycle.d.ts +5 -0
  65. package/lib/common/functions/global-lifecycle.d.ts.map +1 -0
  66. package/lib/common/functions/global-lifecycle.js +34 -0
  67. package/lib/common/functions/global-lifecycle.js.map +1 -0
  68. package/lib/common/git/git.d.ts +12 -0
  69. package/lib/common/git/git.d.ts.map +1 -0
  70. package/lib/common/git/git.js +65 -0
  71. package/lib/common/git/git.js.map +1 -0
  72. package/lib/common/package-manager/constant.d.ts +2 -0
  73. package/lib/common/package-manager/constant.d.ts.map +1 -0
  74. package/lib/common/package-manager/constant.js +2 -0
  75. package/lib/common/package-manager/constant.js.map +1 -0
  76. package/lib/common/package-manager/driver.abstract.d.ts +41 -0
  77. package/lib/common/package-manager/driver.abstract.d.ts.map +1 -0
  78. package/lib/common/package-manager/driver.abstract.js +138 -0
  79. package/lib/common/package-manager/driver.abstract.js.map +1 -0
  80. package/lib/common/package-manager/driver.npm.d.ts +7 -0
  81. package/lib/common/package-manager/driver.npm.d.ts.map +1 -0
  82. package/lib/common/package-manager/driver.npm.js +11 -0
  83. package/lib/common/package-manager/driver.npm.js.map +1 -0
  84. package/lib/common/package-manager/driver.pnpm.d.ts +7 -0
  85. package/lib/common/package-manager/driver.pnpm.d.ts.map +1 -0
  86. package/lib/common/package-manager/driver.pnpm.js +83 -0
  87. package/lib/common/package-manager/driver.pnpm.js.map +1 -0
  88. package/lib/common/package-manager/functions.d.ts +13 -0
  89. package/lib/common/package-manager/functions.d.ts.map +1 -0
  90. package/lib/common/package-manager/functions.js +95 -0
  91. package/lib/common/package-manager/functions.js.map +1 -0
  92. package/lib/common/package-manager/package-json.d.ts +5 -0
  93. package/lib/common/package-manager/package-json.d.ts.map +1 -0
  94. package/lib/common/package-manager/package-json.js +50 -0
  95. package/lib/common/package-manager/package-json.js.map +1 -0
  96. package/lib/common/package-manager/package-manager.d.ts +5 -0
  97. package/lib/common/package-manager/package-manager.d.ts.map +1 -0
  98. package/lib/common/package-manager/package-manager.js +27 -0
  99. package/lib/common/package-manager/package-manager.js.map +1 -0
  100. package/lib/common/package-manager/proxy.d.ts +5 -0
  101. package/lib/common/package-manager/proxy.d.ts.map +1 -0
  102. package/lib/common/package-manager/proxy.js +116 -0
  103. package/lib/common/package-manager/proxy.js.map +1 -0
  104. package/lib/common/shared-jobs/cnpm-sync.d.ts +4 -0
  105. package/lib/common/shared-jobs/cnpm-sync.d.ts.map +1 -0
  106. package/lib/common/shared-jobs/cnpm-sync.js +52 -0
  107. package/lib/common/shared-jobs/cnpm-sync.js.map +1 -0
  108. package/lib/common/shared-jobs/detect-change-job.d.ts +12 -0
  109. package/lib/common/shared-jobs/detect-change-job.d.ts.map +1 -0
  110. package/lib/common/shared-jobs/detect-change-job.js +52 -0
  111. package/lib/common/shared-jobs/detect-change-job.js.map +1 -0
  112. package/lib/common/shared-jobs/publish-package-version-job.d.ts +4 -0
  113. package/lib/common/shared-jobs/publish-package-version-job.d.ts.map +1 -0
  114. package/lib/common/shared-jobs/publish-package-version-job.js +40 -0
  115. package/lib/common/shared-jobs/publish-package-version-job.js.map +1 -0
  116. package/lib/common/taball/decompress.d.ts +2 -0
  117. package/lib/common/taball/decompress.d.ts.map +1 -0
  118. package/lib/common/taball/decompress.js +39 -0
  119. package/lib/common/taball/decompress.js.map +1 -0
  120. package/lib/common/taball/file-download.d.ts +15 -0
  121. package/lib/common/taball/file-download.d.ts.map +1 -0
  122. package/lib/common/taball/file-download.js +137 -0
  123. package/lib/common/taball/file-download.js.map +1 -0
  124. package/lib/common/temp-work-folder.d.ts +20 -0
  125. package/lib/common/temp-work-folder.d.ts.map +1 -0
  126. package/lib/common/temp-work-folder.js +68 -0
  127. package/lib/common/temp-work-folder.js.map +1 -0
  128. package/lib/common/version.generated.d.ts +12 -0
  129. package/lib/common/version.generated.d.ts.map +1 -0
  130. package/lib/common/version.generated.js +17 -0
  131. package/lib/common/version.generated.js.map +1 -0
  132. package/lib/main.d.ts +2 -0
  133. package/lib/main.d.ts.map +1 -0
  134. package/lib/main.js +115 -0
  135. package/lib/main.js.map +1 -0
  136. package/lib/tsconfig.tsbuildinfo +1 -0
  137. package/load.js +12 -0
  138. package/package.json +59 -0
  139. package/src/command-file-map.generated.ts +28 -0
  140. package/src/command-file-map.generator.ts +23 -0
  141. package/src/commands/detect-package-change.ts +57 -0
  142. package/src/commands/monorepo-bump-version.ts +152 -0
  143. package/src/commands/monorepo-cnpm-sync.ts +19 -0
  144. package/src/commands/monorepo-invalid.ts +22 -0
  145. package/src/commands/monorepo-list.ts +46 -0
  146. package/src/commands/monorepo-publish.ts +227 -0
  147. package/src/commands/monorepo-tsconfig.ts +156 -0
  148. package/src/commands/monorepo-upgrade.ts +131 -0
  149. package/src/commands/run-if-version-mismatch.ts +78 -0
  150. package/src/commands/sync-my-readme.ts +56 -0
  151. package/src/commands/test.ts +18 -0
  152. package/src/common/cache/escape-package-path.ts +6 -0
  153. package/src/common/cache/native.npm.ts +206 -0
  154. package/src/common/functions/cli.ts +145 -0
  155. package/src/common/functions/global-lifecycle.ts +40 -0
  156. package/src/common/git/git.ts +75 -0
  157. package/src/common/package-manager/constant.ts +1 -0
  158. package/src/common/package-manager/driver.abstract.ts +162 -0
  159. package/src/common/package-manager/driver.npm.ts +13 -0
  160. package/src/common/package-manager/driver.pnpm.ts +113 -0
  161. package/src/common/package-manager/functions.ts +117 -0
  162. package/src/common/package-manager/package-json.ts +56 -0
  163. package/src/common/package-manager/package-manager.ts +46 -0
  164. package/src/common/package-manager/proxy.ts +129 -0
  165. package/src/common/shared-jobs/cnpm-sync.ts +57 -0
  166. package/src/common/shared-jobs/detect-change-job.ts +76 -0
  167. package/src/common/shared-jobs/publish-package-version-job.ts +46 -0
  168. package/src/common/taball/decompress.ts +41 -0
  169. package/src/common/taball/file-download.ts +166 -0
  170. package/src/common/temp-work-folder.ts +80 -0
  171. package/src/common/version.generated.ts +18 -0
  172. package/src/common/version.generator.ts +15 -0
  173. package/src/global.d.ts +17 -0
  174. package/src/main.ts +144 -0
  175. 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,2 @@
1
+ export const DEFAULT_NPM_REGISTRY = 'https://registry.npmjs.org/';
2
+ //# sourceMappingURL=constant.js.map
@@ -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":"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"}
@@ -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"}