@zorilla/playwright-extra 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +361 -0
- package/dist/extra.d.ts +54 -0
- package/dist/extra.d.ts.map +1 -0
- package/dist/extra.js +231 -0
- package/dist/extra.js.map +1 -0
- package/dist/helper/loader.d.ts +27 -0
- package/dist/helper/loader.d.ts.map +1 -0
- package/dist/helper/loader.js +77 -0
- package/dist/helper/loader.js.map +1 -0
- package/dist/index.d.ts +2397 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +80 -0
- package/dist/index.js.map +1 -0
- package/dist/plugins.d.ts +84 -0
- package/dist/plugins.d.ts.map +1 -0
- package/dist/plugins.js +363 -0
- package/dist/plugins.js.map +1 -0
- package/dist/puppeteer-compatiblity-shim/index.d.ts +26 -0
- package/dist/puppeteer-compatiblity-shim/index.d.ts.map +1 -0
- package/dist/puppeteer-compatiblity-shim/index.js +193 -0
- package/dist/puppeteer-compatiblity-shim/index.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/types/index.d.ts +88 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +38 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +70 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type * as pw from 'playwright-core';
|
|
2
|
+
/** Node.js module loader helper */
|
|
3
|
+
export declare class Loader<TargetModule> {
|
|
4
|
+
moduleName: string;
|
|
5
|
+
packageNames: string[];
|
|
6
|
+
constructor(moduleName: string, packageNames: string[]);
|
|
7
|
+
/**
|
|
8
|
+
* Lazy load a top level export from another module by wrapping it in a JS proxy.
|
|
9
|
+
*
|
|
10
|
+
* This allows us to re-export e.g. `devices` from `playwright` while redirecting direct calls
|
|
11
|
+
* to it to the module version the user has installed, rather than shipping with a hardcoded version.
|
|
12
|
+
*
|
|
13
|
+
* 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.
|
|
14
|
+
*
|
|
15
|
+
* We use a "super" Proxy defining all traps, so calls like `Object.keys(playwright.devices).length` will return the correct value.
|
|
16
|
+
*/
|
|
17
|
+
lazyloadExportOrDie<T extends keyof TargetModule>(exportName: T): TargetModule[T];
|
|
18
|
+
/** Load the module if possible */
|
|
19
|
+
loadModule(): TargetModule | undefined;
|
|
20
|
+
/** Load the module if possible or throw */
|
|
21
|
+
loadModuleOrDie(): TargetModule;
|
|
22
|
+
get requireError(): Error;
|
|
23
|
+
}
|
|
24
|
+
export declare function requirePackages<TargetModule = unknown>(packageNames: string[]): TargetModule | undefined;
|
|
25
|
+
/** Playwright specific module loader */
|
|
26
|
+
export declare const playwrightLoader: Loader<typeof pw>;
|
|
27
|
+
//# sourceMappingURL=loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/helper/loader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAI3C,mCAAmC;AACnC,qBAAa,MAAM,CAAC,YAAY;IAErB,UAAU,EAAE,MAAM;IAClB,YAAY,EAAE,MAAM,EAAE;gBADtB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EAAE;IAG/B;;;;;;;;;OASG;IACI,mBAAmB,CAAC,CAAC,SAAS,MAAM,YAAY,EAAE,UAAU,EAAE,CAAC,GAe/B,YAAY,CAAC,CAAC,CAAC;IAGtD,kCAAkC;IAC3B,UAAU;IAIjB,2CAA2C;IACpC,eAAe,IAAI,YAAY;IAQtC,IAAW,YAAY,UAgBtB;CACF;AAED,wBAAgB,eAAe,CAAC,YAAY,GAAG,OAAO,EACpD,YAAY,EAAE,MAAM,EAAE,GACrB,YAAY,GAAG,SAAS,CAO1B;AAED,wCAAwC;AACxC,eAAO,MAAM,gBAAgB,mBAG3B,CAAC"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';
|
|
2
|
+
const require = createRequire(import.meta.url);
|
|
3
|
+
/** Node.js module loader helper */
|
|
4
|
+
export class Loader {
|
|
5
|
+
moduleName;
|
|
6
|
+
packageNames;
|
|
7
|
+
constructor(moduleName, packageNames) {
|
|
8
|
+
this.moduleName = moduleName;
|
|
9
|
+
this.packageNames = packageNames;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Lazy load a top level export from another module by wrapping it in a JS proxy.
|
|
13
|
+
*
|
|
14
|
+
* This allows us to re-export e.g. `devices` from `playwright` while redirecting direct calls
|
|
15
|
+
* to it to the module version the user has installed, rather than shipping with a hardcoded version.
|
|
16
|
+
*
|
|
17
|
+
* 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.
|
|
18
|
+
*
|
|
19
|
+
* We use a "super" Proxy defining all traps, so calls like `Object.keys(playwright.devices).length` will return the correct value.
|
|
20
|
+
*/
|
|
21
|
+
lazyloadExportOrDie(exportName) {
|
|
22
|
+
const trapHandler = Object.fromEntries(Object.getOwnPropertyNames(Reflect).map((name) => [
|
|
23
|
+
name,
|
|
24
|
+
(target, ...args) => {
|
|
25
|
+
const moduleExport = this.loadModuleOrDie()[exportName];
|
|
26
|
+
const customTarget = moduleExport;
|
|
27
|
+
const reflectMethod = Reflect[name];
|
|
28
|
+
const result = reflectMethod(customTarget || target, ...args);
|
|
29
|
+
return result;
|
|
30
|
+
},
|
|
31
|
+
]));
|
|
32
|
+
return new Proxy({}, trapHandler);
|
|
33
|
+
}
|
|
34
|
+
/** Load the module if possible */
|
|
35
|
+
loadModule() {
|
|
36
|
+
return requirePackages(this.packageNames);
|
|
37
|
+
}
|
|
38
|
+
/** Load the module if possible or throw */
|
|
39
|
+
loadModuleOrDie() {
|
|
40
|
+
const module = requirePackages(this.packageNames);
|
|
41
|
+
if (module) {
|
|
42
|
+
return module;
|
|
43
|
+
}
|
|
44
|
+
throw this.requireError;
|
|
45
|
+
}
|
|
46
|
+
get requireError() {
|
|
47
|
+
const moduleNamePretty = this.moduleName.charAt(0).toUpperCase() + this.moduleName.slice(1);
|
|
48
|
+
return new Error(`
|
|
49
|
+
${moduleNamePretty} is missing. :-)
|
|
50
|
+
|
|
51
|
+
I've tried loading ${this.packageNames
|
|
52
|
+
.map(p => `"${p}"`)
|
|
53
|
+
.join(', ')} - no luck.
|
|
54
|
+
|
|
55
|
+
Make sure you install one of those packages or use the named 'addExtra' export,
|
|
56
|
+
to patch a specific (and maybe non-standard) implementation of ${moduleNamePretty}.
|
|
57
|
+
|
|
58
|
+
To get the latest stable version of ${moduleNamePretty} run:
|
|
59
|
+
'npm i ${this.moduleName}'
|
|
60
|
+
`);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
export function requirePackages(packageNames) {
|
|
64
|
+
for (const name of packageNames) {
|
|
65
|
+
try {
|
|
66
|
+
return require(name);
|
|
67
|
+
}
|
|
68
|
+
catch (_) { }
|
|
69
|
+
}
|
|
70
|
+
return undefined;
|
|
71
|
+
}
|
|
72
|
+
/** Playwright specific module loader */
|
|
73
|
+
export const playwrightLoader = new Loader('playwright', [
|
|
74
|
+
'playwright-core',
|
|
75
|
+
'playwright',
|
|
76
|
+
]);
|
|
77
|
+
//# sourceMappingURL=loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/helper/loader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE/C,mCAAmC;AACnC,MAAM,OAAO,MAAM;IAER;IACA;IAFT,YACS,UAAkB,EAClB,YAAsB;QADtB,eAAU,GAAV,UAAU,CAAQ;QAClB,iBAAY,GAAZ,YAAY,CAAU;IAC5B,CAAC;IAEJ;;;;;;;;;OASG;IACI,mBAAmB,CAA+B,UAAa;QACpE,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,CACpC,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC;YACxD,IAAI;YACJ,CAAC,MAAc,EAAE,GAAG,IAAe,EAAE,EAAE;gBACrC,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,UAAU,CAAC,CAAC;gBACxD,MAAM,YAAY,GAAG,YAAsB,CAAC;gBAC5C,MAAM,aAAa,GAAG,OAAO,CAAC,IAA4B,CAE9C,CAAC;gBACb,MAAM,MAAM,GAAG,aAAa,CAAC,YAAY,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;gBAC9D,OAAO,MAAM,CAAC;YAChB,CAAC;SACF,CAAC,CACH,CAAC;QACF,OAAO,IAAI,KAAK,CAAC,EAAE,EAAE,WAAW,CAAoB,CAAC;IACvD,CAAC;IAED,kCAAkC;IAC3B,UAAU;QACf,OAAO,eAAe,CAAe,IAAI,CAAC,YAAY,CAAC,CAAC;IAC1D,CAAC;IAED,2CAA2C;IACpC,eAAe;QACpB,MAAM,MAAM,GAAG,eAAe,CAAe,IAAI,CAAC,YAAY,CAAC,CAAC;QAChE,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,MAAM,IAAI,CAAC,YAAY,CAAC;IAC1B,CAAC;IAED,IAAW,YAAY;QACrB,MAAM,gBAAgB,GACpB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACrE,OAAO,IAAI,KAAK,CAAC;IACjB,gBAAgB;;uBAEG,IAAI,CAAC,YAAY;aACnC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;aAClB,IAAI,CAAC,IAAI,CAAC;;;mEAGoD,gBAAgB;;wCAE3C,gBAAgB;WAC7C,IAAI,CAAC,UAAU;GACvB,CAAC,CAAC;IACH,CAAC;CACF;AAED,MAAM,UAAU,eAAe,CAC7B,YAAsB;IAEtB,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,OAAO,OAAO,CAAC,IAAI,CAAiB,CAAC;QACvC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC,CAAA,CAAC;IAChB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,wCAAwC;AACxC,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,MAAM,CAAY,YAAY,EAAE;IAClE,iBAAiB;IACjB,YAAY;CACb,CAAC,CAAC"}
|