RES bluesky expandos

Formats embedded blue sky possts. RES cannot do this for technical and security reasons.

// ==UserScript==
// @name        RES bluesky expandos
// @namespace   com.example
// @description Formats embedded blue sky possts. RES cannot do this for technical and security reasons.
// @match       https://*.reddit.com/*
// @version     1
// @grant       none
// @license MIT
// ==/UserScript==

"use strict";

/**
 * loadBlueskyEmbedScript(): void
 * Adds the bluesky script that was stripped by RES to the given node.
 */
function loadBlueskyEmbedScript(node) {
  let script = document.createElement('script');
  script.src = 'https://embed.bsky.app/static/embed.js';
  node.appendChild(script);
}

/**
 * observeForBlueskyPosts(target: HTMLElement): void
 * Attaches a MutationObserver to target and loads bluesky's js whenever it finds a post.
 */
function observeForBlueskyPosts(target) {
  let observer = new MutationObserver(function(mutations) {
    for (let mutation of mutations) {
      for (let node of mutation.addedNodes) {
        if (node.className == 'bluesky-embed') {
          loadBlueskyEmbedScript(node);
        }
      }
    }
  });

  // configuration of the observer:
  let config = { childList: true, subtree: true };

  // pass in the target node, as well as the observer options
  observer.observe(target, config);
}

observeForBlueskyPosts(document.body);