{"version":3,"file":"/index.js","mappings":"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","sources":["webpack://exports/webpack/runtime/async module","webpack://exports/./node_modules/wirejs-dom/lib/v2/util.js","webpack://exports/./node_modules/wirejs-dom/lib/v2/components/html.js","webpack://exports/./pre-dist/layouts/main.js","webpack://exports/./pre-dist/components/summary.js","webpack://exports/./pre-dist/ssg/index.js","webpack://exports/./pre-dist/ssg/ lazy strict namespace object","webpack://exports/./node_modules/wirejs-dom/lib/v2/components/dom-events.js","webpack://exports/./pre-dist/components/subscribe.js","webpack://exports/./node_modules/wirejs-dom/lib/v2/internals.js","webpack://exports/webpack/bootstrap","webpack://exports/webpack/runtime/define property getters","webpack://exports/webpack/runtime/hasOwnProperty shorthand","webpack://exports/webpack/runtime/make namespace object","webpack://exports/webpack/startup"],"sourcesContent":["var webpackQueues = typeof Symbol === \"function\" ? Symbol(\"webpack queues\") : \"__webpack_queues__\";\nvar webpackExports = typeof Symbol === \"function\" ? Symbol(\"webpack exports\") : \"__webpack_exports__\";\nvar webpackError = typeof Symbol === \"function\" ? Symbol(\"webpack error\") : \"__webpack_error__\";\nvar resolveQueue = (queue) => {\n\tif(queue && queue.d < 1) {\n\t\tqueue.d = 1;\n\t\tqueue.forEach((fn) => (fn.r--));\n\t\tqueue.forEach((fn) => (fn.r-- ? fn.r++ : fn()));\n\t}\n}\nvar wrapDeps = (deps) => (deps.map((dep) => {\n\tif(dep !== null && typeof dep === \"object\") {\n\t\tif(dep[webpackQueues]) return dep;\n\t\tif(dep.then) {\n\t\t\tvar queue = [];\n\t\t\tqueue.d = 0;\n\t\t\tdep.then((r) => {\n\t\t\t\tobj[webpackExports] = r;\n\t\t\t\tresolveQueue(queue);\n\t\t\t}, (e) => {\n\t\t\t\tobj[webpackError] = e;\n\t\t\t\tresolveQueue(queue);\n\t\t\t});\n\t\t\tvar obj = {};\n\t\t\tobj[webpackQueues] = (fn) => (fn(queue));\n\t\t\treturn obj;\n\t\t}\n\t}\n\tvar ret = {};\n\tret[webpackQueues] = x => {};\n\tret[webpackExports] = dep;\n\treturn ret;\n}));\n__webpack_require__.a = (module, body, hasAwait) => {\n\tvar queue;\n\thasAwait && ((queue = []).d = -1);\n\tvar depQueues = new Set();\n\tvar exports = module.exports;\n\tvar currentDeps;\n\tvar outerResolve;\n\tvar reject;\n\tvar promise = new Promise((resolve, rej) => {\n\t\treject = rej;\n\t\touterResolve = resolve;\n\t});\n\tpromise[webpackExports] = exports;\n\tpromise[webpackQueues] = (fn) => (queue && fn(queue), depQueues.forEach(fn), promise[\"catch\"](x => {}));\n\tmodule.exports = promise;\n\tbody((deps) => {\n\t\tcurrentDeps = wrapDeps(deps);\n\t\tvar fn;\n\t\tvar getResult = () => (currentDeps.map((d) => {\n\t\t\tif(d[webpackError]) throw d[webpackError];\n\t\t\treturn d[webpackExports];\n\t\t}))\n\t\tvar promise = new Promise((resolve) => {\n\t\t\tfn = () => (resolve(getResult));\n\t\t\tfn.r = 0;\n\t\t\tvar fnQueue = (q) => (q !== queue && !depQueues.has(q) && (depQueues.add(q), q && !q.d && (fn.r++, q.push(fn))));\n\t\t\tcurrentDeps.map((dep) => (dep[webpackQueues](fnQueue)));\n\t\t});\n\t\treturn fn.r ? promise : getResult();\n\t}, (err) => ((err ? reject(promise[webpackError] = err) : outerResolve(exports)), resolveQueue(queue)));\n\tqueue && queue.d < 0 && (queue.d = 0);\n};","/**\n * Returns an identifier string that can be used as an ID in the DOM.\n *\n * Will only contain numbers and underscores, and so be used directly\n * for attributes without quotes, if needed.\n */\nexport function randomId() {\n return `${new Date().getTime()}_${Math.floor(Math.random() * 1000000)}`;\n}\n/**\n * Finds the attribute on a node containing the `id` string.\n *\n * Returns `null` if there is no match.\n */\nexport function matchingAttribute(node, id) {\n for (const attribute of node.attributes) {\n if (attribute.value === id)\n return attribute;\n }\n return null;\n}\n/**\n * Finds the attributing containing the given `id` string at or\n * under the given `root` Node.\n *\n * Returns `undefined` if there is no match.\n */\nexport function getAttributeUnder(root, id) {\n const q = [root];\n // theoretically no need for visit tracking,\n // since this is a tree; not a graph.\n while (q.length > 0) {\n const node = q.shift();\n if (!node)\n return;\n const attribute = matchingAttribute(node, id);\n if (attribute) {\n return attribute;\n }\n for (const child of node.children) {\n q.push(child);\n }\n }\n}\n/**\n * Finds the attribute at or under the given `root` matching the\n * given `id` and sets its value to the given `value`.\n */\nexport function setAttributeUnder(root, id, value) {\n const attribute = getAttributeUnder(root, id);\n if (attribute) {\n attribute.value = value;\n return attribute;\n }\n}\nexport function isPromise(o) {\n return !!o && typeof o === 'object' && 'then' in o && typeof o.then === 'function';\n}\n","import { randomId, getAttributeUnder } from '../util.js';\nimport { addWatcherHooks } from './dom-events.js';\nexport function html(raw, ...builders) {\n // TODO: create a function hook and replace inline functions with those.\n // then, the `builder?.f` check below can go away, as the swap will just\n // act like a \"normal\" attribute replacement without the `id` accessor.\n const adjustedBuilders = builders.map(b => {\n if (typeof b === 'function') {\n const id = randomId();\n return {\n id,\n toString() { return id; },\n handler: b\n };\n }\n else if (Array.isArray(b)) {\n const phId = randomId();\n return {\n id: null,\n toString() { return ``; },\n bless(ctx) {\n const ph = ctx.container.querySelector(`[data-id=\"${phId}\"]`);\n b.forEach(_b => _b instanceof Node\n ? ph.parentNode?.insertBefore(_b, ph)\n : ph.parentNode?.insertBefore(document.createTextNode(String(_b)), ph));\n ph.parentNode?.removeChild(ph);\n }\n };\n }\n else if (b instanceof Node) {\n const phId = randomId();\n return {\n id: null,\n toString() { return ``; },\n bless(ctx) {\n const ph = ctx.container.querySelector(`[data-id=\"${phId}\"]`);\n ph.parentNode?.replaceChild(b, ph);\n }\n };\n }\n else {\n return b;\n }\n });\n const markup = String.raw({ raw }, ...adjustedBuilders).trim();\n const firstNode = markup.trim().match(/ {\n const extensions = buildExtensions(target);\n mergeExtensionsIn(target, extensions);\n return target;\n };\n}\nfunction mergeExtensionsIn(target, extensions) {\n for (const [k, v] of Object.entries(extensions)) {\n if (k in target) {\n // recursively merge properties in if `k` already exists on the target.\n // this may need to become more nuanced over time as folks try to merge\n // things into other things that aren't actually objects ... maybe.\n if (typeof v === 'object') {\n mergeExtensionsIn(target[k], v);\n }\n else {\n target[k] = v;\n }\n }\n else {\n target[k] = v;\n }\n }\n}\n","import { html } from \"wirejs-dom/v2\";\nconst TITLE = \"Jon Wire\";\nconst SUBTITLE = \"A Software Engineer exploring the world with code.\";\nconst MENU_ID = \"account-menu\";\nconst DISCLAIMER = html`

\n\tThis content on this site is largely exploratory. I'm sure some of it is embarrassingly wrong (or just plain embarrassing). Please contact me if you'd like to request a correction, making a suggestion, hear me talk at you, or work with me in some capacity.\n\t

\n\tThe site's resources are funded by affiliate/associate links. In some cases, something I've shared consumes a lot of resources. In those cases, I may directly paywall the expensive interactivity.\n\t

\n\t© ${(/* @__PURE__ */ new Date()).getFullYear()} Jon Wire.\n

`;\nasync function Main(slots) {\n const pageTitle = slots.title ? html`\n\t\t

\n\t\t\t${slots.title}\n\t\t

\n\t` : \"\";\n const metaDescription = slots.description ? `` : \"\";\n const browserBarTitle = [\n slots.title,\n slots.siteTitle || TITLE,\n slots.siteSubTitle || SUBTITLE\n ].filter(Boolean).slice(0, 3).join(\" - \");\n return html`\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t${metaDescription}\n\t\t\t\t${browserBarTitle}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t

${slots.siteTitle || TITLE}

\n\t\t\t\t\t\t\t
${slots.siteSubTitle ?? SUBTITLE}
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t${pageTitle}\n\t\t\t\t\t
${slots.content}
\n\t\t\t\t\t
\n\t\t\t\t\t\t${slots.disclaimer ?? DISCLAIMER}\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\n\t\t\n\t`;\n}\nexport {\n Main\n};\n","import { html } from \"wirejs-dom/v2\";\nconst Summary = (article) => {\n return html`
\n\t\t

\n\t\t\t${article.title}\n\t\t\t: ${article.published.toLocaleDateString()}\n\t\t

\n\t\t

${article.description}

\n\t\t

Topics: ${article.tags?.join(\", \")}

\n\t
`.extend(() => ({\n data: {\n published: article.published\n }\n }));\n};\nexport {\n Summary\n};\n","import { html } from \"wirejs-dom/v2\";\nimport { Main } from \"../layouts/index.js\";\nimport { Summary } from \"../components/summary.js\";\nasync function findSummaries() {\n const { relative } = await import(\n /* webpackIgnore: true */\n \"path\"\n );\n const fs = await import(\n /* webpackIgnore: true */\n \"fs\"\n );\n const articlesCandidateFiles = fs.promises.glob(`${import.meta.dirname}/articles/**/*.js`);\n const summaries = [];\n function pagePath(filename) {\n const relativePath = relative(import.meta.filename, filename);\n return relativePath.replace(/\\.js$/, \".html\");\n }\n for await (const filename of articlesCandidateFiles) {\n const module = await import(filename);\n if (typeof module.generate === \"function\") {\n const page = await module.generate();\n if (page.data?.title && page.data?.description && page.data?.published) {\n summaries.push(Summary({\n ...page.data,\n url: pagePath(filename)\n }));\n }\n }\n }\n return summaries;\n}\nconst title = \"All The Things\";\nconst content = html`
\n\t${(await findSummaries()).sort((a, b) => a.data.published.getTime() - b.data.published.getTime()).reverse().slice(0, 5)}\n
`;\nconst generate = async () => Main({ title, content });\nexport {\n generate\n};\n","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(() => {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = () => ([]);\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = 4276;\nmodule.exports = webpackEmptyAsyncContext;","const monitoredNodes = new Set();\nconst registeredCallbacks = new WeakMap();\nconst nodeDomStatus = new WeakMap();\nlet observer = null;\nfunction ensureRunning() {\n if (observer)\n return observer;\n observer = new MutationObserver(() => {\n for (const nodeRef of [...monitoredNodes]) {\n const node = nodeRef.deref();\n if (node) {\n const wasInDom = nodeDomStatus.get(node);\n const isInDom = document.contains(node);\n const wasAdded = isInDom && !wasInDom;\n const wasRemoved = wasInDom && !isInDom;\n nodeDomStatus.set(node, isInDom);\n if (wasAdded) {\n registeredCallbacks.get(node)?.onadd();\n }\n else if (wasRemoved) {\n registeredCallbacks.get(node)?.onremove();\n }\n }\n else {\n monitoredNodes.delete(nodeRef);\n }\n }\n });\n observer.observe(document.body, { childList: true, subtree: true });\n return observer;\n}\n;\nexport function registerNodeDomCallbacks(node, callbacks) {\n ensureRunning();\n monitoredNodes.add(new WeakRef(node));\n registeredCallbacks.set(node, callbacks);\n nodeDomStatus.set(node, document.contains(node));\n}\n;\n/**\n * Call the given function, capturing and logging any thrown exceptions\n * as errors.\n */\nfunction tryToCall(f) {\n try {\n f();\n }\n catch (e) {\n console.error(e);\n }\n}\nexport function addWatcherHooks(node) {\n const onAddWatchers = [];\n const onRemoveWatchers = [];\n let registered = false;\n const ensureCallbacksAreRegistered = () => {\n if (registered)\n return;\n registerNodeDomCallbacks(node, {\n onadd: () => onAddWatchers.forEach(tryToCall),\n onremove: () => onRemoveWatchers.forEach(tryToCall),\n });\n registered = true;\n };\n node.onadd = (f) => {\n ensureCallbacksAreRegistered();\n onAddWatchers.push(() => f(node));\n return node;\n };\n node.onremove = (f) => {\n ensureCallbacksAreRegistered();\n onRemoveWatchers.push(() => f(node));\n return node;\n };\n}\n","var __freeze = Object.freeze;\nvar __defProp = Object.defineProperty;\nvar __template = (cooked, raw) => __freeze(__defProp(cooked, \"raw\", { value: __freeze(raw || cooked.slice()) }));\nvar _a;\nimport { html } from \"wirejs-dom/v2\";\nconst Subscribe = () => html(_a || (_a = __template([`
\n\t
\n \n\t\n\t
\n\t\t
\n\t\t\t
\n\t\t\t\t
* indicates required
\n\t\t\t\t
\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t\t
\n\t\t\t\t/* real people should not fill this in and expect good things - do not remove this or risk form bot signups */\n\t\t\t\t\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t

\"Intuit

\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
\n\t