@bgord/bun 1.1.5 → 1.1.6

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 (117) hide show
  1. package/dist/healthcheck.service.d.ts +7 -4
  2. package/dist/healthcheck.service.d.ts.map +1 -1
  3. package/dist/healthcheck.service.js +1 -1
  4. package/dist/healthcheck.service.js.map +1 -1
  5. package/dist/prerequisites/binary.d.ts +2 -1
  6. package/dist/prerequisites/binary.d.ts.map +1 -1
  7. package/dist/prerequisites/binary.js +7 -5
  8. package/dist/prerequisites/binary.js.map +1 -1
  9. package/dist/prerequisites/bun.d.ts +2 -1
  10. package/dist/prerequisites/bun.d.ts.map +1 -1
  11. package/dist/prerequisites/bun.js +10 -5
  12. package/dist/prerequisites/bun.js.map +1 -1
  13. package/dist/prerequisites/clock-drift.d.ts +2 -2
  14. package/dist/prerequisites/clock-drift.d.ts.map +1 -1
  15. package/dist/prerequisites/clock-drift.js +7 -5
  16. package/dist/prerequisites/clock-drift.js.map +1 -1
  17. package/dist/prerequisites/dependency-vulnerabilities.d.ts +2 -1
  18. package/dist/prerequisites/dependency-vulnerabilities.d.ts.map +1 -1
  19. package/dist/prerequisites/dependency-vulnerabilities.js +8 -6
  20. package/dist/prerequisites/dependency-vulnerabilities.js.map +1 -1
  21. package/dist/prerequisites/directory.d.ts +3 -2
  22. package/dist/prerequisites/directory.d.ts.map +1 -1
  23. package/dist/prerequisites/directory.js +6 -4
  24. package/dist/prerequisites/directory.js.map +1 -1
  25. package/dist/prerequisites/external-api.d.ts +2 -1
  26. package/dist/prerequisites/external-api.d.ts.map +1 -1
  27. package/dist/prerequisites/external-api.js +7 -5
  28. package/dist/prerequisites/external-api.js.map +1 -1
  29. package/dist/prerequisites/jobs.d.ts +2 -1
  30. package/dist/prerequisites/jobs.d.ts.map +1 -1
  31. package/dist/prerequisites/jobs.js +6 -4
  32. package/dist/prerequisites/jobs.js.map +1 -1
  33. package/dist/prerequisites/log-file.d.ts +2 -1
  34. package/dist/prerequisites/log-file.d.ts.map +1 -1
  35. package/dist/prerequisites/log-file.js +7 -5
  36. package/dist/prerequisites/log-file.js.map +1 -1
  37. package/dist/prerequisites/mailer.d.ts +2 -1
  38. package/dist/prerequisites/mailer.d.ts.map +1 -1
  39. package/dist/prerequisites/mailer.js +6 -4
  40. package/dist/prerequisites/mailer.js.map +1 -1
  41. package/dist/prerequisites/memory.d.ts +2 -1
  42. package/dist/prerequisites/memory.d.ts.map +1 -1
  43. package/dist/prerequisites/memory.js +5 -4
  44. package/dist/prerequisites/memory.js.map +1 -1
  45. package/dist/prerequisites/node.d.ts +2 -1
  46. package/dist/prerequisites/node.d.ts.map +1 -1
  47. package/dist/prerequisites/node.js +8 -5
  48. package/dist/prerequisites/node.js.map +1 -1
  49. package/dist/prerequisites/outside-connectivity.d.ts +2 -1
  50. package/dist/prerequisites/outside-connectivity.d.ts.map +1 -1
  51. package/dist/prerequisites/outside-connectivity.js +7 -5
  52. package/dist/prerequisites/outside-connectivity.js.map +1 -1
  53. package/dist/prerequisites/port.d.ts +2 -1
  54. package/dist/prerequisites/port.d.ts.map +1 -1
  55. package/dist/prerequisites/port.js +6 -4
  56. package/dist/prerequisites/port.js.map +1 -1
  57. package/dist/prerequisites/ram.d.ts +2 -1
  58. package/dist/prerequisites/ram.d.ts.map +1 -1
  59. package/dist/prerequisites/ram.js +7 -4
  60. package/dist/prerequisites/ram.js.map +1 -1
  61. package/dist/prerequisites/running-user.d.ts +2 -1
  62. package/dist/prerequisites/running-user.d.ts.map +1 -1
  63. package/dist/prerequisites/running-user.js +6 -4
  64. package/dist/prerequisites/running-user.js.map +1 -1
  65. package/dist/prerequisites/self.d.ts +2 -1
  66. package/dist/prerequisites/self.d.ts.map +1 -1
  67. package/dist/prerequisites/self.js +5 -3
  68. package/dist/prerequisites/self.js.map +1 -1
  69. package/dist/prerequisites/space.d.ts +2 -1
  70. package/dist/prerequisites/space.d.ts.map +1 -1
  71. package/dist/prerequisites/space.js +6 -5
  72. package/dist/prerequisites/space.js.map +1 -1
  73. package/dist/prerequisites/sqlite.d.ts +2 -1
  74. package/dist/prerequisites/sqlite.d.ts.map +1 -1
  75. package/dist/prerequisites/sqlite.js +7 -5
  76. package/dist/prerequisites/sqlite.js.map +1 -1
  77. package/dist/prerequisites/ssl-certificate-expiry.d.ts +2 -1
  78. package/dist/prerequisites/ssl-certificate-expiry.d.ts.map +1 -1
  79. package/dist/prerequisites/ssl-certificate-expiry.js +9 -5
  80. package/dist/prerequisites/ssl-certificate-expiry.js.map +1 -1
  81. package/dist/prerequisites/timezone-utc.d.ts +3 -2
  82. package/dist/prerequisites/timezone-utc.d.ts.map +1 -1
  83. package/dist/prerequisites/timezone-utc.js +6 -4
  84. package/dist/prerequisites/timezone-utc.js.map +1 -1
  85. package/dist/prerequisites/translations.d.ts +2 -1
  86. package/dist/prerequisites/translations.d.ts.map +1 -1
  87. package/dist/prerequisites/translations.js +8 -6
  88. package/dist/prerequisites/translations.js.map +1 -1
  89. package/dist/prerequisites.service.d.ts +24 -14
  90. package/dist/prerequisites.service.d.ts.map +1 -1
  91. package/dist/prerequisites.service.js +15 -11
  92. package/dist/prerequisites.service.js.map +1 -1
  93. package/dist/tsconfig.tsbuildinfo +1 -1
  94. package/package.json +2 -2
  95. package/src/healthcheck.service.ts +1 -1
  96. package/src/prerequisites/binary.ts +9 -5
  97. package/src/prerequisites/bun.ts +12 -5
  98. package/src/prerequisites/clock-drift.ts +8 -6
  99. package/src/prerequisites/dependency-vulnerabilities.ts +11 -6
  100. package/src/prerequisites/directory.ts +8 -5
  101. package/src/prerequisites/external-api.ts +9 -5
  102. package/src/prerequisites/jobs.ts +8 -4
  103. package/src/prerequisites/log-file.ts +9 -5
  104. package/src/prerequisites/mailer.ts +8 -4
  105. package/src/prerequisites/memory.ts +7 -4
  106. package/src/prerequisites/node.ts +10 -5
  107. package/src/prerequisites/outside-connectivity.ts +9 -5
  108. package/src/prerequisites/port.ts +10 -4
  109. package/src/prerequisites/ram.ts +9 -4
  110. package/src/prerequisites/running-user.ts +8 -4
  111. package/src/prerequisites/self.ts +7 -3
  112. package/src/prerequisites/space.ts +8 -5
  113. package/src/prerequisites/sqlite.ts +9 -5
  114. package/src/prerequisites/ssl-certificate-expiry.ts +12 -5
  115. package/src/prerequisites/timezone-utc.ts +8 -5
  116. package/src/prerequisites/translations.ts +10 -7
  117. package/src/prerequisites.service.ts +30 -15
@@ -15,10 +15,12 @@ export declare class Healthcheck {
15
15
  details: {
16
16
  label: prereqs.PrerequisiteLabelType;
17
17
  outcome: {
18
- readonly status: prereqs.PrerequisiteStatusEnum.success;
18
+ status: prereqs.PrerequisiteStatusEnum.success;
19
+ duration: tools.DurationMsType;
19
20
  } | {
20
- readonly status: prereqs.PrerequisiteStatusEnum.failure;
21
- readonly error?: {
21
+ status: prereqs.PrerequisiteStatusEnum.failure;
22
+ duration: tools.DurationMsType;
23
+ error?: {
22
24
  name?: string | undefined;
23
25
  message?: string | undefined;
24
26
  stack?: string | undefined;
@@ -29,7 +31,8 @@ export declare class Healthcheck {
29
31
  } | undefined;
30
32
  } | undefined;
31
33
  } | {
32
- readonly status: prereqs.PrerequisiteStatusEnum.undetermined;
34
+ status: prereqs.PrerequisiteStatusEnum.undetermined;
35
+ duration: tools.DurationMsType;
33
36
  };
34
37
  }[];
35
38
  uptime: {
@@ -1 +1 @@
1
- {"version":3,"file":"healthcheck.service.d.ts","sourceRoot":"","sources":["../src/healthcheck.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAGtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,KAAK,OAAO,MAAM,yBAAyB,CAAC;AAcnD,KAAK,YAAY,GAAG;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,cAAc,EAAE,kBAAkB,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,CAAC;AAEjG,qBAAa,WAAW;IACtB,MAAM,CAAC,KAAK,GAAI,eAAe,OAAO,CAAC,YAAY,EAAE,EAAE,MAAM,YAAY;YAXrE,OAAO,CAAC,sBAAsB;iBACzB,MAAM;;mBACG,OAAO,CAAC,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mCAZhC,2BAA2B;;;mBAczB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;uBAAa,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;;oBACrE,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;6BAqC3B;CACN"}
1
+ {"version":3,"file":"healthcheck.service.d.ts","sourceRoot":"","sources":["../src/healthcheck.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAGtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAEhD,OAAO,KAAK,OAAO,MAAM,yBAAyB,CAAC;AAcnD,KAAK,YAAY,GAAG;IAAE,KAAK,EAAE,SAAS,CAAC;IAAC,cAAc,EAAE,kBAAkB,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,CAAC;AAEjG,qBAAa,WAAW;IACtB,MAAM,CAAC,KAAK,GAAI,eAAe,OAAO,CAAC,YAAY,EAAE,EAAE,MAAM,YAAY;YAXrE,OAAO,CAAC,sBAAsB;iBACzB,MAAM;;mBACG,OAAO,CAAC,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mCAZhC,2BAA2B;;;mBAczB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;uBAAa,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;;oBACrE,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;6BAqC3B;CACN"}
@@ -11,7 +11,7 @@ export class Healthcheck {
11
11
  const buildInfo = await BuildInfoRepository.extract(deps);
12
12
  const details = [];
13
13
  for (const prerequisite of prerequisites) {
14
- details.push({ label: prerequisite.label, outcome: await prerequisite.verify() });
14
+ details.push({ label: prerequisite.label, outcome: await prerequisite.verify(deps.Clock) });
15
15
  }
16
16
  const ok = details.every((result) => result.outcome.status !== prereqs.PrerequisiteStatusEnum.failure)
17
17
  ? prereqs.PrerequisiteStatusEnum.success
@@ -1 +1 @@
1
- {"version":3,"file":"healthcheck.service.js","sourceRoot":"","sources":["../src/healthcheck.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAItE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,OAAO,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAyB,MAAM,kBAAkB,CAAC;AAEjE,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;AAahC,MAAM,OAAO,WAAW;IACtB,MAAM,CAAC,KAAK,GAAG,CAAC,aAAqC,EAAE,IAAkB,EAAE,EAAE,CAC3E,OAAO,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QACjC,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QAExD,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAE1D,MAAM,OAAO,GAA+C,EAAE,CAAC;QAE/D,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACpF,CAAC;QAED,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,sBAAsB,CAAC,OAAO,CAAC;YACpG,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC,OAAO;YACxC,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC,OAAO,CAAC;QAE3C,MAAM,IAAI,GAAG,EAAE,KAAK,OAAO,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAEvE,MAAM,MAAM,GAA0B;YACpC,EAAE;YACF,OAAO;YACP,OAAO,EAAE,SAAS,CAAC,aAAa,IAAI,SAAS;YAC7C,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;YAC9B,MAAM,EAAE;gBACN,KAAK,EAAE,iBAAiB,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE;gBACxC,SAAS,EAAE,iBAAiB,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;aAC9D;YACD,UAAU,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE;SAChC,CAAC;QAEF,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"healthcheck.service.js","sourceRoot":"","sources":["../src/healthcheck.service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAItE,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,OAAO,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAyB,MAAM,kBAAkB,CAAC;AAEjE,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;AAahC,MAAM,OAAO,WAAW;IACtB,MAAM,CAAC,KAAK,GAAG,CAAC,aAAqC,EAAE,IAAkB,EAAE,EAAE,CAC3E,OAAO,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QACjC,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QAExD,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAE1D,MAAM,OAAO,GAA+C,EAAE,CAAC;QAE/D,KAAK,MAAM,YAAY,IAAI,aAAa,EAAE,CAAC;YACzC,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC9F,CAAC;QAED,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,OAAO,CAAC,sBAAsB,CAAC,OAAO,CAAC;YACpG,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC,OAAO;YACxC,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC,OAAO,CAAC;QAE3C,MAAM,IAAI,GAAG,EAAE,KAAK,OAAO,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAEvE,MAAM,MAAM,GAA0B;YACpC,EAAE;YACF,OAAO;YACP,OAAO,EAAE,SAAS,CAAC,aAAa,IAAI,SAAS;YAC7C,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;YAC9B,MAAM,EAAE;gBACN,KAAK,EAAE,iBAAiB,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE;gBACxC,SAAS,EAAE,iBAAiB,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;aAC9D;YACD,UAAU,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE;SAChC,CAAC;QAEF,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { BinaryType } from "../binary.vo";
2
+ import type { ClockPort } from "../clock.port";
2
3
  import * as prereqs from "../prerequisites.service";
3
4
  export declare class PrerequisiteBinary implements prereqs.Prerequisite {
4
5
  readonly kind = "binary";
@@ -8,6 +9,6 @@ export declare class PrerequisiteBinary implements prereqs.Prerequisite {
8
9
  constructor(config: prereqs.PrerequisiteConfigType & {
9
10
  binary: BinaryType;
10
11
  });
11
- verify(): Promise<prereqs.VerifyOutcome>;
12
+ verify(clock: ClockPort): Promise<prereqs.VerifyOutcome>;
12
13
  }
13
14
  //# sourceMappingURL=binary.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"binary.d.ts","sourceRoot":"","sources":["../../src/prerequisites/binary.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AAEpD,qBAAa,kBAAmB,YAAW,OAAO,CAAC,YAAY;IAC7D,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,qBAAqB,CAAC;IAC9C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAQ;IAElC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;gBAExB,MAAM,EAAE,OAAO,CAAC,sBAAsB,GAAG;QAAE,MAAM,EAAE,UAAU,CAAA;KAAE;IAMrE,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;CAY/C"}
1
+ {"version":3,"file":"binary.d.ts","sourceRoot":"","sources":["../../src/prerequisites/binary.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AAEpD,qBAAa,kBAAmB,YAAW,OAAO,CAAC,YAAY;IAC7D,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,qBAAqB,CAAC;IAC9C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAQ;IAElC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;gBAExB,MAAM,EAAE,OAAO,CAAC,sBAAsB,GAAG;QAAE,MAAM,EAAE,UAAU,CAAA;KAAE;IAMrE,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;CAc/D"}
@@ -1,4 +1,5 @@
1
1
  import bun from "bun";
2
+ import * as tools from "@bgord/tools";
2
3
  import * as prereqs from "../prerequisites.service";
3
4
  export class PrerequisiteBinary {
4
5
  kind = "binary";
@@ -10,17 +11,18 @@ export class PrerequisiteBinary {
10
11
  this.enabled = config.enabled === undefined ? true : config.enabled;
11
12
  this.binary = config.binary;
12
13
  }
13
- async verify() {
14
+ async verify(clock) {
15
+ const stopwatch = new tools.Stopwatch(clock.now());
14
16
  try {
15
17
  if (!this.enabled)
16
- return prereqs.Verification.undetermined();
18
+ return prereqs.Verification.undetermined(stopwatch.stop());
17
19
  const result = await bun.$ `which ${this.binary}`.quiet();
18
20
  if (result.exitCode === 0)
19
- return prereqs.Verification.success();
20
- return prereqs.Verification.failure({ message: `Exit code ${result.exitCode}` });
21
+ return prereqs.Verification.success(stopwatch.stop());
22
+ return prereqs.Verification.failure(stopwatch.stop(), { message: `Exit code ${result.exitCode}` });
21
23
  }
22
24
  catch (error) {
23
- return prereqs.Verification.failure(error);
25
+ return prereqs.Verification.failure(stopwatch.stop(), error);
24
26
  }
25
27
  }
26
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"binary.js","sourceRoot":"","sources":["../../src/prerequisites/binary.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AAEtB,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AAEpD,MAAM,OAAO,kBAAkB;IACpB,IAAI,GAAG,QAAQ,CAAC;IAChB,KAAK,CAAgC;IACrC,OAAO,GAAa,IAAI,CAAC;IAEjB,MAAM,CAAa;IAEpC,YAAY,MAA+D;QACzE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QACpE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,MAAM;QACV,IAAI,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;YAE9D,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,CAAA,SAAS,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;YAEzD,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC;gBAAE,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;YACjE,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,aAAa,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACnF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,KAAc,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"binary.js","sourceRoot":"","sources":["../../src/prerequisites/binary.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAGtC,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AAEpD,MAAM,OAAO,kBAAkB;IACpB,IAAI,GAAG,QAAQ,CAAC;IAChB,KAAK,CAAgC;IACrC,OAAO,GAAa,IAAI,CAAC;IAEjB,MAAM,CAAa;IAEpC,YAAY,MAA+D;QACzE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QACpE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAgB;QAC3B,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QAEnD,IAAI,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,OAAO;gBAAE,OAAO,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;YAE9E,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC,CAAA,SAAS,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC;YAEzD,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC;gBAAE,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;YACjF,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,aAAa,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACrG,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,KAAc,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;CACF"}
@@ -1,4 +1,5 @@
1
1
  import * as tools from "@bgord/tools";
2
+ import type { ClockPort } from "../clock.port";
2
3
  import * as prereqs from "../prerequisites.service";
3
4
  export declare class PrerequisiteBun implements prereqs.Prerequisite {
4
5
  readonly kind = "bun";
@@ -10,6 +11,6 @@ export declare class PrerequisiteBun implements prereqs.Prerequisite {
10
11
  version: tools.PackageVersion;
11
12
  current: string;
12
13
  });
13
- verify(): Promise<prereqs.VerifyOutcome>;
14
+ verify(clock: ClockPort): Promise<prereqs.VerifyOutcome>;
14
15
  }
15
16
  //# sourceMappingURL=bun.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bun.d.ts","sourceRoot":"","sources":["../../src/prerequisites/bun.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AAEpD,qBAAa,eAAgB,YAAW,OAAO,CAAC,YAAY;IAC1D,QAAQ,CAAC,IAAI,SAAS;IACtB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,qBAAqB,CAAC;IAC9C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAQ;IAElC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuB;IAC/C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,MAAM,EAAE,OAAO,CAAC,sBAAsB,GAAG;QAAE,OAAO,EAAE,KAAK,CAAC,cAAc,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAOjG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;CAY/C"}
1
+ {"version":3,"file":"bun.d.ts","sourceRoot":"","sources":["../../src/prerequisites/bun.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AAEpD,qBAAa,eAAgB,YAAW,OAAO,CAAC,YAAY;IAC1D,QAAQ,CAAC,IAAI,SAAS;IACtB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,qBAAqB,CAAC;IAC9C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAQ;IAElC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuB;IAC/C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,MAAM,EAAE,OAAO,CAAC,sBAAsB,GAAG;QAAE,OAAO,EAAE,KAAK,CAAC,cAAc,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAOjG,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;CAkB/D"}
@@ -12,17 +12,22 @@ export class PrerequisiteBun {
12
12
  this.version = config.version;
13
13
  this.current = config.current;
14
14
  }
15
- async verify() {
15
+ async verify(clock) {
16
+ const stopwatch = new tools.Stopwatch(clock.now());
16
17
  if (!this.enabled)
17
- return prereqs.Verification.undetermined();
18
+ return prereqs.Verification.undetermined(stopwatch.stop());
18
19
  try {
19
20
  const current = tools.PackageVersion.fromString(this.current);
20
21
  if (current.isGreaterThanOrEqual(this.version))
21
- return prereqs.Verification.success();
22
- return prereqs.Verification.failure({ message: `Version: ${this.version.toString()}` });
22
+ return prereqs.Verification.success(stopwatch.stop());
23
+ return prereqs.Verification.failure(stopwatch.stop(), {
24
+ message: `Version: ${this.version.toString()}`,
25
+ });
23
26
  }
24
27
  catch {
25
- return prereqs.Verification.failure({ message: `Invalid version passed: ${this.current}` });
28
+ return prereqs.Verification.failure(stopwatch.stop(), {
29
+ message: `Invalid version passed: ${this.current}`,
30
+ });
26
31
  }
27
32
  }
28
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"bun.js","sourceRoot":"","sources":["../../src/prerequisites/bun.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AAEpD,MAAM,OAAO,eAAe;IACjB,IAAI,GAAG,KAAK,CAAC;IACb,KAAK,CAAgC;IACrC,OAAO,GAAa,IAAI,CAAC;IAEjB,OAAO,CAAuB;IAC9B,OAAO,CAAS;IAEjC,YAAY,MAA2F;QACrG,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QACpE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,MAAM;QACV,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;QAE9D,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAE9D,IAAI,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC;gBAAE,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;YACtF,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,YAAY,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1F,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,2BAA2B,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC9F,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"bun.js","sourceRoot":"","sources":["../../src/prerequisites/bun.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AAEpD,MAAM,OAAO,eAAe;IACjB,IAAI,GAAG,KAAK,CAAC;IACb,KAAK,CAAgC;IACrC,OAAO,GAAa,IAAI,CAAC;IAEjB,OAAO,CAAuB;IAC9B,OAAO,CAAS;IAEjC,YAAY,MAA2F;QACrG,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QACpE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAgB;QAC3B,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QAEnD,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QAE9E,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAE9D,IAAI,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC;gBAAE,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;YACtG,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE;gBACpD,OAAO,EAAE,YAAY,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE;aAC/C,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE;gBACpD,OAAO,EAAE,2BAA2B,IAAI,CAAC,OAAO,EAAE;aACnD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;CACF"}
@@ -1,4 +1,4 @@
1
- import type * as tools from "@bgord/tools";
1
+ import * as tools from "@bgord/tools";
2
2
  import type { ClockPort } from "../clock.port";
3
3
  import * as prereqs from "../prerequisites.service";
4
4
  import type { TimekeeperPort } from "../timekeeper.port";
@@ -14,6 +14,6 @@ export declare class PrerequisiteClockDrift implements prereqs.Prerequisite {
14
14
  timekeeper: TimekeeperPort;
15
15
  clock: ClockPort;
16
16
  });
17
- verify(): Promise<prereqs.VerifyOutcome>;
17
+ verify(clock: ClockPort): Promise<prereqs.VerifyOutcome>;
18
18
  }
19
19
  //# sourceMappingURL=clock-drift.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"clock-drift.d.ts","sourceRoot":"","sources":["../../src/prerequisites/clock-drift.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,qBAAa,sBAAuB,YAAW,OAAO,CAAC,YAAY;IACjE,QAAQ,CAAC,IAAI,iBAAiB;IAC9B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,qBAAqB,CAAC;IAC9C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAQ;IAElC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;gBAGxB,MAAM,EAAE,OAAO,CAAC,sBAAsB,GAAG;QACvC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC;QACrB,UAAU,EAAE,cAAc,CAAC;QAC3B,KAAK,EAAE,SAAS,CAAC;KAClB;IAUG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;CAa/C"}
1
+ {"version":3,"file":"clock-drift.d.ts","sourceRoot":"","sources":["../../src/prerequisites/clock-drift.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,qBAAa,sBAAuB,YAAW,OAAO,CAAC,YAAY;IACjE,QAAQ,CAAC,IAAI,iBAAiB;IAC9B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,qBAAqB,CAAC;IAC9C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAQ;IAElC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;gBAGxB,MAAM,EAAE,OAAO,CAAC,sBAAsB,GAAG;QACvC,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC;QACrB,UAAU,EAAE,cAAc,CAAC;QAC3B,KAAK,EAAE,SAAS,CAAC;KAClB;IAUG,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;CAe/D"}
@@ -1,3 +1,4 @@
1
+ import * as tools from "@bgord/tools";
1
2
  import * as prereqs from "../prerequisites.service";
2
3
  export class PrerequisiteClockDrift {
3
4
  kind = "clock-drift";
@@ -13,17 +14,18 @@ export class PrerequisiteClockDrift {
13
14
  this.timekeeper = config.timekeeper;
14
15
  this.clock = config.clock;
15
16
  }
16
- async verify() {
17
+ async verify(clock) {
18
+ const stopwatch = new tools.Stopwatch(clock.now());
17
19
  if (!this.enabled)
18
- return prereqs.Verification.undetermined();
20
+ return prereqs.Verification.undetermined(stopwatch.stop());
19
21
  const now = this.clock.now();
20
22
  const timestamp = await this.timekeeper.get();
21
23
  if (!timestamp)
22
- return prereqs.Verification.undetermined();
24
+ return prereqs.Verification.undetermined(stopwatch.stop());
23
25
  const duration = now.difference(timestamp).toAbolute();
24
26
  if (duration.isShorterThan(this.skew))
25
- return prereqs.Verification.success();
26
- return prereqs.Verification.failure({ message: `Difference: ${duration.seconds}s` });
27
+ return prereqs.Verification.success(stopwatch.stop());
28
+ return prereqs.Verification.failure(stopwatch.stop(), { message: `Difference: ${duration.seconds}s` });
27
29
  }
28
30
  }
29
31
  //# sourceMappingURL=clock-drift.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"clock-drift.js","sourceRoot":"","sources":["../../src/prerequisites/clock-drift.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AAGpD,MAAM,OAAO,sBAAsB;IACxB,IAAI,GAAG,aAAa,CAAC;IACrB,KAAK,CAAgC;IACrC,OAAO,GAAa,IAAI,CAAC;IAEzB,IAAI,CAAiB;IACrB,UAAU,CAAiB;IAC3B,KAAK,CAAY;IAE1B,YACE,MAIC;QAED,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QAEpE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACpC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,MAAM;QACV,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;QAE9D,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAE7B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;QAC9C,IAAI,CAAC,SAAS;YAAE,OAAO,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;QAE3D,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,CAAC;QAEvD,IAAI,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QAC7E,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,eAAe,QAAQ,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;IACvF,CAAC;CACF"}
1
+ {"version":3,"file":"clock-drift.js","sourceRoot":"","sources":["../../src/prerequisites/clock-drift.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AAGpD,MAAM,OAAO,sBAAsB;IACxB,IAAI,GAAG,aAAa,CAAC;IACrB,KAAK,CAAgC;IACrC,OAAO,GAAa,IAAI,CAAC;IAEzB,IAAI,CAAiB;IACrB,UAAU,CAAiB;IAC3B,KAAK,CAAY;IAE1B,YACE,MAIC;QAED,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QAEpE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACpC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAgB;QAC3B,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QAEnD,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QAE9E,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QAE7B,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;QAC9C,IAAI,CAAC,SAAS;YAAE,OAAO,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QAE3E,MAAM,QAAQ,GAAG,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,CAAC;QAEvD,IAAI,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7F,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,eAAe,QAAQ,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;IACzG,CAAC;CACF"}
@@ -1,9 +1,10 @@
1
+ import type { ClockPort } from "../clock.port";
1
2
  import * as prereqs from "../prerequisites.service";
2
3
  export declare class PrerequisiteDependencyVulnerabilities implements prereqs.Prerequisite {
3
4
  readonly kind = "dependency-vulnerabilities";
4
5
  readonly label: prereqs.PrerequisiteLabelType;
5
6
  readonly enabled?: boolean;
6
7
  constructor(config: prereqs.PrerequisiteConfigType);
7
- verify(): Promise<prereqs.VerifyOutcome>;
8
+ verify(clock: ClockPort): Promise<prereqs.VerifyOutcome>;
8
9
  }
9
10
  //# sourceMappingURL=dependency-vulnerabilities.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dependency-vulnerabilities.d.ts","sourceRoot":"","sources":["../../src/prerequisites/dependency-vulnerabilities.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AAIpD,qBAAa,qCAAsC,YAAW,OAAO,CAAC,YAAY;IAChF,QAAQ,CAAC,IAAI,gCAAgC;IAC7C,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,qBAAqB,CAAC;IAC9C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAQ;gBAEtB,MAAM,EAAE,OAAO,CAAC,sBAAsB;IAK5C,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;CA4B/C"}
1
+ {"version":3,"file":"dependency-vulnerabilities.d.ts","sourceRoot":"","sources":["../../src/prerequisites/dependency-vulnerabilities.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AAIpD,qBAAa,qCAAsC,YAAW,OAAO,CAAC,YAAY;IAChF,QAAQ,CAAC,IAAI,gCAAgC;IAC7C,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,qBAAqB,CAAC;IAC9C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAQ;gBAEtB,MAAM,EAAE,OAAO,CAAC,sBAAsB;IAK5C,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;CA+B/D"}
@@ -1,4 +1,5 @@
1
1
  import bun from "bun";
2
+ import * as tools from "@bgord/tools";
2
3
  import * as prereqs from "../prerequisites.service";
3
4
  export class PrerequisiteDependencyVulnerabilities {
4
5
  kind = "dependency-vulnerabilities";
@@ -8,24 +9,25 @@ export class PrerequisiteDependencyVulnerabilities {
8
9
  this.label = config.label;
9
10
  this.enabled = config.enabled === undefined ? true : config.enabled;
10
11
  }
11
- async verify() {
12
+ async verify(clock) {
13
+ const stopwatch = new tools.Stopwatch(clock.now());
12
14
  if (!this.enabled)
13
- return prereqs.Verification.undetermined();
15
+ return prereqs.Verification.undetermined(stopwatch.stop());
14
16
  try {
15
17
  const command = await bun.$ `bun audit --json`.quiet();
16
18
  if (command.exitCode !== 0)
17
- return prereqs.Verification.failure({ message: "Audit failure" });
19
+ return prereqs.Verification.failure(stopwatch.stop(), { message: "Audit failure" });
18
20
  const audit = JSON.parse(command.stdout.toString());
19
21
  const criticalVulnerabilitiesCount = Object.values(audit).filter((name) => name.some((vulnerability) => vulnerability.severity === "critical")).length;
20
22
  const highVulnerabilitiesCount = Object.values(audit).filter((name) => name.some((vulnerability) => vulnerability.severity === "high")).length;
21
23
  if (criticalVulnerabilitiesCount > 0 || highVulnerabilitiesCount > 0)
22
- return prereqs.Verification.failure({
24
+ return prereqs.Verification.failure(stopwatch.stop(), {
23
25
  message: `Critical: ${criticalVulnerabilitiesCount} and high: ${highVulnerabilitiesCount}`,
24
26
  });
25
- return prereqs.Verification.success();
27
+ return prereqs.Verification.success(stopwatch.stop());
26
28
  }
27
29
  catch (error) {
28
- return prereqs.Verification.failure(error);
30
+ return prereqs.Verification.failure(stopwatch.stop(), error);
29
31
  }
30
32
  }
31
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dependency-vulnerabilities.js","sourceRoot":"","sources":["../../src/prerequisites/dependency-vulnerabilities.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AAIpD,MAAM,OAAO,qCAAqC;IACvC,IAAI,GAAG,4BAA4B,CAAC;IACpC,KAAK,CAAgC;IACrC,OAAO,GAAa,IAAI,CAAC;IAElC,YAAY,MAAsC;QAChD,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,MAAM;QACV,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;QAE9D,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,CAAC,CAAA,kBAAkB,CAAC,KAAK,EAAE,CAAC;YAEtD,IAAI,OAAO,CAAC,QAAQ,KAAK,CAAC;gBAAE,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;YAE9F,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAmB,CAAC;YAEtE,MAAM,4BAA4B,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CACxE,IAAI,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,KAAK,UAAU,CAAC,CACpE,CAAC,MAAM,CAAC;YAET,MAAM,wBAAwB,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CACpE,IAAI,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,KAAK,MAAM,CAAC,CAChE,CAAC,MAAM,CAAC;YAET,IAAI,4BAA4B,GAAG,CAAC,IAAI,wBAAwB,GAAG,CAAC;gBAClE,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC;oBAClC,OAAO,EAAE,aAAa,4BAA4B,cAAc,wBAAwB,EAAE;iBAC3F,CAAC,CAAC;YAEL,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QACxC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,KAAc,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"dependency-vulnerabilities.js","sourceRoot":"","sources":["../../src/prerequisites/dependency-vulnerabilities.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AAIpD,MAAM,OAAO,qCAAqC;IACvC,IAAI,GAAG,4BAA4B,CAAC;IACpC,KAAK,CAAgC;IACrC,OAAO,GAAa,IAAI,CAAC;IAElC,YAAY,MAAsC;QAChD,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;IACtE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAgB;QAC3B,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QAEnD,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QAE9E,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,CAAC,CAAA,kBAAkB,CAAC,KAAK,EAAE,CAAC;YAEtD,IAAI,OAAO,CAAC,QAAQ,KAAK,CAAC;gBACxB,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC;YAEtF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAmB,CAAC;YAEtE,MAAM,4BAA4B,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CACxE,IAAI,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,KAAK,UAAU,CAAC,CACpE,CAAC,MAAM,CAAC;YAET,MAAM,wBAAwB,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CACpE,IAAI,CAAC,IAAI,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,aAAa,CAAC,QAAQ,KAAK,MAAM,CAAC,CAChE,CAAC,MAAM,CAAC;YAET,IAAI,4BAA4B,GAAG,CAAC,IAAI,wBAAwB,GAAG,CAAC;gBAClE,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE;oBACpD,OAAO,EAAE,aAAa,4BAA4B,cAAc,wBAAwB,EAAE;iBAC3F,CAAC,CAAC;YAEL,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QACxD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,KAAc,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;CACF"}
@@ -1,4 +1,5 @@
1
- import type * as tools from "@bgord/tools";
1
+ import * as tools from "@bgord/tools";
2
+ import type { ClockPort } from "../clock.port";
2
3
  import * as prereqs from "../prerequisites.service";
3
4
  export declare class PrerequisiteDirectory implements prereqs.Prerequisite {
4
5
  readonly kind = "directory";
@@ -13,6 +14,6 @@ export declare class PrerequisiteDirectory implements prereqs.Prerequisite {
13
14
  execute?: boolean;
14
15
  };
15
16
  });
16
- verify(): Promise<prereqs.VerifyOutcome>;
17
+ verify(clock: ClockPort): Promise<prereqs.VerifyOutcome>;
17
18
  }
18
19
  //# sourceMappingURL=directory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"directory.d.ts","sourceRoot":"","sources":["../../src/prerequisites/directory.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AAEpD,qBAAa,qBAAsB,YAAW,OAAO,CAAC,YAAY;IAChE,QAAQ,CAAC,IAAI,eAAe;IAC5B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,qBAAqB,CAAC;IAC9C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAQ;IAElC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoE;IAC9F,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAyC;gBAG/D,MAAM,EAAE,OAAO,CAAC,sBAAsB,GAAG;QACvC,SAAS,EAAE,KAAK,CAAC,yBAAyB,GAAG,KAAK,CAAC,yBAAyB,CAAC;QAC7E,MAAM,CAAC,EAAE;YAAE,KAAK,CAAC,EAAE,OAAO,CAAC;YAAC,OAAO,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC;KACjD;IASG,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;CAgB/C"}
1
+ {"version":3,"file":"directory.d.ts","sourceRoot":"","sources":["../../src/prerequisites/directory.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AAEpD,qBAAa,qBAAsB,YAAW,OAAO,CAAC,YAAY;IAChE,QAAQ,CAAC,IAAI,eAAe;IAC5B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,qBAAqB,CAAC;IAC9C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAQ;IAElC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoE;IAC9F,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAyC;gBAG/D,MAAM,EAAE,OAAO,CAAC,sBAAsB,GAAG;QACvC,SAAS,EAAE,KAAK,CAAC,yBAAyB,GAAG,KAAK,CAAC,yBAAyB,CAAC;QAC7E,MAAM,CAAC,EAAE;YAAE,KAAK,CAAC,EAAE,OAAO,CAAC;YAAC,OAAO,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC;KACjD;IASG,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;CAkB/D"}
@@ -1,5 +1,6 @@
1
1
  import { constants } from "node:fs";
2
2
  import fsp from "node:fs/promises";
3
+ import * as tools from "@bgord/tools";
3
4
  import * as prereqs from "../prerequisites.service";
4
5
  export class PrerequisiteDirectory {
5
6
  kind = "directory";
@@ -13,18 +14,19 @@ export class PrerequisiteDirectory {
13
14
  this.directory = config.directory;
14
15
  this.access = config.access;
15
16
  }
16
- async verify() {
17
+ async verify(clock) {
18
+ const stopwatch = new tools.Stopwatch(clock.now());
17
19
  if (!this.enabled)
18
- return prereqs.Verification.undetermined();
20
+ return prereqs.Verification.undetermined(stopwatch.stop());
19
21
  const write = this.access?.write ?? false;
20
22
  const execute = this.access?.execute ?? false;
21
23
  const flags = constants.R_OK | (write ? constants.W_OK : 0) | (execute ? constants.X_OK : 0);
22
24
  try {
23
25
  await fsp.access(this.directory, flags);
24
- return prereqs.Verification.success();
26
+ return prereqs.Verification.success(stopwatch.stop());
25
27
  }
26
28
  catch (error) {
27
- return prereqs.Verification.failure(error);
29
+ return prereqs.Verification.failure(stopwatch.stop(), error);
28
30
  }
29
31
  }
30
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"directory.js","sourceRoot":"","sources":["../../src/prerequisites/directory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,GAAG,MAAM,kBAAkB,CAAC;AAEnC,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AAEpD,MAAM,OAAO,qBAAqB;IACvB,IAAI,GAAG,WAAW,CAAC;IACnB,KAAK,CAAgC;IACrC,OAAO,GAAa,IAAI,CAAC;IAEjB,SAAS,CAAoE;IAC7E,MAAM,CAA0C;IAEjE,YACE,MAGC;QAED,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QAEpE,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QAClC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,MAAM;QACV,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;QAE9D,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,KAAK,CAAC;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,KAAK,CAAC;QAE9C,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAE7F,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAExC,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QACxC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,KAAc,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"directory.js","sourceRoot":"","sources":["../../src/prerequisites/directory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACpC,OAAO,GAAG,MAAM,kBAAkB,CAAC;AACnC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AAEpD,MAAM,OAAO,qBAAqB;IACvB,IAAI,GAAG,WAAW,CAAC;IACnB,KAAK,CAAgC;IACrC,OAAO,GAAa,IAAI,CAAC;IAEjB,SAAS,CAAoE;IAC7E,MAAM,CAA0C;IAEjE,YACE,MAGC;QAED,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QAEpE,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QAClC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAgB;QAC3B,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QAEnD,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QAE9E,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,KAAK,CAAC;QAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,KAAK,CAAC;QAE9C,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAE7F,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAExC,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QACxD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,KAAc,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;CACF"}
@@ -1,3 +1,4 @@
1
+ import type { ClockPort } from "../clock.port";
1
2
  import * as prereqs from "../prerequisites.service";
2
3
  export declare class PrerequisiteExternalApi implements prereqs.Prerequisite {
3
4
  readonly kind = "external-api";
@@ -7,6 +8,6 @@ export declare class PrerequisiteExternalApi implements prereqs.Prerequisite {
7
8
  constructor(config: prereqs.PrerequisiteConfigType & {
8
9
  request: () => Promise<Response>;
9
10
  });
10
- verify(): Promise<prereqs.VerifyOutcome>;
11
+ verify(clock: ClockPort): Promise<prereqs.VerifyOutcome>;
11
12
  }
12
13
  //# sourceMappingURL=external-api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"external-api.d.ts","sourceRoot":"","sources":["../../src/prerequisites/external-api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AAEpD,qBAAa,uBAAwB,YAAW,OAAO,CAAC,YAAY;IAClE,QAAQ,CAAC,IAAI,kBAAkB;IAC/B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,qBAAqB,CAAC;IAC9C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAQ;IAElC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;gBAEtC,MAAM,EAAE,OAAO,CAAC,sBAAsB,GAAG;QAAE,OAAO,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAA;KAAE;IAOnF,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;CAY/C"}
1
+ {"version":3,"file":"external-api.d.ts","sourceRoot":"","sources":["../../src/prerequisites/external-api.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AAEpD,qBAAa,uBAAwB,YAAW,OAAO,CAAC,YAAY;IAClE,QAAQ,CAAC,IAAI,kBAAkB;IAC/B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,qBAAqB,CAAC;IAC9C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAQ;IAElC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;gBAEtC,MAAM,EAAE,OAAO,CAAC,sBAAsB,GAAG;QAAE,OAAO,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAA;KAAE;IAOnF,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;CAc/D"}
@@ -1,3 +1,4 @@
1
+ import * as tools from "@bgord/tools";
1
2
  import * as prereqs from "../prerequisites.service";
2
3
  export class PrerequisiteExternalApi {
3
4
  kind = "external-api";
@@ -9,17 +10,18 @@ export class PrerequisiteExternalApi {
9
10
  this.enabled = config.enabled === undefined ? true : config.enabled;
10
11
  this.request = config.request;
11
12
  }
12
- async verify() {
13
+ async verify(clock) {
14
+ const stopwatch = new tools.Stopwatch(clock.now());
13
15
  if (!this.enabled)
14
- return prereqs.Verification.undetermined();
16
+ return prereqs.Verification.undetermined(stopwatch.stop());
15
17
  try {
16
18
  const response = await this.request();
17
19
  if (response.ok)
18
- return prereqs.Verification.success();
19
- return prereqs.Verification.failure({ message: `HTTP ${response.status}` });
20
+ return prereqs.Verification.success(stopwatch.stop());
21
+ return prereqs.Verification.failure(stopwatch.stop(), { message: `HTTP ${response.status}` });
20
22
  }
21
23
  catch (error) {
22
- return prereqs.Verification.failure(error);
24
+ return prereqs.Verification.failure(stopwatch.stop(), error);
23
25
  }
24
26
  }
25
27
  }
@@ -1 +1 @@
1
- {"version":3,"file":"external-api.js","sourceRoot":"","sources":["../../src/prerequisites/external-api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AAEpD,MAAM,OAAO,uBAAuB;IACzB,IAAI,GAAG,cAAc,CAAC;IACtB,KAAK,CAAgC;IACrC,OAAO,GAAa,IAAI,CAAC;IAEjB,OAAO,CAA0B;IAElD,YAAY,MAA6E;QACvF,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QAEpE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,MAAM;QACV,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;QAE9D,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YAEtC,IAAI,QAAQ,CAAC,EAAE;gBAAE,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;YACvD,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,QAAQ,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC9E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,KAAc,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"external-api.js","sourceRoot":"","sources":["../../src/prerequisites/external-api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AAEpD,MAAM,OAAO,uBAAuB;IACzB,IAAI,GAAG,cAAc,CAAC;IACtB,KAAK,CAAgC;IACrC,OAAO,GAAa,IAAI,CAAC;IAEjB,OAAO,CAA0B;IAElD,YAAY,MAA6E;QACvF,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QAEpE,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAgB;QAC3B,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QAEnD,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QAE9E,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YAEtC,IAAI,QAAQ,CAAC,EAAE;gBAAE,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;YACvE,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAChG,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,KAAc,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;CACF"}
@@ -1,3 +1,4 @@
1
+ import type { ClockPort } from "../clock.port";
1
2
  import { type MultipleJobsType } from "../jobs.service";
2
3
  import * as prereqs from "../prerequisites.service";
3
4
  export declare class PrerequisiteJobs implements prereqs.Prerequisite {
@@ -8,6 +9,6 @@ export declare class PrerequisiteJobs implements prereqs.Prerequisite {
8
9
  constructor(config: prereqs.PrerequisiteConfigType & {
9
10
  jobs: MultipleJobsType;
10
11
  });
11
- verify(): Promise<prereqs.VerifyOutcome>;
12
+ verify(clock: ClockPort): Promise<prereqs.VerifyOutcome>;
12
13
  }
13
14
  //# sourceMappingURL=jobs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"jobs.d.ts","sourceRoot":"","sources":["../../src/prerequisites/jobs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AAEpD,qBAAa,gBAAiB,YAAW,OAAO,CAAC,YAAY;IAC3D,QAAQ,CAAC,IAAI,UAAU;IACvB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,qBAAqB,CAAC;IAC9C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAQ;IAElC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAmB;gBAE5B,MAAM,EAAE,OAAO,CAAC,sBAAsB,GAAG;QAAE,IAAI,EAAE,gBAAgB,CAAA;KAAE;IAOzE,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;CAK/C"}
1
+ {"version":3,"file":"jobs.d.ts","sourceRoot":"","sources":["../../src/prerequisites/jobs.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAQ,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AAEpD,qBAAa,gBAAiB,YAAW,OAAO,CAAC,YAAY;IAC3D,QAAQ,CAAC,IAAI,UAAU;IACvB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,qBAAqB,CAAC;IAC9C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAQ;IAElC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAmB;gBAE5B,MAAM,EAAE,OAAO,CAAC,sBAAsB,GAAG;QAAE,IAAI,EAAE,gBAAgB,CAAA;KAAE;IAOzE,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;CAO/D"}
@@ -1,3 +1,4 @@
1
+ import * as tools from "@bgord/tools";
1
2
  import { Jobs } from "../jobs.service";
2
3
  import * as prereqs from "../prerequisites.service";
3
4
  export class PrerequisiteJobs {
@@ -10,12 +11,13 @@ export class PrerequisiteJobs {
10
11
  this.enabled = config.enabled === undefined ? true : config.enabled;
11
12
  this.jobs = config.jobs;
12
13
  }
13
- async verify() {
14
+ async verify(clock) {
15
+ const stopwatch = new tools.Stopwatch(clock.now());
14
16
  if (!this.enabled)
15
- return prereqs.Verification.undetermined();
17
+ return prereqs.Verification.undetermined(stopwatch.stop());
16
18
  if (Jobs.areAllRunning(this.jobs))
17
- return prereqs.Verification.success();
18
- return prereqs.Verification.failure();
19
+ return prereqs.Verification.success(stopwatch.stop());
20
+ return prereqs.Verification.failure(stopwatch.stop());
19
21
  }
20
22
  }
21
23
  //# sourceMappingURL=jobs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"jobs.js","sourceRoot":"","sources":["../../src/prerequisites/jobs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAyB,MAAM,iBAAiB,CAAC;AAC9D,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AAEpD,MAAM,OAAO,gBAAgB;IAClB,IAAI,GAAG,MAAM,CAAC;IACd,KAAK,CAAgC;IACrC,OAAO,GAAa,IAAI,CAAC;IAEjB,IAAI,CAAmB;IAExC,YAAY,MAAmE;QAC7E,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QAEpE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,MAAM;QACV,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;QAC9D,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QACzE,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;IACxC,CAAC;CACF"}
1
+ {"version":3,"file":"jobs.js","sourceRoot":"","sources":["../../src/prerequisites/jobs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,EAAE,IAAI,EAAyB,MAAM,iBAAiB,CAAC;AAC9D,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AAEpD,MAAM,OAAO,gBAAgB;IAClB,IAAI,GAAG,MAAM,CAAC;IACd,KAAK,CAAgC;IACrC,OAAO,GAAa,IAAI,CAAC;IAEjB,IAAI,CAAmB;IAExC,YAAY,MAAmE;QAC7E,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QAEpE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAgB;QAC3B,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QAEnD,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9E,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QACzF,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;CACF"}
@@ -1,3 +1,4 @@
1
+ import type { ClockPort } from "../clock.port";
1
2
  import type { LoggerWinstonProductionAdapter } from "../logger-winston-production.adapter";
2
3
  import * as prereqs from "../prerequisites.service";
3
4
  export declare class PrerequisiteLogFile implements prereqs.Prerequisite {
@@ -8,6 +9,6 @@ export declare class PrerequisiteLogFile implements prereqs.Prerequisite {
8
9
  constructor(config: prereqs.PrerequisiteConfigType & {
9
10
  logger: LoggerWinstonProductionAdapter;
10
11
  });
11
- verify(): Promise<prereqs.VerifyOutcome>;
12
+ verify(clock: ClockPort): Promise<prereqs.VerifyOutcome>;
12
13
  }
13
14
  //# sourceMappingURL=log-file.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"log-file.d.ts","sourceRoot":"","sources":["../../src/prerequisites/log-file.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAC;AAC3F,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AAEpD,qBAAa,mBAAoB,YAAW,OAAO,CAAC,YAAY;IAC9D,QAAQ,CAAC,IAAI,cAAc;IAC3B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,qBAAqB,CAAC;IAC9C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAQ;IAElC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiC;gBAE5C,MAAM,EAAE,OAAO,CAAC,sBAAsB,GAAG;QAAE,MAAM,EAAE,8BAA8B,CAAA;KAAE;IAOzF,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;CAa/C"}
1
+ {"version":3,"file":"log-file.d.ts","sourceRoot":"","sources":["../../src/prerequisites/log-file.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,sCAAsC,CAAC;AAC3F,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AAEpD,qBAAa,mBAAoB,YAAW,OAAO,CAAC,YAAY;IAC9D,QAAQ,CAAC,IAAI,cAAc;IAC3B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,qBAAqB,CAAC;IAC9C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAQ;IAElC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiC;gBAE5C,MAAM,EAAE,OAAO,CAAC,sBAAsB,GAAG;QAAE,MAAM,EAAE,8BAA8B,CAAA;KAAE;IAOzF,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;CAe/D"}
@@ -1,3 +1,4 @@
1
+ import * as tools from "@bgord/tools";
1
2
  import * as prereqs from "../prerequisites.service";
2
3
  export class PrerequisiteLogFile {
3
4
  kind = "log-file";
@@ -9,18 +10,19 @@ export class PrerequisiteLogFile {
9
10
  this.enabled = config.enabled === undefined ? true : config.enabled;
10
11
  this.logger = config.logger;
11
12
  }
12
- async verify() {
13
+ async verify(clock) {
14
+ const stopwatch = new tools.Stopwatch(clock.now());
13
15
  if (!this.enabled)
14
- return prereqs.Verification.undetermined();
16
+ return prereqs.Verification.undetermined(stopwatch.stop());
15
17
  try {
16
18
  const path = this.logger.prodLogFile;
17
19
  const result = await Bun.file(path).exists();
18
20
  if (result)
19
- return prereqs.Verification.success();
20
- return prereqs.Verification.failure({ message: `Missing file: ${path}` });
21
+ return prereqs.Verification.success(stopwatch.stop());
22
+ return prereqs.Verification.failure(stopwatch.stop(), { message: `Missing file: ${path}` });
21
23
  }
22
24
  catch (error) {
23
- return prereqs.Verification.failure(error);
25
+ return prereqs.Verification.failure(stopwatch.stop(), error);
24
26
  }
25
27
  }
26
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"log-file.js","sourceRoot":"","sources":["../../src/prerequisites/log-file.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AAEpD,MAAM,OAAO,mBAAmB;IACrB,IAAI,GAAG,UAAU,CAAC;IAClB,KAAK,CAAgC;IACrC,OAAO,GAAa,IAAI,CAAC;IAEjB,MAAM,CAAiC;IAExD,YAAY,MAAmF;QAC7F,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QAEpE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,MAAM;QACV,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;QAE9D,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;YACrC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;YAE7C,IAAI,MAAM;gBAAE,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;YAClD,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,iBAAiB,IAAI,EAAE,EAAE,CAAC,CAAC;QAC5E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,KAAc,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"log-file.js","sourceRoot":"","sources":["../../src/prerequisites/log-file.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAGtC,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AAEpD,MAAM,OAAO,mBAAmB;IACrB,IAAI,GAAG,UAAU,CAAC;IAClB,KAAK,CAAgC;IACrC,OAAO,GAAa,IAAI,CAAC;IAEjB,MAAM,CAAiC;IAExD,YAAY,MAAmF;QAC7F,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QAEpE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAgB;QAC3B,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QAEnD,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QAE9E,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;YACrC,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;YAE7C,IAAI,MAAM;gBAAE,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;YAClE,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,iBAAiB,IAAI,EAAE,EAAE,CAAC,CAAC;QAC9F,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,KAAc,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;CACF"}
@@ -1,3 +1,4 @@
1
+ import type { ClockPort } from "../clock.port";
1
2
  import type { MailerPort } from "../mailer.port";
2
3
  import * as prereqs from "../prerequisites.service";
3
4
  export declare class PrerequisiteMailer implements prereqs.Prerequisite {
@@ -8,6 +9,6 @@ export declare class PrerequisiteMailer implements prereqs.Prerequisite {
8
9
  constructor(config: prereqs.PrerequisiteConfigType & {
9
10
  mailer: MailerPort;
10
11
  });
11
- verify(): Promise<prereqs.VerifyOutcome>;
12
+ verify(clock: ClockPort): Promise<prereqs.VerifyOutcome>;
12
13
  }
13
14
  //# sourceMappingURL=mailer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mailer.d.ts","sourceRoot":"","sources":["../../src/prerequisites/mailer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AAEpD,qBAAa,kBAAmB,YAAW,OAAO,CAAC,YAAY;IAC7D,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,qBAAqB,CAAC;IAC9C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAQ;IAElC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;gBAExB,MAAM,EAAE,OAAO,CAAC,sBAAsB,GAAG;QAAE,MAAM,EAAE,UAAU,CAAA;KAAE;IAOrE,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;CAU/C"}
1
+ {"version":3,"file":"mailer.d.ts","sourceRoot":"","sources":["../../src/prerequisites/mailer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AAEpD,qBAAa,kBAAmB,YAAW,OAAO,CAAC,YAAY;IAC7D,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,qBAAqB,CAAC;IAC9C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAQ;IAElC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAa;gBAExB,MAAM,EAAE,OAAO,CAAC,sBAAsB,GAAG;QAAE,MAAM,EAAE,UAAU,CAAA;KAAE;IAOrE,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;CAY/D"}
@@ -1,3 +1,4 @@
1
+ import * as tools from "@bgord/tools";
1
2
  import * as prereqs from "../prerequisites.service";
2
3
  export class PrerequisiteMailer {
3
4
  kind = "mailer";
@@ -9,15 +10,16 @@ export class PrerequisiteMailer {
9
10
  this.enabled = config.enabled === undefined ? true : config.enabled;
10
11
  this.mailer = config.mailer;
11
12
  }
12
- async verify() {
13
+ async verify(clock) {
14
+ const stopwatch = new tools.Stopwatch(clock.now());
13
15
  if (!this.enabled)
14
- return prereqs.Verification.undetermined();
16
+ return prereqs.Verification.undetermined(stopwatch.stop());
15
17
  try {
16
18
  await this.mailer.verify();
17
- return prereqs.Verification.success();
19
+ return prereqs.Verification.success(stopwatch.stop());
18
20
  }
19
21
  catch (error) {
20
- return prereqs.Verification.failure(error);
22
+ return prereqs.Verification.failure(stopwatch.stop(), error);
21
23
  }
22
24
  }
23
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mailer.js","sourceRoot":"","sources":["../../src/prerequisites/mailer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AAEpD,MAAM,OAAO,kBAAkB;IACpB,IAAI,GAAG,QAAQ,CAAC;IAChB,KAAK,CAAgC;IACrC,OAAO,GAAa,IAAI,CAAC;IAEjB,MAAM,CAAa;IAEpC,YAAY,MAA+D;QACzE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QAEpE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,MAAM;QACV,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;QAE9D,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YAC3B,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QACxC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,KAAc,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"mailer.js","sourceRoot":"","sources":["../../src/prerequisites/mailer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAGtC,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AAEpD,MAAM,OAAO,kBAAkB;IACpB,IAAI,GAAG,QAAQ,CAAC;IAChB,KAAK,CAAgC;IACrC,OAAO,GAAa,IAAI,CAAC;IAEjB,MAAM,CAAa;IAEpC,YAAY,MAA+D;QACzE,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;QAEpE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAgB;QAC3B,MAAM,SAAS,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;QAEnD,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QAE9E,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YAC3B,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;QACxD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,KAAc,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;CACF"}