@sfmc-bds/cli 0.2.0-beta.8 → 0.2.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/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.js +3 -3
- 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 +184 -68
- 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/help-text.d.ts.map +1 -1
- package/dist/help-text.js +1 -5
- package/dist/help-text.js.map +2 -2
- package/dist/i18n/locales/en.d.ts +49 -14
- package/dist/i18n/locales/en.d.ts.map +1 -1
- package/dist/i18n/locales/en.js +49 -15
- 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 +50 -16
- package/dist/i18n/locales/zh-CN.js.map +2 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.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 +20 -0
- package/dist/llbot-launch.d.ts.map +1 -0
- package/dist/llbot-launch.js +40 -0
- package/dist/llbot-launch.js.map +7 -0
- 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 +9 -6
- package/dist/main.js.map +2 -2
- package/dist/module-commands.d.ts.map +1 -1
- package/dist/module-commands.js +22 -8
- 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/node-service-probe.d.ts +18 -0
- package/dist/node-service-probe.d.ts.map +1 -0
- package/dist/node-service-probe.js +97 -0
- package/dist/node-service-probe.js.map +7 -0
- package/dist/pack-lifecycle.d.ts +15 -1
- package/dist/pack-lifecycle.d.ts.map +1 -1
- package/dist/pack-lifecycle.js +249 -16
- 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 +1 -1
- package/dist/repl-windows/service-window.d.ts.map +1 -1
- package/dist/repl-windows/service-window.js +9 -1
- 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 +37 -22
- 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 +12 -2
- package/dist/send-target.js.map +2 -2
- package/dist/services.d.ts +58 -5
- package/dist/services.d.ts.map +1 -1
- package/dist/services.js +273 -50
- 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 +95 -32
- 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 +21 -15
- package/scripts/module-install/check-modules.mjs +178 -0
- package/scripts/module-install/fetch-module.mjs +1083 -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
- package/dist/cmd-remote.d.ts +0 -13
- package/dist/cmd-remote.d.ts.map +0 -1
- package/dist/cmd-remote.js +0 -38
- package/dist/cmd-remote.js.map +0 -7
- package/dist/remote-agent.d.ts +0 -18
- package/dist/remote-agent.d.ts.map +0 -1
- package/dist/remote-agent.js +0 -198
- package/dist/remote-agent.js.map +0 -7
|
@@ -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": "AAKA,SAAS,mBAAoC;AAE7C,SAAS,sBAAsB;AAKxB,MAAM,WAAW;AAAA,EACL,UAAU,oBAAI,IAAwB;AAAA;AAAA,EAEtC,UAAU,oBAAI,IAAsB;AAAA;AAAA,EAE7C,eAAyB,CAAC;AAAA,EAC1B,WAA0B;AAAA,EAC1B,aAA4B;AAAA,EACnB;AAAA,EACA;AAAA,EAEjB,YAAY,MAA+D;AACzE,SAAK,WAAW,KAAK;AACrB,SAAK,iBAAiB,KAAK;AAAA,EAC7B;AAAA,EAEA,SAAS,KAAuB;AAC9B,SAAK,QAAQ,IAAI,IAAI,IAAI,GAAG;AAAA,EAC9B;AAAA,EAEA,WAAW,IAAkB;AAC3B,QAAI,KAAK,aAAa,IAAI;AACxB,WAAK,WAAW,KAAK;AACrB,WAAK,aAAa;AAAA,IACpB;AACA,QAAI,KAAK,eAAe,GAAI,MAAK,aAAa;AAC9C,SAAK,QAAQ,OAAO,EAAE;AACtB,SAAK,QAAQ,OAAO,EAAE;AACtB,SAAK,eAAe,KAAK,aAAa,OAAO,CAAC,MAAM,MAAM,EAAE;AAAA,EAC9D;AAAA,EAEA,IAAI,IAAqB;AACvB,WAAO,KAAK,QAAQ,IAAI,EAAE;AAAA,EAC5B;AAAA,EAEA,YAAoC;AAClC,WAAO,KAAK,WAAW,KAAK,QAAQ,IAAI,KAAK,QAAQ,IAAI;AAAA,EAC3D;AAAA,EAEA,cAA6B;AAC3B,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,YAA0B;AACxB,UAAM,IAAI,KAAK,UAAU;AACzB,QAAI,CAAC,GAAG;AACN,aAAO,EAAE,YAAY,MAAM,iBAAiB,IAAI,OAAO,GAAG;AAAA,IAC5D;AACA,WAAO;AAAA,MACL,YAAY,EAAE;AAAA,MACd,iBAAiB,EAAE;AAAA,MACnB,OAAO,EAAE;AAAA,IACX;AAAA,EACF;AAAA;AAAA,EAGA,UAAU,IAAqB;AAC7B,WAAO,KAAK,QAAQ,IAAI,EAAE;AAAA,EAC5B;AAAA,EAEA,UAAU,IAA+B;AACvC,WAAO,KAAK,QAAQ,IAAI,EAAE,KAAK,CAAC;AAAA,EAClC;AAAA;AAAA,EAGA,UAAU,IAAY,OAAuB;AAC3C,SAAK,QAAQ,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC;AAAA,EACjC;AAAA,EAEA,iBAAiB,IAAkB;AACjC,SAAK,QAAQ,OAAO,EAAE;AAAA,EACxB;AAAA,EAEQ,eAAe,IAAY,aAA2B;AAC5D,QAAI,MAAM,KAAK,QAAQ,IAAI,EAAE;AAC7B,QAAI,CAAC,KAAK;AACR,YAAM,CAAC;AACP,WAAK,QAAQ,IAAI,IAAI,GAAG;AAAA,IAC1B;AACA,QAAI,KAAK,WAAW;AAAA,EACtB;AAAA;AAAA,EAGA,gBAAgB,KAAqB;AACnC,SAAK,eAAe,CAAC,GAAG,GAAG;AAC3B,UAAM,QAAQ,CAAC,GAAG,KAAK,QAAQ,KAAK,CAAC,EAAE;AAAA,MACrC,CAAC,QAAQ,GAAG,WAAW,MAAM,KAAK,OAAO,mBAAmB,CAAC,IAAI,SAAS,EAAE;AAAA,IAC9E;AACA,eAAW,MAAM,OAAO;AACtB,WAAK,QAAQ,OAAO,EAAE;AACtB,WAAK,QAAQ,OAAO,EAAE;AACtB,UAAI,KAAK,aAAa,GAAI,MAAK,WAAW;AAC1C,UAAI,KAAK,eAAe,GAAI,MAAK,aAAa;AAAA,IAChD;AACA,QACE,KAAK,aACJ,KAAK,SAAS,WAAW,MAAM,KAAK,KAAK,aAAa,mBACvD,CAAC,IAAI,SAAS,KAAK,QAAQ,GAC3B;AACA,WAAK,WAAW;AAAA,IAClB;AACA,QAAI,CAAC,KAAK,YAAY,IAAI,SAAS,GAAG;AACpC,WAAK,KAAK,IAAI,CAAC,CAAE;AAAA,IACnB;AAAA,EACF;AAAA,EAEA,KAAK,IAAqB;AACxB,UAAM,OAAO,KAAK,QAAQ,IAAI,EAAE;AAChC,QAAI,CAAC,KAAM,QAAO;AAClB,QAAI,KAAK,aAAa,IAAI;AACxB,WAAK,aAAa;AAClB,WAAK,iBAAiB;AACtB,aAAO;AAAA,IACT;AACA,UAAM,OAAO,KAAK,UAAU;AAC5B,UAAM,eAAe;AACrB,QAAI,KAAK,YAAY,KAAK,aAAa,IAAI;AACzC,WAAK,aAAa,KAAK;AAAA,IACzB;AACA,SAAK,WAAW;AAChB,SAAK,aAAa;AAClB,SAAK,iBAAiB;AACtB,WAAO;AAAA,EACT;AAAA,EAEA,OAAgB;AACd,UAAM,YACH,KAAK,cAAc,KAAK,QAAQ,IAAI,KAAK,UAAU,IAAI,KAAK,aAAa,SAC1E,KAAK,aAAa,KAAK,CAAC,OAAO,KAAK,QAAQ,IAAI,EAAE,CAAC,KACnD;AACF,SAAK,aAAa;AAClB,QAAI,CAAC,UAAU;AACb,WAAK,WAAW;AAChB,WAAK,iBAAiB;AACtB,aAAO;AAAA,IACT;AACA,WAAO,KAAK,KAAK,QAAQ;AAAA,EAC3B;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,sBAA8E;AAC5E,QAAI,KAAK,aAAa,WAAW,EAAG,QAAO,EAAE,UAAU,OAAO,aAAa,KAAK;AAChF,UAAM,MAAM,KAAK;AACjB,UAAM,MAAM,MAAM,KAAK,aAAa,QAAQ,GAAG,IAAI;AACnD,QAAI,MAAM,GAAG;AACX,WAAK,KAAK,KAAK,aAAa,CAAC,CAAE;AAAA,IACjC,OAAO;AACL,YAAM,OAAO,KAAK,cAAc,MAAM,KAAK,KAAK,aAAa,MAAM;AACnE,WAAK,KAAK,IAAI;AAAA,IAChB;AACA,WAAO;AAAA,MACL,UAAU;AAAA,MACV,aAAa,KAAK,UAAU,GAAG,eAAe;AAAA,IAChD;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,SAAS,KAAuB;AAC9B,eAAW,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS;AAClC,UAAI,CAAC,EAAE,UAAU,GAAG,EAAG;AACvB,UAAI,CAAC,KAAK,QAAQ,IAAI,EAAE,GAAG;AACzB,YAAI,OAAO,KAAK,UAAU;AACxB,gBAAM,EAAE,MAAAA,OAAM,QAAAC,QAAO,IAAI,EAAE,cAAc,GAAG;AAC5C,eAAK,SAAS,YAAYD,OAAMC,OAAM,CAAC;AAAA,QACzC;AACA;AAAA,MACF;AACA,YAAM,EAAE,MAAM,OAAO,IAAI,EAAE,cAAc,GAAG;AAC5C,YAAM,UAAU,YAAY,MAAM,MAAM;AACxC,WAAK,eAAe,IAAI,OAAO;AAC/B,UAAI,OAAO,KAAK,SAAU,MAAK,SAAS,OAAO;AAAA,IACjD;AAAA,EACF;AAAA;AAAA,EAGA,gBAAgB,KAA0D;AACxE,UAAM,IAAI,KAAK,UAAU;AACzB,QAAI,CAAC,KAAK,CAAC,EAAE,UAAU,GAAG,EAAG,QAAO;AACpC,WAAO,EAAE,cAAc,GAAG;AAAA,EAC5B;AAAA,EAEA,MAAM,IAAqC;AACzC,UAAM,IAAI,KAAK,UAAU;AACzB,QAAI,CAAC,GAAG,MAAO,QAAO,EAAE,QAAQ,OAAO;AACvC,UAAM,IAAI,EAAE,MAAM,EAAE;AACpB,QAAI,EAAE,WAAW,QAAQ;AACvB,WAAK,KAAK;AACV,aAAO,EAAE,QAAQ,SAAS;AAAA,IAC5B;AACA,WAAO;AAAA,EACT;AAAA,EAEA,eAAwB;AACtB,WAAO,KAAK,aAAa;AAAA,EAC3B;AACF;AAEO,SAAS,gBAAgB,MAA2B;AACzD,SAAO,OAAO,IAAI;AACpB;",
|
|
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,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type ServiceName } from "../services.js";
|
|
2
2
|
import type { ReplWindow } from "./types.js";
|
|
3
3
|
export declare function createServiceWindow(name: ServiceName): ReplWindow;
|
|
4
4
|
//# sourceMappingURL=service-window.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service-window.d.ts","sourceRoot":"","sources":["../../src/repl-windows/service-window.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,
|
|
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"}
|
|
@@ -1,10 +1,18 @@
|
|
|
1
|
+
import { getQqBackendMode } from "../services.js";
|
|
1
2
|
import { formatLogDisplay, logDisplayPrefixWidth } from "./format-display.js";
|
|
2
3
|
import { serviceWindowId } from "./host.js";
|
|
4
|
+
function serviceWindowTitle(name) {
|
|
5
|
+
if (name === "tunnel") return "QQ\xB7T";
|
|
6
|
+
if (name === "qq") {
|
|
7
|
+
return getQqBackendMode() === "llbot" ? "QQ\xB7LLBOT" : "QQ\xB7OFFICIAL";
|
|
8
|
+
}
|
|
9
|
+
return name.toUpperCase();
|
|
10
|
+
}
|
|
3
11
|
function createServiceWindow(name) {
|
|
4
12
|
const id = serviceWindowId(name);
|
|
5
13
|
return {
|
|
6
14
|
id,
|
|
7
|
-
title: name
|
|
15
|
+
title: serviceWindowTitle(name),
|
|
8
16
|
showsInput: true,
|
|
9
17
|
footerShortcuts: "",
|
|
10
18
|
serviceName: name,
|
|
@@ -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 type
|
|
5
|
-
"mappings": "
|
|
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;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,
|
|
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
|
@@ -18,7 +18,6 @@ import {
|
|
|
18
18
|
resolveModuleTopShorthand
|
|
19
19
|
} from "./command-surface.js";
|
|
20
20
|
import { cmdRestart, cmdSend, cmdStart, cmdStartAll, cmdStatus, cmdStop, cmdStopAll, cmdUpdate } from "./commands.js";
|
|
21
|
-
import { cmdRemote } from "./cmd-remote.js";
|
|
22
21
|
import { cmdDebug } from "./debug-command.js";
|
|
23
22
|
import { getHelp as buildHelp } from "./help-text.js";
|
|
24
23
|
import { t } from "./i18n/index.js";
|
|
@@ -39,15 +38,16 @@ import {
|
|
|
39
38
|
listInstalledModuleIdsSync
|
|
40
39
|
} from "./module-commands.js";
|
|
41
40
|
import { listRegistryModuleIdsSync } from "./registry.js";
|
|
42
|
-
import { stopRemoteAgent } from "./remote-agent.js";
|
|
43
41
|
import {
|
|
44
42
|
createLogsFilterWindow,
|
|
45
43
|
createServiceWindow,
|
|
44
|
+
createSfmcWindow,
|
|
46
45
|
serviceWindowId,
|
|
46
|
+
SFMC_WINDOW_ID,
|
|
47
47
|
WindowHost
|
|
48
48
|
} from "./repl-windows/index.js";
|
|
49
|
-
import {
|
|
50
|
-
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";
|
|
51
51
|
import { c, T } from "./theme.js";
|
|
52
52
|
import { dispatchPacksCommand, isPacksCommand } from "./world-packs.js";
|
|
53
53
|
const REPL_MODE = "repl";
|
|
@@ -278,9 +278,6 @@ function getCompletions(parsed) {
|
|
|
278
278
|
return [];
|
|
279
279
|
case "update":
|
|
280
280
|
return ["--check-only", "--force", "--channel=release", "--channel=preview"].filter(sw);
|
|
281
|
-
case "remote":
|
|
282
|
-
if (argIndex === 0) return ["status", "enroll", "disable"].filter(sw);
|
|
283
|
-
return [];
|
|
284
281
|
case "packs":
|
|
285
282
|
case "addon":
|
|
286
283
|
if (argIndex === 0) return [...listVisiblePacksSubs(REPL_MODE)].filter(sw);
|
|
@@ -399,6 +396,7 @@ async function readLine(opts) {
|
|
|
399
396
|
clearOverlay();
|
|
400
397
|
stdout.write(p + line);
|
|
401
398
|
if (suggestion) stdout.write(c.dim(suggestion));
|
|
399
|
+
else if (!line) stdout.write(c.dim(opts.getEmptyHint?.() ?? ""));
|
|
402
400
|
if (slashMode()) {
|
|
403
401
|
const view = paletteView();
|
|
404
402
|
const indent = promptSlashColumn(p);
|
|
@@ -653,7 +651,6 @@ async function startRepl() {
|
|
|
653
651
|
const onSigint = () => {
|
|
654
652
|
stdout.write(c.yellow("\n" + t("repl.forceStop") + "\n"));
|
|
655
653
|
forceStopAll();
|
|
656
|
-
stopRemoteAgent();
|
|
657
654
|
process.exit(130);
|
|
658
655
|
};
|
|
659
656
|
const shutdown = async () => {
|
|
@@ -663,7 +660,6 @@ async function startRepl() {
|
|
|
663
660
|
openLogsWindowHook = null;
|
|
664
661
|
stdout.write(c.dim(t("repl.stopping") + "\n"));
|
|
665
662
|
await stopAll();
|
|
666
|
-
stopRemoteAgent();
|
|
667
663
|
try {
|
|
668
664
|
setRaw(false);
|
|
669
665
|
stdin.pause();
|
|
@@ -698,6 +694,7 @@ async function startRepl() {
|
|
|
698
694
|
let logsFilterState = { levels: [], sources: [] };
|
|
699
695
|
let preferredTarget = null;
|
|
700
696
|
let activeTargets = [];
|
|
697
|
+
let activeServiceWindows = [];
|
|
701
698
|
let pendingInput = "";
|
|
702
699
|
const host = new WindowHost({
|
|
703
700
|
writeLog: writeLogLineToTty,
|
|
@@ -758,14 +755,22 @@ async function startRepl() {
|
|
|
758
755
|
onFilterChanged: () => showActiveWindow({ reseed: true })
|
|
759
756
|
})
|
|
760
757
|
);
|
|
761
|
-
function syncServiceWindows(
|
|
762
|
-
|
|
758
|
+
function syncServiceWindows(windows) {
|
|
759
|
+
if (windows.length === 0) {
|
|
760
|
+
host.setServiceOrder([]);
|
|
761
|
+
preferredTarget = null;
|
|
762
|
+
return;
|
|
763
|
+
}
|
|
764
|
+
for (const name of windows) {
|
|
763
765
|
const id = serviceWindowId(name);
|
|
764
766
|
if (!host.has(id)) host.register(createServiceWindow(name));
|
|
765
767
|
}
|
|
766
|
-
host.
|
|
768
|
+
if (!host.has(SFMC_WINDOW_ID)) {
|
|
769
|
+
host.register(createSfmcWindow({ getActiveTargets: () => activeServiceWindows }));
|
|
770
|
+
}
|
|
771
|
+
host.setServiceOrder([...windows.map(serviceWindowId), SFMC_WINDOW_ID]);
|
|
767
772
|
const svc = host.getActive()?.serviceName;
|
|
768
|
-
if (svc) preferredTarget = svc;
|
|
773
|
+
if (svc && activeTargets.includes(svc)) preferredTarget = svc;
|
|
769
774
|
}
|
|
770
775
|
function openLogsWindow() {
|
|
771
776
|
host.open("logs");
|
|
@@ -781,8 +786,10 @@ async function startRepl() {
|
|
|
781
786
|
});
|
|
782
787
|
async function refreshTargetsFromRuntime() {
|
|
783
788
|
const prevId = host.getActiveId();
|
|
784
|
-
|
|
785
|
-
|
|
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);
|
|
786
793
|
if (preferredTarget && !activeTargets.includes(preferredTarget)) {
|
|
787
794
|
preferredTarget = activeTargets[0] ?? null;
|
|
788
795
|
}
|
|
@@ -808,6 +815,8 @@ async function startRepl() {
|
|
|
808
815
|
process.stdout.on("resize", onResize);
|
|
809
816
|
function currentTarget() {
|
|
810
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;
|
|
811
820
|
const fromWin = host.getActive()?.serviceName;
|
|
812
821
|
if (fromWin && activeTargets.includes(fromWin)) {
|
|
813
822
|
preferredTarget = fromWin;
|
|
@@ -818,6 +827,9 @@ async function startRepl() {
|
|
|
818
827
|
return preferredTarget;
|
|
819
828
|
}
|
|
820
829
|
function buildPrompt() {
|
|
830
|
+
if (host.getActive()?.id === SFMC_WINDOW_ID) {
|
|
831
|
+
return paintSfmcPrompt();
|
|
832
|
+
}
|
|
821
833
|
const tgt = currentTarget();
|
|
822
834
|
return tgt ? paintSendPrompt(tgt) : plainPrompt();
|
|
823
835
|
}
|
|
@@ -825,8 +837,9 @@ async function startRepl() {
|
|
|
825
837
|
await refreshTargetsFromRuntime();
|
|
826
838
|
const result = await readLine({
|
|
827
839
|
getPrompt: buildPrompt,
|
|
828
|
-
|
|
829
|
-
|
|
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",
|
|
830
843
|
getChrome: () => host.getChrome(),
|
|
831
844
|
onWindowKey: (ev) => {
|
|
832
845
|
const r = host.onKey(ev);
|
|
@@ -834,9 +847,9 @@ async function startRepl() {
|
|
|
834
847
|
return r;
|
|
835
848
|
},
|
|
836
849
|
cycleSendTarget: () => {
|
|
837
|
-
const
|
|
838
|
-
if (!
|
|
839
|
-
preferredTarget =
|
|
850
|
+
const res = host.cycleServiceWindows();
|
|
851
|
+
if (!res.switched) return false;
|
|
852
|
+
if (res.serviceName && activeTargets.includes(res.serviceName)) preferredTarget = res.serviceName;
|
|
840
853
|
showActiveWindow();
|
|
841
854
|
return true;
|
|
842
855
|
},
|
|
@@ -949,9 +962,11 @@ async function execCmd(parts) {
|
|
|
949
962
|
case "debug":
|
|
950
963
|
stdout.write(await cmdDebug(args) + "\n");
|
|
951
964
|
break;
|
|
952
|
-
case "
|
|
953
|
-
|
|
965
|
+
case "ui": {
|
|
966
|
+
const { cmdUi } = await import("./ui-command.js");
|
|
967
|
+
stdout.write(await cmdUi(args, { block: false }) + "\n");
|
|
954
968
|
break;
|
|
969
|
+
}
|
|
955
970
|
case "init": {
|
|
956
971
|
const wasRaw = stdin.isRaw ?? false;
|
|
957
972
|
setRaw(false);
|