@tstdl/base 0.84.32 → 0.84.34

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.
@@ -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 { Logger } from '../logger/logger.js';
6
7
  import type { Record } from '../types.js';
7
8
  import type { Opaque } from 'type-fest';
8
9
  import type { NewBrowserContextOptions } from './browser-controller.js';
@@ -30,4 +31,5 @@ export declare class BrowserContextController implements AsyncDisposable, Inject
30
31
  newPage(options?: NewPageOptions): Promise<PageController>;
31
32
  waitForNoPages(): Promise<void>;
32
33
  waitForClose(): Promise<void>;
34
+ attachLogger(logger: Logger): void;
33
35
  }
@@ -28,6 +28,7 @@ var import_object = require("../utils/object/object.js");
28
28
  var import_type_guards = require("../utils/type-guards.js");
29
29
  var import_browser_controller = require("./browser-controller.js");
30
30
  var import_page_controller = require("./page-controller.js");
31
+ var import_utils = require("./utils.js");
31
32
  var __decorate = function(decorators, target, key, desc) {
32
33
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
33
34
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
@@ -89,6 +90,9 @@ let BrowserContextController = class BrowserContextController2 {
89
90
  async waitForClose() {
90
91
  return new Promise((resolve) => this.context.once("close", () => resolve()));
91
92
  }
93
+ attachLogger(logger) {
94
+ (0, import_utils.attachLogger)(this.context, logger);
95
+ }
92
96
  };
93
97
  BrowserContextController = __decorate([
94
98
  (0, import_decorators.injectable)({
@@ -1,6 +1,7 @@
1
1
  import type { Page } from 'playwright';
2
2
  import type { AsyncDisposable } from '../disposable/disposable.js';
3
3
  import { disposeAsync } from '../disposable/disposable.js';
4
+ import type { Logger } from '../logger/logger.js';
4
5
  import type { DocumentControllerOptions } from './document-controller.js';
5
6
  import { DocumentController } from './document-controller.js';
6
7
  import type { FrameControllerOptions } from './frame-controller.js';
@@ -27,4 +28,5 @@ export declare class PageController extends DocumentController<Page> implements
27
28
  frame(frameSelector: Parameters<Page['frame']>[0]): FrameController;
28
29
  renderPdf(options?: PdfRenderOptions & Abortable): Promise<Uint8Array>;
29
30
  renderPdfStream(options?: PdfRenderOptions & Abortable): ReadableStream<Uint8Array>;
31
+ attachLogger(logger: Logger): void;
30
32
  }
@@ -29,6 +29,7 @@ var import_type_guards = require("../utils/type-guards.js");
29
29
  var import_units = require("../utils/units.js");
30
30
  var import_document_controller = require("./document-controller.js");
31
31
  var import_frame_controller = require("./frame-controller.js");
32
+ var import_utils = require("./utils.js");
32
33
  class PageController extends import_document_controller.DocumentController {
33
34
  /** @deprecated should be avoided */
34
35
  page;
@@ -86,6 +87,9 @@ class PageController extends import_document_controller.DocumentController {
86
87
  });
87
88
  });
88
89
  }
90
+ attachLogger(logger) {
91
+ (0, import_utils.attachLogger)(this.page, logger);
92
+ }
89
93
  }
90
94
  function convertPdfOptions(options) {
91
95
  const margin = (0, import_type_guards.isUndefined)(options.margin) ? void 0 : (0, import_type_guards.isObject)(options.margin) ? options.margin : {
@@ -1,7 +1,12 @@
1
- import type { ElementHandle, LaunchOptions, Locator } from 'playwright';
1
+ import type { Logger } from '../logger/logger.js';
2
+ import type { BrowserContext, ElementHandle, Frame, LaunchOptions, Locator, Page } from 'playwright';
2
3
  import type { NewBrowserContextOptions } from './browser-controller.js';
3
4
  import type { NewBrowserOptions } from './browser.service.js';
4
5
  export declare function getLaunchOptions(options: NewBrowserOptions): LaunchOptions;
5
6
  export declare function mergeNewBrowserContextOptions(a: NewBrowserContextOptions | undefined, b?: NewBrowserContextOptions, c?: NewBrowserContextOptions): NewBrowserContextOptions;
7
+ export declare function attachLogger(loggable: Page | BrowserContext, logger: Logger): void;
6
8
  export declare function isLocator(locatorOrHandle: Locator | ElementHandle): locatorOrHandle is Locator;
7
- export declare function isElementHandle(locatorOrHandle: Locator | ElementHandle): locatorOrHandle is Locator;
9
+ export declare function isElementHandle(locatorOrHandle: Locator | ElementHandle): locatorOrHandle is ElementHandle;
10
+ export declare function isPage(pageOrFrameOrContext: Page | Frame | BrowserContext): pageOrFrameOrContext is Page;
11
+ export declare function isFrame(pageOrFrameOrContext: Page | Frame | BrowserContext): pageOrFrameOrContext is Frame;
12
+ export declare function isBrowserContext(pageOrFrameOrContext: Page | Frame | BrowserContext): pageOrFrameOrContext is BrowserContext;
package/browser/utils.js CHANGED
@@ -18,14 +18,19 @@ 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
+ attachLogger: () => attachLogger,
21
22
  getLaunchOptions: () => getLaunchOptions,
23
+ isBrowserContext: () => isBrowserContext,
22
24
  isElementHandle: () => isElementHandle,
25
+ isFrame: () => isFrame,
23
26
  isLocator: () => isLocator,
27
+ isPage: () => isPage,
24
28
  mergeNewBrowserContextOptions: () => mergeNewBrowserContextOptions
25
29
  });
26
30
  module.exports = __toCommonJS(utils_exports);
27
31
  var import_object = require("../utils/object/object.js");
28
32
  var import_type_guards = require("../utils/type-guards.js");
33
+ const pageLoggerMap = /* @__PURE__ */ new WeakMap();
29
34
  function getLaunchOptions(options) {
30
35
  const { windowSize, browserArguments, headless } = options;
31
36
  const args = [`--window-size=${windowSize?.width ?? 1e3},${windowSize?.height ?? 1e3}`, ...browserArguments ?? []];
@@ -48,9 +53,64 @@ function mergeNewBrowserContextOptions(a, b, c) {
48
53
  extraHttpHeaders: (0, import_object.objectKeys)(mergedExtraHttpHeaders).length > 0 ? mergedExtraHttpHeaders : void 0
49
54
  };
50
55
  }
56
+ function getPageLogger(page, baseLogger) {
57
+ let pageLogger = pageLoggerMap.get(page);
58
+ if ((0, import_type_guards.isUndefined)(pageLogger)) {
59
+ pageLogger = baseLogger.subModule(crypto.randomUUID().slice(-12));
60
+ pageLoggerMap.set(page, pageLogger);
61
+ }
62
+ return pageLogger;
63
+ }
64
+ function attachLogger(loggable, logger) {
65
+ if (isPage(loggable)) {
66
+ loggable.on("close", () => pageLoggerMap.delete(loggable));
67
+ loggable.on("pageerror", (error) => logger.error(error));
68
+ }
69
+ loggable.on("console", (consoleMessage) => {
70
+ const page = consoleMessage.page();
71
+ const pageLogger = (0, import_type_guards.isNull)(page) ? logger : getPageLogger(page, logger);
72
+ const rawUrl = consoleMessage.page()?.url();
73
+ const parsedUrl = (0, import_type_guards.isString)(rawUrl) && rawUrl.length > 0 ? new URL(rawUrl) : rawUrl;
74
+ const url = (0, import_type_guards.isString)(parsedUrl) ? parsedUrl : `${parsedUrl?.protocol.startsWith("http") == true ? "" : parsedUrl?.protocol}${parsedUrl?.host}${parsedUrl?.pathname}`;
75
+ const location = consoleMessage.location();
76
+ const rawLocationText = location.lineNumber == 0 ? location.url : `${location.url}:${location.lineNumber}:${location.columnNumber}`;
77
+ const locationText = rawLocationText.length == 0 ? void 0 : rawLocationText;
78
+ const additions = Object.entries({ location: locationText }).filter(([_, value]) => (0, import_type_guards.isDefined)(value)).map(([key, value]) => `${key}: ${value}`).join(", ");
79
+ const message = `${url}: ${consoleMessage.text()}${additions.length > 0 ? ` (${additions})` : ""}`;
80
+ switch (consoleMessage.type()) {
81
+ case "debug":
82
+ pageLogger.debug(message);
83
+ break;
84
+ case "error":
85
+ pageLogger.error(message);
86
+ break;
87
+ case "warning":
88
+ pageLogger.warn(message);
89
+ break;
90
+ case "trace":
91
+ pageLogger.trace(message);
92
+ break;
93
+ case "clear":
94
+ break;
95
+ case "info":
96
+ default:
97
+ pageLogger.info(message);
98
+ break;
99
+ }
100
+ });
101
+ }
51
102
  function isLocator(locatorOrHandle) {
52
- return (0, import_type_guards.isFunction)(locatorOrHandle.count);
103
+ return locatorOrHandle.constructor.name == "Locator";
53
104
  }
54
105
  function isElementHandle(locatorOrHandle) {
55
- return (0, import_type_guards.isFunction)(locatorOrHandle.asElement);
106
+ return locatorOrHandle.constructor.name == "ElementHandle";
107
+ }
108
+ function isPage(pageOrFrameOrContext) {
109
+ return pageOrFrameOrContext.constructor.name == "Page";
110
+ }
111
+ function isFrame(pageOrFrameOrContext) {
112
+ return pageOrFrameOrContext.constructor.name == "Frame";
113
+ }
114
+ function isBrowserContext(pageOrFrameOrContext) {
115
+ return pageOrFrameOrContext.constructor.name == "BrowserContext";
56
116
  }
@@ -3,12 +3,15 @@ var import_node_fs = require("node:fs");
3
3
  var import_application = require("../../application/index.js");
4
4
  var import_browser_service = require("../../browser/browser.service.js");
5
5
  var import_container = require("../../container/container.js");
6
+ var import_logger = require("../../logger/logger.js");
6
7
  var import_timing = require("../../utils/timing.js");
7
8
  async function main() {
8
9
  const browserService = await import_container.container.resolveAsync(import_browser_service.BrowserService);
9
10
  const browser = await browserService.newBrowser({ headless: false });
10
11
  const context = await browser.newContext();
11
12
  const page = await context.newPage();
13
+ const logger = import_container.container.resolve(import_logger.Logger).subModule("BROWSER");
14
+ page.attachLogger(logger);
12
15
  await page.navigate("https://google.com");
13
16
  await page.getBySelector("//div[text() = 'Alle ablehnen']").click();
14
17
  await (0, import_timing.timeout)(1e3);
@@ -1,10 +1,11 @@
1
1
  import { LogLevel } from '../level.js';
2
- import type { LogErrorOptions } from '../logger.js';
2
+ import type { LogErrorOptions, LoggerForkOptions } from '../logger.js';
3
3
  import { Logger } from '../logger.js';
4
4
  export declare class ConsoleLogger extends Logger {
5
5
  private readonly entryPrefix;
6
6
  constructor(level: LogLevel, module?: string | string[], prefix?: string);
7
- fork(subModule: string): ConsoleLogger;
7
+ fork(options: LoggerForkOptions): ConsoleLogger;
8
+ subModule(subModule: string): ConsoleLogger;
8
9
  prefix(prefix: string): ConsoleLogger;
9
10
  protected log(level: LogLevel, entryOrError: string | Error, errorOptions?: LogErrorOptions): void;
10
11
  }
@@ -57,7 +57,12 @@ let ConsoleLogger = ConsoleLogger_1 = class ConsoleLogger2 extends import_logger
57
57
  const modulePrefix = (0, import_type_guards.isDefined)(this.module) ? this.module.map((m) => `[${m}]`).join(" ") : "";
58
58
  this.entryPrefix = `${modulePrefix}${modulePrefix.length > 0 ? " " : ""}${this.logPrefix}`;
59
59
  }
60
- fork(subModule) {
60
+ fork(options) {
61
+ const level = options.level ?? this.level;
62
+ const module2 = (0, import_type_guards.isDefined)(options.subModule) ? [...this.module ?? [], options.subModule] : this.module;
63
+ return new ConsoleLogger_1(level, module2, options.prefix);
64
+ }
65
+ subModule(subModule) {
61
66
  return new ConsoleLogger_1(this.level, [...this.module ?? [], subModule]);
62
67
  }
63
68
  prefix(prefix) {
@@ -1,5 +1,4 @@
1
- import type { Injectable } from '../container/index.js';
2
- import type { resolveArgumentType } from '../container/index.js';
1
+ import type { Injectable, resolveArgumentType } from '../container/index.js';
3
2
  import { LogLevel } from './level.js';
4
3
  export type LogEntry = string;
5
4
  export type LogEntryProvider = () => LogEntry;
@@ -15,6 +14,11 @@ export type LoggerArgument = string | undefined | {
15
14
  module?: string | string[];
16
15
  prefix?: string;
17
16
  };
17
+ export type LoggerForkOptions = {
18
+ subModule?: string;
19
+ prefix?: string;
20
+ level?: LogLevel;
21
+ };
18
22
  export declare abstract class Logger implements Injectable<LoggerArgument> {
19
23
  readonly level: LogLevel;
20
24
  readonly module?: string[];
@@ -29,7 +33,8 @@ export declare abstract class Logger implements Injectable<LoggerArgument> {
29
33
  debug(entry: LogEntryOrProvider): void;
30
34
  trace(entry: LogEntryOrProvider): void;
31
35
  private _log;
32
- abstract fork(subModule: string): Logger;
36
+ abstract fork(options: LoggerForkOptions): Logger;
37
+ abstract subModule(subModule: string): Logger;
33
38
  abstract prefix(prefix: string): Logger;
34
39
  protected abstract log(level: LogLevel, entry: LogEntry | Error, errorOptions?: LogErrorOptions): void;
35
40
  }
@@ -2,6 +2,7 @@ import { Logger } from '../logger.js';
2
2
  export declare class NoopLogger extends Logger {
3
3
  constructor();
4
4
  fork(): Logger;
5
+ subModule(): Logger;
5
6
  prefix(): Logger;
6
7
  protected log(): void;
7
8
  }
@@ -31,6 +31,9 @@ class NoopLogger extends import_logger.Logger {
31
31
  fork() {
32
32
  return this;
33
33
  }
34
+ subModule() {
35
+ return this;
36
+ }
34
37
  prefix() {
35
38
  return this;
36
39
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tstdl/base",
3
- "version": "0.84.32",
3
+ "version": "0.84.34",
4
4
  "author": "Patrick Hein",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -4,12 +4,26 @@ import { BrowserController } from '../browser/browser-controller.js';
4
4
  import { PdfRenderOptions } from '../browser/pdf-options.js';
5
5
  import type { Injectable } from '../container/index.js';
6
6
  import { resolveArgumentType } from '../container/index.js';
7
+ import { LogLevel } from '../logger/level.js';
8
+ import { Logger } from '../logger/logger.js';
7
9
  import type { TemplateField } from '../templates/index.js';
8
10
  import { Template, TemplateService } from '../templates/index.js';
9
11
  export declare class PdfServiceRenderOptions extends PdfRenderOptions {
10
12
  browserContext?: BrowserContextController;
11
13
  locale?: string;
14
+ /**
15
+ * @default true
16
+ */
12
17
  waitForNetworkIdle?: boolean;
18
+ /**
19
+ * Delay pdf creation to ensure content has finished rendering
20
+ * @default 50
21
+ */
22
+ delay?: number;
23
+ /**
24
+ * @default false
25
+ */
26
+ log?: boolean | LogLevel;
13
27
  }
14
28
  export type PdfTemplateOptions = PdfRenderOptions;
15
29
  export declare class PdfTemplate<Context extends object = any> extends Template<{
@@ -28,9 +42,10 @@ export type PdfServiceArgument = PdfServiceOptions & {
28
42
  export declare class PdfService implements Injectable<PdfServiceArgument> {
29
43
  private readonly templateService;
30
44
  private readonly browserController;
45
+ private readonly logger;
31
46
  private readonly defaultLocale;
32
47
  readonly [resolveArgumentType]: PdfServiceArgument;
33
- constructor(templateService: TemplateService, browserController: BrowserController, options?: PdfServiceOptions);
48
+ constructor(templateService: TemplateService, browserController: BrowserController, logger: Logger, options?: PdfServiceOptions);
34
49
  /**
35
50
  * Renders HTML to pdf stream
36
51
  * @param html html to render
@@ -28,11 +28,14 @@ var import_browser_context_controller = require("../browser/browser-context-cont
28
28
  var import_browser_controller = require("../browser/browser-controller.js");
29
29
  var import_pdf_options = require("../browser/pdf-options.js");
30
30
  var import_container = require("../container/index.js");
31
+ var import_level = require("../logger/level.js");
32
+ var import_logger = require("../logger/logger.js");
31
33
  var import_schema = require("../schema/index.js");
32
34
  var import_templates = require("../templates/index.js");
33
35
  var import_finalize_stream = require("../utils/stream/finalize-stream.js");
34
36
  var import_readable_stream_from_promise = require("../utils/stream/readable-stream-from-promise.js");
35
37
  var import_stream_reader = require("../utils/stream/stream-reader.js");
38
+ var import_timing = require("../utils/timing.js");
36
39
  var import_type_guards = require("../utils/type-guards.js");
37
40
  var __decorate = function(decorators, target, key, desc) {
38
41
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -56,7 +59,19 @@ var __param = function(paramIndex, decorator) {
56
59
  class PdfServiceRenderOptions extends import_pdf_options.PdfRenderOptions {
57
60
  browserContext;
58
61
  locale;
62
+ /**
63
+ * @default true
64
+ */
59
65
  waitForNetworkIdle;
66
+ /**
67
+ * Delay pdf creation to ensure content has finished rendering
68
+ * @default 50
69
+ */
70
+ delay;
71
+ /**
72
+ * @default false
73
+ */
74
+ log;
60
75
  }
61
76
  __decorate([
62
77
  (0, import_schema.Optional)(),
@@ -70,6 +85,14 @@ __decorate([
70
85
  (0, import_schema.Optional)(),
71
86
  __metadata("design:type", Boolean)
72
87
  ], PdfServiceRenderOptions.prototype, "waitForNetworkIdle", void 0);
88
+ __decorate([
89
+ (0, import_schema.Optional)(),
90
+ __metadata("design:type", Number)
91
+ ], PdfServiceRenderOptions.prototype, "delay", void 0);
92
+ __decorate([
93
+ (0, import_schema.Optional)(),
94
+ __metadata("design:type", Object)
95
+ ], PdfServiceRenderOptions.prototype, "log", void 0);
73
96
  class PdfTemplate extends import_templates.Template {
74
97
  }
75
98
  __decorate([
@@ -80,10 +103,12 @@ const browserArguments = ["--font-render-hinting=none", "--disable-web-security"
80
103
  let PdfService = class PdfService2 {
81
104
  templateService;
82
105
  browserController;
106
+ logger;
83
107
  defaultLocale;
84
- constructor(templateService, browserController, options = {}) {
108
+ constructor(templateService, browserController, logger, options = {}) {
85
109
  this.templateService = templateService;
86
110
  this.browserController = browserController;
111
+ this.logger = logger;
87
112
  this.defaultLocale = options.locale;
88
113
  }
89
114
  /**
@@ -93,7 +118,7 @@ let PdfService = class PdfService2 {
93
118
  * @returns pdf stream
94
119
  */
95
120
  renderHtmlStream(html, options) {
96
- return this.renderStream(async (page) => page.setContent(html, { waitUntil: options?.waitForNetworkIdle == true ? "networkidle" : "load" }), options);
121
+ return this.renderStream(async (page) => page.setContent(html), options);
97
122
  }
98
123
  /**
99
124
  * Renders HTML to pdf
@@ -113,7 +138,7 @@ let PdfService = class PdfService2 {
113
138
  */
114
139
  renderUrlStream(url, options) {
115
140
  return this.renderStream(async (controller) => {
116
- await controller.navigate(url, { waitUntil: options?.waitForNetworkIdle == true ? "networkidle" : "load" });
141
+ await controller.navigate(url);
117
142
  }, options);
118
143
  }
119
144
  /**
@@ -136,7 +161,7 @@ let PdfService = class PdfService2 {
136
161
  renderTemplateStream(keyOrTemplate, templateContext, options) {
137
162
  return this.renderStream(async (page) => {
138
163
  const { fields: { header, body, footer }, options: optionsFromTemplate } = await this.templateService.render(keyOrTemplate, templateContext);
139
- await page.setContent(body, { timeout: options?.timeout, waitUntil: options?.waitForNetworkIdle == true ? "networkidle" : "load" });
164
+ await page.setContent(body);
140
165
  return { ...optionsFromTemplate, headerTemplate: header, footerTemplate: footer };
141
166
  }, options);
142
167
  }
@@ -155,7 +180,16 @@ let PdfService = class PdfService2 {
155
180
  return (0, import_readable_stream_from_promise.readableStreamFromPromise)(async () => {
156
181
  const context = options.browserContext ?? await this.browserController.newContext({ locale: options.locale ?? this.defaultLocale });
157
182
  const page = await context.newPage();
183
+ if ((0, import_type_guards.isDefined)(options.log) && options.log != false) {
184
+ const level = options.log == true ? import_level.LogLevel.Info : options.log;
185
+ const logger = this.logger.fork({ level, subModule: "PAGE" });
186
+ page.attachLogger(logger);
187
+ }
158
188
  const optionsFromHandler = await handler(page);
189
+ if (options.waitForNetworkIdle != false) {
190
+ await page.waitForLoadState("networkidle");
191
+ }
192
+ await (0, import_timing.timeout)(options.delay ?? 50);
159
193
  const pdfStream = page.renderPdfStream({ ...optionsFromHandler, ...options });
160
194
  const close = async () => {
161
195
  if ((0, import_type_guards.isDefined)(options.browserContext)) {
@@ -175,8 +209,14 @@ let PdfService = class PdfService2 {
175
209
  PdfService = __decorate([
176
210
  (0, import_container.singleton)(),
177
211
  __param(1, (0, import_container.forwardArg)((argument) => argument?.browserControllerArgument ?? { browserArguments })),
178
- __param(2, (0, import_container.injectArg)()),
179
- __metadata("design:paramtypes", [import_templates.TemplateService, import_browser_controller.BrowserController, Object])
212
+ __param(2, (0, import_container.resolveArg)("PdfService")),
213
+ __param(3, (0, import_container.injectArg)()),
214
+ __metadata("design:paramtypes", [
215
+ import_templates.TemplateService,
216
+ import_browser_controller.BrowserController,
217
+ import_logger.Logger,
218
+ Object
219
+ ])
180
220
  ], PdfService);
181
221
  function pdfTemplate(name, fields, options) {
182
222
  return {
package/utils/repl.d.ts CHANGED
@@ -1,10 +1,10 @@
1
1
  /// <reference types="node" resolution-mode="require"/>
2
- import * as repl from 'node:repl';
2
+ import type { ReplOptions } from 'node:repl';
3
3
  import type { Record } from '../types.js';
4
4
  /**
5
5
  * Starts an interactive (repl) session (node only)
6
6
  * @param context context to set the repl context to
7
7
  */
8
- export declare function startRepl(options?: repl.ReplOptions & {
8
+ export declare function repl(options?: ReplOptions & {
9
9
  context?: Record<string>;
10
10
  }): Promise<void>;
package/utils/repl.js CHANGED
@@ -1,9 +1,7 @@
1
1
  "use strict";
2
- var __create = Object.create;
3
2
  var __defProp = Object.defineProperty;
4
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
8
6
  var __export = (target, all) => {
9
7
  for (var name in all)
@@ -17,25 +15,17 @@ var __copyProps = (to, from, except, desc) => {
17
15
  }
18
16
  return to;
19
17
  };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
19
  var repl_exports = {};
30
20
  __export(repl_exports, {
31
- startRepl: () => startRepl
21
+ repl: () => repl
32
22
  });
33
23
  module.exports = __toCommonJS(repl_exports);
34
- var repl = __toESM(require("node:repl"), 1);
24
+ var import_node_repl = require("node:repl");
35
25
  var import_object = require("./object/object.js");
36
26
  var import_type_guards = require("./type-guards.js");
37
- async function startRepl(options) {
38
- const replServer = repl.start(options);
27
+ async function repl(options) {
28
+ const replServer = (0, import_node_repl.start)(options);
39
29
  if ((0, import_type_guards.isDefined)(options?.context)) {
40
30
  for (const [key, value] of (0, import_object.objectEntries)(options.context)) {
41
31
  replServer.context[key] = value;
@@ -1,2 +1,3 @@
1
1
  export type ValueOrProvider<T> = T extends () => any ? never : T | (() => T);
2
+ export type ResolvedValueOrProvider<T extends ValueOrProvider<any>> = T extends ValueOrProvider<infer U> ? U : never;
2
3
  export declare function resolveValueOrProvider<T>(valueOrProvider: ValueOrProvider<T>): T;