PSF: Foundry Progress Sync. 57 high-fidelity blueprints established. Open Fleet routing (Kimi/Qwen) active. GTD updated.
This commit is contained in:
80
projects/org-skill-web-research/node_modules/playwright-extra/dist/helper/loader.js
generated
vendored
Normal file
80
projects/org-skill-web-research/node_modules/playwright-extra/dist/helper/loader.js
generated
vendored
Normal file
@@ -0,0 +1,80 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.playwrightLoader = exports.requirePackages = exports.Loader = void 0;
|
||||
/** Node.js module loader helper */
|
||||
class Loader {
|
||||
constructor(moduleName, packageNames) {
|
||||
this.moduleName = moduleName;
|
||||
this.packageNames = packageNames;
|
||||
}
|
||||
/**
|
||||
* Lazy load a top level export from another module by wrapping it in a JS proxy.
|
||||
*
|
||||
* This allows us to re-export e.g. `devices` from `playwright` while redirecting direct calls
|
||||
* to it to the module version the user has installed, rather than shipping with a hardcoded version.
|
||||
*
|
||||
* If we don't do this and the user doesn't have the target module installed we'd throw immediately when our code is imported.
|
||||
*
|
||||
* We use a "super" Proxy defining all traps, so calls like `Object.keys(playwright.devices).length` will return the correct value.
|
||||
*/
|
||||
lazyloadExportOrDie(exportName) {
|
||||
const that = this;
|
||||
const trapHandler = Object.fromEntries(Object.getOwnPropertyNames(Reflect).map((name) => [
|
||||
name,
|
||||
function (target, ...args) {
|
||||
const moduleExport = that.loadModuleOrDie()[exportName];
|
||||
const customTarget = moduleExport;
|
||||
const result = Reflect[name](customTarget || target, ...args);
|
||||
return result;
|
||||
}
|
||||
]));
|
||||
return new Proxy({}, trapHandler);
|
||||
}
|
||||
/** Load the module if possible */
|
||||
loadModule() {
|
||||
return requirePackages(this.packageNames);
|
||||
}
|
||||
/** Load the module if possible or throw */
|
||||
loadModuleOrDie() {
|
||||
const module = requirePackages(this.packageNames);
|
||||
if (module) {
|
||||
return module;
|
||||
}
|
||||
throw this.requireError;
|
||||
}
|
||||
get requireError() {
|
||||
const moduleNamePretty = this.moduleName.charAt(0).toUpperCase() + this.moduleName.slice(1);
|
||||
return new Error(`
|
||||
${moduleNamePretty} is missing. :-)
|
||||
|
||||
I've tried loading ${this.packageNames
|
||||
.map(p => `"${p}"`)
|
||||
.join(', ')} - no luck.
|
||||
|
||||
Make sure you install one of those packages or use the named 'addExtra' export,
|
||||
to patch a specific (and maybe non-standard) implementation of ${moduleNamePretty}.
|
||||
|
||||
To get the latest stable version of ${moduleNamePretty} run:
|
||||
'yarn add ${this.moduleName}' or 'npm i ${this.moduleName}'
|
||||
`);
|
||||
}
|
||||
}
|
||||
exports.Loader = Loader;
|
||||
function requirePackages(packageNames) {
|
||||
for (const name of packageNames) {
|
||||
try {
|
||||
return require(name);
|
||||
}
|
||||
catch (_) {
|
||||
continue; // noop
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
exports.requirePackages = requirePackages;
|
||||
/** Playwright specific module loader */
|
||||
exports.playwrightLoader = new Loader('playwright', [
|
||||
'playwright-core',
|
||||
'playwright'
|
||||
]);
|
||||
//# sourceMappingURL=loader.js.map
|
||||
Reference in New Issue
Block a user