sourcemonkey 0.0.0-stage → 0.5.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 +21 -0
- package/README.md +87 -2
- package/dist/bytes.js +37 -0
- package/dist/channel-placeholder.js +5 -0
- package/dist/collection-scan.js +17 -0
- package/dist/collections.html +353 -0
- package/dist/compare.html +358 -0
- package/dist/composed-source.js +205 -0
- package/dist/connect-prompt.html +47 -0
- package/dist/debug/icons.html +211 -0
- package/dist/debug/storage.html +163 -0
- package/dist/debug-log.js +75 -0
- package/dist/diagnostic-location.js +64 -0
- package/dist/eval-hook.js +308 -0
- package/dist/extension/background.js +5263 -0
- package/dist/extension/channel.js +133 -0
- package/dist/extension/code-links.js +187 -0
- package/dist/extension/code-tabs.js +460 -0
- package/dist/extension/collection-dialog.js +619 -0
- package/dist/extension/collection-display.js +322 -0
- package/dist/extension/collections.js +2905 -0
- package/dist/extension/compare.js +867 -0
- package/dist/extension/concurrency.js +186 -0
- package/dist/extension/connect-grants.js +109 -0
- package/dist/extension/connect-prompt-page.js +70 -0
- package/dist/extension/connect-prompt.js +266 -0
- package/dist/extension/copy-button.js +63 -0
- package/dist/extension/copy-dialog.js +502 -0
- package/dist/extension/copy-preference.js +66 -0
- package/dist/extension/debug/icons.js +203 -0
- package/dist/extension/debug/storage.js +365 -0
- package/dist/extension/deep-link.js +77 -0
- package/dist/extension/delete-dialog.js +432 -0
- package/dist/extension/delete-icon.js +40 -0
- package/dist/extension/details-tooltips.js +66 -0
- package/dist/extension/directories.js +679 -0
- package/dist/extension/export-backup.js +407 -0
- package/dist/extension/export-dialog.js +142 -0
- package/dist/extension/file-access.js +74 -0
- package/dist/extension/file-changes.js +346 -0
- package/dist/extension/frame-info.js +85 -0
- package/dist/extension/github-provider.js +336 -0
- package/dist/extension/glyph.js +84 -0
- package/dist/extension/gm-bindings.js +601 -0
- package/dist/extension/gm-download.js +419 -0
- package/dist/extension/gm-menu.js +228 -0
- package/dist/extension/gm-notification.js +141 -0
- package/dist/extension/gm-originator-map.js +23 -0
- package/dist/extension/gm-tab-data.js +121 -0
- package/dist/extension/gm-tab.js +160 -0
- package/dist/extension/gm-url-change.js +111 -0
- package/dist/extension/gm-url-scheme.js +27 -0
- package/dist/extension/gm-values.js +176 -0
- package/dist/extension/gm-window-control.js +104 -0
- package/dist/extension/gm-xhr-headers.js +333 -0
- package/dist/extension/gm-xhr.js +584 -0
- package/dist/extension/injector.js +3145 -0
- package/dist/extension/install-capture.js +277 -0
- package/dist/extension/line-diff.js +233 -0
- package/dist/extension/local-copy.js +560 -0
- package/dist/extension/local-delete.js +276 -0
- package/dist/extension/location-kinds.js +108 -0
- package/dist/extension/log-format.js +158 -0
- package/dist/extension/managed-changes.js +361 -0
- package/dist/extension/managed-items.js +57 -0
- package/dist/extension/match-index.js +375 -0
- package/dist/extension/missing-scripts.js +66 -0
- package/dist/extension/more-menu.js +109 -0
- package/dist/extension/move-dialog.js +197 -0
- package/dist/extension/offscreen.js +37 -0
- package/dist/extension/options.js +504 -0
- package/dist/extension/page-heading.js +170 -0
- package/dist/extension/page-links.js +199 -0
- package/dist/extension/parse-check-client.js +70 -0
- package/dist/extension/parse-check.js +161 -0
- package/dist/extension/parse-sandbox-host.js +172 -0
- package/dist/extension/parse-sandbox.js +175 -0
- package/dist/extension/popup-commands-open.js +41 -0
- package/dist/extension/popup-view.js +387 -0
- package/dist/extension/popup.js +703 -0
- package/dist/extension/prism-userscript.js +53 -0
- package/dist/extension/refresh-error.js +136 -0
- package/dist/extension/refresh-targets.js +160 -0
- package/dist/extension/related-versions.js +1144 -0
- package/dist/extension/resize-observer-loop.js +19 -0
- package/dist/extension/row-cache.js +387 -0
- package/dist/extension/script-blobs.js +413 -0
- package/dist/extension/script-details.js +658 -0
- package/dist/extension/script-enablement.js +285 -0
- package/dist/extension/script-identity.js +310 -0
- package/dist/extension/script-keys.js +54 -0
- package/dist/extension/script-log-id.js +155 -0
- package/dist/extension/script-log.js +290 -0
- package/dist/extension/script-rejection.js +104 -0
- package/dist/extension/script-sites.js +158 -0
- package/dist/extension/script-store.js +3507 -0
- package/dist/extension/script-updater.js +991 -0
- package/dist/extension/script-url-hash.js +61 -0
- package/dist/extension/select-all.js +37 -0
- package/dist/extension/select-open-guard.js +90 -0
- package/dist/extension/site-icon.js +1261 -0
- package/dist/extension/sm-dev-link.js +302 -0
- package/dist/extension/solo-click.js +58 -0
- package/dist/extension/sticky-numbers.js +188 -0
- package/dist/extension/storage-breakdown.js +253 -0
- package/dist/extension/storage-scan.js +86 -0
- package/dist/extension/storage-usage.js +194 -0
- package/dist/extension/structural-keys.js +29 -0
- package/dist/extension/sw-teardown.js +36 -0
- package/dist/extension/tab-status.js +403 -0
- package/dist/extension/toolbar-summary.js +105 -0
- package/dist/extension/user-scripts-access.js +43 -0
- package/dist/extension/userscript.js +3672 -0
- package/dist/extension/value-store.js +204 -0
- package/dist/extension/version-probe-fetch.js +68 -0
- package/dist/extension/worker-client.js +109 -0
- package/dist/extension/worker-ops.js +171 -0
- package/dist/extension/zip-writer.js +24 -0
- package/dist/external-files.js +878 -0
- package/dist/file-loader.js +436 -0
- package/dist/file-locations.js +439 -0
- package/dist/generated-wrappers.js +5 -0
- package/dist/github-auth.js +148 -0
- package/dist/github-urls.js +46 -0
- package/dist/gm-api-catalog.js +217 -0
- package/dist/gm-connect.js +273 -0
- package/dist/gm-xhr-types.js +5 -0
- package/dist/http-read.js +142 -0
- package/dist/icons/icon-128.png +0 -0
- package/dist/icons/icon-16.png +0 -0
- package/dist/icons/icon-48.png +0 -0
- package/dist/local-file-overrides.js +558 -0
- package/dist/manifest.json +38 -0
- package/dist/markup-response.js +126 -0
- package/dist/match-targets.js +305 -0
- package/dist/menu-captions.js +22 -0
- package/dist/offscreen.html +39 -0
- package/dist/options.html +197 -0
- package/dist/parse-check-protocol.js +51 -0
- package/dist/parse-location.js +171 -0
- package/dist/parse-sandbox.html +56 -0
- package/dist/phase-timing.js +155 -0
- package/dist/popup.html +197 -0
- package/dist/public-suffixes.js +6957 -0
- package/dist/run-context.js +31 -0
- package/dist/runtime-messages.js +34 -0
- package/dist/sandboxed-page.js +35 -0
- package/dist/script-build.js +787 -0
- package/dist/script-display.js +383 -0
- package/dist/script-icon.js +43 -0
- package/dist/script-links.js +204 -0
- package/dist/script-source-url.js +214 -0
- package/dist/script-world.js +65 -0
- package/dist/sm-dev-protocol.js +84 -0
- package/dist/source-map.js +177 -0
- package/dist/stack-link.js +138 -0
- package/dist/styles.css +825 -0
- package/dist/unsafe-window-use.js +229 -0
- package/dist/url-match.js +734 -0
- package/dist/userscript-header.js +248 -0
- package/dist/userscript.html +1165 -0
- package/dist/vendor/fflate.LICENSE +21 -0
- package/dist/vendor/fflate.js +2692 -0
- package/dist/vendor/prism/prism-line-numbers.css +1 -0
- package/dist/vendor/prism/prism-line-numbers.js +1 -0
- package/dist/vendor/prism/prism.css +1 -0
- package/dist/vendor/prism/prism.js +1946 -0
- package/dist/version-compare.js +141 -0
- package/dist/version-probe.js +120 -0
- package/lib/build-info.json +1 -0
- package/lib/bytes.d.ts +3 -0
- package/lib/bytes.js +37 -0
- package/lib/channel-placeholder.d.ts +1 -0
- package/lib/channel-placeholder.js +5 -0
- package/lib/collection-scan.d.ts +8 -0
- package/lib/collection-scan.js +17 -0
- package/lib/composed-source.d.ts +28 -0
- package/lib/composed-source.js +205 -0
- package/lib/debug-log.d.ts +9 -0
- package/lib/debug-log.js +75 -0
- package/lib/diagnostic-location.d.ts +8 -0
- package/lib/diagnostic-location.js +64 -0
- package/lib/eval-hook.d.ts +34 -0
- package/lib/eval-hook.js +308 -0
- package/lib/external-files.d.ts +111 -0
- package/lib/external-files.js +878 -0
- package/lib/file-loader.d.ts +48 -0
- package/lib/file-loader.js +436 -0
- package/lib/file-locations.d.ts +44 -0
- package/lib/file-locations.js +439 -0
- package/lib/generated-wrappers.d.ts +11 -0
- package/lib/generated-wrappers.js +5 -0
- package/lib/github-auth.d.ts +12 -0
- package/lib/github-auth.js +148 -0
- package/lib/github-urls.d.ts +1 -0
- package/lib/github-urls.js +46 -0
- package/lib/gm-api-catalog.d.ts +24 -0
- package/lib/gm-api-catalog.js +217 -0
- package/lib/gm-connect.d.ts +34 -0
- package/lib/gm-connect.js +273 -0
- package/lib/gm-xhr-types.d.ts +68 -0
- package/lib/gm-xhr-types.js +5 -0
- package/lib/harness/browser-extensions.d.ts +73 -0
- package/lib/harness/browser-extensions.js +285 -0
- package/lib/harness/browser-lang.d.ts +20 -0
- package/lib/harness/browser-lang.js +86 -0
- package/lib/harness/browser-launch.d.ts +14 -0
- package/lib/harness/browser-launch.js +184 -0
- package/lib/harness/checks.d.ts +110 -0
- package/lib/harness/checks.js +321 -0
- package/lib/harness/cli.d.ts +2 -0
- package/lib/harness/cli.js +2259 -0
- package/lib/harness/command-args.d.ts +91 -0
- package/lib/harness/command-args.js +369 -0
- package/lib/harness/command-lines.d.ts +80 -0
- package/lib/harness/command-lines.js +180 -0
- package/lib/harness/command-list.d.ts +206 -0
- package/lib/harness/command-list.js +1475 -0
- package/lib/harness/console-commands.d.ts +463 -0
- package/lib/harness/console-commands.js +3216 -0
- package/lib/harness/download-watch.d.ts +21 -0
- package/lib/harness/download-watch.js +156 -0
- package/lib/harness/extension-backend.d.ts +41 -0
- package/lib/harness/extension-backend.js +100 -0
- package/lib/harness/extension-host.d.ts +112 -0
- package/lib/harness/extension-host.js +552 -0
- package/lib/harness/extension-launch.d.ts +67 -0
- package/lib/harness/extension-launch.js +285 -0
- package/lib/harness/extension-link.d.ts +315 -0
- package/lib/harness/extension-link.js +607 -0
- package/lib/harness/external-manager.d.ts +146 -0
- package/lib/harness/external-manager.js +414 -0
- package/lib/harness/fixture.d.ts +165 -0
- package/lib/harness/fixture.js +461 -0
- package/lib/harness/frame-sessions.d.ts +71 -0
- package/lib/harness/frame-sessions.js +248 -0
- package/lib/harness/frames.d.ts +68 -0
- package/lib/harness/frames.js +216 -0
- package/lib/harness/help-format.d.ts +17 -0
- package/lib/harness/help-format.js +127 -0
- package/lib/harness/host.d.ts +352 -0
- package/lib/harness/host.js +423 -0
- package/lib/harness/index.d.ts +8 -0
- package/lib/harness/index.js +10 -0
- package/lib/harness/input-file.d.ts +18 -0
- package/lib/harness/input-file.js +61 -0
- package/lib/harness/json-output.d.ts +565 -0
- package/lib/harness/json-output.js +71 -0
- package/lib/harness/manager-actions.d.ts +21 -0
- package/lib/harness/manager-actions.js +129 -0
- package/lib/harness/manager-commands.d.ts +142 -0
- package/lib/harness/manager-commands.js +1196 -0
- package/lib/harness/manager-fetch.d.ts +33 -0
- package/lib/harness/manager-fetch.js +239 -0
- package/lib/harness/managers.d.ts +24 -0
- package/lib/harness/managers.js +27 -0
- package/lib/harness/output-style.d.ts +125 -0
- package/lib/harness/output-style.js +322 -0
- package/lib/harness/page-commands.d.ts +134 -0
- package/lib/harness/page-commands.js +1141 -0
- package/lib/harness/page-output.d.ts +67 -0
- package/lib/harness/page-output.js +139 -0
- package/lib/harness/page-watch.d.ts +171 -0
- package/lib/harness/page-watch.js +607 -0
- package/lib/harness/parse-check-node.d.ts +3 -0
- package/lib/harness/parse-check-node.js +132 -0
- package/lib/harness/path-args.d.ts +22 -0
- package/lib/harness/path-args.js +148 -0
- package/lib/harness/playwright-chromium.d.ts +16 -0
- package/lib/harness/playwright-chromium.js +86 -0
- package/lib/harness/prepare.d.ts +168 -0
- package/lib/harness/prepare.js +364 -0
- package/lib/harness/prompt-editor.d.ts +17 -0
- package/lib/harness/prompt-editor.js +354 -0
- package/lib/harness/prompt-history.d.ts +13 -0
- package/lib/harness/prompt-history.js +89 -0
- package/lib/harness/rebuild-advice.d.ts +6 -0
- package/lib/harness/rebuild-advice.js +39 -0
- package/lib/harness/run-log.d.ts +47 -0
- package/lib/harness/run-log.js +140 -0
- package/lib/harness/run-logs.d.ts +132 -0
- package/lib/harness/run-logs.js +241 -0
- package/lib/harness/run.d.ts +194 -0
- package/lib/harness/run.js +1973 -0
- package/lib/harness/runs.d.ts +229 -0
- package/lib/harness/runs.js +726 -0
- package/lib/harness/save-html.d.ts +39 -0
- package/lib/harness/save-html.js +89 -0
- package/lib/harness/saved-pages.d.ts +120 -0
- package/lib/harness/saved-pages.js +275 -0
- package/lib/harness/script-mark.d.ts +17 -0
- package/lib/harness/script-mark.js +56 -0
- package/lib/harness/snapshot.d.ts +143 -0
- package/lib/harness/snapshot.js +474 -0
- package/lib/harness/stuck-tabs.d.ts +19 -0
- package/lib/harness/stuck-tabs.js +131 -0
- package/lib/harness/tab-refs.d.ts +20 -0
- package/lib/harness/tab-refs.js +80 -0
- package/lib/harness/tampermonkey.d.ts +71 -0
- package/lib/harness/tampermonkey.js +356 -0
- package/lib/harness/tm-ids.d.ts +18 -0
- package/lib/harness/tm-ids.js +88 -0
- package/lib/harness/violentmonkey.d.ts +34 -0
- package/lib/harness/violentmonkey.js +162 -0
- package/lib/harness/wait.d.ts +77 -0
- package/lib/harness/wait.js +458 -0
- package/lib/http-read.d.ts +30 -0
- package/lib/http-read.js +142 -0
- package/lib/local-file-overrides.d.ts +35 -0
- package/lib/local-file-overrides.js +558 -0
- package/lib/manifest.json +38 -0
- package/lib/markup-response.d.ts +11 -0
- package/lib/markup-response.js +126 -0
- package/lib/match-targets.d.ts +18 -0
- package/lib/match-targets.js +305 -0
- package/lib/menu-captions.d.ts +1 -0
- package/lib/menu-captions.js +22 -0
- package/lib/parse-check-protocol.d.ts +27 -0
- package/lib/parse-check-protocol.js +51 -0
- package/lib/parse-location.d.ts +12 -0
- package/lib/parse-location.js +171 -0
- package/lib/phase-timing.d.ts +12 -0
- package/lib/phase-timing.js +155 -0
- package/lib/public-suffixes.d.ts +1 -0
- package/lib/public-suffixes.js +6957 -0
- package/lib/run-context.d.ts +2 -0
- package/lib/run-context.js +31 -0
- package/lib/runtime-messages.d.ts +10 -0
- package/lib/runtime-messages.js +34 -0
- package/lib/sandboxed-page.d.ts +5 -0
- package/lib/sandboxed-page.js +35 -0
- package/lib/script-build.d.ts +111 -0
- package/lib/script-build.js +787 -0
- package/lib/script-display.d.ts +51 -0
- package/lib/script-display.js +383 -0
- package/lib/script-icon.d.ts +16 -0
- package/lib/script-icon.js +43 -0
- package/lib/script-links.d.ts +24 -0
- package/lib/script-links.js +204 -0
- package/lib/script-source-url.d.ts +8 -0
- package/lib/script-source-url.js +214 -0
- package/lib/script-world.d.ts +6 -0
- package/lib/script-world.js +65 -0
- package/lib/sm-dev-protocol.d.ts +251 -0
- package/lib/sm-dev-protocol.js +84 -0
- package/lib/source-map.d.ts +32 -0
- package/lib/source-map.js +177 -0
- package/lib/stack-link.d.ts +15 -0
- package/lib/stack-link.js +138 -0
- package/lib/unsafe-window-use.d.ts +1 -0
- package/lib/unsafe-window-use.js +229 -0
- package/lib/url-match.d.ts +40 -0
- package/lib/url-match.js +734 -0
- package/lib/userscript-header.d.ts +33 -0
- package/lib/userscript-header.js +248 -0
- package/lib/version-compare.d.ts +6 -0
- package/lib/version-compare.js +141 -0
- package/lib/version-probe.d.ts +17 -0
- package/lib/version-probe.js +120 -0
- package/package.json +55 -3
- package/skills/SourceMonkey-dev/SKILL.md +868 -0
- package/skills/SourceMonkey-dev/references/cdp.md +293 -0
- package/skills/SourceMonkey-dev/references/commands.md +297 -0
- package/skills/SourceMonkey-dev/references/other-managers.md +63 -0
- package/skills/SourceMonkey-dev/references/specs.md +46 -0
- package/skills/SourceMonkey-friction/SKILL.md +103 -0
- package/skills/SourceMonkey-friction/references/template.md +59 -0
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
import { type LogSource } from './run-logs.js';
|
|
2
|
+
import { type ManagerName } from './managers.js';
|
|
3
|
+
/** What `sm-dev list` shows for a run, as its record file holds it. */
|
|
4
|
+
export interface RunRecord {
|
|
5
|
+
id: string;
|
|
6
|
+
pid: number;
|
|
7
|
+
/** When it started, in epoch milliseconds. */
|
|
8
|
+
started: number;
|
|
9
|
+
/** The browser's CDP endpoint (`launched` from an older sm-dev). */
|
|
10
|
+
browser: string;
|
|
11
|
+
/** A browser the run launched, which closes when the run ends. */
|
|
12
|
+
owned?: boolean;
|
|
13
|
+
/** A browser without a window. */
|
|
14
|
+
headless?: boolean;
|
|
15
|
+
/** The loaded scripts' full paths. `list` shows their file names. */
|
|
16
|
+
scripts: string[];
|
|
17
|
+
/** How many tabs it controls, where it keeps count. */
|
|
18
|
+
tabs?: number;
|
|
19
|
+
/** Started by `start --detach`, and so replaced by the next one. */
|
|
20
|
+
detached?: boolean;
|
|
21
|
+
/** The run's log file (see run-log.ts). */
|
|
22
|
+
log?: string;
|
|
23
|
+
/** The userscript manager it works with (`--manager`), when not SourceMonkey. */
|
|
24
|
+
manager?: ManagerName;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Who the runs belong to, in the directory and pipe names, so two
|
|
28
|
+
* users on one machine neither see nor clash with each other's runs:
|
|
29
|
+
* the user name, kept to characters a file name can take. The uid when
|
|
30
|
+
* there is no name: `os.userInfo()` throws for a uid with no passwd
|
|
31
|
+
* entry, as in a container run with `--user`.
|
|
32
|
+
*/
|
|
33
|
+
export declare function owner(): string;
|
|
34
|
+
/** Where `start` records the tabs it opened, for a later run to reuse. */
|
|
35
|
+
export declare function runTabsPath(): string;
|
|
36
|
+
/**
|
|
37
|
+
* A typed run id in its usual form (`d2` is `D2`, `D02` is `D2`), or
|
|
38
|
+
* null if it isn't one. Named ones are taken as typed.
|
|
39
|
+
*/
|
|
40
|
+
export declare function runIdOf(typed: string): string | null;
|
|
41
|
+
export declare function processAlive(pid: number): boolean;
|
|
42
|
+
/**
|
|
43
|
+
* The directory for sm-dev's state across runs, made private to its
|
|
44
|
+
* user: the runs' records and sockets, and `start`'s tab records. Created
|
|
45
|
+
* when missing.
|
|
46
|
+
*/
|
|
47
|
+
export declare function ownRunsDir(): Promise<string>;
|
|
48
|
+
/**
|
|
49
|
+
* The directory, checked before anything in it is trusted, or null
|
|
50
|
+
* when there is none yet. In a shared temp directory another user could
|
|
51
|
+
* have made it first, or be able to write in it, and then plant records
|
|
52
|
+
* whose pids `stop` would signal; such a directory is refused.
|
|
53
|
+
*/
|
|
54
|
+
export declare function checkRunsDir(): Promise<string | null>;
|
|
55
|
+
/**
|
|
56
|
+
* `dir`, or null when it doesn't exist; refused when another user owns
|
|
57
|
+
* it or can write in it. `what` names it in the message (`runs`, `log`).
|
|
58
|
+
*/
|
|
59
|
+
export declare function checkPrivateDir(dir: string, what: string): Promise<string | null>;
|
|
60
|
+
/** Where a client's command came from: its command line, piped input, or its prompt. */
|
|
61
|
+
export type CommandSource = 'arg' | 'stdin' | 'prompt';
|
|
62
|
+
/** How a command came: the sender's directory and words, and its connection. */
|
|
63
|
+
export interface SentCommand {
|
|
64
|
+
/** Where the files the command names are. */
|
|
65
|
+
cwd?: string;
|
|
66
|
+
/** The words as the sender's shell gave them. */
|
|
67
|
+
words?: string[];
|
|
68
|
+
/** Where the sender got it. `prompt`: typed by a person, rather than scripted. */
|
|
69
|
+
source: CommandSource;
|
|
70
|
+
/** The sending client's process id, as its hello gave it. */
|
|
71
|
+
pid?: number;
|
|
72
|
+
/** The connection gets the run's whole stream already (see `RunClient`). */
|
|
73
|
+
follows?: boolean;
|
|
74
|
+
/** The sender's global --json: commands with a JSON form print it. */
|
|
75
|
+
json?: boolean;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* What a run does with a command a client sent: `reply` receives its
|
|
79
|
+
* output, until the returned promise settles with its exit code. `hold`
|
|
80
|
+
* keeps the connection open, and `reply` receiving, until the run
|
|
81
|
+
* closes it, as `stop` does so the sender sees the run end.
|
|
82
|
+
*/
|
|
83
|
+
export type SentLineHandler = (line: string, reply: (line: string) => void, sent: SentCommand) => Promise<number | 'hold'>;
|
|
84
|
+
/** A run's handlers for its connections. */
|
|
85
|
+
export interface RunHandlers {
|
|
86
|
+
command: SentLineHandler;
|
|
87
|
+
/**
|
|
88
|
+
* A connection that asked for the run's stream: `reply` receives each
|
|
89
|
+
* line the run prints from now on, until the returned function is
|
|
90
|
+
* called. `logSources`: the log sources it asked to see, in place of
|
|
91
|
+
* the run's own.
|
|
92
|
+
*/
|
|
93
|
+
follow: (reply: (line: string) => void, logSources?: ReadonlySet<LogSource>) => () => void;
|
|
94
|
+
}
|
|
95
|
+
/** A run's end of the registry: its record file and its socket. */
|
|
96
|
+
export declare class RunControl {
|
|
97
|
+
private record;
|
|
98
|
+
private readonly server;
|
|
99
|
+
private readonly sockets;
|
|
100
|
+
private writes;
|
|
101
|
+
private closed;
|
|
102
|
+
private constructor();
|
|
103
|
+
/**
|
|
104
|
+
* Takes the run's id, registers it and starts listening. Throws when
|
|
105
|
+
* that fails; the run goes on without, but can't be reached from
|
|
106
|
+
* another shell.
|
|
107
|
+
*/
|
|
108
|
+
static open(fields: Omit<RunRecord, 'id'>, handle: RunHandlers, wanted?: string): Promise<RunControl>;
|
|
109
|
+
get id(): string;
|
|
110
|
+
/** Records changed scripts or tabs, for `sm-dev list`. */
|
|
111
|
+
update(changes: Partial<Pick<RunRecord, 'scripts' | 'tabs'>>): Promise<void>;
|
|
112
|
+
/** Unregisters the run, and ends every connection still open. */
|
|
113
|
+
close(): Promise<void>;
|
|
114
|
+
/**
|
|
115
|
+
* A client's connection: JSON messages, a line each. The first may be
|
|
116
|
+
* `{"hello": {"follow": true, "pid": 123, "logSources": ["sm", ...], "markup": true}}`:
|
|
117
|
+
* the run's whole stream, of those log sources if given, which client
|
|
118
|
+
* it is, and that it takes lines with markup (output-style.ts), which
|
|
119
|
+
* others get as plain text. Then commands, `{"line": ..., "cwd": ...,
|
|
120
|
+
* "words": [...], "source": "arg"}`, each
|
|
121
|
+
* answered with its output and then a `COMMAND_DONE` line with its
|
|
122
|
+
* exit code before the next is taken.
|
|
123
|
+
*/
|
|
124
|
+
private serve;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* The runs active now, oldest first. A record whose process has gone
|
|
128
|
+
* (killed, or its machine rebooted), or whose socket nothing listens on
|
|
129
|
+
* (its pid reused since), is deleted on the way.
|
|
130
|
+
*/
|
|
131
|
+
export declare function liveRuns(): Promise<RunRecord[]>;
|
|
132
|
+
/**
|
|
133
|
+
* The start of the line a run sends after each command's output, with
|
|
134
|
+
* its exit code after it, for the client to take rather than print.
|
|
135
|
+
* Starts with a NUL, which no line of output does.
|
|
136
|
+
*/
|
|
137
|
+
export declare const COMMAND_DONE = "\0sm-dev:done";
|
|
138
|
+
/** A connection's failure when the run has ended, or was never there. */
|
|
139
|
+
export declare class RunGoneError extends Error {
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* A client's connection to a run, which it sends its commands over, one
|
|
143
|
+
* at a time. `follow`: also receive everything the run prints from now
|
|
144
|
+
* on, between commands too, as a person watching the run would. Output
|
|
145
|
+
* goes to `out` as it arrives, in the order the run printed it.
|
|
146
|
+
*/
|
|
147
|
+
export declare class RunClient {
|
|
148
|
+
readonly id: string;
|
|
149
|
+
private readonly socket;
|
|
150
|
+
private readonly out;
|
|
151
|
+
private buffered;
|
|
152
|
+
private pending;
|
|
153
|
+
private closedBy;
|
|
154
|
+
/** Settles once the connection has closed, from either end. */
|
|
155
|
+
readonly ended: Promise<void>;
|
|
156
|
+
private end;
|
|
157
|
+
private constructor();
|
|
158
|
+
/**
|
|
159
|
+
* Connects to run `id`, passing each line it sends to `out`. `markup`:
|
|
160
|
+
* lines come with their markup (output-style.ts), for an `out` that
|
|
161
|
+
* paints them; otherwise as plain text.
|
|
162
|
+
*/
|
|
163
|
+
static open(id: string, out: (line: string) => void, { follow, logSources, markup }?: {
|
|
164
|
+
follow?: boolean;
|
|
165
|
+
logSources?: ReadonlySet<LogSource>;
|
|
166
|
+
markup?: boolean;
|
|
167
|
+
}): Promise<RunClient>;
|
|
168
|
+
/** Whether the connection is still open. */
|
|
169
|
+
get open(): boolean;
|
|
170
|
+
/**
|
|
171
|
+
* Sends one command (one line, or a {{ block's several), and
|
|
172
|
+
* resolves to its exit code once it is done. `words`: the sender's own,
|
|
173
|
+
* as its shell gave them. `rewrite`: changes each line that arrives
|
|
174
|
+
* while it runs.
|
|
175
|
+
*/
|
|
176
|
+
send(line: string, { words, source, json, rewrite }?: {
|
|
177
|
+
words?: string[];
|
|
178
|
+
source?: CommandSource;
|
|
179
|
+
json?: boolean;
|
|
180
|
+
rewrite?: (line: string) => string;
|
|
181
|
+
}): Promise<number>;
|
|
182
|
+
/**
|
|
183
|
+
* Closes the connection; the run goes on. `force`: at once, not
|
|
184
|
+
* waiting for the run to take the last of it, for a client done
|
|
185
|
+
* waiting. A run that doesn't answer is let go after a moment anyway.
|
|
186
|
+
*/
|
|
187
|
+
close({ force }?: {
|
|
188
|
+
force?: boolean | undefined;
|
|
189
|
+
}): Promise<void>;
|
|
190
|
+
private take;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Sends one command to a run over a connection of its own, passing each
|
|
194
|
+
* line of its output to `out` as it arrives, and resolves to its exit
|
|
195
|
+
* code. `signal` drops the connection, for a sender done waiting.
|
|
196
|
+
* `markup`: lines come with their markup, for an `out` that paints them.
|
|
197
|
+
*/
|
|
198
|
+
export declare function sendLine(id: string, line: string, out: (line: string) => void, signal?: AbortSignal, words?: string[], markup?: boolean): Promise<number>;
|
|
199
|
+
/**
|
|
200
|
+
* Ends a run as its `stop` would, passing on what it prints as it ends.
|
|
201
|
+
* One that doesn't answer, or doesn't finish ending in time, is sent
|
|
202
|
+
* SIGTERM: it ends one that never got the `stop` as Ctrl-C would, and
|
|
203
|
+
* kills one stuck ending. A run found to have ended already is never
|
|
204
|
+
* signalled, since its pid may be another process's by now. Resolves to
|
|
205
|
+
* whether the run has gone. `markup`: as for sendLine.
|
|
206
|
+
*/
|
|
207
|
+
export declare function stopRun(record: RunRecord, out: (line: string) => void, markup?: boolean): Promise<boolean>;
|
|
208
|
+
/**
|
|
209
|
+
* `sm-dev list`'s table: a heading row, then a row per run, in aligned
|
|
210
|
+
* columns. Scripts are listed by file name, the first few and a count
|
|
211
|
+
* of the rest, so the total shows without a column of its own. `-` is
|
|
212
|
+
* none, or no tab count for a run that keeps none. `markup`: lines
|
|
213
|
+
* marked up for color (output-style.ts), for printing; otherwise plain,
|
|
214
|
+
* as an error message needs them.
|
|
215
|
+
*/
|
|
216
|
+
export declare function runTable(records: RunRecord[], now?: number, { markup }?: {
|
|
217
|
+
markup?: boolean;
|
|
218
|
+
}): string[];
|
|
219
|
+
/**
|
|
220
|
+
* A run's browser as `list` shows it: `127.0.0.1:9233`, with
|
|
221
|
+
* `(owned, headless)` after it when so. `status` words it as a
|
|
222
|
+
* sentence (see `browserSentence`).
|
|
223
|
+
*/
|
|
224
|
+
export declare function browserLabel(r: Pick<RunRecord, 'browser' | 'owned' | 'headless'>): string;
|
|
225
|
+
/**
|
|
226
|
+
* A run's browser as `status` says it: `connected to owned headless
|
|
227
|
+
* browser 127.0.0.1:9233`. `how` changes the first words (`launched`).
|
|
228
|
+
*/
|
|
229
|
+
export declare function browserSentence(r: Pick<RunRecord, 'browser' | 'owned' | 'headless'>, how?: string): string;
|