@tstdl/base 0.84.8 → 0.84.9

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.
@@ -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
- await this.context.setExtraHTTPHeaders(headers);
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
  }
@@ -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
- extraHTTPHeaders: mergedContextOptions.extraHttpHeaders
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));
@@ -1,7 +1,7 @@
1
1
  import type { BrowserType } from 'playwright';
2
2
  import { BrowserServiceOptions } from './browser.service.js';
3
3
  export type BrowserModuleOptions = {
4
- browsers: {
4
+ browsers?: {
5
5
  chromium?: BrowserType;
6
6
  firefox?: BrowserType;
7
7
  webkit?: BrowserType;
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
- const filtered = (0, import_object.filterUndefinedObjectProperties)(options.browsers);
38
- (0, import_object.copyObjectProperties)(filtered, browserTypes);
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
- await this.page.setExtraHTTPHeaders(headers);
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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tstdl/base",
3
- "version": "0.84.8",
3
+ "version": "0.84.9",
4
4
  "author": "Patrick Hein",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -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
  };
@@ -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
  }