"use strict"; /** * Copyright 2024 Google LLC. * Copyright (c) Microsoft Corporation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.WorkerRealm = void 0; const Realm_js_1 = require("./Realm.js"); class WorkerRealm extends Realm_js_1.Realm { #realmType; #ownerRealms; constructor(cdpClient, eventManager, executionContextId, logger, origin, ownerRealms, realmId, realmStorage, realmType) { super(cdpClient, eventManager, executionContextId, logger, origin, realmId, realmStorage); this.#ownerRealms = ownerRealms; this.#realmType = realmType; this.initialize(); } get associatedBrowsingContexts() { return this.#ownerRealms.flatMap((realm) => realm.associatedBrowsingContexts); } get realmType() { return this.#realmType; } get source() { return { realm: this.realmId, // This is a hack to make Puppeteer able to track workers. // TODO: remove after Puppeteer tracks workers by owners and use the base version. context: this.associatedBrowsingContexts[0]?.id, }; } get realmInfo() { const owners = this.#ownerRealms.map((realm) => realm.realmId); const { realmType } = this; switch (realmType) { case 'dedicated-worker': { const owner = owners[0]; if (owner === undefined || owners.length !== 1) { throw new Error('Dedicated worker must have exactly one owner'); } return { ...this.baseInfo, type: realmType, owners: [owner], }; } case 'service-worker': case 'shared-worker': { return { ...this.baseInfo, type: realmType, }; } } } } exports.WorkerRealm = WorkerRealm; //# sourceMappingURL=WorkerRealm.js.map