@aalis/runtime 0.18.0 → 0.20.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 +4 -4
- package/dist/config-store.d.ts +10 -2
- package/dist/config-store.d.ts.map +1 -1
- package/dist/config-store.js +76 -25
- package/dist/config-store.js.map +1 -1
- package/dist/config-sync.d.ts +9 -15
- package/dist/config-sync.d.ts.map +1 -1
- package/dist/config-sync.js +45 -50
- package/dist/config-sync.js.map +1 -1
- package/dist/console-sink.d.ts +1 -1
- package/dist/console-sink.d.ts.map +1 -1
- package/dist/console-sink.js +1 -5
- package/dist/console-sink.js.map +1 -1
- package/dist/data-dir.d.ts +60 -0
- package/dist/data-dir.d.ts.map +1 -0
- package/dist/data-dir.js +181 -0
- package/dist/data-dir.js.map +1 -0
- package/dist/file-logger.d.ts +2 -2
- package/dist/file-logger.d.ts.map +1 -1
- package/dist/file-logger.js +13 -10
- package/dist/file-logger.js.map +1 -1
- package/dist/host-logs.d.ts +1 -1
- package/dist/host-logs.js +1 -1
- package/dist/index.d.ts +2 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -5
- package/dist/index.js.map +1 -1
- package/dist/instance-lock.js +5 -5
- package/dist/instance-lock.js.map +1 -1
- package/dist/locales/en.d.ts +4 -0
- package/dist/locales/en.d.ts.map +1 -1
- package/dist/locales/en.js +4 -0
- package/dist/locales/en.js.map +1 -1
- package/dist/node-modules-loader.d.ts +4 -7
- package/dist/node-modules-loader.d.ts.map +1 -1
- package/dist/node-modules-loader.js +18 -25
- package/dist/node-modules-loader.js.map +1 -1
- package/dist/plugin-discovery.d.ts +10 -3
- package/dist/plugin-discovery.d.ts.map +1 -1
- package/dist/plugin-discovery.js +64 -30
- package/dist/plugin-discovery.js.map +1 -1
- package/dist/providers.d.ts +13 -13
- package/dist/providers.d.ts.map +1 -1
- package/dist/providers.js +22 -35
- package/dist/providers.js.map +1 -1
- package/dist/secrets.js +1 -1
- package/dist/secrets.js.map +1 -1
- package/dist/start.d.ts +7 -13
- package/dist/start.d.ts.map +1 -1
- package/dist/start.js +96 -75
- package/dist/start.js.map +1 -1
- package/dist/subcommand.d.ts +1 -1
- package/dist/subcommand.js +1 -1
- package/dist/texts.d.ts +8 -0
- package/dist/texts.d.ts.map +1 -1
- package/dist/texts.js +4 -0
- package/dist/texts.js.map +1 -1
- package/dist/yaml-file.d.ts +4 -2
- package/dist/yaml-file.d.ts.map +1 -1
- package/dist/yaml-file.js +9 -5
- package/dist/yaml-file.js.map +1 -1
- package/package.json +6 -6
- package/dist/bootstrap-buffer.d.ts +0 -34
- package/dist/bootstrap-buffer.d.ts.map +0 -1
- package/dist/bootstrap-buffer.js +0 -42
- package/dist/bootstrap-buffer.js.map +0 -1
- package/dist/home.d.ts +0 -64
- package/dist/home.d.ts.map +0 -1
- package/dist/home.js +0 -206
- package/dist/home.js.map +0 -1
- package/dist/terminal.d.ts +0 -16
- package/dist/terminal.d.ts.map +0 -1
- package/dist/terminal.js +0 -43
- package/dist/terminal.js.map +0 -1
package/dist/start.js
CHANGED
|
@@ -5,41 +5,41 @@ import { describeUnmet, unmetDependencies } from '@aalis/api-doctor';
|
|
|
5
5
|
import { hostLogs } from '@aalis/api-host-logs';
|
|
6
6
|
import { hostPaths } from '@aalis/api-host-paths';
|
|
7
7
|
import { pluginSource } from '@aalis/api-plugin-source';
|
|
8
|
-
import { App, events, LogHub, provide, services } from '@aalis/core';
|
|
9
|
-
import {
|
|
8
|
+
import { App, DefaultLogger, events, LogHub, provide, services } from '@aalis/core';
|
|
9
|
+
import { CORE_CONFIG_SCHEMA, CORE_RESTART_KEYS, readFieldValue } from '@aalis/schema-config';
|
|
10
|
+
import { isTextError, resolveText } from '@aalis/schema-i18n';
|
|
10
11
|
import { createConfigStore, installHostConfig } from './config-store.js';
|
|
11
12
|
import { installConfigHotReload, withPluginConfigSync } from './config-sync.js';
|
|
12
13
|
import { installConsoleSink } from './console-sink.js';
|
|
14
|
+
import { derivePaths, HostArgsError, initDataDir, isDataDirInitialized, parseHostArgs, resolveDataDir, } from './data-dir.js';
|
|
13
15
|
import { appendCrashLog, setupFileLogger } from './file-logger.js';
|
|
14
|
-
import { derivePaths, HomeArgsError, initHome, isFullyAbsolute, isHomeInitialized, parseHostArgs, profileOfRealHome, resolveHome, } from './home.js';
|
|
15
16
|
import { createHostLogs } from './host-logs.js';
|
|
16
17
|
import { acquireInstanceLock } from './instance-lock.js';
|
|
17
18
|
import { createNodeModulesPluginLoader } from './node-modules-loader.js';
|
|
18
19
|
import { createPluginDiscovery } from './plugin-discovery.js';
|
|
19
|
-
import { createFsSecretsProvider, createFsYamlConfigProvider, createProcessRespawnStrategy, createServiceRestartStrategy, READY_MESSAGE, } from './providers.js';
|
|
20
|
+
import { createFsSecretsProvider, createFsYamlConfigProvider, createProcessRespawnStrategy, createServiceRestartStrategy, READY_MESSAGE, SERVICE_RESTART_EXIT_CODE, } from './providers.js';
|
|
20
21
|
import { tryDispatchSubcommand } from './subcommand.js';
|
|
21
|
-
import { installTerminalStateRestorer } from './terminal.js';
|
|
22
22
|
// ============================================================
|
|
23
23
|
// startAalis —— Node 宿主一行启动(独立部署与 monorepo 自托管共用)
|
|
24
24
|
// ============================================================
|
|
25
25
|
//
|
|
26
26
|
// 独立部署(scaffold 生成的 index.mjs):
|
|
27
27
|
// import { startAalis } from '@aalis/runtime';
|
|
28
|
-
// startAalis({ appDir: here
|
|
28
|
+
// startAalis({ appDir: here }); // 从 node_modules 加载插件 + 默认开控制台/文件日志,数据目录缺省是 here/data
|
|
29
29
|
//
|
|
30
30
|
// monorepo 自托管(src/index.ts)传仓库根与 monorepo 风味的加载器:
|
|
31
31
|
// startAalis({ appDir, pluginLoader: createFsPluginLoader(join(appDir, 'packages')) });
|
|
32
32
|
//
|
|
33
|
-
// 命令行开头的宿主参数(`--
|
|
33
|
+
// 命令行开头的宿主参数(`--data`、`--profile`、`--init`、`--service`)先取走,用来定数据目录与运行形态;余下的 argv 非空即子命令
|
|
34
34
|
// 模式——`node index.mjs <name> [args]` ≡ 聊天里的 `/<name> args`,命中即执行并退出,未命中报错退出
|
|
35
35
|
// (exit 2),**两种情况都不进守护进程**。宿主自己解析命令行时传 `argv: []` 或显式数组。
|
|
36
36
|
//
|
|
37
|
-
//
|
|
37
|
+
// 数据目录没初始化就拒绝启动,只提示怎样初始化:绝不在找不到数据目录时静默创建一个空的家。
|
|
38
38
|
//
|
|
39
39
|
// 子命令进程是与守护进程零通信的一次性实例,因此不装文件日志(会把守护进程正在写的 latest.log 轮转走)、
|
|
40
40
|
// 不注入重启策略(`restart` 会 spawn 出 argv 仍带 restart 的 detached 子进程,无限连环——实测)。
|
|
41
41
|
//
|
|
42
|
-
// 宿主的「I/O 那一层」(日志 sink /
|
|
42
|
+
// 宿主的「I/O 那一层」(日志 sink / 子命令分发)全在本包,core 只产生 LogEntry。终端模式由改它的插件自己复原。
|
|
43
43
|
const APP_DIR_EXAMPLE = 'startAalis({ appDir: dirname(fileURLToPath(import.meta.url)) })';
|
|
44
44
|
/** respawn 时把实例锁的交接令牌交给新进程的环境变量 */
|
|
45
45
|
const HANDOFF_ENV = 'AALIS_LOCK_HANDOFF';
|
|
@@ -64,13 +64,16 @@ function readCoreVersion() {
|
|
|
64
64
|
* ② 子命令短路必须在 `app.start` 之前。
|
|
65
65
|
*/
|
|
66
66
|
export async function startAalis(opts) {
|
|
67
|
-
//
|
|
67
|
+
// 两条输出流先在这里建好:macOS 上终端挂断之后首次取 process.stdout / process.stderr 会卡住(建流时重新打开已挂断的终端设备,
|
|
68
|
+
// 一直等不到),停机路径(下面的 SIGHUP 与写出错)要用到它们。不靠哪个依赖在载入时碰巧把它们建好
|
|
69
|
+
const outputs = [process.stdout, process.stderr];
|
|
70
|
+
// JS 入口可能一个参数都不传:在动数据目录之前停下,不落到缺省的数据目录
|
|
68
71
|
if (typeof opts?.appDir !== 'string') {
|
|
69
72
|
console.error(`[aalis] startAalis is missing appDir: pass the directory of the entry file as appDir, for example ${APP_DIR_EXAMPLE}.`);
|
|
70
73
|
process.exit(2);
|
|
71
74
|
}
|
|
72
|
-
const { consoleSink = true, fileLog = true
|
|
73
|
-
// ──
|
|
75
|
+
const { consoleSink = true, fileLog = true } = opts;
|
|
76
|
+
// ── 数据目录:在任何日志与文件写入之前定下来 ──
|
|
74
77
|
// 命令行与环境变量里写的相对路径按启动时的 cwd 解析一次:那是用户在 shell 里的意图。
|
|
75
78
|
// 启动目录可能已被删除,这时 process.cwd() 会抛错;只有遇到相对路径才需要它。
|
|
76
79
|
let startCwd;
|
|
@@ -81,51 +84,47 @@ export async function startAalis(opts) {
|
|
|
81
84
|
startCwd = undefined;
|
|
82
85
|
}
|
|
83
86
|
let hostArgs;
|
|
84
|
-
let
|
|
87
|
+
let resolved;
|
|
85
88
|
try {
|
|
86
89
|
hostArgs = parseHostArgs(opts.argv ?? process.argv.slice(2));
|
|
87
|
-
|
|
88
|
-
if (!isFullyAbsolute(opts.appDir)) {
|
|
89
|
-
throw new HomeArgsError(`appDir must be an absolute path: ${opts.appDir}`);
|
|
90
|
-
}
|
|
90
|
+
resolved = resolveDataDir({ args: hostArgs, env: process.env, appDir: opts.appDir, cwd: startCwd });
|
|
91
91
|
}
|
|
92
92
|
catch (err) {
|
|
93
|
-
if (!(err instanceof
|
|
93
|
+
if (!(err instanceof HostArgsError))
|
|
94
94
|
throw err;
|
|
95
95
|
console.error(`[aalis] ${err.message}`);
|
|
96
96
|
process.exit(2);
|
|
97
97
|
}
|
|
98
98
|
const appDir = normalize(opts.appDir);
|
|
99
|
-
const declared = derivePaths(
|
|
99
|
+
const declared = derivePaths(resolved.dir, appDir, resolved.profile);
|
|
100
100
|
if (hostArgs.init) {
|
|
101
101
|
try {
|
|
102
|
-
|
|
102
|
+
initDataDir(declared);
|
|
103
103
|
}
|
|
104
104
|
catch (err) {
|
|
105
105
|
console.error(`[aalis] ${err instanceof Error ? err.message : String(err)}`);
|
|
106
106
|
process.exit(1);
|
|
107
107
|
}
|
|
108
|
-
console.log(`[aalis] Initialized the
|
|
108
|
+
console.log(`[aalis] Initialized the data directory: ${declared.data}`);
|
|
109
109
|
process.exit(0);
|
|
110
110
|
}
|
|
111
|
-
if (!
|
|
112
|
-
console.error(`[aalis] The
|
|
111
|
+
if (!isDataDirInitialized(declared)) {
|
|
112
|
+
console.error(`[aalis] The data directory is not initialized: ${declared.data}\n` +
|
|
113
113
|
'[aalis] Run the start command once with --init (before any subcommand) to initialize it.');
|
|
114
114
|
process.exit(1);
|
|
115
115
|
}
|
|
116
|
-
//
|
|
117
|
-
//
|
|
118
|
-
const
|
|
119
|
-
|
|
120
|
-
// 默认加载器从安装集的 package.json 找插件:缺了它会一个插件都不加载、照样起来,只留一行「发现 0 个插件」
|
|
116
|
+
// 交给插件的数据目录是真实路径:符号链接、大小写与末尾分隔符不同的写法指向同一个目录时,插件拿到的是同一个路径
|
|
117
|
+
// (记忆库按它记归属)
|
|
118
|
+
const paths = derivePaths(realpathSync.native(declared.data), appDir, resolved.profile);
|
|
119
|
+
// 默认加载器从安装集的 package.json 找插件:缺了它会一个插件都不加载、照样启动,只留一行「发现 0 个插件」
|
|
121
120
|
if (!opts.pluginLoader && !existsSync(join(paths.app, 'package.json'))) {
|
|
122
121
|
console.error(`[aalis] The install directory ${paths.app} has no package.json, so there are no plugins to load.\n` +
|
|
123
122
|
`[aalis] appDir must point to the directory of the entry file, which holds package.json, for example ${APP_DIR_EXAMPLE}.`);
|
|
124
123
|
process.exit(1);
|
|
125
124
|
}
|
|
126
125
|
const subcommands = hostArgs.rest;
|
|
127
|
-
// ──
|
|
128
|
-
//
|
|
126
|
+
// ── 实例锁:同一数据目录只许一个守护进程。要在写日志之前取到,否则第二个实例一启动就把正在写的 latest.log 轮转走 ──
|
|
127
|
+
// 交接令牌读到就从环境里删掉,不让插件启动的子进程与侧车继承它。子命令进程不取锁(它们以后经 socket 连实例)。
|
|
129
128
|
const handoffToken = process.env[HANDOFF_ENV];
|
|
130
129
|
delete process.env[HANDOFF_ENV];
|
|
131
130
|
let instanceLock;
|
|
@@ -140,11 +139,11 @@ export async function startAalis(opts) {
|
|
|
140
139
|
}
|
|
141
140
|
if (!acquired.ok) {
|
|
142
141
|
const { holder, file } = acquired;
|
|
143
|
-
const occupied = `[aalis] An instance is already running in the
|
|
142
|
+
const occupied = `[aalis] An instance is already running in the data directory ${paths.data}: pid ${holder.pid} (lock file ${file}).\n` +
|
|
144
143
|
'[aalis] If you are sure no instance is running (for example, the process was killed and this machine cannot look up ' +
|
|
145
144
|
'process start times, or a container was killed and restarted within the same boot), delete this lock file and start again.';
|
|
146
145
|
if (hostArgs.service) {
|
|
147
|
-
// 服务形态按正常退出:配合 KeepAlive={SuccessfulExit=false}
|
|
146
|
+
// 服务形态按正常退出:配合 KeepAlive={SuccessfulExit=false},不会被服务管理器反复重新启动再抢锁
|
|
148
147
|
console.error(`${occupied}\n[aalis] Started as a service, so this counts as a normal exit.`);
|
|
149
148
|
process.exit(0);
|
|
150
149
|
}
|
|
@@ -155,13 +154,10 @@ export async function startAalis(opts) {
|
|
|
155
154
|
const lock = acquired.lock;
|
|
156
155
|
process.on('exit', () => lock.release());
|
|
157
156
|
}
|
|
158
|
-
// ── 最早期:任何日志之前先装
|
|
159
|
-
const bootstrap = installBootstrapBuffer();
|
|
160
|
-
if (terminalRestore)
|
|
161
|
-
installTerminalStateRestorer();
|
|
157
|
+
// ── 最早期:任何日志之前先装 console sink ──
|
|
162
158
|
const subcommandMode = subcommands.length > 0;
|
|
163
159
|
// console sink 在 App 之前装:此时尚无事件总线(根绑定),sink 处于「无条件写」状态以打印早期启动日志,
|
|
164
|
-
// 待 App
|
|
160
|
+
// 待 App 启动后再 bindEvents 接管 terminal:claimed/released。子命令模式日志走 stderr,stdout 只留命令结果。
|
|
165
161
|
// consoleSink: false 仍装 stderr + minLevel warn:加载器拒载「另一份 @aalis/core」的插件记 error,不能只剩下游的指令服务不可用报错。
|
|
166
162
|
const consoleHandle = consoleSink
|
|
167
163
|
? installConsoleSink(subcommandMode ? { target: 'stderr' } : {})
|
|
@@ -189,35 +185,48 @@ export async function startAalis(opts) {
|
|
|
189
185
|
};
|
|
190
186
|
process.on('uncaughtException', err => void exitWithFatalLog('Uncaught exception', err));
|
|
191
187
|
process.on('unhandledRejection', reason => void exitWithFatalLog('Unhandled promise rejection', reason));
|
|
192
|
-
// ── file logger(async
|
|
188
|
+
// ── file logger(async)──
|
|
193
189
|
if (fileLogTarget)
|
|
194
190
|
fileLogger = await setupFileLogger(fileLogTarget);
|
|
195
|
-
// sink 全部装好;bootstrap buffer 完成使命,解除订阅并释放内存。
|
|
196
|
-
bootstrap.dispose();
|
|
197
191
|
// ── 组装 App:YAML 配置文档与密钥文件、按 loader 发现插件、用 spawn 重启 ──
|
|
198
|
-
//
|
|
192
|
+
// 配置或密钥文件读不进来(格式有误、读不了、插件配置段不是映射)是环境问题:一行报错退出,不带调用栈(消息不含文件内容)。
|
|
193
|
+
// 这时插件还没加载、没有读者语言,文字对象取英文
|
|
199
194
|
const loadOrExit = (load) => {
|
|
200
195
|
try {
|
|
201
196
|
return load();
|
|
202
197
|
}
|
|
203
198
|
catch (err) {
|
|
204
|
-
|
|
199
|
+
const message = isTextError(err)
|
|
200
|
+
? resolveText(err.text, ['en'])
|
|
201
|
+
: err instanceof Error
|
|
202
|
+
? err.message
|
|
203
|
+
: String(err);
|
|
204
|
+
console.error(`[aalis] ${message}`);
|
|
205
205
|
process.exit(1);
|
|
206
206
|
}
|
|
207
207
|
};
|
|
208
208
|
const { config, provider } = loadOrExit(() => createFsYamlConfigProvider(paths.config));
|
|
209
209
|
const secrets = loadOrExit(() => createFsSecretsProvider(paths.secrets));
|
|
210
|
-
const store = createConfigStore(config, provider, secrets);
|
|
211
|
-
//
|
|
212
|
-
//
|
|
210
|
+
const store = loadOrExit(() => createConfigStore(config, provider, secrets));
|
|
211
|
+
// 只在启动时读、改了要重启的核心键(schema-config 的 CORE_RESTART_KEYS)在这里读一次交给 core,逐个按 CORE_CONFIG_SCHEMA
|
|
212
|
+
// 判定,与 WebUI 设置页同一套规则:缺省(含 YAML 空键解出的 null)交给 core 默认,不合法的告警后同样交给默认。
|
|
213
213
|
// 改成热生效或新加启动时才读的键,同步改那一份
|
|
214
|
-
const
|
|
215
|
-
const
|
|
216
|
-
|
|
214
|
+
const startup = {};
|
|
215
|
+
for (const key of CORE_RESTART_KEYS) {
|
|
216
|
+
const value = store.get(key);
|
|
217
|
+
const read = readFieldValue(CORE_CONFIG_SCHEMA[key], value);
|
|
218
|
+
if ('value' in read)
|
|
219
|
+
startup[key] = read.value;
|
|
220
|
+
else {
|
|
221
|
+
// 数字照原样显示:JSON.stringify 会把 Infinity / NaN 显示成 null
|
|
222
|
+
const received = typeof value === 'number' ? String(value) : JSON.stringify(value);
|
|
223
|
+
new DefaultLogger('aalis:config').warn(`配置项 ${key} 的值 ${received} 不可用:${read.invalid.source},按默认值处理`);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
217
226
|
const app = new App({
|
|
218
227
|
name: store.get('name'),
|
|
219
|
-
logLevel:
|
|
220
|
-
slowThresholdMs:
|
|
228
|
+
logLevel: startup.logLevel,
|
|
229
|
+
slowThresholdMs: startup.slowThresholdMs,
|
|
221
230
|
// 子命令进程没有重启能力,不注入策略:`app.restart()` 按 core 语义抛「不可用」,指令层折成失败文案。
|
|
222
231
|
// 注入的话,`restart` 子命令在 app.stop 超过策略 500ms 等待时会 spawn 一个 argv 仍带 restart 的
|
|
223
232
|
// detached 子进程,新进程再命中 restart……无限连环(实测 5 代,Ctrl+C 打不到)。
|
|
@@ -227,7 +236,7 @@ export async function startAalis(opts) {
|
|
|
227
236
|
? createServiceRestartStrategy()
|
|
228
237
|
: createProcessRespawnStrategy({
|
|
229
238
|
appDir: paths.app,
|
|
230
|
-
cwd: startCwd ?? paths.
|
|
239
|
+
cwd: startCwd ?? paths.data,
|
|
231
240
|
...(instanceLock ? { env: { [HANDOFF_ENV]: instanceLock.handoffToken } } : {}),
|
|
232
241
|
}),
|
|
233
242
|
// 宿主层决定 dev/prod;core 不读 process.env
|
|
@@ -235,11 +244,6 @@ export async function startAalis(opts) {
|
|
|
235
244
|
// 宿主读取 @aalis/core 的实际版本注入启动 banner——core 环境无关、不自读 package.json。
|
|
236
245
|
version: readCoreVersion(),
|
|
237
246
|
});
|
|
238
|
-
if (!slowThresholdValid) {
|
|
239
|
-
// 数字照原样显示:JSON.stringify 会把 Infinity / NaN 显示成 null
|
|
240
|
-
const received = typeof slowThresholdMs === 'number' ? String(slowThresholdMs) : JSON.stringify(slowThresholdMs);
|
|
241
|
-
app.logger.warn(`配置项 slowThresholdMs 应为不小于 0 的有限数字(毫秒),收到 ${received},按默认值处理`);
|
|
242
|
-
}
|
|
243
247
|
// 宿主的根绑定:事件订阅、服务查询与宿主服务登记都经它,随 App 停止撤回
|
|
244
248
|
const host = app.bind({ events, provide, services });
|
|
245
249
|
// 宿主路径、日志与配置文档先于任何插件接上:插件激活时就要用到,文档里的服务偏好要在全部提供者上线前生效。
|
|
@@ -247,23 +251,16 @@ export async function startAalis(opts) {
|
|
|
247
251
|
host.provide.use(hostPaths, paths, { exclusive: true });
|
|
248
252
|
host.provide.use(hostLogs, createHostLogs(LogHub.default, fileLogger, app.logger), { exclusive: true });
|
|
249
253
|
installHostConfig(app, store, opts.configSync);
|
|
250
|
-
// 默认值从 configSchema
|
|
251
|
-
const
|
|
252
|
-
|
|
253
|
-
host.provide.use(pluginSource, { rescan: () => discovery.rescan() }, { exclusive: true });
|
|
254
|
+
// 默认值从 configSchema 派生(唯一声明来源),发现驱动每批定下要登记的定义后、登记前深合并进文档;登记时原样交给 core
|
|
255
|
+
const discovery = createPluginDiscovery(app, opts.pluginLoader ?? createNodeModulesPluginLoader(paths.app), store, withPluginConfigSync(app, store, opts.configSync));
|
|
256
|
+
host.provide.use(pluginSource, { rescan: () => discovery.rescan(), loaded: name => discovery.loaded(name) }, { exclusive: true });
|
|
254
257
|
// 不变量①:App 构造完成后再让 sink 监听终端归属事件——此前没有事件总线可订阅。
|
|
255
258
|
consoleHandle.bindEvents(host.events.use);
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
await discovery.loadAll();
|
|
259
|
-
}
|
|
260
|
-
finally {
|
|
261
|
-
// 即使后续加载失败,也保存本批已完成的规范化;不启动第二轮 bounce。
|
|
262
|
-
configLoader.finishInitialLoad();
|
|
263
|
-
}
|
|
259
|
+
// 每个定义交给 Core 前已经规范化;首次 apply 与配置快照用同一份字段。
|
|
260
|
+
await discovery.loadAll();
|
|
264
261
|
// ── 不变量②:子命令短路在 app.start 之前 ──
|
|
265
262
|
// `aalis <name> [args...]` 等价于聊天里 `/<name> args...`:命中则执行返回串,未命中则报错,
|
|
266
|
-
//
|
|
263
|
+
// 两种情况都干净退出、**绝不进守护进程**——打错的命令名若照常启动守护进程,就是与运行中实例并存的
|
|
267
264
|
// 第二个实例(同时连 onebot、每条消息回两遍)。与具体命令解耦——各插件自行注册命令。
|
|
268
265
|
if (subcommandMode) {
|
|
269
266
|
const exitCode = await tryDispatchSubcommand(host.services.use, subcommands);
|
|
@@ -286,7 +283,7 @@ export async function startAalis(opts) {
|
|
|
286
283
|
else if (unmet.waiting.length > 0)
|
|
287
284
|
app.logger.info(`插件 "${instance}" 在等依赖启动:${why}`);
|
|
288
285
|
}
|
|
289
|
-
//
|
|
286
|
+
// 向重启我们的父进程回报「已启动」。父进程据此决定放手退出,还是判定本次
|
|
290
287
|
// 更新失败并回滚(见 providers.ts 的 createProcessRespawnStrategy)。
|
|
291
288
|
//
|
|
292
289
|
// 两道防护缺一不可,都为了「本进程绝不能因为报喜而死」:
|
|
@@ -296,7 +293,7 @@ export async function startAalis(opts) {
|
|
|
296
293
|
// 2. callback —— 通道在判断与发送之间关闭(TOCTOU)时,错误改走 callback。没有它,
|
|
297
294
|
// Node 会在 nextTick 往 process 上 emit 无监听者的 'error',直接升级成
|
|
298
295
|
// uncaughtException 被 start.ts 顶部的 handler 捕获并 exit(1)——**同步 try/catch
|
|
299
|
-
//
|
|
296
|
+
// 接不住**(错误是异步抛的)。症状会是「一重启就没、手动启动就好」。
|
|
300
297
|
if (process.connected)
|
|
301
298
|
process.send?.({ type: READY_MESSAGE }, undefined, undefined, () => { });
|
|
302
299
|
// 握手完成后解除 IPC 对事件循环的持有——否则父进程退出前本进程无法自然结束。
|
|
@@ -304,7 +301,8 @@ export async function startAalis(opts) {
|
|
|
304
301
|
// 配置外部变更热重载(provider 不支持 watch 时为 no-op);文件里新增的后缀实例经发现驱动登记。
|
|
305
302
|
installConfigHotReload(app, store, discovery, opts.configSync);
|
|
306
303
|
let stopping = false;
|
|
307
|
-
|
|
304
|
+
/** 走完停机后以 exitCode 退出。停机途中再来的不另行执行一次,退出码按先来的那次 */
|
|
305
|
+
const shutdown = async (exitCode) => {
|
|
308
306
|
if (stopping)
|
|
309
307
|
return;
|
|
310
308
|
stopping = true;
|
|
@@ -313,10 +311,33 @@ export async function startAalis(opts) {
|
|
|
313
311
|
// 入队,再等队列清空,确保 latest.log 含完整关闭日志。
|
|
314
312
|
await new Promise(r => setImmediate(r));
|
|
315
313
|
await fileLogger?.dispose();
|
|
316
|
-
process.exit(
|
|
314
|
+
process.exit(exitCode);
|
|
317
315
|
};
|
|
318
|
-
|
|
319
|
-
|
|
316
|
+
// 停机要等插件收尾,停机途中再按 Ctrl+C 不打断它(npm start 一次 Ctrl+C 本就送来两个 SIGINT)。要立即退出改按 Ctrl+\:
|
|
317
|
+
// 不接 SIGQUIT,按默认动作当场结束,卡住的事件循环也拦不住;Windows 上对应的是 Ctrl+Break(SIGBREAK)。
|
|
318
|
+
// 提示是给按着键的人看的,直接写 stderr,不经日志:日志级别与控制台输出的设置都可能把它滤掉
|
|
319
|
+
process.on('SIGINT', () => {
|
|
320
|
+
if (!stopping)
|
|
321
|
+
console.error(`[aalis] Shutting down; press ${process.platform === 'win32' ? 'Ctrl+Break' : 'Ctrl+\\'} to quit now without waiting.`);
|
|
322
|
+
void shutdown(0);
|
|
323
|
+
});
|
|
324
|
+
process.on('SIGTERM', () => void shutdown(0));
|
|
325
|
+
// 关掉所在的终端时 shell 给前台作业发 SIGHUP,默认动作是不经停机直接结束,插件收尾与清理里的落盘全被跳过:接住它走完停机。
|
|
326
|
+
// respawn 出来的后代自成会话,终端关掉时收不到 SIGHUP,只在之后往已挂断的终端写时得到 EIO;输出接在管道上而读端走了是 EPIPE。
|
|
327
|
+
// 这两种写出错同样走完停机。以 --service 运行时输出断了(日志转发进程异常退出)不是要它停:停完以服务重启的退出码结束,由服务
|
|
328
|
+
// 管理器重新启动进程、重新接上输出,以 0 退出的话服务管理器当它正常退出、不再重新启动。两条流上一直挂着监听,写出错都由它接住、不再抛:
|
|
329
|
+
// 直接写流的(终端界面停用时写的复原序列)出错原本是未捕获的 'error';console 只在流上没有别的 'error' 监听时才自己接住,有工作
|
|
330
|
+
// 线程(经 tsx 跑源码时就有)时它的输出接在这两条流上,管道留下的监听把错误再抛出来,console 也接不住。未捕获的 'error' 经顶部
|
|
331
|
+
// 的 fatal handler 以 1 退出,停机断在中途。别的写错误(如输出重定向到写满的磁盘)只丢掉这次输出,与流上没有监听时 console 的
|
|
332
|
+
// 做法一致,文件日志照常
|
|
333
|
+
process.on('SIGHUP', () => void shutdown(0));
|
|
334
|
+
const outputLost = hostArgs.service ? SERVICE_RESTART_EXIT_CODE : 0;
|
|
335
|
+
for (const stream of outputs) {
|
|
336
|
+
stream.on('error', (err) => {
|
|
337
|
+
if (err.code === 'EIO' || err.code === 'EPIPE')
|
|
338
|
+
void shutdown(outputLost);
|
|
339
|
+
});
|
|
340
|
+
}
|
|
320
341
|
return app;
|
|
321
342
|
}
|
|
322
343
|
//# sourceMappingURL=start.js.map
|
package/dist/start.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.js","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../src/start.ts"],"names":[],"mappings":"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"}
|
package/dist/subcommand.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ import type { Services } from '@aalis/core';
|
|
|
4
4
|
*
|
|
5
5
|
* 返回进程 exit code:命中则执行并返回 0;commands 服务不存在或命令名未注册则经 `err`
|
|
6
6
|
* 报错并返回 2。**不存在「未命中就放行」的分支**——argv 非空即子命令模式,调用方据此退出、
|
|
7
|
-
*
|
|
7
|
+
* 不进守护进程:打错的命令名若照常启动守护进程,就是与运行中实例并存的第二个实例。
|
|
8
8
|
*
|
|
9
9
|
* 不直接绑定任何具体命令;所有命令由插件向 commands 服务注册。
|
|
10
10
|
*
|
package/dist/subcommand.js
CHANGED
package/dist/texts.d.ts
CHANGED
|
@@ -5,6 +5,10 @@ declare const SOURCE: {
|
|
|
5
5
|
readonly yamlPosition: "{code}(第 {line} 行第 {col} 列)";
|
|
6
6
|
readonly saveRefused: "{file}有尚未生效的外部修改,为免覆盖已拒绝本次保存({path})";
|
|
7
7
|
readonly unsafePluginId: "插件 id 不合法:{id}";
|
|
8
|
+
readonly notMapping: "插件 {instance} 的配置须为映射,不能是 null、数组或标量";
|
|
9
|
+
readonly sectionNotMapping: "配置文档里的 {at} 不是映射(得到 {kind})";
|
|
10
|
+
readonly sectionNotList: "配置文档里的 {at} 不是列表(得到 {kind})";
|
|
11
|
+
readonly entryNotString: "配置文档里的 {at} 不是字符串(得到 {kind})";
|
|
8
12
|
readonly noDefinition: "插件 {instance} 不存在,也没有可用来新建它的同模块定义(模块须已登记且声明 reusable)";
|
|
9
13
|
readonly plainSecret: "setPluginConfig 只收文档形态:{instance} 的 {paths, list} 是密钥字段,不能写原值;改配置请用 applyPluginConfig";
|
|
10
14
|
readonly secretAt: "{path}(键 {key})";
|
|
@@ -20,6 +24,10 @@ export declare const t: import("@aalis/schema-i18n").TextFactory<{
|
|
|
20
24
|
readonly yamlPosition: "{code}(第 {line} 行第 {col} 列)";
|
|
21
25
|
readonly saveRefused: "{file}有尚未生效的外部修改,为免覆盖已拒绝本次保存({path})";
|
|
22
26
|
readonly unsafePluginId: "插件 id 不合法:{id}";
|
|
27
|
+
readonly notMapping: "插件 {instance} 的配置须为映射,不能是 null、数组或标量";
|
|
28
|
+
readonly sectionNotMapping: "配置文档里的 {at} 不是映射(得到 {kind})";
|
|
29
|
+
readonly sectionNotList: "配置文档里的 {at} 不是列表(得到 {kind})";
|
|
30
|
+
readonly entryNotString: "配置文档里的 {at} 不是字符串(得到 {kind})";
|
|
23
31
|
readonly noDefinition: "插件 {instance} 不存在,也没有可用来新建它的同模块定义(模块须已登记且声明 reusable)";
|
|
24
32
|
readonly plainSecret: "setPluginConfig 只收文档形态:{instance} 的 {paths, list} 是密钥字段,不能写原值;改配置请用 applyPluginConfig";
|
|
25
33
|
readonly secretAt: "{path}(键 {key})";
|
package/dist/texts.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"texts.d.ts","sourceRoot":"","sources":["../src/texts.ts"],"names":[],"mappings":"AAMA,QAAA,MAAM,MAAM
|
|
1
|
+
{"version":3,"file":"texts.d.ts","sourceRoot":"","sources":["../src/texts.ts"],"names":[],"mappings":"AAMA,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;;;CAoBF,CAAC;AACX,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC;AAEnC,eAAO,MAAM,CAAC;;;;;;;;;;;;;;;;;EAA4F,CAAC"}
|
package/dist/texts.js
CHANGED
|
@@ -10,6 +10,10 @@ const SOURCE = {
|
|
|
10
10
|
yamlPosition: '{code}(第 {line} 行第 {col} 列)',
|
|
11
11
|
saveRefused: '{file}有尚未生效的外部修改,为免覆盖已拒绝本次保存({path})',
|
|
12
12
|
unsafePluginId: '插件 id 不合法:{id}',
|
|
13
|
+
notMapping: '插件 {instance} 的配置须为映射,不能是 null、数组或标量',
|
|
14
|
+
sectionNotMapping: '配置文档里的 {at} 不是映射(得到 {kind})',
|
|
15
|
+
sectionNotList: '配置文档里的 {at} 不是列表(得到 {kind})',
|
|
16
|
+
entryNotString: '配置文档里的 {at} 不是字符串(得到 {kind})',
|
|
13
17
|
noDefinition: '插件 {instance} 不存在,也没有可用来新建它的同模块定义(模块须已登记且声明 reusable)',
|
|
14
18
|
plainSecret: 'setPluginConfig 只收文档形态:{instance} 的 {paths, list} 是密钥字段,不能写原值;改配置请用 applyPluginConfig',
|
|
15
19
|
secretAt: '{path}(键 {key})',
|
package/dist/texts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"texts.js","sourceRoot":"","sources":["../src/texts.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,6DAA6D;AAC7D,aAAa;AACb,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAEjC,MAAM,MAAM,GAAG;IACb,UAAU,EAAE,MAAM;IAClB,WAAW,EAAE,MAAM;IACnB,UAAU,EAAE,MAAM;IAClB,YAAY,EAAE,6BAA6B;IAC3C,WAAW,EAAE,sCAAsC;IACnD,cAAc,EAAE,gBAAgB;IAChC,YAAY,EAAE,uDAAuD;IACrE,WAAW,EACT,uFAAuF;IACzF,QAAQ,EAAE,iBAAiB;IAC3B,gBAAgB,EACd,+EAA+E;IACjF,QAAQ,EACN,8GAA8G;IAChH,eAAe,EAAE,0BAA0B;CACnC,CAAC;AAGX,MAAM,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC,EAAE,EAAE,EAAE,gBAAgB,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"texts.js","sourceRoot":"","sources":["../src/texts.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,6DAA6D;AAC7D,aAAa;AACb,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAEjC,MAAM,MAAM,GAAG;IACb,UAAU,EAAE,MAAM;IAClB,WAAW,EAAE,MAAM;IACnB,UAAU,EAAE,MAAM;IAClB,YAAY,EAAE,6BAA6B;IAC3C,WAAW,EAAE,sCAAsC;IACnD,cAAc,EAAE,gBAAgB;IAChC,UAAU,EAAE,sCAAsC;IAClD,iBAAiB,EAAE,6BAA6B;IAChD,cAAc,EAAE,6BAA6B;IAC7C,cAAc,EAAE,8BAA8B;IAC9C,YAAY,EAAE,uDAAuD;IACrE,WAAW,EACT,uFAAuF;IACzF,QAAQ,EAAE,iBAAiB;IAC3B,gBAAgB,EACd,+EAA+E;IACjF,QAAQ,EACN,8GAA8G;IAChH,eAAe,EAAE,0BAA0B;CACnC,CAAC;AAGX,MAAM,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC,EAAE,EAAE,EAAE,gBAAgB,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC"}
|
package/dist/yaml-file.d.ts
CHANGED
|
@@ -13,7 +13,7 @@ interface YamlFileOptions<T> {
|
|
|
13
13
|
*/
|
|
14
14
|
mode?: number;
|
|
15
15
|
/**
|
|
16
|
-
* 运行中改成空文件(或只剩注释)时按 {@link missing}
|
|
16
|
+
* 运行中改成空文件(或只剩注释)时按 {@link missing} 的值投递。缺省拒收:主配置变空多是写入出错,
|
|
17
17
|
* 放行会让全部插件按默认值重载;密钥文件清空是合法状态
|
|
18
18
|
*/
|
|
19
19
|
emptyAsMissing?: boolean;
|
|
@@ -27,10 +27,12 @@ interface YamlFile<T> {
|
|
|
27
27
|
save(value: T): void;
|
|
28
28
|
/**
|
|
29
29
|
* 监听文件所在目录(按文件名过滤)+ 300ms 去抖,按与上次读入或写出的内容比对去重(自写回不触发);
|
|
30
|
-
*
|
|
30
|
+
* 拒写之后的下一次变更不去重;武装后立即核对一次。返回退订
|
|
31
31
|
*/
|
|
32
32
|
watch(onChange: (next: T) => void): () => void;
|
|
33
33
|
}
|
|
34
|
+
/** 值必须是纯映射:裸标量、数组会被下游按 Object.entries 摊开写回垃圾 */
|
|
35
|
+
export declare function describeNonMapping(v: unknown): string | null;
|
|
34
36
|
export declare function openYamlFile<T extends object>(absPath: string, opts: YamlFileOptions<T>): YamlFile<T>;
|
|
35
37
|
export {};
|
|
36
38
|
//# sourceMappingURL=yaml-file.d.ts.map
|
package/dist/yaml-file.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yaml-file.d.ts","sourceRoot":"","sources":["../src/yaml-file.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAe,KAAK,OAAO,EAAsB,MAAM,oBAAoB,CAAC;AAUnF,UAAU,eAAe,CAAC,CAAC;IACzB,4DAA4D;IAC5D,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC;IAC5B,iBAAiB;IACjB,OAAO,IAAI,CAAC,CAAC;IACb;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,UAAU,QAAQ,CAAC,CAAC;IAClB,eAAe;IACf,OAAO,EAAE,CAAC,CAAC;IACX;;OAEG;IACH,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IACrB;;;OAGG;IACH,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CAChD;
|
|
1
|
+
{"version":3,"file":"yaml-file.d.ts","sourceRoot":"","sources":["../src/yaml-file.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAe,KAAK,OAAO,EAAsB,MAAM,oBAAoB,CAAC;AAUnF,UAAU,eAAe,CAAC,CAAC;IACzB,4DAA4D;IAC5D,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC;IAC5B,iBAAiB;IACjB,OAAO,IAAI,CAAC,CAAC;IACb;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,UAAU,QAAQ,CAAC,CAAC;IAClB,eAAe;IACf,OAAO,EAAE,CAAC,CAAC;IACX;;OAEG;IACH,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IACrB;;;OAGG;IACH,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CAChD;AA+BD,gDAAgD;AAChD,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAK5D;AAED,wBAAgB,YAAY,CAAC,CAAC,SAAS,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CA4KrG"}
|
package/dist/yaml-file.js
CHANGED
|
@@ -34,7 +34,7 @@ function parseYamlText(text, label, logger) {
|
|
|
34
34
|
return doc.toJS();
|
|
35
35
|
}
|
|
36
36
|
/** 值必须是纯映射:裸标量、数组会被下游按 Object.entries 摊开写回垃圾 */
|
|
37
|
-
function describeNonMapping(v) {
|
|
37
|
+
export function describeNonMapping(v) {
|
|
38
38
|
if (v === null)
|
|
39
39
|
return 'empty';
|
|
40
40
|
if (Array.isArray(v))
|
|
@@ -48,7 +48,7 @@ export function openYamlFile(absPath, opts) {
|
|
|
48
48
|
const dataDir = dirname(absPath);
|
|
49
49
|
let raw = null;
|
|
50
50
|
// 拒写之后调用方手里的文档(常连同运行态)已领先于文件:下一次文件变更不论内容是否等于 raw 都要投递,
|
|
51
|
-
//
|
|
51
|
+
// 让宿主按文件重新核对。否则把文件原样改回的「修好」会被当成空变更跳过,文档与运行态从此偏离文件,
|
|
52
52
|
// 下一次成功保存还会把被拒的改动写进去。
|
|
53
53
|
let reconcilePending = false;
|
|
54
54
|
let watcher = null;
|
|
@@ -78,7 +78,7 @@ export function openYamlFile(absPath, opts) {
|
|
|
78
78
|
initial,
|
|
79
79
|
save(value) {
|
|
80
80
|
// 写前比对磁盘实况:盘上内容必须仍是本进程最后读入或写出的那份。不是,就有尚未生效的外部修改
|
|
81
|
-
//
|
|
81
|
+
// (去抖窗口内、监听未武装、解析失败被搁置、另一个进程写过),整份覆写会把它静默丢弃,所以拒写。
|
|
82
82
|
// 文件不存在时没有可保护的内容,照写。
|
|
83
83
|
let onDisk = null;
|
|
84
84
|
try {
|
|
@@ -176,13 +176,17 @@ export function openYamlFile(absPath, opts) {
|
|
|
176
176
|
logger.warn(`${label.source}不是一个映射(得到 ${kind}),本次变更已忽略`);
|
|
177
177
|
return;
|
|
178
178
|
}
|
|
179
|
+
// 处理器里的保存要看到这次的内容已读入,先推进;处理器拒收(抛错)时退回,与解析失败一样搁置:
|
|
180
|
+
// 之后的保存照样拒写,不把这份手改盖掉
|
|
181
|
+
const before = { raw, reconcilePending };
|
|
179
182
|
raw = current;
|
|
180
183
|
reconcilePending = false;
|
|
181
184
|
try {
|
|
182
185
|
onChange(parsed);
|
|
183
186
|
}
|
|
184
187
|
catch (err) {
|
|
185
|
-
|
|
188
|
+
({ raw, reconcilePending } = before);
|
|
189
|
+
logger.warn(`${label.source}变更处理器抛错,本次变更已忽略,仍在使用上一份内容:${err instanceof Error ? err.message : String(err)}`);
|
|
186
190
|
}
|
|
187
191
|
}, 300);
|
|
188
192
|
};
|
|
@@ -200,7 +204,7 @@ export function openYamlFile(absPath, opts) {
|
|
|
200
204
|
watcher?.close();
|
|
201
205
|
watcher = null;
|
|
202
206
|
});
|
|
203
|
-
//
|
|
207
|
+
// 武装即核对一次:武装前(启动期)的外部修改不会再有事件,不补就既不生效、又让 save 一直拒写
|
|
204
208
|
schedule();
|
|
205
209
|
}
|
|
206
210
|
catch (err) {
|
package/dist/yaml-file.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"yaml-file.js","sourceRoot":"","sources":["../src/yaml-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EACL,SAAS,EACT,UAAU,EAEV,KAAK,IAAI,OAAO,EAChB,YAAY,EACZ,UAAU,EACV,MAAM,EACN,QAAQ,EACR,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,OAAO,EAAE,WAAW,EAAgB,QAAQ,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnF,OAAO,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,CAAC,EAAE,MAAM,YAAY,CAAC;AAyC/B;;;;GAIG;AACH,SAAS,iBAAiB,CAAC,GAAY;IACrC,MAAM,CAAC,GAAG,GAAwF,CAAC;IACnG,MAAM,IAAI,GAAG,OAAO,CAAC,EAAE,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IACpE,MAAM,EAAE,GAAG,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3B,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7E,CAAC;AAED,8CAA8C;AAC9C,SAAS,OAAO,CAAC,IAAsB;IACrC,OAAO,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;AACrE,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,IAAY,EAAE,KAAa,EAAE,MAAc;IAChE,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IACvD,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAC/C,KAAK,MAAM,OAAO,IAAI,GAAG,CAAC,QAAQ;QAAE,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,SAAS,QAAQ,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IACzG,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;AACpB,CAAC;AAED,gDAAgD;AAChD,
|
|
1
|
+
{"version":3,"file":"yaml-file.js","sourceRoot":"","sources":["../src/yaml-file.ts"],"names":[],"mappings":"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"}
|