@sfmc-bds/cli 0.2.0-beta.9 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +663 -0
- package/README.md +4 -5
- package/dist/bds-runtime-version.d.ts +3 -0
- package/dist/bds-runtime-version.d.ts.map +1 -0
- package/dist/bds-runtime-version.js +15 -0
- package/dist/bds-runtime-version.js.map +7 -0
- package/dist/command-surface.d.ts.map +1 -1
- package/dist/command-surface.js +3 -1
- package/dist/command-surface.js.map +2 -2
- package/dist/commands.d.ts +57 -4
- package/dist/commands.d.ts.map +1 -1
- package/dist/commands.js +78 -75
- package/dist/commands.js.map +2 -2
- package/dist/directory-picker.d.ts +27 -0
- package/dist/directory-picker.d.ts.map +1 -0
- package/dist/directory-picker.js +112 -0
- package/dist/directory-picker.js.map +7 -0
- package/dist/i18n/locales/en.d.ts +25 -1
- package/dist/i18n/locales/en.d.ts.map +1 -1
- package/dist/i18n/locales/en.js +25 -1
- package/dist/i18n/locales/en.js.map +2 -2
- package/dist/i18n/locales/zh-CN.d.ts.map +1 -1
- package/dist/i18n/locales/zh-CN.js +26 -2
- package/dist/i18n/locales/zh-CN.js.map +2 -2
- package/dist/interactive-prompts.d.ts +1 -2
- package/dist/interactive-prompts.d.ts.map +1 -1
- package/dist/interactive-prompts.js +12 -23
- package/dist/interactive-prompts.js.map +3 -3
- package/dist/llbot-launch.d.ts +3 -3
- package/dist/llbot-launch.js.map +1 -1
- package/dist/log-filter.d.ts +18 -2
- package/dist/log-filter.d.ts.map +1 -1
- package/dist/log-filter.js +54 -4
- package/dist/log-filter.js.map +2 -2
- package/dist/log-translator.d.ts +36 -0
- package/dist/log-translator.d.ts.map +1 -0
- package/dist/log-translator.js +279 -0
- package/dist/log-translator.js.map +7 -0
- package/dist/logs.d.ts +2 -0
- package/dist/logs.d.ts.map +1 -1
- package/dist/logs.js +24 -11
- package/dist/logs.js.map +2 -2
- package/dist/main.js +5 -0
- package/dist/main.js.map +2 -2
- package/dist/module-commands.d.ts.map +1 -1
- package/dist/module-commands.js +34 -13
- package/dist/module-commands.js.map +2 -2
- package/dist/module-fingerprint.d.ts.map +1 -1
- package/dist/module-fingerprint.js +1 -0
- package/dist/module-fingerprint.js.map +2 -2
- package/dist/module-pack-build.d.ts +14 -4
- package/dist/module-pack-build.d.ts.map +1 -1
- package/dist/module-pack-build.js +81 -108
- package/dist/module-pack-build.js.map +2 -2
- package/dist/module-toggle.d.ts +1 -1
- package/dist/module-toggle.d.ts.map +1 -1
- package/dist/module-toggle.js.map +1 -1
- package/dist/pack-lifecycle.d.ts +15 -1
- package/dist/pack-lifecycle.d.ts.map +1 -1
- package/dist/pack-lifecycle.js +242 -15
- package/dist/pack-lifecycle.js.map +2 -2
- package/dist/player-session.d.ts +13 -0
- package/dist/player-session.d.ts.map +1 -0
- package/dist/player-session.js +26 -0
- package/dist/player-session.js.map +7 -0
- package/dist/registry.d.ts +1 -1
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +4 -1
- package/dist/registry.js.map +2 -2
- package/dist/repl-windows/format-display.d.ts.map +1 -1
- package/dist/repl-windows/format-display.js +5 -1
- package/dist/repl-windows/format-display.js.map +2 -2
- package/dist/repl-windows/host.d.ts +6 -3
- package/dist/repl-windows/host.d.ts.map +1 -1
- package/dist/repl-windows/host.js +12 -6
- package/dist/repl-windows/host.js.map +2 -2
- package/dist/repl-windows/index.d.ts +1 -0
- package/dist/repl-windows/index.d.ts.map +1 -1
- package/dist/repl-windows/index.js +3 -0
- package/dist/repl-windows/index.js.map +2 -2
- package/dist/repl-windows/service-window.d.ts.map +1 -1
- package/dist/repl-windows/service-window.js +1 -0
- package/dist/repl-windows/service-window.js.map +2 -2
- package/dist/repl-windows/sfmc-window.d.ts +7 -0
- package/dist/repl-windows/sfmc-window.d.ts.map +1 -0
- package/dist/repl-windows/sfmc-window.js +28 -0
- package/dist/repl-windows/sfmc-window.js.map +7 -0
- package/dist/repl.d.ts.map +1 -1
- package/dist/repl.js +38 -13
- package/dist/repl.js.map +2 -2
- package/dist/runtime.d.ts +2 -2
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +15 -2
- package/dist/runtime.js.map +2 -2
- package/dist/send-target.d.ts +2 -0
- package/dist/send-target.d.ts.map +1 -1
- package/dist/send-target.js +6 -0
- package/dist/send-target.js.map +2 -2
- package/dist/services.d.ts +26 -1
- package/dist/services.d.ts.map +1 -1
- package/dist/services.js +179 -45
- package/dist/services.js.map +2 -2
- package/dist/sfmc-modules-root.d.ts.map +1 -1
- package/dist/sfmc-modules-root.js +6 -2
- package/dist/sfmc-modules-root.js.map +2 -2
- package/dist/ui-command.d.ts +6 -0
- package/dist/ui-command.d.ts.map +1 -0
- package/dist/ui-command.js +68 -0
- package/dist/ui-command.js.map +7 -0
- package/dist/wizard.d.ts.map +1 -1
- package/dist/wizard.js +36 -31
- package/dist/wizard.js.map +2 -2
- package/dist/world-packs.d.ts +2 -0
- package/dist/world-packs.d.ts.map +1 -1
- package/dist/world-packs.js +161 -18
- package/dist/world-packs.js.map +2 -2
- package/package.json +22 -15
- package/scripts/module-install/check-modules.mjs +178 -0
- package/scripts/module-install/fetch-module.mjs +1088 -0
- package/scripts/module-install/lib/catalog.mjs +96 -0
- package/scripts/module-install/lib/config-seeding.mjs +128 -0
- package/scripts/module-install/lib/io.mjs +37 -0
- package/scripts/module-install/lib/link-from.mjs +80 -0
- package/scripts/module-install/lib/lock.mjs +78 -0
- package/scripts/module-install/lib/npm-resolver.mjs +55 -0
- package/scripts/module-install/lib/packages.mjs +136 -0
- package/scripts/module-install/lib/paths.mjs +48 -0
- package/scripts/module-install/lib/registry-index.mjs +50 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/repl-windows/host.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * repl-windows/host.ts \u2014 \u7A97\u53E3\u6CE8\u518C\u4E0E\u5207\u6362\uFF08\u4E0D\u5199\u4E1A\u52A1\uFF0C\u53EA\u8C03\u5EA6 ReplWindow\uFF09\n *\n * \u6BCF\u6247\u7A97\u7EF4\u62A4\u5DF2\u6E32\u67D3\u884C\u7F13\u5B58\uFF1A\u5207\u8D70\u6E05\u5C4F\uFF0C\u5207\u56DE\u76F4\u63A5\u6062\u590D\uFF1B\u540E\u53F0\u4ECD\u628A\u5339\u914D\u65E5\u5FD7\u5199\u5165\u5BF9\u5E94\u7F13\u5B58\u3002\n */\nimport { wrapLogLine, type UnifiedLog } from \"../logs.js\";\nimport type { ServiceName } from \"../services.js\";\nimport type { ReplWindow, WindowChrome, WindowKeyEvent, WindowKeyResult } from \"./types.js\";\n\nexport type HostWriteLog = (wrappedLine: string) => void;\n\nexport class WindowHost {\n private readonly windows = new Map<string, ReplWindow>();\n /** \u7A97\u53E3 id \u2192 \u5DF2\u6E32\u67D3\uFF08\u5DF2 wrap\uFF09\u7684\u884C\uFF1B\u5207\u56DE\u65F6\u76F4\u63A5 dump\uFF0C\u65E0\u9700\u91CD\u62C9\u6E90 */\n private readonly buffers = new Map<string, string[]>();\n /** \u670D\u52A1\u7A97\u5FAA\u73AF\u987A\u5E8F\uFF08\u4EC5\u6D3B\u8DC3\u670D\u52A1\uFF09 */\n private serviceOrder: string[] = [];\n private activeId: string | null = null;\n private previousId: string | null = null;\n private readonly writeLog: HostWriteLog;\n private readonly onChromeChange: (() => void) | undefined;\n\n constructor(opts: { writeLog: HostWriteLog; onChromeChange?: () => void }) {\n this.writeLog = opts.writeLog;\n this.onChromeChange = opts.onChromeChange;\n }\n\n register(win: ReplWindow): void {\n this.windows.set(win.id, win);\n }\n\n unregister(id: string): void {\n if (this.activeId === id) {\n this.activeId = this.previousId;\n this.previousId = null;\n }\n if (this.previousId === id) this.previousId = null;\n this.windows.delete(id);\n this.buffers.delete(id);\n this.serviceOrder = this.serviceOrder.filter((x) => x !== id);\n }\n\n has(id: string): boolean {\n return this.windows.has(id);\n }\n\n getActive(): ReplWindow | undefined {\n return this.activeId ? this.windows.get(this.activeId) : undefined;\n }\n\n getActiveId(): string | null {\n return this.activeId;\n }\n\n getChrome(): WindowChrome {\n const w = this.getActive();\n if (!w) {\n return { showsInput: true, footerShortcuts: \"\", title: \"\" };\n }\n return {\n showsInput: w.showsInput,\n footerShortcuts: w.footerShortcuts,\n title: w.title,\n };\n }\n\n /** \u662F\u5426\u5DF2\u6709\u5C55\u793A\u7F13\u5B58\uFF08\u6709\u5219\u5207\u56DE\u65F6\u52FF\u518D seed\uFF09 */\n hasBuffer(id: string): boolean {\n return this.buffers.has(id);\n }\n\n getBuffer(id: string): readonly string[] {\n return this.buffers.get(id) ?? [];\n }\n\n /** \u9996\u6B21\u8FDB\u5165\u65F6\u5199\u5165\u79CD\u5B50\u884C */\n setBuffer(id: string, lines: string[]): void {\n this.buffers.set(id, [...lines]);\n }\n\n invalidateBuffer(id: string): void {\n this.buffers.delete(id);\n }\n\n private appendToBuffer(id: string, wrappedLine: string): void {\n let buf = this.buffers.get(id);\n if (!buf) {\n buf = [];\n this.buffers.set(id, buf);\n }\n buf.push(wrappedLine);\n }\n\n /** \u6309\u6D3B\u8DC3\u670D\u52A1\u540C\u6B65
|
|
5
|
-
"mappings": "AAKA,SAAS,mBAAoC;
|
|
4
|
+
"sourcesContent": ["/**\n * repl-windows/host.ts \u2014 \u7A97\u53E3\u6CE8\u518C\u4E0E\u5207\u6362\uFF08\u4E0D\u5199\u4E1A\u52A1\uFF0C\u53EA\u8C03\u5EA6 ReplWindow\uFF09\n *\n * \u6BCF\u6247\u7A97\u7EF4\u62A4\u5DF2\u6E32\u67D3\u884C\u7F13\u5B58\uFF1A\u5207\u8D70\u6E05\u5C4F\uFF0C\u5207\u56DE\u76F4\u63A5\u6062\u590D\uFF1B\u540E\u53F0\u4ECD\u628A\u5339\u914D\u65E5\u5FD7\u5199\u5165\u5BF9\u5E94\u7F13\u5B58\u3002\n */\nimport { wrapLogLine, type UnifiedLog } from \"../logs.js\";\nimport type { ServiceName } from \"../services.js\";\nimport { SFMC_WINDOW_ID } from \"./sfmc-window.js\";\nimport type { ReplWindow, WindowChrome, WindowKeyEvent, WindowKeyResult } from \"./types.js\";\n\nexport type HostWriteLog = (wrappedLine: string) => void;\n\nexport class WindowHost {\n private readonly windows = new Map<string, ReplWindow>();\n /** \u7A97\u53E3 id \u2192 \u5DF2\u6E32\u67D3\uFF08\u5DF2 wrap\uFF09\u7684\u884C\uFF1B\u5207\u56DE\u65F6\u76F4\u63A5 dump\uFF0C\u65E0\u9700\u91CD\u62C9\u6E90 */\n private readonly buffers = new Map<string, string[]>();\n /** \u670D\u52A1\u7A97\u5FAA\u73AF\u987A\u5E8F\uFF08\u4EC5\u6D3B\u8DC3\u670D\u52A1\uFF09 */\n private serviceOrder: string[] = [];\n private activeId: string | null = null;\n private previousId: string | null = null;\n private readonly writeLog: HostWriteLog;\n private readonly onChromeChange: (() => void) | undefined;\n\n constructor(opts: { writeLog: HostWriteLog; onChromeChange?: () => void }) {\n this.writeLog = opts.writeLog;\n this.onChromeChange = opts.onChromeChange;\n }\n\n register(win: ReplWindow): void {\n this.windows.set(win.id, win);\n }\n\n unregister(id: string): void {\n if (this.activeId === id) {\n this.activeId = this.previousId;\n this.previousId = null;\n }\n if (this.previousId === id) this.previousId = null;\n this.windows.delete(id);\n this.buffers.delete(id);\n this.serviceOrder = this.serviceOrder.filter((x) => x !== id);\n }\n\n has(id: string): boolean {\n return this.windows.has(id);\n }\n\n getActive(): ReplWindow | undefined {\n return this.activeId ? this.windows.get(this.activeId) : undefined;\n }\n\n getActiveId(): string | null {\n return this.activeId;\n }\n\n getChrome(): WindowChrome {\n const w = this.getActive();\n if (!w) {\n return { showsInput: true, footerShortcuts: \"\", title: \"\" };\n }\n return {\n showsInput: w.showsInput,\n footerShortcuts: w.footerShortcuts,\n title: w.title,\n };\n }\n\n /** \u662F\u5426\u5DF2\u6709\u5C55\u793A\u7F13\u5B58\uFF08\u6709\u5219\u5207\u56DE\u65F6\u52FF\u518D seed\uFF09 */\n hasBuffer(id: string): boolean {\n return this.buffers.has(id);\n }\n\n getBuffer(id: string): readonly string[] {\n return this.buffers.get(id) ?? [];\n }\n\n /** \u9996\u6B21\u8FDB\u5165\u65F6\u5199\u5165\u79CD\u5B50\u884C */\n setBuffer(id: string, lines: string[]): void {\n this.buffers.set(id, [...lines]);\n }\n\n invalidateBuffer(id: string): void {\n this.buffers.delete(id);\n }\n\n private appendToBuffer(id: string, wrappedLine: string): void {\n let buf = this.buffers.get(id);\n if (!buf) {\n buf = [];\n this.buffers.set(id, buf);\n }\n buf.push(wrappedLine);\n }\n\n /** \u6309\u6D3B\u8DC3\u670D\u52A1\u4E0E\u5E73\u53F0\u7A97\u540C\u6B65\u8F6E\u8F6C id \u5217\u8868\uFF08id = svc:<name> \u6216 sfmc\uFF09 */\n setServiceOrder(ids: string[]): void {\n this.serviceOrder = [...ids];\n const stale = [...this.windows.keys()].filter(\n (id) => (id.startsWith(\"svc:\") || id === SFMC_WINDOW_ID) && !ids.includes(id)\n );\n for (const id of stale) {\n this.windows.delete(id);\n this.buffers.delete(id);\n if (this.activeId === id) this.activeId = null;\n if (this.previousId === id) this.previousId = null;\n }\n if (\n this.activeId &&\n (this.activeId.startsWith(\"svc:\") || this.activeId === SFMC_WINDOW_ID) &&\n !ids.includes(this.activeId)\n ) {\n this.activeId = null;\n }\n if (!this.activeId && ids.length > 0) {\n this.open(ids[0]!);\n }\n }\n\n open(id: string): boolean {\n const next = this.windows.get(id);\n if (!next) return false;\n if (this.activeId === id) {\n next.onActivate?.();\n this.onChromeChange?.();\n return true;\n }\n const prev = this.getActive();\n prev?.onDeactivate?.();\n if (this.activeId && this.activeId !== id) {\n this.previousId = this.activeId;\n }\n this.activeId = id;\n next.onActivate?.();\n this.onChromeChange?.();\n return true;\n }\n\n back(): boolean {\n const fallback =\n (this.previousId && this.windows.has(this.previousId) ? this.previousId : null) ??\n this.serviceOrder.find((id) => this.windows.has(id)) ??\n null;\n this.previousId = null;\n if (!fallback) {\n this.activeId = null;\n this.onChromeChange?.();\n return false;\n }\n return this.open(fallback);\n }\n\n /**\n * \u5728\u670D\u52A1\u7A97\u4E0E\u5E73\u53F0\u7A97\u4E4B\u95F4\u5FAA\u73AF\uFF1B\u8FD4\u56DE\u662F\u5426\u6210\u529F\u5207\u6362\u53CA\u65B0\u6FC0\u6D3B\u7A97\u7684 serviceName\uFF08\u4F9B\u540C\u6B65\u53D1\u9001\u76EE\u6807\uFF09\u3002\n * \u82E5\u5F53\u524D\u5728\u975E\u670D\u52A1\u7A97\uFF0C\u5148\u56DE\u5230\u670D\u52A1\u73AF\u3002\n */\n cycleServiceWindows(): { switched: boolean; serviceName: ServiceName | null } {\n if (this.serviceOrder.length === 0) return { switched: false, serviceName: null };\n const cur = this.activeId;\n const idx = cur ? this.serviceOrder.indexOf(cur) : -1;\n if (idx < 0) {\n this.open(this.serviceOrder[0]!);\n } else {\n const next = this.serviceOrder[(idx + 1) % this.serviceOrder.length]!;\n this.open(next);\n }\n return {\n switched: true,\n serviceName: this.getActive()?.serviceName ?? null,\n };\n }\n\n /**\n * \u65B0\u65E5\u5FD7\uFF1A\u5199\u5165\u6240\u6709\u5DF2 seed \u7F13\u5B58\u4E14 accept \u7684\u7A97\u53E3\uFF1B\u4EC5\u6D3B\u52A8\u7A97\u5237\u5230 TTY\u3002\n * \u6D3B\u52A8\u7A97\u5C1A\u672A seed\uFF1A\u53EA\u5237 TTY\uFF08\u968F\u540E showActiveWindow \u4F1A seed \u542B\u5386\u53F2\u7684\u7F13\u5B58\uFF09\u3002\n */\n routeLog(log: UnifiedLog): void {\n for (const [id, w] of this.windows) {\n if (!w.acceptLog(log)) continue;\n if (!this.buffers.has(id)) {\n if (id === this.activeId) {\n const { text, indent } = w.formatLogLine(log);\n this.writeLog(wrapLogLine(text, indent));\n }\n continue;\n }\n const { text, indent } = w.formatLogLine(log);\n const wrapped = wrapLogLine(text, indent);\n this.appendToBuffer(id, wrapped);\n if (id === this.activeId) this.writeLog(wrapped);\n }\n }\n\n /** \u8FD4\u56DE\u6D3B\u52A8\u7A97\u5BF9\u65E5\u5FD7\u7684\u5C55\u793A\u7ED3\u679C\uFF08\u542B acceptLog\uFF09 */\n formatActiveLog(log: UnifiedLog): { text: string; indent: number } | null {\n const w = this.getActive();\n if (!w || !w.acceptLog(log)) return null;\n return w.formatLogLine(log);\n }\n\n onKey(ev: WindowKeyEvent): WindowKeyResult {\n const w = this.getActive();\n if (!w?.onKey) return { action: \"none\" };\n const r = w.onKey(ev);\n if (r.action === \"back\") {\n this.back();\n return { action: \"redraw\" };\n }\n return r;\n }\n\n isLogsActive(): boolean {\n return this.activeId === \"logs\";\n }\n}\n\nexport function serviceWindowId(name: ServiceName): string {\n return `svc:${name}`;\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["text", "indent"]
|
|
7
7
|
}
|
|
@@ -5,5 +5,6 @@ export { formatLogDisplay, logDisplayPrefixWidth } from "./format-display.js";
|
|
|
5
5
|
export { WindowHost, serviceWindowId } from "./host.js";
|
|
6
6
|
export { createLogsFilterWindow, type LogsFilterState } from "./logs-filter-window.js";
|
|
7
7
|
export { createServiceWindow } from "./service-window.js";
|
|
8
|
+
export { createSfmcWindow, SFMC_WINDOW_ID } from "./sfmc-window.js";
|
|
8
9
|
export type { ReplWindow, WindowChrome, WindowKeyEvent, WindowKeyResult } from "./types.js";
|
|
9
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/repl-windows/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACvF,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/repl-windows/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AACvF,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACpE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -2,10 +2,13 @@ import { formatLogDisplay, logDisplayPrefixWidth } from "./format-display.js";
|
|
|
2
2
|
import { WindowHost, serviceWindowId } from "./host.js";
|
|
3
3
|
import { createLogsFilterWindow } from "./logs-filter-window.js";
|
|
4
4
|
import { createServiceWindow } from "./service-window.js";
|
|
5
|
+
import { createSfmcWindow, SFMC_WINDOW_ID } from "./sfmc-window.js";
|
|
5
6
|
export {
|
|
7
|
+
SFMC_WINDOW_ID,
|
|
6
8
|
WindowHost,
|
|
7
9
|
createLogsFilterWindow,
|
|
8
10
|
createServiceWindow,
|
|
11
|
+
createSfmcWindow,
|
|
9
12
|
formatLogDisplay,
|
|
10
13
|
logDisplayPrefixWidth,
|
|
11
14
|
serviceWindowId
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/repl-windows/index.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * repl-windows/index.ts \u2014 \u7C7B\u7A97\u53E3\u7CFB\u7EDF\u51FA\u53E3\n */\nexport { formatLogDisplay, logDisplayPrefixWidth } from \"./format-display.js\";\nexport { WindowHost, serviceWindowId } from \"./host.js\";\nexport { createLogsFilterWindow, type LogsFilterState } from \"./logs-filter-window.js\";\nexport { createServiceWindow } from \"./service-window.js\";\nexport type { ReplWindow, WindowChrome, WindowKeyEvent, WindowKeyResult } from \"./types.js\";\n"],
|
|
5
|
-
"mappings": "AAGA,SAAS,kBAAkB,6BAA6B;AACxD,SAAS,YAAY,uBAAuB;AAC5C,SAAS,8BAAoD;AAC7D,SAAS,2BAA2B;",
|
|
4
|
+
"sourcesContent": ["/**\n * repl-windows/index.ts \u2014 \u7C7B\u7A97\u53E3\u7CFB\u7EDF\u51FA\u53E3\n */\nexport { formatLogDisplay, logDisplayPrefixWidth } from \"./format-display.js\";\nexport { WindowHost, serviceWindowId } from \"./host.js\";\nexport { createLogsFilterWindow, type LogsFilterState } from \"./logs-filter-window.js\";\nexport { createServiceWindow } from \"./service-window.js\";\nexport { createSfmcWindow, SFMC_WINDOW_ID } from \"./sfmc-window.js\";\nexport type { ReplWindow, WindowChrome, WindowKeyEvent, WindowKeyResult } from \"./types.js\";\n"],
|
|
5
|
+
"mappings": "AAGA,SAAS,kBAAkB,6BAA6B;AACxD,SAAS,YAAY,uBAAuB;AAC5C,SAAS,8BAAoD;AAC7D,SAAS,2BAA2B;AACpC,SAAS,kBAAkB,sBAAsB;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service-window.d.ts","sourceRoot":"","sources":["../../src/repl-windows/service-window.ts"],"names":[],"mappings":"AAIA,OAAO,EAAoB,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAGpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"service-window.d.ts","sourceRoot":"","sources":["../../src/repl-windows/service-window.ts"],"names":[],"mappings":"AAIA,OAAO,EAAoB,KAAK,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAGpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAU7C,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,WAAW,GAAG,UAAU,CAqBjE"}
|
|
@@ -2,6 +2,7 @@ import { getQqBackendMode } from "../services.js";
|
|
|
2
2
|
import { formatLogDisplay, logDisplayPrefixWidth } from "./format-display.js";
|
|
3
3
|
import { serviceWindowId } from "./host.js";
|
|
4
4
|
function serviceWindowTitle(name) {
|
|
5
|
+
if (name === "tunnel") return "QQ\xB7T";
|
|
5
6
|
if (name === "qq") {
|
|
6
7
|
return getQqBackendMode() === "llbot" ? "QQ\xB7LLBOT" : "QQ\xB7OFFICIAL";
|
|
7
8
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/repl-windows/service-window.ts"],
|
|
4
|
-
"sourcesContent": ["/**\n * repl-windows/service-window.ts \u2014 \u6D3B\u8DC3\u670D\u52A1\u65E5\u5FD7\u7A97\uFF08\u7701\u7565\u6E90\u6807\u7B7E\uFF09\n */\nimport type { UnifiedLog } from \"../logs.js\";\nimport { getQqBackendMode, type ServiceName } from \"../services.js\";\nimport { formatLogDisplay, logDisplayPrefixWidth } from \"./format-display.js\";\nimport { serviceWindowId } from \"./host.js\";\nimport type { ReplWindow } from \"./types.js\";\n\nfunction serviceWindowTitle(name: ServiceName): string {\n if (name === \"qq\") {\n return getQqBackendMode() === \"llbot\" ? \"QQ\u00B7LLBOT\" : \"QQ\u00B7OFFICIAL\";\n }\n return name.toUpperCase();\n}\n\nexport function createServiceWindow(name: ServiceName): ReplWindow {\n const id = serviceWindowId(name);\n return {\n id,\n title: serviceWindowTitle(name),\n showsInput: true,\n footerShortcuts: \"\",\n serviceName: name,\n acceptLog(log: UnifiedLog): boolean {\n return log.source === name;\n },\n formatLogLine(log: UnifiedLog) {\n return {\n text: formatLogDisplay(log, { omitSource: true }),\n indent: logDisplayPrefixWidth(log, { omitSource: true }),\n };\n },\n getReplayFilter() {\n return { levels: [], sources: [name] };\n },\n };\n}\n"],
|
|
5
|
-
"mappings": "AAIA,SAAS,wBAA0C;AACnD,SAAS,kBAAkB,6BAA6B;AACxD,SAAS,uBAAuB;AAGhC,SAAS,mBAAmB,MAA2B;AACrD,MAAI,SAAS,MAAM;AACjB,WAAO,iBAAiB,MAAM,UAAU,gBAAa;AAAA,EACvD;AACA,SAAO,KAAK,YAAY;AAC1B;AAEO,SAAS,oBAAoB,MAA+B;AACjE,QAAM,KAAK,gBAAgB,IAAI;AAC/B,SAAO;AAAA,IACL;AAAA,IACA,OAAO,mBAAmB,IAAI;AAAA,IAC9B,YAAY;AAAA,IACZ,iBAAiB;AAAA,IACjB,aAAa;AAAA,IACb,UAAU,KAA0B;AAClC,aAAO,IAAI,WAAW;AAAA,IACxB;AAAA,IACA,cAAc,KAAiB;AAC7B,aAAO;AAAA,QACL,MAAM,iBAAiB,KAAK,EAAE,YAAY,KAAK,CAAC;AAAA,QAChD,QAAQ,sBAAsB,KAAK,EAAE,YAAY,KAAK,CAAC;AAAA,MACzD;AAAA,IACF;AAAA,IACA,kBAAkB;AAChB,aAAO,EAAE,QAAQ,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE;AAAA,IACvC;AAAA,EACF;AACF;",
|
|
4
|
+
"sourcesContent": ["/**\n * repl-windows/service-window.ts \u2014 \u6D3B\u8DC3\u670D\u52A1\u65E5\u5FD7\u7A97\uFF08\u7701\u7565\u6E90\u6807\u7B7E\uFF09\n */\nimport type { UnifiedLog } from \"../logs.js\";\nimport { getQqBackendMode, type ServiceName } from \"../services.js\";\nimport { formatLogDisplay, logDisplayPrefixWidth } from \"./format-display.js\";\nimport { serviceWindowId } from \"./host.js\";\nimport type { ReplWindow } from \"./types.js\";\n\nfunction serviceWindowTitle(name: ServiceName): string {\n if (name === \"tunnel\") return \"QQ\u00B7T\";\n if (name === \"qq\") {\n return getQqBackendMode() === \"llbot\" ? \"QQ\u00B7LLBOT\" : \"QQ\u00B7OFFICIAL\";\n }\n return name.toUpperCase();\n}\n\nexport function createServiceWindow(name: ServiceName): ReplWindow {\n const id = serviceWindowId(name);\n return {\n id,\n title: serviceWindowTitle(name),\n showsInput: true,\n footerShortcuts: \"\",\n serviceName: name,\n acceptLog(log: UnifiedLog): boolean {\n return log.source === name;\n },\n formatLogLine(log: UnifiedLog) {\n return {\n text: formatLogDisplay(log, { omitSource: true }),\n indent: logDisplayPrefixWidth(log, { omitSource: true }),\n };\n },\n getReplayFilter() {\n return { levels: [], sources: [name] };\n },\n };\n}\n"],
|
|
5
|
+
"mappings": "AAIA,SAAS,wBAA0C;AACnD,SAAS,kBAAkB,6BAA6B;AACxD,SAAS,uBAAuB;AAGhC,SAAS,mBAAmB,MAA2B;AACrD,MAAI,SAAS,SAAU,QAAO;AAC9B,MAAI,SAAS,MAAM;AACjB,WAAO,iBAAiB,MAAM,UAAU,gBAAa;AAAA,EACvD;AACA,SAAO,KAAK,YAAY;AAC1B;AAEO,SAAS,oBAAoB,MAA+B;AACjE,QAAM,KAAK,gBAAgB,IAAI;AAC/B,SAAO;AAAA,IACL;AAAA,IACA,OAAO,mBAAmB,IAAI;AAAA,IAC9B,YAAY;AAAA,IACZ,iBAAiB;AAAA,IACjB,aAAa;AAAA,IACb,UAAU,KAA0B;AAClC,aAAO,IAAI,WAAW;AAAA,IACxB;AAAA,IACA,cAAc,KAAiB;AAC7B,aAAO;AAAA,QACL,MAAM,iBAAiB,KAAK,EAAE,YAAY,KAAK,CAAC;AAAA,QAChD,QAAQ,sBAAsB,KAAK,EAAE,YAAY,KAAK,CAAC;AAAA,MACzD;AAAA,IACF;AAAA,IACA,kBAAkB;AAChB,aAAO,EAAE,QAAQ,CAAC,GAAG,SAAS,CAAC,IAAI,EAAE;AAAA,IACvC;AAAA,EACF;AACF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ServiceName } from "../services.js";
|
|
2
|
+
import type { ReplWindow } from "./types.js";
|
|
3
|
+
export declare const SFMC_WINDOW_ID = "sfmc";
|
|
4
|
+
export declare function createSfmcWindow(opts: {
|
|
5
|
+
getActiveTargets: () => ServiceName[];
|
|
6
|
+
}): ReplWindow;
|
|
7
|
+
//# sourceMappingURL=sfmc-window.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sfmc-window.d.ts","sourceRoot":"","sources":["../../src/repl-windows/sfmc-window.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,eAAO,MAAM,cAAc,SAAS,CAAC;AAErC,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IACrC,gBAAgB,EAAE,MAAM,WAAW,EAAE,CAAC;CACvC,GAAG,UAAU,CAoBb"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { formatLogDisplay, logDisplayPrefixWidth } from "./format-display.js";
|
|
2
|
+
const SFMC_WINDOW_ID = "sfmc";
|
|
3
|
+
function createSfmcWindow(opts) {
|
|
4
|
+
return {
|
|
5
|
+
id: SFMC_WINDOW_ID,
|
|
6
|
+
title: "SFMC",
|
|
7
|
+
showsInput: true,
|
|
8
|
+
footerShortcuts: "",
|
|
9
|
+
acceptLog(log) {
|
|
10
|
+
const active = opts.getActiveTargets();
|
|
11
|
+
return !active.includes(log.source);
|
|
12
|
+
},
|
|
13
|
+
formatLogLine(log) {
|
|
14
|
+
return {
|
|
15
|
+
text: formatLogDisplay(log, { omitSource: false }),
|
|
16
|
+
indent: logDisplayPrefixWidth(log, { omitSource: false })
|
|
17
|
+
};
|
|
18
|
+
},
|
|
19
|
+
getReplayFilter() {
|
|
20
|
+
return { levels: [], sources: [] };
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
export {
|
|
25
|
+
SFMC_WINDOW_ID,
|
|
26
|
+
createSfmcWindow
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=sfmc-window.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/repl-windows/sfmc-window.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * repl-windows/sfmc-window.ts \u2014 \u5E73\u53F0\u7CFB\u7EDF\u7A97\u53E3\uFF08\u5C55\u793A\u9664\u6D3B\u8DC3\u8FD0\u884C\u670D\u52A1\u5916\u6240\u6709\u6765\u6E90\u7684\u65E5\u5FD7\uFF09\n */\nimport type { UnifiedLog } from \"../logs.js\";\nimport type { ServiceName } from \"../services.js\";\nimport { formatLogDisplay, logDisplayPrefixWidth } from \"./format-display.js\";\nimport type { ReplWindow } from \"./types.js\";\n\nexport const SFMC_WINDOW_ID = \"sfmc\";\n\nexport function createSfmcWindow(opts: {\n getActiveTargets: () => ServiceName[];\n}): ReplWindow {\n return {\n id: SFMC_WINDOW_ID,\n title: \"SFMC\",\n showsInput: true,\n footerShortcuts: \"\",\n acceptLog(log: UnifiedLog): boolean {\n const active = opts.getActiveTargets();\n return !active.includes(log.source as ServiceName);\n },\n formatLogLine(log: UnifiedLog) {\n return {\n text: formatLogDisplay(log, { omitSource: false }),\n indent: logDisplayPrefixWidth(log, { omitSource: false }),\n };\n },\n getReplayFilter() {\n return { levels: [], sources: [] };\n },\n };\n}\n"],
|
|
5
|
+
"mappings": "AAKA,SAAS,kBAAkB,6BAA6B;AAGjD,MAAM,iBAAiB;AAEvB,SAAS,iBAAiB,MAElB;AACb,SAAO;AAAA,IACL,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,YAAY;AAAA,IACZ,iBAAiB;AAAA,IACjB,UAAU,KAA0B;AAClC,YAAM,SAAS,KAAK,iBAAiB;AACrC,aAAO,CAAC,OAAO,SAAS,IAAI,MAAqB;AAAA,IACnD;AAAA,IACA,cAAc,KAAiB;AAC7B,aAAO;AAAA,QACL,MAAM,iBAAiB,KAAK,EAAE,YAAY,MAAM,CAAC;AAAA,QACjD,QAAQ,sBAAsB,KAAK,EAAE,YAAY,MAAM,CAAC;AAAA,MAC1D;AAAA,IACF;AAAA,IACA,kBAAkB;AAChB,aAAO,EAAE,QAAQ,CAAC,GAAG,SAAS,CAAC,EAAE;AAAA,IACnC;AAAA,EACF;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
package/dist/repl.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"repl.d.ts","sourceRoot":"","sources":["../src/repl.ts"],"names":[],"mappings":"AAcA,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"repl.d.ts","sourceRoot":"","sources":["../src/repl.ts"],"names":[],"mappings":"AAcA,OAAO,EAIL,KAAK,WAAW,EACjB,MAAM,sBAAsB,CAAC;AAgN9B,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAiD1D;AAcD,wBAAgB,OAAO,CAAC,IAAI,GAAE,WAAoB,GAAG,MAAM,CAE1D;AAofD,mCAAmC;AACnC,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAG9D,CAAC;AAmBJ,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAiS/C"}
|
package/dist/repl.js
CHANGED
|
@@ -41,11 +41,13 @@ import { listRegistryModuleIdsSync } from "./registry.js";
|
|
|
41
41
|
import {
|
|
42
42
|
createLogsFilterWindow,
|
|
43
43
|
createServiceWindow,
|
|
44
|
+
createSfmcWindow,
|
|
44
45
|
serviceWindowId,
|
|
46
|
+
SFMC_WINDOW_ID,
|
|
45
47
|
WindowHost
|
|
46
48
|
} from "./repl-windows/index.js";
|
|
47
|
-
import {
|
|
48
|
-
import { forceStopAll, onServiceStateChange, SERVICE_NAMES, stopAll } from "./services.js";
|
|
49
|
+
import { SEND_TARGET_ORDER, paintSendPrompt, paintSfmcPrompt, plainPrompt } from "./send-target.js";
|
|
50
|
+
import { forceStopAll, onServiceStateChange, queryServicesRuntime, SERVICE_NAMES, stopAll } from "./services.js";
|
|
49
51
|
import { c, T } from "./theme.js";
|
|
50
52
|
import { dispatchPacksCommand, isPacksCommand } from "./world-packs.js";
|
|
51
53
|
const REPL_MODE = "repl";
|
|
@@ -394,6 +396,7 @@ async function readLine(opts) {
|
|
|
394
396
|
clearOverlay();
|
|
395
397
|
stdout.write(p + line);
|
|
396
398
|
if (suggestion) stdout.write(c.dim(suggestion));
|
|
399
|
+
else if (!line) stdout.write(c.dim(opts.getEmptyHint?.() ?? ""));
|
|
397
400
|
if (slashMode()) {
|
|
398
401
|
const view = paletteView();
|
|
399
402
|
const indent = promptSlashColumn(p);
|
|
@@ -691,6 +694,7 @@ async function startRepl() {
|
|
|
691
694
|
let logsFilterState = { levels: [], sources: [] };
|
|
692
695
|
let preferredTarget = null;
|
|
693
696
|
let activeTargets = [];
|
|
697
|
+
let activeServiceWindows = [];
|
|
694
698
|
let pendingInput = "";
|
|
695
699
|
const host = new WindowHost({
|
|
696
700
|
writeLog: writeLogLineToTty,
|
|
@@ -751,14 +755,22 @@ async function startRepl() {
|
|
|
751
755
|
onFilterChanged: () => showActiveWindow({ reseed: true })
|
|
752
756
|
})
|
|
753
757
|
);
|
|
754
|
-
function syncServiceWindows(
|
|
755
|
-
|
|
758
|
+
function syncServiceWindows(windows) {
|
|
759
|
+
if (windows.length === 0) {
|
|
760
|
+
host.setServiceOrder([]);
|
|
761
|
+
preferredTarget = null;
|
|
762
|
+
return;
|
|
763
|
+
}
|
|
764
|
+
for (const name of windows) {
|
|
756
765
|
const id = serviceWindowId(name);
|
|
757
766
|
if (!host.has(id)) host.register(createServiceWindow(name));
|
|
758
767
|
}
|
|
759
|
-
host.
|
|
768
|
+
if (!host.has(SFMC_WINDOW_ID)) {
|
|
769
|
+
host.register(createSfmcWindow({ getActiveTargets: () => activeServiceWindows }));
|
|
770
|
+
}
|
|
771
|
+
host.setServiceOrder([...windows.map(serviceWindowId), SFMC_WINDOW_ID]);
|
|
760
772
|
const svc = host.getActive()?.serviceName;
|
|
761
|
-
if (svc) preferredTarget = svc;
|
|
773
|
+
if (svc && activeTargets.includes(svc)) preferredTarget = svc;
|
|
762
774
|
}
|
|
763
775
|
function openLogsWindow() {
|
|
764
776
|
host.open("logs");
|
|
@@ -774,8 +786,10 @@ async function startRepl() {
|
|
|
774
786
|
});
|
|
775
787
|
async function refreshTargetsFromRuntime() {
|
|
776
788
|
const prevId = host.getActiveId();
|
|
777
|
-
|
|
778
|
-
|
|
789
|
+
const running = new Set((await queryServicesRuntime()).filter((row) => row.running).map((row) => row.name));
|
|
790
|
+
activeTargets = SEND_TARGET_ORDER.filter((name) => running.has(name));
|
|
791
|
+
activeServiceWindows = SERVICE_NAMES.filter((name) => running.has(name));
|
|
792
|
+
syncServiceWindows(activeServiceWindows);
|
|
779
793
|
if (preferredTarget && !activeTargets.includes(preferredTarget)) {
|
|
780
794
|
preferredTarget = activeTargets[0] ?? null;
|
|
781
795
|
}
|
|
@@ -801,6 +815,8 @@ async function startRepl() {
|
|
|
801
815
|
process.stdout.on("resize", onResize);
|
|
802
816
|
function currentTarget() {
|
|
803
817
|
if (activeTargets.length === 0) return null;
|
|
818
|
+
if (host.getActive()?.id === SFMC_WINDOW_ID) return null;
|
|
819
|
+
if (host.getActive()?.showsInput === false || host.getActive()?.serviceName === "tunnel") return null;
|
|
804
820
|
const fromWin = host.getActive()?.serviceName;
|
|
805
821
|
if (fromWin && activeTargets.includes(fromWin)) {
|
|
806
822
|
preferredTarget = fromWin;
|
|
@@ -811,6 +827,9 @@ async function startRepl() {
|
|
|
811
827
|
return preferredTarget;
|
|
812
828
|
}
|
|
813
829
|
function buildPrompt() {
|
|
830
|
+
if (host.getActive()?.id === SFMC_WINDOW_ID) {
|
|
831
|
+
return paintSfmcPrompt();
|
|
832
|
+
}
|
|
814
833
|
const tgt = currentTarget();
|
|
815
834
|
return tgt ? paintSendPrompt(tgt) : plainPrompt();
|
|
816
835
|
}
|
|
@@ -818,8 +837,9 @@ async function startRepl() {
|
|
|
818
837
|
await refreshTargetsFromRuntime();
|
|
819
838
|
const result = await readLine({
|
|
820
839
|
getPrompt: buildPrompt,
|
|
821
|
-
|
|
822
|
-
|
|
840
|
+
getEmptyHint: () => activeServiceWindows.length > 0 ? "\u6309\u4E0B TAB \u5207\u6362\u7A97\u53E3" : "",
|
|
841
|
+
/* 无服务或在 SFMC 平台窗时默认加 /(与窗口系统前行为一致);用 getter 以便进程退出后即时生效 */
|
|
842
|
+
autoSlash: () => activeTargets.length === 0 || host.getActive()?.id === SFMC_WINDOW_ID || host.getActive()?.showsInput === false || host.getActive()?.serviceName === "tunnel",
|
|
823
843
|
getChrome: () => host.getChrome(),
|
|
824
844
|
onWindowKey: (ev) => {
|
|
825
845
|
const r = host.onKey(ev);
|
|
@@ -827,9 +847,9 @@ async function startRepl() {
|
|
|
827
847
|
return r;
|
|
828
848
|
},
|
|
829
849
|
cycleSendTarget: () => {
|
|
830
|
-
const
|
|
831
|
-
if (!
|
|
832
|
-
preferredTarget =
|
|
850
|
+
const res = host.cycleServiceWindows();
|
|
851
|
+
if (!res.switched) return false;
|
|
852
|
+
if (res.serviceName && activeTargets.includes(res.serviceName)) preferredTarget = res.serviceName;
|
|
833
853
|
showActiveWindow();
|
|
834
854
|
return true;
|
|
835
855
|
},
|
|
@@ -942,6 +962,11 @@ async function execCmd(parts) {
|
|
|
942
962
|
case "debug":
|
|
943
963
|
stdout.write(await cmdDebug(args) + "\n");
|
|
944
964
|
break;
|
|
965
|
+
case "ui": {
|
|
966
|
+
const { cmdUi } = await import("./ui-command.js");
|
|
967
|
+
stdout.write(await cmdUi(args, { block: false }) + "\n");
|
|
968
|
+
break;
|
|
969
|
+
}
|
|
945
970
|
case "init": {
|
|
946
971
|
const wasRaw = stdin.isRaw ?? false;
|
|
947
972
|
setRaw(false);
|