@aalis/plugin-package-manager 0.5.3 → 0.7.0
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/README.md +28 -0
- package/dist/index.d.ts +53 -72
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +238 -83
- package/dist/index.js.map +1 -1
- package/package.json +20 -7
package/README.md
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# @aalis/plugin-package-manager
|
|
2
|
+
|
|
3
|
+
插件包管理:从 npm 安装/卸载/更新到项目根 dependencies
|
|
4
|
+
|
|
5
|
+
## 安装
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
pnpm add @aalis/plugin-package-manager
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## 提供 / 依赖
|
|
12
|
+
|
|
13
|
+
`definePlugin` 默认导出:
|
|
14
|
+
|
|
15
|
+
- provides:`packageManager`(服务名 `package-manager`;描述符来自 `@aalis/api-package-manager`)
|
|
16
|
+
- uses:`proc`(`process`)、`logger`、`config`、`provide`、`services`;可选 `app`、`plugins`、`hostConfig`(`host-config`)、`source`(`plugin-source`)
|
|
17
|
+
|
|
18
|
+
装卸落在项目根 `dependencies`,随后经宿主的 `plugin-source` 服务 `rescan()` 让加载器发现;宿主不提供插件来源时视同本次没有新插件。卸载后经 `host-config` 清理配置块与禁用标记,宿主未提供配置文档时不清理。
|
|
19
|
+
|
|
20
|
+
装卸只接受插件(`aalis-plugin`)与前端界面(`aalis-interface`)包;卸载会让其它插件失去所需服务的唯一提供者时拒绝。插件写入存储根的数据不随卸载删除。
|
|
21
|
+
|
|
22
|
+
## 文档
|
|
23
|
+
|
|
24
|
+
服务契约见 [docs/api/api-package-manager.md](../../docs/api/api-package-manager.md),扩展总览见 [docs/extensions/index.md](../../docs/extensions/index.md)。
|
|
25
|
+
|
|
26
|
+
## 许可
|
|
27
|
+
|
|
28
|
+
见仓库根目录 LICENSE。
|
package/dist/index.d.ts
CHANGED
|
@@ -1,61 +1,6 @@
|
|
|
1
|
+
import { type PackageManagerService, type UpdateTarget } from '@aalis/api-package-manager';
|
|
1
2
|
import { type ProcessService } from '@aalis/api-process';
|
|
2
|
-
import type
|
|
3
|
-
export declare const name = "@aalis/plugin-package-manager";
|
|
4
|
-
export declare const displayName = "\u5305\u7BA1\u7406\u5668";
|
|
5
|
-
export declare const subsystem = "system";
|
|
6
|
-
export declare const provides: string[];
|
|
7
|
-
export declare const inject: {
|
|
8
|
-
required: string[];
|
|
9
|
-
};
|
|
10
|
-
/**
|
|
11
|
-
* 包管理服务:在项目根 `dependencies` 里装卸插件。
|
|
12
|
-
*
|
|
13
|
-
* 通过 `ctx.getService<PackageManagerService>('package-manager')` 消费。
|
|
14
|
-
*
|
|
15
|
-
* 根 `dependencies` 是加载器**唯一**的发现来源,所以装卸都落在那里——不再有「解包到
|
|
16
|
-
* packages/ 目录」那条路径(它按 `pnpm-workspace.yaml` 猜部署形态,而那个文件与真正
|
|
17
|
-
* 生效的加载器无因果关系,猜错时会把包装进加载器永不查看的地方并静默失败)。
|
|
18
|
-
*
|
|
19
|
-
* 这些操作涉及子进程(npm),不属于 core 内核职责,因此从 App 抽出到独立插件;
|
|
20
|
-
* 底层子进程统一走 api-process。
|
|
21
|
-
*/
|
|
22
|
-
export interface PackageManagerService {
|
|
23
|
-
/** 装进根 `dependencies` + node_modules,随后 rescan 让加载器发现它 */
|
|
24
|
-
install(npmPkg: string): Promise<{
|
|
25
|
-
ok: boolean;
|
|
26
|
-
message: string;
|
|
27
|
-
}>;
|
|
28
|
-
/** 从根 `dependencies` 摘掉并 npm uninstall;只接受插件与前端界面包(见 uninstallOne 的两道闸) */
|
|
29
|
-
uninstall(pluginName: string): Promise<{
|
|
30
|
-
ok: boolean;
|
|
31
|
-
message: string;
|
|
32
|
-
}>;
|
|
33
|
-
/**
|
|
34
|
-
* 批量更新到指定版本,随后重启进程接管。
|
|
35
|
-
*
|
|
36
|
-
* **必须整批提交**,不能每个包各调一次:
|
|
37
|
-
* - peer 冲突只有对整张版本映射一次预检才能发现(A@new 要 core>=0.10、B@new 要
|
|
38
|
-
* core<0.10,逐个预检各自都过,一起装才冲突);
|
|
39
|
-
* - 更新是文件系统操作而进程只在启动那一刻读文件系统,所以重启次数恒为 1,
|
|
40
|
-
* 与改了多少个包无关。逐个更新 = 重启 N 次,且中间态是半新半旧。
|
|
41
|
-
*
|
|
42
|
-
* 返回 `ok: true` 表示已提交安装并即将重启——此时 HTTP 响应要抢在进程退出前发出。
|
|
43
|
-
*/
|
|
44
|
-
update(targets: UpdateTarget[]): Promise<UpdateResult>;
|
|
45
|
-
}
|
|
46
|
-
/** 一个待更新目标:包名 + 目标版本(不带范围符,由调用方从市场卡片取 npm latest)。 */
|
|
47
|
-
export interface UpdateTarget {
|
|
48
|
-
name: string;
|
|
49
|
-
version: string;
|
|
50
|
-
}
|
|
51
|
-
export interface UpdateResult {
|
|
52
|
-
ok: boolean;
|
|
53
|
-
message: string;
|
|
54
|
-
/** 预检失败时的逐条冲突说明(npm dry-run 的报告摘要),供前端直接展示。 */
|
|
55
|
-
conflicts?: string[];
|
|
56
|
-
/** 本次是否会重启进程。ok 且 restarting 时前端应进入「等待重连」状态。 */
|
|
57
|
-
restarting?: boolean;
|
|
58
|
-
}
|
|
3
|
+
import { type AppService, type PluginStatusEntry } from '@aalis/core';
|
|
59
4
|
/**
|
|
60
5
|
* 根依赖里是否含 `workspace:` 协议。
|
|
61
6
|
*
|
|
@@ -73,10 +18,23 @@ export declare function hasWorkspaceProtocol(pkgJson: Record<string, unknown> |
|
|
|
73
18
|
* 纯函数,便于单测。
|
|
74
19
|
*/
|
|
75
20
|
export declare function declaresPlugin(pkgJson: Record<string, unknown> | undefined): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* 包类型是否归市场装卸:插件(判据同 {@link declaresPlugin})与前端界面(`aalis-interface`)
|
|
23
|
+
* 归市场管,返回 `undefined`;其余返回拒绝时展示的类别名。装与卸共用这一份判据——同一件事
|
|
24
|
+
* 维护两份同义判据,正是本仓已出事四次的形态(依赖来源判据、定级数学、包名正则、关键词分类)。
|
|
25
|
+
* 纯函数,便于单测。
|
|
26
|
+
*/
|
|
27
|
+
export declare function nonMarketKind(keywords: unknown): string | undefined;
|
|
28
|
+
/**
|
|
29
|
+
* 找出「卸载 target 会断其服务依赖」的插件:target 提供的某服务 S 没有别的插件正在提供(只认 active 与
|
|
30
|
+
* activating;disabled / error / pending 的同类提供者不在提供),且有别的插件 requiredServices 含 S → 这些插件
|
|
31
|
+
* 会被打断。已禁用(disabled / disposed)的依赖者不算。纯函数,便于单测。
|
|
32
|
+
*/
|
|
33
|
+
export declare function findServiceDependents(targetName: string, status: ReadonlyArray<Pick<PluginStatusEntry, 'name' | 'state' | 'provides' | 'requiredServices'>>): string[];
|
|
76
34
|
/**
|
|
77
35
|
* 校验单个包 spec,合法返回 `undefined`、非法返回可读理由。
|
|
78
36
|
*
|
|
79
|
-
*
|
|
37
|
+
* 放在**服务层**:本服务对外公开,任何插件都能绕过 HTTP 路由直接调用。
|
|
80
38
|
* 这与 `buildUpdateSpecs` 是同一条纪律——路由只做「是不是字符串」的形状检查,安全校验
|
|
81
39
|
* 收在所有调用方的必经之路上。**argv 面只有这一份实现**(两份正则漂移是本仓栽过的坑);
|
|
82
40
|
* URL 路径段另有一份不含版本段的(webui-server 的 depgraph 端点,见那里的注释)——
|
|
@@ -84,14 +42,15 @@ export declare function declaresPlugin(pkgJson: Record<string, unknown> | undefi
|
|
|
84
42
|
* 纯函数,便于单测。
|
|
85
43
|
*/
|
|
86
44
|
export declare function validatePackageSpec(spec: unknown): string | undefined;
|
|
87
|
-
/** install/uninstall
|
|
45
|
+
/** install/uninstall 的显式依赖(从能力/网关解耦,便于集成测试) */
|
|
88
46
|
export interface PackageManagerDeps {
|
|
89
47
|
proc: ProcessService;
|
|
90
48
|
log: {
|
|
91
49
|
info(msg: string): void;
|
|
92
50
|
error(msg: string): void;
|
|
51
|
+
warn?(msg: string): void;
|
|
93
52
|
};
|
|
94
|
-
/** 项目根绝对路径(= `<cwd
|
|
53
|
+
/** 项目根绝对路径(= `<cwd>`):根 package.json 读取、npm 的 cwd。 */
|
|
95
54
|
projectRoot(): string;
|
|
96
55
|
/** 读文本文件;不存在或读失败返回 undefined。注入以便单测。 */
|
|
97
56
|
readText(absPath: string): Promise<string | undefined>;
|
|
@@ -100,12 +59,17 @@ export interface PackageManagerDeps {
|
|
|
100
59
|
* 目标插件此刻是否已在运行时注册表里。
|
|
101
60
|
*
|
|
102
61
|
* 这是判定「本次安装是否就位」的**唯一正确判据**。不能用 `rescanPlugins()` 的返回值:
|
|
103
|
-
*
|
|
62
|
+
* 它是全局副作用的产物——宿主的 rescan 对已注册插件直接跳过,返回的是「本次扫描新
|
|
104
63
|
* 加载的**全部**插件」,与本次目标无对应关系。用它会在两个场景下给出错误结论:
|
|
105
64
|
* 重装已注册插件时恒返回空(误报失败);两个安装并发时先跑完的那个会把对方的战果
|
|
106
65
|
* 一并算作自己的(谎报),后跑的则拿到空数组(误报失败)。
|
|
66
|
+
*
|
|
67
|
+
* 传入的是**定义 name**(经 {@link PackageManagerDeps.resolveDefinitionName} 解析),
|
|
68
|
+
* 不是 npm 包名——二者可以不同。
|
|
107
69
|
*/
|
|
108
70
|
isPluginRegistered(name: string): boolean;
|
|
71
|
+
/** 运行时插件状态,供服务依赖者判定({@link findServiceDependents})。缺省视为没有活跃插件。 */
|
|
72
|
+
pluginStatus?(): ReadonlyArray<Pick<PluginStatusEntry, 'name' | 'state' | 'provides' | 'requiredServices'>>;
|
|
109
73
|
/** 彻底卸载插件(dispose + 从注册表移除)。plugins 服务缺席则 no-op。 */
|
|
110
74
|
unloadPlugin(name: string): Promise<void>;
|
|
111
75
|
/**
|
|
@@ -115,6 +79,16 @@ export interface PackageManagerDeps {
|
|
|
115
79
|
recoveryChannelProviders?(): string[];
|
|
116
80
|
/** 卸载后清理残留配置(删配置块 + 解除禁用标记 + 持久化)。可选:缺省则不清理。 */
|
|
117
81
|
cleanupConfig?(name: string): void;
|
|
82
|
+
/**
|
|
83
|
+
* 解析已装 npm 包的插件定义 name(与 `@aalis/api-plugin-source` 的 `pluginDefinitionOf` 同一口径:入口 default.name)。
|
|
84
|
+
* 解析不到则返回 undefined,调用方回退到包名。name≠包名时由 createPackageManager warn。
|
|
85
|
+
*/
|
|
86
|
+
resolveDefinitionName?(pkgName: string): Promise<string | undefined>;
|
|
87
|
+
/**
|
|
88
|
+
* 按定义 name 列出注册表里全部 instanceId(主实例 + `name:suffix`)。
|
|
89
|
+
* 缺省则只对传入的定义 name 做一次 unload / cleanup。
|
|
90
|
+
*/
|
|
91
|
+
listPluginInstanceIds?(definitionName: string): string[];
|
|
118
92
|
/** 重启进程并交付回滚凭据(新实例起不来时由重启策略消费)。缺省则 update 不可用。 */
|
|
119
93
|
restartApp?(rollback: {
|
|
120
94
|
reason: string;
|
|
@@ -144,7 +118,8 @@ export declare function buildUpdateSpecs(targets: readonly UpdateTarget[]): {
|
|
|
144
118
|
error?: string;
|
|
145
119
|
};
|
|
146
120
|
/**
|
|
147
|
-
* 从 npm
|
|
121
|
+
* 从 npm 的失败输出里摘出冲突要点,供前端直接展示。保留根项目的声明行(`… from the root project`),看得出冲突由
|
|
122
|
+
* 哪条根依赖引起;完整报告的路径行(`…-eresolve-report.txt`)随不分大小写的 ERESOLVE 一并保留。纯函数,便于单测。
|
|
148
123
|
*/
|
|
149
124
|
export declare function extractPeerConflicts(output: string): string[];
|
|
150
125
|
/**
|
|
@@ -161,16 +136,22 @@ export declare function extractPeerConflicts(output: string): string[];
|
|
|
161
136
|
*/
|
|
162
137
|
export declare function findUnmetPeers(output: string, targetNames: readonly string[]): string[];
|
|
163
138
|
/**
|
|
164
|
-
* 包管理核心:install/uninstall
|
|
165
|
-
* 所有文件操作走 process 网关(子进程:npm/
|
|
166
|
-
*
|
|
167
|
-
*
|
|
139
|
+
* 包管理核心:install/uninstall 的纯依赖实现(不碰能力/网关,可单测)。
|
|
140
|
+
* 所有文件操作走 process 网关(子进程:npm/cp/test),目标是项目根 package.json 与
|
|
141
|
+
* node_modules——不经 storage 沙盒。
|
|
142
|
+
* 能力组装层见 createService。
|
|
168
143
|
*/
|
|
169
144
|
export declare function createPackageManager(deps: PackageManagerDeps): PackageManagerService;
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
145
|
+
declare const _default: import("@aalis/core").PluginDefinition<{
|
|
146
|
+
proc: import("@aalis/core").ServiceDescriptor<ProcessService, import("@aalis/core").ServiceRef<ProcessService>>;
|
|
147
|
+
logger: import("@aalis/core").ServiceDescriptor<(identity: symbol) => import("@aalis/core").Logger, import("@aalis/core").Logger>;
|
|
148
|
+
config: import("@aalis/core").ServiceDescriptor<(identity: symbol) => Readonly<Record<string, unknown>>, Readonly<Record<string, unknown>>>;
|
|
149
|
+
provide: import("@aalis/core").ServiceDescriptor<(identity: symbol) => import("@aalis/core").Provide, import("@aalis/core").Provide>;
|
|
150
|
+
services: import("@aalis/core").ServiceDescriptor<(identity: symbol) => import("@aalis/core").Services, import("@aalis/core").Services>;
|
|
151
|
+
app: import("@aalis/core").OptionalUse<AppService, import("@aalis/core").ServiceRef<AppService>>;
|
|
152
|
+
plugins: import("@aalis/core").OptionalUse<import("@aalis/core").PluginManagerService, import("@aalis/core").ServiceRef<import("@aalis/core").PluginManagerService>>;
|
|
153
|
+
hostConfig: import("@aalis/core").OptionalUse<import("@aalis/api-host-config").HostConfig, import("@aalis/core").ServiceRef<import("@aalis/api-host-config").HostConfig>>;
|
|
154
|
+
source: import("@aalis/core").OptionalUse<import("@aalis/api-plugin-source").PluginSourceService, import("@aalis/core").ServiceRef<import("@aalis/api-plugin-source").PluginSourceService>>;
|
|
155
|
+
}>;
|
|
156
|
+
export default _default;
|
|
176
157
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -1,15 +1,12 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { createRequire } from 'node:module';
|
|
2
|
+
import { hostConfig } from '@aalis/api-host-config';
|
|
3
|
+
import { packageManager, } from '@aalis/api-package-manager';
|
|
4
|
+
import { pluginDefinitionOf, pluginSource } from '@aalis/api-plugin-source';
|
|
5
|
+
import { createProcessGateway, processService } from '@aalis/api-process';
|
|
6
|
+
import { appService, config, definePlugin, logger, optional, pluginsService, provide, services, } from '@aalis/core';
|
|
2
7
|
import { classifyDepSpec, isRegistryDep, isUpgrade } from '@aalis/util-dep-spec';
|
|
3
|
-
// ===== 插件元数据 =====
|
|
4
|
-
export const name = '@aalis/plugin-package-manager';
|
|
5
|
-
export const displayName = '包管理器';
|
|
6
|
-
export const subsystem = 'system';
|
|
7
|
-
export const provides = ['package-manager'];
|
|
8
|
-
export const inject = {
|
|
9
|
-
required: ['process'],
|
|
10
|
-
};
|
|
11
8
|
// ===== 实现 =====
|
|
12
|
-
/** 短命令(
|
|
9
|
+
/** 短命令(cp、npm view 等)的超时。 */
|
|
13
10
|
const QUICK_TIMEOUT_MS = 120_000;
|
|
14
11
|
/**
|
|
15
12
|
* 安装类命令的超时。`npm install` 要装全依赖树 + 原生编译(better-sqlite3、puppeteer
|
|
@@ -17,6 +14,12 @@ const QUICK_TIMEOUT_MS = 120_000;
|
|
|
17
14
|
* 否则会在半装状态下被杀。
|
|
18
15
|
*/
|
|
19
16
|
const INSTALL_TIMEOUT_MS = 600_000;
|
|
17
|
+
/**
|
|
18
|
+
* 压掉 `legacy-peer-deps` 的环境变量。用户或项目 `.npmrc` 里的 `legacy-peer-deps=true`(React
|
|
19
|
+
* 生态常见的 workaround)会让 npm 对 peer 不满足**完全不报**,安装与更新预检的 peer 护栏就此
|
|
20
|
+
* 静默失效。环境变量优先于项目根的 `.npmrc`(install-chain 里有真 npm 用例)。
|
|
21
|
+
*/
|
|
22
|
+
const STRICT_PEERS_ENV = { npm_config_legacy_peer_deps: 'false' };
|
|
20
23
|
async function execProc(proc, cmd, args, cwd, timeout = QUICK_TIMEOUT_MS) {
|
|
21
24
|
return (await execProcBoth(proc, cmd, args, cwd, timeout)).stdout;
|
|
22
25
|
}
|
|
@@ -69,6 +72,66 @@ export function declaresPlugin(pkgJson) {
|
|
|
69
72
|
const kw = pkgJson?.keywords;
|
|
70
73
|
return Array.isArray(kw) && kw.includes('aalis-plugin');
|
|
71
74
|
}
|
|
75
|
+
/**
|
|
76
|
+
* 包类型是否归市场装卸:插件(判据同 {@link declaresPlugin})与前端界面(`aalis-interface`)
|
|
77
|
+
* 归市场管,返回 `undefined`;其余返回拒绝时展示的类别名。装与卸共用这一份判据——同一件事
|
|
78
|
+
* 维护两份同义判据,正是本仓已出事四次的形态(依赖来源判据、定级数学、包名正则、关键词分类)。
|
|
79
|
+
* 纯函数,便于单测。
|
|
80
|
+
*/
|
|
81
|
+
export function nonMarketKind(keywords) {
|
|
82
|
+
const kw = Array.isArray(keywords) ? keywords : [];
|
|
83
|
+
if (declaresPlugin({ keywords: kw }) || kw.includes('aalis-interface'))
|
|
84
|
+
return undefined;
|
|
85
|
+
if (kw.includes('aalis-core'))
|
|
86
|
+
return '内核';
|
|
87
|
+
if (kw.includes('aalis-runtime'))
|
|
88
|
+
return '宿主';
|
|
89
|
+
if (kw.includes('aalis-api'))
|
|
90
|
+
return '服务契约';
|
|
91
|
+
if (kw.includes('aalis-schema'))
|
|
92
|
+
return '数据规范';
|
|
93
|
+
if (kw.includes('aalis-util'))
|
|
94
|
+
return '工具库';
|
|
95
|
+
return '非插件包';
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* 找出「卸载 target 会断其服务依赖」的插件:target 提供的某服务 S 没有别的插件正在提供(只认 active 与
|
|
99
|
+
* activating;disabled / error / pending 的同类提供者不在提供),且有别的插件 requiredServices 含 S → 这些插件
|
|
100
|
+
* 会被打断。已禁用(disabled / disposed)的依赖者不算。纯函数,便于单测。
|
|
101
|
+
*/
|
|
102
|
+
export function findServiceDependents(targetName, status) {
|
|
103
|
+
const target = status.find(p => p.name === targetName);
|
|
104
|
+
const provided = target?.provides ?? [];
|
|
105
|
+
if (provided.length === 0)
|
|
106
|
+
return [];
|
|
107
|
+
const dependents = new Set();
|
|
108
|
+
for (const svc of provided) {
|
|
109
|
+
const otherProvider = status.some(p => p.name !== targetName && (p.state === 'active' || p.state === 'activating') && (p.provides ?? []).includes(svc));
|
|
110
|
+
if (otherProvider)
|
|
111
|
+
continue; // 还有别的提供者在提供,删了不致命
|
|
112
|
+
for (const p of status) {
|
|
113
|
+
if (p.name !== targetName &&
|
|
114
|
+
p.state !== 'disabled' &&
|
|
115
|
+
p.state !== 'disposed' &&
|
|
116
|
+
(p.requiredServices ?? []).includes(svc)) {
|
|
117
|
+
dependents.add(p.name);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
return [...dependents];
|
|
122
|
+
}
|
|
123
|
+
/** 从项目 node_modules 解析已装包入口并取出定义 name;解析失败返回 undefined。 */
|
|
124
|
+
async function resolveInstalledDefinitionName(root, pkgName) {
|
|
125
|
+
try {
|
|
126
|
+
const req = createRequire(`${root}/package.json`);
|
|
127
|
+
const entry = req.resolve(pkgName);
|
|
128
|
+
const ns = await import(new URL(`file://${entry}`).href);
|
|
129
|
+
return pluginDefinitionOf(ns)?.name;
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
return undefined;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
72
135
|
/**
|
|
73
136
|
* 合法 npm 包 spec:包名(可选 scope)+ 可选 `@version` 后缀。
|
|
74
137
|
*
|
|
@@ -82,7 +145,7 @@ const PKG_SPEC_RE = /^(@[a-z0-9][a-z0-9\-_.]*\/)?[a-z0-9][a-z0-9\-_.]*(@[a-z0-9]
|
|
|
82
145
|
/**
|
|
83
146
|
* 校验单个包 spec,合法返回 `undefined`、非法返回可读理由。
|
|
84
147
|
*
|
|
85
|
-
*
|
|
148
|
+
* 放在**服务层**:本服务对外公开,任何插件都能绕过 HTTP 路由直接调用。
|
|
86
149
|
* 这与 `buildUpdateSpecs` 是同一条纪律——路由只做「是不是字符串」的形状检查,安全校验
|
|
87
150
|
* 收在所有调用方的必经之路上。**argv 面只有这一份实现**(两份正则漂移是本仓栽过的坑);
|
|
88
151
|
* URL 路径段另有一份不含版本段的(webui-server 的 depgraph 端点,见那里的注释)——
|
|
@@ -96,18 +159,30 @@ export function validatePackageSpec(spec) {
|
|
|
96
159
|
return `非法包名: ${JSON.stringify(spec)}`;
|
|
97
160
|
return undefined;
|
|
98
161
|
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
162
|
+
// ===== 插件入口 =====
|
|
163
|
+
const uses = {
|
|
164
|
+
proc: processService,
|
|
165
|
+
logger,
|
|
166
|
+
config,
|
|
167
|
+
provide,
|
|
168
|
+
services,
|
|
169
|
+
app: optional(appService),
|
|
170
|
+
plugins: optional(pluginsService),
|
|
171
|
+
hostConfig: optional(hostConfig),
|
|
172
|
+
source: optional(pluginSource),
|
|
173
|
+
};
|
|
174
|
+
function createService(caps) {
|
|
175
|
+
const log = caps.logger;
|
|
176
|
+
const proc = createProcessGateway(caps.proc);
|
|
102
177
|
function getApp() {
|
|
103
|
-
const app =
|
|
178
|
+
const app = caps.app.current;
|
|
104
179
|
if (!app)
|
|
105
180
|
throw new Error('app 服务不可用,无法执行包管理操作');
|
|
106
181
|
return app;
|
|
107
182
|
}
|
|
108
183
|
/** 把配置里的相对/绝对路径归一成绝对路径;未配置则用 fallback。 */
|
|
109
184
|
function resolveConfigured(key, fallback) {
|
|
110
|
-
const override = config[key];
|
|
185
|
+
const override = caps.config[key];
|
|
111
186
|
if (typeof override === 'string' && override.length > 0) {
|
|
112
187
|
return override.startsWith('/') ? override : `${process.cwd()}/${override.replace(/^\.?\/+/, '')}`;
|
|
113
188
|
}
|
|
@@ -135,14 +210,15 @@ function createService(ctx, config) {
|
|
|
135
210
|
return undefined;
|
|
136
211
|
}
|
|
137
212
|
},
|
|
138
|
-
|
|
213
|
+
// 宿主不提供插件来源(打包宿主)时视同本次没有新插件;随后仍按注册表判定,声明为插件的包会报「未被加载」
|
|
214
|
+
rescanPlugins: async () => (await caps.source.current?.rescan()) ?? [],
|
|
139
215
|
// 判据取运行时注册表而非 rescan 返回值(理由见 PackageManagerDeps.isPluginRegistered)。
|
|
140
216
|
// plugins 服务缺席时保守返回 false——宁可让「声明为插件却没加载」的诊断多报一次,
|
|
141
217
|
// 也不要在真没装上时谎报成功。
|
|
142
|
-
isPluginRegistered: name =>
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
218
|
+
isPluginRegistered: name => caps.plugins.current?.getStatus().some(p => p.name === name) ?? false,
|
|
219
|
+
pluginStatus: () => caps.plugins.current?.getStatus() ?? [],
|
|
220
|
+
resolveDefinitionName: pkgName => resolveInstalledDefinitionName(projectRoot(), pkgName),
|
|
221
|
+
listPluginInstanceIds: definitionName => (caps.plugins.current?.getStatus() ?? []).filter(p => p.name === definitionName).map(p => p.instanceId),
|
|
146
222
|
// 重启并交付回滚凭据。core 只透传 rollback(不解释形状),由 runtime 的重启策略
|
|
147
223
|
// 在「新实例 ready 前夭折」时消费——触发者与执行者同为父进程,全程内存不落盘。
|
|
148
224
|
//
|
|
@@ -151,34 +227,35 @@ function createService(ctx, config) {
|
|
|
151
227
|
// 回滚安全网整个不存在。故 peerDependencies 下界必须是 `>=0.10.0`,不能沿用 0.2.0。
|
|
152
228
|
restartApp: rollback => getApp().restart({ rollback }),
|
|
153
229
|
// 彻底卸载:dispose 上下文并从注册表移除(plugins 服务缺席则 no-op)。
|
|
154
|
-
// 区别于
|
|
230
|
+
// 区别于 disable(仅置禁用态,仍滞留在插件列表里)。
|
|
155
231
|
// 撤销通道 = 市场页能用所依赖的三样:页面本身 / 托管它的服务端 / 装卸能力本身。
|
|
156
|
-
// 取每个服务当前生效的 provider(`
|
|
157
|
-
//
|
|
232
|
+
// 取每个服务当前生效的 provider(`services.all` 的首个即是),contextId 就是包名
|
|
233
|
+
// (插件以包名做实例 id,webui-server 也用包名做前端候选的实例 id)。
|
|
158
234
|
// 服务缺席时该项自然不在列表里——不启用 WebUI 的部署不受影响。
|
|
159
235
|
// contextId 直接就是包名,**不要**再切分:包名带 scope(`@aalis/plugin-webui-client`)时
|
|
160
236
|
// `split('/')[0]` 会把它截成 `@aalis`,与下游 `lifeline.includes(pluginName)` 永不相等,
|
|
161
|
-
// 整道闸对全部 scoped
|
|
162
|
-
//
|
|
163
|
-
//
|
|
237
|
+
// 整道闸对全部 scoped 包恒不触发(实测三个目标全放行)。这三个服务都由以包名为实例 id 的
|
|
238
|
+
// 激活注册,contextId 不含 entryId 后缀;真出现多实例后缀要靠模块声明 `reusable`,
|
|
239
|
+
// 而这三个都没有,故也不需要为此加解析。
|
|
164
240
|
recoveryChannelProviders: () => [
|
|
165
|
-
...new Set(['webui-client', 'webui-server',
|
|
166
|
-
const id =
|
|
241
|
+
...new Set(['webui-client', 'webui-server', packageManager.name].flatMap(service => {
|
|
242
|
+
const id = caps.services.inspect(service)[0]?.contextId;
|
|
167
243
|
return id ? [id] : [];
|
|
168
244
|
})),
|
|
169
245
|
],
|
|
170
246
|
unloadPlugin: async (name) => {
|
|
171
|
-
|
|
172
|
-
if (pm)
|
|
173
|
-
await pm.unload(name);
|
|
247
|
+
await caps.plugins.current?.unload(name);
|
|
174
248
|
},
|
|
175
249
|
// 卸载后清残留配置:删 plugins.<name> 配置块 + 从 disabledPlugins 移除
|
|
176
|
-
// (否则重装会被"上次禁用"
|
|
250
|
+
// (否则重装会被"上次禁用"标记带成已禁用状态),并持久化。宿主没提供配置文档时无可清理。
|
|
177
251
|
cleanupConfig: name => {
|
|
178
|
-
|
|
179
|
-
|
|
252
|
+
const doc = caps.hostConfig.current;
|
|
253
|
+
if (!doc)
|
|
254
|
+
return;
|
|
255
|
+
doc.removePluginConfig(name);
|
|
256
|
+
doc.setPluginEnabled(name, true);
|
|
180
257
|
// cleanupConfig 契约返 void;落盘失败只 warn,内存态已清、下次保存会带上
|
|
181
|
-
|
|
258
|
+
doc.save().catch(err => log.warn(`${name}: 卸载后配置清理落盘失败:`, err));
|
|
182
259
|
},
|
|
183
260
|
});
|
|
184
261
|
}
|
|
@@ -284,11 +361,12 @@ export function buildUpdateSpecs(targets) {
|
|
|
284
361
|
return { specs };
|
|
285
362
|
}
|
|
286
363
|
/**
|
|
287
|
-
* 从 npm
|
|
364
|
+
* 从 npm 的失败输出里摘出冲突要点,供前端直接展示。保留根项目的声明行(`… from the root project`),看得出冲突由
|
|
365
|
+
* 哪条根依赖引起;完整报告的路径行(`…-eresolve-report.txt`)随不分大小写的 ERESOLVE 一并保留。纯函数,便于单测。
|
|
288
366
|
*/
|
|
289
367
|
export function extractPeerConflicts(output) {
|
|
290
368
|
const lines = output.split('\n');
|
|
291
|
-
const picked = lines.filter(l => /ERESOLVE|peer |Conflicting peer|Found:|Could not resolve/i.test(l));
|
|
369
|
+
const picked = lines.filter(l => /ERESOLVE|peer |Conflicting peer|Found:|Could not resolve|from the root project/i.test(l));
|
|
292
370
|
return picked.map(l => l.replace(/^npm (ERR!|error|warn)\s*/i, '').trim()).filter(l => l.length > 0);
|
|
293
371
|
}
|
|
294
372
|
/**
|
|
@@ -319,10 +397,10 @@ export function findUnmetPeers(output, targetNames) {
|
|
|
319
397
|
return [...out];
|
|
320
398
|
}
|
|
321
399
|
/**
|
|
322
|
-
* 包管理核心:install/uninstall
|
|
323
|
-
* 所有文件操作走 process 网关(子进程:npm/
|
|
324
|
-
*
|
|
325
|
-
*
|
|
400
|
+
* 包管理核心:install/uninstall 的纯依赖实现(不碰能力/网关,可单测)。
|
|
401
|
+
* 所有文件操作走 process 网关(子进程:npm/cp/test),目标是项目根 package.json 与
|
|
402
|
+
* node_modules——不经 storage 沙盒。
|
|
403
|
+
* 能力组装层见 createService。
|
|
326
404
|
*/
|
|
327
405
|
export function createPackageManager(deps) {
|
|
328
406
|
const { proc, log } = deps;
|
|
@@ -335,7 +413,7 @@ export function createPackageManager(deps) {
|
|
|
335
413
|
* `createNodeModulesPluginLoader` **只遍历根依赖的键、从不扫 node_modules 目录**,
|
|
336
414
|
* 于是那个包永远不会被加载:装成功了,重启后插件不见了,用户无从判断。
|
|
337
415
|
*
|
|
338
|
-
*
|
|
416
|
+
* 锁必须在**服务层**:本服务对外公开,任何插件都能绕过 HTTP 路由直接调,
|
|
339
417
|
* 加在路由或前端都不算数。
|
|
340
418
|
*/
|
|
341
419
|
let inflight = null;
|
|
@@ -365,6 +443,24 @@ export function createPackageManager(deps) {
|
|
|
365
443
|
inflight = null;
|
|
366
444
|
}
|
|
367
445
|
}
|
|
446
|
+
/** 安装源查询的缓存:只留成功的结果,失败时清掉,下次调用重查 */
|
|
447
|
+
let registryUrl;
|
|
448
|
+
function registry() {
|
|
449
|
+
if (!registryUrl) {
|
|
450
|
+
// 与 install / update 同一 cwd:项目根的 .npmrc 一并生效
|
|
451
|
+
registryUrl = execProc(proc, 'npm', ['config', 'get', 'registry'], deps.projectRoot()).then(out => {
|
|
452
|
+
const url = out.trim().replace(/\/+$/, '');
|
|
453
|
+
if (!/^https?:\/\/\S+$/i.test(url)) {
|
|
454
|
+
throw new Error(`npm config get registry 的输出不是 http(s) 地址: ${JSON.stringify(out.trim())}`);
|
|
455
|
+
}
|
|
456
|
+
return url;
|
|
457
|
+
});
|
|
458
|
+
registryUrl.catch(() => {
|
|
459
|
+
registryUrl = undefined;
|
|
460
|
+
});
|
|
461
|
+
}
|
|
462
|
+
return registryUrl;
|
|
463
|
+
}
|
|
368
464
|
/** 路径存在性:`test -d|-f <abs>`(不存在 → exit 1 → 抛 → false)。绝对路径,cwd 无关。 */
|
|
369
465
|
async function pathExists(absPath, kind) {
|
|
370
466
|
try {
|
|
@@ -387,15 +483,50 @@ export function createPackageManager(deps) {
|
|
|
387
483
|
return undefined;
|
|
388
484
|
}
|
|
389
485
|
}
|
|
486
|
+
/** 加载器口径的定义 name;解析不到则回退包名。name≠包名时 warn(与 runtime 加载包装同文案)。 */
|
|
487
|
+
async function definitionNameFor(pkgName) {
|
|
488
|
+
const resolved = await deps.resolveDefinitionName?.(pkgName);
|
|
489
|
+
const defName = typeof resolved === 'string' && resolved.length > 0 ? resolved : pkgName;
|
|
490
|
+
if (defName !== pkgName) {
|
|
491
|
+
deps.log.warn?.(`插件包 "${pkgName}" 的定义 name 为 "${defName}"——配置键/热扫描/卸载均以定义的 name 为准,二者应一致`);
|
|
492
|
+
}
|
|
493
|
+
return defName;
|
|
494
|
+
}
|
|
495
|
+
/** 注册表里该定义的全部 instanceId;没有枚举函数时只卸定义 name 本身。 */
|
|
496
|
+
function instanceIdsFor(defName) {
|
|
497
|
+
const listed = deps.listPluginInstanceIds?.(defName) ?? [];
|
|
498
|
+
const ids = [...new Set(listed.filter(id => id.length > 0))];
|
|
499
|
+
return ids.length > 0 ? ids : [defName];
|
|
500
|
+
}
|
|
501
|
+
/**
|
|
502
|
+
* 装前类型闸:经 `npm view <spec> keywords --json` 读 registry 上的类型关键词(在项目根跑,
|
|
503
|
+
* 沿用项目与本机的 npm 源配置),判据与卸载同一份({@link nonMarketKind})。闸放服务层而非
|
|
504
|
+
* HTTP 路由——本服务对外公开,任何插件都能绕过路由直接调。返回拒绝理由,`undefined` = 放行。
|
|
505
|
+
*/
|
|
506
|
+
async function installKindRefusal(npmPkg, root) {
|
|
507
|
+
const out = (await execProc(proc, 'npm', ['view', npmPkg, 'keywords', '--json'], root)).trim();
|
|
508
|
+
// 包没有 keywords 字段时 npm 什么都不输出;spec 是版本范围时按版本逐个给出、返回二维数组
|
|
509
|
+
const parsed = out ? JSON.parse(out) : [];
|
|
510
|
+
const perVersion = Array.isArray(parsed) && parsed.length > 0 && parsed.every(Array.isArray) ? parsed : [parsed];
|
|
511
|
+
const kind = perVersion.map(kw => nonMarketKind(kw)).find(k => k !== undefined);
|
|
512
|
+
if (!kind)
|
|
513
|
+
return undefined;
|
|
514
|
+
return (`${npmPkg} 是${kind},不是可装卸的插件,市场不负责它的安装。` +
|
|
515
|
+
(kind === '非插件包'
|
|
516
|
+
? '市场只安装带 aalis-plugin / aalis-interface 关键词的包。'
|
|
517
|
+
: '它随脚手架或依赖它的插件自动就位;要升级已装的版本,请在市场勾选它后用「更新所选」提交。'));
|
|
518
|
+
}
|
|
390
519
|
/**
|
|
391
520
|
* 装完的统一判定:rescan 出新插件即成功;没出新插件时按目标是否**声明自己是插件**分流。
|
|
392
521
|
* 「声明了插件却没被发现」正是那条静默假成功——必须报失败,否则用户看到 ok 却什么也没装上。
|
|
522
|
+
* 就位查的是加载器解析出的定义 name,不是 npm 包名。
|
|
393
523
|
*/
|
|
394
524
|
async function settleInstall(npmPkg, installedPkgJsonPath, where) {
|
|
395
525
|
const target = stripVersion(npmPkg);
|
|
396
526
|
// rescan 只当副作用用(让加载器发现新包),**不看返回值**——判据是目标自身是否就位。
|
|
397
527
|
await deps.rescanPlugins();
|
|
398
|
-
|
|
528
|
+
const defName = await definitionNameFor(target);
|
|
529
|
+
if (deps.isPluginRegistered(defName))
|
|
399
530
|
return { ok: true, message: `已安装并加载: ${target}` };
|
|
400
531
|
const meta = await readJson(installedPkgJsonPath);
|
|
401
532
|
if (declaresPlugin(meta)) {
|
|
@@ -423,6 +554,9 @@ export function createPackageManager(deps) {
|
|
|
423
554
|
message: '根依赖含 workspace: 协议,拒绝在此运行 npm install(会写出 package-lock.json 并搅坏 pnpm 工作区)',
|
|
424
555
|
};
|
|
425
556
|
}
|
|
557
|
+
const refused = await installKindRefusal(npmPkg, root);
|
|
558
|
+
if (refused)
|
|
559
|
+
return { ok: false, message: refused };
|
|
426
560
|
log.info(`正在安装: ${npmPkg} → 根依赖 + node_modules`);
|
|
427
561
|
// **刻意不加 `--ignore-scripts`**:依赖树的 preinstall/install/postinstall 会照常执行。
|
|
428
562
|
// 三条理由:脚手架自身就是裸 `npm install`(其生成的 README 也教用户裸装),加了会让
|
|
@@ -430,7 +564,18 @@ export function createPackageManager(deps) {
|
|
|
430
564
|
// (better-sqlite3,脚手架默认勾选)与 plugin-tool-browser(puppeteer);而真正的增量
|
|
431
565
|
// 风险只有传递依赖的 install 脚本这一片——入口是 owner 级、包名由用户自己点选、包本体
|
|
432
566
|
// 反正会被动态 import 执行(插件与内核同进程同权限,见 docs/concepts/security-model.md §1)。
|
|
433
|
-
|
|
567
|
+
//
|
|
568
|
+
// peer 护栏与更新预检相同(STRICT_PEERS_ENV)。代价:本就靠 legacy-peer-deps 容忍既有
|
|
569
|
+
// peer 冲突的项目,市场安装会整体失败,故失败文案要点明原因。
|
|
570
|
+
try {
|
|
571
|
+
await execProcBoth(proc, 'npm', ['install', npmPkg, '--no-audit', '--no-fund'], root, INSTALL_TIMEOUT_MS, STRICT_PEERS_ENV);
|
|
572
|
+
}
|
|
573
|
+
catch (err) {
|
|
574
|
+
const raw = err instanceof Error ? err.message : String(err);
|
|
575
|
+
if (!raw.includes('ERESOLVE'))
|
|
576
|
+
throw err;
|
|
577
|
+
throw new Error(`peer 依赖冲突,未安装(市场安装不沿用 .npmrc 里的 legacy-peer-deps):${extractPeerConflicts(raw).join(';')}`);
|
|
578
|
+
}
|
|
434
579
|
const bare = stripVersion(npmPkg);
|
|
435
580
|
return settleInstall(npmPkg, `${root}/node_modules/${bare}/package.json`, 'node_modules');
|
|
436
581
|
}
|
|
@@ -448,11 +593,10 @@ export function createPackageManager(deps) {
|
|
|
448
593
|
* 配置;再用 `npm_config_legacy_peer_deps=false` 压掉用户级与全局配置(已实测:
|
|
449
594
|
* 即便副本里放了 `legacy-peer-deps=true` 的 `.npmrc`,该环境变量也能翻回来)。
|
|
450
595
|
*
|
|
451
|
-
*
|
|
452
|
-
*
|
|
453
|
-
*
|
|
454
|
-
*
|
|
455
|
-
* 要做的话先解释清楚这个矛盾,别直接 cp。
|
|
596
|
+
* 项目 `.npmrc` 目前不拷进副本。代价:私有源用户的预检会跑去公共源解析(包只在私有源上
|
|
597
|
+
* 就 404/401 → 更新被挡住且报错文不对题)。早先 `test/integration/install-chain.test.ts` 的
|
|
598
|
+
* 真实 npm 用例显示「带上 `.npmrc` 后第 2 条护栏失效」,成因是当时测试夹具的进程桩没有转发
|
|
599
|
+
* `opts.env`,并非环境变量压不过项目级 `.npmrc`(见 STRICT_PEERS_ENV)。是否拷入另议。
|
|
456
600
|
*
|
|
457
601
|
* 判据只能是解析告警文本:`--dry-run --json` 实测只给 `{added, removed, changed,
|
|
458
602
|
* audited, funding}`,无任何冲突信息;退出码在本场景恒为 0(npm 把命令行显式 spec
|
|
@@ -469,7 +613,7 @@ export function createPackageManager(deps) {
|
|
|
469
613
|
if (await pathExists(lock, 'f')) {
|
|
470
614
|
await execProc(proc, 'cp', [lock, `${tmp.path}/package-lock.json`], tmp.path);
|
|
471
615
|
}
|
|
472
|
-
const { stdout, stderr } = await execProcBoth(proc, 'npm', ['install', ...specs, '--dry-run', '--no-audit', '--no-fund'], tmp.path, INSTALL_TIMEOUT_MS,
|
|
616
|
+
const { stdout, stderr } = await execProcBoth(proc, 'npm', ['install', ...specs, '--dry-run', '--no-audit', '--no-fund'], tmp.path, INSTALL_TIMEOUT_MS, STRICT_PEERS_ENV);
|
|
473
617
|
const unmet = findUnmetPeers(`${stderr}\n${stdout}`, specs.map(stripVersion));
|
|
474
618
|
return unmet.length > 0 ? unmet : undefined;
|
|
475
619
|
}
|
|
@@ -506,7 +650,7 @@ export function createPackageManager(deps) {
|
|
|
506
650
|
return { ok: false, message: '根依赖含 workspace: 协议,拒绝在此运行 npm install' };
|
|
507
651
|
}
|
|
508
652
|
// 只允许更新「根依赖里以 semver 范围声明」的包。闸放在服务层而非 HTTP 路由——
|
|
509
|
-
//
|
|
653
|
+
// 本服务对外公开,任何插件都能绕过路由直接调用(理由见 isRegistryDep)。
|
|
510
654
|
const rootDependencies = (rootPkg?.dependencies ?? {});
|
|
511
655
|
const notUpdatable = targets.filter(t => !isRegistryDep(rootDependencies[t.name]));
|
|
512
656
|
if (notUpdatable.length > 0) {
|
|
@@ -534,7 +678,7 @@ export function createPackageManager(deps) {
|
|
|
534
678
|
}
|
|
535
679
|
}
|
|
536
680
|
// ── 降级守卫 ──
|
|
537
|
-
// 闸放在服务层而非 HTTP
|
|
681
|
+
// 闸放在服务层而非 HTTP 路由:本服务对外公开,任何插件都能绕过路由直接调用。
|
|
538
682
|
// 拒绝而非放行的理由:registry 的 dist-tags.latest 可以**低于**本地已装版本(发布事故后
|
|
539
683
|
// `npm dist-tag add pkg@旧版 latest` 回滚,或用户曾装过预发布版),此时「更新」会静默降级;
|
|
540
684
|
// 读不到已装版本同样拒——无从判断方向就不动,用户可显式卸载重装。
|
|
@@ -649,11 +793,13 @@ export function createPackageManager(deps) {
|
|
|
649
793
|
}
|
|
650
794
|
}),
|
|
651
795
|
uninstall: pluginName => exclusive(`卸载 ${pluginName}`, () => uninstallOne(pluginName)),
|
|
796
|
+
serviceDependents: name => findServiceDependents(name, deps.pluginStatus?.() ?? []),
|
|
797
|
+
registry,
|
|
652
798
|
};
|
|
653
799
|
/**
|
|
654
|
-
*
|
|
800
|
+
* 卸载:服务层各道闸 + npm uninstall。
|
|
655
801
|
*
|
|
656
|
-
* 闸放服务层而非 HTTP
|
|
802
|
+
* 闸放服务层而非 HTTP 路由——本服务对外公开,任何插件都能绕过路由直接调
|
|
657
803
|
* (与 `buildUpdateSpecs`、`isRegistryDep` 同一理由)。前端早就有正确策略
|
|
658
804
|
* (只给 plugin/interface 卡片渲染卸载按钮),但那只是客户端校验,服务端不设防。
|
|
659
805
|
*/
|
|
@@ -672,27 +818,13 @@ export function createPackageManager(deps) {
|
|
|
672
818
|
// 「**这个操作会把你用来撤销它的那条通道一起销毁**」:卸掉插件,实例照常跑、市场里点
|
|
673
819
|
// 一下就能装回来(带内可恢复);卸掉内核或宿主,实例起不来、市场随之消失,只能开
|
|
674
820
|
// shell 修(带外)。更新不在此列——它保留实例且失败会自动回滚。
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
const isPlugin = declaresPlugin(meta);
|
|
679
|
-
const isInterface = kw.includes('aalis-interface');
|
|
680
|
-
if (!isPlugin && !isInterface) {
|
|
681
|
-
const kind = kw.includes('aalis-core')
|
|
682
|
-
? '内核'
|
|
683
|
-
: kw.includes('aalis-runtime')
|
|
684
|
-
? '宿主'
|
|
685
|
-
: kw.includes('aalis-api')
|
|
686
|
-
? '服务契约'
|
|
687
|
-
: kw.includes('aalis-schema')
|
|
688
|
-
? '数据规范'
|
|
689
|
-
: kw.includes('aalis-util')
|
|
690
|
-
? '工具库'
|
|
691
|
-
: '非插件包';
|
|
821
|
+
// 判据与安装同一份(nonMarketKind)。
|
|
822
|
+
const kind = nonMarketKind(meta.keywords);
|
|
823
|
+
if (kind) {
|
|
692
824
|
return {
|
|
693
825
|
ok: false,
|
|
694
826
|
message: `${pluginName} 是${kind},不是可装卸的插件,市场不负责它的卸载。` +
|
|
695
|
-
(
|
|
827
|
+
(kind === '内核' || kind === '宿主'
|
|
696
828
|
? '删掉它实例将无法启动、市场也随之消失,只能在终端里恢复;确需如此请手动执行 npm uninstall。'
|
|
697
829
|
: '它随依赖它的插件被 npm 自动剪枝;确需单独删除请手动执行 npm uninstall。'),
|
|
698
830
|
};
|
|
@@ -704,8 +836,8 @@ export function createPackageManager(deps) {
|
|
|
704
836
|
// 并提供 HTTP 面)、`package-manager`(装卸能力本身)。少任何一样,用户就只能开 shell。
|
|
705
837
|
//
|
|
706
838
|
// 判据是**「谁在提供我此刻依赖的服务」而不是包名**——第三方换个实现照样受保护,
|
|
707
|
-
// 而 `
|
|
708
|
-
// webui-server 与 package-manager
|
|
839
|
+
// 而 `services.all` 的首个条目即当前生效者(偏好 > 优先级 > 注册顺序),
|
|
840
|
+
// webui-server 与 package-manager 都是用包名做实例 id 的插件。
|
|
709
841
|
//
|
|
710
842
|
// 只拦「当前生效的那个」:想换实现的正常路径是「装新的 → 切过去 → 再卸旧的」,
|
|
711
843
|
// 那时它已不是提供者,本闸自然放行。
|
|
@@ -733,21 +865,44 @@ export function createPackageManager(deps) {
|
|
|
733
865
|
};
|
|
734
866
|
return { ok: false, message: `${pluginName} 不是经市场安装的:${why[origin] ?? '来源不明'}。` };
|
|
735
867
|
}
|
|
868
|
+
// 先解析定义 name 并枚举实例:npm uninstall 会拆掉 node_modules,之后就读不到入口了。
|
|
869
|
+
const defName = await definitionNameFor(pluginName);
|
|
870
|
+
const instanceIds = instanceIdsFor(defName);
|
|
871
|
+
// ── 闸三:服务依赖者 ──
|
|
872
|
+
// 某服务没有别的插件正在提供时,卸掉它的提供者会打断 required 该服务的插件(已禁用的不算)。
|
|
873
|
+
// 与市场卸载前的预警同一份判定(serviceDependents),按加载器解析出的定义 name 查。
|
|
874
|
+
const dependents = findServiceDependents(defName, deps.pluginStatus?.() ?? []);
|
|
875
|
+
if (dependents.length > 0) {
|
|
876
|
+
return {
|
|
877
|
+
ok: false,
|
|
878
|
+
message: `卸载会破坏依赖:${dependents.join('、')} 依赖此插件提供的服务,且没有别的插件正在提供。请先停用它们,或启用 / 安装替代提供者。`,
|
|
879
|
+
};
|
|
880
|
+
}
|
|
736
881
|
try {
|
|
737
882
|
await execProc(proc, 'npm', ['uninstall', pluginName, '--no-audit', '--no-fund'], root, INSTALL_TIMEOUT_MS);
|
|
738
|
-
|
|
739
|
-
|
|
883
|
+
for (const id of instanceIds) {
|
|
884
|
+
await deps.unloadPlugin(id); // 从运行时注册表彻底移除(dispose + delete),幂等
|
|
885
|
+
deps.cleanupConfig?.(id); // 清残留配置(含禁用标记)
|
|
886
|
+
}
|
|
740
887
|
log.info(`${pluginName}: 已从根依赖与 node_modules 移除`);
|
|
741
|
-
return {
|
|
888
|
+
return {
|
|
889
|
+
ok: true,
|
|
890
|
+
message: `插件 ${pluginName} 已卸载(已从根依赖与 node_modules 移除)。它写入 data/ 等存储根的数据不会删除,需要时请手动清理。`,
|
|
891
|
+
};
|
|
742
892
|
}
|
|
743
893
|
catch (err) {
|
|
744
894
|
return { ok: false, message: err instanceof Error ? err.message : String(err) };
|
|
745
895
|
}
|
|
746
896
|
}
|
|
747
897
|
}
|
|
748
|
-
export
|
|
749
|
-
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
898
|
+
export default definePlugin({
|
|
899
|
+
name: '@aalis/plugin-package-manager',
|
|
900
|
+
displayName: '包管理器',
|
|
901
|
+
subsystem: 'system',
|
|
902
|
+
provides: [packageManager],
|
|
903
|
+
uses,
|
|
904
|
+
apply(caps) {
|
|
905
|
+
caps.provide(packageManager, createService(caps), { label: 'package-manager' });
|
|
906
|
+
},
|
|
907
|
+
});
|
|
753
908
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aalis/plugin-package-manager",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"url": "https://github.com/AalisLabs/Aalis/issues"
|
|
13
13
|
},
|
|
14
14
|
"homepage": "https://github.com/AalisLabs/Aalis#readme",
|
|
15
|
-
"description": "插件包管理:从 npm
|
|
15
|
+
"description": "插件包管理:从 npm 安装/卸载/更新到项目根 dependencies",
|
|
16
16
|
"type": "module",
|
|
17
17
|
"keywords": [
|
|
18
18
|
"aalis",
|
|
@@ -24,21 +24,34 @@
|
|
|
24
24
|
"dist"
|
|
25
25
|
],
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"@aalis/api-process": ">=0.
|
|
28
|
-
"@aalis/util-dep-spec": ">=0.1.
|
|
27
|
+
"@aalis/api-process": ">=0.8.0 <1.0.0",
|
|
28
|
+
"@aalis/util-dep-spec": ">=0.1.1 <1.0.0",
|
|
29
|
+
"@aalis/api-plugin-source": ">=0.1.0 <1.0.0",
|
|
30
|
+
"@aalis/api-host-config": ">=0.1.0 <1.0.0",
|
|
31
|
+
"@aalis/api-package-manager": ">=0.1.0 <1.0.0"
|
|
29
32
|
},
|
|
30
33
|
"devDependencies": {
|
|
31
34
|
"@types/node": "^22.0.0",
|
|
32
35
|
"typescript": "^5.7.0",
|
|
33
|
-
"@aalis/core": "0.
|
|
36
|
+
"@aalis/core": "0.18.0"
|
|
34
37
|
},
|
|
35
38
|
"peerDependencies": {
|
|
36
|
-
"@aalis/core": ">=0.
|
|
39
|
+
"@aalis/core": ">=0.18.0 <1.0.0"
|
|
37
40
|
},
|
|
38
41
|
"aalis": {
|
|
39
42
|
"service": {
|
|
40
43
|
"required": [
|
|
41
|
-
"
|
|
44
|
+
"config",
|
|
45
|
+
"logger",
|
|
46
|
+
"process",
|
|
47
|
+
"provide",
|
|
48
|
+
"services"
|
|
49
|
+
],
|
|
50
|
+
"optional": [
|
|
51
|
+
"app",
|
|
52
|
+
"plugins",
|
|
53
|
+
"host-config",
|
|
54
|
+
"plugin-source"
|
|
42
55
|
],
|
|
43
56
|
"provides": [
|
|
44
57
|
"package-manager"
|