diff --git a/api/package.json b/api/package.json index 4a28bc7..f10b368 100644 --- a/api/package.json +++ b/api/package.json @@ -22,7 +22,7 @@ "@data-fair/catalogs-shared": "*", "@data-fair/lib-express": "^1.22.5", "@data-fair/lib-node": "^2.12.1", - "@data-fair/lib-node-registry": "^0.6.0", + "@data-fair/lib-node-registry": "^0.7.0", "@data-fair/lib-utils": "^1.10.1", "config": "^4.4.1", "express": "^5.2.0", diff --git a/package-lock.json b/package-lock.json index 297520f..8eb1017 100644 --- a/package-lock.json +++ b/package-lock.json @@ -47,7 +47,7 @@ "@data-fair/catalogs-shared": "*", "@data-fair/lib-express": "^1.22.5", "@data-fair/lib-node": "^2.12.1", - "@data-fair/lib-node-registry": "^0.6.0", + "@data-fair/lib-node-registry": "^0.7.0", "@data-fair/lib-utils": "^1.10.1", "config": "^4.4.1", "express": "^5.2.0", @@ -573,9 +573,9 @@ } }, "node_modules/@data-fair/lib-node-registry": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@data-fair/lib-node-registry/-/lib-node-registry-0.6.0.tgz", - "integrity": "sha512-TT3IFJwOwksl6rGi1JIz7tBM0M3NWyDcHR3orsAtF2UGn64cvQti829lfuhTAmGOhWA/nWjWL4kxDYliOKsJNA==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@data-fair/lib-node-registry/-/lib-node-registry-0.7.0.tgz", + "integrity": "sha512-BZiIsyBkYOuNkSqkhHJ/E4hQrRkfDwR4W7Q4b33ezRo2MTk9MMni8h8VtBPXI+Ex3A1V504n72KJHaTdNwDoew==", "license": "MIT", "dependencies": { "@types/resolve-path": "^1.4.3", @@ -11704,7 +11704,7 @@ "dependencies": { "@data-fair/catalogs-shared": "*", "@data-fair/lib-node": "^2.12.1", - "@data-fair/lib-node-registry": "^0.6.0", + "@data-fair/lib-node-registry": "^0.7.0", "config": "^4.4.1", "debug": "^4.4.1", "form-data": "^4.0.4", diff --git a/shared/plugin-load.ts b/shared/plugin-load.ts index a2d1706..02d2098 100644 --- a/shared/plugin-load.ts +++ b/shared/plugin-load.ts @@ -8,12 +8,14 @@ import { readFile, access } from 'node:fs/promises' * type-stripping (main: "index.ts"). Callers must not hard-code an extension — * read main and trust it. Defaults to "index.js" when main is absent. * - * `cacheBust` appends a query string so the same module path can be re-imported - * fresh in the same process. + * No in-process cache busting is needed: @data-fair/lib-node-registry extracts a + * changed artefact into a content-versioned directory, so an updated plugin + * always resolves to a brand-new absolute path. That forces Node's ESM registry + * to reload the whole module graph (entry + siblings + bundled deps) — something + * a `?query` suffix on the entry point could never do. */ export const importPluginModule = async ( - pluginDir: string, - opts: { cacheBust?: boolean } = {} + pluginDir: string ): Promise => { const pkg = JSON.parse(await readFile(path.join(pluginDir, 'package.json'), 'utf8')) const mainRel = typeof pkg.main === 'string' && pkg.main.length > 0 ? pkg.main : 'index.js' @@ -23,6 +25,5 @@ export const importPluginModule = async ( } catch { throw new Error(`plugin entry point missing: ${mainAbs}`) } - const url = opts.cacheBust ? `${mainAbs}?imported=${Date.now()}` : mainAbs - return (await import(url)) as T + return (await import(mainAbs)) as T } diff --git a/worker/package.json b/worker/package.json index b4d729d..1d3632a 100644 --- a/worker/package.json +++ b/worker/package.json @@ -20,7 +20,7 @@ "dependencies": { "@data-fair/catalogs-shared": "*", "@data-fair/lib-node": "^2.12.1", - "@data-fair/lib-node-registry": "^0.6.0", + "@data-fair/lib-node-registry": "^0.7.0", "config": "^4.4.1", "debug": "^4.4.1", "form-data": "^4.0.4",