@tstdl/base 0.84.8 → 0.84.10
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-context-controller.d.ts +1 -1
- package/browser/browser-context-controller.js +3 -1
- package/browser/browser-controller.d.ts +4 -1
- package/browser/browser-controller.js +5 -1
- package/browser/browser.service.d.ts +1 -1
- package/browser/browser.service.js +5 -1
- package/browser/module.d.ts +1 -1
- package/browser/module.js +4 -2
- package/browser/page-controller.js +3 -1
- package/browser/utils.js +8 -1
- package/package.json +1 -2
- package/utils/object/object.d.ts +1 -0
- package/utils/object/object.js +4 -0
|
@@ -26,7 +26,7 @@ export declare class BrowserContextController implements AsyncDisposable, Inject
|
|
|
26
26
|
[disposeAsync](): Promise<void>;
|
|
27
27
|
close(): Promise<void>;
|
|
28
28
|
getState(): Promise<BrowserContextState>;
|
|
29
|
-
setExtraHttpHeaders(headers: Record<string, string>): Promise<void>;
|
|
29
|
+
setExtraHttpHeaders(headers: Record<string, string | undefined>): Promise<void>;
|
|
30
30
|
newPage(options?: NewPageOptions): Promise<PageController>;
|
|
31
31
|
waitForClose(): Promise<void>;
|
|
32
32
|
}
|
|
@@ -24,6 +24,7 @@ module.exports = __toCommonJS(browser_context_controller_exports);
|
|
|
24
24
|
var import_decorators = require("../container/decorators.js");
|
|
25
25
|
var import_interfaces = require("../container/interfaces.js");
|
|
26
26
|
var import_disposable = require("../disposable/disposable.js");
|
|
27
|
+
var import_object = require("../utils/object/object.js");
|
|
27
28
|
var import_type_guards = require("../utils/type-guards.js");
|
|
28
29
|
var import_browser_controller = require("./browser-controller.js");
|
|
29
30
|
var import_page_controller = require("./page-controller.js");
|
|
@@ -60,7 +61,8 @@ let BrowserContextController = class BrowserContextController2 {
|
|
|
60
61
|
return state;
|
|
61
62
|
}
|
|
62
63
|
async setExtraHttpHeaders(headers) {
|
|
63
|
-
|
|
64
|
+
const filtered = (0, import_object.filterUndefinedFromRecord)(headers);
|
|
65
|
+
await this.context.setExtraHTTPHeaders(filtered);
|
|
64
66
|
}
|
|
65
67
|
async newPage(options) {
|
|
66
68
|
const page = await this.context.newPage();
|
|
@@ -3,6 +3,7 @@ import type { Injectable } from '../container/interfaces.js';
|
|
|
3
3
|
import { resolveArgumentType } from '../container/interfaces.js';
|
|
4
4
|
import type { AsyncDisposable } from '../disposable/disposable.js';
|
|
5
5
|
import { disposeAsync } from '../disposable/disposable.js';
|
|
6
|
+
import type { Record } from '../types.js';
|
|
6
7
|
import type { BrowserContextState, NewPageOptions } from './browser-context-controller.js';
|
|
7
8
|
import { BrowserContextController } from './browser-context-controller.js';
|
|
8
9
|
import type { NewBrowserOptions } from './browser.service.js';
|
|
@@ -11,8 +12,10 @@ export type BrowserControllerOptions = {
|
|
|
11
12
|
};
|
|
12
13
|
export type NewBrowserContextOptions = {
|
|
13
14
|
state?: BrowserContextState;
|
|
15
|
+
userAgent?: string;
|
|
16
|
+
colorScheme?: 'light' | 'dark' | 'no-preference';
|
|
14
17
|
locale?: string;
|
|
15
|
-
extraHttpHeaders?: Record<string, string>;
|
|
18
|
+
extraHttpHeaders?: Record<string, string | undefined>;
|
|
16
19
|
defaultNewPageOptions?: NewPageOptions;
|
|
17
20
|
viewport?: {
|
|
18
21
|
width: number;
|
|
@@ -24,6 +24,8 @@ module.exports = __toCommonJS(browser_controller_exports);
|
|
|
24
24
|
var import_decorators = require("../container/decorators.js");
|
|
25
25
|
var import_interfaces = require("../container/interfaces.js");
|
|
26
26
|
var import_disposable = require("../disposable/disposable.js");
|
|
27
|
+
var import_object = require("../utils/object/object.js");
|
|
28
|
+
var import_type_guards = require("../utils/type-guards.js");
|
|
27
29
|
var import_browser_context_controller = require("./browser-context-controller.js");
|
|
28
30
|
var import_browser_service = require("./browser.service.js");
|
|
29
31
|
var import_utils = require("./utils.js");
|
|
@@ -56,10 +58,12 @@ let BrowserController = class BrowserController2 {
|
|
|
56
58
|
const mergedOptions = (0, import_utils.mergeNewBrowserContextOptions)(this.options?.defaultNewContextOptions, options);
|
|
57
59
|
const context = await this.browser.newContext({
|
|
58
60
|
storageState: mergedOptions.state,
|
|
61
|
+
userAgent: mergedOptions.userAgent,
|
|
62
|
+
colorScheme: mergedOptions.colorScheme,
|
|
59
63
|
locale: mergedOptions.locale,
|
|
60
64
|
viewport: mergedOptions.viewport,
|
|
61
65
|
proxy: mergedOptions.proxy,
|
|
62
|
-
extraHTTPHeaders: mergedOptions.extraHttpHeaders
|
|
66
|
+
extraHTTPHeaders: (0, import_type_guards.isDefined)(mergedOptions.extraHttpHeaders) ? (0, import_object.filterUndefinedFromRecord)(mergedOptions.extraHttpHeaders) : void 0
|
|
63
67
|
});
|
|
64
68
|
return new import_browser_context_controller.BrowserContextController(context, mergedOptions);
|
|
65
69
|
}
|
|
@@ -11,7 +11,7 @@ export declare class BrowserServiceOptions {
|
|
|
11
11
|
export type BrowserServiceArgument = BrowserServiceOptions;
|
|
12
12
|
export type NewBrowserOptions = {
|
|
13
13
|
browser?: 'chromium' | 'firefox' | 'webkit';
|
|
14
|
-
headless?: boolean;
|
|
14
|
+
headless?: boolean | 'new';
|
|
15
15
|
windowSize?: {
|
|
16
16
|
width: number;
|
|
17
17
|
height: number;
|
|
@@ -26,6 +26,8 @@ var import_decorators = require("../container/decorators.js");
|
|
|
26
26
|
var import_interfaces = require("../container/interfaces.js");
|
|
27
27
|
var import_core = require("../core.js");
|
|
28
28
|
var import_disposable = require("../disposable/disposable.js");
|
|
29
|
+
var import_object = require("../utils/object/object.js");
|
|
30
|
+
var import_type_guards = require("../utils/type-guards.js");
|
|
29
31
|
var import_browser_context_controller = require("./browser-context-controller.js");
|
|
30
32
|
var import_browser_controller = require("./browser-controller.js");
|
|
31
33
|
var import_module = require("./module.js");
|
|
@@ -84,7 +86,9 @@ let BrowserService = class BrowserService2 {
|
|
|
84
86
|
locale: mergedContextOptions.locale,
|
|
85
87
|
viewport: mergedContextOptions.viewport,
|
|
86
88
|
proxy: mergedContextOptions.proxy,
|
|
87
|
-
|
|
89
|
+
userAgent: mergedContextOptions.userAgent,
|
|
90
|
+
colorScheme: mergedContextOptions.colorScheme,
|
|
91
|
+
extraHTTPHeaders: (0, import_type_guards.isDefined)(mergedContextOptions.extraHttpHeaders) ? (0, import_object.filterUndefinedFromRecord)(mergedContextOptions.extraHttpHeaders) : void 0
|
|
88
92
|
});
|
|
89
93
|
this.persistentBrowserContexts.add(context);
|
|
90
94
|
context.once("close", () => this.persistentBrowserContexts.delete(context));
|
package/browser/module.d.ts
CHANGED
package/browser/module.js
CHANGED
|
@@ -34,8 +34,10 @@ const browserTypes = {
|
|
|
34
34
|
webkit: import_playwright.webkit
|
|
35
35
|
};
|
|
36
36
|
function configureBrowser(options) {
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
if ((0, import_type_guards.isDefined)(options.browsers)) {
|
|
38
|
+
const filtered = (0, import_object.filterUndefinedObjectProperties)(options.browsers);
|
|
39
|
+
(0, import_object.copyObjectProperties)(filtered, browserTypes);
|
|
40
|
+
}
|
|
39
41
|
if ((0, import_type_guards.isDefined)(options.options)) {
|
|
40
42
|
import_container.container.register(import_browser_service.BrowserServiceOptions, { useValue: options.options });
|
|
41
43
|
}
|
|
@@ -22,6 +22,7 @@ __export(page_controller_exports, {
|
|
|
22
22
|
});
|
|
23
23
|
module.exports = __toCommonJS(page_controller_exports);
|
|
24
24
|
var import_disposable = require("../disposable/disposable.js");
|
|
25
|
+
var import_object = require("../utils/object/object.js");
|
|
25
26
|
var import_readable_stream_from_promise = require("../utils/stream/readable-stream-from-promise.js");
|
|
26
27
|
var import_timing = require("../utils/timing.js");
|
|
27
28
|
var import_type_guards = require("../utils/type-guards.js");
|
|
@@ -44,7 +45,8 @@ class PageController extends import_document_controller.DocumentController {
|
|
|
44
45
|
await this.page.close();
|
|
45
46
|
}
|
|
46
47
|
async setExtraHttpHeaders(headers) {
|
|
47
|
-
|
|
48
|
+
const filtered = (0, import_object.filterUndefinedFromRecord)(headers);
|
|
49
|
+
await this.page.setExtraHTTPHeaders(filtered);
|
|
48
50
|
}
|
|
49
51
|
async waitForClose() {
|
|
50
52
|
return new Promise((resolve) => {
|
package/browser/utils.js
CHANGED
|
@@ -26,7 +26,14 @@ var import_object = require("../utils/object/object.js");
|
|
|
26
26
|
function getLaunchOptions(options) {
|
|
27
27
|
const { windowSize, browserArguments, headless } = options;
|
|
28
28
|
const args = [`--window-size=${windowSize?.width ?? 1e3},${windowSize?.height ?? 1e3}`, ...browserArguments ?? []];
|
|
29
|
-
|
|
29
|
+
if (options.headless == "new") {
|
|
30
|
+
args.push("--headless=new");
|
|
31
|
+
}
|
|
32
|
+
return {
|
|
33
|
+
ignoreDefaultArgs: options.headless == "new" ? ["--headless"] : void 0,
|
|
34
|
+
headless: headless != false,
|
|
35
|
+
args
|
|
36
|
+
};
|
|
30
37
|
}
|
|
31
38
|
function mergeNewBrowserContextOptions(a, b, c) {
|
|
32
39
|
const mergedExtraHttpHeaders = { ...a?.extraHttpHeaders, ...b?.extraHttpHeaders, ...c?.extraHttpHeaders };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tstdl/base",
|
|
3
|
-
"version": "0.84.
|
|
3
|
+
"version": "0.84.10",
|
|
4
4
|
"author": "Patrick Hein",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
@@ -20,7 +20,6 @@
|
|
|
20
20
|
"tsc-alias:watch": "tsc-alias --watch"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@angular/core": "^16.0.0",
|
|
24
23
|
"luxon": "^3.3",
|
|
25
24
|
"reflect-metadata": "^0.1",
|
|
26
25
|
"rxjs": "^7.8",
|
package/utils/object/object.d.ts
CHANGED
|
@@ -19,6 +19,7 @@ export declare function mapObjectValuesAsync<T extends ObjectLiteral, V>(object:
|
|
|
19
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>;
|
|
20
20
|
export declare function filterObject<T extends ObjectLiteral>(object: T, predicate: (value: T[keyof T], key: keyof T) => boolean): Partial<T>;
|
|
21
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 filterUndefinedFromRecord<T extends Record>(record: T): T extends Record<infer K, infer V> ? Record<K, Exclude<V, undefined>> : never;
|
|
22
23
|
export declare function filterUndefinedObjectProperties<T extends ObjectLiteral>(object: T): {
|
|
23
24
|
[P in keyof T]?: IsEqual<T[P], undefined> extends true ? never : Exclude<T[P], undefined>;
|
|
24
25
|
};
|
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
|
+
filterUndefinedFromRecord: () => filterUndefinedFromRecord,
|
|
25
26
|
filterUndefinedObjectProperties: () => filterUndefinedObjectProperties,
|
|
26
27
|
fromEntries: () => fromEntries,
|
|
27
28
|
getGetter: () => getGetter,
|
|
@@ -79,6 +80,9 @@ async function filterObjectAsync(object, predicate) {
|
|
|
79
80
|
const mappedEntries = await (0, import_to_array.toArrayAsync)((0, import_filter.filterAsync)(entries, async ([key, value]) => predicate(value, key)));
|
|
80
81
|
return Object.fromEntries(mappedEntries);
|
|
81
82
|
}
|
|
83
|
+
function filterUndefinedFromRecord(record) {
|
|
84
|
+
return filterObject(record, import_type_guards.isDefined);
|
|
85
|
+
}
|
|
82
86
|
function filterUndefinedObjectProperties(object) {
|
|
83
87
|
return filterObject(object, import_type_guards.isDefined);
|
|
84
88
|
}
|