github-action-readme-generator 1.9.2 → 1.10.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.
Files changed (49) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +13 -1
  3. package/action.yml +17 -0
  4. package/dist/bin/index.js +212 -59
  5. package/dist/mjs/Action.d.ts +15 -15
  6. package/dist/mjs/Action.js +11 -4
  7. package/dist/mjs/Action.js.map +1 -1
  8. package/dist/mjs/constants.d.ts +13 -0
  9. package/dist/mjs/constants.js +17 -0
  10. package/dist/mjs/constants.js.map +1 -1
  11. package/dist/mjs/helpers.d.ts +4 -5
  12. package/dist/mjs/helpers.js +201 -33
  13. package/dist/mjs/helpers.js.map +1 -1
  14. package/dist/mjs/inputs.d.ts +3 -11
  15. package/dist/mjs/inputs.js +28 -14
  16. package/dist/mjs/inputs.js.map +1 -1
  17. package/dist/mjs/logtask/index.js +1 -1
  18. package/dist/mjs/logtask/index.js.map +1 -1
  19. package/dist/mjs/prettier.js +4 -3
  20. package/dist/mjs/prettier.js.map +1 -1
  21. package/dist/mjs/readme-editor.js.map +1 -1
  22. package/dist/mjs/readme-generator.d.ts +3 -3
  23. package/dist/mjs/readme-generator.js.map +1 -1
  24. package/dist/mjs/save.d.ts +2 -2
  25. package/dist/mjs/save.js.map +1 -1
  26. package/dist/mjs/sections/index.d.ts +1 -1
  27. package/dist/mjs/sections/index.js +8 -8
  28. package/dist/mjs/sections/index.js.map +1 -1
  29. package/dist/mjs/sections/update-badges.d.ts +1 -1
  30. package/dist/mjs/sections/update-badges.js.map +1 -1
  31. package/dist/mjs/sections/update-branding.d.ts +1 -1
  32. package/dist/mjs/sections/update-branding.js.map +1 -1
  33. package/dist/mjs/sections/update-contents.d.ts +1 -1
  34. package/dist/mjs/sections/update-contents.js.map +1 -1
  35. package/dist/mjs/sections/update-description.d.ts +1 -1
  36. package/dist/mjs/sections/update-description.js.map +1 -1
  37. package/dist/mjs/sections/update-inputs.d.ts +1 -1
  38. package/dist/mjs/sections/update-inputs.js.map +1 -1
  39. package/dist/mjs/sections/update-outputs.d.ts +1 -1
  40. package/dist/mjs/sections/update-outputs.js.map +1 -1
  41. package/dist/mjs/sections/update-title.d.ts +1 -1
  42. package/dist/mjs/sections/update-title.js.map +1 -1
  43. package/dist/mjs/sections/update-usage.d.ts +1 -1
  44. package/dist/mjs/sections/update-usage.js.map +1 -1
  45. package/dist/mjs/svg-editor.d.mts +2 -2
  46. package/dist/mjs/svg-editor.mjs +3 -3
  47. package/dist/mjs/svg-editor.mjs.map +1 -1
  48. package/dist/types/index.d.ts +122 -129
  49. package/package.json +16 -36
@@ -136,6 +136,18 @@ declare module "src/constants" {
136
136
  /**
137
137
  * Enumerates the keys for the configuration options.
138
138
  */
139
+ /**
140
+ * Valid version source options for determining action version.
141
+ */
142
+ export const VERSION_SOURCES: readonly ["git-tag", "git-branch", "git-sha", "package-json", "explicit"];
143
+ /**
144
+ * Type for version source options.
145
+ */
146
+ export type VersionSource = (typeof VERSION_SOURCES)[number];
147
+ /**
148
+ * Checks if the given value is a valid version source.
149
+ */
150
+ export function isValidVersionSource(value: string): value is VersionSource;
139
151
  export enum ConfigKeys {
140
152
  Owner = "owner",
141
153
  Repo = "repo",
@@ -150,6 +162,7 @@ declare module "src/constants" {
150
162
  VersioningOverride = "versioning:override",
151
163
  VersioningPrefix = "versioning:prefix",
152
164
  VersioningBranch = "versioning:branch",
165
+ VersioningSource = "versioning:source",
153
166
  IncludeGithubVersionBadge = "versioning:badge",
154
167
  DebugNconf = "debug:nconf",
155
168
  DebugReadme = "debug:readme",
@@ -241,37 +254,37 @@ declare module "src/Action" {
241
254
  * Defines the runs property for container actions.
242
255
  */
243
256
  type RunsContainer = {
244
- 'using': ContainerAction;
245
- 'image': string;
246
- 'args'?: string[];
257
+ using: ContainerAction;
258
+ image: string;
259
+ args?: string[];
247
260
  'pre-entrypoint'?: string;
248
261
  'post-entrypoint'?: string;
249
- 'entrypoint'?: string;
262
+ entrypoint?: string;
250
263
  };
251
264
  /**
252
265
  * Defines the runs property for JavaScript actions.
253
266
  */
254
267
  type RunsJavascript = {
255
268
  /** The runner used to execute the action */
256
- 'using': JavascriptAction;
269
+ using: JavascriptAction;
257
270
  /** The entrypoint file for the action */
258
- 'main': string;
259
- 'pre'?: string;
271
+ main: string;
272
+ pre?: string;
260
273
  'pre-if'?: string;
261
274
  'post-if'?: string;
262
- 'post'?: string;
275
+ post?: string;
263
276
  };
264
277
  /**
265
278
  * Defines the steps property for composite actions.
266
279
  */
267
280
  type Steps = {
268
- 'shell'?: string;
269
- 'if'?: string;
270
- 'run'?: string;
271
- 'name'?: string;
272
- 'id'?: string;
281
+ shell?: string;
282
+ if?: string;
283
+ run?: string;
284
+ name?: string;
285
+ id?: string;
273
286
  'working-directory'?: string;
274
- 'env': {
287
+ env: {
275
288
  [key: string]: string;
276
289
  };
277
290
  };
@@ -311,7 +324,7 @@ declare module "src/Action" {
311
324
  * Parses and represents metadata from action.yml.
312
325
  */
313
326
  export default class Action implements ActionYaml {
314
- static validate(obj: any): obj is ActionType;
327
+ static validate(obj: unknown): obj is ActionType;
315
328
  log: LogTask;
316
329
  /** Name of the action */
317
330
  name: string;
@@ -360,10 +373,7 @@ declare module "src/Action" {
360
373
  stringify(): string;
361
374
  }
362
375
  }
363
- declare module "__tests__/action.test" {
364
- export const __filename: string;
365
- export const __dirname: string;
366
- }
376
+ declare module "__tests__/action.test" { }
367
377
  declare module "__tests__/constants.test" { }
368
378
  declare module "__tests__/env.test" { }
369
379
  declare module "src/prettier" {
@@ -440,20 +450,12 @@ declare module "src/readme-editor" {
440
450
  declare module "src/inputs" {
441
451
  import { Context } from '@actions/github/lib/context.js';
442
452
  import nconf from 'nconf';
443
- import Action, { Input } from "src/Action";
444
- import { ReadmeSection } from "src/constants";
453
+ import Action, { type Input } from "src/Action";
454
+ import { type ReadmeSection } from "src/constants";
445
455
  import LogTask from "src/logtask/index";
446
456
  import ReadmeEditor from "src/readme-editor";
447
457
  const Provider: typeof nconf.Provider;
448
458
  type IOptions = nconf.IOptions;
449
- /**
450
- * Get the filename from the import.meta.url
451
- */
452
- export const __filename: string;
453
- /**
454
- * Get the directory name from the filename
455
- */
456
- export const __dirname: string;
457
459
  /**
458
460
  * Change working directory to output of workingDirectory()
459
461
  */
@@ -477,7 +479,7 @@ declare module "src/inputs" {
477
479
  * Type alias for Provider instance
478
480
  */
479
481
  type ProviderInstance = InstanceType<typeof Provider>;
480
- export function transformGitHubInputsToArgv(log: LogTask, config: ProviderInstance, obj: KVPairType): undefined | KVPairType;
482
+ export function transformGitHubInputsToArgv(log: LogTask, _config: ProviderInstance, obj: KVPairType): undefined | KVPairType;
481
483
  /**
482
484
  * Sets config value from action file default
483
485
  *
@@ -604,9 +606,7 @@ declare module "src/helpers" {
604
606
  import type { Context } from '@actions/github/lib/context.js';
605
607
  import type Inputs from "src/inputs";
606
608
  import LogTask from "src/logtask/index";
607
- import { Nullable } from "src/util";
608
- export const __filename: string;
609
- export const __dirname: string;
609
+ import { type Nullable } from "src/util";
610
610
  /**
611
611
  * Returns the input value if it is not empty, otherwise returns undefined.
612
612
  * @param value - The input value to check.
@@ -661,9 +661,10 @@ declare module "src/helpers" {
661
661
  * Finds the repository information from the input, context, environment variables, or git configuration.
662
662
  * @param inputRepo - The input repository string.
663
663
  * @param context - The GitHub context object.
664
+ * @param baseDir - Optional base directory to look for .git/config (defaults to CWD).
664
665
  * @returns The repository information (owner and repo) or null if not found.
665
666
  */
666
- export function repositoryFinder(inputRepo: Nullable<string>, context: Nullable<Context>): Repo | null;
667
+ export function repositoryFinder(inputRepo: Nullable<string>, context: Nullable<Context>, baseDir?: string): Repo | null;
667
668
  /**
668
669
  * Returns the default branch of the git repository.
669
670
  * @returns The default branch.
@@ -692,89 +693,17 @@ declare module "src/helpers" {
692
693
  export function getCurrentVersionString(inputs: Inputs): string;
693
694
  export function indexOfRegex(str: string, providedRegex: RegExp): number;
694
695
  export function lastIndexOfRegex(str: string, providedRegex: RegExp): number;
695
- export function isObject(value: any): value is object;
696
- }
697
- declare module "__tests__/helpers.test" {
698
- export const __filename: string;
699
- export const __dirname: string;
700
- }
701
- declare module "__tests__/inputs.test" {
702
- export const __filename: string;
703
- export const __dirname: string;
704
- }
705
- declare module "__tests__/integration-issue-335.test" { }
706
- declare module "src/markdowner/index" {
707
- /**
708
- * Types representing a 2D array of strings for a Markdown table.
709
- */
710
- export type MarkdownArrayRowType = string[][];
711
- export type MarkdownArrayItemType = string;
712
- /**
713
- * Fills a string to a desired width by padding with spaces.
714
- *
715
- * @param text - The text to pad.
716
- * @param width - The desired total width.
717
- * @param paddingStart - Number of spaces to pad at the start.
718
- * @returns The padded string.
719
- */
720
- export function padString(text: string, width: number, paddingStart: number): string;
721
- /**
722
- * Escapes special Markdown characters in a string.
723
- *
724
- * @param text - The text to escape.
725
- * @returns The escaped text.
726
- */
727
- export function markdownEscapeTableCell(text: string): string;
728
- /**
729
- * Escapes inline code blocks in a Markdown string.
730
- *
731
- * @param content - Markdown string.
732
- * @returns String with escaped inline code blocks.
733
- */
734
- export function markdownEscapeInlineCode(content: string): string;
735
- /**
736
- * Clones a 2D array.
737
- *
738
- * @param arr - Array to clone.
739
- * @returns Cloned array.
740
- */
741
- export function cloneArray(arr: MarkdownArrayRowType): MarkdownArrayRowType;
742
- /**
743
- * Gets max and min column counts from 2D array.
744
- *
745
- * @param data - 2D string array.
746
- * @returns Object with max and min cols.
747
- */
748
- export function getColumnCounts(data: MarkdownArrayRowType): {
749
- maxCols: number;
750
- minCols: number;
751
- };
752
- /**
753
- * Pads 2D array rows to equal length.
754
- *
755
- * @param data - 2D array to pad.
756
- * @param maxCols - Number of columns to pad to.
757
- * @returns Padded 2D array.
758
- */
759
- export function padArrayRows(data: MarkdownArrayRowType, maxCols: number): MarkdownArrayRowType;
760
- /**
761
- * Converts a 2D array of strings to a Markdown table.
762
- *
763
- * @param data - 2D string array.
764
- * @returns Markdown table string.
765
- */
766
- export function ArrayOfArraysToMarkdownTable(providedTableContent: MarkdownArrayRowType): string;
767
- export default ArrayOfArraysToMarkdownTable;
696
+ export function isObject(value: unknown): value is object;
768
697
  }
769
- declare module "__tests__/markdowner.test" { }
770
- declare module "__tests__/prettier.test" { }
698
+ declare module "__tests__/helpers.test" { }
699
+ declare module "__tests__/inputs.test" { }
771
700
  declare module "src/sections/update-badges" {
772
701
  /**
773
702
  * This TypeScript code imports necessary modules and defines a function named 'updateBadges' which takes a sectionToken (ReadmeSection) and an instance of the 'Inputs' class as its parameters.
774
703
  * The function is responsible for updating the badges section in the README.md file based on the provided inputs.
775
704
  * It utilizes the 'LogTask' class for logging purposes.
776
705
  */
777
- import { ReadmeSection } from "src/constants";
706
+ import type { ReadmeSection } from "src/constants";
778
707
  import type Inputs from "src/inputs";
779
708
  /**
780
709
  * Interface for a badge.
@@ -804,7 +733,7 @@ declare module "src/svg-editor" {
804
733
  /**
805
734
  * Initializes the SVG window, document, and canvas if not already set up.
806
735
  */
807
- initSVG(): Promise<void>;
736
+ initSVG(): void;
808
737
  /**
809
738
  * Generates a branded SVG image.
810
739
  * @param {string | undefined} svgPath - Path to write the generated SVG file to.
@@ -812,7 +741,7 @@ declare module "src/svg-editor" {
812
741
  * @param {Partial<BrandColors>} bgcolor - Background color for the image.
813
742
  * @returns {Promise<void>} A promise that resolves when the image is generated.
814
743
  */
815
- generateSvgImage(svgPath: string | undefined, icon?: Partial<FeatherIconNames>, bgcolor?: Partial<BrandColors>): Promise<void>;
744
+ generateSvgImage(svgPath: string | undefined, icon?: Partial<FeatherIconNames>, bgcolor?: Partial<BrandColors>): void;
816
745
  /**
817
746
  * Writes the SVG xml to disk.
818
747
  * @param {string} svgPath - File path to save the SVG to.
@@ -832,7 +761,7 @@ declare module "src/svg-editor" {
832
761
  declare module "src/sections/update-branding" {
833
762
  import type { FeatherIconNames } from 'feather-icons';
834
763
  import type { BrandColors } from "src/constants";
835
- import { ReadmeSection } from "src/constants";
764
+ import { type ReadmeSection } from "src/constants";
836
765
  import type Inputs from "src/inputs";
837
766
  export interface IBranding {
838
767
  alt: string;
@@ -893,7 +822,7 @@ declare module "src/sections/update-contents" {
893
822
  * @param {ReadmeSection} sectionToken - The sectionToken representing the section of the README to update.
894
823
  * @param {Inputs} inputs - The Inputs class instance.
895
824
  */
896
- import { ReadmeSection } from "src/constants";
825
+ import type { ReadmeSection } from "src/constants";
897
826
  import type Inputs from "src/inputs";
898
827
  export default function updateContents(sectionToken: ReadmeSection, inputs: Inputs): Record<string, string>;
899
828
  }
@@ -905,10 +834,73 @@ declare module "src/sections/update-description" {
905
834
  * @param {ReadmeSection} sectionToken - The sectionToken representing the section of the README to update.
906
835
  * @param {Inputs} inputs - The Inputs class instance.
907
836
  */
908
- import { ReadmeSection } from "src/constants";
837
+ import type { ReadmeSection } from "src/constants";
909
838
  import type Inputs from "src/inputs";
910
839
  export default function updateDescription(sectionToken: ReadmeSection, inputs: Inputs): Record<string, string>;
911
840
  }
841
+ declare module "src/markdowner/index" {
842
+ /**
843
+ * Types representing a 2D array of strings for a Markdown table.
844
+ */
845
+ export type MarkdownArrayRowType = string[][];
846
+ export type MarkdownArrayItemType = string;
847
+ /**
848
+ * Fills a string to a desired width by padding with spaces.
849
+ *
850
+ * @param text - The text to pad.
851
+ * @param width - The desired total width.
852
+ * @param paddingStart - Number of spaces to pad at the start.
853
+ * @returns The padded string.
854
+ */
855
+ export function padString(text: string, width: number, paddingStart: number): string;
856
+ /**
857
+ * Escapes special Markdown characters in a string.
858
+ *
859
+ * @param text - The text to escape.
860
+ * @returns The escaped text.
861
+ */
862
+ export function markdownEscapeTableCell(text: string): string;
863
+ /**
864
+ * Escapes inline code blocks in a Markdown string.
865
+ *
866
+ * @param content - Markdown string.
867
+ * @returns String with escaped inline code blocks.
868
+ */
869
+ export function markdownEscapeInlineCode(content: string): string;
870
+ /**
871
+ * Clones a 2D array.
872
+ *
873
+ * @param arr - Array to clone.
874
+ * @returns Cloned array.
875
+ */
876
+ export function cloneArray(arr: MarkdownArrayRowType): MarkdownArrayRowType;
877
+ /**
878
+ * Gets max and min column counts from 2D array.
879
+ *
880
+ * @param data - 2D string array.
881
+ * @returns Object with max and min cols.
882
+ */
883
+ export function getColumnCounts(data: MarkdownArrayRowType): {
884
+ maxCols: number;
885
+ minCols: number;
886
+ };
887
+ /**
888
+ * Pads 2D array rows to equal length.
889
+ *
890
+ * @param data - 2D array to pad.
891
+ * @param maxCols - Number of columns to pad to.
892
+ * @returns Padded 2D array.
893
+ */
894
+ export function padArrayRows(data: MarkdownArrayRowType, maxCols: number): MarkdownArrayRowType;
895
+ /**
896
+ * Converts a 2D array of strings to a Markdown table.
897
+ *
898
+ * @param data - 2D string array.
899
+ * @returns Markdown table string.
900
+ */
901
+ export function ArrayOfArraysToMarkdownTable(providedTableContent: MarkdownArrayRowType): string;
902
+ export default ArrayOfArraysToMarkdownTable;
903
+ }
912
904
  declare module "src/sections/update-inputs" {
913
905
  /**
914
906
  * This TypeScript code exports a function named 'updateInputs' which takes a sectionToken (ReadmeSection) and an instance of the 'Inputs' class as its parameters.
@@ -917,7 +909,7 @@ declare module "src/sections/update-inputs" {
917
909
  * @param {ReadmeSection} sectionToken - The sectionToken representing the section of the README to update.
918
910
  * @param {Inputs} inputs - The Inputs class instance.
919
911
  */
920
- import { ReadmeSection } from "src/constants";
912
+ import type { ReadmeSection } from "src/constants";
921
913
  import type Inputs from "src/inputs";
922
914
  export default function updateInputs(sectionToken: ReadmeSection, inputs: Inputs): Record<string, string>;
923
915
  }
@@ -930,7 +922,7 @@ declare module "src/sections/update-outputs" {
930
922
  * @param {ReadmeSection} sectionToken - The sectionToken used for identifying the section.
931
923
  * @param {Inputs} inputs - The Inputs class instance.
932
924
  */
933
- import { ReadmeSection } from "src/constants";
925
+ import type { ReadmeSection } from "src/constants";
934
926
  import type Inputs from "src/inputs";
935
927
  export default function updateOutputs(sectionToken: ReadmeSection, inputs: Inputs): Record<string, string>;
936
928
  }
@@ -942,12 +934,12 @@ declare module "src/sections/update-title" {
942
934
  * @param {ReadmeSection} sectionToken - The sectionToken representing the section of the README to update.
943
935
  * @param {Inputs} inputs - The Inputs class instance.
944
936
  */
945
- import { ReadmeSection } from "src/constants";
937
+ import type { ReadmeSection } from "src/constants";
946
938
  import type Inputs from "src/inputs";
947
939
  export default function updateTitle(sectionToken: ReadmeSection, inputs: Inputs): Record<string, string>;
948
940
  }
949
941
  declare module "src/sections/update-usage" {
950
- import { ReadmeSection } from "src/constants";
942
+ import type { ReadmeSection } from "src/constants";
951
943
  import type Inputs from "src/inputs";
952
944
  export default function updateUsage(sectionToken: ReadmeSection, inputs: Inputs): Promise<Record<string, string>>;
953
945
  }
@@ -960,14 +952,14 @@ declare module "src/sections/index" {
960
952
  * @param {Inputs} inputs - The Inputs class instance.
961
953
  * @returns {Promise<void>} A promise that resolves once the section is updated.
962
954
  */
963
- import { ReadmeSection } from "src/constants";
955
+ import type { ReadmeSection } from "src/constants";
964
956
  import type Inputs from "src/inputs";
965
957
  export default function updateSection(section: ReadmeSection, inputs: Inputs): Promise<Record<string, string>>;
966
958
  }
967
959
  declare module "src/readme-generator" {
968
- import { ReadmeSection } from "src/constants";
969
- import Inputs from "src/inputs";
970
- import LogTask from "src/logtask/index";
960
+ import type { ReadmeSection } from "src/constants";
961
+ import type Inputs from "src/inputs";
962
+ import type LogTask from "src/logtask/index";
971
963
  export type SectionKV = Record<string, string>;
972
964
  /**
973
965
  * Class for managing README generation.
@@ -1016,10 +1008,11 @@ declare module "src/readme-generator" {
1016
1008
  generate(providedSections?: ReadmeSection[]): Promise<void>;
1017
1009
  }
1018
1010
  }
1019
- declare module "__tests__/readme-generator.test" {
1020
- export const __filename: string;
1021
- export const __dirname: string;
1022
- }
1011
+ declare module "__tests__/integration-external-repo.test" { }
1012
+ declare module "__tests__/integration-issue-335.test" { }
1013
+ declare module "__tests__/markdowner.test" { }
1014
+ declare module "__tests__/prettier.test" { }
1015
+ declare module "__tests__/readme-generator.test" { }
1023
1016
  declare module "__tests__/update-contents.test" { }
1024
1017
  declare module "__tests__/logtask/index.test" { }
1025
1018
  declare module "src/config" {
@@ -1066,8 +1059,8 @@ declare module "src/config" {
1066
1059
  }
1067
1060
  }
1068
1061
  declare module "src/save" {
1069
- import Inputs from "src/inputs";
1070
- import LogTask from "src/logtask/index";
1062
+ import type Inputs from "src/inputs";
1063
+ import type LogTask from "src/logtask/index";
1071
1064
  /**
1072
1065
  * This script rebuilds the usage section in the README.md to be consistent with the action.yml
1073
1066
  * @param {Inputs} inputs - the inputs class
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "github-action-readme-generator",
3
3
  "displayName": "bitflight-devops/github-action-readme-generator",
4
- "version": "1.9.2",
4
+ "version": "1.10.0",
5
5
  "description": "The docs generator for GitHub Actions. Auto-syncs action.yml to README.md with 8 sections: inputs, outputs, usage, badges, branding & more. Works as CLI or GitHub Action.",
6
6
  "keywords": [
7
7
  "github-actions",
@@ -58,14 +58,18 @@
58
58
  "commit": "git-cz",
59
59
  "corepack": "corepack enable",
60
60
  "current-version": "jq -r '.version' package.json",
61
- "format": "prettier --write . --config .prettierrc.cjs --ignore-unknown",
61
+ "format": "biome format --write ./src ./__tests__",
62
+ "format:check": "biome format ./src ./__tests__",
63
+ "format:prettier": "prettier --write . --config .prettierrc.cjs --ignore-unknown",
62
64
  "generate-docs": "echo 'Generating docs';node dist/bin/index.js && git add README.md ./.github/ghadocs .ghadocs.json || true",
63
65
  "postinstall": "echo '✨ Successfully Installed'",
64
66
  "prelint": "npm run format && tsc --project tsconfig.json --noemit",
65
- "lint": "npm run lint:eslint && npm run lint:markdown",
66
- "lint:fix": "npm run lint:eslint:fix && npm run lint:markdown:fix",
67
- "lint:eslint": "eslint --color ./src/ ./__tests__/",
68
- "lint:eslint:fix": "eslint --color --fix ./src/ ./__tests__/",
67
+ "lint": "npm run lint:biome && npm run lint:markdown",
68
+ "lint:fix": "npm run lint:biome:fix && npm run lint:markdown:fix",
69
+ "lint:biome": "biome lint ./src/ ./__tests__/",
70
+ "lint:biome:fix": "biome lint --write ./src/ ./__tests__/",
71
+ "check": "biome check ./src/ ./__tests__/",
72
+ "check:fix": "biome check --write ./src/ ./__tests__/",
69
73
  "markdownlint": "markdownlint",
70
74
  "lint:markdown": "markdownlint \"**/*.md\" --config=.markdownlint.json --ignore-path=.markdownlintignore",
71
75
  "lint:markdown:fix": "npm run lint:markdown -- --fix",
@@ -100,11 +104,9 @@
100
104
  }
101
105
  },
102
106
  "lint-staged": {
103
- "*.{md,json,yaml,yml,sh}": "prettier --write",
104
- "{src,__tests__}/**/*.ts": "eslint --cache --fix",
105
- "*.{yaml,yml}": [
106
- "eslint --cache --fix"
107
- ]
107
+ "*.{md,yaml,yml,sh}": "prettier --write",
108
+ "{src,__tests__}/**/*.ts": "biome check --write",
109
+ "*.json": "biome format --write"
108
110
  },
109
111
  "config": {
110
112
  "commitizen": {
@@ -156,25 +158,16 @@
156
158
  "yaml": "^2.8.2"
157
159
  },
158
160
  "devDependencies": {
159
- "@babel/core": "^7.28.5",
160
- "@babel/eslint-parser": "^7.28.5",
161
- "@babel/plugin-proposal-decorators": "^7.28.0",
162
- "@babel/preset-env": "^7.26.0",
161
+ "@biomejs/biome": "2.3.13",
163
162
  "@commitlint/cli": "^20.3.1",
164
163
  "@commitlint/config-conventional": "^20.3.1",
165
164
  "@commitlint/prompt": "^20.3.1",
166
- "@eslint-community/eslint-plugin-eslint-comments": "^4.1.0",
167
165
  "@semantic-release/changelog": "^6.0.3",
168
- "@semantic-release/exec": "^6.0.3",
166
+ "@semantic-release/exec": "^7.1.0",
169
167
  "@semantic-release/git": "^10.0.1",
170
168
  "@tsconfig/node20": "^20.1.2",
171
- "@types/babel__preset-env": "^7",
172
- "@types/esm": "^3",
173
169
  "@types/nconf": "^0.10.5",
174
170
  "@types/node": "^25.0.9",
175
- "@types/node-emoji": "^2.1.0",
176
- "@typescript-eslint/eslint-plugin": "^8.53.1",
177
- "@typescript-eslint/parser": "^8.53.0",
178
171
  "@vitest/coverage-v8": "^4.0.18",
179
172
  "commitizen": "^4.3.1",
180
173
  "conventional-commits": "^1.6.0",
@@ -182,19 +175,6 @@
182
175
  "dotenv": "^16.3.1",
183
176
  "esbuild": "^0.27.2",
184
177
  "esbuild-node-externals": "^1.20.1",
185
- "eslint": "^9.39.2",
186
- "eslint-config-prettier": "^10.1.8",
187
- "eslint-import-resolver-typescript": "^4.4.4",
188
- "eslint-plugin-import": "^2.31.0",
189
- "eslint-plugin-n": "^17.23.2",
190
- "eslint-plugin-optimize-regex": "^1.2.1",
191
- "eslint-plugin-prettier": "^5.5.5",
192
- "eslint-plugin-promise": "^7.2.1",
193
- "eslint-plugin-simple-import-sort": "^12.1.1",
194
- "eslint-plugin-sonarjs": "^3.0.5",
195
- "eslint-plugin-sort-class-members": "^1.21.0",
196
- "eslint-plugin-unicorn": "^62.0.0",
197
- "eslint-plugin-vitest": "^0.5.4",
198
178
  "husky": "^9.1.7",
199
179
  "is-ci": "^3.0.1",
200
180
  "lint-staged": "^16.2.7",
@@ -208,7 +188,7 @@
208
188
  "vitest": "^4.0.18"
209
189
  },
210
190
  "engines": {
211
- "node": ">=20.0.0 <26.0.0",
191
+ "node": ">=20.11.0 <26.0.0",
212
192
  "npm": ">=10.0.0"
213
193
  },
214
194
  "os": [