@bgord/bun 1.5.6 → 1.5.8

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.
@@ -1,18 +1,20 @@
1
1
  import * as tools from "@bgord/tools";
2
2
  import type { ClockPort } from "../clock.port";
3
3
  import * as prereqs from "../prerequisites.service";
4
+ export type PrerequisiteDirectoryPermissionsType = {
5
+ read?: boolean;
6
+ write?: boolean;
7
+ execute?: boolean;
8
+ };
4
9
  export declare class PrerequisiteDirectory implements prereqs.Prerequisite {
5
10
  readonly kind = "directory";
6
11
  readonly label: prereqs.PrerequisiteLabelType;
7
12
  readonly enabled?: boolean;
8
13
  private readonly directory;
9
- private readonly access?;
14
+ private readonly permissions;
10
15
  constructor(config: prereqs.PrerequisiteConfigType & {
11
16
  directory: tools.DirectoryPathAbsoluteType | tools.DirectoryPathRelativeType;
12
- access?: {
13
- write?: boolean;
14
- execute?: boolean;
15
- };
17
+ permissions?: PrerequisiteDirectoryPermissionsType;
16
18
  });
17
19
  verify(clock: ClockPort): Promise<prereqs.VerifyOutcome>;
18
20
  }
@@ -1 +1 @@
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
+ {"version":3,"file":"directory.d.ts","sourceRoot":"","sources":["../../src/prerequisites/directory.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AAEpD,MAAM,MAAM,oCAAoC,GAAG;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAE1G,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,WAAW,CAAuC;gBAGjE,MAAM,EAAE,OAAO,CAAC,sBAAsB,GAAG;QACvC,SAAS,EAAE,KAAK,CAAC,yBAAyB,GAAG,KAAK,CAAC,yBAAyB,CAAC;QAC7E,WAAW,CAAC,EAAE,oCAAoC,CAAC;KACpD;IASG,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;CAyC/D"}
@@ -1,5 +1,4 @@
1
- import { constants } from "node:fs";
2
- import fsp from "node:fs/promises";
1
+ import { access, constants, stat } from "node:fs/promises";
3
2
  import * as tools from "@bgord/tools";
4
3
  import * as prereqs from "../prerequisites.service";
5
4
  export class PrerequisiteDirectory {
@@ -7,27 +6,51 @@ export class PrerequisiteDirectory {
7
6
  label;
8
7
  enabled = true;
9
8
  directory;
10
- access;
9
+ permissions;
11
10
  constructor(config) {
12
11
  this.label = config.label;
13
12
  this.enabled = config.enabled === undefined ? true : config.enabled;
14
13
  this.directory = config.directory;
15
- this.access = config.access;
14
+ this.permissions = config.permissions ?? {};
16
15
  }
17
16
  async verify(clock) {
18
17
  const stopwatch = new tools.Stopwatch(clock.now());
19
18
  if (!this.enabled)
20
19
  return prereqs.Verification.undetermined(stopwatch.stop());
21
- const write = this.access?.write ?? false;
22
- const execute = this.access?.execute ?? false;
23
- const flags = constants.R_OK | (write ? constants.W_OK : 0) | (execute ? constants.X_OK : 0);
24
20
  try {
25
- await fsp.access(this.directory, flags);
26
- return prereqs.Verification.success(stopwatch.stop());
21
+ const stats = await stat(this.directory);
22
+ if (!stats.isDirectory()) {
23
+ return prereqs.Verification.failure(stopwatch.stop(), { message: "Not a directory" });
24
+ }
27
25
  }
28
- catch (error) {
29
- return prereqs.Verification.failure(stopwatch.stop(), error);
26
+ catch {
27
+ return prereqs.Verification.failure(stopwatch.stop(), { message: "Directory does not exist" });
30
28
  }
29
+ if (this.permissions.read) {
30
+ try {
31
+ await access(this.directory, constants.R_OK);
32
+ }
33
+ catch {
34
+ return prereqs.Verification.failure(stopwatch.stop(), { message: "Directory is not readable" });
35
+ }
36
+ }
37
+ if (this.permissions.write) {
38
+ try {
39
+ await access(this.directory, constants.W_OK);
40
+ }
41
+ catch {
42
+ return prereqs.Verification.failure(stopwatch.stop(), { message: "Directory is not writable" });
43
+ }
44
+ }
45
+ if (this.permissions.execute) {
46
+ try {
47
+ await access(this.directory, constants.X_OK);
48
+ }
49
+ catch {
50
+ return prereqs.Verification.failure(stopwatch.stop(), { message: "Directory is not executable" });
51
+ }
52
+ }
53
+ return prereqs.Verification.success(stopwatch.stop());
31
54
  }
32
55
  }
33
56
  //# sourceMappingURL=directory.js.map
@@ -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;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
+ {"version":3,"file":"directory.js","sourceRoot":"","sources":["../../src/prerequisites/directory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AAIpD,MAAM,OAAO,qBAAqB;IACvB,IAAI,GAAG,WAAW,CAAC;IACnB,KAAK,CAAgC;IACrC,OAAO,GAAa,IAAI,CAAC;IAEjB,SAAS,CAAoE;IAC7E,WAAW,CAAuC;IAEnE,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,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;IAC9C,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,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAEzC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACzB,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC,CAAC;YACxF,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC,CAAC;QACjG,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;YAC/C,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC,CAAC;YAClG,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;YAC/C,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC,CAAC;YAClG,CAAC;QACH,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;YAC/C,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC,CAAC;YACpG,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;CACF"}
@@ -0,0 +1,21 @@
1
+ import * as tools from "@bgord/tools";
2
+ import type { ClockPort } from "../clock.port";
3
+ import * as prereqs from "../prerequisites.service";
4
+ export type PrerequisiteFilePermissionsType = {
5
+ read?: boolean;
6
+ write?: boolean;
7
+ execute?: boolean;
8
+ };
9
+ export declare class PrerequisiteFile implements prereqs.Prerequisite {
10
+ readonly kind = "file";
11
+ readonly label: prereqs.PrerequisiteLabelType;
12
+ readonly enabled?: boolean;
13
+ private readonly file;
14
+ private readonly permissions;
15
+ constructor(config: prereqs.PrerequisiteConfigType & {
16
+ file: tools.FilePathAbsolute | tools.FilePathRelative;
17
+ permissions?: PrerequisiteFilePermissionsType;
18
+ });
19
+ verify(clock: ClockPort): Promise<prereqs.VerifyOutcome>;
20
+ }
21
+ //# sourceMappingURL=file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../src/prerequisites/file.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AACtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AAEpD,MAAM,MAAM,+BAA+B,GAAG;IAAE,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAErG,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,CAAkD;IACvE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAkC;gBAG5D,MAAM,EAAE,OAAO,CAAC,sBAAsB,GAAG;QACvC,IAAI,EAAE,KAAK,CAAC,gBAAgB,GAAG,KAAK,CAAC,gBAAgB,CAAC;QACtD,WAAW,CAAC,EAAE,+BAA+B,CAAC;KAC/C;IASG,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;CAwC/D"}
@@ -0,0 +1,56 @@
1
+ import { access, constants } from "node:fs/promises";
2
+ import * as tools from "@bgord/tools";
3
+ import * as prereqs from "../prerequisites.service";
4
+ export class PrerequisiteFile {
5
+ kind = "file";
6
+ label;
7
+ enabled = true;
8
+ file;
9
+ permissions;
10
+ constructor(config) {
11
+ this.label = config.label;
12
+ this.enabled = config.enabled === undefined ? true : config.enabled;
13
+ this.file = config.file;
14
+ this.permissions = config.permissions ?? {};
15
+ }
16
+ async verify(clock) {
17
+ const stopwatch = new tools.Stopwatch(clock.now());
18
+ if (!this.enabled)
19
+ return prereqs.Verification.undetermined(stopwatch.stop());
20
+ try {
21
+ const path = this.file.get();
22
+ const exists = await Bun.file(path).exists();
23
+ if (!exists)
24
+ return prereqs.Verification.failure(stopwatch.stop(), { message: "File does not exist" });
25
+ if (this.permissions.read) {
26
+ try {
27
+ await access(path, constants.R_OK);
28
+ }
29
+ catch {
30
+ return prereqs.Verification.failure(stopwatch.stop(), { message: "File is not readable" });
31
+ }
32
+ }
33
+ if (this.permissions.write) {
34
+ try {
35
+ await access(path, constants.W_OK);
36
+ }
37
+ catch {
38
+ return prereqs.Verification.failure(stopwatch.stop(), { message: "File is not writable" });
39
+ }
40
+ }
41
+ if (this.permissions.execute) {
42
+ try {
43
+ await access(path, constants.X_OK);
44
+ }
45
+ catch {
46
+ return prereqs.Verification.failure(stopwatch.stop(), { message: "File is not executable" });
47
+ }
48
+ }
49
+ return prereqs.Verification.success(stopwatch.stop());
50
+ }
51
+ catch (error) {
52
+ return prereqs.Verification.failure(stopwatch.stop(), error);
53
+ }
54
+ }
55
+ }
56
+ //# sourceMappingURL=file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file.js","sourceRoot":"","sources":["../../src/prerequisites/file.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ export * from "./dependency-vulnerabilities";
5
5
  export * from "./directory";
6
6
  export * from "./dns";
7
7
  export * from "./external-api";
8
+ export * from "./file";
8
9
  export * from "./jobs";
9
10
  export * from "./log-file";
10
11
  export * from "./mailer";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prerequisites/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,eAAe,CAAC;AAC9B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,aAAa,CAAC;AAC5B,cAAc,OAAO,CAAC;AACtB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,MAAM,CAAC;AACrB,cAAc,wBAAwB,CAAC;AACvC,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,0BAA0B,CAAC;AACzC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/prerequisites/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,eAAe,CAAC;AAC9B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,aAAa,CAAC;AAC5B,cAAc,OAAO,CAAC;AACtB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,MAAM,CAAC;AACrB,cAAc,wBAAwB,CAAC;AACvC,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,0BAA0B,CAAC;AACzC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC"}
@@ -5,6 +5,7 @@ export * from "./dependency-vulnerabilities";
5
5
  export * from "./directory";
6
6
  export * from "./dns";
7
7
  export * from "./external-api";
8
+ export * from "./file";
8
9
  export * from "./jobs";
9
10
  export * from "./log-file";
10
11
  export * from "./mailer";
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prerequisites/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,eAAe,CAAC;AAC9B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,aAAa,CAAC;AAC5B,cAAc,OAAO,CAAC;AACtB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,MAAM,CAAC;AACrB,cAAc,wBAAwB,CAAC;AACvC,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,0BAA0B,CAAC;AACzC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prerequisites/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,eAAe,CAAC;AAC9B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,aAAa,CAAC;AAC5B,cAAc,OAAO,CAAC;AACtB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AACvB,cAAc,MAAM,CAAC;AACrB,cAAc,wBAAwB,CAAC;AACvC,cAAc,QAAQ,CAAC;AACvB,cAAc,OAAO,CAAC;AACtB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,0BAA0B,CAAC;AACzC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC"}
@@ -1 +1 @@
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,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AAEpD,KAAK,YAAY,GAAG;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,CAAC;AAE3C,qBAAa,mBAAoB,YAAW,OAAO,CAAC,YAAY;IAO5D,OAAO,CAAC,QAAQ,CAAC,IAAI;IANvB,QAAQ,CAAC,IAAI,cAAc;IAC3B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,qBAAqB,CAAC;IAC9C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAQ;gBAGhC,MAAM,EAAE,OAAO,CAAC,sBAAsB,EACrB,IAAI,EAAE,YAAY;IAM/B,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;CAiB/D"}
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,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,OAAO,MAAM,0BAA0B,CAAC;AAGpD,KAAK,YAAY,GAAG;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,CAAC;AAE3C,qBAAa,mBAAoB,YAAW,OAAO,CAAC,YAAY;IAO5D,OAAO,CAAC,QAAQ,CAAC,IAAI;IANvB,QAAQ,CAAC,IAAI,cAAc;IAC3B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,qBAAqB,CAAC;IAC9C,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAQ;gBAGhC,MAAM,EAAE,OAAO,CAAC,sBAAsB,EACrB,IAAI,EAAE,YAAY;IAM/B,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC;CAoB/D"}
@@ -1,5 +1,6 @@
1
1
  import * as tools from "@bgord/tools";
2
2
  import * as prereqs from "../prerequisites.service";
3
+ import { PrerequisiteFile } from "./file";
3
4
  export class PrerequisiteLogFile {
4
5
  deps;
5
6
  kind = "log-file";
@@ -18,10 +19,12 @@ export class PrerequisiteLogFile {
18
19
  const path = this.deps.Logger.getFilePath();
19
20
  if (!path)
20
21
  return prereqs.Verification.undetermined(stopwatch.stop());
21
- const result = await Bun.file(path.get()).exists();
22
- if (result)
23
- return prereqs.Verification.success(stopwatch.stop());
24
- return prereqs.Verification.failure(stopwatch.stop(), { message: `Missing file: ${path.get()}` });
22
+ const file = new PrerequisiteFile({
23
+ label: this.label,
24
+ file: path,
25
+ permissions: { read: true, write: true },
26
+ });
27
+ return file.verify(clock);
25
28
  }
26
29
  catch (error) {
27
30
  return prereqs.Verification.failure(stopwatch.stop(), error);
@@ -1 +1 @@
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;AAIpD,MAAM,OAAO,mBAAmB;IAOX;IANV,IAAI,GAAG,UAAU,CAAC;IAClB,KAAK,CAAgC;IACrC,OAAO,GAAa,IAAI,CAAC;IAElC,YACE,MAAsC,EACrB,IAAkB;QAAlB,SAAI,GAAJ,IAAI,CAAc;QAEnC,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,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAC5C,IAAI,CAAC,IAAI;gBAAE,OAAO,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;YAEtE,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;YAEnD,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,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;QACpG,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
+ {"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;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,QAAQ,CAAC;AAI1C,MAAM,OAAO,mBAAmB;IAOX;IANV,IAAI,GAAG,UAAU,CAAC;IAClB,KAAK,CAAgC;IACrC,OAAO,GAAa,IAAI,CAAC;IAElC,YACE,MAAsC,EACrB,IAAkB;QAAlB,SAAI,GAAJ,IAAI,CAAc;QAEnC,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,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YAC5C,IAAI,CAAC,IAAI;gBAAE,OAAO,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;YAEtE,MAAM,IAAI,GAAG,IAAI,gBAAgB,CAAC;gBAChC,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAE,IAAI;gBACV,WAAW,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE;aACzC,CAAC,CAAC;YAEH,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5B,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"}