rebrowser-playwright-core 1.49.0 → 1.52.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/ThirdPartyNotices.txt +381 -55
- package/bin/reinstall_msedge_beta_linux.sh +6 -0
- package/bin/reinstall_msedge_dev_linux.sh +6 -0
- package/bin/reinstall_msedge_stable_linux.sh +6 -0
- package/browsers.json +28 -13
- package/index.js +0 -1
- package/lib/androidServerImpl.js +42 -48
- package/lib/browserServerImpl.js +60 -64
- package/lib/cli/driver.js +71 -69
- package/lib/cli/program.js +314 -354
- package/lib/cli/programWithTestStub.js +51 -44
- package/lib/client/accessibility.js +31 -32
- package/lib/client/android.js +146 -254
- package/lib/client/api.js +135 -283
- package/lib/client/artifact.js +39 -39
- package/lib/client/browser.js +59 -68
- package/lib/client/browserContext.js +302 -322
- package/lib/client/browserType.js +95 -143
- package/lib/client/cdpSession.js +29 -31
- package/lib/client/channelOwner.js +109 -139
- package/lib/client/clientHelper.js +49 -42
- package/lib/client/clientInstrumentation.js +40 -35
- package/lib/client/clientStackTrace.js +69 -0
- package/lib/client/clock.js +36 -36
- package/lib/client/connection.js +203 -218
- package/lib/client/consoleMessage.js +33 -33
- package/lib/client/coverage.js +25 -22
- package/lib/client/dialog.js +30 -31
- package/lib/client/download.js +25 -25
- package/lib/client/electron.js +74 -76
- package/lib/client/elementHandle.js +126 -163
- package/lib/client/errors.js +53 -53
- package/lib/client/eventEmitter.js +127 -127
- package/lib/client/events.js +72 -68
- package/lib/client/fetch.js +154 -178
- package/lib/client/fileChooser.js +25 -24
- package/lib/client/fileUtils.js +34 -0
- package/lib/client/frame.js +189 -307
- package/lib/client/harRouter.js +44 -56
- package/lib/client/input.js +40 -69
- package/lib/client/jsHandle.js +55 -71
- package/lib/client/jsonPipe.js +27 -23
- package/lib/client/localUtils.js +53 -28
- package/lib/client/locator.js +144 -230
- package/lib/client/network.js +285 -301
- package/lib/client/page.js +273 -312
- package/lib/client/platform.js +74 -0
- package/lib/client/playwright.js +62 -57
- package/lib/client/selectors.js +51 -43
- package/lib/client/stream.js +30 -45
- package/lib/client/timeoutSettings.js +75 -0
- package/lib/client/tracing.js +49 -82
- package/lib/client/types.js +26 -22
- package/lib/client/video.js +35 -27
- package/lib/client/waiter.js +71 -91
- package/lib/client/webError.js +25 -23
- package/lib/client/webSocket.js +111 -0
- package/lib/client/worker.js +48 -56
- package/lib/client/writableStream.js +28 -43
- package/lib/generated/clockSource.js +26 -5
- package/lib/generated/consoleApiSource.js +26 -5
- package/lib/generated/injectedScriptSource.js +26 -5
- package/lib/generated/pollingRecorderSource.js +26 -5
- package/lib/generated/utilityScriptSource.js +26 -5
- package/lib/generated/webSocketMockSource.js +375 -4
- package/lib/inProcessFactory.js +53 -48
- package/lib/inprocess.js +2 -19
- package/lib/outofprocess.js +53 -42
- package/lib/protocol/debug.js +209 -25
- package/lib/protocol/serializers.js +153 -134
- package/lib/protocol/validator.js +2712 -2667
- package/lib/protocol/validatorPrimitives.js +115 -75
- package/lib/remote/playwrightConnection.js +144 -152
- package/lib/remote/playwrightServer.js +106 -77
- package/lib/server/accessibility.js +44 -37
- package/lib/server/android/android.js +216 -206
- package/lib/server/android/backendAdb.js +89 -82
- package/lib/server/artifact.js +78 -55
- package/lib/server/bidi/bidiBrowser.js +227 -158
- package/lib/server/bidi/bidiChromium.js +106 -78
- package/lib/server/bidi/bidiConnection.js +66 -83
- package/lib/server/bidi/bidiExecutionContext.js +161 -97
- package/lib/server/bidi/bidiFirefox.js +76 -68
- package/lib/server/bidi/bidiInput.js +90 -102
- package/lib/server/bidi/bidiNetworkManager.js +141 -159
- package/lib/server/bidi/bidiOverCdp.js +57 -58
- package/lib/server/bidi/bidiPage.js +262 -261
- package/lib/server/bidi/bidiPdf.js +52 -86
- package/lib/server/bidi/third_party/bidiCommands.d.js +22 -0
- package/lib/server/bidi/third_party/bidiDeserializer.js +55 -50
- package/lib/server/bidi/third_party/bidiKeyboard.js +241 -223
- package/lib/server/bidi/third_party/bidiProtocol.js +144 -131
- package/lib/server/bidi/third_party/bidiSerializer.js +67 -63
- package/lib/server/bidi/third_party/firefoxPrefs.js +149 -111
- package/lib/server/browser.js +76 -84
- package/lib/server/browserContext.js +343 -360
- package/lib/server/browserType.js +169 -181
- package/lib/server/callLog.js +82 -0
- package/lib/server/chromium/chromium.js +212 -190
- package/lib/server/chromium/chromiumSwitches.js +99 -44
- package/lib/server/chromium/crAccessibility.js +157 -131
- package/lib/server/chromium/crBrowser.js +262 -280
- package/lib/server/chromium/crConnection.js +121 -178
- package/lib/server/chromium/crCoverage.js +113 -127
- package/lib/server/chromium/crDevTools.js +64 -55
- package/lib/server/chromium/crDragDrop.js +62 -79
- package/lib/server/chromium/crExecutionContext.js +100 -91
- package/lib/server/chromium/crInput.js +101 -88
- package/lib/server/chromium/crNetworkManager.js +269 -370
- package/lib/server/chromium/crPage.js +509 -595
- package/lib/server/chromium/crPdf.js +54 -86
- package/lib/server/chromium/crProtocolHelper.js +92 -80
- package/lib/server/chromium/crServiceWorker.js +85 -69
- package/lib/server/chromium/defaultFontFamilies.js +152 -135
- package/lib/server/chromium/protocol.d.js +16 -0
- package/lib/server/chromium/videoRecorder.js +65 -99
- package/lib/server/clock.js +58 -46
- package/lib/server/codegen/csharp.js +191 -156
- package/lib/server/codegen/java.js +163 -125
- package/lib/server/codegen/javascript.js +166 -143
- package/lib/server/codegen/jsonl.js +33 -29
- package/lib/server/codegen/language.js +75 -52
- package/lib/server/codegen/languages.js +65 -27
- package/lib/server/codegen/python.js +141 -125
- package/lib/server/codegen/types.js +15 -4
- package/lib/server/console.js +28 -32
- package/lib/server/cookieStore.js +105 -86
- package/lib/server/debugController.js +102 -154
- package/lib/server/debugger.js +82 -78
- package/lib/server/deviceDescriptors.js +37 -24
- package/lib/server/deviceDescriptorsSource.json +131 -131
- package/lib/server/dialog.js +36 -35
- package/lib/server/dispatchers/androidDispatcher.js +196 -107
- package/lib/server/dispatchers/artifactDispatcher.js +62 -62
- package/lib/server/dispatchers/browserContextDispatcher.js +177 -217
- package/lib/server/dispatchers/browserDispatcher.js +78 -97
- package/lib/server/dispatchers/browserTypeDispatcher.js +35 -35
- package/lib/server/dispatchers/cdpSessionDispatcher.js +32 -36
- package/lib/server/dispatchers/debugControllerDispatcher.js +48 -64
- package/lib/server/dispatchers/dialogDispatcher.js +30 -27
- package/lib/server/dispatchers/dispatcher.js +180 -229
- package/lib/server/dispatchers/electronDispatcher.js +54 -57
- package/lib/server/dispatchers/elementHandlerDispatcher.js +79 -116
- package/lib/server/dispatchers/frameDispatcher.js +93 -162
- package/lib/server/dispatchers/jsHandleDispatcher.js +49 -66
- package/lib/server/dispatchers/jsonPipeDispatcher.js +35 -36
- package/lib/server/dispatchers/localUtilsDispatcher.js +107 -365
- package/lib/server/dispatchers/networkDispatchers.js +92 -109
- package/lib/server/dispatchers/pageDispatcher.js +130 -169
- package/lib/server/dispatchers/playwrightDispatcher.js +69 -76
- package/lib/server/dispatchers/selectorsDispatcher.js +28 -24
- package/lib/server/dispatchers/streamDispatcher.js +42 -44
- package/lib/server/dispatchers/tracingDispatcher.js +36 -41
- package/lib/server/dispatchers/webSocketRouteDispatcher.js +100 -135
- package/lib/server/dispatchers/writableStreamDispatcher.js +54 -39
- package/lib/server/dom.js +424 -443
- package/lib/server/download.js +45 -35
- package/lib/server/electron/electron.js +156 -175
- package/lib/server/electron/loader.js +8 -36
- package/lib/server/errors.js +47 -46
- package/lib/server/fetch.js +302 -331
- package/lib/server/fileChooser.js +25 -24
- package/lib/server/fileUploadUtils.js +66 -57
- package/lib/server/firefox/ffAccessibility.js +153 -131
- package/lib/server/firefox/ffBrowser.js +218 -274
- package/lib/server/firefox/ffConnection.js +63 -84
- package/lib/server/firefox/ffExecutionContext.js +103 -77
- package/lib/server/firefox/ffInput.js +72 -63
- package/lib/server/firefox/ffNetworkManager.js +131 -110
- package/lib/server/firefox/ffPage.js +244 -302
- package/lib/server/firefox/firefox.js +76 -69
- package/lib/server/firefox/protocol.d.js +16 -0
- package/lib/server/formData.js +107 -35
- package/lib/server/frameSelectors.js +77 -111
- package/lib/server/frames.js +719 -855
- package/lib/server/har/harRecorder.js +85 -77
- package/lib/server/har/harTracer.js +288 -224
- package/lib/server/harBackend.js +157 -0
- package/lib/server/helper.js +56 -59
- package/lib/server/index.js +59 -106
- package/lib/server/input.js +136 -166
- package/lib/server/instrumentation.js +49 -44
- package/lib/server/javascript.js +157 -151
- package/lib/server/launchApp.js +92 -73
- package/lib/server/localUtils.js +211 -0
- package/lib/server/macEditingCommands.js +141 -137
- package/lib/server/network.js +263 -297
- package/lib/server/page.js +353 -432
- package/lib/server/pageBinding.js +88 -0
- package/lib/server/pipeTransport.js +49 -45
- package/lib/server/playwright.js +60 -67
- package/lib/server/progress.js +56 -51
- package/lib/server/protocolError.js +34 -31
- package/lib/server/recorder/chat.js +161 -0
- package/lib/server/recorder/contextRecorder.js +135 -148
- package/lib/server/recorder/recorderApp.js +129 -132
- package/lib/server/recorder/recorderCollection.js +57 -57
- package/lib/server/recorder/recorderFrontend.js +15 -4
- package/lib/server/recorder/recorderRunner.js +80 -100
- package/lib/server/recorder/recorderUtils.js +59 -72
- package/lib/server/recorder/throttledFile.js +42 -31
- package/lib/server/recorder.js +186 -190
- package/lib/server/registry/browserFetcher.js +107 -100
- package/lib/server/registry/dependencies.js +247 -198
- package/lib/server/registry/index.js +928 -709
- package/lib/server/registry/nativeDeps.js +1073 -461
- package/lib/server/registry/oopDownloadBrowserMain.js +57 -75
- package/lib/server/screenshotter.js +166 -182
- package/lib/server/selectors.js +85 -46
- package/lib/server/socksClientCertificatesInterceptor.js +166 -185
- package/lib/server/socksInterceptor.js +62 -67
- package/lib/server/storageScript.js +154 -0
- package/lib/server/timeoutSettings.js +89 -0
- package/lib/server/trace/recorder/snapshotter.js +70 -88
- package/lib/server/trace/recorder/snapshotterInjected.js +246 -218
- package/lib/server/trace/recorder/tracing.js +324 -327
- package/lib/server/trace/test/inMemorySnapshotter.js +46 -52
- package/lib/server/trace/viewer/traceViewer.js +172 -137
- package/lib/server/transport.js +125 -133
- package/lib/server/types.js +26 -22
- package/lib/server/usKeyboardLayout.js +135 -545
- package/lib/server/utils/ascii.js +44 -0
- package/lib/server/utils/comparators.js +161 -0
- package/lib/server/utils/crypto.js +216 -0
- package/lib/server/utils/debug.js +47 -0
- package/lib/server/utils/debugLogger.js +114 -0
- package/lib/server/utils/env.js +68 -0
- package/lib/server/utils/eventsHelper.js +39 -0
- package/lib/server/utils/expectUtils.js +38 -0
- package/lib/server/utils/fileUtils.js +191 -0
- package/lib/server/utils/happyEyeballs.js +207 -0
- package/lib/server/utils/hostPlatform.js +109 -0
- package/lib/server/utils/httpServer.js +218 -0
- package/lib/server/utils/image_tools/colorUtils.js +89 -0
- package/lib/{image_tools → server/utils/image_tools}/compare.js +44 -43
- package/lib/server/utils/image_tools/imageChannel.js +78 -0
- package/lib/{image_tools → server/utils/image_tools}/stats.js +40 -40
- package/lib/server/utils/linuxUtils.js +71 -0
- package/lib/server/utils/network.js +217 -0
- package/lib/server/utils/nodePlatform.js +148 -0
- package/lib/server/utils/pipeTransport.js +84 -0
- package/lib/server/utils/processLauncher.js +238 -0
- package/lib/server/utils/profiler.js +65 -0
- package/lib/server/utils/socksProxy.js +511 -0
- package/lib/server/utils/spawnAsync.js +41 -0
- package/lib/server/utils/task.js +51 -0
- package/lib/server/utils/userAgent.js +98 -0
- package/lib/server/utils/wsServer.js +132 -0
- package/lib/server/utils/zipFile.js +74 -0
- package/lib/server/utils/zones.js +57 -0
- package/lib/server/webkit/protocol.d.js +16 -0
- package/lib/server/webkit/webkit.js +76 -63
- package/lib/server/webkit/wkAccessibility.js +161 -118
- package/lib/server/webkit/wkBrowser.js +163 -180
- package/lib/server/webkit/wkConnection.js +59 -83
- package/lib/server/webkit/wkExecutionContext.js +96 -73
- package/lib/server/webkit/wkInput.js +87 -75
- package/lib/server/webkit/wkInterceptableRequest.js +102 -95
- package/lib/server/webkit/wkPage.js +536 -645
- package/lib/server/webkit/wkProvisionalPage.js +45 -56
- package/lib/server/webkit/wkWorkers.js +77 -77
- package/lib/utils/isomorphic/ariaSnapshot.js +245 -128
- package/lib/utils/isomorphic/assert.js +31 -0
- package/lib/utils/isomorphic/builtins.js +90 -0
- package/lib/utils/isomorphic/colors.js +72 -0
- package/lib/utils/isomorphic/cssParser.js +123 -127
- package/lib/utils/isomorphic/cssTokenizer.js +436 -364
- package/lib/utils/isomorphic/headers.js +53 -0
- package/lib/utils/isomorphic/locatorGenerators.js +344 -349
- package/lib/utils/isomorphic/locatorParser.js +103 -106
- package/lib/utils/isomorphic/locatorUtils.js +63 -44
- package/lib/utils/isomorphic/manualPromise.js +115 -0
- package/lib/utils/isomorphic/mimeType.js +453 -22
- package/lib/utils/isomorphic/multimap.js +81 -0
- package/lib/utils/isomorphic/rtti.js +43 -0
- package/lib/utils/isomorphic/selectorParser.js +183 -193
- package/lib/utils/isomorphic/semaphore.js +54 -0
- package/lib/utils/isomorphic/stackTrace.js +158 -0
- package/lib/utils/isomorphic/stringUtils.js +113 -106
- package/lib/utils/isomorphic/time.js +44 -0
- package/lib/utils/isomorphic/timeoutRunner.js +67 -0
- package/lib/utils/isomorphic/traceUtils.js +52 -32
- package/lib/utils/isomorphic/types.js +16 -0
- package/lib/utils/isomorphic/urlMatch.js +114 -71
- package/lib/utils/isomorphic/utilityScriptSerializers.js +248 -0
- package/lib/utils.js +101 -0
- package/lib/utilsBundle.js +101 -76
- package/lib/utilsBundleImpl/index.js +114 -116
- package/lib/vite/htmlReport/index.html +26 -20
- package/lib/vite/recorder/assets/codeMirrorModule-DVQi6prl.js +24 -0
- package/lib/vite/recorder/assets/index-97EUAAbk.js +184 -0
- package/lib/vite/recorder/assets/{index-iA1aAGZg.css → index-eHBmevrY.css} +1 -1
- package/lib/vite/recorder/index.html +2 -2
- package/lib/vite/traceViewer/assets/codeMirrorModule-DwAiTpyC.js +24 -0
- package/lib/vite/traceViewer/assets/defaultSettingsView-DkkRvn5X.js +265 -0
- package/lib/vite/traceViewer/assets/{xtermModule-BeNbaIVa.js → xtermModule-BoAIEibi.js} +7 -7
- package/lib/vite/traceViewer/defaultSettingsView.QdHITyLI.css +1 -0
- package/lib/vite/traceViewer/index.DvtSwn6E.js +2 -0
- package/lib/vite/traceViewer/index.html +4 -7
- package/lib/vite/traceViewer/sw.bundle.js +3 -3
- package/lib/vite/traceViewer/{uiMode.voC1ZiOQ.css → uiMode.BatfzHMG.css} +1 -1
- package/lib/vite/traceViewer/uiMode.Sdytl9wc.js +5 -0
- package/lib/vite/traceViewer/uiMode.html +4 -7
- package/lib/zipBundle.js +32 -23
- package/lib/zipBundleImpl.js +4 -4
- package/package.json +7 -7
- package/types/protocol.d.ts +819 -127
- package/types/types.d.ts +196 -75
- package/bin/PrintDeps.exe +0 -0
- package/bin/README.md +0 -2
- package/lib/common/socksProxy.js +0 -569
- package/lib/common/timeoutSettings.js +0 -73
- package/lib/common/types.js +0 -5
- package/lib/image_tools/colorUtils.js +0 -98
- package/lib/image_tools/imageChannel.js +0 -70
- package/lib/protocol/transport.js +0 -82
- package/lib/server/ariaSnapshot.js +0 -33
- package/lib/server/isomorphic/utilityScriptSerializers.js +0 -226
- package/lib/server/recorder/recorderInTraceViewer.js +0 -144
- package/lib/utils/ascii.js +0 -31
- package/lib/utils/comparators.js +0 -153
- package/lib/utils/crypto.js +0 -171
- package/lib/utils/debug.js +0 -46
- package/lib/utils/debugLogger.js +0 -91
- package/lib/utils/env.js +0 -49
- package/lib/utils/eventsHelper.js +0 -38
- package/lib/utils/expectUtils.js +0 -33
- package/lib/utils/fileUtils.js +0 -205
- package/lib/utils/happy-eyeballs.js +0 -194
- package/lib/utils/headers.js +0 -52
- package/lib/utils/hostPlatform.js +0 -139
- package/lib/utils/httpServer.js +0 -237
- package/lib/utils/index.js +0 -368
- package/lib/utils/isomorphic/recorderUtils.js +0 -227
- package/lib/utils/linuxUtils.js +0 -78
- package/lib/utils/manualPromise.js +0 -109
- package/lib/utils/multimap.js +0 -75
- package/lib/utils/network.js +0 -160
- package/lib/utils/processLauncher.js +0 -248
- package/lib/utils/profiler.js +0 -53
- package/lib/utils/rtti.js +0 -44
- package/lib/utils/semaphore.js +0 -51
- package/lib/utils/sequence.js +0 -64
- package/lib/utils/spawnAsync.js +0 -45
- package/lib/utils/stackTrace.js +0 -134
- package/lib/utils/task.js +0 -58
- package/lib/utils/time.js +0 -37
- package/lib/utils/timeoutRunner.js +0 -66
- package/lib/utils/traceUtils.js +0 -44
- package/lib/utils/userAgent.js +0 -105
- package/lib/utils/wsServer.js +0 -127
- package/lib/utils/zipFile.js +0 -75
- package/lib/utils/zones.js +0 -71
- package/lib/vite/recorder/assets/codeMirrorModule-AFvV6hAs.js +0 -24
- package/lib/vite/recorder/assets/index-_cTWgVuJ.js +0 -184
- package/lib/vite/traceViewer/assets/codeMirrorModule-KatbITLF.js +0 -24
- package/lib/vite/traceViewer/assets/inspectorTab-DdpLd2bb.js +0 -68
- package/lib/vite/traceViewer/assets/testServerConnection-DeE2kSzz.js +0 -1
- package/lib/vite/traceViewer/assets/workbench-CdYbzWFD.js +0 -9
- package/lib/vite/traceViewer/embedded.6m3UZh7r.js +0 -2
- package/lib/vite/traceViewer/embedded.html +0 -18
- package/lib/vite/traceViewer/embedded.w7WN2u1R.css +0 -1
- package/lib/vite/traceViewer/index.WUV-8boJ.js +0 -2
- package/lib/vite/traceViewer/inspectorTab.DEOUW62d.css +0 -1
- package/lib/vite/traceViewer/recorder.B_SY1GJM.css +0 -0
- package/lib/vite/traceViewer/recorder.OT2tVHgn.js +0 -2
- package/lib/vite/traceViewer/recorder.html +0 -17
- package/lib/vite/traceViewer/uiMode.BZBTyvGn.js +0 -5
- package/lib/vite/traceViewer/workbench.C-zR9ysA.css +0 -1
- /package/lib/vite/recorder/assets/{codeMirrorModule-ez37Vkbh.css → codeMirrorModule-C3UTv-Ge.css} +0 -0
- /package/lib/vite/traceViewer/{codeMirrorModule.ez37Vkbh.css → codeMirrorModule.C3UTv-Ge.css} +0 -0
- /package/lib/vite/traceViewer/{index.CrbWWHbf.css → index.CFOW-Ezb.css} +0 -0
- /package/lib/vite/traceViewer/{xtermModule.DSXBckUd.css → xtermModule.Beg8tuEN.css} +0 -0
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.blendWithWhite = blendWithWhite;
|
|
7
|
-
exports.colorDeltaE94 = colorDeltaE94;
|
|
8
|
-
exports.rgb2gray = rgb2gray;
|
|
9
|
-
exports.srgb2xyz = srgb2xyz;
|
|
10
|
-
exports.xyz2lab = xyz2lab;
|
|
11
|
-
/**
|
|
12
|
-
* Copyright (c) Microsoft Corporation.
|
|
13
|
-
*
|
|
14
|
-
* Licensed under the Apache License, Version 2.0 (the 'License");
|
|
15
|
-
* you may not use this file except in compliance with the License.
|
|
16
|
-
* You may obtain a copy of the License at
|
|
17
|
-
*
|
|
18
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
19
|
-
*
|
|
20
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
21
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
22
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
23
|
-
* See the License for the specific language governing permissions and
|
|
24
|
-
* limitations under the License.
|
|
25
|
-
*/
|
|
26
|
-
|
|
27
|
-
function blendWithWhite(c, a) {
|
|
28
|
-
return 255 + (c - 255) * a;
|
|
29
|
-
}
|
|
30
|
-
function rgb2gray(r, g, b) {
|
|
31
|
-
// NOTE: this is the exact integer formula from SSIM.js.
|
|
32
|
-
// See https://github.com/obartra/ssim/blob/ca8e3c6a6ff5f4f2e232239e0c3d91806f3c97d5/src/matlab/rgb2gray.ts#L56
|
|
33
|
-
return 77 * r + 150 * g + 29 * b + 128 >> 8;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
// Perceived color difference defined by CIE94.
|
|
37
|
-
// See https://en.wikipedia.org/wiki/Color_difference#CIE94
|
|
38
|
-
//
|
|
39
|
-
// The result of 1.0 is a "just-noticeable difference".
|
|
40
|
-
//
|
|
41
|
-
// Other results interpretation (taken from http://zschuessler.github.io/DeltaE/learn/):
|
|
42
|
-
// < 1.0 Not perceptible by human eyes.
|
|
43
|
-
// 1-2 Perceptible through close observation.
|
|
44
|
-
// 2-10 Perceptible at a glance.
|
|
45
|
-
// 11-49 Colors are more similar than opposite
|
|
46
|
-
// 100 Colors are exact opposite
|
|
47
|
-
function colorDeltaE94(rgb1, rgb2) {
|
|
48
|
-
const [l1, a1, b1] = xyz2lab(srgb2xyz(rgb1));
|
|
49
|
-
const [l2, a2, b2] = xyz2lab(srgb2xyz(rgb2));
|
|
50
|
-
const deltaL = l1 - l2;
|
|
51
|
-
const deltaA = a1 - a2;
|
|
52
|
-
const deltaB = b1 - b2;
|
|
53
|
-
const c1 = Math.sqrt(a1 ** 2 + b1 ** 2);
|
|
54
|
-
const c2 = Math.sqrt(a2 ** 2 + b2 ** 2);
|
|
55
|
-
const deltaC = c1 - c2;
|
|
56
|
-
let deltaH = deltaA ** 2 + deltaB ** 2 - deltaC ** 2;
|
|
57
|
-
deltaH = deltaH < 0 ? 0 : Math.sqrt(deltaH);
|
|
58
|
-
// The k1, k2, kL, kC, kH values for "graphic arts" applications.
|
|
59
|
-
// See https://en.wikipedia.org/wiki/Color_difference#CIE94
|
|
60
|
-
const k1 = 0.045;
|
|
61
|
-
const k2 = 0.015;
|
|
62
|
-
const kL = 1;
|
|
63
|
-
const kC = 1;
|
|
64
|
-
const kH = 1;
|
|
65
|
-
const sC = 1.0 + k1 * c1;
|
|
66
|
-
const sH = 1.0 + k2 * c1;
|
|
67
|
-
const sL = 1;
|
|
68
|
-
return Math.sqrt((deltaL / sL / kL) ** 2 + (deltaC / sC / kC) ** 2 + (deltaH / sH / kH) ** 2);
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
// sRGB -> 1-normalized XYZ (i.e. Y ∈ [0, 1]) with D65 illuminant
|
|
72
|
-
// See https://en.wikipedia.org/wiki/SRGB#From_sRGB_to_CIE_XYZ
|
|
73
|
-
function srgb2xyz(rgb) {
|
|
74
|
-
let r = rgb[0] / 255;
|
|
75
|
-
let g = rgb[1] / 255;
|
|
76
|
-
let b = rgb[2] / 255;
|
|
77
|
-
r = r > 0.04045 ? Math.pow((r + 0.055) / 1.055, 2.4) : r / 12.92;
|
|
78
|
-
g = g > 0.04045 ? Math.pow((g + 0.055) / 1.055, 2.4) : g / 12.92;
|
|
79
|
-
b = b > 0.04045 ? Math.pow((b + 0.055) / 1.055, 2.4) : b / 12.92;
|
|
80
|
-
return [r * 0.4124 + g * 0.3576 + b * 0.1805, r * 0.2126 + g * 0.7152 + b * 0.0722, r * 0.0193 + g * 0.1192 + b * 0.9505];
|
|
81
|
-
}
|
|
82
|
-
const sigma_pow2 = 6 * 6 / 29 / 29;
|
|
83
|
-
const sigma_pow3 = 6 * 6 * 6 / 29 / 29 / 29;
|
|
84
|
-
|
|
85
|
-
// 1-normalized CIE XYZ with D65 to L*a*b*
|
|
86
|
-
// See https://en.wikipedia.org/wiki/CIELAB_color_space#From_CIEXYZ_to_CIELAB
|
|
87
|
-
function xyz2lab(xyz) {
|
|
88
|
-
const x = xyz[0] / 0.950489;
|
|
89
|
-
const y = xyz[1];
|
|
90
|
-
const z = xyz[2] / 1.088840;
|
|
91
|
-
const fx = x > sigma_pow3 ? x ** (1 / 3) : x / 3 / sigma_pow2 + 4 / 29;
|
|
92
|
-
const fy = y > sigma_pow3 ? y ** (1 / 3) : y / 3 / sigma_pow2 + 4 / 29;
|
|
93
|
-
const fz = z > sigma_pow3 ? z ** (1 / 3) : z / 3 / sigma_pow2 + 4 / 29;
|
|
94
|
-
const l = 116 * fy - 16;
|
|
95
|
-
const a = 500 * (fx - fy);
|
|
96
|
-
const b = 200 * (fy - fz);
|
|
97
|
-
return [l, a, b];
|
|
98
|
-
}
|
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.ImageChannel = void 0;
|
|
7
|
-
var _colorUtils = require("./colorUtils");
|
|
8
|
-
/**
|
|
9
|
-
* Copyright (c) Microsoft Corporation.
|
|
10
|
-
*
|
|
11
|
-
* Licensed under the Apache License, Version 2.0 (the 'License");
|
|
12
|
-
* you may not use this file except in compliance with the License.
|
|
13
|
-
* You may obtain a copy of the License at
|
|
14
|
-
*
|
|
15
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
16
|
-
*
|
|
17
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
18
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
19
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
20
|
-
* See the License for the specific language governing permissions and
|
|
21
|
-
* limitations under the License.
|
|
22
|
-
*/
|
|
23
|
-
|
|
24
|
-
class ImageChannel {
|
|
25
|
-
static intoRGB(width, height, data, options = {}) {
|
|
26
|
-
const {
|
|
27
|
-
paddingSize = 0,
|
|
28
|
-
paddingColorOdd = [255, 0, 255],
|
|
29
|
-
paddingColorEven = [0, 255, 0]
|
|
30
|
-
} = options;
|
|
31
|
-
const newWidth = width + 2 * paddingSize;
|
|
32
|
-
const newHeight = height + 2 * paddingSize;
|
|
33
|
-
const r = new Uint8Array(newWidth * newHeight);
|
|
34
|
-
const g = new Uint8Array(newWidth * newHeight);
|
|
35
|
-
const b = new Uint8Array(newWidth * newHeight);
|
|
36
|
-
for (let y = 0; y < newHeight; ++y) {
|
|
37
|
-
for (let x = 0; x < newWidth; ++x) {
|
|
38
|
-
const index = y * newWidth + x;
|
|
39
|
-
if (y >= paddingSize && y < newHeight - paddingSize && x >= paddingSize && x < newWidth - paddingSize) {
|
|
40
|
-
const offset = ((y - paddingSize) * width + (x - paddingSize)) * 4;
|
|
41
|
-
const alpha = data[offset + 3] === 255 ? 1 : data[offset + 3] / 255;
|
|
42
|
-
r[index] = (0, _colorUtils.blendWithWhite)(data[offset], alpha);
|
|
43
|
-
g[index] = (0, _colorUtils.blendWithWhite)(data[offset + 1], alpha);
|
|
44
|
-
b[index] = (0, _colorUtils.blendWithWhite)(data[offset + 2], alpha);
|
|
45
|
-
} else {
|
|
46
|
-
const color = (y + x) % 2 === 0 ? paddingColorEven : paddingColorOdd;
|
|
47
|
-
r[index] = color[0];
|
|
48
|
-
g[index] = color[1];
|
|
49
|
-
b[index] = color[2];
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
return [new ImageChannel(newWidth, newHeight, r), new ImageChannel(newWidth, newHeight, g), new ImageChannel(newWidth, newHeight, b)];
|
|
54
|
-
}
|
|
55
|
-
constructor(width, height, data) {
|
|
56
|
-
this.data = void 0;
|
|
57
|
-
this.width = void 0;
|
|
58
|
-
this.height = void 0;
|
|
59
|
-
this.data = data;
|
|
60
|
-
this.width = width;
|
|
61
|
-
this.height = height;
|
|
62
|
-
}
|
|
63
|
-
get(x, y) {
|
|
64
|
-
return this.data[y * this.width + x];
|
|
65
|
-
}
|
|
66
|
-
boundXY(x, y) {
|
|
67
|
-
return [Math.min(Math.max(x, 0), this.width - 1), Math.min(Math.max(y, 0), this.height - 1)];
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
exports.ImageChannel = ImageChannel;
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.PipeTransport = void 0;
|
|
7
|
-
var _utils = require("../utils");
|
|
8
|
-
/**
|
|
9
|
-
* Copyright (c) Microsoft Corporation.
|
|
10
|
-
*
|
|
11
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
12
|
-
* you may not use this file except in compliance with the License.
|
|
13
|
-
* You may obtain a copy of the License at
|
|
14
|
-
*
|
|
15
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
16
|
-
*
|
|
17
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
18
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
19
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
20
|
-
* See the License for the specific language governing permissions and
|
|
21
|
-
* limitations under the License.
|
|
22
|
-
*/
|
|
23
|
-
|
|
24
|
-
class PipeTransport {
|
|
25
|
-
constructor(pipeWrite, pipeRead, closeable, endian = 'le') {
|
|
26
|
-
this._pipeWrite = void 0;
|
|
27
|
-
this._data = Buffer.from([]);
|
|
28
|
-
this._waitForNextTask = (0, _utils.makeWaitForNextTask)();
|
|
29
|
-
this._closed = false;
|
|
30
|
-
this._bytesLeft = 0;
|
|
31
|
-
this.onmessage = void 0;
|
|
32
|
-
this.onclose = void 0;
|
|
33
|
-
this._endian = void 0;
|
|
34
|
-
this._closeableStream = void 0;
|
|
35
|
-
this._pipeWrite = pipeWrite;
|
|
36
|
-
this._endian = endian;
|
|
37
|
-
this._closeableStream = closeable;
|
|
38
|
-
pipeRead.on('data', buffer => this._dispatch(buffer));
|
|
39
|
-
pipeRead.on('close', () => {
|
|
40
|
-
this._closed = true;
|
|
41
|
-
if (this.onclose) this.onclose();
|
|
42
|
-
});
|
|
43
|
-
this.onmessage = undefined;
|
|
44
|
-
this.onclose = undefined;
|
|
45
|
-
}
|
|
46
|
-
send(message) {
|
|
47
|
-
if (this._closed) throw new Error('Pipe has been closed');
|
|
48
|
-
const data = Buffer.from(message, 'utf-8');
|
|
49
|
-
const dataLength = Buffer.alloc(4);
|
|
50
|
-
if (this._endian === 'be') dataLength.writeUInt32BE(data.length, 0);else dataLength.writeUInt32LE(data.length, 0);
|
|
51
|
-
this._pipeWrite.write(dataLength);
|
|
52
|
-
this._pipeWrite.write(data);
|
|
53
|
-
}
|
|
54
|
-
close() {
|
|
55
|
-
// Let it throw.
|
|
56
|
-
this._closeableStream.close();
|
|
57
|
-
}
|
|
58
|
-
_dispatch(buffer) {
|
|
59
|
-
this._data = Buffer.concat([this._data, buffer]);
|
|
60
|
-
while (true) {
|
|
61
|
-
if (!this._bytesLeft && this._data.length < 4) {
|
|
62
|
-
// Need more data.
|
|
63
|
-
break;
|
|
64
|
-
}
|
|
65
|
-
if (!this._bytesLeft) {
|
|
66
|
-
this._bytesLeft = this._endian === 'be' ? this._data.readUInt32BE(0) : this._data.readUInt32LE(0);
|
|
67
|
-
this._data = this._data.slice(4);
|
|
68
|
-
}
|
|
69
|
-
if (!this._bytesLeft || this._data.length < this._bytesLeft) {
|
|
70
|
-
// Need more data.
|
|
71
|
-
break;
|
|
72
|
-
}
|
|
73
|
-
const message = this._data.slice(0, this._bytesLeft);
|
|
74
|
-
this._data = this._data.slice(this._bytesLeft);
|
|
75
|
-
this._bytesLeft = 0;
|
|
76
|
-
this._waitForNextTask(() => {
|
|
77
|
-
if (this.onmessage) this.onmessage(message.toString('utf-8'));
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
exports.PipeTransport = PipeTransport;
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.parseAriaSnapshot = parseAriaSnapshot;
|
|
7
|
-
exports.parseYamlForAriaSnapshot = parseYamlForAriaSnapshot;
|
|
8
|
-
var _ariaSnapshot = require("../utils/isomorphic/ariaSnapshot");
|
|
9
|
-
var _utilsBundle = require("../utilsBundle");
|
|
10
|
-
/**
|
|
11
|
-
* Copyright (c) Microsoft Corporation.
|
|
12
|
-
*
|
|
13
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
14
|
-
* you may not use this file except in compliance with the License.
|
|
15
|
-
* You may obtain a copy of the License at
|
|
16
|
-
*
|
|
17
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
18
|
-
*
|
|
19
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
20
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
21
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
22
|
-
* See the License for the specific language governing permissions and
|
|
23
|
-
* limitations under the License.
|
|
24
|
-
*/
|
|
25
|
-
|
|
26
|
-
function parseAriaSnapshot(text) {
|
|
27
|
-
return (0, _ariaSnapshot.parseYamlTemplate)(parseYamlForAriaSnapshot(text));
|
|
28
|
-
}
|
|
29
|
-
function parseYamlForAriaSnapshot(text) {
|
|
30
|
-
const parsed = _utilsBundle.yaml.parse(text);
|
|
31
|
-
if (!Array.isArray(parsed)) throw new Error('Expected object key starting with "- ":\n\n' + text + '\n');
|
|
32
|
-
return parsed;
|
|
33
|
-
}
|
|
@@ -1,226 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.serializeAsCallArgument = exports.parseEvaluationResultValue = void 0;
|
|
7
|
-
exports.source = source;
|
|
8
|
-
/**
|
|
9
|
-
* Copyright (c) Microsoft Corporation.
|
|
10
|
-
*
|
|
11
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
12
|
-
* you may not use this file except in compliance with the License.
|
|
13
|
-
* You may obtain a copy of the License at
|
|
14
|
-
*
|
|
15
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
16
|
-
*
|
|
17
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
18
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
19
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
20
|
-
* See the License for the specific language governing permissions and
|
|
21
|
-
* limitations under the License.
|
|
22
|
-
*/
|
|
23
|
-
|
|
24
|
-
function source() {
|
|
25
|
-
function isRegExp(obj) {
|
|
26
|
-
try {
|
|
27
|
-
return obj instanceof RegExp || Object.prototype.toString.call(obj) === '[object RegExp]';
|
|
28
|
-
} catch (error) {
|
|
29
|
-
return false;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
function isDate(obj) {
|
|
33
|
-
try {
|
|
34
|
-
return obj instanceof Date || Object.prototype.toString.call(obj) === '[object Date]';
|
|
35
|
-
} catch (error) {
|
|
36
|
-
return false;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
function isURL(obj) {
|
|
40
|
-
try {
|
|
41
|
-
return obj instanceof URL || Object.prototype.toString.call(obj) === '[object URL]';
|
|
42
|
-
} catch (error) {
|
|
43
|
-
return false;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
function isError(obj) {
|
|
47
|
-
try {
|
|
48
|
-
var _Object$getPrototypeO;
|
|
49
|
-
return obj instanceof Error || obj && ((_Object$getPrototypeO = Object.getPrototypeOf(obj)) === null || _Object$getPrototypeO === void 0 ? void 0 : _Object$getPrototypeO.name) === 'Error';
|
|
50
|
-
} catch (error) {
|
|
51
|
-
return false;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
function parseEvaluationResultValue(value, handles = [], refs = new Map()) {
|
|
55
|
-
if (Object.is(value, undefined)) return undefined;
|
|
56
|
-
if (typeof value === 'object' && value) {
|
|
57
|
-
if ('ref' in value) return refs.get(value.ref);
|
|
58
|
-
if ('v' in value) {
|
|
59
|
-
if (value.v === 'undefined') return undefined;
|
|
60
|
-
if (value.v === 'null') return null;
|
|
61
|
-
if (value.v === 'NaN') return NaN;
|
|
62
|
-
if (value.v === 'Infinity') return Infinity;
|
|
63
|
-
if (value.v === '-Infinity') return -Infinity;
|
|
64
|
-
if (value.v === '-0') return -0;
|
|
65
|
-
return undefined;
|
|
66
|
-
}
|
|
67
|
-
if ('d' in value) return new Date(value.d);
|
|
68
|
-
if ('u' in value) return new URL(value.u);
|
|
69
|
-
if ('bi' in value) return BigInt(value.bi);
|
|
70
|
-
if ('e' in value) {
|
|
71
|
-
const error = new Error(value.e.m);
|
|
72
|
-
error.name = value.e.n;
|
|
73
|
-
error.stack = value.e.s;
|
|
74
|
-
return error;
|
|
75
|
-
}
|
|
76
|
-
if ('r' in value) return new RegExp(value.r.p, value.r.f);
|
|
77
|
-
if ('a' in value) {
|
|
78
|
-
const result = [];
|
|
79
|
-
refs.set(value.id, result);
|
|
80
|
-
for (const a of value.a) result.push(parseEvaluationResultValue(a, handles, refs));
|
|
81
|
-
return result;
|
|
82
|
-
}
|
|
83
|
-
if ('o' in value) {
|
|
84
|
-
const result = {};
|
|
85
|
-
refs.set(value.id, result);
|
|
86
|
-
for (const {
|
|
87
|
-
k,
|
|
88
|
-
v
|
|
89
|
-
} of value.o) result[k] = parseEvaluationResultValue(v, handles, refs);
|
|
90
|
-
return result;
|
|
91
|
-
}
|
|
92
|
-
if ('h' in value) return handles[value.h];
|
|
93
|
-
}
|
|
94
|
-
return value;
|
|
95
|
-
}
|
|
96
|
-
function serializeAsCallArgument(value, handleSerializer) {
|
|
97
|
-
return serialize(value, handleSerializer, {
|
|
98
|
-
visited: new Map(),
|
|
99
|
-
lastId: 0
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
function serialize(value, handleSerializer, visitorInfo) {
|
|
103
|
-
if (value && typeof value === 'object') {
|
|
104
|
-
if (typeof globalThis.Window === 'function' && value instanceof globalThis.Window) return 'ref: <Window>';
|
|
105
|
-
if (typeof globalThis.Document === 'function' && value instanceof globalThis.Document) return 'ref: <Document>';
|
|
106
|
-
if (typeof globalThis.Node === 'function' && value instanceof globalThis.Node) return 'ref: <Node>';
|
|
107
|
-
}
|
|
108
|
-
return innerSerialize(value, handleSerializer, visitorInfo);
|
|
109
|
-
}
|
|
110
|
-
function innerSerialize(value, handleSerializer, visitorInfo) {
|
|
111
|
-
const result = handleSerializer(value);
|
|
112
|
-
if ('fallThrough' in result) value = result.fallThrough;else return result;
|
|
113
|
-
if (typeof value === 'symbol') return {
|
|
114
|
-
v: 'undefined'
|
|
115
|
-
};
|
|
116
|
-
if (Object.is(value, undefined)) return {
|
|
117
|
-
v: 'undefined'
|
|
118
|
-
};
|
|
119
|
-
if (Object.is(value, null)) return {
|
|
120
|
-
v: 'null'
|
|
121
|
-
};
|
|
122
|
-
if (Object.is(value, NaN)) return {
|
|
123
|
-
v: 'NaN'
|
|
124
|
-
};
|
|
125
|
-
if (Object.is(value, Infinity)) return {
|
|
126
|
-
v: 'Infinity'
|
|
127
|
-
};
|
|
128
|
-
if (Object.is(value, -Infinity)) return {
|
|
129
|
-
v: '-Infinity'
|
|
130
|
-
};
|
|
131
|
-
if (Object.is(value, -0)) return {
|
|
132
|
-
v: '-0'
|
|
133
|
-
};
|
|
134
|
-
if (typeof value === 'boolean') return value;
|
|
135
|
-
if (typeof value === 'number') return value;
|
|
136
|
-
if (typeof value === 'string') return value;
|
|
137
|
-
if (typeof value === 'bigint') return {
|
|
138
|
-
bi: value.toString()
|
|
139
|
-
};
|
|
140
|
-
if (isError(value)) {
|
|
141
|
-
var _value$stack;
|
|
142
|
-
let stack;
|
|
143
|
-
if ((_value$stack = value.stack) !== null && _value$stack !== void 0 && _value$stack.startsWith(value.name + ': ' + value.message)) {
|
|
144
|
-
// v8
|
|
145
|
-
stack = value.stack;
|
|
146
|
-
} else {
|
|
147
|
-
stack = `${value.name}: ${value.message}\n${value.stack}`;
|
|
148
|
-
}
|
|
149
|
-
return {
|
|
150
|
-
e: {
|
|
151
|
-
n: value.name,
|
|
152
|
-
m: value.message,
|
|
153
|
-
s: stack
|
|
154
|
-
}
|
|
155
|
-
};
|
|
156
|
-
}
|
|
157
|
-
if (isDate(value)) return {
|
|
158
|
-
d: value.toJSON()
|
|
159
|
-
};
|
|
160
|
-
if (isURL(value)) return {
|
|
161
|
-
u: value.toJSON()
|
|
162
|
-
};
|
|
163
|
-
if (isRegExp(value)) return {
|
|
164
|
-
r: {
|
|
165
|
-
p: value.source,
|
|
166
|
-
f: value.flags
|
|
167
|
-
}
|
|
168
|
-
};
|
|
169
|
-
const id = visitorInfo.visited.get(value);
|
|
170
|
-
if (id) return {
|
|
171
|
-
ref: id
|
|
172
|
-
};
|
|
173
|
-
if (Array.isArray(value)) {
|
|
174
|
-
const a = [];
|
|
175
|
-
const id = ++visitorInfo.lastId;
|
|
176
|
-
visitorInfo.visited.set(value, id);
|
|
177
|
-
for (let i = 0; i < value.length; ++i) a.push(serialize(value[i], handleSerializer, visitorInfo));
|
|
178
|
-
return {
|
|
179
|
-
a,
|
|
180
|
-
id
|
|
181
|
-
};
|
|
182
|
-
}
|
|
183
|
-
if (typeof value === 'object') {
|
|
184
|
-
const o = [];
|
|
185
|
-
const id = ++visitorInfo.lastId;
|
|
186
|
-
visitorInfo.visited.set(value, id);
|
|
187
|
-
for (const name of Object.keys(value)) {
|
|
188
|
-
let item;
|
|
189
|
-
try {
|
|
190
|
-
item = value[name];
|
|
191
|
-
} catch (e) {
|
|
192
|
-
continue; // native bindings will throw sometimes
|
|
193
|
-
}
|
|
194
|
-
if (name === 'toJSON' && typeof item === 'function') o.push({
|
|
195
|
-
k: name,
|
|
196
|
-
v: {
|
|
197
|
-
o: [],
|
|
198
|
-
id: 0
|
|
199
|
-
}
|
|
200
|
-
});else o.push({
|
|
201
|
-
k: name,
|
|
202
|
-
v: serialize(item, handleSerializer, visitorInfo)
|
|
203
|
-
});
|
|
204
|
-
}
|
|
205
|
-
let jsonWrapper;
|
|
206
|
-
try {
|
|
207
|
-
// If Object.keys().length === 0 we fall back to toJSON if it exists
|
|
208
|
-
if (o.length === 0 && value.toJSON && typeof value.toJSON === 'function') jsonWrapper = {
|
|
209
|
-
value: value.toJSON()
|
|
210
|
-
};
|
|
211
|
-
} catch (e) {}
|
|
212
|
-
if (jsonWrapper) return innerSerialize(jsonWrapper.value, handleSerializer, visitorInfo);
|
|
213
|
-
return {
|
|
214
|
-
o,
|
|
215
|
-
id
|
|
216
|
-
};
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
return {
|
|
220
|
-
parseEvaluationResultValue,
|
|
221
|
-
serializeAsCallArgument
|
|
222
|
-
};
|
|
223
|
-
}
|
|
224
|
-
const result = source();
|
|
225
|
-
const parseEvaluationResultValue = exports.parseEvaluationResultValue = result.parseEvaluationResultValue;
|
|
226
|
-
const serializeAsCallArgument = exports.serializeAsCallArgument = result.serializeAsCallArgument;
|
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.RecorderInTraceViewer = void 0;
|
|
7
|
-
var _path = _interopRequireDefault(require("path"));
|
|
8
|
-
var _events = require("events");
|
|
9
|
-
var _traceViewer = require("../trace/viewer/traceViewer");
|
|
10
|
-
var _manualPromise = require("../../utils/manualPromise");
|
|
11
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
12
|
-
/**
|
|
13
|
-
* Copyright (c) Microsoft Corporation.
|
|
14
|
-
*
|
|
15
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
16
|
-
* you may not use this file except in compliance with the License.
|
|
17
|
-
* You may obtain a copy of the License at
|
|
18
|
-
*
|
|
19
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
20
|
-
*
|
|
21
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
22
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
23
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
24
|
-
* See the License for the specific language governing permissions and
|
|
25
|
-
* limitations under the License.
|
|
26
|
-
*/
|
|
27
|
-
|
|
28
|
-
class RecorderInTraceViewer extends _events.EventEmitter {
|
|
29
|
-
static factory(context) {
|
|
30
|
-
return async recorder => {
|
|
31
|
-
const transport = new RecorderTransport();
|
|
32
|
-
const trace = _path.default.join(context._browser.options.tracesDir, 'trace');
|
|
33
|
-
const {
|
|
34
|
-
wsEndpointForTest,
|
|
35
|
-
tracePage,
|
|
36
|
-
traceServer
|
|
37
|
-
} = await openApp(trace, {
|
|
38
|
-
transport,
|
|
39
|
-
headless: !context._browser.options.headful
|
|
40
|
-
});
|
|
41
|
-
return new RecorderInTraceViewer(transport, tracePage, traceServer, wsEndpointForTest);
|
|
42
|
-
};
|
|
43
|
-
}
|
|
44
|
-
constructor(transport, tracePage, traceServer, wsEndpointForTest) {
|
|
45
|
-
super();
|
|
46
|
-
this.wsEndpointForTest = void 0;
|
|
47
|
-
this._transport = void 0;
|
|
48
|
-
this._tracePage = void 0;
|
|
49
|
-
this._traceServer = void 0;
|
|
50
|
-
this._transport = transport;
|
|
51
|
-
this._transport.eventSink.resolve(this);
|
|
52
|
-
this._tracePage = tracePage;
|
|
53
|
-
this._traceServer = traceServer;
|
|
54
|
-
this.wsEndpointForTest = wsEndpointForTest;
|
|
55
|
-
this._tracePage.once('close', () => {
|
|
56
|
-
this.close();
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
async close() {
|
|
60
|
-
await this._tracePage.context().close({
|
|
61
|
-
reason: 'Recorder window closed'
|
|
62
|
-
});
|
|
63
|
-
await this._traceServer.stop();
|
|
64
|
-
}
|
|
65
|
-
async setPaused(paused) {
|
|
66
|
-
this._transport.deliverEvent('setPaused', {
|
|
67
|
-
paused
|
|
68
|
-
});
|
|
69
|
-
}
|
|
70
|
-
async setMode(mode) {
|
|
71
|
-
this._transport.deliverEvent('setMode', {
|
|
72
|
-
mode
|
|
73
|
-
});
|
|
74
|
-
}
|
|
75
|
-
async setRunningFile(file) {
|
|
76
|
-
this._transport.deliverEvent('setRunningFile', {
|
|
77
|
-
file
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
async elementPicked(elementInfo, userGesture) {
|
|
81
|
-
this._transport.deliverEvent('elementPicked', {
|
|
82
|
-
elementInfo,
|
|
83
|
-
userGesture
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
async updateCallLogs(callLogs) {
|
|
87
|
-
this._transport.deliverEvent('updateCallLogs', {
|
|
88
|
-
callLogs
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
async setSources(sources) {
|
|
92
|
-
this._transport.deliverEvent('setSources', {
|
|
93
|
-
sources
|
|
94
|
-
});
|
|
95
|
-
if (process.env.PWTEST_CLI_IS_UNDER_TEST && sources.length) {
|
|
96
|
-
if (process._didSetSourcesForTest(sources[0].text)) this.close();
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
async setActions(actions, sources) {
|
|
100
|
-
this._transport.deliverEvent('setActions', {
|
|
101
|
-
actions,
|
|
102
|
-
sources
|
|
103
|
-
});
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
exports.RecorderInTraceViewer = RecorderInTraceViewer;
|
|
107
|
-
async function openApp(trace, options) {
|
|
108
|
-
const traceServer = await (0, _traceViewer.startTraceViewerServer)(options);
|
|
109
|
-
await (0, _traceViewer.installRootRedirect)(traceServer, [trace], {
|
|
110
|
-
...options,
|
|
111
|
-
webApp: 'recorder.html'
|
|
112
|
-
});
|
|
113
|
-
const page = await (0, _traceViewer.openTraceViewerApp)(traceServer.urlPrefix('precise'), 'chromium', options);
|
|
114
|
-
return {
|
|
115
|
-
wsEndpointForTest: page.context()._browser.options.wsEndpoint,
|
|
116
|
-
tracePage: page,
|
|
117
|
-
traceServer
|
|
118
|
-
};
|
|
119
|
-
}
|
|
120
|
-
class RecorderTransport {
|
|
121
|
-
constructor() {
|
|
122
|
-
this._connected = new _manualPromise.ManualPromise();
|
|
123
|
-
this.eventSink = new _manualPromise.ManualPromise();
|
|
124
|
-
this.sendEvent = void 0;
|
|
125
|
-
this.close = void 0;
|
|
126
|
-
}
|
|
127
|
-
onconnect() {
|
|
128
|
-
this._connected.resolve();
|
|
129
|
-
}
|
|
130
|
-
async dispatch(method, params) {
|
|
131
|
-
const eventSink = await this.eventSink;
|
|
132
|
-
eventSink.emit('event', {
|
|
133
|
-
event: method,
|
|
134
|
-
params
|
|
135
|
-
});
|
|
136
|
-
}
|
|
137
|
-
onclose() {}
|
|
138
|
-
deliverEvent(method, params) {
|
|
139
|
-
this._connected.then(() => {
|
|
140
|
-
var _this$sendEvent;
|
|
141
|
-
return (_this$sendEvent = this.sendEvent) === null || _this$sendEvent === void 0 ? void 0 : _this$sendEvent.call(this, method, params);
|
|
142
|
-
});
|
|
143
|
-
}
|
|
144
|
-
}
|
package/lib/utils/ascii.js
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.jsonStringifyForceASCII = jsonStringifyForceASCII;
|
|
7
|
-
exports.wrapInASCIIBox = wrapInASCIIBox;
|
|
8
|
-
/**
|
|
9
|
-
* Copyright (c) Microsoft Corporation.
|
|
10
|
-
*
|
|
11
|
-
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
12
|
-
* you may not use this file except in compliance with the License.
|
|
13
|
-
* You may obtain a copy of the License at
|
|
14
|
-
*
|
|
15
|
-
* http://www.apache.org/licenses/LICENSE-2.0
|
|
16
|
-
*
|
|
17
|
-
* Unless required by applicable law or agreed to in writing, software
|
|
18
|
-
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
19
|
-
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
20
|
-
* See the License for the specific language governing permissions and
|
|
21
|
-
* limitations under the License.
|
|
22
|
-
*/
|
|
23
|
-
|
|
24
|
-
function wrapInASCIIBox(text, padding = 0) {
|
|
25
|
-
const lines = text.split('\n');
|
|
26
|
-
const maxLength = Math.max(...lines.map(line => line.length));
|
|
27
|
-
return ['╔' + '═'.repeat(maxLength + padding * 2) + '╗', ...lines.map(line => '║' + ' '.repeat(padding) + line + ' '.repeat(maxLength - line.length + padding) + '║'), '╚' + '═'.repeat(maxLength + padding * 2) + '╝'].join('\n');
|
|
28
|
-
}
|
|
29
|
-
function jsonStringifyForceASCII(object) {
|
|
30
|
-
return JSON.stringify(object).replace(/[\u007f-\uffff]/g, c => '\\u' + ('0000' + c.charCodeAt(0).toString(16)).slice(-4));
|
|
31
|
-
}
|