@juxtapose/core 0.4.0 → 0.6.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.
Files changed (153) hide show
  1. package/dist/agent/handoff.d.ts +8 -1
  2. package/dist/agent/handoff.js +75 -7
  3. package/dist/agent/handoff.js.map +1 -1
  4. package/dist/analysis/affected.d.ts +37 -0
  5. package/dist/analysis/affected.js +97 -22
  6. package/dist/analysis/affected.js.map +1 -1
  7. package/dist/analysis/cause.d.ts +32 -0
  8. package/dist/analysis/cause.js +187 -0
  9. package/dist/analysis/cause.js.map +1 -0
  10. package/dist/baseline/approve.d.ts +24 -0
  11. package/dist/baseline/approve.js +54 -0
  12. package/dist/baseline/approve.js.map +1 -0
  13. package/dist/baseline/git-store.d.ts +4 -0
  14. package/dist/baseline/git-store.js +22 -0
  15. package/dist/baseline/git-store.js.map +1 -1
  16. package/dist/browser/acquire.d.ts +15 -0
  17. package/dist/browser/acquire.js +26 -0
  18. package/dist/browser/acquire.js.map +1 -0
  19. package/dist/browser/browser.d.ts +53 -0
  20. package/dist/browser/browser.js +122 -0
  21. package/dist/browser/browser.js.map +1 -0
  22. package/dist/browser/cdp.d.ts +81 -0
  23. package/dist/browser/cdp.js +230 -0
  24. package/dist/browser/cdp.js.map +1 -0
  25. package/dist/browser/daemon/client.d.ts +145 -0
  26. package/dist/browser/daemon/client.js +764 -0
  27. package/dist/browser/daemon/client.js.map +1 -0
  28. package/dist/browser/daemon/state.d.ts +99 -0
  29. package/dist/browser/daemon/state.js +297 -0
  30. package/dist/browser/daemon/state.js.map +1 -0
  31. package/dist/browser/daemon/supervisor-main.d.ts +1 -0
  32. package/dist/browser/daemon/supervisor-main.js +54 -0
  33. package/dist/browser/daemon/supervisor-main.js.map +1 -0
  34. package/dist/browser/daemon/supervisor.d.ts +37 -0
  35. package/dist/browser/daemon/supervisor.js +777 -0
  36. package/dist/browser/daemon/supervisor.js.map +1 -0
  37. package/dist/{capture/launch.d.ts → browser/flags.d.ts} +19 -1
  38. package/dist/browser/flags.js +146 -0
  39. package/dist/browser/flags.js.map +1 -0
  40. package/dist/browser/index.d.ts +14 -0
  41. package/dist/browser/index.js +14 -0
  42. package/dist/browser/index.js.map +1 -0
  43. package/dist/browser/install.d.ts +33 -0
  44. package/dist/browser/install.js +167 -0
  45. package/dist/browser/install.js.map +1 -0
  46. package/dist/browser/launch.d.ts +37 -0
  47. package/dist/browser/launch.js +254 -0
  48. package/dist/browser/launch.js.map +1 -0
  49. package/dist/browser/page.d.ts +125 -0
  50. package/dist/browser/page.js +564 -0
  51. package/dist/browser/page.js.map +1 -0
  52. package/dist/browser/pins.d.ts +12 -0
  53. package/dist/browser/pins.js +57 -0
  54. package/dist/browser/pins.js.map +1 -0
  55. package/dist/browser/private-dir.d.ts +7 -0
  56. package/dist/browser/private-dir.js +24 -0
  57. package/dist/browser/private-dir.js.map +1 -0
  58. package/dist/browser/resolve.d.ts +31 -0
  59. package/dist/browser/resolve.js +126 -0
  60. package/dist/browser/resolve.js.map +1 -0
  61. package/dist/browser/selectors.d.ts +10 -0
  62. package/dist/browser/selectors.js +60 -0
  63. package/dist/browser/selectors.js.map +1 -0
  64. package/dist/browser/transport.d.ts +51 -0
  65. package/dist/browser/transport.js +124 -0
  66. package/dist/browser/transport.js.map +1 -0
  67. package/dist/browser/types.d.ts +4 -0
  68. package/dist/browser/types.js +2 -0
  69. package/dist/browser/types.js.map +1 -0
  70. package/dist/browser/zip.d.ts +27 -0
  71. package/dist/browser/zip.js +241 -0
  72. package/dist/browser/zip.js.map +1 -0
  73. package/dist/capture/capture.d.ts +7 -1
  74. package/dist/capture/capture.js +25 -8
  75. package/dist/capture/capture.js.map +1 -1
  76. package/dist/capture/env.d.ts +1 -1
  77. package/dist/capture/pool.d.ts +1 -1
  78. package/dist/capture/pool.js +41 -8
  79. package/dist/capture/pool.js.map +1 -1
  80. package/dist/capture/settle.d.ts +1 -1
  81. package/dist/capture/settle.js +2 -0
  82. package/dist/capture/settle.js.map +1 -1
  83. package/dist/capture/snap.d.ts +43 -0
  84. package/dist/capture/snap.js +103 -0
  85. package/dist/capture/snap.js.map +1 -0
  86. package/dist/capture/structure.d.ts +77 -0
  87. package/dist/capture/structure.js +498 -0
  88. package/dist/capture/structure.js.map +1 -0
  89. package/dist/diff/compare.d.ts +19 -0
  90. package/dist/diff/compare.js +19 -0
  91. package/dist/diff/compare.js.map +1 -0
  92. package/dist/diff/crops.d.ts +26 -0
  93. package/dist/diff/crops.js +92 -0
  94. package/dist/diff/crops.js.map +1 -0
  95. package/dist/diff/structural/classify.d.ts +29 -0
  96. package/dist/diff/structural/classify.js +113 -0
  97. package/dist/diff/structural/classify.js.map +1 -0
  98. package/dist/diff/structural/coverage.d.ts +11 -0
  99. package/dist/diff/structural/coverage.js +37 -0
  100. package/dist/diff/structural/coverage.js.map +1 -0
  101. package/dist/diff/structural/deltas.d.ts +29 -0
  102. package/dist/diff/structural/deltas.js +218 -0
  103. package/dist/diff/structural/deltas.js.map +1 -0
  104. package/dist/diff/structural/disambiguate.d.ts +3 -0
  105. package/dist/diff/structural/disambiguate.js +89 -0
  106. package/dist/diff/structural/disambiguate.js.map +1 -0
  107. package/dist/diff/structural/label.d.ts +15 -0
  108. package/dist/diff/structural/label.js +64 -0
  109. package/dist/diff/structural/label.js.map +1 -0
  110. package/dist/diff/structural/match.d.ts +13 -0
  111. package/dist/diff/structural/match.js +135 -0
  112. package/dist/diff/structural/match.js.map +1 -0
  113. package/dist/diff/structural/shift.d.ts +2 -0
  114. package/dist/diff/structural/shift.js +144 -0
  115. package/dist/diff/structural/shift.js.map +1 -0
  116. package/dist/diff/structural/summary.d.ts +31 -0
  117. package/dist/diff/structural/summary.js +420 -0
  118. package/dist/diff/structural/summary.js.map +1 -0
  119. package/dist/diff/structural.d.ts +40 -0
  120. package/dist/diff/structural.js +219 -0
  121. package/dist/diff/structural.js.map +1 -0
  122. package/dist/index.d.ts +28 -4
  123. package/dist/index.js +32 -3
  124. package/dist/index.js.map +1 -1
  125. package/dist/platform.d.ts +1 -1
  126. package/dist/platforms/urls.d.ts +3 -0
  127. package/dist/platforms/urls.js +89 -0
  128. package/dist/platforms/urls.js.map +1 -0
  129. package/dist/report/comment.js +9 -3
  130. package/dist/report/comment.js.map +1 -1
  131. package/dist/report/format.d.ts +18 -0
  132. package/dist/report/format.js +20 -0
  133. package/dist/report/format.js.map +1 -1
  134. package/dist/report/html.js +2 -2
  135. package/dist/report/html.js.map +1 -1
  136. package/dist/run/groups.d.ts +2 -0
  137. package/dist/run/groups.js +45 -0
  138. package/dist/run/groups.js.map +1 -0
  139. package/dist/run/run.d.ts +6 -2
  140. package/dist/run/run.js +74 -6
  141. package/dist/run/run.js.map +1 -1
  142. package/dist/shell-quote.d.ts +2 -0
  143. package/dist/shell-quote.js +10 -0
  144. package/dist/shell-quote.js.map +1 -0
  145. package/dist/types.d.ts +201 -5
  146. package/dist/types.js +0 -2
  147. package/dist/types.js.map +1 -1
  148. package/dist/url-platform.d.ts +2 -2
  149. package/dist/url-platform.js +2 -2
  150. package/dist/url-platform.js.map +1 -1
  151. package/package.json +6 -10
  152. package/dist/capture/launch.js +0 -56
  153. package/dist/capture/launch.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supervisor.js","sourceRoot":"","sources":["../../../src/browser/daemon/supervisor.ts"],"names":[],"mappings":"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"}
@@ -28,8 +28,26 @@ export interface LaunchOptions {
28
28
  args?: string[];
29
29
  headless?: boolean;
30
30
  }
31
- /** Build the Playwright launch options for a reproducible capture browser. */
31
+ /** Our own flags; `chromeArgs` wraps them with the parity set. */
32
32
  export declare function deterministicLaunchOptions(opts?: LaunchOptions): {
33
33
  headless: boolean;
34
34
  args: string[];
35
35
  };
36
+ /**
37
+ * playwright-core 1.62.0's `chromiumSwitches()` plus its headless additions
38
+ * (`lib/coreBundle.js` L34630–34690, L43067–43097), copied verbatim.
39
+ *
40
+ * The byte-identity spike (spec, 2026-10-13) matched 29/29 example stories
41
+ * against the Playwright pipeline with exactly this list. It was not pruned:
42
+ * a Blink feature flag that changes rasterization — PaintHolding,
43
+ * CDPScreenshotNewSurface — would turn every baseline red, and the gain from
44
+ * dropping any of these is unmeasurable. Change only with a determinism run
45
+ * per removed flag.
46
+ */
47
+ export declare const PARITY_CHROMIUM_ARGS: readonly string[];
48
+ /** The full command line, in Playwright's order so the spike's evidence transfers. */
49
+ export declare function chromeArgs(opts: {
50
+ userDataDir: string;
51
+ args?: string[];
52
+ headless?: boolean;
53
+ }): string[];
@@ -0,0 +1,146 @@
1
+ // Browser launch flags for reproducible rasterization.
2
+ //
3
+ // These matter more here than in most Playwright setups. Pass/fail is a
4
+ // byte-exact hash, so a single pixel of GPU rasterization jitter on one
5
+ // antialiased corner is a failed build — not a 0.002% mismatch someone can
6
+ // wave through.
7
+ //
8
+ // Measured on a card component with rounded corners: without these flags,
9
+ // repeated captures of an unchanged story differed by ~12 pixels out of
10
+ // 480,000, each off by exactly 1 in one channel. Invisible to a human, fatal
11
+ // to a hash.
12
+ /**
13
+ * Chromium flags that make rasterization reproducible across runs.
14
+ *
15
+ * Each is here for a reason; none are cargo-culted:
16
+ *
17
+ * - `--disable-gpu`, `--disable-gpu-rasterization`, `--disable-skia-runtime-opts`
18
+ * force CPU rasterization down a fixed code path. GPU rasterization is the
19
+ * direct cause of the off-by-one antialiasing jitter above, and Skia's
20
+ * runtime CPU-feature detection can pick different SIMD paths on different
21
+ * machines.
22
+ *
23
+ * - `--force-color-profile=srgb`, `--disable-lcd-text`, `--disable-font-subpixel-positioning`
24
+ * pin colour management and text rendering. Subpixel positioning and LCD
25
+ * antialiasing make glyph edges depend on display configuration, which is
26
+ * exactly the kind of environment coupling that makes a baseline captured on
27
+ * one machine fail on another.
28
+ *
29
+ * - `--hide-scrollbars` keeps a scrollbar's presence from shifting layout by a
30
+ * few pixels depending on content height.
31
+ *
32
+ * - `--disable-background-timer-throttling` and friends stop Chromium from
33
+ * throttling a backgrounded renderer, which otherwise makes settle timing
34
+ * depend on whether the window happens to be focused.
35
+ */
36
+ export const DETERMINISTIC_CHROMIUM_ARGS = [
37
+ '--disable-gpu',
38
+ '--disable-gpu-rasterization',
39
+ '--disable-skia-runtime-opts',
40
+ '--disable-lcd-text',
41
+ '--disable-font-subpixel-positioning',
42
+ '--force-color-profile=srgb',
43
+ '--hide-scrollbars',
44
+ '--disable-background-timer-throttling',
45
+ '--disable-backgrounding-occluded-windows',
46
+ '--disable-renderer-backgrounding',
47
+ '--force-device-scale-factor=1',
48
+ ];
49
+ /** Our own flags; `chromeArgs` wraps them with the parity set. */
50
+ export function deterministicLaunchOptions(opts = {}) {
51
+ return {
52
+ headless: opts.headless ?? true,
53
+ args: [...DETERMINISTIC_CHROMIUM_ARGS, ...(opts.args ?? [])],
54
+ };
55
+ }
56
+ /**
57
+ * playwright-core 1.62.0's `chromiumSwitches()` plus its headless additions
58
+ * (`lib/coreBundle.js` L34630–34690, L43067–43097), copied verbatim.
59
+ *
60
+ * The byte-identity spike (spec, 2026-10-13) matched 29/29 example stories
61
+ * against the Playwright pipeline with exactly this list. It was not pruned:
62
+ * a Blink feature flag that changes rasterization — PaintHolding,
63
+ * CDPScreenshotNewSurface — would turn every baseline red, and the gain from
64
+ * dropping any of these is unmeasurable. Change only with a determinism run
65
+ * per removed flag.
66
+ */
67
+ export const PARITY_CHROMIUM_ARGS = [
68
+ '--disable-field-trial-config',
69
+ '--disable-background-networking',
70
+ '--disable-background-timer-throttling',
71
+ '--disable-backgrounding-occluded-windows',
72
+ '--disable-back-forward-cache',
73
+ '--disable-breakpad',
74
+ '--disable-client-side-phishing-detection',
75
+ '--disable-component-extensions-with-background-pages',
76
+ '--disable-component-update',
77
+ '--no-default-browser-check',
78
+ '--disable-default-apps',
79
+ '--disable-dev-shm-usage',
80
+ '--disable-edgeupdater',
81
+ '--disable-extensions',
82
+ '--disable-features=' +
83
+ [
84
+ 'AvoidUnnecessaryBeforeUnloadCheckSync',
85
+ 'BoundaryEventDispatchTracksNodeRemoval',
86
+ 'DestroyProfileOnBrowserClose',
87
+ 'DialMediaRouteProvider',
88
+ 'GlobalMediaControls',
89
+ 'HttpsUpgrades',
90
+ 'LensOverlay',
91
+ 'MediaRouter',
92
+ 'PaintHolding',
93
+ 'ThirdPartyStoragePartitioning',
94
+ 'BlockOriginHeaderModificationOnRedirect',
95
+ 'Translate',
96
+ 'AutoDeElevate',
97
+ 'OptimizationHints',
98
+ 'msForceBrowserSignIn',
99
+ 'msEdgeUpdateLaunchServicesPreferredVersion',
100
+ ].join(','),
101
+ '--enable-features=CDPScreenshotNewSurface',
102
+ '--allow-pre-commit-input',
103
+ '--disable-hang-monitor',
104
+ '--disable-ipc-flooding-protection',
105
+ '--disable-popup-blocking',
106
+ '--disable-prompt-on-repost',
107
+ '--disable-renderer-backgrounding',
108
+ '--disable-updater-scheduler',
109
+ '--force-color-profile=srgb',
110
+ '--metrics-recording-only',
111
+ '--no-first-run',
112
+ '--password-store=basic',
113
+ '--use-mock-keychain',
114
+ '--no-service-autorun',
115
+ '--export-tagged-pdf',
116
+ '--disable-search-engine-choice-screen',
117
+ '--unsafely-disable-devtools-self-xss-warnings',
118
+ '--edge-skip-compat-layer-relaunch',
119
+ '--disable-infobars',
120
+ '--disable-search-engine-choice-screen',
121
+ '--disable-sync',
122
+ ];
123
+ const HEADLESS_ARGS = [
124
+ '--headless',
125
+ '--hide-scrollbars',
126
+ '--mute-audio',
127
+ '--blink-settings=primaryHoverType=2,availableHoverTypes=2,primaryPointerType=4,availablePointerTypes=4',
128
+ ];
129
+ /** The full command line, in Playwright's order so the spike's evidence transfers. */
130
+ export function chromeArgs(opts) {
131
+ const { headless, args } = deterministicLaunchOptions({
132
+ headless: opts.headless,
133
+ args: opts.args,
134
+ });
135
+ return [
136
+ ...PARITY_CHROMIUM_ARGS,
137
+ '--enable-unsafe-swiftshader',
138
+ ...(headless ? HEADLESS_ARGS : []),
139
+ '--no-sandbox',
140
+ ...args,
141
+ `--user-data-dir=${opts.userDataDir}`,
142
+ '--remote-debugging-pipe',
143
+ '--no-startup-window',
144
+ ];
145
+ }
146
+ //# sourceMappingURL=flags.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flags.js","sourceRoot":"","sources":["../../src/browser/flags.ts"],"names":[],"mappings":"AAAA,uDAAuD;AACvD,EAAE;AACF,wEAAwE;AACxE,wEAAwE;AACxE,2EAA2E;AAC3E,gBAAgB;AAChB,EAAE;AACF,0EAA0E;AAC1E,wEAAwE;AACxE,6EAA6E;AAC7E,aAAa;AAEb;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAsB;IAC5D,eAAe;IACf,6BAA6B;IAC7B,6BAA6B;IAC7B,oBAAoB;IACpB,qCAAqC;IACrC,4BAA4B;IAC5B,mBAAmB;IACnB,uCAAuC;IACvC,0CAA0C;IAC1C,kCAAkC;IAClC,+BAA+B;CAChC,CAAC;AAQF,kEAAkE;AAClE,MAAM,UAAU,0BAA0B,CAAC,OAAsB,EAAE;IAIjE,OAAO;QACL,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI;QAC/B,IAAI,EAAE,CAAC,GAAG,2BAA2B,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;KAC7D,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAsB;IACrD,8BAA8B;IAC9B,iCAAiC;IACjC,uCAAuC;IACvC,0CAA0C;IAC1C,8BAA8B;IAC9B,oBAAoB;IACpB,0CAA0C;IAC1C,sDAAsD;IACtD,4BAA4B;IAC5B,4BAA4B;IAC5B,wBAAwB;IACxB,yBAAyB;IACzB,uBAAuB;IACvB,sBAAsB;IACtB,qBAAqB;QACnB;YACE,uCAAuC;YACvC,wCAAwC;YACxC,8BAA8B;YAC9B,wBAAwB;YACxB,qBAAqB;YACrB,eAAe;YACf,aAAa;YACb,aAAa;YACb,cAAc;YACd,+BAA+B;YAC/B,yCAAyC;YACzC,WAAW;YACX,eAAe;YACf,mBAAmB;YACnB,sBAAsB;YACtB,4CAA4C;SAC7C,CAAC,IAAI,CAAC,GAAG,CAAC;IACb,2CAA2C;IAC3C,0BAA0B;IAC1B,wBAAwB;IACxB,mCAAmC;IACnC,0BAA0B;IAC1B,4BAA4B;IAC5B,kCAAkC;IAClC,6BAA6B;IAC7B,4BAA4B;IAC5B,0BAA0B;IAC1B,gBAAgB;IAChB,wBAAwB;IACxB,qBAAqB;IACrB,sBAAsB;IACtB,qBAAqB;IACrB,uCAAuC;IACvC,+CAA+C;IAC/C,mCAAmC;IACnC,oBAAoB;IACpB,uCAAuC;IACvC,gBAAgB;CACjB,CAAC;AAEF,MAAM,aAAa,GAAG;IACpB,YAAY;IACZ,mBAAmB;IACnB,cAAc;IACd,wGAAwG;CACzG,CAAC;AAEF,sFAAsF;AACtF,MAAM,UAAU,UAAU,CAAC,IAI1B;IACC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,0BAA0B,CAAC;QACpD,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,IAAI,EAAE,IAAI,CAAC,IAAI;KAChB,CAAC,CAAC;IACH,OAAO;QACL,GAAG,oBAAoB;QACvB,6BAA6B;QAC7B,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;QAClC,cAAc;QACd,GAAG,IAAI;QACP,mBAAmB,IAAI,CAAC,WAAW,EAAE;QACrC,yBAAyB;QACzB,qBAAqB;KACtB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,14 @@
1
+ export { Browser, BrowserContext, type ContextOptions } from './browser.js';
2
+ export { CdpPage, PageCrashedError, TimeoutError, type Page } from './page.js';
3
+ export { CdpConnection, CdpError, SendTimeoutError, TargetClosedError, SEND_TIMEOUT_MS, type RawMessage, } from './cdp.js';
4
+ export { PipeTransport, SocketTransport, FramedTransport, NullFramer, FrameTooLargeError, type Transport, } from './transport.js';
5
+ export { launchChrome, terminateAll, type LaunchedChrome, type SpawnFn, } from './launch.js';
6
+ export { resolveChrome, juxCacheDir, juxStateDir, chromeInstallDir, chromeBinaryPath, msPlaywrightBinaryPath, noBrowserMessage, NO_BROWSER_MESSAGE, INSTALL_MARKER, type ResolvedChrome, type ResolveOptions, type ChromeSource, } from './resolve.js';
7
+ export { installChrome, proxyHint, type InstallOptions, type InstallResult, } from './install.js';
8
+ export { CHROME_VERSION, CHROME_PINS, MS_PLAYWRIGHT_REVISION, chromePlatform, type ChromePlatform, type ChromePin, } from './pins.js';
9
+ export { isCssSelector, assertCssSelector, QUERY_ALL_SOURCE, queryAllExpression, } from './selectors.js';
10
+ export { connectWarmBrowser, daemonEnabled, daemonStatus, startDaemon, stopDaemon, CI_ENV_VARS, type WarmOptions, type SpawnArgs, type StopResult, type CommandReader, } from './daemon/client.js';
11
+ export { acquireBrowser, type AcquireOptions } from './acquire.js';
12
+ export { daemonSupported, type DaemonState } from './daemon/state.js';
13
+ export { chromeArgs, deterministicLaunchOptions, DETERMINISTIC_CHROMIUM_ARGS, PARITY_CHROMIUM_ARGS, type LaunchOptions, } from './flags.js';
14
+ export type { Viewport } from './types.js';
@@ -0,0 +1,14 @@
1
+ export { Browser, BrowserContext } from './browser.js';
2
+ export { CdpPage, PageCrashedError, TimeoutError } from './page.js';
3
+ export { CdpConnection, CdpError, SendTimeoutError, TargetClosedError, SEND_TIMEOUT_MS, } from './cdp.js';
4
+ export { PipeTransport, SocketTransport, FramedTransport, NullFramer, FrameTooLargeError, } from './transport.js';
5
+ export { launchChrome, terminateAll, } from './launch.js';
6
+ export { resolveChrome, juxCacheDir, juxStateDir, chromeInstallDir, chromeBinaryPath, msPlaywrightBinaryPath, noBrowserMessage, NO_BROWSER_MESSAGE, INSTALL_MARKER, } from './resolve.js';
7
+ export { installChrome, proxyHint, } from './install.js';
8
+ export { CHROME_VERSION, CHROME_PINS, MS_PLAYWRIGHT_REVISION, chromePlatform, } from './pins.js';
9
+ export { isCssSelector, assertCssSelector, QUERY_ALL_SOURCE, queryAllExpression, } from './selectors.js';
10
+ export { connectWarmBrowser, daemonEnabled, daemonStatus, startDaemon, stopDaemon, CI_ENV_VARS, } from './daemon/client.js';
11
+ export { acquireBrowser } from './acquire.js';
12
+ export { daemonSupported } from './daemon/state.js';
13
+ export { chromeArgs, deterministicLaunchOptions, DETERMINISTIC_CHROMIUM_ARGS, PARITY_CHROMIUM_ARGS, } from './flags.js';
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/browser/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,cAAc,EAAuB,MAAM,cAAc,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAa,MAAM,WAAW,CAAC;AAC/E,OAAO,EACL,aAAa,EACb,QAAQ,EACR,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,GAEhB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,aAAa,EACb,eAAe,EACf,eAAe,EACf,UAAU,EACV,kBAAkB,GAEnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,YAAY,EACZ,YAAY,GAGb,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,aAAa,EACb,WAAW,EACX,WAAW,EACX,gBAAgB,EAChB,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,GAIf,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,aAAa,EACb,SAAS,GAGV,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,cAAc,EACd,WAAW,EACX,sBAAsB,EACtB,cAAc,GAGf,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,YAAY,EACZ,WAAW,EACX,UAAU,EACV,WAAW,GAKZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAuB,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,eAAe,EAAoB,MAAM,mBAAmB,CAAC;AACtE,OAAO,EACL,UAAU,EACV,0BAA0B,EAC1B,2BAA2B,EAC3B,oBAAoB,GAErB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { type ChromePin, type ChromePlatform } from './pins.js';
2
+ import { type ChromeSource } from './resolve.js';
3
+ import { installZip } from './zip.js';
4
+ export interface InstallOptions {
5
+ cacheDir: string;
6
+ platform?: ChromePlatform;
7
+ fetch?: typeof fetch;
8
+ env?: NodeJS.ProcessEnv;
9
+ onProgress?: (received: number, total: number | null) => void;
10
+ /** Test seam: a pin for a fixture zip. */
11
+ pin?: ChromePin;
12
+ /** Reinstall even when a usable browser is already in the jux or Playwright cache. */
13
+ force?: boolean;
14
+ /** Test seams: the flags this Node accepts, and the zip installer. */
15
+ nodeFlags?: ReadonlySet<string>;
16
+ installZip?: typeof installZip;
17
+ }
18
+ export interface InstallResult {
19
+ path: string;
20
+ version: string;
21
+ alreadyInstalled: boolean;
22
+ /** Where an existing browser was found; absent after a fresh install. */
23
+ source?: ChromeSource;
24
+ }
25
+ export declare function proxyHint(env: NodeJS.ProcessEnv, nodeFlags?: ReadonlySet<string>): string;
26
+ /**
27
+ * Extra node args for the CLI to re-exec with, or null. Detects the flag
28
+ * rather than comparing versions: it is whatever this Node accepts.
29
+ */
30
+ export declare function proxyReexecArgs(env: NodeJS.ProcessEnv, nodeFlags?: ReadonlySet<string>, execArgv?: readonly string[]): string[] | null;
31
+ /** A progress callback for stderr, or undefined when stderr is not a TTY. */
32
+ export declare function stderrProgress(stream?: Pick<NodeJS.WriteStream, 'isTTY' | 'write'>): InstallOptions['onProgress'];
33
+ export declare function installChrome(opts: InstallOptions): Promise<InstallResult>;
@@ -0,0 +1,167 @@
1
+ // packages/core/src/browser/install.ts
2
+ //
3
+ // Download -> sha256 + byte length -> installZip (extract to a temp sibling,
4
+ // marker written inside it, atomic swap) -> verify the result runs. The marker
5
+ // is what resolve.ts trusts, so it goes in before the swap and an interrupted
6
+ // install can never be mistaken for a working one.
7
+ //
8
+ // Proxies: Node's global fetch ignores HTTPS_PROXY unless the process runs
9
+ // with NODE_USE_ENV_PROXY=1 / --use-env-proxy (Node 24+). We cannot set that
10
+ // inside a running process, so the CLI re-executes itself with the flag when
11
+ // a proxy variable is present (`proxyReexecArgs`), and this module names the
12
+ // variable in the error for every other caller (Node 22 included).
13
+ import { execFile } from 'node:child_process';
14
+ import { createHash } from 'node:crypto';
15
+ import { stat, rm } from 'node:fs/promises';
16
+ import path from 'node:path';
17
+ import { CHROME_PINS, CHROME_VERSION, chromePlatform, } from './pins.js';
18
+ import { chromeBinaryPath, chromeInstallDir, INSTALL_MARKER, resolveChrome, } from './resolve.js';
19
+ import { installZip } from './zip.js';
20
+ const PROXY_VARS = ['HTTPS_PROXY', 'https_proxy', 'HTTP_PROXY', 'http_proxy'];
21
+ const PROXY_FLAG = '--use-env-proxy';
22
+ export function proxyHint(env, nodeFlags = process.allowedNodeEnvironmentFlags) {
23
+ const set = PROXY_VARS.find((v) => env[v]);
24
+ if (!set)
25
+ return '';
26
+ const fix = nodeFlags.has(PROXY_FLAG)
27
+ ? 're-run with NODE_USE_ENV_PROXY=1, or'
28
+ : `this Node lacks ${PROXY_FLAG}, so`;
29
+ return ` ${set} is set but Node's fetch does not use it by default: ${fix} download the zip yourself and set JUX_CHROME.`;
30
+ }
31
+ /**
32
+ * Extra node args for the CLI to re-exec with, or null. Detects the flag
33
+ * rather than comparing versions: it is whatever this Node accepts.
34
+ */
35
+ export function proxyReexecArgs(env, nodeFlags = process.allowedNodeEnvironmentFlags, execArgv = process.execArgv) {
36
+ if (!PROXY_VARS.some((v) => env[v]))
37
+ return null;
38
+ if (env.NODE_USE_ENV_PROXY === '1' || execArgv.includes(PROXY_FLAG))
39
+ return null;
40
+ return nodeFlags.has(PROXY_FLAG) ? [PROXY_FLAG] : null;
41
+ }
42
+ /** A progress callback for stderr, or undefined when stderr is not a TTY. */
43
+ export function stderrProgress(stream = process.stderr) {
44
+ if (!stream.isTTY)
45
+ return undefined;
46
+ return (received, total) => {
47
+ const mb = (received / 1048576).toFixed(1);
48
+ const of = total ? ` / ${(total / 1048576).toFixed(1)}` : '';
49
+ stream.write(`\rjux: downloading chrome-headless-shell ${mb}${of} MB`);
50
+ if (total !== null && received >= total)
51
+ stream.write('\n');
52
+ };
53
+ }
54
+ // resolveChrome speaks Node's platform/arch, not Chrome for Testing's.
55
+ const NODE_TARGET = {
56
+ linux64: { platform: 'linux', arch: 'x64' },
57
+ 'mac-arm64': { platform: 'darwin', arch: 'arm64' },
58
+ 'mac-x64': { platform: 'darwin', arch: 'x64' },
59
+ win64: { platform: 'win32', arch: 'x64' },
60
+ };
61
+ export async function installChrome(opts) {
62
+ const platform = opts.platform ?? chromePlatform();
63
+ const pin = opts.pin ?? CHROME_PINS[platform];
64
+ const env = opts.env ?? process.env;
65
+ const installDir = chromeInstallDir(opts.cacheDir, CHROME_VERSION);
66
+ const binary = chromeBinaryPath(installDir, platform);
67
+ if (!opts.force) {
68
+ // JUX_CHROME is not "installed": it may point anywhere, so ignore it here.
69
+ const { JUX_CHROME: _ignored, ...rest } = env;
70
+ const found = resolveChrome({
71
+ ...NODE_TARGET[platform],
72
+ env: { ...rest, JUX_CACHE_DIR: opts.cacheDir },
73
+ });
74
+ if (found) {
75
+ return {
76
+ path: found.path,
77
+ version: CHROME_VERSION,
78
+ alreadyInstalled: true,
79
+ source: found.source,
80
+ };
81
+ }
82
+ }
83
+ const nodeFlags = opts.nodeFlags ?? process.allowedNodeEnvironmentFlags;
84
+ const nextStep = `Retry with \`npx -p @juxtapose/cli jux browser install\`, or download ${pin.url} yourself and set JUX_CHROME to the chrome-headless-shell binary inside it.`;
85
+ const doFetch = opts.fetch ?? fetch;
86
+ let res;
87
+ try {
88
+ res = await doFetch(pin.url);
89
+ }
90
+ catch (err) {
91
+ throw new Error(`jux: download failed for ${pin.url}: ${err.message}.${proxyHint(env, nodeFlags)} ${nextStep}`, { cause: err });
92
+ }
93
+ if (!res.ok || !res.body)
94
+ throw new Error(`jux: download failed: HTTP ${res.status} for ${pin.url}. ${nextStep}`);
95
+ const total = Number(res.headers.get('content-length')) || null;
96
+ // Streamed into the hash and a chunk list: ~120 MB held once, not twice.
97
+ const chunks = [];
98
+ let received = 0;
99
+ let overLength = false;
100
+ const hash = createHash('sha256');
101
+ try {
102
+ for await (const chunk of res.body) {
103
+ const b = Buffer.from(chunk);
104
+ received += b.length;
105
+ // A server streaming past the pinned size is wrong already; stop buffering.
106
+ if (received > pin.bytes) {
107
+ overLength = true;
108
+ break;
109
+ }
110
+ chunks.push(b);
111
+ hash.update(b);
112
+ opts.onProgress?.(received, total);
113
+ }
114
+ }
115
+ catch (err) {
116
+ throw new Error(`jux: download interrupted for ${pin.url}: ${err.message}.${proxyHint(env, nodeFlags)} ${nextStep}`, { cause: err });
117
+ }
118
+ const digest = hash.digest('hex');
119
+ if (!overLength && digest !== pin.sha256) {
120
+ throw new Error(`jux: sha256 mismatch for ${pin.url}: expected ${pin.sha256}, got ${digest}. ` +
121
+ `The download is corrupt or the published file changed; nothing was installed. ${nextStep}`);
122
+ }
123
+ if (overLength || received !== pin.bytes) {
124
+ throw new Error(`jux: length mismatch for ${pin.url}: expected ${pin.bytes} bytes, got ${overLength ? `more than ${pin.bytes}` : received} bytes. ` +
125
+ `The download is truncated or the published file changed; nothing was installed. ${nextStep}`);
126
+ }
127
+ await (opts.installZip ?? installZip)(Buffer.concat(chunks), installDir, {
128
+ marker: INSTALL_MARKER,
129
+ });
130
+ await verifyInstall(installDir, binary);
131
+ return { path: binary, version: CHROME_VERSION, alreadyInstalled: false };
132
+ }
133
+ /**
134
+ * installZip resolves when a concurrent installer "won" the swap, which can
135
+ * also mask a permission error. Trust only what is on disk and runs.
136
+ */
137
+ async function verifyInstall(installDir, binary) {
138
+ const fail = async (why) => {
139
+ // Also removes a concurrent installer's dir when that one is the broken one: it is unusable either way.
140
+ await rm(installDir, { recursive: true, force: true });
141
+ throw new Error(`jux: install of chrome-headless-shell ${CHROME_VERSION} into ${installDir} is not usable: ${why}. ` +
142
+ 'Check permissions on the cache directory (JUX_CACHE_DIR) and retry.');
143
+ };
144
+ if (!(await exists(path.join(installDir, INSTALL_MARKER))))
145
+ return fail(`${INSTALL_MARKER} marker is missing`);
146
+ if (!(await exists(binary)))
147
+ return fail(`${binary} is missing`);
148
+ let out;
149
+ try {
150
+ out = await new Promise((resolve, reject) => execFile(binary, ['--version'], { timeout: 15_000 }, (err, stdout) => err ? reject(err) : resolve(stdout)));
151
+ }
152
+ catch (err) {
153
+ return fail(`\`${binary} --version\` failed: ${err.message}`);
154
+ }
155
+ if (!out.includes(CHROME_VERSION))
156
+ return fail(`\`--version\` printed ${JSON.stringify(out.trim())}, expected ${CHROME_VERSION}`);
157
+ }
158
+ async function exists(p) {
159
+ try {
160
+ await stat(p);
161
+ return true;
162
+ }
163
+ catch {
164
+ return false;
165
+ }
166
+ }
167
+ //# sourceMappingURL=install.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/browser/install.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ import { spawn as nodeSpawn } from 'node:child_process';
2
+ import { CdpConnection } from './cdp.js';
3
+ export type SpawnFn = typeof nodeSpawn;
4
+ export interface LaunchedChrome {
5
+ connection: CdpConnection;
6
+ pid: number;
7
+ userDataDir: string;
8
+ close(): Promise<void>;
9
+ }
10
+ /** Kill every live Chrome and remove its profile, synchronously. Exported for tests. */
11
+ export declare function terminateAll(): void;
12
+ /**
13
+ * Remove profiles left by a jux that was SIGKILLed or lost power: named
14
+ * `jux-chrome-<pid>-…`, owner pid dead, untouched for 10 minutes. Anything
15
+ * else in the directory is not ours to touch.
16
+ */
17
+ export declare function sweepStaleProfiles(dir: string): Promise<void>;
18
+ /**
19
+ * The per-user directory every profile lives in. A shared tmpdir lets another
20
+ * user plant `jux-chrome-<dead pid>-x` (or swap one under us) and have our
21
+ * sweep delete through it, so profiles and the sweep stay inside a directory
22
+ * only we can write. Verified with lstat, never chmod/chown'd: a dir that is
23
+ * not ours is refused, not repaired. Windows has no uid; its tmpdir is already
24
+ * per-user.
25
+ */
26
+ export declare function privateProfileRoot(opts?: {
27
+ base?: string;
28
+ uid?: number | undefined;
29
+ }): Promise<string>;
30
+ export declare function launchChrome(opts: {
31
+ executablePath: string;
32
+ args?: string[];
33
+ headless?: boolean;
34
+ spawn?: SpawnFn;
35
+ /** Test seam: how long to wait for Browser.getVersion before giving up. */
36
+ handshakeTimeoutMs?: number;
37
+ }): Promise<LaunchedChrome>;