@tstdl/base 0.84.6 → 0.84.8
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/browser/browser.service.js +3 -2
- package/browser/index.d.ts +1 -0
- package/browser/index.js +1 -0
- package/browser/module.d.ts +18 -0
- package/browser/module.js +49 -0
- package/browser/utils.d.ts +1 -4
- package/browser/utils.js +0 -32
- package/http/client/http-client-request.d.ts +3 -0
- package/http/client/http-client-request.js +4 -0
- package/http/client/http-client.js +4 -1
- package/package.json +1 -1
- package/types.d.ts +2 -2
- package/utils/object/object.d.ts +4 -0
- package/utils/object/object.js +4 -0
|
@@ -28,6 +28,7 @@ var import_core = require("../core.js");
|
|
|
28
28
|
var import_disposable = require("../disposable/disposable.js");
|
|
29
29
|
var import_browser_context_controller = require("./browser-context-controller.js");
|
|
30
30
|
var import_browser_controller = require("./browser-controller.js");
|
|
31
|
+
var import_module = require("./module.js");
|
|
31
32
|
var import_utils = require("./utils.js");
|
|
32
33
|
var __decorate = function(decorators, target, key, desc) {
|
|
33
34
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
@@ -69,7 +70,7 @@ let BrowserService = class BrowserService2 {
|
|
|
69
70
|
async newBrowser(options = {}) {
|
|
70
71
|
const mergedOptions = { ...this.options?.defaultNewBrowserOptions, ...options };
|
|
71
72
|
const launchOptions = (0, import_utils.getLaunchOptions)(mergedOptions);
|
|
72
|
-
const browser = await (0,
|
|
73
|
+
const browser = await (0, import_module.getBrowserType)(mergedOptions.browser).launch(launchOptions);
|
|
73
74
|
this.browsers.add(browser);
|
|
74
75
|
browser.once("disconnected", () => this.browsers.delete(browser));
|
|
75
76
|
return new import_browser_controller.BrowserController(browser, { defaultNewContextOptions: mergedOptions.defaultNewContextOptions });
|
|
@@ -78,7 +79,7 @@ let BrowserService = class BrowserService2 {
|
|
|
78
79
|
const mergedBrowserOptions = { ...this.options?.defaultNewBrowserOptions, ...browserOptions };
|
|
79
80
|
const mergedContextOptions = (0, import_utils.mergeNewBrowserContextOptions)(this.options?.defaultNewBrowserOptions?.defaultNewContextOptions, browserOptions.defaultNewContextOptions, contextOptions);
|
|
80
81
|
const launchOptions = (0, import_utils.getLaunchOptions)(mergedBrowserOptions);
|
|
81
|
-
const context = await (0,
|
|
82
|
+
const context = await (0, import_module.getBrowserType)(mergedBrowserOptions.browser).launchPersistentContext(dataDirectory, {
|
|
82
83
|
...launchOptions,
|
|
83
84
|
locale: mergedContextOptions.locale,
|
|
84
85
|
viewport: mergedContextOptions.viewport,
|
package/browser/index.d.ts
CHANGED
package/browser/index.js
CHANGED
|
@@ -22,5 +22,6 @@ __reExport(browser_exports, require("./document-controller.js"), module.exports)
|
|
|
22
22
|
__reExport(browser_exports, require("./element-controller.js"), module.exports);
|
|
23
23
|
__reExport(browser_exports, require("./frame-controller.js"), module.exports);
|
|
24
24
|
__reExport(browser_exports, require("./locator-controller.js"), module.exports);
|
|
25
|
+
__reExport(browser_exports, require("./module.js"), module.exports);
|
|
25
26
|
__reExport(browser_exports, require("./page-controller.js"), module.exports);
|
|
26
27
|
__reExport(browser_exports, require("./types.js"), module.exports);
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { BrowserType } from 'playwright';
|
|
2
|
+
import { BrowserServiceOptions } from './browser.service.js';
|
|
3
|
+
export type BrowserModuleOptions = {
|
|
4
|
+
browsers: {
|
|
5
|
+
chromium?: BrowserType;
|
|
6
|
+
firefox?: BrowserType;
|
|
7
|
+
webkit?: BrowserType;
|
|
8
|
+
};
|
|
9
|
+
options?: BrowserServiceOptions;
|
|
10
|
+
};
|
|
11
|
+
declare const browserTypes: {
|
|
12
|
+
chromium: BrowserType<{}>;
|
|
13
|
+
firefox: BrowserType<{}>;
|
|
14
|
+
webkit: BrowserType<{}>;
|
|
15
|
+
};
|
|
16
|
+
export declare function configureBrowser(options: BrowserModuleOptions): void;
|
|
17
|
+
export declare function getBrowserType(type: keyof typeof browserTypes | undefined): BrowserType;
|
|
18
|
+
export {};
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
var module_exports = {};
|
|
20
|
+
__export(module_exports, {
|
|
21
|
+
configureBrowser: () => configureBrowser,
|
|
22
|
+
getBrowserType: () => getBrowserType
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(module_exports);
|
|
25
|
+
var import_playwright = require("playwright");
|
|
26
|
+
var import_container = require("../container/container.js");
|
|
27
|
+
var import_not_supported_error = require("../error/not-supported.error.js");
|
|
28
|
+
var import_object = require("../utils/object/object.js");
|
|
29
|
+
var import_type_guards = require("../utils/type-guards.js");
|
|
30
|
+
var import_browser_service = require("./browser.service.js");
|
|
31
|
+
const browserTypes = {
|
|
32
|
+
chromium: import_playwright.chromium,
|
|
33
|
+
firefox: import_playwright.firefox,
|
|
34
|
+
webkit: import_playwright.webkit
|
|
35
|
+
};
|
|
36
|
+
function configureBrowser(options) {
|
|
37
|
+
const filtered = (0, import_object.filterUndefinedObjectProperties)(options.browsers);
|
|
38
|
+
(0, import_object.copyObjectProperties)(filtered, browserTypes);
|
|
39
|
+
if ((0, import_type_guards.isDefined)(options.options)) {
|
|
40
|
+
import_container.container.register(import_browser_service.BrowserServiceOptions, { useValue: options.options });
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
function getBrowserType(type) {
|
|
44
|
+
const browserType = browserTypes[type ?? "chromium"];
|
|
45
|
+
if ((0, import_type_guards.isUndefined)(browserType)) {
|
|
46
|
+
throw new import_not_supported_error.NotSupportedError(`Browser type ${type} is not supported.`);
|
|
47
|
+
}
|
|
48
|
+
return browserType;
|
|
49
|
+
}
|
package/browser/utils.d.ts
CHANGED
|
@@ -1,8 +1,5 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { LaunchOptions } from 'playwright';
|
|
2
2
|
import type { NewBrowserContextOptions } from './browser-controller.js';
|
|
3
3
|
import type { NewBrowserOptions } from './browser.service.js';
|
|
4
4
|
export declare function getLaunchOptions(options: NewBrowserOptions): LaunchOptions;
|
|
5
5
|
export declare function mergeNewBrowserContextOptions(a: NewBrowserContextOptions | undefined, b?: NewBrowserContextOptions, c?: NewBrowserContextOptions): NewBrowserContextOptions;
|
|
6
|
-
export declare function getBrowserType(type: string | undefined): BrowserType;
|
|
7
|
-
export declare function isLocator(value: Locator | ElementHandle): value is Locator;
|
|
8
|
-
export declare function isElementHandle(value: Locator | ElementHandle): value is ElementHandle;
|
package/browser/utils.js
CHANGED
|
@@ -18,17 +18,11 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var utils_exports = {};
|
|
20
20
|
__export(utils_exports, {
|
|
21
|
-
getBrowserType: () => getBrowserType,
|
|
22
21
|
getLaunchOptions: () => getLaunchOptions,
|
|
23
|
-
isElementHandle: () => isElementHandle,
|
|
24
|
-
isLocator: () => isLocator,
|
|
25
22
|
mergeNewBrowserContextOptions: () => mergeNewBrowserContextOptions
|
|
26
23
|
});
|
|
27
24
|
module.exports = __toCommonJS(utils_exports);
|
|
28
|
-
var import_not_supported_error = require("../error/not-supported.error.js");
|
|
29
25
|
var import_object = require("../utils/object/object.js");
|
|
30
|
-
var import_type_guards = require("../utils/type-guards.js");
|
|
31
|
-
var import_playwright = require("playwright");
|
|
32
26
|
function getLaunchOptions(options) {
|
|
33
27
|
const { windowSize, browserArguments, headless } = options;
|
|
34
28
|
const args = [`--window-size=${windowSize?.width ?? 1e3},${windowSize?.height ?? 1e3}`, ...browserArguments ?? []];
|
|
@@ -43,29 +37,3 @@ function mergeNewBrowserContextOptions(a, b, c) {
|
|
|
43
37
|
extraHttpHeaders: (0, import_object.objectKeys)(mergedExtraHttpHeaders).length > 0 ? mergedExtraHttpHeaders : void 0
|
|
44
38
|
};
|
|
45
39
|
}
|
|
46
|
-
function getBrowserType(type) {
|
|
47
|
-
let browserType;
|
|
48
|
-
switch (type) {
|
|
49
|
-
case "chromium":
|
|
50
|
-
case void 0:
|
|
51
|
-
browserType = import_playwright.chromium;
|
|
52
|
-
break;
|
|
53
|
-
case "firefox":
|
|
54
|
-
browserType = import_playwright.firefox;
|
|
55
|
-
break;
|
|
56
|
-
case "webkit":
|
|
57
|
-
browserType = import_playwright.webkit;
|
|
58
|
-
break;
|
|
59
|
-
default:
|
|
60
|
-
throw new import_not_supported_error.NotSupportedError(`Browser type ${type} is not supported.`);
|
|
61
|
-
}
|
|
62
|
-
return browserType;
|
|
63
|
-
}
|
|
64
|
-
const exclusiveLocatorKey = "locator";
|
|
65
|
-
function isLocator(value) {
|
|
66
|
-
return (0, import_type_guards.isFunction)(value[exclusiveLocatorKey]);
|
|
67
|
-
}
|
|
68
|
-
const exclusiveElementHandleKey = "$";
|
|
69
|
-
function isElementHandle(value) {
|
|
70
|
-
return (0, import_type_guards.isFunction)(value[exclusiveElementHandleKey]);
|
|
71
|
-
}
|
|
@@ -57,11 +57,14 @@ export declare class HttpClientRequest implements Disposable {
|
|
|
57
57
|
* automatically maps parameters to `urlParameters`, `query` and `body`
|
|
58
58
|
* depending on whether the `url` has parameters specified, the request `method`
|
|
59
59
|
* and if there is already a `body` or not
|
|
60
|
+
* @see mapParameters
|
|
60
61
|
* @see mapParametersToUrl
|
|
61
62
|
* @see mapParametersToQuery
|
|
62
63
|
* @see mapParametersToBody
|
|
63
64
|
*/
|
|
64
65
|
parameters: UndefinableJsonObject | undefined;
|
|
66
|
+
/** if false, disable parameters mapping completely */
|
|
67
|
+
mapParameters: boolean;
|
|
65
68
|
mapParametersToUrl: boolean;
|
|
66
69
|
mapParametersToQuery: boolean;
|
|
67
70
|
mapParametersToBody: boolean;
|
|
@@ -38,11 +38,14 @@ class HttpClientRequest {
|
|
|
38
38
|
* automatically maps parameters to `urlParameters`, `query` and `body`
|
|
39
39
|
* depending on whether the `url` has parameters specified, the request `method`
|
|
40
40
|
* and if there is already a `body` or not
|
|
41
|
+
* @see mapParameters
|
|
41
42
|
* @see mapParametersToUrl
|
|
42
43
|
* @see mapParametersToQuery
|
|
43
44
|
* @see mapParametersToBody
|
|
44
45
|
*/
|
|
45
46
|
parameters;
|
|
47
|
+
/** if false, disable parameters mapping completely */
|
|
48
|
+
mapParameters;
|
|
46
49
|
mapParametersToUrl;
|
|
47
50
|
mapParametersToQuery;
|
|
48
51
|
mapParametersToBody;
|
|
@@ -110,6 +113,7 @@ class HttpClientRequest {
|
|
|
110
113
|
const requestOptions = (0, import_type_guards.isString)(urlOrObject) ? options : urlOrObject;
|
|
111
114
|
this.headers = new import_http_headers.HttpHeaders(requestOptions.headers);
|
|
112
115
|
this.parameters = requestOptions.parameters;
|
|
116
|
+
this.mapParameters = requestOptions.mapParameters ?? true;
|
|
113
117
|
this.mapParametersToUrl = requestOptions.mapParametersToUrl ?? true;
|
|
114
118
|
this.mapParametersToQuery = requestOptions.mapParametersToQuery ?? true;
|
|
115
119
|
this.mapParametersToBody = requestOptions.mapParametersToBody ?? true;
|
|
@@ -231,6 +231,9 @@ HttpClient = __decorate([
|
|
|
231
231
|
], HttpClient);
|
|
232
232
|
function getBuildRequestUrlMiddleware(baseUrl) {
|
|
233
233
|
async function buildUrlParametersMiddleware(request, next) {
|
|
234
|
+
if (!request.mapParameters) {
|
|
235
|
+
return next(request);
|
|
236
|
+
}
|
|
234
237
|
const modifiedRequest = mapParameters(request, baseUrl);
|
|
235
238
|
return next(modifiedRequest);
|
|
236
239
|
}
|
|
@@ -267,7 +270,7 @@ async function addRequestHeadersMiddleware(request, next) {
|
|
|
267
270
|
async function errorMiddleware(request, next) {
|
|
268
271
|
try {
|
|
269
272
|
const response = await next(request);
|
|
270
|
-
if (request.throwOnNon200 && (response.statusCode < 200 || response.statusCode >=
|
|
273
|
+
if (request.throwOnNon200 && (response.statusCode < 200 || response.statusCode >= 400)) {
|
|
271
274
|
const httpError = await import_http_error.HttpError.create(import_http_error.HttpErrorReason.Non200StatusCode, request, response, `Status code ${response.statusCode}.`);
|
|
272
275
|
throw httpError;
|
|
273
276
|
}
|
package/package.json
CHANGED
package/types.d.ts
CHANGED
|
@@ -112,10 +112,10 @@ export type OmitBy<T, V> = Omit<T, {
|
|
|
112
112
|
* normalize properties of a type that allow `undefined` to make them optional.
|
|
113
113
|
*/
|
|
114
114
|
export type Optionalize<T extends object> = OmitBy<T, undefined> & Partial<PickBy<T, undefined>>;
|
|
115
|
-
export type
|
|
115
|
+
export type SimplifiedOptionalize<T extends object> = SimplifyObject<Optionalize<T>>;
|
|
116
|
+
export type Unoptionalize<T extends object> = SimplifyObject<OmitBy<T, undefined> & {
|
|
116
117
|
[P in PropertiesOfType<T, undefined>]: T[P] | undefined;
|
|
117
118
|
}>;
|
|
118
|
-
export type SimplifiedOptionalize<T extends object> = Simplify<Optionalize<T>>;
|
|
119
119
|
export type Merge<T1, T2> = SimplifyObject<Except<T1, Extract<keyof T1, keyof T2>> & T2>;
|
|
120
120
|
export type Simplify<T> = T extends BuiltIn ? T : T extends readonly any[] ? SimplifyArray<T> : T extends Record ? SimplifyObject<T> : T;
|
|
121
121
|
export type SimplifyObject<T extends Record> = {
|
package/utils/object/object.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { FromEntries, ObjectLiteral, PickBy, Record } from '../../types.js';
|
|
2
|
+
import type { IsEqual } from 'type-fest';
|
|
2
3
|
export declare function hasOwnProperty<T extends Record>(obj: T, key: keyof T): boolean;
|
|
3
4
|
/**
|
|
4
5
|
* returns object entries including those with symbols keys (which Object.entries does not)
|
|
@@ -18,6 +19,9 @@ export declare function mapObjectValuesAsync<T extends ObjectLiteral, V>(object:
|
|
|
18
19
|
export declare function filterObject<T extends ObjectLiteral, U extends T[keyof T]>(object: T, predicate: (value: T[keyof T], key: keyof T) => value is U): PickBy<T, U>;
|
|
19
20
|
export declare function filterObject<T extends ObjectLiteral>(object: T, predicate: (value: T[keyof T], key: keyof T) => boolean): Partial<T>;
|
|
20
21
|
export declare function filterObjectAsync<T extends ObjectLiteral>(object: T, predicate: (value: T[keyof T], key: keyof T) => Promise<boolean>): Promise<Partial<T>>;
|
|
22
|
+
export declare function filterUndefinedObjectProperties<T extends ObjectLiteral>(object: T): {
|
|
23
|
+
[P in keyof T]?: IsEqual<T[P], undefined> extends true ? never : Exclude<T[P], undefined>;
|
|
24
|
+
};
|
|
21
25
|
export declare function copyObjectProperties<T extends ObjectLiteral, U extends T>(source: T, target: U): void;
|
|
22
26
|
export declare function getGetter<T extends ObjectLiteral, U extends keyof T>(obj: T, property: keyof T, bind: boolean): () => T[U];
|
|
23
27
|
export declare function deepObjectEntries(object: ObjectLiteral, keepInnerObjects?: boolean, prefix?: string): [string, any][];
|
package/utils/object/object.js
CHANGED
|
@@ -22,6 +22,7 @@ __export(object_exports, {
|
|
|
22
22
|
deepObjectEntries: () => deepObjectEntries,
|
|
23
23
|
filterObject: () => filterObject,
|
|
24
24
|
filterObjectAsync: () => filterObjectAsync,
|
|
25
|
+
filterUndefinedObjectProperties: () => filterUndefinedObjectProperties,
|
|
25
26
|
fromEntries: () => fromEntries,
|
|
26
27
|
getGetter: () => getGetter,
|
|
27
28
|
hasOwnProperty: () => hasOwnProperty,
|
|
@@ -78,6 +79,9 @@ async function filterObjectAsync(object, predicate) {
|
|
|
78
79
|
const mappedEntries = await (0, import_to_array.toArrayAsync)((0, import_filter.filterAsync)(entries, async ([key, value]) => predicate(value, key)));
|
|
79
80
|
return Object.fromEntries(mappedEntries);
|
|
80
81
|
}
|
|
82
|
+
function filterUndefinedObjectProperties(object) {
|
|
83
|
+
return filterObject(object, import_type_guards.isDefined);
|
|
84
|
+
}
|
|
81
85
|
function copyObjectProperties(source, target) {
|
|
82
86
|
for (const key of objectKeys(source)) {
|
|
83
87
|
target[key] = source[key];
|