@aalis/runtime 0.12.5 → 0.14.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 +25 -0
- package/dist/bootstrap-buffer.d.ts +5 -4
- package/dist/bootstrap-buffer.d.ts.map +1 -1
- package/dist/bootstrap-buffer.js +1 -1
- package/dist/bootstrap-buffer.js.map +1 -1
- package/dist/config-store.d.ts +38 -0
- package/dist/config-store.d.ts.map +1 -0
- package/dist/config-store.js +171 -0
- package/dist/config-store.js.map +1 -0
- package/dist/config-sync.d.ts +28 -9
- package/dist/config-sync.d.ts.map +1 -1
- package/dist/config-sync.js +125 -82
- package/dist/config-sync.js.map +1 -1
- package/dist/console-sink.d.ts +8 -3
- package/dist/console-sink.d.ts.map +1 -1
- package/dist/console-sink.js +15 -3
- package/dist/console-sink.js.map +1 -1
- package/dist/file-logger.d.ts.map +1 -1
- package/dist/file-logger.js +2 -1
- package/dist/file-logger.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/node-modules-loader.d.ts +20 -8
- package/dist/node-modules-loader.d.ts.map +1 -1
- package/dist/node-modules-loader.js +84 -44
- package/dist/node-modules-loader.js.map +1 -1
- package/dist/plugin-discovery.d.ts +42 -0
- package/dist/plugin-discovery.d.ts.map +1 -0
- package/dist/plugin-discovery.js +100 -0
- package/dist/plugin-discovery.js.map +1 -0
- package/dist/providers.d.ts +10 -9
- package/dist/providers.d.ts.map +1 -1
- package/dist/providers.js +77 -44
- package/dist/providers.js.map +1 -1
- package/dist/start.d.ts +14 -2
- package/dist/start.d.ts.map +1 -1
- package/dist/start.js +75 -39
- package/dist/start.js.map +1 -1
- package/dist/subcommand.d.ts +3 -3
- package/dist/subcommand.d.ts.map +1 -1
- package/dist/subcommand.js +3 -3
- package/dist/subcommand.js.map +1 -1
- package/dist/terminal.d.ts +1 -1
- package/dist/terminal.js +1 -1
- package/package.json +8 -8
package/dist/config-sync.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-sync.js","sourceRoot":"","sources":["../src/config-sync.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,2CAA2C;AAC3C,EAAE;AACF,gEAAgE;AAChE,
|
|
1
|
+
{"version":3,"file":"config-sync.js","sourceRoot":"","sources":["../src/config-sync.ts"],"names":[],"mappings":"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"}
|
package/dist/console-sink.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Events } from '@aalis/core';
|
|
2
|
+
import type { LogLevel } from '@aalis/schema-log';
|
|
2
3
|
/**
|
|
3
4
|
* 运行时层注入的事件——`@aalis/core` 不感知"终端归属"这件事,
|
|
4
5
|
* 仅靠 EventBus 的字符串事件名传递。
|
|
@@ -19,9 +20,9 @@ export interface ConsoleSinkHandle {
|
|
|
19
20
|
* 当任何 UI 接管终端时自动停止写 stdout。
|
|
20
21
|
*
|
|
21
22
|
* 必须显式调用——`installConsoleSink()` 在 App 之前运行(需要捕获最早期日志),
|
|
22
|
-
*
|
|
23
|
+
* 此时还没有事件总线可订阅。传宿主根绑定的 events(`app.bind({ events }).events`)。
|
|
23
24
|
*/
|
|
24
|
-
bindEvents(
|
|
25
|
+
bindEvents(events: Events): void;
|
|
25
26
|
/** 当前是否染色输出(供调试 / 状态视图使用) */
|
|
26
27
|
readonly colorized: boolean;
|
|
27
28
|
}
|
|
@@ -30,8 +31,12 @@ export interface ConsoleSinkHandle {
|
|
|
30
31
|
*
|
|
31
32
|
* 与 CLI/TUI 等"独占终端 UI"的协调通过事件 `terminal:claimed/released` 完成,
|
|
32
33
|
* sink 自己根据事件决定是否写 stdout——UI 不直接干预 sink。
|
|
34
|
+
*
|
|
35
|
+
* `minLevel` 缺省 debug(全量)。`consoleSink: false` 的宿主传 `warn`,让加载器拒载
|
|
36
|
+
* 「另一份 @aalis/core」的插件与「装了没反应」仍打到 stderr,info/debug 保持安静。
|
|
33
37
|
*/
|
|
34
38
|
export declare function installConsoleSink(opts?: {
|
|
35
39
|
target?: 'stdout' | 'stderr';
|
|
40
|
+
minLevel?: LogLevel;
|
|
36
41
|
}): ConsoleSinkHandle;
|
|
37
42
|
//# sourceMappingURL=console-sink.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"console-sink.d.ts","sourceRoot":"","sources":["../src/console-sink.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"console-sink.d.ts","sourceRoot":"","sources":["../src/console-sink.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,KAAK,EAAY,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAI5D;;;;;;GAMG;AACH,OAAO,QAAQ,aAAa,CAAC;IAC3B,UAAU,WAAW;QACnB,kBAAkB,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACpC,mBAAmB,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;KACtC;CACF;AA+DD,MAAM,WAAW,iBAAiB;IAChC,OAAO,IAAI,IAAI,CAAC;IAChB;;;;;;OAMG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,6BAA6B;IAC7B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;CAC7B;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAChC,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAAC,QAAQ,CAAC,EAAE,QAAQ,CAAA;CAAO,GAC/D,iBAAiB,CA+CnB"}
|
package/dist/console-sink.js
CHANGED
|
@@ -44,6 +44,12 @@ const LEVEL_COLORS = COLORIZE
|
|
|
44
44
|
};
|
|
45
45
|
const dim = COLORIZE ? chalk.gray : IDENTITY;
|
|
46
46
|
const accent = COLORIZE ? chalk.magenta : IDENTITY;
|
|
47
|
+
const LEVEL_PRIORITY = {
|
|
48
|
+
debug: 0,
|
|
49
|
+
info: 1,
|
|
50
|
+
warn: 2,
|
|
51
|
+
error: 3,
|
|
52
|
+
};
|
|
47
53
|
function formatEntry(entry) {
|
|
48
54
|
const colorFn = LEVEL_COLORS[entry.level];
|
|
49
55
|
// LogEntry.timestamp 是完整 ISO(YYYY-MM-DDTHH:mm:ss.sssZ);stdout 只看当前运行,
|
|
@@ -57,13 +63,19 @@ function formatEntry(entry) {
|
|
|
57
63
|
*
|
|
58
64
|
* 与 CLI/TUI 等"独占终端 UI"的协调通过事件 `terminal:claimed/released` 完成,
|
|
59
65
|
* sink 自己根据事件决定是否写 stdout——UI 不直接干预 sink。
|
|
66
|
+
*
|
|
67
|
+
* `minLevel` 缺省 debug(全量)。`consoleSink: false` 的宿主传 `warn`,让加载器拒载
|
|
68
|
+
* 「另一份 @aalis/core」的插件与「装了没反应」仍打到 stderr,info/debug 保持安静。
|
|
60
69
|
*/
|
|
61
70
|
export function installConsoleSink(opts = {}) {
|
|
62
71
|
const hub = LogHub.default;
|
|
63
72
|
// 缺省走 console.log(stdout);子命令模式走 console.error(stderr),把 stdout 留给命令结果,
|
|
64
73
|
// 脚本才能消费 `aalis <cmd>` 的输出
|
|
65
74
|
const log = opts.target === 'stderr' ? console.error : console.log;
|
|
75
|
+
const minPriority = LEVEL_PRIORITY[opts.minLevel ?? 'debug'];
|
|
66
76
|
const write = (entry) => {
|
|
77
|
+
if (LEVEL_PRIORITY[entry.level] < minPriority)
|
|
78
|
+
return;
|
|
67
79
|
log(formatEntry(entry));
|
|
68
80
|
};
|
|
69
81
|
// 冲洗启动期 bootstrap buffer
|
|
@@ -81,7 +93,7 @@ export function installConsoleSink(opts = {}) {
|
|
|
81
93
|
off();
|
|
82
94
|
unbind?.();
|
|
83
95
|
},
|
|
84
|
-
bindEvents(
|
|
96
|
+
bindEvents(events) {
|
|
85
97
|
// 多终端 owner(理论上不会同时)用计数器避免一个 release 提前解锁
|
|
86
98
|
let owners = 0;
|
|
87
99
|
const onClaim = () => {
|
|
@@ -94,8 +106,8 @@ export function installConsoleSink(opts = {}) {
|
|
|
94
106
|
if (owners === 0)
|
|
95
107
|
paused = false;
|
|
96
108
|
};
|
|
97
|
-
const offClaim =
|
|
98
|
-
const offRelease =
|
|
109
|
+
const offClaim = events.on('terminal:claimed', onClaim);
|
|
110
|
+
const offRelease = events.on('terminal:released', onRelease);
|
|
99
111
|
unbind = () => {
|
|
100
112
|
offClaim();
|
|
101
113
|
offRelease();
|
package/dist/console-sink.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"console-sink.js","sourceRoot":"","sources":["../src/console-sink.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"console-sink.js","sourceRoot":"","sources":["../src/console-sink.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-logger.d.ts","sourceRoot":"","sources":["../src/file-logger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"file-logger.d.ts","sourceRoot":"","sources":["../src/file-logger.ts"],"names":[],"mappings":"AAMA,8CAA8C;AAC9C,eAAO,MAAM,gBAAgB,oBAAoB,CAAC;AAIlD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB;;;OAGG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAOD,wBAAsB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,SAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAY3G;AAED,wBAAsB,eAAe,CAAC,OAAO,SAAmB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAwB3F"}
|
package/dist/file-logger.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { appendFile, mkdir, writeFile } from 'node:fs/promises';
|
|
2
2
|
import { dirname } from 'node:path';
|
|
3
|
-
import {
|
|
3
|
+
import { LogHub } from '@aalis/core';
|
|
4
|
+
import { formatLogLine } from '@aalis/schema-log';
|
|
4
5
|
import { getBootstrapBuffer } from './bootstrap-buffer.js';
|
|
5
6
|
/** 默认日志文件路径。webui-server 等下游目前各自硬编码同一相对路径。 */
|
|
6
7
|
export const DEFAULT_LOG_FILE = 'data/latest.log';
|
package/dist/file-logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-logger.js","sourceRoot":"","sources":["../src/file-logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"file-logger.js","sourceRoot":"","sources":["../src/file-logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,8CAA8C;AAC9C,MAAM,CAAC,MAAM,gBAAgB,GAAG,iBAAiB,CAAC;AAElD,MAAM,aAAa,GAAG,eAAe,CAAC;AAWtC,SAAS,kBAAkB,CAAC,GAAY;IACtC,IAAI,GAAG,YAAY,KAAK;QAAE,OAAO,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC;IAC1D,OAAO,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAa,EAAE,GAAY,EAAE,OAAO,GAAG,gBAAgB;IAC1F,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,MAAM,UAAU,CACd,OAAO,EACP,aAAa,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE;QAC9B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,KAAK,EAAE,OAAO;QACd,KAAK,EAAE,aAAa;QACpB,OAAO,EAAE,GAAG,KAAK,KAAK,kBAAkB,CAAC,GAAG,CAAC,EAAE;KAChD,CAAC,CACH,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,OAAO,GAAG,gBAAgB;IAC9D,IAAI,KAAK,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;IAE7C,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC;IAC3B,gDAAgD;IAChD,MAAM,OAAO,GAAG,kBAAkB,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC5E,MAAM,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAElC,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QAC9B,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACtF,CAAC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,KAAK,IAAmB,EAAE;QACtC,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAC9B,CAAC,CAAC;IAEF,OAAO;QACL,KAAK;QACL,KAAK,CAAC,OAAO;YACX,MAAM,KAAK,EAAE,CAAC;YACd,GAAG,EAAE,CAAC;QACR,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
export { getBootstrapBuffer, installBootstrapBuffer } from './bootstrap-buffer.js';
|
|
2
|
-
export { type
|
|
2
|
+
export { type ConfigProvider, type ConfigStore, createConfigStore, installHostConfig } from './config-store.js';
|
|
3
|
+
export { type ConfigSyncOptions, handleConfigChanged, installConfigHotReload, syncPluginDefaults, withPluginConfigSync, } from './config-sync.js';
|
|
3
4
|
export { type ConsoleSinkHandle, installConsoleSink } from './console-sink.js';
|
|
4
5
|
export { appendCrashLog, DEFAULT_LOG_FILE, type FileLoggerHandle, setupFileLogger } from './file-logger.js';
|
|
5
6
|
export { createNodeModulesPluginLoader } from './node-modules-loader.js';
|
|
7
|
+
export { createPluginDiscovery, type PluginDescriptor, type PluginDiscovery, type PluginLoader, } from './plugin-discovery.js';
|
|
6
8
|
export { buildRespawnCommand, createFsPluginLoader, createFsYamlConfigProvider, createProcessRespawnStrategy, isRestartRollback, READY_MESSAGE, type RespawnOptions, type RestartRollback, } from './providers.js';
|
|
7
9
|
export { type StartAalisOptions, startAalis } from './start.js';
|
|
8
10
|
export { tryDispatchSubcommand } from './subcommand.js';
|
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":"AAaA,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAAE,KAAK,cAAc,EAAE,KAAK,WAAW,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAChH,OAAO,EACL,KAAK,iBAAiB,EACtB,mBAAmB,EACnB,sBAAsB,EACtB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,KAAK,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC5G,OAAO,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EACL,qBAAqB,EACrB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,YAAY,GAClB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,0BAA0B,EAC1B,4BAA4B,EAC5B,iBAAiB,EACjB,aAAa,EACb,KAAK,cAAc,EACnB,KAAK,eAAe,GACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,KAAK,iBAAiB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,4BAA4B,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -4,14 +4,19 @@
|
|
|
4
4
|
// (日志 sink / 终端复原 / 子命令分发)。core 只产生 LogEntry,染色/TTY/文件落盘全在本层。
|
|
5
5
|
// - createNodeModulesPluginLoader:纯 npm 独立部署(从 node_modules 解析插件)
|
|
6
6
|
// - createFsPluginLoader:monorepo 自托管(扫描 packages/ 目录)
|
|
7
|
+
// - createPluginDiscovery:把加载器发现的插件整批交给 core,并提供热扫描(plugin-source 服务的实现)
|
|
8
|
+
// - createConfigStore / installHostConfig:配置文档与 host-config 服务(core 只持运行态)
|
|
9
|
+
// - withPluginConfigSync:导入定义后、登记前把 schema 派生默认值深合并进文档
|
|
7
10
|
// - createFsYamlConfigProvider / createProcessRespawnStrategy:YAML 配置 + 进程级重启
|
|
8
11
|
// - startAalis:组装以上 + 宿主件为实例并启动(带 options 开关,默认独立部署)
|
|
9
12
|
// - install*/setup*/tryDispatchSubcommand:宿主件,供高级 opt-in 组装
|
|
10
13
|
export { getBootstrapBuffer, installBootstrapBuffer } from './bootstrap-buffer.js';
|
|
11
|
-
export {
|
|
14
|
+
export { createConfigStore, installHostConfig } from './config-store.js';
|
|
15
|
+
export { handleConfigChanged, installConfigHotReload, syncPluginDefaults, withPluginConfigSync, } from './config-sync.js';
|
|
12
16
|
export { installConsoleSink } from './console-sink.js';
|
|
13
17
|
export { appendCrashLog, DEFAULT_LOG_FILE, setupFileLogger } from './file-logger.js';
|
|
14
18
|
export { createNodeModulesPluginLoader } from './node-modules-loader.js';
|
|
19
|
+
export { createPluginDiscovery, } from './plugin-discovery.js';
|
|
15
20
|
export { buildRespawnCommand, createFsPluginLoader, createFsYamlConfigProvider, createProcessRespawnStrategy, isRestartRollback, READY_MESSAGE, } from './providers.js';
|
|
16
21
|
export { startAalis } from './start.js';
|
|
17
22
|
export { tryDispatchSubcommand } from './subcommand.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,EAAE;AACF,uDAAuD;AACvD,8DAA8D;AAC9D,oEAAoE;AACpE,yDAAyD;AACzD,gFAAgF;AAChF,uDAAuD;AACvD,8DAA8D;AAE9D,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAEL,mBAAmB,EACnB,sBAAsB,EACtB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,EAAE;AACF,uDAAuD;AACvD,8DAA8D;AAC9D,oEAAoE;AACpE,yDAAyD;AACzD,2EAA2E;AAC3E,6EAA6E;AAC7E,yDAAyD;AACzD,gFAAgF;AAChF,uDAAuD;AACvD,8DAA8D;AAE9D,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAAyC,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAChH,OAAO,EAEL,mBAAmB,EACnB,sBAAsB,EACtB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAA0B,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAyB,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC5G,OAAO,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EACL,qBAAqB,GAItB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,0BAA0B,EAC1B,4BAA4B,EAC5B,iBAAiB,EACjB,aAAa,GAGd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAA0B,UAAU,EAAE,MAAM,YAAY,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,4BAA4B,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -1,16 +1,25 @@
|
|
|
1
|
-
import type { Logger,
|
|
1
|
+
import type { Logger, PluginDefinition } from '@aalis/core';
|
|
2
|
+
import type { PluginDescriptor, PluginLoader } from './plugin-discovery.js';
|
|
2
3
|
/**
|
|
3
4
|
* 判定一个已装依赖是否为可加载的 Aalis 插件。纯函数,便于单测。
|
|
4
5
|
* 唯一标准:keywords 含 'aalis-plugin'(真插件均带;契约/前端/核心/工具库带各自类型词,自然排除)。
|
|
5
6
|
*/
|
|
6
7
|
export declare function isLoadablePlugin(meta: Record<string, unknown>): boolean;
|
|
7
8
|
/**
|
|
8
|
-
*
|
|
9
|
-
*
|
|
9
|
+
* 从已导入模块取出定义,并按加载器政策出声:形状不对必须 warn;定义 name 与包名不一致也必须点名。
|
|
10
|
+
* 判定本身在 `@aalis/api-plugin-source` 的 `pluginDefinitionOf`;两加载器共用本包装,告警文案只有这一份。
|
|
10
11
|
*/
|
|
11
|
-
export declare function
|
|
12
|
-
/**
|
|
13
|
-
|
|
12
|
+
export declare function loadPluginDefinition(ns: unknown, pkgName: string, logger: Logger): PluginDefinition | null;
|
|
13
|
+
/**
|
|
14
|
+
* 宿主那份 @aalis/core:runtime 用它创建 App,从本文件所在目录按同一规则算一次。
|
|
15
|
+
* 算不到(如被打包内联、import.meta.url 不是文件 URL)为 undefined,检测随之跳过,不误报。
|
|
16
|
+
*/
|
|
17
|
+
export declare const HOST_CORE_DIR: string | undefined;
|
|
18
|
+
/**
|
|
19
|
+
* 两加载器共用的 load / reload:先经 {@link assertSameCore} 核对 core 是宿主那份,再动态 import 入口并取出定义。
|
|
20
|
+
* `fresh`(reload)时以入口文件 mtime 作 import URL 的 query,强制 ESM 缓存失效。
|
|
21
|
+
*/
|
|
22
|
+
export declare function importPluginDefinition(desc: PluginDescriptor, hostCoreDir: string | undefined, logger: Logger, fresh: boolean): Promise<PluginDefinition | null>;
|
|
14
23
|
/**
|
|
15
24
|
* 疑似插件缺关键词是「装了没反应」死门族之首:peer 依赖 core 却不带任何
|
|
16
25
|
* aalis-* 类型词(契约/前端/工具库各有其词,带了即非误漏)。两加载器共用。
|
|
@@ -20,11 +29,14 @@ export declare function warnLikelyPluginMissingKeyword(logger: Logger, name: str
|
|
|
20
29
|
* 创建一个从项目 node_modules 解析插件的 PluginLoader。
|
|
21
30
|
*
|
|
22
31
|
* @param projectDir 项目根目录(含 package.json 与 node_modules),默认 process.cwd()
|
|
32
|
+
* @param opts.hostCoreDir 宿主那份 @aalis/core 的包目录,默认 {@link HOST_CORE_DIR};插件解析到的 core 与它不同即拒绝加载
|
|
23
33
|
*
|
|
24
34
|
* - `discover()`:读 projectDir/package.json 的 dependencies + optionalDependencies,
|
|
25
35
|
* 用 require.resolve 定位每个依赖的 package.json,按标记过滤出可加载插件。
|
|
26
|
-
* - `load()
|
|
36
|
+
* - `load()`:先经 {@link assertSameCore} 核对 core 是宿主那份,再用 `pathToFileURL(entry).href` 动态 import(entry = require.resolve(包名))。
|
|
27
37
|
* - `reload()`:用入口文件 mtime 作 import URL query 强制 ESM 缓存失效。
|
|
28
38
|
*/
|
|
29
|
-
export declare function createNodeModulesPluginLoader(projectDir?: string
|
|
39
|
+
export declare function createNodeModulesPluginLoader(projectDir?: string, opts?: {
|
|
40
|
+
hostCoreDir?: string;
|
|
41
|
+
}): PluginLoader;
|
|
30
42
|
//# sourceMappingURL=node-modules-loader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-modules-loader.d.ts","sourceRoot":"","sources":["../src/node-modules-loader.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"node-modules-loader.d.ts","sourceRoot":"","sources":["../src/node-modules-loader.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAyB5E;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAGvE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAY1G;AAcD;;;GAGG;AACH,eAAO,MAAM,aAAa,EAAE,MAAM,GAAG,SAMjC,CAAC;AA0BL;;;GAGG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,gBAAgB,EACtB,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAWlC;AAED;;;GAGG;AACH,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAMhH;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,6BAA6B,CAC3C,UAAU,GAAE,MAAsB,EAClC,IAAI,GAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAO,GAClC,YAAY,CAsDd"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { readFileSync } from 'node:fs';
|
|
1
|
+
import { existsSync, readFileSync, realpathSync } from 'node:fs';
|
|
2
2
|
import { stat } from 'node:fs/promises';
|
|
3
3
|
import { createRequire } from 'node:module';
|
|
4
|
-
import { dirname, resolve } from 'node:path';
|
|
5
|
-
import { pathToFileURL } from 'node:url';
|
|
4
|
+
import { dirname, join, resolve } from 'node:path';
|
|
5
|
+
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
6
|
+
import { pluginDefinitionOf } from '@aalis/api-plugin-source';
|
|
6
7
|
import { DefaultLogger } from '@aalis/core';
|
|
7
8
|
// ============================================================
|
|
8
9
|
// NodeModulesPluginLoader —— 从 node_modules 解析并加载插件
|
|
@@ -35,32 +36,84 @@ export function isLoadablePlugin(meta) {
|
|
|
35
36
|
return keywords.includes('aalis-plugin');
|
|
36
37
|
}
|
|
37
38
|
/**
|
|
38
|
-
*
|
|
39
|
-
*
|
|
39
|
+
* 从已导入模块取出定义,并按加载器政策出声:形状不对必须 warn;定义 name 与包名不一致也必须点名。
|
|
40
|
+
* 判定本身在 `@aalis/api-plugin-source` 的 `pluginDefinitionOf`;两加载器共用本包装,告警文案只有这一份。
|
|
40
41
|
*/
|
|
41
|
-
export function
|
|
42
|
-
const
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
42
|
+
export function loadPluginDefinition(ns, pkgName, logger) {
|
|
43
|
+
const def = pluginDefinitionOf(ns);
|
|
44
|
+
if (!def) {
|
|
45
|
+
logger.warn(`插件 "${pkgName}" 的入口没有默认导出插件定义,将被跳过——入口须 \`export default definePlugin({ … })\``);
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
if (def.name !== pkgName) {
|
|
49
|
+
logger.warn(`插件包 "${pkgName}" 的定义 name 为 "${def.name}"——配置键/热扫描/卸载均以定义的 name 为准,二者应一致`);
|
|
50
|
+
}
|
|
51
|
+
return def;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* 按 Node 的 node_modules 逐级上溯规则,找出从 `start` 目录解析到的 `@aalis/core` 包目录(realpath)。
|
|
55
|
+
* 只看目录布局、不走 exports,结果不受入口条件影响;找不到返回 undefined。
|
|
56
|
+
*/
|
|
57
|
+
function coreDirFrom(start) {
|
|
58
|
+
for (let dir = realpathSync(start);; dir = dirname(dir)) {
|
|
59
|
+
const candidate = join(dir, 'node_modules', '@aalis', 'core');
|
|
60
|
+
if (existsSync(join(candidate, 'package.json')))
|
|
61
|
+
return realpathSync(candidate);
|
|
62
|
+
if (dirname(dir) === dir)
|
|
63
|
+
return undefined;
|
|
64
|
+
}
|
|
54
65
|
}
|
|
55
|
-
/**
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
66
|
+
/**
|
|
67
|
+
* 宿主那份 @aalis/core:runtime 用它创建 App,从本文件所在目录按同一规则算一次。
|
|
68
|
+
* 算不到(如被打包内联、import.meta.url 不是文件 URL)为 undefined,检测随之跳过,不误报。
|
|
69
|
+
*/
|
|
70
|
+
export const HOST_CORE_DIR = (() => {
|
|
71
|
+
try {
|
|
72
|
+
return coreDirFrom(dirname(fileURLToPath(import.meta.url)));
|
|
60
73
|
}
|
|
61
|
-
|
|
62
|
-
|
|
74
|
+
catch {
|
|
75
|
+
return undefined;
|
|
63
76
|
}
|
|
77
|
+
})();
|
|
78
|
+
/**
|
|
79
|
+
* 插件解析到的 @aalis/core 不是宿主那份时拒绝加载该插件(抛错),须在 import 插件之前调用。
|
|
80
|
+
*
|
|
81
|
+
* 依赖树允许同名包存在多份,两份 core 同处一个进程会让进程级身份分裂(默认日志中枢、
|
|
82
|
+
* instanceof 等)且不报任何错。最常见的来路是本地插件目录被装成符号链接:插件目录自带的
|
|
83
|
+
* devDependencies 里那份 core 成了它运行时解析到的那份。错误由宿主的插件发现(createPluginDiscovery
|
|
84
|
+
* 的 importAll)逐插件接住并记 error,其余插件照常加载。两加载器共用。
|
|
85
|
+
*
|
|
86
|
+
* @param hostCoreDir 宿主那份 core 的包目录(realpath);undefined 时跳过
|
|
87
|
+
* @param pluginDir 插件包目录,即两加载器 discover 写进描述符的 `metadata.dir`;缺失时跳过
|
|
88
|
+
*/
|
|
89
|
+
function assertSameCore(hostCoreDir, pluginDir, pluginName) {
|
|
90
|
+
if (!hostCoreDir || typeof pluginDir !== 'string')
|
|
91
|
+
return;
|
|
92
|
+
const theirs = coreDirFrom(pluginDir);
|
|
93
|
+
if (!theirs || theirs === hostCoreDir)
|
|
94
|
+
return;
|
|
95
|
+
const version = (dir) => String(readJson(join(dir, 'package.json'))?.version ?? '版本未知');
|
|
96
|
+
throw new Error(`插件 "${pluginName}" 解析到另一份 @aalis/core(${version(theirs)}:${theirs}),` +
|
|
97
|
+
`宿主用的是 ${version(hostCoreDir)}:${hostCoreDir}。@aalis/core 只能装一份:` +
|
|
98
|
+
'插件应把 @aalis/core 写进 peerDependencies 而非 dependencies;本地目录安装改用 npm install --install-links 或 pnpm add file:;' +
|
|
99
|
+
'排查用 npm query "#@aalis/core" / pnpm why @aalis/core');
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* 两加载器共用的 load / reload:先经 {@link assertSameCore} 核对 core 是宿主那份,再动态 import 入口并取出定义。
|
|
103
|
+
* `fresh`(reload)时以入口文件 mtime 作 import URL 的 query,强制 ESM 缓存失效。
|
|
104
|
+
*/
|
|
105
|
+
export async function importPluginDefinition(desc, hostCoreDir, logger, fresh) {
|
|
106
|
+
assertSameCore(hostCoreDir, desc.metadata?.dir, desc.name);
|
|
107
|
+
let cacheKey = '';
|
|
108
|
+
if (fresh) {
|
|
109
|
+
try {
|
|
110
|
+
cacheKey = `?t=${(await stat(desc.source)).mtimeMs}`;
|
|
111
|
+
}
|
|
112
|
+
catch {
|
|
113
|
+
/* stat 失败时用空 key,让 import 自己报错 */
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return loadPluginDefinition(await import(pathToFileURL(desc.source).href + cacheKey), desc.name, logger);
|
|
64
117
|
}
|
|
65
118
|
/**
|
|
66
119
|
* 疑似插件缺关键词是「装了没反应」死门族之首:peer 依赖 core 却不带任何
|
|
@@ -77,14 +130,16 @@ export function warnLikelyPluginMissingKeyword(logger, name, meta) {
|
|
|
77
130
|
* 创建一个从项目 node_modules 解析插件的 PluginLoader。
|
|
78
131
|
*
|
|
79
132
|
* @param projectDir 项目根目录(含 package.json 与 node_modules),默认 process.cwd()
|
|
133
|
+
* @param opts.hostCoreDir 宿主那份 @aalis/core 的包目录,默认 {@link HOST_CORE_DIR};插件解析到的 core 与它不同即拒绝加载
|
|
80
134
|
*
|
|
81
135
|
* - `discover()`:读 projectDir/package.json 的 dependencies + optionalDependencies,
|
|
82
136
|
* 用 require.resolve 定位每个依赖的 package.json,按标记过滤出可加载插件。
|
|
83
|
-
* - `load()
|
|
137
|
+
* - `load()`:先经 {@link assertSameCore} 核对 core 是宿主那份,再用 `pathToFileURL(entry).href` 动态 import(entry = require.resolve(包名))。
|
|
84
138
|
* - `reload()`:用入口文件 mtime 作 import URL query 强制 ESM 缓存失效。
|
|
85
139
|
*/
|
|
86
|
-
export function createNodeModulesPluginLoader(projectDir = process.cwd()) {
|
|
140
|
+
export function createNodeModulesPluginLoader(projectDir = process.cwd(), opts = {}) {
|
|
87
141
|
const root = resolve(projectDir);
|
|
142
|
+
const hostCoreDir = opts.hostCoreDir === undefined ? HOST_CORE_DIR : realpathSync(opts.hostCoreDir);
|
|
88
143
|
// 以项目 package.json 为基准创建 require,确保从项目 node_modules 解析
|
|
89
144
|
const req = createRequire(pathToFileURL(resolve(root, 'package.json')));
|
|
90
145
|
const logger = new DefaultLogger('aalis:loader');
|
|
@@ -134,23 +189,8 @@ export function createNodeModulesPluginLoader(projectDir = process.cwd()) {
|
|
|
134
189
|
}
|
|
135
190
|
return discovered;
|
|
136
191
|
},
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
warnShape(logger, desc.name, mod);
|
|
140
|
-
return mod;
|
|
141
|
-
},
|
|
142
|
-
async reload(desc) {
|
|
143
|
-
let cacheKey = '';
|
|
144
|
-
try {
|
|
145
|
-
cacheKey = `?t=${(await stat(desc.source)).mtimeMs}`;
|
|
146
|
-
}
|
|
147
|
-
catch {
|
|
148
|
-
/* stat 失败时用空 key,让 import 自己报错 */
|
|
149
|
-
}
|
|
150
|
-
const mod = unwrapPluginModule(await import(pathToFileURL(desc.source).href + cacheKey));
|
|
151
|
-
warnShape(logger, desc.name, mod);
|
|
152
|
-
return mod;
|
|
153
|
-
},
|
|
192
|
+
load: desc => importPluginDefinition(desc, hostCoreDir, logger, false),
|
|
193
|
+
reload: desc => importPluginDefinition(desc, hostCoreDir, logger, true),
|
|
154
194
|
};
|
|
155
195
|
}
|
|
156
196
|
//# sourceMappingURL=node-modules-loader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-modules-loader.js","sourceRoot":"","sources":["../src/node-modules-loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"node-modules-loader.js","sourceRoot":"","sources":["../src/node-modules-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { HostConfig } from '@aalis/api-host-config';
|
|
2
|
+
import type { PluginSourceService } from '@aalis/api-plugin-source';
|
|
3
|
+
import { type App, type PluginDefinition } from '@aalis/core';
|
|
4
|
+
/**
|
|
5
|
+
* 已发现但尚未导入的插件条目。`source` 是 loader 自己理解的字符串
|
|
6
|
+
* (fs loader 用绝对路径,URL loader 用 URL,内存 loader 用 module 别名)。
|
|
7
|
+
*/
|
|
8
|
+
export interface PluginDescriptor {
|
|
9
|
+
/** 插件名,与定义的 `name` 一致;按它跳过已注册者 */
|
|
10
|
+
name: string;
|
|
11
|
+
/** 给 loader 自己用的不透明定位串 */
|
|
12
|
+
source: string;
|
|
13
|
+
/** loader 可挂任意辅助元数据(cache key、版本号、manifest 等) */
|
|
14
|
+
metadata?: Record<string, unknown>;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* 插件加载器:负责"插件从哪里来"。
|
|
18
|
+
*
|
|
19
|
+
* - `discover()` 列出当前可用的插件条目
|
|
20
|
+
* - `load(descriptor)` 把条目导入成插件定义(模块默认导出的 definePlugin 产物);不是插件返回 null
|
|
21
|
+
* - `reload(descriptor)` 可选——热扫描时用(fs loader 用 mtime 做 cache buster),不提供时退化为 `load()`
|
|
22
|
+
*/
|
|
23
|
+
export interface PluginLoader {
|
|
24
|
+
discover(): Promise<PluginDescriptor[]>;
|
|
25
|
+
load(descriptor: PluginDescriptor): Promise<PluginDefinition | null>;
|
|
26
|
+
reload?(descriptor: PluginDescriptor): Promise<PluginDefinition | null>;
|
|
27
|
+
}
|
|
28
|
+
export interface PluginDiscovery extends PluginSourceService {
|
|
29
|
+
/** 冷启动:发现并导入全部插件,整批注册,返回时已静置 */
|
|
30
|
+
loadAll(): Promise<void>;
|
|
31
|
+
/**
|
|
32
|
+
* 登记配置文档里尚未注册的 `name:suffix` 实例,模块取注册表里已登记的定义;判据与冷启动、热扫描相同。
|
|
33
|
+
* 配置热重载在同步文档之后调用。不等静置。
|
|
34
|
+
*/
|
|
35
|
+
registerConfiguredInstances(): Promise<void>;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* @param doc 配置文档:登记时按实例 id 取配置与禁用标记,并从中枚举 `name:suffix` 实例。
|
|
39
|
+
* 配置原样交给 core,默认值回填由加载器一侧的政策(withPluginConfigSync)先写进文档。
|
|
40
|
+
*/
|
|
41
|
+
export declare function createPluginDiscovery(app: App, loader: PluginLoader, doc: Omit<HostConfig, 'save'>): PluginDiscovery;
|
|
42
|
+
//# sourceMappingURL=plugin-discovery.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-discovery.d.ts","sourceRoot":"","sources":["../src/plugin-discovery.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,KAAK,GAAG,EAAE,KAAK,gBAAgB,EAA4C,MAAM,aAAa,CAAC;AAYxG;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,0BAA0B;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACxC,IAAI,CAAC,UAAU,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;IACrE,MAAM,CAAC,CAAC,UAAU,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAAC;CACzE;AAED,MAAM,WAAW,eAAgB,SAAQ,mBAAmB;IAC1D,gCAAgC;IAChC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB;;;OAGG;IACH,2BAA2B,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9C;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,GAAG,eAAe,CA2FpH"}
|