@bgord/tools 1.2.22 → 1.3.0

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,7 +1,6 @@
1
1
  import { type BasenameType } from "./basename.vo";
2
2
  import { type ExtensionType } from "./extension.vo";
3
3
  import { FilenameAffixStrategy, type FilenameAffixType } from "./filename-affix.vo";
4
- import { Mime } from "./mime.vo";
5
4
  export declare class Filename {
6
5
  private readonly basename;
7
6
  private readonly extension;
@@ -12,7 +11,6 @@ export declare class Filename {
12
11
  get(): string;
13
12
  getBasename(): BasenameType;
14
13
  getExtension(): ExtensionType;
15
- getMime(): Mime;
16
14
  withExtension(extension: ExtensionType): Filename;
17
15
  withBasename(basename: BasenameType): Filename;
18
16
  withAffix(candidate: string, strategy: FilenameAffixStrategy): Filename;
@@ -2,7 +2,6 @@ import { Basename } from "./basename.vo";
2
2
  import { Extension } from "./extension.vo";
3
3
  import { FilenameAffix, FilenameAffixStrategy } from "./filename-affix.vo";
4
4
  import { FilenameFromString } from "./filename-from-string.vo";
5
- import { Mime } from "./mime.vo";
6
5
  export class Filename {
7
6
  basename;
8
7
  extension;
@@ -29,9 +28,6 @@ export class Filename {
29
28
  getExtension() {
30
29
  return this.extension;
31
30
  }
32
- getMime() {
33
- return Mime.fromExtension(this.extension);
34
- }
35
31
  withExtension(extension) {
36
32
  return new Filename(this.basename, extension);
37
33
  }
package/dist/index.d.ts CHANGED
@@ -46,6 +46,7 @@ export * from "./language.vo";
46
46
  export * from "./linear-regression.service";
47
47
  export * from "./mean.service";
48
48
  export * from "./mime.vo";
49
+ export * from "./mime-registry.service";
49
50
  export * from "./mime-types.vo";
50
51
  export * from "./mime-value.vo";
51
52
  export * from "./min-max-scaler.service";
package/dist/index.js CHANGED
@@ -46,6 +46,7 @@ export * from "./language.vo";
46
46
  export * from "./linear-regression.service";
47
47
  export * from "./mean.service";
48
48
  export * from "./mime.vo";
49
+ export * from "./mime-registry.service";
49
50
  export * from "./mime-types.vo";
50
51
  export * from "./mime-value.vo";
51
52
  export * from "./min-max-scaler.service";
@@ -0,0 +1,13 @@
1
+ import type { ExtensionType } from "./extension.vo";
2
+ import type { Mime } from "./mime.vo";
3
+ export type MimeRegistryEntry = {
4
+ mime: Mime;
5
+ extensions: ExtensionType[];
6
+ };
7
+ export declare class MimeRegistry {
8
+ private readonly byExtension;
9
+ private readonly byMime;
10
+ constructor(entries: readonly MimeRegistryEntry[]);
11
+ fromExtension(extension: ExtensionType): Mime | undefined;
12
+ toExtension(mime: Mime): ExtensionType | undefined;
13
+ }
@@ -0,0 +1,19 @@
1
+ export class MimeRegistry {
2
+ byExtension = new Map();
3
+ byMime = new Map();
4
+ constructor(entries) {
5
+ for (const entry of entries) {
6
+ for (const extension of entry.extensions) {
7
+ this.byExtension.set(extension, entry.mime);
8
+ }
9
+ const canonical = entry.extensions[0];
10
+ this.byMime.set(entry.mime.toString(), canonical);
11
+ }
12
+ }
13
+ fromExtension(extension) {
14
+ return this.byExtension.get(extension);
15
+ }
16
+ toExtension(mime) {
17
+ return this.byMime.get(mime.toString());
18
+ }
19
+ }
package/dist/mime.vo.d.ts CHANGED
@@ -1,4 +1,3 @@
1
- import { type ExtensionType } from "./extension.vo";
2
1
  export declare const MimeError: {
3
2
  NotAccepted: string;
4
3
  };
@@ -7,9 +6,7 @@ export declare class Mime {
7
6
  readonly subtype: string;
8
7
  private constructor();
9
8
  static fromString(candidate: string): Mime;
10
- static fromExtension(extension: ExtensionType): Mime;
11
9
  isSatisfiedBy(another: Mime): boolean;
12
- toExtension(): ExtensionType;
13
10
  toString(): string;
14
11
  toJSON(): {
15
12
  type: string;
package/dist/mime.vo.js CHANGED
@@ -1,5 +1,3 @@
1
- import * as mime from "mime-types";
2
- import { Extension } from "./extension.vo";
3
1
  import { MimeValue } from "./mime-value.vo";
4
2
  export const MimeError = { NotAccepted: "mime.not.accepted" };
5
3
  export class Mime {
@@ -13,17 +11,11 @@ export class Mime {
13
11
  const { type, subtype } = MimeValue.parse(candidate.split(";")[0].trim());
14
12
  return new Mime(type, subtype);
15
13
  }
16
- static fromExtension(extension) {
17
- return Mime.fromString(String(mime.contentType(extension)));
18
- }
19
14
  isSatisfiedBy(another) {
20
15
  if (!(this.type === another.type || this.type === "*"))
21
16
  return false;
22
17
  return this.subtype === another.subtype || this.subtype === "*";
23
18
  }
24
- toExtension() {
25
- return Extension.parse(mime.extension(this.toString()));
26
- }
27
19
  toString() {
28
20
  return `${this.type}/${this.subtype}`;
29
21
  }
@@ -1 +1 @@
1
- {"root":["../src/age-years.vo.ts","../src/age.vo.ts","../src/api-key.vo.ts","../src/basename.vo.ts","../src/clock-format.service.ts","../src/clock.vo.ts","../src/date-calculator.service.ts","../src/date-formatter.service.ts","../src/date-range.vo.ts","../src/day-iso-id.vo.ts","../src/day.vo.ts","../src/directory-path-absolute.vo.ts","../src/directory-path-relative.vo.ts","../src/distance-value.vo.ts","../src/distance.vo.ts","../src/division-factor.vo.ts","../src/dll.service.ts","../src/duration-ms.vo.ts","../src/duration.service.ts","../src/email-mask.service.ts","../src/email.vo.ts","../src/etags.vo.ts","../src/extension.vo.ts","../src/feature-flag-value.vo.ts","../src/feature-flag.vo.ts","../src/file-path-absolute-schema.vo.ts","../src/file-path-relative-schema.vo.ts","../src/file-path.vo.ts","../src/filename-affix.vo.ts","../src/filename-from-string.vo.ts","../src/filename.vo.ts","../src/height-milimiters.vo.ts","../src/height.vo.ts","../src/hour-format.service.ts","../src/hour-schema.vo.ts","../src/hour.vo.ts","../src/iban-mask.service.ts","../src/iban-schema.vo.ts","../src/iban.vo.ts","../src/image.vo.ts","../src/index.ts","../src/integer-non-negative.vo.ts","../src/integer-positive.vo.ts","../src/integer.vo.ts","../src/language.vo.ts","../src/linear-regression.service.ts","../src/mean.service.ts","../src/mime-types.vo.ts","../src/mime-value.vo.ts","../src/mime.vo.ts","../src/min-max-scaler.service.ts","../src/minute-schema.vo.ts","../src/minute.vo.ts","../src/money-amount.vo.ts","../src/money.vo.ts","../src/month-iso-id.vo.ts","../src/month.vo.ts","../src/multiplication-factor.vo.ts","../src/noop.service.ts","../src/notification-template.vo.ts","../src/object-key.vo.ts","../src/outlier-detector.service.ts","../src/package-version-schema.vo.ts","../src/package-version.vo.ts","../src/pagination-page.vo.ts","../src/pagination-skip.vo.ts","../src/pagination-take.vo.ts","../src/pagination.service.ts","../src/percentage.service.ts","../src/population-standard-deviation.service.ts","../src/quarter-iso-id.vo.ts","../src/quarter.vo.ts","../src/random.service.ts","../src/rate-limiter.service.ts","../src/relative-date.vo.ts","../src/reordering-item-position-value.vo.ts","../src/reordering.service.ts","../src/revision-value.vo.ts","../src/revision.vo.ts","../src/rounding-decimal.strategy.ts","../src/rounding-down.strategy.ts","../src/rounding-to-nearest.strategy.ts","../src/rounding-up.strategy.ts","../src/rounding.strategy.ts","../src/size-bytes.vo.ts","../src/size.vo.ts","../src/slug.service.ts","../src/sum.service.ts","../src/thousands-separator.service.ts","../src/time-zone-offset-value.vo.ts","../src/timestamp-value.vo.ts","../src/timestamp.vo.ts","../src/timezone.vo.ts","../src/ts-utils.ts","../src/url-with-slash.vo.ts","../src/url-without-slash.vo.ts","../src/visually-unambiguous-characters-generator.service.ts","../src/week-iso-id.vo.ts","../src/week.vo.ts","../src/weekday.vo.ts","../src/weight-grams.vo.ts","../src/weight.vo.ts","../src/year-iso-id.vo.ts","../src/year.vo.ts","../src/z-score.service.ts"],"version":"5.9.3"}
1
+ {"root":["../src/age-years.vo.ts","../src/age.vo.ts","../src/api-key.vo.ts","../src/basename.vo.ts","../src/clock-format.service.ts","../src/clock.vo.ts","../src/date-calculator.service.ts","../src/date-formatter.service.ts","../src/date-range.vo.ts","../src/day-iso-id.vo.ts","../src/day.vo.ts","../src/directory-path-absolute.vo.ts","../src/directory-path-relative.vo.ts","../src/distance-value.vo.ts","../src/distance.vo.ts","../src/division-factor.vo.ts","../src/dll.service.ts","../src/duration-ms.vo.ts","../src/duration.service.ts","../src/email-mask.service.ts","../src/email.vo.ts","../src/etags.vo.ts","../src/extension.vo.ts","../src/feature-flag-value.vo.ts","../src/feature-flag.vo.ts","../src/file-path-absolute-schema.vo.ts","../src/file-path-relative-schema.vo.ts","../src/file-path.vo.ts","../src/filename-affix.vo.ts","../src/filename-from-string.vo.ts","../src/filename.vo.ts","../src/height-milimiters.vo.ts","../src/height.vo.ts","../src/hour-format.service.ts","../src/hour-schema.vo.ts","../src/hour.vo.ts","../src/iban-mask.service.ts","../src/iban-schema.vo.ts","../src/iban.vo.ts","../src/image.vo.ts","../src/index.ts","../src/integer-non-negative.vo.ts","../src/integer-positive.vo.ts","../src/integer.vo.ts","../src/language.vo.ts","../src/linear-regression.service.ts","../src/mean.service.ts","../src/mime-registry.service.ts","../src/mime-types.vo.ts","../src/mime-value.vo.ts","../src/mime.vo.ts","../src/min-max-scaler.service.ts","../src/minute-schema.vo.ts","../src/minute.vo.ts","../src/money-amount.vo.ts","../src/money.vo.ts","../src/month-iso-id.vo.ts","../src/month.vo.ts","../src/multiplication-factor.vo.ts","../src/noop.service.ts","../src/notification-template.vo.ts","../src/object-key.vo.ts","../src/outlier-detector.service.ts","../src/package-version-schema.vo.ts","../src/package-version.vo.ts","../src/pagination-page.vo.ts","../src/pagination-skip.vo.ts","../src/pagination-take.vo.ts","../src/pagination.service.ts","../src/percentage.service.ts","../src/population-standard-deviation.service.ts","../src/quarter-iso-id.vo.ts","../src/quarter.vo.ts","../src/random.service.ts","../src/rate-limiter.service.ts","../src/relative-date.vo.ts","../src/reordering-item-position-value.vo.ts","../src/reordering.service.ts","../src/revision-value.vo.ts","../src/revision.vo.ts","../src/rounding-decimal.strategy.ts","../src/rounding-down.strategy.ts","../src/rounding-to-nearest.strategy.ts","../src/rounding-up.strategy.ts","../src/rounding.strategy.ts","../src/size-bytes.vo.ts","../src/size.vo.ts","../src/slug.service.ts","../src/sum.service.ts","../src/thousands-separator.service.ts","../src/time-zone-offset-value.vo.ts","../src/timestamp-value.vo.ts","../src/timestamp.vo.ts","../src/timezone.vo.ts","../src/ts-utils.ts","../src/url-with-slash.vo.ts","../src/url-without-slash.vo.ts","../src/visually-unambiguous-characters-generator.service.ts","../src/week-iso-id.vo.ts","../src/week.vo.ts","../src/weekday.vo.ts","../src/weight-grams.vo.ts","../src/weight.vo.ts","../src/year-iso-id.vo.ts","../src/year.vo.ts","../src/z-score.service.ts"],"version":"5.9.3"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bgord/tools",
3
- "version": "1.2.22",
3
+ "version": "1.3.0",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "author": "Bartosz Gordon",
@@ -25,7 +25,6 @@
25
25
  "@commitlint/config-conventional": "20.3.1",
26
26
  "@stryker-mutator/core": "9.4.0",
27
27
  "@types/bun": "1.3.6",
28
- "@types/mime-types": "3.0.1",
29
28
  "cspell": "9.6.0",
30
29
  "knip": "5.81.0",
31
30
  "lefthook": "2.0.15",
@@ -36,8 +35,7 @@
36
35
  "zod": "4.3.5"
37
36
  },
38
37
  "dependencies": {
39
- "date-fns": "4.1.0",
40
- "mime-types": "3.0.2"
38
+ "date-fns": "4.1.0"
41
39
  },
42
40
  "peerDependencies": {
43
41
  "zod": "4.3.5"
package/readme.md CHANGED
@@ -70,6 +70,7 @@ src/
70
70
  ├── language.vo.ts
71
71
  ├── linear-regression.service.ts
72
72
  ├── mean.service.ts
73
+ ├── mime-registry.service.ts
73
74
  ├── mime-types.vo.ts
74
75
  ├── mime-value.vo.ts
75
76
  ├── mime.vo.ts