@haskou/ddd-kernel 2.0.1 → 2.0.2

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 (57) hide show
  1. package/dist/{RetryPredicate-DNdxY_KR.d.cts → RetryPredicate-BFGD3FUP.d.cts} +1 -1
  2. package/dist/{RetryPredicate-CD9n6cE8.d.ts → RetryPredicate-CuL59f8-.d.ts} +1 -1
  3. package/dist/{ServiceClass-BkEHcXDi.d.cts → ServiceClass-Cv5KbUSf.d.cts} +1 -0
  4. package/dist/{ServiceClass-Bq_fBC5R.d.ts → ServiceClass-DXDAxvao.d.ts} +1 -0
  5. package/dist/{ShutdownHook-D23WfIIc.d.cts → ShutdownHook-6-YKfmzG.d.cts} +4 -1
  6. package/dist/{ShutdownHook-CUl7zYwd.d.ts → ShutdownHook-dvsrwsQi.d.ts} +4 -1
  7. package/dist/adapters/index.cjs +74 -12
  8. package/dist/adapters/index.cjs.map +1 -1
  9. package/dist/adapters/index.d.cts +3 -3
  10. package/dist/adapters/index.d.ts +3 -3
  11. package/dist/adapters/index.js +74 -12
  12. package/dist/adapters/index.js.map +1 -1
  13. package/dist/adapters/pubsub/amqp/index.cjs +74 -12
  14. package/dist/adapters/pubsub/amqp/index.cjs.map +1 -1
  15. package/dist/adapters/pubsub/amqp/index.js +74 -12
  16. package/dist/adapters/pubsub/amqp/index.js.map +1 -1
  17. package/dist/adapters/pubsub/index.cjs +74 -12
  18. package/dist/adapters/pubsub/index.cjs.map +1 -1
  19. package/dist/adapters/pubsub/index.d.cts +3 -3
  20. package/dist/adapters/pubsub/index.d.ts +3 -3
  21. package/dist/adapters/pubsub/index.js +74 -12
  22. package/dist/adapters/pubsub/index.js.map +1 -1
  23. package/dist/adapters/ui/express/index.d.cts +2 -2
  24. package/dist/adapters/ui/express/index.d.ts +2 -2
  25. package/dist/adapters/ui/index.cjs +74 -12
  26. package/dist/adapters/ui/index.cjs.map +1 -1
  27. package/dist/adapters/ui/index.d.cts +2 -2
  28. package/dist/adapters/ui/index.d.ts +2 -2
  29. package/dist/adapters/ui/index.js +74 -12
  30. package/dist/adapters/ui/index.js.map +1 -1
  31. package/dist/adapters/ui/routes/index.cjs +74 -12
  32. package/dist/adapters/ui/routes/index.cjs.map +1 -1
  33. package/dist/adapters/ui/routes/index.js +74 -12
  34. package/dist/adapters/ui/routes/index.js.map +1 -1
  35. package/dist/contracts/index.d.cts +3 -3
  36. package/dist/contracts/index.d.ts +3 -3
  37. package/dist/contracts/kernel/index.d.cts +3 -3
  38. package/dist/contracts/kernel/index.d.ts +3 -3
  39. package/dist/index.cjs +74 -12
  40. package/dist/index.cjs.map +1 -1
  41. package/dist/index.d.cts +3 -3
  42. package/dist/index.d.ts +3 -3
  43. package/dist/index.js +74 -12
  44. package/dist/index.js.map +1 -1
  45. package/dist/infrastructure/dependency-injection/index.cjs +38 -1
  46. package/dist/infrastructure/dependency-injection/index.cjs.map +1 -1
  47. package/dist/infrastructure/dependency-injection/index.d.cts +12 -2
  48. package/dist/infrastructure/dependency-injection/index.d.ts +12 -2
  49. package/dist/infrastructure/dependency-injection/index.js +37 -1
  50. package/dist/infrastructure/dependency-injection/index.js.map +1 -1
  51. package/dist/infrastructure/express/index.d.cts +2 -2
  52. package/dist/infrastructure/express/index.d.ts +2 -2
  53. package/dist/infrastructure/scheduler/index.cjs +74 -12
  54. package/dist/infrastructure/scheduler/index.cjs.map +1 -1
  55. package/dist/infrastructure/scheduler/index.js +74 -12
  56. package/dist/infrastructure/scheduler/index.js.map +1 -1
  57. package/package.json +2 -1
@@ -66,6 +66,32 @@ var ConsoleKernelLogger = class {
66
66
  import dotenv from "dotenv";
67
67
  import path2 from "path";
68
68
 
69
+ // src/infrastructure/dependency-injection/AutowireWarningFilter.ts
70
+ var AutowireWarningFilter = class {
71
+ constructor(logger) {
72
+ this.logger = logger;
73
+ }
74
+ logger;
75
+ isIgnorableAutowireWarning(message) {
76
+ return message.startsWith(
77
+ "Autowire: file has export default declaration but no runtime default export:"
78
+ ) || message.startsWith("Autowire: failed to create definition for undefined:");
79
+ }
80
+ warn(message, ...optionalParams) {
81
+ if (typeof message === "string" && this.isIgnorableAutowireWarning(message)) {
82
+ this.logger.debug?.(`Ignored ${message}`, ...optionalParams);
83
+ return;
84
+ }
85
+ this.logger.warn(message, ...optionalParams);
86
+ }
87
+ info(message, ...optionalParams) {
88
+ this.logger.info?.(message, ...optionalParams);
89
+ }
90
+ debug(message, ...optionalParams) {
91
+ this.logger.debug?.(message, ...optionalParams);
92
+ }
93
+ };
94
+
69
95
  // src/infrastructure/dependency-injection/DependencyInjection.ts
70
96
  import fs from "fs-extra";
71
97
  import {
@@ -270,6 +296,15 @@ var DependencyInjection = class _DependencyInjection {
270
296
  this.applyValueOverride(override);
271
297
  }
272
298
  }
299
+ async processAutowire() {
300
+ const previousLogger = this.container.logger;
301
+ this.container.logger = new AutowireWarningFilter(previousLogger);
302
+ try {
303
+ await this.autowire?.process();
304
+ } finally {
305
+ this.container.logger = previousLogger;
306
+ }
307
+ }
273
308
  registerParentAliases() {
274
309
  for (const [id, definition] of this.definitions.entries()) {
275
310
  if (definition._abstract === true || !definition._parent) {
@@ -286,7 +321,7 @@ var DependencyInjection = class _DependencyInjection {
286
321
  this.options.servicesYamlPath,
287
322
  false
288
323
  );
289
- await this.autowire.process();
324
+ await this.processAutowire();
290
325
  } else {
291
326
  this.loader = new YamlFileLoader(this.container);
292
327
  await this.loader.load(this.options.servicesYamlPath);
@@ -395,6 +430,13 @@ var Kernel = class _Kernel {
395
430
  );
396
431
  }
397
432
  }
433
+ static assertRequiredEnvironmentVariableIsNotBlank(name, value, schema) {
434
+ if (schema[name]?.required === true && value.trim() === "") {
435
+ throw new KernelEnvironmentValidationError(
436
+ `Blank required environment variable "${name}".`
437
+ );
438
+ }
439
+ }
398
440
  static assertEnvironmentVariableChoice(name, value, schema) {
399
441
  const choices = schema[name]?.choices;
400
442
  if (choices && !choices.includes(value)) {
@@ -417,21 +459,16 @@ var Kernel = class _Kernel {
417
459
  return false;
418
460
  }
419
461
  throw new KernelEnvironmentValidationError(
420
- `Environment variable "${name}" must be a boolean.`
462
+ `Environment variable "${name}" has invalid boolean value "${value}".`
421
463
  );
422
464
  }
423
465
  static parseNumberEnvironmentVariable(name, value) {
424
- if (value.trim() === "") {
425
- throw new KernelEnvironmentValidationError(
426
- `Environment variable "${name}" must be a number.`
427
- );
428
- }
429
466
  const parsedValue = Number(value);
430
467
  if (Number.isFinite(parsedValue)) {
431
468
  return parsedValue;
432
469
  }
433
470
  throw new KernelEnvironmentValidationError(
434
- `Environment variable "${name}" must be a number.`
471
+ `Environment variable "${name}" has invalid number value "${value}".`
435
472
  );
436
473
  }
437
474
  static parseEnvironmentVariable(name, value, schema) {
@@ -449,17 +486,42 @@ var Kernel = class _Kernel {
449
486
  _Kernel.assertEnvironmentVariableChoice(name, value, schema);
450
487
  return value;
451
488
  }
489
+ static getEnvironmentVariableValue(name, definition, schema) {
490
+ const value = process.env[name];
491
+ _Kernel.assertRequiredEnvironmentVariable(name, value, schema);
492
+ if (value !== void 0) {
493
+ _Kernel.assertRequiredEnvironmentVariableIsNotBlank(name, value, schema);
494
+ }
495
+ if (value !== void 0 && value.trim() !== "") {
496
+ return value;
497
+ }
498
+ return definition.defaultValue?.toString();
499
+ }
500
+ static shouldUnsetBlankOptionalEnvironmentVariable(name, value, valueOrDefault, schema) {
501
+ return value !== void 0 && value.trim() === "" && valueOrDefault === void 0 && schema[name]?.required !== true;
502
+ }
452
503
  static validateEnvironmentVariables(schema) {
453
504
  const environmentVariables = {};
454
505
  for (const [name, definition] of Object.entries(schema)) {
455
- const value = process.env[name] ?? definition.defaultValue?.toString();
456
- _Kernel.assertRequiredEnvironmentVariable(name, value, schema);
457
- if (value !== void 0) {
506
+ const value = process.env[name];
507
+ const valueOrDefault = _Kernel.getEnvironmentVariableValue(
508
+ name,
509
+ definition,
510
+ schema
511
+ );
512
+ if (valueOrDefault !== void 0) {
458
513
  environmentVariables[name] = _Kernel.parseEnvironmentVariable(
459
514
  name,
460
- value,
515
+ valueOrDefault,
461
516
  schema
462
517
  );
518
+ } else if (_Kernel.shouldUnsetBlankOptionalEnvironmentVariable(
519
+ name,
520
+ value,
521
+ valueOrDefault,
522
+ schema
523
+ )) {
524
+ environmentVariables[name] = void 0;
463
525
  }
464
526
  }
465
527
  return {