@aalis/plugin-webui-server 0.18.0 → 0.19.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 +3 -3
- package/dist/attention.js +3 -3
- package/dist/auth.js +1 -1
- package/dist/auth.js.map +1 -1
- package/dist/client-discovery.d.ts +1 -1
- package/dist/client-discovery.js +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +54 -34
- package/dist/index.js.map +1 -1
- package/dist/locales/en.d.ts +7 -8
- package/dist/locales/en.d.ts.map +1 -1
- package/dist/locales/en.js +7 -8
- package/dist/locales/en.js.map +1 -1
- package/dist/pages.js +1 -1
- package/dist/pages.js.map +1 -1
- package/dist/route.d.ts +5 -0
- package/dist/route.d.ts.map +1 -1
- package/dist/route.js +9 -0
- package/dist/route.js.map +1 -1
- package/dist/routes/marketplace.d.ts.map +1 -1
- package/dist/routes/marketplace.js +22 -15
- package/dist/routes/marketplace.js.map +1 -1
- package/dist/routes/media.js +1 -1
- package/dist/routes/plugins.d.ts +4 -3
- package/dist/routes/plugins.d.ts.map +1 -1
- package/dist/routes/plugins.js +6 -12
- package/dist/routes/plugins.js.map +1 -1
- package/dist/routes/proxy.d.ts.map +1 -1
- package/dist/routes/proxy.js +7 -2
- package/dist/routes/proxy.js.map +1 -1
- package/dist/texts.d.ts +20 -22
- package/dist/texts.d.ts.map +1 -1
- package/dist/texts.js +10 -11
- package/dist/texts.js.map +1 -1
- package/dist/ws-heartbeat.js +3 -3
- package/package.json +9 -7
package/dist/texts.d.ts
CHANGED
|
@@ -5,19 +5,19 @@ declare const SOURCE: {
|
|
|
5
5
|
readonly hostLabel: "监听地址";
|
|
6
6
|
readonly hostDescription: "绑定的 IP 地址,0.0.0.0 可对外访问";
|
|
7
7
|
readonly allowedHostsLabel: "主机白名单";
|
|
8
|
-
readonly allowedHostsDescription: "
|
|
8
|
+
readonly allowedHostsDescription: "经反向代理或域名访问时,浏览器地址栏里的主机名,不带协议与端口。IP 地址、localhost 与监听地址不用加";
|
|
9
9
|
readonly badAllowedHost: "{entry} 不是主机名:只写主机名,不带协议、用户名与路径";
|
|
10
10
|
readonly autoOpenLabel: "启动时自动打开浏览器";
|
|
11
|
-
readonly autoOpenDescription: "
|
|
11
|
+
readonly autoOpenDescription: "每次应用启动时打开默认浏览器并登录。SSH 或无图形界面的环境建议关闭";
|
|
12
12
|
readonly tokenModeLabel: "Token 策略";
|
|
13
13
|
readonly tokenEphemeral: "每次启动随机生成(重启即轮换)";
|
|
14
14
|
readonly tokenPersist: "首次生成后持久化(重启不掉登录)";
|
|
15
15
|
readonly tokenFixed: "使用下方固定 token";
|
|
16
|
-
readonly tokenModeDescription: "
|
|
17
|
-
readonly fixedTokenLabel: "固定 Token
|
|
18
|
-
readonly fixedTokenDescription: "
|
|
16
|
+
readonly tokenModeDescription: "访问 token 怎么生成。各模式都会把访问地址与 token 写进数据目录的 state/webui/access.txt";
|
|
17
|
+
readonly fixedTokenLabel: "固定 Token";
|
|
18
|
+
readonly fixedTokenDescription: "「Token 策略」选「使用下方固定 token」时生效。至少 {min} 个字符的随机字符串,短了插件不启动;留空时按「首次生成后持久化」处理。";
|
|
19
19
|
readonly registryLabel: "插件市场 npm 源";
|
|
20
|
-
readonly registryDescription: "插件市场检索用的 npm registry
|
|
20
|
+
readonly registryDescription: "插件市场检索用的 npm registry 地址。不是所有镜像都支持 npm 的搜索接口,国内可填支持搜索的镜像或代理。";
|
|
21
21
|
readonly registryInvalid: "marketplaceRegistry 不是有效 URL";
|
|
22
22
|
readonly tokenTooShort: "fixedToken 至少要 {min} 个字符(现在 {length} 个)";
|
|
23
23
|
readonly accessTitle: "# Aalis WebUI 访问凭据(自动生成)";
|
|
@@ -27,7 +27,7 @@ declare const SOURCE: {
|
|
|
27
27
|
readonly accessHint: "# 提示:将该一键登录链接粘贴到浏览器即可自动设置 cookie";
|
|
28
28
|
readonly pageLanguage: "zh-CN";
|
|
29
29
|
readonly loginTitle: "Aalis WebUI 登录";
|
|
30
|
-
readonly loginHint: "访问 token 在数据目录的 state/webui/access.txt
|
|
30
|
+
readonly loginHint: "访问 token 在数据目录的 state/webui/access.txt 里,完整路径见启动日志「访问凭据已写入」那行;用固定 Token 时,值存在数据目录的 secrets.yaml 里。";
|
|
31
31
|
readonly tokenPlaceholder: "访问 token";
|
|
32
32
|
readonly loginButton: "登录";
|
|
33
33
|
readonly tokenWrong: "token 不正确";
|
|
@@ -82,7 +82,6 @@ declare const SOURCE: {
|
|
|
82
82
|
readonly configNotSaved: "未写入配置文件({error}),本次修改已撤回";
|
|
83
83
|
readonly savedRestart: "全局配置已保存,重启后生效";
|
|
84
84
|
readonly saved: "全局配置已更新并保存";
|
|
85
|
-
readonly noApp: "App 不可用";
|
|
86
85
|
readonly restartFailed: "重启失败({error}),改动在下次启动时生效";
|
|
87
86
|
readonly restarting: "正在重启应用";
|
|
88
87
|
readonly configNotObject: "config 字段必须是对象";
|
|
@@ -136,9 +135,9 @@ declare const SOURCE: {
|
|
|
136
135
|
readonly nameNotString: "name 字段必须是字符串";
|
|
137
136
|
readonly removeConfigNotBoolean: "removeConfig 字段必须是布尔值";
|
|
138
137
|
readonly targetsRequired: "targets 必须是非空数组";
|
|
139
|
-
readonly noPackageManagerInstall: "没有提供 package-manager
|
|
140
|
-
readonly noPackageManagerUninstall: "没有提供 package-manager
|
|
141
|
-
readonly noPackageManagerUpdate: "没有提供 package-manager
|
|
138
|
+
readonly noPackageManagerInstall: "没有提供 package-manager 服务的插件在运行,市场无法安装插件:在插件区启用它,或在项目目录执行 npm install <包名> 后重启";
|
|
139
|
+
readonly noPackageManagerUninstall: "没有提供 package-manager 服务的插件在运行,市场无法卸载插件:在插件区启用它,或在项目目录执行 npm uninstall <包名> 后重启";
|
|
140
|
+
readonly noPackageManagerUpdate: "没有提供 package-manager 服务的插件在运行,市场无法更新:在插件区启用它";
|
|
142
141
|
readonly urlRequired: "缺少 url 参数";
|
|
143
142
|
readonly upstreamStatus: "上游返回 {status}";
|
|
144
143
|
readonly notImage: "上游返回的不是能显示的图片";
|
|
@@ -196,19 +195,19 @@ export declare const t: import("@aalis/schema-i18n").TextFactory<{
|
|
|
196
195
|
readonly hostLabel: "监听地址";
|
|
197
196
|
readonly hostDescription: "绑定的 IP 地址,0.0.0.0 可对外访问";
|
|
198
197
|
readonly allowedHostsLabel: "主机白名单";
|
|
199
|
-
readonly allowedHostsDescription: "
|
|
198
|
+
readonly allowedHostsDescription: "经反向代理或域名访问时,浏览器地址栏里的主机名,不带协议与端口。IP 地址、localhost 与监听地址不用加";
|
|
200
199
|
readonly badAllowedHost: "{entry} 不是主机名:只写主机名,不带协议、用户名与路径";
|
|
201
200
|
readonly autoOpenLabel: "启动时自动打开浏览器";
|
|
202
|
-
readonly autoOpenDescription: "
|
|
201
|
+
readonly autoOpenDescription: "每次应用启动时打开默认浏览器并登录。SSH 或无图形界面的环境建议关闭";
|
|
203
202
|
readonly tokenModeLabel: "Token 策略";
|
|
204
203
|
readonly tokenEphemeral: "每次启动随机生成(重启即轮换)";
|
|
205
204
|
readonly tokenPersist: "首次生成后持久化(重启不掉登录)";
|
|
206
205
|
readonly tokenFixed: "使用下方固定 token";
|
|
207
|
-
readonly tokenModeDescription: "
|
|
208
|
-
readonly fixedTokenLabel: "固定 Token
|
|
209
|
-
readonly fixedTokenDescription: "
|
|
206
|
+
readonly tokenModeDescription: "访问 token 怎么生成。各模式都会把访问地址与 token 写进数据目录的 state/webui/access.txt";
|
|
207
|
+
readonly fixedTokenLabel: "固定 Token";
|
|
208
|
+
readonly fixedTokenDescription: "「Token 策略」选「使用下方固定 token」时生效。至少 {min} 个字符的随机字符串,短了插件不启动;留空时按「首次生成后持久化」处理。";
|
|
210
209
|
readonly registryLabel: "插件市场 npm 源";
|
|
211
|
-
readonly registryDescription: "插件市场检索用的 npm registry
|
|
210
|
+
readonly registryDescription: "插件市场检索用的 npm registry 地址。不是所有镜像都支持 npm 的搜索接口,国内可填支持搜索的镜像或代理。";
|
|
212
211
|
readonly registryInvalid: "marketplaceRegistry 不是有效 URL";
|
|
213
212
|
readonly tokenTooShort: "fixedToken 至少要 {min} 个字符(现在 {length} 个)";
|
|
214
213
|
readonly accessTitle: "# Aalis WebUI 访问凭据(自动生成)";
|
|
@@ -218,7 +217,7 @@ export declare const t: import("@aalis/schema-i18n").TextFactory<{
|
|
|
218
217
|
readonly accessHint: "# 提示:将该一键登录链接粘贴到浏览器即可自动设置 cookie";
|
|
219
218
|
readonly pageLanguage: "zh-CN";
|
|
220
219
|
readonly loginTitle: "Aalis WebUI 登录";
|
|
221
|
-
readonly loginHint: "访问 token 在数据目录的 state/webui/access.txt
|
|
220
|
+
readonly loginHint: "访问 token 在数据目录的 state/webui/access.txt 里,完整路径见启动日志「访问凭据已写入」那行;用固定 Token 时,值存在数据目录的 secrets.yaml 里。";
|
|
222
221
|
readonly tokenPlaceholder: "访问 token";
|
|
223
222
|
readonly loginButton: "登录";
|
|
224
223
|
readonly tokenWrong: "token 不正确";
|
|
@@ -273,7 +272,6 @@ export declare const t: import("@aalis/schema-i18n").TextFactory<{
|
|
|
273
272
|
readonly configNotSaved: "未写入配置文件({error}),本次修改已撤回";
|
|
274
273
|
readonly savedRestart: "全局配置已保存,重启后生效";
|
|
275
274
|
readonly saved: "全局配置已更新并保存";
|
|
276
|
-
readonly noApp: "App 不可用";
|
|
277
275
|
readonly restartFailed: "重启失败({error}),改动在下次启动时生效";
|
|
278
276
|
readonly restarting: "正在重启应用";
|
|
279
277
|
readonly configNotObject: "config 字段必须是对象";
|
|
@@ -327,9 +325,9 @@ export declare const t: import("@aalis/schema-i18n").TextFactory<{
|
|
|
327
325
|
readonly nameNotString: "name 字段必须是字符串";
|
|
328
326
|
readonly removeConfigNotBoolean: "removeConfig 字段必须是布尔值";
|
|
329
327
|
readonly targetsRequired: "targets 必须是非空数组";
|
|
330
|
-
readonly noPackageManagerInstall: "没有提供 package-manager
|
|
331
|
-
readonly noPackageManagerUninstall: "没有提供 package-manager
|
|
332
|
-
readonly noPackageManagerUpdate: "没有提供 package-manager
|
|
328
|
+
readonly noPackageManagerInstall: "没有提供 package-manager 服务的插件在运行,市场无法安装插件:在插件区启用它,或在项目目录执行 npm install <包名> 后重启";
|
|
329
|
+
readonly noPackageManagerUninstall: "没有提供 package-manager 服务的插件在运行,市场无法卸载插件:在插件区启用它,或在项目目录执行 npm uninstall <包名> 后重启";
|
|
330
|
+
readonly noPackageManagerUpdate: "没有提供 package-manager 服务的插件在运行,市场无法更新:在插件区启用它";
|
|
333
331
|
readonly urlRequired: "缺少 url 参数";
|
|
334
332
|
readonly upstreamStatus: "上游返回 {status}";
|
|
335
333
|
readonly notImage: "上游返回的不是能显示的图片";
|
package/dist/texts.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"texts.d.ts","sourceRoot":"","sources":["../src/texts.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,MAAM
|
|
1
|
+
{"version":3,"file":"texts.d.ts","sourceRoot":"","sources":["../src/texts.ts"],"names":[],"mappings":"AAIA,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsMF,CAAC;AACX,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC;AAEnC,eAAO,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAwG,CAAC"}
|
package/dist/texts.js
CHANGED
|
@@ -8,19 +8,19 @@ const SOURCE = {
|
|
|
8
8
|
hostLabel: '监听地址',
|
|
9
9
|
hostDescription: '绑定的 IP 地址,0.0.0.0 可对外访问',
|
|
10
10
|
allowedHostsLabel: '主机白名单',
|
|
11
|
-
allowedHostsDescription: '
|
|
11
|
+
allowedHostsDescription: '经反向代理或域名访问时,浏览器地址栏里的主机名,不带协议与端口。IP 地址、localhost 与监听地址不用加',
|
|
12
12
|
badAllowedHost: '{entry} 不是主机名:只写主机名,不带协议、用户名与路径',
|
|
13
13
|
autoOpenLabel: '启动时自动打开浏览器',
|
|
14
|
-
autoOpenDescription: '
|
|
14
|
+
autoOpenDescription: '每次应用启动时打开默认浏览器并登录。SSH 或无图形界面的环境建议关闭',
|
|
15
15
|
tokenModeLabel: 'Token 策略',
|
|
16
16
|
tokenEphemeral: '每次启动随机生成(重启即轮换)',
|
|
17
17
|
tokenPersist: '首次生成后持久化(重启不掉登录)',
|
|
18
18
|
tokenFixed: '使用下方固定 token',
|
|
19
|
-
tokenModeDescription: '
|
|
20
|
-
fixedTokenLabel: '固定 Token
|
|
21
|
-
fixedTokenDescription: '
|
|
19
|
+
tokenModeDescription: '访问 token 怎么生成。各模式都会把访问地址与 token 写进数据目录的 state/webui/access.txt',
|
|
20
|
+
fixedTokenLabel: '固定 Token',
|
|
21
|
+
fixedTokenDescription: '「Token 策略」选「使用下方固定 token」时生效。至少 {min} 个字符的随机字符串,短了插件不启动;留空时按「首次生成后持久化」处理。',
|
|
22
22
|
registryLabel: '插件市场 npm 源',
|
|
23
|
-
registryDescription: '插件市场检索用的 npm registry
|
|
23
|
+
registryDescription: '插件市场检索用的 npm registry 地址。不是所有镜像都支持 npm 的搜索接口,国内可填支持搜索的镜像或代理。',
|
|
24
24
|
registryInvalid: 'marketplaceRegistry 不是有效 URL',
|
|
25
25
|
tokenTooShort: 'fixedToken 至少要 {min} 个字符(现在 {length} 个)',
|
|
26
26
|
accessTitle: '# Aalis WebUI 访问凭据(自动生成)',
|
|
@@ -30,7 +30,7 @@ const SOURCE = {
|
|
|
30
30
|
accessHint: '# 提示:将该一键登录链接粘贴到浏览器即可自动设置 cookie',
|
|
31
31
|
pageLanguage: 'zh-CN',
|
|
32
32
|
loginTitle: 'Aalis WebUI 登录',
|
|
33
|
-
loginHint: '访问 token 在数据目录的 state/webui/access.txt
|
|
33
|
+
loginHint: '访问 token 在数据目录的 state/webui/access.txt 里,完整路径见启动日志「访问凭据已写入」那行;用固定 Token 时,值存在数据目录的 secrets.yaml 里。',
|
|
34
34
|
tokenPlaceholder: '访问 token',
|
|
35
35
|
loginButton: '登录',
|
|
36
36
|
tokenWrong: 'token 不正确',
|
|
@@ -85,7 +85,6 @@ const SOURCE = {
|
|
|
85
85
|
configNotSaved: '未写入配置文件({error}),本次修改已撤回',
|
|
86
86
|
savedRestart: '全局配置已保存,重启后生效',
|
|
87
87
|
saved: '全局配置已更新并保存',
|
|
88
|
-
noApp: 'App 不可用',
|
|
89
88
|
restartFailed: '重启失败({error}),改动在下次启动时生效',
|
|
90
89
|
restarting: '正在重启应用',
|
|
91
90
|
configNotObject: 'config 字段必须是对象',
|
|
@@ -139,9 +138,9 @@ const SOURCE = {
|
|
|
139
138
|
nameNotString: 'name 字段必须是字符串',
|
|
140
139
|
removeConfigNotBoolean: 'removeConfig 字段必须是布尔值',
|
|
141
140
|
targetsRequired: 'targets 必须是非空数组',
|
|
142
|
-
noPackageManagerInstall: '没有提供 package-manager
|
|
143
|
-
noPackageManagerUninstall: '没有提供 package-manager
|
|
144
|
-
noPackageManagerUpdate: '没有提供 package-manager
|
|
141
|
+
noPackageManagerInstall: '没有提供 package-manager 服务的插件在运行,市场无法安装插件:在插件区启用它,或在项目目录执行 npm install <包名> 后重启',
|
|
142
|
+
noPackageManagerUninstall: '没有提供 package-manager 服务的插件在运行,市场无法卸载插件:在插件区启用它,或在项目目录执行 npm uninstall <包名> 后重启',
|
|
143
|
+
noPackageManagerUpdate: '没有提供 package-manager 服务的插件在运行,市场无法更新:在插件区启用它',
|
|
145
144
|
urlRequired: '缺少 url 参数',
|
|
146
145
|
upstreamStatus: '上游返回 {status}',
|
|
147
146
|
notImage: '上游返回的不是能显示的图片',
|
package/dist/texts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"texts.js","sourceRoot":"","sources":["../src/texts.ts"],"names":[],"mappings":"AAAA,aAAa;AACb,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAEjC,MAAM,MAAM,GAAG;IACb,WAAW,EAAE,WAAW;IACxB,SAAS,EAAE,IAAI;IACf,eAAe,EAAE,mBAAmB;IACpC,SAAS,EAAE,MAAM;IACjB,eAAe,EAAE,yBAAyB;IAC1C,iBAAiB,EAAE,OAAO;IAC1B,uBAAuB,EACrB,
|
|
1
|
+
{"version":3,"file":"texts.js","sourceRoot":"","sources":["../src/texts.ts"],"names":[],"mappings":"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"}
|
package/dist/ws-heartbeat.js
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
// 只有真死的连接才会在 1~2 个周期内被踢。
|
|
11
11
|
//
|
|
12
12
|
// 登记(track)同时挂 'error' 兜底监听:无监听者的 'error' 会抛成
|
|
13
|
-
// uncaughtException
|
|
13
|
+
// uncaughtException 终止整进程,而每条连接都要过 track,挂在这里最不易漏。
|
|
14
14
|
//
|
|
15
15
|
// 独立小模块 + 依赖注入的最小 socket 面,同 auth/gate 的可单测形态。
|
|
16
16
|
// ============================================================
|
|
@@ -53,7 +53,7 @@ export function createWsHeartbeat(opts = {}) {
|
|
|
53
53
|
}
|
|
54
54
|
}
|
|
55
55
|
}, intervalMs);
|
|
56
|
-
//
|
|
56
|
+
// 心跳不该阻塞进程退出;正常路径由 dispose() 清
|
|
57
57
|
timer.unref?.();
|
|
58
58
|
return {
|
|
59
59
|
track(ws) {
|
|
@@ -62,7 +62,7 @@ export function createWsHeartbeat(opts = {}) {
|
|
|
62
62
|
ws.on('pong', () => alive.set(ws, true));
|
|
63
63
|
// 'error' 兜底监听:EventEmitter 对无监听者的 'error' 是**抛异常**——ws 帧校验
|
|
64
64
|
// 失败(畸形帧/坏 UTF-8)走的正是这条路,抛出后成 uncaughtException,runtime
|
|
65
|
-
// 直接 process.exit(1)
|
|
65
|
+
// 直接 process.exit(1):一条畸形帧终止整进程。登记时一并挂上,凡 track 过的
|
|
66
66
|
// 连接天然免疫。
|
|
67
67
|
ws.on('error', err => opts.onError?.(ws, err));
|
|
68
68
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aalis/plugin-webui-server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.19.0",
|
|
4
4
|
"license": "AGPL-3.0-only",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"@aalis/api-session-protocol": ">=0.2.0 <1.0.0",
|
|
38
38
|
"@aalis/api-storage": ">=0.10.0 <1.0.0",
|
|
39
39
|
"@aalis/api-tools": ">=0.12.0 <1.0.0",
|
|
40
|
-
"@aalis/api-webui": ">=0.
|
|
40
|
+
"@aalis/api-webui": ">=0.15.0 <1.0.0",
|
|
41
41
|
"@aalis/schema-config": ">=0.16.0 <1.0.0",
|
|
42
42
|
"@aalis/schema-i18n": ">=0.1.0 <1.0.0",
|
|
43
43
|
"@aalis/schema-message": ">=0.11.0 <1.0.0",
|
|
@@ -50,26 +50,29 @@
|
|
|
50
50
|
"@aalis/api-host-config": ">=0.3.0 <1.0.0",
|
|
51
51
|
"@aalis/api-host-logs": ">=0.1.0 <1.0.0",
|
|
52
52
|
"@aalis/api-host-paths": ">=0.3.0 <1.0.0",
|
|
53
|
+
"@aalis/api-host-restart": ">=0.1.0 <1.0.0",
|
|
53
54
|
"@aalis/api-package-manager": ">=0.3.0 <1.0.0",
|
|
54
|
-
"@aalis/api-contributions": ">=0.2.0 <1.0.0"
|
|
55
|
+
"@aalis/api-contributions": ">=0.2.0 <1.0.0",
|
|
56
|
+
"@aalis/api-events": ">=0.1.0 <1.0.0"
|
|
55
57
|
},
|
|
56
58
|
"devDependencies": {
|
|
57
59
|
"@types/express": "^5.0.0",
|
|
58
60
|
"@types/node": "^22.0.0",
|
|
59
61
|
"@types/ws": "^8.5.0",
|
|
60
62
|
"typescript": "^5.7.0",
|
|
61
|
-
"@aalis/core": "0.
|
|
63
|
+
"@aalis/core": "0.22.0"
|
|
62
64
|
},
|
|
63
65
|
"peerDependencies": {
|
|
64
|
-
"@aalis/core": ">=0.
|
|
66
|
+
"@aalis/core": ">=0.22.0 <1.0.0"
|
|
65
67
|
},
|
|
66
68
|
"aalis": {
|
|
67
69
|
"service": {
|
|
68
70
|
"optional": [
|
|
71
|
+
"events",
|
|
69
72
|
"host-config",
|
|
70
73
|
"host-logs",
|
|
71
74
|
"host-paths",
|
|
72
|
-
"
|
|
75
|
+
"host-restart",
|
|
73
76
|
"plugins",
|
|
74
77
|
"storage",
|
|
75
78
|
"commands",
|
|
@@ -92,7 +95,6 @@
|
|
|
92
95
|
],
|
|
93
96
|
"required": [
|
|
94
97
|
"config",
|
|
95
|
-
"events",
|
|
96
98
|
"lifecycle",
|
|
97
99
|
"logger",
|
|
98
100
|
"provide",
|