@aalis/plugin-webui-server 0.15.0 → 0.16.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/dist/attention.d.ts +2 -2
- package/dist/attention.d.ts.map +1 -1
- package/dist/attention.js +5 -4
- package/dist/attention.js.map +1 -1
- package/dist/auth.d.ts +13 -4
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +77 -27
- package/dist/auth.js.map +1 -1
- package/dist/client-switch-page.d.ts +25 -3
- package/dist/client-switch-page.d.ts.map +1 -1
- package/dist/client-switch-page.js +49 -19
- package/dist/client-switch-page.js.map +1 -1
- package/dist/gate.d.ts.map +1 -1
- package/dist/gate.js +2 -1
- package/dist/gate.js.map +1 -1
- package/dist/html.d.ts +15 -0
- package/dist/html.d.ts.map +1 -0
- package/dist/html.js +38 -0
- package/dist/html.js.map +1 -0
- package/dist/index.d.ts +4 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +223 -244
- package/dist/index.js.map +1 -1
- package/dist/layout.d.ts +2 -1
- package/dist/layout.d.ts.map +1 -1
- package/dist/layout.js +5 -3
- package/dist/layout.js.map +1 -1
- package/dist/locales/en.d.ts +191 -0
- package/dist/locales/en.d.ts.map +1 -0
- package/dist/locales/en.js +191 -0
- package/dist/locales/en.js.map +1 -0
- package/dist/localize.d.ts +24 -0
- package/dist/localize.d.ts.map +1 -0
- package/dist/localize.js +68 -0
- package/dist/localize.js.map +1 -0
- package/dist/page-check.d.ts.map +1 -1
- package/dist/page-check.js +32 -25
- package/dist/page-check.js.map +1 -1
- package/dist/pages.d.ts +9 -7
- package/dist/pages.d.ts.map +1 -1
- package/dist/pages.js +77 -61
- package/dist/pages.js.map +1 -1
- package/dist/route.d.ts +5 -2
- package/dist/route.d.ts.map +1 -1
- package/dist/route.js +5 -2
- package/dist/route.js.map +1 -1
- package/dist/routes/files.d.ts.map +1 -1
- package/dist/routes/files.js +4 -3
- package/dist/routes/files.js.map +1 -1
- package/dist/routes/frames.js +3 -3
- package/dist/routes/frames.js.map +1 -1
- package/dist/routes/i18n.d.ts +20 -0
- package/dist/routes/i18n.d.ts.map +1 -0
- package/dist/routes/i18n.js +78 -0
- package/dist/routes/i18n.js.map +1 -0
- package/dist/routes/marketplace.d.ts.map +1 -1
- package/dist/routes/marketplace.js +27 -29
- package/dist/routes/marketplace.js.map +1 -1
- package/dist/routes/media.d.ts +3 -0
- package/dist/routes/media.d.ts.map +1 -1
- package/dist/routes/media.js +29 -26
- package/dist/routes/media.js.map +1 -1
- package/dist/routes/pages.d.ts +4 -2
- package/dist/routes/pages.d.ts.map +1 -1
- package/dist/routes/pages.js +36 -18
- package/dist/routes/pages.js.map +1 -1
- package/dist/routes/plugins.d.ts +5 -9
- package/dist/routes/plugins.d.ts.map +1 -1
- package/dist/routes/plugins.js +114 -129
- package/dist/routes/plugins.js.map +1 -1
- package/dist/routes/proxy.d.ts +3 -2
- package/dist/routes/proxy.d.ts.map +1 -1
- package/dist/routes/proxy.js +62 -41
- package/dist/routes/proxy.js.map +1 -1
- package/dist/texts.d.ts +381 -0
- package/dist/texts.d.ts.map +1 -0
- package/dist/texts.js +194 -0
- package/dist/texts.js.map +1 -0
- package/package.json +26 -23
package/dist/routes/pages.js
CHANGED
|
@@ -2,35 +2,55 @@
|
|
|
2
2
|
// routes/pages.ts — 声明式页面、会话面板与布局记录的 REST 路由
|
|
3
3
|
//
|
|
4
4
|
// 路径与返回形状见 api-webui 的 page.ts。页面的数据源与动作要把调用者交给插件,这两条路由自己解析身份(与 gate 同一判定);
|
|
5
|
-
// 其余用 gate。闸门与校验在 pages.ts
|
|
5
|
+
// 其余用 gate。闸门与校验在 pages.ts,这里只把请求交过去、把结果连同它要的渲染选项写回。插件前端的字典是这一页所属插件
|
|
6
|
+
// 的(插件名取实例 id 第一个「:」之前的部分),原样交出。布局记录存在插件数据里,存储服务不在时回 503。
|
|
6
7
|
// ============================================================
|
|
8
|
+
import { parseInstanceId } from '@aalis/core';
|
|
7
9
|
import { LayoutFull, parseLayoutOperation } from '../layout.js';
|
|
10
|
+
import { renderWith, skipSchemaDefaults } from '../localize.js';
|
|
8
11
|
import { route } from '../route.js';
|
|
12
|
+
import { t } from '../texts.js';
|
|
9
13
|
export function registerPageRoutes(expressApp, deps, identify, gate) {
|
|
10
14
|
const { registry, layout } = deps;
|
|
11
|
-
const reply = (res, { status, body }) =>
|
|
12
|
-
|
|
15
|
+
const reply = (res, { status, body, render }) => {
|
|
16
|
+
if (render)
|
|
17
|
+
renderWith(res, render);
|
|
18
|
+
res.status(status).json(body);
|
|
19
|
+
};
|
|
20
|
+
const forbidden = (res) => res.status(403).json({ error: t('ownerRequired') });
|
|
13
21
|
route(expressApp, 'GET /api/pages', gate(), (_req, res) => {
|
|
14
|
-
|
|
22
|
+
const pages = registry.views();
|
|
23
|
+
const inputs = pages.flatMap(page => Object.values(page.actions ?? {}).map(action => action.input));
|
|
24
|
+
renderWith(res, { skip: skipSchemaDefaults(inputs) });
|
|
25
|
+
res.json({ pages });
|
|
15
26
|
});
|
|
16
27
|
route(expressApp, 'GET /api/session-pages', gate(), async (req, res) => {
|
|
17
28
|
reply(res, await registry.panelPages(req.query.sessionId));
|
|
18
29
|
});
|
|
30
|
+
route(expressApp, 'GET /api/pages/:instance/:pageKey/texts', gate(), (req, res) => {
|
|
31
|
+
const { instance, pageKey } = req.params;
|
|
32
|
+
if (!registry.placementOf({ instance, pageKey })) {
|
|
33
|
+
return res.status(404).json({ error: t('pageMissing', { page: pageKey, instance }) });
|
|
34
|
+
}
|
|
35
|
+
// 字典是原样数据:译文表的键可能恰好是文字对象的那几个
|
|
36
|
+
renderWith(res, { skip: () => true });
|
|
37
|
+
res.json(deps.texts(parseInstanceId(instance).moduleName));
|
|
38
|
+
});
|
|
19
39
|
route(expressApp, 'GET /api/pages/:instance/:pageKey/data/:componentId', async (req, res) => {
|
|
20
40
|
const caller = identify(req);
|
|
21
41
|
if (!caller)
|
|
22
42
|
return forbidden(res);
|
|
23
43
|
const { instance, pageKey, componentId } = req.params;
|
|
24
|
-
reply(res, await registry.data(instance, pageKey, componentId, req.query, caller));
|
|
44
|
+
reply(res, await registry.data(instance, pageKey, componentId, req.query, { caller }));
|
|
25
45
|
});
|
|
26
46
|
route(expressApp, 'POST /api/pages/:instance/:pageKey/actions/:action', async (req, res) => {
|
|
27
47
|
const caller = identify(req);
|
|
28
48
|
if (!caller)
|
|
29
49
|
return forbidden(res);
|
|
30
50
|
const { instance, pageKey, action } = req.params;
|
|
31
|
-
reply(res, await registry.act(instance, pageKey, action, req.body, caller, req.socket.remoteAddress ?? '未知'));
|
|
51
|
+
reply(res, await registry.act(instance, pageKey, action, req.body, { caller }, req.socket.remoteAddress ?? '未知'));
|
|
32
52
|
});
|
|
33
|
-
const storageMissing = (res) => res.status(503).json({ error: '
|
|
53
|
+
const storageMissing = (res) => res.status(503).json({ error: t('noStorageLayout') });
|
|
34
54
|
route(expressApp, 'GET /api/layout', gate(), async (_req, res) => {
|
|
35
55
|
if (!deps.storageReady())
|
|
36
56
|
return storageMissing(res);
|
|
@@ -39,7 +59,7 @@ export function registerPageRoutes(expressApp, deps, identify, gate) {
|
|
|
39
59
|
}
|
|
40
60
|
catch (err) {
|
|
41
61
|
deps.logger.warn('读取布局记录失败:', err);
|
|
42
|
-
res.status(500).json({ error: '
|
|
62
|
+
res.status(500).json({ error: t('layoutReadFailed') });
|
|
43
63
|
}
|
|
44
64
|
});
|
|
45
65
|
route(expressApp, 'POST /api/layout', gate(), async (req, res) => {
|
|
@@ -47,22 +67,20 @@ export function registerPageRoutes(expressApp, deps, identify, gate) {
|
|
|
47
67
|
return storageMissing(res);
|
|
48
68
|
const operation = parseLayoutOperation(req.body);
|
|
49
69
|
if (!operation) {
|
|
50
|
-
return res.status(400).json({
|
|
51
|
-
error: '操作要是 { op, page } 或 { op, tab }:pin、unpin、move-up、move-down 带 page({ instance, pageKey }),' +
|
|
52
|
-
'open-tab、close-tab、tab-up、tab-down 带 tab({ host } 或 { instance, pageKey }),' +
|
|
53
|
-
'remove-tab 只带插件标签 tab({ instance, pageKey }),宿主标签只能关闭、不能移出',
|
|
54
|
-
});
|
|
70
|
+
return res.status(400).json({ error: t('layoutOpInvalid') });
|
|
55
71
|
}
|
|
56
72
|
// 固定与打开插件标签只收此刻登记着、位置对的页面;其余只动记录,所属插件停用时也能改
|
|
57
73
|
const wanted = operation.op === 'pin'
|
|
58
|
-
? { page: operation.page, placement: 'plugin', refusal: '
|
|
74
|
+
? { page: operation.page, placement: 'plugin', refusal: t('pinPluginOnly') }
|
|
59
75
|
: operation.op === 'open-tab' && !('host' in operation.tab)
|
|
60
|
-
? { page: operation.tab, placement: 'session', refusal: '
|
|
76
|
+
? { page: operation.tab, placement: 'session', refusal: t('openSessionOnly') }
|
|
61
77
|
: undefined;
|
|
62
78
|
if (wanted) {
|
|
63
79
|
const placement = registry.placementOf(wanted.page);
|
|
64
80
|
if (!placement) {
|
|
65
|
-
return res
|
|
81
|
+
return res
|
|
82
|
+
.status(404)
|
|
83
|
+
.json({ error: t('pageMissing', { page: wanted.page.pageKey, instance: wanted.page.instance }) });
|
|
66
84
|
}
|
|
67
85
|
if (placement !== wanted.placement)
|
|
68
86
|
return res.status(400).json({ error: wanted.refusal });
|
|
@@ -75,11 +93,11 @@ export function registerPageRoutes(expressApp, deps, identify, gate) {
|
|
|
75
93
|
}
|
|
76
94
|
catch (err) {
|
|
77
95
|
if (err instanceof LayoutFull) {
|
|
78
|
-
res.status(409).json({ error: err.
|
|
96
|
+
res.status(409).json({ error: err.text });
|
|
79
97
|
return;
|
|
80
98
|
}
|
|
81
99
|
deps.logger.warn('保存布局记录失败:', err);
|
|
82
|
-
res.status(500).json({ error: '
|
|
100
|
+
res.status(500).json({ error: t('layoutSaveFailed') });
|
|
83
101
|
}
|
|
84
102
|
});
|
|
85
103
|
}
|
package/dist/routes/pages.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pages.js","sourceRoot":"","sources":["../../src/routes/pages.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,6CAA6C;AAC7C,EAAE;AACF,4EAA4E;AAC5E,
|
|
1
|
+
{"version":3,"file":"pages.js","sourceRoot":"","sources":["../../src/routes/pages.ts"],"names":[],"mappings":"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"}
|
package/dist/routes/plugins.d.ts
CHANGED
|
@@ -4,24 +4,20 @@ import type { PluginSourceService } from '@aalis/api-plugin-source';
|
|
|
4
4
|
import type { ToolService } from '@aalis/api-tools';
|
|
5
5
|
import type { ErrorResponse } from '@aalis/api-webui';
|
|
6
6
|
import type { AppService, Logger, PluginManagerService, ServiceSelection, Services } from '@aalis/core';
|
|
7
|
+
import { type TextRef } from '@aalis/schema-i18n';
|
|
7
8
|
import type express from 'express';
|
|
8
9
|
import type { RouteGate } from '../gate.js';
|
|
9
|
-
/**
|
|
10
|
-
* 落盘被拒后运行态怎样与文件对齐:插件配置、新建的实例与服务偏好随配置文件热重载(文件里没有配置段的后缀实例会被卸载);
|
|
11
|
-
* 启停只在重启时按文件登记。被拒的可能是配置文件,也可能是密钥文件,拒写原因里点了名,这里不指具体哪个文件
|
|
12
|
-
*/
|
|
13
|
-
declare const RECONCILE: {
|
|
14
|
-
readonly reload: "修好该文件后会按文件内容重载";
|
|
15
|
-
readonly restart: "修好该文件后,重启时以文件内容为准";
|
|
16
|
-
};
|
|
17
10
|
/**
|
|
18
11
|
* 管理动作改完运行态之后落盘;失败时回 `applied: true` 并返回 false:改动已在运行态生效、只是没写进文件,
|
|
19
12
|
* 调用方别当成「没改成」去重试。宿主拒写(配置文件有尚未生效的外部修改)回 409,之后以文件为准对账;
|
|
20
13
|
* 其它失败(权限、磁盘写满等)回 500,文件没变也不会触发重载,改动留在文档里,下一次成功保存时一并写入。
|
|
14
|
+
* `reconcile` 是落盘被拒后运行态怎样与文件对齐:插件配置、新建的实例与服务偏好随配置文件热重载(reload,文件里没有配置段的
|
|
15
|
+
* 后缀实例会被卸载);启停只在重启时按文件登记(restart)。被拒的可能是配置文件,也可能是密钥文件,拒写原因里点了名,
|
|
16
|
+
* 这里不指具体哪个文件。
|
|
21
17
|
* `outcome` 是动作之后插件没有落在预期状态的说明(如激活失败转 error、仍在激活、保持禁用):落盘也失败时放在回执开头,
|
|
22
18
|
* 两件事一并说明。
|
|
23
19
|
*/
|
|
24
|
-
export declare function saveAfterApply(doc: Pick<HostConfig, 'save'>, res: express.Response<ErrorResponse>, reconcile:
|
|
20
|
+
export declare function saveAfterApply(doc: Pick<HostConfig, 'save'>, res: express.Response<ErrorResponse>, reconcile: 'reload' | 'restart', outcome?: TextRef): Promise<boolean>;
|
|
25
21
|
/** 插件管理 + 全局配置路由用到的能力 */
|
|
26
22
|
interface PluginRoutesCaps {
|
|
27
23
|
app: Pick<ServiceSelection<AppService>, 'present' | 'use'>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../src/routes/plugins.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,
|
|
1
|
+
{"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../src/routes/plugins.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,EAEL,KAAK,UAAU,EAGhB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,KAAK,EACV,UAAU,EACV,MAAM,EACN,oBAAoB,EAGpB,gBAAgB,EAChB,QAAQ,EACT,MAAM,aAAa,CAAC;AAerB,OAAO,EAAU,KAAK,OAAO,EAAuB,MAAM,oBAAoB,CAAC;AAC/E,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAEnC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAuB5C;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAClC,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,EAC7B,GAAG,EAAE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,EACpC,SAAS,EAAE,QAAQ,GAAG,SAAS,EAC/B,OAAO,CAAC,EAAE,OAAO,GAChB,OAAO,CAAC,OAAO,CAAC,CAQlB;AAuED,yBAAyB;AACzB,UAAU,gBAAgB;IACxB,GAAG,EAAE,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC,CAAC;IAC3D,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC,CAAC;IACzE,iCAAiC;IACjC,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC,CAAC;IACvE,wCAAwC;IACxC,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC,CAAC;IAClE,KAAK,EAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC,CAAC;IAC9D,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC,CAAC;IACpE,oDAAoD;IACpD,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO,GAAG,WAAW,GAAG,SAAS,CAAC,CAAC;IAC5D,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oCAAoC;IACpC,QAAQ,IAAI,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;IACjD,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,8BAA8B;AAC9B,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,SAAS,GAAG,IAAI,CAomB/G"}
|