@jsbot-tellus/core 2.4.0 → 2.5.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/README.md +8 -5
- package/dist/app/cli.d.ts +10 -0
- package/dist/app/cli.d.ts.map +1 -0
- package/dist/app/cli.js +37 -0
- package/dist/app/cli.js.map +1 -0
- package/dist/app/runtime.d.ts +121 -0
- package/dist/app/runtime.d.ts.map +1 -0
- package/dist/app/runtime.js +296 -0
- package/dist/app/runtime.js.map +1 -0
- package/dist/app.js +63 -273
- package/dist/app.js.map +1 -1
- package/dist/core/dispatch/command.d.ts.map +1 -1
- package/dist/core/dispatch/command.js +5 -1
- package/dist/core/dispatch/command.js.map +1 -1
- package/dist/core/dispatch/router.d.ts.map +1 -1
- package/dist/core/dispatch/router.js +1 -1
- package/dist/core/dispatch/router.js.map +1 -1
- package/dist/core/plugin/command-params.d.ts +3 -36
- package/dist/core/plugin/command-params.d.ts.map +1 -1
- package/dist/core/plugin/command-params.js +2 -461
- package/dist/core/plugin/command-params.js.map +1 -1
- package/dist/core/plugin/install/paths.d.ts +7 -0
- package/dist/core/plugin/install/paths.d.ts.map +1 -0
- package/dist/core/plugin/install/paths.js +49 -0
- package/dist/core/plugin/install/paths.js.map +1 -0
- package/dist/core/plugin/install/state.d.ts +23 -0
- package/dist/core/plugin/install/state.d.ts.map +1 -0
- package/dist/core/plugin/install/state.js +129 -0
- package/dist/core/plugin/install/state.js.map +1 -0
- package/dist/core/plugin/install/validate-script.d.ts +3 -0
- package/dist/core/plugin/install/validate-script.d.ts.map +1 -0
- package/dist/core/plugin/install/validate-script.js +154 -0
- package/dist/core/plugin/install/validate-script.js.map +1 -0
- package/dist/core/plugin/install-dir.d.ts +3 -28
- package/dist/core/plugin/install-dir.d.ts.map +1 -1
- package/dist/core/plugin/install-dir.js +3 -326
- package/dist/core/plugin/install-dir.js.map +1 -1
- package/dist/core/plugin/installer/checks.d.ts +6 -0
- package/dist/core/plugin/installer/checks.d.ts.map +1 -0
- package/dist/core/plugin/installer/checks.js +99 -0
- package/dist/core/plugin/installer/checks.js.map +1 -0
- package/dist/core/plugin/installer/support.d.ts +37 -0
- package/dist/core/plugin/installer/support.d.ts.map +1 -0
- package/dist/core/plugin/installer/support.js +67 -0
- package/dist/core/plugin/installer/support.js.map +1 -0
- package/dist/core/plugin/installer/warnings.d.ts +5 -0
- package/dist/core/plugin/installer/warnings.d.ts.map +1 -0
- package/dist/core/plugin/installer/warnings.js +28 -0
- package/dist/core/plugin/installer/warnings.js.map +1 -0
- package/dist/core/plugin/installer.d.ts +4 -30
- package/dist/core/plugin/installer.d.ts.map +1 -1
- package/dist/core/plugin/installer.js +21 -202
- package/dist/core/plugin/installer.js.map +1 -1
- package/dist/core/plugin/params/compile.d.ts +3 -0
- package/dist/core/plugin/params/compile.d.ts.map +1 -0
- package/dist/core/plugin/params/compile.js +23 -0
- package/dist/core/plugin/params/compile.js.map +1 -0
- package/dist/core/plugin/params/declaration.d.ts +9 -0
- package/dist/core/plugin/params/declaration.d.ts.map +1 -0
- package/dist/core/plugin/params/declaration.js +223 -0
- package/dist/core/plugin/params/declaration.js.map +1 -0
- package/dist/core/plugin/params/input.d.ts +5 -0
- package/dist/core/plugin/params/input.d.ts.map +1 -0
- package/dist/core/plugin/params/input.js +181 -0
- package/dist/core/plugin/params/input.js.map +1 -0
- package/dist/core/plugin/params/reply.d.ts +3 -0
- package/dist/core/plugin/params/reply.d.ts.map +1 -0
- package/dist/core/plugin/params/reply.js +49 -0
- package/dist/core/plugin/params/reply.js.map +1 -0
- package/dist/core/plugin/params/type-level.d.ts +23 -0
- package/dist/core/plugin/params/type-level.d.ts.map +1 -0
- package/dist/core/plugin/params/type-level.js +2 -0
- package/dist/core/plugin/params/type-level.js.map +1 -0
- package/dist/core/plugin/params/types.d.ts +28 -0
- package/dist/core/plugin/params/types.d.ts.map +1 -0
- package/dist/core/plugin/params/types.js +12 -0
- package/dist/core/plugin/params/types.js.map +1 -0
- package/dist/core/plugin/params/values.d.ts +6 -0
- package/dist/core/plugin/params/values.d.ts.map +1 -0
- package/dist/core/plugin/params/values.js +108 -0
- package/dist/core/plugin/params/values.js.map +1 -0
- package/dist/core/web/api.d.ts +2 -14
- package/dist/core/web/api.d.ts.map +1 -1
- package/dist/core/web/api.js +8 -500
- package/dist/core/web/api.js.map +1 -1
- package/dist/core/web/routes/actions.d.ts +4 -0
- package/dist/core/web/routes/actions.d.ts.map +1 -0
- package/dist/core/web/routes/actions.js +33 -0
- package/dist/core/web/routes/actions.js.map +1 -0
- package/dist/core/web/routes/config.d.ts +5 -0
- package/dist/core/web/routes/config.d.ts.map +1 -0
- package/dist/core/web/routes/config.js +30 -0
- package/dist/core/web/routes/config.js.map +1 -0
- package/dist/core/web/routes/kv.d.ts +6 -0
- package/dist/core/web/routes/kv.d.ts.map +1 -0
- package/dist/core/web/routes/kv.js +80 -0
- package/dist/core/web/routes/kv.js.map +1 -0
- package/dist/core/web/routes/plugins.d.ts +5 -0
- package/dist/core/web/routes/plugins.d.ts.map +1 -0
- package/dist/core/web/routes/plugins.js +98 -0
- package/dist/core/web/routes/plugins.js.map +1 -0
- package/dist/core/web/routes/sessions.d.ts +8 -0
- package/dist/core/web/routes/sessions.d.ts.map +1 -0
- package/dist/core/web/routes/sessions.js +130 -0
- package/dist/core/web/routes/sessions.js.map +1 -0
- package/dist/core/web/routes/shared.d.ts +18 -0
- package/dist/core/web/routes/shared.d.ts.map +1 -0
- package/dist/core/web/routes/shared.js +19 -0
- package/dist/core/web/routes/shared.js.map +1 -0
- package/dist/core/web/routes/status.d.ts +6 -0
- package/dist/core/web/routes/status.d.ts.map +1 -0
- package/dist/core/web/routes/status.js +132 -0
- package/dist/core/web/routes/status.js.map +1 -0
- package/dist/core/web/server/auth.d.ts +17 -0
- package/dist/core/web/server/auth.d.ts.map +1 -0
- package/dist/core/web/server/auth.js +68 -0
- package/dist/core/web/server/auth.js.map +1 -0
- package/dist/core/web/server/csp.d.ts +11 -0
- package/dist/core/web/server/csp.d.ts.map +1 -0
- package/dist/core/web/server/csp.js +31 -0
- package/dist/core/web/server/csp.js.map +1 -0
- package/dist/core/web/server/request.d.ts +6 -0
- package/dist/core/web/server/request.d.ts.map +1 -0
- package/dist/core/web/server/request.js +33 -0
- package/dist/core/web/server/request.js.map +1 -0
- package/dist/core/web/server/security.d.ts +4 -0
- package/dist/core/web/server/security.d.ts.map +1 -0
- package/dist/core/web/server/security.js +12 -0
- package/dist/core/web/server/security.js.map +1 -0
- package/dist/core/web/server/sse.d.ts +18 -0
- package/dist/core/web/server/sse.d.ts.map +1 -0
- package/dist/core/web/server/sse.js +49 -0
- package/dist/core/web/server/sse.js.map +1 -0
- package/dist/core/web/server/static.d.ts +16 -0
- package/dist/core/web/server/static.d.ts.map +1 -0
- package/dist/core/web/server/static.js +80 -0
- package/dist/core/web/server/static.js.map +1 -0
- package/dist/core/web/server.d.ts +0 -7
- package/dist/core/web/server.d.ts.map +1 -1
- package/dist/core/web/server.js +41 -263
- package/dist/core/web/server.js.map +1 -1
- package/docs/architecture.md +28 -11
- package/docs/configuration.md +1 -1
- package/docs/migration.md +2 -2
- package/docs/plugin-api.md +3 -1
- package/docs/plugin-development.md +1 -1
- package/package.json +19 -17
- package/src/app/cli.ts +47 -0
- package/src/app/runtime.ts +522 -0
- package/src/app.ts +87 -395
- package/src/core/dispatch/command.ts +7 -1
- package/src/core/dispatch/router.ts +2 -1
- package/src/core/plugin/command-params.ts +8 -713
- package/src/core/plugin/install/paths.ts +72 -0
- package/src/core/plugin/install/state.ts +196 -0
- package/src/core/plugin/install/validate-script.ts +154 -0
- package/src/core/plugin/install-dir.ts +19 -427
- package/src/core/plugin/installer/checks.ts +137 -0
- package/src/core/plugin/installer/support.ts +120 -0
- package/src/core/plugin/installer/warnings.ts +52 -0
- package/src/core/plugin/installer.ts +52 -301
- package/src/core/plugin/params/compile.ts +41 -0
- package/src/core/plugin/params/declaration.ts +286 -0
- package/src/core/plugin/params/input.ts +254 -0
- package/src/core/plugin/params/reply.ts +59 -0
- package/src/core/plugin/params/type-level.ts +71 -0
- package/src/core/plugin/params/types.ts +49 -0
- package/src/core/plugin/params/values.ts +146 -0
- package/src/core/web/api.ts +33 -759
- package/src/core/web/routes/actions.ts +43 -0
- package/src/core/web/routes/config.ts +42 -0
- package/src/core/web/routes/kv.ts +122 -0
- package/src/core/web/routes/plugins.ts +151 -0
- package/src/core/web/routes/sessions.ts +188 -0
- package/src/core/web/routes/shared.ts +42 -0
- package/src/core/web/routes/status.ts +191 -0
- package/src/core/web/server/auth.ts +126 -0
- package/src/core/web/server/csp.ts +33 -0
- package/src/core/web/server/request.ts +38 -0
- package/src/core/web/server/security.ts +14 -0
- package/src/core/web/server/sse.ts +74 -0
- package/src/core/web/server/static.ts +112 -0
- package/src/core/web/server.ts +41 -383
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install-dir.js","sourceRoot":"","sources":["../../../src/core/plugin/install-dir.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"install-dir.js","sourceRoot":"","sources":["../../../src/core/plugin/install-dir.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,oBAAoB,EACpB,UAAU,GACb,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACH,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,GAGpB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { InstalledPackageRecord, InstallState } from '../install-dir.js';
|
|
2
|
+
import type { ValidatedPlugin } from '../install-validate.js';
|
|
3
|
+
export declare function checkPlugins(packageName: string, plugins: ValidatedPlugin[], state: InstallState, reservedIds: () => ReadonlySet<string>): void;
|
|
4
|
+
export declare function resolveTarget(target: string, state: InstallState): string;
|
|
5
|
+
export declare function assertTargetAvailable(state: InstallState, packageName: string, directory: string, target: string, previous: InstalledPackageRecord | undefined): Promise<void>;
|
|
6
|
+
//# sourceMappingURL=checks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checks.d.ts","sourceRoot":"","sources":["../../../../src/core/plugin/installer/checks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAE7E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAG7D,wBAAgB,YAAY,CACxB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,eAAe,EAAE,EAC1B,KAAK,EAAE,YAAY,EACnB,WAAW,EAAE,MAAM,WAAW,CAAC,MAAM,CAAC,GACvC,IAAI,CAqFN;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,MAAM,CAczE;AAED,wBAAsB,qBAAqB,CACvC,KAAK,EAAE,YAAY,EACnB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,sBAAsB,GAAG,SAAS,GAC7C,OAAO,CAAC,IAAI,CAAC,CAiBf"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { pathExists } from '../install-dir.js';
|
|
2
|
+
import { ID_PATTERN, InstallerError } from './support.js';
|
|
3
|
+
export function checkPlugins(packageName, plugins, state, reservedIds) {
|
|
4
|
+
const ownIds = new Set(state.packages[packageName]?.pluginIds ?? []);
|
|
5
|
+
const ids = new Set();
|
|
6
|
+
const taken = new Set();
|
|
7
|
+
for (const id of reservedIds()) {
|
|
8
|
+
if (!ownIds.has(id))
|
|
9
|
+
taken.add(id);
|
|
10
|
+
}
|
|
11
|
+
for (const [name, record] of Object.entries(state.packages)) {
|
|
12
|
+
if (name === packageName)
|
|
13
|
+
continue;
|
|
14
|
+
for (const id of record.pluginIds)
|
|
15
|
+
taken.add(id);
|
|
16
|
+
}
|
|
17
|
+
for (const plugin of plugins) {
|
|
18
|
+
if (!ID_PATTERN.test(plugin.id)) {
|
|
19
|
+
throw new InstallerError(`插件 id 无效: ${plugin.id}`);
|
|
20
|
+
}
|
|
21
|
+
if (ids.has(plugin.id)) {
|
|
22
|
+
throw new InstallerError(`插件 id 重复: ${plugin.id}`);
|
|
23
|
+
}
|
|
24
|
+
if (taken.has(plugin.id)) {
|
|
25
|
+
throw new InstallerError(`插件 id 已被占用: ${plugin.id}(内置插件或其他已安装包)`);
|
|
26
|
+
}
|
|
27
|
+
ids.add(plugin.id);
|
|
28
|
+
}
|
|
29
|
+
const graph = new Map();
|
|
30
|
+
for (const [name, record] of Object.entries(state.packages)) {
|
|
31
|
+
if (name === packageName)
|
|
32
|
+
continue;
|
|
33
|
+
for (const id of record.pluginIds) {
|
|
34
|
+
graph.set(id, record.dependencies[id] ?? []);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
for (const plugin of plugins) {
|
|
38
|
+
graph.set(plugin.id, plugin.dependencies);
|
|
39
|
+
}
|
|
40
|
+
const reserved = reservedIds();
|
|
41
|
+
const available = new Set(graph.keys());
|
|
42
|
+
for (const id of reserved) {
|
|
43
|
+
if (!ownIds.has(id))
|
|
44
|
+
available.add(id);
|
|
45
|
+
}
|
|
46
|
+
for (const [id, dependencies] of graph) {
|
|
47
|
+
for (const dependency of dependencies) {
|
|
48
|
+
if (!available.has(dependency)) {
|
|
49
|
+
throw new InstallerError(`插件 ${id} 依赖未加载的插件: ${dependency}`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
const visiting = new Set();
|
|
54
|
+
const visited = new Set();
|
|
55
|
+
const visit = (id) => {
|
|
56
|
+
if (visited.has(id))
|
|
57
|
+
return;
|
|
58
|
+
if (visiting.has(id)) {
|
|
59
|
+
throw new InstallerError(`插件依赖存在循环: ${id}`);
|
|
60
|
+
}
|
|
61
|
+
visiting.add(id);
|
|
62
|
+
for (const dependency of graph.get(id) ?? []) {
|
|
63
|
+
if (graph.has(dependency))
|
|
64
|
+
visit(dependency);
|
|
65
|
+
}
|
|
66
|
+
visiting.delete(id);
|
|
67
|
+
visited.add(id);
|
|
68
|
+
};
|
|
69
|
+
for (const id of graph.keys())
|
|
70
|
+
visit(id);
|
|
71
|
+
}
|
|
72
|
+
export function resolveTarget(target, state) {
|
|
73
|
+
const value = target.trim();
|
|
74
|
+
if (value.length === 0) {
|
|
75
|
+
throw new InstallerError('请提供包名或插件 id');
|
|
76
|
+
}
|
|
77
|
+
if (state.packages[value] !== undefined)
|
|
78
|
+
return value;
|
|
79
|
+
for (const [name, record] of Object.entries(state.packages)) {
|
|
80
|
+
if (record.pluginIds.includes(value))
|
|
81
|
+
return name;
|
|
82
|
+
}
|
|
83
|
+
throw new InstallerError(`未找到已安装的插件包: ${value}`);
|
|
84
|
+
}
|
|
85
|
+
export async function assertTargetAvailable(state, packageName, directory, target, previous) {
|
|
86
|
+
for (const [name, record] of Object.entries(state.packages)) {
|
|
87
|
+
if (name === packageName)
|
|
88
|
+
continue;
|
|
89
|
+
if (record.dir !== directory)
|
|
90
|
+
continue;
|
|
91
|
+
throw new InstallerError(`插件目录已被其它已安装包使用: ${record.dir}(${name})`);
|
|
92
|
+
}
|
|
93
|
+
if (previous !== undefined)
|
|
94
|
+
return;
|
|
95
|
+
if (await pathExists(target)) {
|
|
96
|
+
throw new InstallerError(`安装目录已存在且不是由安装器管理: ${target}。请先移除该本地插件或为其改名。`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=checks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checks.js","sourceRoot":"","sources":["../../../../src/core/plugin/installer/checks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { InstallerConfig } from '../../config/schema.js';
|
|
2
|
+
import type { Logger } from '../../logging/logger.js';
|
|
3
|
+
import type { PackageValidator } from '../install-validate.js';
|
|
4
|
+
import type { NpmRunner } from '../npm-runner.js';
|
|
5
|
+
import { type PackageSpec } from '../spec.js';
|
|
6
|
+
import type { PluginInstaller } from '../types.js';
|
|
7
|
+
export declare class InstallerError extends Error {
|
|
8
|
+
constructor(message: string, options?: ErrorOptions);
|
|
9
|
+
}
|
|
10
|
+
export interface InstallerOptions {
|
|
11
|
+
/** Plugins root. Installed packages are placed in subdirectories here. */
|
|
12
|
+
dir: string;
|
|
13
|
+
config: InstallerConfig;
|
|
14
|
+
logger: Logger;
|
|
15
|
+
runner?: NpmRunner | undefined;
|
|
16
|
+
validate?: PackageValidator | undefined;
|
|
17
|
+
reservedIds?: (() => ReadonlySet<string>) | undefined;
|
|
18
|
+
configuredPluginIds?: (() => ReadonlySet<string>) | undefined;
|
|
19
|
+
now?: (() => Date) | undefined;
|
|
20
|
+
}
|
|
21
|
+
export declare const ID_PATTERN: RegExp;
|
|
22
|
+
export declare const NPM_FLAGS: string[];
|
|
23
|
+
export declare const STAGING_MANIFEST: {
|
|
24
|
+
name: string;
|
|
25
|
+
private: boolean;
|
|
26
|
+
version: string;
|
|
27
|
+
type: string;
|
|
28
|
+
};
|
|
29
|
+
export declare function messageOf(error: unknown): string;
|
|
30
|
+
export declare function asInstallerError(error: unknown): InstallerError;
|
|
31
|
+
export declare function installDirectoryName(packageName: string, pluginIds: readonly string[]): string;
|
|
32
|
+
export declare function parseInstallerSpec(spec: string, allowedPackages: string[]): PackageSpec;
|
|
33
|
+
export declare function temporaryPath(dir: string, kind: 'staging' | 'backup'): string;
|
|
34
|
+
export declare function assertInstallerEnabled(enabled: boolean): void;
|
|
35
|
+
export declare function createTaskSerializer(): <T>(task: () => Promise<T>) => Promise<T>;
|
|
36
|
+
export declare function createDisabledInstaller(): PluginInstaller;
|
|
37
|
+
//# sourceMappingURL=support.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"support.d.ts","sourceRoot":"","sources":["../../../../src/core/plugin/installer/support.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAC7D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAErD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,EAIH,KAAK,WAAW,EACnB,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAElD,qBAAa,cAAe,SAAQ,KAAK;IACrC,YAAY,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,EAGlD;CACJ;AAED,MAAM,WAAW,gBAAgB;IAC7B,0EAA0E;IAC1E,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,EAAE,eAAe,CAAA;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,SAAS,GAAG,SAAS,CAAA;IAC9B,QAAQ,CAAC,EAAE,gBAAgB,GAAG,SAAS,CAAA;IACvC,WAAW,CAAC,EAAE,CAAC,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS,CAAA;IACrD,mBAAmB,CAAC,EAAE,CAAC,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS,CAAA;IAC7D,GAAG,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAA;CACjC;AAED,eAAO,MAAM,UAAU,QAA4B,CAAA;AACnD,eAAO,MAAM,SAAS,UAAkD,CAAA;AACxE,eAAO,MAAM,gBAAgB;IACzB,IAAI;IACJ,OAAO;IACP,OAAO;IACP,IAAI;CACP,CAAA;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEhD;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,CAQ/D;AAED,wBAAgB,oBAAoB,CAChC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,SAAS,MAAM,EAAE,GAC7B,MAAM,CAIR;AAED,wBAAgB,kBAAkB,CAC9B,IAAI,EAAE,MAAM,EACZ,eAAe,EAAE,MAAM,EAAE,GAC1B,WAAW,CAQb;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,QAAQ,GAAG,MAAM,CAE7E;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAM7D;AAED,wBAAgB,oBAAoB,IAAI,CAAC,CAAC,EACtC,IAAI,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,KACrB,OAAO,CAAC,CAAC,CAAC,CAad;AAED,wBAAgB,uBAAuB,IAAI,eAAe,CAWzD"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { packageDirectoryName } from '../install-dir.js';
|
|
4
|
+
import { isPackageAllowed, parsePackageSpec, PackageSpecError, } from '../spec.js';
|
|
5
|
+
export class InstallerError extends Error {
|
|
6
|
+
constructor(message, options) {
|
|
7
|
+
super(message, options);
|
|
8
|
+
this.name = 'InstallerError';
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
export const ID_PATTERN = /^[a-z0-9][a-z0-9._-]*$/i;
|
|
12
|
+
export const NPM_FLAGS = ['--no-audit', '--no-fund', '--loglevel=error'];
|
|
13
|
+
export const STAGING_MANIFEST = {
|
|
14
|
+
name: '@jsbot-tellus/plugin-staging',
|
|
15
|
+
private: true,
|
|
16
|
+
version: '0.0.0',
|
|
17
|
+
type: 'module',
|
|
18
|
+
};
|
|
19
|
+
export function messageOf(error) {
|
|
20
|
+
return error instanceof Error ? error.message : String(error);
|
|
21
|
+
}
|
|
22
|
+
export function asInstallerError(error) {
|
|
23
|
+
if (error instanceof InstallerError)
|
|
24
|
+
return error;
|
|
25
|
+
if (error instanceof PackageSpecError) {
|
|
26
|
+
return new InstallerError(error.message, { cause: error });
|
|
27
|
+
}
|
|
28
|
+
return new InstallerError(messageOf(error), { cause: error });
|
|
29
|
+
}
|
|
30
|
+
export function installDirectoryName(packageName, pluginIds) {
|
|
31
|
+
const only = pluginIds.length === 1 ? pluginIds[0] : undefined;
|
|
32
|
+
return only ?? packageDirectoryName(packageName);
|
|
33
|
+
}
|
|
34
|
+
export function parseInstallerSpec(spec, allowedPackages) {
|
|
35
|
+
const parsed = parsePackageSpec(spec);
|
|
36
|
+
if (!isPackageAllowed(parsed.name, allowedPackages)) {
|
|
37
|
+
throw new InstallerError(`包不在允许列表: ${parsed.name}`);
|
|
38
|
+
}
|
|
39
|
+
return parsed;
|
|
40
|
+
}
|
|
41
|
+
export function temporaryPath(dir, kind) {
|
|
42
|
+
return join(dir, `.${kind}-${randomUUID()}`);
|
|
43
|
+
}
|
|
44
|
+
export function assertInstallerEnabled(enabled) {
|
|
45
|
+
if (!enabled) {
|
|
46
|
+
throw new InstallerError('插件安装功能未启用(installer.enabled=false)');
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
export function createTaskSerializer() {
|
|
50
|
+
let tail = Promise.resolve();
|
|
51
|
+
return (task) => {
|
|
52
|
+
const run = tail.then(task, task);
|
|
53
|
+
tail = run.then(() => undefined, () => undefined);
|
|
54
|
+
return run;
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
export function createDisabledInstaller() {
|
|
58
|
+
const fail = () => Promise.reject(new InstallerError('插件安装功能未启用'));
|
|
59
|
+
return {
|
|
60
|
+
enabled: false,
|
|
61
|
+
list: () => Promise.resolve([]),
|
|
62
|
+
install: fail,
|
|
63
|
+
remove: fail,
|
|
64
|
+
update: fail,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=support.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"support.js","sourceRoot":"","sources":["../../../../src/core/plugin/installer/support.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { InstalledPackageRecord, InstallState } from '../install-dir.js';
|
|
2
|
+
export declare function configuredWarnings(pluginIds: readonly string[], configured: ReadonlySet<string>): string[];
|
|
3
|
+
export declare function removalWarnings(packageName: string, record: InstalledPackageRecord | undefined, state: InstallState, configured: ReadonlySet<string>): string[];
|
|
4
|
+
export declare function dependentWarnings(packageName: string, record: InstalledPackageRecord | undefined, state: InstallState): string[];
|
|
5
|
+
//# sourceMappingURL=warnings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"warnings.d.ts","sourceRoot":"","sources":["../../../../src/core/plugin/installer/warnings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAE7E,wBAAgB,kBAAkB,CAC9B,SAAS,EAAE,SAAS,MAAM,EAAE,EAC5B,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,GAChC,MAAM,EAAE,CAOV;AAED,wBAAgB,eAAe,CAC3B,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,sBAAsB,GAAG,SAAS,EAC1C,KAAK,EAAE,YAAY,EACnB,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,GAChC,MAAM,EAAE,CAKV;AAED,wBAAgB,iBAAiB,CAC7B,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,sBAAsB,GAAG,SAAS,EAC1C,KAAK,EAAE,YAAY,GACpB,MAAM,EAAE,CAqBV"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export function configuredWarnings(pluginIds, configured) {
|
|
2
|
+
return pluginIds
|
|
3
|
+
.filter((id) => configured.has(id))
|
|
4
|
+
.map((id) => `配置里的 plugins.${id} 仍然存在,重启前请删除,否则会因未知插件 ID 启动失败`);
|
|
5
|
+
}
|
|
6
|
+
export function removalWarnings(packageName, record, state, configured) {
|
|
7
|
+
return [
|
|
8
|
+
...configuredWarnings(record?.pluginIds ?? [], configured),
|
|
9
|
+
...dependentWarnings(packageName, record, state),
|
|
10
|
+
];
|
|
11
|
+
}
|
|
12
|
+
export function dependentWarnings(packageName, record, state) {
|
|
13
|
+
const removedIds = new Set(record?.pluginIds ?? []);
|
|
14
|
+
const warnings = [];
|
|
15
|
+
for (const [name, other] of Object.entries(state.packages)) {
|
|
16
|
+
if (name === packageName)
|
|
17
|
+
continue;
|
|
18
|
+
for (const [pluginId, dependencies] of Object.entries(other.dependencies)) {
|
|
19
|
+
for (const dependency of dependencies) {
|
|
20
|
+
if (!removedIds.has(dependency))
|
|
21
|
+
continue;
|
|
22
|
+
warnings.push(`插件包 ${name} 的插件 ${pluginId} 依赖已卸载的插件 ${dependency}`);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
return warnings;
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=warnings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"warnings.js","sourceRoot":"","sources":["../../../../src/core/plugin/installer/warnings.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,kBAAkB,CAC9B,SAA4B,EAC5B,UAA+B;IAE/B,OAAO,SAAS;SACX,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SAClC,GAAG,CACA,CAAC,EAAE,EAAE,EAAE,CACH,gBAAgB,EAAE,+BAA+B,CACxD,CAAA;AACT,CAAC;AAED,MAAM,UAAU,eAAe,CAC3B,WAAmB,EACnB,MAA0C,EAC1C,KAAmB,EACnB,UAA+B;IAE/B,OAAO;QACH,GAAG,kBAAkB,CAAC,MAAM,EAAE,SAAS,IAAI,EAAE,EAAE,UAAU,CAAC;QAC1D,GAAG,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC;KACnD,CAAA;AACL,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC7B,WAAmB,EACnB,MAA0C,EAC1C,KAAmB;IAEnB,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,IAAI,EAAE,CAAC,CAAA;IACnD,MAAM,QAAQ,GAAa,EAAE,CAAA;IAE7B,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzD,IAAI,IAAI,KAAK,WAAW;YAAE,SAAQ;QAElC,KAAK,MAAM,CAAC,QAAQ,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,CACjD,KAAK,CAAC,YAAY,CACrB,EAAE,CAAC;YACA,KAAK,MAAM,UAAU,IAAI,YAAY,EAAE,CAAC;gBACpC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,UAAU,CAAC;oBAAE,SAAQ;gBAEzC,QAAQ,CAAC,IAAI,CACT,OAAO,IAAI,QAAQ,QAAQ,aAAa,UAAU,EAAE,CACvD,CAAA;YACL,CAAC;QACL,CAAC;IACL,CAAC;IAED,OAAO,QAAQ,CAAA;AACnB,CAAC"}
|
|
@@ -1,22 +1,7 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import type { Logger } from '../logging/logger.js';
|
|
3
|
-
import { type PackageValidator } from './install-validate.js';
|
|
4
|
-
import { type NpmRunner } from './npm-runner.js';
|
|
1
|
+
import { type InstallerOptions } from './installer/support.js';
|
|
5
2
|
import type { InstalledPackageInfo, PluginInstallResult, PluginInstaller, PluginRemoveResult, PluginUpdateResult } from './types.js';
|
|
6
|
-
export
|
|
7
|
-
|
|
8
|
-
}
|
|
9
|
-
export interface InstallerOptions {
|
|
10
|
-
/** Plugins root. Installed packages are placed in subdirectories here. */
|
|
11
|
-
dir: string;
|
|
12
|
-
config: InstallerConfig;
|
|
13
|
-
logger: Logger;
|
|
14
|
-
runner?: NpmRunner | undefined;
|
|
15
|
-
validate?: PackageValidator | undefined;
|
|
16
|
-
reservedIds?: (() => ReadonlySet<string>) | undefined;
|
|
17
|
-
configuredPluginIds?: (() => ReadonlySet<string>) | undefined;
|
|
18
|
-
now?: (() => Date) | undefined;
|
|
19
|
-
}
|
|
3
|
+
export { createDisabledInstaller, InstallerError } from './installer/support.js';
|
|
4
|
+
export type { InstallerOptions } from './installer/support.js';
|
|
20
5
|
export declare class NpmPluginInstaller implements PluginInstaller {
|
|
21
6
|
readonly enabled: boolean;
|
|
22
7
|
private readonly dir;
|
|
@@ -27,7 +12,7 @@ export declare class NpmPluginInstaller implements PluginInstaller {
|
|
|
27
12
|
private readonly reservedIds;
|
|
28
13
|
private readonly configuredPluginIds;
|
|
29
14
|
private readonly now;
|
|
30
|
-
private
|
|
15
|
+
private readonly serialize;
|
|
31
16
|
constructor(options: InstallerOptions);
|
|
32
17
|
list(): Promise<InstalledPackageInfo[]>;
|
|
33
18
|
install(spec: string, signal?: AbortSignal | undefined): Promise<PluginInstallResult>;
|
|
@@ -36,16 +21,5 @@ export declare class NpmPluginInstaller implements PluginInstaller {
|
|
|
36
21
|
} | undefined): Promise<PluginRemoveResult>;
|
|
37
22
|
update(target?: string | undefined, signal?: AbortSignal | undefined): Promise<PluginUpdateResult>;
|
|
38
23
|
private installSpec;
|
|
39
|
-
private assertTargetAvailable;
|
|
40
|
-
private checkPlugins;
|
|
41
|
-
private resolveTarget;
|
|
42
|
-
private removalWarnings;
|
|
43
|
-
private configuredWarnings;
|
|
44
|
-
private dependentWarnings;
|
|
45
|
-
private parse;
|
|
46
|
-
private temporaryPath;
|
|
47
|
-
private assertEnabled;
|
|
48
|
-
private serialize;
|
|
49
24
|
}
|
|
50
|
-
export declare function createDisabledInstaller(): PluginInstaller;
|
|
51
25
|
//# sourceMappingURL=installer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../../src/core/plugin/installer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../../src/core/plugin/installer.ts"],"names":[],"mappings":"AAyBA,OAAO,EAWH,KAAK,gBAAgB,EACxB,MAAM,wBAAwB,CAAA;AAQ/B,OAAO,KAAK,EACR,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EACrB,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAE,uBAAuB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAChF,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAE9D,qBAAa,kBAAmB,YAAW,eAAe;IACtD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IAEzB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAQ;IAC5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAW;IAClC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAC3C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA2B;IACvD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA2B;IAC/D,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAY;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAyB;IAEnD,YAAY,OAAO,EAAE,gBAAgB,EAWpC;IAEK,IAAI,IAAI,OAAO,CAAC,oBAAoB,EAAE,CAAC,CA2B5C;IAED,OAAO,CACH,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,GACjC,OAAO,CAAC,mBAAmB,CAAC,CAS9B;IAED,MAAM,CACF,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,EAChC,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;KAAE,GAAG,SAAS,GACtD,OAAO,CAAC,kBAAkB,CAAC,CAiF7B;IAED,MAAM,CACF,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,EAC3B,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,GACjC,OAAO,CAAC,kBAAkB,CAAC,CAiD7B;YAEa,WAAW;CAmL5B"}
|