@alextheman/utility 3.7.0 → 3.8.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.
package/dist/index.cjs CHANGED
@@ -34,6 +34,11 @@ path = __toESM(path);
34
34
  const NAMESPACE_EXPORT_REGEX = "export\\s+\\*\\s+from";
35
35
  var NAMESPACE_EXPORT_REGEX_default = NAMESPACE_EXPORT_REGEX;
36
36
 
37
+ //#endregion
38
+ //#region src/constants/VERSION_NUMBER_REGEX.ts
39
+ const VERSION_NUMBER_REGEX = "^(?:v)?(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)$";
40
+ var VERSION_NUMBER_REGEX_default = VERSION_NUMBER_REGEX;
41
+
37
42
  //#endregion
38
43
  //#region src/functions/arrayHelpers/fillArray.ts
39
44
  /**
@@ -1058,10 +1063,65 @@ function removeIndents(first, ...args) {
1058
1063
  }
1059
1064
  var removeIndents_default = removeIndents;
1060
1065
 
1066
+ //#endregion
1067
+ //#region src/functions/versioning/parseVersion.ts
1068
+ /**
1069
+ * Parses a string and verifies it is a valid package version number.
1070
+ *
1071
+ * Valid formats: `X.Y.Z` or `vX.Y.Z`, where X, Y, and Z are non-negative integers.
1072
+ *
1073
+ * @param input - The version string to parse.
1074
+ * @param options - Extra options to apply.
1075
+ *
1076
+ * @throws {DataError} If the input is not a valid version number.
1077
+ *
1078
+ * @returns The validated version number, prefixed with `v` if it was not already.
1079
+ */
1080
+ function parseVersion(input, options) {
1081
+ if (!RegExp(VERSION_NUMBER_REGEX_default).test(input)) throw new DataError_default(input, `"${input}" is not a valid version number. Version numbers must be of the format "X.Y.Z" or "vX.Y.Z", where X, Y, and Z are non-negative integers.`, "INVALID_VERSION");
1082
+ if (options?.omitPrefix) return input.startsWith("v") ? input.slice(1) : input;
1083
+ return input.startsWith("v") ? input : `v${input}`;
1084
+ }
1085
+ var parseVersion_default = parseVersion;
1086
+
1087
+ //#endregion
1088
+ //#region src/functions/versioning/getIndividualVersionNumbers.ts
1089
+ /**
1090
+ * Gets the individual version numbers from a given version number as a tuple of numbers.
1091
+ *
1092
+ * @param version - The version number.
1093
+ *
1094
+ * @returns A tuple of three numbers indicating `[major, minor, patch]`.
1095
+ */
1096
+ function getIndividualVersionNumbers(version) {
1097
+ return parseVersion_default(version, { omitPrefix: true }).split(".").map((versionNumber) => {
1098
+ return parseIntStrict_default(versionNumber);
1099
+ });
1100
+ }
1101
+ var getIndividualVersionNumbers_default = getIndividualVersionNumbers;
1102
+
1103
+ //#endregion
1104
+ //#region src/functions/versioning/determineVersionType.ts
1105
+ /**
1106
+ * Determines whether the given version is a major, minor, or patch version.
1107
+ *
1108
+ * @param version - The version number.
1109
+ *
1110
+ * @returns Either `"major"`, `"minor"`, or `"patch"`, depending on the version type.
1111
+ */
1112
+ function determineVersionType(version) {
1113
+ const [_major, minor, patch] = getIndividualVersionNumbers_default(version);
1114
+ if (minor === 0 && patch === 0) return "major";
1115
+ if (patch === 0) return "minor";
1116
+ return "patch";
1117
+ }
1118
+ var determineVersionType_default = determineVersionType;
1119
+
1061
1120
  //#endregion
1062
1121
  exports.APIError = APIError_default;
1063
1122
  exports.DataError = DataError_default;
1064
1123
  exports.NAMESPACE_EXPORT_REGEX = NAMESPACE_EXPORT_REGEX_default;
1124
+ exports.VERSION_NUMBER_REGEX = VERSION_NUMBER_REGEX_default;
1065
1125
  exports.addDaysToDate = addDaysToDate_default;
1066
1126
  exports.appendSemicolon = appendSemicolon_default;
1067
1127
  exports.camelToKebab = camelToKebab_default;
@@ -1070,8 +1130,10 @@ exports.createFormData = createFormData_default;
1070
1130
  exports.createTemplateStringsArray = createTemplateStringsArray_default;
1071
1131
  exports.deepCopy = deepCopy_default;
1072
1132
  exports.deepFreeze = deepFreeze_default;
1133
+ exports.determineVersionType = determineVersionType_default;
1073
1134
  exports.fillArray = fillArray_default;
1074
1135
  exports.formatDateAndTime = formatDateAndTime_default;
1136
+ exports.getIndividualVersionNumbers = getIndividualVersionNumbers_default;
1075
1137
  exports.getRandomNumber = getRandomNumber_default;
1076
1138
  exports.getRecordKeys = getRecordKeys_default;
1077
1139
  exports.httpErrorCodeLookup = httpErrorCodeLookup;
@@ -1095,6 +1157,7 @@ exports.parseEnv = parseEnv_default;
1095
1157
  exports.parseFormData = parseFormData_default;
1096
1158
  exports.parseIntStrict = parseIntStrict_default;
1097
1159
  exports.parseUUID = UUID_default;
1160
+ exports.parseVersion = parseVersion_default;
1098
1161
  exports.parseZodSchema = parseZodSchema_default;
1099
1162
  exports.randomiseArray = randomiseArray_default;
1100
1163
  exports.range = range_default;
package/dist/index.d.cts CHANGED
@@ -3,6 +3,9 @@ import z, { ZodType, core, z as z$1 } from "zod";
3
3
  //#region src/constants/NAMESPACE_EXPORT_REGEX.d.ts
4
4
  declare const NAMESPACE_EXPORT_REGEX = "export\\s+\\*\\s+from";
5
5
  //#endregion
6
+ //#region src/constants/VERSION_NUMBER_REGEX.d.ts
7
+ declare const VERSION_NUMBER_REGEX: string;
8
+ //#endregion
6
9
  //#region src/functions/arrayHelpers/fillArray.d.ts
7
10
  /**
8
11
  * Creates a new array where each element is the resolved result of the provided asynchronous callback.
@@ -698,4 +701,43 @@ declare function removeIndents(options: RemoveIndentsOptions): RemoveIndentsFunc
698
701
  */
699
702
  declare function removeIndents(strings: TemplateStringsArray, ...interpolations: unknown[]): string;
700
703
  //#endregion
701
- export { APIError, ArrayElement, CreateFormDataOptions, CreateFormDataOptionsNullableResolution, CreateFormDataOptionsUndefinedOrNullResolution, DataError, DeepReadonly, DisallowUndefined, Email, Env, FormDataArrayResolutionStrategy, FormDataNullableResolutionStrategy, HTTPErrorCode, IgnoreCase, KebabToCamelOptions, NAMESPACE_EXPORT_REGEX, NonUndefined, NormaliseIndentsFunction, NormaliseIndentsOptions, NormalizeIndentsFunction, NormalizeIndentsOptions, OptionalOnCondition, RecordKey, RemoveIndentsFunction, RemoveIndentsOptions, StringListToArrayOptions, UUID, addDaysToDate, appendSemicolon, camelToKebab, convertFileToBase64, createFormData, createTemplateStringsArray, deepCopy, deepFreeze, fillArray, formatDateAndTime, getRandomNumber, getRecordKeys, httpErrorCodeLookup, interpolate, interpolateObjects, isAnniversary, isLeapYear, isMonthlyMultiple, isOrdered, isSameDate, kebabToCamel, normaliseImportPath, normaliseIndents, normalizeImportPath, normalizeIndents, omitProperties, paralleliseArrays, parseBoolean, parseEmail, parseEnv, parseFormData, parseIntStrict, parseUUID, parseZodSchema, randomiseArray, range, removeDuplicates, removeIndents, stringListToArray, stringToBoolean, truncate, wait };
704
+ //#region src/functions/versioning/determineVersionType.d.ts
705
+ type VersionType = "major" | "minor" | "patch";
706
+ /**
707
+ * Determines whether the given version is a major, minor, or patch version.
708
+ *
709
+ * @param version - The version number.
710
+ *
711
+ * @returns Either `"major"`, `"minor"`, or `"patch"`, depending on the version type.
712
+ */
713
+ declare function determineVersionType(version: string): VersionType;
714
+ //#endregion
715
+ //#region src/functions/versioning/getIndividualVersionNumbers.d.ts
716
+ /**
717
+ * Gets the individual version numbers from a given version number as a tuple of numbers.
718
+ *
719
+ * @param version - The version number.
720
+ *
721
+ * @returns A tuple of three numbers indicating `[major, minor, patch]`.
722
+ */
723
+ declare function getIndividualVersionNumbers(version: string): [number, number, number];
724
+ //#endregion
725
+ //#region src/functions/versioning/parseVersion.d.ts
726
+ interface ParseVersionOptions {
727
+ omitPrefix?: boolean;
728
+ }
729
+ /**
730
+ * Parses a string and verifies it is a valid package version number.
731
+ *
732
+ * Valid formats: `X.Y.Z` or `vX.Y.Z`, where X, Y, and Z are non-negative integers.
733
+ *
734
+ * @param input - The version string to parse.
735
+ * @param options - Extra options to apply.
736
+ *
737
+ * @throws {DataError} If the input is not a valid version number.
738
+ *
739
+ * @returns The validated version number, prefixed with `v` if it was not already.
740
+ */
741
+ declare function parseVersion(input: string, options?: ParseVersionOptions): string;
742
+ //#endregion
743
+ export { APIError, ArrayElement, CreateFormDataOptions, CreateFormDataOptionsNullableResolution, CreateFormDataOptionsUndefinedOrNullResolution, DataError, DeepReadonly, DisallowUndefined, Email, Env, FormDataArrayResolutionStrategy, FormDataNullableResolutionStrategy, HTTPErrorCode, IgnoreCase, KebabToCamelOptions, NAMESPACE_EXPORT_REGEX, NonUndefined, NormaliseIndentsFunction, NormaliseIndentsOptions, NormalizeIndentsFunction, NormalizeIndentsOptions, OptionalOnCondition, RecordKey, RemoveIndentsFunction, RemoveIndentsOptions, StringListToArrayOptions, UUID, VERSION_NUMBER_REGEX, VersionType, addDaysToDate, appendSemicolon, camelToKebab, convertFileToBase64, createFormData, createTemplateStringsArray, deepCopy, deepFreeze, determineVersionType, fillArray, formatDateAndTime, getIndividualVersionNumbers, getRandomNumber, getRecordKeys, httpErrorCodeLookup, interpolate, interpolateObjects, isAnniversary, isLeapYear, isMonthlyMultiple, isOrdered, isSameDate, kebabToCamel, normaliseImportPath, normaliseIndents, normalizeImportPath, normalizeIndents, omitProperties, paralleliseArrays, parseBoolean, parseEmail, parseEnv, parseFormData, parseIntStrict, parseUUID, parseVersion, parseZodSchema, randomiseArray, range, removeDuplicates, removeIndents, stringListToArray, stringToBoolean, truncate, wait };
package/dist/index.d.ts CHANGED
@@ -3,6 +3,9 @@ import z, { ZodType, core, z as z$1 } from "zod";
3
3
  //#region src/constants/NAMESPACE_EXPORT_REGEX.d.ts
4
4
  declare const NAMESPACE_EXPORT_REGEX = "export\\s+\\*\\s+from";
5
5
  //#endregion
6
+ //#region src/constants/VERSION_NUMBER_REGEX.d.ts
7
+ declare const VERSION_NUMBER_REGEX: string;
8
+ //#endregion
6
9
  //#region src/functions/arrayHelpers/fillArray.d.ts
7
10
  /**
8
11
  * Creates a new array where each element is the resolved result of the provided asynchronous callback.
@@ -698,4 +701,43 @@ declare function removeIndents(options: RemoveIndentsOptions): RemoveIndentsFunc
698
701
  */
699
702
  declare function removeIndents(strings: TemplateStringsArray, ...interpolations: unknown[]): string;
700
703
  //#endregion
701
- export { APIError, type ArrayElement, type CreateFormDataOptions, type CreateFormDataOptionsNullableResolution, type CreateFormDataOptionsUndefinedOrNullResolution, DataError, type DeepReadonly, type DisallowUndefined, type Email, type Env, type FormDataArrayResolutionStrategy, type FormDataNullableResolutionStrategy, type HTTPErrorCode, type IgnoreCase, KebabToCamelOptions, NAMESPACE_EXPORT_REGEX, type NonUndefined, NormaliseIndentsFunction, NormaliseIndentsOptions, NormalizeIndentsFunction, NormalizeIndentsOptions, type OptionalOnCondition, type RecordKey, RemoveIndentsFunction, RemoveIndentsOptions, type StringListToArrayOptions, type UUID, addDaysToDate, appendSemicolon, camelToKebab, convertFileToBase64, createFormData, createTemplateStringsArray, deepCopy, deepFreeze, fillArray, formatDateAndTime, getRandomNumber, getRecordKeys, httpErrorCodeLookup, interpolate, interpolateObjects, isAnniversary, isLeapYear, isMonthlyMultiple, isOrdered, isSameDate, kebabToCamel, normaliseImportPath, normaliseIndents, normalizeImportPath, normalizeIndents, omitProperties, paralleliseArrays, parseBoolean, parseEmail, parseEnv, parseFormData, parseIntStrict, parseUUID, parseZodSchema, randomiseArray, range, removeDuplicates, removeIndents, stringListToArray, stringToBoolean, truncate, wait };
704
+ //#region src/functions/versioning/determineVersionType.d.ts
705
+ type VersionType = "major" | "minor" | "patch";
706
+ /**
707
+ * Determines whether the given version is a major, minor, or patch version.
708
+ *
709
+ * @param version - The version number.
710
+ *
711
+ * @returns Either `"major"`, `"minor"`, or `"patch"`, depending on the version type.
712
+ */
713
+ declare function determineVersionType(version: string): VersionType;
714
+ //#endregion
715
+ //#region src/functions/versioning/getIndividualVersionNumbers.d.ts
716
+ /**
717
+ * Gets the individual version numbers from a given version number as a tuple of numbers.
718
+ *
719
+ * @param version - The version number.
720
+ *
721
+ * @returns A tuple of three numbers indicating `[major, minor, patch]`.
722
+ */
723
+ declare function getIndividualVersionNumbers(version: string): [number, number, number];
724
+ //#endregion
725
+ //#region src/functions/versioning/parseVersion.d.ts
726
+ interface ParseVersionOptions {
727
+ omitPrefix?: boolean;
728
+ }
729
+ /**
730
+ * Parses a string and verifies it is a valid package version number.
731
+ *
732
+ * Valid formats: `X.Y.Z` or `vX.Y.Z`, where X, Y, and Z are non-negative integers.
733
+ *
734
+ * @param input - The version string to parse.
735
+ * @param options - Extra options to apply.
736
+ *
737
+ * @throws {DataError} If the input is not a valid version number.
738
+ *
739
+ * @returns The validated version number, prefixed with `v` if it was not already.
740
+ */
741
+ declare function parseVersion(input: string, options?: ParseVersionOptions): string;
742
+ //#endregion
743
+ export { APIError, type ArrayElement, type CreateFormDataOptions, type CreateFormDataOptionsNullableResolution, type CreateFormDataOptionsUndefinedOrNullResolution, DataError, type DeepReadonly, type DisallowUndefined, type Email, type Env, type FormDataArrayResolutionStrategy, type FormDataNullableResolutionStrategy, type HTTPErrorCode, type IgnoreCase, KebabToCamelOptions, NAMESPACE_EXPORT_REGEX, type NonUndefined, NormaliseIndentsFunction, NormaliseIndentsOptions, NormalizeIndentsFunction, NormalizeIndentsOptions, type OptionalOnCondition, type RecordKey, RemoveIndentsFunction, RemoveIndentsOptions, type StringListToArrayOptions, type UUID, VERSION_NUMBER_REGEX, VersionType, addDaysToDate, appendSemicolon, camelToKebab, convertFileToBase64, createFormData, createTemplateStringsArray, deepCopy, deepFreeze, determineVersionType, fillArray, formatDateAndTime, getIndividualVersionNumbers, getRandomNumber, getRecordKeys, httpErrorCodeLookup, interpolate, interpolateObjects, isAnniversary, isLeapYear, isMonthlyMultiple, isOrdered, isSameDate, kebabToCamel, normaliseImportPath, normaliseIndents, normalizeImportPath, normalizeIndents, omitProperties, paralleliseArrays, parseBoolean, parseEmail, parseEnv, parseFormData, parseIntStrict, parseUUID, parseVersion, parseZodSchema, randomiseArray, range, removeDuplicates, removeIndents, stringListToArray, stringToBoolean, truncate, wait };
package/dist/index.js CHANGED
@@ -5,6 +5,11 @@ import path from "path";
5
5
  const NAMESPACE_EXPORT_REGEX = "export\\s+\\*\\s+from";
6
6
  var NAMESPACE_EXPORT_REGEX_default = NAMESPACE_EXPORT_REGEX;
7
7
 
8
+ //#endregion
9
+ //#region src/constants/VERSION_NUMBER_REGEX.ts
10
+ const VERSION_NUMBER_REGEX = "^(?:v)?(0|[1-9]\\d*)\\.(0|[1-9]\\d*)\\.(0|[1-9]\\d*)$";
11
+ var VERSION_NUMBER_REGEX_default = VERSION_NUMBER_REGEX;
12
+
8
13
  //#endregion
9
14
  //#region src/functions/arrayHelpers/fillArray.ts
10
15
  /**
@@ -1030,4 +1035,58 @@ function removeIndents(first, ...args) {
1030
1035
  var removeIndents_default = removeIndents;
1031
1036
 
1032
1037
  //#endregion
1033
- export { APIError_default as APIError, DataError_default as DataError, NAMESPACE_EXPORT_REGEX_default as NAMESPACE_EXPORT_REGEX, addDaysToDate_default as addDaysToDate, appendSemicolon_default as appendSemicolon, camelToKebab_default as camelToKebab, convertFileToBase64_default as convertFileToBase64, createFormData_default as createFormData, createTemplateStringsArray_default as createTemplateStringsArray, deepCopy_default as deepCopy, deepFreeze_default as deepFreeze, fillArray_default as fillArray, formatDateAndTime_default as formatDateAndTime, getRandomNumber_default as getRandomNumber, getRecordKeys_default as getRecordKeys, httpErrorCodeLookup, interpolate_default as interpolate, interpolateObjects_default as interpolateObjects, isAnniversary_default as isAnniversary, isLeapYear_default as isLeapYear, isMonthlyMultiple_default as isMonthlyMultiple, isOrdered_default as isOrdered, isSameDate_default as isSameDate, kebabToCamel_default as kebabToCamel, normaliseImportPath, normaliseIndents_default as normaliseIndents, normalizeImportPath_default as normalizeImportPath, normalizeIndents, omitProperties_default as omitProperties, paralleliseArrays_default as paralleliseArrays, parseBoolean_default as parseBoolean, Email_default as parseEmail, parseEnv_default as parseEnv, parseFormData_default as parseFormData, parseIntStrict_default as parseIntStrict, UUID_default as parseUUID, parseZodSchema_default as parseZodSchema, randomiseArray_default as randomiseArray, range_default as range, removeDuplicates_default as removeDuplicates, removeIndents_default as removeIndents, stringListToArray_default as stringListToArray, stringToBoolean, truncate_default as truncate, wait_default as wait };
1038
+ //#region src/functions/versioning/parseVersion.ts
1039
+ /**
1040
+ * Parses a string and verifies it is a valid package version number.
1041
+ *
1042
+ * Valid formats: `X.Y.Z` or `vX.Y.Z`, where X, Y, and Z are non-negative integers.
1043
+ *
1044
+ * @param input - The version string to parse.
1045
+ * @param options - Extra options to apply.
1046
+ *
1047
+ * @throws {DataError} If the input is not a valid version number.
1048
+ *
1049
+ * @returns The validated version number, prefixed with `v` if it was not already.
1050
+ */
1051
+ function parseVersion(input, options) {
1052
+ if (!RegExp(VERSION_NUMBER_REGEX_default).test(input)) throw new DataError_default(input, `"${input}" is not a valid version number. Version numbers must be of the format "X.Y.Z" or "vX.Y.Z", where X, Y, and Z are non-negative integers.`, "INVALID_VERSION");
1053
+ if (options?.omitPrefix) return input.startsWith("v") ? input.slice(1) : input;
1054
+ return input.startsWith("v") ? input : `v${input}`;
1055
+ }
1056
+ var parseVersion_default = parseVersion;
1057
+
1058
+ //#endregion
1059
+ //#region src/functions/versioning/getIndividualVersionNumbers.ts
1060
+ /**
1061
+ * Gets the individual version numbers from a given version number as a tuple of numbers.
1062
+ *
1063
+ * @param version - The version number.
1064
+ *
1065
+ * @returns A tuple of three numbers indicating `[major, minor, patch]`.
1066
+ */
1067
+ function getIndividualVersionNumbers(version) {
1068
+ return parseVersion_default(version, { omitPrefix: true }).split(".").map((versionNumber) => {
1069
+ return parseIntStrict_default(versionNumber);
1070
+ });
1071
+ }
1072
+ var getIndividualVersionNumbers_default = getIndividualVersionNumbers;
1073
+
1074
+ //#endregion
1075
+ //#region src/functions/versioning/determineVersionType.ts
1076
+ /**
1077
+ * Determines whether the given version is a major, minor, or patch version.
1078
+ *
1079
+ * @param version - The version number.
1080
+ *
1081
+ * @returns Either `"major"`, `"minor"`, or `"patch"`, depending on the version type.
1082
+ */
1083
+ function determineVersionType(version) {
1084
+ const [_major, minor, patch] = getIndividualVersionNumbers_default(version);
1085
+ if (minor === 0 && patch === 0) return "major";
1086
+ if (patch === 0) return "minor";
1087
+ return "patch";
1088
+ }
1089
+ var determineVersionType_default = determineVersionType;
1090
+
1091
+ //#endregion
1092
+ export { APIError_default as APIError, DataError_default as DataError, NAMESPACE_EXPORT_REGEX_default as NAMESPACE_EXPORT_REGEX, VERSION_NUMBER_REGEX_default as VERSION_NUMBER_REGEX, addDaysToDate_default as addDaysToDate, appendSemicolon_default as appendSemicolon, camelToKebab_default as camelToKebab, convertFileToBase64_default as convertFileToBase64, createFormData_default as createFormData, createTemplateStringsArray_default as createTemplateStringsArray, deepCopy_default as deepCopy, deepFreeze_default as deepFreeze, determineVersionType_default as determineVersionType, fillArray_default as fillArray, formatDateAndTime_default as formatDateAndTime, getIndividualVersionNumbers_default as getIndividualVersionNumbers, getRandomNumber_default as getRandomNumber, getRecordKeys_default as getRecordKeys, httpErrorCodeLookup, interpolate_default as interpolate, interpolateObjects_default as interpolateObjects, isAnniversary_default as isAnniversary, isLeapYear_default as isLeapYear, isMonthlyMultiple_default as isMonthlyMultiple, isOrdered_default as isOrdered, isSameDate_default as isSameDate, kebabToCamel_default as kebabToCamel, normaliseImportPath, normaliseIndents_default as normaliseIndents, normalizeImportPath_default as normalizeImportPath, normalizeIndents, omitProperties_default as omitProperties, paralleliseArrays_default as paralleliseArrays, parseBoolean_default as parseBoolean, Email_default as parseEmail, parseEnv_default as parseEnv, parseFormData_default as parseFormData, parseIntStrict_default as parseIntStrict, UUID_default as parseUUID, parseVersion_default as parseVersion, parseZodSchema_default as parseZodSchema, randomiseArray_default as randomiseArray, range_default as range, removeDuplicates_default as removeDuplicates, removeIndents_default as removeIndents, stringListToArray_default as stringListToArray, stringToBoolean, truncate_default as truncate, wait_default as wait };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alextheman/utility",
3
- "version": "3.7.0",
3
+ "version": "3.8.0",
4
4
  "description": "Helpful utility functions",
5
5
  "repository": {
6
6
  "type": "git",
@@ -19,7 +19,7 @@
19
19
  "zod": "^4.1.13"
20
20
  },
21
21
  "devDependencies": {
22
- "@alextheman/eslint-plugin": "^4.8.4",
22
+ "@alextheman/eslint-plugin": "^4.8.6",
23
23
  "@types/node": "^25.0.1",
24
24
  "dotenv-cli": "^11.0.0",
25
25
  "eslint": "^9.39.1",