/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

"use strict";

/**
 * Bug 1713698 - Shim Amazon Transparent Ad Marketplace's apstag.js
 *
 * Some sites such as politico.com rely on Amazon TAM tracker to serve ads,
 * breaking functionality like galleries if it is blocked. This shim helps
 * mitigate major breakage in that case.
 */

if (!window.apstag?._getSlotIdToNameMapping) {
  const _Q = window.apstag?._Q || [];

  const newBid = config => {
    return {
      amznbid: "",
      amzniid: "",
      amznp: "",
      amznsz: "0x0",
      size: "0x0",
      slotID: config.slotID,
    };
  };

  window.apstag = {
    _Q,
    _getSlotIdToNameMapping() {},
    bids() {},
    debug() {},
    deleteId() {},
    fetchBids(cfg, cb) {
      if (!Array.isArray(cfg?.slots)) {
        return;
      }
      setTimeout(() => {
        cb(cfg.slots.map(s => newBid(s)));
      }, 1);
    },
    init() {},
    punt() {},
    renderImp() {},
    renewId() {},
    setDisplayBids() {},
    targetingKeys: () => [],
    thirdPartyData: {},
    updateId() {},
  };

  window.apstagLOADED = true;

  _Q.push = function (prefix, args) {
    try {
      switch (prefix) {
        case "f":
          window.apstag.fetchBids(...args);
          break;
        case "i":
          window.apstag.init(...args);
          break;
      }
    } catch (e) {
      console.trace(e);
    }
  };

  for (const cmd of _Q) {
    _Q.push(cmd);
  }
}
