@limrun/playwright-core 1.56.1-lim.1 → 1.61.0-lim.1
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 +202 -0
- package/NOTICE +5 -0
- package/ThirdPartyNotices.txt +7 -1496
- package/bin/install_webkit_wsl.ps1 +1 -3
- package/bin/reinstall_chrome_beta_linux.sh +1 -1
- package/bin/reinstall_chrome_beta_mac.sh +1 -1
- package/bin/reinstall_chrome_stable_linux.sh +1 -1
- package/bin/reinstall_chrome_stable_mac.sh +1 -1
- package/bin/reinstall_msedge_beta_linux.sh +1 -1
- package/bin/reinstall_msedge_beta_mac.sh +1 -1
- package/bin/reinstall_msedge_dev_linux.sh +1 -1
- package/bin/reinstall_msedge_dev_mac.sh +1 -1
- package/bin/reinstall_msedge_stable_linux.sh +1 -1
- package/bin/reinstall_msedge_stable_mac.sh +1 -1
- package/browsers.json +23 -22
- package/cli.js +4 -1
- package/index.js +2 -17
- package/lib/bootstrap.js +88 -0
- package/lib/coreBundle.js +73385 -0
- package/lib/entry/cliDaemon.js +5 -0
- package/lib/entry/dashboardApp.js +3 -0
- package/lib/entry/mcp.js +10 -0
- package/lib/entry/oopBrowserDownload.js +3 -0
- package/lib/{server/deviceDescriptors.js → package.js} +18 -7
- package/lib/server/deviceDescriptorsSource.json +1142 -182
- package/lib/server/electron/loader.js +99 -13
- package/lib/serverRegistry.js +7343 -0
- package/lib/serverRegistry.js.LICENSE +354 -0
- package/lib/tools/cli-client/channelSessions.js +141 -0
- package/lib/tools/cli-client/cli.js +6 -0
- package/lib/tools/cli-client/help.json +693 -0
- package/lib/tools/cli-client/minimist.js +128 -0
- package/lib/tools/cli-client/output.js +343 -0
- package/lib/tools/cli-client/program.js +404 -0
- package/lib/tools/cli-client/registry.js +176 -0
- package/lib/tools/cli-client/session.js +254 -0
- package/lib/tools/cli-client/skill/SKILL.md +404 -0
- package/lib/tools/cli-client/skill/references/element-attributes.md +23 -0
- package/lib/tools/cli-client/skill/references/playwright-tests.md +39 -0
- package/lib/tools/cli-client/skill/references/request-mocking.md +87 -0
- package/lib/tools/cli-client/skill/references/running-code.md +241 -0
- package/lib/tools/cli-client/skill/references/session-management.md +225 -0
- package/lib/tools/cli-client/skill/references/spec-driven-testing.md +305 -0
- package/lib/tools/cli-client/skill/references/storage-state.md +275 -0
- package/lib/tools/cli-client/skill/references/test-generation.md +134 -0
- package/lib/tools/cli-client/skill/references/tracing.md +139 -0
- package/lib/tools/cli-client/skill/references/video-recording.md +143 -0
- package/lib/tools/dashboard/appIcon.png +0 -0
- package/lib/tools/trace/SKILL.md +171 -0
- package/lib/{server/utils/profiler.js → tools/utils/extension.js} +42 -29
- package/lib/tools/utils/socketConnection.js +108 -0
- package/lib/utilsBundle.js +86695 -68
- package/lib/utilsBundle.js.LICENSE +2056 -0
- package/lib/vite/dashboard/assets/codicon-DCmgc-ay.ttf +0 -0
- package/lib/vite/dashboard/assets/firefox-1bWoP6pv.svg +1 -0
- package/lib/vite/dashboard/assets/firefox-beta-k3eOH_eK.svg +1 -0
- package/lib/vite/dashboard/assets/firefox-nightly-Cp5nfeDT.svg +1 -0
- package/lib/vite/dashboard/assets/index-BY2S1tHT.css +1 -0
- package/lib/vite/dashboard/assets/index-C_5TMfeg.js +52 -0
- package/lib/vite/dashboard/assets/safari-na3_-uQk.svg +1 -0
- package/lib/vite/dashboard/index.html +29 -0
- package/lib/vite/dashboard/playwright-logo.svg +24 -0
- package/lib/vite/htmlReport/index.html +2 -70
- package/lib/vite/htmlReport/report.css +1 -0
- package/lib/vite/htmlReport/report.js +72 -0
- package/lib/vite/{traceViewer/codeMirrorModule.C3UTv-Ge.css → recorder/assets/codeMirrorModule-DYBRYzYX.css} +1 -1
- package/lib/vite/recorder/assets/codeMirrorModule-DeBYQozu.js +32 -0
- package/lib/vite/recorder/assets/index-4ZiSSCmn.css +1 -0
- package/lib/vite/recorder/assets/index-Bq-mQf8S.js +193 -0
- package/lib/vite/recorder/index.html +2 -2
- package/lib/vite/traceViewer/assets/codeMirrorModule-LEHpjmcn.js +32 -0
- package/lib/vite/traceViewer/assets/defaultSettingsView-BNmKHKpQ.js +264 -0
- package/lib/vite/traceViewer/assets/urlMatch-BYQrIQwR.js +1 -0
- package/lib/vite/{recorder/assets/codeMirrorModule-C3UTv-Ge.css → traceViewer/codeMirrorModule.DYBRYzYX.css} +1 -1
- package/lib/vite/traceViewer/defaultSettingsView.CjdS-WJx.css +1 -0
- package/lib/vite/traceViewer/index.CzXZzn5A.css +1 -0
- package/lib/vite/traceViewer/index.DEBl1tfz.js +2 -0
- package/lib/vite/traceViewer/index.html +7 -6
- package/lib/vite/traceViewer/manifest.webmanifest +16 -0
- package/lib/vite/traceViewer/snapshot.html +4 -15
- package/lib/vite/traceViewer/snapshot.v8KI4P3m.js +2 -0
- package/lib/vite/traceViewer/sw.bundle.js +5 -3
- package/lib/vite/traceViewer/uiMode.BZQ54Kgt.css +1 -0
- package/lib/vite/traceViewer/uiMode.Ut8wwJNp.js +6 -0
- package/lib/vite/traceViewer/uiMode.html +5 -4
- package/package.json +4 -12
- package/types/protocol.d.ts +2101 -602
- package/types/types.d.ts +6183 -4591
- package/lib/androidServerImpl.js +0 -65
- package/lib/browserServerImpl.js +0 -120
- package/lib/cli/driver.js +0 -97
- package/lib/cli/program.js +0 -633
- package/lib/cli/programWithTestStub.js +0 -74
- package/lib/client/accessibility.js +0 -49
- package/lib/client/android.js +0 -361
- package/lib/client/api.js +0 -137
- package/lib/client/artifact.js +0 -79
- package/lib/client/browser.js +0 -163
- package/lib/client/browserContext.js +0 -529
- package/lib/client/browserType.js +0 -184
- package/lib/client/cdpSession.js +0 -51
- package/lib/client/channelOwner.js +0 -194
- package/lib/client/clientHelper.js +0 -64
- package/lib/client/clientInstrumentation.js +0 -55
- package/lib/client/clientStackTrace.js +0 -69
- package/lib/client/clock.js +0 -68
- package/lib/client/connection.js +0 -314
- package/lib/client/consoleMessage.js +0 -54
- package/lib/client/coverage.js +0 -44
- package/lib/client/dialog.js +0 -56
- package/lib/client/download.js +0 -62
- package/lib/client/electron.js +0 -138
- package/lib/client/elementHandle.js +0 -281
- package/lib/client/errors.js +0 -77
- package/lib/client/eventEmitter.js +0 -314
- package/lib/client/events.js +0 -99
- package/lib/client/fetch.js +0 -369
- package/lib/client/fileChooser.js +0 -46
- package/lib/client/fileUtils.js +0 -34
- package/lib/client/frame.js +0 -408
- package/lib/client/harRouter.js +0 -87
- package/lib/client/input.js +0 -84
- package/lib/client/jsHandle.js +0 -109
- package/lib/client/jsonPipe.js +0 -39
- package/lib/client/localUtils.js +0 -60
- package/lib/client/locator.js +0 -366
- package/lib/client/network.js +0 -747
- package/lib/client/page.js +0 -721
- package/lib/client/platform.js +0 -74
- package/lib/client/playwright.js +0 -75
- package/lib/client/selectors.js +0 -55
- package/lib/client/stream.js +0 -39
- package/lib/client/timeoutSettings.js +0 -79
- package/lib/client/tracing.js +0 -117
- package/lib/client/types.js +0 -28
- package/lib/client/video.js +0 -59
- package/lib/client/waiter.js +0 -142
- package/lib/client/webError.js +0 -39
- package/lib/client/webSocket.js +0 -93
- package/lib/client/worker.js +0 -63
- package/lib/client/writableStream.js +0 -39
- package/lib/generated/bindingsControllerSource.js +0 -28
- package/lib/generated/clockSource.js +0 -28
- package/lib/generated/injectedScriptSource.js +0 -28
- package/lib/generated/pollingRecorderSource.js +0 -28
- package/lib/generated/storageScriptSource.js +0 -28
- package/lib/generated/utilityScriptSource.js +0 -28
- package/lib/generated/webSocketMockSource.js +0 -336
- package/lib/inProcessFactory.js +0 -62
- package/lib/inprocess.js +0 -3
- package/lib/outofprocess.js +0 -76
- package/lib/protocol/serializers.js +0 -192
- package/lib/protocol/validator.js +0 -2912
- package/lib/protocol/validatorPrimitives.js +0 -193
- package/lib/remote/playwrightConnection.js +0 -129
- package/lib/remote/playwrightServer.js +0 -335
- package/lib/server/accessibility.js +0 -69
- package/lib/server/android/android.js +0 -465
- package/lib/server/android/backendAdb.js +0 -177
- package/lib/server/artifact.js +0 -127
- package/lib/server/bidi/bidiBrowser.js +0 -490
- package/lib/server/bidi/bidiChromium.js +0 -153
- package/lib/server/bidi/bidiConnection.js +0 -212
- package/lib/server/bidi/bidiExecutionContext.js +0 -221
- package/lib/server/bidi/bidiFirefox.js +0 -130
- package/lib/server/bidi/bidiInput.js +0 -146
- package/lib/server/bidi/bidiNetworkManager.js +0 -383
- package/lib/server/bidi/bidiOverCdp.js +0 -102
- package/lib/server/bidi/bidiPage.js +0 -552
- package/lib/server/bidi/bidiPdf.js +0 -106
- package/lib/server/bidi/third_party/bidiCommands.d.js +0 -22
- package/lib/server/bidi/third_party/bidiDeserializer.js +0 -98
- package/lib/server/bidi/third_party/bidiKeyboard.js +0 -256
- package/lib/server/bidi/third_party/bidiProtocol.js +0 -24
- package/lib/server/bidi/third_party/bidiProtocolCore.js +0 -179
- package/lib/server/bidi/third_party/bidiProtocolPermissions.js +0 -42
- package/lib/server/bidi/third_party/bidiSerializer.js +0 -148
- package/lib/server/bidi/third_party/firefoxPrefs.js +0 -259
- package/lib/server/browser.js +0 -149
- package/lib/server/browserContext.js +0 -696
- package/lib/server/browserType.js +0 -328
- package/lib/server/callLog.js +0 -82
- package/lib/server/chromium/chromium.js +0 -391
- package/lib/server/chromium/chromiumSwitches.js +0 -95
- package/lib/server/chromium/crAccessibility.js +0 -263
- package/lib/server/chromium/crBrowser.js +0 -502
- package/lib/server/chromium/crConnection.js +0 -202
- package/lib/server/chromium/crCoverage.js +0 -235
- package/lib/server/chromium/crDevTools.js +0 -113
- package/lib/server/chromium/crDragDrop.js +0 -131
- package/lib/server/chromium/crExecutionContext.js +0 -146
- package/lib/server/chromium/crInput.js +0 -187
- package/lib/server/chromium/crNetworkManager.js +0 -666
- package/lib/server/chromium/crPage.js +0 -1069
- package/lib/server/chromium/crPdf.js +0 -121
- package/lib/server/chromium/crProtocolHelper.js +0 -145
- package/lib/server/chromium/crServiceWorker.js +0 -123
- package/lib/server/chromium/defaultFontFamilies.js +0 -162
- package/lib/server/chromium/protocol.d.js +0 -16
- package/lib/server/chromium/videoRecorder.js +0 -113
- package/lib/server/clock.js +0 -149
- package/lib/server/codegen/csharp.js +0 -327
- package/lib/server/codegen/java.js +0 -274
- package/lib/server/codegen/javascript.js +0 -270
- package/lib/server/codegen/jsonl.js +0 -52
- package/lib/server/codegen/language.js +0 -132
- package/lib/server/codegen/languages.js +0 -68
- package/lib/server/codegen/python.js +0 -279
- package/lib/server/codegen/types.js +0 -16
- package/lib/server/console.js +0 -53
- package/lib/server/cookieStore.js +0 -206
- package/lib/server/debugController.js +0 -191
- package/lib/server/debugger.js +0 -119
- package/lib/server/dialog.js +0 -116
- package/lib/server/dispatchers/androidDispatcher.js +0 -325
- package/lib/server/dispatchers/artifactDispatcher.js +0 -118
- package/lib/server/dispatchers/browserContextDispatcher.js +0 -364
- package/lib/server/dispatchers/browserDispatcher.js +0 -118
- package/lib/server/dispatchers/browserTypeDispatcher.js +0 -64
- package/lib/server/dispatchers/cdpSessionDispatcher.js +0 -44
- package/lib/server/dispatchers/debugControllerDispatcher.js +0 -78
- package/lib/server/dispatchers/dialogDispatcher.js +0 -47
- package/lib/server/dispatchers/dispatcher.js +0 -371
- package/lib/server/dispatchers/electronDispatcher.js +0 -89
- package/lib/server/dispatchers/elementHandlerDispatcher.js +0 -181
- package/lib/server/dispatchers/frameDispatcher.js +0 -227
- package/lib/server/dispatchers/jsHandleDispatcher.js +0 -85
- package/lib/server/dispatchers/jsonPipeDispatcher.js +0 -58
- package/lib/server/dispatchers/localUtilsDispatcher.js +0 -149
- package/lib/server/dispatchers/networkDispatchers.js +0 -213
- package/lib/server/dispatchers/pageDispatcher.js +0 -401
- package/lib/server/dispatchers/playwrightDispatcher.js +0 -112
- package/lib/server/dispatchers/streamDispatcher.js +0 -67
- package/lib/server/dispatchers/tracingDispatcher.js +0 -68
- package/lib/server/dispatchers/webSocketRouteDispatcher.js +0 -165
- package/lib/server/dispatchers/writableStreamDispatcher.js +0 -79
- package/lib/server/dom.js +0 -806
- package/lib/server/download.js +0 -70
- package/lib/server/electron/electron.js +0 -270
- package/lib/server/errors.js +0 -69
- package/lib/server/fetch.js +0 -621
- package/lib/server/fileChooser.js +0 -43
- package/lib/server/fileUploadUtils.js +0 -84
- package/lib/server/firefox/ffAccessibility.js +0 -238
- package/lib/server/firefox/ffBrowser.js +0 -428
- package/lib/server/firefox/ffConnection.js +0 -147
- package/lib/server/firefox/ffExecutionContext.js +0 -150
- package/lib/server/firefox/ffInput.js +0 -159
- package/lib/server/firefox/ffNetworkManager.js +0 -256
- package/lib/server/firefox/ffPage.js +0 -503
- package/lib/server/firefox/firefox.js +0 -105
- package/lib/server/firefox/protocol.d.js +0 -16
- package/lib/server/formData.js +0 -147
- package/lib/server/frameSelectors.js +0 -156
- package/lib/server/frames.js +0 -1448
- package/lib/server/har/harRecorder.js +0 -147
- package/lib/server/har/harTracer.js +0 -607
- package/lib/server/harBackend.js +0 -157
- package/lib/server/helper.js +0 -96
- package/lib/server/index.js +0 -58
- package/lib/server/input.js +0 -273
- package/lib/server/instrumentation.js +0 -69
- package/lib/server/javascript.js +0 -291
- package/lib/server/launchApp.js +0 -128
- package/lib/server/localUtils.js +0 -218
- package/lib/server/macEditingCommands.js +0 -143
- package/lib/server/network.js +0 -629
- package/lib/server/page.js +0 -870
- package/lib/server/pipeTransport.js +0 -89
- package/lib/server/playwright.js +0 -71
- package/lib/server/progress.js +0 -112
- package/lib/server/protocolError.js +0 -52
- package/lib/server/recorder/chat.js +0 -161
- package/lib/server/recorder/recorderApp.js +0 -387
- package/lib/server/recorder/recorderRunner.js +0 -138
- package/lib/server/recorder/recorderSignalProcessor.js +0 -83
- package/lib/server/recorder/recorderUtils.js +0 -157
- package/lib/server/recorder/throttledFile.js +0 -57
- package/lib/server/recorder.js +0 -498
- package/lib/server/registry/browserFetcher.js +0 -175
- package/lib/server/registry/dependencies.js +0 -371
- package/lib/server/registry/index.js +0 -1333
- package/lib/server/registry/nativeDeps.js +0 -1280
- package/lib/server/registry/oopDownloadBrowserMain.js +0 -120
- package/lib/server/screenshotter.js +0 -333
- package/lib/server/selectors.js +0 -112
- package/lib/server/socksClientCertificatesInterceptor.js +0 -383
- package/lib/server/socksInterceptor.js +0 -95
- package/lib/server/trace/recorder/snapshotter.js +0 -147
- package/lib/server/trace/recorder/snapshotterInjected.js +0 -541
- package/lib/server/trace/recorder/tracing.js +0 -602
- package/lib/server/trace/test/inMemorySnapshotter.js +0 -87
- package/lib/server/trace/viewer/traceViewer.js +0 -240
- package/lib/server/transport.js +0 -181
- package/lib/server/types.js +0 -28
- package/lib/server/usKeyboardLayout.js +0 -145
- package/lib/server/utils/ascii.js +0 -44
- package/lib/server/utils/comparators.js +0 -161
- package/lib/server/utils/crypto.js +0 -216
- package/lib/server/utils/debug.js +0 -42
- package/lib/server/utils/debugLogger.js +0 -122
- package/lib/server/utils/env.js +0 -73
- package/lib/server/utils/eventsHelper.js +0 -39
- package/lib/server/utils/expectUtils.js +0 -38
- package/lib/server/utils/fileUtils.js +0 -191
- package/lib/server/utils/happyEyeballs.js +0 -207
- package/lib/server/utils/hostPlatform.js +0 -111
- package/lib/server/utils/httpServer.js +0 -218
- package/lib/server/utils/image_tools/colorUtils.js +0 -89
- package/lib/server/utils/image_tools/compare.js +0 -109
- package/lib/server/utils/image_tools/imageChannel.js +0 -78
- package/lib/server/utils/image_tools/stats.js +0 -102
- package/lib/server/utils/linuxUtils.js +0 -71
- package/lib/server/utils/network.js +0 -227
- package/lib/server/utils/nodePlatform.js +0 -148
- package/lib/server/utils/pipeTransport.js +0 -84
- package/lib/server/utils/processLauncher.js +0 -241
- package/lib/server/utils/socksProxy.js +0 -511
- package/lib/server/utils/spawnAsync.js +0 -41
- package/lib/server/utils/task.js +0 -51
- package/lib/server/utils/userAgent.js +0 -98
- package/lib/server/utils/wsServer.js +0 -121
- package/lib/server/utils/zipFile.js +0 -74
- package/lib/server/utils/zones.js +0 -57
- package/lib/server/webkit/protocol.d.js +0 -16
- package/lib/server/webkit/webkit.js +0 -119
- package/lib/server/webkit/wkAccessibility.js +0 -237
- package/lib/server/webkit/wkBrowser.js +0 -339
- package/lib/server/webkit/wkConnection.js +0 -149
- package/lib/server/webkit/wkExecutionContext.js +0 -154
- package/lib/server/webkit/wkInput.js +0 -181
- package/lib/server/webkit/wkInterceptableRequest.js +0 -169
- package/lib/server/webkit/wkPage.js +0 -1134
- package/lib/server/webkit/wkProvisionalPage.js +0 -83
- package/lib/server/webkit/wkWorkers.js +0 -104
- package/lib/server/webkit/wsl/webkit-wsl-transport-client.js +0 -74
- package/lib/server/webkit/wsl/webkit-wsl-transport-server.js +0 -113
- package/lib/third_party/pixelmatch.js +0 -255
- package/lib/utils/isomorphic/ariaSnapshot.js +0 -392
- package/lib/utils/isomorphic/assert.js +0 -31
- package/lib/utils/isomorphic/colors.js +0 -72
- package/lib/utils/isomorphic/cssParser.js +0 -245
- package/lib/utils/isomorphic/cssTokenizer.js +0 -1051
- package/lib/utils/isomorphic/headers.js +0 -53
- package/lib/utils/isomorphic/locatorGenerators.js +0 -673
- package/lib/utils/isomorphic/locatorParser.js +0 -176
- package/lib/utils/isomorphic/locatorUtils.js +0 -81
- package/lib/utils/isomorphic/manualPromise.js +0 -114
- package/lib/utils/isomorphic/mimeType.js +0 -459
- package/lib/utils/isomorphic/multimap.js +0 -80
- package/lib/utils/isomorphic/protocolFormatter.js +0 -78
- package/lib/utils/isomorphic/protocolMetainfo.js +0 -321
- package/lib/utils/isomorphic/rtti.js +0 -43
- package/lib/utils/isomorphic/selectorParser.js +0 -386
- package/lib/utils/isomorphic/semaphore.js +0 -54
- package/lib/utils/isomorphic/stackTrace.js +0 -158
- package/lib/utils/isomorphic/stringUtils.js +0 -155
- package/lib/utils/isomorphic/time.js +0 -49
- package/lib/utils/isomorphic/timeoutRunner.js +0 -66
- package/lib/utils/isomorphic/traceUtils.js +0 -58
- package/lib/utils/isomorphic/types.js +0 -16
- package/lib/utils/isomorphic/urlMatch.js +0 -176
- package/lib/utils/isomorphic/utilityScriptSerializers.js +0 -251
- package/lib/utils.js +0 -107
- package/lib/utilsBundleImpl/index.js +0 -218
- package/lib/vite/recorder/assets/codeMirrorModule-RJCXzfmE.js +0 -24
- package/lib/vite/recorder/assets/index-Ri0uHF7I.css +0 -1
- package/lib/vite/recorder/assets/index-Y-X2TGJv.js +0 -193
- package/lib/vite/traceViewer/assets/codeMirrorModule-eyVcHN77.js +0 -24
- package/lib/vite/traceViewer/assets/defaultSettingsView-w0zYjHsW.js +0 -265
- package/lib/vite/traceViewer/defaultSettingsView.TQ8_7ybu.css +0 -1
- package/lib/vite/traceViewer/index.Bx16ehp1.js +0 -2
- package/lib/vite/traceViewer/index.I8N9v4jT.css +0 -1
- package/lib/vite/traceViewer/uiMode.Btcz36p_.css +0 -1
- package/lib/vite/traceViewer/uiMode.DRQ310U5.js +0 -5
- package/lib/zipBundle.js +0 -34
- package/lib/zipBundleImpl.js +0 -5
- /package/lib/{utilsBundleImpl/xdg-open → xdg-open} +0 -0
|
@@ -1,218 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __create = Object.create;
|
|
3
|
-
var __defProp = Object.defineProperty;
|
|
4
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __export = (target, all) => {
|
|
9
|
-
for (var name in all)
|
|
10
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
-
};
|
|
12
|
-
var __copyProps = (to, from, except, desc) => {
|
|
13
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
-
for (let key of __getOwnPropNames(from))
|
|
15
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
-
}
|
|
18
|
-
return to;
|
|
19
|
-
};
|
|
20
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
-
mod
|
|
27
|
-
));
|
|
28
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
var httpServer_exports = {};
|
|
30
|
-
__export(httpServer_exports, {
|
|
31
|
-
HttpServer: () => HttpServer
|
|
32
|
-
});
|
|
33
|
-
module.exports = __toCommonJS(httpServer_exports);
|
|
34
|
-
var import_fs = __toESM(require("fs"));
|
|
35
|
-
var import_path = __toESM(require("path"));
|
|
36
|
-
var import_utilsBundle = require("../../utilsBundle");
|
|
37
|
-
var import_crypto = require("./crypto");
|
|
38
|
-
var import_assert = require("../../utils/isomorphic/assert");
|
|
39
|
-
var import_manualPromise = require("../../utils/isomorphic/manualPromise");
|
|
40
|
-
var import_network = require("./network");
|
|
41
|
-
class HttpServer {
|
|
42
|
-
constructor() {
|
|
43
|
-
this._urlPrefixPrecise = "";
|
|
44
|
-
this._urlPrefixHumanReadable = "";
|
|
45
|
-
this._port = 0;
|
|
46
|
-
this._started = false;
|
|
47
|
-
this._routes = [];
|
|
48
|
-
this._server = (0, import_network.createHttpServer)(this._onRequest.bind(this));
|
|
49
|
-
}
|
|
50
|
-
server() {
|
|
51
|
-
return this._server;
|
|
52
|
-
}
|
|
53
|
-
routePrefix(prefix, handler) {
|
|
54
|
-
this._routes.push({ prefix, handler });
|
|
55
|
-
}
|
|
56
|
-
routePath(path2, handler) {
|
|
57
|
-
this._routes.push({ exact: path2, handler });
|
|
58
|
-
}
|
|
59
|
-
port() {
|
|
60
|
-
return this._port;
|
|
61
|
-
}
|
|
62
|
-
async _tryStart(port, host) {
|
|
63
|
-
const errorPromise = new import_manualPromise.ManualPromise();
|
|
64
|
-
const errorListener = (error) => errorPromise.reject(error);
|
|
65
|
-
this._server.on("error", errorListener);
|
|
66
|
-
try {
|
|
67
|
-
this._server.listen(port, host);
|
|
68
|
-
await Promise.race([
|
|
69
|
-
new Promise((cb) => this._server.once("listening", cb)),
|
|
70
|
-
errorPromise
|
|
71
|
-
]);
|
|
72
|
-
} finally {
|
|
73
|
-
this._server.removeListener("error", errorListener);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
createWebSocket(transport, guid) {
|
|
77
|
-
(0, import_assert.assert)(!this._wsGuid, "can only create one main websocket transport per server");
|
|
78
|
-
this._wsGuid = guid || (0, import_crypto.createGuid)();
|
|
79
|
-
const wss = new import_utilsBundle.wsServer({ server: this._server, path: "/" + this._wsGuid });
|
|
80
|
-
wss.on("connection", (ws) => {
|
|
81
|
-
transport.onconnect();
|
|
82
|
-
transport.sendEvent = (method, params) => ws.send(JSON.stringify({ method, params }));
|
|
83
|
-
transport.close = () => ws.close();
|
|
84
|
-
ws.on("message", async (message) => {
|
|
85
|
-
const { id, method, params } = JSON.parse(String(message));
|
|
86
|
-
try {
|
|
87
|
-
const result = await transport.dispatch(method, params);
|
|
88
|
-
ws.send(JSON.stringify({ id, result }));
|
|
89
|
-
} catch (e) {
|
|
90
|
-
ws.send(JSON.stringify({ id, error: String(e) }));
|
|
91
|
-
}
|
|
92
|
-
});
|
|
93
|
-
ws.on("close", () => transport.onclose());
|
|
94
|
-
ws.on("error", () => transport.onclose());
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
wsGuid() {
|
|
98
|
-
return this._wsGuid;
|
|
99
|
-
}
|
|
100
|
-
async start(options = {}) {
|
|
101
|
-
(0, import_assert.assert)(!this._started, "server already started");
|
|
102
|
-
this._started = true;
|
|
103
|
-
const host = options.host || "localhost";
|
|
104
|
-
if (options.preferredPort) {
|
|
105
|
-
try {
|
|
106
|
-
await this._tryStart(options.preferredPort, host);
|
|
107
|
-
} catch (e) {
|
|
108
|
-
if (!e || !e.message || !e.message.includes("EADDRINUSE"))
|
|
109
|
-
throw e;
|
|
110
|
-
await this._tryStart(void 0, host);
|
|
111
|
-
}
|
|
112
|
-
} else {
|
|
113
|
-
await this._tryStart(options.port, host);
|
|
114
|
-
}
|
|
115
|
-
const address = this._server.address();
|
|
116
|
-
(0, import_assert.assert)(address, "Could not bind server socket");
|
|
117
|
-
if (typeof address === "string") {
|
|
118
|
-
this._urlPrefixPrecise = address;
|
|
119
|
-
this._urlPrefixHumanReadable = address;
|
|
120
|
-
} else {
|
|
121
|
-
this._port = address.port;
|
|
122
|
-
const resolvedHost = address.family === "IPv4" ? address.address : `[${address.address}]`;
|
|
123
|
-
this._urlPrefixPrecise = `http://${resolvedHost}:${address.port}`;
|
|
124
|
-
this._urlPrefixHumanReadable = `http://${host}:${address.port}`;
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
async stop() {
|
|
128
|
-
await new Promise((cb) => this._server.close(cb));
|
|
129
|
-
}
|
|
130
|
-
urlPrefix(purpose) {
|
|
131
|
-
return purpose === "human-readable" ? this._urlPrefixHumanReadable : this._urlPrefixPrecise;
|
|
132
|
-
}
|
|
133
|
-
serveFile(request, response, absoluteFilePath, headers) {
|
|
134
|
-
try {
|
|
135
|
-
for (const [name, value] of Object.entries(headers || {}))
|
|
136
|
-
response.setHeader(name, value);
|
|
137
|
-
if (request.headers.range)
|
|
138
|
-
this._serveRangeFile(request, response, absoluteFilePath);
|
|
139
|
-
else
|
|
140
|
-
this._serveFile(response, absoluteFilePath);
|
|
141
|
-
return true;
|
|
142
|
-
} catch (e) {
|
|
143
|
-
return false;
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
_serveFile(response, absoluteFilePath) {
|
|
147
|
-
const content = import_fs.default.readFileSync(absoluteFilePath);
|
|
148
|
-
response.statusCode = 200;
|
|
149
|
-
const contentType = import_utilsBundle.mime.getType(import_path.default.extname(absoluteFilePath)) || "application/octet-stream";
|
|
150
|
-
response.setHeader("Content-Type", contentType);
|
|
151
|
-
response.setHeader("Content-Length", content.byteLength);
|
|
152
|
-
response.end(content);
|
|
153
|
-
}
|
|
154
|
-
_serveRangeFile(request, response, absoluteFilePath) {
|
|
155
|
-
const range = request.headers.range;
|
|
156
|
-
if (!range || !range.startsWith("bytes=") || range.includes(", ") || [...range].filter((char) => char === "-").length !== 1) {
|
|
157
|
-
response.statusCode = 400;
|
|
158
|
-
return response.end("Bad request");
|
|
159
|
-
}
|
|
160
|
-
const [startStr, endStr] = range.replace(/bytes=/, "").split("-");
|
|
161
|
-
let start;
|
|
162
|
-
let end;
|
|
163
|
-
const size = import_fs.default.statSync(absoluteFilePath).size;
|
|
164
|
-
if (startStr !== "" && endStr === "") {
|
|
165
|
-
start = +startStr;
|
|
166
|
-
end = size - 1;
|
|
167
|
-
} else if (startStr === "" && endStr !== "") {
|
|
168
|
-
start = size - +endStr;
|
|
169
|
-
end = size - 1;
|
|
170
|
-
} else {
|
|
171
|
-
start = +startStr;
|
|
172
|
-
end = +endStr;
|
|
173
|
-
}
|
|
174
|
-
if (Number.isNaN(start) || Number.isNaN(end) || start >= size || end >= size || start > end) {
|
|
175
|
-
response.writeHead(416, {
|
|
176
|
-
"Content-Range": `bytes */${size}`
|
|
177
|
-
});
|
|
178
|
-
return response.end();
|
|
179
|
-
}
|
|
180
|
-
response.writeHead(206, {
|
|
181
|
-
"Content-Range": `bytes ${start}-${end}/${size}`,
|
|
182
|
-
"Accept-Ranges": "bytes",
|
|
183
|
-
"Content-Length": end - start + 1,
|
|
184
|
-
"Content-Type": import_utilsBundle.mime.getType(import_path.default.extname(absoluteFilePath))
|
|
185
|
-
});
|
|
186
|
-
const readable = import_fs.default.createReadStream(absoluteFilePath, { start, end });
|
|
187
|
-
readable.pipe(response);
|
|
188
|
-
}
|
|
189
|
-
_onRequest(request, response) {
|
|
190
|
-
if (request.method === "OPTIONS") {
|
|
191
|
-
response.writeHead(200);
|
|
192
|
-
response.end();
|
|
193
|
-
return;
|
|
194
|
-
}
|
|
195
|
-
request.on("error", () => response.end());
|
|
196
|
-
try {
|
|
197
|
-
if (!request.url) {
|
|
198
|
-
response.end();
|
|
199
|
-
return;
|
|
200
|
-
}
|
|
201
|
-
const url = new URL("http://localhost" + request.url);
|
|
202
|
-
for (const route of this._routes) {
|
|
203
|
-
if (route.exact && url.pathname === route.exact && route.handler(request, response))
|
|
204
|
-
return;
|
|
205
|
-
if (route.prefix && url.pathname.startsWith(route.prefix) && route.handler(request, response))
|
|
206
|
-
return;
|
|
207
|
-
}
|
|
208
|
-
response.statusCode = 404;
|
|
209
|
-
response.end();
|
|
210
|
-
} catch (e) {
|
|
211
|
-
response.end();
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
216
|
-
0 && (module.exports = {
|
|
217
|
-
HttpServer
|
|
218
|
-
});
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var colorUtils_exports = {};
|
|
20
|
-
__export(colorUtils_exports, {
|
|
21
|
-
blendWithWhite: () => blendWithWhite,
|
|
22
|
-
colorDeltaE94: () => colorDeltaE94,
|
|
23
|
-
rgb2gray: () => rgb2gray,
|
|
24
|
-
srgb2xyz: () => srgb2xyz,
|
|
25
|
-
xyz2lab: () => xyz2lab
|
|
26
|
-
});
|
|
27
|
-
module.exports = __toCommonJS(colorUtils_exports);
|
|
28
|
-
function blendWithWhite(c, a) {
|
|
29
|
-
return 255 + (c - 255) * a;
|
|
30
|
-
}
|
|
31
|
-
function rgb2gray(r, g, b) {
|
|
32
|
-
return 77 * r + 150 * g + 29 * b + 128 >> 8;
|
|
33
|
-
}
|
|
34
|
-
function colorDeltaE94(rgb1, rgb2) {
|
|
35
|
-
const [l1, a1, b1] = xyz2lab(srgb2xyz(rgb1));
|
|
36
|
-
const [l2, a2, b2] = xyz2lab(srgb2xyz(rgb2));
|
|
37
|
-
const deltaL = l1 - l2;
|
|
38
|
-
const deltaA = a1 - a2;
|
|
39
|
-
const deltaB = b1 - b2;
|
|
40
|
-
const c1 = Math.sqrt(a1 ** 2 + b1 ** 2);
|
|
41
|
-
const c2 = Math.sqrt(a2 ** 2 + b2 ** 2);
|
|
42
|
-
const deltaC = c1 - c2;
|
|
43
|
-
let deltaH = deltaA ** 2 + deltaB ** 2 - deltaC ** 2;
|
|
44
|
-
deltaH = deltaH < 0 ? 0 : Math.sqrt(deltaH);
|
|
45
|
-
const k1 = 0.045;
|
|
46
|
-
const k2 = 0.015;
|
|
47
|
-
const kL = 1;
|
|
48
|
-
const kC = 1;
|
|
49
|
-
const kH = 1;
|
|
50
|
-
const sC = 1 + k1 * c1;
|
|
51
|
-
const sH = 1 + k2 * c1;
|
|
52
|
-
const sL = 1;
|
|
53
|
-
return Math.sqrt((deltaL / sL / kL) ** 2 + (deltaC / sC / kC) ** 2 + (deltaH / sH / kH) ** 2);
|
|
54
|
-
}
|
|
55
|
-
function srgb2xyz(rgb) {
|
|
56
|
-
let r = rgb[0] / 255;
|
|
57
|
-
let g = rgb[1] / 255;
|
|
58
|
-
let b = rgb[2] / 255;
|
|
59
|
-
r = r > 0.04045 ? Math.pow((r + 0.055) / 1.055, 2.4) : r / 12.92;
|
|
60
|
-
g = g > 0.04045 ? Math.pow((g + 0.055) / 1.055, 2.4) : g / 12.92;
|
|
61
|
-
b = b > 0.04045 ? Math.pow((b + 0.055) / 1.055, 2.4) : b / 12.92;
|
|
62
|
-
return [
|
|
63
|
-
r * 0.4124 + g * 0.3576 + b * 0.1805,
|
|
64
|
-
r * 0.2126 + g * 0.7152 + b * 0.0722,
|
|
65
|
-
r * 0.0193 + g * 0.1192 + b * 0.9505
|
|
66
|
-
];
|
|
67
|
-
}
|
|
68
|
-
const sigma_pow2 = 6 * 6 / 29 / 29;
|
|
69
|
-
const sigma_pow3 = 6 * 6 * 6 / 29 / 29 / 29;
|
|
70
|
-
function xyz2lab(xyz) {
|
|
71
|
-
const x = xyz[0] / 0.950489;
|
|
72
|
-
const y = xyz[1];
|
|
73
|
-
const z = xyz[2] / 1.08884;
|
|
74
|
-
const fx = x > sigma_pow3 ? x ** (1 / 3) : x / 3 / sigma_pow2 + 4 / 29;
|
|
75
|
-
const fy = y > sigma_pow3 ? y ** (1 / 3) : y / 3 / sigma_pow2 + 4 / 29;
|
|
76
|
-
const fz = z > sigma_pow3 ? z ** (1 / 3) : z / 3 / sigma_pow2 + 4 / 29;
|
|
77
|
-
const l = 116 * fy - 16;
|
|
78
|
-
const a = 500 * (fx - fy);
|
|
79
|
-
const b = 200 * (fy - fz);
|
|
80
|
-
return [l, a, b];
|
|
81
|
-
}
|
|
82
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
83
|
-
0 && (module.exports = {
|
|
84
|
-
blendWithWhite,
|
|
85
|
-
colorDeltaE94,
|
|
86
|
-
rgb2gray,
|
|
87
|
-
srgb2xyz,
|
|
88
|
-
xyz2lab
|
|
89
|
-
});
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var compare_exports = {};
|
|
20
|
-
__export(compare_exports, {
|
|
21
|
-
compare: () => compare
|
|
22
|
-
});
|
|
23
|
-
module.exports = __toCommonJS(compare_exports);
|
|
24
|
-
var import_colorUtils = require("./colorUtils");
|
|
25
|
-
var import_imageChannel = require("./imageChannel");
|
|
26
|
-
var import_stats = require("./stats");
|
|
27
|
-
const SSIM_WINDOW_RADIUS = 15;
|
|
28
|
-
const VARIANCE_WINDOW_RADIUS = 1;
|
|
29
|
-
function drawPixel(width, data, x, y, r, g, b) {
|
|
30
|
-
const idx = (y * width + x) * 4;
|
|
31
|
-
data[idx + 0] = r;
|
|
32
|
-
data[idx + 1] = g;
|
|
33
|
-
data[idx + 2] = b;
|
|
34
|
-
data[idx + 3] = 255;
|
|
35
|
-
}
|
|
36
|
-
function compare(actual, expected, diff, width, height, options = {}) {
|
|
37
|
-
const {
|
|
38
|
-
maxColorDeltaE94 = 1
|
|
39
|
-
} = options;
|
|
40
|
-
const paddingSize = Math.max(VARIANCE_WINDOW_RADIUS, SSIM_WINDOW_RADIUS);
|
|
41
|
-
const paddingColorEven = [255, 0, 255];
|
|
42
|
-
const paddingColorOdd = [0, 255, 0];
|
|
43
|
-
const [r1, g1, b1] = import_imageChannel.ImageChannel.intoRGB(width, height, expected, {
|
|
44
|
-
paddingSize,
|
|
45
|
-
paddingColorEven,
|
|
46
|
-
paddingColorOdd
|
|
47
|
-
});
|
|
48
|
-
const [r2, g2, b2] = import_imageChannel.ImageChannel.intoRGB(width, height, actual, {
|
|
49
|
-
paddingSize,
|
|
50
|
-
paddingColorEven,
|
|
51
|
-
paddingColorOdd
|
|
52
|
-
});
|
|
53
|
-
const noop = (x, y) => {
|
|
54
|
-
};
|
|
55
|
-
const drawRedPixel = diff ? (x, y) => drawPixel(width, diff, x - paddingSize, y - paddingSize, 255, 0, 0) : noop;
|
|
56
|
-
const drawYellowPixel = diff ? (x, y) => drawPixel(width, diff, x - paddingSize, y - paddingSize, 255, 255, 0) : noop;
|
|
57
|
-
const drawGrayPixel = diff ? (x, y) => {
|
|
58
|
-
const gray = (0, import_colorUtils.rgb2gray)(r1.get(x, y), g1.get(x, y), b1.get(x, y));
|
|
59
|
-
const value = (0, import_colorUtils.blendWithWhite)(gray, 0.1);
|
|
60
|
-
drawPixel(width, diff, x - paddingSize, y - paddingSize, value, value, value);
|
|
61
|
-
} : noop;
|
|
62
|
-
let fastR, fastG, fastB;
|
|
63
|
-
let diffCount = 0;
|
|
64
|
-
for (let y = paddingSize; y < r1.height - paddingSize; ++y) {
|
|
65
|
-
for (let x = paddingSize; x < r1.width - paddingSize; ++x) {
|
|
66
|
-
if (r1.get(x, y) === r2.get(x, y) && g1.get(x, y) === g2.get(x, y) && b1.get(x, y) === b2.get(x, y)) {
|
|
67
|
-
drawGrayPixel(x, y);
|
|
68
|
-
continue;
|
|
69
|
-
}
|
|
70
|
-
const delta = (0, import_colorUtils.colorDeltaE94)(
|
|
71
|
-
[r1.get(x, y), g1.get(x, y), b1.get(x, y)],
|
|
72
|
-
[r2.get(x, y), g2.get(x, y), b2.get(x, y)]
|
|
73
|
-
);
|
|
74
|
-
if (delta <= maxColorDeltaE94) {
|
|
75
|
-
drawGrayPixel(x, y);
|
|
76
|
-
continue;
|
|
77
|
-
}
|
|
78
|
-
if (!fastR || !fastG || !fastB) {
|
|
79
|
-
fastR = new import_stats.FastStats(r1, r2);
|
|
80
|
-
fastG = new import_stats.FastStats(g1, g2);
|
|
81
|
-
fastB = new import_stats.FastStats(b1, b2);
|
|
82
|
-
}
|
|
83
|
-
const [varX1, varY1] = r1.boundXY(x - VARIANCE_WINDOW_RADIUS, y - VARIANCE_WINDOW_RADIUS);
|
|
84
|
-
const [varX2, varY2] = r1.boundXY(x + VARIANCE_WINDOW_RADIUS, y + VARIANCE_WINDOW_RADIUS);
|
|
85
|
-
const var1 = fastR.varianceC1(varX1, varY1, varX2, varY2) + fastG.varianceC1(varX1, varY1, varX2, varY2) + fastB.varianceC1(varX1, varY1, varX2, varY2);
|
|
86
|
-
const var2 = fastR.varianceC2(varX1, varY1, varX2, varY2) + fastG.varianceC2(varX1, varY1, varX2, varY2) + fastB.varianceC2(varX1, varY1, varX2, varY2);
|
|
87
|
-
if (var1 === 0 || var2 === 0) {
|
|
88
|
-
drawRedPixel(x, y);
|
|
89
|
-
++diffCount;
|
|
90
|
-
continue;
|
|
91
|
-
}
|
|
92
|
-
const [ssimX1, ssimY1] = r1.boundXY(x - SSIM_WINDOW_RADIUS, y - SSIM_WINDOW_RADIUS);
|
|
93
|
-
const [ssimX2, ssimY2] = r1.boundXY(x + SSIM_WINDOW_RADIUS, y + SSIM_WINDOW_RADIUS);
|
|
94
|
-
const ssimRGB = ((0, import_stats.ssim)(fastR, ssimX1, ssimY1, ssimX2, ssimY2) + (0, import_stats.ssim)(fastG, ssimX1, ssimY1, ssimX2, ssimY2) + (0, import_stats.ssim)(fastB, ssimX1, ssimY1, ssimX2, ssimY2)) / 3;
|
|
95
|
-
const isAntialiased = ssimRGB >= 0.99;
|
|
96
|
-
if (isAntialiased) {
|
|
97
|
-
drawYellowPixel(x, y);
|
|
98
|
-
} else {
|
|
99
|
-
drawRedPixel(x, y);
|
|
100
|
-
++diffCount;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
return diffCount;
|
|
105
|
-
}
|
|
106
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
107
|
-
0 && (module.exports = {
|
|
108
|
-
compare
|
|
109
|
-
});
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var imageChannel_exports = {};
|
|
20
|
-
__export(imageChannel_exports, {
|
|
21
|
-
ImageChannel: () => ImageChannel
|
|
22
|
-
});
|
|
23
|
-
module.exports = __toCommonJS(imageChannel_exports);
|
|
24
|
-
var import_colorUtils = require("./colorUtils");
|
|
25
|
-
class ImageChannel {
|
|
26
|
-
static intoRGB(width, height, data, options = {}) {
|
|
27
|
-
const {
|
|
28
|
-
paddingSize = 0,
|
|
29
|
-
paddingColorOdd = [255, 0, 255],
|
|
30
|
-
paddingColorEven = [0, 255, 0]
|
|
31
|
-
} = options;
|
|
32
|
-
const newWidth = width + 2 * paddingSize;
|
|
33
|
-
const newHeight = height + 2 * paddingSize;
|
|
34
|
-
const r = new Uint8Array(newWidth * newHeight);
|
|
35
|
-
const g = new Uint8Array(newWidth * newHeight);
|
|
36
|
-
const b = new Uint8Array(newWidth * newHeight);
|
|
37
|
-
for (let y = 0; y < newHeight; ++y) {
|
|
38
|
-
for (let x = 0; x < newWidth; ++x) {
|
|
39
|
-
const index = y * newWidth + x;
|
|
40
|
-
if (y >= paddingSize && y < newHeight - paddingSize && x >= paddingSize && x < newWidth - paddingSize) {
|
|
41
|
-
const offset = ((y - paddingSize) * width + (x - paddingSize)) * 4;
|
|
42
|
-
const alpha = data[offset + 3] === 255 ? 1 : data[offset + 3] / 255;
|
|
43
|
-
r[index] = (0, import_colorUtils.blendWithWhite)(data[offset], alpha);
|
|
44
|
-
g[index] = (0, import_colorUtils.blendWithWhite)(data[offset + 1], alpha);
|
|
45
|
-
b[index] = (0, import_colorUtils.blendWithWhite)(data[offset + 2], alpha);
|
|
46
|
-
} else {
|
|
47
|
-
const color = (y + x) % 2 === 0 ? paddingColorEven : paddingColorOdd;
|
|
48
|
-
r[index] = color[0];
|
|
49
|
-
g[index] = color[1];
|
|
50
|
-
b[index] = color[2];
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
return [
|
|
55
|
-
new ImageChannel(newWidth, newHeight, r),
|
|
56
|
-
new ImageChannel(newWidth, newHeight, g),
|
|
57
|
-
new ImageChannel(newWidth, newHeight, b)
|
|
58
|
-
];
|
|
59
|
-
}
|
|
60
|
-
constructor(width, height, data) {
|
|
61
|
-
this.data = data;
|
|
62
|
-
this.width = width;
|
|
63
|
-
this.height = height;
|
|
64
|
-
}
|
|
65
|
-
get(x, y) {
|
|
66
|
-
return this.data[y * this.width + x];
|
|
67
|
-
}
|
|
68
|
-
boundXY(x, y) {
|
|
69
|
-
return [
|
|
70
|
-
Math.min(Math.max(x, 0), this.width - 1),
|
|
71
|
-
Math.min(Math.max(y, 0), this.height - 1)
|
|
72
|
-
];
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
76
|
-
0 && (module.exports = {
|
|
77
|
-
ImageChannel
|
|
78
|
-
});
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __defProp = Object.defineProperty;
|
|
3
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
-
var __export = (target, all) => {
|
|
7
|
-
for (var name in all)
|
|
8
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
-
};
|
|
10
|
-
var __copyProps = (to, from, except, desc) => {
|
|
11
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
-
for (let key of __getOwnPropNames(from))
|
|
13
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
-
}
|
|
16
|
-
return to;
|
|
17
|
-
};
|
|
18
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var stats_exports = {};
|
|
20
|
-
__export(stats_exports, {
|
|
21
|
-
FastStats: () => FastStats,
|
|
22
|
-
ssim: () => ssim
|
|
23
|
-
});
|
|
24
|
-
module.exports = __toCommonJS(stats_exports);
|
|
25
|
-
const DYNAMIC_RANGE = 2 ** 8 - 1;
|
|
26
|
-
function ssim(stats, x1, y1, x2, y2) {
|
|
27
|
-
const mean1 = stats.meanC1(x1, y1, x2, y2);
|
|
28
|
-
const mean2 = stats.meanC2(x1, y1, x2, y2);
|
|
29
|
-
const var1 = stats.varianceC1(x1, y1, x2, y2);
|
|
30
|
-
const var2 = stats.varianceC2(x1, y1, x2, y2);
|
|
31
|
-
const cov = stats.covariance(x1, y1, x2, y2);
|
|
32
|
-
const c1 = (0.01 * DYNAMIC_RANGE) ** 2;
|
|
33
|
-
const c2 = (0.03 * DYNAMIC_RANGE) ** 2;
|
|
34
|
-
return (2 * mean1 * mean2 + c1) * (2 * cov + c2) / (mean1 ** 2 + mean2 ** 2 + c1) / (var1 + var2 + c2);
|
|
35
|
-
}
|
|
36
|
-
class FastStats {
|
|
37
|
-
constructor(c1, c2) {
|
|
38
|
-
this.c1 = c1;
|
|
39
|
-
this.c2 = c2;
|
|
40
|
-
const { width, height } = c1;
|
|
41
|
-
this._partialSumC1 = new Array(width * height);
|
|
42
|
-
this._partialSumC2 = new Array(width * height);
|
|
43
|
-
this._partialSumSq1 = new Array(width * height);
|
|
44
|
-
this._partialSumSq2 = new Array(width * height);
|
|
45
|
-
this._partialSumMult = new Array(width * height);
|
|
46
|
-
const recalc = (mx, idx, initial, x, y) => {
|
|
47
|
-
mx[idx] = initial;
|
|
48
|
-
if (y > 0)
|
|
49
|
-
mx[idx] += mx[(y - 1) * width + x];
|
|
50
|
-
if (x > 0)
|
|
51
|
-
mx[idx] += mx[y * width + x - 1];
|
|
52
|
-
if (x > 0 && y > 0)
|
|
53
|
-
mx[idx] -= mx[(y - 1) * width + x - 1];
|
|
54
|
-
};
|
|
55
|
-
for (let y = 0; y < height; ++y) {
|
|
56
|
-
for (let x = 0; x < width; ++x) {
|
|
57
|
-
const idx = y * width + x;
|
|
58
|
-
recalc(this._partialSumC1, idx, this.c1.data[idx], x, y);
|
|
59
|
-
recalc(this._partialSumC2, idx, this.c2.data[idx], x, y);
|
|
60
|
-
recalc(this._partialSumSq1, idx, this.c1.data[idx] * this.c1.data[idx], x, y);
|
|
61
|
-
recalc(this._partialSumSq2, idx, this.c2.data[idx] * this.c2.data[idx], x, y);
|
|
62
|
-
recalc(this._partialSumMult, idx, this.c1.data[idx] * this.c2.data[idx], x, y);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
_sum(partialSum, x1, y1, x2, y2) {
|
|
67
|
-
const width = this.c1.width;
|
|
68
|
-
let result = partialSum[y2 * width + x2];
|
|
69
|
-
if (y1 > 0)
|
|
70
|
-
result -= partialSum[(y1 - 1) * width + x2];
|
|
71
|
-
if (x1 > 0)
|
|
72
|
-
result -= partialSum[y2 * width + x1 - 1];
|
|
73
|
-
if (x1 > 0 && y1 > 0)
|
|
74
|
-
result += partialSum[(y1 - 1) * width + x1 - 1];
|
|
75
|
-
return result;
|
|
76
|
-
}
|
|
77
|
-
meanC1(x1, y1, x2, y2) {
|
|
78
|
-
const N = (y2 - y1 + 1) * (x2 - x1 + 1);
|
|
79
|
-
return this._sum(this._partialSumC1, x1, y1, x2, y2) / N;
|
|
80
|
-
}
|
|
81
|
-
meanC2(x1, y1, x2, y2) {
|
|
82
|
-
const N = (y2 - y1 + 1) * (x2 - x1 + 1);
|
|
83
|
-
return this._sum(this._partialSumC2, x1, y1, x2, y2) / N;
|
|
84
|
-
}
|
|
85
|
-
varianceC1(x1, y1, x2, y2) {
|
|
86
|
-
const N = (y2 - y1 + 1) * (x2 - x1 + 1);
|
|
87
|
-
return (this._sum(this._partialSumSq1, x1, y1, x2, y2) - this._sum(this._partialSumC1, x1, y1, x2, y2) ** 2 / N) / N;
|
|
88
|
-
}
|
|
89
|
-
varianceC2(x1, y1, x2, y2) {
|
|
90
|
-
const N = (y2 - y1 + 1) * (x2 - x1 + 1);
|
|
91
|
-
return (this._sum(this._partialSumSq2, x1, y1, x2, y2) - this._sum(this._partialSumC2, x1, y1, x2, y2) ** 2 / N) / N;
|
|
92
|
-
}
|
|
93
|
-
covariance(x1, y1, x2, y2) {
|
|
94
|
-
const N = (y2 - y1 + 1) * (x2 - x1 + 1);
|
|
95
|
-
return (this._sum(this._partialSumMult, x1, y1, x2, y2) - this._sum(this._partialSumC1, x1, y1, x2, y2) * this._sum(this._partialSumC2, x1, y1, x2, y2) / N) / N;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
99
|
-
0 && (module.exports = {
|
|
100
|
-
FastStats,
|
|
101
|
-
ssim
|
|
102
|
-
});
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __create = Object.create;
|
|
3
|
-
var __defProp = Object.defineProperty;
|
|
4
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
-
var __export = (target, all) => {
|
|
9
|
-
for (var name in all)
|
|
10
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
-
};
|
|
12
|
-
var __copyProps = (to, from, except, desc) => {
|
|
13
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
-
for (let key of __getOwnPropNames(from))
|
|
15
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
-
}
|
|
18
|
-
return to;
|
|
19
|
-
};
|
|
20
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
-
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
-
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
-
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
-
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
-
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
-
mod
|
|
27
|
-
));
|
|
28
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
var linuxUtils_exports = {};
|
|
30
|
-
__export(linuxUtils_exports, {
|
|
31
|
-
getLinuxDistributionInfoSync: () => getLinuxDistributionInfoSync
|
|
32
|
-
});
|
|
33
|
-
module.exports = __toCommonJS(linuxUtils_exports);
|
|
34
|
-
var import_fs = __toESM(require("fs"));
|
|
35
|
-
let didFailToReadOSRelease = false;
|
|
36
|
-
let osRelease;
|
|
37
|
-
function getLinuxDistributionInfoSync() {
|
|
38
|
-
if (process.platform !== "linux")
|
|
39
|
-
return void 0;
|
|
40
|
-
if (!osRelease && !didFailToReadOSRelease) {
|
|
41
|
-
try {
|
|
42
|
-
const osReleaseText = import_fs.default.readFileSync("/etc/os-release", "utf8");
|
|
43
|
-
const fields = parseOSReleaseText(osReleaseText);
|
|
44
|
-
osRelease = {
|
|
45
|
-
id: fields.get("id") ?? "",
|
|
46
|
-
version: fields.get("version_id") ?? ""
|
|
47
|
-
};
|
|
48
|
-
} catch (e) {
|
|
49
|
-
didFailToReadOSRelease = true;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
return osRelease;
|
|
53
|
-
}
|
|
54
|
-
function parseOSReleaseText(osReleaseText) {
|
|
55
|
-
const fields = /* @__PURE__ */ new Map();
|
|
56
|
-
for (const line of osReleaseText.split("\n")) {
|
|
57
|
-
const tokens = line.split("=");
|
|
58
|
-
const name = tokens.shift();
|
|
59
|
-
let value = tokens.join("=").trim();
|
|
60
|
-
if (value.startsWith('"') && value.endsWith('"'))
|
|
61
|
-
value = value.substring(1, value.length - 1);
|
|
62
|
-
if (!name)
|
|
63
|
-
continue;
|
|
64
|
-
fields.set(name.toLowerCase(), value);
|
|
65
|
-
}
|
|
66
|
-
return fields;
|
|
67
|
-
}
|
|
68
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
69
|
-
0 && (module.exports = {
|
|
70
|
-
getLinuxDistributionInfoSync
|
|
71
|
-
});
|