Files
klz-cables.com/.pnpm-store/v10/files/d0/1029edd0de4f16a24337d67ccb9c1e97ab52964c1c38c1577ea63296ed0d48f33c5addf26d7db172f5aea47515135c02de64729f37686d0b60e6b5a2cc9429
Marc Mintel 5397309103
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
fix(products): fix breadcrumbs and product filtering (backport from main)
2026-02-24 16:04:21 +01:00

62 lines
1.9 KiB
Plaintext

'use strict'
import createDebug from 'debug';
import { readFile } from 'node:fs/promises'
import { create } from '@apm-js-collab/code-transformer'
import parse from 'module-details-from-path'
import { fileURLToPath } from 'node:url'
import getPackageVersion from './lib/get-package-version.js'
const debug = createDebug('@apm-js-collab/tracing-hooks:esm-hook')
let transformers = null
let packages = null
let instrumentator = null
export async function initialize(data = {}) {
const instrumentations = data?.instrumentations || []
instrumentator = create(instrumentations)
packages = new Set(instrumentations.map(i => i.module.name))
transformers = new Map()
}
export async function resolve(specifier, context, nextResolve) {
const url = await nextResolve(specifier, context)
const resolvedModule = parse(url.url)
if (resolvedModule && packages.has(resolvedModule.name)) {
const path = fileURLToPath(resolvedModule.basedir)
const version = getPackageVersion(path)
const transformer = instrumentator.getTransformer(resolvedModule.name, version, resolvedModule.path)
if (transformer) {
transformers.set(url.url, transformer)
}
}
return url
}
export async function load(url, context, nextLoad) {
const result = await nextLoad(url, context)
if (transformers.has(url) === false) {
return result
}
if (result.format === 'commonjs') {
const parsedUrl = new URL(result.responseURL ?? url)
result.source ??= await readFile(parsedUrl)
}
const code = result.source
if (code) {
const transformer = transformers.get(url)
try {
const transformedCode = transformer.transform(code.toString('utf8'), 'unknown')
result.source = transformedCode?.code
result.shortCircuit = true
} catch(err) {
debug('Error transforming module %s: %o', url, err)
} finally {
transformer.free()
}
}
return result
}