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,31 @@
|
|
|
1
|
+
// Which JS context this module is running in.
|
|
2
|
+
//
|
|
3
|
+
// The extension's modules are shared: `script-store.ts`, `script-log.ts`
|
|
4
|
+
// and the fetch helpers all run in the service worker AND in the
|
|
5
|
+
// extension pages. A few of them have to behave differently in a page —
|
|
6
|
+
// not as a capability check, but because the worker is the single owner
|
|
7
|
+
// of something (an http read that must not leak a preload hint, a
|
|
8
|
+
// session-storage key whose read-modify-writes are serialized by one
|
|
9
|
+
// per-script queue). Those hop to the worker; see `http-read.ts` and
|
|
10
|
+
// `script-log.ts`.
|
|
11
|
+
//
|
|
12
|
+
// `document` is the test: the service worker has none, every extension
|
|
13
|
+
// page does. Not `window` — the worker has a global `self` that some
|
|
14
|
+
// bundlers alias.
|
|
15
|
+
//
|
|
16
|
+
// Caveat for a future caller: the sandboxed parse page
|
|
17
|
+
// (`parse-sandbox.html`) has a `document` too, but runs at an opaque
|
|
18
|
+
// origin with no `chrome.runtime` — so it would answer true here and
|
|
19
|
+
// then have nothing to hop to. Nothing that hops is loaded there today.
|
|
20
|
+
export function isPageContext() {
|
|
21
|
+
return typeof document !== 'undefined';
|
|
22
|
+
}
|
|
23
|
+
// Only the service worker writes storage and places registrations
|
|
24
|
+
// (docs/worker-writes.md): a page asks it, through
|
|
25
|
+
// `extension/worker-client.ts`. The writers' funnels call this, so a
|
|
26
|
+
// page path that reaches one fails at once rather than writing beside
|
|
27
|
+
// the worker.
|
|
28
|
+
export function assertWorkerContext(what) {
|
|
29
|
+
if (isPageContext())
|
|
30
|
+
throw new Error(`Internal error: An extension page tried to ${what} itself`);
|
|
31
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const SM_START_MSG = "sm:start";
|
|
2
|
+
export declare const SM_ERROR_MSG = "sm:error";
|
|
3
|
+
export declare const SM_CHECK_PENDING_MSG = "sm:check-pending";
|
|
4
|
+
export declare const SM_SWAPPED_MSG = "sm:swapped";
|
|
5
|
+
export declare const SM_ABANDONED_MSG = "sm:abandoned";
|
|
6
|
+
export declare const SM_MANUAL_MSG = "sm:manual";
|
|
7
|
+
export declare const SM_GM_LOG_MSG = "sm:gm-log";
|
|
8
|
+
export declare const SM_GM_DOM_BLOCKED_MSG = "sm:gm-dom-blocked";
|
|
9
|
+
export declare const SM_FOCUS_MSG = "sm:focus";
|
|
10
|
+
export declare const SM_MAIN_BLOCKED_MSG = "sm:main-blocked";
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// The `sm:*` message types injected scripts send the service worker.
|
|
2
|
+
// Its own module so the harness can name them without loading the
|
|
3
|
+
// injector.
|
|
4
|
+
// Keep these in sync with the strings the prelude sends.
|
|
5
|
+
export const SM_START_MSG = 'sm:start';
|
|
6
|
+
export const SM_ERROR_MSG = 'sm:error';
|
|
7
|
+
// Reload fast-path: the prelude asks the SW whether to run its baked-in
|
|
8
|
+
// body, abandon, or swap in a fresher user-code body the SW will hand
|
|
9
|
+
// back. sm:swapped / sm:abandoned are the follow-up reports for the
|
|
10
|
+
// swap / skip branches. See docs/injection.md#reload-fast-path.
|
|
11
|
+
export const SM_CHECK_PENDING_MSG = 'sm:check-pending';
|
|
12
|
+
export const SM_SWAPPED_MSG = 'sm:swapped';
|
|
13
|
+
export const SM_ABANDONED_MSG = 'sm:abandoned';
|
|
14
|
+
// Not sent by injected scripts: the worker's report to sm-dev that a
|
|
15
|
+
// manual script (`@run-at context-menu`) matches a new document, where
|
|
16
|
+
// it waits to be run rather than starting. See docs/manual-scripts.md.
|
|
17
|
+
export const SM_MANUAL_MSG = 'sm:manual';
|
|
18
|
+
// GM_log capture: the page-side runtime sends one of these for every
|
|
19
|
+
// GM_log() call so the SW can append it to the script's Log tab.
|
|
20
|
+
export const SM_GM_LOG_MSG = 'sm:gm-log';
|
|
21
|
+
// The runtime saw the page's CSP refuse a style a script added
|
|
22
|
+
// (MAIN world only — the isolated world is exempt). One warning per
|
|
23
|
+
// script per document, in the script's Log.
|
|
24
|
+
export const SM_GM_DOM_BLOCKED_MSG = 'sm:gm-dom-blocked';
|
|
25
|
+
// The page reporting that it just came to the front, so the SW can
|
|
26
|
+
// check this tab's local scripts for edits. Chrome's own focus events
|
|
27
|
+
// miss the case that matters most — see
|
|
28
|
+
// docs/updates.md#focus-triggered-refresh.
|
|
29
|
+
export const SM_FOCUS_MSG = 'sm:focus';
|
|
30
|
+
// The bridge reporting a sandboxed document where no MAIN-world script
|
|
31
|
+
// could run, so the SW runs them in USER_SCRIPT world instead. Sent by
|
|
32
|
+
// the bridge itself, never relayed for the page. See
|
|
33
|
+
// `runBlockedMainScripts` in background.ts.
|
|
34
|
+
export const SM_MAIN_BLOCKED_MSG = 'sm:main-blocked';
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const INJECT_INTO_CONTENT_FIX = "Add @inject-into content to run a script in the isolated context instead, unless it needs the page's own variables";
|
|
2
|
+
export declare const SANDBOX_BLOCKS_PAGE_CONTEXT = "A sandboxed page stops scripts running in the page's own context";
|
|
3
|
+
export declare function cspBlocksPageScripts(header: string): boolean;
|
|
4
|
+
export declare function sandboxedPageNote(scripts: readonly string[]): string;
|
|
5
|
+
export declare function sandboxedPageWarning(scripts: readonly string[]): string;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
// A page whose CSP `sandbox` turns off script in its own world, so
|
|
2
|
+
// Chrome skips MAIN-world scripts there. The Log warning
|
|
3
|
+
// (missing-scripts.ts) and sm-dev's warning share these words. Its own
|
|
4
|
+
// module so sm-dev can use them without the badge code.
|
|
5
|
+
// The fix for such a page.
|
|
6
|
+
export const INJECT_INTO_CONTENT_FIX = 'Add @inject-into content to run a script in the isolated context instead, unless it needs the page\'s own variables';
|
|
7
|
+
// What a sandboxed page does to scripts in its own context.
|
|
8
|
+
export const SANDBOX_BLOCKS_PAGE_CONTEXT = 'A sandboxed page stops scripts running in the page\'s own context';
|
|
9
|
+
// Whether a Content-Security-Policy header value sandboxes the page
|
|
10
|
+
// without `allow-scripts`. Several headers arrive comma-joined, one
|
|
11
|
+
// policy each, and any one of them can sandbox. For sm-dev, which sees
|
|
12
|
+
// the response; the extension only sees what its wrappers report.
|
|
13
|
+
export function cspBlocksPageScripts(header) {
|
|
14
|
+
for (const policy of header.split(',')) {
|
|
15
|
+
for (const directive of policy.split(';')) {
|
|
16
|
+
const [name, ...tokens] = directive.trim().toLowerCase().split(/\s+/);
|
|
17
|
+
if (name === 'sandbox' && !tokens.includes('allow-scripts'))
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
// sm-dev's note for such a page under a SourceMonkey that runs the
|
|
24
|
+
// run's MAIN-world scripts there isolated instead, naming them.
|
|
25
|
+
export function sandboxedPageNote(scripts) {
|
|
26
|
+
return 'This page\'s Content-Security-Policy header sandboxes it without allow-scripts, ' +
|
|
27
|
+
`so SourceMonkey runs these scripts in the isolated context instead: ${scripts.join(', ')}.`;
|
|
28
|
+
}
|
|
29
|
+
// sm-dev's warning for such a page, naming the run's MAIN-world scripts
|
|
30
|
+
// that match it, under a manager that doesn't run them there.
|
|
31
|
+
export function sandboxedPageWarning(scripts) {
|
|
32
|
+
return 'This page\'s Content-Security-Policy header sandboxes it without allow-scripts. ' +
|
|
33
|
+
`${SANDBOX_BLOCKS_PAGE_CONTEXT}, so these scripts can't run here: ` +
|
|
34
|
+
`${scripts.join(', ')}. ${INJECT_INTO_CONTENT_FIX}.`;
|
|
35
|
+
}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { type ParsedHeader } from './userscript-header.js';
|
|
2
|
+
import { type FileFetchCache, type IconCheck, type PushedFile, type StoredRequire, type StoredResource } from './external-files.js';
|
|
3
|
+
import { type LocalFileScope } from './local-file-overrides.js';
|
|
4
|
+
import type { VersionProbe } from './version-probe.js';
|
|
5
|
+
import type { ParseVerdict } from './parse-check-protocol.js';
|
|
6
|
+
import { type DiagnosticLocation } from './diagnostic-location.js';
|
|
7
|
+
export type ScriptStatus = 'ok' | 'invalid';
|
|
8
|
+
export interface ScriptMatching {
|
|
9
|
+
matches: string[];
|
|
10
|
+
excludes: string[];
|
|
11
|
+
includes: string[];
|
|
12
|
+
}
|
|
13
|
+
export interface StartupLog {
|
|
14
|
+
level: 'log' | 'info' | 'warn' | 'error';
|
|
15
|
+
message: string;
|
|
16
|
+
location?: DiagnosticLocation;
|
|
17
|
+
}
|
|
18
|
+
export interface StoredScript {
|
|
19
|
+
id: string;
|
|
20
|
+
collectionId: string;
|
|
21
|
+
relativePath: string;
|
|
22
|
+
fileUrl: string;
|
|
23
|
+
status: ScriptStatus;
|
|
24
|
+
errorMessage?: string;
|
|
25
|
+
errorLocation?: DiagnosticLocation;
|
|
26
|
+
refreshError?: string;
|
|
27
|
+
size: number | null;
|
|
28
|
+
contentHash?: string;
|
|
29
|
+
parseCheckedHash?: string;
|
|
30
|
+
fsMtime?: number;
|
|
31
|
+
httpEtag?: string;
|
|
32
|
+
httpLastModified?: string;
|
|
33
|
+
leadingText?: string;
|
|
34
|
+
headerText: string;
|
|
35
|
+
bodyText: string;
|
|
36
|
+
header: ParsedHeader | null;
|
|
37
|
+
matching: ScriptMatching;
|
|
38
|
+
loadedAt: number;
|
|
39
|
+
enabled: boolean;
|
|
40
|
+
requires?: StoredRequire[];
|
|
41
|
+
resources?: StoredResource[];
|
|
42
|
+
iconCheck?: IconCheck;
|
|
43
|
+
startupLogs?: readonly StartupLog[];
|
|
44
|
+
usesUnsafeWindow?: boolean;
|
|
45
|
+
versionProbes?: VersionProbe[];
|
|
46
|
+
}
|
|
47
|
+
export type ScriptMeta = Omit<StoredScript, 'bodyText' | 'requires' | 'resources'> & {
|
|
48
|
+
requires?: Omit<StoredRequire, 'source'>[];
|
|
49
|
+
resources?: Omit<StoredResource, 'bytesBase64'>[];
|
|
50
|
+
};
|
|
51
|
+
export type FetchResult = {
|
|
52
|
+
ok: true;
|
|
53
|
+
text: string;
|
|
54
|
+
httpEtag?: string;
|
|
55
|
+
httpLastModified?: string;
|
|
56
|
+
} | {
|
|
57
|
+
ok: false;
|
|
58
|
+
errorMessage: string;
|
|
59
|
+
} | {
|
|
60
|
+
unchanged: true;
|
|
61
|
+
};
|
|
62
|
+
export declare function hashSource(text: string): Promise<string>;
|
|
63
|
+
export declare function distillMatching(header: ParsedHeader | null): ScriptMatching;
|
|
64
|
+
export declare function isolatedUnsafeWindowWarning(cause: string): string;
|
|
65
|
+
export declare function noConnectInfo(grant: string): string;
|
|
66
|
+
export declare function isManualScript(script: Pick<StoredScript, 'header'>): boolean;
|
|
67
|
+
export declare function unsupportedRunAtWarning(value: string): string;
|
|
68
|
+
export declare function extractStartupLogs(header: ParsedHeader | null, relativePath: string, usesUnsafeWindow?: boolean): StartupLog[];
|
|
69
|
+
export interface HeaderProblem {
|
|
70
|
+
message: string;
|
|
71
|
+
line?: number;
|
|
72
|
+
}
|
|
73
|
+
export declare const NO_NAME = "No @name in the metadata block";
|
|
74
|
+
export declare const NO_MATCH_OR_INCLUDE = "No @match or @include in the metadata block, so this script would never run on any page";
|
|
75
|
+
export declare const RETIRED_CONTEXT_MENU_UNSUPPORTED = "@run-at context-menu (run from the right-click menu) is not supported, so this script can't run";
|
|
76
|
+
export declare const SYNTAX_ERROR_PREFIX = "Syntax error: ";
|
|
77
|
+
export declare function validateHeader(header: ParsedHeader | null): HeaderProblem | null;
|
|
78
|
+
interface BuildArgs {
|
|
79
|
+
id: string;
|
|
80
|
+
collectionId: string;
|
|
81
|
+
relativePath: string;
|
|
82
|
+
fileUrl: string;
|
|
83
|
+
text: string;
|
|
84
|
+
now: number;
|
|
85
|
+
prior?: StoredScript;
|
|
86
|
+
httpEtag?: string;
|
|
87
|
+
httpLastModified?: string;
|
|
88
|
+
}
|
|
89
|
+
export declare function buildScriptFromText(args: BuildArgs): Promise<StoredScript>;
|
|
90
|
+
export declare function applyFetchError(existing: StoredScript, errorMessage: string): StoredScript;
|
|
91
|
+
export declare function setScriptError(entry: Pick<StoredScript, 'errorMessage' | 'errorLocation'>, message: string | undefined, location: DiagnosticLocation | undefined): void;
|
|
92
|
+
export declare function locationIn(file: string, line: number | undefined): DiagnosticLocation;
|
|
93
|
+
export declare function buildInitialInvalidEntry(args: {
|
|
94
|
+
id: string;
|
|
95
|
+
collectionId: string;
|
|
96
|
+
relativePath: string;
|
|
97
|
+
fileUrl: string;
|
|
98
|
+
errorMessage: string;
|
|
99
|
+
now: number;
|
|
100
|
+
}): StoredScript;
|
|
101
|
+
export declare function applyFiles(built: StoredScript, prior: StoredScript | undefined, recheck: 'all' | 'preserve', fetchCache: FileFetchCache, now: number, localFiles?: LocalFileScope, parseCheck?: ParseCheckMode, pushedFiles?: Record<string, PushedFile>): Promise<StoredScript>;
|
|
102
|
+
export declare function rederivedStartupLogs(script: Pick<StoredScript, 'iconCheck' | 'header' | 'relativePath'>, usesUnsafeWindow: boolean): StartupLog[];
|
|
103
|
+
export type ParseChecker = (script: StoredScript) => Promise<ParseVerdict | null>;
|
|
104
|
+
export type ParseCheckMode = 'await' | 'defer';
|
|
105
|
+
export declare let parseChecker: ParseChecker | null;
|
|
106
|
+
export declare function setParseChecker(fn: ParseChecker | null): void;
|
|
107
|
+
export declare function parseCheckKey(script: StoredScript): string;
|
|
108
|
+
export declare function applyParseCheck(built: StoredScript, prior: StoredScript | undefined, mode?: ParseCheckMode): Promise<StoredScript>;
|
|
109
|
+
export declare function applyVerdictFields(current: StoredScript, checked: StoredScript): StoredScript;
|
|
110
|
+
export declare function describeError(err: unknown): string;
|
|
111
|
+
export {};
|