Files
test-repo/scripts/build/transform/transforms/get-public-doc-functionality.js
T
fisker Cheungandautofix-ci[bot] 0f05bc5871 Build: Reuse doc.mjs in index.mjs (#18193)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-11-03 04:54:10 +08:00

43 lines
1.2 KiB
JavaScript

import path from "node:path";
import { pathToFileURL } from "node:url";
import makeSynchronized from "make-synchronized";
import { SOURCE_DIR } from "../../../utils/index.js";
const PUBLIC_MODULE_URL = pathToFileURL(
path.join(SOURCE_DIR, "document/public.js"),
);
let publicDocFunctionalities;
async function getPublicDocFunctionalities() {
if (!publicDocFunctionalities) {
const publicDocModule = await import(PUBLIC_MODULE_URL);
publicDocFunctionalities = new WeakMap();
for (const [namespace, functionalities] of Object.entries(
publicDocModule,
)) {
for (const [name, functionality] of Object.entries(functionalities)) {
if (publicDocFunctionalities.has(functionality)) {
continue;
}
publicDocFunctionalities.set(functionality, { namespace, name });
}
}
}
return publicDocFunctionalities;
}
async function isPublicDocFunctionality(name, file) {
const [publicDocFunctionalities, { [name]: functionality }] =
await Promise.all([
getPublicDocFunctionalities(),
import(pathToFileURL(file)),
]);
return publicDocFunctionalities.get(functionality);
}
export default makeSynchronized(import.meta, isPublicDocFunctionality);