@powerlines/core 0.44.1 → 0.44.3

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.
Files changed (37) hide show
  1. package/dist/constants/api.cjs +1 -0
  2. package/dist/constants/commands.cjs +3 -2
  3. package/dist/constants/environments.cjs +1 -0
  4. package/dist/constants/fs.cjs +1 -0
  5. package/dist/constants/hooks.cjs +1 -0
  6. package/dist/constants/index.cjs +34 -34
  7. package/dist/constants/index.mjs +1 -1
  8. package/dist/constants/log-level.cjs +3 -2
  9. package/dist/constants/log-level.d.cts +2 -2
  10. package/dist/constants/log-level.d.mts +2 -2
  11. package/dist/constants/log-level.mjs +2 -2
  12. package/dist/constants/log-level.mjs.map +1 -1
  13. package/dist/constants/meta.cjs +1 -0
  14. package/dist/constants/plugin.cjs +3 -2
  15. package/dist/constants/virtual-modules.cjs +1 -0
  16. package/dist/lib/unplugin/helpers.cjs +2 -2
  17. package/dist/lib/unplugin/module-resolution.cjs +10 -9
  18. package/dist/lib/unplugin/module-resolution.mjs +1 -0
  19. package/dist/lib/unplugin/module-resolution.mjs.map +1 -1
  20. package/dist/lib/unplugin/plugin.cjs +3 -2
  21. package/dist/lib/unplugin/plugin.mjs +1 -0
  22. package/dist/lib/unplugin/plugin.mjs.map +1 -1
  23. package/dist/plugin-utils/helpers.cjs +5 -5
  24. package/dist/plugin-utils/logging.cjs +107 -11
  25. package/dist/plugin-utils/logging.d.cts.map +1 -1
  26. package/dist/plugin-utils/logging.d.mts.map +1 -1
  27. package/dist/plugin-utils/logging.mjs +103 -7
  28. package/dist/plugin-utils/logging.mjs.map +1 -1
  29. package/dist/plugin-utils/paths.cjs +1 -1
  30. package/dist/plugin-utils/paths.mjs +1 -1
  31. package/dist/plugin-utils/paths.mjs.map +1 -1
  32. package/dist/types/logging.d.cts +2 -1
  33. package/dist/types/logging.d.cts.map +1 -1
  34. package/dist/types/logging.d.mts +2 -1
  35. package/dist/types/logging.d.mts.map +1 -1
  36. package/dist/types/logging.mjs.map +1 -1
  37. package/package.json +38 -2
@@ -1,8 +1,8 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
2
  const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
3
+ const require_constants_environments = require('../constants/environments.cjs');
4
+ const require_constants_log_level = require('../constants/log-level.cjs');
3
5
  const require_logging = require('../types/logging.cjs');
4
- const require_environments = require('../constants/environments.cjs');
5
- const require_log_level = require('../constants/log-level.cjs');
6
6
  let _stryke_type_checks_is_set_object = require("@stryke/type-checks/is-set-object");
7
7
  let defu = require("defu");
8
8
  let _stryke_type_checks_is_set_string = require("@stryke/type-checks/is-set-string");
@@ -59,9 +59,9 @@ function resolveLogLevel(logLevel, mode) {
59
59
  babel: "silent"
60
60
  };
61
61
  let defaultLogLevel;
62
- if (mode === "development") defaultLogLevel = require_log_level.DEFAULT_DEVELOPMENT_LOG_LEVEL;
63
- else if (mode === "test") defaultLogLevel = require_log_level.DEFAULT_TEST_LOG_LEVEL;
64
- else defaultLogLevel = require_log_level.DEFAULT_PRODUCTION_LOG_LEVEL;
62
+ if (mode === "development") defaultLogLevel = require_constants_log_level.DEFAULT_DEVELOPMENT_LOG_LEVEL;
63
+ else if (mode === "test") defaultLogLevel = require_constants_log_level.DEFAULT_TEST_LOG_LEVEL;
64
+ else defaultLogLevel = require_constants_log_level.DEFAULT_PRODUCTION_LOG_LEVEL;
65
65
  if ((0, _stryke_type_checks_is_set_string.isSetString)(logLevel)) return {
66
66
  general: logLevel,
67
67
  fs: defaultLogLevel.fs,
@@ -131,7 +131,7 @@ const colorBackground = (text) => {
131
131
  const title = (0, _stryke_string_format_title_case.titleCase)(text);
132
132
  return chalk.default.inverse.hex(getTextColor(title))(` ${title} `);
133
133
  };
134
- const consoleLog = (meta, ...args) => (0, _storm_software_config_tools_logger.getLogFn)((0, _storm_software_config_tools_logger.getLogLevel)(meta.type), { logLevel: "trace" })(`${meta.name ? chalk.default.bold.hex(BRAND_COLOR)((0, _stryke_string_format_kebab_case.kebabCase)(meta.name)) : ""}${meta.command ? chalk.default.hex(BRAND_COLOR)(` (${meta.command})`) : ""}${meta.name ? chalk.default.grey(" > ") : ""}${(meta.source || meta.plugin) && (!meta.name || (0, _stryke_string_format_kebab_case.kebabCase)(meta.source || meta.plugin) !== (0, _stryke_string_format_kebab_case.kebabCase)(meta.name)) ? `${chalk.default.bold.hex(BRAND_COLOR)((0, _stryke_string_format_kebab_case.kebabCase)(meta.source || meta.plugin))}${chalk.default.grey(" > ")}` : ""}${meta.environment && (0, _stryke_string_format_kebab_case.kebabCase)(meta.environment) !== "default" ? `${chalk.default.bold.hex(BRAND_COLOR)((0, _stryke_string_format_kebab_case.kebabCase)(meta.environment))}${chalk.default.grey(" > ")}` : ""}${meta.category && meta.category !== require_logging.LogCategories.GENERAL ? ` ${colorBackground((0, _stryke_string_format_kebab_case.kebabCase)(meta.category))} ` : ""}${args.join(" ")} `.trim());
134
+ const consoleLog = (meta, ...args) => (0, _storm_software_config_tools_logger.getLogFn)((0, _storm_software_config_tools_logger.getLogLevel)(meta.type), { logLevel: "trace" })(`${meta.name ? chalk.default.bold.hex(BRAND_COLOR)((0, _stryke_string_format_kebab_case.kebabCase)(meta.name)) : ""}${meta.command ? chalk.default.hex(BRAND_COLOR)(` (${meta.command})`) : ""}${meta.name ? chalk.default.grey(" > ") : ""}${(meta.source || meta.plugin) && (!meta.name || (0, _stryke_string_format_kebab_case.kebabCase)(meta.source || meta.plugin) !== (0, _stryke_string_format_kebab_case.kebabCase)(meta.name)) ? `${chalk.default.bold.hex(BRAND_COLOR)((0, _stryke_string_format_kebab_case.kebabCase)(meta.source || meta.plugin))}${chalk.default.grey(" > ")}` : ""}${meta.environment && (0, _stryke_string_format_kebab_case.kebabCase)(meta.environment) !== "default" ? `${chalk.default.bold.hex(BRAND_COLOR)((0, _stryke_string_format_kebab_case.kebabCase)(meta.environment))}${chalk.default.grey(" > ")}` : ""}${meta.category && meta.category !== require_logging.LogCategories.GENERAL ? `${colorBackground((0, _stryke_string_format_kebab_case.kebabCase)(meta.category))} ` : ""}${args.join(" ")} `.trim());
135
135
  function isValidLogLevel(logLevel, type) {
136
136
  if (logLevel === require_logging.LogLevels.SILENT) return false;
137
137
  return require_logging.LOG_LEVELS.indexOf(logLevel) >= require_logging.LOG_LEVELS.indexOf(type);
@@ -248,7 +248,7 @@ const withLogger = (logger, secondaryLogger) => {
248
248
  ...secondaryLogger.options,
249
249
  ...logger.options
250
250
  };
251
- return {
251
+ const result = {
252
252
  options,
253
253
  error: validateLogger("error", options.name, options, (message) => {
254
254
  logger.error?.(message);
@@ -271,6 +271,30 @@ const withLogger = (logger, secondaryLogger) => {
271
271
  secondaryLogger.trace?.(message);
272
272
  })
273
273
  };
274
+ result.log = (type, message) => {
275
+ switch (type) {
276
+ case "error":
277
+ result.error(message);
278
+ break;
279
+ case "warn":
280
+ result.warn(message);
281
+ break;
282
+ case "info":
283
+ result.info(message);
284
+ break;
285
+ case "debug":
286
+ result.debug(message);
287
+ break;
288
+ case "trace":
289
+ result.trace(message);
290
+ break;
291
+ case "silent": break;
292
+ default:
293
+ result.info(message);
294
+ break;
295
+ }
296
+ };
297
+ return result;
274
298
  };
275
299
  /**
276
300
  * Create a logging function with a specific name and options.
@@ -280,7 +304,7 @@ const withLogger = (logger, secondaryLogger) => {
280
304
  * @returns A new logger that combines the original logger's options with the custom logger's methods, allowing for customized logging behavior while still maintaining the original logger's configuration.
281
305
  */
282
306
  const withCustomLogger = (logger, customLogger) => {
283
- return {
307
+ const result = {
284
308
  options: logger.options,
285
309
  error: validateCustomLogger("error", logger.options.name, logger.options, logger.error.bind(logger), customLogger.error?.bind(customLogger)),
286
310
  warn: validateCustomLogger("warn", logger.options.name, logger.options, logger.warn.bind(logger), customLogger.warn?.bind(customLogger)),
@@ -288,6 +312,30 @@ const withCustomLogger = (logger, customLogger) => {
288
312
  debug: validateCustomLogger("debug", logger.options.name, logger.options, logger.debug.bind(logger), customLogger.debug?.bind(customLogger)),
289
313
  trace: validateCustomLogger("trace", logger.options.name, logger.options, logger.trace.bind(logger), customLogger.trace?.bind(customLogger))
290
314
  };
315
+ result.log = (type, message) => {
316
+ switch (type) {
317
+ case "error":
318
+ result.error(message);
319
+ break;
320
+ case "warn":
321
+ result.warn(message);
322
+ break;
323
+ case "info":
324
+ result.info(message);
325
+ break;
326
+ case "debug":
327
+ result.debug(message);
328
+ break;
329
+ case "trace":
330
+ result.trace(message);
331
+ break;
332
+ case "silent": break;
333
+ default:
334
+ result.info(message);
335
+ break;
336
+ }
337
+ };
338
+ return result;
291
339
  };
292
340
  const consoleLogger = (type, message) => consoleLog((0, _stryke_type_checks_is_set_string.isSetString)(message) ? {
293
341
  type,
@@ -299,7 +347,7 @@ const consoleLogger = (type, message) => consoleLog((0, _stryke_type_checks_is_s
299
347
  category: require_logging.LogCategories.GENERAL,
300
348
  logId: (0, _stryke_unique_id_uuid.uuid)(),
301
349
  timestamp: Date.now(),
302
- ...message
350
+ ...message.meta
303
351
  }, (0, _stryke_type_checks_is_set_string.isSetString)(message) ? message : message.message);
304
352
  /**
305
353
  * Create a logging function with a specific name and options.
@@ -309,7 +357,7 @@ const consoleLogger = (type, message) => consoleLog((0, _stryke_type_checks_is_s
309
357
  * @returns A logging function.
310
358
  */
311
359
  const createLogger = (name, options, callback = consoleLogger) => {
312
- return {
360
+ const result = {
313
361
  options: {
314
362
  ...options,
315
363
  name
@@ -335,6 +383,30 @@ const createLogger = (name, options, callback = consoleLogger) => {
335
383
  name
336
384
  }, (message) => callback("trace", message))
337
385
  };
386
+ result.log = (type, message) => {
387
+ switch (type) {
388
+ case "error":
389
+ result.error(message);
390
+ break;
391
+ case "warn":
392
+ result.warn(message);
393
+ break;
394
+ case "info":
395
+ result.info(message);
396
+ break;
397
+ case "debug":
398
+ result.debug(message);
399
+ break;
400
+ case "trace":
401
+ result.trace(message);
402
+ break;
403
+ case "silent": break;
404
+ default:
405
+ result.info(message);
406
+ break;
407
+ }
408
+ };
409
+ return result;
338
410
  };
339
411
  /**
340
412
  * Extend a logging function with a specific name, adding a colored badge to the log output.
@@ -364,7 +436,7 @@ const extendLogger = (logger, options) => {
364
436
  ...logger.options,
365
437
  ...options
366
438
  };
367
- return {
439
+ const result = {
368
440
  options: opts,
369
441
  error: validateLogger("error", opts.name, opts, logger.error.bind(logger)),
370
442
  warn: validateLogger("warn", opts.name, opts, logger.warn.bind(logger)),
@@ -372,6 +444,30 @@ const extendLogger = (logger, options) => {
372
444
  debug: validateLogger("debug", opts.name, opts, logger.debug.bind(logger)),
373
445
  trace: validateLogger("trace", opts.name, opts, logger.trace.bind(logger))
374
446
  };
447
+ result.log = (type, message) => {
448
+ switch (type) {
449
+ case "error":
450
+ result.error(message);
451
+ break;
452
+ case "warn":
453
+ result.warn(message);
454
+ break;
455
+ case "info":
456
+ result.info(message);
457
+ break;
458
+ case "debug":
459
+ result.debug(message);
460
+ break;
461
+ case "trace":
462
+ result.trace(message);
463
+ break;
464
+ case "silent": break;
465
+ default:
466
+ result.info(message);
467
+ break;
468
+ }
469
+ };
470
+ return result;
375
471
  };
376
472
 
377
473
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"logging.d.cts","names":[],"sources":["../../src/plugin-utils/logging.ts"],"mappings":";;;;;;AA2DA;;;;;iBAAgB,SAAA,CAAU,QAAA;;;;;AAiC1B;;iBAzBgB,SAAA,CAAU,OAAA,EAAS,iBAAA;;;;;;;;iBAyBnB,eAAA,CACd,QAAA,GAAW,kBAAA,EACX,IAAA,GAAO,IAAA,GACN,sBAAA;;;;;AA2FH;;cAAa,YAAA,GAAgB,IAAA;;;AAiB7B;;;;cAAa,SAAA,GAAa,IAAA;AAY1B;;;;;AAMA;AANA,cAAa,eAAA,GAAmB,IAAA;AAAA,cAMnB,UAAA,GAAc,IAAA,EAAM,OAAA,KAAY,IAAA;AAAA,iBA2B7B,eAAA,CAAgB,QAAA,EAAU,QAAA,EAAU,IAAA,EAAM,QAAA;AAAA,iBAQ1C,qBAAA,CACd,IAAA,EAAM,QAAA,EACN,QAAA,EAAU,sBAAA,EACV,QAAA,GAAU,WAAA;;;;;AAXZ;;;cAuBa,WAAA,GAAe,IAAA,UAAc,OAAA,EAAS,YAAA,KAAe,KAAA;;;;;;;AAflE;cAoJa,UAAA,GAAc,MAAA,EAAQ,MAAA,EAAQ,eAAA,EAAiB,MAAA,KAAS,MAAA;;;;;;;;cA4DxD,gBAAA,GACX,MAAA,EAAQ,MAAA,EACR,YAAA,EAAc,YAAA,KACb,MAAA;AAAA,cAyCU,aAAA,GACX,IAAA,EAAM,QAAA,EACN,OAAA,WAAkB,aAAA;;;;;;AA/OpB;;cA0Qa,YAAA,GACX,IAAA,UACA,OAAA,EAAS,aAAA,EACT,QAAA,IACE,IAAA,EAAM,QAAA,EACN,OAAA,WAAkB,aAAA,cAEnB,MAAA;;;;;;;;cA4BU,WAAA,GAAe,KAAA,EAAO,KAAA,EAAO,OAAA,EAAS,YAAA,KAAe,KAAA;;;;;;;;cAsBrD,YAAA,GACX,MAAA,EAAQ,MAAA,EACR,OAAA,EAAS,aAAA,KACR,MAAA"}
1
+ {"version":3,"file":"logging.d.cts","names":[],"sources":["../../src/plugin-utils/logging.ts"],"mappings":";;;;;;AA2DA;;;;;iBAAgB,SAAA,CAAU,QAAA;;;;;AAiC1B;;iBAzBgB,SAAA,CAAU,OAAA,EAAS,iBAAA;;;;;;;;iBAyBnB,eAAA,CACd,QAAA,GAAW,kBAAA,EACX,IAAA,GAAO,IAAA,GACN,sBAAA;;;;;AA2FH;;cAAa,YAAA,GAAgB,IAAA;;;AAiB7B;;;;cAAa,SAAA,GAAa,IAAA;AAY1B;;;;;AAMA;AANA,cAAa,eAAA,GAAmB,IAAA;AAAA,cAMnB,UAAA,GAAc,IAAA,EAAM,OAAA,KAAY,IAAA;AAAA,iBA2B7B,eAAA,CAAgB,QAAA,EAAU,QAAA,EAAU,IAAA,EAAM,QAAA;AAAA,iBAQ1C,qBAAA,CACd,IAAA,EAAM,QAAA,EACN,QAAA,EAAU,sBAAA,EACV,QAAA,GAAU,WAAA;;;;;AAXZ;;;cAuBa,WAAA,GAAe,IAAA,UAAc,OAAA,EAAS,YAAA,KAAe,KAAA;;;;;;;AAflE;cAoJa,UAAA,GAAc,MAAA,EAAQ,MAAA,EAAQ,eAAA,EAAiB,MAAA,KAAS,MAAA;;;;;;;;cAuFxD,gBAAA,GACX,MAAA,EAAQ,MAAA,EACR,YAAA,EAAc,YAAA,KACb,MAAA;AAAA,cAoEU,aAAA,GACX,IAAA,EAAM,QAAA,EACN,OAAA,WAAkB,aAAA;;;;;;AArSpB;;cAgUa,YAAA,GACX,IAAA,UACA,OAAA,EAAS,aAAA,EACT,QAAA,IACE,IAAA,EAAM,QAAA,EACN,OAAA,WAAkB,aAAA,cAEnB,MAAA;;;;;;;;cAuDU,WAAA,GAAe,KAAA,EAAO,KAAA,EAAO,OAAA,EAAS,YAAA,KAAe,KAAA;;;;;;;;cAsBrD,YAAA,GACX,MAAA,EAAQ,MAAA,EACR,OAAA,EAAS,aAAA,KACR,MAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"logging.d.mts","names":[],"sources":["../../src/plugin-utils/logging.ts"],"mappings":";;;;;;AA2DA;;;;;iBAAgB,SAAA,CAAU,QAAA;;;;;AAiC1B;;iBAzBgB,SAAA,CAAU,OAAA,EAAS,iBAAA;;;;;;;;iBAyBnB,eAAA,CACd,QAAA,GAAW,kBAAA,EACX,IAAA,GAAO,IAAA,GACN,sBAAA;;;;;AA2FH;;cAAa,YAAA,GAAgB,IAAA;;;AAiB7B;;;;cAAa,SAAA,GAAa,IAAA;AAY1B;;;;;AAMA;AANA,cAAa,eAAA,GAAmB,IAAA;AAAA,cAMnB,UAAA,GAAc,IAAA,EAAM,OAAA,KAAY,IAAA;AAAA,iBA2B7B,eAAA,CAAgB,QAAA,EAAU,QAAA,EAAU,IAAA,EAAM,QAAA;AAAA,iBAQ1C,qBAAA,CACd,IAAA,EAAM,QAAA,EACN,QAAA,EAAU,sBAAA,EACV,QAAA,GAAU,WAAA;;;;;AAXZ;;;cAuBa,WAAA,GAAe,IAAA,UAAc,OAAA,EAAS,YAAA,KAAe,KAAA;;;;;;;AAflE;cAoJa,UAAA,GAAc,MAAA,EAAQ,MAAA,EAAQ,eAAA,EAAiB,MAAA,KAAS,MAAA;;;;;;;;cA4DxD,gBAAA,GACX,MAAA,EAAQ,MAAA,EACR,YAAA,EAAc,YAAA,KACb,MAAA;AAAA,cAyCU,aAAA,GACX,IAAA,EAAM,QAAA,EACN,OAAA,WAAkB,aAAA;;;;;;AA/OpB;;cA0Qa,YAAA,GACX,IAAA,UACA,OAAA,EAAS,aAAA,EACT,QAAA,IACE,IAAA,EAAM,QAAA,EACN,OAAA,WAAkB,aAAA,cAEnB,MAAA;;;;;;;;cA4BU,WAAA,GAAe,KAAA,EAAO,KAAA,EAAO,OAAA,EAAS,YAAA,KAAe,KAAA;;;;;;;;cAsBrD,YAAA,GACX,MAAA,EAAQ,MAAA,EACR,OAAA,EAAS,aAAA,KACR,MAAA"}
1
+ {"version":3,"file":"logging.d.mts","names":[],"sources":["../../src/plugin-utils/logging.ts"],"mappings":";;;;;;AA2DA;;;;;iBAAgB,SAAA,CAAU,QAAA;;;;;AAiC1B;;iBAzBgB,SAAA,CAAU,OAAA,EAAS,iBAAA;;;;;;;;iBAyBnB,eAAA,CACd,QAAA,GAAW,kBAAA,EACX,IAAA,GAAO,IAAA,GACN,sBAAA;;;;;AA2FH;;cAAa,YAAA,GAAgB,IAAA;;;AAiB7B;;;;cAAa,SAAA,GAAa,IAAA;AAY1B;;;;;AAMA;AANA,cAAa,eAAA,GAAmB,IAAA;AAAA,cAMnB,UAAA,GAAc,IAAA,EAAM,OAAA,KAAY,IAAA;AAAA,iBA2B7B,eAAA,CAAgB,QAAA,EAAU,QAAA,EAAU,IAAA,EAAM,QAAA;AAAA,iBAQ1C,qBAAA,CACd,IAAA,EAAM,QAAA,EACN,QAAA,EAAU,sBAAA,EACV,QAAA,GAAU,WAAA;;;;;AAXZ;;;cAuBa,WAAA,GAAe,IAAA,UAAc,OAAA,EAAS,YAAA,KAAe,KAAA;;;;;;;AAflE;cAoJa,UAAA,GAAc,MAAA,EAAQ,MAAA,EAAQ,eAAA,EAAiB,MAAA,KAAS,MAAA;;;;;;;;cAuFxD,gBAAA,GACX,MAAA,EAAQ,MAAA,EACR,YAAA,EAAc,YAAA,KACb,MAAA;AAAA,cAoEU,aAAA,GACX,IAAA,EAAM,QAAA,EACN,OAAA,WAAkB,aAAA;;;;;;AArSpB;;cAgUa,YAAA,GACX,IAAA,UACA,OAAA,EAAS,aAAA,EACT,QAAA,IACE,IAAA,EAAM,QAAA,EACN,OAAA,WAAkB,aAAA,cAEnB,MAAA;;;;;;;;cAuDU,WAAA,GAAe,KAAA,EAAO,KAAA,EAAO,OAAA,EAAS,YAAA,KAAe,KAAA;;;;;;;;cAsBrD,YAAA,GACX,MAAA,EAAQ,MAAA,EACR,OAAA,EAAS,aAAA,KACR,MAAA"}
@@ -1,6 +1,6 @@
1
- import { LOG_LEVELS, LogCategories, LogLevels } from "../types/logging.mjs";
2
1
  import { DEFAULT_ENVIRONMENT } from "../constants/environments.mjs";
3
2
  import { DEFAULT_DEVELOPMENT_LOG_LEVEL, DEFAULT_PRODUCTION_LOG_LEVEL, DEFAULT_TEST_LOG_LEVEL } from "../constants/log-level.mjs";
3
+ import { LOG_LEVELS, LogCategories, LogLevels } from "../types/logging.mjs";
4
4
  import { isSetObject } from "@stryke/type-checks/is-set-object";
5
5
  import { defu as defu$1 } from "defu";
6
6
  import { isSetString } from "@stryke/type-checks/is-set-string";
@@ -128,7 +128,7 @@ const colorBackground = (text) => {
128
128
  const title = titleCase(text);
129
129
  return chalk.inverse.hex(getTextColor(title))(` ${title} `);
130
130
  };
131
- const consoleLog = (meta, ...args) => getLogFn(getLogLevel(meta.type), { logLevel: "trace" })(`${meta.name ? chalk.bold.hex(BRAND_COLOR)(kebabCase(meta.name)) : ""}${meta.command ? chalk.hex(BRAND_COLOR)(` (${meta.command})`) : ""}${meta.name ? chalk.grey(" > ") : ""}${(meta.source || meta.plugin) && (!meta.name || kebabCase(meta.source || meta.plugin) !== kebabCase(meta.name)) ? `${chalk.bold.hex(BRAND_COLOR)(kebabCase(meta.source || meta.plugin))}${chalk.grey(" > ")}` : ""}${meta.environment && kebabCase(meta.environment) !== "default" ? `${chalk.bold.hex(BRAND_COLOR)(kebabCase(meta.environment))}${chalk.grey(" > ")}` : ""}${meta.category && meta.category !== LogCategories.GENERAL ? ` ${colorBackground(kebabCase(meta.category))} ` : ""}${args.join(" ")} `.trim());
131
+ const consoleLog = (meta, ...args) => getLogFn(getLogLevel(meta.type), { logLevel: "trace" })(`${meta.name ? chalk.bold.hex(BRAND_COLOR)(kebabCase(meta.name)) : ""}${meta.command ? chalk.hex(BRAND_COLOR)(` (${meta.command})`) : ""}${meta.name ? chalk.grey(" > ") : ""}${(meta.source || meta.plugin) && (!meta.name || kebabCase(meta.source || meta.plugin) !== kebabCase(meta.name)) ? `${chalk.bold.hex(BRAND_COLOR)(kebabCase(meta.source || meta.plugin))}${chalk.grey(" > ")}` : ""}${meta.environment && kebabCase(meta.environment) !== "default" ? `${chalk.bold.hex(BRAND_COLOR)(kebabCase(meta.environment))}${chalk.grey(" > ")}` : ""}${meta.category && meta.category !== LogCategories.GENERAL ? `${colorBackground(kebabCase(meta.category))} ` : ""}${args.join(" ")} `.trim());
132
132
  function isValidLogLevel(logLevel, type) {
133
133
  if (logLevel === LogLevels.SILENT) return false;
134
134
  return LOG_LEVELS.indexOf(logLevel) >= LOG_LEVELS.indexOf(type);
@@ -245,7 +245,7 @@ const withLogger = (logger, secondaryLogger) => {
245
245
  ...secondaryLogger.options,
246
246
  ...logger.options
247
247
  };
248
- return {
248
+ const result = {
249
249
  options,
250
250
  error: validateLogger("error", options.name, options, (message) => {
251
251
  logger.error?.(message);
@@ -268,6 +268,30 @@ const withLogger = (logger, secondaryLogger) => {
268
268
  secondaryLogger.trace?.(message);
269
269
  })
270
270
  };
271
+ result.log = (type, message) => {
272
+ switch (type) {
273
+ case "error":
274
+ result.error(message);
275
+ break;
276
+ case "warn":
277
+ result.warn(message);
278
+ break;
279
+ case "info":
280
+ result.info(message);
281
+ break;
282
+ case "debug":
283
+ result.debug(message);
284
+ break;
285
+ case "trace":
286
+ result.trace(message);
287
+ break;
288
+ case "silent": break;
289
+ default:
290
+ result.info(message);
291
+ break;
292
+ }
293
+ };
294
+ return result;
271
295
  };
272
296
  /**
273
297
  * Create a logging function with a specific name and options.
@@ -277,7 +301,7 @@ const withLogger = (logger, secondaryLogger) => {
277
301
  * @returns A new logger that combines the original logger's options with the custom logger's methods, allowing for customized logging behavior while still maintaining the original logger's configuration.
278
302
  */
279
303
  const withCustomLogger = (logger, customLogger) => {
280
- return {
304
+ const result = {
281
305
  options: logger.options,
282
306
  error: validateCustomLogger("error", logger.options.name, logger.options, logger.error.bind(logger), customLogger.error?.bind(customLogger)),
283
307
  warn: validateCustomLogger("warn", logger.options.name, logger.options, logger.warn.bind(logger), customLogger.warn?.bind(customLogger)),
@@ -285,6 +309,30 @@ const withCustomLogger = (logger, customLogger) => {
285
309
  debug: validateCustomLogger("debug", logger.options.name, logger.options, logger.debug.bind(logger), customLogger.debug?.bind(customLogger)),
286
310
  trace: validateCustomLogger("trace", logger.options.name, logger.options, logger.trace.bind(logger), customLogger.trace?.bind(customLogger))
287
311
  };
312
+ result.log = (type, message) => {
313
+ switch (type) {
314
+ case "error":
315
+ result.error(message);
316
+ break;
317
+ case "warn":
318
+ result.warn(message);
319
+ break;
320
+ case "info":
321
+ result.info(message);
322
+ break;
323
+ case "debug":
324
+ result.debug(message);
325
+ break;
326
+ case "trace":
327
+ result.trace(message);
328
+ break;
329
+ case "silent": break;
330
+ default:
331
+ result.info(message);
332
+ break;
333
+ }
334
+ };
335
+ return result;
288
336
  };
289
337
  const consoleLogger = (type, message) => consoleLog(isSetString(message) ? {
290
338
  type,
@@ -296,7 +344,7 @@ const consoleLogger = (type, message) => consoleLog(isSetString(message) ? {
296
344
  category: LogCategories.GENERAL,
297
345
  logId: uuid(),
298
346
  timestamp: Date.now(),
299
- ...message
347
+ ...message.meta
300
348
  }, isSetString(message) ? message : message.message);
301
349
  /**
302
350
  * Create a logging function with a specific name and options.
@@ -306,7 +354,7 @@ const consoleLogger = (type, message) => consoleLog(isSetString(message) ? {
306
354
  * @returns A logging function.
307
355
  */
308
356
  const createLogger = (name, options, callback = consoleLogger) => {
309
- return {
357
+ const result = {
310
358
  options: {
311
359
  ...options,
312
360
  name
@@ -332,6 +380,30 @@ const createLogger = (name, options, callback = consoleLogger) => {
332
380
  name
333
381
  }, (message) => callback("trace", message))
334
382
  };
383
+ result.log = (type, message) => {
384
+ switch (type) {
385
+ case "error":
386
+ result.error(message);
387
+ break;
388
+ case "warn":
389
+ result.warn(message);
390
+ break;
391
+ case "info":
392
+ result.info(message);
393
+ break;
394
+ case "debug":
395
+ result.debug(message);
396
+ break;
397
+ case "trace":
398
+ result.trace(message);
399
+ break;
400
+ case "silent": break;
401
+ default:
402
+ result.info(message);
403
+ break;
404
+ }
405
+ };
406
+ return result;
335
407
  };
336
408
  /**
337
409
  * Extend a logging function with a specific name, adding a colored badge to the log output.
@@ -361,7 +433,7 @@ const extendLogger = (logger, options) => {
361
433
  ...logger.options,
362
434
  ...options
363
435
  };
364
- return {
436
+ const result = {
365
437
  options: opts,
366
438
  error: validateLogger("error", opts.name, opts, logger.error.bind(logger)),
367
439
  warn: validateLogger("warn", opts.name, opts, logger.warn.bind(logger)),
@@ -369,6 +441,30 @@ const extendLogger = (logger, options) => {
369
441
  debug: validateLogger("debug", opts.name, opts, logger.debug.bind(logger)),
370
442
  trace: validateLogger("trace", opts.name, opts, logger.trace.bind(logger))
371
443
  };
444
+ result.log = (type, message) => {
445
+ switch (type) {
446
+ case "error":
447
+ result.error(message);
448
+ break;
449
+ case "warn":
450
+ result.warn(message);
451
+ break;
452
+ case "info":
453
+ result.info(message);
454
+ break;
455
+ case "debug":
456
+ result.debug(message);
457
+ break;
458
+ case "trace":
459
+ result.trace(message);
460
+ break;
461
+ case "silent": break;
462
+ default:
463
+ result.info(message);
464
+ break;
465
+ }
466
+ };
467
+ return result;
372
468
  };
373
469
 
374
470
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"logging.mjs","names":["defu"],"sources":["../../src/plugin-utils/logging.ts"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Powerlines\n\n This code was released as part of the Powerlines project. Powerlines\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/powerlines.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/powerlines\n Documentation: https://docs.stormsoftware.com/projects/powerlines\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport { getLogFn, getLogLevel } from \"@storm-software/config-tools/logger\";\nimport { getColor } from \"@storm-software/config-tools/utilities/colors\";\nimport { kebabCase } from \"@stryke/string-format/kebab-case\";\nimport { titleCase } from \"@stryke/string-format/title-case\";\nimport { isSetObject } from \"@stryke/type-checks/is-set-object\";\nimport { isSetString } from \"@stryke/type-checks/is-set-string\";\nimport { isString } from \"@stryke/type-checks/is-string\";\nimport { RequiredKeys } from \"@stryke/types/base\";\nimport { uuid } from \"@stryke/unique-id/uuid\";\nimport chalk from \"chalk\";\nimport { defu } from \"defu\";\nimport { DEFAULT_ENVIRONMENT } from \"../constants/environments\";\nimport {\n DEFAULT_DEVELOPMENT_LOG_LEVEL,\n DEFAULT_PRODUCTION_LOG_LEVEL,\n DEFAULT_TEST_LOG_LEVEL\n} from \"../constants/log-level\";\nimport { Mode } from \"../types/config\";\nimport { UnresolvedContext } from \"../types/context\";\nimport type {\n CustomLogger,\n CustomLoggerMessage,\n LogCategory,\n LogFn,\n LogFnMeta,\n LogFnOptions,\n LoggerMessage,\n LoggerOptions,\n LogLevel,\n LogLevelResolvedConfig,\n LogLevelUserConfig,\n LogMeta\n} from \"../types/logging\";\nimport { LOG_LEVELS, LogCategories, Logger, LogLevels } from \"../types/logging\";\n\n/**\n * Determines if the provided log level is considered verbose (debug or trace).\n *\n * @param logLevel - The log level to check, which can be a string or an UnresolvedContext containing the log level in its config.\n * @returns True if the log level is \"debug\" or \"trace\", false otherwise.\n */\nexport function isVerbose(logLevel: string): boolean;\n\n/**\n * Determines if the provided context is considered verbose (debug or trace).\n *\n * @param context - The context to check, which contains the log level in its config.\n * @returns True if the log level is \"debug\" or \"trace\", false otherwise.\n */\nexport function isVerbose(context: UnresolvedContext): boolean;\n\n/**\n * Determines if the provided log level is considered verbose (debug or trace).\n *\n * @param logLevelOrContext - The log level to check, which can be a string or an UnresolvedContext containing the log level in its config.\n * @returns True if the log level is \"debug\" or \"trace\", false otherwise.\n */\nexport function isVerbose(\n logLevelOrContext: string | UnresolvedContext\n): boolean {\n const level = isString(logLevelOrContext)\n ? logLevelOrContext\n : logLevelOrContext.config.logLevel;\n\n return level === \"debug\" || level === \"trace\";\n}\n\n/**\n * Resolves the log level configuration based on the provided log level and mode, returning a complete LogLevelResolvedConfig object that specifies the log level for each log category.\n *\n * @param logLevel - The user-provided log level configuration, which can be a string or an object specifying log levels for each category.\n * @param mode - The current mode of the application (e.g., \"development\", \"test\", \"production\"), which determines the default log levels.\n * @returns A LogLevelResolvedConfig object specifying the log level for each log category.\n */\nexport function resolveLogLevel(\n logLevel?: LogLevelUserConfig,\n mode?: Mode\n): LogLevelResolvedConfig {\n if (logLevel === \"trace\") {\n return {\n general: \"trace\",\n fs: \"trace\",\n performance: \"trace\",\n network: \"trace\",\n plugins: \"trace\",\n hooks: \"trace\",\n env: \"trace\",\n ipc: \"trace\",\n config: \"trace\",\n babel: \"trace\"\n };\n } else if (logLevel === \"silent\") {\n return {\n general: \"silent\",\n fs: \"silent\",\n performance: \"silent\",\n network: \"silent\",\n plugins: \"silent\",\n hooks: \"silent\",\n env: \"silent\",\n ipc: \"silent\",\n config: \"silent\",\n babel: \"silent\"\n };\n }\n\n let defaultLogLevel: LogLevelResolvedConfig;\n if (mode === \"development\") {\n defaultLogLevel = DEFAULT_DEVELOPMENT_LOG_LEVEL;\n } else if (mode === \"test\") {\n defaultLogLevel = DEFAULT_TEST_LOG_LEVEL;\n } else {\n defaultLogLevel = DEFAULT_PRODUCTION_LOG_LEVEL;\n }\n\n if (isSetString(logLevel)) {\n return {\n general: logLevel,\n fs: defaultLogLevel.fs,\n performance: logLevel,\n network: defaultLogLevel.network,\n plugins: logLevel,\n hooks: logLevel,\n env: defaultLogLevel.env,\n ipc: defaultLogLevel.ipc,\n config: defaultLogLevel.config,\n babel: logLevel\n };\n } else if (isSetObject(logLevel)) {\n return defu(logLevel, defaultLogLevel) as LogLevelResolvedConfig;\n }\n\n return defaultLogLevel;\n}\n\nconst BADGE_COLORS = [\n \"#00A0DD\",\n \"#6FCE4E\",\n \"#FBBF24\",\n \"#F43F5E\",\n \"#3B82F6\",\n \"#A855F7\",\n \"#469592\",\n \"#288EDF\",\n \"#D8B4FE\",\n \"#10B981\",\n \"#EF4444\",\n \"#F0EC56\",\n \"#F472B6\",\n \"#22D3EE\",\n \"#EAB308\",\n \"#84CC16\",\n \"#F87171\",\n \"#0EA5E9\",\n \"#D946EF\",\n \"#FACC15\",\n \"#34D399\",\n \"#8B5CF6\"\n] as const;\n\nconst BRAND_COLOR = getColor(\"brand\");\n\n/**\n * Generate a consistent color based on the input text.\n *\n * @param text - The input text to generate the color from.\n * @return A hexadecimal color string.\n */\nexport const getTextColor = (text: string): string => {\n return (\n BADGE_COLORS[\n text\n .split(\"\")\n .map(char => char.charCodeAt(0))\n .reduce((ret, charCode) => ret + charCode, 0) % BADGE_COLORS.length\n ] || BADGE_COLORS[0]\n );\n};\n\n/**\n * Generate a consistent color based on the input text.\n *\n * @param text - The input text to generate the color from.\n * @return A hexadecimal color string.\n */\nexport const colorText = (text: string): string => {\n const title = titleCase(text);\n\n return chalk.hex(getTextColor(title))(title);\n};\n\n/**\n * Generate a consistent color based on the input text.\n *\n * @param text - The input text to generate the color from.\n * @return A hexadecimal color string.\n */\nexport const colorBackground = (text: string): string => {\n const title = titleCase(text);\n\n return chalk.inverse.hex(getTextColor(title))(` ${title} `);\n};\n\nexport const consoleLog = (meta: LogMeta, ...args: string[]) =>\n getLogFn(getLogLevel(meta.type), {\n logLevel: \"trace\"\n })(\n `${meta.name ? chalk.bold.hex(BRAND_COLOR)(kebabCase(meta.name)) : \"\"}${\n meta.command ? chalk.hex(BRAND_COLOR)(` (${meta.command})`) : \"\"\n }${meta.name ? chalk.grey(\" > \") : \"\"}${\n (meta.source || meta.plugin) &&\n (!meta.name ||\n kebabCase(meta.source || meta.plugin) !== kebabCase(meta.name))\n ? `${chalk.bold.hex(BRAND_COLOR)(\n kebabCase(meta.source || meta.plugin)\n )}${chalk.grey(\" > \")}`\n : \"\"\n }${\n meta.environment && kebabCase(meta.environment) !== DEFAULT_ENVIRONMENT\n ? `${chalk.bold.hex(BRAND_COLOR)(\n kebabCase(meta.environment)\n )}${chalk.grey(\" > \")}`\n : \"\"\n }${\n meta.category && meta.category !== LogCategories.GENERAL\n ? ` ${colorBackground(kebabCase(meta.category))} `\n : \"\"\n }${args.join(\" \")} `.trim()\n );\n\nexport function isValidLogLevel(logLevel: LogLevel, type: LogLevel): boolean {\n if (logLevel === LogLevels.SILENT) {\n return false;\n }\n\n return LOG_LEVELS.indexOf(logLevel) >= LOG_LEVELS.indexOf(type);\n}\n\nexport function isValidLogLevelConfig(\n type: LogLevel,\n logLevel: LogLevelResolvedConfig,\n category: LogCategory = LogCategories.GENERAL\n): boolean {\n return isValidLogLevel(logLevel[category], type);\n}\n\n/**\n * Create a logging function with a specific name and options.\n *\n * @param name - The name of the logging function.\n * @param options - The options to configure the logging function, including the source, command, environment, plugin, log level, custom logger, and colors. These options can be used to customize the appearance and behavior of the log messages generated by the logging function.\n * @returns A logging function.\n */\nexport const createLogFn = (name: string, options: LogFnOptions): LogFn => {\n const logLevel = resolveLogLevel(options.logLevel, options.mode);\n\n return (meta: LogFnMeta | LogLevel, ...args: string[]) => {\n const logMeta = isSetObject(meta)\n ? {\n logId: uuid(),\n timestamp: Date.now(),\n category: LogCategories.GENERAL,\n ...options,\n ...meta,\n name\n }\n : {\n logId: uuid(),\n timestamp: Date.now(),\n category: LogCategories.GENERAL,\n ...options,\n type: meta,\n name\n };\n\n if (\n isValidLogLevelConfig(\n logMeta.type,\n logLevel,\n logMeta.category ? logMeta.category : LogCategories.GENERAL\n )\n ) {\n consoleLog(logMeta, ...args);\n }\n };\n};\n\nconst validateLogger = (\n type: LogLevel,\n name: string,\n options: LoggerOptions,\n callback: (message: string | LoggerMessage) => void\n) => {\n const logLevel = resolveLogLevel(options.logLevel, options.mode);\n\n return (message: string | LoggerMessage) => {\n const params = isSetString(message)\n ? {\n name,\n plugin: options.plugin,\n meta: {\n type,\n name,\n category: LogCategories.GENERAL,\n logId: uuid(),\n timestamp: Date.now(),\n ...options\n },\n message\n }\n : {\n name,\n plugin: options.plugin,\n ...message,\n meta: {\n type,\n name,\n category: LogCategories.GENERAL,\n logId: uuid(),\n timestamp: Date.now(),\n plugin: message.plugin,\n ...options,\n ...message.meta\n }\n };\n\n if (isValidLogLevelConfig(type, logLevel, params.meta.category)) {\n callback(params);\n }\n };\n};\n\nconst validateCustomLogger = (\n type: LogLevel,\n name: string,\n options: LoggerOptions,\n callback?: (message: string | LoggerMessage) => void,\n customCallback?: (message: CustomLoggerMessage) => void\n) => {\n const logLevel = resolveLogLevel(options.logLevel, options.mode);\n\n return (message: string | LoggerMessage) => {\n const params = isSetString(message)\n ? {\n name,\n plugin: options.plugin,\n meta: {\n type,\n name,\n category: LogCategories.GENERAL,\n logId: uuid(),\n timestamp: Date.now(),\n ...options\n },\n message\n }\n : {\n name,\n plugin: options.plugin,\n ...message,\n meta: {\n type,\n name,\n category: LogCategories.GENERAL,\n logId: uuid(),\n timestamp: Date.now(),\n plugin: message.plugin,\n ...options,\n ...message.meta\n }\n };\n\n if (isValidLogLevelConfig(type, logLevel, params.meta.category)) {\n callback?.(params);\n customCallback?.(params);\n }\n };\n};\n\n/**\n * Create a logging function with a specific name and options.\n *\n * @param logger - The original logger to wrap with the custom logger.\n * @param secondaryLogger - The custom logger to use for logging messages, which can be used to override the default logging behavior of the original logger.\n * @returns A new logger that combines the original logger's options with the custom logger's methods, allowing for customized logging behavior while still maintaining the original logger's configuration.\n */\nexport const withLogger = (logger: Logger, secondaryLogger: Logger): Logger => {\n const options = { ...secondaryLogger.options, ...logger.options };\n\n return {\n options,\n error: validateLogger(\n \"error\",\n options.name!,\n options,\n (message: string | LoggerMessage) => {\n logger.error?.(message);\n secondaryLogger.error?.(message);\n }\n ),\n warn: validateLogger(\n \"warn\",\n options.name!,\n options,\n (message: string | LoggerMessage) => {\n logger.warn?.(message);\n secondaryLogger.warn?.(message);\n }\n ),\n info: validateLogger(\n \"info\",\n options.name!,\n options,\n (message: string | LoggerMessage) => {\n logger.info?.(message);\n secondaryLogger.info?.(message);\n }\n ),\n debug: validateLogger(\n \"debug\",\n options.name!,\n options,\n (message: string | LoggerMessage) => {\n logger.debug?.(message);\n secondaryLogger.debug?.(message);\n }\n ),\n trace: validateLogger(\n \"trace\",\n options.name!,\n options,\n (message: string | LoggerMessage) => {\n logger.trace?.(message);\n secondaryLogger.trace?.(message);\n }\n )\n };\n};\n\n/**\n * Create a logging function with a specific name and options.\n *\n * @param logger - The original logger to wrap with the custom logger.\n * @param customLogger - The custom logger to use for logging messages, which can be used to override the default logging behavior of the original logger.\n * @returns A new logger that combines the original logger's options with the custom logger's methods, allowing for customized logging behavior while still maintaining the original logger's configuration.\n */\nexport const withCustomLogger = (\n logger: Logger,\n customLogger: CustomLogger\n): Logger => {\n return {\n options: logger.options,\n error: validateCustomLogger(\n \"error\",\n logger.options.name!,\n logger.options,\n logger.error.bind(logger),\n customLogger.error?.bind(customLogger)\n ),\n warn: validateCustomLogger(\n \"warn\",\n logger.options.name!,\n logger.options,\n logger.warn.bind(logger),\n customLogger.warn?.bind(customLogger)\n ),\n info: validateCustomLogger(\n \"info\",\n logger.options.name!,\n logger.options,\n logger.info.bind(logger),\n customLogger.info?.bind(customLogger)\n ),\n debug: validateCustomLogger(\n \"debug\",\n logger.options.name!,\n logger.options,\n logger.debug.bind(logger),\n customLogger.debug?.bind(customLogger)\n ),\n trace: validateCustomLogger(\n \"trace\",\n logger.options.name!,\n logger.options,\n logger.trace.bind(logger),\n customLogger.trace?.bind(customLogger)\n )\n };\n};\n\nexport const consoleLogger = (\n type: LogLevel,\n message: string | LoggerMessage\n) =>\n consoleLog(\n isSetString(message)\n ? {\n type,\n category: LogCategories.GENERAL,\n logId: uuid(),\n timestamp: Date.now()\n }\n : {\n type,\n category: LogCategories.GENERAL,\n logId: uuid(),\n timestamp: Date.now(),\n ...message\n },\n isSetString(message) ? message : message.message\n );\n\n/**\n * Create a logging function with a specific name and options.\n *\n * @param name - The name of the logging function.\n * @param options - The options to configure the logging function, including the source, command, environment, plugin, log level, custom logger, and colors. These options can be used to customize the appearance and behavior of the log messages generated by the logging function.\n * @returns A logging function.\n */\nexport const createLogger = (\n name: string,\n options: LoggerOptions,\n callback: (\n type: LogLevel,\n message: string | LoggerMessage\n ) => void = consoleLogger\n): Logger => {\n return {\n options: { ...options, name },\n error: validateLogger(\"error\", name, { ...options, name }, message =>\n callback(\"error\", message)\n ),\n warn: validateLogger(\"warn\", name, { ...options, name }, message =>\n callback(\"warn\", message)\n ),\n info: validateLogger(\"info\", name, { ...options, name }, message =>\n callback(\"info\", message)\n ),\n debug: validateLogger(\"debug\", name, { ...options, name }, message =>\n callback(\"debug\", message)\n ),\n trace: validateLogger(\"trace\", name, { ...options, name }, message =>\n callback(\"trace\", message)\n )\n };\n};\n\n/**\n * Extend a logging function with a specific name, adding a colored badge to the log output.\n *\n * @param logFn - The original logging function to extend.\n * @param options - The overlay metadata to use for the badge in the log output.\n * @returns A new logging function that includes the badge in its output.\n */\nexport const extendLogFn = (logFn: LogFn, options: LogFnOptions): LogFn => {\n return (meta, ...args) =>\n options.source || options.category\n ? logFn(\n isSetObject(meta)\n ? { ...options, ...meta }\n : { ...options, type: meta },\n `${colorBackground(String(options.source || options.category))} ${args\n .filter(Boolean)\n .map(arg => String(arg).trim())\n .join(\" \")} `\n )\n : logFn(meta, ...args);\n};\n\n/**\n * Extend a logger with a specific name and options, adding a colored badge to the log output for each log message generated by the logger.\n *\n * @param logger - The original logger to extend.\n * @param options - The options to configure the logging function, including the source, command, environment, plugin, log level, custom logger, and colors. These options can be used to customize the appearance and behavior of the log messages generated by the extended logger.\n * @returns A new logger that includes the badge in its output for each log message.\n */\nexport const extendLogger = (\n logger: Logger,\n options: LoggerOptions\n): Logger => {\n const opts = { ...logger.options, ...options } as RequiredKeys<\n LoggerOptions,\n \"name\"\n >;\n\n return {\n options: opts,\n error: validateLogger(\"error\", opts.name, opts, logger.error.bind(logger)),\n warn: validateLogger(\"warn\", opts.name, opts, logger.warn.bind(logger)),\n info: validateLogger(\"info\", opts.name, opts, logger.info.bind(logger)),\n debug: validateLogger(\"debug\", opts.name, opts, logger.debug.bind(logger)),\n trace: validateLogger(\"trace\", opts.name, opts, logger.trace.bind(logger))\n };\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"logging.mjs","names":["defu"],"sources":["../../src/plugin-utils/logging.ts"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Powerlines\n\n This code was released as part of the Powerlines project. Powerlines\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/powerlines.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/powerlines\n Documentation: https://docs.stormsoftware.com/projects/powerlines\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport { getLogFn, getLogLevel } from \"@storm-software/config-tools/logger\";\nimport { getColor } from \"@storm-software/config-tools/utilities/colors\";\nimport { kebabCase } from \"@stryke/string-format/kebab-case\";\nimport { titleCase } from \"@stryke/string-format/title-case\";\nimport { isSetObject } from \"@stryke/type-checks/is-set-object\";\nimport { isSetString } from \"@stryke/type-checks/is-set-string\";\nimport { isString } from \"@stryke/type-checks/is-string\";\nimport { RequiredKeys } from \"@stryke/types/base\";\nimport { uuid } from \"@stryke/unique-id/uuid\";\nimport chalk from \"chalk\";\nimport { defu } from \"defu\";\nimport { DEFAULT_ENVIRONMENT } from \"../constants/environments\";\nimport {\n DEFAULT_DEVELOPMENT_LOG_LEVEL,\n DEFAULT_PRODUCTION_LOG_LEVEL,\n DEFAULT_TEST_LOG_LEVEL\n} from \"../constants/log-level\";\nimport { Mode } from \"../types/config\";\nimport { UnresolvedContext } from \"../types/context\";\nimport type {\n CustomLogger,\n CustomLoggerMessage,\n LogCategory,\n LogFn,\n LogFnMeta,\n LogFnOptions,\n LoggerMessage,\n LoggerOptions,\n LogLevel,\n LogLevelResolvedConfig,\n LogLevelUserConfig,\n LogMeta\n} from \"../types/logging\";\nimport { LOG_LEVELS, LogCategories, Logger, LogLevels } from \"../types/logging\";\n\n/**\n * Determines if the provided log level is considered verbose (debug or trace).\n *\n * @param logLevel - The log level to check, which can be a string or an UnresolvedContext containing the log level in its config.\n * @returns True if the log level is \"debug\" or \"trace\", false otherwise.\n */\nexport function isVerbose(logLevel: string): boolean;\n\n/**\n * Determines if the provided context is considered verbose (debug or trace).\n *\n * @param context - The context to check, which contains the log level in its config.\n * @returns True if the log level is \"debug\" or \"trace\", false otherwise.\n */\nexport function isVerbose(context: UnresolvedContext): boolean;\n\n/**\n * Determines if the provided log level is considered verbose (debug or trace).\n *\n * @param logLevelOrContext - The log level to check, which can be a string or an UnresolvedContext containing the log level in its config.\n * @returns True if the log level is \"debug\" or \"trace\", false otherwise.\n */\nexport function isVerbose(\n logLevelOrContext: string | UnresolvedContext\n): boolean {\n const level = isString(logLevelOrContext)\n ? logLevelOrContext\n : logLevelOrContext.config.logLevel;\n\n return level === \"debug\" || level === \"trace\";\n}\n\n/**\n * Resolves the log level configuration based on the provided log level and mode, returning a complete LogLevelResolvedConfig object that specifies the log level for each log category.\n *\n * @param logLevel - The user-provided log level configuration, which can be a string or an object specifying log levels for each category.\n * @param mode - The current mode of the application (e.g., \"development\", \"test\", \"production\"), which determines the default log levels.\n * @returns A LogLevelResolvedConfig object specifying the log level for each log category.\n */\nexport function resolveLogLevel(\n logLevel?: LogLevelUserConfig,\n mode?: Mode\n): LogLevelResolvedConfig {\n if (logLevel === \"trace\") {\n return {\n general: \"trace\",\n fs: \"trace\",\n performance: \"trace\",\n network: \"trace\",\n plugins: \"trace\",\n hooks: \"trace\",\n env: \"trace\",\n ipc: \"trace\",\n config: \"trace\",\n babel: \"trace\"\n };\n } else if (logLevel === \"silent\") {\n return {\n general: \"silent\",\n fs: \"silent\",\n performance: \"silent\",\n network: \"silent\",\n plugins: \"silent\",\n hooks: \"silent\",\n env: \"silent\",\n ipc: \"silent\",\n config: \"silent\",\n babel: \"silent\"\n };\n }\n\n let defaultLogLevel: LogLevelResolvedConfig;\n if (mode === \"development\") {\n defaultLogLevel = DEFAULT_DEVELOPMENT_LOG_LEVEL;\n } else if (mode === \"test\") {\n defaultLogLevel = DEFAULT_TEST_LOG_LEVEL;\n } else {\n defaultLogLevel = DEFAULT_PRODUCTION_LOG_LEVEL;\n }\n\n if (isSetString(logLevel)) {\n return {\n general: logLevel,\n fs: defaultLogLevel.fs,\n performance: logLevel,\n network: defaultLogLevel.network,\n plugins: logLevel,\n hooks: logLevel,\n env: defaultLogLevel.env,\n ipc: defaultLogLevel.ipc,\n config: defaultLogLevel.config,\n babel: logLevel\n };\n } else if (isSetObject(logLevel)) {\n return defu(logLevel, defaultLogLevel) as LogLevelResolvedConfig;\n }\n\n return defaultLogLevel;\n}\n\nconst BADGE_COLORS = [\n \"#00A0DD\",\n \"#6FCE4E\",\n \"#FBBF24\",\n \"#F43F5E\",\n \"#3B82F6\",\n \"#A855F7\",\n \"#469592\",\n \"#288EDF\",\n \"#D8B4FE\",\n \"#10B981\",\n \"#EF4444\",\n \"#F0EC56\",\n \"#F472B6\",\n \"#22D3EE\",\n \"#EAB308\",\n \"#84CC16\",\n \"#F87171\",\n \"#0EA5E9\",\n \"#D946EF\",\n \"#FACC15\",\n \"#34D399\",\n \"#8B5CF6\"\n] as const;\n\nconst BRAND_COLOR = getColor(\"brand\");\n\n/**\n * Generate a consistent color based on the input text.\n *\n * @param text - The input text to generate the color from.\n * @return A hexadecimal color string.\n */\nexport const getTextColor = (text: string): string => {\n return (\n BADGE_COLORS[\n text\n .split(\"\")\n .map(char => char.charCodeAt(0))\n .reduce((ret, charCode) => ret + charCode, 0) % BADGE_COLORS.length\n ] || BADGE_COLORS[0]\n );\n};\n\n/**\n * Generate a consistent color based on the input text.\n *\n * @param text - The input text to generate the color from.\n * @return A hexadecimal color string.\n */\nexport const colorText = (text: string): string => {\n const title = titleCase(text);\n\n return chalk.hex(getTextColor(title))(title);\n};\n\n/**\n * Generate a consistent color based on the input text.\n *\n * @param text - The input text to generate the color from.\n * @return A hexadecimal color string.\n */\nexport const colorBackground = (text: string): string => {\n const title = titleCase(text);\n\n return chalk.inverse.hex(getTextColor(title))(` ${title} `);\n};\n\nexport const consoleLog = (meta: LogMeta, ...args: string[]) =>\n getLogFn(getLogLevel(meta.type), {\n logLevel: \"trace\"\n })(\n `${meta.name ? chalk.bold.hex(BRAND_COLOR)(kebabCase(meta.name)) : \"\"}${\n meta.command ? chalk.hex(BRAND_COLOR)(` (${meta.command})`) : \"\"\n }${meta.name ? chalk.grey(\" > \") : \"\"}${\n (meta.source || meta.plugin) &&\n (!meta.name ||\n kebabCase(meta.source || meta.plugin) !== kebabCase(meta.name))\n ? `${chalk.bold.hex(BRAND_COLOR)(\n kebabCase(meta.source || meta.plugin)\n )}${chalk.grey(\" > \")}`\n : \"\"\n }${\n meta.environment && kebabCase(meta.environment) !== DEFAULT_ENVIRONMENT\n ? `${chalk.bold.hex(BRAND_COLOR)(\n kebabCase(meta.environment)\n )}${chalk.grey(\" > \")}`\n : \"\"\n }${\n meta.category && meta.category !== LogCategories.GENERAL\n ? `${colorBackground(kebabCase(meta.category))} `\n : \"\"\n }${args.join(\" \")} `.trim()\n );\n\nexport function isValidLogLevel(logLevel: LogLevel, type: LogLevel): boolean {\n if (logLevel === LogLevels.SILENT) {\n return false;\n }\n\n return LOG_LEVELS.indexOf(logLevel) >= LOG_LEVELS.indexOf(type);\n}\n\nexport function isValidLogLevelConfig(\n type: LogLevel,\n logLevel: LogLevelResolvedConfig,\n category: LogCategory = LogCategories.GENERAL\n): boolean {\n return isValidLogLevel(logLevel[category], type);\n}\n\n/**\n * Create a logging function with a specific name and options.\n *\n * @param name - The name of the logging function.\n * @param options - The options to configure the logging function, including the source, command, environment, plugin, log level, custom logger, and colors. These options can be used to customize the appearance and behavior of the log messages generated by the logging function.\n * @returns A logging function.\n */\nexport const createLogFn = (name: string, options: LogFnOptions): LogFn => {\n const logLevel = resolveLogLevel(options.logLevel, options.mode);\n\n return (meta: LogFnMeta | LogLevel, ...args: string[]) => {\n const logMeta = isSetObject(meta)\n ? {\n logId: uuid(),\n timestamp: Date.now(),\n category: LogCategories.GENERAL,\n ...options,\n ...meta,\n name\n }\n : {\n logId: uuid(),\n timestamp: Date.now(),\n category: LogCategories.GENERAL,\n ...options,\n type: meta,\n name\n };\n\n if (\n isValidLogLevelConfig(\n logMeta.type,\n logLevel,\n logMeta.category ? logMeta.category : LogCategories.GENERAL\n )\n ) {\n consoleLog(logMeta, ...args);\n }\n };\n};\n\nconst validateLogger = (\n type: LogLevel,\n name: string,\n options: LoggerOptions,\n callback: (message: string | LoggerMessage) => void\n) => {\n const logLevel = resolveLogLevel(options.logLevel, options.mode);\n\n return (message: string | LoggerMessage) => {\n const params = isSetString(message)\n ? {\n name,\n plugin: options.plugin,\n meta: {\n type,\n name,\n category: LogCategories.GENERAL,\n logId: uuid(),\n timestamp: Date.now(),\n ...options\n },\n message\n }\n : {\n name,\n plugin: options.plugin,\n ...message,\n meta: {\n type,\n name,\n category: LogCategories.GENERAL,\n logId: uuid(),\n timestamp: Date.now(),\n plugin: message.plugin,\n ...options,\n ...message.meta\n }\n };\n\n if (isValidLogLevelConfig(type, logLevel, params.meta.category)) {\n callback(params);\n }\n };\n};\n\nconst validateCustomLogger = (\n type: LogLevel,\n name: string,\n options: LoggerOptions,\n callback?: (message: string | LoggerMessage) => void,\n customCallback?: (message: CustomLoggerMessage) => void\n) => {\n const logLevel = resolveLogLevel(options.logLevel, options.mode);\n\n return (message: string | LoggerMessage) => {\n const params = isSetString(message)\n ? {\n name,\n plugin: options.plugin,\n meta: {\n type,\n name,\n category: LogCategories.GENERAL,\n logId: uuid(),\n timestamp: Date.now(),\n ...options\n },\n message\n }\n : {\n name,\n plugin: options.plugin,\n ...message,\n meta: {\n type,\n name,\n category: LogCategories.GENERAL,\n logId: uuid(),\n timestamp: Date.now(),\n plugin: message.plugin,\n ...options,\n ...message.meta\n }\n };\n\n if (isValidLogLevelConfig(type, logLevel, params.meta.category)) {\n callback?.(params);\n customCallback?.(params);\n }\n };\n};\n\n/**\n * Create a logging function with a specific name and options.\n *\n * @param logger - The original logger to wrap with the custom logger.\n * @param secondaryLogger - The custom logger to use for logging messages, which can be used to override the default logging behavior of the original logger.\n * @returns A new logger that combines the original logger's options with the custom logger's methods, allowing for customized logging behavior while still maintaining the original logger's configuration.\n */\nexport const withLogger = (logger: Logger, secondaryLogger: Logger): Logger => {\n const options = { ...secondaryLogger.options, ...logger.options };\n\n const result = {\n options,\n error: validateLogger(\n \"error\",\n options.name!,\n options,\n (message: string | LoggerMessage) => {\n logger.error?.(message);\n secondaryLogger.error?.(message);\n }\n ),\n warn: validateLogger(\n \"warn\",\n options.name!,\n options,\n (message: string | LoggerMessage) => {\n logger.warn?.(message);\n secondaryLogger.warn?.(message);\n }\n ),\n info: validateLogger(\n \"info\",\n options.name!,\n options,\n (message: string | LoggerMessage) => {\n logger.info?.(message);\n secondaryLogger.info?.(message);\n }\n ),\n debug: validateLogger(\n \"debug\",\n options.name!,\n options,\n (message: string | LoggerMessage) => {\n logger.debug?.(message);\n secondaryLogger.debug?.(message);\n }\n ),\n trace: validateLogger(\n \"trace\",\n options.name!,\n options,\n (message: string | LoggerMessage) => {\n logger.trace?.(message);\n secondaryLogger.trace?.(message);\n }\n )\n } as Logger;\n\n result.log = (type: LogLevel, message: string | LoggerMessage) => {\n switch (type) {\n case \"error\":\n result.error(message);\n break;\n case \"warn\":\n result.warn(message);\n break;\n case \"info\":\n result.info(message);\n break;\n case \"debug\":\n result.debug(message);\n break;\n case \"trace\":\n result.trace(message);\n break;\n case \"silent\":\n break;\n default:\n result.info(message);\n break;\n }\n };\n\n return result;\n};\n\n/**\n * Create a logging function with a specific name and options.\n *\n * @param logger - The original logger to wrap with the custom logger.\n * @param customLogger - The custom logger to use for logging messages, which can be used to override the default logging behavior of the original logger.\n * @returns A new logger that combines the original logger's options with the custom logger's methods, allowing for customized logging behavior while still maintaining the original logger's configuration.\n */\nexport const withCustomLogger = (\n logger: Logger,\n customLogger: CustomLogger\n): Logger => {\n const result = {\n options: logger.options,\n error: validateCustomLogger(\n \"error\",\n logger.options.name!,\n logger.options,\n logger.error.bind(logger),\n customLogger.error?.bind(customLogger)\n ),\n warn: validateCustomLogger(\n \"warn\",\n logger.options.name!,\n logger.options,\n logger.warn.bind(logger),\n customLogger.warn?.bind(customLogger)\n ),\n info: validateCustomLogger(\n \"info\",\n logger.options.name!,\n logger.options,\n logger.info.bind(logger),\n customLogger.info?.bind(customLogger)\n ),\n debug: validateCustomLogger(\n \"debug\",\n logger.options.name!,\n logger.options,\n logger.debug.bind(logger),\n customLogger.debug?.bind(customLogger)\n ),\n trace: validateCustomLogger(\n \"trace\",\n logger.options.name!,\n logger.options,\n logger.trace.bind(logger),\n customLogger.trace?.bind(customLogger)\n )\n } as Logger;\n\n result.log = (type: LogLevel, message: string | LoggerMessage) => {\n switch (type) {\n case \"error\":\n result.error(message);\n break;\n case \"warn\":\n result.warn(message);\n break;\n case \"info\":\n result.info(message);\n break;\n case \"debug\":\n result.debug(message);\n break;\n case \"trace\":\n result.trace(message);\n break;\n case \"silent\":\n break;\n default:\n result.info(message);\n break;\n }\n };\n\n return result;\n};\n\nexport const consoleLogger = (\n type: LogLevel,\n message: string | LoggerMessage\n) =>\n consoleLog(\n isSetString(message)\n ? {\n type,\n category: LogCategories.GENERAL,\n logId: uuid(),\n timestamp: Date.now()\n }\n : {\n type,\n category: LogCategories.GENERAL,\n logId: uuid(),\n timestamp: Date.now(),\n ...message.meta\n },\n isSetString(message) ? message : message.message\n );\n\n/**\n * Create a logging function with a specific name and options.\n *\n * @param name - The name of the logging function.\n * @param options - The options to configure the logging function, including the source, command, environment, plugin, log level, custom logger, and colors. These options can be used to customize the appearance and behavior of the log messages generated by the logging function.\n * @returns A logging function.\n */\nexport const createLogger = (\n name: string,\n options: LoggerOptions,\n callback: (\n type: LogLevel,\n message: string | LoggerMessage\n ) => void = consoleLogger\n): Logger => {\n const result = {\n options: { ...options, name },\n error: validateLogger(\"error\", name, { ...options, name }, message =>\n callback(\"error\", message)\n ),\n warn: validateLogger(\"warn\", name, { ...options, name }, message =>\n callback(\"warn\", message)\n ),\n info: validateLogger(\"info\", name, { ...options, name }, message =>\n callback(\"info\", message)\n ),\n debug: validateLogger(\"debug\", name, { ...options, name }, message =>\n callback(\"debug\", message)\n ),\n trace: validateLogger(\"trace\", name, { ...options, name }, message =>\n callback(\"trace\", message)\n )\n } as Logger;\n\n result.log = (type: LogLevel, message: string | LoggerMessage) => {\n switch (type) {\n case \"error\":\n result.error(message);\n break;\n case \"warn\":\n result.warn(message);\n break;\n case \"info\":\n result.info(message);\n break;\n case \"debug\":\n result.debug(message);\n break;\n case \"trace\":\n result.trace(message);\n break;\n case \"silent\":\n break;\n default:\n result.info(message);\n break;\n }\n };\n\n return result;\n};\n\n/**\n * Extend a logging function with a specific name, adding a colored badge to the log output.\n *\n * @param logFn - The original logging function to extend.\n * @param options - The overlay metadata to use for the badge in the log output.\n * @returns A new logging function that includes the badge in its output.\n */\nexport const extendLogFn = (logFn: LogFn, options: LogFnOptions): LogFn => {\n return (meta, ...args) =>\n options.source || options.category\n ? logFn(\n isSetObject(meta)\n ? { ...options, ...meta }\n : { ...options, type: meta },\n `${colorBackground(String(options.source || options.category))} ${args\n .filter(Boolean)\n .map(arg => String(arg).trim())\n .join(\" \")} `\n )\n : logFn(meta, ...args);\n};\n\n/**\n * Extend a logger with a specific name and options, adding a colored badge to the log output for each log message generated by the logger.\n *\n * @param logger - The original logger to extend.\n * @param options - The options to configure the logging function, including the source, command, environment, plugin, log level, custom logger, and colors. These options can be used to customize the appearance and behavior of the log messages generated by the extended logger.\n * @returns A new logger that includes the badge in its output for each log message.\n */\nexport const extendLogger = (\n logger: Logger,\n options: LoggerOptions\n): Logger => {\n const opts = { ...logger.options, ...options } as RequiredKeys<\n LoggerOptions,\n \"name\"\n >;\n\n const result = {\n options: opts,\n error: validateLogger(\"error\", opts.name, opts, logger.error.bind(logger)),\n warn: validateLogger(\"warn\", opts.name, opts, logger.warn.bind(logger)),\n info: validateLogger(\"info\", opts.name, opts, logger.info.bind(logger)),\n debug: validateLogger(\"debug\", opts.name, opts, logger.debug.bind(logger)),\n trace: validateLogger(\"trace\", opts.name, opts, logger.trace.bind(logger))\n } as Logger;\n\n result.log = (type: LogLevel, message: string | LoggerMessage) => {\n switch (type) {\n case \"error\":\n result.error(message);\n break;\n case \"warn\":\n result.warn(message);\n break;\n case \"info\":\n result.info(message);\n break;\n case \"debug\":\n result.debug(message);\n break;\n case \"trace\":\n result.trace(message);\n break;\n case \"silent\":\n break;\n default:\n result.info(message);\n break;\n }\n };\n\n return result;\n};\n"],"mappings":"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"}
@@ -44,7 +44,7 @@ let _stryke_path_join = require("@stryke/path/join");
44
44
  */
45
45
  function replacePathTokens(context, path) {
46
46
  if (!path) return path;
47
- const result = path.replaceAll("{cwd}", context.config.cwd || process.cwd() || "./").replaceAll("{workspaceRoot}", context.config.cwd || process.cwd() || "./").replaceAll("{root}", context.config.root).replaceAll("{projectRoot}", context.config.root).replaceAll("{sourceRoot}", (0, _stryke_path_join.joinPaths)(context.config.root, "src")).replaceAll("{powerlinesPath}", context.powerlinesPath).replaceAll("{cachePath}", context.cachePath).replaceAll("{dataPath}", context.dataPath).replaceAll("{logPath}", context.envPaths.log).replaceAll("{tempPath}", context.envPaths.temp).replaceAll("{configPath}", context.envPaths.config).replaceAll("{outputPath}", context.config.output.path).replaceAll("{output}", context.config.output.path).replaceAll("{artifactsPath}", (0, _stryke_path_replace.replacePath)(context.artifactsPath, context.config.cwd)).replaceAll("{builtinPath}", (0, _stryke_path_replace.replacePath)(context.builtinsPath, context.config.cwd)).replaceAll("{builtinsPath}", (0, _stryke_path_replace.replacePath)(context.builtinsPath, context.config.cwd)).replaceAll("{entryPath}", (0, _stryke_path_replace.replacePath)(context.entryPath, context.config.cwd));
47
+ const result = path.replaceAll("{cwd}", context.config.cwd || process.cwd()).replaceAll("{workspaceRoot}", context.config.cwd || process.cwd()).replaceAll("{root}", context.config.root).replaceAll("{projectRoot}", context.config.root).replaceAll("{sourceRoot}", (0, _stryke_path_join.joinPaths)(context.config.root, "src")).replaceAll("{powerlinesPath}", context.powerlinesPath).replaceAll("{cachePath}", context.cachePath).replaceAll("{dataPath}", context.dataPath).replaceAll("{logPath}", context.envPaths.log).replaceAll("{tempPath}", context.envPaths.temp).replaceAll("{configPath}", context.envPaths.config).replaceAll("{outputPath}", context.config.output.path).replaceAll("{output}", context.config.output.path).replaceAll("{artifactsPath}", (0, _stryke_path_replace.replacePath)(context.artifactsPath, context.config.cwd)).replaceAll("{builtinPath}", (0, _stryke_path_replace.replacePath)(context.builtinsPath, context.config.cwd)).replaceAll("{builtinsPath}", (0, _stryke_path_replace.replacePath)(context.builtinsPath, context.config.cwd)).replaceAll("{entryPath}", (0, _stryke_path_replace.replacePath)(context.entryPath, context.config.cwd));
48
48
  return context.config.output.copy && (0, _stryke_type_checks_is_set_string.isSetString)(context.config.output.copy.path) ? result.replaceAll("{copyPath}", context.config.output.copy.path).replaceAll("{copy}", context.config.output.copy.path) : result;
49
49
  }
50
50
 
@@ -42,7 +42,7 @@ import { joinPaths } from "@stryke/path/join";
42
42
  */
43
43
  function replacePathTokens(context, path) {
44
44
  if (!path) return path;
45
- const result = path.replaceAll("{cwd}", context.config.cwd || process.cwd() || "./").replaceAll("{workspaceRoot}", context.config.cwd || process.cwd() || "./").replaceAll("{root}", context.config.root).replaceAll("{projectRoot}", context.config.root).replaceAll("{sourceRoot}", joinPaths(context.config.root, "src")).replaceAll("{powerlinesPath}", context.powerlinesPath).replaceAll("{cachePath}", context.cachePath).replaceAll("{dataPath}", context.dataPath).replaceAll("{logPath}", context.envPaths.log).replaceAll("{tempPath}", context.envPaths.temp).replaceAll("{configPath}", context.envPaths.config).replaceAll("{outputPath}", context.config.output.path).replaceAll("{output}", context.config.output.path).replaceAll("{artifactsPath}", replacePath(context.artifactsPath, context.config.cwd)).replaceAll("{builtinPath}", replacePath(context.builtinsPath, context.config.cwd)).replaceAll("{builtinsPath}", replacePath(context.builtinsPath, context.config.cwd)).replaceAll("{entryPath}", replacePath(context.entryPath, context.config.cwd));
45
+ const result = path.replaceAll("{cwd}", context.config.cwd || process.cwd()).replaceAll("{workspaceRoot}", context.config.cwd || process.cwd()).replaceAll("{root}", context.config.root).replaceAll("{projectRoot}", context.config.root).replaceAll("{sourceRoot}", joinPaths(context.config.root, "src")).replaceAll("{powerlinesPath}", context.powerlinesPath).replaceAll("{cachePath}", context.cachePath).replaceAll("{dataPath}", context.dataPath).replaceAll("{logPath}", context.envPaths.log).replaceAll("{tempPath}", context.envPaths.temp).replaceAll("{configPath}", context.envPaths.config).replaceAll("{outputPath}", context.config.output.path).replaceAll("{output}", context.config.output.path).replaceAll("{artifactsPath}", replacePath(context.artifactsPath, context.config.cwd)).replaceAll("{builtinPath}", replacePath(context.builtinsPath, context.config.cwd)).replaceAll("{builtinsPath}", replacePath(context.builtinsPath, context.config.cwd)).replaceAll("{entryPath}", replacePath(context.entryPath, context.config.cwd));
46
46
  return context.config.output.copy && isSetString(context.config.output.copy.path) ? result.replaceAll("{copyPath}", context.config.output.copy.path).replaceAll("{copy}", context.config.output.copy.path) : result;
47
47
  }
48
48
 
@@ -1 +1 @@
1
- {"version":3,"file":"paths.mjs","names":[],"sources":["../../src/plugin-utils/paths.ts"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Powerlines\n\n This code was released as part of the Powerlines project. Powerlines\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/powerlines.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/powerlines\n Documentation: https://docs.stormsoftware.com/projects/powerlines\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport { joinPaths } from \"@stryke/path/join\";\nimport { replacePath } from \"@stryke/path/replace\";\nimport { isSetString } from \"@stryke/type-checks/is-set-string\";\nimport { IsUndefined } from \"@stryke/types/base\";\nimport { UnresolvedContext } from \"../types/context\";\n\n/**\n * Replaces tokens in the given path string with their corresponding values from the context.\n *\n * @remarks\n * The following tokens are supported:\n * - `{cwd}` - The current working directory.\n * - `{workspaceRoot}` - The current working directory (same as `{cwd}`).\n * - `{root}` - The root directory of the project (same as `{projectRoot}`).\n * - `{projectRoot}` - The root directory of the project (same as `{root}`).\n * - `{sourceRoot}` - The source root directory of the project (usually `{root}/src`).\n * - `{powerlinesPath}` - The directory where Powerlines is installed.\n * - `{cachePath}` - The environment's directory for cached files.\n * - `{dataPath}` - The environment's directory for data files.\n * - `{logPath}` - The environment's directory for log files.\n * - `{tempPath}` - The environment's directory for temporary files.\n * - `{configPath}` - The environment's directory for configuration files.\n * - `{output}` - The configured output directory for the project.\n * - `{outputPath}` - The configured output directory for the project.\n * - `{copy}` - The configured final/copied distribution directory for the project.\n * - `{copyPath}` - The configured final/copied distribution directory for the project.\n * - `{artifactsPath}` - The configured directory for build artifacts.\n * - `{builtinPath}` - The configured directory for generated built-in plugins.\n * - `{entryPath}` - The configured directory for generated entry files.\n *\n * @example\n * ```ts\n * const path = replacePathTokens(context, \"{root}/dist\");\n * // If context.config.root is \"/home/user/project\", this will return \"/home/user/project/dist\"\n *\n * const pathWithCopy = replacePathTokens(context, \"{copy}\");\n * // If context.config.output.copy.path is \"/home/user/project/dist-copy\", this will return \"/home/user/project/dist-copy\"\n * ```\n *\n * @param context - The context containing the values for the path tokens.\n * @param path - The path string with tokens to replace.\n * @returns The path string with tokens replaced by their corresponding values from the context.\n */\nexport function replacePathTokens(\n context: UnresolvedContext,\n path?: string\n): IsUndefined<typeof path> extends true ? undefined : string {\n if (!path) {\n return path as IsUndefined<typeof path> extends true ? undefined : string;\n }\n\n const result = path\n .replaceAll(\"{cwd}\", context.config.cwd || process.cwd() || \"./\")\n .replaceAll(\"{workspaceRoot}\", context.config.cwd || process.cwd() || \"./\")\n .replaceAll(\"{root}\", context.config.root)\n .replaceAll(\"{projectRoot}\", context.config.root)\n .replaceAll(\"{sourceRoot}\", joinPaths(context.config.root, \"src\"))\n .replaceAll(\"{powerlinesPath}\", context.powerlinesPath)\n .replaceAll(\"{cachePath}\", context.cachePath)\n .replaceAll(\"{dataPath}\", context.dataPath)\n .replaceAll(\"{logPath}\", context.envPaths.log)\n .replaceAll(\"{tempPath}\", context.envPaths.temp)\n .replaceAll(\"{configPath}\", context.envPaths.config)\n .replaceAll(\"{outputPath}\", context.config.output.path)\n .replaceAll(\"{output}\", context.config.output.path)\n\n .replaceAll(\n \"{artifactsPath}\",\n replacePath(context.artifactsPath, context.config.cwd)\n )\n .replaceAll(\n \"{builtinPath}\",\n replacePath(context.builtinsPath, context.config.cwd)\n )\n .replaceAll(\n \"{builtinsPath}\",\n replacePath(context.builtinsPath, context.config.cwd)\n )\n .replaceAll(\n \"{entryPath}\",\n replacePath(context.entryPath, context.config.cwd)\n );\n\n return context.config.output.copy &&\n isSetString(context.config.output.copy.path)\n ? result\n .replaceAll(\"{copyPath}\", context.config.output.copy.path)\n .replaceAll(\"{copy}\", context.config.output.copy.path)\n : result;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6DA,SAAgB,kBACd,SACA,MAC4D;AAC5D,KAAI,CAAC,KACH,QAAO;CAGT,MAAM,SAAS,KACZ,WAAW,SAAS,QAAQ,OAAO,OAAO,QAAQ,KAAK,IAAI,KAAK,CAChE,WAAW,mBAAmB,QAAQ,OAAO,OAAO,QAAQ,KAAK,IAAI,KAAK,CAC1E,WAAW,UAAU,QAAQ,OAAO,KAAK,CACzC,WAAW,iBAAiB,QAAQ,OAAO,KAAK,CAChD,WAAW,gBAAgB,UAAU,QAAQ,OAAO,MAAM,MAAM,CAAC,CACjE,WAAW,oBAAoB,QAAQ,eAAe,CACtD,WAAW,eAAe,QAAQ,UAAU,CAC5C,WAAW,cAAc,QAAQ,SAAS,CAC1C,WAAW,aAAa,QAAQ,SAAS,IAAI,CAC7C,WAAW,cAAc,QAAQ,SAAS,KAAK,CAC/C,WAAW,gBAAgB,QAAQ,SAAS,OAAO,CACnD,WAAW,gBAAgB,QAAQ,OAAO,OAAO,KAAK,CACtD,WAAW,YAAY,QAAQ,OAAO,OAAO,KAAK,CAElD,WACC,mBACA,YAAY,QAAQ,eAAe,QAAQ,OAAO,IAAI,CACvD,CACA,WACC,iBACA,YAAY,QAAQ,cAAc,QAAQ,OAAO,IAAI,CACtD,CACA,WACC,kBACA,YAAY,QAAQ,cAAc,QAAQ,OAAO,IAAI,CACtD,CACA,WACC,eACA,YAAY,QAAQ,WAAW,QAAQ,OAAO,IAAI,CACnD;AAEH,QAAO,QAAQ,OAAO,OAAO,QAC3B,YAAY,QAAQ,OAAO,OAAO,KAAK,KAAK,GAC1C,OACG,WAAW,cAAc,QAAQ,OAAO,OAAO,KAAK,KAAK,CACzD,WAAW,UAAU,QAAQ,OAAO,OAAO,KAAK,KAAK,GACxD"}
1
+ {"version":3,"file":"paths.mjs","names":[],"sources":["../../src/plugin-utils/paths.ts"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Powerlines\n\n This code was released as part of the Powerlines project. Powerlines\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/powerlines.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/powerlines\n Documentation: https://docs.stormsoftware.com/projects/powerlines\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport { joinPaths } from \"@stryke/path/join\";\nimport { replacePath } from \"@stryke/path/replace\";\nimport { isSetString } from \"@stryke/type-checks/is-set-string\";\nimport { IsUndefined } from \"@stryke/types/base\";\nimport { UnresolvedContext } from \"../types/context\";\n\n/**\n * Replaces tokens in the given path string with their corresponding values from the context.\n *\n * @remarks\n * The following tokens are supported:\n * - `{cwd}` - The current working directory.\n * - `{workspaceRoot}` - The current working directory (same as `{cwd}`).\n * - `{root}` - The root directory of the project (same as `{projectRoot}`).\n * - `{projectRoot}` - The root directory of the project (same as `{root}`).\n * - `{sourceRoot}` - The source root directory of the project (usually `{root}/src`).\n * - `{powerlinesPath}` - The directory where Powerlines is installed.\n * - `{cachePath}` - The environment's directory for cached files.\n * - `{dataPath}` - The environment's directory for data files.\n * - `{logPath}` - The environment's directory for log files.\n * - `{tempPath}` - The environment's directory for temporary files.\n * - `{configPath}` - The environment's directory for configuration files.\n * - `{output}` - The configured output directory for the project.\n * - `{outputPath}` - The configured output directory for the project.\n * - `{copy}` - The configured final/copied distribution directory for the project.\n * - `{copyPath}` - The configured final/copied distribution directory for the project.\n * - `{artifactsPath}` - The configured directory for build artifacts.\n * - `{builtinPath}` - The configured directory for generated built-in plugins.\n * - `{entryPath}` - The configured directory for generated entry files.\n *\n * @example\n * ```ts\n * const path = replacePathTokens(context, \"{root}/dist\");\n * // If context.config.root is \"/home/user/project\", this will return \"/home/user/project/dist\"\n *\n * const pathWithCopy = replacePathTokens(context, \"{copy}\");\n * // If context.config.output.copy.path is \"/home/user/project/dist-copy\", this will return \"/home/user/project/dist-copy\"\n * ```\n *\n * @param context - The context containing the values for the path tokens.\n * @param path - The path string with tokens to replace.\n * @returns The path string with tokens replaced by their corresponding values from the context.\n */\nexport function replacePathTokens(\n context: UnresolvedContext,\n path?: string\n): IsUndefined<typeof path> extends true ? undefined : string {\n if (!path) {\n return path as IsUndefined<typeof path> extends true ? undefined : string;\n }\n\n const result = path\n .replaceAll(\"{cwd}\", context.config.cwd || process.cwd())\n .replaceAll(\"{workspaceRoot}\", context.config.cwd || process.cwd())\n .replaceAll(\"{root}\", context.config.root)\n .replaceAll(\"{projectRoot}\", context.config.root)\n .replaceAll(\"{sourceRoot}\", joinPaths(context.config.root, \"src\"))\n .replaceAll(\"{powerlinesPath}\", context.powerlinesPath)\n .replaceAll(\"{cachePath}\", context.cachePath)\n .replaceAll(\"{dataPath}\", context.dataPath)\n .replaceAll(\"{logPath}\", context.envPaths.log)\n .replaceAll(\"{tempPath}\", context.envPaths.temp)\n .replaceAll(\"{configPath}\", context.envPaths.config)\n .replaceAll(\"{outputPath}\", context.config.output.path)\n .replaceAll(\"{output}\", context.config.output.path)\n .replaceAll(\n \"{artifactsPath}\",\n replacePath(context.artifactsPath, context.config.cwd)\n )\n .replaceAll(\n \"{builtinPath}\",\n replacePath(context.builtinsPath, context.config.cwd)\n )\n .replaceAll(\n \"{builtinsPath}\",\n replacePath(context.builtinsPath, context.config.cwd)\n )\n .replaceAll(\n \"{entryPath}\",\n replacePath(context.entryPath, context.config.cwd)\n );\n\n return context.config.output.copy &&\n isSetString(context.config.output.copy.path)\n ? result\n .replaceAll(\"{copyPath}\", context.config.output.copy.path)\n .replaceAll(\"{copy}\", context.config.output.copy.path)\n : result;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6DA,SAAgB,kBACd,SACA,MAC4D;AAC5D,KAAI,CAAC,KACH,QAAO;CAGT,MAAM,SAAS,KACZ,WAAW,SAAS,QAAQ,OAAO,OAAO,QAAQ,KAAK,CAAC,CACxD,WAAW,mBAAmB,QAAQ,OAAO,OAAO,QAAQ,KAAK,CAAC,CAClE,WAAW,UAAU,QAAQ,OAAO,KAAK,CACzC,WAAW,iBAAiB,QAAQ,OAAO,KAAK,CAChD,WAAW,gBAAgB,UAAU,QAAQ,OAAO,MAAM,MAAM,CAAC,CACjE,WAAW,oBAAoB,QAAQ,eAAe,CACtD,WAAW,eAAe,QAAQ,UAAU,CAC5C,WAAW,cAAc,QAAQ,SAAS,CAC1C,WAAW,aAAa,QAAQ,SAAS,IAAI,CAC7C,WAAW,cAAc,QAAQ,SAAS,KAAK,CAC/C,WAAW,gBAAgB,QAAQ,SAAS,OAAO,CACnD,WAAW,gBAAgB,QAAQ,OAAO,OAAO,KAAK,CACtD,WAAW,YAAY,QAAQ,OAAO,OAAO,KAAK,CAClD,WACC,mBACA,YAAY,QAAQ,eAAe,QAAQ,OAAO,IAAI,CACvD,CACA,WACC,iBACA,YAAY,QAAQ,cAAc,QAAQ,OAAO,IAAI,CACtD,CACA,WACC,kBACA,YAAY,QAAQ,cAAc,QAAQ,OAAO,IAAI,CACtD,CACA,WACC,eACA,YAAY,QAAQ,WAAW,QAAQ,OAAO,IAAI,CACnD;AAEH,QAAO,QAAQ,OAAO,OAAO,QAC3B,YAAY,QAAQ,OAAO,OAAO,KAAK,KAAK,GAC1C,OACG,WAAW,cAAc,QAAQ,OAAO,OAAO,KAAK,KAAK,CACzD,WAAW,UAAU,QAAQ,OAAO,OAAO,KAAK,KAAK,GACxD"}
@@ -106,6 +106,7 @@ interface Logger {
106
106
  info: (message: string | LoggerMessage) => void;
107
107
  debug: (message: string | LoggerMessage) => void;
108
108
  trace: (message: string | LoggerMessage) => void;
109
+ log: (type: LogLevel, message: string | LoggerMessage) => void;
109
110
  }
110
111
  /**
111
112
  * A type representing a log message that can be passed to a custom logger, which includes the log metadata and message content. This type is used as the parameter for the logging methods defined in the {@link CustomLogger} interface, allowing users to log messages with rich metadata that can be used for filtering, formatting, or other purposes in their custom logging implementation.
@@ -151,7 +152,7 @@ interface CustomLogger {
151
152
  */
152
153
  trace?: (message: CustomLoggerMessage) => void;
153
154
  }
154
- type LogLevelUserConfig = LogLevel | RequiredKeys<Record<LogCategory, LogLevel | boolean | undefined>, "general">;
155
+ type LogLevelUserConfig = LogLevel | RequiredKeys<Partial<Record<LogCategory, LogLevel | boolean | undefined>>, "general">;
155
156
  type LogLevelResolvedConfig = Record<LogCategory, LogLevel>;
156
157
  declare type __ΩLogLevel = any[];
157
158
  declare type __ΩLogCategory = any[];
@@ -1 +1 @@
1
- {"version":3,"file":"logging.d.cts","names":[],"sources":["../../src/types/logging.ts"],"mappings":";;;;;cAsBa,SAAA;EAAA;;;;;;;cASA,UAAA;AAAA,KASD,QAAA,WAAmB,UAAA;AAAA,cAElB,aAAA;EAAA;;;;;;;;;;;cAaA,cAAA;AAAA,KAaD,WAAA,WAAsB,cAAA;AAAA,UAEjB,OAAA;EAjBP;;;EAqBR,KAAA;;;;EAIA,IAAA,EAAM,QAAA;;;;EAIN,QAAA,EAAU,WAAA;;;;EAIV,SAAA;EApBQ;;;EAwBR,IAAA;EAtBU;;;EA0BV,WAAA;EA1B8C;AAEhD;;EA4BE,cAAA;EAhBqB;;;EAoBrB,OAAA;EApBA;;;EAwBA,IAAA;EAZA;;;EAgBA,WAAA;EAAA;;;EAIA,MAAA;EAIM;AAGR;;EAHE,MAAA;AAAA;AAAA,KAGU,YAAA,GAAe,IAAA,CACzB,OAAA,CAAQ,OAAA;EAGR,IAAA,GAAO,IAAA;EACP,QAAA,GAAW,kBAAA;AAAA;AAAA,KAGD,SAAA,GACR,QAAA,GACA,WAAA,CAAY,OAAA;AAAA,KAEJ,KAAA,IAAS,IAAA,EAAM,SAAA,KAAc,IAAA;AAAA,KAE7B,UAAA,GAAa,WAAA,CACvB,IAAA,CAAK,OAAA;AAAA,KAIK,aAAA,GAAgB,IAAA,CAAK,UAAA;EAC/B,IAAA,GAAO,IAAA;EACP,QAAA,GAAW,kBAAA;AAAA;AAAA,UAGI,iBAAA,gBAAiC,eAAA;EAChD,IAAA,EAAM,KAAA;AAAA;AAAA,KAGI,UAAA,GAAa,iBAAA,CAAkB,OAAA,CAAQ,OAAA;AApBnD;;;AAAA,KAyBY,aAAA,GAAgB,iBAAA,CAAkB,UAAA;;;;UAK7B,MAAA;EACf,OAAA,EAAS,aAAA;EACT,KAAA,GAAQ,OAAA,WAAkB,aAAA;EAC1B,IAAA,GAAO,OAAA,WAAkB,aAAA;EACzB,IAAA,GAAO,OAAA,WAAkB,aAAA;EACzB,KAAA,GAAQ,OAAA,WAAkB,aAAA;EAC1B,KAAA,GAAQ,OAAA,WAAkB,aAAA;AAAA;;;;KAMhB,mBAAA,GAAsB,iBAAA,CAAkB,IAAA,CAAK,OAAA;;;;UAKxC,YAAA;EAzCK;;;;;;EAgDpB,KAAA,IAAS,OAAA,EAAS,mBAAA;EAhDK;;;;;AAKzB;EAkDE,IAAA,IAAQ,OAAA,EAAS,mBAAA;;;;;;;EAOjB,IAAA,IAAQ,OAAA,EAAS,mBAAA;EAzDS;;;;;;EAgE1B,KAAA,IAAS,OAAA,EAAS,mBAAA;EA9DW;AAG/B;;;;;EAkEE,KAAA,IAAS,OAAA,EAAS,mBAAA;AAAA;AAAA,KAGR,kBAAA,GACR,QAAA,GACA,YAAA,CACE,MAAA,CAAO,WAAA,EAAa,QAAA;AAAA,KAId,sBAAA,GAAyB,MAAA,CAAO,WAAA,EAAa,QAAA;AAAA"}
1
+ {"version":3,"file":"logging.d.cts","names":[],"sources":["../../src/types/logging.ts"],"mappings":";;;;;cAsBa,SAAA;EAAA;;;;;;;cASA,UAAA;AAAA,KASD,QAAA,WAAmB,UAAA;AAAA,cAElB,aAAA;EAAA;;;;;;;;;;;cAaA,cAAA;AAAA,KAaD,WAAA,WAAsB,cAAA;AAAA,UAEjB,OAAA;EAjBP;;;EAqBR,KAAA;;;;EAIA,IAAA,EAAM,QAAA;;;;EAIN,QAAA,EAAU,WAAA;;;;EAIV,SAAA;EApBQ;;;EAwBR,IAAA;EAtBU;;;EA0BV,WAAA;EA1B8C;AAEhD;;EA4BE,cAAA;EAhBqB;;;EAoBrB,OAAA;EApBA;;;EAwBA,IAAA;EAZA;;;EAgBA,WAAA;EAAA;;;EAIA,MAAA;EAIM;AAGR;;EAHE,MAAA;AAAA;AAAA,KAGU,YAAA,GAAe,IAAA,CACzB,OAAA,CAAQ,OAAA;EAGR,IAAA,GAAO,IAAA;EACP,QAAA,GAAW,kBAAA;AAAA;AAAA,KAGD,SAAA,GACR,QAAA,GACA,WAAA,CAAY,OAAA;AAAA,KAEJ,KAAA,IAAS,IAAA,EAAM,SAAA,KAAc,IAAA;AAAA,KAE7B,UAAA,GAAa,WAAA,CACvB,IAAA,CAAK,OAAA;AAAA,KAIK,aAAA,GAAgB,IAAA,CAAK,UAAA;EAC/B,IAAA,GAAO,IAAA;EACP,QAAA,GAAW,kBAAA;AAAA;AAAA,UAGI,iBAAA,gBAAiC,eAAA;EAChD,IAAA,EAAM,KAAA;AAAA;AAAA,KAGI,UAAA,GAAa,iBAAA,CAAkB,OAAA,CAAQ,OAAA;AApBnD;;;AAAA,KAyBY,aAAA,GAAgB,iBAAA,CAAkB,UAAA;;;;UAK7B,MAAA;EACf,OAAA,EAAS,aAAA;EACT,KAAA,GAAQ,OAAA,WAAkB,aAAA;EAC1B,IAAA,GAAO,OAAA,WAAkB,aAAA;EACzB,IAAA,GAAO,OAAA,WAAkB,aAAA;EACzB,KAAA,GAAQ,OAAA,WAAkB,aAAA;EAC1B,KAAA,GAAQ,OAAA,WAAkB,aAAA;EAC1B,GAAA,GAAM,IAAA,EAAM,QAAA,EAAU,OAAA,WAAkB,aAAA;AAAA;;;;KAM9B,mBAAA,GAAsB,iBAAA,CAAkB,IAAA,CAAK,OAAA;;;AArCzD;UA0CiB,YAAA;;;;;;;EAOf,KAAA,IAAS,OAAA,EAAS,mBAAA;EAhDlB;;;;AAIF;;EAmDE,IAAA,IAAQ,OAAA,EAAS,mBAAA;EAnDc;;;;;;EA0D/B,IAAA,IAAQ,OAAA,EAAS,mBAAA;EA1Dc;;;;;;EAiE/B,KAAA,IAAS,OAAA,EAAS,mBAAA;EA5DH;;;;;;EAmEf,KAAA,IAAS,OAAA,EAAS,mBAAA;AAAA;AAAA,KAGR,kBAAA,GACR,QAAA,GACA,YAAA,CACE,OAAA,CAAQ,MAAA,CAAO,WAAA,EAAa,QAAA;AAAA,KAItB,sBAAA,GAAyB,MAAA,CAAO,WAAA,EAAa,QAAA;AAAA"}