Files
formipay/node_modules/loader-runner/lib/loadLoader.js
dwindown e8fbfb14c1 fix: prevent asset conflicts between React and Grid.js versions
Add coexistence checks to all enqueue methods to prevent loading
both React and Grid.js assets simultaneously.

Changes:
- ReactAdmin.php: Only enqueue React assets when ?react=1
- Init.php: Skip Grid.js when React active on admin pages
- Form.php, Coupon.php, Access.php: Restore classic assets when ?react=0
- Customer.php, Product.php, License.php: Add coexistence checks

Now the toggle between Classic and React versions works correctly.

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-18 17:02:14 +07:00

81 lines
1.8 KiB
JavaScript

"use strict";
const LoaderLoadingError = require("./LoaderLoadingError");
let url;
function handleResult(loader, module, callback) {
if (typeof module !== "function" && typeof module !== "object") {
return callback(
new LoaderLoadingError(
`Module '${
loader.path
}' is not a loader (export function or es6 module)`
)
);
}
loader.normal = typeof module === "function" ? module : module.default;
loader.pitch = module.pitch;
loader.raw = module.raw;
if (
typeof loader.normal !== "function" &&
typeof loader.pitch !== "function"
) {
return callback(
new LoaderLoadingError(
`Module '${
loader.path
}' is not a loader (must have normal or pitch function)`
)
);
}
callback();
}
module.exports = function loadLoader(loader, callback) {
if (loader.type === "module") {
try {
if (url === undefined) url = require("url");
// eslint-disable-next-line n/no-unsupported-features/node-builtins
const loaderUrl = url.pathToFileURL(loader.path);
// eslint-disable-next-line no-eval
const modulePromise = eval(
`import(${JSON.stringify(loaderUrl.toString())})`
);
modulePromise.then((module) => {
handleResult(loader, module, callback);
}, callback);
} catch (err) {
callback(err);
}
} else {
let loadedModule;
try {
loadedModule = require(loader.path);
} catch (err) {
// it is possible for node to choke on a require if the FD descriptor
// limit has been reached. give it a chance to recover.
if (err instanceof Error && err.code === "EMFILE") {
const retry = loadLoader.bind(null, loader, callback);
if (typeof setImmediate === "function") {
// node >= 0.9.0
return setImmediate(retry);
}
// node < 0.9.0
return process.nextTick(retry);
}
return callback(err);
}
return handleResult(loader, loadedModule, callback);
}
};