@checkly/playwright-core 1.42.17 → 1.47.20-alpha
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 +144 -109
- package/browsers.json +15 -25
- package/lib/androidServerImpl.js +1 -1
- package/lib/browserServerImpl.js +1 -1
- package/lib/cli/driver.js +1 -3
- package/lib/cli/program.js +5 -10
- package/lib/client/android.js +1 -1
- package/lib/client/api.js +7 -0
- package/lib/client/browserContext.js +37 -5
- package/lib/client/browserType.js +19 -11
- package/lib/client/channelOwner.js +19 -16
- package/lib/client/clientInstrumentation.js +17 -7
- package/lib/client/clock.js +68 -0
- package/lib/client/connection.js +9 -6
- package/lib/client/electron.js +7 -5
- package/lib/client/elementHandle.js +44 -14
- package/lib/client/eventEmitter.js +314 -0
- package/lib/client/fetch.js +81 -28
- package/lib/client/frame.js +2 -4
- package/lib/client/jsHandle.js +7 -1
- package/lib/client/locator.js +9 -0
- package/lib/client/network.js +12 -9
- package/lib/client/page.js +45 -23
- package/lib/client/playwright.js +3 -0
- package/lib/client/tracing.js +7 -4
- package/lib/common/socksProxy.js +2 -2
- package/lib/generated/clockSource.js +7 -0
- package/lib/generated/injectedScriptSource.js +1 -1
- package/lib/generated/recorderSource.js +1 -1
- package/lib/generated/utilityScriptSource.js +1 -1
- package/lib/protocol/serializers.js +12 -11
- package/lib/protocol/validator.js +137 -55
- package/lib/server/bidi/bidiBrowser.js +296 -0
- package/lib/server/bidi/bidiConnection.js +206 -0
- package/lib/server/bidi/bidiExecutionContext.js +162 -0
- package/lib/server/bidi/bidiFirefox.js +110 -0
- package/lib/server/bidi/bidiInput.js +174 -0
- package/lib/server/bidi/bidiNetworkManager.js +304 -0
- package/lib/server/bidi/bidiPage.js +456 -0
- package/lib/server/bidi/third_party/bidiDeserializer.js +93 -0
- package/lib/server/bidi/third_party/bidiKeyboard.js +238 -0
- package/lib/server/bidi/third_party/bidiProtocol.js +139 -0
- package/lib/server/bidi/third_party/bidiSerializer.js +144 -0
- package/lib/server/browser.js +9 -1
- package/lib/server/browserContext.js +97 -22
- package/lib/server/browserType.js +27 -20
- package/lib/server/chromium/chromium.js +30 -15
- package/lib/server/chromium/chromiumSwitches.js +6 -3
- package/lib/server/chromium/crBrowser.js +11 -17
- package/lib/server/chromium/crConnection.js +2 -2
- package/lib/server/chromium/crDragDrop.js +28 -29
- package/lib/server/chromium/crNetworkManager.js +130 -84
- package/lib/server/chromium/crPage.js +34 -79
- package/lib/server/chromium/crProtocolHelper.js +3 -1
- package/lib/server/chromium/crServiceWorker.js +20 -23
- package/lib/server/chromium/videoRecorder.js +1 -1
- package/lib/server/clock.js +125 -0
- package/lib/server/codegen/csharp.js +299 -0
- package/lib/server/codegen/java.js +235 -0
- package/lib/server/codegen/javascript.js +223 -0
- package/lib/server/codegen/jsonl.js +47 -0
- package/lib/server/codegen/language.js +76 -0
- package/lib/server/codegen/languages.js +30 -0
- package/lib/server/codegen/python.js +265 -0
- package/lib/server/codegen/types.js +5 -0
- package/lib/server/debugController.js +3 -5
- package/lib/server/deviceDescriptors.js +9 -4
- package/lib/server/deviceDescriptorsSource.json +239 -119
- package/lib/server/dispatchers/androidDispatcher.js +1 -1
- package/lib/server/dispatchers/browserContextDispatcher.js +51 -7
- package/lib/server/dispatchers/dispatcher.js +36 -40
- package/lib/server/dispatchers/frameDispatcher.js +1 -2
- package/lib/server/dispatchers/jsHandleDispatcher.js +1 -1
- package/lib/server/dispatchers/jsonPipeDispatcher.js +4 -6
- package/lib/server/dispatchers/localUtilsDispatcher.js +19 -5
- package/lib/server/dispatchers/networkDispatchers.js +2 -2
- package/lib/server/dispatchers/pageDispatcher.js +5 -2
- package/lib/server/dispatchers/playwrightDispatcher.js +1 -0
- package/lib/server/dispatchers/writableStreamDispatcher.js +8 -5
- package/lib/server/dom.js +90 -53
- package/lib/server/electron/electron.js +21 -4
- package/lib/server/fetch.js +74 -25
- package/lib/server/fileUploadUtils.js +7 -3
- package/lib/server/firefox/ffBrowser.js +36 -25
- package/lib/server/firefox/ffConnection.js +2 -2
- package/lib/server/firefox/ffNetworkManager.js +6 -4
- package/lib/server/firefox/ffPage.js +22 -24
- package/lib/server/firefox/firefox.js +25 -6
- package/lib/server/frameSelectors.js +2 -2
- package/lib/server/frames.js +205 -159
- package/lib/server/har/harTracer.js +4 -12
- package/lib/server/helper.js +3 -3
- package/lib/server/index.js +18 -0
- package/lib/server/input.js +18 -8
- package/lib/server/instrumentation.js +0 -4
- package/lib/server/isomorphic/utilityScriptSerializers.js +19 -5
- package/lib/server/javascript.js +3 -2
- package/lib/server/launchApp.js +3 -2
- package/lib/server/network.js +14 -4
- package/lib/server/page.js +75 -46
- package/lib/server/playwright.js +5 -2
- package/lib/server/recorder/codeGenerator.js +2 -1
- package/lib/server/recorder/contextRecorder.js +316 -0
- package/lib/server/recorder/csharp.js +2 -1
- package/lib/server/recorder/java.js +2 -1
- package/lib/server/recorder/javascript.js +2 -1
- package/lib/server/recorder/jsonl.js +2 -1
- package/lib/server/recorder/language.js +2 -1
- package/lib/server/recorder/python.js +2 -1
- package/lib/server/recorder/recorderApp.js +14 -5
- package/lib/server/recorder/recorderCollection.js +127 -0
- package/lib/server/recorder/recorderRunner.js +177 -0
- package/lib/server/recorder/recorderUtils.js +23 -0
- package/lib/server/recorder/throttledFile.js +46 -0
- package/lib/server/recorder/utils.js +2 -1
- package/lib/server/recorder.js +42 -418
- package/lib/server/registry/index.js +99 -100
- package/lib/server/registry/nativeDeps.js +107 -0
- package/lib/server/screenshotter.js +6 -12
- package/lib/server/socksClientCertificatesInterceptor.js +328 -0
- package/lib/server/trace/recorder/snapshotter.js +4 -1
- package/lib/server/trace/recorder/tracing.js +27 -96
- package/lib/server/trace/viewer/traceViewer.js +54 -67
- package/lib/server/transport.js +1 -1
- package/lib/server/webkit/webkit.js +5 -5
- package/lib/server/webkit/wkBrowser.js +14 -14
- package/lib/server/webkit/wkConnection.js +3 -3
- package/lib/server/webkit/wkInterceptableRequest.js +8 -4
- package/lib/server/webkit/wkPage.js +52 -34
- package/lib/server/webkit/wkProvisionalPage.js +36 -1
- package/lib/utils/crypto.js +141 -0
- package/lib/utils/debugLogger.js +2 -0
- package/lib/utils/env.js +4 -2
- package/lib/utils/expectUtils.js +33 -0
- package/lib/utils/fileUtils.js +140 -1
- package/lib/utils/glob.js +2 -1
- package/lib/utils/happy-eyeballs.js +29 -2
- package/lib/utils/hostPlatform.js +13 -4
- package/lib/utils/httpServer.js +54 -13
- package/lib/utils/index.js +53 -31
- package/lib/utils/isomorphic/cssTokenizer.js +1 -1
- package/lib/utils/isomorphic/locatorParser.js +1 -1
- package/lib/utils/isomorphic/mimeType.js +29 -0
- package/lib/utils/isomorphic/stringUtils.js +28 -1
- package/lib/utils/isomorphic/urlMatch.js +120 -0
- package/lib/utils/mimeType.js +2 -1
- package/lib/utils/network.js +7 -35
- package/lib/utils/stackTrace.js +2 -4
- package/lib/utils/timeoutRunner.js +11 -76
- package/lib/utils/zones.js +23 -60
- package/lib/utilsBundle.js +2 -1
- package/lib/utilsBundleImpl/index.js +33 -31
- package/lib/vite/htmlReport/index.html +12 -12
- package/lib/vite/recorder/assets/codeMirrorModule-C-fQ5QZD.js +24 -0
- package/lib/vite/recorder/assets/{codicon-zGuYmc9o.ttf → codicon-DCmgc-ay.ttf} +0 -0
- package/lib/vite/recorder/assets/index-B-MT5gKo.css +1 -0
- package/lib/vite/recorder/assets/index-D-5S5PPN.js +47 -0
- package/lib/vite/recorder/index.html +2 -2
- package/lib/vite/traceViewer/assets/codeMirrorModule-5yiV-3wl.js +16831 -0
- package/lib/vite/traceViewer/assets/codeMirrorModule-B7Z3vq11.js +24 -0
- package/lib/vite/traceViewer/assets/codeMirrorModule-C6p3E9Zg.js +24 -0
- package/lib/vite/traceViewer/assets/codeMirrorModule-CqYUz5ms.js +24 -0
- package/lib/vite/traceViewer/assets/codeMirrorModule-Dx6AXgMV.js +16838 -0
- package/lib/vite/traceViewer/assets/codeMirrorModule-T_sdMrbM.js +24 -0
- package/lib/vite/traceViewer/assets/codeMirrorModule-V7N6ppkd.js +15585 -0
- package/lib/vite/traceViewer/assets/testServerConnection-D-tXL3sj.js +224 -0
- package/lib/vite/traceViewer/assets/testServerConnection-DeE2kSzz.js +1 -0
- package/lib/vite/traceViewer/assets/workbench-Bjkiwcr1.js +19119 -0
- package/lib/vite/traceViewer/assets/workbench-C43LWZEX.js +72 -0
- package/lib/vite/traceViewer/assets/workbench-C5OQh9VX.js +19119 -0
- package/lib/vite/traceViewer/assets/workbench-DrQjKdyE.js +72 -0
- package/lib/vite/traceViewer/assets/workbench-caTaZnzx.js +72 -0
- package/lib/vite/traceViewer/assets/workbench-u2lRPMOT.js +72 -0
- package/lib/vite/traceViewer/assets/wsPort-EUvw-dwH.js +18540 -0
- package/lib/vite/traceViewer/assets/xtermModule-CZ7sDYXB.js +6529 -0
- package/lib/vite/traceViewer/assets/xtermModule-_6TC5FYT.js +6529 -0
- package/lib/vite/traceViewer/codeMirrorModule.Cy8X9Wtw.css +344 -0
- package/lib/vite/traceViewer/codeMirrorModule.svF_VrcJ.css +344 -0
- package/lib/vite/traceViewer/codicon.DCmgc-ay.ttf +0 -0
- package/lib/vite/traceViewer/embedded.BQq6Psnz.js +104 -0
- package/lib/vite/traceViewer/embedded.BVDVQOzc.js +2 -0
- package/lib/vite/traceViewer/embedded.Bn8Ptzv6.js +2 -0
- package/lib/vite/traceViewer/embedded.CvhnUgIi.js +2 -0
- package/lib/vite/traceViewer/embedded.D27cnKiB.js +104 -0
- package/lib/vite/traceViewer/embedded.DPqrDeET.js +2 -0
- package/lib/vite/traceViewer/embedded.DjZq4InJ.css +68 -0
- package/lib/vite/traceViewer/embedded.html +16 -0
- package/lib/vite/traceViewer/embedded.w7WN2u1R.css +1 -0
- package/lib/vite/traceViewer/index.5mge2rY_.css +124 -0
- package/lib/vite/traceViewer/index.6KJ-JQ0L.js +180 -0
- package/lib/vite/traceViewer/index.B8dgQwuN.js +2 -0
- package/lib/vite/traceViewer/index.BGj8jY3H.js +2 -0
- package/lib/vite/traceViewer/index.C0EgJ4oW.js +195 -0
- package/lib/vite/traceViewer/index.CUpI-BFe.js +195 -0
- package/lib/vite/traceViewer/{index.-g_5lMbJ.css → index.CrbWWHbf.css} +1 -1
- package/lib/vite/traceViewer/index.QanXxRUb.css +131 -0
- package/lib/vite/traceViewer/index._cX8k4co.js +2 -0
- package/lib/vite/traceViewer/index.html +5 -4
- package/lib/vite/traceViewer/index.pMAN88y-.js +2 -0
- package/lib/vite/traceViewer/snapshot.html +1 -1
- package/lib/vite/traceViewer/sw.bundle.js +3 -4
- package/lib/vite/traceViewer/uiMode.D-tg1Oci.js +1730 -0
- package/lib/vite/traceViewer/uiMode.D3cNFP6u.css +1 -0
- package/lib/vite/traceViewer/uiMode.DKjMBMlc.js +1730 -0
- package/lib/vite/traceViewer/uiMode.DVWUEIHq.css +1424 -0
- package/lib/vite/traceViewer/uiMode.DVrL7a1K.js +10 -0
- package/lib/vite/traceViewer/uiMode.Dg9oJCQU.js +10 -0
- package/lib/vite/traceViewer/uiMode.DwZAzstF.js +10 -0
- package/lib/vite/traceViewer/uiMode.html +5 -4
- package/lib/vite/traceViewer/uiMode.iq7CyYy7.js +1490 -0
- package/lib/vite/traceViewer/uiMode.jY2s-9ps.js +10 -0
- package/lib/vite/traceViewer/uiMode.xvJHbkzl.css +1324 -0
- package/lib/vite/traceViewer/workbench.B3X2QtYa.css +3702 -0
- package/lib/vite/traceViewer/workbench.DyTpxWVb.css +1 -0
- package/lib/vite/traceViewer/wsPort.p5jUwABW.css +3450 -0
- package/lib/vite/traceViewer/xtermModule.4oRVGWQ-.css +209 -0
- package/lib/vite/traceViewer/xtermModule.OKEVRlkP.css +209 -0
- package/package.json +2 -2
- package/types/protocol.d.ts +960 -78
- package/types/structs.d.ts +1 -1
- package/types/types.d.ts +3083 -2448
- package/lib/vite/recorder/assets/codeMirrorModule-I9ks4y7D.js +0 -24
- package/lib/vite/recorder/assets/index-ljsTwXtJ.css +0 -1
- package/lib/vite/recorder/assets/index-yg8ypzl6.js +0 -47
- package/lib/vite/traceViewer/assets/codeMirrorModule-0bpaqixv.js +0 -24
- package/lib/vite/traceViewer/assets/wsPort-_JBDEilC.js +0 -69
- package/lib/vite/traceViewer/index.u51inEcm.js +0 -2
- package/lib/vite/traceViewer/uiMode.Fb0bNA4H.js +0 -10
- package/lib/vite/traceViewer/uiMode.pWy0Re7G.css +0 -1
- package/lib/vite/traceViewer/wsPort.zR1WIy9-.css +0 -1
- /package/lib/vite/recorder/assets/{codeMirrorModule-Hs9-1ZG4.css → codeMirrorModule-ez37Vkbh.css} +0 -0
- /package/lib/vite/traceViewer/assets/{xtermModule-Yt6xwiJ_.js → xtermModule-BeNbaIVa.js} +0 -0
- /package/lib/vite/traceViewer/{codeMirrorModule.Hs9-1ZG4.css → codeMirrorModule.ez37Vkbh.css} +0 -0
- /package/lib/vite/traceViewer/{xtermModule.0lwXJFHT.css → xtermModule.DSXBckUd.css} +0 -0
|
@@ -190,4 +190,4 @@ class AndroidSocketDispatcher extends _dispatcher.Dispatcher {
|
|
|
190
190
|
}
|
|
191
191
|
}
|
|
192
192
|
exports.AndroidSocketDispatcher = AndroidSocketDispatcher;
|
|
193
|
-
const keyMap = new Map([['Unknown', 0], ['SoftLeft', 1], ['SoftRight', 2], ['Home', 3], ['Back', 4], ['Call', 5], ['EndCall', 6], ['0', 7], ['1', 8], ['2', 9], ['3', 10], ['4', 11], ['5', 12], ['6', 13], ['7', 14], ['8', 15], ['9', 16], ['Star', 17], ['*', 17], ['Pound', 18], ['#', 18], ['DialUp', 19], ['DialDown', 20], ['DialLeft', 21], ['DialRight', 22], ['DialCenter', 23], ['VolumeUp', 24], ['VolumeDown', 25], ['Power', 26], ['Camera', 27], ['Clear', 28], ['A', 29], ['B', 30], ['C', 31], ['D', 32], ['E', 33], ['F', 34], ['G', 35], ['H', 36], ['I', 37], ['J', 38], ['K', 39], ['L', 40], ['M', 41], ['N', 42], ['O', 43], ['P', 44], ['Q', 45], ['R', 46], ['S', 47], ['T', 48], ['U', 49], ['V', 50], ['W', 51], ['X', 52], ['Y', 53], ['Z', 54], ['Comma', 55], [',', 55], ['Period', 56], ['.', 56], ['AltLeft', 57], ['AltRight', 58], ['ShiftLeft', 59], ['ShiftRight', 60], ['Tab', 61], ['\t', 61], ['Space', 62], [' ', 62], ['Sym', 63], ['Explorer', 64], ['Envelop', 65], ['Enter', 66], ['Del', 67], ['Grave', 68], ['Minus', 69], ['-', 69], ['Equals', 70], ['=', 70], ['LeftBracket', 71], ['(', 71], ['RightBracket', 72], [')', 72], ['Backslash', 73], ['\\', 73], ['Semicolon', 74], [';', 74], ['Apostrophe', 75], ['`', 75], ['Slash', 76], ['/', 76], ['At', 77], ['@', 77], ['Num', 78], ['HeadsetHook', 79], ['Focus', 80], ['Plus', 81], ['Menu', 82], ['Notification', 83], ['Search', 84], ['AppSwitch', 187], ['Assist', 219], ['Cut', 277], ['Copy', 278], ['Paste', 279]]);
|
|
193
|
+
const keyMap = new Map([['Unknown', 0], ['SoftLeft', 1], ['SoftRight', 2], ['Home', 3], ['Back', 4], ['Call', 5], ['EndCall', 6], ['0', 7], ['1', 8], ['2', 9], ['3', 10], ['4', 11], ['5', 12], ['6', 13], ['7', 14], ['8', 15], ['9', 16], ['Star', 17], ['*', 17], ['Pound', 18], ['#', 18], ['DialUp', 19], ['DialDown', 20], ['DialLeft', 21], ['DialRight', 22], ['DialCenter', 23], ['VolumeUp', 24], ['VolumeDown', 25], ['Power', 26], ['Camera', 27], ['Clear', 28], ['A', 29], ['B', 30], ['C', 31], ['D', 32], ['E', 33], ['F', 34], ['G', 35], ['H', 36], ['I', 37], ['J', 38], ['K', 39], ['L', 40], ['M', 41], ['N', 42], ['O', 43], ['P', 44], ['Q', 45], ['R', 46], ['S', 47], ['T', 48], ['U', 49], ['V', 50], ['W', 51], ['X', 52], ['Y', 53], ['Z', 54], ['Comma', 55], [',', 55], ['Period', 56], ['.', 56], ['AltLeft', 57], ['AltRight', 58], ['ShiftLeft', 59], ['ShiftRight', 60], ['Tab', 61], ['\t', 61], ['Space', 62], [' ', 62], ['Sym', 63], ['Explorer', 64], ['Envelop', 65], ['Enter', 66], ['Del', 67], ['Grave', 68], ['Minus', 69], ['-', 69], ['Equals', 70], ['=', 70], ['LeftBracket', 71], ['(', 71], ['RightBracket', 72], [')', 72], ['Backslash', 73], ['\\', 73], ['Semicolon', 74], [';', 74], ['Apostrophe', 75], ['`', 75], ['Slash', 76], ['/', 76], ['At', 77], ['@', 77], ['Num', 78], ['HeadsetHook', 79], ['Focus', 80], ['Plus', 81], ['Menu', 82], ['Notification', 83], ['Search', 84], ['ChannelUp', 166], ['ChannelDown', 167], ['AppSwitch', 187], ['Assist', 219], ['Cut', 277], ['Copy', 278], ['Paste', 279]]);
|
|
@@ -20,6 +20,7 @@ var _writableStreamDispatcher = require("./writableStreamDispatcher");
|
|
|
20
20
|
var _dialogDispatcher = require("./dialogDispatcher");
|
|
21
21
|
var _errors = require("../errors");
|
|
22
22
|
var _elementHandlerDispatcher = require("./elementHandlerDispatcher");
|
|
23
|
+
var _recorderApp = require("../recorder/recorderApp");
|
|
23
24
|
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
24
25
|
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
25
26
|
/**
|
|
@@ -181,14 +182,23 @@ class BrowserContextDispatcher extends _dispatcher.Dispatcher {
|
|
|
181
182
|
if (pageDispatcher !== null && pageDispatcher !== void 0 && pageDispatcher._subscriptions.has(event)) return true;
|
|
182
183
|
return false;
|
|
183
184
|
}
|
|
184
|
-
async
|
|
185
|
+
async createTempFiles(params) {
|
|
185
186
|
const dir = this._context._browser.options.artifactsDir;
|
|
186
187
|
const tmpDir = path.join(dir, 'upload-' + (0, _utils.createGuid)());
|
|
187
|
-
|
|
188
|
+
const tempDirWithRootName = params.rootDirName ? path.join(tmpDir, path.basename(params.rootDirName)) : tmpDir;
|
|
189
|
+
await fs.promises.mkdir(tempDirWithRootName, {
|
|
190
|
+
recursive: true
|
|
191
|
+
});
|
|
188
192
|
this._context._tempDirs.push(tmpDir);
|
|
189
|
-
const file = fs.createWriteStream(path.join(tmpDir, params.name));
|
|
190
193
|
return {
|
|
191
|
-
|
|
194
|
+
rootDir: params.rootDirName ? new _writableStreamDispatcher.WritableStreamDispatcher(this, tempDirWithRootName) : undefined,
|
|
195
|
+
writableStreams: await Promise.all(params.items.map(async item => {
|
|
196
|
+
await fs.promises.mkdir(path.dirname(path.join(tempDirWithRootName, item.name)), {
|
|
197
|
+
recursive: true
|
|
198
|
+
});
|
|
199
|
+
const file = fs.createWriteStream(path.join(tempDirWithRootName, item.name));
|
|
200
|
+
return new _writableStreamDispatcher.WritableStreamDispatcher(this, file, item.lastModifiedMs);
|
|
201
|
+
}))
|
|
192
202
|
};
|
|
193
203
|
}
|
|
194
204
|
async setDefaultNavigationTimeoutNoReply(params) {
|
|
@@ -223,8 +233,15 @@ class BrowserContextDispatcher extends _dispatcher.Dispatcher {
|
|
|
223
233
|
async addCookies(params) {
|
|
224
234
|
await this._context.addCookies(params.cookies);
|
|
225
235
|
}
|
|
226
|
-
async clearCookies() {
|
|
227
|
-
|
|
236
|
+
async clearCookies(params) {
|
|
237
|
+
const nameRe = params.nameRegexSource !== undefined && params.nameRegexFlags !== undefined ? new RegExp(params.nameRegexSource, params.nameRegexFlags) : undefined;
|
|
238
|
+
const domainRe = params.domainRegexSource !== undefined && params.domainRegexFlags !== undefined ? new RegExp(params.domainRegexSource, params.domainRegexFlags) : undefined;
|
|
239
|
+
const pathRe = params.pathRegexSource !== undefined && params.pathRegexFlags !== undefined ? new RegExp(params.pathRegexSource, params.pathRegexFlags) : undefined;
|
|
240
|
+
await this._context.clearCookies({
|
|
241
|
+
name: nameRe || params.name,
|
|
242
|
+
domain: domainRe || params.domain,
|
|
243
|
+
path: pathRe || params.path
|
|
244
|
+
});
|
|
228
245
|
}
|
|
229
246
|
async grantPermissions(params) {
|
|
230
247
|
await this._context.grantPermissions(params.permissions, params.origin);
|
|
@@ -270,7 +287,7 @@ class BrowserContextDispatcher extends _dispatcher.Dispatcher {
|
|
|
270
287
|
await this._context.close(params);
|
|
271
288
|
}
|
|
272
289
|
async recorderSupplementEnable(params) {
|
|
273
|
-
await _recorder.Recorder.show(this._context, params);
|
|
290
|
+
await _recorder.Recorder.show(this._context, _recorderApp.RecorderApp.factory(this._context), params);
|
|
274
291
|
}
|
|
275
292
|
async pause(params, metadata) {
|
|
276
293
|
// Debugger will take care of this.
|
|
@@ -296,6 +313,33 @@ class BrowserContextDispatcher extends _dispatcher.Dispatcher {
|
|
|
296
313
|
artifact: _artifactDispatcher.ArtifactDispatcher.from(this, artifact)
|
|
297
314
|
};
|
|
298
315
|
}
|
|
316
|
+
async clockFastForward(params, metadata) {
|
|
317
|
+
var _ref, _params$ticksString;
|
|
318
|
+
await this._context.clock.fastForward((_ref = (_params$ticksString = params.ticksString) !== null && _params$ticksString !== void 0 ? _params$ticksString : params.ticksNumber) !== null && _ref !== void 0 ? _ref : 0);
|
|
319
|
+
}
|
|
320
|
+
async clockInstall(params, metadata) {
|
|
321
|
+
var _ref2, _params$timeString;
|
|
322
|
+
await this._context.clock.install((_ref2 = (_params$timeString = params.timeString) !== null && _params$timeString !== void 0 ? _params$timeString : params.timeNumber) !== null && _ref2 !== void 0 ? _ref2 : undefined);
|
|
323
|
+
}
|
|
324
|
+
async clockPauseAt(params, metadata) {
|
|
325
|
+
var _ref3, _params$timeString2;
|
|
326
|
+
await this._context.clock.pauseAt((_ref3 = (_params$timeString2 = params.timeString) !== null && _params$timeString2 !== void 0 ? _params$timeString2 : params.timeNumber) !== null && _ref3 !== void 0 ? _ref3 : 0);
|
|
327
|
+
}
|
|
328
|
+
async clockResume(params, metadata) {
|
|
329
|
+
await this._context.clock.resume();
|
|
330
|
+
}
|
|
331
|
+
async clockRunFor(params, metadata) {
|
|
332
|
+
var _ref4, _params$ticksString2;
|
|
333
|
+
await this._context.clock.runFor((_ref4 = (_params$ticksString2 = params.ticksString) !== null && _params$ticksString2 !== void 0 ? _params$ticksString2 : params.ticksNumber) !== null && _ref4 !== void 0 ? _ref4 : 0);
|
|
334
|
+
}
|
|
335
|
+
async clockSetFixedTime(params, metadata) {
|
|
336
|
+
var _ref5, _params$timeString3;
|
|
337
|
+
await this._context.clock.setFixedTime((_ref5 = (_params$timeString3 = params.timeString) !== null && _params$timeString3 !== void 0 ? _params$timeString3 : params.timeNumber) !== null && _ref5 !== void 0 ? _ref5 : 0);
|
|
338
|
+
}
|
|
339
|
+
async clockSetSystemTime(params, metadata) {
|
|
340
|
+
var _ref6, _params$timeString4;
|
|
341
|
+
await this._context.clock.setSystemTime((_ref6 = (_params$timeString4 = params.timeString) !== null && _params$timeString4 !== void 0 ? _params$timeString4 : params.timeNumber) !== null && _ref6 !== void 0 ? _ref6 : 0);
|
|
342
|
+
}
|
|
299
343
|
async updateSubscription(params) {
|
|
300
344
|
if (params.enabled) this._subscriptions.add(params.event);else this._subscriptions.delete(params.event);
|
|
301
345
|
}
|
|
@@ -73,7 +73,7 @@ class Dispatcher extends _events.EventEmitter {
|
|
|
73
73
|
(0, _utils.assert)(!this._parent._dispatchers.has(guid));
|
|
74
74
|
this._parent._dispatchers.set(guid, this);
|
|
75
75
|
}
|
|
76
|
-
if (this._parent) this._connection.sendCreate(this._parent, type, guid, initializer
|
|
76
|
+
if (this._parent) this._connection.sendCreate(this._parent, type, guid, initializer);
|
|
77
77
|
this._connection.maybeDisposeStaleDispatchers(this._gcBucket);
|
|
78
78
|
}
|
|
79
79
|
parentScope() {
|
|
@@ -105,8 +105,7 @@ class Dispatcher extends _events.EventEmitter {
|
|
|
105
105
|
// Just ignore this event outside of tests.
|
|
106
106
|
return;
|
|
107
107
|
}
|
|
108
|
-
|
|
109
|
-
this._connection.sendEvent(this, method, params, sdkObject);
|
|
108
|
+
this._connection.sendEvent(this, method, params);
|
|
110
109
|
}
|
|
111
110
|
_dispose(reason) {
|
|
112
111
|
this._disposeRecursively(new _errors.TargetClosedError());
|
|
@@ -170,53 +169,50 @@ class DispatcherConnection {
|
|
|
170
169
|
this._isLocal = void 0;
|
|
171
170
|
this._isLocal = !!isLocal;
|
|
172
171
|
}
|
|
173
|
-
sendEvent(dispatcher, event, params
|
|
172
|
+
sendEvent(dispatcher, event, params) {
|
|
174
173
|
const validator = (0, _validator.findValidator)(dispatcher._type, event, 'Event');
|
|
175
174
|
params = validator(params, '', {
|
|
176
175
|
tChannelImpl: this._tChannelImplToWire.bind(this),
|
|
177
176
|
binary: this._isLocal ? 'buffer' : 'toBase64'
|
|
178
177
|
});
|
|
179
|
-
this.
|
|
178
|
+
this.onmessage({
|
|
179
|
+
guid: dispatcher._guid,
|
|
180
|
+
method: event,
|
|
181
|
+
params
|
|
182
|
+
});
|
|
180
183
|
}
|
|
181
|
-
sendCreate(parent, type, guid, initializer
|
|
184
|
+
sendCreate(parent, type, guid, initializer) {
|
|
182
185
|
const validator = (0, _validator.findValidator)(type, '', 'Initializer');
|
|
183
186
|
initializer = validator(initializer, '', {
|
|
184
187
|
tChannelImpl: this._tChannelImplToWire.bind(this),
|
|
185
188
|
binary: this._isLocal ? 'buffer' : 'toBase64'
|
|
186
189
|
});
|
|
187
|
-
this.
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
190
|
+
this.onmessage({
|
|
191
|
+
guid: parent._guid,
|
|
192
|
+
method: '__create__',
|
|
193
|
+
params: {
|
|
194
|
+
type,
|
|
195
|
+
initializer,
|
|
196
|
+
guid
|
|
197
|
+
}
|
|
198
|
+
});
|
|
192
199
|
}
|
|
193
200
|
sendAdopt(parent, dispatcher) {
|
|
194
|
-
this.
|
|
195
|
-
guid:
|
|
201
|
+
this.onmessage({
|
|
202
|
+
guid: parent._guid,
|
|
203
|
+
method: '__adopt__',
|
|
204
|
+
params: {
|
|
205
|
+
guid: dispatcher._guid
|
|
206
|
+
}
|
|
196
207
|
});
|
|
197
208
|
}
|
|
198
209
|
sendDispose(dispatcher, reason) {
|
|
199
|
-
this._sendMessageToClient(dispatcher._guid, dispatcher._type, '__dispose__', {
|
|
200
|
-
reason
|
|
201
|
-
});
|
|
202
|
-
}
|
|
203
|
-
_sendMessageToClient(guid, type, method, params, sdkObject) {
|
|
204
|
-
if (sdkObject) {
|
|
205
|
-
var _sdkObject$attributio, _sdkObject$instrument;
|
|
206
|
-
const event = {
|
|
207
|
-
type: 'event',
|
|
208
|
-
class: type,
|
|
209
|
-
method,
|
|
210
|
-
params: params || {},
|
|
211
|
-
time: (0, _utils.monotonicTime)(),
|
|
212
|
-
pageId: sdkObject === null || sdkObject === void 0 || (_sdkObject$attributio = sdkObject.attribution) === null || _sdkObject$attributio === void 0 || (_sdkObject$attributio = _sdkObject$attributio.page) === null || _sdkObject$attributio === void 0 ? void 0 : _sdkObject$attributio.guid
|
|
213
|
-
};
|
|
214
|
-
(_sdkObject$instrument = sdkObject.instrumentation) === null || _sdkObject$instrument === void 0 || _sdkObject$instrument.onEvent(sdkObject, event);
|
|
215
|
-
}
|
|
216
210
|
this.onmessage({
|
|
217
|
-
guid,
|
|
218
|
-
method,
|
|
219
|
-
params
|
|
211
|
+
guid: dispatcher._guid,
|
|
212
|
+
method: '__dispose__',
|
|
213
|
+
params: {
|
|
214
|
+
reason
|
|
215
|
+
}
|
|
220
216
|
});
|
|
221
217
|
}
|
|
222
218
|
_tChannelImplFromWire(names, arg, path, context) {
|
|
@@ -262,7 +258,7 @@ class DispatcherConnection {
|
|
|
262
258
|
}
|
|
263
259
|
}
|
|
264
260
|
async dispatch(message) {
|
|
265
|
-
var _sdkObject$
|
|
261
|
+
var _sdkObject$attributio, _sdkObject$attributio2, _params$info;
|
|
266
262
|
const {
|
|
267
263
|
id,
|
|
268
264
|
guid,
|
|
@@ -301,13 +297,13 @@ class DispatcherConnection {
|
|
|
301
297
|
const sdkObject = dispatcher._object instanceof _instrumentation.SdkObject ? dispatcher._object : undefined;
|
|
302
298
|
const callMetadata = {
|
|
303
299
|
id: `call@${id}`,
|
|
304
|
-
wallTime: validMetadata.wallTime || Date.now(),
|
|
305
300
|
location: validMetadata.location,
|
|
306
301
|
apiName: validMetadata.apiName,
|
|
307
302
|
internal: validMetadata.internal,
|
|
303
|
+
stepId: validMetadata.stepId,
|
|
308
304
|
objectId: sdkObject === null || sdkObject === void 0 ? void 0 : sdkObject.guid,
|
|
309
|
-
pageId: sdkObject === null || sdkObject === void 0 || (_sdkObject$
|
|
310
|
-
frameId: sdkObject === null || sdkObject === void 0 || (_sdkObject$
|
|
305
|
+
pageId: sdkObject === null || sdkObject === void 0 || (_sdkObject$attributio = sdkObject.attribution) === null || _sdkObject$attributio === void 0 || (_sdkObject$attributio = _sdkObject$attributio.page) === null || _sdkObject$attributio === void 0 ? void 0 : _sdkObject$attributio.guid,
|
|
306
|
+
frameId: sdkObject === null || sdkObject === void 0 || (_sdkObject$attributio2 = sdkObject.attribution) === null || _sdkObject$attributio2 === void 0 || (_sdkObject$attributio2 = _sdkObject$attributio2.frame) === null || _sdkObject$attributio2 === void 0 ? void 0 : _sdkObject$attributio2.guid,
|
|
311
307
|
startTime: (0, _utils.monotonicTime)(),
|
|
312
308
|
endTime: 0,
|
|
313
309
|
type: dispatcher._type,
|
|
@@ -382,7 +378,7 @@ class DispatcherConnection {
|
|
|
382
378
|
}
|
|
383
379
|
}
|
|
384
380
|
response.error = (0, _errors.serializeError)(e);
|
|
385
|
-
// The command handler could have set error in the
|
|
381
|
+
// The command handler could have set error in the metadata, do not reset it if there was no exception.
|
|
386
382
|
callMetadata.error = response.error;
|
|
387
383
|
} finally {
|
|
388
384
|
callMetadata.endTime = (0, _utils.monotonicTime)();
|
|
@@ -394,6 +390,6 @@ class DispatcherConnection {
|
|
|
394
390
|
}
|
|
395
391
|
exports.DispatcherConnection = DispatcherConnection;
|
|
396
392
|
function closeReason(sdkObject) {
|
|
397
|
-
var _sdkObject$
|
|
398
|
-
return ((_sdkObject$
|
|
393
|
+
var _sdkObject$attributio3, _sdkObject$attributio4, _sdkObject$attributio5;
|
|
394
|
+
return ((_sdkObject$attributio3 = sdkObject.attribution.page) === null || _sdkObject$attributio3 === void 0 ? void 0 : _sdkObject$attributio3._closeReason) || ((_sdkObject$attributio4 = sdkObject.attribution.context) === null || _sdkObject$attributio4 === void 0 ? void 0 : _sdkObject$attributio4._closeReason) || ((_sdkObject$attributio5 = sdkObject.attribution.browser) === null || _sdkObject$attributio5 === void 0 ? void 0 : _sdkObject$attributio5._closeReason);
|
|
399
395
|
}
|
|
@@ -89,8 +89,7 @@ class FrameDispatcher extends _dispatcher.Dispatcher {
|
|
|
89
89
|
async evaluateExpression(params, metadata) {
|
|
90
90
|
return {
|
|
91
91
|
value: (0, _jsHandleDispatcher.serializeResult)(await this._frame.evaluateExpression(params.expression, {
|
|
92
|
-
isFunction: params.isFunction
|
|
93
|
-
exposeUtilityScript: params.exposeUtilityScript
|
|
92
|
+
isFunction: params.isFunction
|
|
94
93
|
}, (0, _jsHandleDispatcher.parseArgument)(params.arg)))
|
|
95
94
|
};
|
|
96
95
|
}
|
|
@@ -87,7 +87,7 @@ class JSHandleDispatcher extends _dispatcher.Dispatcher {
|
|
|
87
87
|
}
|
|
88
88
|
|
|
89
89
|
// Generic channel parser converts guids to JSHandleDispatchers,
|
|
90
|
-
// and this function takes care of
|
|
90
|
+
// and this function takes care of converting them into underlying JSHandles.
|
|
91
91
|
exports.JSHandleDispatcher = JSHandleDispatcher;
|
|
92
92
|
function parseArgument(arg) {
|
|
93
93
|
return (0, _serializers.parseSerializedValue)(arg.value, arg.handles.map(a => a._object));
|
|
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.JsonPipeDispatcher = void 0;
|
|
7
7
|
var _dispatcher = require("./dispatcher");
|
|
8
8
|
var _utils = require("../../utils");
|
|
9
|
-
var _errors = require("../errors");
|
|
10
9
|
/**
|
|
11
10
|
* Copyright (c) Microsoft Corporation.
|
|
12
11
|
*
|
|
@@ -45,12 +44,11 @@ class JsonPipeDispatcher extends _dispatcher.Dispatcher {
|
|
|
45
44
|
message
|
|
46
45
|
});
|
|
47
46
|
}
|
|
48
|
-
wasClosed(
|
|
47
|
+
wasClosed(reason) {
|
|
49
48
|
if (!this._disposed) {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
}
|
|
53
|
-
this._dispatchEvent('closed', params);
|
|
49
|
+
this._dispatchEvent('closed', {
|
|
50
|
+
reason
|
|
51
|
+
});
|
|
54
52
|
this._dispose();
|
|
55
53
|
}
|
|
56
54
|
}
|
|
@@ -20,6 +20,7 @@ var _userAgent = require("../../utils/userAgent");
|
|
|
20
20
|
var _progress = require("../progress");
|
|
21
21
|
var _network = require("../../utils/network");
|
|
22
22
|
var _instrumentation = require("../../server/instrumentation");
|
|
23
|
+
var _deviceDescriptors = require("../deviceDescriptors");
|
|
23
24
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
24
25
|
/**
|
|
25
26
|
* Copyright (c) Microsoft Corporation.
|
|
@@ -40,8 +41,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
40
41
|
class LocalUtilsDispatcher extends _dispatcher.Dispatcher {
|
|
41
42
|
constructor(scope, playwright) {
|
|
42
43
|
const localUtils = new _instrumentation.SdkObject(playwright, 'localUtils', 'localUtils');
|
|
43
|
-
const
|
|
44
|
-
const deviceDescriptors = Object.entries(descriptors).map(([name, descriptor]) => ({
|
|
44
|
+
const deviceDescriptors = Object.entries(_deviceDescriptors.deviceDescriptors).map(([name, descriptor]) => ({
|
|
45
45
|
name,
|
|
46
46
|
descriptor
|
|
47
47
|
}));
|
|
@@ -208,9 +208,9 @@ class LocalUtilsDispatcher extends _dispatcher.Dispatcher {
|
|
|
208
208
|
pipe.on('message', message => {
|
|
209
209
|
transport.send(message);
|
|
210
210
|
});
|
|
211
|
-
transport.onclose =
|
|
211
|
+
transport.onclose = reason => {
|
|
212
212
|
socksInterceptor === null || socksInterceptor === void 0 || socksInterceptor.cleanup();
|
|
213
|
-
pipe.wasClosed();
|
|
213
|
+
pipe.wasClosed(reason);
|
|
214
214
|
};
|
|
215
215
|
pipe.on('close', () => transport.close());
|
|
216
216
|
return {
|
|
@@ -321,7 +321,14 @@ class HarBackend {
|
|
|
321
321
|
if (candidate.request.url !== url || candidate.request.method !== method) continue;
|
|
322
322
|
if (method === 'POST' && postData && candidate.request.postData) {
|
|
323
323
|
const buffer = await this._loadContent(candidate.request.postData);
|
|
324
|
-
if (!buffer.equals(postData))
|
|
324
|
+
if (!buffer.equals(postData)) {
|
|
325
|
+
const boundary = multipartBoundary(headers);
|
|
326
|
+
if (!boundary) continue;
|
|
327
|
+
const candidataBoundary = multipartBoundary(candidate.request.headers);
|
|
328
|
+
if (!candidataBoundary) continue;
|
|
329
|
+
// Try to match multipart/form-data ignroing boundary as it changes between requests.
|
|
330
|
+
if (postData.toString().replaceAll(boundary, '') !== buffer.toString().replaceAll(candidataBoundary, '')) continue;
|
|
331
|
+
}
|
|
325
332
|
}
|
|
326
333
|
entries.push(candidate);
|
|
327
334
|
}
|
|
@@ -396,4 +403,11 @@ async function urlToWSEndpoint(progress, endpointURL) {
|
|
|
396
403
|
wsUrl.pathname += wsEndpointPath;
|
|
397
404
|
wsUrl.protocol = wsUrl.protocol === 'https:' ? 'wss:' : 'ws:';
|
|
398
405
|
return wsUrl.toString();
|
|
406
|
+
}
|
|
407
|
+
function multipartBoundary(headers) {
|
|
408
|
+
const contentType = headers.find(h => h.name.toLowerCase() === 'content-type');
|
|
409
|
+
if (!(contentType !== null && contentType !== void 0 && contentType.value.includes('multipart/form-data'))) return undefined;
|
|
410
|
+
const boundary = contentType.value.match(/boundary=(\S+)/);
|
|
411
|
+
if (boundary) return boundary[1];
|
|
412
|
+
return undefined;
|
|
399
413
|
}
|
|
@@ -186,9 +186,9 @@ class APIRequestContextDispatcher extends _dispatcher.Dispatcher {
|
|
|
186
186
|
async storageState() {
|
|
187
187
|
return this._object.storageState();
|
|
188
188
|
}
|
|
189
|
-
async dispose(
|
|
189
|
+
async dispose(params, metadata) {
|
|
190
190
|
metadata.potentiallyClosesScope = true;
|
|
191
|
-
await this._object.dispose();
|
|
191
|
+
await this._object.dispose(params);
|
|
192
192
|
this._dispose();
|
|
193
193
|
}
|
|
194
194
|
async fetch(params, metadata) {
|
|
@@ -134,13 +134,16 @@ class PageDispatcher extends _dispatcher.Dispatcher {
|
|
|
134
134
|
};
|
|
135
135
|
}
|
|
136
136
|
async registerLocatorHandler(params, metadata) {
|
|
137
|
-
const uid = this._page.registerLocatorHandler(params.selector);
|
|
137
|
+
const uid = this._page.registerLocatorHandler(params.selector, params.noWaitAfter);
|
|
138
138
|
return {
|
|
139
139
|
uid
|
|
140
140
|
};
|
|
141
141
|
}
|
|
142
142
|
async resolveLocatorHandlerNoReply(params, metadata) {
|
|
143
|
-
this._page.resolveLocatorHandler(params.uid);
|
|
143
|
+
this._page.resolveLocatorHandler(params.uid, params.remove);
|
|
144
|
+
}
|
|
145
|
+
async unregisterLocatorHandler(params, metadata) {
|
|
146
|
+
this._page.unregisterLocatorHandler(params.uid);
|
|
144
147
|
}
|
|
145
148
|
async emulateMedia(params, metadata) {
|
|
146
149
|
await this._page.emulateMedia({
|
|
@@ -39,6 +39,7 @@ class PlaywrightDispatcher extends _dispatcher.Dispatcher {
|
|
|
39
39
|
const prelaunchedAndroidDeviceDispatcher = prelaunchedAndroidDevice ? new _androidDispatcher.AndroidDeviceDispatcher(android, prelaunchedAndroidDevice) : undefined;
|
|
40
40
|
super(scope, playwright, 'Playwright', {
|
|
41
41
|
chromium: new _browserTypeDispatcher.BrowserTypeDispatcher(scope, playwright.chromium),
|
|
42
|
+
bidi: new _browserTypeDispatcher.BrowserTypeDispatcher(scope, playwright.bidi),
|
|
42
43
|
firefox: new _browserTypeDispatcher.BrowserTypeDispatcher(scope, playwright.firefox),
|
|
43
44
|
webkit: new _browserTypeDispatcher.BrowserTypeDispatcher(scope, playwright.webkit),
|
|
44
45
|
android,
|
|
@@ -26,17 +26,18 @@ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e;
|
|
|
26
26
|
*/
|
|
27
27
|
|
|
28
28
|
class WritableStreamDispatcher extends _dispatcher.Dispatcher {
|
|
29
|
-
constructor(scope,
|
|
29
|
+
constructor(scope, streamOrDirectory, lastModifiedMs) {
|
|
30
30
|
super(scope, {
|
|
31
31
|
guid: 'writableStream@' + (0, _utils.createGuid)(),
|
|
32
|
-
|
|
32
|
+
streamOrDirectory
|
|
33
33
|
}, 'WritableStream', {});
|
|
34
34
|
this._type_WritableStream = true;
|
|
35
35
|
this._lastModifiedMs = void 0;
|
|
36
36
|
this._lastModifiedMs = lastModifiedMs;
|
|
37
37
|
}
|
|
38
38
|
async write(params) {
|
|
39
|
-
|
|
39
|
+
if (typeof this._object.streamOrDirectory === 'string') throw new Error('Cannot write to a directory');
|
|
40
|
+
const stream = this._object.streamOrDirectory;
|
|
40
41
|
await new Promise((fulfill, reject) => {
|
|
41
42
|
stream.write(params.binary, error => {
|
|
42
43
|
if (error) reject(error);else fulfill();
|
|
@@ -44,12 +45,14 @@ class WritableStreamDispatcher extends _dispatcher.Dispatcher {
|
|
|
44
45
|
});
|
|
45
46
|
}
|
|
46
47
|
async close() {
|
|
47
|
-
|
|
48
|
+
if (typeof this._object.streamOrDirectory === 'string') throw new Error('Cannot close a directory');
|
|
49
|
+
const stream = this._object.streamOrDirectory;
|
|
48
50
|
await new Promise(fulfill => stream.end(fulfill));
|
|
49
51
|
if (this._lastModifiedMs) await fs.promises.utimes(this.path(), new Date(this._lastModifiedMs), new Date(this._lastModifiedMs));
|
|
50
52
|
}
|
|
51
53
|
path() {
|
|
52
|
-
return this._object.
|
|
54
|
+
if (typeof this._object.streamOrDirectory === 'string') return this._object.streamOrDirectory;
|
|
55
|
+
return this._object.streamOrDirectory.path;
|
|
53
56
|
}
|
|
54
57
|
}
|
|
55
58
|
exports.WritableStreamDispatcher = WritableStreamDispatcher;
|